まず、本発明の実施の形態の前提となる技術について説明する。
各符号化構文に対し複数のコンテキストを対応付け、構文要素の相関性に基づいたコンテキストを選択する手法は、符号割り当てを最適化できるため、効率的な符号化ができる。
コンテキスト切替エントロピー符号化の例として、図1のフローチャートを用いて16×16サイズで符号化される差分信号の量子化直交変換係数の復号手順を説明する。図12は処理対象の量子化直交変換係数である。以下量子化直交変換係数を差分係数と呼ぶこととする。本手順においては、処理対象の16×16差分係数を4×4サイズのサブブロック401乃至416に分割して、サブブロック単位での走査を優先的に行う。
後述する走査順に従い、処理対象のサブブロックを決定する(S101)。すべてのサブブロックを走査し終えていれば、差分係数の復号処理を終了する。図7の符号902にサブブロックの走査順を示す。本手順においては、差分係数領域の最も右下のサブブロックから走査を開始し、右下から左上へ、さらに右上から左上へ、という規則に従った走査を行い、最も左上のサブブロックで走査を終える。図7の符号901はサブブロックの走査順を矢印を用いて表現した図である。図7の走査順に従う場合、すべての処理対象サブブロックにおいて、空間的に右側および下側に位置するサブブロックの走査は完了した状態となる。
図1のフローチャートに戻り、処理対象サブブロックのすべての差分係数値の復号処理を行う(S102)。サブブロック差分係数値の復号が完了後、ステップS101に移る。
サブブロック差分係数値の復号処理の詳細を図2のフローチャートを用いて説明する。
有意サブブロック情報を復号する(S201)。有意サブブロック情報は、処理対象のサブブロックに0でない差分係数が存在することを示すための1ビットのフラグである。有意サブブロック情報が1であることは、処理対象サブブロックに少なくとも1つの0でない差分係数が存在することを示す。有意サブブロック情報が0であることは、処理対象サブブロックのすべての差分係数が0であることを示す。
有意サブブロック情報の値を判定する(S202)。有意サブブロック情報が0であるときは、処理対象サブブロックのすべての差分係数値を0と設定し(S209)、サブブロック差分係数値復号処理を終了する。
有意サブブロック情報が1であるときは、処理対象サブブロックのすべての有意差分係数情報の復号処理を行う(S203)。有意差分係数情報は、処理対象位置の差分係数値が0でないことを示すための1ビットのフラグである。有意係数情報が1であることは、処理対象位置の差分係数値が0でないことを示し、有意係数情報が0であることは、処理対象位置の差分係数値が0であることを示す。サブブロックの有意差分係数情報の復号手順の詳細については後述する。サブブロックのすべての有意差分係数情報の復号が終了後、ステップS204の差分係数値の復号に移る。
差分係数値の復号処理を行う(S204)。差分係数値復号処理の詳細については後述する。差分係数値の復号処理を完了後、ステップS101へ移り、次のサブブロックの走査を行う。
[有意差分係数情報の復号処理手順]
ステップS203のサブブロックの有意差分係数情報の復号手順を図3のフローチャートを用いて説明する。
所定の走査順に従い処理対象のサブブロックを決定する(S301)。サブブロック内の差分係数の走査順は、差分係数領域におけるサブブロックの走査順と同様図7で示す規則に従うものとする。
処理対象差分係数位置に隣接し、かつ復号済みの、0でない差分係数の数の和である、周辺有意差分係数和countCoeffを算出する(S302)。図9に周辺有意差分係数和countCoeffを算出するための差分係数位置の例を示す。符号202は処理対象位置が符号201である場合の周辺差分係数、符号204は処理対象位置が符号203である場合の周辺差分係数である。図9に示すように処理対象差分係数位置の右側および下側にあり、かつ処理対象差分係数位置に隣接する5つの差分係数を周辺差分係数とする。差分係数の走査順は図7に従うものであるため、処理対象差分係数と同一サブブロックに属し、処理対象差分係数位置の右側および下側にある差分係数は復号済みである。同様に処理対象位置の属するサブブロックの右側および下側にあるサブブロックに属する有意差分係数も復号済みである。周辺差分係数和countCoeffは、有意差分係数の発生確率を推定するための変数である。画像の特性および視覚特性上有意差分係数は低域に1が集中しやすく、高域に0が集中しやすい。有意差分係数は空間的な相関性があるため、処理対象位置に隣接する差分係数を周辺差分係数和countCoeffの演算対象とする。差分係数領域の外側を示す周辺差分係数については周辺有意係数和countCoeffの計算から除外する。
図3のフローチャートに戻り、周辺有意係数和countCoeffが0であるかどうかを判定する(S303)。周辺有意係数和countCoeffが0である場合は、有意差分係数情報を復号するためのコンテキストインデックスctxIdxを0と設定し(S304)、コンテキストインデックスctxIdxに対応するコンテキストを用いて有意差分係数情報を復号する。そして差分係数値に有意差分係数情報を設定する(S308)。
周辺有意係数和countCoeffが0でない場合は、周辺有意係数和countCoeffが2以下であるかどうかを判定する(S305)。周辺有意係数和countCoeffが2以下である場合は、有意差分係数情報を復号するためのコンテキストインデックスctxIdxを1と設定し(S306)、コンテキストインデックスctxIdxに対応するコンテキストを用いて有意差分係数情報を復号する。そして差分係数値に有意差分係数情報を設定する(S308)。
周辺有意係数和countCoeffが2以下でない場合は、すなわち周辺有意係数和countCoeffが3以上である場合は、有意差分係数情報を復号するためのコンテキストインデックスctxIdxを2と設定し(S307)、コンテキストインデックスctxIdxに対応するコンテキストを用いて有意差分係数情報を復号する。そして差分係数値に有意差分係数情報を設定する(S308)。
コンテキストは復号する情報の発生確率を記憶しておくための変数であり、コンテキストで示す発生確率を元に符号語の割り当てが切り替わる。上記の例では有意差分係数を符号化するコンテキストを3つ定義しており、周辺有意差分係数和の大きさにより、有意差分係数を復号するコンテキストを決定するものである。予め、周辺有意係数和countCoeffが0個のときのコンテキストインデックスctxIdx=0に対応するコンテキストには、0となる有意係数情報の発生確率が高く、周辺有意係数和countCoeffが3個以上のときのコンテキストインデックスctxIdx=2に対応するコンテキストには、1となる有意係数情報の発生確率が高く設定されている。発生確率が高い情報に対しては、符号量を短くできるために、発生確率の推定精度を高めることにより、符号化効率を向上させることができる。
MPEG−4 AVCでは、周辺の復号済情報によりコンテキストを切り換えることによる情報の発生確率の推定に加え、復号結果による発生確率の学習を行っている。各コンテキストに対する復号すべき情報の発生確率を最適化でき、符号化効率の向上が実現されている。
一般に画像の直交変換成分は低域に情報が集中しやすい。また高域成分の劣化は視覚特性上の影響が少ないため、高域成分を粗く量子化することが実用上行われることが多い。そのため有意係数情報は低域成分に集中する傾向がある。有意係数情報は周辺有意係数との相関が高く、周辺有意係数情報の数によりコンテキストの切り替えを行うことは符号化効率の観点からは合理的である。
[差分係数値復号処理]
図2のフローチャートのステップS204のサブブロックの差分係数値の復号手順を図13のフローチャートを用いて説明する。
所定の走査順に従い処理対象のサブブロックを決定する(S501)。サブブロック内の差分係数の走査順は、有意差分係数情報の走査順と同様、図7で示す規則に従うものとする。サブブロックのすべての差分係数を走査し終えていれば差分係数値の復号処理を完了し、次のサブブロックの決定手順(S101)へ移る。
処理対象差分係数位置の差分係数値が0であるかどうかを判定する(S502)。処理対象差分係数位置の差分係数値が0である場合は、処理対象差分係数位置の差分係数値の復号を完了し、ステップS501へ移る。
処理対象差分係数位置の差分係数値が1である場合は、処理対象差分係数位置の差分係数の絶対値を復号する(S503)。本手順を実行する場合は、差分係数値が0でないことが確定しており、符号化系列としては差分係数の絶対値から1を減じた値に対応した符号語が符号化される。よって差分係数の絶対値としては符号語をエントロピー復号した値に1を加えた値を設定する。
処理対象差分係数位置の差分係数の符号を復号する(S504)。差分係数の絶対値と差分係数の符号から差分係数値を決定する。
上記有意差分係数情報復号手順において、図9の201は、図7の902の走査順で示す通りサブブロックで最後に走査され、図7の902に示すように、その走査順は16である。また、201の周辺差分係数202のうち、201の下に隣接する位置の走査順は15であり、201の直前に走査される。201の有意差分係数情報を復号するために必要となるコンテキストインデックスctxIdxは、202の有意差分係数和を元に算出することから、202の有意差分係数情報の復号を完了するまでは、201のコンテキストインテックスctxIdxを確定させることができない。これはサブブロック内のすべての有意差分係数情報に対して、ctxIdxの計算と有意差分係数情報の復号とを逐次的に処理する必要があり、並列化による時間計算量の削減は不可能であることを意味する。一方、差分係数は符号化系列に占める割合が高く、有意差分係数情報のコンテキストインデックス算出処理および復号処理は復号処理全体に占める時間計算量が大きい。すなわち有意係数情報の復号処理は実時間復号処理上の最大のボトルネックとなる。
特許文献1には、発生頻度の高い構文要素に対するコンテキストはアクセスレイテンシの小さなメモリ上に配置することにより復号に係る処理遅延を削減する手法が開示されている。しかしながら特許文献1の手法はコンテキストインデックスの算出と構文要素の復号の依存性を解消するものではなく、これらを並列的に実行できないという点では処理遅延に対する本質的な解決とはいえない。
そこで、本発明の実施の形態では、差分係数符号化/復号において、コンテキストインデックスの計算と有意差分係数情報の符号化/復号の間の依存性をなくし、並列処理可能で演算量の少ないコンテキストインデックス算出方法を実現し、回路構成が簡単で、実時間処理に適した画像符号化技術を提供する。また、相関上適切な周辺差分係数を参照したコンテキストインデックスの計算を実現することにより、符号化効率の高い画像符号化技術を提供する。以下、本発明の実施の形態を説明する。
以下の説明において、「処理対象ブロック」とは、画像符号化装置による符号化処理の場合は、符号化対象ブロックのことであり、画像復号装置による復号処理の場合は、復号対象ブロックのことである。「既処理ブロック」とは、画像符号化装置による符号化処理の場合は、符号化済みの復号されたブロックのことであり、画像復号装置による復号処理の場合は、復号済みのブロックのことである。以下、断りのない限り、この意味で用いる。
[符号化装置]
本発明を実施する好適な画像符号化装置について図面を参照して説明する。図5は実施の形態に係る画像符号化装置の構成を示すブロック図である。実施の形態の画像符号化装置は、減算部501と、直交変換・量子化部502と、逆量子化・逆変換部503と、加算部504と、復号画像メモリ505と、予測部506と、差分情報符号化部507と、予測情報符号化部508と、モード判定部509とを備える。
モード判定部509は、すべての予測候補の符号化を試み、画像のブロック毎に最適な予測情報を決定する。予測情報としては、分割ブロックサイズ、画面間予測/画面内予測を示す予測モードを含み、さらに予測モードが画面間予測である場合は、動きベクトル、参照ピクチャインデックス等の動き情報を、予測モードが画面内予測である場合は画面内予測モードを含む。決定した予測情報を予測部506と、予測情報符号化部508に与える。
予測情報符号化部508は、入力された予測情報を可変長符号化して予測情報の符号化系列を出力する。
予測部506は、入力された予測情報と、復号画像メモリ505に記憶した既復号画像を用いて予測画像を生成し、生成した予測画像を減算部501へ与える。
減算部501は、符号化対象の原画像から予測画像を減ずることにより差分画像を生成し、生成した差分信号を直交変換・量子化部502に与える。
直交変換・量子化部502は、差分画像に対し直交変換・量子化をして差分係数を生成し、生成した差分係数を逆量子化・逆変換部503と差分情報符号化部507に与える。
差分情報符号化部507は、差分係数をエントロピー符号化して差分情報の符号化系列を出力する。
逆量子化・逆変換部503は、直交変換・量子化部502から受け取った差分係数に対し逆量子化・逆直交変換をして復号差分信号を生成し、生成した復号差分信号を加算部504に与える。
加算部504は、予測画像と復号差分信号を加算して復号画像を生成し、生成した復号画像を復号画像メモリ505に格納する。
[復号装置]
本発明を実施する好適な画像復号装置について図面を参照して説明する。図6は実施の形態に係る動画像復号装置の構成を示すブロック図である。実施の形態の画像復号装置は、差分情報復号部801と、逆量子化・逆変換部802と、予測情報復号部803と、加算部804と、復号画像メモリ805と、予測部806とを備える。
図6の画像復号装置の復号処理は、図5の画像符号化装置の内部に設けられている復号処理に対応するものであるから、図8の逆量子化・逆変換部802、加算部804、復号画像メモリ805、および予測部806の各構成は、図5の画像符号化装置の逆量子化・逆変換部503、加算部504、復号画像メモリ505、および予測部506の各構成とそれぞれ対応する機能を有する。
予測情報復号部803は、入力された予測情報符号化系列をエントロピー復号して予測情報を生成し、生成した予測情報を予測部806に与える。
予測部806は、入力された予測情報と、復号画像メモリ805に記憶した既復号画像を用いて予測画像を生成し、生成した予測画像を加算部804へ与える。
差分情報復号部801は、差分情報をエントロピー復号して差分情報を生成する。生成した差分情報を逆量子化・逆変換部802に与える。
逆量子化・逆変換部802は、差分情報復号部801から受け取った差分情報に対し逆量子化・逆直交変換をして復号差分信号を生成し、生成した復号差分信号を加算部804に与える。
加算部804は、予測画像と復号差分信号を加算して復号画像を生成し、生成した復号画像を復号画像メモリ805に格納し、出力する。
本発明の実施の形態に係る差分係数符号化及び復号処理は、図5の動画像符号化装置の差分情報符号化部507及び図8の動画像復号装置の差分情報復号部801において実施される。以下、実施の形態に係る差分情報符号化及び復号処理の詳細を説明する。
[符号化ブロック]
実施の形態では、図14で示されるように、画面を矩形ブロックにて階層的に分割するとともに、各ブロックに対し所定の処理順による逐次処理を行う。分割する各ブロックを符号化ブロックとよぶ。図18のブロック1817は、実施の形態において分割の最大単位であり、これを最大符号化ブロックとよぶ。図14のブロック1816は、実施の形態において分割の最小単位であり、これを最小符号化ブロックとよぶ。以下最小符号化ブロックを4×4画素、最大符号化ブロックを16×16画素として説明を行う。
[予測ブロック]
符号化ブロックのうち、イントラ予測を行う単位を予測ブロックと呼ぶ。予測ブロックは最小符号化ブロック以上、最大符号化ブロック以下のいずれかの大きさを持つ。図14ではブロック1802、1803、および1804が16×16ブロック、ブロック1805、1810、1811、および1801が8×8ブロック、ブロック1806、1807、1808、1809が4×4ブロックである。ブロック1812、1813、1814、1815は未処理ブロックであり、符号化ブロックサイズが確定していない。符号化手順においては最適な予測ブロックサイズを決定し、予測ブロックサイズを符号化する。復号手順においてはビットストリームより予測ブロックサイズを取得する。以下、予測ブロックを処理単位として説明を行う。
[差分係数の処理単位]
量子化・直交変換を行う単位は、予測ブロックの単位と同一であるとするが、符号化・復号処理においては、差分係数領域を複数のサブブロックに分割して走査するものとする。サブブロックの大きさは4×4サイズとする。図12に16×16サイズの差分係数領域を示す。401乃至416はサブブロックである。ただし、量子化・直交変換を行う単位を予測ブロックの単位と独立に決定しても良い。
(第1の実施例)
[符号化手順]
本発明の実施の形態に係る差分情報の符号化方法の第1の実施例を説明する。図15は図5の差分情報符号化部507の第1の実施例の詳細な構成のブロック図である。第1の実施例の差分情報符号化部507は、算術符号化部701、差分係数バッファ702、符号化制御部703、コンテキストメモリ704、及び走査制御部705を備え、さらに符号化制御部703は、有意係数情報符号化制御部706、差分係数値符号化制御部707、及び有意サブブロック情報符号化制御部708を備える。
以下、図16、図17、図18、及び図19のフローチャートも参照しながら、差分係数の符号化手順を説明する。
走査制御部705は、処理対象サブブロックを決定する(S601)。すべてのサブブロックを走査し終えていれば、差分係数の復号処理を終了する。図7の902にサブブロックの走査順を示す。本手順においては、差分係数領域の最も右下のサブブロックから走査を開始し、右下から左上へ、さらに右上から左上へ、という規則に従った走査を行い、最も左上のサブブロックで走査を終える。上述した通りコンテキストは符号化過程による更新が行われる。この走査順をとることは、差分係数の発生しやすい低域成分の符号化を高域成分よりも後に行うことにより、低域成分の差分係数の発生確率の推定精度を向上させるという処理上の利点がある。図7の符号901はサブブロックの走査順を矢印を用いて表現した図である。図7の走査順に従う場合、処理対象サブブロックに対し空間的に右側および下側に位置するサブブロックの走査は完了した状態となる。処理対象サブブロックに対し、サブブロックの符号化処理を行う(S602)。
[サブブロック符号化手順(S602)]
有意サブブロック情報符号化制御部708は、差分係数バッファ702から処理対象サブブロックを取得する。サブブロックのすべての差分係数を走査し、すべての差分係数値が0であった場合は、有意サブブロック情報を0と設定する。そうでない場合(少なくとも一つ0でない差分係数値が存在する場合)は、有意サブブロック情報を1と設定する(S701)。
有意サブブロック情報符号化制御部708は、差分係数バッファ702から処理対象サブブロックに隣接し、かつ復号済みであるサブブロックに含まれる差分係数を参照し、有意サブブロック情報を符号化するためのコンテキストインデックスctxIdxを決定する。コンテキストインデックスctxIdxに対応するコンテキストをコンテキストメモリ704から読み出す。算術符号化部701に対し、有意サブブロック情報とコンテキストを送る。算術符号化部701は、コンテキストを用いて有意サブブロック情報の符号化を行う(S702)。
有意サブブロック情報符号化制御部708は、有意サブブロック情報の値を判定する(S703)。有意サブブロック情報が0であるときは、サブブロック差分係数値符号化処理を終了し、ステップS601へ移る。
有意サブブロック情報が1であるときは、処理対象サブブロックのすべての有意差分係数情報の符号化処理を行う(S704)。有意差分係数情報の符号化手順の詳細については後述する。サブブロックのすべての有意差分係数情報の符号化が終了後、ステップS704の差分係数値の符号化へ移る。
差分係数値符号化制御部707は、処理対象サブブロックのすべての差分係数値の符号化処理を行う(S705)。サブブロックの差分係数値の符号化手順の詳細については後述する。サブブロックのすべての差分係数値の符号化が終了後、ステップS601へ移る。
[有意差分係数情報の符号化処理手順(S704)]
有意係数情報符号化制御部706は、処理対象サブブロックの周辺の0でない差分係数の数の和、すなわち周辺有意係数和countCoeffを算出する(S801)。本手順では処理対象サブブロックの空間的に右側および下側にあるサブブロックに属し、処理対象サブブロックと隣接する差分係数を周辺差分係数と定義する。
図10に周辺差分係数位置を示す。符号301は処理対象サブブロックであり、符号302は周辺差分係数である。差分係数領域の外側を示す周辺差分係数については周辺有意係数和countCoeffの計算から除外する。処理対象サブブロックの右側かつ下側のサブブロックに属する差分係数303においては、周辺差分係数に含める構成と含めない構成のどちらも取りうる。符号303を周辺差分係数に含める構成においては、周辺差分係数の数が多くなり有意差分係数情報発生確率を高精度に推定でき、符号303を周辺差分係数に含めない構成においては、周辺有意係数和countCoeffに係る加算処理の削減、および差分係数領域の境界判定処理の削減により演算量・回路規模の削減ができる。
有意係数情報符号化制御部706は、処理対象の差分係数を決定する(S802)。サブブロック内の差分係数の走査順は、差分係数領域におけるサブブロックの走査順と同様図7で示す規則に従う。サブブロックのすべての有意差分係数を走査し終えていれば有意差分係数の符号化処理を終了し、差分係数値の符号化手順(S704)へ移る。
有意係数情報符号化制御部706は、周辺有意係数和countCoeffが0であるかどうかを判定する(S803)。
周辺有意係数和countCoeffが0である場合は、処理対象サブブロック内の処理対象差分係数位置を判定する(S804)。水平方向差分係数位置をposX、垂直方向差分係数位置をposYとし、処理対象差分係数位置をpos=posX+posYとする。pos<=2であれば、有意係数情報を符号化するためのコンテキストインデックスctxIdxを1と設定し(S805)、そうでなければ(pos>2)、コンテキストインデックスctxIdxを0と設定する(S806)。countCoeff=0である場合の、コンテキストインデックスctxIdxの定義を図11の符号601に示す。
周辺有意係数和countCoeffが0でないときは、周辺有意係数和countCoeffが1以下であるかどうかを判定する(S807)。周辺有意係数和countCoeffが1以下である場合は、処理対象サブブロック内の処理対象差分係数位置を判定する(S408)。pos<=3であれば、有意係数情報を復号するためのコンテキストインデックスctxIdxを1と設定し(S809)、そうでなければ(pos>3)、コンテキストインデックスctxIdxを0と設定する(S810)。countCoeff=1である場合の、コンテキストインデックスctxIdxの定義を図11の符号602に示す。
周辺有意係数和countCoeffが1以下でないときは、周辺有意係数和countCoeffが2以下であるかどうかを判定する(S811)。周辺有意係数和countCoeffが2以下である場合は、処理対象サブブロック内の処理対象差分係数位置を判定する(S812)。pos<=2であれば、有意係数情報を復号するためのコンテキストインデックスctxIdxを2と設定し(S813)、そうでなければ(pos>2)、コンテキストインデックスctxIdxを1と設定する(S814)。countCoeff=2である場合の、コンテキストインデックスctxIdxの定義を図11の符号603に示す。
周辺有意係数和countCoeffが2以下でないときは、有意係数情報を復号するためのコンテキストインデックスctxIdxを2と設定する(S815)。countCoeff>2である場合の、コンテキストインデックスctxIdxの定義を図11の符号605に示す。
有意係数情報符号化制御部706は、差分係数バッファ702から処理対象位置の差分係数を取得する。差分係数値が0でない場合は、有意差分係数情報を1と設定し、そうでないとき(差分係数値が0である場合)は、有意差分係数情報を0と設定する(S816)。
有意係数情報符号化制御部706は、決定したコンテキストインデックスctxIdxに対応するコンテキストをコンテキストメモリ704から読み出した後、算術符号化部701に対し、有意差分係数情報とコンテキストを送る。算術符号化部701は、コンテキストを用いて有意差分係数情報を符号化する(S817)。
[差分係数値符号化処理(S705)]
差分係数値符号化制御部707は、処理対象の差分係数を決定する(S901)。サブブロック内の差分係数の走査順は、有意差分係数の走査順と同様、図7で示す規則に従うものとする。サブブロックのすべての差分係数を走査し終えていれば差分係数値の符号化処理を終了し、次のサブブロックの決定手順(S601)へ移る。
差分係数値符号化制御部707は、処理対象差分係数位置の差分係数値が0であるかどうかを判定する(S902)。処理対象差分係数位置の差分係数値が0である場合は、処理対象差分係数位置の差分係数値の符号化を完了し、ステップS901へ移る。
処理対象差分係数位置の差分係数値が0でない場合は、処理対象差分係数位置の符号化差分係数絶対値、及び符号を計算する(S903、S904)。本手順が実行されるときは差分係数値が0でないことが確定しているため、符号化差分係数絶対値は差分係数の絶対値から1を減じた値とする。また差分係数が正である場合は符号を0に設定し、差分係数が負である場合は、符号を1に設定する。
差分係数値符号化制御部707は、コンテキストをコンテキストメモリ704から読み出した後、算術符号化部701に対し、符号化絶対値とコンテキストを送る。算術符号化部701は、コンテキストを用いて符号化絶対値を符号化する(S905)。
差分係数値符号化制御部707は、コンテキストをコンテキストメモリ704から読み出した後、算術符号化部701に対し、符号とコンテキストを送る。算術符号化部701は、コンテキストを用いて符号化絶対値を符号化する(S905)。
[復号手順]
本発明の実施の形態に係る差分係数の復号方法の第1の実施例を説明する。図8は図6の差分情報復号部801の第1の実施例の詳細な構成のブロック図である。第1の実施例の差分情報復号部801は、算術復号部1001、差分係数バッファ1002、復号制御部1003、コンテキストメモリ1004、及び走査制御部1005を備え、さらに復号制御部1003は、有意係数情報復号制御部1006、差分係数値復号制御部1007、及び有意サブブロック情報復号制御部1008を備える。
図8の差分情報復号部801における差分情報復号処理は、図5の差分情報符号化部507における差分情報符号化処理に対応するものであるから、図8の差分情報符号化部における差分係数バッファ1002、コンテキストメモリ1004、及び走査制御部1005の各構成は、図15の差分係数バッファ702、コンテキストメモリ704、及び走査制御部705の各構成とそれぞれ対応する機能を有する。
以下、図1、図2、図4、および図13のフローチャートも参照しながら、差分情報の復号手順を説明する。
走査制御部1005は、処理対象サブブロックを決定する(S101)。すべてのサブブロックを走査し終えていれば、差分係数の復号処理を終了する。図7の902にサブブロックの走査順を示す。本手順においては、差分係数領域の最も右下のサブブロックから走査を開始し、右下から左上へ、さらに右上から左上へ、という規則に従った走査を行い、最も左上のサブブロックで走査を終える。図7の901はサブブロックの走査順を矢印を用いて表現した図である。図7の走査順に従う場合、処理対象サブブロックに対し空間的に右側および下側に位置するサブブロックの走査は完了した状態となる。処理対象サブブロックに対し、サブブロックの復号処理を行う(S102)。
[サブブロック復号(S102)]
有意サブブロック情報復号制御部1008は、差分係数バッファ1002から処理対象サブブロックに隣接し、かつ復号済みであるサブブロックに含まれる差分係数を参照し、有意サブブロック情報を復号するためのコンテキストを決定し、決定したコンテキストをコンテキストメモリ1004から読み出す。算術復号部1001に対し、コンテキストとともに復号命令を送る。算術復号部1001は、コンテキストを用いて符号化系列の復号処理を行い、有意サブブロック情報を復号する(S201)。
有意サブブロック情報復号制御部1008は、有意サブブロック情報の値を判定する(S202)。有意サブブロック情報が0であるときは、差分係数バッファ1002の処理対象サブブロックのすべての差分係数値を0と設定し(S209)、サブブロック差分係数値復号処理を終了する。
有意サブブロック情報が1であるときは、処理対象サブブロックのすべての有意差分係数情報の復号処理を行う(S203)。サブブロックの有意差分係数情報の復号手順の詳細については後述する。サブブロックのすべての有意差分係数情報の復号が終了後、ステップS204の差分係数値の復号に移る。
処理対象サブブロックのすべての差分係数値の復号処理を行う(S204)。サブブロックの差分係数値の復号手順の詳細については後述する。サブブロックのすべての差分係数値の復号が終了後、ステップS101へ移る。
[有意差分係数情報の復号処理手順(S203)]
有意係数情報復号制御部1006は、処理対象差分係数位置の周辺の有意差分係数の数の和countCoeffを算出する(S401)。本手順では処理対象サブブロックの空間的に右側および下側にあるサブブロックに属し、処理対象サブブロックと隣接する差分係数を周辺差分係数と定義する。
図10に周辺差分係数位置を示す。符号301は処理対象サブブロックであり、符号302は周辺差分係数である。差分係数領域の外側を示す周辺差分係数については周辺有意係数和countCoeffの計算から除外する。処理対象サブブロックの右側かつ下側のサブブロックに属する差分係数303においては、周辺差分係数に含める構成と含めない構成のどちらも取りうる。符号303を周辺差分係数に含める構成においては、周辺差分係数の数が多くなり有意差分係数情報発生確率を高精度に推定でき、符号303を周辺差分係数に含めない構成においては、周辺有意係数和countCoeffに係る加算処理の削減、および差分係数領域の境界判定処理の削減により演算量・回路規模の削減ができる。
有意係数情報復号制御部1006は、処理対象の差分係数を決定する(S402)。サブブロック内の差分係数の走査順は、差分係数領域におけるサブブロックの走査順と同様図7で示す規則に従うものとする。サブブロックのすべての有意差分係数を走査し終えていれば有意差分係数の復号処理を完了し、差分係数値の復号手順(S204)へ移る。 有意係数情報復号制御部1006は、周辺有意係数和countCoeffが0であるかどうかを判定する(S403)。周辺有意係数和countCoeffが0である場合は、処理対象サブブロック内の処理対象差分係数位置を判定する(S404)。水平方向差分係数位置をposX、垂直方向差分係数位置をposYとし、処理対象差分係数位置をpos=posX+posYとする。pos<=2であれば、有意係数情報を復号するためのコンテキストctxIdxを1と設定し(S405)、そうでなければ(pos>2)、コンテキストctxIdxを0と設定する(S406)。countCoeff=0である場合の、コンテキストの定義を図11の符号601に示す。決定したコンテキストをコンテキストメモリ1004から読み出した後、算術復号部1001に対し、コンテキストとともに復号命令を送る。算術復号部1001は、コンテキストを用いて符号化系列の復号処理を行い、有意差分係数情報を復号する(S416)。
周辺有意係数和countCoeffが0でないときは、周辺有意係数和countCoeffが1以下であるかどうかを判定する(S407)。周辺有意係数和countCoeffが1以下である場合は、処理対象サブブロック内の処理対象差分係数位置を判定する(S408)。pos<=3であれば、有意係数情報を復号するためのコンテキストインデックスctxIdxを1と設定し(S409)、そうでなければ(pos>3)、コンテキストインデックスctxIdxを0と設定する(S410)。countCoeff=1である場合の、コンテキストの定義を図11の符号602に示す。決定したコンテキストをコンテキストメモリ1004から読み出した後、算術復号部1001に対し、コンテキストとともに復号命令を送る。算術復号部1001は、コンテキストを用いて符号化系列の復号処理を行い、有意差分係数情報を復号する(S416)。
周辺有意係数和countCoeffが1以下でないときは、周辺有意係数和countCoeffが2以下であるかどうかを判定する(S411)。周辺有意係数和countCoeffが2以下である場合は、処理対象サブブロック内の処理対象差分係数位置を判定する(S412)。pos<=2であれば、有意係数情報を復号するためのコンテキストインデックスctxIdxを2と設定し(S413)、そうでなければ(pos>2)、コンテキストインデックスctxIdxを1と設定する(S414)。countCoeff=2である場合の、コンテキストの定義を図11の符号603に示す。決定したコンテキストをコンテキストメモリ1004から読み出した後、算術復号部1001に対し、コンテキストとともに復号命令を送る。算術復号部1001は、コンテキストを用いて符号化系列の復号処理を行い、有意差分係数情報を復号する(S416)。
周辺有意係数和countCoeffが2以下でないときは、有意係数情報を復号するためのコンテキストインデックスctxIdxを2と設定する(S415)。countCoeff>2である場合の、コンテキストの定義を図11の符号605に示す。決定したコンテキストをコンテキストメモリ1004から読み出した後、算術復号部1001に対し、コンテキストとともに復号命令を送る。算術復号部1001は、コンテキストを用いて符号化系列の復号処理を行い、有意差分係数情報を復号する(S416)。
周辺有意係数和countCoeffが大きいときは、処理対象サブブロック内のすべての有意係数情報が1となる可能性が高い。そのため、上記手順においては周辺有意係数和countCoeffが3以上の場合はposの値に関わらずctxIdxを2と設定する。また周辺有意係数和countCoeffの判定条件を細分化することも可能である。例えば、周辺有意係数和countCoeffが3以上の場合に、周辺有意係数和countCoeffが3であれば図11の符号604、周辺有意係数和countCoeffが4以上であれば図11の符号605のコンテキストインデックス定義をとることもできる。このような構成をとる場合、周辺情報の相関性利用効率が向上し、符号化効率を向上させることができる。
本手順においては、有意差分係数情報のためのコンテキストインデックスctxIdxの算出に、復号済み隣接サブブロックの有意係数情報の数の和と、処理対象差分係数のサブブロック内位置を参照する。このような構成をとる理由を以下で説明する。
一般に画像の直交変換係数は低域成分に集中しやすく、有意係数情報が1になる可能性が高い。さらに直交変換係数の高域成分は視覚上の影響を受けにくいことから粗く量子化されることが多いため、高域成分の係数値は0となり、高域成分の有意係数情報は0となる可能性が高い。この性質は差分係数領域全体に限らず、各サブブロックに対しても同様であり、サブブロックの低域側にある成分は、同一サブブロックの高域側にある成分と比べて有意係数情報が1になる可能性が高くなると言える。サブブロック内で低域にある有意差分係数情報のコンテキストインデックスctxIdxの値を高域にある有意差分係数情報のコンテキストインデックスctxIdxの値よりも大きく設定することは、有意係数情報の発生確率の推定精度の向上につながる。また、有意差分係数が0となる確率が高い高域では周辺有意係数和も小さくなり、有意差分係数が1となる確率が高い低域では周辺有意係数和も大きくなる傾向が強く、処理対象サブブロックが有意差分係数情報をどの程度含むかという指標として周辺有意係数和を用いることは有意係数情報の発生確率の推定精度の向上につながる。
本手順においては、周辺有意差分係数和をサブブロックに対し1回だけ算出し、サブブロック内のすべての係数位置のコンテキストインデックスを計算することが可能である。各係数位置で個別に周辺有意差分係数和を計算する方法と比べ、周辺有意差分係数和の演算量を削減することができる。また、コンテキストインデックスの算出に、走査順で直前となる有意差分係数の復号結果を利用する構成では、サブブロック内のコンテキストインデックス算出と有意差分係数復号をすべて逐次的に処理する必要がある。本実施例では、コンテキストインデックスの算出に周辺有意差分係数和と処理対象係数位置を参照するものであるが、周辺有意差分係数和は処理対象サブブロックに属する差分係数を対象としないため、コンテキストインデックスの算出にサブブロック内の依存関係が存在しない。すべての有意差分係数に対するコンテキストインデックスをサブブロックの先頭で計算することが可能であるため、コンテキストインデックスの算出を有意差分係数情報の復号処理と並列的に計算することも可能である。符号化系列中の発生頻度が高い有意係数情報の復号に係る処理遅延を削減することができる。
周辺有意係数を参照する代わりに有意サブブロック情報を参照してコンテキスト計算をすることも可能である。換言すれば、周辺有意係数の和ではなく、隣接する有意サブブロック情報の和に基づいて、コンテキストを算出することもできる。処理対象サブブロックの、例えば右側に隣接するサブブロックの有意サブブロック情報と、例えば下側に隣接するサブブロックの有意サブブロック情報の和を利用する構成は、上述した構成と比べ、演算量・回路規模を削減することが可能となる。また、サブブロック位置をコンテキスト計算に反映させることも可能である。上述した通り、低域成分の方が高域と比べ有意係数の発生確率が高くなる特性がある。サブブロック位置をコンテキスト計算に反映させることにより、より高精度のコンテキスト推定を実現することもできる。図20は差分係数領域を低域領域と高域領域の2領域に分類した例である。図20の符号1101、1102、1103、1104、1105、1109を低域成分とし、符号1106、1107、1108、1110、1111、1112、1113、1114、1115、1116を高域領域とする。高域領域に対しては上述した手順でコンテキストインデックスctxIdxを算出するとした上で、低域領域に対しては、上述したコンテキストインデックスctxIdxに所定のサブブロック位置に応じたオフセットを加算する構成をとることもできるし、低域領域に対しては上述したコンテキストインデックスctxIdxの計算中にサブブロック位置に寄る条件分岐を追加するような構成をとることもできる。また低域領域に対して上述した手順でコンテキストインデックスctxIdxを算出するとした上で、高域領域に対しては、一般に有意差分係数が0となる可能性が高く、周辺の有意差分係数の数は確率推定上の誤差を含みやすいことから、常にコンテキストctxIdx=0を設定する構成をとることもできる。
また、周辺有意差分係数和の代わりに周辺係数絶対値和を用いてコンテキストインデックスを算出することも可能である。一般に低域成分の差分係数絶対値は大きいため、周辺差分係数絶対値和が大きい場合は有意差分係数情報の発生確率が高くなるようなコンテキストを設定することにより符号化効率を向上させることができる。
さらに差分係数を算出する際に用いた予測モードを有意差分係数のコンテキストインデックス算出手順中の条件判定に加えることによりコンテキスト推定の精度を向上させることも可能である。一般に、復号対象画像の復号済領域のみが参照対象となる画面内予測と比べ、複数の復号画像を参照できる画面間予測は予測精度が高く差分が発生しにくいという特性の違いがあるためである。
[差分係数値復号処理(S204)]
有意係数情報復号制御部1006は、処理対象の差分係数を決定する(S501)。サブブロック内の差分係数の走査順は、有意差分係数の走査順と同様、図7で示す規則に従うものとする。サブブロックのすべての差分係数を走査し終えていれば差分係数値の復号処理を完了し、次のサブブロックの決定手順(S101)へ移る。
有意係数情報復号制御部1006は、処理対象差分係数位置の差分係数値が0であるかどうかを判定する(S502)。処理対象差分係数位置の差分係数値が0である場合は、処理対象差分係数位置の差分係数値の復号を完了し、ステップS501へ移る。
処理対象差分係数位置の差分係数値が1である場合は、処理対象差分係数位置の差分係数の絶対値を復号する(S503)。本手順を実行する場合は、差分係数値が0でないことが確定しており、符号化系列としては差分係数の絶対値から1を減じた値に対応した符号語が復号される。よって差分係数の絶対値としては符号語をエントロピー復号した値に1を加えた値を設定する。
処理対象差分係数位置の差分係数の符号を復号する(S504)。差分係数の絶対値と差分係数の符号から差分係数値を決定する。
本実施例は、復号済サブブロックの有意差分係数情報から、有意差分係数情報を復号するためのコンテキストインデックスを算出するものであるが、同様の手順を差分係数値のコンテキストインデックス算出に適用することも可能である。有意差分係数情報と同様、差分係数値は周辺係数値との相関、および低域成分への集中性を持つため、周辺有意差分係数和または周辺差分係数絶対値和が大きいときは、大きな差分係数値の発生確率が高いことを示すコンテキストインデックスを設定し、周辺有意差分係数和または周辺差分係数絶対値和が小さいときは、小さな差分係数値の発生確率が高いことを示すコンテキストインデックスを設定することにより、差分係数値を効率的に符号化できる。
以上述べた第1の実施例の画像符号化装置および画像復号装置は、以下の作用効果を奏する。
(1)処理対象差分係数の属するサブブロックに隣接した復号済みサブブロックに属する差分係数から処理対象差分係数のコンテキストインデックスを算出可能である。周辺有意差分係数和が大きいときは、有意差分係数情報1の発生確率を高く、周辺有意差分係数和が小さいときは、有意差分係数情報0の発生確率を高く推定するコンテキストを設定することにより、有意差分係数情報の周辺相関に基づいた適切な確率モデルの設定が可能である。したがって、有意差分係数情報を効率的に符号化できる。
(2)処理対象差分係数のサブブロック内の位置に基づきコンテキストインデックスを算出する。サブブロック内で低域にある差分係数は、サブブロック内で高域にある差分係数よりも有意差分係数1の発生確率を高く推定するコンテキストを設定する。有意差分係数情報の周波数領域上の性質に基づいた適切な確率モデルの設定が可能であり、有意差分係数情報を効率的に符号化できる。
(3)周辺有意差分係数和の算出およびサブブロック内の処理対象差分係数の位置は、サブブロック内の有意差分係数情報の復号結果に依存しない。よってサブブロック内のコンテキストインデックスの算出と有意差分係数情報の復号を並列的に処理をする構成をとることができるため、有意差分係数情報の復号処理に係る処理遅延を削減することができる。差分係数は符号化系列に対して占有する割合が高く、処理回数の多い有意差分係数情報の処理遅延を削減することにより、実時間処理に適した復号装置を実現できる。また、符号化装置においても同様に有意差分係数情報符号化の処理遅延を削減することができる。
(4)有意差分係数情報のコンテキストインデックス算出に係る周辺有意差分係数和、つまり有意サブブロック情報、有意差分係数情報、又は差分係数の絶対値の和に基づく算出結果は、処理対象差分係数の位置に依存しないため、サブブロックで1度算出するだけでよい。処理対象差分係数位置に応じて個別の周辺有意差分係数和を算出する構成と比べ、コンテキストインデックス算出に係る演算量を削減することができる。
以上述べた実施の形態の画像符号化装置が出力する画像の符号化ストリームは、実施の形態で用いられた符号化方法に応じて復号することができるように特定のデータフォーマットを有しており、画像符号化装置に対応する画像復号装置がこの特定のデータフォーマットの符号化ストリームを復号することができる。
画像符号化装置と画像復号装置の間で符号化ストリームをやりとりするために、有線または無線のネットワークが用いられる場合、符号化ストリームを通信路の伝送形態に適したデータ形式に変換して伝送してもよい。その場合、画像符号化装置が出力する符号化ストリームを通信路の伝送形態に適したデータ形式の符号化データに変換してネットワークに送信する画像送信装置と、ネットワークから符号化データを受信して符号化ストリームに復元して画像復号装置に供給する画像受信装置とが設けられる。
画像送信装置は、画像符号化装置が出力する符号化ストリームをバッファするメモリと、符号化ストリームをパケット化するパケット処理部と、パケット化された符号化データをネットワークを介して送信する送信部とを含む。画像受信装置は、パケット化された符号化データをネットワークを介して受信する受信部と、受信された符号化データをバッファするメモリと、符号化データをパケット処理して符号化ストリームを生成し、画像復号装置に提供するパケット処理部とを含む。
以上の符号化及び復号に関する処理は、ハードウェアを用いた伝送、蓄積、受信装置として実現することができるのは勿論のこと、ROM(リード・オンリ・メモリ)やフラッシュメモリ等に記憶されているファームウェアや、コンピュータ等のソフトウェアによっても実現することができる。そのファームウェアプログラム、ソフトウェアプログラムをコンピュータ等で読み取り可能な記録媒体に記録して提供することも、有線あるいは無線のネットワークを通してサーバから提供することも、地上波あるいは衛星ディジタル放送のデータ放送として提供することも可能である。
以上、本発明を実施の形態をもとに説明した。実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。