本実施の形態では、動画像の符号化に関し、特にピクチャを任意のサイズ、形状の矩形に分割したブロック単位で、後述するイントラ予測、インター予測、直交変換、量子化を行うことで符号化を行う。
まず、本実施の形態において使用する技術、及び技術用語を定義する。
(ツリーブロック、符号化ブロックについて)
実施の形態では、図3に示されるように、ピクチャ内を任意の同一サイズの正方の矩形の単位にて均等分割する。この単位をツリーブロックと定義し、ピクチャ内での符号化/復号対象ブロック(符号化処理においては符号化対象ブロック、復号処理においては復号対象ブロックのことである。以下、断りのない限り、この意味で用いる。)を特定するためのアドレス管理の基本単位とする。モノクロを除きツリーブロックは1つの輝度信号と2つの色差信号で構成される。ツリーブロックのサイズはピクチャサイズやピクチャ内のテクスチャに応じて、2のべき乗のサイズで自由に設定することができる。ツリーブロックはピクチャ内のテクスチャに応じて、符号化処理を最適にすべく、必要に応じてツリーブロック内の輝度信号、及び色差信号を再帰的に4分割(縦横に2分割ずつ)して、小さなサイズのブロックにすることができる。このブロックをそれぞれ符号化ブロックと定義し、符号化及び復号を行う際の処理の基本単位とする。モノクロを除き符号化ブロックも1つの輝度信号と2つの色差信号で構成される。符号化ブロックの最大サイズはツリーブロックのサイズと同一である。符号化ブロックの最小のサイズとなる符号化ブロックを最小符号化ブロックと呼び、2のべき乗のサイズで自由に設定することができる。
図3においては、符号化ブロックAは、ツリーブロックを分割せず、1つの符号化ブロックとしたものである。符号化ブロックBは、ツリーブロックを4分割してできた符号化ブロックである。符号化ブロックCは、ツリーブロックを4分割してできたブロックをさらに4分割してできた符号化ブロックである。符号化ブロックDは、ツリーブロックを4分割してできたブロックをさらに再帰的に2度4分割してできた符号化ブロックであり、最小サイズの符号化ブロックである。
実施の形態の説明においては、色差フォーマットが4:2:0で、ツリーブロックのサイズを輝度信号で64×64画素、色差信号で32×32画素と設定し、最小の符号化ブロックのサイズを輝度信号で8×8画素、色差信号で4×4画素と設定する。図3では、符号化ブロックAのサイズは輝度信号で64×64画素、色差信号で32×32画素となり、符号化ブロックBのサイズは輝度信号で32×32画素、色差信号で16×16画素となり、符号化ブロックCのサイズは輝度信号で16×16画素、色差信号で8×8画素となり、符号化ブロックDのサイズは輝度信号で8×8画素、色差信号で4×4画素となる。なお、色差フォーマットが4:4:4の場合、各符号化ブロックの輝度信号と色差信号のサイズが等しくなる。色差フォーマットが4:2:2の場合、符号化ブロックAのサイズは色差信号で32×64画素となり、符号化ブロックBのサイズは色差信号で16×32画素となり、符号化ブロックCのサイズは色差信号で8×16画素となり、最小の符号化ブロックである符号化ブロックDのサイズは色差信号で4×8画素となる。
(予測モードについて)
符号化ブロック単位で、符号化/復号済み(符号化処理においては符号化した信号を復号したピクチャ、予測ブロック、画像信号等に用い、復号処理においては復号したピクチャ、予測ブロック、画像信号等に用いる。以下、断りのない限り、この意味で用いる。)のピクチャを用いずに符号化/復号対象ピクチャ内で符号化するイントラモード(MODE_INTRA)、及び符号化/復号済みのピクチャの復号画像信号を参照してインター予測を行うことにより符号化するインターモード(MODE_INTER)を切り替える。このイントラモード(MODE_INTRA)とインターモード(MODE_INTER)を識別するモードを予測モード(PredMode)と定義する。予測モード(PredMode)はイントラモード(MODE_INTRA)、またはインターモード(MODE_INTER)を値として持ち、選択して符号化できる。
(分割モード、予測ブロック、予測ユニットについて)
ピクチャ内をブロックに分割してイントラ予測及びインター予測を行う場合、イントラ予測及びインター予測の方法を切り替える単位をより小さくするために、必要に応じて符号化ブロックを分割して予測を行う。この符号化ブロックの輝度信号と色差信号の分割方法を識別するモードを分割モード(PartMode)と定義する。さらに、この必要に応じて分割されたブロックを予測ブロックと定義する。図4に示すように、符号化ブロックの輝度信号の分割方法に応じて8種類の分割モード(PartMode)を定義する。
図4(a)に示す符号化ブロックの輝度信号を分割せず1つの予測ブロックとみなした分割モード(PartMode)を2N×2N分割(PART_2Nx2N)と定義する。図4(b)、(c)、(d)に示す符号化ブロックの輝度信号を上下に並ぶ2つの予測ブロックに分割する分割モード(PartMode)をそれぞれ2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)と定義する。ただし、2N×N分割(PART_2NxN)は上下に1:1の比率で分割した分割モードであり、2N×nU分割(PART_2NxnU)は上下に1:3の比率で分割した分割モードであり、2N×nD分割(PART_2NxnD)は上下に3:1の比率で分割した分割モードである。図4(e)、(f)、(g)に示す符号化ブロックの輝度信号を左右に並ぶ2つの予測ブロックに分割する分割モード(PartMode)をそれぞれN×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、nR×2N分割(PART_nRx2N)と定義する。ただし、N×2N分割(PART_Nx2N)は左右に1:1の比率で分割した分割モードであり、nL×2N分割(PART_nLx2N)は左右に1:3の比率で分割した分割モードであり、nR×2N分割(PART_nRx2N)は左右に3:1の比率で分割した分割モードである。図4(h)に示す符号化ブロックの輝度信号を上下左右に4分割して、4つの予測ブロックとした分割モード(PartMode)をN×N分割(PART_NxN)とそれぞれ定義する。
なお、各分割モード(PartMode)毎に輝度信号の縦横の分割比率と同様に色差信号も分割する。
予測モード(PredMode)がインターモード(MODE_INTER)では、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)、2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、及びnR×2N分割(PART_nRx2N)を定義する。最小の符号化ブロックである符号化ブロックDのみ、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)、2N×N分割(PART_2NxN)、2N×nU分割(PART_2NxnU)、2N×nD分割(PART_2NxnD)、N×2N分割(PART_Nx2N)、nL×2N分割(PART_nLx2N)、及びnR×2N分割(PART_nRx2N)に加えてN×N分割(PART_NxN)を定義する。なお、最小の符号化ブロック以外にN×N分割(PART_NxN)を定義しない理由は最小の符号化ブロック以外では、符号化ブロックを4分割して小さな符号化ブロックを表現できるからである。
予測モード(PredMode)がイントラモード(MODE_INTRA)では、最小の符号化ブロックである符号化ブロックD(本実施例は輝度信号で8×8画素)以外では、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)だけを定義し、最小の符号化ブロックである符号化ブロックDのみ、分割モード(PartMode)は2N×2N分割(PART_2Nx2N)に加えてN×N分割(PART_NxN)を定義する。なお、最小の符号化ブロック以外にN×N分割(PART_NxN)を定義しない理由は最小の符号化ブロック以外では、符号化ブロックを4分割して小さな符号化ブロックを表現できるからである。
(イントラ予測、イントラ予測モードについて)
イントラ予測では同じピクチャ内の周囲の復号済みのブロックの画素の値から処理対象ブロックの画素の値を予測する。本実施例の符号化装置及び復号装置では34通りのイントラ予測モードから選択して、イントラ予測する。イントラ予測モード(intraPredMode)は、上の復号済みのブロックから垂直方向に予測する垂直予測(イントラ予測モードintraPredMode=0)、左の復号済みのブロックから水平方向に予測する水平予測(イントラ予測モードintraPredMode=1)、周囲の復号済みのブロックから平均値を算出することにより予測する平均値予測(イントラ予測モードintraPredMode=2)、周囲の復号済みのブロックから斜め45度の角度で予測する平均値予測(intraPredMode=3)に加えて、周囲の復号済みのブロックから様々な角度で斜め方向に予測する31通りの角度予測(イントラ予測モードintraPredMode=4…34)を定義する。
イントラモード(MODE_INTRA)で符号化/復号済みの周囲の画像信号から予測を行うイントラ予測の際に用いられるイントラ予測モードは、輝度信号、色差信号それぞれに用意し、輝度信号用のイントラ予測モードをイントラ輝度予測モード、色差信号用のイントラ予測モードをイントラ色差予測モードと定義する。イントラ輝度予測モードの符号化、および復号においては、周辺のブロックのイントラ輝度予測モードとの相関性を利用し、符号化側で周辺のブロックのイントラ輝度予測モードから予測できると判断された場合は参照するブロックを特定する情報を伝送し、周辺のブロックのイントラ輝度予測モードから予測するよりもイントラ輝度予測モードに別の値を設定した方が良いと判断された場合に、さらにイントラ輝度予測モードの値を符号化、または復号する仕組みを用いる。周辺のブロックのイントラ輝度予測モードから符号化・復号対象ブロックのイントラ輝度予測モードを予測することにより、伝送する符号量を削減できる。一方、イントラ色差予測モードの符号化、および復号においては、色差信号の予測ブロックと同じ位置の輝度信号の予測ブロックのイントラ輝度予測モードとの相関性を利用し、符号化側でイントラ輝度予測モードから予測できると判断された場合はイントラ輝度予測モードの値からイントラ色差予測モードの値を予測し、イントラ輝度予測モードから予測するよりもイントラ色差予測モードに独自の値を設定した方が良いと判断した場合に、イントラ色差予測モードの値を符号化、または復号する仕組みを用いる。イントラ輝度予測モードからイントラ色差予測モードを予測することにより、伝送する符号量を削減できる。
(イントラPCM符号化について)
実施の形態では、イントラモード(MODE_INTRA)では、符号化/復号済みの周囲の画像信号から予測を行うイントラ予測を用いて符号化するイントラ予測符号化に加えて、イントラ予測、インター予測、直交変換、量子化等の圧縮処理を用いずに、画像信号を非圧縮でPCM信号としてそのまま符号化するイントラPCM符号化を定義する。イントラPCMでは符号化ブロックのサイズとPCM信号のビット深度によって符号量が固定長となるため、所定単位の符号量を保証する緊急モードとして活用できる。また、細かな量子化をした際に符号量が大きくなる場合には、非圧縮のイントラPCM符号化を選択した方が、小さな符号量で符号化することができることもある。さらに、すべての画像信号をイントラPCM符号化することでロスレス符号化としても対応できる。イントラPCM符号化は符号化ブロック単位で行われる。
(変換ブロック)
従来と同様に、本実施の形態でもDCT(離散コサイン変換)、DST(離散サイン変換)等の、離散信号を周波数領域へ変換する直交変換とその逆変換を用いて、符号量の削減を図る。符号化ブロックはピクチャ内のテクスチャに応じて、符号化処理を最適にすべく、必要に応じて符号化ブロック内の輝度信号、及び色差信号を再帰的に4分割して、小さなブロック単位で、変換、または逆変換を行うことができる。この必要に応じて分割された直交変換または逆直交変換の対象となるブロックを変換ブロックと定義する。
(量子化パラメータ)
実施の形態では、直交変換された係数を量子化する際の量子化ステップの大きさを導出するための量子化パラメータを下記の量子化グループブロック単位で設定して伝送する。符号化側でこの量子化パラメータの値を制御することにより、量子化ステップの大きさを制御することができ、符号量を制御したり、主観画質を制御することが可能である。量子化パラメータの値を小さく設定することで、量子化ステップが小さくなり細い量子化が行われる。この場合、多くの符号量を要するが、画像の劣化を低く抑えることができ、ブロック歪やモスキート歪等の符号化歪が目立ちにくくなる。一方、量子化パラメータの値を大きく設定することで、量子化ステップが大きくなり粗い量子化が行われる。この場合、少ない符号量で符号化が可能となるが、画像の劣化は高くなり、ブロック歪やモスキート歪等の符号化歪が目立ちやすくなる。実施の形態では、量子化パラメータQPYは-QpBdOffsetYから51までの値をとることができる。ただし、変数QpBdOffsetYは符号化される映像信号のビット深度にもとづいて設定される変数であり、次式により導出される。
QpBdOffsetY = 6 * bit_depth_luma_minus8
ただし、変数bit_depth_luma_minus8は符号化される輝度信号のビット深度にもとづいて設定されるシンタックス要素であり、符号化される輝度信号のビット深度の値から8を減算した値を持つ。輝度信号のビット深度が8ビットでは、bit_depth_luma_minus8、QpBdOffsetYの値は共に0となり、10ビットでは、bit_depth_luma_minus8の値は2、QpBdOffsetYの値は12となる。
さらに、量子化、逆量子化の際に実際に用いられる輝度信号の量子化パラメータQPY’、色差信号Cb、Crの量子化パラメータQPCb’、QPCr’は次式により導出される。
QPY’= QPY+ QpBdOffsetY
QPCb’= QPY + cb_qp_offset + QpBdOffsetC
QPCr’= QPY + cr_qp_offset + QpBdOffsetC
ただし、変数QpBdOffsetCは符号化される色差信号のビット深度にもとづいて設定される変数であり、次式により導出される。
QpBdOffsetC = 6 * bit_depth_chroma_minus8
ただし、変数bit_depth_chroma_minus8は符号化される色差信号のビット深度にもとづいて設定されるシンタックス要素であり、符号化される色差信号のビット深度の値から8を減算した値を持つ。色差信号のビット深度が8ビットでは、bit_depth_chroma_minus8、QpBdOffsetCの値は共に0となり、10ビットでは、bit_depth_luma_minus8の値は2、QpBdOffsetCの値は12となる。また、輝度信号の量子化パラメータQPY’は0から51+QpBdOffsetYまでの値をとることができる。また、色差信号Cb、Crの量子化パラメータQPCb’、QPCr’は0から51+QpBdOffsetCまでの値をとることができる。
(量子化グループブロック)
実施の形態では、量子化パラメータの基本単位である量子化グループブロックを定義し、量子化グループブロック毎に1つの量子化パラメータを設定する。
(ツリーブロック、符号化ブロック、予測ブロック、変換ブロックの位置)
本実施の形態のツリーブロック、符号化ブロック、予測ブロック、変換ブロックを始めとする各ブロックの位置は、輝度信号のピクチャの一番左上の輝度信号の画素の位置を原点(0,0)とし、それぞれのブロックの領域に含まれる一番左上の輝度信号の画素の位置を(x,y)の二次元座標で表す。座標軸の向きは水平方向に右の方向、垂直方向に下の方向をそれぞれ正の向きとし、単位は輝度信号の1画素単位である。輝度信号と色差信号で画像サイズ(画素数)が同じである色差フォーマットが4:4:4の場合ではもちろんのこと、輝度信号と色差信号で画像サイズ(画素数)が異なる色差フォーマットが4:2:0、4:2:2の場合でも色差信号の各ブロックの位置をそのブロックの領域に含まれる輝度信号の画素の座標で表し、単位は輝度信号の1画素である。この様にすることで、色差信号の各ブロックの位置が特定できるのはもちろんのこと、座標の値を比較するだけで、輝度信号のブロックと色差信号のブロックの位置の関係も明確となる。実施の形態においては、色差フォーマットの種類やブロックの形状、大きさにかかわらず、定義した輝度信号のブロックの座標と色差信号のブロックの座標のx成分とy成分の値が共に同一の場合にだけ、これらのブロックは同じ位置にあると定義する。
図1は実施の形態に係る画像符号化装置の構成を示すブロックである。実施の形態の画像符号化装置は、画像メモリ101、量子化パラメータ決定部102、イントラ予測部103、PCM符号化部104、インター予測部105、符号化方法決定部106、残差信号生成部107、直交変換・量子化部108、逆量子化・逆直交変換部109、復号画像信号重畳部110、デブロッキングフィルタ部111、符号化情報格納メモリ112、第1の復号画像メモリ113、第2の復号画像メモリ114、第1の符号化ビット列生成部115、第2の符号化ビット列生成部116、第3の符号化ビット列生成部117、符号化ビット列多重化部118、スイッチ119を備える。
画像メモリ101では、時間順に供給された符号化対象の画像信号を一時格納する。画像メモリ101に格納された符号化対象の画像信号は符号化順序に並べ替えられて、設定に応じた複数の組み合わせでそれぞれの符号化ブロック単位に分割され、さらに、それぞれの予測ブロック単位に分割されて、イントラ予測部103、インター予測部105、残差信号生成部107に供給される。
量子化パラメータ決定部102では、符号量制御、適応量子化等の観点から量子化グループブロック単位で量子化パラメータを決定する。決定された量子化パラメータは符号化方法決定部106、直交変換・量子化部108、逆量子化・逆直交変換部109に供給されると共に、符号化情報格納メモリ112に格納される。
イントラ予測部103は複数の符号化ブロック単位におけるそれぞれの分割モード(PartMode)に応じた予測ブロック単位で、第1の復号画像メモリ113に格納された復号済みの画像信号から符号化対象の予測ブロックの輝度信号、色差信号それぞれについて複数のイントラ輝度予測モード、及びイントラ色差予測モードに応じたそれぞれのイントラ予測を行い、イントラ予測信号を得る。
予測ブロック単位に供給された符号化対象の信号から、予測ブロック単位のイントラ予測信号を画素毎に減算して、予測残差信号を得る。その予測残差信号を用いて符号量と歪量を評価するための評価値を算出し、予測ブロック単位で、複数のイントラ予測モードの中から最も符号量、及び歪量の観点で最適なモードを選択し、当該予測ブロックのイントラ予測の候補として、選択されたイントラ予測モードに対応するイントラ予測情報、イントラ予測信号、及びイントラ予測の評価値を符号化方法決定部106に供給する。
PCM符号化部104は符号化ブロック単位でPCM信号として符号化するためのPCM信号を配列する。PCM符号化部104で生成されるPCM信号は符号化ブロックのサイズと信号のビット深度で符号量が一意に決まる。また、符号化劣化は無く、符号化歪は発生しないので、歪量を0とする。これら符号量と歪量をイントラPCM符号化の評価値として、PCM信号と共に符号化方法決定部106に供給する。
インター予測部105は複数の符号化ブロック単位におけるそれぞれの分割モード(PartMode)に応じた単位、即ち予測ブロック単位で、第2の復号画像メモリ114に格納された復号済みの画像信号から複数のインター予測モード(L0予測、L1予測、両予測)、及び参照画像に応じたそれぞれのインター予測を行い、インター予測信号を得る。その際、動きベクトル探索を行い、探索された動きベクトルに応じてインター予測を行う。なお、両予測の場合は、2つのインター予測信号を画素毎に平均、または重み付け加算することにより、両予測のインター予測を行う。予測ブロック単位に供給された符号化対象の信号から、予測ブロック単位のインター予測信号を画素毎に減算して、予測残差信号を得る。その予測残差信号を用いて符号量と歪量を評価するための評価値を算出し、予測ブロック単位で、複数のインター予測モードの中から最も符号量、及び歪量の観点で最適なモードを選択し、当該予測ブロックのインター予測の候補として、選択されたインター予測モードに対応するインター予測情報、インター予測信号、及びインター予測の評価値を符号化方法決定部106に供給する。
符号化方法決定部106は複数の符号化ブロック単位におけるそれぞれの予測ブロック毎に選択されたイントラ予測情報に対応するイントラ予測評価値、インター予測情報に対応するインター予測評価値に基づき、最適な符号化ブロックの分割方法、予測モード(PredMode)、分割モード(PartMode)、PCM信号として符号化するか否か、変換ブロックの分割方法を決定し、決定に応じた符号化ブロックの分割方法、PCM信号として符号化するか否かを示す情報を含むイントラ予測情報、またはインター予測情報を含む符号化情報を第2の符号化ビット列生成部116に供給するとともに、符号化情報格納メモリ112に格納し、決定に応じたイントラ予測またはインター予測された予測信号を残差信号生成部107、及び復号画像信号重畳部110に供給する。さらに、決定に応じた量子化パラメータ、変換ブロックの分割方法を直交変換・量子化部108、逆量子化・逆直交変換部109、第3の符号化ビット列生成部117に供給するとともに、符号化情報格納メモリ112に格納する。また、イントラPCM符号化が選択された場合は、第2の符号化ビット列生成部116に供給する。
残差信号生成部107は、符号化方法決定部106でイントラ予測またはインター予測で符号化すると決定された際に、符号化する画像信号からイントラ予測またはインター予測された予測信号を画素毎に減じて残差信号を生成し、直交変換・量子化部108に供給する。
直交変換・量子化部108は、符号化方法決定部106でイントラ予測またはインター予測で符号化すると決定された際に、符号化方法決定部106から供給される残差信号に対して量子化パラメータ決定部102から供給される量子化パラメータQPYにもとづいて導出される輝度信号の量子化パラメータQPY’、および色差信号Cb、Crの色差信号の量子化パラメータQPCb’、QPCr’を用いて、DCTやDST等の周波数領域に変換する直交変換及び量子化を行い直交変換・量子化された残差信号を生成し、第3の符号化ビット列生成部117、及び逆量子化・逆直交変換部109に供給する。
第1の符号化ビット列生成部115は、シンタックス要素の意味、導出方法を定義するセマンティクス規則に従って、シーケンス、ピクチャ、及びスライス単位の符号化情報に関するシンタックス要素の値を算出し、算出した各シンタックス要素の値をシンタックス規則に従って、可変長符号化、算術符号化等によるエントロピー符号化を行い、第1の符号化ビット列を生成し、符号化された第1の符号化ビット列を符号化ビット列多重化部118に供給する。
第2の符号化ビット列生成部116は、シンタックス要素の意味、導出方法を定義するセマンティクス規則に従って、それぞれのツリーブロック毎に、符号化ブロックの分割情報、符号化ブロック単位の符号化情報に加えて、予測ブロック毎に符号化方法決定部106によって決定された符号化情報に関するシンタックス要素の値を算出する。具体的には、符号化ブロックの分割方法、予測モード(PredMode)、分割モード(PartMode)等の符号化ブロック単位の符号化情報に加えて、予測ブロック単位の符号化情報に関するシンタックス要素の値を算出する。予測モード(PredMode)がイントラモード(MODE_INTRA)でイントラ予測符号化の場合、イントラPCM符号化かどうかを示すシンタックス要素pcm_flagを0とし、イントラ輝度予測モード、及びイントラ色差予測モードを含むイントラ予測モードに関するシンタックス要素の値を算出し、イントラモード(MODE_INTRA)でイントラPCM符号化の場合、イントラPCM符号化かどうかを示すシンタックス要素pcm_flagを1とし、予測モード(PredMode)がインターモード(MODE_INTER)の場合、インター予測モード、参照画像を特定する情報、動きベクトル等のインター予測情報に関するシンタックス要素の値を算出する。算出された各シンタックス要素の値をシンタックス規則に従って、可変長符号化、算術符号化等によるエントロピー符号化を行い、第2の符号化ビット列を生成し、符号化された第2の符号化ビット列を符号化ビット列多重化部118に供給する。さらに、イントラPCM符号化の場合、PCM信号を符号化する。
第3の符号化ビット列生成部117は、変換ブロックの分割情報、量子化パラメータ情報を符号化する。直交変換及び量子化された残差信号を規定のシンタックス規則に従って可変長符号化、算術符号化等によるエントロピー符号化を行い、第3の符号化ビット列を生成して、第3の符号化ビット列を符号化ビット列多重化部118に供給する。量子化パラメータ情報を符号化する詳細な処理については後述する。
符号化ビット列多重化部118で、第1の符号化ビット列と第2の符号化ビット列、及び第3の符号化ビット列を規定のシンタックス規則に従って多重化してビットストリームを生成し、多重化されたビットストリームを出力する。
逆量子化・逆直交変換部109は、直交変換・量子化部108から供給された直交変換・量子化された残差信号を量子化パラメータ決定部102から供給される量子化パラメータQPYにもとづいて導出される輝度信号の量子化パラメータQPY’、および色差信号Cb、Crの色差信号の量子化パラメータQPCb’、QPCr’を用いて、逆量子化及び逆直交変換して残差信号を算出し、復号画像信号重畳部110に供給する。復号画像信号重畳部110は、符号化方法決定部106による決定に応じてイントラ予測またはインター予測された予測信号と逆量子化・逆直交変換部109で逆量子化及び逆直交変換された残差信号を重畳して復号画像を生成し、第1の復号画像メモリ113に格納する。
デブロッキングフィルタ部111は符号化情報格納メモリ112に格納された符号化情報に応じて第1の復号画像メモリ113に格納された復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、第2の復号画像メモリ114に格納される。デブロッキングフィルタ部111の詳細な処理については後述する。
図2は図1の画像符号化装置に対応した実施の形態に係る画像復号装置の構成を示すブロックである。実施の形態の画像復号装置は、符号化ビット列分離部201、第1の符号化ビット列復号部202、第2の符号化ビット列復号部203、第3の符号化ビット列復号部204、量子化パラメータ導出部205、イントラ予測部206、PCM復号部207、インター予測部208、逆量子化・逆直交変換部209、復号画像信号重畳部210、デブロッキングフィルタ部211、符号化情報格納メモリ212、第1の復号画像メモリ213、第2の復号画像メモリ214、およびスイッチ215、216、217を備える。
符号化ビット列分離部201に供給されるビットストリームは規定のシンタックスの規則に従って分離し、シーケンス、ピクチャ、及びスライス単位の符号化情報を示す第1の符号化ビット列が第1の符号化ビット列復号部202に供給され、符号化ブロック単位の符号化情報を含む第2の符号化ビット列が第2の符号化ビット列復号部203に供給され、直交変換及び量子化された残差信号を含む第3の符号化ビット列が第3の符号化ビット列復号部204に供給される。
第1の符号化ビット列復号部202は、シンタックス規則に従って、供給された第1の符号化ビット列をエントロピー復号して、シーケンス、ピクチャ、及びスライス単位の符号化情報に関するシンタックス要素のそれぞれの値を得る。シンタックス要素の意味、導出方法を定義するセマンティクス規則に従って、復号されたシーケンス、ピクチャ、及びスライス単位の符号化情報に関するシンタックス要素の値から、シーケンス、ピクチャ、及びスライス単位の符号化情報を算出する。第1の符号化ビット列復号部202は符号化側の第1の符号化ビット列生成部115に対応する符号化ビット列復号部であり、第1の符号化ビット列生成部115で符号化されたシーケンス、ピクチャ、及びスライス単位の符号化情報を含む符号化ビット列からそれぞれの符号化情報に戻す機能を有する。第1の符号化ビット列復号部202で得られるシーケンス、ピクチャ、及びスライス単位の符号化情報は符号化情報格納メモリ212に供給されると共に、図示していないがすべてのブロックで用いられる。
第2の符号化ビット列復号部203は、シンタックス規則に従って、供給された第2の符号化ビット列をエントロピー復号して、それぞれのツリーブロック毎に、符号化ブロックの分割情報、符号化ブロック、及び予測ブロック単位の符号化情報に関するシンタックス要素のそれぞれの値を得る。シンタックス要素の意味、導出方法を定義するセマンティクス規則に従って、供給された符号化ブロックの分割情報を復号し、符号化ブロック単位、及び予測ブロック単位の符号化情報に関するシンタックス要素の値から、符号化ブロック単位、及び予測ブロック単位の符号化情報を算出する。第2の符号化ビット列復号部203は符号化側の第2の符号化ビット列生成部116に対応する符号化情報算出部であり、第2の符号化ビット列生成部116で符号化された符号化ブロック、及び予測ブロック単位の符号化情報を含む第2の符号化ビット列からそれぞれの符号化情報に戻す機能を有する。具体的には、第2の符号化ビット列を規定のシンタックス規則に従って復号することにより得られる各シンタックス要素から、符号化ブロックの分割方法、予測モード(PredMode)、分割モード(PartMode)を復号する予測モード(PredMode)がイントラモード(MODE_INTRA)の場合、イントラPCM符号化かどうかを示すシンタックス要素pcm_flagを復号する。pcm_flagが0ならイントラ予測符号化であり、イントラ輝度予測モード、及びイントラ色差予測モードを含むイントラ予測モードを得る。pcm_flagが1ならイントラPCM符号化であり、PCM信号を得る。一方、予測モード(PredMode)がインターモード(MODE_INTER)の場合、インター予測モード、参照画像を特定する情報、動きベクトル等のインター予測情報を得る。予測モード(PredMode)がイントラモード(MODE_INTRA)でpcm_flagが0の場合、スイッチ215を通じて、イントラ輝度予測モード、及びイントラ色差予測モードを含むイントラ予測モードをイントラ予測部206に供給し、予測モード(PredMode)がインターモード(MODE_INTER)の場合、スイッチ215を通じて、インター予測モード、参照画像を特定する情報、動きベクトル等のインター予測情報をインター予測部208に供給する。イントラPCM符号化ならPCM信号をPCM復号部207に供給する。
第3の符号化ビット列復号部204は、供給された符号化ビット列を復号して変換ブロックの分割情報、量子化パラメータ情報、直交変換・量子化された残差信号を取得し、直交変換・量子化された残差信号を逆量子化・逆直交変換部209に供給する。さらに、量子化パラメータ情報(後述するシンタックス要素cu_qp_delta)を量子化パラメータ導出部205に供給する。量子化パラメータ導出部205は、供給される量子化パラメータ情報(後述するシンタックス要素cu_qp_delta)、及び第1の符号化ビット列復号部202で得られる符号化情報から量子化パラメータQPYを導出し、逆量子化・逆直交変換部209に供給されるとともに、符号化情報格納メモリ212に格納される。
イントラ予測部206は、供給されるイントラ輝度予測モード、及びイントラ色差予測モードを含むイントラ予測モードに応じて第1の復号画像メモリ213に格納されている復号済みの周辺ブロックからイントラ予測により予測画像信号を生成し、スイッチ216を介して、予測画像信号を復号画像信号重畳部210に供給する。また、本実施の形態ではイントラ輝度予測モードの値からイントラ色差予測モードの値を予測する際に、色差フォーマットに応じてイントラ色差予測モードの導出方法が異なる。この場合、色差フォーマットに応じて異なる方法により導出されたイントラ予測モードを用いてイントラ予測を行う。
PCM復号部207は入力された信号の復号処理を行い、符号化ブロック単位のPCM信号を得る。得られた符号化ブロック単位のPCM信号をスイッチ217を通じて、第1の復号画像メモリ213に格納する。
インター予測部208は、供給されるインター予測モード、参照ピクチャを特定する情報、動きベクトル等のインター予測情報を用いて第2の復号画像メモリ214に格納されている復号済みの参照ピクチャから動き補償を用いたインター予測により予測画像信号を生成し、スイッチ216を介して、予測画像信号を復号画像信号重畳部210に供給する。なお、両予測の場合は、L0予測、L1予測の2つの動き補償予測画像信号に適応的に重み係数を乗算して重畳し、最終的な予測画像信号を生成する。
逆量子化・逆直交変換部209は、量子化パラメータ導出部205から供給される量子化パラメータQPYにもとづいて導出される輝度信号の量子化パラメータQPY’、および色差信号Cb、Crの色差信号の量子化パラメータQPCb’、QPCr’を用いて、第3の符号化ビット列復号部204で復号された直交変換・量子化された残差信号に対して逆直交変換及び逆量子化を行い、逆直交変換・逆量子化された残差信号を得る。
復号画像信号重畳部210は、イントラ予測部206、またはインター予測部208で予測された予測画像信号と、逆量子化・逆直交変換部209により逆直交変換・逆量子化された残差信号とを重畳することにより、復号画像信号を復号し、スイッチ217を介して、第1の復号画像メモリ213に格納する。
デブロッキングフィルタ部211は第1の復号画像メモリ213に格納された復号画像に対して符号化によるブロック歪等を減少させるフィルタリング処理を施して、第2の復号画像メモリ214に格納される。第2の復号画像メモリ214に格納された復号画像信号は、出力順で出力される。
次に、実施の形態のポイントの1つである量子化グループブロックについて詳細に説明する。
前述したように、本実施の形態では、量子化パラメータを符号化する単位である量子化グループブロックを定義し、量子化グループブロック毎に量子化パラメータを設定する。図5は量子化グループブロックの一例を説明する図である。図5では、実線で描かれたブロックA、B0、B1、B2、C0、C1、C2及びD0、D1、D2、D3は符号化ブロックであり、点線で描かれたブロックが量子化グループブロックである。図5に示す例においては、ツリーブロックのサイズは輝度信号で64×64画素、色差信号で32×32画素と設定する。符号化ブロックAは、ツリーブロックを分割せず、1つの符号化ブロックとしたものであり、符号化ブロックAのサイズは輝度信号で64×64画素、色差信号で32×32画素である。符号化ブロックB0、B1、B2は、ツリーブロックを4分割してできた符号化ブロックであり、符号化ブロックB0、B1、B2のサイズは輝度信号で32×32画素、色差信号で16×16画素である。符号化ブロックC0、C1、C2は、ツリーブロックを4分割してできたブロックをさらに4分割してできた符号化ブロックであり、符号化ブロックC0、C1、C2のサイズは輝度信号で16×16画素、色差信号で8×8画素である。符号化ブロックD0、D1、D2、D3は、ツリーブロックを4分割してできたブロックをさらに階層的に2度4分割してできた符号化ブロックであり、符号化ブロックD0、D1、D2、D3のサイズは輝度信号で8×8画素、色差信号で4×4画素である。図5に示す例においては、量子化グループブロックのサイズを輝度信号で32×32画素、色差信号で16×16画素と設定する。
本実施の形態においては、量子化グループブロックと同じ位置に存在する符号化ブロックおよび変換ブロックの量子化パラメータは同一である。量子化グループブロックのサイズはツリーブロックのサイズと同じに設定しても良いし、小さく設定してもよい。さらに、量子化グループブロックのサイズは符号化ブロックのサイズと同じでも良いし、符号化ブロックのサイズより大きくてもよいし、小さくてもよい。
量子化グループブロックのサイズが符号化ブロックのサイズよりも大きい場合、量子化グループブロックには複数の符号化ブロックが含まれるが、これらの符号化ブロックの量子化パラメータは同じ値となる。図5に示す例においては、最も右上の量子化グループブロックより小さい4つの符号化ブロックD0、D1、D2、D3の量子化パラメータは同じ値に設定される。
量子化グループブロックのサイズが符号化ブロックのサイズよりも小さい場合、符号化ブロックには複数の量子化グループブロックが含まれるが、これらの量子化グループブロックの量子化パラメータは同じ値とする。図5に示す例においては、符号化ブロックAに含まれる16個の量子化グループブロックの量子化パラメータは同じ値に設定され、符号化ブロックB0に含まれる4個の量子化グループブロックの量子化パラメータは同じ値に設定され、符号化ブロックB1に含まれる4個の量子化グループブロックの量子化パラメータは同じ値に設定され、B2に含まれる4個の量子化グループブロックの量子化パラメータは同じ値に設定される。
次に、実施の形態のポイントの1つである量子化パラメータの決定・符号化/復号・導出について詳細に説明する。
図6は量子化パラメータの決定および符号化処理手順を説明するフローチャートである。これらの処理は画像符号化装置の量子化パラメータ決定部102及び第3の符号化ビット列生成部117で行われる。ピクチャ内のスライス毎にステップS1102からS1122までの処理を行う(ステップS1101〜S1123)。さらに、スライス内の符号化ツリーブロック毎にステップS1103からS1121までの処理を行う(ステップS1102〜S1122)。
まず、符号化ツリーブロック内の量子化グループブロック毎に量子化パラメータQPY量子化を決定する(ステップS1103〜S1105)。これらの処理は画像符号化装置の量子化パラメータ決定部102で行われる。量子化パラメータQPYは符号量制御において、発生符号量を下げる場合には、量子化パラメータQPYに大きい値を設定し、発生符号量を上げる場合には、量子化パラメータQPYに小さい値を設定する。主観画質を調整するための適応量子化の際には符号化劣化が目立ちやすい量子化グループブロックは量子化パラメータQPYに大きい値を設定し、符号化劣化が目立ちやすい量子化グループブロックは量子化パラメータQPYに小さい値を設定する。
続いて、符号化ツリーブロック内の符号化ブロック毎にステップS1107からS1120までの処理を行うことで、量子化グループブロックの量子化パラメータQPYを符号化する(ステップS1106〜S1121)。これらの処理は画像符号化装置では第3の符号化ビット列生成部117で実施される。量子化パラメータQPYを符号化する際には、シンタックス要素cu_qp_deltaを導出し、この導出されたシンタックス要素cu_qp_deltaを符号化する。
まず、対象となる符号化ブロックが符号化順で量子化グループブロックの先頭の場合(ステップS1107のYES)、対象となる符号化ブロックに対応する量子化グループブロックのQPYに対応するシンタックス要素cu_qp_deltaが符号化されたかどうかを示す変数IsCuQpDeltaCodedに0を設定し(ステップS1108)、量子化パラメータの予測値QPPREDを導出する(ステップS1109)。ステップS1109の処理については図8を用いて詳細に説明する。
続いてステップS1109で導出した量子化パラメータの予測値QPPREDの値を符号化情報格納メモリ112の量子化グループブロックのQPYに設定する(ステップS1110)。この符号化情報格納メモリ112への設定に際しては、量子化グループブロックのサイズよりも符号化ブロックのサイズの方が大きければ、同じ量子化パラメータの予測値QPPREDの値を符号化ブロックに含まれるすべての量子化グループブロックの量子化パラメータQPYに設定する。
一方、対象となる符号化ブロックが符号化順で量子化グループブロックの先頭でない場合(ステップS1107のNO)、ステップS1111に進む。
続いて、符号化ブロックがイントラPCM符号化の場合(ステップS1111のNO)、ステップS1112からS1220までの処理をスキップしてステップS1221に進む。符号化ブロックがイントラPCM符号化でない場合(ステップS1111のYES)、符号化ブロック内の変換ブロック毎にステップS1113からS1119までの処理を行うことで、量子化グループブロックの量子化パラメータQPYを符号化する(ステップS1112〜S1120)。まず、対象となる変換ブロックの変数cbf_luma、cbf_cb、cbf_crの値を判定する(ステップS1113)。ここで、変数cbf_lumaは対象の輝度の変換ブロックが非0の係数(0でない係数)を含み、係数が符号化される場合に1、非0の係数を含まず、係数が符号化されない場合に0となる変数である。変数cbf_cbは対象の色差Cbの変換ブロックが非0の係数(0でない係数)を含み、係数が符号化される場合に1、非0の係数を含まず、係数が符号化されない場合に0となる変数である。変数cbf_crは対象の色差Crの変換ブロックが非0の係数(0でない係数)を含み、係数が符号化される場合に1、非0の係数を含まず、係数が符号化されない場合に0となる変数である。対象となる変換ブロックの変数cbf_luma、cbf_cb、cbf_crのどれかが1の場合(ステップS1113のYES)、ステップS1114からS1119までの処理を行い、変換ブロックの変数cbf_luma、cbf_cb、cbf_crのどれも1でない場合、すなわちすべて0の場合(ステップS1113のNO)、ステップS1114からS1119までの処理をスキップして、ステップS1120に進む。
ステップS1114では、変数IsCuQpDeltaCodedを判定し(ステップS1114)、変数IsCuQpDeltaCodedが0の場合(ステップS1114のYES)、ステップS1115からS1118までの処理を行い、変数IsCuQpDeltaCodedが1の場合(ステップS1114のNO)、ステップS1115からS1118までの処理をスキップして、ステップS1119に進む。
ステップS1104で設定された量子化グループブロックの量子化パラメータQPYの値を符号化情報格納メモリ112の量子化グループブロックの量子化パラメータQPYに設定する(ステップS1115)。この符号化情報格納メモリ112への設定に際しては、量子化グループブロックのサイズよりも符号化ブロックのサイズの方が大きければ、同じ量子化パラメータQPYの値を符号化ブロックに含まれるすべての量子化グループブロックの量子化パラメータQPYに設定する。ステップS1110で符号化情報格納メモリ112に格納された量子化グループブロックの量子化パラメータQPYに上書きされる。
ステップS1116では、次式によりシンタックス要素cu_qp_deltaを導出する(ステップS1116)。
QPDIFF=QPY−QPPRED
cu_qp_delta = (QPDIFF + 78 + QpBdOffsetY + (QpBdOffsetY/2)) % (52 + QpBdOffsetY) - 26 - (QpBdOffsetY/2);
ただし、変数QpBdOffsetYは映像信号のビット深度にもとづいて設定される変数であり、8ビットでは0、10ビットでは12となる。
続いて、シンタックス要素cu_qp_deltaをエントロピー符号化し(ステップS1117)、変数IsCuQpDeltaCodedに1を設定し(ステップS1118)、変換ブロックの係数を符号化する(ステップS1119)。
符号化ブロック内のすべての変換ブロックの処理が完了したら、ステップS1121に進み、次の符号化ブロックの処理を行う。
符号化ツリーブロック内のすべての符号化ブロックの処理が完了したら、ステップS1122に進み、次の符号化ツリーブロックの処理を行う。
スライス内のすべての符号化ツリーブロックの処理が完了したら、ステップS1123に進み、次のスライスの処理を行う。
ピクチャ内のすべてのスライスの処理が完了したら、本量子化パラメータ決定・符号化処理が終了する。
図7は量子化パラメータの復号・導出処理手順を説明するフローチャートである。これらの処理は画像復号装置の量子化パラメータ導出部205で行われる。ただし、ステップS1212のエントロピー復号処理は画像復号装置の第3の符号化ビット列復号部204で行われる。ピクチャ内のスライス毎にステップS1202からS1219までの処理を行う(ステップS1201〜S1220)。さらに、スライス内の符号化ツリーブロック毎にステップS1203からS1218までの処理を行う(ステップS1202〜S1219)。
続いて、符号化ツリーブロック内の符号化ブロック毎にステップS1204からS1217までの処理を行うことで、量子化グループブロックの量子化パラメータQPYを復号し導出する(ステップS1203〜S1218)。これらの処理は画像復号装置では第3の符号化ビット列復号部204及び量子化パラメータ導出部205で実施される。量子化パラメータQPYを導出する際には、量子化パラメータの予測値QPPREDを導出し、シンタックス要素cu_qp_deltaを復号し、この復号されたシンタックス要素cu_qp_deltaを用いて量子化パラメータQPYを導出する。
まず、対象となる符号化ブロックが復号順で量子化グループブロックの先頭の場合(ステップS1204のYES)、対象となる符号化ブロックに対応する量子化グループブロックの量子化パラメータQPYに対応するシンタックス要素cu_qp_deltaが復号されたかどうかを示す変数IsCuQpDeltaCodedに0を設定し(ステップS1205)、量子化パラメータQPYの予測値QPPREDを導出する(ステップS1206)。ステップS1206の処理については図8を用いて詳細に説明する。
続いて、ステップS1109で導出した量子化パラメータの予測値QPPREDの値を符号化情報格納メモリ212の量子化グループブロックの量子化パラメータQPYに設定する(ステップS1207)。この符号化情報格納メモリ212に際しては、量子化グループブロックのサイズよりも符号化ブロックのサイズの方が大きければ、同じ量子化パラメータの予測値QPPREDの値を符号化ブロックに含まれるすべての量子化グループブロックの量子化パラメータQPYに設定する。
一方、対象となる符号化ブロックが復号順で量子化グループブロックの先頭でない場合(ステップS1204のNO)、ステップS1208に進む。
続いて、符号化ブロックがイントラPCM符号化の場合(ステップS1210のNO)、ステップS1209からS1217までの処理をスキップしてステップS1218に進む。符号化ブロックがイントラPCM符号化でない場合(ステップS1210のYES)、符号化ブロック内の変換ブロック毎にステップS1210からS1216までの処理を行うことで、量子化グループブロックの量子化パラメータQPYを復号し、導出する(ステップS1209〜S1217)。まず、対象となる変換ブロックの変数cbf_luma、cbf_cb、cbf_crの値を判定する(ステップS1210)。ここで、変数cbf_lumaは対象の輝度の変換ブロックが非0の係数(0でない係数)を含み、係数が符号化される場合に1、非0の係数を含まず、係数が符号化されない場合に0となる変数である。変数cbf_cbは対象の色差Cbの変換ブロックが非0の係数(0でない係数)を含み、係数が符号化される場合に1、非0の係数を含まず、係数が符号化されない場合に0となる変数である。変数cbf_crは対象の色差Crの変換ブロックが非0の係数(0でない係数)を含み、係数が符号化される場合に1、非0の係数を含まず、係数が符号化されない場合に0となる変数である。対象となる変換ブロックの変数cbf_luma、cbf_cb、cbf_crのどれかが1の場合(ステップS1210のYES)、ステップS1211からS1216までの処理を行い、変換ブロックの変数cbf_luma、cbf_cb、cbf_crのどれも1でない場合、すなわちすべて0の場合(ステップS1210のNO)、ステップS1211からS1216までの処理をスキップして、ステップS1217に進む。
ステップS1211では、変数IsCuQpDeltaCodedを判定し(ステップS1211)、変数IsCuQpDeltaCodedが0の場合(ステップS1211のYES)、ステップS1212からS1215までの処理を行い、変数IsCuQpDeltaCodedが1の場合(ステップS1211のNO)、ステップS1212からS1215までの処理をスキップして、ステップS1216に進む。
続いて、シンタックス要素cu_qp_deltaをエントロピー復号する(ステップS1212)。
続いて、次式により量子化グループブロックの量子化パラメータQPYを導出する(ステップS1213)。
QPY= ( ( (QPPRED + cu_qp_delta + 52 + 2 * QpBdOffsetY )%( 52 + QpBdOffsetY ) ) - QpBdOffsetY
ただし、変数QpBdOffsetYは映像信号のビット深度にもとづいて設定される変数である。
ステップS1213で導出された量子化グループブロックの量子化パラメータQPYの値を符号化情報格納メモリ212に量子化グループブロックの量子化パラメータQPYに設定する(ステップS1214)。この符号化情報格納メモリ212への設定に際しては、量子化グループブロックのサイズよりも符号化ブロックのサイズの方が大きければ、同じ量子化パラメータQPYの値を符号化ブロックに含まれるすべての量子化グループブロックの量子化パラメータQPYに設定する。ステップS1207で符号化情報格納メモリ212に格納された量子化グループブロックの量子化パラメータQPYに上書きされる。
続いて、変数IsCuQpDeltaCodedに1を設定し(ステップS1215)、変換ブロックの係数を復号する(ステップS1216)。
符号化ブロック内のすべての変換ブロックの処理が完了したら、ステップS1218に進み、次の符号化ブロックの処理を行う。
符号化ツリーブロック内のすべての符号化ブロックの処理が完了したら、ステップS1219に進み、次の符号化ツリーブロックの処理を行う。
スライス内のすべての符号化ツリーブロックの処理が完了したら、ステップS1220に進み、次のスライスの処理を行う。
ピクチャ内のすべてのスライスの処理が完了したら、本量子化パラメータ復号・導出処理が終了する。
図8は図6のステップS1109、図7のS1206の量子化パラメータの予測値の導出処理手順を説明するフローチャートである。これらの処理は画像符号化装置の第3の符号化ビット列生成部117及び画像復号装置の量子化パラメータ導出部205で行われる。まず、画像符号化装置の符号化情報格納メモリ112または画像復号装置の符号化情報格納メモリ212に格納されている。
左に隣接する量子化グループブロックが利用できるかどうかを判定し、左に隣接する量子化グループブロックが利用できる場合(ステップS1301のYES)、左に隣接する量子化グループブロックの量子化パラメータQPLEFTの値を量子化パラメータQPAに設定し(ステップS1302)、利用できない場合(ステップS1301のNO)、符号化/復号順で直前の量子化グループブロックの量子化パラメータQPPREVの値を量子化パラメータQPAに設定する(ステップS1303)。
上に隣接する量子化グループブロックが利用できるかどうかを判定し、上に隣接する量子化グループブロックが利用できる場合(ステップS1304のYES)、上に隣接する量子化グループブロックの量子化パラメータQPLEFTの値を量子化パラメータQPBに設定し(ステップS1305)、利用できない場合(ステップS1304のNO)、符号化/復号順で直前の量子化グループブロックの量子化パラメータQPPREVの値を量子化パラメータQPBに設定する(ステップS1306)。
続いて、次式により、量子化パラメータQPAと量子化パラメータQPBの平均値を算出し、量子化パラメータの予測値QPPREDとし(ステップS1307)、本量子化パラメータ導出処理を終了する。
QPPRED = (QPA + QPB + 1) >> 1
イントラPCM符号化では量子化しないが、本実施の形態においては、デブロックフィルタの際に、量子化パラメータを用いる。そこで、イントラPCMの符号化ブロックにも量子化パラメータを設定する。イントラPCM符号化でない符号化ブロックの量子化パラメータと同様に、イントラPCMの符号化ブロックを含む量子化グループブロックの量子化パラメータをイントラPCMの符号化ブロックの量子化パラメータとみなすこととする。
イントラPCMブロックのサイズと量子化グループブロックのサイズの関係と量子化パラメータの値について説明する。
符号化ブロックがイントラPCM符号化で、符号化ブロックのサイズが量子化グループブロックのサイズ以上の場合、シンタックス要素cu_qp_deltaが符号化されることは無く、イントラPCMブロックの量子化パラメータQPYの値は量子化パラメータの予測値QPPREDと等しくなり、その量子化パラメータの予測値QPPREDと等しい量子化パラメータQPYの値が画像符号化装置の符号化情報格納メモリ112または画像復号装置の符号化情報格納メモリ212に格納される。
符号化ブロックがイントラPCM符号化で、符号化ブロックのサイズが量子化グループブロックのサイズ未満の場合、同じ量子化グループブロック内のイントラPCM符号化でない符号化ブロックでシンタックス要素cu_qp_deltaが符号化される可能性があり、イントラPCM符号化の符号化ブロックの量子化パラメータQPYの値は量子化パラメータの予測値QPPREDの値と等しいとは限らず、符号化/復号される量子化パラメータQPYの値が画像符号化装置の符号化情報格納メモリ112または画像復号装置の符号化情報格納メモリ212に格納される。
なお、デブロックフィルタのフィルタリング強度をより適切に設定してブロック歪みを低減するために、符号化ブロックがイントラPCM符号化の場合においても、量子化パラメータQPYの値を符号化/復号することにしてもよい。その場合、符号化/復号される量子化パラメータQPYの値が画像符号化装置の符号化情報格納メモリ112または画像復号装置の符号化情報格納メモリ212に格納される。
次に、実施の形態のポイントの1つであるデブロッキングフィルタの符号化/復号について詳細に説明する。本実施の形態においては、輝度信号において、ピクチャを8×8画素ブロックに区切った際の境界上にある変換ブロックおよび予測ブロックの境界を導出し、デブロッキングフィルタ処理を行う。図9はブロック境界の画素の一例を説明する図である。垂直エッジのフィルタリング処理を行う場合は、図9(a)に示すように垂直境界を挟んで左側のブロックをブロックP、右側のブロックをブロックQとする。さらに、ブロックPに含まれるフィルタリング対象となる垂直境界の画素pをブロックの境界から左へ順に画素p0、p1、p2、p3とし、ブロックQに含まれる画素qをブロックの境界から右へ順に画素q0、q1、q2、q3とする。最も上の1ラインのみを示したが、垂直境界を跨ぐ、垂直方向の各ラインについて水平方向にフィルタリングを行う。一方、水平エッジのフィルタリング処理を行う場合は、図9(b)に示すように水平境界を挟んで上側のブロックをブロックP、下側のブロックをブロックQとする。さらに、ブロックPに含まれるフィルタリング対象となる垂直境界の画素pをブロックの境界から上へ順に画素p0、p1、p2、p3とし、ブロックQに含まれる画素qをブロックの境界から下へ順に画素q0、q1、q2、q3とする。最も左の1ラインのみを示したが、水平境界を跨ぐ、水平方向の各ラインについて垂直方向にフィルタリングを行う。
第1の実施例について説明する。図10、図11、図14、図15および図18は画像符号化装置のデブロッキングフィルタ部111及び画像復号装置のデブロッキングフィルタ部211の第1の実施例の処理手順を説明するフローチャートである。画像符号化装置では、符号化対象のピクチャのすべての復号画像信号が第1の復号画像メモリ113に格納された後に、デブロッキングフィルタ部111でデブロッキングフィルタ処理を行い、第2の復号画像メモリ114に格納される。画像復号装置では、復号対象のピクチャのすべての復号画像信号が第1の復号画像メモリ213に格納された後に、デブロッキングフィルタ部211でデブロッキングフィルタ処理を行い、第2の復号画像メモリ214に格納される。
まず、図10のデブロッキングフィルタ処理手順について説明する。画像符号化装置の第1の復号画像メモリ113または画像復号装置の第1の復号画像メモリ213に格納されている復号されたピクチャ内の符号化ブロック毎に、ステップS2102とS2103の処理を繰り返す(ステップS2101〜S2104)。垂直エッジの水平方向のフィルタリング処理を行い(ステップS2102)、出力画素p'、q'を画像メモリに格納する(ステップS2103)。この際、中間データ一時保存用の画像メモリに格納される。続いて、デブロックフィルタ処理されたピクチャ内の符号化ブロック毎に、ステップS2106とS2107の処理を繰り返す(ステップS2105〜S2108)。水平エッジの垂直方向のフィルタリング処理を行い(ステップS2106)、出力画素p'、q'を画像メモリに格納する(ステップS2107)。この際、画像符号化装置の第2の復号画像メモリ114または画像復号装置の第2の復号画像メモリ214に格納される。ステップS2102の垂直エッジの水平方向のフィルタリング処理とステップS2106の水平エッジの垂直方向のフィルタリング処理は処理の方向が違うのみで、処理手順は共通であり、図11、図14、図15および図18を用いて詳細に説明する。
図11の符号化ブロック毎のデブロッキングフィルタ処理手順について説明する。まず、符号化情報格納メモリ112または符号化情報格納メモリ212に格納されている符号化情報を用いて、符号化ブロック内の変換ブロックの境界を導出する(ステップS2201)。図12は符号化ブロック内の変換ブロックの垂直境界と水平境界の一例を説明する図である。垂直エッジのフィルタリング処理を行う場合は、符号化ブロックの内部及び左側の辺上の図12(a)の太線で示される、符号化ブロック内の変換ブロックの垂直方向の境界3101を導出する。一方、水平エッジのフィルタリング処理を行う場合は、符号化ブロックの内部及び上側の辺上の図12(b)の太線で示される、符号化ブロック内の変換ブロックの水平方向の境界3102を導出する。
続いて、予測ブロック境界を導出する(ステップS2202)。図13は符号化ブロック内の予測ブロックの垂直境界と水平境界の一例を説明する図である。垂直エッジのフィルタリング処理を行う場合は、符号化ブロックの内部及び左側の辺上の図13(a)の太線で示される、符号化ブロック内の予測ブロックの垂直方向の境界3201を導出する。一方、水平エッジのフィルタリング処理を行う場合は、符号化ブロックの内部及び上側の辺上の図13(b)の太線で示される、符号化ブロック内の予測ブロックの水平方向の境界3202を導出する。
続いて、変換ブロックおよび予測ブロックのそれぞれのブロック境界の強度を導出する(ステップS2203)。それぞれのブロック境界について、一様に同じ強さのデブロックフィルタ処理を行うのではなく、それぞれのブロック境界の条件にもとづいてどの程度の強さのデブロックフィルタ処理を行うべきかを決定する。
画素p0またはq0がイントラ予測モードで符号化される符号化ブロックに含まれる場合、ブロック境界の強度を示す変数bSの値を2に設定する。2は最も強い強度を示す値である。
画素p0またはq0がイントラ予測モードで符号化される符号化ブロックに含まれない場合、画素p0またはq0が非0の変換係数を含む変換ブロックに含まれる場合、ブロック境界の強度を示す変数bSの値を1に設定する。1は中程度の強度を示す値である。
画素p0またはq0がイントラ予測モードで符号化される符号化ブロックに含まれず、画素p0またはq0が非0の変換係数を含む変換ブロックに含まれない場合、画素p0を含む予測ブロックが、画素q0を含む予測ブロックと異なる参照ピクチャ、または異なる予測ブロックの動きベクトル数の場合、ブロック境界の強度を示す変数bSの値を1に設定する。
画素p0またはq0がイントラ予測モードで符号化される符号化ブロックに含まれず、画素p0またはq0が非0の変換係数を含む変換ブロックに含まれず、画素p0を含む予測ブロックが、画素q0を含む予測ブロックと同じ参照ピクチャで同じ予測ブロックの動きベクトル数の場合、画素p0を含む予測ブロックの動きベクトルの値と、画素q0を含む予測ブロックの動きベクトルの動きベクトルの値が所定の値以上に異なる場合、ブロック境界の強度を示す変数bSの値を1に設定する。
画素p0またはq0がイントラ予測モードで符号化される符号化ブロックに含まれず、画素p0またはq0が非0の変換係数を含む変換ブロックに含まれず、画素p0を含む予測ブロックが、画素q0を含む予測ブロックと同じ参照ピクチャで同じ予測ブロックの動きベクトル数で画素p0を含む予測ブロックの動きベクトルの値と、画素q0を含む予測ブロックの動きベクトルの動きベクトルの値が所定の値以上に異ならない場合、ブロック境界の強度を示す変数bSの値を0に設定する。0は最も弱い強度を示す値である。
続いて、輝度信号のフィルタリングを行う(ステップS2204)。ステップS2204の輝度信号のフィルタリング処理手順については図14を用いて詳細に説明する。続いて、色差信号のフィルタリングを行い(ステップS2205)、本デブロックフィルタ処理手順を終了する。色差信号のフィルタリングについても輝度信号のフィルタリングとほぼ同様の手法をとることとし、詳細については省略する。
図14はステップS2204の信号のフィルタリング処理手順を示すフローチャートである。符号化ブロック内の8×8ブロック毎に(ステップS2301〜S2303)、輝度ブロックエッジのフィルタリングを行う(ステップS2302)。
図15は第1の実施例のステップS2302のブロックエッジのフィルタリング処理手順を示すフローチャートである。まず、画素p(画素p0、p1、p2、p3)を含むブロックPの量子化パラメータQPPを取得する(ステップS3101)。画素q(画素q0、q1、q2、q3)を含むブロックQの量子化パラメータQPQを取得する(ステップS3102)。画素pを含むブロックPがイントラPCMブロックの場合(ステップS3103のYES)、量子化されず、符号化劣化が無いので、量子化パラメータQPPに0を設定する(ステップS3104)。同様に、画素qを含むブロックQがイントラPCMブロックの場合(ステップS3105のYES)、量子化されず、符号化劣化が無いので、量子化パラメータQPQに0を設定する(ステップS3106)。なお、ブロックPやブロックQを含む符号化ブロックがイントラPCMブロックの場合に、ステップS3104およびステップS3106において、イントラPCMブロックの量子化パラメータQPP、QPQに0を設定したが、特に、後述するシンタックス要素beta_offset_div2及びtc_offset_div2の値の取りうる範囲が広い場合、イントラPCMブロックの量子化パラメータQPP、QPQに0の代わりに量子化パラメータQYの最小値である-QpBdOffsetYをすることで、後述する変数βおよび変数tcの値が小さくなる。その際、画質劣化のないイントラPCMブロックにかかるフィルタ強度が弱くなることで、デブロックフィルタのフィルタリング強度をより適切に設定することができる。続いて次式により、量子化パラメータQPPと量子化パラメータQPQの平均値を導出し、QPAとする(ステップS3107)。
QPA= ( QPP + QPQ + 1 ) >> 1
続いて、変数βを導出する(ステップS3108)。変数βはデブロッキングフィルタの強さを決める際に用いる変数である。量子化パラメータの平均値QPAが大きくなるほど変数βの値が大きくなる。変数βの導出においては、次式によりインデックスindexBを導出し、インデックスindexBが0より小さい場合は0、51より大きい場合は51にクリッピングして、図16の表を参照することにより、変数βを導出する。
indexB = QPA + ( beta_offset_div2 << 1 )
ただし、beta_offset_div2はシーケンス単位で符号化されるシンタックス要素であり、−13から13の値を持つ。ブロックPやブロックQを含む符号化ブロックがイントラPCMブロックの場合に、イントラPCMブロックの量子化パラメータQPPまたはQPQを-QpBdOffsetYまたは0と設定することにより、量子化パラメータの平均値QPAの値が小さくなり、βの値が小さくなる。βの値が小さい場合、後述するようにフィルタがかからなくなりやすく、ウィークフィルタが選ばれやすくなる。
続いて、変数tcを導出する(ステップS3109)。変数tcの値はデブロッキングフィルタの強さを決める際に用いる変数であり、量子化パラメータの平均値QPAや境界強度を示す変数bSの値が大きくなるほど変数tcの値が大きくなる。変数tcの導出においては、次式によりインデックスindexTcを導出し、インデックスindexTcが0より小さい場合は0、53より大きい場合は53にクリッピングして、図17の表を参照することにより、変数tcを導出する。
indexTc = QPA + 2 * ( bS - 1) + ( tc_offset_div2 << 1)
ただし、tc_offset_div2はシーケンス単位で符号化されるシンタックスであり、−13から13の値を持つ。
続いて、境界近傍の画素値の関係から評価値dを導出する(ステップS3110)。評価値dが変数β以上の場合(ステップS3111のNO)、入力画素をそのまま出力画素とし(ステップS3116)、本輝度信号のフィルタリング処理を終了する。変数βの値が小さければ、フィルタがかからなくなりやすい。
評価値dが変数βより小さい場合(ステップS3111のYES)、境界近傍の画素値と変数βの関係からデブロックフィルタの種類を決定する(ステップS3112)。本実施の形態ではストロングフィルタとウィークフィルタの2種類のフィルタを切り替えて用いる。変数βの値が大きければ、ストロングフィルタが選ばれやすくなり、変数βの値が小さければ、ウィークフィルタが選ばれやすくなる。
続いて、フィルタリングブロックのライン毎に信号をフィルタリングする(ステップS3113〜S3115)。ライン毎の信号のブロック境界を挟む画素p(画素p0、p1、p2、p3)、画素q(画素q0、q1、q2、q3)のフィルタリングを行う(ステップS3114)。
図18は第1の実施例のステップS3114のライン毎の信号のフィルタリング処理手順を示すフローチャートである。ストロングフィルタをかける場合(ステップS3201のYES)、ストロングフィルタをかける(ステップS3202)。そうでない場合(ステップS3201のNO)、ウィークフィルタをかける(ステップS3203)。フィルタがかけられた画素p'(画素p0'、p1'、p2'、p3')、画素q'(画素q0'、q1'、q2'、q3')を出力画素とし、本フィルタリング処理手順を終了する。
次に、第2の実施例について説明する。図10、図11、図14、図19、図20は画像符号化装置のデブロッキングフィルタ部111及び画像復号装置のデブロッキングフィルタ部211の第2の実施例の処理手順を説明するフローチャートである。第1の実施例とは、図10、図11、図14が同じで、図15の代わりに図19となり、図18の代わりに図20となっている。同じ処理(ステップ)には同じ番号が振られている。第2の実施例の図19は第1の実施例の図15のステップS3103〜S3106のブロックPおよびブロックQを含む符号化ブロックがイントラPCMブロックかどうかを判定し、イントラPCMの場合に量子化パラメータQPPまたはQPQを0に設定する処理が省かれている点が異なる。第2の実施例の図20は第1の実施例の図18に対して、ステップS3205〜S3208の処理が追加されている点が異なる。
図19は第2の実施例のステップS2302のブロックエッジのフィルタリング処理手順を示すフローチャートである。まず、画素pを含むブロックPの量子化パラメータQPPを取得する(ステップS3101)。画素qを含むブロックQの量子化パラメータQPQを取得する(ステップS3102)。図19のステップS3107以降の処理は第1の実施例の図15と同じであるので説明を省く。
図20は第2の実施例のステップS3114のライン毎の輝度信号のフィルタリング処理手順を示すフローチャートである。ストロングフィルタをかける場合(ステップS3201のYES)、ストロングフィルタをかける(ステップS3202)。そうでない場合(ステップS3201のNO)、ウィークフィルタをかける(ステップS3203)。フィルタがかけられた画素p'、q'を出力画素とする。
画素pを含むブロックPがイントラPCMブロックの場合(ステップS3205のYES)、入力画素pの画素値を出力画素p'に設定する(ステップS3206)。即ち、イントラPCMブロックの画素pにフィルタがかからない状態で、そのまま出力画素として出力する。画素pを含むブロックがイントラPCMブロックでない場合(ステップS3205のYES)、フィルタがかけられた画素p'がそのまま出力画素となりステップS3207に進む。
画素qを含むブロックがイントラPCMブロックの場合(ステップS3207のYES)、入力画素qの画素値を出力画素q'に設定する(ステップS3208)。即ち、イントラPCMブロックの画素qにフィルタがかからない状態で、そのまま出力画素として出力される。画素qを含むブロックがイントラPCMブロックでない場合(ステップS3207のYES)、フィルタがかけられた画素q'がそのまま出力画素となり、本フィルタリング処理手順を終了する。
第1の実施例では、ブロックPまたはブロックQのいずれか一方がイントラPCMの場合、イントラPCMブロックの量子化パラメータを0または量子化パラメータの最小値として変数βの値を算出するため、イントラPCMでない他方のブロックでも、変数βの値が小さくなり、フィルタがかからなくなったり、ウィークフィルタが選ばれやすくなり、適切にデブロッキングフィルタを施せないという課題があった。例えば、図9(a)または(b)において、輝度信号のビット深度が8ビットで、ブロックPがイントラPCM符号化で量子化パラメータQPPの値が30、ブロックQがイントラ予測モードで符号化パラメータQPQの値が30、シンタックス要素beta_offset_div2の値が0の場合、量子化パラメータQPPの値が0に設定され、符号化パラメータQPAの値は15となり、変数βの値は0となる。この場合、ブロックPだけでなくブロックQにもフィルタがかからず、ブロック歪が除去されない。
一方、第2の実施例では、イントラPCMか否かを区別せず、量子化パラメータを利用するので、適切な強さのフィルタを施すことができる。例えば、図9(a)または(b)において、輝度信号のビット深度が8ビットで、ブロックPがイントラPCM符号化で符号化パラメータQPPの値が30、ブロックQがイントラ予測モードで符号化パラメータQPQの値が30、シンタックス要素beta_offset_div2の値が0の場合、符号化パラメータQPAの値は30となり、変数βの値は22となる。この場合、ブロックQに適切なフィルタがかかり、ブロック歪が除去される。また符号化劣化のないイントラPCMブロックに関しては、常にフィルタをかけないので、イントラPCMブロックに関しても符号化劣化は生じない。
次に、第3の実施例について説明する。図10、図11、図14、図19、図21は画像符号化装置のデブロッキングフィルタ部111及び画像復号装置のデブロッキングフィルタ部211の第3の実施例の処理手順を説明するフローチャートである。第2の実施例とは、図10、図11、図14、図19が同じで、図20の代わりに図21となっている。同じ処理(ステップ)には同じ番号が振られている。第2の実施例の図21は第2の実施例の図20に対して、ステップS3204の処理が追加されている点が異なる。図10、図11、図14、図19の処理は第2の実施例と同じであり、説明を省く。
図21は第3の実施例のステップS3114のライン毎の輝度信号のフィルタリング処理手順を示すフローチャートである。ストロングフィルタをかける場合(ステップS3201のYES)、ストロングフィルタをかける(ステップS3202)。そうでない場合(ステップS3201のNO)、ウィークフィルタをかける(ステップS3203)。
続いて、フラグpcm_loop_filter_disable_flagの値を判定する(ステップS3204)。pcm_loop_filter_disable_flagはイントラPCMで符号化される画素にデブロックフィルタやその他のループフィルタをかけるかどうかを示すフラグであり、シーケンス、ピクチャまたはスライス単位で設定され、符号化される。pcm_loop_filter_disable_flagが1の場合(ステップS3204のYES)、ステップS3205に進み、pcm_loop_filter_disable_flagが0の場合(ステップS3204のNO)、フィルタがかけられた画素p'、q'を出力画素とし、本フィルタリング処理手順を終了する。
画素pを含むブロックがイントラPCMブロックの場合(ステップS3205のYES)、入力画素pの画素値を出力画素p'に設定する(ステップS3206)。即ち、イントラPCMブロックの画素pにフィルタがかからない状態で、そのまま出力画素として出力される。画素pを含むブロックがイントラPCMブロックでない場合(ステップS3205のYES)、フィルタがかけられた画素p'がそのまま出力画素となりステップS3207に進む。
画素qを含むブロックがイントラPCMブロックの場合(ステップS3207のYES)、入力画素qの画素値を出力画素q'に設定する(ステップS3208)。即ち、イントラPCMブロックの画素qにフィルタがかからない状態で、そのまま出力画素として出力される。画素qを含むブロックがイントラPCMブロックでない場合(ステップS3207のYES)、フィルタがかけられた画素q'がそのまま出力画素となり、本フィルタリング処理手順を終了する。
第3の実施例では、フラグpcm_loop_filter_disable_flagにもとづいてイントラPCMで符号化された画素にデブロックフィルタを施すかどうかを切り替えることができるため、特に高いビットレートの際に、フラグpcm_loop_filter_disable_flagに0を設定することで、ブロックがイントラPCMかどうかの判定を省略することができ、演算量を削減することが可能である。
なお、第1の実施例において、図18のライン毎の信号のフィルタリング処理手順の代わりに第3の実施例で説明した図21のライン毎の信号のフィルタリング処理手順を実施することもできる。フラグpcm_loop_filter_disable_flagにもとづいてイントラPCMで符号化された画素にデブロックフィルタを施すかどうかを切り替えることができるため、特に低いビットレートの際に、フラグpcm_loop_filter_disable_flagに1を設定し、イントラPCMブロックに対してデブロックフィルタを施さないことにより、画質劣化を抑えることができる。
以上述べた実施の形態の画像符号化装置が出力する画像の符号化ビット列は、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、画像符号化装置に対応する画像復号装置がこの特定のデータフォーマットの符号化ビット列を復号することができる。
画像符号化装置と画像復号装置の間で符号化ビット列をやりとりするために、有線または無線のネットワークが用いられる場合、符号化ビット列を通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、画像符号化装置が出力する符号化ビット列を通信路の伝送形態に適したデータ形式のパケット化された符号化ストリームに変換してネットワークに送信する画像送信装置と、ネットワークからパケット化された符号化ストリームを受信して符号化ビット列に復元して画像復号装置に供給する画像受信装置とが設けられる。
画像送信装置は、画像符号化装置が出力する符号化ビット列をバッファするメモリと、符号化ビット列をパケット化するパケット処理部と、パケット化された符号化ストリームをネットワークを介して送信する送信部とを含む。画像受信装置は、パケット化された符号化ストリームをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、画像復号装置に提供するパケット処理部とを含む。
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。