以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付すことにより重複説明を省略する。
また、以下の順序で説明を行う。
1.装置の概要
1−1.画像符号化装置
1−2.画像復号装置
2.既存の手法の説明
3.第1の実施例
3−1.デブロックフィルタの構成例
3−2.処理の流れ
4.第2の実施例
4−1.デブロックフィルタの構成例
4−2.処理の流れ
5.第3の実施例
5−1.デブロックフィルタの構成例
5−2.処理の流れ
6.応用例
7.まとめ
<1.装置の概要>
まず、図1及び図2を用いて、本明細書で開示する技術を適用可能な一例としての装置の概要を説明する。本明細書で開示する技術は、例えば、画像符号化装置及び画像復号装置に適用可能である。
[1−1.画像符号化装置]
図1は、一実施形態に係る画像符号化装置10の構成の一例を示すブロック図である。図1を参照すると、画像符号化装置10は、A/D(Analogue to Digital)変換部11、並べ替えバッファ12、減算部13、直交変換部14、量子化部15、可逆符号化部16、蓄積バッファ17、レート制御部18、逆量子化部21、逆直交変換部22、加算部23、デブロックフィルタ24a、フレームメモリ25、セレクタ26、イントラ予測部30、動き探索部40、及びモード選択部50を備える。
A/D変換部11は、アナログ形式で入力される画像信号をデジタル形式の画像データに変換し、一連のデジタル画像データを並べ替えバッファ12へ出力する。
並べ替えバッファ12は、A/D変換部11から入力される一連の画像データに含まれる画像を並べ替える。並べ替えバッファ12は、符号化処理に係るGOP(Group of Pictures)構造に応じて画像を並べ替えた後、並べ替え後の画像データを減算部13、イントラ予測部30及び動き探索部40へ出力する。
減算部13には、並べ替えバッファ12から入力される画像データ、及び後に説明するモード選択部50により選択される予測画像データが供給される。減算部13は、並べ替えバッファ12から入力される画像データとモード選択部50から入力される予測画像データとの差分である予測誤差データを算出し、算出した予測誤差データを直交変換部14へ出力する。
直交変換部14は、減算部13から入力される予測誤差データについて直交変換を行う。直交変換部14により実行される直交変換は、例えば、離散コサイン変換(Discrete Cosine Transform:DCT)又はカルーネン・レーベ変換などであってよい。直交変換部14は、直交変換処理により取得される変換係数データを量子化部15へ出力する。
量子化部15には、直交変換部14から入力される変換係数データ、及び後に説明するレート制御部18からのレート制御信号が供給される。量子化部15は、変換係数データを量子化し、量子化後の変換係数データ(以下、量子化データという)を可逆符号化部16及び逆量子化部21へ出力する。また、量子化部15は、レート制御部18からのレート制御信号に基づいて量子化パラメータ(量子化スケール)を切替えることにより、可逆符号化部16に入力される量子化データのビットレートを変化させる。
可逆符号化部16には、量子化部15から入力される量子化データ、及び、後に説明するイントラ予測部30又は動き探索部40により生成されモード選択部50により選択されるイントラ予測又はインター予測に関する情報が供給される。イントラ予測に関する情報は、例えば、ブロックごとの最適なイントラ予測モードを示す予測モード情報を含み得る。また、インター予測に関する情報は、例えば、ブロックごとの動きベクトルの予測のための予測モード情報、差分動きベクトル情報、及び参照画像情報などを含み得る。
可逆符号化部16は、量子化データについて可逆符号化処理を行うことにより、符号化ストリームを生成する。可逆符号化部16による可逆符号化は、例えば、可変長符号化、又は算術符号化などであってよい。また、可逆符号化部16は、上述したイントラ予測に関する情報又はインター予測に関する情報を、符号化ストリームのヘッダ(例えばブロックヘッダ又はスライスヘッダなど)内に多重化する。そして、可逆符号化部16は、生成した符号化ストリームを蓄積バッファ17へ出力する。
蓄積バッファ17は、可逆符号化部16から入力される符号化ストリームを一時的に蓄積する。そして、蓄積バッファ17は、蓄積した符号化ストリームを、伝送路(又は画像符号化装置10からの出力線)の帯域に応じたレートで出力する。
レート制御部18は、蓄積バッファ17の空き容量を監視する。そして、レート制御部18は、蓄積バッファ17の空き容量に応じてレート制御信号を生成し、生成したレート制御信号を量子化部15へ出力する。例えば、レート制御部18は、蓄積バッファ17の空き容量が少ない時には、量子化データのビットレートを低下させるためのレート制御信号を生成する。また、例えば、レート制御部18は、蓄積バッファ17の空き容量が十分大きい時には、量子化データのビットレートを高めるためのレート制御信号を生成する。
逆量子化部21は、量子化部15から入力される量子化データについて逆量子化処理を行う。そして、逆量子化部21は、逆量子化処理により取得される変換係数データを、逆直交変換部22へ出力する。
逆直交変換部22は、逆量子化部21から入力される変換係数データについて逆直交変換処理を行うことにより、予測誤差データを復元する。そして、逆直交変換部22は、復元した予測誤差データを加算部23へ出力する。
加算部23は、逆直交変換部22から入力される復元された予測誤差データとモード選択部50から入力される予測画像データとを加算することにより、復号画像データを生成する。そして、加算部23は、生成した復号画像データをデブロックフィルタ24a及びフレームメモリ25へ出力する。
デブロックフィルタ24aは、画像の符号化の際に生じるブロック歪みを減少させるためのフィルタリング処理を行う。より具体的には、デブロックフィルタ24aは、加算部23から入力される復号画像データ内の各ブロック境界について、ラインごとにフィルタリングの要否を判定する。そして、デブロックフィルタ24aは、フィルタを適用すべきであると判定したラインにデブロックフィルタを適用する。ブロック境界が垂直境界である場合には、上記ラインは、垂直境界と直交する行に相当する。ブロック境界が水平境界である場合には、上記ラインは、水平境界と直交する列に相当する。デブロックフィルタ24aには、加算部23からの復号画像データに加えて、フィルタリングの要否の判定のために使用される情報(例えば、モード情報、変換係数情報及び動きベクトル情報)も入力される。その後、デブロックフィルタ24aは、ブロック歪みの除去されたフィルタリング後の復号画像データをフレームメモリ25へ出力する。なお、デブロックフィルタ24aによる処理について、後に詳細に説明する。
フレームメモリ25は、加算部23から入力される復号画像データ、及びデブロックフィルタ24aから入力されるフィルタリング後の復号画像データを記憶する。
セレクタ26は、イントラ予測のために使用されるフィルタリング前の復号画像データをフレームメモリ25から読み出し、読み出した復号画像データを参照画像データとしてイントラ予測部30に供給する。また、セレクタ26は、インター予測のために使用されるフィルタリング後の復号画像データをフレームメモリ25から読み出し、読み出した復号画像データを参照画像データとして動き探索部40に供給する。
イントラ予測部30は、並べ替えバッファ12から入力される符号化対象の画像データ、及びセレクタ26を介して供給される復号画像データに基づいて、各イントラ予測モードのイントラ予測処理を行う。例えば、イントラ予測部30は、各イントラ予測モードによる予測結果を所定のコスト関数を用いて評価する。そして、イントラ予測部30は、コスト関数値が最小となるイントラ予測モード、即ち圧縮率が最も高くなるイントラ予測モードを、最適なイントラ予測モードとして選択する。さらに、イントラ予測部30は、当該最適なイントラ予測モードを表す予測モード情報を含むイントラ予測に関する情報、予測画像データ、及びコスト関数値を、モード選択部50へ出力する。
動き探索部40は、並べ替えバッファ12から入力される符号化対象の画像データ、及びセレクタ26を介して供給される復号画像データに基づいて、インター予測処理(フレーム間予測処理)を行う。例えば、動き探索部40は、各予測モードによる予測結果を所定のコスト関数を用いて評価する。次に、動き探索部40は、コスト関数値が最小となる予測モード、即ち圧縮率が最も高くなる予測モードを、最適な予測モードとして選択する。また、動き探索部40は、当該最適な予測モードに従って予測画像データを生成する。そして、動き探索部40は、選択した最適な予測モードを表す予測モード情報を含むインター予測に関する情報、予測画像データ、及びコスト関数値を、モード選択部50へ出力する。
モード選択部50は、イントラ予測部30から入力されるイントラ予測に関するコスト関数値と動き探索部40から入力されるインター予測に関するコスト関数値とを比較する。そして、モード選択部50は、イントラ予測及びインター予測のうちコスト関数値がより少ない予測手法を選択する。モード選択部50は、イントラ予測を選択した場合には、イントラ予測に関する情報を可逆符号化部16へ出力すると共に、予測画像データを減算部13及び加算部23へ出力する。また、モード選択部50は、インター予測を選択した場合には、インター予測に関する上述した情報を可逆符号化部16へ出力すると共に、予測画像データを減算部13及び加算部23へ出力する。
[1−2.画像復号装置]
図2は、一実施形態に係る画像復号装置60の構成の一例を示すブロック図である。図2を参照すると、画像復号装置60は、蓄積バッファ61、可逆復号部62、逆量子化部63、逆直交変換部64、加算部65、デブロックフィルタ24b、並べ替えバッファ67、D/A(Digital to Analogue)変換部68、フレームメモリ69、セレクタ70及び71、イントラ予測部80、並びに動き補償部90を備える。
蓄積バッファ61は、伝送路を介して入力される符号化ストリームを一時的に蓄積する。
可逆復号部62は、蓄積バッファ61から入力される符号化ストリームを、符号化の際に使用された符号化方式に従って復号する。また、可逆復号部62は、符号化ストリームのヘッダ領域に多重化されている情報を復号する。符号化ストリームのヘッダ領域に多重化されている情報とは、例えば、ブロックヘッダ内のイントラ予測に関する情報及びインター予測に関する情報を含み得る。可逆復号部62は、イントラ予測に関する情報をイントラ予測部80へ出力する。また、可逆復号部62は、インター予測に関する情報を動き補償部90へ出力する。
逆量子化部63は、可逆復号部62による復号後の量子化データを逆量子化する。逆直交変換部64は、符号化の際に使用された直交変換方式に従い、逆量子化部63から入力される変換係数データについて逆直交変換を行うことにより、予測誤差データを生成する。そして、逆直交変換部64は、生成した予測誤差データを加算部65へ出力する。
加算部65は、逆直交変換部64から入力される予測誤差データと、セレクタ71から入力される予測画像データとを加算することにより、復号画像データを生成する。そして、加算部65は、生成した復号画像データをデブロックフィルタ24b及びフレームメモリ69へ出力する。
デブロックフィルタ24bは、復号された画像に現れるブロック歪みを減少させるためのフィルタリング処理を行う。より具体的には、デブロックフィルタ24bは、加算部65から入力される復号画像データ内の各ブロック境界について、ラインごとにフィルタリングの要否を判定する。そして、デブロックフィルタ24bは、フィルタを適用すべきであると判定したラインにデブロックフィルタを適用する。デブロックフィルタ24bには、加算部65からの復号画像データに加えて、フィルタリングの要否の判定のために使用される情報も入力される。その後、デブロックフィルタ24bは、ブロック歪みの除去されたフィルタリング後の復号画像データを並べ替えバッファ67及びフレームメモリ69へ出力する。なお、デブロックフィルタ24bによる処理について、後に詳細に説明する。
並べ替えバッファ67は、デブロックフィルタ24bから入力される画像を並べ替えることにより、時系列の一連の画像データを生成する。そして、並べ替えバッファ67は、生成した画像データをD/A変換部68へ出力する。
D/A変換部68は、並べ替えバッファ67から入力されるデジタル形式の画像データをアナログ形式の画像信号に変換する。そして、D/A変換部68は、例えば、画像復号装置60と接続されるディスプレイ(図示せず)にアナログ画像信号を出力することにより、画像を表示させる。
フレームメモリ69は、加算部65から入力されるフィルタリング前の復号画像データ、及びデブロックフィルタ24bから入力されるフィルタリング後の復号画像データを記憶する。
セレクタ70は、可逆復号部62により取得されるモード情報に応じて、画像内のブロックごとに、フレームメモリ69からの画像データの出力先をイントラ予測部80と動き補償部90との間で切り替える。例えば、セレクタ70は、イントラ予測モードが指定された場合には、フレームメモリ69から供給されるフィルタリング前の復号画像データを参照画像データとしてイントラ予測部80へ出力する。また、セレクタ70は、インター予測モードが指定された場合には、フレームメモリ69から供給されるフィルタリング後の復号画像データを参照画像データとして動き補償部90へ出力する。
セレクタ71は、可逆復号部62により取得されるモード情報に応じて、画像内のブロックごとに、加算部65へ供給すべき予測画像データの出力元をイントラ予測部80と動き補償部90との間で切り替える。例えば、セレクタ71は、イントラ予測モードが指定された場合には、イントラ予測部80から出力される予測画像データを加算部65へ供給する。セレクタ71は、インター予測モードが指定された場合には、動き補償部90から出力される予測画像データを加算部65へ供給する。
イントラ予測部80は、可逆復号部62から入力されるイントラ予測に関する情報とフレームメモリ69からの参照画像データとに基づいて画素値の画面内予測を行い、予測画像データを生成する。そして、イントラ予測部80は、生成した予測画像データをセレクタ71へ出力する。
動き補償部90は、可逆復号部62から入力されるインター予測に関する情報とフレームメモリ69からの参照画像データとに基づいて動き補償処理を行い、予測画像データを生成する。そして、動き補償部90は、生成した予測画像データをセレクタ71へ出力する。
<2.既存の手法の説明>
一般的に、H.264/AVC又はHEVCなどの既存の画像符号化方式におけるデブロックフィルタによる処理は、フィルタリング要否判定処理及びフィルタリング処理という2種類の処理を含む。以下、HEVCを例にとって、これら2つの処理について説明する。
(1)フィルタリング要否判定処理
フィルタリング要否判定処理は、入力画像内のブロックの境界ごとにデブロックフィルタを適用すべきか否かを判定する処理である。ブロックの境界は、左右に隣接するブロック間の垂直境界と、上下に隣接するブロック間の水平境界とを含む。JCTVC−A119では、8×8画素のブロックサイズが最小の処理単位である。例えば、16×16画素のマクロブロック内には4つの8×8画素のブロックが存在し、ブロックごとに1つの(左の)垂直境界及び1つの(上の)水平境界、即ち合計で4+4=8個の境界が判定の対象となる。なお、本明細書において、マクロブロックとの用語は、HEVCの文脈における符号化単位(CU:Coding Unit)をも含むものとする。
図3は、境界を挟んで隣接する2つのブロックBa及びBb内の画素の一例を示す説明図である。本明細書では、このように境界を挟んで互いに隣接するブロックを隣接ブロックという。ここでは垂直境界を例にとって説明するが、当然ながら、ここで説明された事項は水平境界にも同等に適用可能である。図3の例において、ブロックBa内の画素は、pijという記号で示されている。iは列のインデックス、jは行のインデックスである。列のインデックスiは、垂直境界に近い列から順に(右から左へ)0,1,2,3と付番されている。行のインデックスjは、上から下へ0,1,2,…,7と付番されている。なお、ブロックBaの左半分は図中で省略されている。一方、ブロックBb内の画素は、qkjという記号で示されている。kは列のインデックス、jは行のインデックスである。列のインデックスkは、垂直境界に近い列から順に(左から右へ)0,1,2,3と付番されている。なお、ブロックBbの右半分もまた図中で省略されている。
図3に示したブロックBa及びBbの間の垂直境界について、デブロックフィルタを適用すべきか否かは、次のような条件に従って判定され得る:
・輝度成分(Luma)の判定条件・・・条件A及び条件Bがいずれも真なら適用
−条件A:
(A1)ブロックBa若しくはBbがイントラ予測モードである;
(A2)ブロックBa若しくはBbが非ゼロの直交変換係数を有する;又は
(A3)|MVAx−MVBx|≧4若しくは|MVAy−MVBy|≧4
−条件B:
|p22−2p12+p02|+|q22−2q12+q02|+|p25−2p15+p05|+|q25−2q15+q05|<β
なお、条件A3に関し、Qpel(1/4画素)精度のブロックBaの動きベクトルを(MVAx,MVAy)、ブロックBbの動きベクトルを(MVBx,MVBy)とする。また、条件Bにおけるβは、エッジ判定閾値である。βの初期値は量子化パラメータに応じて与えられる。また、βの値は、スライスヘッダ内のパラメータでユーザにより指定可能である。
・色差成分(Chroma)の判定条件・・・条件A1が真なら適用
−条件A1:ブロックBa又はBbがイントラ予測モードである
即ち、図4において点線枠L2及びL5で示しているように、一般的な垂直境界についてのフィルタリング要否判定処理(特に、輝度成分の判定条件Bの判定)では、各ブロックの2番目及び5番目の行(最も上の行を0番目とする)の画素が参照される。そして、上述した判定条件に従ってデブロックフィルタを適用すべきと判定された垂直境界の左右のブロックにデブロックフィルタが適用される。同様に、水平境界についてのフィルタリング要否判定処理では、各ブロックの2番目及び5番目の列の画素(図4には示していない)が参照される。そして、上述した判定条件に従ってデブロックフィルタを適用すべきと判定された水平境界の上下のブロックにデブロックフィルタが適用される。
(2)フィルタリング処理
ある境界についてデブロックフィルタを適用すべきと判定されると、垂直境界については当該境界の左右の画素、水平境界については当該境界の上下の画素に、フィルタリング処理が行われる。輝度成分については、画素値に応じてフィルタ強度が強(strong)フィルタと弱(weak)フィルタとの間で切り替えられ得る。
・輝度成分のフィルタリング
−強度選択・・・1行ごと(又は1列ごと)にフィルタ強度を選択。以下の条件C1〜C3が全て満たされる場合には強フィルタ、いずれか1つでも満たされない場合には弱フィルタが選択される:
(C1)d<(β>>2)
(C2)(|p3j−p0j|+|q0j−q3j|)<(β>>3)
(C3)|p0j−q0j|<((5tC+1)>>1)
ここで、jは、垂直境界については行、水平境界については列のインデックスである。また、d=|p22−2p12+p02|+|q22−2q12+q02|+|p25−2p15+p05|+|q25−2q15+q05|である。
−弱フィルタリング:
Δ=Clip(−tC,tC,(13(q0j−p0j)+4(q1j−p1j)−5(q2j−p2j)+16)>>5))
p0j=Clip0−255(p0j+Δ)
q0j=Clip0−255(q0j−Δ)
p1j=Clip0−255(p1j+Δ/2)
q1j=Clip0−255(q1j−Δ/2)
−強フィルタリング:
p0j=Clip0−255((p2j+2p1j+2p0j+2q0j+q1j+4)>>3)
q0j=Clip0−255((p1j+2p0j+2q0j+2q1j+q2j+4)>>3)
p1j=Clip0−255((p2j+p1j+p0j+q0j+2)>>2)
q1j=Clip0−255((p0j+q0j+q1j+q2j+2)>>2)
p2j=Clip0−255((2p3j+3p2j+p1j+p0j+q0j+4)>>3)
q2j=Clip0−255((p0j+q0j+q1j+3q2j+2q3j+4)>>3)
なお、Clip(a,b,c)は値cをa≦c≦bの範囲でクリップする処理、Clip0−255(c)は値cを0≦c≦255の範囲でクリップする処理をそれぞれ表す。
・色差成分のフィルタリング:
Δ=Clip(−tC,tC,((((q0j−p0j)<<2)+p1j−q1j+4)>>3))
p0j=Clip0−255(p0j+Δ)
q0j=Clip0−255(q0j−Δ)
これら輝度成分及び色差成分のフィルタリングは、ブロックBa及びBbの全ての行又は列について(即ち、0≦j≦7の全ての整数jについて)行われる。即ち、図5に示しているように、ある垂直境界についてフィルタリングが必要であると判定されると、当該垂直境界に直交する全てのラインL0〜L7の1つ以上の画素値が更新される。同様に、ある水平境界についてフィルタリングが必要であると判定されると、当該水平境界に直交する全てのラインL0〜L7の1つ以上の画素値が更新される。
これらの説明から理解されるように、既存の手法では、フィルタリングの要否の判定は、画像内の2つの隣接ブロックに挟まれる境界ごとに行われる。本明細書では、このような判定を、ブロック単位での判定という。ある境界について、フィルタリングが部分的に必要であるというような決定はなされない。そのため、ブロック歪みに起因する画質の劣化がブロック内の一部の画素にのみ現れていたとしても、ブロック全体をフィルタリングするか又はブロック全体をフィルタリングしないという、二者択一の選択しかすることできない。これは、良好な画質を有する部分への無駄なデブロックフィルタの適用による画質の低下、及び劣化した画質を有する部分にデブロックフィルタが適用されないことによる画質向上の機会の逸失という2通りの弊害を含んでいる。そこで、以下に説明するデブロックフィルタの2つの実施例では、かかる弊害を解消するために、デブロックフィルタを適用すべき範囲をより小さい粒度で判定することとする。
<3.第1の実施例>
[3−1.デブロックフィルタの構成例]
本節では、図1に示した画像符号化装置10のデブロックフィルタ24a及び図2に示した画像復号装置60のデブロックフィルタ24bの第1の実施例に係る構成の一例を説明する。なお、デブロックフィルタ24a及びデブロックフィルタ24bの構成は、共通であってよい。従って、これ以降の説明では、特に両者を区別する必要が無い場合には、デブロックフィルタ24a及びデブロックフィルタ24bをデブロックフィルタ24と総称する。
図6は、第1の実施例に係るデブロックフィルタ24の詳細な構成の一例を示すブロック図である。図6を参照すると、デブロックフィルタ24は、ブロック判定部110、ライン判定部120、強度選択部130、フィルタリング部140及び判定制御部150を有する。
(1)ブロック判定部
ブロック判定部110は、ライン判定部120によるライン単位の判定の前段階の処理として、ブロック単位の判定条件についての判定を行う。ブロック単位の判定条件とは、典型的には、境界を挟む2つの隣接ブロックの変換係数及び符号化パラメータの少なくとも1つに基づく条件である。変換係数とは、例えば、直交変換係数であってよい。また、符号化パラメータとは、例えば、予測モード及び動きベクトルの一方又は双方であってよい。ブロック単位の判定条件は、例えば、上述した既存の手法における、輝度成分の判定条件のうちの判定条件A及び色差成分の判定条件A1であってよい。
即ち、ブロック判定部110には、各境界を挟んで隣接する隣接ブロックについての判定情報が供給される。ここで供給される判定情報は、例えば、モード情報、変換係数情報及び動きベクトル情報を含む。そして、ブロック判定部110は、各境界についてのブロック単位での輝度成分の判定として、次の条件Aが満たされるか否かを判定する:
−条件A:
(A1)ブロックBa若しくはBbがイントラ予測モードである;
(A2)ブロックBa若しくはBbが非ゼロの直交変換係数を有する;又は
(A3)|MVAx−MVBx|≧4若しくは|MVAy−MVBy|≧4
そして、ブロック判定部110は、条件Aを満たす境界について、ライン判定部120にさらにライン単位での判定を行わせる。一方、ブロック判定部110は、条件Aを満たさない境界について、ライン判定部120によるライン単位での判定をスキップさせる。
また、ブロック判定部110は、各境界についてのブロック単位での色差成分の判定として、次の条件A1が満たされるか否かを判定する:
−条件A1:ブロックBa又はBbがイントラ予測モードである
色差成分については、ライン判定部120によるライン単位での判定は行われなくてよい。この場合、条件A1を満たす境界については、当該境界の全てのラインの色差成分がフィルタリング部140によりフィルタリングされる。条件A1を満たさない境界については、当該境界の全てのラインの色差成分は、フィルタリングされない。
なお、ここで説明したブロック判定部110によるブロック単位での判定は、一例に過ぎない。即ち、上述した判定条件とは異なるブロック単位の判定条件が使用されてもよい。例えば、判定条件A1〜A3のうちいずれかが省略されてもよく、別の条件が追加されてもよい。さらに、色差成分についても、次に説明するようなライン単位での判定が、省略されることなく実行されてよい。
(2)ライン判定部
ライン判定部120は、各境界と直交するラインごとに、当該境界を挟んで隣接する2つの隣接ブロックを対象としてデブロックフィルタを適用するか否かを判定する。ライン単位の判定条件は、例えば、次の判定条件B´であってよい。
−条件B´:
d=|p2i−2p1i+p0i|+|q2i−2q1i+q0i|
とした場合に、
d<(β>>1)
ここで、dは判定用パラメータ、βは上述したエッジ判定閾値である。また、iはラインのインデックスである。各ブロックのサイズが8×8画素であれば、iは、0≦i≦7の整数である。
即ち、ライン判定部120は、ある1つのラインについての判定に際して、条件B´に従って、2つの隣接ブロックBa及びBbの当該1つのラインに属する参照画素値のみから、判定用パラメータdの値を算出する。そして、ライン判定部120は、算出した判定用パラメータdの値を判定用閾値(β>>1)と比較する。このように、あるラインについての判定の際に当該ラインのみを参照することにより、ラインごとの判定を、各ラインに順次アクセスするという比較的単純な構成で実現することが可能となる。
ライン判定部120は、例えば、条件B´を満たすラインについて、強度選択部130によるフィルタ強度の選択及びフィルタリング部140によるフィルタリングを行わせる。一方、ライン判定部120は、条件B´を満たさないラインについては、強度選択部130によるフィルタ強度の選択及びフィルタリング部140によるフィルタリングをスキップさせる。
(3)強度選択部
強度選択部130は、フィルタリング部140により各ラインに適用されるデブロックフィルタの強度をラインごとに選択する。より具体的には、強度選択部130は、ライン判定部120によりデブロックフィルタを適用すべきと判定された各ラインについて、次のようにフィルタの強度を選択する:
−強度選択・・・ラインごとにフィルタ強度を選択。以下の条件C1´〜C3が全て満たされる場合には強フィルタ、いずれか1つでも満たされない場合には弱フィルタが選択される:
(C1´)d<(β>>3)
(C2)(|p3i−p0i|+|q0i−q3i|)<(β>>3)
(C3)|p0i−q0i|<((5tC+1)>>1)
ここで、dは、上述した条件B´の判定において算出される判定用パラメータである。なお、このようなフィルタ強度の選択は、輝度成分のみについて行われ得る。そして、強度選択部130は、選択したフィルタ強度を表す情報(例えば、強フィルタ及び弱フィルタのいずれかを表すフラグ)を、ラインごとにフィルタリング部140へ出力する。
(4)フィルタリング部
フィルタリング部140は、ブロック判定部110及びライン判定部120による判定結果に応じて、各境界を挟んで隣接する2つの隣接ブロックの各ラインにデブロックフィルタを適用する。フィルタリング部140のフィルタの構成は、上述した既存の手法と同様であってよい。例えば、フィルタリング部140は、ライン判定部120によりデブロックフィルタを適用すべきと判定された各ラインについて、次のようにフィルタリング後の画素値を算出する。
・輝度成分のフィルタリング
−弱フィルタが選択された場合:
Δ=Clip(−tC,tC,(13(q0i−p0i)+4(q1i−p1i)−5(q2i−p2i)+16)>>5))
p0i=Clip0−255(p0i+Δ)
q0i=Clip0−255(q0i−Δ)
p1i=Clip0−255(p1i+Δ/2)
q1i=Clip0−255(q1i−Δ/2)
−強フィルタが選択された場合:
p0i=Clip0−255((p2i+2p1i+2p0i+2q0i+q1i+4)>>3)
q0i=Clip0−255((p1i+2p0i+2q0i+2q1i+q2i+4)>>3)
p1i=Clip0−255((p2i+p1i+p0i+q0i+2)>>2)
q1i=Clip0−255((p0i+q0i+q1i+q2i+2)>>2)
p2i=Clip0−255((2p3i+3p2i+p1i+p0i+q0i+4)>>3)
q2i=Clip0−255((p0i+q0i+q1i+3q2i+2q3i+4)>>3)
・色差成分のフィルタリング:
Δ=Clip(−tC,tC,((((q0i−p0i)<<2)+p1i−q1i+4)>>3))
p0i=Clip0−255(p0i+Δ)
q0i=Clip0−255(q0i−Δ)
そして、フィルタリング部140は、フィルタを適用した画素についてはフィルタリング後の画素値、その他の画素については入力画像の画素値を、出力画像の画素値として順次出力する。
(5)判定制御部
判定制御部150は、ブロック判定部110及びライン判定部120によるデブロックフィルタの適用の要否の判定を制御する。例えば、判定制御部150は、ブロック判定部110により隣接ブロックの変換係数又は符号化パラメータに基づいてデブロックフィルタを適用しないと判定される境界を対象として、ライン判定部120にラインごとの判定をスキップさせる。
また、例えば、判定制御部150は、判定の粒度、即ち判定の単位の大きさを動的に切り替えてもよい。より具体的には、判定制御部150は、ある画像についてはブロック判定部110によるブロック単位での判定のみを行わせてもよい。また、判定制御部150は、ブロック判定部110によるブロック単位での判定結果によらず、ライン判定部120にライン単位での判定を行わせてもよい。
ライン単位での判定が行われる場合には、フィルタリング前の画質がブロック内で一様ではなくラインごとにばらついていたとしても、その画質に合わせてライン単位でフィルタリングのオン/オフを切り替えることができる。その結果、フィルタリング後の画像の画質が向上される。一方、ブロック単位での判定のみが行われる場合には、フィルタリングされない境界について全てのラインへのアクセスが回避されるため、全体としての処理量が減少し、処理速度が向上し得る。従って、処理速度が優先される状況において、判定制御部150は、ブロック単位のみの判定を選択してもよい。
判定制御部150は、例えば、シーケンスパラメータセット、ピクチャパラメータセット又はスライスヘッダ内に含まれるパラメータに基づいて、判定の粒度を動的に切り替えてもよい。例えば、ブロック単位の判定及びライン単位の判定のいずれかを指定するパラメータを、上述したヘッダ内で指定することができる。パラメータは、例えば、装置を開発するユーザごとの要件に応じて指定されてよい。その代わりに、判定制御部150は、例えば、入力画像のサイズなどの他の条件に応じて判定の粒度を切り替えてもよい。
[3−2.処理の流れ]
図7は、第1の実施例に係るデブロックフィルタ24による処理の流れの一例を示すフローチャートである。図7のステップS102からステップS112までの処理は、入力画像内の全ての境界(垂直境界及び水平境界を含む)の各々について繰り返される。
まず、ブロック判定部110は、処理対象の1つの境界(以下、注目境界という)がブロック単位の判定条件(例えば、上述した判定条件A)を満たすか否かを判定する(ステップS102)。ここで、ブロック単位の判定条件が満たされない場合には、その後のステップS104からステップS110までの処理はスキップされる。一方、ブロック単位の判定条件が満たされる場合には、処理はステップS104へ進む。
ステップS104からステップS110までの処理は、ブロック単位の判定条件を満たすと判定された境界の全てのラインの各々について繰り返される。ステップS104では、ライン判定部120は、処理対象の1つのライン(以下、注目ラインという)がライン単位の判定条件(例えば、上述した判定条件B´)を満たすか否かを判定する(ステップS104)。ここで、ライン単位の判定条件が満たされない場合には、その後のステップS106及びステップS108の処理はスキップされる。一方、ライン単位の判定条件が満たされる場合には、処理はステップS106へ進む。
ステップS106では、強度選択部130は、注目ラインに適用すべきフィルタの強度を、例えば上述した条件C1´〜C3に従って選択する(ステップS106)。
そして、フィルタリング部140は、注目ラインにデブロックフィルタを適用する(ステップS108)。
その後、注目境界に未処理のラインが残っている場合には、新たな注目ラインが設定され、処理はステップS104に戻る(ステップS110)。また、注目境界に未処理のラインが残っていない場合には、処理はステップS112へ進む。
ステップS112において、入力画像に未処理の境界が残っている場合には、新たな注目境界が設定され、処理はステップS102に戻る(ステップS112)。未処理の境界が残っていない場合には、入力画像についての処理は終了する。
なお、ブロック単位のみの判定が行われる場合には、図7のフローチャートのステップS104は省略され得る。また、色差成分については、図7のフローチャートのステップS104及びステップS106はスキップされ得る。
<4.第2の実施例>
[4−1.デブロックフィルタの構成例]
図8は、第2の実施例に係るデブロックフィルタ24の詳細な構成の一例を示すブロック図である。図8を参照すると、デブロックフィルタ24は、ブロック判定部110、ライン判定セクション220、強度選択セクション230、フィルタリングセクション240及び判定制御部150を有する。
(1)ライン判定セクション
ライン判定セクション220による処理は、ブロック判定部110においてブロック単位の判定条件を満たすと判定された境界の各々について行われ得る。ライン判定セクション220は、複数のライン判定部222−1〜222−nを含む。各ブロックのサイズが8×8画素である場合には、n=8であってよい(n=2又はn=4などであってもよい)。ある1つの境界についてのライン判定部222−1〜222−nによる処理は、並列的に行われ得る。
第1ライン判定部222−1は、各境界と直交するラインのうち第1のラインについて、例えば上述した判定条件B´に従って、デブロックフィルタの適用の要否を判定する。そして、第1ライン判定部222−1は、第1のラインが判定条件B´を満たすと判定される場合に、第1ラインについて第1強度選択部232−1によるフィルタ強度の選択及び第1フィルタリング部242−1によるフィルタリングを行わせる。
また、第2ライン判定部222−2は、各境界と直交するラインのうち第2のラインについて、例えば上述した判定条件B´に従って、デブロックフィルタの適用の要否を判定する。そして、第2ライン判定部222−2は、第2のラインが判定条件B´を満たすと判定される場合に、第2ラインについて第2強度選択部232−2によるフィルタ強度の選択及び第2フィルタリング部242−2によるフィルタリングを行わせる。
同様に、第nライン判定部222−nは、各境界と直交するラインのうち第nのラインについて、例えば上述した判定条件B´に従って、デブロックフィルタの適用の要否を判定する。そして、第nライン判定部222−nは、第nのラインが判定条件B´を満たすと判定される場合に、第nラインについて第n強度選択部232−nによるフィルタ強度の選択及び第nフィルタリング部242−nによるフィルタリングを行わせる。
(2)強度選択セクション
強度選択セクション230は、複数の強度選択部232−1〜232−nを含む。各強度選択部232は、対応するラインに適用されるデブロックフィルタの強度を、例えば上述した条件C1´〜C3に従って選択する。そして、各強度選択部232は、選択したフィルタ強度を表す情報(例えば、強フィルタ及び弱フィルタのいずれかを表すフラグ)を、フィルタリングセクション240の対応するフィルタリング部242へ出力する。ある1つの境界についての強度選択部232−1〜232−nによる処理は、並列的に行われ得る。
(3)フィルタリングセクション
フィルタリングセクション240は、複数のフィルタリング部242−1〜242−nを含む。各フィルタリング部242は、ブロック判定部110及び対応するライン判定部222による判定結果に応じて、各境界を挟んで隣接する2つの隣接ブロックの対応するラインにデブロックフィルタを適用する。各フィルタリング部242のフィルタの構成は、上述した既存の手法と同様であってよい。そして、各フィルタリング部242は、フィルタを適用した画素についてはフィルタリング後の画素値、その他の画素については入力画像の画素値を、出力画像の画素値として出力する。ある1つの境界についてのフィルタリング部242−1〜242−nによる処理は、並列的に行われ得る。
なお、本実施例においても、ブロック判定部110及びライン判定セクション220によるデブロックフィルタの適用の要否の判定は、第1の実施例と同様に判定制御部150により制御されてよい。例えば、判定制御部150は、隣接ブロック内の複数のラインを対象としてデブロックフィルタを適用するかを並列的に判定するように、ライン判定セクション220を制御し得る。
[4−2.処理の流れ]
図9は、第2の実施例に係るデブロックフィルタ24による処理の流れの一例を示すフローチャートである。図9のステップS202からステップS212までの処理は、入力画像内の全ての境界(垂直境界及び水平境界を含む)の各々について繰り返される。
まず、ブロック判定部110は、1つの注目境界がブロック単位の判定条件(例えば、上述した判定条件A)を満たすか否かを判定する(ステップS202)。ここで、ブロック単位の判定条件が満たされない場合には、その後のステップS204からステップS208までの処理はスキップされる。一方、ブロック単位の判定条件が満たされる場合には、処理はステップS204へ進む。
次に、ライン判定部222−1〜222−nは、注目境界の各ラインがライン単位の判定条件(例えば、上述した判定条件B´)を満たすか否かを判定する(ステップS204)。
次に、強度選択部232−1〜232−nは、注目境界のラインのうちライン判定部222−1〜222−nによりフィルタリングが必要と判定されたラインの各々に適用すべきフィルタの強度を、例えば上述した条件C1´〜C3に従って選択する(ステップS206)。
そして、フィルタリング部242−1〜242−nは、注目境界のラインのうちライン判定部222−1〜222−nによりフィルタリングが必要と判定されたラインの各々にデブロックフィルタを適用する(ステップS208)。
その後、入力画像に未処理の境界が残っている場合には、新たな注目境界が設定され、処理はステップS202に戻る(ステップS212)。未処理の境界が残っていない場合には、入力画像についての処理は終了する。
なお、ブロック単位のみの判定が行われる場合には、図9のフローチャートのステップS204は省略され得る。また、色差成分については、図9のフローチャートのステップS204及びステップS206はスキップされ得る。
<5.第3の実施例>
[5−1.デブロックフィルタの構成例]
上述した第1及び第2の実施例では、各ラインへのデブロックフィルタの適用の要否が、当該ライン(即ち、判定対象の各ライン)に属する参照画素値から算出されるパラメータ値を判定用閾値と比較することにより判定される。これに対し、本節で説明する第3の実施例では、パラメータ値の計算の繰り返しに伴う処理コストを低減するために、パラメータ値の推定の考え方が導入される。本実施例では、フィルタ強度の選択もまた、推定されるパラメータ値を用いて行われ得る。
図10は、第3の実施例に係るデブロックフィルタ24の詳細な構成の一例を示すブロック図である。図10を参照すると、デブロックフィルタ24は、ブロック判定部110、ライン判定部320、強度選択部330、フィルタリング部140、制御部350及びパラメータ推定部360を有する。
(1)パラメータ推定部
パラメータ推定部360は、ライン判定部320によるライン単位の判定の際に使用される判定用パラメータのうち、各境界と直交する少なくとも1つのラインについての判定用パラメータの値を計算する。そして、パラメータ推定部360は、上記少なくとも1つのラインについて計算した値から、他のラインについての判定用パラメータの値を推定する。また、パラメータ推定部360は、強度選択部330によるフィルタ強度の選択の際に使用される強度選択用パラメータの値を、判定用パラメータと同様に計算し及び推定する。以下の説明において、他のラインについてのパラメータ値の推定の基礎となる上記少なくとも1つのラインを基本ライン、パラメータ値が推定されるラインを推定ラインという。基本ラインから推定ラインへのパラメータ値の推定は、例えば、ライン位置に応じた線型又は非線形の内挿又は外挿によって行われてよい。以下、図11A〜図11Cを用いて、パラメータ推定部360によるパラメータ推定処理の3つの例を説明する。
(1−1)第1の例
図11Aを参照すると、境界を挟んで隣接する2つのブロックBa及びBbが示されている。図11Aの例において、基本ラインは、境界の中央部分で当該境界と直交する2つのラインL3及びL4である。推定ラインは、基本ライン以外のラインL0、L1、L2、L5、L6及びL7である。
パラメータ推定部360は、例えば、上述したライン単位の判定条件B´を評価するための判定用パラメータd1i(iは3又は4)を、次式に従って計算する:
d1i=|p2i−2p1i+p0i|+|q2i−2q1i+q0i|
そして、パラメータ推定部360は、計算した2つの判定用パラメータd13及びd14の値を用いて、例えば次の推定式に従って推定ラインについての判定用パラメータd1j(jは0〜2、5〜7)を推定する。
d10=4d13−3d14
d11=3d13−2d14
d12=2d13−1d14
d15=2d14−1d13
d16=3d14−2d13
d17=4d14−3d13
なお、上記推定式に従って推定される推定値が負となる推定ラインについては、負の推定値の代わりに、当該推定ラインにより近い基本ラインについて計算されたパラメータ値が、そのまま推定値として扱われてもよい。
同様に、パラメータ推定部360は、例えば、上述したフィルタ強度の選択における条件C2及びC3をそれぞれ評価するためのパラメータd2i及びd3i(iは3又は4)を、次式に従って計算する:
d2i=|p3i−p0i|+|q0j−q3j|
d3i=|p0i−q0i|
そして、パラメータ推定部360は、計算した強度選択用パラメータd23及びd24の値を用いて、各推定ラインについてのパラメータ値d2j(jは0〜2、5〜7)を推定する。また、パラメータ推定部360は、計算した強度選択用パラメータd33及びd34の値を用いて、各推定ラインについてのパラメータ値d3j(jは0〜2、5〜7)を推定する。
(1−2)第2の例
図11Bの例において、基本ラインは、1ラインおきに設定されるラインL0、L2、L4及びL6である。推定ラインは、基本ライン以外のラインL1、L3、L5及びL7である。
パラメータ推定部360は、例えば、上述したライン単位の判定条件B´を評価するための判定用パラメータd1i(iは0、2、4又は6)を、第1の例に関連して上で説明した式に従って計算する。そして、パラメータ推定部360は、計算した判定用パラメータの値を用いた内挿又は外挿によって、各推定ラインについての判定用パラメータd1j(jは1、3、5又は7)を推定する。パラメータ推定部360は、同様に、基本ラインについて、フィルタ強度の選択のためのパラメータd2i及びd3iを計算する。そして、パラメータ推定部360は、計算した強度選択用パラメータの値を用いた内挿又は外挿によって、各推定ラインについての強度選択用パラメータd2j及びd3jを推定する。
(1−3)第3の例
図11Cの例において、基本ラインは、ラインL0、L3、L4及びL7である。推定ラインは、基本ライン以外のラインL1、L2、L5及びL6である。
パラメータ推定部360は、例えば、上述したライン単位の判定条件B´を評価するための判定用パラメータd1i(iは0、3、4又は7)を、第1の例に関連して上で説明した式に従って計算する。そして、パラメータ推定部360は、計算した判定用パラメータの値を用いた内挿によって、各推定ラインについての判定用パラメータd1j(jは1、2、5又は6)を推定する。パラメータ推定部360は、同様に、基本ラインについて、フィルタ強度の選択のためのパラメータd2i及びd3iを計算する。そして、パラメータ推定部360は、計算した強度選択用パラメータの値を用いた内挿によって、各推定ラインについての強度選択用パラメータd2j及びd3jを推定する。
パラメータ推定部360は、例えば、これら3つの例のいずれかに従って計算し及び推定した判定用パラメータの値を、ライン判定部320へ出力する。また、パラメータ推定部360は、同様に計算し及び推定した強度選択用パラメータの値を、強度選択部330へ出力する。
ここで、第1の例において設定される基本ラインは、境界の中央部分で当該境界と直交するラインである。これら基本ラインに属する画素の画素値は、当該境界と同じ方向に沿って適用されるデブロックフィルタによっては更新されない。このような基本ラインの画素値を用いてある境界と直交するラインについてのパラメータを計算し又は推定することで、ライン単位でのフィルタリング要否の判定及びフィルタ強度の選択を、他の境界についてのフィルタリング処理と並列的に行うことが可能となる。また、フィルタリング要否の判定とフィルタ強度の選択とが並列的に行われてもよい。一方、第2の例又は第3の例のような基本ラインの設定によれば、基本ラインと推定ラインとの間のライン位置の差がより小さいため、より高い精度でのパラメータ値の推定を実現することができる。第3の例によれば、最も外側のラインが基本ラインとして設定されるため、内挿のみによって推定ラインについてのパラメータ値を推定することで、推定の精度を一層高めることができる。
(2)ライン判定部
ライン判定部320は、各境界と直交するラインごとに、当該境界を挟んで隣接する2つの隣接ブロックを対象としてデブロックフィルタを適用するか否かを判定する。本実施例において、ライン判定部320による判定は、パラメータ推定部360により計算され又は推定された判定用パラメータを用いて行われる。ライン単位の判定条件は、上述した判定条件B´と同様の条件であってよい。
−条件B´:
d1i<(β>>1)
各ブロックのサイズが8×8画素であれば、iは、0≦i≦7の整数である。
ライン判定部320は、例えば、条件B´を満たすラインのみについて、強度選択部330によるフィルタ強度の選択を行わせてもよい。その代わりに、ライン判定部320による判定と強度選択部330によるフィルタ強度の選択とは、並列的に行われてもよい。ライン判定部320は、条件B´を満たさないラインについては、フィルタリング部140によるフィルタリングをスキップさせる。
(3)強度選択部
強度選択部330は、フィルタリング部140により各ラインに適用されるデブロックフィルタの強度をラインごとに選択する。本実施例において、強度選択部330による強度選択は、パラメータ推定部360により計算され又は推定された強度選択用パラメータを用いて行われる。強度選択部330は、例えば、各ラインについて、以下の条件C1´〜C3が全て満たされる場合には強フィルタ、いずれか1つでも満たされない場合には弱フィルタを選択する。
(C1´)d1i<(β>>3)
(C2) d2i<(β>>3)
(C3) d3i<((5tC+1)>>1)
なお、条件C1´から理解されるように、上述した判定用パラメータd1iは、この場合には強度選択用パラメータでもある。
そして、強度選択部330は、選択したフィルタ強度を表す情報を、ラインごとにフィルタリング部140へ出力する。
(5)制御部
制御部350は、第1及び第2の実施例の判定制御部150に関連して説明した制御に加えて、パラメータ推定部360によるパラメータ推定処理を制御する。例えば、制御部350は、処理対象のラインのライン位置を認識し、各ラインが基本ラインであるか推定ラインであるかを識別する。そして、制御部350は、まず、基本ラインの判定用パラメータd1並びに基本ラインの強度選択用パラメータd2及びd3の値を、当該基本ラインの画素値からそれぞれパラメータ推定部360に計算させる。その後、制御部350は、推定ラインの判定用パラメータd1並びに推定ラインの強度選択用パラメータd2及びd3の値を、基本ラインについて計算したパラメータ値からそれぞれパラメータ推定部360に推定させる。
[5−2.処理の流れ]
図12は、第3の実施例に係るデブロックフィルタ24による処理の流れの一例を示すフローチャートである。図12のステップS302からステップS318までの処理は、入力画像内の全ての境界(垂直境界及び水平境界を含む)の各々について繰り返される。
まず、ブロック判定部110は、1つの注目境界がブロック単位の判定条件(例えば、上述した判定条件A)を満たすか否かを判定する(ステップS302)。ここで、ブロック単位の判定条件が満たされない場合には、その後のステップS304からステップS316までの処理はスキップされる。一方、ブロック単位の判定条件が満たされる場合には、処理はステップS304へ進む。
ステップS304において、パラメータ推定部360は、注目境界と直交する基本ラインについての判定用パラメータ及び強度選択用パラメータを、基本ラインに属する画素の画素値を用いて計算する(ステップS304)。ここでの基本ラインとは、例えば、図11A〜図11Cに示した3つの例のいずれかのように設定される、1つ以上のラインであってよい。
ステップS306からステップS316までの処理は、注目境界と直交するラインの各々を注目ラインとし、各注目ラインについて繰り返される。ステップS306では、制御部350は、注目ラインのライン位置を認識し、注目ラインが推定ラインであるかを判定する(ステップS306)。そして、注目ラインが推定ラインであれば、パラメータ推定部360は、当該注目ラインについての判定用パラメータ及び強度選択用パラメータを、基本ラインについて計算されたパラメータを用いてそれぞれ推定する(ステップS308)。一方、注目ラインが基本ラインであれば、ステップS308の処理はスキップされる。
次に、ライン判定部320は、パラメータ推定部360により計算され又は推定された判定用パラメータを用いて、注目ラインがライン単位の判定条件(例えば、上述した判定条件B´)を満たすか否かを判定する(ステップS310)。ここで、ライン単位の判定条件が満たされない場合には、その後のステップS312及びステップS314の処理はスキップされ得る。一方、ライン単位の判定条件が満たされる場合には、処理はステップS312へ進む。
ステップS312では、強度選択部330は、パラメータ推定部360により計算され又は推定された強度選択用パラメータを用いて、注目ラインに適用すべきフィルタの強度を、例えば上述した条件C1´〜C3に従って選択する(ステップS312)。
そして、フィルタリング部140は、強度選択部330により選択されたフィルタ強度を有するデブロックフィルタを注目ラインに適用する(ステップS314)。
その後、注目境界に未処理のラインが残っている場合には、新たな注目ラインが設定され、処理はステップS306に戻る(ステップS316)。また、注目境界に未処理のラインが残っていない場合には、処理はステップS318へ進む。
ステップS318において、入力画像に未処理の境界が残っている場合には、新たな注目境界が設定され、処理はステップS302に戻る(ステップS318)。未処理の境界が残っていない場合には、入力画像についての処理は終了する。
<6.応用例>
上述した実施形態に係る画像符号化装置10及び画像復号装置60は、衛星放送、ケーブルTVなどの有線放送、インターネット上での配信、及びセルラー通信による端末への配信などにおける送信機若しくは受信機、光ディスク、磁気ディスク及びフラッシュメモリなどの媒体に画像を記録する記録装置、又は、これら記憶媒体から画像を再生する再生装置などの様々な電子機器に応用され得る。以下、4つの応用例について説明する。
[6−1.第1の応用例]
図13は、上述した実施形態を適用したテレビジョン装置の概略的な構成の一例を示している。テレビジョン装置900は、アンテナ901、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、表示部906、音声信号処理部907、スピーカ908、外部インタフェース909、制御部910、ユーザインタフェース911、及びバス912を備える。
チューナ902は、アンテナ901を介して受信される放送信号から所望のチャンネルの信号を抽出し、抽出した信号を復調する。そして、チューナ902は、復調により得られた符号化ビットストリームをデマルチプレクサ903へ出力する。即ち、チューナ902は、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送手段としての役割を有する。
デマルチプレクサ903は、符号化ビットストリームから視聴対象の番組の映像ストリーム及び音声ストリームを分離し、分離した各ストリームをデコーダ904へ出力する。また、デマルチプレクサ903は、符号化ビットストリームからEPG(Electronic Program Guide)などの補助的なデータを抽出し、抽出したデータを制御部910に供給する。なお、デマルチプレクサ903は、符号化ビットストリームがスクランブルされている場合には、デスクランブルを行ってもよい。
デコーダ904は、デマルチプレクサ903から入力される映像ストリーム及び音声ストリームを復号する。そして、デコーダ904は、復号処理により生成される映像データを映像信号処理部905へ出力する。また、デコーダ904は、復号処理により生成される音声データを音声信号処理部907へ出力する。
映像信号処理部905は、デコーダ904から入力される映像データを再生し、表示部906に映像を表示させる。また、映像信号処理部905は、ネットワークを介して供給されるアプリケーション画面を表示部906に表示させてもよい。また、映像信号処理部905は、映像データについて、設定に応じて、例えばノイズ除去などの追加的な処理を行ってもよい。さらに、映像信号処理部905は、例えばメニュー、ボタン又はカーソルなどのGUI(Graphical User Interface)の画像を生成し、生成した画像を出力画像に重畳してもよい。
表示部906は、映像信号処理部905から供給される駆動信号により駆動され、表示デバイス(例えば、液晶ディスプレイ、プラズマディスプレイ又はOLEDなど)の映像面上に映像又は画像を表示する。
音声信号処理部907は、デコーダ904から入力される音声データについてD/A変換及び増幅などの再生処理を行い、スピーカ908から音声を出力させる。また、音声信号処理部907は、音声データについてノイズ除去などの追加的な処理を行ってもよい。
外部インタフェース909は、テレビジョン装置900と外部機器又はネットワークとを接続するためのインタフェースである。例えば、外部インタフェース909を介して受信される映像ストリーム又は音声ストリームが、デコーダ904により復号されてもよい。即ち、外部インタフェース909もまた、画像が符号化されている符号化ストリームを受信する、テレビジョン装置900における伝送手段としての役割を有する。
制御部910は、CPU(Central Processing Unit)などのプロセッサ、並びにRAM(Random Access Memory)及びROM(Read Only Memory)などのメモリを有する。メモリは、CPUにより実行されるプログラム、プログラムデータ、EPGデータ、及びネットワークを介して取得されるデータなどを記憶する。メモリにより記憶されるプログラムは、例えば、テレビジョン装置900の起動時にCPUにより読み込まれ、実行される。CPUは、プログラムを実行することにより、例えばユーザインタフェース911から入力される操作信号に応じて、テレビジョン装置900の動作を制御する。
ユーザインタフェース911は、制御部910と接続される。ユーザインタフェース911は、例えば、ユーザがテレビジョン装置900を操作するためのボタン及びスイッチ、並びに遠隔制御信号の受信部などを有する。ユーザインタフェース911は、これら構成要素を介してユーザによる操作を検出して操作信号を生成し、生成した操作信号を制御部910へ出力する。
バス912は、チューナ902、デマルチプレクサ903、デコーダ904、映像信号処理部905、音声信号処理部907、外部インタフェース909及び制御部910を相互に接続する。
このように構成されたテレビジョン装置900において、デコーダ904は、上述した実施形態に係る画像復号装置60の機能を有する。それにより、テレビジョン装置900での画像の復号に際して、デブロックフィルタを適用すべき範囲をより適切に判定し、画質を向上させることができる。
[6−2.第2の応用例]
図14は、上述した実施形態を適用した携帯電話機の概略的な構成の一例を示している。携帯電話機920は、アンテナ921、通信部922、音声コーデック923、スピーカ924、マイクロホン925、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、制御部931、操作部932、及びバス933を備える。
アンテナ921は、通信部922に接続される。スピーカ924及びマイクロホン925は、音声コーデック923に接続される。操作部932は、制御部931に接続される。バス933は、通信部922、音声コーデック923、カメラ部926、画像処理部927、多重分離部928、記録再生部929、表示部930、及び制御部931を相互に接続する。
携帯電話機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に供給して音声を出力させる。
このように構成された携帯電話機920において、画像処理部927は、上述した実施形態に係る画像符号化装置10及び画像復号装置60の機能を有する。それにより、携帯電話機920での画像の符号化及び復号に際して、デブロックフィルタを適用すべき範囲をより適切に判定し、画質を向上させることができる。
[6−3.第3の応用例]
図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の機能を有する。また、デコーダ947は、上述した実施形態に係る画像復号装置60の機能を有する。それにより、記録再生装置940での画像の符号化及び復号に際して、デブロックフィルタを適用すべき範囲をより適切に判定し、画質を向上させることができる。
[6−4.第4の応用例]
図16は、上述した実施形態を適用した撮像装置の概略的な構成の一例を示している。撮像装置960は、被写体を撮像して画像を生成し、画像データを符号化して記録媒体に記録する。
撮像装置960は、光学ブロック961、撮像部962、信号処理部963、画像処理部964、表示部965、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、制御部970、ユーザインタフェース971、及びバス972を備える。
光学ブロック961は、撮像部962に接続される。撮像部962は、信号処理部963に接続される。表示部965は、画像処理部964に接続される。ユーザインタフェース971は、制御部970に接続される。バス972は、画像処理部964、外部インタフェース966、メモリ967、メディアドライブ968、OSD969、及び制御部970を相互に接続する。
光学ブロック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へ出力する。
このように構成された撮像装置960において、画像処理部964は、上述した実施形態に係る画像符号化装置10及び画像復号装置60の機能を有する。それにより、撮像装置960での画像の符号化及び復号に際して、デブロックフィルタを適用すべき範囲をより適切に判定し、画質を向上させることができる。
<7.まとめ>
ここまで、図1〜図16を用いて、一実施形態に係る画像符号化装置10及び画像復号装置60のデブロックフィルタのいくつかの実施例について詳しく説明した。これら実施例によれば、画像内で境界を挟んで互いに隣接する2つの隣接ブロックを対象としてデブロックフィルタを適用するか否かがラインごとに判定され、その判定結果に応じて各ラインにデブロックフィルタが適用される。従って、ブロックごとにデブロックフィルタの適用の要否が判定される場合と比較して、より小さい粒度での判定が可能となる。それにより、良好な画質を既に有する部分にデブロックフィルタが適用される可能性、及び劣化した画質を有する部分にデブロックフィルタが適用されない可能性が低減される。即ち、フィルタリング後の画質を向上させることができる。
また、本実施形態によれば、ブロック単位での判定に基づいてデブロックフィルタを適用すべきでないと判定される境界については、ラインごとの判定はスキップされ得る。かかる構成によれば、全体としてフィルタリングが必要でない境界について全ラインへのアクセスが回避されるため、処理量の増加を抑制することができる。
また、第1及び第2の実施例によれば、各ラインにデブロックフィルタを適用するか否かは、当該ラインのみに属する参照画素値から算出される判定用パラメータの値を判定用閾値と比較することにより判定される。従って、ラインごとの判定を、各ラインに順次アクセスするという単純な構成で実現することができる。
また、第2の実施例によれば、ある境界の複数のラインについて、デブロックフィルタの適用の要否は並列的に判定される。従って、ラインごとの判定に要する処理時間を全体として短縮することができる。
また、第3の実施例によれば、ある境界と直交する複数のラインのうち、推定ラインについてフィルタリング要否を判定し又はフィルタ強度を選択するために使用されるパラメータ値が、基本ラインについて計算されたパラメータ値から推定される。従って、パラメータ値の計算の繰り返しに伴う処理コストを低減することができる。その際、境界の中央部分で当該境界と直交するラインを基本ラインとして設定することで、ある境界についてのライン単位でのフィルタリング要否の判定及びフィルタ強度の選択を、他の境界についてのフィルタリング処理と並列的に行うことが可能となる。また、基本ラインと推定ラインとの間のライン位置の差をより小さくすれば、より高い精度でのパラメータ値の推定を実現することができる。
また、本実施形態によれば、ラインごとの判定を指定するパラメータがシーケンスパラメータセット、ピクチャパラメータセット又はスライスヘッダ内に含まれる場合に、デブロックフィルタの適用の要否がラインごとに判定され得る。かかる構成によれば、装置を開発するユーザは、ライン単位での判定による画質の向上及びブロック単位での判定による高い処理速度のうち望ましい方を、パラメータを介して指定することができる。
なお、デブロックフィルタの処理単位のサイズ又はマクロブロックのサイズは、本明細書で説明した例に限定されず、他のサイズであってもよい。例えば、H.264/AVCのマクロブロックのサイズは16×16画素に固定されているのに対し、HEVCの符号化単位のサイズはシーケンスごとに動的に指定され得る。HEVCの符号化単位は符号化ツリーブロック(Coding Tree Block)とも呼ばれ、最大のサイズを有する符号化単位を最大符号化単位(LCU:Largest Coding Unit)、最小のサイズを有する符号化単位を最小符号化単位(SCU:Smallest Coding Unit)という。画像圧縮情報の一部であるシーケンスパラメータセットにおいてこれらLCU及びSCUのサイズを指定することで、使用可能な符号化単位のサイズの範囲が定義される。さらに、split_flagの値を指定することで、個々のシーケンスにおいて使用される符号化単位のサイズが特定される。なお、符号化単位の形状は通常は正方形であり、一辺のサイズが2のべき乗で表現される。さらに、符号化単位は、イントラ予測又はインター予測の処理単位である予測単位(PU:Prediction Unit)に分割され得る。また、符号化単位は、直交変換の処理単位である変換単位(TU:Transform Unit)にも分割され得る。HEVCでは、4×4画素及び8×8画素に加えて、16×16画素及び32×32画素のサイズを有する変換単位を使用することができる。本明細書におけるブロックとの用語は、マクロブロック、符号化単位、予測単位、変換単位又はそれ以外の様々なユニットの概念を含む。ブロックのサイズは固定的であってもよく、動的に変化してもよい。
また、デブロックフィルタの処理のために使用される情報を符号化側から復号側に伝送する手法は、これら情報を符号化ストリームのヘッダに多重化する手法に限定されない。例えば、これら情報は、符号化ビットストリームに多重化されることなく、符号化ビットストリームと関連付けられた別個のデータとして伝送され又は記録されてもよい。ここで、「関連付ける」という用語は、ビットストリームに含まれる画像(スライス若しくはブロックなど、画像の一部であってもよい)と当該画像に対応する情報とを復号時にリンクさせ得るようにすることを意味する。即ち、情報は、画像(又はビットストリーム)とは別の伝送路上で伝送されてもよい。また、情報は、画像(又はビットストリーム)とは別の記録媒体(又は同一の記録媒体の別の記録エリア)に記録されてもよい。さらに、情報と画像(又はビットストリーム)とは、例えば、複数フレーム、1フレーム、又はフレーム内の一部分などの任意の単位で互いに関連付けられてよい。
以上、添付図面を参照しながら本開示の好適な実施形態について詳細に説明したが、本開示の技術的範囲はかかる例に限定されない。本開示の技術分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本開示の技術的範囲に属するものと了解される。