明 細 書
符号化装置
技術分野
[0001] 本発明は、符号化装置及び方法に関し、特に、算術符号化を適用した符号化装置 及び方法に関する。
背景技術
[0002] 算術符号化は、情報源シンボルの発生確率に応じて情報量を理論限界まで可逆 圧縮できる技術である。画像符号化の分野では、 JPEG2000規格 (ISO/IEC154 44)、H. 264/MPEG4— AVC規格 (非特許文献 1参照。以下「H. 264規格」と称 す。)等に採用されている。 H. 264規格においては、コンテキスト適応算術符号化( CABAC: Context Adaptive Binary Arithmetic Coding)として、シンタック スの確率特性に応じた効率の高!/、符号化を実現して!/、る。
[0003] H. 264規格におけるコンテキスト適応算術符号化について、図 22を用いて説明 する。図 22は、コンテキスト適応算術符号化回路を説明する図である。
[0004] 図 22においてコンテキスト適応算術符号化回路 145は、 2値化回路 130、コンテキ スト計算回路 520、及び算術符号化回路 140から構成される。以下、この回路の動 作について説明する。
[0005] 2値化回路 130は変換係数データ、フラグ等の符号化情報からなる多値入力デー タに対して 2値化を行う。 2値化は、制御情報から、入力データの種類であるシンタツ タスエレメント(syntax element)を判別し、データの確率特性によって、表 1に示す ユーナリー.バイナライセーシヨン (unary binarization)や固定長ノ ィナライゼーシ ヨン(fixed— length binarization)等の方式を用いて行われる。
[0006] [表 1]
Va lue of syntax e l ement B in s tring
0 ( I_NxN) 0
1 1 0
2 1 1 0
3 1 1 1 0
4 1 1 1 1 0
5 1 1 1 1 1 0 b inl dx 0 1 2 3 4 5
[0007] 表 1に示すユーナリ一'バイナライゼーシヨンでは、多値入力データ 0, 1 , 2, 3, 4, 5…を、それぞれ 2値シンボル(Bin string) 0, 10, 110, 1110, 11110, 1111 1 0 · · ·に変換することで 2値化を行っている。 2値化された 2値シンボル (バイナリ)列は 、 (2値)算術符号化回路 140に入力される。ユーナリー 'バイナライゼーシヨンは、変 換係数のレベルを示す coeff— abs— level— minuslにおいて、 14以下の値を 2値 化するために用いられる。
[0008] コンテキスト計算回路 520は、シンタックスエレメントを示す制御情報に基づいて、 2 値シンボル列における現在の 1ビットを符号化するために用いるコンテキストインデッ タス(以下「ctxldx」と称す。)の値を Η· 264規格で定められた表 2より求める。
[0009] [表 2]
スライスタイプ
シンタックスエレメント
SI I P, SP B mb_skip_flag 1 1 -13 24-26 slice_data( )
mb_fie Id—decoding—flag 70-72 70-72 70-72 70-72 mb_type 3-1 0 1 4-20 27-35 transform— size— 8x8— flag 399-401 399-401 399-401 macroblock_layer( ) coded— block— pattern (luma) 73-76 73-76 73-76 coded_block_pattern (chroma) 77-84 77-84 77-84 mb_qp_delta 60-63 60-63 60-63 60-63 p re vjntr a4x4_p red_mode_fl ag 68 68 68 68 rem_int ra4x4_pred_mode 69 69 69 69 mb_pred( ) re v_intra8x8_pred_inod e_fl a g na 68 68 68 rem.int ra8x8_pred_mode 69 69 69 intra_chroma_p red_mode 64-67 64-67 64-67 64-67 refjdxJO 54-59 54-59 ref_idx_M 54-59 mb_pred( ) and mvd_IO[ ][ ][ 0 ] 40-46 40-46 sub_mb_pred( ) mvd」1 [ ][ ][ 0 ] o 40-46 mvd_IO[ ][ ][ 1 ] o 47-53 47-53 mvd_l1 [ ][ ][ 1 ] 47-53 sub_mb_pred( ) sub_mb_type 36-39 coded— block— flag 85-1 04 85-104 85-104 85-104
1 05-165 105-1 65 1 05-1 65 105-1 65
277-337 277-337 277-337 277-337 significant— coe幵— flag[ ]
402-416 402-41 6 402-416 436-450 436-450 436-450 residu —block— 1 66-226 166-226 1 66-226 166-226
338-398 338-398 338-398 338-398 last— significant— coeff—flag[ ]
41 7-425 41 7-425 41 7-425 451 -459 451 -459 451 -459
227-275 227-275 227-275 227-275 coeff_abs_level_minus1 [ ]
426-435 426-435 426-435 表 2より、 ctxldxは 0力、ら 459までの 460個のィ直を取りうる。 1個のシンタックスエレメ ントに対して、スライスタイプにより ctxldxの選択が異なる。また、例えばスライスタイ プ Iにおける mb— field— decoding— flagの ctxldxが 70— 72となっているように、 c txldxの値が複数個存在するシンタックスエレメントに対する ctxldxの値を決定する には、オフセット値 ctxIdxOffset及び増分値 ctxldxlncの値に基づき、 ctxldx = ct xldxOffset + ctxIdxIncの演算により求められる。 ctxIdxOffsetは、表 3 (H. 264 規格の表より一部抜粋)に示すシンタックスエレメント固有の値であり、 ctxldxlncは シンタックスエレメント毎に決められた規則(H. 264規格参照)によって複数の値から
一意に決定される。 mb— field— decoding— flagの場合、 ctxldx〇ffset = 70であ り、 ctxldxlncは条件に応じて 0から 2のいずれかの値が選択される。
[0011] コンテキスト計算回路 520は、スライスの開始時に 460個の ctxldxの値毎に図 23 に示す計算により発生確率情報を初期化して記憶する。発生確率情報とは、 2値シ ンボルの 0又は 1のうち発生確率の高い方のシンボルを示す MPS (valMPS)と、発 生確率を示す pState (pStateldx)の組を含む。求められた ctxldxの値に対応した 発生確率情報を「コンテキスト情報」と呼ぶ。
[0012] コンテキスト計算回路 520は、コンテキスト情報を生成して算術符号化回路 140に 入力する。このように、算術符号化を行うシンタックスエレメントによって算術符号化回 路 140に入力されるシンボルの発生確率つまりコンテキスト情報が適応的に切り替わ る。これにより、 2値シンボルの発生確率が動的に変わる 2値シンボル列に対して、最 適な算術符号化が可能となる。ここで、一定区間の多値入力データを処理した際に 発生した出力符号の総ビット長を「符号量」と呼ぶ。
[0013] 算術符号化回路 140の動作概念を、図 24を用いて説明する。 ctxldxがある値で 一定となっており、コンテキスト情報から得た発生確率力 シンボル 0は 0. 75 (2進数 で 0. 11)、シンボル 1は 0. 25であり、 { 0, 0, 0, 1 }のバイナリ列が入力された場合を 考える。この場合、図 24 (a)に示すように、現在のコンテキスト情報は、発生確率の高 い方のシンボルを示す MPS = 0、発生確率 pState = 0. 11で表される。実際の pSt ateldxは、 0から 63の範囲を取るインデックス値で表現される力 ここでは簡単のた め 2進数の確率値とする。コンテキスト情報は、今回の 2値算術符号化により更新され 、コンテキスト計算回路 520に戻される。コンテキスト計算回路 520では、対応する ct xldxの発生確率情報を更新する。この値は、次回に同じ ctxldxの符号化が行われ る時に再利用される。
[0014] 図 24 (b)において、 1個目の入力バイナリ値 0が入力されると、 [0, 1]の区間が確 率 0. 11で区切られる 0側の区間に狭められ、 [0, 0. 11]になる。 2個目の入力 0が 入力されると、 [0, 0. 11]の区間が [0, 0. 1001]に狭められる。ここで、 0· 1001 = 0. 11 X 0. 11である。同様にして、 3ί固目の人力 0により区 カ [0, 0. 011011]に なる。 4個目の入力 1は、 1側の区間に狭められるため、最終的な区間が [0. 01010
001 , 0. 011011]に狭められる。ここで、この最終的な区間に含まれる値のうち、最 短の語長を持つものが符号語となる。 0. 011は、この区間に含まれるので、小数点 以下の 011が出力バイナリ列となり、 4ビットの入力値が 3ビットに圧縮されたことにな
[0015] 算術符号化回路 140の実際の動作では、前記区間を有限語長で极うため、区間の 左端の値を codILow (0. 01010001等)、区間の幅を codlRange (0. 00011011 等)として、 codlLow及び codlRangeの値に応じて出力ビットを確定し、 codlRange 及び codlLowを 1ビット左シフトして区間の分解能を上げるリノ一マライゼーシヨンと 呼ぶ処理が行われる。実際の 1ビットの算術符号化処理は図 25及び図 26のフロー チャートに従って行われる。
[0016] 図 25は 2値バイナリ(以下「Bin」と称す。 ) 1個の入力に対する算術符号化処理(82 0)であり、変数の初期化(821)、 Binが MPSであるかの判定(822)、 MPSでない場 合には codlLow及び codlRangeの更新(823)、 pStateldxの値の判定(824)、 M PSの反転(825)、発生確率 pStateldxの更新(826、 827)、リノ一マライゼーシヨン (830)から成る。図 25はリノーマライゼーシヨン 830の処理を示している。
[0017] ところで、図 25及び図 26における codlRange及び codlLowは内部状態変数であ り、スライス先頭でのみ初期化される。図 24に示した 4ビットの入力値を符号化した直 後に ctxldxが異なる入力値を符号化する場合でも、コンテキスト情報のみが変更さ れ、 codlRange及び codlLowは 4ビット符号化した直後の値が用いられる。変換係 数データを算術符号化する際には、輝度 64係数の significant— coeff—flag、輝 度 fc>4係数の coef I― abs― level― minus丄、色 DC成分の significant― coeff― f lag,色差 AC成分の coeff— abs— level— minus 1といった ctxldxの異なる多値入 力データを連続して符号化するが、内部状態を初期化するのはスライス先頭のみで あるため、これらを含む全てのシンタックスエレメントはスライス内では逐次符号化す るし力、なく、並列に処理できないことになる。
[0018] 一方、動画像符号化においては、様々な特性を持つ入力画像を所定のビットレート に圧縮するため、各マクロブロックを符号化する際の量子化パラメータを適切に制御 して、符号量制御を行う必要がある。符号量制御の精度を高めるためには、スライス、
フレーム、 GOP (Group Of Pictures)といった単位でパラメータを変更して繰り返 し符号化を行うことが一般的である。繰り返し符号化には、主に符号量を予測するた めの仮符号化と、最終的な符号化の 2種類の符号化が含まれる。
[0019] 従来の仮符号化の方式は、最終的な符号化と同様、実際にエントロピー符号化を 行うものと、エントロピー符号化を行わずに代替の演算を行うものとに大別される。従 来の符号化装置において前者の方式は、エントロピー符号化に可変長符号化 (Vari able Length Coding)を用いる場合が一般的であった。しかし、近年、エントロピ 一符号化として算術符号化を用いる方式が提案されて!/、る。前述のように算術符号 化はビット単位の符号化処理でありスライス内で逐次符号化するしかないため、算術 符号化を仮符号化に適用すると、膨大な処理量が必要となってしまう。故にリアルタ ィム処理の必要とされる回路において、算術符号化を仮符号化に適用することは非 常に困難である。
[0020] そのため、最終的な符号化において算術符号化を用いる場合の仮符号化の方式 としては、後者の方式 (エントロピー符号化の代替の演算を行う)が提案されている。 例えば特許文献 1は、算術符号化を行わず、入力 2値シンボル量を出力符号量の予 測値とすることで、最適な符号化モードを選択する際の処理量を削減する。また特許 文献 2のように関数を用いて予測する方式も提案されて!/、る。
[0021] 特許文献 1 :特開 2005— 318296号公報
特許文献 2:特開 2005— 203905号公報
非特許文献 1 : I≥>〇 IEC14496— 10 Advanced video coding for generic audiovisual services
発明の開示
発明が解決しょうとする課題
[0022] しかしながら、算術符号化を用いた符号化装置において、算術符号化を行わずに 仮符号化を行う従来の方式では、符号量の予測を精度よく行うことができな!/、とレ、う 課題があった。
[0023] すなわち、前述の特許文献 1で示された方式では、複数の符号化モード間の相対 比較としてはある程度機能する力 算術符号化を行わな!/、ため符号量の予測値を適
切に算出することはできない。また、特許文献 2で示された方式では、算術符号化の 演算とは全く異なるため、正確な符号量の予測が行えない。
[0024] 本発明はこのような課題に鑑み、算術符号化を用いた符号化装置において、算術 符号化の近似演算を行いながらも、回路での処理時間を大幅に削減した精度の高 Vヽ符号量予測方式を提供することを目的とする。
課題を解決するための手段
[0025] 本発明は、仮符号化において、 2値シンボル列をコンテキストに基づき複数のダル ープに分け、各グループに分類された 2値シンボル列に対して並列に算術符号量概 算処理を行うことで予測符号量を求める。
[0026] より具体的には、本発明に係る符号化装置は、入力信号から、複数のコンテキスト を持ち、所定の符号化単位 (例えば、マクロブロック)の多値データを生成するブロッ ク化回路と、ブロック化回路により生成された多値データを 2値シンボル列に変換す る 2値化回路と、 2値シンボル列から、前記符号化単位の予測符号量を算出する算 術符号量概算回路と、予測符号量に基づいて、入力信号に対する算術符号化を行 う符号化回路とを備える。算術符号量概算回路は、所定の符号化単位に含まれる前 記 2値シンボル列をコンテキストに基づ!/、て複数のグループに分ける選択器と、ダル ープ毎に用意された回路であって、複数のグループに分けられた 2値シンボル列を、 少なくとも算術符号化における区間の幅に基づいてグループの予測符号量を算出 する、複数の符号量概算回路と、全ての符号量概算回路からの予測符号量を加算し て、所定の符号化単位の予測符号量を出力する加算器とを有する。
発明の効果
[0027] 本発明によれば、算術符号化を用いた符号化装置において、コンテキストに基づ いて分けられた複数のグループに対する算術符号化の近似演算を並列に行うことが 可能となり、算術符号化に近い演算を行いながらも算術符号化と比較して処理時間 を大幅に削減できる。これにより動作周波数を低く抑えた回路を用いて高精度の符 号量予測に基づく符号化装置を実現できる。また、高画質な映像符号化装置を提供 すること力 Sでさる。
図面の簡単な説明
[図 1]映像符号化装置の構成図
[図 2]算術符号量概算回路の構成図
[図 3]算術符号量概算回路での並列処理を説明した図
[図 4]算術符号量概算回路が処理対象とするシンタックスエレメントを示す図
[図 5]逐次処理での 1ユニットの符号量概算処理を示すフローチャート
[図 6]ユニット初期化処理を示すフローチャート
[図 7] lBinの符号量概算処理を示すフローチャート
[図 8] lBinの符号量加算処理を示すフローチャート
[図 9] 1ユニットの微小符号量概算処理を示すフローチャート
[図 10]小数符号量テーブルを説明する図
[図 11]ユーナリ一.バイナライゼーシヨンの 1ユニットの符号量概算処理を示す フロ 一チヤ一卜
[図 12]ユニット内の全 Binに対する符号量概算処理を示すフローチャート
[図 13]整数符号量テーブルを説明する図
[図 14]整数符号量テーブルの初期化を説明する図
[図 15]バイパス時の 1ユニットの符号量概算処理を示すフローチャート
[図 16]算術符号量概算回路の予測精度を示す図
[図 17] (a) 1920 X 1080画素で構成される 1フレームを示した図、(b) 120 X 68マク ロブロックで構成される 1フレームを示す図
[図 18]仮量子化パラメータの選択例を示す図
[図 19]仮量子化パラメータの選択例を示す図
[図 20]符号量積算メモリに蓄積されるデータ例を示す図
[図 21]最適量子化パラメータの算出方法を説明するための図
[図 22]従来のコンテキスト適応算術符号化回路を説明する図
[図 23]発生確率情報の初期化を説明する図
[図 24]算術符号化の概念を説明する図
[図 25] IBinの入力に対する算術符号化処理を示すフローチャート
[図 26]リノ一マライゼーシヨン処理を示すフローチャート
符号の説明
100 映像符号化装置
101 第一の符号化回路
102 第二の符号化回路
111 量子化パラメータ発生回路 112 量子化パラメータ算出回路 121 第一の量子化回路
122 第二の量子化回路
124 逆量子化回路
131 第一の 2値化回路
132 第二の 2値化回路
142 算術符号化回路
151 フレームメモリ
152 予測モードメモリ
153 符号量積算メモリ
161 第一のブロック化回路
162 第二のブロック化回路
171 第一のイントラ予測生成回路 172 第二のイントラ予測生成回路 173 予測モード検出回路
181 第一の DCT回路
182 第二の DCT回路
184 逆 DCT回路
191 映像信号入力
192 出力ビットストリーム/ E 200 算術符号量概算回路
211〜214 算術符号量概算回路 230 選択器
231 加算器
発明を実施するための最良の形態
[0030] 以下、本発明の実施の形態について図面を参照しながら説明する。
[0031] 1. i の
本実施の形態では、フレーム内で復号可能なイントラフレームを符号化対象として 、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づく符号量制御 を行う映像符号化装置について説明する。
[0032] 図 1に本発明の実施の形態による映像符号化装置の構成例を示す。図 1において 、映像符号化装置 100は、仮符号化を行う第一の符号化回路 101、最終的な符号 化を行う第二の符号化回路 102、フレームメモリ 151、予測モードメモリ 152、及び符 号量積算メモリ 153から構成される。
[0033] 第一の符号化回路 101は、入力信号をブロック化するための第一のブロック化回路 161、予測モード検出回路 173、第一のイントラ予測生成回路 171、直交変換回路と しての第一の DCT回路 181、量子化パラメータ発生回路 111、第一の量子化回路 1 21、第一の 2値化回路 131、及び算術符号量概算回路 200から構成される。
[0034] 第二の符号化回路 102は、第二のブロック化回路 162、第二のイントラ予測生成回 路 172、第二の DCT回路 182、量子化パラメータ算出回路 112、第二の量子化回 路 122、第二の 2値化回路 132、算術符号化回路 142、逆量子化回路 124、及び逆 DCT回路 184から構成される。
[0035] 以上のように構成された映像符号化装置について、以下その動作を説明する。
[0036] 2.映像符号化装置の動作
映像符号化装置は映像信号 191をフレーム単位で入力し、処理する。以下では、 説明の便宜上、 1フレームの映像信号に対する処理の流れについて説明する。
[0037] 映像符号化装置 100に 1フレームのディジタル映像信号 191が入力されると、第一 の符号化回路 101は、入力した 1フレームのディジタル映像信号に対して仮符号化 を行う。この仮符号化において、予測モード検出回路 173により検出された予測モー ド値が予測モードメモリ 152に、算術符号量概算回路 200により出力された符号量が 符号量積算メモリ 153にそれぞれ格納される。
[0038] 映像符号化装置 100に入力されたディジタル映像信号 191はフレームメモリ 151に 格納されて 1フレーム以内の一定時間だけ遅延されて、第二の符号化回路 102に出 力される。第二の符号化回路 102は 1フレームのディジタル映像信号を符号化して得 られたストリーム 192を出力する。第二の符号化回路 102での符号化においては、予 測モードメモリ 152に格納された予測モード値、及び符号量積算メモリ 153に格納さ れた符号量を入力して、同じフレームに対する符号化が行われる。以下、第一及び 第二の符号化回路 101、 102それぞれの詳細な処理について説明する。
[0039] 2. 1 第一の符号化回路による仮符号化
第一の符号化回路 101による仮符号化の処理を説明する。
ブロック化回路 161は、ディジタル映像信号 191を受け、 1フレーム分の映像信号 を 16 X 16画素からなる複数のマクロブロックにブロック化する。マクロブロックは、後 述する DCTやイントラ予測の単位となるブロックを複数個含む。
[0040] イントラ予測生成回路 171は、 16 X 16画素のマクロブロック毎に、入力されたディ ジタル映像信号の画素と、入力されたディジタル映像信号 191の画像に隣接する画 素とから、そのマクロブロックの各画素の値を種々の予測モードで予測 (イントラ予測) する。なお、イントラ予測は、マクロブロック単位の代わりに、 8 X 8画素ブロックや 4 X 4画素ブロックの単位でも行われる。
[0041] 予測モード検出回路 173は入力したディジタル映像信号 191から予測モード値の 検出を行う。予測モード値には、フィールドマクロブロック復号フラグ(mb— field— de coding— flag)、輝度 4 X 4イントラ予測モード(Intra4x4PredMode)、輝度 8 X 8ィ ントラ予測モード(Intra8x8PredMode)、色差イントラ予測モード(intra— chroma — pred— mode)が含まれる。検出された予測モード値は予測モードメモリ 152に蓄 積される。
[0042] 入力されたディジタル映像信号 191において符号化対象のマクロブロックの各画素 値と、イントラ予測生成回路 171により作成された、符号化対象のマクロブロックの画 素予測値との差分値が計算されて、 16 X 16画素の差分値のブロックが生成され、 D CT回路 181に出力される。このイントラ予測は、マクロブロック単位の代わりに、 8 X 8 画素ブロックや 4 X 4画素ブロックの単位でも行われる。
[0043] DCT回路 181は、差分値のブロックに対して DCT (離散コサイン変換)等の直交変 換処理を行う。この処理は、通常 4 X 4画素や 8 X 8画素のブロック単位に行われ、周 波数成分の係数データが出力される。係数データは量子化回路 121に入力され、量 子化パラメータ発生回路 1 11により与えられた量子化パラメータにしたカ^、量子化さ れる。量子化パラメータは、量子化パラメータ発生回路 111により、複数のパラメータ 候補の中から選択して決定される。
[0044] 量子化回路 121により量子化された係数データは 2値化回路 131にて 2値化される 。算術符号量概算回路 200は、 2値化された係数データから予測符号量を求め、出 力する。算術符号量概算回路 200の出力する予測符号量は、符号量積算メモリ 153 に記録される。
[0045] 2. 1. 1 術符^ ·量概 回路の動作
算術符号量概算回路 200は、算術符号化に近い演算を行うことで、マクロブロック 単位毎に予測符号量すなわち算術符号化の符号量の概算値を求める。図 2に算術 符号量概算回路 200の構成を示す。算術符号量概算回路 200は、コンテキスト計算 回路 521、選択器 230、第一ないし第四の符号量概算回路 21;!〜 214、及び加算 器 231により構成される。第一ないし第四の符号量概算回路 211〜214は、スライス に対するコンテキストインデックス(ctxidx)の値に応じて選択される。
[0046] 以上のように構成される算術符号量概算回路 200について以下その動作を説明す
[0047] 多値入力データ 501は、 2値化回路 130において 2値シンボル (バイナリ)列 503に 変換される。 2値化回路 131は、図 22におけるコンテキスト適応算術符号化回路 145 に含まれる 2値化回路 130と基本的には同じ回路である力 2値シンボル列 503は必 ずしもシリアル出力でなくとも良ぐパラレル出力としても良い。コンテキスト計算回路 5 21は、多値入力データ 501と同時に入力される制御情報 502に基づいて、現在のコ ンテキストインデックス(ctxidx) 505を選択器 230に出力する。選択器 230は、コン テキストインデックス(ctxidx) 505に基づいて、現在の 2値シンボル 503を、第一な V、し第四の符号量概算回路 211〜214の!/、ずれかに割り振る。第一及び第二の符 号量概算回路 21 1、 212は輝度に関するデータを処理し、第三及び第四の符号量
概算回路 213、 214は色差に関するデータを処理するように 2値シンボルが割り振ら れる。
[0048] 算術符号量概算回路 200では、第一ないし第四の符号量概算回路 21;!〜 214に おいて同時に符号量概算処理を実施するため、図 3に示すように並列処理が可能と なり、符号量概算のための処理時間を短縮できる。
[0049] コンテキストインデックス(ctxldx)に基づぐ 2値シンボル 503の、符号量概算回路
21;!〜 214への割り振り方について図 4を参照してより具体的に説明する。
[0050] 図 4は、表 1の residual— block— cabac ()に属するシンタックスエレメントに関して 、 ctxldxと、割り振られる第一ないし第四の符号量概算回路 21;!〜 214との対応を 説明した図である。同図より、例えば ctxldx = 402であれば、輝度の significant— c oeff— flagに属するので、第一の符号量概算回路 211が選択される。なお、 coeff— sign— flagは、算術符号化にてバイパスされるため表 1には示されていないが、符号 量概算回路ではバイパスとして扱い符号量の概算に用いられる。
[0051] 以上のようにして各符号量概算回路 21;!〜 214により算出された符号量は、加算 器 231にて加算され、一定区間毎に予測符号量 290として出力される。
[0052] 各符号量概算回路 21;!〜 214で実行される処理は、図 5、図 11及び図 15のそれ ぞれのフローチャートで示す 3つの処理がある。図 1 1に示す処理は、 coeff— abs—1 evel— minus 1のように、 2値化処理においてユーナリー'バイナライゼーシヨンを用 いるシンタックスエレメントに対して適用される。図 5に示す処理は、図 11に示す処理 の適用対象でない通常のシンタックスエレメントに対して適用する逐次処理を示す。 図 15に示す処理は、前述したバイパスとして扱われた 2値シンボル(以下「Bin」と称 す。)を適用対象とする処理である。図 5、図 11及び図 15のそれぞれの処理はュニッ ト単位で実行される。ユニットとは、 2値シンボル(Bin)の集合であり、通常 ctxldxの 値が連続して同じとなる Binの集合に設定される。
[0053] (a)诼次処理による算術符号量概算処理
図 5〜図 9を参照し、逐次処理による符号量概算処理を説明する。図 5は、逐次処 理による 1ユニットの符号量概算処理のフローチャートを示している。本符号量概算 処理では、最初に(ユニットの開始時に)ユニット初期化処理(S 11)を行い、次に IBi
nの符号量概算処理(S I 2)をユニットが終了するまで繰返し(S I 3)、最後に(ュニッ トの終了時に) 1ユニットの微小符号量概算処理(S 14)を行って終了する。
[0054] 図 6を参照し、上記ステップ S 11のユニット初期化処理の詳細を説明する。ユニット 初期化処理では、区間の幅(codlRange)、ユニット符号量の整数部分(又は整数符 号量)(codeLengthlnt)、ユニット符号量の小数部分(又は小数符号量) (codeLen gthFrac)をそれぞれ初期化する(S21)。ユニット符号量は、このように整数部分と小 数部分に分かれており、小数の精度で符号量概算が行われる。 codeLengthFrac は、小数点以下を 9ビット精度で表しており、 0から 511までの値を取り得る。
[0055] 図 7を参照し、上記ステップ S 12の IBinの符号量概算処理の詳細を説明する。 IBi nの符号量概算処理では、最初に変数の初期化(S31 )を行う。次に Binが MPSであ るかの判定を行う(S32)。 MPSでない場合には codlRangeを更新し(S33)、 pStat eldxの値を判定する(S34)。 pStateldxの値が 0の場合、 MPSの反転を行い(S35 )、発生確率 pStateldxを更新する(S36)。ステップ S32にて Binが MPSである場合 には、 pStateldxの更新のみを行う(S37)。最後に IBinの符号量加算処理(S38) を行って処理を終了する。図 7のフローチャートは、図 25に示した算術符号化処理の フローチャートに準じており、ステップ S33で codlLowを計算しない点と、図 25のリノ 一マライゼーシヨンのステップ(S830)の代わりに IBinの符号量加算処理(S38)を 実施する点とが異なる。
[0056] 図 8を参照し、上記ステップ S38の IBinの符号量加算処理の詳細を説明する。 IBi nの符号量加算処理では、 codlRange力 0x100以上の値になるまで、 codlRange を 1ビット左シフトしてユニット符号量の整数部分 codeLengthlntを 1加算する処理 が繰り返される(S41、 S42)。図 8のフローチャートは、図 26に示したリノ一マライゼ ーシヨンのフローチャートにおいて、 codlRangeを操作する部分のみを抽出し、 codl Rangeの左シフト回数を符号量に加算する処理を加えたものに等しい。
[0057] 図 9を参照し、上記ステップ S 14の 1ユニットの微小符号量概算処理の動作を説明 する。図 9に示す 1ユニットの微小符号量概算処理では、ユニット符号量の小数部分 codeLengthFracを、テーブル参照関数 readTableCdFrac ()によって求める(S5 D o図 10に、テーブル参照関数 readTableCdFrac Oを示す。小数符号量テープ
ル mTblは 256個の定数から構成される(図 10 (a)参照)。小数符号量テーブル mTb 1は、関数 initTableCdFrac Oにより初期化される(図 10 (b)参照)。小数符号量テ 一プ レ mTblは、 mTbl[0] = 511、 mTbl [255] = 1となる対数のテープ、ノレである。 c odIRange = 256の日寺に mTbl [0] = 511となり、 codlRange = 511の日寺に mTbl [2 55] = 1となる。概念的には codlRangeが 512に近いほど MPSが相対的に多く出現 していたので、小数符号量が短くなる。また、 codlRangeが 256に近いほど LPSが相 対的に多く出現していたので、小数符号量が長くなる。この関係が initTableCdFra c ()内の式に示す対数のカーブにより高い精度で近似される。
[0058] (b)ユーナリー'バイナライゼーシヨンを用いるシンタックスエレメントに対する符号量 ネ應聊
図 11を参照し、ユーナリ一'バイナライゼーシヨンを用いるシンタックスエレメントに 対する符号量概算処理を説明する。
[0059] 図 11に示す、ユーナリー 'バイナライゼーシヨンの符号量概算処理では、最初にュ ニット初期化処理(S61 )を行い、次にユニット内の全 Binに対する符号量概算処理( S62)を行って、最後に 1ユニットの微小符号量概算処理(S63)を行って終了する。 図 11に示す 1ユニットの符号量概算処理は、図 5で示した逐次処理の 1ユニットの符 号量概算処理と比較し 1て、 IBinの符号量概算処理(S 12)のステップの繰り返し処 理を、ユニット内の全 Binに対する符号量概算処理(S62)で置換えたものである。
[0060] 図 11に示すユーナリー'バイナライゼーシヨンの符号量概算処理を適用するシンタ ックスエレメントを、 coeff— abs— level— minuslを例として用いて説明する。 coeff —abs— level— minus 1は、表 1に示す Binの位置 binldxにより ctxldxが異なる。こ のため、 binldx= 0を除いて l≤binldx≤13の範囲の Binを 1個のユニットとする。つ まり、表 1の「Value of syntax element」の欄が 1以上 14以下のものが対象とな る。最大値が 14となるのは、最大値 binldx= 13が符号「1」で終わるトランケ一テッド (Truncated)形式になっているためである。 binldx= 1以降の符号「1」の数を変数 r un— lengthで表すと、 run— lengthは 0以上 13以下の値を取る。なお、 binldx= l 4以上はバイパスとなるから、この例では coeff— abs— level— minus lの値が 1以上 となる全ての係数に対して、バイパス部分を除いてユーナリー'バイナライゼーシヨン
の符号量概算処理が適用される。
[0061] 図 12を参照し、上記ステップ S62のユニット内の全 Binに対する符号量概算処理の 詳細を説明する。まず全 Binに対する符号量の加算を行う(S 71)。この処理は、ュニ ット符号量の整数部分 codeLengthlntを、テーブル参照関数 readTableCdlnt ()を 用いて加算し、 codlRangeをテーブル参照関数 readTableRng Oを用いて更新す ることで行われる。次に全 Binに対するコンテキスト情報の更新を行う(S72)。この処 理は、 valMPSをテーブル参照関数 readTableMps Oを用いて更新し、 pStateldx をテーブル参照関数 readTableState ()を用いて更新することで行われる。
[0062] ここで、図 13を参照し、各テーブル参照関数を説明する。図 13に示すように、ビット の最大値が 13であるため、 MAX— RUN = 13と定義している。テーブル参照関数: readTableCdlnt ()、 readTableRng ()、 readTableMps ()、 readTableStateリ は、それぞれ整数符号量テーブル(mCdllntTbl)、レンジテーブル(mRngTbl)、 M PSテーブル(mMpsTbl)、 pStateテーブル(mStateTbl)を参照して値を返す。こ れらのテーブルは、 2値シンボル列の全ての符号パターンと全ての出現確率パター ンを入力とする。
[0063] 図 14を参照し、各テーブルの初期化処理の詳細を説明する。初期化関数 initTab leCdlnt Oを、全ての run— length、 valMPS , pStateldxに対して実行することで、 整数符号量テーブル(mCdllntTbl)、レンジテーブル(mRngTbl)、 MPSテーブル (mMpsTbl)、 pStateテーブル(mStateTbl)が全て初期化される。この初期化処 理は、図 5に示す逐次処理による 1ユニットの符号量概算処理の演算に従っている。 図 14の Proc lBin (binVal, &valMPS, &pStateIdx)は、図 5の IBinの符号量概 算処理(S 12)に対応しており、 binVal, valMPS , pStateldx, codlRangeに対し て図 7の処理と等価な処理が行われる。但し、図 7の IBinの符号量加算処理(S38) は、図 14内の 2箇所の while処理にて行われる。以上により、全ての Binに対する符 号量の整数部分が一括して計算可能な各テーブルが初期化される。
[0064] (c)バイパス して极われた Binに対する算術符号量概算処理
図 15を参照し、バイパスとして扱われた Binに対する 1ユニットの符号量概算処理 の詳細を説明する。本符号量概算処理は、ユニット初期化処理(S81)を行った後、
ユニットが終了するまでユニット符号量の整数部分 codeLengthlntを 1ずつ加算す る(S82、 S83)。つまり、本符号量概算処理は、 IBinの符号量を単に 1ビットの符号 量としてカウントする。
[0065] 図 2に示す加算器 231は、以上の図 5、図 11、図 15に示す 3つの符号量概算処理 により得られたユニット符号量の概算値から予測符号量を以下のように計算する。
[0066] マクロブロックに含まれる全てのユニットに対して、全ての符号量概算回路 21;!〜 2 14から出力されたユニット符号量の整数部分(codeLengthlnt)及びユニット符号量 の小数部分(codeLengthFrac)をそれぞれ加算して、マクロブロックの予測符号量 の整数部分(MBcodeLengthlnt)、マクロブロックの予測符号量の小数部分(MBc odeLengthFrac)を計算する。最終的なマクロブロックの予測符号量 MBcodeLeng thは、次式で求められる。
MBcodeLength = MBcodeLengthlnt +
(MBcodeLengthFrac > > 9) (1 )
[0067] 次に、以上で説明した 1ユニットの符号量概算処理(図 5、図 11、図 15参照)が、ュ ニット毎に並列に処理可能である理由を説明する。
[0068] 前述したようにコンテキスト適応型算術符号化を並列処理するための障害であった 内部状態 codlRange及び codlLowの 2つに関して、 codlRangeは図 6に示すュニ ット初期化処理にてユニット毎に固定値に初期化されており、 codlLowは図 5から図 15に示した全体の処理の中に存在しない。よって各ユニットの符号量概算処理は、 図 3に示すように回路上で時間的に並列に実施することが可能となる。
[0069] また図 11を参照して説明したように、 1ユニットの符号量概算処理 (ユーナリー'バイ ナライゼーシヨン)は複数の Binを一括に処理可能である。これは一定範囲のユーナ リー.バイナライゼーシヨンの符号群と、全ての valMPSと、全ての pStateldxとの組 合せに基づくテーブルを用意することで可能となる。
[0070] 算術符号量概算回路 200が高!/、精度でマクロブロックの符号量を近似するための 条件について説明する。
[0071] その条件とは、図 5、図 11、図 15に示す 1ユニットの符号量概算処理を図 2に示し た第一から第四の符号量概算回路 21;!〜 214に適用した上で、図 4に示したように
符号量概算回路全体( # 1〜 # 4の合計)で網羅する ctxldxによる発生符号量のマ クロブロック全体の発生符号量に占める割合力 100%に近いことである。図 4の例 では、 residual— block— cabac Oに属するシンタックスエレメントの発生符号量がマ クロブロック全体の発生符号量の 100%に近いという前提で、符号量概算処理に用 いるシンタックスエレメントを選定している。よって、これら以外のシンタックスエレメント の占める発生符号量が無視できな!/、場合には、そのシンタックスエレメントも符号量 概算処理の対象とする必要がある。
[0072] 図 16は、本実施形態による算術符号量概算回路 200の予測符号量 290の予測精 度を示した図である。図 16は、マクロブロック単位の予測符号量と算術符号化による 発生符号量との誤差の割合を、 1フレーム(8160マクロブロック)に渡りプロットしたも のである。統計的性質の異なる 4種類のフレーム(Sequence # 1〜 # 4)に対して、 平均 0. 47%、標準偏差 1. 55%の誤差であり、高い精度が得られている。
[0073] 2. 2 第二の符^ ·化回路によろ最終的な符^ ·化
図 1における第二の符号化回路 102の符号化の動作を説明する。第一の符号化回 路 101により 1フレームの仮符号化が終了すると、フレームメモリ 151に蓄積された 1 フレームの映像信号が、ブロック化回路 162に入力される。符号化対象のマクロプロ ックの各画素値は、予測モードメモリ 152から読み出した予測モード値に基づいてィ ントラ予測生成回路 172が生成した画素予測値との差分値が計算される。差分値の ブロックに対して DCT回路 182にて DCTが行われ、周波数成分の係数データが出 力される。係数データは量子化回路 122に入力されて量子化される。この際の量子 化パラメータは、量子化パラメータ算出回路 112により算出される。量子化された係 数データは 2値化回路 132にて 2値シンボルに変換され、算術符号化回路 142にて 符号化されてビットストリーム 192として出力される。
[0074] 2. 3 第一の符号化回路 101での仮符号化における量子化パラメータの設定
第一の符号化回路 101における仮符号化の具体例を、図 17 (a)に示すような 192 0 X 1080画素の 1フレームの符号化においてスライス単位に最適な量子化パラメ一 タを算出する例を用いて説明する。
[0075] 図 17 (b)に示すように 1920 X 1080画素のフレームは、 16 X 16画素のマクロブロ
ックが 8160 ( = 120 X 68)個で構成される。フレームを分割するスライスは、任意の 連続したマクロブロックの集合として定義できる力 一例として 1個のスライスが 2040 個のマクロブロックを含み、 1フレームが 4個のスライスで構成される場合を考える。こ の場合、 N = Nmb = 2040 ( = 8160/4)と設定できる。
[0076] 仮符号化の開始前に、第一の符号化回路 101の量子化回路 121で使用される仮 量子化パラメータ QP (n)を決定する。仮量子化パラメータは、マクロブロック毎に複 数の候補の中から 1つを選択して設定される。すなわち 1個のマクロブロックに対する 仮量子化パラメータ QP (n)は、任意の異なる Q種類の代表量子化パラメータ qp (x ) (x = 0, 1 , · · · , Q— l)力、ら 1個を選んで、当該マクロブロックの仮量子化パラメータ QP (n)に設定することで決定できる。
[0077] 例えば、「0」と「20」の 2種類の代表量子化パラメータ qp (x) = {0, 20}を与える場 合を考える。ここで、 F (x) = {A , A , · · · , A } (Aは整数)の表記は、 F (0) =A
0 1 Q- l n 0
、 F (1) =A、•••F (Q- 1) =A を意味するものとする。各マクロブロックの仮量子
1 Q— 1
化パラメータは、各仮量子化パラメータの出現頻度が等しくなるように、 2種類の代表 量子化パラメータの中から選択する。この例では、半数のマクロブロックに量子化パラ メータ「0」を、残り半数のマクロブロックに量子化パラメータ「20」を与える。また、仮量 子化パラメータがスライス内で偏るのを防ぐため、スライス内に交互又はランダムに仮 量子化パラメータを配置する。例えば、プログレッシブ走査においては、図 18 (a)に 示すように通常のラスタスキャン順に交互に仮量子化パラメータを与え、インターレー ス走査では図 18 (b)に示すようにマクロブロックの対毎に交互に仮量子化パラメータ を与えることができる。
[0078] 仮符号化における代表量子化パラメータ (X)の種類 Qと、その値 qp (x) (x=0 , 1 , · · · , Q— 1)の決定方法について、図 19を用いて説明する。
[0079] 量子化回路 121で用いられる代表量子化パラメータの種類 Qは、 2040 (1スライス に含まれるマクロブロック数)の約数とすることができる、又はインターレース走査用の 符号化を行うため、マクロブロックを対にする場合は、その 1/2である 1020の約数と すること力 Sできる。このようにして代表量子化パラメータの種類 Qを設定すれば、スラ イス内で任意の代表量子化パラメータが出現する回数を一定にできる。例えばプログ
レツシブの場合、 Qとしては 2040の約数である 5、 10、 20が選択できる。それぞれの Qの場合の、 1個のスライス内における各代表量子化パラメータの出現回数は 408回 、 204回、 102回となる。
[0080] 代表量子化パラメータ qp (X)としては、エンコーダで選択できる量子化パラメータ の範囲から異なる値を Q個選択する。この場合、最適な符号化のための符号量予測 が行い易くなるように、それらの値を適度に分散させるのが好ましい。例えば、 1スライ スに含まれるマクロブロック数が 2040で、エンコーダで選択できる量子化パラメータ QPが 0から 51の範囲である場合、代表量子化パラメータ qpとして、図 19 (a)に示す
1
ように、 Q = 10、 qp (x) = { 0, 4, 8, 12, 16, 22, 28, 34, 42, 51 }を選択すること ができる。このとき、プログレッシブ方式の場合は、図 19 (b)に示すように仮量子化パ ラメータが適用され、インターレース方式の場合は、図 19 (c)に示すように仮量子化 ノ ラメータが割当られる。また、代表量子化パラメータには、量子化パラメータの最大 値及び最小値が含まれるようにするのが好ましい。
[0081] 第一の符号化回路 101における仮符号化の結果として符号量積算メモリ 153に蓄 積されるデータについて説明する。仮符号化では、 N = 2040個のマクロブロックを含 むスライス 1個に対し、同じ代表量子化パラメータ qp (X)を使用したマクロブロック毎 に、算術符号量概算回路 200から出力された予測符号量 R (n)の総和を計算する。 その総和を QP別予測符号量 r (X)とし、符号量積算メモリ 153に蓄積する。図 20の 例では、 qp (x) = { 0, 4, 8, 12, 16, 22, 28, 34, 42, 51 } (x = 0, 1 , …, 9)の各 々に対し、代表量子化パラメータ毎に予測符号量 R (n)の総和を取った QP別予測 符号量 r (X) = { 95626, 82252, 64451 , 48648, 31785, 19098, 10373, 54 39, 2259, 1261 }を符号量積算メモリ 153に蓄積することになる。
[0082] 2. 4 第二の符号化回路での最終的な符号化における量子化パラメータの算出
第二の符号化回路 102の量子化パラメータ算出回路 112での最終的な符号化に おける最適量子化パラメータ QP (n)の算出方法を、図 21の具体例を用いて説明す
2
る。ここで、ビットレート、フレームレート、フレームの複雑度、スライスの符号化タイプ などの情報を用いて割り当てたスライスの目標符号量 T= 300000ビットを仮定する。
[0083] 代表量子化パラメータ qp (X)と QP別予測符号量 r (x)から、量子化パラメータ QP
とスライス予測符号量の関係を図 21のように座標軸にプロットすることができる。 r^x )は、各 x = QPに対して 204個ずつのマクロブロックの予測符号量の総和になってい るから、各 QPに対するスライス予測符号量は、 r (X)を 10倍することで求められる。ま た、プロットしたスライス予測符号量を線形補間して全ての QP値 (0≤QP≤ 51)に対 するスライス予測符号量のグラフを作成することができる。スライスの目標符号量 T= 300000と、このグラフとの交点を求めることで、 目標符号量を発生するのに最適な 量子化パラメータ QP を求めることができる。 QP の算出は、線形補間により、式( opt opt
2)で求められる。
QP =q+{QP (q
t 1 +D-QP (q)}X{Q*r (q)-T}/
op 1 1
{QXri(q)-QXri(q+l)} (2)
[0084] 但し、 qは 0≤q≤Q— lの整数であり、 QXr (q+l)≤T≤QXr (q)を満たす値と する。ここでは、 1スライスを通じて 1つの最適量子化パラメータを使用することとして いる。また、すべての qに対し T〉QXr (q)となる場合は q = 0、すべての qに対し T< QXr (q)となる場合は q = Q— 1とする。
[0085] スライスの目標符号量 T = 300000ビットであるので、式(2)を用いて、 QP は 16.
opt
84となる。
QP =16+ (22— 16) X (317850— 300000)/
(317850-190980)=16. 84
[0086] 量子化パラメータは整数であるので、 17を最適量子化パラメータ QP とする。また opt
、小数点以下の値によっては小さい側の値 16を選択する場合もある。
[0087] 以上のようにして最適量子化パラメータ QP (n)=QP を算出できる。また、 QP
2 opt opt を N個のマクロブロックの符号化に対する初期値として用い、それ以降の量子化パラ メータは動的に変更することも可能である。
[0088] 以上説明したように、本実施形態による算術符号量概算回路 200を用いて、映像 符号化装置における出力ビットストリーム 192を得ることができる。
[0089] 以上では、表 2の residual— block— cabac ()に含まれるシンタックスエレメントを対 象として算術符号量概算回路 200を構成する例を示した力 mb—pred ()や macro block layer ()など他の全てのシンタックスエレメントを対象としてもよい。この場合、
基本的には図 4に示す、対象とする ctxldxの範囲を拡張すればよい。
[0090] 3.変形例
本実施の形態では、イントラフレームのみを符号化対象として算術符号量概算回路 200を構成する例を説明した力 フレーム間予測を用いる Pフレームや Bフレームを 符号化対象とする場合でも、適用可能である。 Pフレームや Bフレームでは動きべタト ルに必要となる符号量が多くなるため、表 2の mb— pred Oや sub— mb— pred Oに 含まれるシンタックスエレメントを処理対象に加えれば良い。
[0091] 本実施の形態では、図 2に示すように 4個の符号量概算回路を用いる例を説明した
1S 符号量概算回路の数は任意にできるのは明らかである。また、ユーナリー'バイ ナライゼーシヨンを例にとって Binの逐次処理を行わずに一括処理できる例を説明し た力 本実施の形態の思想が、ユーナリー'バイナライゼーシヨン以外の 2^1化方法 にも適用できることは明らかである。整数部のテーブルと小数部のテーブルを分けて 説明したが、 codlRangeの値に基づいてテーブルを統合することも可能である。
[0092] 本実施の形態では、 Nをスライス単位に含まれるマクロブロック数に設定した。しか し、より小さい単位で仮符号化と符号化を行うことで算術符号量概算回路 200から予 測符号量 R (n)を得て、その結果を仮量子化パラメータの選択に反映するような場
2
合は、 Nの値を、符号化単位に合わせた小さい値に設定してもよい。また、 Nを固定 値として説明した力 Nをフレーム単位又はその他の単位で動的に変化させることも 可能である。また、スライス予測符号量のグラフを線形補間して求める例を示したが、 スプライン補間等、高度な数値補間も可能である。
[0093] 本実施の形態では仮符号化を 1回のみ行う例を示した力 リアルタイムの符号化が 必要でない場合や、仮符号化をパイプライン化又は並列化することにより一定の遅延 で多くの処理が行える場合には、仮符号化を何回行っても良い。
[0094] 本実施の形態を用いて符号化したビットストリームは、テープ、光ディスク、磁気ディ スク、半導体メモリといった記録媒体に記録して、再配布可能な形式にすることができ
[0095] 4.ま め
以上のように本実施形態によれば、 2値シンボル列のコンテキストに応じて設けられ
た複数の概算処理回路を並列動作させることで、コンテキストに基づいて分けられた 複数のグループに対する算術符号化の近似演算を並列に行うことが可能とする。 2 値シンボル列に対する算術符号化の符号量の概算値を求める。これにより、算術符 号化に近い演算を行いながらも正規の算術符号化と比較して処理時間を大幅に削 減でき、よって、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基づ く符号化装置を実現できる。そのような符号化装置を用いて高画質な映像符号化装 置を提供すること力 Sできる。
産業上の利用可能性
[0096] 本発明によれば、動作周波数を低く抑えた回路を用いて高精度の符号量予測に基 づ<、高画質な符号化装置を実現できるため、カメラレコーダや録画装置など小さい 回路規模でリアルタイム動作が必要な記録装置にも有効である。
[0097] 本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多 くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の 開示に限定されず、添付の請求の範囲によってのみ限定され得る。なお、本出願は 日本国特許出願、特願 2006 - 323384号(2006年 11月 30日提出)に関連し、そ れらの内容は参照することにより本文中に組み入れられる。