以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
また、以下の順序で説明を行う。
1.サンプル適応オフセット(SAO)の基本的な仕組み
2.エンコーダの構成例
3.SAOフィルタの詳細な構成例
4.処理の流れ
4−1.SAO処理の概略
4−2.オフセット判定処理
4−3.オフセット修正処理
5.画像処理システム
6.ハードウェア構成例
7.応用例
8.まとめ
<1.サンプル適応オフセット(SAO)の基本的な仕組み>
サンプル適応オフセット(SAO)は、HEVCにおいて新たに導入された技術のうちの1つである。SAOフィルタは、デブロックフィルタと同様、インループフィルタの一種である。SAOフィルタは、主にリンギングノイズ又はモスキートノイズといったノイズを除去するために、リコンストラクト画像の画素値の各々にオフセットを適用する。HEVCでは、SAOフィルタのオフセットタイプとして、エッジオフセット及びバンドオフセットという2つのタイプが定義されている。オフセットタイプは、CTU(Coding Tree Unit)において符号化されるパラメータsao_type_idx_luma及びsao_type_idx_chromaによって特定される。例えば、これらパラメータの値が1であればバンドオフセット、2であればエッジオフセットが、対応するCTB(Coding Tree Block)において利用される。
(1)エッジオフセット
エッジオフセット処理は、直交変換係数の量子化などに起因して復号画像に生じ得るリンギングノイズのような、エッジ状のノイズを除去するためのオフセット処理である。エッジオフセット処理では、CTUごとに、エッジの角度に対応するエッジオフセットクラスが、図1Aに示したような4通りの候補クラスCL0〜CL3の中から特定される。図中の画素Pcは注目画素であり、画素Pa及び画素Pbは注目画素に隣接する隣接画素である。また、これら3つの画素の画素値のパターンに対応するカテゴリが、各注目画素について、図1Bに示したような4通りの候補カテゴリCG1〜CG4の中から決定される。エンコーダは、各CTBの色成分ごとに、これら4通りの候補カテゴリの各々について最適なオフセット値を判定し、判定したオフセット値を符号化する。特定されたエッジオフセットクラスもまた符号化される。
(2)バンドオフセット
バンドオフセット処理は、画素値の特定の帯域に現れる復号画素値の原画素値からのズレを補償する。バンドオフセット処理では、画素値のレンジが例えば32個のバンドに分割され、バンド位置によって特定されるバンドに属する画素値を有する画素に、オフセットが適用される。図2の例では、0〜255という画素値のレンジが32個のバンドB00〜B31に分割されており、それらバンドのうちのバンドB03、B04、B05及びB06に属する画素値に、オフセットが適用される。エンコーダは、オフセットを適用すべきバンドの各々について最適なオフセット値を判定し、判定したオフセット値を符号化する。オフセットを適用すべきバンドのバンド位置もまた符号化される。
こうしたSAO処理において、オフセット値(及びオフセットタイプなどのその他のパラメータ)は、ブロック(典型的には、CTB)ごとに、RD(Rate-Distortion)最適化の観点から決定される。RD最適化に従えば、画質を表すPSNR(Peak Signal-to-Noise Ratio)と符号量との間の関係は最適になり得る。しかし、PSNRは必ずしも主観的画質に一致せず、RD最適化において主観的画質は考慮されない。そのため、既存のSAO処理において、例えば過剰な又は不必要なオフセットが復号画像へ適用される結果として、却ってテクスチャがぼけてしまい、主観的画質が損なわれることがある。
上述した既存の仕組みの欠点を解消し又は少なくとも緩和するために、本開示に係る技術は、SAO処理の作用を適応的に軽減する。それにより、復号画像の主観的な画質の劣化が防止される。後述する実施形態では、RD最適化に従って判定されるオフセット値がブロックごとの画像特徴量に基づいて修正され、修正後のオフセット値でブロック内の各画素値がオフセットされる。そのような実施形態について、次節以降でより具体的に説明する。
<2.エンコーダの構成例>
図3は、画像符号化装置10の概略的な構成の一例を示すブロック図である。図3を参照すると、画像符号化装置10は、並び替えバッファ11、減算部13、直交変換部14、量子化部15、可逆符号化部16、蓄積バッファ17、レート制御部18、逆量子化部21、逆直交変換部22、加算部23、デブロックフィルタ24、SAOフィルタ25、フレームメモリ26、スイッチ27、モード設定部28、イントラ予測部30及びインター予測部35を備える。
並び替えバッファ11は、一連の画像データに含まれる画像を並び替える。並び替えバッファ11は、符号化処理に係るGOP(Group of Pictures)構造に応じて画像を並び替えた後、並び替え後の画像データを減算部13、SAOフィルタ25、イントラ予測部30及びインター予測部35へ出力する。
減算部13は、並び替えバッファ11から入力される画像データと予測画像データとの差分である予測誤差データを算出し、算出した予測誤差データを直交変換部14へ出力する。
直交変換部14は、各CTB内に設定される1つ以上の変換ブロック(TB:Transform Block)の各々について直交変換処理を実行する。ここでの直交変換は例えば、離散コサイン変換(DCT)又はカルーネン・レーベ変換などであってよい。より具体的には、直交変換部14は、減算部13から入力される予測誤差データを、TBごとに、空間領域の画像信号から周波数領域の変換係数データに変換する。そして、直交変換部14は、変換係数データを量子化部15へ出力する。なお、必ずしも全てのTBが変換係数データを有するわけではない。予測誤差が符号化されない(例えば、動き補償のみで画像が再構築される)TBは、変換係数データを有さず、そうしたTBについてはゼロを示す符号化ブロックフラグ(CBF:Coded Block Flag)が符号化され得る。
量子化部15には、直交変換部14から入力される変換係数データ、及び後に説明するレート制御部18からのレート制御信号が供給される。量子化部15は、レート制御信号に従って決定される量子化ステップで変換係数データを量子化する。また、量子化部15は、各TBについて使用した量子化ステップを表す量子化パラメータを生成する。量子化部15は、量子化後の変換係数データ(以下、量子化データという)を可逆符号化部16及び逆量子化部21へ出力する。また、量子化部15は、生成した量子化パラメータを可逆符号化部16へ出力する。
可逆符号化部16は、1つ以上の符号化ブロック(CB:Coding Block)の各々について量子化部15から入力される量子化データを符号化することにより、符号化ストリームを生成する。また、可逆符号化部16は、デコーダにより参照される様々なパラメータを符号化して、符号化されたパラメータを符号化ストリームのヘッダ領域に挿入する。可逆符号化部16により符号化されるパラメータは、画像にCTB、CB、TB及びPBをどのように設定すべきかを示すブロック情報、量子化パラメータ、符号化ブロックフラグ、並びに、後述するSAO関連パラメータ、イントラ予測に関する情報及びインター予測に関する情報を含み得る。そして、可逆符号化部16は、生成した符号化ストリームを蓄積バッファ17へ出力する。
蓄積バッファ17は、可逆符号化部16から入力される符号化ストリームを半導体メモリなどの記憶媒体を用いて一時的に蓄積する。そして、蓄積バッファ17は、蓄積した符号化ストリームを、伝送路の帯域に応じたレートで、図示しない伝送部(例えば、通信インタフェース又は周辺機器との接続インタフェースなど)へ出力する。
レート制御部18は、蓄積バッファ17の空き容量を監視する。そして、レート制御部18は、蓄積バッファ17の空き容量に応じてレート制御信号を生成し、生成したレート制御信号を量子化部15へ出力する。例えば、レート制御部18は、蓄積バッファ17の空き容量が少ない時には、量子化データのビットレートを低下させるためのレート制御信号を生成する。また、例えば、レート制御部18は、蓄積バッファ17の空き容量が十分大きい時には、量子化データのビットレートを高めるためのレート制御信号を生成する。
逆量子化部21、逆直交変換部22及び加算部23は、ローカルデコーダを構成する。逆量子化部21は、量子化部15により使用されたものと同じ量子化ステップで量子化データを逆量子化し、変換係数データを復元する。そして、逆量子化部21は、復元した変換係数データを逆直交変換部22へ出力する。
逆直交変換部22は、逆量子化部21から入力される変換係数データについて逆直交変換処理を実行することにより、予測誤差データを復元する。直交変換と同様、逆直交変換は、TBごとに実行される。そして、逆直交変換部22は、復元した予測誤差データを加算部23へ出力する。
加算部23は、逆直交変換部22から入力される復元された予測誤差データとイントラ予測部30又はインター予測部35から入力される予測画像データとを加算することにより、復号画像データ(リコンストラクト画像)を生成する。そして、加算部23は、生成した復号画像データをデブロックフィルタ24及びフレームメモリ26へ出力する。
デブロックフィルタ24及びSAOフィルタ25は、それぞれ、リコンストラクト画像の画質の向上を目的とするインループフィルタである。デブロックフィルタ24は、加算部23から入力される復号画像データをフィルタリングすることによりブロック歪みを除去し、フィルタリング後の復号画像データをSAOフィルタ25へ出力する。
SAOフィルタ25は、デブロックフィルタ24から入力される復号画像データにエッジオフセット処理又はバンドオフセット処理を適用することによりノイズを除去し、処理後の復号画像データをフレームメモリ26へ出力する。より具体的には、SAOフィルタ25は、画像内の各ブロックにおいてRD最適化に従って判定されるオフセット値をブロックごとの画像特徴量に基づいて修正し、修正したオフセット値で各ブロック内の画素値の各々をオフセットする。SAOフィルタ25のより詳細な構成について、後にさらに説明する。
フレームメモリ26は、加算部23から入力されるフィルタリング前の復号画像データ、及びSAOフィルタ25から入力されるインループフィルタの適用後の復号画像データを記憶媒体を用いて記憶する。
スイッチ27は、イントラ予測のために使用されるフィルタリング前の復号画像データをフレームメモリ26から読み出し、読み出した復号画像データを参照画像データとしてイントラ予測部30に供給する。また、スイッチ27は、インター予測のために使用されるフィルタリング後の復号画像データをフレームメモリ26から読み出し、読み出した復号画像データを参照画像データとしてインター予測部35に供給する。
モード設定部28は、各CTBの最適なブロック分割及び予測モードを、イントラ予測部30及びインター予測部35から入力されるコストの比較に基づいて判定する。モード設定部28は、イントラ予測モードを選択したブロックについては、イントラ予測部30により生成される予測画像データを減算部13へ出力すると共に、イントラ予測に関する情報を可逆符号化部16へ出力する。また、モード設定部28は、インター予測モードを選択したブロックについては、インター予測部35により生成される予測画像データを減算部13へ出力すると共に、インター予測に関する情報を可逆符号化部16へ出力する。
イントラ予測部30は、原画像データ及び復号画像データに基づいて、各CTB内に設定される1つ以上の予測ブロック(PB:Prediction Block)の各々についてイントラ予測処理を実行する。例えば、イントラ予測部30は、予測モードセット内の各候補モードによる予測結果を所定のコスト関数を用いて評価する。次に、イントラ予測部30は、コストが最小となる予測モード、即ち圧縮率が最も高くなる予測モードを、最適モードとして選択する。また、イントラ予測部30は、最適モードに従って予測画像データを生成する。そして、イントラ予測部30は、最適モードを表すイントラ予測に関する情報、コスト、及び予測画像データを、モード設定部28へ出力する。
インター予測部35は、原画像データ及び復号画像データに基づいて、1つ以上のPBの各々についてインター予測処理を実行する。例えば、インター予測部35は、予測モードセット内の各候補モードによる予測結果を所定のコスト関数を用いて評価する。次に、インター予測部35は、コストが最小となる予測モード、即ち圧縮率が最も高くなる予測モードを、最適モードとして選択する。また、インター予測部35は、最適モードに従って予測画像データを生成する。そして、インター予測部35は、最適モードを表すインター予測に関する情報、コスト、及び予測画像データを、モード設定部28へ出力する。ここでのインター予測に関する情報は、動きベクトル情報を含み得る。動きベクトル情報は、各PBに適用すべき動きベクトルを、整数サンプル(integer samples)精度又は小数サンプル(fractional samples)精度で表す。動きベクトルが小数サンプル精度で表される場合には、補間フィルタを用いて補間される小数サンプル位置の参照画素値が、動き補償のために利用される。
<3.SAOフィルタの詳細な構成例>
図4は、図3に示したSAOフィルタ25の詳細な構成の一例を示すブロック図である。図4を参照すると、SAOフィルタ25は、オフセット判定部41、特徴量取得部43、オフセット修正部45及びオフセット部47を有する。
(1)オフセット判定部
オフセット判定部41は、図1A、図1B及び図2を用いて説明した既存のSAO処理と同様に、リコンストラクト画像に適用すべきオフセット値をレート歪み(RD)最適化に基づいてブロックごとに判定する。ここでのブロックは、典型的には、CTB(Coding Tree Block)に相当し得る。より具体的には、オフセット判定部41は、エッジオフセット及びバンドオフセットを含み得るオフセットタイプの各々について、デブロックフィルタ24から入力されるリコンストラクト画像Irecに適用すべき適切なオフセット値のセットを判定する。エッジオフセットのケースでは、オフセット値のセットは、それぞれのカテゴリに対応するオフセット値を含み、候補クラスごとに判定され得る。また、オフセット判定部41は、各オフセットタイプ(及び候補クラス)ごとに、原画像Iorgと処理後のリコンストラクト画像との間の誤差及び見込まれる符号量から、コストを計算する。そして、オフセット判定部41は、計算したコストが最も低い値を示すオフセットタイプ、及びエッジオフセットの場合にはそのクラスを選択する。ここでの選択結果に対応するオフセット値のセットが、リコンストラクト画像に適用すべき(但し、修正前の)オフセット値である。オフセット判定部41は、オフセットタイプとしてエッジオフセットを選択した場合には、図1Bに示したような4通りの候補カテゴリCG1〜CG4にそれぞれ対応するオフセット値Vと、関連するパラメータ(オフセットタイプ、エッジオフセットクラスなど)とをオフセット修正部45へ出力する。一方、オフセット判定部41は、オフセットタイプとしてバンドオフセットを選択した場合には、対象のバンドにそれぞれ対応するオフセット値Vと、関連するパラメータ(オフセットタイプ、バンド位置など)とをオフセット修正部45へ出力する。なお、オフセット判定部41は、あるCTBについてエッジオフセット処理及びバンドオフセット処理のいずれも行わないことを選択してもよい。この場合には、オフセット判定部41は、オフセット無しを意味する値(例えば、ゼロ)を示すオフセットタイプをオフセット修正部45へ出力する。
(2)特徴量取得部
特徴量取得部43は、オフセット判定部41により判定されるオフセット値を修正する際に参照される画像特徴量を、リコンストラクト画像のブロックごとに取得する。ここでは、限定ではないものの、画像特徴量に関する3通りの実施例について説明する。第1の実施例において、特徴量取得部43により取得される画像特徴量は、各ブロックの平坦さに関連する指標を含む。例えば、各ブロックの平坦さ(flatness)を、画素値の分散、標準偏差、及び一次微分総和、のうちの1つ以上によって表現することができる。特徴量取得部43は、例えば、デブロックフィルタ24から入力されるリコンストラクト画像Irecのブロックごとに、次の式(1)のように画素値の分散(平均二乗誤差)VARiを計算してもよい。式(1)において、NはブロックBiに属する画素の数、PkはブロックBiに属するk番目の画素の画素値、PAVE_iはブロックBiに属する画素群の画素値の平均を表す。
また、特徴量取得部43は、分散VARiの正の平方根に等しい標準偏差を計算してもよい。また、特徴量取得部43は、次の式(2)のように一次微分総和DESUMiを計算してもよい。式(2)において、Px,yはブロックBiに属する画素位置(x,y)の画素値を表す。
これら分散、標準偏差、及び一次微分総和は、あるブロックが完全に平坦である(即ち、ブロックに属する画素群の画素値が全て等しい)場合には、ゼロを示す。これら指標の値が大きいことは、ブロックの画像が高周波成分を多く含むことを示唆する。そうした高周波成分のうちのある部分は、オフセットによって除去されるべき、リンギングノイズ又はモスキートノイズといったノイズに起因し得る。一方、これら指標の値がより小さいことは、ブロックの画像に含まれる高周波成分がより少なく、従って除去すべきノイズもより少ないことを示唆する。そうしたブロックについては、SAO処理によるノイズ除去の利得よりも、画像の不鮮明化に伴う主観的画質の劣化の作用の方が上回る可能性が高いことから、SAO処理の強度を適応的に軽減することが有益である。
第2の実施例において、特徴量取得部43により取得される画像特徴量は、各ブロックの高周波成分のロスに関連する指標を含む。例えば、あるTBが変換係数を含まないことを符号化ブロックフラグ(CBF)が示している場合、そのTBは、量子化誤差(変換係数の量子化の際の周波数成分の切り捨てに起因する誤差)を包含しない。これは、高周波成分のロスが無く、TBに含まれるノイズが無いか又は小さいことを意味する。TB(変換ブロック)は、CTBのサブブロックである。そこで、特徴量取得部43は、例えば、デブロックフィルタ24から入力されるリコンストラクト画像Irecのブロックごとの高周波成分のロスに関連する指標として、当該ブロックに属するサブブロックのCBFの値を集計することにより、変換係数がゼロであるサブブロックの割合(以下、ゼロ係数率という)を計算してもよい。ゼロ係数率がより大きいブロックについては、SAO処理によるノイズ除去の利得よりも、画像の不鮮明化に伴う主観的画質の劣化の作用の方が上回る可能性が高いことから、SAO処理の強度を適応的に軽減することが有益である。
代替的に又は追加的に、特徴量取得部43は、高周波成分のロスに関連する指標として、ブロック又はサブブロックの各々について使用された量子化パラメータ(例えば、ブロック内での平均値)を取得してもよい。量子化パラメータの値が大きいことは、量子化に伴う高周波成分のロスが大きいことを意味し、逆に量子化パラメータの値が小さいことは、量子化に伴う高周波成分のロスが小さいことを意味する。よって、量子化パラメータの値がより小さいブロックについては、SAO処理によるノイズ除去の利得よりも、画像の不鮮明化に伴う主観的画質の劣化の作用の方が上回る可能性が高いことから、SAO処理の強度を適応的に軽減することが有益である。また、上述したゼロ係数率に基づく(又は第1の実施例におけるブロックの平坦さに基づく)SAO処理の強度の軽減の度合いが、量子化パラメータの値が大きいほど弱められてもよい。
代替的に又は追加的に、特徴量取得部43は、高周波成分のロスに関連する指標として、動き補償のサンプル精度が特定の精度であるサブブロックの割合を取得してもよい。例えば、あるPB(予測ブロック)において動き補償のサンプル精度が小数精度(1/2精度又は1/4精度など)である場合、そのPBにおいて補間フィルタが利用され得る。PBは、CTBのサブブロックである。そして、タップ長の長い補間フィルタ(HEVCにおける補間フィルタの最大タップ長は8タップである)は、実質的なローパスフィルタとして作用し、画像を平滑化する効果を有する。そのため、動き補償のサンプル精度が小数精度であるサブブロックの割合(以下、小数精度サブブロック率という)が大きい場合、さらにオフセットを適用することで、画像が過剰に不鮮明化される可能性が高い。一方、あるPBにおいて動き補償のサンプル精度が整数精度のみである場合、そのPBにおいて補間フィルタは利用されない。そのため、この場合、さらにオフセットを適用しても、画像が過剰に不鮮明化する可能性は低い。動き補償のサンプル精度は、動きベクトル情報から把握され得る。
第3の実施例において、特徴量取得部43により取得される画像特徴量は、各ブロックにおける動きベクトルがゼロであるサブブロックの割合(以下、ゼロベクトル率という)を含む。例えば、画角内で被写体が静止している場合、その被写体を映すPBにおいて、動きベクトルはゼロになり得る。その場合にSAO処理を実行すると、インター予測の予測画素値にオフセットが累積的に加算される結果、画像が不鮮明化することがある。そこで、特徴量取得部43は、デブロックフィルタ24から入力されるリコンストラクト画像Irecのブロックごとに、例えば動きベクトル情報を用いてゼロベクトル率を計算してもよい。ゼロベクトル率がより大きいブロックについては、SAO処理によるノイズ除去の利得よりも、画像の不鮮明化に伴う主観的画質の劣化の作用の方が上回る可能性が高いことから、SAO処理の強度を適応的に軽減することが有益である。動きベクトルがゼロであるサブブロックについては、オフセットの累積的な加算を回避するために、オフセットの適用がスキップされてもよい。
特徴量取得部43は、上述したいずれかの手法又は他の手法に従って取得されるブロックごとの画像特徴量Rを、オフセット修正部45へ出力する。
(3)オフセット修正部
オフセット修正部45は、オフセット判定部41により判定されたリコンストラクト画像に適用すべきオフセット値を、特徴量取得部43から入力されるブロックごとの画像特徴量に基づいて修正する。例えば、オフセット修正部45は、上述した平坦さに関連する指標に基づき、より平坦なブロックにより小さいオフセット値が適用されるように、オフセット値を修正してもよい。また、オフセット修正部45は、上述した高周波成分のロスに関連する指標に基づき、高周波成分のロスのより小さいブロックにより小さいオフセット値が適用されるように、オフセット値を修正してもよい。高周波成分のロスのより小さいブロックとは、例えば、ゼロ係数率がより大きく、量子化パラメータがより小さく、又は小数精度サブブロック率がより大きいブロックを含み得る。また、オフセット修正部45は、ゼロベクトル率がより大きいブロックにより小さいオフセット値が適用されるように、オフセット値を修正してもよい。
オフセット修正部45により実行される処理は、概念的には、次のような関数の形式で表現され得る。
ここで、V及びVmodはそれぞれ修正前の及び修正後のオフセット値、Riはi番目(iは1以上の整数)の特徴量を表す。関数Fは、例えば次の式(4)ような線形形式であり得る。係数αは、典型的には、特徴量R1、R2、…に依存するゼロ以上1以下の修正係数である。演算Clip(X)は、関数の出力値をオフセットの所定のレンジに制限するための演算であり、例えばXが上界Xmaxを上回る場合にはClip(X)=Xmaxである。
図5Aは、特徴量Rと修正オフセット値Vmodとの間の関係の第1の例を示すグラフである。グラフの横軸は特徴量R、縦軸は修正オフセット値Vmodを示す。図示したグラフG11によれば、修正オフセット値Vmodは、特徴量Rに従って単調増加する直線を描いている。修正オフセット値Vmodの最大値は修正前のオフセット値Vに等しい。こうしたグラフG11は、画像特徴量の値がより小さい場合にSAO処理の作用をより強く軽減させるようなシナリオに適している。例えば、画像特徴量Rが上述した分散、標準偏差、若しくは一次微分総和、又は量子化パラメータに相当するケースは、グラフG11のシナリオに当てはまる。一方、グラフG12によれば、修正オフセット値Vmodは、特徴量Rに従って単調減少する直線を描いている。こうしたグラフG12は、画像特徴量の値がより大きい場合にSAO処理の作用をより強く軽減させるようなシナリオに適している。例えば、画像特徴量Rが上述したゼロ係数率、小数精度サブブロック率又はゼロベクトル率に相当するケースは、グラフG12のシナリオに当てはまる。
図5Bは、特徴量Rと修正オフセット値Vmodとの間の関係の第2の例について説明するためのグラフである。図示したグラフG2によれば、修正オフセット値Vmodは、特徴量Rに従って階段状に増加する折れ線を描いている。例えば、特徴量Rが第1のサブレンジ[0,r1]に属する場合には、修正係数α=1/4がオフセット値Vに乗算される。特徴量Rが第2のサブレンジ[r1,r2]に属する場合には、修正係数α=1/3がオフセット値Vに乗算される。特徴量Rが第3のサブレンジ[r2,r3]に属する場合には、修正係数α=1/2がオフセット値Vに乗算される。特徴量Rが第4のサブレンジ[r3,r4]に属する場合には、修正オフセット値Vmodは修正前のオフセット値Vに等しい。こうした修正係数は、例えば事前のチューニングを通じて予め決定され、対応する特徴量のサブレンジに関連付けてメモリに格納され得る。そして、オフセット修正部45は、オフセットを修正する際に、特徴量の値に対応する修正係数をメモリから取得し得る。可逆符号化部16は、こうした修正係数を定義するパラメータを追加的に符号化してもよい。
図5A及び図5Bに示したグラフは、説明のための例に過ぎない。オフセット修正部45は、修正オフセット値Vmodが様々な傾き及び切片を有する直線、又は様々な曲線若しくは折れ線などの他の軌跡を描くように、オフセット値を修正してよい。1つの変形例において、オフセット修正部45は、修正係数αを、オフセット値の修正の強さが量子化パラメータの値が大きいほど弱められるように調整し得る。次の式(5)における修正係数αadjは、調整された修正係数を表し、上界1.0を超えない範囲で修正係数αと調整因子wとの積に等しい。
調整因子wは、例えば、量子化パラメータがサブレンジ[0,20]に属する場合には1.0、量子化パラメータがサブレンジ[20,30]に属する場合には1.2、量子化パラメータがサブレンジ[30,40]に属する場合には1.6に等しい、といったように、量子化パラメータのサブレンジに関連付けて予め定義され得る。このように量子化パラメータの値が大きいほどオフセット値を修正するための修正係数を大きく設定することで、オフセット値の修正の強さを弱めることができる。それにより、SAO処理の作用を軽減する中に、量子化誤差が大きいケースで高周波成分のロスに起因するノイズの除去の効果を維持する仕組みを取り入れることができる。
上述したように、エッジオフセット処理は、エッジ状のノイズを除去する処理である。よって、エッジオフセットを軽減することは、エッジが過剰に不鮮明化されることを防止することにつながる。これに対し、バンドオフセット処理は、特定の帯域に現れる画素値のズレを補償する処理である。よって、バンドオフセットを軽減することは、必ずしも画像の不鮮明化の防止にはつながらない。そこで、オフセット修正部45は、オフセット判定部41により判定されたオフセットタイプがエッジオフセットであるブロックについてオフセット値を修正する一方、オフセットタイプがバンドオフセットであるブロックについてはオフセット値を修正しなくてもよい。それにより、バンドオフセットの作用を減殺することなく、エッジオフセットによる画像の不鮮明化を効果的に防止することができる。
オフセット修正部45は、上述したいずれかの手法又は他の手法に従ってオフセット値を修正した場合には、修正オフセット値Vmodをオフセット部47へ出力する。オフセット値が修正されなかった場合には、もとのオフセット値Vがオフセット部47へ出力される。また、オフセット修正部45は、オフセット部47へ出力される値に対応するSAO関連パラメータを、符号化のために可逆符号化部16へ出力する。ここでのSAO関連パラメータは、例えば、オフセットタイプ、オフセット値のセット、及び、必要に応じてエッジオフセットクラス又はバンド位置など、を特定するパラメータであってよい。
(4)オフセット部
オフセット部47は、オフセット修正部45によりオフセット値が修正された場合には、修正された当該オフセット値Vmodでリコンストラクト画像の画素値をオフセットする。オフセット部47は、オフセット値が修正されなかった場合には、オフセット判定部41により判定されたオフセット値Vで画素値をオフセットし得る。オフセット部47は、オフセットタイプがエッジオフセットであるブロックについては、注目画素のカテゴリを4通りの候補カテゴリCG1〜CG4の中から決定し、決定したカテゴリに対応する(修正された)オフセット値を注目画素の画素値に加算する。オフセット部47は、オフセットタイプがバンドオフセットであるブロックについては、注目画素の画素値が属するバンドを32個のバンドの中から識別し、識別したバンドに対応する(修正された)オフセット値を注目画素の画素値に加算する。オフセット部47は、例えばオフセットタイプがオフセット無しを示している場合に、画素値のオフセットをスキップしてもよい。
ブロックがBピクチャ又はBスライスに属する場合、そのブロックにおいて、インター予測の際に双予測(Bi-Prediction)が実行され得る。双予測は、予測画素値を導出するための、複数の参照画素値の加重平均の演算を含んでおり、これが実質的なローパスフィルタとして作用し、画像を平滑化する効果を有する。そのため、オフセット部47は、Bピクチャ又はBスライスに属するブロックの画素値のオフセットをスキップすることにより、画像が過剰に不鮮明化されることを回避してもよい。また、オフセット部47は、画角内で被写体が静止している場合のオフセットの累積的な加算を通じて画像が不鮮明化することを回避するために、動きベクトルがゼロであるブロック又はサブブロックの画素値のオフセットをスキップしてもよい。
<4.処理の流れ>
[4−1.SAO処理の概略]
図6は、一実施形態に係るSAOフィルタ25により実行されるSAO処理の概略的な流れの一例を示すフローチャートである。図6に示した処理は、画像内のブロックの各々について繰り返される。
図6を参照すると、まず、オフセット判定部41は、RD最適化に基づいて、注目ブロックに適用すべきオフセットタイプ(SAOタイプ)及びオフセット値、並びに関連するパラメータを判定する(ステップS10)。その後の処理は、判定されたオフセットタイプに依存して分岐する(ステップS20)。
判定されたオフセットタイプがエッジオフセットである場合、特徴量取得部43は、オフセット値を修正する際に参照される注目ブロックの画像特徴量を取得する(ステップS30)。次に、オフセット修正部45は、特徴量取得部43から入力される注目ブロックの画像特徴量に基づいて、オフセット判定部41から入力されるオフセット値を修正する(ステップS40)。次に、オフセット部47は、オフセット修正部45により修正されたオフセット値で注目ブロックに属する画素群の各画素値をオフセットする(ステップS50)。
判定されたオフセットタイプがバンドオフセットである場合、オフセット部47は、未修正の(即ち、オフセット判定部41により判定された)オフセット値で注目ブロックに属する画素群の各画素値をオフセットする(ステップS55)。
次に、可逆符号化部16は、オフセット修正部45により修正されたオフセット値を特定するパラメータを含むSAO関連パラメータを符号化する(ステップS60)。なお、注目ブロックのSAO関連パラメータが符号化済みの隣接ブロックのSAO関連パラメータと同一である場合には、SAO関連パラメータの代わりにコピーモードを有効化するコピーフラグが符号化され得る。しかし、コピーモードは本開示に係る技術に直接的に関連しないため、ここではその説明を省略する。
次に、未処理のブロックが残っている場合には、処理はステップS10へ戻り、次のブロックを注目ブロックとして上述した処理が繰り返される(ステップS70)。未処理のブロックが残っていない場合には、図6に示したSAO処理は終了する。
[4−2.オフセット判定処理]
図7は、図6のステップS10に相当するオフセット判定処理の流れの一例を示すフローチャートである。図7に示した処理は、注目ブロックの色成分ごとに繰り返される(ステップS11)。
まず、オフセット判定部41は、エッジオフセットの各クラスについて、4通りの候補カテゴリのそれぞれの最適なオフセット値を判定する(ステップS12)。次に、オフセット判定部41は、各クラスについてRD最適化のためのコストを計算する(ステップS13)。
また、オフセット判定部41は、バンドオフセットのバンドごとの最適なオフセット値を判定する(ステップS14)。次に、オフセット判定部41は、各バンド位置についてRD最適化のためのコストを計算する(ステップS15)。
次に、オフセット判定部41は、計算したコストを互いに比較することにより、注目ブロックにとって最適なオフセットタイプ(SAOタイプ)、対応するオフセット値のセット、及び関連するパラメータ(エッジオフセットクラス又はバンド位置など)を決定する(ステップS16)。なお、エッジオフセットクラスなどのいくつかのパラメータは、2つの色差成分について共通的に決定されてよい。
[4−3.オフセット修正処理]
(1)第1の実施例
図8は、図6のステップS30及びS40に相当するオフセット修正処理の、第1の実施例に係る流れの一例を示すフローチャートである。
まず、特徴量取得部43は、注目ブロックの平坦さに関連する指標を、デブロックフィルタ24から入力されるリコンストラクト画像を用いて計算する(ステップS31)。ここでの平坦さに関連する指標は、例えば、画素値の分散、標準偏差、若しくは一次微分総和、又はこれらの何らかの組合せであってよい。
次に、オフセット修正部45は、特徴量取得部43により計算された注目ブロックの平坦さに関連する指標の値に対応する修正係数を取得する(ステップS41)。例えば、オフセット修正部45は、計算された指標を用いて修正係数を算出してもよく、又は指標値に関連付けられる修正係数をメモリから取得してもよい。
次に、オフセット修正部45は、取得した修正係数を用いて、例えば図5A又は図5Bを用いて説明した手法に従い、注目ブロックに適用すべきオフセット値を修正する(ステップS47)。
(2)第2の実施例
図9Aは、図6のステップS30及びS40に相当するオフセット修正処理の、第2の実施例に係る流れの一例を示すフローチャートである。
まず、特徴量取得部43は、注目ブロックの高周波成分のロスに関連する指標を、例えば符号化ブロックフラグ、量子化パラメータ又は動きベクトル情報などの符号化パラメータを参照することにより取得する(ステップS32)。ここでの高周波成分のロスに関連する指標は、例えば、変換係数がゼロであるサブブロックの割合(ゼロ係数率)、量子化パラメータ(ブロック内での平均値)若しくは動き補償のサンプル精度が小数精度であるサブブロックの割合(小数精度サブブロック率)、又はこれらの何らかの組合せであってよい。
次に、オフセット修正部45は、特徴量取得部43により取得された高周波成分のロスに関連する指標の値に対応する修正係数を取得する(ステップS42)。例えば、オフセット修正部45は、高周波成分のロスの度合いから修正係数を算出してもよく、又は指標値に関連付けられる修正係数をメモリから取得してもよい。
次に、オフセット修正部45は、取得した修正係数を用いて、例えば図5A又は図5Bを用いて説明した手法に従い、注目ブロックに適用すべきオフセット値を修正する(ステップS47)。
図9Bは、図6のステップS30及びS40に相当するオフセット修正処理の、第2の実施例に係る流れの他の例を示すフローチャートである。
まず、特徴量取得部43は、注目ブロックの高周波成分のロスに関連する指標として、符号化ブロックフラグの集計に基づくゼロ係数率、及び量子化パラメータを取得する(ステップS32a)。
次に、オフセット修正部45は、特徴量取得部43により取得されたゼロ係数率の値に対応する修正係数を取得する(ステップS42a)。ここでオフセット修正部45により取得される修正係数は、例えば、ゼロ係数率が大きいほどより小さい値を示す。
次に、オフセット修正部45は、取得した修正係数を、量子化パラメータを用いて調整する(ステップS43)。その結果、量子化パラメータの値が大きいほど、修正係数の値は1を超えない範囲で増加され得る(即ち、修正の強さが弱められ得る)。
次に、オフセット修正部45は、量子化パラメータを用いて調整した修正係数を用いて、注目ブロックに適用すべきオフセット値を修正する(ステップS47a)。
なお、図9Bに示したようにオフセット値の修正の前に修正係数が調整される代わりに、ゼロ係数率に基づくオフセット値の一次修正と、量子化パラメータに基づくオフセット値の二次修正とが行われてもよい。また、ゼロ係数率の代わりに、例えば小数精度サブブロック率などの他の指標が利用されてもよい。
(3)第3の実施例
図10は、図6のステップS30及びS40に相当するオフセット修正処理の、第3の実施例に係る流れの一例を示すフローチャートである。
まず、特徴量取得部43は、例えば動きベクトル情報を参照することにより、注目ブロックの動きベクトルがゼロであるサブブロックの割合(ゼロベクトル率)を計算する(ステップS33)。
次に、オフセット修正部45は、特徴量取得部43により計算されたゼロベクトル率の値に対応する修正係数を取得する(ステップS44)。例えば、オフセット修正部45は、ゼロベクトル率を用いて修正係数を算出してもよく、又はゼロベクトル率の値に関連付けられる修正係数をメモリから取得してもよい。
次に、オフセット修正部45は、取得した修正係数を用いて、例えば図5A又は図5Bを用いて説明した手法に従い、注目ブロックに適用すべきオフセット値を修正する(ステップS47)。
(4)変形例
図11は、一実施形態に係るSAOフィルタ25により実行されるSAO処理の概略的な流れの他の例を示すフローチャートである。図11に示した処理は、画像内のブロックの各々について繰り返される。
図11を参照すると、まず、オフセット部47により、注目ブロックがBピクチャ又はBスライスに属するか否かが判定される(ステップS5)。ここで、注目ブロックがBピクチャ又はBスライスに属すると判定された場合には、ステップS10〜S60の処理はスキップされる。注目ブロックがBピクチャ又はBスライスに属しないと判定された場合には、処理はステップS10へ進む。
ステップS10〜S60の処理は、図6を用いて説明したものと同様であるため、ここではその説明を省略する。ステップS70において、未処理のブロックが残っている場合には、処理はステップS5へ戻り、次のブロックを注目ブロックとして上述した処理が繰り返される。未処理のブロックが残っていない場合には、図11に示したSAO処理は終了する。
<5.画像処理システム>
一実施形態において、上述した画像符号化装置10と、画像符号化装置10により符号化された画像を復号する画像復号装置と、を含む画像処理システムが提供されてもよい。図12は、そのような画像処理システム1の構成の一例を示すブロック図である。図12を参照すると、画像処理システム1は、画像符号化装置10と画像復号装置60と、を含む。画像符号化装置10は、符号化ストリームから再構築されるリコンストラクト画像に適用すべきオフセット値を画像のブロックごとの画像特徴量に基づいて修正し、修正したオフセット値を特定する符号化パラメータを符号化ストリームに挿入する。画像復号装置60は、符号化ストリームを受け取り、画像符号化装置10により符号化された修正されたオフセット値を復号する。そして、画像復号装置60は、復号された修正されたオフセット値で、リコンストラクト画像の画素値をオフセットする。
より具体的には、画像復号装置60は、蓄積バッファ61、可逆復号部62、逆量子化部63、逆直交変換部64、加算部65、デブロックフィルタ66、SAOフィルタ67、並び替えバッファ68、D/A(Digital to Analogue)変換部69、フレームメモリ70、セレクタ71a及び71b、イントラ予測部80並びにインター予測部85を備える。
蓄積バッファ61は、符号化ストリームを記憶媒体を用いて一時的に蓄積する。
可逆復号部62は、蓄積バッファ61から入力される符号化ストリームから、符号化の際に使用された符号化方式に従って量子化データを復号する。また、可逆復号部62は、符号化ストリームのヘッダ領域に挿入されている情報を復号する。可逆復号部62により復号される情報は、例えば、SAO関連パラメータ、イントラ予測に関する情報及びインター予測に関する情報を含み得る。可逆復号部62は、量子化データを逆量子化部63へ出力する。また、可逆復号部62は、SAO関連パラメータをSAOフィルタ67へ出力する。また、可逆復号部62は、イントラ予測に関する情報をイントラ予測部80へ出力する。また、可逆復号部62は、インター予測に関する情報をインター予測部85へ出力する。
逆量子化部63は、可逆復号部62から入力される量子化データを、符号化の際に使用されたものと同じ量子化ステップで逆量子化し、変換係数データを復元する。逆量子化部63は、復元した変換係数データを逆直交変換部64へ出力する。
逆直交変換部64は、符号化の際に使用された直交変換方式に従い、逆量子化部63から入力される変換係数データについて逆直交変換を行うことにより、予測誤差データを生成する。逆直交変換部64は、生成した予測誤差データを加算部65へ出力する。
加算部65は、逆直交変換部64から入力される予測誤差データと、セレクタ71bから入力される予測画像データとを加算することにより、復号画像データを生成する。そして、加算部65は、生成した復号画像データをデブロックフィルタ66及びフレームメモリ70へ出力する。
デブロックフィルタ66は、加算部65から入力される復号画像データをフィルタリングすることによりブロック歪みを除去し、フィルタリング後の復号画像データをSAOフィルタ67へ出力する。
SAOフィルタ67は、デブロックフィルタ66から入力される復号画像データにエッジオフセット処理又はバンドオフセット処理を適用することによりノイズを除去し、処理後の復号画像データを並び替えバッファ68及びフレームメモリ70へ出力する。より具体的には、SAOフィルタ67は、可逆復号部62により復号されるSAO関連パラメータから、典型的にはCTBに相当し得るブロックごとに、オフセットタイプ、オフセット値のセット、及び、エッジオフセットクラス又はバンド位置などのその他のパラメータを識別する。ここで識別されるオフセット値は、画像符号化装置10によりブロックごとの画像特徴量に基づいて修正された値を示し得る。そして、SAOフィルタ67は、復号されたオフセット値で各ブロック内の画素値の各々をオフセットする。SAOフィルタ67は、オフセットタイプがオフセット無しを示す場合、ブロックがBピクチャ若しくはBスライスに属する場合、又は動きベクトルがゼロである場合に、当該ブロックについてオフセットをスキップしてもよい。
並び替えバッファ68は、SAOフィルタ67から入力される画像を並び替えることにより、時系列の一連の画像データを生成する。そして、並び替えバッファ68は、生成した画像データをD/A変換部69へ出力する。
D/A変換部69は、並び替えバッファ68から入力されるデジタル形式の画像データをアナログ形式の画像信号に変換する。そして、D/A変換部69は、例えば、画像復号装置60と接続されるディスプレイ(図示せず)にアナログ画像信号を出力することにより、復号された映像を表示させる。
フレームメモリ70は、加算部65から入力されるフィルタリング前の復号画像データ、及びSAOフィルタ67から入力されるフィルタリング後の復号画像データを記憶媒体を用いて記憶する。
セレクタ71aは、可逆復号部62により取得されるモード情報に応じて、画像内のブロックごとに、フレームメモリ70からの画像データの出力先をイントラ予測部80とインター予測部85との間で切り替える。例えば、セレクタ71aは、イントラ予測モードが指定された場合には、フレームメモリ70から供給されるフィルタリング前の復号画像データを参照画像データとしてイントラ予測部80へ出力する。また、セレクタ71aは、インター予測モードが指定された場合には、フィルタリング後の復号画像データを参照画像データとしてインター予測部85へ出力する。
セレクタ71bは、可逆復号部62により取得されるモード情報に応じて、加算部65へ供給すべき予測画像データの出力元をイントラ予測部80とインター予測部85との間で切り替える。例えば、セレクタ71bは、イントラ予測モードが指定された場合には、イントラ予測部80から出力される予測画像データを加算部65へ供給する。また、セレクタ71bは、インター予測モードが指定された場合には、インター予測部85から出力される予測画像データを加算部65へ供給する。
イントラ予測部80は、可逆復号部62から入力されるイントラ予測に関する情報とフレームメモリ70からの参照画像データとに基づいてイントラ予測処理を行い、予測画像データを生成する。そして、イントラ予測部80は、生成した予測画像データをセレクタ71bへ出力する。
インター予測部85は、可逆復号部62から入力されるインター予測に関する情報とフレームメモリ70からの参照画像データとに基づいてインター予測処理を行い、予測画像データを生成する。そして、インター予測部85は、生成した予測画像データをセレクタ71bへ出力する。
<6.ハードウェア構成例>
上述した実施形態は、ソフトウェア、ハードウェア、及びソフトウェアとハードウェアとの組合せのいずれを用いて実現されてもよい。画像符号化装置10又は画像復号装置60がソフトウェアを使用する場合、ソフトウェアを構成するプログラムは、例えば、装置の内部又は外部に設けられる記憶媒体(非一時的な媒体:non-transitory media)に予め格納される。そして、各プログラムは、例えば、実行時にRAM(Random Access Memory)に読み込まれ、CPU(Central Processing Unit)などのプロセッサにより実行される。
図13は、上述した実施形態を適用可能な装置のハードウェア構成の一例を示すブロック図である。図13を参照すると、画像処理装置800は、システムバス810、画像処理チップ820及びオフチップメモリ890を備える。画像処理チップ820は、n個(nは1以上)の処理回路830−1、830−2、…、830−n、参照バッファ840、システムバスインタフェース850及びローカルバスインタフェース860を含む。
システムバス810は、画像処理チップ820と外部モジュール(例えば、中央制御機能、アプリケーション機能、通信インタフェース又はユーザインタフェースなど)との間の通信路を提供する。処理回路830−1、830−2、…、830−nは、システムバスインタフェース850を介してシステムバス810と接続され、及びローカルバスインタフェース860を介してオフチップメモリ890と接続される。処理回路830−1、830−2、…、830−nは、オンチップメモリ(例えば、SRAM)に相当し得る参照バッファ840にもアクセスすることができる。オフチップメモリ890は、例えば、画像処理チップ820により処理される画像データを記憶するフレームメモリであってよい。
一例として、処理回路830−1は上述したSAOフィルタ25又はSAOフィルタ67に、処理回路830−2は可逆符号化部16又は可逆復号部62に相当し得る。なお、これら処理回路は、同一の画像処理チップ820ではなく、別個のチップ上に形成されてもよい。上述した手法に従ってエンコーダ側のSAOフィルタにおいてオフセット値が修正される場合、SAO関連パラメータのシンタックスはインパクトを受けない。よって、オフセット値がRD最適化に基づく値から修正されるか否かに依存してデコーダのロジックを改変する必要性は無い。
<7.応用例>
上述した実施形態は、衛星回線、ケーブルTV回線、インターネット、若しくはセルラー通信ネットワークなどを用いて映像の符号化ストリームを送信する送信装置、又は映像の符号化ストリームを光ディスク、磁気ディスク若しくはフラッシュメモリなどの媒体に記録する記録装置、といった様々な電子機器に応用され得る。以下、3つの応用例について説明する。
(1)第1の応用例
図14は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、センサ部933、バス934及びバッテリー935を備える。
アンテナ921は、通信部922に接続される。スピーカ924及びマイクロホン925は、音声コーデック923に接続される。操作部932は、制御部931に接続される。バス934は、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931及びセンサ部933を相互に接続する。
携帯電話機920は、音声通話モード、データ通信モード、撮影モード及びテレビ電話モードを含む様々な動作モードで、音声信号の送受信、電子メール又は画像データの送受信、画像の撮像、及びデータの記録などの動作を行う。
音声通話モードにおいて、マイクロホン925により生成されるアナログ音声信号は、音声コーデック923に供給される。音声コーデック923は、アナログ音声信号を音声データへ変換し、変換された音声データをA/D変換し圧縮する。そして、音声コーデック923は、圧縮後の音声データを通信部922へ出力する。通信部922は、音声データを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号をアンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して音声データを生成し、生成した音声データを音声コーデック923へ出力する。音声コーデック923は、音声データを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
また、データ通信モードにおいて、例えば、制御部931は、操作部932を介するユーザによる操作に応じて、電子メールを構成する文字データを生成する。また、制御部931は、文字を表示部930に表示させる。また、制御部931は、操作部932を介するユーザからの送信指示に応じて電子メールデータを生成し、生成した電子メールデータを通信部922へ出力する。通信部922は、電子メールデータを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号をアンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。そして、通信部922は、受信信号を復調及び復号して電子メールデータを復元し、復元した電子メールデータを制御部931へ出力する。制御部931は、表示部930に電子メールの内容を表示させると共に、電子メールデータを記録再生部929の記憶媒体に記憶させる。
記録再生部929は、読み書き可能な任意の記憶媒体を有する。例えば、記憶媒体は、RAM又はフラッシュメモリなどの内蔵型の記憶媒体であってもよく、ハードディスク、磁気ディスク、光磁気ディスク、光ディスク、USBメモリ、又はメモリカードなどの外部装着型の記憶媒体であってもよい。
また、撮影モードにおいて、例えば、カメラ部926は、被写体を撮像して画像データを生成し、生成した画像データを画像処理部927へ出力する。画像処理部927は、カメラ部926から入力される画像データを符号化し、符号化ストリームを記録再生部929の記憶媒体に記憶させる。
また、テレビ電話モードにおいて、例えば、多重分離部928は、画像処理部927により符号化された映像ストリームと、音声コーデック923から入力される音声ストリームとを多重化し、多重化したストリームを通信部922へ出力する。通信部922は、ストリームを符号化及び変調し、送信信号を生成する。そして、通信部922は、生成した送信信号をアンテナ921を介して基地局(図示せず)へ送信する。また、通信部922は、アンテナ921を介して受信される無線信号を増幅し及び周波数変換し、受信信号を取得する。これら送信信号及び受信信号には、符号化ビットストリームが含まれ得る。そして、通信部922は、受信信号を復調及び復号してストリームを復元し、復元したストリームを多重分離部928へ出力する。多重分離部928は、入力されるストリームから映像ストリーム及び音声ストリームを分離し、映像ストリームを画像処理部927、音声ストリームを音声コーデック923へ出力する。画像処理部927は、映像ストリームを復号し、映像データを生成する。映像データは、表示部930に供給され、表示部930により一連の画像が表示される。音声コーデック923は、音声ストリームを伸張し及びD/A変換し、アナログ音声信号を生成する。そして、音声コーデック923は、生成した音声信号をスピーカ924に供給して音声を出力させる。
センサ部933は、加速度センサ及びジャイロセンサなどのセンサ群を含み、携帯電話機920の動きを表す指標を出力する。バッテリー935は、図中では省略されている電力供給ラインを介して、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931及びセンサ部933に電力を供給する。
このように構成された携帯電話機920において、画像処理部927は、上述した実施形態に係る画像符号化装置10の機能を有する。それにより、携帯電話機920において、画像特徴量に基づいてSAO処理の作用を適応的に軽減することができる。
(2)第2の応用例
図15は、上述した実施形態を適用した記録再生装置の概略的な構成の一例を示している。記録再生装置940は、例えば、受信した放送番組の音声データ及び映像データを符号化して記録媒体に記録する。また、記録再生装置940は、例えば、他の装置から取得される音声データ及び映像データを符号化して記録媒体に記録してもよい。また、記録再生装置940は、例えば、ユーザの指示に応じて、記録媒体に記録されているデータをモニタ及びスピーカ上で再生する。このとき、記録再生装置940は、音声データ及び映像データを復号する。
記録再生装置940は、チューナ941、外部インタフェース942、エンコーダ943、HDD(Hard Disk Drive)944、ディスクドライブ945、セレクタ946、デコーダ947、OSD(On-Screen Display)948、制御部949、及びユーザインタフェース950を備える。
チューナ941は、アンテナ(図示せず)を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ941は、復調により得られた符号化ビットストリームをセレクタ946へ出力する。即ち、チューナ941は、記録再生装置940における伝送手段としての役割を有する。
外部インタフェース942は、記録再生装置940と外部機器又はネットワークとを接続するためのインタフェースである。外部インタフェース942は、例えば、IEEE1394インタフェース、ネットワークインタフェース、USBインタフェース、又はフラッシュメモリインタフェースなどであってよい。例えば、外部インタフェース942を介して受信される映像データ及び音声データは、エンコーダ943へ入力される。即ち、外部インタフェース942は、記録再生装置940における伝送手段としての役割を有する。
エンコーダ943は、外部インタフェース942から入力される映像データ及び音声データが符号化されていない場合に、映像データ及び音声データを符号化する。そして、エンコーダ943は、符号化ビットストリームをセレクタ946へ出力する。
HDD944は、映像及び音声などのコンテンツデータが圧縮された符号化ビットストリーム、各種プログラム及びその他のデータを内部のハードディスクに記録する。また、HDD944は、映像及び音声の再生時に、これらデータをハードディスクから読み出す。
ディスクドライブ945は、装着されている記録媒体へのデータの記録及び読み出しを行う。ディスクドライブ945に装着される記録媒体は、例えばDVDディスク(DVD−Video、DVD−RAM、DVD−R、DVD−RW、DVD+R、DVD+RW等)又はBlu−ray(登録商標)ディスクなどであってよい。
セレクタ946は、映像及び音声の記録時には、チューナ941又はエンコーダ943から入力される符号化ビットストリームを選択し、選択した符号化ビットストリームをHDD944又はディスクドライブ945へ出力する。また、セレクタ946は、映像及び音声の再生時には、HDD944又はディスクドライブ945から入力される符号化ビットストリームをデコーダ947へ出力する。
デコーダ947は、符号化ビットストリームを復号し、映像データ及び音声データを生成する。そして、デコーダ947は、生成した映像データをOSD948へ出力する。また、デコーダ904は、生成した音声データを外部のスピーカへ出力する。
OSD948は、デコーダ947から入力される映像データを再生し、映像を表示する。また、OSD948は、表示する映像に、例えばメニュー、ボタン又はカーソルなどのGUIの画像を重畳してもよい。
制御部949は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、記録再生装置940の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース950から入力される操作信号に応じて、記録再生装置940の動作を制御する。
ユーザインタフェース950は、制御部949と接続される。ユーザインタフェース950は、例えば、ユーザが記録再生装置940を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース950は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部949へ出力する。
このように構成された記録再生装置940において、エンコーダ943は、上述した実施形態に係る画像符号化装置10の機能を有する。それにより、記録再生装置940において、画像特徴量に基づいてSAO処理の作用を適応的に軽減することができる。
(3)第3の応用例
図16は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
撮像装置960は、光学ブロック961、撮像部962、信号処理部963、画像処理部964、表示部965、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970、ユーザインタフェース971、センサ972、バス973及びバッテリー974を備える。
光学ブロック961は、撮像部962に接続される。撮像部962は、信号処理部963に接続される。表示部965は、画像処理部964に接続される。ユーザインタフェース971は、制御部970に接続される。バス973は、画像処理部964、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970及びセンサ972を相互に接続する。
光学ブロック961は、フォーカスレンズ及び絞り機構などを有する。光学ブロック961は、被写体の光学像を撮像部962の撮像面に結像させる。撮像部962は、CCD又はCMOSなどのイメージセンサを有し、撮像面に結像した光学像を光電変換によって電気信号としての画像信号に変換する。そして、撮像部962は、画像信号を信号処理部963へ出力する。
信号処理部963は、撮像部962から入力される画像信号に対してニー補正、ガンマ補正、色補正などの種々のカメラ信号処理を行う。信号処理部963は、カメラ信号処理後の画像データを画像処理部964へ出力する。
画像処理部964は、信号処理部963から入力される画像データを符号化し、符号化データを生成する。そして、画像処理部964は、生成した符号化データを外部インタフェース966又はメディアドライブ968へ出力する。また、画像処理部964は、外部インタフェース966又はメディアドライブ968から入力される符号化データを復号し、画像データを生成する。そして、画像処理部964は、生成した画像データを表示部965へ出力する。また、画像処理部964は、信号処理部963から入力される画像データを表示部965へ出力して画像を表示させてもよい。また、画像処理部964は、OSD969から取得される表示用データを、表示部965へ出力する画像に重畳してもよい。
OSD969は、例えばメニュー、ボタン又はカーソルなどのGUIの画像を生成して、生成した画像を画像処理部964へ出力する。
外部インタフェース966は、例えばUSB入出力端子として構成される。外部インタフェース966は、例えば、画像の印刷時に、撮像装置960とプリンタとを接続する。また、外部インタフェース966には、必要に応じてドライブが接続される。ドライブには、例えば、磁気ディスク又は光ディスクなどのリムーバブルメディアが装着され、リムーバブルメディアから読み出されるプログラムが、撮像装置960にインストールされ得る。さらに、外部インタフェース966は、LAN又はインターネットなどのネットワークに接続されるネットワークインタフェースとして構成されてもよい。即ち、外部インタフェース966は、撮像装置960における伝送手段としての役割を有する。
メディアドライブ968に装着される記録媒体は、例えば、磁気ディスク、光磁気ディスク、光ディスク、又は半導体メモリなどの、読み書き可能な任意のリムーバブルメディアであってよい。また、メディアドライブ968に記録媒体が固定的に装着され、例えば、内蔵型ハードディスクドライブ又はSSD(Solid State Drive)のような非可搬性の記憶部が構成されてもよい。
制御部970は、CPUなどのプロセッサ、並びにRAM及びROMなどのメモリを有する。メモリは、CPUにより実行されるプログラム、及びプログラムデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、撮像装置960の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース971から入力される操作信号に応じて、撮像装置960の動作を制御する。
ユーザインタフェース971は、制御部970と接続される。ユーザインタフェース971は、例えば、ユーザが撮像装置960を操作するためのボタン及びスイッチなどを有する。ユーザインタフェース971は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部970へ出力する。
センサ972は、加速度センサ及びジャイロセンサなどのセンサ群を含み、撮像装置960の動きを表す指標を出力する。バッテリー974は、図中では省略されている電力供給ラインを介して、撮像部962、信号処理部963、画像処理部964、表示部965、メディアドライブ968、OSD969、制御部970及びセンサ972に電力を供給する。
このように構成された撮像装置960において、画像処理部964は、上述した実施形態に係る画像符号化装置10の機能を有する。それにより、撮像装置960において、画像特徴量に基づいてSAO処理の作用を適応的に軽減することができる。
<8.まとめ>
ここまで、図1〜図16を用いて、本開示に係る技術の実施形態について詳細に説明した。上述した実施形態によれば、サンプル適応オフセット(SAO)処理において、リコンストラクト画像に適用すべきオフセット値が当該画像のブロックごとの画像特徴量に基づいて修正され、修正されたオフセット値でリコンストラクト画像の画素値がオフセットされる。それにより、SAO処理において過剰な又は不必要なオフセットが適用される結果として画像のテクスチャが不鮮明化し、復号画像の主観的画質が劣化してしまうという不都合を防止することができる。
一実施例によれば、あるブロックの画像が比較的平坦であることを画像特徴量が示す場合に、SAO処理において当該ブロックに適用されるオフセットが縮小される。その結果、より少ない高周波成分しか含まない(即ち、除去すべきノイズも少ないと見込まれる)ブロックについて、ノイズ除去の利得に見合わない主観的画質の劣化が防止される。
別の実施例によれば、あるブロックの高周波成分のロスが比較的少ないことを画像特徴量が示す場合に、SAO処理において当該ブロックに適用されるオフセットが縮小される。その結果、高周波成分のロスに起因して生じるノイズが少ないと見込まれるブロックについて、ノイズ除去の利得に見合わない主観的画質の劣化が防止される。
また別の実施例によれば、あるブロック内の全ての又は比較的多くのサブブロックにおいて動きベクトルがゼロである場合に、SAO処理において当該ブロックに適用されるオフセットが縮小され又はオフセットの適用がスキップされる。その結果、動きの無い画像領域においてオフセットが累積的に加算されることに起因する画像の不鮮明化が防止される。
また、上述した実施形態によれば、レート歪み(RD)最適化に基づいて判定されるオフセットを修正することにより得られる修正オフセット値が、SAO処理において利用され得る。かかる構成によれば、主観的画質を考慮しないRD最適化のみに基づくオフセット値が利用される既存の手法と比較して、復号画像の主観的画質を向上させることができる。
本明細書に記述したCTB、CB、PB及びTBとの用語は、CTU、CU、PU及びTUとの用語にそれぞれ置き換えられてもよい。CTB、CB、PB及びTBは、画像の一部分としての個々のブロック(又はサブブロック)を主に意味する一方、CTU、CU、PU及びTUは、関連付けられるシンタックスをも含む論理的な単位を主に意味する。
また、本明細書では、SAO関連パラメータが、符号化ストリームのヘッダに多重化されて、符号化側から復号側へ伝送される例について主に説明した。しかしながら、これら情報を伝送する手法はかかる例に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像(スライス若しくはブロックなど、画像の一部であってもよい)と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像(又はビットストリーム)とは別の伝送路上で伝送されてもよい。また、情報は、画像(又はビットストリーム)とは別の記録媒体(又は同一の記録媒体の別の記録エリア)に記録されてもよい。さらに、情報と画像(又はビットストリーム)とは、例えば、複数フレーム、1フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。
また、本明細書に記載された効果は、あくまで説明的又は例示的なものであって限定的ではない。つまり、本開示に係る技術は、上記の効果と共に、又は上記の効果に代えて、本明細書の記載から当業者には明らかな他の効果を奏し得る。
なお、以下のような構成も本開示の技術的範囲に属する。
(1)
リコンストラクト画像に適用すべきオフセット値を、前記リコンストラクト画像のブロックごとの画像特徴量に基づいて修正するオフセット修正部と、
前記オフセット修正部により修正されたオフセット値で、前記リコンストラクト画像の画素値をオフセットするオフセット部と、
を備える画像処理装置。
(2)
前記画像特徴量は、各ブロックの平坦さに関連する指標を含み、
前記オフセット修正部は、より平坦なブロックにより小さいオフセット値が適用されるように前記オフセット値を修正する、
前記(1)に記載の画像処理装置。
(3)
前記平坦さに関連する指標は、画素値の分散、標準偏差、及び一次微分総和、のうちの1つ以上を含む、前記(2)に記載の画像処理装置。
(4)
前記画像特徴量は、各ブロックにおける高周波成分のロスに関連する指標を含み、
前記オフセット修正部は、高周波成分のロスのより小さいブロックにより小さいオフセット値が適用されるように前記オフセット値を修正する、
前記(1)に記載の画像処理装置。
(5)
前記高周波成分のロスに関連する指標は、変換係数がゼロであるサブブロックの割合、量子化パラメータ、及び動き補償のサンプル精度が特定の精度であるサブブロックの割合、のうちの1つ以上を含む、前記(4)に記載の画像処理装置。
(6)
前記オフセット修正部は、前記変換係数がゼロであるサブブロックの割合がより大きいブロックにより小さいオフセット値が適用されるように前記オフセット値を修正する、前記(5)に記載の画像処理装置。
(7)
前記オフセット修正部による前記修正の強さは、前記量子化パラメータの値が大きいほど弱められる、前記(6)に記載の画像処理装置。
(8)
前記オフセット修正部は、前記量子化パラメータがより小さいブロックにより小さいオフセット値が適用されるように前記オフセット値を修正する、前記(5)に記載の画像処理装置。
(9)
前記オフセット修正部は、前記動き補償のサンプル精度が小数精度であるサブブロックの割合がより大きいブロックにより小さいオフセット値が適用されるように前記オフセット値を修正する、前記(5)に記載の画像処理装置。
(10)
前記画像特徴量は、動きベクトルがゼロであるサブブロックの割合を含む、前記(1)に記載の画像処理装置。
(11)
前記オフセット修正部は、前記動きベクトルがゼロであるサブブロックの割合がより大きいブロックにより小さいオフセット値が適用されるように前記オフセット値を修正する、前記(10)に記載の画像処理装置。
(12)
前記画像処理装置は、前記リコンストラクト画像に適用すべきオフセット値を、レート歪み最適化に基づいて前記ブロックごとに判定するオフセット判定部、をさらに備え、
前記オフセット修正部は、前記オフセット判定部により判定された前記オフセット値を、前記画像特徴量に基づいて修正する、
前記(1)〜(11)のいずれか1項に記載の画像処理装置。
(13)
前記オフセット判定部は、前記ブロックごとにオフセットタイプを選択し、
前記オフセット修正部は、選択された前記オフセットタイプがエッジオフセットであるブロックについて、前記オフセット値を修正する、
前記(12)に記載の画像処理装置。
(14)
前記オフセット部は、Bピクチャ又はBスライスに属するブロックの画素値をオフセットすることをスキップする、前記(1)〜(13)のいずれか1項に記載の画像処理装置。
(15)
前記オフセット部は、動きベクトルがゼロであるブロック又はサブブロックの画素値をオフセットすることをスキップする、前記(1)〜(14)のいずれか1項に記載の画像処理装置。
(16)
前記ブロックは、CTB(Coding Tree Block)に相当する、前記(1)〜(15)のいずれか1項に記載の画像処理装置。
(17)
リコンストラクト画像に適用すべきオフセット値を、前記リコンストラクト画像のブロックごとの画像特徴量に基づいて修正することと、
修正された前記オフセット値で、前記リコンストラクト画像の画素値をオフセットすることと、
を含む画像処理方法。
(18)
リコンストラクト画像に適用すべきオフセット値を、前記リコンストラクト画像のブロックごとの画像特徴量に基づいて修正するオフセット修正部と、
前記オフセット修正部により修正されたオフセット値を符号化する符号化部と、
前記符号化部により符号化された前記修正されたオフセット値を復号する復号部と、
前記復号部により復号された前記修正されたオフセット値で、前記リコンストラクト画像の画素値をオフセットするオフセット部と、
を備える画像処理システム。