図面を参照して、実施形態に係る符号化装置及び復号装置について説明する。実施形態に係る符号化装置及び復号装置は、MPEGに代表される動画像の符号化及び復号をそれぞれ行う。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
<符号化装置の構成>
まず、本実施形態に係る符号化装置の構成について説明する。図1は、本実施形態に係る符号化装置1の構成を示す図である。符号化装置1は、スライス単位の画像を分割したブロック単位で符号化を行う装置である。
図1に示すように、符号化装置1は、ブロック分割部100と、転換部110と、減算部120と、変換・量子化部130と、エントロピー符号化部140と、逆量子化・逆変換部150と、合成部160と、逆転換部170と、デブロッキングフィルタ180と、フィルタ制御部181と、メモリ185と、予測部190とを有する。
ブロック分割部100は、動画像を構成するフレーム(或いはピクチャ)単位の入力画像を複数の画像ブロックに分割し、分割された画像ブロックを転換部110に出力する。画像ブロックのサイズは、例えば32×32画素、16×16画素、8×8画素、又は4×4画素等である。画像ブロックの形状は正方形に限らず矩形(非正方形)であってもよい。画像ブロックは、符号化装置1が符号化を行う単位(符号化対象ブロック)であり、且つ復号装置が復号を行う単位(復号対象ブロック)である。このような画像ブロックはCU(Coding Unit)と呼ばれることがある。
ブロック分割部100は、輝度信号と色差信号とに対してブロック分割を行う。以下において、ブロック分割の形状が輝度信号と色差信号とで同じである場合について主として説明するが、輝度信号と色差信号とで分割を独立に制御可能であってもよい。輝度ブロック及び色差ブロックを特に区別しないときは単に符号化対象ブロックと呼ぶ。
転換部110は、ブロック分割部100から出力される符号化対象ブロック内の各画素値を転換テーブルに基づいて転換処理をすることで転換された新たな符号化対象ブロックを生成し、転換後の新たな符号化対象ブロックを減算部120に出力する。
図2は、本実施形態に係る転換処理における入力画素値と出力画素値との関係を表すグラフである。図2において、横軸は入力信号の値であり、縦軸は出力信号の値である。
図2に示すように、転換テーブルは、1つ又は複数のスライスに対して設定されるテーブルであって、転換処理前の入力信号と転換処理後の出力信号との関係を表すための係数テーブルである。具体的には、転換テーブルには、転換前の入力信号(転換対象の画素値)が取りうる最小値から最大値までを予め規定する数(N)に分割した各バンドに対して、割り当てる変換後の出力信号の画素値の数を示す値が格納されている。
例えば、10bitの画像信号の転換処理においてバンドの数Nを16とした場合を例に転換テーブルについて説明する。転換前の入力信号が取りうる最小値0から最大値1023までを、等分割した各バンドに対応する入力信号として割り当てる。例えば1番目のバンドは入力画素値0乃至63に対応する。また、2番目のバンドは入力画素値の64乃至127に対応する。同様にして16番目のバンドまで入力信号が割り当たてられている。
なお、各バンドは転換テーブルの各係数の位置に対応する。転換テーブルに格納される係数は各バンドに割り当てられている出力画素値の数を意味する。例えば転換テーブルlmcsCWがlmcsCW={39,40,55,70,80,90,97,97,104,83,57,55,49,44,34,30}である場合、1番目のバンドに対応する出力画素値は0乃至38であり、2番目のバンドに対応する出力画素値は39乃至78である。3番目から16番目のバンドについても同様に割り当てられる。
転換テーブル内のあるバンドに対応する値が大きい場合、当該バンドに割り当てられる出力画素値の数が多くなり、逆に小さい場合には、当該バンドに割り当てられる出力画素値の数が少なくなる。このため、転換テーブルによる転換処理が行われた転換後の信号領域に対して量子化処理を行い、再び逆転換により元の信号領域に戻す場合には、転換処理に用いる転換テーブルの値が異なると、同一の量子化処理を行ったとしても量子化誤差の量が異なる。
具体的には、転換テーブルの値が32である場合には、あるバンドの入力画素値64個分の画素値が出力画素値32個分の画素値で表現されるよう転換されることを意味する。符号化装置1で当該出力信号に対する量子化処理が適用され、量子化誤差が生じる場合、復号装置2(図8参照)では、生じた量子化誤差を含めて前記転換処理に対応する逆転換処理が適用される。この際、当該バンドにおける転換テーブルの値が32であり、逆転換処理では、逆転換処理に対する入力画素値32個分が出力画素値64個分の画素値で表現されるよう逆転換される。即ち、復号装置2では、当該バンドに該当する信号に生じた量子化誤差が2倍になって出力されることを意味する。
即ち、画像に対して同一の量子化パラメータを適用する場合にも、転換テーブルの値が小さい領域については量子化誤差が大きくなり、逆に転換テーブルの値が大きい領域については量子化誤差が小さくなる。
転換テーブルは、1つ又は複数のスライスの原画像の輝度信号の値の出現頻度に応じて符号化装置で設定してもよいし、予めシステムで規定した複数の転換テーブルの中から符号化装置で選択してもよいし、予めシステムで規定した転換テーブルを用いてもよい。なお、転換テーブルは、転換後の出力信号が取りうる最小値から最大値までを予め規定する数に分割した各バンドに対して、割り当てる変換前の入力信号の画素値の数を示す値が格納されていてもよいし、転換テーブル内の値を量子化して保持してもよく、転換前後の入力信号と出力信号との関係を示していれば上記の例には限らない。
また、符号化装置1で輝度信号の値の出現頻度に応じて転換テーブルを設定した場合や複数の転換テーブルの中から選択した場合には、なんらかの手段で復号装置2に転換テーブルの情報を伝送する。例えば、テーブルの値の情報をエントロピー符号化し、ストリーム出力してもよい。また、映像のフォーマット情報(例えば映像信号における光信号と電気信号との関係を表すパラメータなど)を基に符号化装置1と復号装置2とで予め用意された転換テーブルを切り替えて用いてもよい。
図3は、本実施形態に係る転換部110の構成を示す図である。図3に示すように、転換部110は、パラメータ導出部111と、マッピング部112と、スケーリング部113とを有する。
パラメータ導出部111は、ブロック分割部100から出力される符号化対象ブロックの輝度信号に対して適用するマッピング処理に用いるルックアップテーブルの構成要素であるマッピングスケールテーブル及びマッピングオフセットテーブルと、逆マッピングスケールテーブルとを転換テーブルに基づいて算出し、マッピングスケールテーブル及びマッピングオフセットテーブルをマッピング部112に出力し、マッピングオフセットテーブル及び逆マッピングスケールテーブルを逆転換部170に出力する。
さらに、パラメータ導出部111は、算出した逆マッピングスケールテーブルを用いて、スケーリング部113における符号化対象ブロックの色差信号に対して適用するスケーリング処理に用いるスケーリング係数テーブルを算出し、算出したスケーリング係数テーブルをスケーリング部113に出力する。
パラメータ導出部111の動作について詳細を説明する。分割数Nの転換テーブルをlmcsCWとするとき、パラメータ導出部111は、マッピングオフセットテーブルLmcsPivot、マッピングスケールテーブルScaleCoeff、及び逆マッピングスケールテーブルInvScaleCoeffを次の式(1)により算出する。
LmcsPivot[0] = 0
for (i=0; i<=N-1; i++){
LmcsPivot[i+1] = LmcsPivot[i]+lmcsCW[i]
ScaleCoeff[i] = (lmcsCW[i]*(1<<11)+(1<<(Log2(64)-1)))>>(Log2(64))
if (lmcsCW[i] == 0)
InvScaleCoeff[i] = 0
else
InvScaleCoeff[i]=64*(1<<11)/lmcsCW[i]
}
・・・(1)
但し、「x<<n」はxをn桁左シフトする左シフト演算子であり、「x>>n」はxをn桁右シフトする右シフト演算子であり、「Log2(x)」は2を底としたxの対数を求める演算子である。
さらに、パラメータ導出部111は、スケーリング係数テーブルChromaScaleCoeffを次の式(2)により算出する。
for (i=0;i<=15;i++){
if (lmcwCW[i]==0)
ChromaScaleCoeff[i]=(1<<11)
else
ChromaScaleCoeff[i]=InvScaleCoeff[i]
}
・・・(2)
マッピング部112は、ブロック分割部100から出力される符号化対象ブロックの輝度信号に対して、パラメータ導出部111から出力されたマッピングスケールテーブル及びマッピングオフセットテーブルを用いてマッピング処理を行い、生成されたマッピング処理後の符号化対象ブロックの輝度信号を減算部120に出力する。
具体的には、符号化対象ブロック内の輝度信号をSamplesY[i][j]とするとき、マッピング部112は、マッピングスケールテーブルScaleCoeff及びマッピングオフセットテーブルLmcsPivotを用いて、マッピング処理後の符号化対象ブロック内の輝度信号MapSamples[i][j]を次の式(3)により算出する。
idxY=SamplesY[i][j]>>Log2(64)
MapSamples[i][j]=LmcsPivot[idxY]+(ScaleCoeff[idxY]*(SamplesY[i][j]-idxY*64)+(1<<10))>>11
・・・(3)
但し、i=0…Wy−1,j=0…Hy−1は符号化対象ブロック内の輝度信号の座標であり、Wy及びHyは符号化対象ブロックの輝度信号の幅及び高さをそれぞれ表す。
スケーリング部113は、ブロック分割部100から出力される符号化対象ブロックの色差信号に対して、パラメータ導出部111から出力されたスケーリング係数テーブルを用いてスケーリング処理を行い、生成されたスケーリング処理後の符号化対象ブロックの色差信号を減算部120に出力する。
具体的には、符号化対象ブロック内の色差信号をSamplesC[i][j]、符号化対象ブロックに隣接する復号済み輝度信号の平均値をYiとするとき、スケーリング部113は、スケーリング係数テーブルChromaScaleCoeffを用いて、スケーリング処理後の符号化対象ブロック内の色差信号ScaleSamples[i][j]を次の式(4)により算出する。
idxYInv = Yi>>Log2(64)
ScaleSamples[i][j]=sign(SampleC[i][j])*((abs(SamplesC[i][j])<<11)+(ChromaScaleCoeff[idxYInv]>>1))/ChromaScaleCoeff[idxYInv]
・・・(4)
但し、i=0…Wc−1,j=0…Hc−1は符号化対象ブロック内の色差信号の座標であり、Wc及びHcは符号化対象ブロックの色差信号の幅及び高さをそれぞれ表す。また、「sign(x)」は変数xの符号に応じて−1,0,1のいずれかの値を返す符号関数であり、「abs(x)」は変数xの絶対値を返す演算子である。
このようにして、転換部110は、マッピング部112が算出したマッピング後の符号化対象ブロックの輝度信号と、スケーリング部113の算出したスケーリング後の符号化対象ブロックの色差信号とにより構成される転換後の新たな符号化対象ブロックを減算部120に出力する。
減算部120は、転換部110から出力される転換後の新たな符号化対象ブロックと、この新たな符号化対象ブロックを予測部190が予測した予測ブロックとの差分(誤差)を表す予測残差を算出する。減算部120は、ブロックの各画素値から予測ブロックの各画素値を減算することにより予測残差を算出し、算出した予測残差を変換・量子化部130に出力する。
変換・量子化部130は、ブロック単位で変換処理及び量子化処理を行う。変換・量子化部130は、変換部131と、量子化部132とを有する。
変換部131は、減算部120から出力される予測残差に対して変換処理を行って周波数成分ごとの変換係数を算出し、算出した変換係数を量子化部132に出力する。変換処理(変換)とは、画素領域の信号を周波数領域の信号に変換する処理をいい、例えば、離散コサイン変換(DCT)や離散サイン変換(DST)、カルーネンレーブ変換(KLT)、及びそれらを整数化した変換等をいう。また、変換処理には画素領域の信号を周波数領域の信号に変換することなくスケーリング等により調整する変換スキップを含んでもよい。
量子化部132は、変換部131から出力される変換係数を量子化パラメータ及び量子化行列を用いて量子化し、量子化した変換係数をエントロピー符号化部140及び逆量子化・逆変換部150に出力する。また、量子化部132は、量子化処理に関する情報(具体的には、量子化処理で用いた量子化パラメータ及び量子化行列の情報)を、エントロピー符号化部140、逆量子化部151、及びフィルタ制御部181に出力する。
ここで、量子化パラメータは、1つのブロックに対して1つの値が設定されるパラメータである。具体的には、量子化パラメータは、ブロック内の各変換係数に対して共通して適用されるパラメータであって、量子化の粗さ(ステップサイズ)を定めるパラメータである。
量子化行列は、1つのブロック内の成分ごとに設定される値からなる行列である。具体的には、量子化行列は、ブロックサイズに応じてi×j要素の成分ごとに設定される値(重み付け係数)からなる行列であって、変換係数の低周波から高周波にわたる成分ごとに量子化の粗さを調整するために用いられる。
図4は、量子化行列の一例を示す図である。図4において、i×j=4×4である一例を示している。図4に示す例では、量子化行列は、水平方向、垂直方向の次数がそれぞれ大きくなるほど、大きな値を有する。このような量子化行列では、より右下に配列された要素に係る変換係数、つまり高域の変換係数ほど低い精度で量子化される。そのため、低域ほど濃淡や色相の空間的変化に鋭敏であるという人間の視覚特性を活用し、主観的な画質を劣化させずに量子化によって高域での情報量を低減することが許容される。
なお、量子化行列は、符号化対象ブロックの予測モード(イントラ予測、インター予測の別)、ブロックサイズ(例えば、2x2、4x4、8x8、16x16、32x32、64x64)、及び1つの輝度・2つの色差信号(RGB信号の場合は、R信号、B信号、G信号)のそれぞれの組み合わせについて設定可能である。
エントロピー符号化部140は、量子化部132から出力される変換係数に対してエントロピー符号化を行い、データ圧縮を行って符号化ストリーム(ビットストリーム)を生成し、符号化ストリームを符号化装置1の外部に出力する。エントロピー符号化には、ハフマン符号やCABAC(Context−based Adaptive Binary Arithmetic Coding;コンテキスト適応型2値算術符号)等を用いることができる。
また、エントロピー符号化部140は、ブロック分割部100から各符号化対象ブロックのサイズ・形状等の情報を取得し、量子化部132から量子化処理に関する情報を取得し、予測部190から予測に関する情報(例えば、予測モードや動きベクトルの情報)を取得し、これらの情報の符号化も行う。
逆量子化・逆変換部150は、ブロック単位で逆量子化処理及び逆変換処理を行う。逆量子化・逆変換部150は、逆量子化部151と、逆変換部152とを有する。
逆量子化部151は、量子化部132が行う量子化処理に対応する逆量子化処理を行う。具体的には、逆量子化部151は、量子化部132から出力される変換係数を、量子化パラメータ及び量子化行列を用いて逆量子化することにより変換係数を復元し、復元した変換係数を逆変換部152に出力する。
逆変換部152は、変換部131が行う変換処理に対応する逆変換処理を行う。例えば、変換部131がDCTを行った場合には、逆変換部152は逆DCTを行う。逆変換部152は、逆量子化部151から出力される変換係数に対して逆変換処理を行って予測残差を復元し、復元した予測残差である復元予測残差を合成部160に出力する。
合成部160は、逆変換部152から出力される復元予測残差を、予測部190から出力される予測ブロックと画素単位で合成する。合成部160は、復元予測残差の各画素値と予測ブロックの各画素値を加算して合成ブロックを算出し、算出した合成ブロックを逆転換部170に出力する。
逆転換部170は、転換部110の転換処理に対応する逆転換処理を行う。具体的には、逆転換部170は、合成部160から出力される合成ブロック内の各画素値に対して、転換テーブルに基づいて、転換部110における転換処理に対応する逆転換処理をすることで符号化対象ブロックを復元(復号)し、復元したブロック単位の復号画像(復元ブロック)をデブロッキングフィルタ180に出力する。
図5は、本実施形態に係る逆転換部170の構成を示す図である。図5に示すように、逆転換部170は、逆マッピング部171と、逆スケーリング部172とを有する。
逆マッピング部171は、合成部160から出力される合成ブロックの輝度信号に対して、パラメータ導出部111から出力されたマッピングスケールテーブル及びマッピングオフセットテーブルを用いて逆マッピング処理を行い、符号化対象ブロックの輝度信号を復元し、復元した符号化対象ブロックの輝度信号をデブロッキングフィルタ180に出力する。
具体的には、合成ブロック内の輝度信号をMapSampleY’[i][j]とするとき、逆マッピング部171は、逆マッピングスケールテーブルInvScaleCoeff及びマッピングオフセットテーブルLmcsPivotを用いて、逆マッピング処理後の復元した符号化対象ブロック内の輝度信号RecSmaplesY[i][j]を次の式(5)により算出する。
for (idxYInv = 0; idxYInv<=15;idxYInv++){
if (MapSampleY’[i][j] < LmcsPivot[idxYInv+1])
break
}
idxYInv = Min(idxYInv, 15)
RecSamplesY[i][j]=idxYInv*64+(InvScaleCoeff[idxYInv]*(MapSampleY’[i][j]-LmcsPivot[idxYInv])+(1<<10))>>11
・・・(5)
但し、i=0…Wy−1,j=0…Hy−1は符号化対象ブロック内の輝度信号の座標であり、Wy及びHyは符号化対象ブロックの輝度信号の幅及び高さである。また、「Min(x,y)」はx及びyのうち小さい方を返す演算子である。
逆スケーリング部172は、合成部160から出力される合成ブロックの色差信号に対して、パラメータ導出部111から出力されたスケーリング係数テーブルを用いて逆スケーリング処理を行い、符号化対象ブロックの色差信号を復元し、復元した符号化対象ブロックの色差信号をデブロッキングフィルタ180に出力する。
具体的には、合成ブロック内の色差信号をScaleSamplesC[i][j]、合成ブロックに隣接する復号済み輝度信号の平均値をYiとするとき、逆スケーリング部172は、スケーリング係数テーブルChromaScaleCoeffを用いて、逆スケーリング処理後の復元された符号化対象ブロックの色差信号RecSampleC[i][j]を次の式(6)により算出する。
idxYInv = Yi>>Log2(64)
RecSamplesC[i][j]=sign(ScaleSamplesC[i][j])*(abs(ScaleSamplesC[i][j])*ChromaScaleCoeff[idxYInv]+(1<<10))>>11
・・・(6)
但し、i=0…Wc−1,j=0…Hc−1は符号化対象ブロック内の色差信号の座標であり、Wc及びHcは符号化対象ブロックの色差信号の幅及び高さをそれぞれ表す。
このようにして、逆転換部170は、逆マッピング部171が復元した符号化対象ブロックの輝度信号と、逆スケーリング部172が復元した符号化対象ブロックの色差信号とにより構成される復元後の符号化対象ブロックをデブロッキングフィルタ180に出力する。
デブロッキングフィルタ180は、復元ブロックと当該復元ブロックに隣接する隣接ブロックとからなる2つのブロックのブロック境界に対するフィルタ処理を行い、フィルタ処理後の復元ブロックをメモリ185に出力する。フィルタ処理は、ブロック単位の処理に起因する信号劣化を軽減するための処理であって、隣り合う2つのブロックのブロック境界における信号のギャップを平滑化するフィルタ処理である。デブロッキングフィルタ180は、一般的に信号の変動を緩やかにするローパスフィルタとして構成されている。
図6は、本実施形態に係るデブロッキングフィルタ180の動作例を示す図である。図6に示す例では、デブロッキングフィルタ180は、8×8画素のブロックごとのブロック境界を対象としてフィルタ処理を行う。また、デブロッキングフィルタ180は、4行又は4列を単位としてフィルタ処理を行う。図6に示すブロックP及びQでは、デブロッキングフィルタ180のフィルタ処理の1単位であり、ブロックサイズが4×4画素である一例を示している。ブロックP及びQのそれぞれは、サブブロックと呼ばれてもよい。デブロッキングフィルタ180の動作の詳細については後述する。
フィルタ制御部181は、デブロッキングフィルタ180を制御する。具体的には、フィルタ制御部181は、対象ブロック対のブロック境界に対するフィルタ処理を行うか否かを示す境界強度(Bs:Boundary strength)、及びデブロッキングフィルタ180のフィルタ強度を制御する。境界強度Bsとは、フィルタ処理を適用するか否か、及びそのフィルタ処理の種類を決定するためのパラメータをいう。なお、フィルタ処理を行うか否かの制御は、境界強度Bsを1以上とするか又はゼロとするかの制御とみなすことができる。
フィルタ制御部181は、対象ブロック対の境界近傍領域における画素値の変動や、予測モード、量子化パラメータ、動き補償予測(インター予測)に用いる動きベクトルの値に基づいて、デブロッキングフィルタ180を制御する。
詳細については後述するが、本実施形態に係るフィルタ制御部181は、量子化部132における量子化処理及び逆量子化部151における逆変換処理に用いた量子化パラメータと、転換部110における転換処理及び逆転換部170における逆転換処理に用いた転換テーブルとに基づいて、デブロッキングフィルタ180のフィルタ強度を制御する。
このように、ブロック単位で設定される一意のパラメータである量子化パラメータだけではなく、転換テーブルも考慮してデブロッキングフィルタのフィルタ強度を制御することにより、転換処理及び逆転換処理に起因するブロックノイズの発生に対してデブロッキングフィルタ180のフィルタ強度を制御可能になり、デブロッキングフィルタ180によるブロック歪みの低減効果を向上させることができる。
メモリ185は、デブロッキングフィルタ180から出力される復元ブロックをフレーム単位で復号画像として蓄積する。メモリ185は、記憶している復号画像を予測部190(インター予測部191)に出力する。
予測部190は、ブロック単位で予測処理を行うことにより、符号化対象ブロックに対応する予測ブロックを生成し、生成した予測ブロックを減算部120及び合成部160に出力する。予測部190は、インター予測部191と、予測転換部192と、イントラ予測部193と、切替部194とを有する。
インター予測部191は、メモリ185に記憶された復号画像を参照画像として用いて、ブロックマッチング等の手法により動きベクトルを算出し、符号化対象ブロックを予測してインター予測ブロックを生成する。インター予測部191は、複数の参照画像を用いるインター予測(典型的には、双予測)や、1つの参照画像を用いるインター予測(片方向予測)の中から最適なインター予測方法を選択し、選択したインター予測方法を用いてインター予測を行う。インター予測部191は、インター予測に関する情報(動きベクトル等)をエントロピー符号化部140及びフィルタ制御部181に出力する。
インター予測部191は、輝度信号については、インター予測ブロックを予測転換部192に出力する。一方、色差信号については、インター予測部191は、予測転換部192をスキップしてインター予測ブロックを切替部194に出力する。
予測転換部192は、転換部110と同様の転換処理(具体的には、マッピング部112のマッピング処理)を行うことにより、新たなインター予測ブロックを生成する。予測転換部192は、インター予測ブロック内の輝度信号に対して転換テーブルに基づいたマッピング処理を行って新たなインター予測ブロックを生成し、新たなインター予測ブロックを切替部194に出力する。
イントラ予測部193は、複数のイントラ予測モードの中から、符号化対象ブロックに適用する最適なイントラ予測モードを選択し、選択したイントラ予測モードを用いて符号化対象ブロックを予測する。具体的には、イントラ予測部193は、合成部160から出力される合成ブロックのうち、符号化対象ブロックに隣接する合成ブロックの画素値を参照してイントラ予測ブロックを生成し、生成したイントラ予測ブロックを切替部194に出力する。また、イントラ予測部193は、選択したイントラ予測モードに関する情報をエントロピー符号化部140及びフィルタ制御部181に出力する。
切替部194は、予測転換部192(又はインター予測部191)から出力されるインター予測ブロックとイントラ予測部193から出力されるイントラ予測ブロックとを切り替えて、いずれかの予測ブロックを減算部120及び合成部160に出力する。
このように、本実施形態に係る符号化装置1は、符号化対象ブロックに対する転換処理を行い新たな符号化対象ブロックを生成する転換部110と前記新たな符号化対象ブロックを予測により生成された予測ブロックとの差を表す予測残差に対して変換処理及び量子化処理を行う変換・量子化部130と、変換・量子化部で生成された変換係数に対して逆量子化処理及び逆変換処理を行って予測残差を復元する逆量子化・逆変換部150と、復元した予測残差と予測ブロックとを合成して合成ブロックを生成する合成部160と、合成ブロックに対する逆転換処理を行うことで符号化対象ブロックを復元する逆転換部と、復元した符号化対象ブロックと当該符号化対象ブロックに隣接する隣接ブロックとの境界に対するフィルタ処理を行うデブロッキングフィルタ180と、量子化処理及び逆量子化処理で用いた量子化パラメータと転換処理及び逆転換処理で用いた転換テーブルとに基づいて、デブロッキングフィルタ180のフィルタ強度を制御するフィルタ制御部181とを有する。
次に、本実施形態に係るフィルタ制御部181の構成について説明する。本実施形態に係るフィルタ制御部181は、符号化対象ブロックに対する量子化処理及び逆量子化処理で用いた量子化パラメータと、隣接ブロックに対する量子化処理及び逆量子化処理で用いた量子化パラメータと、符号化対象ブロック及び隣接ブロックに対する転換処理及び逆転換処理で用いた転換テーブルと、符号化対象ブロックの画素値及び隣接ブロックの画素値とに基づいて、デブロッキングフィルタ180のフィルタ強度を制御する。以下において、符号化対象ブロック又はそのサブブロックがブロックPであり、隣接ブロック又はそのサブブロックがブロックQであるものとする。
図7は、本実施形態に係るフィルタ制御部181の構成を示す図である。図7に示すように、本実施形態に係るフィルタ制御部181は、境界強度決定部181aと、代表値導出部181bと、オフセット算出部181cと、閾値導出部181dと、フィルタ強度制御部181eとを有する。
境界強度決定部181aは、例えば下記の表1に基づいて境界強度Bsを決定し、決定した境界強度Bsの値を閾値導出部181d及びフィルタ強度制御部181eに出力する。本実施形態では、境界強度Bsの値は0,1,2のいずれかとする。なお、輝度信号と色差信号のブロックに対する境界強度をそれぞれ算出してもよいし、輝度信号と色差信号のブロックの境界強度の組み合わせを一つの境界強度として判定してもよい。
表1に示すように、境界強度決定部181aは、ブロックP及びQの少なくとも一方にイントラ予測が適用されている場合、Bsの値を2とする。
一方、境界強度決定部181aは、ブロックP及びQの両方にインター予測が適用されており、且つ少なくとも以下の(a)乃至(d)の中の1つの条件を満たす場合には、Bs値を1とし、その他の場合には、Bs値を0とする。
(a)ブロックP及びQの少なくとも一方が有意な変換係数(即ち、非ゼロ変換係数)を含むこと。
(b)ブロックP及びQの動きベクトルの数又は参照画像が異なること。
(c)ブロックP及びQの動きベクトルの差の絶対値が閾値(例えば1画素)以上であること。
境界強度決定部181aは、決定した境界強度Bsの値が0の場合、ブロックP及びQの境界に対するフィルタ処理を行わないようデブロッキングフィルタ180を制御する。
代表値導出部181bは、ブロックP及びブロックQのぞれぞれの輝度信号に基づいて輝度信号の代表値ypqを導出し、導出した代表値ypqをオフセット算出部181cに出力する。
代表値導出部181bが導出する代表値ypqとしては、次の1)もしくは2)のいずれかとする。
1)代表値ypqは、ブロックP及びブロックQのそれぞれの輝度信号の平均値である。
具体的には、代表導出部181bは、次の式(7)に示すようにブロックP及びブロックQの平均値を代表値ypqとする。
ypq=(ΣYp[i][j]+ΣYq[s][t])/(Wp*Hp+Wq*Hq)
・・・(7)
但し、Yp及びYqはブロックP及びブロックQに含まれる輝度信号をそれぞれ表し、i=0…Hp−1,j=0…Wp−1はブロックP内の座標であり、s=0…Hq−1,t=0…Wq−1はブロックQ内の座標であり、Wp及びWqはブロックP及びブロックQの幅をそれぞれ表し、Hp及びHqはブロックP及びブロックQの高さをそれぞれ表す。
2)代表値ypqは、ブロックP及びブロックQのそれぞれの輝度信号におけるブロック境界付近の平均値である。
具体的には、代表導出部181bは、ブロックP及びブロックQのブロック境界の平均値を代表値ypqとする。例えばブロックP及びブロックQが水平に隣り合う場合(即ち、ブロックPとブロックQとの間に位置する垂直方向のブロック境界に対するデブロッキング処理を行う場合)には、次の式(8)に示すように、ブロックP及びブロックQの前記ブロック境界に位置する輝度画素値の平均値を代表値ypqとする。
ypq=(Yp[0][Wp-1]+Yp[Hp-1][Wp-1]+Yq[0][0]+Yq[Hq-1][0])>>2
・・・(8)
同様に、ブロックP及びブロックQが垂直に隣り合う場合(即ちブロックPとブロックQとの間に位置する水平方向のブロック境界に対するデブロッキング処理を行う場合)には、次の式(9)に示すようにブロックP及びブロックQの前記ブロック境界に位置する輝度画素値の平均値を代表値ypqとする。
ypq=(Yp[Hp-1][0]+Yp[Hp-1][Wp-1]+Yq[0][0]+Yq[0][Wq-1])>>2
・・・(9)
オフセット算出部181cは、代表値導出部181bが導出した代表値ypqと、ブロックP及びブロックQに対する転換処理及び逆転換処理で用いた転換テーブルとに基づいて、オフセット値を算出する。
具体的には、オフセット算出部181cは、代表値ypqを用いて、ブロックPとブロックQとの境界に適用するデブロッキングフィルタの制御のためのオフセット値QpOffsetを算出し、算出したオフセット値QpOffsetを閾値導出部181dに出力する。例えば、オフセット算出部181cは、次の式(10)によりオフセット値QpOffsetを算出する。
QpOffset=log2(lmcsCW[ypq>>6]/64)×6
・・・(10)
なお、オフセット算出部181cでは、ハードウェアでの実装などにおいては、除算やlog2関数の処理の代わりに、ルックアップテーブルを用いて式(4)及び式(5)を実装してもよい。
閾値導出部181dは、ブロックPに対する量子化処理及び逆量子化処理で用いた量子化パラメータQpPと、ブロックQに対する量子化処理及び逆量子化処理で用いた量子化パラメータQpQと、オフセット算出部181cが算出したオフセット値QpOffsetとに基づいて、デブロッキングフィルタ180のフィルタ強度を制御するための閾値β及びtCを導出し、導出した閾値β及びtCをフィルタ強度制御部181eに出力する。
第1に、閾値導出部181dは、例えば次の式(11)により変数qPを算出する。
qP=((QpQ+QpP +1)>>1+QpOffset)
・・・(11)
式(11)は、基本的には、ブロックPの量子化パラメータQpPと、ブロックQの量子化パラメータQpQとの平均を求める計算式であるが、この計算式において転換テーブルに基づくオフセット値QpOffsetが導入されている。なお、式(11)の計算式は一例に過ぎないものであって、オフセット値QpOffsetが反映されたものであれば他の計算式を用いてもよい。
第2に、閾値導出部181dは、例えば次の式(12)により、閾値βを導出するためのQを算出する。
Q=Clip3(0,63,qP+(slice_beta_offset_div2<<1))
・・・(12)
但し、「Clip3(x,y,z)」は、zがxより小さければxを返し、zがyより大きければyを返し、それ以外の場合はzを返すクリップ演算子である。「slice_beta_offset_div2」は、復号装置2にシグナリングするパラメータの1つである。
また、閾値導出部181dは、例えば次の式(13)により、閾値tCを導出するためのQを算出する。
Q=Clip3(0,65,qP+2*(bS-1)+(slice_tc_offset_div2<<1))
・・・(13)
但し、「bS」は境界強度決定部181aが出力するBs値である。「slice_tc_offset_div2」は、復号装置2にシグナリングするパラメータの1つである。
第3に、閾値導出部181dは、次の表2により、それぞれ算出したQから閾値β及びtCを導出する。
フィルタ強度制御部181eは、境界強度決定部181aが出力する境界強度Bsの値と、閾値導出部181dが出力する閾値β及びtCとに基づいて、デブロッキングフィルタ180のフィルタ強度を制御する。
上述の代表値導出部181bは、ブロックP及びブロックQの前記ブロック境界に位置する輝度画素値の平均値を代表値ypqとしたが、それぞれのブロックの一部もしくは全体の平均によりブロックPの代表値yp及びブロックQの代表値yqをそれぞれ算出し、前記代表値を用いてブロックP及びブロックQに対するオフセット値を導出してもよい。
具体的には代表値導出部181bが導出する代表値yp及びyqとしては、次の1)もしくは2)のいずれかとする。
1)ブロックP及びブロックQのそれぞれの平均値を代表値yp及びyqとする。
yp=(ΣYp[i][j])/(Wp*Hp)
yq=(ΣYq[s][t])/(Wq*Hq)
・・・(14)
2)ブロックP及びブロックQのブロック境界に位置する各ブロックの輝度画素値の平均値を代表値yp及びyqとする。
yp=(Yp[0][Wp-1]+Yp[Hp-1][Wp-1]) >>1
yq=(Yq[0][0]+Yq[Hq-1][0]) >>1
・・・(15)
オフセット算出部181cは前記yp及びyqを用いてブロックP及びブロックQそれぞれに適用するオフセット値QppOffset及びQpqOffsetを下記の式により算出する。
QppOffset=log2(lmcsCW[yp>>6]/64)×6
QpqOffset=log2(lmcsCW[yq>>6]/64)×6
・・・(16)
閾値導出部181dは、ブロックPに対する量子化処理及び逆量子化処理で用いた量子化パラメータQpPと、ブロックQに対する量子化処理及び逆量子化処理で用いた量子化パラメータQpQと、オフセット算出部181cが算出したオフセット値QppOffset及びQpqOffsetとに基づいて、デブロッキングフィルタ180のフィルタ強度を制御するための閾値β及びtCを導出し、導出した閾値β及びtCをフィルタ強度制御部181eに出力する。
閾値導出部181dは、例えば次の式(17)により変数qPを算出する。
qP=(QpQ+QpP +QppOffset +QpqOffset +1)>>1
・・・(17)
上述のように算出した変数qPを用いて式(12)及び式(13)を用いて閾値βを導出するためのQを算出し、算出したQ及び表2により閾値β及びtCを導出する。
フィルタ強度制御部181eは、境界強度Bsの値が1又は2の場合には、次の式(18)を満たす場合にのみ、フィルタ処理を行うようデブロッキングフィルタ180を制御してもよい(図6参照)。
また、フィルタ強度制御部181eは、フィルタ処理を行う場合、以下の条件式(19)乃至(24)を全て満たす場合に強いフィルタを適用し、それ以外の場合に弱いフィルタを適用してもよい(図6参照)。
このように、本実施形態に係るフィルタ制御部181は、ブロック単位で設定される一意のパラメータである量子化パラメータだけではなく、転換テーブルも考慮してデブロッキングフィルタ180のフィルタ強度を制御する。これにより、転換処理及び逆転換処理に起因するブロックノイズの発生に対してデブロッキングフィルタ180のフィルタ強度を制御可能になり、デブロッキングフィルタ180によるブロック歪みの低減効果を向上させることができる。
例えば、フィルタ制御部181は、転換テーブル中の複数のバンドの中から、符号化対象ブロック及び隣接ブロックに対応するバンドを特定し、特定したバンドに対して割り当てられた転換後の画素値の数を示す値が小さいほど、デブロッキングフィルタ180のフィルタ強度が強くなるようにデブロッキングフィルタ180を制御する。
これにより、画像に対して同一の量子化パラメータを適用する場合にも、転換テーブルの値が小さい領域については量子化誤差が大きくなり、逆に転換テーブルの値が大きい領域については量子化誤差が小さくなるという性質に着目し、転換テーブルの値が小さい領域におけるブロック境界に対して強いフィルタを適用しやすくなる。
<復号装置の構成>
次に、本実施形態に係る復号装置の構成について、上述した符号化装置の構成との相違点を主として説明する。
図8は、本実施形態に係る復号装置2の構成を示す図である。復号装置2は、符号化ストリームから復号対象ブロックを復号する装置である。
図8に示すように、復号装置2は、エントロピー復号部200と、逆量子化・逆変換部210と、合成部220と、逆転換部230と、デブロッキングフィルタ240と、フィルタ制御部241と、メモリ250と、予測部260とを有する。
エントロピー復号部200は、符号化装置1により生成された符号化ストリームを復号し、各種のシグナリング情報を復号する。具体的には、エントロピー復号部200は、復号対象ブロックに適用された量子化処理に関する情報を取得し、取得した情報を逆量子化部211及びフィルタ制御部241に出力する。また、エントロピー復号部200は、復号対象ブロックに適用された予測に関する情報(例えば、予測種別情報、動きベクトル情報)を取得し、取得した情報を予測部260及びフィルタ制御部241に出力する。転換テーブルが符号化装置1から伝送される場合、エントロピー復号部200は、転換テーブルの情報を逆転換部230及びフィルタ制御部241に出力する。
また、エントロピー復号部200は、符号化ストリームを復号し、量子化された変換係数を取得し、取得した変換係数を逆量子化・逆変換部210(逆量子化部211)に出力する。
逆量子化・逆変換部210は、ブロック単位で逆量子化処理及び逆変換処理を行う。逆量子化・逆変換部210は、逆量子化部211と、逆変換部212とを有する。
逆量子化部211は、符号化装置1の量子化部132が行う量子化処理に対応する逆量子化処理を行う。逆量子化部211は、エントロピー復号部200から出力される量子化変換係数を、量子化パラメータ及び量子化行列を用いて逆量子化することにより、復号対象ブロックの変換係数を復元し、復元した変換係数を逆変換部212に出力する。
逆変換部212は、符号化装置1の変換部131が行う変換処理に対応する逆変換処理を行う。逆変換部212は、逆量子化部211から出力される変換係数に対して逆変換処理を行って予測残差を復元し、復元した予測残差(復元予測残差)を合成部220に出力する。
合成部220は、逆変換部212から出力される予測残差と、予測部260から出力される予測ブロックとを画素単位で合成することにより合成ブロックを生成し、生成した合成ブロックを逆転換部230に出力する。
逆転換部230は、符号化装置1の逆転換部170と同様な動作を行う。具体的には、逆転換部230は、合成部220から出力される合成ブロックに対して転換テーブルに基づいて逆転換処理を施すことにより、復号対象ブロックを復元(復号)し、復元ブロックをデブロッキングフィルタ240に出力する。
図9は、本実施形態に係る逆転換部230の構成を示す図である。図9に示すように、逆転換部230は、逆マッピング部231と、逆スケーリング部232とを有する。
逆マッピング部231は、合成部220から出力される合成ブロックの輝度信号に対して、マッピングスケールテーブル及びマッピングオフセットテーブルを用いて逆マッピング処理を行い、復号対象ブロックの輝度信号を復元し、復元した復号対象ブロックの輝度信号をデブロッキングフィルタ180に出力する。例えば、逆マッピング部231は、上記の式(5)により、逆マッピング処理後の復元した復号対象ブロック内の輝度信号を算出する。
逆スケーリング部232は、合成部220から出力される合成ブロックの色差信号に対して、スケーリング係数テーブルを用いて逆スケーリング処理を行い、復号対象ブロックの色差信号を復元し、復元した復号対象ブロックの色差信号をデブロッキングフィルタ180に出力する。例えば、逆スケーリング部232は、式(6)により、逆スケーリング処理後の復元された復号対象ブロックの色差信号を算出する。
デブロッキングフィルタ240は、符号化装置1のデブロッキングフィルタ180と同様な動作を行う。デブロッキングフィルタ240は、逆転換部230から出力される復元ブロックと当該復元ブロックに隣接するブロックとからなるブロック対(ブロックP及びQ)の境界に対するフィルタ処理を行い、フィルタ処理後の復元ブロックをメモリ250に出力する。
フィルタ制御部241は、エントロピー復号部200から出力される情報に基づいて、符号化装置1のフィルタ制御部181と同様な動作を行う。フィルタ制御部241は、例えば、表1に示した方法で境界強度Bsを選択し、式(7)乃至式(28)のような方法によりデブロッキングフィルタ180のフィルタ強度を制御する。
メモリ250は、デブロッキングフィルタ240から出力される復元ブロックをフレーム単位で復号画像として記憶する。メモリ250は、フレーム単位の復号画像を復号装置2の外部に出力する。
予測部260は、ブロック単位で予測を行う。予測部260は、インター予測部261と、予測転換部262と、イントラ予測部264と、切替部265とを有する。
インター予測部261は、メモリ250に記憶された復号画像を参照画像として用いて、復号対象ブロックをインター予測により予測する。インター予測部261は、エントロピー復号部200から出力される動きベクトル情報を用いてインター予測を行うことによりインター予測ブロックを生成し、生成したインター予測ブロックを予測転換部262に出力する。
予測転換部262は符号化装置1の予測転換部192と同様な動作を行う。予測転換部262は、インター予測部261から出力されるインター予測ブロックに対して転換テーブルに基づいて転換処理を行うことにより新たなインター予測ブロックを生成し、生成した新たなインター予測ブロックを切替部265に出力する。
イントラ予測部264は、エントロピー復号部200から出力される情報に基づいて、合成部220から出力される合成ブロックのうち符号化対象ブロックに隣接する合成ブロックの画素値を参照してイントラ予測ブロックを生成し、生成したイントラ予測ブロックを切替部265に出力する。
切替部265は、予測転換部262(又はインター予測部261)から出力されるインター予測ブロックとイントラ予測部264から出力されるイントラ予測ブロックとを切り替えて、いずれかの予測ブロックを合成部220に出力する。
このように、本実施形態に係る復号装置2は、符号化ストリームを復号することで、復号対象ブロックに対応する変換係数を出力するエントロピー復号部200と、エントロピー復号部200が出力する変換係数に対して逆量子化処理及び逆変換処理を行って予測残差を復元する逆量子化・逆変換部210と、復元した予測残差と復号対象ブロックを予測した予測ブロックとを合成して合成ブロックを生成する合成部220と、生成した合成ブロックに対して転換テーブルに基づいて逆転換処理を行うことにより復号対象ブロックを復元する逆転換部230と、復元した復号対象ブロックと当該復号対象ブロックに隣接する隣接ブロックとの境界に対するフィルタ処理を行うデブロッキングフィルタ240と、逆量子化処理で用いた量子化パラメータと逆転換処理で用いた転換テーブルとに基づいてデブロッキングフィルタ240のフィルタ強度を制御するフィルタ制御部241とを有する。
次に、本実施形態に係るフィルタ制御部241の構成について説明する。図10は、本実施形態に係るフィルタ制御部241の構成を示す図である。図10に示すように、本実施形態に係るフィルタ制御部241は、境界強度決定部241aと、代表値導出部241bと、オフセット算出部241cと、閾値導出部241dと、フィルタ強度制御部241eとを有する。
境界強度決定部241a、代表値導出部241b、オフセット算出部241c、閾値導出部241d、及びフィルタ強度制御部241eは、符号化装置1の境界強度決定部181a、代表値導出部181b、オフセット算出部181c、閾値導出部181d、及びフィルタ強度制御部181eとそれぞれ同様な動作を行う。
<フィルタ制御部の動作例>
次に、本実施形態に係るフィルタ制御部181及びフィルタ制御部241の動作例について説明する。フィルタ制御部181及びフィルタ制御部241は同じ動作を行うため、ここではフィルタ制御部241を例に挙げて説明する。図11は、本実施形態に係るフィルタ制御部241の動作フロー例を示す図である。
図11に示すように、ステップS1において、境界強度決定部241aは、表1に示した方法により境界強度Bsを決定し、決定した境界強度Bsの値を閾値導出部241d及びフィルタ強度制御部241eに出力する。決定された境界強度Bsの値が0である場合、ステップS2以降の処理を行わずに、ブロックP及びQの境界に対するフィルタ処理を行わない。
ステップS2において、代表値導出部241bは、ブロックP及びブロックQのそれぞれの輝度信号の代表値ypqを導出し、導出した代表値ypqをオフセット算出部241cに出力する。代表値ypqを導出する方法とては、上述した1)の方法(式(7))、又は上述した2)の方法(式(8)及び式(9))を用いる。
ステップS3において、オフセット算出部241cは、代表値導出部241bが導出した代表値ypqに基づいて、ブロックPとブロックQとの境界に対するデブロッキングフィルタ処理を制御するパラメータであるオフセット値を算出する。具体的には、オフセット算出部241cは、代表値ypqと、ブロックP及びブロックQに適用した逆転換処理に用いた転換テーブルとを用いて、上記の式(10)によりオフセット値QpOffsetを算出し、算出したオフセット値QpOffsetを閾値導出部241dに出力する。
ステップS4において、閾値導出部241dは、ブロックPに対する逆量子化処理で用いた量子化パラメータQpPと、ブロックQに対する逆量子化処理で用いた量子化パラメータQpQと、オフセット算出部241cが算出したオフセット値QpOffsetとに基づいて、上記の式(11)により変数qPを算出する。
ステップS5において、閾値導出部241dは、変数qPに基づいて、上記の式(12)及び式(13)により変数Qを算出し、算出した変数Qから表2により閾値β及びtCを導出する。
ステップS6において、フィルタ強度制御部241eは、境界強度決定部241aが出力する境界強度Bsの値と、閾値導出部241dが出力する閾値β及びtCとに基づいて、デブロッキングフィルタ240のフィルタ強度を制御する。
このように、本実施形態に係るフィルタ制御部241は、ブロック単位で設定される一意のパラメータである量子化パラメータだけではなく、逆転換処理に用いる転換テーブルも考慮してデブロッキングフィルタ240のフィルタ強度を制御する。これにより、転換処理及び逆転換処理に起因するブロックノイズの発生に対してデブロッキングフィルタ240のフィルタ強度を制御可能になり、デブロッキングフィルタ240によるブロック歪みの低減効果を向上させることができる。
例えば、フィルタ制御部241は、転換テーブル中の複数のバンドの中から、復号対象ブロック及び隣接ブロックに対応するバンドを特定し、特定したバンドに対して割り当てられた転換後の画素値の数を示す値が小さいほど、デブロッキングフィルタ180のフィルタ強度が強くなるようにデブロッキングフィルタ240を制御する。
これにより、画像に対して同一の量子化パラメータを適用する場合にも、転換テーブルの値が小さい領域については量子化誤差が大きくなり、逆に転換テーブルの値が大きい領域については量子化誤差が小さくなるという性質に着目し、転換テーブルの値が小さい領域におけるブロック境界に対して強いフィルタを適用しやすくなる。
<その他の実施形態>
上述した実施形態において、代表値導出部181b及び241bが、ブロックP及びブロックQのそれぞれの輝度信号に基づいて代表値ypqを導出する一例について説明した。しかしながら、代表値導出部181b及び241bは、ブロックPの輝度信号の代表値ypq(P)と、ブロックQの輝度信号の代表値ypq(Q)とを導出してもよい。
この場合、オフセット算出部181c及び241cは、例えば次の式(25)により、代表値ypq(P)を用いてブロックPのオフセット値QpOffsetPを算出し、代表値ypq(Q)を用いてブロックQのオフセット値QpOffsetQを算出する。
QpOffsetP=log2(lmcsCW[ypq(P)>>6]/64)×6
QpOffsetQ=log2(lmcsCW[ypq(Q)>>6]/64)×6
・・・(25)
そして、閾値導出部181d及び214dは、例えば次の式(26)により変数qPを算出する。その後の動作については、上述した実施形態と同様である。
qP=((QpQ+ QpOffsetQ+ QpOffsetP+QpP+1)>>1)
・・・(26)
符号化装置1が行う各処理をコンピュータに実行させるプログラムが提供されてもよい。復号装置2が行う各処理をコンピュータに実行させるプログラムが提供されてもよい。プログラムは、コンピュータ読取り可能媒体に記録されていてもよい。コンピュータ読取り可能媒体を用いれば、コンピュータにプログラムをインストールすることが可能である。ここで、プログラムが記録されたコンピュータ読取り可能媒体は、非一過性の記録媒体であってもよい。非一過性の記録媒体は、特に限定されるものではないが、例えば、CD−ROMやDVD−ROM等の記録媒体であってもよい。
符号化装置1が行う各処理を実行する回路を集積化し、符号化装置1を半導体集積回路(チップセット、SoC)により構成してもよい。復号装置2が行う各処理を実行する回路を集積化し、復号装置2を半導体集積回路(チップセット、SoC)により構成してもよい。
以上、図面を参照して実施形態について詳しく説明したが、具体的な構成は上述のものに限られることはなく、要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。