以下、図面を参照して、本発明の各実施形態について説明する。
〔実施形態1〕
本発明の第1の実施形態に係る動画像復号装置1の説明に先立ち、本実施形態に係る動画像符号化装置2によって生成され、動画像復号装置1によって復号される符号化データの構成について、図11を参照して説明する。
符号化データは、一連の画像データ(ピクチャ)から構成されている。図11に示すように、一つのピクチャは複数のスライスから構成される。スライスは、適応フィルタ情報とMBデータから構成される。MBデータは、復号画像を生成するための情報であり、ブロックタイプ、予測ブロックサイズ、予測パラメータ、変換ブロックサイズ、残差情報から構成される。
適応フィルタ情報は、復号画像を格納したフレームメモリにおいて、適応フィルタ処理を制御するために使用される情報であり、フィルタのオンオフを制御するオンオフ情報、BF前のタップ数を示すタップ数M、BF後のタップ数を示すタップ数N、BF前重み係数ak(k=0〜(M×M+1)/2−1)、BF後重み係数bk(k=0〜(N×N+1)/2−1)、オフセットoから構成される。例えば、M、Nは、1、3、5の何れかの値をとる。なお、タップ数M及びタップ数Nの一方もしくは両方は明示的に符号化することなく予め決められた固定値を用いても良い。例えば、Mであれば1、Nであれば5であっても良い。また、タップ数は1、3、5に限定されない。
なお、BF前重み係数ak、BF後重み係数bk、およびオフセットoは各々、予測符号化によって符号化されていても構わない。すなわち、重み係数及びオフセットを予測する重み係数予測部を備え、重み係数予測部が算出する予測値との差分値を復号し、差分値と予測値との和を重み係数及びオフセットとすることができる。ここで予測値は前フレームの値を用いる方法が適当である。また、適当な量子化がなされていても構わない。さらに非線形量子化された値として符号化されていても構わない。
なお、ここでは重み係数という言葉を用いているがフィルタ係数と呼んでも構わない。
(重み係数の構成)
図13を参照して符号化データ中の重み係数の構成と、2次元フィルタとして用いられる場合の重み係数の対応位置を説明する。図13(a)、(b)、(c)は、各々タップ数が1、3、5の場合の重み係数を示す。図の左側は符号化データ中の重み係数の構成であり、各々1、5、13個の重み係数が一次元的に順序づけられて構成されている。
タップ数がMである場合は、M×Mの2次元フィルタをかけることに相当する。この場合、参照する画素の数はM×Mであるが、対称性を利用することにより重み係数の個数は削減されており、必要な個数は(M×M+1)/2となる。
図13の右側は2次元フィルタとして用いられる場合の重み係数の対応位置を示すものである。2次元フィルタは、フィルタ対象画素およびその周囲に位置する画素値に対応する重み係数を乗算して得られる加重平均を算出するフィルタである。図13においては、フィルタ対象画素からみて点対称に位置する画素に対して同じ重み係数が割り当てられている。このように対応関係を設定すると、同じM×Mタップのフィルタにおいても必要な重み係数の数を約半分に減らすことができるため、重み係数の符号量が減少し符号化効率が向上する。
(動画像復号装置1)
本発明を適用した動画像復号装置について、図1を参照しつつ以下に説明する。図1は、第1実施形態に係る動画像復号装置1の構成を示すブロック図である。
図1に示すように、動画像復号装置1は、予測部111と、可変長符号化復号部114と、逆量子化部115と、逆変換部116と、フレームメモリ117と、適応フィルタ情報保存部119と、ループフィルタ部120と、加算部109とから構成されている。動画像復号装置1の動作について以下に説明する。
動画像復号装置1に入力された符号化データは、まず、可変長符号化復号部114に入力される。可変長符号化復号部114は、符号化データの可変長復号により、フィルタ処理に用いる重み係数を含む適応フィルタ情報、予測方法および変換方法を示すMBパラメータ、変換・量子化された変換係数である残差情報を復号する。
逆量子化部115は、可変長符号化復号部114より入力された変換・量子化された残差信号を逆量子化する。逆変換部116は、逆量子化部115より入力された逆量子化された信号を逆変換し、残差画像を生成する。
予測部111は、可変長符号化復号部114より復号されたMBパラメータが入力され、当該MBパラメータに従って、フレームメモリ117に格納された復号画像(復号済みの画像)を用いて、予測画像を生成する。MBパラメータは、ブロックタイプと予測ブロックサイズ、変換ブロックサイズ、予測パラメータから構成される。ブロックタイプはイントラブロックかインターブロックかを示す。イントラブロックの場合には後述のループフィルタ処理前の復号画像(フレームメモリの画像)を参照して予測画像を生成し、インターブロックの場合にはループフィルタ処理後の復号画像を参照して予測画像を生成する。この実施形態では、予測ブロックサイズは予測のブロックサイズが16×16、8×8、4×4の何れであるかを示し、変換ブロックサイズは変換のブロックサイズが16×16、8×8、4×4の何れであるかを示す。予測パラメータはブロックタイプにより異なり、イントラブロックの場合には、DC予測を用いるか、方向予測を用いるかを示すイントラ予測モードである。インターブロックの場合には、動きベクトル、参照インデックスである。なお、参照インデックスは、フレームメモリに参照可能なフレームが複数存在する場合に、参照フレームを指定するための識別子である。なお、ブロックタイプ、予測ブロックサイズ、変換ブロックサイズ、予測パラメータなどはこの構成に限らない。
加算部109は、予測部111より入力された予測画像と、逆変換部116より入力された残差画像との加算により、復号画像を生成し、フレームメモリ117に格納する。
適応フィルタ情報保存部119は、可変長符号化復号部114で復号された適応フィルタ情報が入力され、保存される。ループフィルタ部120は、適応フィルタ情報保存部119に保存された適応フィルタ情報を読み出し、フレームメモリ117に格納された復号画像のフィルタ処理を行い、再度フレームメモリに117に書き出す。
(ループフィルタ部120)
図3は、ループフィルタ部120の内部構成を示す図である。ループフィルタ部120は、境界利用フィルタ部(BF部)301と、適応フィルタ部302から構成される。
ループフィルタ部120は、フレームメモリ117に格納された復号画像と、適応フィルタ情報保存部119に格納された適応フィルタ情報を用いて、符号化歪みを低減した画像を生成する手段である。
BF部301は、対象ブロックに隣接するブロックの境界付近の画素値を用いて、適応フィルタ部302で用いる画素値を生成するための手段である。
適応フィルタ部302は、適応フィルタ情報に含まれる重み係数を用いて加重平均によりフィルタ処理を行う手段である。
適応フィルタ部302の特徴は、2つの入力画像を備え、一方がBF部301で処理された画像(BF後画像)であり、もう一方がBF部301の処理前の画像(BF前画像)であることである。これはまた、内部にBF部301と適応フィルタ部302を備え、ループフィルタ部120の入力と、BF部301の出力とを適応フィルタ部302の入力とするループフィルタ120の特徴と表現することもできる。なお、ループフィルタ部120、BF部301、及び適応フィルタ部302の処理単位は、フレームであってもブロックであっても画素であっても構わない。
図17は、従来のループフィルタの構成を示す図である。図17(a)に示すように、従来のループフィルタは、デブロッキングフィルタ処理後の画像を適応フィルタの入力とする場合(従来手法1)と、図17(b)に示すように、復号画像(デブロッキングフィルタ処理前の画像)を適応フィルタの入力とする場合(従来手法2)とがあったが、デブロッキングフィルタ処理前の画像とデブロッキングフィルタ処理後の画像との両方を適応フィルタの入力とする構成はなかった。
(BF部301)
ここで、BF部301について詳細に説明する。BF部301は、対象ブロックに隣接するブロックの境界付近の画素値を用いることを特徴とする。1つの方法は、ブロックノイズ低減を行うデブロッキングフィルタ処理を用いて生成する方法であり、図4で一例を説明する。別の方法は、フィルタ対象ブロックに隣接するブロックの境界付近の画素値を用いてフィルタ対象ブロックに対応する画像を生成する方法であり、図5、図14を用いて説明する。
図6は、ブロックの境界部分における画素を模式的に示した図である。図6では、互いに隣接するブロックのうち、一方のブロックの画素を画素Piとし、もう一方のブロックの画素を画素Qiとしている(iは0〜nまでの整数)。なお、画素Piおよび画素Qiにおけるiは、ブロック境界からの距離に相当する。
また、図6では、画素Piおよび画素Qiに対応する画素値をそれぞれ画素値piおよび画素値qiとして示しており、処理対象画素Pkにおける処理前の画素値pkに対応する処理後の画素値をpk´として示している。ここで、kは0からブロックサイズ以下の値をとる整数である(kは0〜n)。
すなわち、図6では、ブロック境界において隣接する2つのブロックのうち、一方のブロックの画素値を画素値pk(kは境界からの距離により定められる値)、他方のブロックの画素値を画素値qk(kは境界からの距離により定められる値)として表している。なお、図6では、境界が水平方向の境界であるのか、または垂直方向の境界であるのかについては区別していない。
図4は、第1の構成のBF部(BF部301)の内部構成を示す図である。BF部301は、境界エッジ算出部401と、活性度算出部402と、BF画素生成部403とを備える。
境界エッジ算出部401は、下記の式(4−1)を用いて、境界のエッジ強度dを算出する。
d=ABS(p0−q0) …(4−1)
活性度算出部402は、下記の式(4−2)を用いて、活性度を表す値apを算出する。活性度は境界およびフィルタ対象画素付近の凹凸の状態もしくは勾配の大きさを算出するものである。
ap=ABS(p2−p0) …(4−2)
BF画素生成部403は、算出された「d」および「ap」が、所定の閾値α、βに対して、d<α、かつ、ap<βである場合に以下のフィルタ処理を施す。
p0´=(p2+2×p1+2×p0+2×q0+q1)/8
p1´=(p2+p1+p0+q0)/4
p2´=(2×p3+3×p2+p1+p0+q0)/8
そうではない場合には、以下のフィルタ処理を施す。
p0´=(2×p1+p0+q0)/4
BF部301は、上記の処理を、予測ブロックの境界および変換ブロックの境界に実行する。より具体的にはまず予測ブロックと変換ブロックの垂直境界に処理を行い、続いて、予測ブロックと変換ブロックの水平境界に処理を行う。これによりBF後画素値xdを得る。
このように構成したBF部301は、境界のエッジ強度または活性度が大きい場合に強いフィルタがかからないようにフィルタ強度を調整したブロックノイズ低減処理を行うことができる。
なお、BF部301は、さらに他の適応的なブロックノイズ低減処理を行っても構わない。例えば、イントラブロックかインターブロックかの違い、対象ブロックと隣接ブロックの動きベクトル長の違い、対象ブロックの残差情報がゼロであるか否かがある。
このようにBF部301は、ブロックノイズを低減するデブロッキングフィルタ処理を行う。デブロッキングフィルタ処理は従来からある一般の処理を用いることが可能であり、例えばDCTを用いる方法なども用いることができる。
なお、BF部301は、ブロック境界との位置関係に応じて処理を変更している。具体的には、境界からの距離が異なる画素P0、画素P1、画素P2は各々、異なる処理を行う。また、BF部301は、境界の状態(エッジ強度d、活性度ap)に応じて異なる処理を用いている。適応フィルタ部302の入力信号として、ブロック境界との位置関係に応じた処理および境界の状態に応じた処理を行うBF部301を設けることによって、ブロック境界との位置関係及び境界との状態に適応した上で、シーケンスやフレームの特徴に適応したデブロッキング強度調整を行うこと制御が可能になり、適応フィルタ部302の効果を増大することができる。ブロック境界との位置関係及び境界の状態によって異なる適応フィルタ部302の重み係数を用いる場合に比べて、重み係数の符号量を低減することが可能であるため、少ない符号量でデブロック強度調整効果を得ることができる。
(BF部の第2の構成)
図5は、BF部の第2の構成(BF部301´)を示す図である。この例では、BF部301は、垂直境界値参照部501と、水平境界値参照部502と、対象画素参照部503と、BF重み算出部504と、加重平均部505とを備える。
図15は、BF部301´の処理で参照する画素を説明する模式図である。図15(a)においてBは予測ブロック境界もしくは変換ブロック境界である。XTはフィルタ対象画素、XVは垂直ブロック境界画素、XHは水平ブロック境界画素を示す。BF部301´は、XT、XV、XHを用いて画像を生成する。
垂直境界値参照部501は、フィルタ対象画素が属するブロックとは異なるブロックの画素で、フィルタ対象画素に最も近い垂直境界の画素を参照する。すなわち、条件1:フィルタ対象画素とは異なるブロックの画素、条件2:フィルタ対象画素と同じX座標を持つ画素、条件3:予測ブロックの境界画素、または、変換ブロックの境界画素の3条件を満たす画素のうち、フィルタ対象画素に最も近い画素の画素値を参照する。但し、最も近い画素が複数存在する場合には所定の処理(例えば最もX座標とY座標が小さい画素)によって1つを選択する。この画素が垂直境界画素XVであり、この画素値をxvとする。
水平境界値参照部502も、同様に、フィルタ対象画素が属するブロックとは異なるブロックの画素で、フィルタ対象画素に最も近い予測ブロックおよび変換ブロックの水平境界の画素を参照する。この画素が水平境界画素XHであり、この画素値をxhとする。
対象画素参照部503は、フィルタ対象画素XTの画素値を参照する。この画素値をxtとする。
BF重み算出部504は、加重平均部505で使用される重みを下記の手順で算出する。
まず、BF重み算出部504は、フィルタ対象画素と垂直境界画素との距離Dv、及び、フィルタ対象画素と水平境界画素との距離Dhを算出する。次に対象ブロックの変換ブロックのサイズに応じて、以下の式によって、距離D(DvもしくはDh)から重みp(pvもしくはph)を算出する。
変換ブロックが4×4の場合
p=total×4/8 D=1(図6ではp0に相当) …(5−1)
p=total×1/8 D=2(図6ではp1に相当)
変換ブロックが8×8の場合
p=total×4/8 D=1(図6ではp0に相当)
p=total×2/8 D=2(図6ではp1に相当)
p=total×1/8 D=3(図6ではp2に相当)
p=0 D=それ以外
変換ブロックが16×16の場合
p=total×4/8 D=1(図6ではp0に相当)
p=total×3/8 D=2(図6ではp1に相当)
p=total×2/8 D=3(図6ではp2に相当)
p=total×1/8 D=4(図6ではp3に相当)
p=0 D=それ以外
なお、垂直境界の場合にはDをDv、pをpvと読み替え、水平境界の場合にはDをDh、pをphと読み替えて算出する。totalは値を整数化するために使用される値であり、256程度を用いると良い(以後も同様)。
この重み算出では、境界からの距離が大きくなるほど重みが小さくなるように調整している。
また重みptは以下の式(5−2)で算出する。
pt=(total―ph−pv) …(5−2)
加重平均部505は、BF重み算出部504で算出された重みpt、pv、phとフィルタ対象画素値xt、垂直境界画素値xv、水平境界画素値xhの加重平均からBF後画像の画素値xdを算出する。算出は以下の式(5−3)で行われる。
xd={pt×xt+pv×xv+ph×xh+total2}>>shift
…(5−3)
なお>>は右シフトを示す記号である。なお、totalは1<<shift、total2はtotal/2とする。<<は左シフトを示す記号である。
なお、shiftは8程度で良い。この式は、整数演算処理で算出する場合である。なお、小数演算の場合には以下の式で行われる。なお小数演算の場合には、BF重み算出部504においてtotal=1を用いる。
xd=pt×xt+pv×xv+ph×xh …(5−4)
第2のBF部301´は、上記の処理を、予測ブロックの境界および変換ブロックの境界に実行する。
また、式(5−1)以降の重み算出においてtotalの代わりにtotal×4のような値を用いても良い。
p=total×4/8 D=1(図6ではp0に相当) …(5−5)
この場合、重みptは式(5−2)ではなく以下の式(5−6)になる。
pt=(total×4―ph−pv) …(5−6)
このようにするとBF後画素のダイナミックレンジは4倍になるが、その分精度の高いBF後画像を適応フィルタ部302で用いることができる。適応フィルタ部302での重み係数は固定小数精度(小数精度をtotalでかけて整数化して実現)であり整数精度以上の精度を用いるため、高精度の参照画像の値を有効に利用できる。そのため、BF後画像のダイナミックレンジの拡大は、符号化歪み低減の精度を向上させる。
さらにまた、重みptの算出では、式(5−2)ではなくph+pv+pt=0を満たすような以下の式(5−7)を用いても良い。
pt=―(ph+pv) …(5−7)
また、この場合、以下の式(5−8)によりBF後の画素値を算出するとさらに適当である。
xd=clip(−127、128、pt×xt+pv×xv+ph×xh)
…(5−8)
ここでclip(x、y、z)は、zをx以上、y以下にクリップする演算を示す。
位置が近い画素値は互いに近い値をとる(xv≒xh≒xt)ことが多いが、ph+pv+pt=0、つまり、画素にかかる重みの総和が0にした場合には、その加重平均の値は0に近くなる。この場合は、比ゆ的には画素値の補正量もしくは画素値の差分に対応し画素値のダイナミックレンジは小さくなる。
このようにすることで、totalの代わりにtotal×4のように重みを大きくすることによりダイナミックレンジを拡大した場合においても、BF後画像のダイナミックレンジを抑えることが可能になり、少ないビット(ここでは8ビット、−128〜127)でBF後画像を格納することができる。このようにするとBF後画像を一時バッファに格納する場合において、必要となる一時バッファのメモリ量を低減させることができる。
(BF部の第3の構成)
図14は、BF部の第3の構成(BF部301´b)を示すブロック図である。この例では、BF部301´bは、第2の垂直境界値参照部501bと、第2の水平境界値参照部502bと、第2の対象画素参照部503bと、第2のBF重み算出部504b、第2の加重平均部505bを備える。
図15(b)は、BF部301´bの処理で参照する画素を説明する模式図である。図15(b)において、Bは予測ブロック境界もしくは変換ブロック境界である。XTはフィルタ対象画素、XV1、XV2は垂直ブロック境界画素、XH1、XH2は水平ブロック境界画素を示す。BF部301´bは、対象画像自身XTと、隣接するブロックの境界画素XV1、XV2、XH1、XH2を参照してBF後画像を生成する。
第2の垂直境界値参照部501bは、フィルタ対象画素の左右に存在する垂直境界の画素を2つ参照する。この画素がXV1、XV2であり、画素値をxv1、xv2と呼ぶ。
第2の水平境界値参照部502bも同様にフィルタ対象画素の上下に存在する水平境界の画素を2つ参照する。この画素がXH1、XH2であり、画素値をxh1、xh2と呼ぶ。
第2の対象画素参照部503bは、フィルタ対象画素の画素値を参照する。この画素がXTであり、画素値をxtと呼ぶ。
第2のBF重み算出部504bは、第2の加重平均部505bで使用される重みpt、pv1、pv2、ph1、ph2を下記の手順で算出する。
まず、第2のBF重み算出部504bは、フィルタ対象画素XTと垂直境界画素XT1及びXT2の距離Dv1、Dv2を算出し、さらにフィルタ対象画素XTと水平境界画素XV1及びXV2の距離Dh1、Dh2を算出する。次に対象ブロックの変換ブロックのサイズに応じて、以下の式によって、距離Dv1、Dv2、Dh1、Dh2から重みpv1、pv2、ph1、ph2を算出する。
変換ブロックが4×4の場合
p=total×1/(D×2) …(5−9)
変換ブロックが8×8の場合
p=total×2/((D+1)×2)
変換ブロックが16×16の場合
p=total×4/((D+3)×2)
なお、垂直境界の場合にはDをDv1、Dv2、pをpv1、pv2と読み替え、水平境界の場合にはDをDh1、Dh2、pをph1、ph2と読み替えて算出する。
この重み算出では、境界からの距離が大きくなるほど重みが小さくなるように調整している。
また重みptは以下の式で算出する。
pt=(total―ph1−pv1−ph2−pv2)
もしくは式(5−9)以後のpv1、pv2、ph1、ph2の算出においてtotalの代わりにtotal×4を用いた上で重みptを以下の式で算出する。
pt=(total×4―ph1−pv1−ph2−pv2)
これにより高い精度のBF後画像が得られる。
もしくは重みptは画素の重みの和が0となるように以下の式(5−10)で算出することもBF後画像xdのダイナミック抑制に適当である。
pt=―(ph1+pv1+ph2+pv2) …(5−10)
第2の加重平均部505bは、第2のBF重み算出部504bで算出された重みpt、pv1、pv2、ph1、ph2、とフィルタ対象画素値xt、垂直境界画素値xv1、xv2、水平境界画素値xh1、hv2の加重平均からBF後画像の画素値x´を算出する。算出は以下の式(5−11)で行われる。
xd={pt×xt+pv1×xv1+pv2×xv2+ph1×xh1+ph2×xh2+total2}>>shift
…(5−11)
また、さらに重みのダイナミックレンジを復号画像の値の範囲に抑えると良い。復号画像のビット深度が8である場合には、ダイナミックレンジは0から255であるから、以下の式によりxdの範囲を制限する。
xd=clip(0、255、xd)
また、重みptの算出に式(5−10)を用いる場合には、BF後画像xdのダイナミックレンジを抑えることができるが、さらにBF後画像xdの格納用のメモリを削減するには以下のようにさらにクリップし確実に所定のビット幅で格納できることを確定させると良い。
xd=clip(−127、128、xd)
BF部は、上記処理に限定されず、対象ブロックに隣接するブロックの境界付近の画素値を用いて、適応フィルタ参照用の画素値を算出する処理であれば良い。
例えば、BF部の処理として、デブロッキングフィルタ処理のダイナミックレンジを拡大しても良い。
より具体的には図4で示されるBF部301のBF画素生成部403を以下のBF画素生成部403´に置き替えても良い。BF画素生成部403´に入力された「d」および「ap」が、所定の閾値α、βに対して、d<α、かつ、ap<βである場合に以下のフィルタ処理を施す。
p0´=(p2+2×p1+2×p0+2×q0+q1)
p1´=(p2+p1+p0+q0)×2
p2´=(2×p3+3×p2+p1+p0+q0)×2
そうではない場合には、以下のフィルタを施す。
p0´=(2×p1+p0+q0)×2
なお、上記処理を行わない部分の画素値も8倍とする。
このように画素値のダイナミックレンジを拡大する(403に比べ8倍に拡大)ことによって、フィルタ処理で発生する除算(/8)によりラウンド処理を削除し、デブロッキングフィルタ処理の精度を向上させることができる。最終的に、画素値のダイナミックレンジを元のレンジに戻す処理は、適応フィルタ部302で行われる。適応フィルタ部302での重み係数は固定小数精度であり整数精度以上の精度を用いるため、高精度の参照画像の値を有効に利用できる。そのため、BF後画像のダイナミックレンジの拡大は、符号化歪み低減の精度を向上させる。
また、別のBF部の処理として、デブロッキングフィルタ処理の出力と入力の差分、すなわち、ブロックノイズ低減処理における入力信号の補正量を、BF部としても良い。より具体的には、デブロッキングフィルタ処理の入力をIN、出力をBFと表現した場合、以下の式で表現される値ΔBFを画素値とする画像を出力する処理をBF部に用いても良い。
ΔBF=BF−IN
より具体的には図4で示されるBF部301のBF画素生成部403を以下のBF画素生成部403´´に置き替えても良い。BF画素生成部403´´に入力された「d」および「ap」が、所定の閾値α、βに対して、d<α、かつ、ap<βである場合に以下のフィルタ処理を施す。
p0´=clip(―127、128、(p2+2×p1+2×p0+2×q0+q1)―8×p0)
p1´=clip(―127、128、(p2+p1+p0+q0)×2―8×p1)
p2´=clip(―127、128、(2×p3+3×p2+p1+p0+q0)×2―8×p2)
そうではない場合には、以下のフィルタを施す。
p0´=clip(―127、128、(2×p1+p0+q0)×2―8×p0)
なお、上記処理を行わない部分の画素値は0とする。
このようにデブロッキングフィルタ処理後の画像の代わりに、デブロッキングフィルタ処理における補正量からなる画像をBF後画像に用いることによって、ダイナミックレンジを拡大した場合においても、BF後画像のダイナミックレンジを抑えることが可能になり、少ないビット(ここでは8ビット、−128〜127)でBF後画像を格納することができる。このようにするとBF後画像を一時バッファに格納する場合において、必要となる一時バッファのメモリ量を低減させることができる。
また、デブロッキングフィルタ処理とは逆に、ブロックノイズを強調する処理を行う処理を用いても良い。例えば、以下の式で表現される値ΔBFを画素値とする画像を出力する処理をBF部に用いても良い。ブロックノイズを強調する処理の逆演算がブロックノイズ低減になることから、適当なブロックノイズ強調フィルタであっても適応フィルタ部302の重みづけによりブロックノイズ低減効果及びデブロッキング強度調整効果を得ることができる。
ΔBF´=(BF−IN)×2+IN
なお、処理対象ブロックとは異なるブロック(隣接ブロック)の画素は、予測もしくは変換が異なることから、処理対象ブロックと異なる特性を有する。このような異なる特性の画素値を適応フィルタ部302の入力信号として用いると歪み低減の効果を増大させることができる。BF部301´及びBF部301´bは、隣接ブロックの画素値を用いて、適応フィルタ対象画素の参照画素を生成するものであり、異なる特性の入力信号を準備することを意味する。
さらに、BF部301´及びBF部301´bは、ブロック境界との位置関係に応じて処理を変更している。適応フィルタ部302においては、位置関係に応じて異なる処理を行うためには位置毎に異なる重み係数の組が必要になり重み係数が増加する。適応フィルタ部302の入力信号として、BF部を設けることで、ブロック境界との位置関係に応じた処理をBF部に任せることできるため、多くの重み係数を符号化することなく、境界との位置関係に応じた適応フィルタ部302を施すことが可能になる。
また、BF部301´およびBF部301´bを通じて、境界および境界付近の画素を参照する。一般に境界画素値に近づける処理はブロックノイズ低減になることから、この構成においてブロックノイズ低減効果を得ることができる(逆に境界画素値から遠ざけることによってブロックノイズ低減効果を弱めることもできる)。BF後画像は、適応フィルタ部302の入力に用いられることから、適応フィルタにおいてブロックノイズ低減の強度を調整することもできる(すなわちデブロック強度調整効果が得られる)。
なお、BF部を備えない適応フィルタにおいても、フィルタ対象画素が境界付近にある場合などにおいて境界付近の画素を参照するが、参照のされ方は、フィルタ対象画素と境界の位置関係によって変化する。そのため、境界付近の画素の重みを変化させるには、境界との位置関係に応じて異なる重み係数を用いる必要があるが、重み係数の符号量が大きくなる。本特許ではBF部を通じて境界との位置関係を考慮した重みで境界付近の画素を明示的に参照することによって、少ない符号量でデブロック強度調整効果を得ることができる。
(適応フィルタ部302)
ここで、適応フィルタ部302について図7を用いて詳細に説明する。適応フィルタ部302は、適応重み付け部701と、BF後画素値適応重み付け部702と、シフト/除算部703とを備える。適応重み付け部701は、タップ数Mおよび重み係数ak(k=0〜(M×M+1)/2−1)と、フレームメモリ117から入力された復号画像とを用いてフィルタ処理を行う。BF後画素値適応重み付け部702は、タップ数Nおよび重み係数bk(k=0〜(N×N+1)/2−1)と、BF部301から入力された復号画像を用いてフィルタ処理を行う。
適応フィルタ部302は、全体として下記の式(7−1)で表現されるフィルタ処理を行う。
x´(x、y)=(Σa(i、j)×x(x+i、y+j)+Σb(i、j)×xd(x+i、y+j)+o+total2)>>shift
…(7−1)
ここで、x(x、y)はBF前画素値、xd(x、y)はBF後画素値、x´(x、y)は適応フィルタ後画素値である。(x、y)はフィルタ対象画素のフレーム内での位置で、フレームの幅w、フレームの高さをhとすると、0<=x<=w−1、0<=y<=h−1をとる。また、(i、j)は、フィルタ対象画素の位置(x、y)からの相対位置を示す。a(i、j)、b(i、j)は各々、相対位置(i、j)に対応するBF前画素値にかかる重み係数、相対位置(i、j)に対応するBF後画素値にかかる重み係数である。oはオフセット、shiftは除算を実行するためのシフト値である。また第1項のΣは、(i、j)のi、jについて各々−MからMまでの和をとり、第2項のΣは、(i、j)のi、jについて各々−NからNまでの和をとる演算を意味する。
(重み係数のインデックス)
ここで、符号化データから復号され、適応フィルタ情報保存部119に保存された、1次元インデックスで表示された重み係数ak(k=0〜(M×M+1)/2−1)と、上記2次元インデックスで表示された重み係数a(i、j)の関係について説明する。まず2次元インデックス(i、j)より、次の式で得られるk0を計算し、さらにk0からkを計算することで1次元インデックスkを得る。
k0=(i+ofst)+(j+ofst)×M
ここでofst=M/2、i=―M/2〜M/2、j=−M/2〜M/2。
k=k0 (k0<(M×M+1)/2)
=(M×M―1)―k0 (それ以外)
以下、a(i、j)と表示される演算では、2次元インデックス(i、j)から1次元インデックスkに変換された後の値kを用いて参照されるakを用いる。
1次元の重み係数bk(k=0〜(N×N+1)/2−1)と、上記2次元の重み係数b(i、j)との関係も同様であり、次の式で得られるk0を計算し、さらにk0からkを計算することで1次元インデックスkを得る。
k0=(i+ofst)+(j+ofst)×N
ここでofst=N/2、i=―N/2〜N/2、j=−N/2〜N/2。
k=k0 (k0<(N×N+1)/2)
=(N×N―1)―k0 (それ以外)
以下、b(i、j)と表示される演算では、2次元インデックス(i、j)から1次元インデックスkに変換された後の値kを用いて参照されるbkを用いる。
適応フィルタ部302は、適応重み付け部701、BF後画素値適応重み付け部702、シフト/除算部703を用いて先に説明した式(7−1)の処理を行う。
適応重み付け部701は、式(7−1)の第1項、及び、オフセットの加算、すなわち、以下の式を実行する。
Σa(i、j)×x(x+i、y+j)+o
BF後画素値適応重み付け部702は式(7−1)の第2項、すなわち、以下の演算を実行する。
Σb(i、j)×xd(x+i、y+j)
シフト/除算部703はラウンド付きシフト演算による除算rdiv(x)を実行する。rdiv(x)は、すなわち入力信号をxとすると、以下の関数で表現できる。
rdiv(x)=(x+total2)>>shift
このような適応フィルタ処理によって、BF前画素値とBF後画素値の両者の空間的な重み演算により効果的に歪みの低減を行うことができる。
(M=1の場合)
例えば、BF前画素値の適応フィルタのタップ数Mが1のときには、式(7−1)は以下の式(7−2)に簡略化されるが、空間フィルタによる歪み低減効果とデブロッキング強度調整効果を得ることができる。
x´(x、y)=(a(0、0)×x(x、y)+Σb(i、j)×xd(x+i、y+j)+o+total2)>>shift
…(7−2)
(N=1の場合)
また、BF後画素値の適応フィルタのタップ数Nが1には、以下の式(7−3)に簡略化されるが、
x´(x、y)=(Σa(i、j)×x(x+i、y+j)+b(0、0)×xd(x、y)+o+total2)>>shift
…(7―3)
空間フィルタによる歪み低減効果とデブロッキング強度調整効果を得ることができる。
なお、このとき、BF後画素値適応重み付け部702の動作は、結局、以下の式(7―4)となる。
b×xd(x、y)
…(7―4)
式(7―4)は単なる乗算であるため、BF後画素値適応重み付け部702の演算量は小さい。
また、BF後の画素の範囲を制限したこと(ここではN=1に制限)は、ある画素のループフィルタ処理においてトータルで参照する復号画素の参照範囲を削減することができる(後述)。これによってフレームメモリとのデータ転送量を削減する効果を奏する(後述)。また、この構成では、BF前画素値にかかる演算が適応フィルタ処理の大部分に相当することになるため、後述する並列性が向上するという効果を奏する。
なお、式(7−4)では、BF後画素値の重み付け演算が単純な乗算に簡略化されていることから、重み付けの手段より単純な乗算手段で処理することができる。
図16は、N=1の場合のループフィルタ部120(ここではループフィルタ部120´と呼ぶ)の構成を示すブロック図である。図16に示すように、BF後画素値適応重み付け部702の代わりに、1画素のBF後画素に対する重み付けのみを行う乗算部702´を備える構成である。すなわち、1画素のループフィルタ処理(1画素の適応フィルタ処理)に対し、BF後画素としては1画素のみを参照する。乗算部702´を用いる場合にはタップ数Nの入力は不要であり、1つの重み係数bの入力のみとなる。この構成は特別な効果があるため、乗算部702´を備える適応フィルタ部302を適応フィルタ部302´と呼び、適応フィルタ部302´を備えるループフィルタをループフィルタ120´と呼ぶ。さらにループフィルタ120´を備える動画像復号装置1を動画像復号装置1´と呼ぶ。
(M=N=1の場合)
M=N=1の場合には、さらに下記の式(7−5)に簡略化される。
x´(x、y)=(a×x(x、y)+b×xd(x、y)+o+total2)>>shift
…(7―5)
この場合には、わずかに3つの重み係数a、b、oによってデブロッキング強度調整効果を得ることができる。また、これらは閾値ではなく重み係数であるため、最小二乗法という演算量の少ない方法で最適な値を計算することができる。
また、さらにa+b=1、o=0という制約を用いて、式(7−6)のように簡略化することも可能である。
x´(x、y)=(a×x(x、y)+(total−a)×xd(x、y)+total2)>>shift
…(7―6)
この場合には、1つの重み係数aでデブロッキング強度調整効果が得られる。
また、このように簡略化された構成でなくとも、シーケンスやピクチャ、スライスによって空間的な歪み低減効果が必要ない場合や演算量を特に削減したい場合に、M=N=1を用いることが適当な場合がある。なお、M=0とする場合やN=0とする場合にはさらに演算量を減らすことが可能であるので、M=0の場合やN=0の場合の処理も特に排除するものではない。この場合、対応する重み係数は入力されないが重み係数=0として動作をすれば良い。適応重み付け部701はオフセット、BF後画素値適応重み付け部702は単にゼロを出力する処理になる。
(デブロッキング強度調整効果)
まず、単純なM=N=1の場合を用いて説明する。式(7−5)は次のような変形が可能である。
x´=c1×xd―c2×(xd―x) …(7―7)
ここでc1=(a+b)>>shift、c2=a>>shiftである。また、オフセットo、及び、位置(x、y)は表記を省略してある。ここで(a+b)>>shiftはほぼ1をとることが実験的に得られているので、さらに、式(7−7)は式(7−8)に変形できる。
x´=xd―c2×(xd―x) …(7―8)
xd−xは、BF処理によるxの補正量である。そのためこの係数にかかる項c2>0であるとは、補正を弱めることに相当し、c2<0であるとは、補正を強めることに相当する。このようにBF前画素値にかかる重み係数とBF後画素値にかかる重み係数の関係によってデブロッキング強度調整効果が得られる。
なお、M>1もしくはN>1の場合は、M=N=1の場合よりさらに自由度を増した構成を備えることから、当然、M=N=1の構成で得られるデブロッキング強度調整効果を得ることが可能である。
(効果測定実験)
図12は、デブロッキング処理後の画素値に空間的な適応フィルタを施すループフィルタ(従来手法1、図17(a))と、デブロッキング処理前の画素値に空間的な適応フィルタを施すループフィルタ(従来手法2、図17(b))と、M=1、N>1の場合のループフィルタ(提案手法1)と、M>1、N=1の場合のループフィルタ(提案手法2)とを各々、動画像復号装置1および動画像符号化装置2に実際に組み込んだ場合の符号化効率を調査したものである。なお、比較対象は適応フィルタを含まないループフィルタ(BF部のみを備えるループフィルタ)を用いた場合であり、符号化効率は、4点の量子化パラメータで符号化した場合の、SN比と符号量を測定し、SN比が一定になるという仮定をおいた場合に、どの程度の符号量削減が可能か(率)を評価したものである(BDRATEと呼ばれる)。符号量削減率が大きいほど符号化効率向上の効果が高いと言える。
なお、BDRATEの算出方法の詳細は、下記文献に記載されている。
G. Bjontegaard, “Calculation of average PSNR differences between RD-Curves,” ITU-T Q.6/SG16 Doc., VCEG-M33, Austin, Apr. 2001.
図12をみて分かるように、提案手法1、2ともに、従来手法1、2を超える性能を示す。また、デブロッキング処理前の画素値に空間的な適応フィルタを施す場合(従来手法2、M>1、N=0の場合に相当)には、デブロッキング処理後の画素値に施す場合(従来手法1、M=0、N>1の場合に相当)よりも多くの場合、性能的に低下する。
しかしながら、提案手法2(M>1、N=1)は、BF処理後の画素値の参照を1画素に制限し、空間的な適応フィルタはBF処理前の画素値に対して施すにも関わらず、デブロッキング処理後の画素値に空間的な適応フィルタを施す従来手法1を超える性能を発揮する。このことは、適応フィルタにおいてBF処理後の画素値の参照範囲を制限しても十分な効果が得られることを意味する。この構成の動画像復号装置1´は、符号化効率の向上以外に、復号画素の参照範囲の削減、フレームメモリとのデータ転送量削減、並列性の向上という効果を最大限に得ることができる。
(並列処理の説明)
現在は、演算部を複数備えるCPUおよび集積回路が一般的であるため、同時並行に処理できるかに関わる並列性が高いかどうかは重要なポイントである。
図8は、ループフィルタ120における並列処理を説明する図である。図8では2つの演算部(演算部#1と演算部#2)を用いて並列にループフィルタ処理を行う動作を示している。図8に示す通り、演算部#1においてBF部におけるBF後画像生成処理を行い、演算部#2において適応フィルタ部302で行われるBF前画像(ループフィルタ部120入力画像)に対する重み付けを行うことにより、並列でループフィルタ処理を行うことができる。また、演算部#2では、それ以外のループフィルタの処理であるBF後画像に対する重み付け処理およびシフト/除算処理を行っているが、これは演算部#1で行っても構わない。図8では特に並列演算可能な部分を並列処理可能区間として示している。
なお、重み付け処理の処理量はタップ数に依存するため、BF前重み付け処理のタップ数Mが、BF後重み付け処理のタップ数Nよりも十分大きい場合には、適応フィルタ処理の多くをBF前重み付け処理が占めることになる。この場合、適応フィルタとBF処理とを同時に実行できるのとほぼ同じだけの効果が得られる。この場合、大きな並列性の効果を得ることができる。
(参照範囲の説明)
携帯機器などのCPU及びアクセラレータの処理では、大規模な外部メモリ(例えばSDRAM)にアクセスするためには時間がかかるため、一度、高速にアクセスできる内部メモリにデータを転送し、内部メモリ上で処理を行った上で、処理後のデータを外部メモリに転送する動作が一般的である。
動画像復号や動画像符号化では、サイズの大きいフレームメモリは大規模な外部メモリに置かれる。内部メモリには大きなデータを置くことができないため、比較的16×16や32×16などの比較的小さいブロック単位で処理が行われる。すなわち、処理対象とするブロックに必要なデータを内部メモリに転送した上で処理を行い、処理後のブロックを外部メモリに転送する。この処理を繰り返すことで1フレーム分の処理が行われる。
図9は本発明の実施形態のループフィルタ部102(内部のBF部301及び適応フィルタ部302)で用いる復号画素の参照範囲を説明するための図である。ここではループフィルタの処理をブロック単位(図9ではフィルタ対象ブロック)に行う場合を例に説明する。また、予測ブロック境界もしくは変換ブロック境界で囲まれる領域を単位とする。本発明の実施形態では予測ブロック及び変換ブロックの最小サイズを4×4としているので、その倍数の16×16や32×16をフィルタ対象ブロックサイズとすることが適当である。
図9において塗りつぶし領域がフィルタ対象ブロック、Bはフィルタ対象ブロックの境界を示す。
図18は従来のループフィルタで用いる復号画像の範囲を説明するための図である。図18においても、Bはフィルタ対象ブロックの境界を示す。
図9の点線で囲まれる領域は、フィルタ対象ブロックの境界BにBF処理を施すのに必要な復号画像の範囲を示している。ここではBF処理では、境界からD画素を必要とする場合の例を示している。
図9の点線の周囲の太い実線で囲まれる領域は、フィルタ対象ブロックの境界BにBF処理を施すのに必要な復号画像の範囲を示している。BF後画素値に対するタップ数がNの場合には、適応フィルタのために、境界BのN2画素分のBF後画素が必要となる。ここでN2=(N+1)/2である。さらに、BF処理によりBF後画素を得るためにはさらにその範囲に加えD画素の復号画像が必要になるため、合計で境界BからN2+D画素だけ離れた位置までの復号画像を必要とする。
このようにBF後画素に対して空間的な適応フィルタを用いる場合には、フィルタ対象ブロックのループフィルタ処理に必要な復号画像の範囲(参照範囲)は大きくなる。以下、より具体的に説明する。
図18は、図17(a)で示される従来技術のループフィルタの例である。デブロッキングフィルタ部の処理には点線で示すようにBの周囲にD画素が必要であり、適応フィルタ部302の処理には太い実線で示すようにBの周囲にN2+D画素が必要である。N2+D>Dであるので、ループフィルタの参照範囲はBの周囲のN2+D画素となる。
図9(a)は、本発明のループフィルタ120の一般の場合である。BF部301の処理には点線で示すようにBの周囲にD画素が必要になる。BF後画素のタップ数をN、BF前画素のタップ数をMとすると、適応フィルタ部302の処理にはBの周囲にMAX(N2+D、M2)画素が必要になる。なお、MAX(a、b)はaとbの最大値を算出する演算、M2=(M+1)/2である。図9(a)ではN2+D>M2の場合の図であり、太い実線で示すループフィルタの参照範囲はBの周囲のN2+D画素である。
図9(b)は、BF後画素のタップ数N=1の場合である。この場合、BF部301の処理には点線で示すようにBの周囲にD画素、適応フィルタ部302の処理にはBの周囲にMAX(D、M2)の画素が必要になる。図9(b)ではM2>Dの場合の図であり、太い実線で示すループフィルタの参照範囲はBの周囲のM2画素である。
図18で説明したデブロッキング処理後画像を用いて空間的な適応フィルタ処理を行う従来技術の場合、及び、図9(a)で説明したBF後画像を用いて空間的な適応フィルタ処理(N>1の適応フィルタ)を行う場合には、BF部301に必要な復号画像の領域と、適応フィルタ部302に必要な復号画像の領域は重なりが小さい。それに対して、図9(b)で説明した、BF前画像を用いて空間的な適応フィルタ処理を行い、BF後画像を用いては空間的な適応フィルタ処理を行わない場合(M>1、N=1)には、BF部301に必要な復号画像の領域と、適応フィルタ部302に必要な復号画像の領域の重なりが大きい。
BF部301と、適応フィルタ部302で、必要な復号画像の重なりが大きいことは、BF部301と適応フィルタ部302で同じ復号画像を用いることができる領域が大きいことを意味する。これはあるフィルタ対象ブロックで参照する画像の範囲を削減することができると同時に、以下に示すデータ転送上の効果を奏する。
(データ転送の説明)
図10は本発明の実施形態の動画像復号装置1のデータ転送を説明するための図である。特にN=1を特化した乗算部702´を備える動画像復号装置1´のデータ転送を想定して説明する。図19は従来技術の動画像復号値のデータ転送を説明するための図である。図19(a)は、復号処理とデブロッキングフィルタ処理と適応フィルタ処理を独立した処理として別々の転送で行う場合を示したものである。この場合、処理の度に、外部メモリと内部メモリ間のデータ転送が必要になるため、全体としてデータ転送量が非常に大きい。それに対し、複数の処理を一度の転送で実施すれば、途中の処理で必要になる中間データ(一時データ)の外部メモリ転送および中間データの内部メモリ転送が不要となることから、データ転送量を削減できる。
図18を用いて説明したように、従来技術においては、デブロッキングフィルタ処理と適応フィルタ処理で必要となる画素の範囲の重なりが小さい。そのため、一度の転送で、デブロッキングフィルタ処理と適応フィルタ処理を実行する場合にも削減できるデータ量は小さい。よって、仮に一度の転送でデータ転送を実施しようとすれば、従来技術では図19(b)に示すように復号処理とデブロッキングフィルタ処理を一度の転送で実行することになる。
図10(a)は本発明の実施形態の動画像復号装置1´において、復号処理とデブロッキングフィルタ処理と適応フィルタ処理を別々に行う場合を示す。図9(b)を用いて説明したように、本構成においては、デブロッキングフィルタ処理と適応フィルタ処理で必要となる画素の範囲の重なりが大きいため、データ削減の効果が大きく、図10(b)に示すようなデータ転送量の削減が可能である。なお従来技術の相当する図19(b)と本発明の図10(b)を比較すると同程度のデータ転送量の削減が実現できているようにも見えるが、実際には、本発明の図10(b)の方の削減量が大きい。従来技術の図19(b)の場合、復号処理とデブロッキングフィルタ処理を一度の転送で実行するが、デブロッキングフィルタ処理で必要なデータは、復号処理で必要なデータに加えて余分なデータが必要であるためそのデータ転送量の増加がある。これに対し、図10(b)では、デブロッキングフィルタ処理で参照されるデータは、適応フィルタ処理で参照されるデータに含まれるためデータ転送量の増加はない。
また本発明の場合には、さらに図10(c)のように復号処理とデブロッキングフィルタ処理と適応フィルタ処理の3つを一度の転送で行うことも可能である。この場合、データ転送量を一層削減することができる。
なお、データ転送量の削減を行うと、バス速度の低減などを通じて、消費電力の削減効果を得ることが可能である。また、処理のために必要なデータ待ちがある場合など、データ転送が演算処理のボトルネックになっている場合には、処理速度の向上にダイレクトに効いてくる。このような場合は、PCなど高速なコンピュータの場合には多くはないが、バス速度が低い携帯端末などではデータ転送がボトルネックになることは少なくなく、データ転送量の削減は重要である。
(動画像符号化装置)
つづいて、本発明を適用した画像符号化装置について、図を参照して説明する。
図2は、動画像符号化装置2の構成を示すブロック図である。動画像符号化装置1と同様の部材に関しては、同一の符号を付し、その説明を省略する。
図2に示すように、動画像符号化装置2は、予測部111と、変換部112と、量子化部113と、可変長符号化部114と、逆量子化部115と、逆変換部116と、フレームメモリ117と、適応フィルタ情報算出部118と、適応フィルタ情報保存部119と、ループフィルタ部120と、減算部107と、加算部109を備える。
動画像符号化装置2は、フレームメモリ117に格納された局所復号画像の歪みを低減するループフィルタ部120を備え、ループフィルタ部120を制御するための適応フィルタ情報を格納する適応フィルタ情報保存部119を備える。以下、動画像符号化装置2の動作について説明する。
動画像符号化装置2に画像が入力された画像はブロックに分解され、以下の処理がなされる。予測部111は、入力ブロックを近似する予測ブロックを生成する。減算部107は、入力ブロックと予測部111から出力される予測ブロックの差分値である差分値ブロックを計算する。
変換部112は、減算部107から入力された差分値ブロックに対しDCT変換などにより変換係数を算出する。量子化部113は、量子化ステップにより定まるステップに従い、変換係数を量子化する。量子化された変換係数は、可変長符号化部114により符号化されて外部に出力される。
逆量子化部115は、量子化された変換係数を逆量子化する。逆変換部116は、逆量子化された変換係数を逆変換し、残差ブロックを算出する。加算部109は、残差ブロックと予測ブロックとの和を計算し、入力ブロックを再生する。再生されたブロックは、フレームメモリ117に格納される。
適応フィルタ情報算出部118は、適応フィルタ情報を算出する。算出された適応フィルタ情報は、適応フィルタ情報保存部119に格納され、次に可変長符号化部114に出力される。可変長符号化部114は、予測方法を示す情報と変換係数だけでなく、適応フィルタ情報の可変長符号化も行い出力する。
算出された適応フィルタ情報は適応フィルタ情報保存部119に格納される。ループフィルタ部120は、適応フィルタ情報保存部119に保存された適応フィルタ情報を読み出し、その値に従って、フレームメモリ117に格納された局所復号画像にフィルタ処理を行う。フィルタ処理された画像はフレームメモリ117に再度格納される。
適応フィルタ情報保存部119、ループフィルタ部120の動作は、動画像復号装置1と同一であるので、説明を省略する。
(適応フィルタ情報算出部118の説明)
以下、適応フィルタ情報算出部118の動作を説明する。適応フィルタ情報算出部118は、入力画像xoと復号画像xおよびBF後の画素値xdから、以下の式(8−1)を最小化する重み係数afk(k=0〜(M×M+1)/2−1)とbfk(k=0〜(N×N+1)/2−1)、オフセットofの推定値を最小2乗法により求める。ここでfはfloatの略であり、最小2乗法では小数点数として重み係数を算出することを意味する。
Σ|xo(x、y)−(Σaf(i、j)×x(x+i、y+j)+Σbf(i、j)×xd(x+i、y+j)+of)|^2
…(8−1)
ここで、^2は二乗を示す。最初のΣは全ての(x、y)に対する和、第1項のΣは、(i、j)のi、jについて各々−MからMまでの和、最後のΣは、(i、j)のi、jについて各々−NからNまでの和をとる演算を意味する。
なお、akとaf(i、j)の関係、bkとbf(i、j)の関係は既に動画像復号装置1の説明で示したとおりである。
最小2乗法の算出ではまず、式(8−1)を重み係数afkとbfk、オフセットofをパラメータとする以下の式(8−2)に直す。
Σ|xo(x、y)−(Σx(x+i、y+j)×afk+Σxd(x+i、y+j)×bfk+of)|^2
…(8−2)
さらに、Σで示される和として、(i、j)に関する和から、kに関する和に置き替える。ここでkから(i、j)への対応関係は2通りあるため、一方を(i、j)、もう一方を(i´、j´)と表現する。
kから(i、j)、(i´、j´)への変換は以下の演算で行われる。まず、以下の式を用いてkからk0とk0´を計算する。
k0 =k
k0´=(M×M−1)―k
次に、k0とk0´から以下の式を用いてi、jを計算する。
i=(k0%M)−ofst
j=(k0/M)−ofst
i´=(k0´%M)−ofst
j´=(k0´/M)−ofst
ここで%は剰余を計算する演算、/は除算を行い小数点以下を切り捨てて整数化する演算、ofst=M/2である。
なお、xdに関しては上の式でMをNに置き替えた演算で(i、j)、(i´、j´)を計算する。
上記の置き替えにより、式(8−2)は式(8−3)として表現することができる。
Σ|xo(x、y)−(Σ{x(x+i、y+j)+x(x+i´、y+j´)}×afk+Σ{xd(x+i、y+j)+xd(x+i´、y+j´)}×bfk+of)|^2 …(8−3)
ここで、最初のΣは全ての(x、y)に対する和、第1項のΣはkについて0から(M×M+1)/2−1までの和、最後のΣはkについて0から(N×N+1)/2−1までの和をとる演算を意味する。
式(8−3)をパラメータafk、bfk、ofの式とみなして、各々のパラメータに対して偏微分を行い、これを0とする。これによって、正規方程式と呼ばれるパラメータの数(M×M+1)/2+(N×N+1)/2+1個の連立方程式が得られる。
得られた方程式をガウスの消去法などによって解くとことにより、afkの最適推定値afeと、bfkの最適推定値bfe、ofの最適推定値ofeが得られる。
これらを重み係数の組を推定値zfeと呼ぶ。なお、BF後の画素値xdは、ループフィルタ部120内のBF部301を動作させて算出する。
最小二乗法の演算は、事前にBF前の画素値に対するタップ数MとBF前の画素値に対するタップ数Nを特定の値に定めて行われる。但し、最適なMとNの組み合わせを予め定めることは困難であることから、次に示す擬似コードで表現する処理によって可能な全ての組み合わせのMおよびNに対して最小2乗法を行い、最適なMとNの組み合わせを選択することで、最適化を行う。
SMIN=0x7FFFFFFF(十分大きな値、ここでは32ビット符号付き整数の最大値を設定)
LOOP(M=1、3、5){
LOOP(N=1、3、5){
最小二乗法により重み係数zfeを得る
zfeを式(8−3)に代入して得られる二乗誤差の大きさをSとする
IF(S < SMIN){
重み係数zfeを最適な重み係数zfbestとして保存
S=SMIN
}
}
}
ここで算出された最適な重み係数セットをzfbest={afbest、bfbest、obbest}とする。次の式で示される演算で整数化し、適応フィルタ情報保存部119に保存する。
abest=(int){afbest×(1<<shift)}
bbest=(int){bfbest×(1<<shift)}
obest=(int){ofbest×(1<<shift)}
なお(int)は整数化を示す。
また、以上説明したそれぞれの実施形態において、動画像復号装置および動画像復号装置の各機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより動画像復号装置や動画像復号装置の制御を行っても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるものであっても良い。
〔ループフィルタ部120の変形例〕
最後に、上述したループフィルタ部120の構成を整理したうえで、いくつかの変形例について説明する。
(ループフィルタ部120の構成)
図20は、図3に示すループフィルタ部120の構成を、図7に示す適応フィルタ部302の内部構成を含めて図示したブロック図である。図20に示すように、ループフィルタ部120は、BF部301と適応フィルタ部302とを備えている。
ループフィルタ部120は、BF部301と、適応フィルタ部302とにより構成される。ループフィルタ部120を動画像符号化装置2に内蔵する場合、ループフィルタ部120には、局所復号画像が入力され、ループフィルタ部120を動画像復号装置1に内蔵する場合、ループフィルタ部120には、復号画像が入力される。以下、局所復号画像と復号画像とを区別せずに「復号画像X」と記載する。
復号画像Xは、直交変換(例えばDCT変換)/量子化/逆量子化/逆直交変換(例えば逆DCT変換)を経て生成された画像である。したがって、復号画像Xには、直交変換の変換単位の境界において画素値(輝度または色差)が不連続に変化するブロックノイズが含まれ得る。また、符号化対象画像から予測画像を減算して得られる予測残差に対して、直交変換/量子化/逆量子化/逆直交変換を施す場合には、予測画像の生成単位(予測単位)の境界においてもブロックノイズが発生し得る。
BF部301は、このようなブロックノイズを除去するためのフィルタであり、端的に言えば、ブロック境界(変換単位の境界または予測単位の境界)に選択的に作用する平滑化フィルタである。本明細書では、このようなフィルタを「境界フィルタ」あるいは「境界利用フィルタ」と呼ぶ。BF部301によるフィルタ演算は、if文における条件評価などの非線形演算を含むことに加え、フィルタ強度を適応的に調整するために演算量が多い。例えば、H264/AVCにおける復号処理では、処理時間の大半がデブロッキングフィルタによるフィルタ演算に費やされる場合もある。なお、BF部301の詳細については、すでに説明したとおりである。
ループフィルタ部120は、このようなBF部301に、適応フィルタ部302を組み合わせたものである。ループフィルタ部120が備える適応フィルタ部302は、図21に示すように、適応重み付け部701(以下、「第1の線形フィルタ部701」と呼称)と、BF後画素適応重み付け部702(以下「第2の線形フィルタ部702」と呼称)と、加算部704とを備えている。図7に示したように、加算部704の後段にシフト/除算部703を設けてもよいが、シフト/除算部703の作用は本発明において本質的なものではないので、ここでは省略する。
第1の線形フィルタ部701は、BF部301に入力される(デブロッキングフィルタ処理前の)復号画像Xに作用する線形フィルタである。すなわち、第1の線形フィルタ部701のタップ数をMとすると、第1の線形フィルタ部701から出力される画素値S1(x,y)は、参照画素値群{X1,X2,…,XM×M}を用いて、S1(x,y)=a1×X1+a2×X2+…+aM×M×XM×M+oと表せる。ここで、a1,a2,…,aM×Mは、動画像符号化装置2においてフィルタ係数設定単位(たとえばスライス)毎に適応的に設定されたフィルタ係数であり、oは、同様にして設定されたオフセット値(DC成分)である。第1の線形フィルタ部701のタップ数Mは、上述したように、1であってもよいが、以下では、2以上の自然数であると仮定する。つまり、第1の線形フィルタ部701は、空間フィルタであるものとする。
出力画像S1の画素(x,y)における画素値S1(x,y)を得るために第1の線形フィルタ部701が参照する参照画素値群{X1,X2,…,XM×M}は、画素(x,y)を含む領域U(以下、「参照領域U」と呼ぶ)に属する各画素の画素値からなる集合であり、{X(u,v)|(u,v)∈U}と表現することができる。ここで、X(u,v)は、デブロッキングフィルタ前の復号画像Xの画素(u,v)における画素値である。例えば、参照領域Uが画素(x,y)を中心とする正方形領域である場合、参照画素値群{X1,X2,…,XM×M}は、{X(u,v)|x−(M−1)/2≦u≦x+(M−1)/2,y−(M−1)≦v≦y+(M−1)}と書ける。また、参照領域Uが画素(x,y)を左上隅の頂点とする正方形領域である場合、参照画素値群{X1,X2,…,XM×M}は、{X(u,v)|x≦u≦x+M−1,y≦v≦y+M−1}と書ける。また、画素(x,y)からの市街地距離(マンハッタン距離)が予め定められた値以下となる画素(u,v)よりなる菱形領域を参照領域Uとしてもよい。ただし、参照領域Uは、画素(x,y)を含む領域であれば何でもよく、ここに例示したものに限らない。
第2の線形フィルタ部702は、BF部301から出力される(デブロッキングフィルタ処理後の)復号画像Xdに作用する線形フィルタである。すなわち、第2の線形フィルタ部702のタップ数をNとすると、第2の線形フィルタ部702から出力される画素値S2(x,y)は、参照画素値群{Xd1,Xd2,…,XdN×N}を用いて、S2(x,y)=b1×Xd1+b2×Xd2+…+bN×N×XdN×Nと表せる。ここで、b1,b2,…,bN×Nは、上述したフィルタ係数a1,a2,…,aM×M、および、オフセットoと共に、動画像符号化装置2において適応的に定められたフィルタ係数である。第2の線形フィルタ部702のタップ数Nは、1以上の自然数である。すなわち、第2の線形フィルタ部702は、空間フィルタであることを要さない。
出力画像S2の画素(x,y)における画素値S2(x,y)を得るために第2の線形フィルタ部702が参照する参照画素値群{Xd1,Xd2,…,XdN×N}は、画素(x,y)を含む領域V(以下、「参照領域V」と呼ぶ)に属する画素の画素値からなる集合であり、{Xd(u,v)|(u,v)∈V}と表現することができる。ここで、Xd(u,v)は、デブロッキングフィルタ後の復号画像Xdの画素(u,v)における画素値である。例えば、参照領域Vが画素(x,y)を中心とする正方形領域である場合、参照画素値群{Xd1,Xd2,…,XdN×N}は、{Xd(u,v)|x−(N−1)≦u≦x+(N−1),y−(N−1)≦v≦y+(N−1)}と書ける。また、参照領域Vが画素(x,y)を左上隅の頂点とする正方形領域である場合、参照画素値群{Xd1,Xd2,…,XdN×N}は、{X(u,v)|x≦u≦x+(N−1),y≦v≦y+(N−1)}と書ける。また、画素(x,y)からの市街地距離(マンハッタン距離)が予め定められた閾値以下となる画素(u,v)よりなる菱形領域を参照領域Vとしてもよい。ただし、参照領域Vは、画素(x,y)を含む領域であれば何でもよく、ここに例示したものに限らない。
加算部704は、第1の線形フィルタ部701の出力画像S1と第2の線形フィルタ部702の出力画像S2とを加算し、合成画像Sを得る。加算部704にて得られる合成画像Sの画素(x,y)における画素値S(x,y)は、第1の線形フィルタ部701の出力画像S1の画素(x,y)における画素値S1(x,y)と、第2の線形フィルタ部702の出力画像S2の画素(x,y)における画素値S2(x,y)との和S1(x,y)+S2(x,y)になる。ループフィルタ部120は、加算部704にて得られた合成画像Sを外部に出力する。以下、合成画像Sを、出力画像Sとも呼称する。
ループフィルタ部120の出力画像Sの画素(x,y)における画素値S(x,y)は、以下のように表すことができる。(a)式において、第1項のΣは、i=1,2,…,M×Mを渡る和であり、第2項のΣは、j=1,2,…,N×Nを渡る和である。なお、ここでは、第1の線形フィルタ部701によって(a)式におけるオフセットoを加算する構成を説明したが、第2の線形フィルタ部702によって(a)式におけるオフセットoを加算する構成に置き換えてもよい。
S(x,y) = Σai×Xi + Σbj×Xdj + o …(a)
図20に示すループフィルタ部120において特に注目すべき点は、適応フィルタ部302の一部(第2の線形フィルタ部702)を、BF部301の後段に配置し、BF部301から出力されるデブロッキングフィルタ処理後の復号画像Xdに作用させると共に、適応フィルタ部302の一部(第1の線形フィルタ部701)を、BF部301と並列に配置し、BF部301に入力されるデブロッキングフィルタ処理前の復号画像Xに作用させている点である。このように、空間フィルタである第1の線形フィルタ部701をBF部301と並列に配置することによって、符号化効率を低下させることなく、第2の線形フィルタ部702のタップ数Nを小さくすることが可能になる。実際、第2の線形フィルタ部702のタップ数Nを1にまで低下させても符号化効率の低下が生じないことは、図12に示したとおりである。
ここで、第2の線形フィルタ部702におけるフィルタ演算は、BF部301におけるフィルタ演算と並列化し得ないのに対し、第1の線形フィルタ部701におけるフィルタ演算は、BF部301によるフィルタ演算と並列化し得る点に留意されたい。すなわち、2以上の演算手段を備えた環境においては、仮に第1の線形フィルタ部701のタップ数Mが大きくなって演算量が増えたとしても、第2の線形フィルタ部702のタップ数Nが小さくなって演算量が減れば、全体の演算時間の短縮を図ることができる。すなわち、第2の線形フィルタ部702をBF部301の後段に配置すると共に、第1の線形フィルタ部701をBF部301と並列に配置することによって、ループフィルタ部120において、符号量削減率の低下を招来することなく、並列化による高速化を実現することができる。
(変形例1)
次に、図20に示すループフィルタ部120の第1の変形例について、図21及び図22を参照して説明する。
本変形例に係るループフィルタ部120aは、(1)第2の線形フィルタ部702の出力画像S2を出力画像Sとする第1のモード、及び、(2)第1の線形フィルタ部701の出力画像S1と第2の線形フィルタ部702の出力画像S2とを加算することにより得られた合成画像Sを出力画像Sとする第2のモードで動作可能なフィルタ装置である。
ループフィルタ部120aが何れのモードで動作するかは、動画像符号化装置2から提供されるフィルタパラメータに含まれるモード指定情報(以下「alf_parallel_mode」とも表記)により制御される。本変形例においては、alf_parallel_mode=0の場合、ループフィルタ部120aは第1のモードで動作し、alf_parallel_mode=1の場合、ループフィルタ部120aは第2のモードで動作する。
図21は、本変形例に係るループフィルタ部120aの動作状態を示すブロック図である。図21(a)は、第1のモードにおける動作状態を示し、図21(b)は、第2の動作モードにおける動作状態を示している。
図21(a)に示すように、第1のモードにおいては、第1の線形フィルタ部701が機能を停止し、第2の線形フィルタ部702の出力画像S2が出力画像Sとしてループフィルタ部120aから出力される。つまり、出力画像Sの画素(x,y)における画素値S(x,y)は、(b)式のように表すことができる。(b)式において、Σは、j=1,2,…,N×Nを渡る和である。
S(x,y) = Σbj×Xdj…(b)
第1のモードにおいて、第2の線形フィルタ部702のタップ数Nは可変であり、動画像符号化装置2から提供されるフィルタパラメータに含まれるタップ数指定情報(以下「alf_length_luma_minus5_div2」とも表記)によって決定される。ここで、alf_length_luma_minus5_div2は、0以上3以下の自然数を表す2ビットのバイナリデータである。alf_length_luma_minus5_div2=0(00),1(01),2(10),3(11)のとき(括弧内は2進表記)、第2の線形フィルタ部702は、自身のタップ数Nを、それぞれ、N=5,7,9,11に設定する。
図21(b)に示すように、第2のモードにおいては、第1の線形フィルタ部701の出力画像S1と第2の線形フィルタ部702の出力画像S2とを加算することにより得られた合成画像Sが出力画像Sとしてループフィルタ部120aから出力される。つまり、出力画像Sの画素(x,y)における画素値S(x,y)は、(c)式のように表すことができる。(c)式において、Σは、i=1,2,…,M×Mを渡る和である。
S(x,y) = Σai×Xi + b×Xd(x,y)+o …(c)
第2のモードにおいて、第1の線形フィルタ部701のタップ数Mは可変であり、上述したタップ数指定情報によって決定される。alf_length_luma_minus5_div2=0(00),1(01),2(10),3(11)のとき(括弧内は2進表記)、第1の線形フィルタ部701は、自身のタップ数Mを、それぞれ、M=5,7,9,11に設定する。一方、第2の線形フィルタ部702のタップ数Nは、N=1に固定されている。2以上の演算手段を備えている場合、ループフィルタ部120aは、これら2つの演算手段を用いて、BF部301によるフィルタ演算と、第1の線形フィルタ部701によるフィルタ演算(積和演算)とを並列的に実行することができる。
本変形例においては、第2の線形フィルタ部702のタップ数Nが1に設定されるため、第2のモードにおいて、第2の線形フィルタ部702におけるフィルタ演算が極めて軽い処理になる。したがって、第2のモードにおいて、BF部301によるフィルタ演算と、適応フィルタ部302によるフィルタ演算とを、略完全に並列化し得る。
ループフィルタ部120aにおける動作モードの切り替え、及び、タップ数の設定(第1のモードにおける第2の線形フィルタ部702のタップ数Nの設定、及び、第2の動作モードにおける第1の線形フィルタ部701のタップ数Mの設定)は、動画像符号化装置2から提供されるフィルタパラメータに基づいて行われる。
図22は、動画像符号化装置2から提供されるフィルタパラメータ(alf_param)の一構成例を示す図である。図22に示すように、本構成例に係るフィルタパラメータは、スライス毎に動画像符号化装置2から提供されるフィルタパラメータであり、対象スライスに対する適応フィルタ部302の動作を規定する複数のシンタックス(adaptive_loop_filter_flag、alf_pred_coef_mode、alf_parallel_mode、alf_length_luma_minus5_div2、alf_coeff_luma[i])を含んでいる。
adaptive_loop_filter_flagは、対象スライスにおいて適応フィルタ11を使用するか否かを指定する情報である。adaptive_loop_filter_flag=0である場合、ループフィルタ部120aは、デブロッキングフィルタ後の復号画像Xdを出力画像Sとして出力する。
alf_pred_coef_modeは、フィルタ係数を予測符号化するか否かを指定する情報である。alf_pred_coef_mode=0は、フィルタ係数の予測符号化が行なわれていないことを示し、alf_pred_coef_mode=1は、予測符号化が行なわれていることを示す。例えば、第1の線形フィルタ部701は、alf_pred_coef_mode=0である場合、フィルタ係数aiの値をalf_coeff_luma[i]に設定し、alf_pred_coef_mode=1である場合、フィルタ係数aiの値を前フレームにおける同フィルタ係数aiの値とalf_coeff_luma[i]との和に設定する。
alf_parallel_modeは、adaptive_loop_filter_flag=1である場合に、ループフィルタ部120を第1のモードで動作させるか、第2のモードで動作させるかを指定する情報(モード指定情報)である。BF部301によるフィルタ演算と第1の線形フィルタ部701によるフィルタ演算とを並列的に実行するか否かを指定する情報であると言い換えることもできる。上述したとおり、alf_parallel_mode=0の場合、ループフィルタ部120aは第1のモードで動作し、alf_parallel_mode=1の場合、ループフィルタ部120aは第2のモードで動作する。
alf_length_luma_minus5_div2は、上述したとおり、第1のモードにおいて第2の線形フィルタ部702のタップ数Nを指定し、第2の動作モードにおいて第1の線形フィルタ部701のタップ数Mを指定する情報(タップ数指定情報)である。上述したとおり、alf_length_luma_minus5_div2=0,1,2,3のとき、それぞれ、M=5,7,9,11(第2のモード)、N=5,7,9,11(第1のモード)に設定される。このように、第1のモードにおける第2の線形フィルタ部702のタップ数Nと、第2の動作モードにおける第1の線形フィルタ部701のタップ数Mとを、1つのパラメータで指定する構成を採用しているのは、フィルタパラメータのデータサイズをできるだけ小さく抑えるためである。
alf_coeff_luma[i]は、第1の線形フィルタ部701及び第2の線形フィルタ部702のフィルタ係数、並びに、オフセットoを指定する情報である。例えば、第1のモードにおいて、N=5である場合、第2の線形フィルタ部702の25個の係数および1個のオフセットを指定する。ただし、第2の線形フィルタ部702が対称性を有する線形フィルタである場合(フィルタ係数をaijと行列表現したときにaij=ajiとなる場合)、第2の線形フィルタ部702に関して指定すべき係数の数は(N×N+1)/2個=13個になる。また、例えば、第2のモードにおいて、M=5である場合、第1の線形フィルタ部701の25個の係数と、第2の線形フィルタ部702の1個の係数と、1個のオフセットcとを指定する。ただし、第1の線形フィルタ部701が対称性を有する線形フィルタである場合、第1の線形フィルタ部701に関して指定すべき係数の数は(M×M+1)/2個になる。
なお、動画像復号装置1が色差信号に作用する適応フィルタを更に備えている備えている場合、フィルタパラメータに、色差信号に関するシンタックス(alf_chroma_idc、alf_length_chroma_minus5_div2、alf_coeff_chroma[i])を含ませてもよい。ここで、alf_chroma_idcは、適応フィルタを色差信号に対して適用するか否かを示す情報であり、alf_length_chroma_minus5_divは、その適応フィルタのタップ数を示す情報であり、alf_coeff_chroma[i]は、その適応フィルタのフィルタ係数およびオフセットを示す情報である。
(変形例2)
次に、図20に示すループフィルタ部120の第2の変形例について、図23を参照して説明する。
本変形例に係るループフィルタ部120bは、(1)第2の線形フィルタ部702の設定可能なタップ数Nに上限値が定められていない第1のモードと、(2)第2の線形フィルタ部702の設定可能なタップ数Nに上限値Nmaxが定められている第2のモードとで動作可能なフィルタ装置である。第2のモードにおいては、第2の線形フィルタ部702のタップ数がNmaxよりも大きな値に設定されない。つまり、第2のモードにおいては、第2の線形フィルタ部702において過度に負荷の高いフィルタ演算が実行されない。
ループフィルタ部120bが何れのモードで動作するかは、動画像符号化装置2から提供されるフィルタパラメータに含まれるモード指定情報(本明細書においては、このモード指定情報を「alf_parallel_mode」と表記する)により制御される。本変形例においては、alf_parallel_mode=0の場合、ループフィルタ部120bは第1のモードで動作し、alf_parallel_mode=1の場合、ループフィルタ部120bは第2のモードで動作する。
図23は、本変形例に係るループフィルタ部120bの動作状態を示すブロック図である。図23(a)は、第1のモードにおける動作状態を示し、図23(b)は、第2の動作モードにおける動作状態を示している。
第1のモードにおいては、図23(a)に示すように、第2の線形フィルタ部702のタップ数を指定するタップ数指定情報として、可変長のタップ数指定情報alf_length_luma_minus1_div2_2が動画像符号化装置2にから提供される。alf_parallel_mode=0の場合、第2の線形フィルタ702は、可変長のタップ数指定情報alf_length_luma_minus1_div2_2から、自身のタップ数N=alf_length_luma_minus1_div2_2×2+1を復号する。第1のモードにおいては、第2の線形フィルタ部702のタップ数Nとして、任意の奇数が復号されえる。
一方、第2のモードにおいては、図23(b)に示すように、第2の線形フィルタ部702のタップ数を指定するタップ数指定情報として、1ビットのタップ数指定情報alf_length_luma_minus1_div2_2が動画像符号化装置2にから提供される。alf_parallel_mode=1の場合、第2の線形フィルタ702は、1ビットのタップ数指定情報alf_length_luma_minus1_div2_2から、自身のタップ数N=alf_length_luma_minus1_div2_2×2+1を復号する。第2のモードにおいては、第2のフィルタ部702のタップ数Nとして、1または3が復号され得る。この場合、設定可能なタップ数Nの上限値Nmaxは3である。
第2の線形フィルタ部702のタップ数Nが上限値Nmax以下に設定されるため、第2のモードにおいては、第2の線形フィルタ部702におけるフィルタ演算が軽い処理になる。したがって、第2のモードにおいては、BF部301によるフィルタ演算と、適応フィルタ部302によるフィルタ演算とを、概ね並列化し得る。
第1の線形フィルタ部701は、自身のタップ数Mを、フィルタパラメータに含まれるもう1つのタップ数指定情報alf_length_luma_minus1_div2_1から、自身のタップ数M=alf_length_luma_minus1_div2_1×2+1を復号する。すなわち、ループフィルタ部120bは、フィルタパラメータに含まれる2つのタップ数指定情報から、第1の線形フィルタ部701のタップ数Mと、第2の線形フィルタ部702のタップ数Nとをそれぞれ復号する。
なお、本変形例においては、第2の線形フィルタ部702の設定可能なタップ数Nに上限値が定められていない動作モードを第1のモードとしたが、第2の線形フィルタ部702の設定可能なタップ数Nに上限値Nmax’が定められている動作モードを第1のモードとしてもよい。この場合、例えば、タップ数指定情報alf_length_luma_minus1_div2_2として、2ビットのタップ数指定情報を用いることができる。このような構成であっても、第1のモードにおける上限値Nmax’が第2のモードにおける上限値Nmaxよりも大きければ、本変形例と同様の効果を奏することは明らかであろう。
なお、図22に示したフィルタパラメータは、タップ数指定情報alf_length_luma_minus5_div2を、タップ数指定情報alf_length_luma_minus1_div2_1及びalf_length_luma_minus1_div2_2に置き換えることによって、本変形例に適合させることができる。
(変形例3)
次に、図20に示すループフィルタ部120の第3の変形例について、図24を参照して説明する。
本変形例に係るループフィルタ部120cは、第2の変形例に係るループフィルタ120bと同様、フィルタパラメータに含まれる2つのタップ数指定情報から、第1の線形フィルタ部701のタップ数Mと、第2の線形フィルタ部702のタップ数Nとをそれぞれ復号する。ただし、第2の変形例に係るループフィルタ120bのような動作モードの切り替えは行なわれない。
より具体的には、第1の線形フィルタ部701が、2ビットのタップ数指定情報alf_length_luma_minus3_div2から、自身のタップ数M=alf_length_luma_minus3_div2×2+3を復号する。このため、第1の線形フィルタ部701のタップ数Mとしては、3、5、7、又は9の何れかが復号されえる。また、第2の線形フィルタ部702が、1ビットの第2のタップ数指定情報alf_length_luma_minus1_div2から、自身のタップ数N=alf_length_luma_minus1_div2×2+1を復号する。このため、第2の線形フィルタ部702のタップ数Nとしては、1又は3の何れかが復号され得る。すなわち、第2の変形例に係るループフィルタ120bと同様、設定可能なタップ数Nの上限値Nmaxは3になる。
第2の線形フィルタ部702のタップ数Nが上限値Nmax以下に設定されるため、本変形例に係るループフィルタ部120cにおいても、第2の線形フィルタ部702におけるフィルタ演算が軽い処理になる。したがって、BF部301によるフィルタ演算と、適応フィルタ部302によるフィルタ演算とを、概ね並列化し得る。
なお、図22に示したフィルタパラメータは、(1)モード指定情報alf_parallel_modeを省略し、(2)タップ数指定情報alf_length_luma_minus5_div2を、タップ数指定情報alf_length_luma_minus3_div2及びalf_length_luma_minus1_div2に置き換えることによって、本変形例に適合させることができる。
また、本変形例においては、第1の線形フィルタ部701のタップ数M、及び、第2の線形フィルタ部702のタップ数Nの両方が可変な場合に、これら2つのタップ数を2つのタップ数指定情報から決定する構成を採用したが、第1の線形フィルタ部701のタップ数M、及び、第2の線形フィルタ部702のタップ数Nの何れか一方のみ可変な場合に、可変な方のタップ数を1つのタップ数指定情報から決定する構成を採用してもよい。例えば、第2の線形フィルタ部702のタップ数Nが1に固定されており、第1の線形フィルタ部701のタップ数Mが可変な場合に、第1の線形フィルタ部701のタップ数Mをフィルタパラメータに含まれるタップ数指定情報に基づいて決定する構成などが考えられる。
〔実施形態2〕
すでに述べたように、非特許文献3には、予測残差、予測画像、及び、復号画像(予測残差と予測画像との和)に非線形デノイジングフィルタを施したものALFの入力画像とし、ALFの後段にデブロッキングフィルタを配置する構成が示されている。
しかしながら、非特許文献3に開示された構成、すなわち、ALFへ上記3つの入力画像を入力する構成をそのまま用いると処理量および処理時間が増大してしまうという問題がある。
本実施形態では、高い符号化効率を維持しつつ、入力数が3である場合であっても、処理量および処理時間の少なくとも何れかを削減することのできるフィルタ装置について、図25〜30を参照しつつ説明する。
図25は、本実施形態に係る動画像復号装置3の構成を示すブロック図である。図25に示すように、動画像復号装置3は、可変長符号化復号部114、逆量子化部115、逆変換部116、フレームメモリ117、予測部111、加算部109、および、ループフィルタ部120を備えている。動画像復号装置3は、符号化データを復号することによって動画像を生成する装置である。なお、可変長符号復号部114、予測部111、逆量子化部115、逆変換部116、加算部109、フレームメモリ117の構成は、動画像復号装置1と同じであるため、説明を省略し、以下ではループフィルタ部120について説明する。
なお、本実施形態についての以下の説明においては、予測部111によって生成される予測画像を予測画像Predとも表記し、逆変換部116によって生成される残差画像を残差画像(予測残差)Dとも表記し、加算部109によって生成される復号画像を復号画像Pとも表記する。
(ループフィルタ部120)
本実施形態におけるループフィルタ部120は、復号画像Pに対してノイズ除去処理を施し、BF後画像(以下、本実施形態において、BF後画像P_NRとも表記)を生成する。また、本実施形態におけるループフィルタ部120は、(1)BF後画像P_NR、(2)予測部111から出力された予測画像PRED、及び(3)逆変換部116から出力された予測残差Dの少なくとも何れかに対して適応フィルタ処理を施し、適応フィルタ済復号画像P_ALFを生成する。
以下では、本実施形態におけるループフィルタ部120の構成について図25を参照してより具体的に説明する。図25に示すように、ループフィルタ部120は、適応フィルタ用メモリ362、適応フィルタ部363、および、BF部364を備えている。ここでBF部364は、図3を参照して説明したBF部301と同じ構成であるため、説明を省略する。適応フィルタ用メモリ362は、適応フィルタ部363で用いる3種類の画像、予測画像PRED、予測残差D、および、BF後画像P_NRを各々格納するメモリ領域を備えている。より具体的には、予測画像PREDを格納する予測画像用メモリ領域366、予測残差Dを格納する残差画像用メモリ領域367、およびBF後画像P_NRを格納するBF後画像用メモリ領域365を備えている。
(適応フィルタ部363)
図25に示すように、適応フィルタ部363は、予測画像PRED、予測残差D、およびBF後画像P_NRに対して、符号化データから復号した適応フィルタ情報に含まれるフィルタ係数およびオフセットを用いた適応フィルタ処理を施すことによって適応フィルタ済復号画像P_ALFを生成し、生成した適応フィルタ済復号画像P_ALFをフレームメモリ117に格納する。なお、適応フィルタ部363は、シーケンス、ピクチャ、および、スライスの何れかを処理単位として適応フィルタ処理を行うことができる。換言すれば、適応フィルタ部363は、シーケンス毎、ピクチャ毎、または、スライス毎に適応フィルタ処理の処理内容を変更することができる。以下では、一例として、適応フィルタ部363が、スライスを単位として適応フィルタ処理を行う場合を例にとり説明を行う。
図26は、適応フィルタ部363の構成を示すブロック図である。図26に示すように、適応フィルタ部363は、予測画素値適応重み付け部731、残差画素値適応重み付け部741、BF後画素値適応重み付け部702、シフト/除算部703、および、加算部704を備えている。なお、以下では、予測画素値適応重み付け部731、残差画素値適応重み付け部741、および、BF後画素値適応重み付け部702を、ぞれぞれ、線形フィルタ(部)731、線形フィルタ(部)741、線形フィルタ(部)702と呼ぶこともある。
(予測画素値適応重み付け部731)
予測画素値適応重み付け部731は、予測画像PREDの各画素値の、フィルタ係数ci(i=1〜Nc、Ncはフィルタ係数ciの総数)を用いた重み付け和(加重線形和)をとることによって、第1の出力画像#731を生成する。ここで、フィルタ係数ciは、符号化データの適応フィルタ情報に含まれるフィルタ係数のうち、予測画像PREDの画素値に乗ぜられるフィルタ係数を表しており、以下の説明では、各ciを、c(u、v)とも表記する。
具体的に、第1の出力画像#731の画素値をS1(x’、y’)と表し、予測画像PREDの画素値をSPred(x、y)と表すことにすると、予測画素値適応重み付け部731は、画素値S1(x’、y’)を以下の数式(9−1)によって算出する。
ここで、座標(x、y)は座標(x’、y’)と同一の座標としてもよいし、1対1の対応を有していれば、異なった座標としてもよい。c(u、v)は、符号化データの適応フィルタ情報に含まれるフィルタ係数のうち、予測画像PREDの画素値SPred(x+u、y+v)に乗ぜられるフィルタ係数を表している。
また、フィルタ参照領域RPredは、フィルタ後の画素値を算出する対象となる画素(フィルタ対象画素)の位置に応じて、予測画像PRED上に設定される。ここで、フィルタ参照領域RPredのサイズは、Np×Np’画素とし、Np=Np’であっても、そうでなくてもよいものとする。
このように、予測画素値適応重み付け部731は、予測画像PREDに作用するNp×Np’タップフィルタとして機能する。
(残差画素値適応重み付け部741)
残差画素値適応重み付け部741は、予測残差Dの各画素値の、フィルタ係数di(i=1〜Nd、Ndはフィルタ係数diの総数)を用いた重み付け和(加重線形和)をとることによって、第2の出力画像#741を生成する。ここで、フィルタ係数diは、符号化データの適応フィルタ情報に含まれるフィルタ係数のうち、予測残差Dの示す画像の画素値に乗ぜられるフィルタ係数を表しており、以下の説明では、各diを、d(u、v)とも表記する。
具体的に、第2の出力画像#741の画素値をS2(x’、y’)と表し、予測残差Dの画素値をSD(x、y)と表すことにすると、残差画素値適応重み付け部741は、画素値S2(x’、y’)を以下の数式(9−2)によって算出する。
ここで、座標(x、y)は座標(x’、y’)と同一の座標としてもよいし、1対1の対応を有していれば、異なった座標としてもよい。d(u、v)は、符号化データの適応フィルタ情報に含まれるフィルタ係数のうち、予測残差Dの示す画像の画素値SD(x+u、y+v)に乗ぜられるフィルタ係数を表している。
また、フィルタ参照領域RDは、フィルタ後の画素値を算出する対象となる画素(フィルタ対象画素)の位置に応じて、予測残差D上に設定される。ここで、フィルタ参照領域RDのサイズは、Nd×Nd’画素とし、Nd=Nd’であっても、そうでなくてもよいものとする。
このように、残差画素値適応重み付け部741は、予測残差Dに作用するNd×Nd’タップフィルタとして機能する。
(BF後画素値適応重み付け部702)
BF後画素値適応重み付け部702は、BF後画像P_NRの各画素値の、フィルタ係数bi(i=1〜Nb、Nbはフィルタ係数biの総数)を用いた重み付け和(加重線形和)をとることによって、第3の出力画像#702を生成する。ここで、フィルタ係数biは、符号化データの適応フィルタ情報に含まれるフィルタ係数のうち、BF後画像P_NRの画素値に乗ぜられるフィルタ係数を表しており、以下の説明では、各biを、b(u、v)とも表記する。
具体的に、第3の出力画像#702の画素値をS3(x’、y’)と表し、BF後画像P_NRの画素値をSPNR(x、y)と表すことにすると、BF後画素値適応重み付け部702は、画素値S3(x’、y’)を以下の数式(9−3)によって算出する。
ここで、座標(x、y)は座標(x’、y’)と同一の座標としてもよいし、1対1の対応を有していれば、異なった座標としてもよい。b(u、v)は、符号化データの適応フィルタ情報に含まれるフィルタ係数のうち、BF後画像P_NRの画素値SPNR(x+u、y+v)に乗ぜられるフィルタ係数を表している。
また、フィルタ参照領域RPNRは、フィルタ後の画素値を算出する対象となる画素(フィルタ対象画素)の位置に応じて、BF後画像P_NR上に設定される。ここで、フィルタ参照領域RPNRのサイズは、N×N’画素とし、N=N’であっても、そうでなくてもよいものとする。
このように、BF後画素値適応重み付け部702は、BF後画像P_NRに作用するN×N’タップフィルタとして機能する。
(加算部704)
加算部704は、第1の出力画像#731、第2の出力画像#741、および、第3の出力画像#702の対応する各画素値と、オフセットoとを加算することによって、出力画像#704を生成する。具体的に、出力画像#704の画素値をSo(x、y)と表すことにすると、加算部704は、画素値So(x、y)を、以下の数式(9−4)によって算出する。
ここで、オフセットoは、符号化データの適応フィルタ情報に含まれるオフセットを表している。
(シフト/除算部703)
シフト/除算部703は、加算部704によって生成された出力画像#704の各画素値に対して、ラウンド付きシフト演算による除算処理を行うことによって適応フィルタ済復号画像P_ALFを生成する。シフト/除算部703による具体的な処理は、実施形態1と同様であるため、ここでは説明を省略する。
以上のように、適応フィルタ部363においては、BF後画素値適応重み付け部702を、BF部364の後段に配置し、BF部364から出力されるBF後画像P_NRに作用させると共に、予測画素値適応重み付け部731と残差画素値適応重み付け部741とを、BF部364と並列に配置し、BF部364に入力されるBF前画像に作用させる。
以下では、適応フィルタ部363のより具体的な構成例について説明する。
(構成例1)
空間フィルタである予測画素値適応重み付け部731と残差画素値適応重み付け部741とをBF部364に対して並列に配置することによって、符号化効率を低下させることなく、BF後画素値適応重み付け部702のタップ数N×N’を小さくすることが可能になる。
また、BF後画素値適応重み付け部702のタップ数N×N’を小さくすれば、第1の出力画像#731、第2の出力画像#741、および、第3の出力画像#702を並列処理によって生成する際の処理時間を短縮することができる。特に、BF後画素値適応重み付け部702のタップ数を1×1タップとすれば、当該並列処理の処理時間を最も短縮することができる。すなわち、並列性を最も向上させることができる。これは、BF後画素値適応重み付け部702において、BF後画像P_NRをフィルタ対象画素の1画素のみ参照し、当該画素と重み係数との積のみを算出する場合に対応する。なお、予測画像PREDに対するタップ数Nc×Nc’、残差画像Dに対するタップ数Nd×Nd’は0を含む何れの値でも構わない。
以上のように、本構成例では、BF後画像P_NRについてのタップ数を制限することにより、並列性を向上させることができる。
(構成例2)
以下の構成は、残差画像Dのタップ数Nd×Nd’を制限することにより、処理量およびデータ転送量の削減効果を奏するものである。より具体的には、残差画像Dのタップ数Nd×Nd’を小さくすることによって、処理量およびデータ転送量の削減効果を奏するものである。本構成例では、残差画像Dのタップ数Nd×Nd’を1×1とする場合に最大の効果を奏する。残差画像Dは、復号された変換係数が逆量子化され逆変換された画像であるが、符号化装置において変換係数を生成する量子化過程においては、変換係数を削減するために四捨五入のラウンド処理ではなく、1/3未満を切り捨て1/3以上を切り上げる(もしくは1/6未満を切り捨て1/6以上を切り上げる)処理がなされることが多い。この場合、残差画像Dは本来の値よりも絶対値が小さい側にずれが生じている可能性が高く、フィルタ係数の積によって画素値を補正(大きく)することが適当と考えられる。このような効果は参照領域が小さい場合でも有効であるため、残差画像Dのタップ数を小さく(最大の効果を得るためには1に)制限することは適当である。なお、ここでは絶対値が小さい側にずれが生じると説明したが、逆量子化がこのずれを補償する処理(絶対値を大きくする処理)を含む場合には、ずれの方向が逆方向になることもある。また、量子化は周波数領域で行われるため画素領域での変化はこの限りではない。そのため、適応的な重み係数を用いる残差画像Dを含む適応フィルタで処理することが適当である。
このように、本構成例では、符号化効率を低下させることなく、線形フィルタ部702のタップ数N×N’を削減するものであり、演算量およびデータ転送量が削減されるという効果を奏する。
(構成例2´)
残差画像Dのタップ数Nd×Nd’についての制限は、BF後画像P_NRについてのタップ数N×N’についての制限と併用することができる。この場合、両者の線形フィルタにおいて、空間的(平面的、2次元的)なフィルタの効果が得られにくくなる。例えば、残差画像Dについてのタップ数Nd×Nd’、および、BF後画像P_NRについてのタップ数N×N’を共に1×1に設定した場合、画像の2次元的な相関を利用することができない。このような場合、予測画像PREDのタップ数は1タップなどには制限せず、平面的なフィルタの効果を得ることが適当である。
予測画像PREDは特にイントラ予測において、特定方向との相関(通常、左方向との相関、上方向との相関)が高い傾向にある。この傾向は、既に復号された画素を予測に用いるという制約から生じる。しかしながら一般の画像の相関は、エッジ方向に沿って存在するものであり、ある画素に対し点対称に相関を有する。このような相関を活かすためには、2次元フィルタを利用することが適当である。すなわち、参照できなかった方向(例えば、下、右)方向の画素を用いることにより、原画像に近づけることができる。そのため、予測画像PREDに2次元フィルタを用いることは適当である。演算量をより削減したい場合には、予測画像PREDのタップ数を制限すればよい。最大の効果は、予測画像PREDのタップ数を1とした場合に得られる。参照領域が1画素の場合にはフィルタ対象画素に対応する位置の画素を参照すればよい。
(構成例2´´)
なお、別の構成として、残差画像Dのタップ数Nd×Nd’についての制限と予測画像PREDのタップ数Nc×Nc’についての制限を併用することが適当である。最大の効果は、Nd=Nd’=Nc=Nc’=1とする場合である。ここでもフィルタ対象画素に対応する位置の画素を参照するものとする。
この場合には、BF後画像P_NRについてのタップ数N×N’を1×1タップに制限せず、画像の2次元的な相関を利用することが適当である。この場合には、BF処理と同時に処理することのできない、線形フィルタ702による処理の処理量が大きなものとなる。このため、線形フィルタ731及び線形フィルタ741と線形フィルタ702とを並列処理できることの効果は小さいものとなる。しかし、本構成例では、以下に説明するように、データ転送量削減の効果が大きい。
図10のデータ転送を説明する図を参照して既に示したように、復号処理と、BF部、適応フィルタ部363の処理を同時に行うことができれば、その間に発生する中間データ(ここでは予測画像PRED,予測残差D、BF後画像P_NR)を外部メモリとの間で転送する必要がなくなる。もし図10(a)の構成であれば、ループフィルタの処理単位、例えば、1スライス分の適応フィルタ部363の処理に必要とする画像(ここでは、BF後画像P_NR、予測画像PRED、予測残差D)を格納する適応フィルタ用メモリ362を必要とする。復号処理において、予測画像PREDを内部メモリで処理する場合には、これらを外部メモリに転送し保持することになる。また、適応フィルタ部363で処理する時点では逆に外部メモリから内部メモリへの転送が必要になる。
予測部111、逆量子化部115、逆変換部116、および、加算部109の処理は、ブロック単位で行われるが、上述のように、予測画像PREDと予測残差Dとについてそれぞれ1画素のみを参照する場合には、この復号処理と同時に、線形フィルタ731と線形フィルタ741の処理を同時に行うことができる。具体的には、予測部111における予測画像PRED生成の直後に同時に線形フィルタ731として予測画像PREDと重み係数ciとの積を算出でき、また同様に、逆量子化部115および逆変換部116における予測残差Dの生成の直後に予測残差Dと重み係数diとの積を算出できる。
なお、場合によっては、線形フィルタ731と線形フィルタ741の出力を外部メモリに転送する必要があるが、この場合にも、2つの出力の和を外部メモリに転送することにより、転送回数を2回から1回に減らすことができる。ループフィルタ(もしくは適応フィルタ)を構成する複数のフィルタ処理の出力の和を一度に外部メモリに転送することによって転送回数を減少させるという方法は、この構成によらず本発明の別の構成でも使用することができる。
以上の構成では、予測画像PREDと予測残差Dとを外部メモリに転送することなく、内部メモリのまま、線形フィルタ731と線形フィルタ741で処理できるため、データ転送量の削減になる。さらに転送時間の削減が可能になるため、きわめて高速に処理できる。
(構成例3)
以上の説明では、適応フィルタ部363への入力信号のタップ数制限によって、並列性の向上、並びに、演算量および転送量の削減という効果を発揮するものであったが、以下に説明するように参照範囲を復号済みの画像に制限することによっても演算量と転送量の削減が可能である。
図27の(a)〜(f)は、適応フィルタ部363の備える各線形フィルタ731、741、702がフィルタ対象画素の画素値を算出する際に参照する、各線形フィルタへの入力画像における参照範囲の例を示す。ここで、参照範囲とは、上述したフィルタ参照領域の少なくとも一部と重複する範囲のことであり、本構成例において、適応フィルタ部363の備える各線形フィルタは、フィルタ対象画素の位置に応じて設定される参照範囲に含まれる各入力画像の画素値を参照して、当該線形フィルタの出力を算出する。
図27の(a)〜(f)において、グレーの矩形はフィルタ対象画素の位置を示す。また、実線の矩形は、適応フィルタ部363の備える各線形フィルタにおいて参照する画像の範囲(参照範囲)を示す。また、波線の矩形は、フィルタ対象画素が含まれるブロックを示す。フィルタ対象画素が含まれるブロックとは、変換ブロック、予測ブロック、マクロブロック、コーディングユニット、最大コーディングユニットと呼ばれる単位のいずれであってもよい。例えば、以下の説明で「右側のブロック」とは、ブロックがマクロブロックである場合には「右側のマクロブロック」を意味し、ブロックが最大コーディングユニットである場合には「右側の最大コーディングユニット」を意味する。
図27(a)は、特に制約がなく、参照範囲のタップ数をNとするとN×Nの画像を参照する例を示している。すなわち、図27(a)の例では、フィルタ参照領域に含まれる全ての画素を参照する。上記の「制約がなく」との表現はこのことを指す。図27(b)は、参照範囲を、(a)の場合よりも小さい範囲に制限する例を示している。もっとも小さく制限する場合、参照範囲は1×1画素になる。図27(c)はフィルタ対象画像の左側と上側の画像のみを参照する例を示している。図27(d)はフィルタ対象画像の上側の画像のみを参照する例を示している。図27(e)は、フィルタ対象画像の属するブロックおよびその左側と上側の画像のみを参照する例を示している。図27(f)は、フィルタ対象画像の属するブロックの下側の画素を参照しない例を示している。なお、ここでは、復号処理がブロック単位でラスタスキャン順に行われることを仮定して、左側、上側という表現を用いたが、より正確には、図27(c)は、復号済みの画像を参照することを示すものである。また、図27(d)は、復号済みの画像と、復号済みの画像の右側に位置する画像を参照する(未復号ブロックの画像を参照しない)ことを示す。図27(e)は、復号済みの画像と、フィルタ対象画素が存在するブロックの画像とを参照することを示す。最後に図27(f)は、復号済みの画像とフィルタ対象画素が存在するブロックの画像と、前記ブロックの右側に存在するブロック(例えば、前記ブロックの右辺に隣接するブロック)の画像を参照すること(フィルタ対象ブロックと同一ライン上のブロックを除く、未復号ブロックの画像を参照しない)を意味する。なお、同一ラインと表現したが、場合によっては同一ラインよりも上のラインのブロックを参照しても良い。例えば画像がマクロブロックで区切られている場合には同一マクロブロックライン、画像が最大コーディングユニットで区切られている場合には、同一最大コーディングユニットラインに含まれるブロックの画像については、未復号画像においても参照可能である。
また、図27の(c)〜(f)に示す参照範囲は、以下のように表現することもできる。図27(c)においては、参照範囲の下辺の一部および右辺の一部が、それぞれ、対象画素の下辺および右辺と重なるように設定されている。図27(d)においては、参照範囲の下辺の一部が、対象画素の下辺と重なるように設定されている。図27(e)においては、参照範囲が、対象画素を含む対象ブロック、および、該対象ブロックの周辺の復号済みブロックより構成されている。図27(f)においては、参照範囲が、対象画素を含む対象ブロック、該対象ブロックの周辺の復号済みブロック、および、該対象ブロックの直後に復号されるブロックより構成されている。
なお、これらの参照範囲は、BF前画像、BF後画像、予測画像PRED、残差画像Dのいずれについても適用することができる。言い換えると、線形フィルタ部701、702、731、741の少なくも何れかの入力信号として用いることができる。
図27(c)に示した制約のようにフィルタ対象画素の左側と上側のみを参照する場合には、既に復号済みの画像であることから、参照範囲における参照画像が全て参照可能となるまで、対応する線形フィルタ部の処理を待つ必要がなくなる。例えばBF前画像の参照画像が参照範囲に制限されていれば、線形フィルタ部701を、当該画素を復号する時点で処理を行うことができる。同様に、予測画像PREDであれば線形フィルタ部731、残差画像Dであれば741を、当該画素を復号する時点で処理を開始することができる。
また、適応フィルタを構成する線形フィルタの入力が、図27(d)の制約のようにフィルタ対象画素の上側のみを参照する構成である場合には、1ブロックライン後に処理される可能性のある下側の画像の復号を待つ必要がない。ブロックを単位としてラスタスキャン順に復号処理を行う場合、フィルタ対象画素の下側に位置する画素の画素値が復号され参照されるまでに多くのブロックを処理する必要がある。したがって、下側のブロックの復号が完了するまで、当該フィルタ対象画素についての画素値算出処理を最も時間のかかるケースで、1ブロックラインの復号の間待機する必要が生じる。また、フィルタ対象画素の下側に位置する画素を参照する場合、内部メモリのサイズの問題から、入力信号を内部メモリに全て保存しておくことができず、一度外部メモリに転送する必要が生じる。それに比べて、フィルタ対象画素を含む対象ブロックの右側に位置する画素については、復号完了までの待機時間が短いので、必要な入力信号を全て内部メモリに保存することが可能である。そのため、下側の画素を参照しない制約をもつこの構成はデータ転送量の削減に大きな効果を有する。より具体的には、適応フィルタ部363の入力信号のBF後画像P_NR、予測画像PRED、残差画像Dの一つもしくは複数がこれらの制約がある場合には、その信号を外部メモリへ転送することが不要になる。
また、図27(e)に示した制約ではフィルタ対象画素の属する対象ブロックの左側と上側の画像のみを参照する例を示している。適応フィルタを構成する線形フィルタへの入力が、このような画像のみを参照する場合には、1ブロック後に処理される可能性のある右側の画像の復号を待つ必要がない。つまり、その入力が属するブロックの復号が終了した時点において、線形フィルタの処理に必要となる全ての画像が得られているため、次のブロックの復号を待つ必要なくすぐに処理することができる。図27(c)の場合に比べると対象ブロックの復号終了までは待つ必要があり、その間の入力画像は内部に保持する必要がある。しかし、ブロックが、変換ブロック、予測ブロック、マクロブロック、コーディングユニット、最大コーディングユニットである場合には十分小さい単位であるため、内部メモリ上の問題は生じない。この構成はデータ転送量の削減に大きな効果を有する。すなわち、BF後画像P_NR、予測画像PRED、残差画像Dがこれら入力である場合には外部メモリに転送する必要がなくなる。
また、図27(f)に示した制約ではフィルタ対象画素の属する対象ブロックの下側の画像を参照しない例を示している。適応フィルタを構成する線形フィルタの入力が、このような画像のみを参照する構成である場合には、1ブロックライン後に処理される可能性のある下側の画像の復号を待つ必要がない。つまり、その入力が属するブロックの復号が終了した時点では、対象ブロックの右側のブロックに属する画素を除いて、フィルタ対象画素の画素値を算出するために必要となる全ての画像が得られているため、下側のブロックの処理を待つことなくフィルタ処理を行うことができる。具体的には、復号処理が行われているブロックの左側のブロックについての線形フィルタ処理を行うことができる。この構成はデータ転送量の削減に大きな効果を有する。すなわち、BF後画像P_NR、予測画像PRED、残差画像Dがこれら入力である場合には外部メモリに転送する必要がなくなる。
ところで、図27(c)、図27(d)においては、フィルタ対象画素の位置に応じて、参照範囲がユニークに定まる。それに対して、図27(e)や図27(f)の場合には、フィルタ対象画素が対象ブロックの右側境界および下側境界に近い場合には参照範囲が制限され、そうでない場合には、参照範囲が図27(a)のように制限されない場合、すなわち、参照範囲がフィルタ参照領域と等しくなる場合もある。
言い換えると、図27(c)、図27(d)では参照範囲がフィルタ対象画素とブロック境界の位置関係により変化しない。それに対して、図27(e)と図27(f)の場合には、フィルタ対象画素とブロック境界の位置関係によって参照範囲が変化する。具体的には、重み係数がフィルタ対象画像を9×9タップの矩形型領域とするフィルタ処理の場合、フィルタ対象画素から5画素離れた画素を用いる。逆に、例えば、図27(e)の制限の場合は、フィルタ対象画素と右もしくは下のブロック境界の間に5画素以上の画素のない場合には参照が制限されていることになる。
各線形フィルタにおいて、フィルタ参照領域に属する各画素値とフィルタ係数との積和によってフィルタ対象画素の画素値が算出されるように規定されているものとすると、参照範囲を設定することにより、フィルタ参照領域において参照できない画素が生じる場合には、当該参照できない画素に代えて、代替画素の画素値を参照することが好ましい。この一つの方法は、従来のパディング方法を用いて参照可能な画素を延長することである。他の方法は、フィルタ対象画素に対して点対称に位置する画素を用いることである。例えば、下側にある画像の使用が制限される場合には、対称の位置にある上側にある画像を用いる。さらに別の方法は、フィルタ対象画素の位置にある画素を用いることである。
以上に説明したように、参照範囲を復号済みの画像に制限することによっても演算量と転送量の削減が可能である。また、一部のフィルタ処理を先行して実行し、残る線形フィルタ処理を最後に実行する場合において、先行するフィルタ処理の出力を外部メモリに転送する必要が生じる場合があるが、この場合にも、先行する複数の線形フィルタ処理の和を一度に外部メモリに転送することによって転送回数を減少させることができる。
図28は、後述する動画像符号化装置4から提供される適応フィルタ情報に含まれるフィルタパラメータ(alf_param)の構成の一部を示す図である。図28(a)は、alf_prallel_modeというモードを備える構成を示している。既に説明したようにalf_prallel_modeが1である場合には、BF後画像のタップ数を1に制限する。また図28(b)ではalf_reference_modeというモードを備える。alf_reference_modeが0である場合には図27(a)のように参照範囲は制限されず、alf_reference_modeが1、2、3、4、5である場合には図27(b)、図27(c)、図27(d)、図27(e)、図27(f)のように参照範囲が制限される。このように、動画像符号化装置と動画像復号装置がともに同じ参照範囲をとる必要があるが、参照範囲はあらかじめ設定しておいても良いし、ここで説明したようにフィルタパラメータ(適応フィルタ情報)によって明示的に参照範囲の制限を変更する構成も好適である。
図29は、後述する動画像符号化装置4から提供される適応フィルタ情報に含まれるフィルタパラメータ(alf_param)の一構成例を示す図である。図29に示すように、本構成例に係るフィルタパラメータは、スライス毎に動画像符号化装置4から提供されるフィルタパラメータであり、対象スライスに対する適応フィルタ部363の動作を規定する複数のシンタックス(adaptive_loop_filter_flag、alf_length_df_minus1_div2、alf_coeff_df[i]、alf_length_error_minus1_div2、alf_coeff_error[i]、alf_length_pred_minus1_div2、alf_coeff_pred[i])の全てもしくは一部を含んでいる。
adaptive_loop_filter_flagは、対象スライスにおいて適応フィルタ部363を使用するか否かを指定する情報である。
alf_length_df_minus1_div2は、線形フィルタ部702のタップ数N×Nを指定する情報(タップ数指定情報)である。alf_length_df_minus1_div2=0,1,2,3のとき、それぞれ、N=1,3,5,9に設定される。
alf_coeff_df[i]は、線形フィルタ部702のフィルタ係数bi、並びに、オフセットoを指定する情報である。N=5である場合、線形フィルタ部702の25個の係数および1個のオフセットを指定する。ただし、線形フィルタ部702が対称性を有する線形フィルタである場合(フィルタ係数をaijと行列表現したときにaij=ajiとなる場合)、線形フィルタ部702に関して指定すべき係数の数は(N×N+1)/2個=13個になる。
同様にalf_length_pred_minus1_div2は線形フィルタ部731のタップ数を指定する情報であり、alf_coeff_pred[i]は、線形フィルタ部731のフィルタ係数ciを指定する情報である。
同様にalf_length_error_minus1_div2は線形フィルタ部741のタップ数を指定する情報であり、alf_coeff_error[i]は、線形フィルタ部741のフィルタ係数diを指定する情報である。
図29(a)は、BF後画像P_NR、予測画像PRED、予測残差Dのタップ数を自由に復号できる構成を示している。この構成の場合にも、復号したタップ数が1である、もしくは、タップ数が短い場合において、並列処理を行うことができ、また、図10(c)に示すようなデータ転送量を減らす動作を行うことができる。シンタックス上は自由にタップ数を選択することができるが、使用可能なセマンティクスを制限するプロファイル情報などによって、BD後画像P_NR、予測画像PRED、予測残差Dのタップ数を制限することも適当である。
図29(b)は、BF後画像P_NRのタップ数を1に制限するシンタックスの構成である。この構成の場合にも、BF後画像P_NRのタップ数が1であることから、BF部364と、線形フィルタ731および線形フィルタ741とを並列に動作させることができる。また、図18で説明したようなデータ転送量削減の効果を得ることができる。また、BF部364と、線形フィルタ部731および線形フィルタ部741との並列処理を好適に行うことができる。また、図10(c)に示すようなデータ転送量を減らす動作を行うことができる。
図29(c)は、予測残差Dのタップ数を1に制限するシンタックスの構成である。この構成の場合には線形フィルタ741を復号と同時に処理することが可能である。この場合、予測残差Dを外部メモリに出力する必要がない。
図29(d)は、BF後画像P_NRのタップ数と予測残差Dのタップ数とを1に制限するシンタックスの構成である。この構成の場合にはBF部364と線形フィルタ731および線形フィルタ741とを並列に動作させることができる。また、線形フィルタ741を復号と同時に処理することが可能である。この場合、予測残差Dを外部メモリに出力する必要がない。
(動画像符号化装置4)
本実施形態に係る動画像符号化装置4の構成について図30を参照して説明する。動画像符号化装置4は、その一部に、H.264/MPEG−4.AVC、及び、KTAソフトウェアに採用されている技術を含む復号装置である。
図30は、動画像符号化装置4の構成を示すブロック図である。図30に示すように、動画像符号化装置4は、減算部107、加算部109、予測部111、変換部112、量子化部113、逆量子化部115、逆変換部116、フレームメモリ117、可変長符号化部114、適応フィルタ情報導出部368、および、ループフィルタ部120を備えている。減算部107、加算部109、予測部111、変換部112、量子化部113、逆量子化部115、逆変換部116、フレームメモリ117、および、可変長符号化部114については、動画像符号化装置2と同様であるため、説明を省略する。また、ループフィルタ部120の備える各部は、動画像復号装置3におけるループフィルタ部120の各部と同様であるため、その説明を省略する。ただし、BF後画像用メモリ領域365、予測画像用メモリ領域366、および、残差画像用メモリ領域367からそれぞれ読み出されるBF後画像P_NR、予測画像PRED、および、予測残差Dは、適応フィルタ情報導出部358へ供給され、適応フィルタ部363へは、適応フィルタ情報導出部368によって生成された適応フィルタ情報が供給される。
(適応フィルタ情報導出部368)
適応フィルタ情報導出部368は、動画像復号装置3の備えるループフィルタ部120、および、動画像符号化装置4の備えるループフィルタ部120によって参照される適応フィルタ情報を生成する。
適応フィルタ情報導出部368は、
(1)BF部364および適応フィルタ部363のそれぞれのオンオフ、
(2)適応フィルタ部363に入力する画像の種類およびその組み合わせ(BF後画像P_NR、予測残差D、および、予測画像Predのうち1つ若しくは複数の組み合わせ)、
(3)BF後画像P_NRに作用するフィルタのタップ数、
(4)BF後画像P_NRに作用するフィルタ係数
(5)予測残差Dの示す画像に作用するフィルタのタップ数、
(6)予測残差Dの示す画像に作用するフィルタ係数
(7)予測画像PREDに作用するフィルタのタップ数、
(8)予測画像PREDに作用するフィルタ係数
(9)オフセットo
を符号化効率が最適となるように決定する。
適応フィルタ情報導出部368は、符号化対象画像(原画像)とフィルタ後の画像との二乗誤差が最小となるようにタップ数、フィルタ係数、および、オフセットを決定し、決定されたタップ数、フィルタ係数、および、オフセットを適応フィルタ情報に含める。このようにして生成された適応フィルタ情報は、適応フィルタ部363に供給されると共に、可変長符号化部114にも供給され、符号化データに符号化データに含められる。
適応フィルタ情報導出部368は、BF後画像P_NRに作用するフィルタのフィルタ係数b(u、v)、予測残差Dに作用するフィルタのフィルタ係数d(u、v)、予測画像PREDに作用するフィルタのフィルタ係数c(u、v)、および、オフセットoを、フィルタ後の画像と符号化対象画像(原画像)との誤差が最小となるように決定する。例えば、以下の数式(10)に示す二乗誤差Eが最小となるように、フィルタ係数b(u、v)、フィルタ係数d(u、v)、フィルタ係数c(u、v)、および、オフセットoを決定する。
ここで、SPNR(x、y)はBF後画像P_NRの画素値を表しており、SD(x、y)は予測残差Dの画素値を表しており、SPred(x、y)は予測画像PREDの画素値を表しており、S0(x、y)は、符号化対象画像の画素値を表している。また、RPNR、RD、およびRPredは、BF後画像P_NR、予測残差D、予測画像PRED上のフィルタ参照領域を表している。フィルタ参照領域RPNR、RD、および、RPredのサイズを規定するタップ数は、複数の候補(例えば、1タップ、3タップ、5タップ、7タップ、9タップ)の中から、符号化効率が最適となるものが選択される。
なお、適応フィルタ情報導出部368による、フィルタ係数、および、オフセットのより具体的な算出処理は、既に説明した適応フィルタ情報算出部118による算出処理と同様であるため、ここでは説明を省略する。
上記のように決定されたフィルタ係数b(u、v)は、シンタックスalf_coeff_df[i]として、適応フィルタ情報(より具体的には、適応フィルタ情報の一部であるフィルタパラメータ)に含められる。また、上記のように決定されたフィルタ参照領域RPNRのタップ数を指定するパラメータは、alf_length_df_minus1_div2として、フィルタパラメータ(適応フィルタ情報alf_param())に含められる。
また、上記のように決定されたフィルタ係数d(u、v)は、シンタックスalf_coeff_error[i]として、フィルタパラメータ(適応フィルタ情報alf_param())に含められる。また、上記のように決定されたフィルタ参照領域RDのタップ数を指定するパラメータは、alf_length_error_minus1_div2として、フィルタパラメータ(適応フィルタ情報alf_param())に含められる。
また、上記のように決定されたフィルタ係数c(u、v)は、シンタックスalf_coeff_pred[i]として、フィルタパラメータ(適応フィルタ情報alf_param())に含められる。また、上記のように決定されたフィルタ参照領域RPredのタップ数を指定するパラメータは、alf_length_pred_minus1_div2として、フィルタパラメータ(適応フィルタ情報alf_param())に含められる。
また、上記のように決定されたオフセットoは、シンタックスalf_coeff_df[i]の一成分としてフィルタパラメータ(適応フィルタ情報alf_param())に含められる。
また、適応フィルタ情報導出部368は、
(10)BF後画像P_NRに作用するフィルタが参照する参照範囲
(11)予測残差Dの示す画像に作用するフィルタが参照する参照範囲
(12)予測画像PREDに作用するフィルタが参照する参照範囲
を決定し、決定された参照範囲を指定するalf_reference_modeを適応フィルタ情報に含める構成としてもよい。例えば、alf_reference_modeが0である場合には図27(a)のように参照範囲は制限されず、alf_reference_modeが1、2、3、4、5である場合には図27(b)、図27(c)、図27(d)、図27(e)、図27(f)のように参照範囲が制限される。
また、適応フィルタ情報導出部368は、BF後画像のタップ数を1に制限するか否かを決定し、その結果を示すalf_prallel_modeを適応フィルタ情報に含める構成としてもよい。既に説明したようにalf_prallel_modeが1である場合には、BF後画像のタップ数が1に制限される。
以上のように、動画像符号化装置4の備える適応フィルタ120によるフィルタ処理に用いられるフィルタパラメータは、符号化効率が最適となるように設定されているため、動画像符号化装置4を用いて符号化効率の高い符号化データ#3を生成することができる。
なお、適応フィルタ部363に入力する画像の種類は、動画像符号化装置4が外部から取得する情報によって指定されるものであってもよい。この場合、適応フィルタ情報導出部368は、当該情報によって指定される画像に対して、最適なフィルタ係数およびオフセットを決定する構成とすればよい。
また、以上説明したそれぞれの実施形態において、動画像復号装置および動画像復号装置の各機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより動画像復号装置や動画像復号装置の制御を行っても良い。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに、「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに、前述した機能をコンピュータシステムに既に記録されているプログラムとの組み合わせで実現できるものであっても良い。
〔本明細書に記載した発明(その1)〕
なお、本明細書には、少なくとも、以下の発明が記載されている。
1.ブロックに分割されて処理された画像をフィルタ入力画像としてフィルタ後画像を生成するフィルタ装置であって、前記フィルタ入力画像に対応する適応フィルタ情報を保存する適応フィルタ情報保存手段と、前記フィルタ入力画像から、フィルタ対象画素に隣接するブロックの境界付近の画素を用いて、フィルタ対象画素における画素値を生成するフィルタを作用させ、境界利用フィルタ画像(BF後画像)を生成する境界利用フィルタ手段(BF手段)と、前記フィルタ入力画像と前記BF後画像とから、前記適応フィルタ情報によって制御される適応フィルタ処理を行う適応フィルタ手段を備えることを特徴とするフィルタ装置。
上記BF手段では、ブロック境界もしくはブロック境界付近の画素を選択して適応フィルタ入力用の画像を生成する。明示的に境界及びその付近の画素を参照するBF処理と適応フィルタを組み合わせることにより、シーケンスやフレームの特徴及び境界の特徴に応じたデブロック強度調整が可能になり、歪み訂正効果を増大する効果を奏する。
上記のように構成されたフィルタ手段によれば、少ない符号量の適応フィルタ情報を用いて、シーケンスやフレームの特徴及び境界との位置関係に応じたデブロック強度調整が可能な効果を奏する。
2.前記BF手段は、境界の状態に応じて前記フィルタ入力画像のブロックノイズを低減するデブロッキングフィルタ処理を行い前記BF後画像を生成するデブロッキングフィルタ手段であることを特徴とする1に記載のフィルタ装置。
上記のように構成されたフィルタ手段によれば、少ない符号量の適応フィルタ情報を用いて、シーケンスやフレームの特徴及び境界の特徴に応じたデブロック強度調整が可能な効果を奏する。
3.前記BF手段は、フィルタ対象画素の付近の活性度を産出する活性度算出手段と、あるブロックと該ブロックに隣接する隣接ブロックとの境界におけるエッジ強度を算出するエッジ強度算出手段と、算出された前記活性度と前記エッジ強度に応じて異なる強度のブロックノイズ低減処理を行うデブロッキングフィルタ手段であることを特徴とする2に記載のフィルタ装置。
このようなブロック境界の状態に応じた適応的な処理と適応フィルタを組み合わせることにより、シーケンスやフレームの特徴及び境界のエッジ強度や活性度に応じたデブロック強度調整が可能になり、歪み訂正効果を増大する効果を奏する。
4.前記適応フィルタ情報は重み係数であり、前記適応フィルタ手段は、前記BF後画像と前記フィルタ入力画像に前記適応フィルタ情報を用いて重み付けを行うことで適応フィルタ処理を行うことを特徴とする1.から3に記載のフィルタ装置。
上記のように構成されたフィルタ手段によれば、重み係数を最小2乗法などを用いて容易に算出することができる。そのため、シーケンスやフレームの特徴に最適化されることによる大きな歪み低減を得ることができるという効果を奏する。
5.前記適応フィルタ手段において、BF後画像との重み付けを行う手段が、1画素のBF画像と1つの重み係数との積を計算する乗算手段であることを特徴とする1.から4に記載のフィルタ装置。
上記のように構成されたフィルタ手段によれば、高い歪み低減効果を得るのと同時に以下の効果を得ることができる。フィルタ入力画像の一つの領域(フィルタ対象ブロック)を処理する場合において、必要となるフィルタ入力画像の範囲が、適応フィルタ処理に対して小さくなる。また、適応フィルタ処理において必要となるフィルタ入力画像の範囲とBF処理で必要となる範囲の重なりが大きくなるため、一度の転送を用いて、フィルタ対象ブロックに対してBF処理と適応フィルタ処理を適応することができる。BF処理と適応フィルタ処理とで別々にデータ転送を行う場合に比べて、データ転送量削減の効果を奏する。また、BF後画像に対する重み付け処理の演算量を削減することができるため、BF処理と並列で実行できない重み付け処理が減少し、BF処理とフィルタ入力画像に対する重み付け処理を並列に実行する場合の並列性が向上する効果を奏する。
6.符号化された入力画像から画像を復号する画像復号装置であって、前記入力画像から適応フィルタ情報及び残差情報及び予測画像を復号する復号手段と、前記残差情報を逆量子化及び逆変換することにより得られる残差画像と、前記予測画像とから、画像データを生成する生成手段と、1.から5.の何れか1つに記載のフィルタ装置と、を備え、前記フィルタ制御情報を用いて前記画像データに前記フィルタ装置を作用させることを特徴とする画像復号装置。
この構成を備える動画像復号装置は、画像データの符号化歪みを効果的に低減することができるため、復号する画像の画質が向上する。
7.入力画像の符号化を行って符号化された画像を出力する画像符号化装置であって、前記符号化された画像から局所復号画像の画像データを生成する復号画像生成手段と、1.から5.の何れか1つに記載のフィルタ装置と、前記画像データと、該画像データに前記フィルタ装置が備えるデブロッキングフィルタ手段を作用させて得られるデブロッキングフィルタ後画像と、前記入力画像とから、前記フィルタ装置が備える適応フィルタ手段が制御に用いる適応フィルタ情報を算出する適応フィルタ情報算出手段と、を備え、前記フィルタ制御情報を用いて前記フレームメモリに格納された前記画像データに前記フィルタ装置を作用させることを特徴とする画像符号化装置。
この構成を備える動画像符号化装置は、参照画像として用いられる局所復号画像の符号化歪みを効果的に低減することができるため、高い符号化効率で圧縮を行うことができる。
8.前記フィルタ手段は、演算部#1、演算部#2を含む2つ以上の演算手段を備え、演算部#1が前記BF部におけるBF後画像生成処理を行い、演算部#2が前記適応フィルタ手段で行われる前記フィルタ入力画像に対する重み付けを行うことにより、並列でフィルタ処理を行うことを特徴とする処理手順。
この特徴を備えるフィルタ方法では、BFおよび重み付けという2つの処理を並列で実行することが可能であるため、高速な処理を行うことができる。
9.前記フィルタ手段で用いられるフィルタ制御情報であって、フィルタ手段に入力されるフィルタ入力画像を入力として、フィルタ対象画素に隣接するブロックの境界付近の画素を用いて生成されるBF画素値にかかる重み係数もしくは重み係数の予測値と、フィルタ手段に入力されるフィルタ入力画像にかかる重み係数もしくは重み係数の予測値とを含むことを特徴とするフィルタデータ構造。
この特徴を備えるフィルタデータ構造を用いることにより、BF後画像に対する重み係数と、フィルタ入力画像に対する重み係数として、その両者を同時に最適化した値を、伝送、保存することが可能になる。このためフィルタデータ構造を用いることにより、歪み低減効果の非常に高いフィルタ処理を実現することができる。
〔上記発明の効果〕
適応フィルタの参照画素として、BF処理前の画素値とBF処理後の画素値とを用いる適応フィルタによって、少ない処理量で算出可能で、かつ、少ない数の重み係数を用いてデブロッキング強度を調整することができる(デブロッキング強度調整効果)。
また、空間フィルタを備える適応フィルタを用いる場合には、さらに、ブロックノイズ低減の強さを補正する重み係数と空間フィルタの重み係数が同時に最適化されているので、より大きな符号化ノイズ低減効果が得られる。
また、このようなループフィルタを動画像復号装置および動画像符号化装置に備えることによって、動画像符号化における符号化効率が向上する。
〔本明細書に記載した発明(その2)〕
また、本明細書には、少なくとも、以下の発明が記載されている。
本発明に係るフィルタ装置は、ブロック毎に処理された画像のブロック境界に選択的に作用する境界フィルタと、上記境界フィルタの入力画像に作用する第1の線形フィルタ部と上記境界フィルタの出力画像に作用する第2の線形フィルタ部とを含む適応フィルタであって、上記第1の線形フィルタ部の出力画像と上記第2の線形フィルタ部の出力画像との和を出力する適応フィルタと、を備えている、ことを特徴とする。
本発明に係るフィルタ装置が備える適応フィルタは、境界フィルタの入力画像に作用する第1の線形フィルタ部の出力画像と、境界フィルタの出力画像に作用する第2の線形フィルタ部の出力画像とを加算して出力する。したがって、符号化効率を低下させることなく、第2の線形フィルタ部のタップ数を減らしたり、あるいは、符号化効率を低下させることなく、第1の線形フィルタ部のタップ数を減らしたりすることができる。
ここで、前者の効果、すなわち、符号化効率を低下させることなく、第2の線形フィルタ部のタップ数を減らし得ることは、符号化効率を低下させることなく、全体の演算時間を削減し得ることを意味する。すなわち、境界フィルタ、第1の線形フィルタ部、第2の線形フィルタ部におけるフィルタ演算に要する演算時間をT0、T1、T2とすると、第1の線形フィルタ部におけるフィルタ演算を境界フィルタにおけるフィルタ演算と並列的に実行可能な場合、全体のフィルタ演算に要する演算時間Tは、T=Max(T0+T2,T1)となる。したがって、第2の線形フィルタ部のタップ数を減らせば、第1の線形フィルタ部のタップ数を増やしたとしても、第1の線形フィルタ部におけるフィルタ演算に要する演算時間T1が、境界フィルタにおけるフィルタ演算に要する時間T0と第2のフィルタ部におけるフィルタ演算に要する時間T2との和T0+T2を下回っている限り、第2の線形フィルタ部における演算時間T2を短縮し、もって、全体の演算時間Tを短縮することができる。
なお、境界フィルタにおけるフィルタ演算は、線形フィルタにおけるフィルタ演算(積和演算)と比べて演算量が多い。境界フィルタが、デブロッキングフィルタである場合、特に、活性度やブロック境界強度などに基づいて自身のフィルタ強度を自律的に調整する機能を有するデブロッキングフィルタである場合には尚更である。このため、第1の線形フィルタ部のタップ数を増やしたとしても、第1の線形フィルタ部における演算時間T1が境界フィルタ部における演算時間T0を上回ることは稀である。すなわち、符号化効率を低下させることなく、全体の演算時間を削減し得るという効果は、第1の線形フィルタ部における演算時間T1が境界フィルタ部における演算時間T0を上回るという稀なケースを除き、一般的に成立する効果である。
本発明のフィルタ装置においては、上記第2の線形フィルタ部のタップ数が1に設定されている、ことが好ましい。
上記の構成によれば、境界フィルタの見かけ上のフィルタ強度を適応的に調整する機能を残しながら、境界フィルタにおけるフィルタ演算と適応フィルタとにおけるフィルタ演算とを並列化することによる演算時間の削減量を最大化することができる。
本発明のフィルタ装置においては、上記第1の線形フィルタ部のタップ数が2以上に設定されている、ことが好ましい。
上記の構成によれば、上記第2の線形フィルタ部が非空間的(タップ数が1)な場合であっても、上記第2の線形フィルタ部が空間的(タップ数が2以上)な場合と同様の符号化効率向上効果を得ることができる。
本発明のフィルタ装置においては、上記第1の線形フィルタ部におけるフィルタ演算と、上記境界フィルタにおけるフィルタ演算とを並列的に実行する、ことが好ましい。
上記の構成によれば、全体の演算時間が削減されたフィルタ装置が実現される。
上記適応フィルタにおいて、上記適応フィルタは、上記第2の線形フィルタ部の出力画像を出力する第1のモードと、上記第1の線形フィルタ部の出力画像と上記第2の線形フィルタ部の出力画像との和を出力する第2のモードとのうち、外部から取得したモード指定情報により指定された方のモードで動作する、ことが好ましい。
上記の構成によれば、並列化による演算時間を削減に適した第2のモードでフィルタ装置を動作させるか否かを外部から制御することができる。例えば、フィルタ装置を画像復号装置に内蔵した場合に、並列化による演算時間の削減に適した第2のモードで画像復号装置を動作させるか否かを画像符号化装置から制御することができる。
本発明のフィルタ装置においては、上記第2のモードにおいて、上記第2の線形フィルタ部のタップ数が1に設定されている、ことが好ましい。
上記の構成によれば、上記第2のモードにおいて、境界フィルタの見かけ上のフィルタ強度を適応的に調整する機能を残しながら、境界フィルタにおけるフィルタ演算と適応フィルタとにおけるフィルタ演算とを並列化することによる演算時間の削減量を最大化することができる。
本発明のフィルタ装置においては、上記第1のモードにおいて、外部から取得したタップ数指定情報により指定された値に上記第2の線形フィルタ部のタップ数が設定され、上記第2のモードにおいて、上記タップ数指定情報により指定された値に上記第1の線形フィルタ部のタップ数が設定される、ことが好ましい。
上記の構成によれば、単一のタップ数指定情報を用いて、第1のモードにおける第2の線形フィルタのタップ数と第2のモードにおける第1の線形フィルタのタップ数とを効率的に指定することができる。
本発明のフィルタ装置において、上記適応フィルタは、上記第2の線形フィルタ部において設定可能なタップ数の上限値が定められていない第1のモードと、上記第2の線形フィルタ部において設定可能なタップ数の上限値が定められている第2のモードとのうち、外部から取得したモード指定情報により指定された方のモードで動作する、ことが好ましい。
上記の構成によれば、並列化による演算時間の削減に適した第2のモードでフィルタ装置を動作させるか否かを外部から制御することができる。例えば、フィルタ装置を画像復号装置に内蔵した場合に、並列化による演算時間の削減に適した第2のモードで画像復号装置を動作させるか否かを画像符号化装置から制御することができる。
本発明のフィルタ装置においては、上記第2の線形フィルタ部において設定可能なタップ数の上限値が定められている、ことが好ましい。
上記の構成によれば、並列化による演算時間の削減に適した状態でフィルタ装置を動作させることができる。
なお、上記のフィルタ装置を備えた画像復号装置、上記のフィルタ装置を備えた画像符号化装置、及び、上記のフィルタ装置に供給されるフィルタパラメータのデータ構造も本発明の範疇に含まれる。
上記課題を解決するために、本発明のフィルタ装置は、ブロックに分割されて処理された画像をフィルタ入力画像としてフィルタ後画像を生成するフィルタ装置であって、前記フィルタ入力画像に対応する適応フィルタ情報を保存する適応フィルタ情報保存手段と、前記フィルタ入力画像から、フィルタ対象画素に隣接するブロックの境界付近の画素を用いて、フィルタ対象画素における画素値を生成するフィルタを作用させ、境界利用フィルタ画像(BF後画像)を生成する境界利用フィルタ手段(BF手段)と、前記フィルタ入力画像と前記BF後画像とから、前記適応フィルタ情報によって制御される適応フィルタ処理を行う適応フィルタ手段を備えることを特徴とする。
上記BF手段では、ブロック境界もしくはブロック境界付近の画素を選択して適応フィルタ入力用の画像を生成する。明示的に境界及びその付近の画素を参照するBF処理と適応フィルタを組み合わせることにより、シーケンスやフレームの特徴及び境界の特徴に応じたデブロック強度調整が可能になり、歪み訂正効果を増大する効果を奏する。上記のように構成されたフィルタ手段によれば、少ない符号量の適応フィルタ情報を用いて、シーケンスやフレームの特徴及び境界との位置関係に応じたデブロック強度調整が可能な効果を奏する。
上記の課題を解決するために、本発明に係るフィルタ装置は、ブロック毎に処理された画像のブロック境界に選択的に作用する境界フィルタと、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における上記境界フィルタの出力画像の各画素値を参照して算出する第1の線形フィルタ部、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における予測画像の各画素値を参照して算出する第2の線形フィルタ部、および、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における残差画像の各画素値を参照して算出する第3の線形フィルタ部を含む適応フィルタであって、上記第1から第3の線形フィルタの出力画像を加算して出力する適応フィルタと、を備えており、上記第1から第3の線形フィルタ部の少なくとも何れかについて、タップ数が1に設定されている、ことを特徴としている。
上記のように構成されたフィルタ装置によれば、上記第1から第3の線形フィルタ部の少なくとも何れかについて、タップ数が1に設定されているため、高い符号化効率を維持しつつ、処理量および処理時の少なくとも何れかを削減することができる。
また、上記の課題を解決するために、本発明に係るフィルタ装置は、ブロック毎に処理された画像のブロック境界に選択的に作用する境界フィルタと、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における上記境界フィルタの出力画像の各画素値を参照して算出する第1の線形フィルタ部、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における予測画像の各画素値を参照して算出する第2の線形フィルタ部、および、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における残差画像の各画素値を参照して算出する第3の線形フィルタ部を含む適応フィルタであって、上記第1から第3の線形フィルタの出力画像を加算して出力する適応フィルタと、
を備えており、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲の境界のうち処理順で下流側の境界の少なくとも一部が、対象画素の境界または対象画素を含むブロックの境界と重複するように設定されている、ことを特徴としている。
上記のように構成されたフィルタ装置によれば、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲の境界のうち処理順で下流側の境界の少なくとも一部が、対象画素の境界または対象画素を含むブロックの境界と重複するように設定されているので、高い符号化効率を維持しつつ、処理量および処理時間の少なくとも何れかを削減することができる。
なお、上記参照範囲の境界のうち処理順で下流側の境界とは、例えば、上記参照範囲が矩形状であり、上記処理がラスタスキャン順に行われるとした場合、当該参照範囲の境界のうち、右辺の境界および下辺の境界の少なくとも何れかの境界のことを指す。また、上記処理がラスタスキャン順の逆順に行われるとした場合、当該参照範囲の境界のうち、左辺の境界および上辺の境界の少なくとも何れかの境界のことを指す。
また、上記ブロックとは、変換ブロック、予測ブロック、マクロブロック、コーディングユニット、最大コーディングユニットと呼ばれる単位のいずれであってもよい。
また、上記フィルタ装置においては、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲が、対象画素を含む対象ブロック、該対象ブロックの周辺の復号済みブロック、および、該対象ブロックの直後に復号されるブロックより構成されている、ことが好ましい。
上記の構成によれば、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲が、対象画素を含む対象ブロック、該対象ブロックの周辺の復号済みブロック、および、該対象ブロックの直後に復号されるブロックより構成されているので、当該対象ブロックの直後に復号されるブロックに属する画素値の復号処理が終了した時点において、フィルタ処理を開始することができる。
したがって、上記の構成によれば、処理時間を削減することができる。また、フィルタ処理に伴うデータ転送量が削減されることにより、処理量も削減される。
また、上記フィルタ装置においては、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲が、対象画素を含む対象ブロック、および、該対象ブロックの周辺の復号済みブロックより構成されている、ことが好ましい。
上記の構成によれば、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲が、対象画素を含む対象ブロック、および、該対象ブロックの周辺の復号済みブロックより構成されているため、上記対象ブロックの周辺のブロックに属する画素の画素値を参照するに際して、画素値の復号が完了するまで待機することなく、画素値の参照を行うことができる。
したがって、上記の構成によれば、処理時間を削減することができる。また、フィルタ処理に伴うデータ転送量が削減されることにより、処理量も削減される。
また、上記フィルタ装置においては、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲の下辺の一部が、対象画素の下辺と重複するように設定されている、ことが好ましい。
上記の構成によれば、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲の下辺の一部が、対象画素の下辺と重複するように設定されているので、ラスタスキャン順に復号処理を行うとした場合に、対象画素の下側に位置する画素の画素値の復号処理を待つことなく、フィルタ処理を行うことができる。
したがって、上記の構成によれば、処理時間を削減することができる。また、フィルタ処理に伴うデータ転送量が削減されることにより、処理量も削減される。
また、上記フィルタ装置においては、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲の下辺の一部および右辺の一部が、それぞれ、対象画素の下辺および右辺と重複するように設定されている、ことが好ましい。
上記の構成によれば、上記第1から第3の線形フィルタ部の少なくとも何れかについて、参照範囲の下辺の一部および右辺の一部が、それぞれ、対象画素の下辺および右辺と重複するように設定されているので、ラスタスキャン順に復号処理を行うとした場合に、対象画素の下側に位置する画素の画素値、および、対象画素の右側に位置する画素の画素値の復号処理を待つことなく、フィルタ処理を行うことができる。
したがって、上記の構成によれば、処理時間を削減することができる。また、フィルタ処理に伴うデータ転送量が削減されることにより、処理量も削減される。
また、上記フィルタ装置においては、上記第1から第3の線形フィルタ部のいずれかにおけるフィルタ演算と、上記境界フィルタにおけるフィルタ演算とを並列的に実行する、ことが好ましい。
上記の構成によれば、上記第1から第3の線形フィルタ部のいずれかにおけるフィルタ演算と、上記境界フィルタにおけるフィルタ演算とを並列的に実行することにより、処理時間をさらに削減することができる。
また、上記フィルタ装置においては、上記適応フィルタは、上記第1から第3の線形フィルタ部の少なくとも何れかのタップ数を、外部から取得したタップ数指定情報によって指定される値に設定する、ことが好ましい。
上記の構成によれば、上記第1から第3の線形フィルタ部の少なくとも何れかのタップ数を、外部から取得したタップ数指定情報によって効率的に指定することができる。
また、上記フィルタ装置においては、上記適応フィルタは、上記第1から第3の線形フィルタ部の少なくとも何れかの参照範囲を、外部から取得したモード指定情報によって指定されるものに設定する、ことが好ましい。
上記の構成によれば、上記第1から第3の線形フィルタ部の少なくとも何れかの参照範囲を、外部から取得したモード指定情報によって効率的に指定することができる。
また、上記フィルタ装置においては、上記境界フィルタは、上記境界におけるブロックノイズを低減するためのデブロッキングフィルタである、ことが好ましい。
上記の構成によれば、境界フィルタが、上記境界におけるブロックノイズを低減させることにより、予測精度および符号化効率が向上する。
また、上記フィルタ装置を備えた画像復号装置であって、上記フィルタ装置を、復号画像を生成するために用いられる各画像に作用させる画像復号装置、および、上記フィルタ装置を備えた画像符号化装置であって、上記フィルタ装置を、局所復号画像を生成するために用いられる各画像に作用させる画像符号化装置も本発明の範疇に含まれる。
また、フィルタパラメータについての以下のデータ構造も本発明の範疇に含まれる。
すなわち、境界フィルタと適応フィルタとを備えたフィルタ装置に供給されるフィルタパラメータのデータ構造において、ブロック毎に処理された画像のブロック境界に選択的に作用する境界フィルタのフィルタ係数と、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における上記境界フィルタの出力画像の各画素値を参照して算出する第1の線形フィルタ部のフィルタ係数と、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における予測画像の各画素値を参照して算出する第2の線形フィルタ部のフィルタ係数と、および、出力画像における各対象画素の画素値を、該対象画素の位置に応じて定まる参照範囲における残差画像の各画素値を参照して算出する第3の線形フィルタ部のフィルタ係数と、を含んでいることを特徴とするフィルタパラメータのデータ構造も本発明の範疇に含まれる。
〔付記事項1〕
上記実施形態における、マクロブロックは、H.264/MPEG−4 AVCの後継規格として提案されているHEVC(High Efficiency Video Coding)のLCU(最大コーディングユニット:Largest Coding Unit、コーディングツリー(Coding Tree)のrootと呼ばれることもある)に相当し、マクロブロックおよびブロックは、HEVCのCU(コーディングユニット:Coding Unit、コーディングツリーのleafと呼ばれることもある)、PU(Prediction Unit)、またはTU(Transformation Unit)に相当するものである。また、LCUは、ツリーブロックと呼ばれることもある。
〔付記事項2〕
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も特許請求の範囲に含まれる。