(57)【要約】【課題】算術符号化処理を高速化すること。【解決手段】目標符号量決定部２０５は、現在のスライス算術符号化が終了する前に、符号量カウント部２２２からの既に終了した算術符号化による符号量に基づいて次のスライスの目標符号量を決定する。量子化パラメータ決定部２０６は、次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定する。コンテキストテーブル初期化部２０９は、次のスライスの量子化パラメータに基づいて現在のスライスの算術符号化が終了する前に次のスライスで使用するコンテキストテーブル２１３あるいは２１４を初期化する。これにより、コンテキストテーブル２１３あるいは２１４の初期化のための時間をスライス毎の算術符号化処理の間に特別確保する必要がなくなり、算術符号化処理を高速化することができる。【選択図】図１
2007300455.tif 000002
【特許請求の範囲】
【請求項１】
コンテキストテーブルをスライス毎に初期化して算術符号化をする算術符号化装置であって、
現在のスライスの前記算術符号化が終了する前に、既に終了した前記算術符号化による符号量に基づいて、次のスライスの目標符号量を決定する目標符合量決定部と、
前記目標符合量決定部によって決定された次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定する量子化パラメータ決定部と、
前記量子化パラメータ決定部によって決定された次のスライスの量子化パラメータに基づいて、現在のスライスの算術符号化が終了する前に次のスライスで使用する前記コンテキストテーブルを初期化するコンテキストテーブル初期化部と、
を有する算術符号化装置。
【請求項２】
請求項１記載の算術符号化装置において、
前記目標符合量決定部は、
現在のスライスの前記算術符号化が終了する前に、前記算術符号化をしている現在のスライスの途中までの符号量と、前記現在のスライスの途中までの符号量から予測した当該現在のスライスの残りの符号量とに基づいて、次のスライスの目標符号量を決定する、
ことを特徴とする算術符号化装置。
【請求項３】
請求項１記載の算術符号化装置において、
前記目標符合量決定部は、
現在のスライスの前記算術符号化が終了する前に、前記算術符号化をしている現在のスライスの途中までの符号量と、既に前記算術符号化が終了している符号化済みの隣接マクロブロックの符号量から予測した当該現在のスライスの残りの符号量とに基づいて、次のスライスの目標符号量を決定する、
ことを特徴とする算術符号化装置。
【請求項４】
請求項１記載の算術符号化装置において、
さらに、
入力画像のアクティビティを算出するアクティビティ算出部と、
マクロブロック毎に算術符号化後の符号量をカウントする符号量カウント部と、
マクロブロック毎に前記アクティビティと前記符号量とを対応させて記憶するアクティビティ・符号量記憶部と、
前記アクティビティ算出部によって前記アクティビティが算出された場合、算出されたアクティビティと類似するアクティビティが前記アクティビティ・符号量記憶部に記憶されているか否かを検索し、類似するアクティビティが記憶されている場合、当該類似するアクティビティに対応する前記符号量を読み出す類似アクティビティ検索部と、を有し、
前記目標符合量決定部は、
現在のスライスの前記算術符号化が終了する前に、前記類似アクティビティ検索部によって読み出された前記類似するアクティビティに対応する前記符号量に基づいて、次のスライスの目標符号量を決定する、
ことを特徴とする算術符号化装置。
【請求項５】
コンテキストテーブルをスライス毎に初期化して算術符号化をする算術符号化装置におけるコンテキストテーブル初期化方法であって、
現在のスライスの前記算術符号化が終了する前に、既に終了した前記算術符号化による符号量に基づいて次のスライスの目標符号量を決定し、
次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定し、
次のスライスの量子化パラメータに基づいて現在のスライスの算術符号化が終了する前に、次のスライスで使用する前記コンテキストテーブルを初期化する、算術符号化装置におけるコンテキストテーブル初期化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテキストテーブルをスライス毎に初期化し、符号化の対象となるシンタックス要素別にコンテキストテーブルを切り替えて動画像をエントロピー符号化する算術符号化装置、および算術符号化装置におけるコンテキストテーブル初期化方法に関するもので、特に、信号の発生確率を０と１の区間に適合させてその区間に含まれる小数の値で信号を表現する算術符号化のコンテキストテーブルの初期化に関し、特にＨ．２６４／ＡＶＣ符号化標準で規定されるＣＡＢＡＣ（Context Adaptive Binary Arithmetic Coding）のコンテキストテーブルの初期化に関するものである。
【背景技術】
【０００２】
従来、動画像の高能率圧縮符号化方式としてＩＳＯで規格策定されたＭＰＥＧ２（ＩＳＯ／ＩＥＣ１３８１８−２）ビデオ符号化方式がデジタル放送やＤＶＤの符号化方式に採用され広く普及している。近年はＢｌｕＲａｙやＨＤ−ＤＶＤと呼ばれる次世代の記録メディア方式が策定され、３０Ｍｐｂｓ〜４０Ｍｐｂｓの高いビットレートで動画像を記録再生する方式であることから注目を集めている。これらの新しい記録メディアは記憶容量が大きく、転送レートが高いことが特徴であるが、それだけでなくビデオの圧縮符号化方式としてＨ．２６４／ＡＶＣ符号化方式を採用していることも特徴の１つである。
【０００３】
Ｈ．２６４／ＡＶＣ符号化方式の正式な名称はＴＩＵ−Ｔ勧告Ｈ．２６４あるいはＩＳＯ／ＩＥＣ１４４９６−１０（ＭＰＥＧ４パート１０）Ａｄｖａｎｃｅｄ Ｖｉｄｅｏ Ｃｏｄｉｎｇであり、動き補償予測による予測誤差を離散コサイン変換（ＤＣＴ変換）して適応量子化した後にエントロピー符号化を行って符号量圧縮を行う符号化方式である。特にエントロピー符号化方式にＣＡＶＬＣ（Context Adaptive Variable Length Coding）と、ＣＡＢＡＣ（Context Adaptive Binary Arithmetic Coding）との２つの方式が用意されており、従来のＶＣＬ符号化に比べて符号化効率が改善されている。とりわけ算術符号化方式であるＣＡＢＡＣは符号化効率が高く、より少ない符号量で画像データを圧縮することができる符号化方式である。
【０００４】
ここで、算術符号化方式について説明する。３ビットのビット列（０，０，１）からなる信号列を算術符号化する場合、まず最下位のビット値１を取り出し、このビットの発生確率を定義した図８のコンテキストテーブルから１の発生確率を知る。このビット列（０，０，１）の個々のビットはそれぞれコンテキストが異なる設定なので、図８のコンテキストテーブルを１ビット毎に切り替えて適用する。
【０００５】
つまり、図８に示すように、１の発生確率が０．６であり優勢なシンボルであったとすると、図９に示すように、区間[０，１］の下側の０から０．６の区間[０、０．６］にこの１を割り当てる。次にビット列（０，０．１）の真ん中のビット０を取り出し、このビットの発生確率を定義したコンテキストテーブルから０の発生確率０．３を知る。これは劣勢シンボルである。これを、図９に示すように、区間[０、０．６］の上側から０．３の比率となる区間[０．４２，０．６］に０を割り当てる。最後にビット列（０，０，１）の最上位のビット０を取り出し、このビットの発生確率を定義したコンテキストテーブルから０の発生確率０．８を知る。これを、図９に示すように、区間[０．４２，０．６］の下から０．８の比率の区間[０．４２，０．５６４］に１を割り当てる。区間０．４２から０．５６４に含まれる小数でデジタルのビット量を最小にする小数値は０．５である。０．５はビット列で示すと１であり、元のビット列が３ビットであったものが算術符号化することによって１ビットに圧縮されている。図９は、この３ビットの算術符号化の流れを示している。
【０００６】
これが算術符号の基本的な考え方であるが、Ｈ．２６４／ＡＶＣのＣＡＢＡＣ符号化では、例えば、図１０に示す構成でエントロピー符号化器を構成する。符号化の対象であるシンタックス要素は、シンタックスに従った種々の変数シンボルや予測誤差を示す係数データである。これらの変数や係数は多値であるので、まず最初に２値化器１０２で２値化されビット列に変換される。この２値化には、Ｕｎａｒｙ ＢｉｎａｒｉｚａｔｉｏｎやＴｒｕｎｃａｔｅｄ Ｕｎａｒｙ Ｂｉｎａｒｉｚａｔｉｏｎ，あるいはＣｏｎｃａｔｅｎａｔｅｄ Ｕｎａｒｙ／ｋ−ｔｈ Ｏｒｄｅｒ Ｅｘｐｏｎｅｎｔｉａｌ Ｇｏｌｏｍｂ Ｂｉｎａｒｉｚａｔｉｏが適用される。同時に変数や係数は発生確率テーブルが個別に用意されており、画像をマクロブロックに分割して符号化する場合に隣接のマクロブロックの情報を使ってより期待する発生確率が発生しやすいように周辺情報を加味してコンテキスト別にシンボルの発生確率を定義したコンテキストテーブルがコンテキストモデラ１０１によって選択され、その確率値に従って２値化されたビン値が算術符号化器１０３でビットストリームに符号化される。
【０００７】
コンテキストテーブルは、学習効果を持たせるために符号化した際に優勢シンボルが発生した場合には、そのコンテキストの発生確率をより高くするように修正されて以降の符号化の時により最適な符号効率で符号化が行われるように修正される。
【０００８】
逆に劣勢シンボルが出現した場合は、コンテキストテーブルの発生確率はより低くなるように修正される。ところでデジタル伝送の形態によってはデータの伝送誤りが発生する場合が想定される。算術符号化されたビットストリームを復号する場合、最初のビットから逐次複合化していかないと値の復元ができない特性をもっている。この特性はもし符号の途中に伝送誤りで生じたビット誤りがあった場合、それ以降の値の正確な復元は不可能である。
【０００９】
そこで、動画像の１フレームを１スライス、場合によっては１フレームを複数のスライスに分割し、このスライス毎にコンテキストテーブルを初期化して伝送誤りの耐性を高めるようにＨ．２６４／ＡＶＣのＣＡＢＡＣ規格で規定されている。ＣＡＢＡＣにおいては４６０のコンテキストが用意されているため、スライス毎にこのコンテキストテーブルを初期化しなければならない。
【００１０】
なお、従来の算術符号化装置において、コンテキストテーブルの初期化を高速化するものがある（例えば、特許文献１参照）。
【特許文献１】特開平６−３１９０４６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
ところで、算術符号化は、その性質上１ビットの値を１ビット毎に順次符号化処理しなければならず、複数ビットをまとめて符号化したり、符号化しているビットより先のビットを先行して符号化することができないため、ハードウェア回路で算術符号化装置を構成する場合には並列処理回路を構成できず、多くのクロックサイクルが必要となる。
【００１２】
そのため、処理全体のサイクル数を削減するためにコンテキストの初期化時間をできるだけ短縮する必要があり、特に、マルチスライス構成とした場合にその要求は高くなる。
【００１３】
このように、ＣＡＢＡＣ規格においては上述したように伝送誤りの耐性を高めるためスライス毎にコンテキストテーブルを初期化する必要があるが、上述の特許文献１に記載の算術符号化装置では、スライス毎にコンテキストテーブルを初期化する方法までは開示されていないので、算術符号化処理を高速化することもできない、という問題があった。
【００１４】
そこで、本発明は、算術符号化処理を高速化することができる算術符号化装置および算術符号化装置におけるコンテキストテーブル初期化方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
前記目的を達成するため本発明の算術符号化装置では、コンテキストテーブルをスライス毎に初期化して算術符号化をする算術符号化装置であって、現在のスライスの前記算術符号化が終了する前に、既に終了した前記算術符号化による符号量に基づいて、次のスライスの目標符号量を決定する目標符合量決定部と、前記目標符合量決定部によって決定された次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定する量子化パラメータ決定部と、前記量子化パラメータ決定部によって決定された次のスライスの量子化パラメータに基づいて、現在のスライスの算術符号化が終了する前に次のスライスで使用する前記コンテキストテーブルを初期化するコンテキストテーブル初期化部と、を有するものである。
【００１６】
ここで、前記目標符合量決定部は、現在のスライスの前記算術符号化が終了する前に、前記算術符号化をしている現在のスライスの途中までの符号量と、前記現在のスライスの途中までの符号量から予測した当該現在のスライスの残りの符号量とに基づいて、次のスライスの目標符号量を決定する、ようにしても良い。
【００１７】
また、前記目標符合量決定部は、現在のスライスの前記算術符号化が終了する前に、前記算術符号化をしている現在のスライスの途中までの符号量と、既に前記算術符号化が終了している符号化済みの隣接マクロブロックの符号量から予測した当該現在のスライスの残りの符号量とに基づいて、次のスライスの目標符号量を決定する、ようにしても良い。
【００１８】
また、さらに、入力画像のアクティビティを算出するアクティビティ算出部と、マクロブロック毎に算術符号化後の符号量をカウントする符号量カウント部と、マクロブロック毎に前記アクティビティと前記符号量とを対応させて記憶するアクティビティ・符号量記憶部と、前記アクティビティ算出部によって前記アクティビティが算出された場合、算出されたアクティビティと類似するアクティビティが前記アクティビティ・符号量記憶部に記憶されているか否かを検索し、類似するアクティビティが記憶されている場合、当該類似するアクティビティに対応する前記符号量を読み出す類似アクティビティ検索部と、を有し、前記目標符合量決定部は、現在のスライスの前記算術符号化が終了する前に、前記類似アクティビティ検索部によって読み出された前記類似するアクティビティに対応する前記符号量に基づいて、次のスライスの目標符号量を決定する、ようにして良い。
【００１９】
また、本発明の算術符号化装置におけるコンテキストテーブル初期化方法は、コンテキストテーブルをスライス毎に初期化して算術符号化をする算術符号化装置におけるコンテキストテーブル初期化方法であって、現在のスライスの前記算術符号化が終了する前に、既に終了した前記算術符号化による符号量に基づいて次のスライスの目標符号量を決定し、次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定し、次のスライスの量子化パラメータに基づいて現在のスライスの算術符号化が終了する前に次のスライスで使用する前記コンテキストテーブルを初期化する、ものである。
【発明の効果】
【００２０】
本発明の算術符号装置および算術符号化装置におけるコンテキストテーブル初期化方法によれば、現在のスライスの算術符号化が終了する前に、既に終了した算術符号化による符号量に基づいて次のスライスの目標符号量を決定し、次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定し、次のスライスの量子化パラメータに基づいて現在のスライスの算術符号化が終了する前に次のスライスで使用するコンテキストテーブルを初期化するので、コンテキストテーブルの初期化のための時間をスライス毎の算術符号化処理の間に特別確保する必要がなくなり、算術符号化処理を高速化することができる。
【発明を実施するための最良の形態】
【００２１】
本発明の実施の形態は、ＣＡＢＡＣ方式の算術符号化装置、およびその算術符号化装置におけるコンテキストテーブルの初期化方法に関し、符号化が完了していないマクロブロックの符号量をすでに符号化した符号化済み部分であるマクロブロックの符号量から予測することによって、現在のスライスの算術符号化が終了する前に次のスライスの量子化パラメータの初期sliceQPを決定してコンテキストテーブルを初期化することにより、コンテキストテーブルの初期化のための時間をスライス毎の算術符号化処理の間に特別確保する必要をなくし、算術符号化処理の高速化を実現するものである。
【００２２】
実施の形態１．
図１は、本発明に係る算術符号化装置を有する符号化装置の構成例を示す図である。
【００２３】
図１において、この符号化装置は、アクティビティ算出部２０１、画像入力部２０２、スライスタイプ制御部２０３、フレームバッファ２０４、目標符号量決定部２０５、量子化パラメータ決定部２０６、画面内予測部２０７、動き補償予測部２０８、コンテキストテーブル初期化部２０９、ＩＮＴＲＡ／ＩＮＴＥＲ判定部２１０、初期化コンテキストテーブルの切り替え部２１１、直交変換器２１２、第１のコンテキストテーブル２１３、第２のコンテキストテーブル２１４、量子化器２１５、コンテキストテーブル切り替え部２１６、２値化器２１７、コンテキストモデラ２１８、逆量子化器２１９、算術符号化器２２０、逆直交変換器２２１、符号量カウント部２２２、ストリームバッファ２２３、デブロックフィルタ２２４、切り替えタイミング制御部２２５、全体処理タイミング生成部２２６を有している。
【００２４】
次に、図１に示す符号化装置の動作を説明する。まずは、算術符号化器２２０が算術符号化処理を行うまでの動作について説明する。
（算術符号化処理までの動作）
【００２５】
図１に示す本実施の形態の符号化装置では、動画像の符号化を行うためにデジタル化されたビデオ信号が画像入力部２０２に入力される。入力されるビデオ信号は、高精細画像の符号化を行う場合、画像サイズが１２８０×７２０で画像周期が６０フレームのプログレッシブ画像や画像サイズが１９２０×１０８０で画像周期が６０フィールドのインターレース画像が入力画像となる。
【００２６】
また、本実施の形態の符号化装置では、Ｈ．２６４／ＡＶＣ符号化方式で符号化を行うので、符号化対象となるフレーム画像の時間的に先行したフレーム画像を参照画像として予測誤差を求めると同時に、符号化対象となるフレーム画像の時間的に後続のフレーム画像を参照画像として予測誤差を求めるバイプレディクティブ・スライス（Ｂスライス）の符号化を行うため、入力画像の複数フレームを一度フレームバッファ２０４に記憶して、時間的に前後するフレームの参照が可能なように記憶される。
【００２７】
Ｈ．２６４／ＡＶＣ符号化方式において、一般的にビデオ信号の画像を構成するフレームまたはフィールドを符号化の１単位として取り扱うが、この１画面をさらに複数のスライスに分割して符号化することが可能である。本実施の形態１では、説明の簡単のため１フレームを構成する１画面を複数のスライスに分割することなく、１フレーム＝１スライスとして説明するが、本発明では、これに限らず、複数のスライスに分割するマルチスライスの符号化に適応可能である。
【００２８】
Ｈ．２６４／ＡＶＣ符号化方式の特徴の１つは、イントラ符号化と呼ばれる画面内符号化に画面内予測符号を採用している点である。１スライスの符号化を行う場合、マクロブロックと呼ぶ１６×１６の正方画素を単位として画像の予測誤差検出、直交変換、量子化を行う。
【００２９】
画面内予測部２０７では、フレームバッファ２０４に保持され入力信号を、マクロブロック単位でブロックに隣接する上側あるいは左側の画素を参照画素として同一面内の予測を行い、入力画像と予測画像の予測誤差が最小になる予測方法を決し、決定した予測方法によって生成された画像を予測画像としてＩＮＴＲＡ／ＩＮＴＥＲ判定部２１０に送る。
【００３０】
これに対して、動き補償予測部２０８は、従来から知られているＭＰＧＥ１やＭＰＥＧ２符号化方式と同じように、複数フレーム間の画像の動きを利用して参照画像の動き補償予測による予測誤差が最小となる参照画像を探索し、これを予測画像としてＩＮＴＲＡ／ＩＮＴＥＲ判定部２１０に送る。
【００３１】
フレーム間予測による符号化効率は画面内予測に比べて効率が高い。画面内符号化をイントラ（ＩＮＴＲＡ）符号、動き補償によるフレーム間符号をインター（ＩＮＴＥＲ）符号と呼ぶが、Ｈ．２６４／ＡＶＣでは同一のスライスの中で、マクロブロック単位でイントラとインターの符号化が混在することが可能なので、ＩＮＴＲＡ／ＩＮＴＥＲ判定部２１０でどちらが符号化効率が高いかを判断して符号量が少ない符号化方式を選択する。
【００３２】
ＩＮＴＲＡ／ＩＮＴＥＲ判定部２１０で選択された予測画像は、図示しない差分器により入力画像との予測誤差が算出された後、直交変換器２１２で係数に変換される。Ｈ．２６４／ＡＶＣでは、直交変換にＤＣＴが採用されているので、直交変換されると、ＤＣＴ係数となる。
【００３３】
ＤＣＴ係数は、さらに符号量を削減するために量子化器２１５にて量子化される。量子化された係数のデータ量は、量子化パラメータの一つである量子化ステップ幅に大きく依存する。量子化ステップを大きくしてＤＣＴ係数を粗く量子化すると、量子化後の係数データ量は小さくなるので符号化効率が高くなる。これに対して、量子化ステップを小さくしてＤＣＴ係数を細かく量子化すると画像品質は良くなるが、量子化後の係数データ量は大きくなるので符号化効率は悪くなる。このように、ＤＣＴ係数を量子化する量子化ステップを制御することにより、この画像符号化装置により生成されるビットストリームのビット量を制御することが可能となる。
【００３４】
量子化器２１５にて量子化されたＤＣＴ係数は、逆量子化器２１９で再度ＤＣＴ係数に戻された後、逆直交変換器２２１で予測誤差に再変換される。なお、この予測誤差は、図示しない加算器により、ＩＮＴＲＡ／ＩＮＴＥＲ判定部２１０で決定した予測部２０７，２０８からの予測画像に加算される。
【００３５】
その後、デブロックフィルタ２２４でブロックノイズが除去され、ブロックノイズが除去された画像は、ＰスライスやＢスライスで参照される参照画像としてフレームバッファ２０４に戻され記憶される。
【００３６】
ここで、Ｈ．２６４／ＡＶＣの符号化には、動き補償予測によるフレーム間予測を用いる双方向予測が可能なバイプレディクティブ・スライス（Ｂスライス）と、片方向予測が可能なプレディクティブ・スライス（Ｐスライス）と、面内符号のイントラ・スライス（Ｉスライス）と、の３種類のスライスが用いられる。
【００３７】
どのようなスライスタイプの出現順序でストリームを構成するかを制御するのがスライスタイプ制御部２０３である。一例としてＩスライスとＢスライスの間隔を一定にして「ＩＢＢＢＰＢＢＢＰＢＢＢＩＢＢＢＰＢＢＢ・・・」のような順序で符号化を行う。このようなスライスタイプの一定の繰り返しパターンをグループオブピクチャ（ＧＯＰ）構成と呼ぶ。このＧＯＰ構成は、符号化するビットレートに依存する。つまり、ビットレートが低い場合は、符号量をより少なくする必要から、Ｉスライスの挿入間隔を長く設定する。
【００３８】
符号化する元画像にシーンチェンジがあった場合、ＢスライスやＰスライスで先行するフレームの画像は、現在のシーンと明らかに異なる画像のために予測を行っても適切な予測が行えないのでシーンチェンジを検出する必要がある。
【００３９】
そのため、アクティビティ算出部２０１は、マクロブロック単位やフレーム単位、スライス単位で画面の複雑度（アクティビティ）を算出する。
【００４０】
スライスタイプ制御部２０３は、アクティビティ算出部２０１によって算出されたアクティビティを複数フレームに渡って保持しておき、フレーム間の変化を調べてシーンチェンジの有無を判断する。この結果、シーンチェンジであると判断すると、速やかにＩスライスを挿入する。
【００４１】
目標符号量決定部２０５は、算術符号化器２２０による算術符号化で発生するストリームの目標ビットレートと、スライスタイプ制御部２０３からのスライスタイプのＧＯＰ構成と、符号量カウント部２２２からの算術符号化器２２０における符号化済みの符号量ととを勘案して、スライスの符号量を決定する。なお、スライスの符号量の決定方法については、後で詳述する。また、符号化はマクロブロック単位で行われるので、マクロブロック単位で目標符号量を決定して精度の高い符号量制御を行うこともできる。
【００４２】
そして、量子化パラメータ決定部２０６は、目標符号量決定部２０５が決定した目標となる符号量を実現するために、先に説明したようにＤＣＴ係数を量子化する量子化パラメータを決定する。
【００４３】
その際、量子化パラメータ値Ｑから符号量Ｓを正確に算出できる関数はないので、実際に符号化した符号量と、目標値との比較を行って符号量を制御するループバック制御機能が必要となる。
【００４４】
そこで、符号量カウント部２２２が、算術符号化器２２０によって符号化されたビットストリームの符号量をカウントし、目標符号量決定部２０５にフィードバックする。
【００４５】
なお、算術符号化器２２０では、量子化されたＤＣＴ係数、規格に決められたシンタックスを構成する種々の変数を効率よく符号圧縮するためにエントロピー符号化を行う。ここで、Ｈ．２６４／ＡＶＣ符号化ではエントロピー符号化には、ＣＡＶＬＣ（context adaptive variable length coding）と、ＣＡＢＡＣ（context-based adaptive binary arithmetic coding）の２種類のエントロピー符号化が用意されており、本実施の形態では、ＣＡＢＡＣを採用している。ＣＡＢＡＣは、ＣＡＶＬＣに比べて符号化効率が高いが符号化処理方法も複雑になっており、ハードウェアでＣＡＢＡＣによる算術符号化器を実装する場合、高いビットレートでの符号化を実現するには処理速度を優先した構成が必須である。
（算術符号化処理の説明）
【００４６】
次に、本実施の形態１の算術符号化器２２０が採用しているＣＡＢＡＣの算術符号化処理について説明する。
【００４７】
量子化器２１５にて量子化されたＤＣＴ係数は、２値化器２１７でバイナライゼーション（２値化）され、算術符号化器２２０で算術符号化される。算術符号化では、ＤＣＴ係数だけでなく、ストリームのシンタックスを構成する種々のフラグや動きベクトル情報があるがこれらのシンタックス要素のすべてがＣＡＢＡＣ符号化処理の対象であり、当然すべてのシンタックス要素がバイナライゼーション処理される。バイナライゼーションはUnary binarization、Truncated unary binarization、Concatenated unary k-th order Exp-Golomb binaraization、Filxed-length binarizationの４通りの方法が規定されているが、どれを適応するかは符号化して所定のシンタックスで伝送するＤＣＴ係数や動きベクトル等のシンタックス要素のコンテキストに依存する。
【００４８】
コンテキストは、シンタックス要素毎に定義されており、発生する確率の高いビット値（valMPS）と、その発生確率を定義した発生確率テーブルを参照するためのインデックス（pStateIdx）との２つの変数を組としてすべてのシンタックス要素に対応するコンテキストをテーブル形式で管理して記憶している。ビット値（valMPS）と、参照インデックス（pStateIdx）との組をコンテキストで分類してテーブル形式で保持するためにコンテキストテーブルと呼ぶ。
【００４９】
また、２値化されたビット値をビン（binVal）と呼ぶが、１つのシンタックス要素が複数個のビンに変換されるので、どのビンを算術符号の対象とするかを識別するためにビンインデックス（binIdx）を用いてビンを特定する。ビンインデックスは、２値化されたビン列のＬＳＢ側からbinIdx=0として識別する。
【００５０】
発生確率をできるだけ正しく想定するために、特定のシンタックス要素のコンテキストが複数定義されており、ビンインデックスと隣接情報を用いてどのコンテキストを適応するかを決定する。隣接情報とは、符号化対象となるマクロブロックに隣接するマクロブロック、場合によってはマクロブロックをさらに分割したサブマクロブロックの情報である。また符号化効率の点でＩスライスの場合と、それ以外のＰスライスおよびＢスライスの場合とで、コンテキストが異なるように規定されている。
【００５１】
以上説明したコンテキストの算出を行うのがコンテキストモデラ２１８である。コンテキストモデラ２１８によって発生確率の高いビット値（valMPS）と、その発生確率を定義した発生確率テーブルを参照するためのインデックス（pStateIdx）とが決定され、２値化されたビン（binVal）と共に算術符号化器２２０に供給される。
【００５２】
算術符号化器２２０では、入力された発生確率の高いビット値の確率と、ビン（binVal）とを用いて算術符号演算を行い、ビットストリームを生成する。算術符号の結果、発生確率の高いビット値がビンとして入力されると、次はより高い発生確率で発生確率の高いビット値（valMPS）が発生するようにコンテキストが更新される。
【００５３】
ここで、算術符号化に用いるコンテキストテーブルは、マクロブロック毎に更新される一方、スライス毎に初期化される。上述したようにマクロブロック毎の学習によってコンテキストテーブルを更新していくため、マクロブロックの算術符号化を行う回数が増えれば増えるほど、符号化効率が高くなる方向に推移する。そのためコンテキストテーブルはできるだけ長く使い続けた方が好ましい。
【００５４】
その一方、伝送系のエラー発生等により符号化されたストリームに誤りが生じてしまうと、コンテキストテーブルも正しく更新されないため、算術符号化の特徴から、受信装置（復号装置）側では、符号エラーが生じた以降の算術符号化処理とは逆の算術復号処理は一切できなくなってしまう。これを回避するためにスライス毎にコンテキストテーブルを所定の方法で初期化する。当然のことながら算術符号化処理と、その逆の算術復号処理とでコンテキストテーブルの初期化の方法は同じである。
【００５５】
コンテキストテーブルの初期化は、コンテキストテーブル毎に規定された初期化関数によって発生確率の高いビット値（valMPS）と、その発生確率を定義した発生確率テーブルを参照するためのインデックス（pStateIdx）と、を生成する。この初期化関数の引数には、下記式（１）に示すように、初期変数テーブルがコンテキストテーブル毎に規定された値が使われると共に、スライスの量子化パラメータの初期値sliceQPが入力される。
【００５６】
（valMPS,pStateIdx）＝コンテキスト初期化関数（ｍ,ｎ,sliceQP）・・・式（１）
【００５７】
ここで、コンテキスト初期化関数の引数となる変数ｍ,ｎは、Ｈ．２６４／ＡＶＣ規格の初期変数テーブルでコンテキスト毎に規定される変数である。
【００５８】
Ｈ．２６４／ＡＶＣ符号化のコンテキストテーブルには、４６０種のコンテキストテーブルが規定されている。そのため、コンテキストテーブルを初期化するためにパイプライン構成を使って効率よく実装する必要があり、効率的に構成された回路で１つのコンテキスト要素を１クロックで処理する構成を実現できた場合でも、４６０クロックの処理時間を要する。例えば、１マクロブロックの算術符号化の平均処理時間を７００ステップと想定すると、１マクロブロックの６５％ほどの処理時間に相当する。また、１つのコンテキストの初期に要するステップが２ステップ以上かかる場合には、複数のマクロブロックの算術符号化に相当する時間がコンテキストテーブルの初期化のために必要となる。
【００５９】
よって、スライスの切り替わり毎にコンテキストテーブルの初期化を行うために、スライスの算術符号化の間に、コンテキストテーブルの初期化時間を設けると、本来の算術符号に費やす処理時間が圧迫される結果となる。特に、１フレームを複数のスライスで分割するマルチスライス構成の場合は、１フレームに発生するスライス毎の初期化回数が、スライス数分発生するので、さらに負荷が大きくなってしまう。このように、スライスの切り替わり毎に、コンテキストテーブルを初期化するための専用の時間を用意することは、無駄が多い。
【００６０】
そこで、本実施の形態１では、スライスが変更されるより前に、次に出現するスライスタイプに合わせてコンテキストテーブルを初期化して事前に用意しておき、スライスの切り替わり時には、今まで使っていたコンテキストテーブルから初期化済みの新しいコンテキストテーブルへ時間を空けずに切り替えることによって、コンテキストテーブルを初期化する時間を待つことなく新しいコンテキストテーブルを用いて次のスライスの算術符号化を開始するようにした。
【００６１】
以下、本実施の形態１におけるコンテキストテーブルの初期化処理について詳しく説明する。
（コンテキストテーブルの初期化処理）
【００６２】
先に説明したようにコンテキストテーブルの初期化は、コンテキスト初期化関数（ｍ,ｎ,sliceQP）によって定義される。引数のｍとｎは、初期変数テーブルで規定されるのでスライスタイプが確定すると一意に決まる。これに対して、スライスの量子化ステップの初期値sliceQPは、現在符号化を行っているスライスの符号化処理が完了しないと、本来確定しない値である。
【００６３】
そこで、本実施の形態１では、現在符号化中のスライスの符号化が完全に終わっていない場合でも、現在算術符号化をしているスライスの符号量に基づいて、すなわち算術符号化をしている現在のスライスの途中までの符号量と、既に算術符号化が終了している現在のスライスの途中までの符号量から予測した当該現在のスライスの残りの符号量とに基づいて、次のスライスの目標符号量を予測して、次のスライスの開始以前に次のスライスで使用するコンテキストテーブルの初期化を完了するようにしている。
【００６４】
図２は、本実施の形態１におけるコンテキストテーブルの初期化のタイミングを示す図である。
【００６５】
本実施の形態１では、図１に示すように、切り替え部２１１，２１６が切り替えタイミング制御部２２５からの切り替えタイミング信号に基づいて、第１のコンテキストテーブル２１３、第２のコンテキストテーブル２１４を後述するそれぞれのタイミングで逆に切り替え、一方のコンテキストテーブルを出力するように切り替えている際、コンテキストテーブル初期化部２０９により他方のコンテキストテーブルを初期化している。
【００６６】
その結果、本実施の形態１では、図２に示すように、スライス毎に、第１のコンテキストテーブル２１３と、第２のコンテキストテーブル２１４とを切り替えると共に、第１のコンテキストテーブル２１３を出力している際、第２のコンテキストテーブル２１４を初期化し、第２のコンテキストテーブル２１４を出力している際、第１のコンテキストテーブル２１３を初期化することができる。
【００６７】
ここで、先に説明したようにコンテキストテーブルの初期化は、コンテキスト初期化関数（ｍ,ｎ,sliceQP）で定義され、スライスの量子化ステップの初期値sliceQPは、現在符号化を行っているスライスの符号化処理が完了しないと、本来は確定しない値である。しかし、本実施の形態１では、図２に示すように、コンテキストテーブルを第１のコンテキストテーブル２１３、第２のコンテキストテーブル２１４と２つ設け、切り替え部２１１，２１６によりスライス毎に切り替えて使用して、現在算術符号化をしているスライス中のマクロブロックの符号量に基づいて、すなわち算術符号化をしている現在のスライスの途中までの符号量と、既に算術符号化が終了している符号化済み部分の符号量から予測した当該現在のスライスの残りの符号量とに基づいて、次のスライスの目標符号量を予測している。
【００６８】
そのため、本実施の形態１では、なるべく参考にするマクロブロックの符号量が多くなるように、現在算術符号化をしているスライスの終わり付近で、かつ、次のスライスの算術符号化に入る前に当該次のスライスで使用するコンテキストテーブルを初期化している。つまり、本実施の形態１では、図２に示すように、Ｂスライスの算術符号の際に使用する第２のコンテキストテーブル２１４の初期化は、第１のコンテキストテーブル２１３による算術符号をしているＩスライスのなるべく終了間際で行ない、Ｐスライスの算術符号の際に使用する第１のコンテキストテーブル２１３の初期化は、第２のコンテキストテーブル２１４による算術符号をしているＢスライスのなるべく終了間際で行なうようにしている。
【００６９】
なお、本実施の形態１では、なるべく最新かつ正確なマクロブロックの符号量を参考にできるように、図２に示すように、現在算術符号化をしているスライスの終わり付近で次のスライスで使用するコンテキストテーブルの初期化を開始し、次のスライスの算術符号化に入る直前に当該次のスライスで使用するコンテキストテーブルの初期化が完了するようにコンテキストテーブルの初期化開始タイミングを決定しているが、本発明では、このタイミングに限らず、次のスライスの算術符号化が開始する前に当該次のスライスで使用するコンテキストテーブルの初期化が完了していれば十分であるので、例えば、現在算術符号化をしているスライスの中央付近等で次のスライスで使用するコンテキストテーブルの初期化を開始するようにしても勿論よい。この場合、図２に示す方法に比べ、なるべく最新かつ正確なマクロブロックの符号量を参考にできなくなるが、その分、コンテキストテーブルの初期化時間を確実に確保できることになる。
【００７０】
図３、図４は、本実施の形態1におけるコンテキストテーブルの初期化処理の手順を示すフローチャートである。
【００７１】
なお、図３、図４のフローチャートに示すコンテキストテーブルの初期化処理は、マクロブロック毎に繰り返される処理ループ（Ｓ３１３で“ｎｏ”の場合）、スライス毎に繰り返される処理ループ（Ｓ３１５で“ｎｏ”の場合）、ＧＯＰ毎に繰り返される処理ループ（Ｓ３１５で“ｙｅｓ”の場合）がフィードバックされて構成されている。
【００７２】
まず、本実施の形態１の場合、算術符号化のために、まず最初に、スライスタイプ制御部２０３はＧＯＰ構成を決定する（Ｓ３０１）。ＧＯＰ構成を決定するとは、Ｉスライス、Ｂスライス、Ｐスライスの出現順序や頻度を決定することである。Ｉスライスの間隔が１５、Ｐスライスの間隔が５とすると、「ＩＢＢＢＢＰＢＢＢＢＰＢＢＢＢ  ＩＢＢＢＢＰＢＢＢＢＰＢＢＢ・・・」が符号化の順序となる。このスライス構成の循環はシーンチェンジ等の特別な要因が無い場合は変更されることなく繰り返される。
【００７３】
次に、スライスタイプ制御部２０３は、決定された符号化シーケンスに従って符号化を行うために画面内予測部２０７および動き補償予測部２０８に対して符号化の指示を与えると共に、決定したＧＯＰ構成を目標符号量決定部２０５へ指示する。
【００７４】
目標符号量決定部２０５は、スライスタイプ制御部２０３にてＧＯＰの構成が決まると、スライスタイプ別の符号量比率と、各スライスの目標符合量を決定する（Ｓ３０２）。例えば、目標符号量決定部２０５は、Ｉスライス：Ｐスライス：Ｂスライス＝４：２：１のようにスライスタイプ別の符号量比率を決めると、目標とするビットレートから各スライスで生成すべき目標符号量を決定する。
【００７５】
例えば、目標符号量が４０Ｍｐｂｓ、フレーム周波数を３０Ｈｚとすると、下記式（２）に示すように、Ｉスライスは４Ｍビット、Ｂスライスは２Ｍビット、Ｉスライスは１Ｍビットの符号量となる。
【００７６】
(I-Slice + P-slice + B-slice)×2 = (4M×1 + 2M×2 + 1M×12)×2 = 40Mビット
…式（２）
【００７７】
ここで、スライスタイプ別の目標符号量が決まると、スライスを構成するマクロブロックの総数からマクロブロック毎の目標符号量も決まる。
【００７８】
しかし、マクロブロックの量子化ステップは、マクロブロックの目標符号量から簡単に算出できない。これは、画像の複雑度がフレーム毎に異なるため画面内予測手段や動き補償予測手段によって生成される予測誤差の変動が大きく、エントロピー符号化を実際に行わないとビットストリームの符号量を正確に見積もることができないからである。
【００７９】
そこで、本実施の形態１では、スライス毎に、すなわち後述する図４のＳ３１５にてＧＯＰ未終了（Ｓ３１３“ｎｏ”）と判定される度に、アクティビティ算出部２０１がフレームバッファ２０４に格納された入力画像を参照して、入力画像の複雑度を示すアクティビティを算出すると共に（Ｓ３０３）、符号量カウント部２２２によって今までに発生した符号量の積算値を考慮して、これから符号化するスライスに割り当て可能なビット量を算出してスライスの目標符号量とする（Ｓ３０４）。
【００８０】
そして、量子化パラメータ決定部２０６が、アクティビティ算出部２０１にて算出されたアクティビティと、目標符号量決定部２０５が決定したスライスタイプ別の目標符号量とに基づいて量子化パラメータを決定し、決定した量子化パラメータを量子化器２１５およびコンテキストテーブル初期化部２０９へ出力する。
【００８１】
Ｈ．２６４／ＡＶＣ符号化では、量子化ステップを、量子化パラメータと呼ばれるパラメータで表現しており、量子化ステップが２倍になると量子化パラメータは＋６増加する関係にある。量子化パラメータ算出関数の一例を、以下の式（３）に示す。
【００８２】
量子化パラメータ＝量子化パラメータ算出関数（目標符号量、アクティビティ）
…式（３）
【００８３】
アクティビティは、画像の活性度や画像の変化の度合いを示すパラメータであり、以下の式（４）に示すように、マクロブロックの輝度平均とマクロブロック各画素の輝度の差分二乗総和（あるいは差分絶対総和）によって算出される。
【００８４】
アクティビティ＝Σ（ブロック輝度平均−各画素の輝度）2…式（４）
【００８５】
よって、前記量子化パラメータ算出関数をより具体的に示すと、以下の式（５）のように定義される。式（５）において、基準量子化パラメータは、自然画像を符号化した時に目標符号量を得るための平均的な量子化パラメータの値であり、種々の画像を符号化した実験によって決定される値である。アクティビティの平均値である平均アクティビティも、実験によって求める。
【００８６】
量子化パラメータ＝基準量子化パラメータ×（アクティビティ／平均アクティビティ）
…式（５）
【００８７】
しかしながら、この方法により決定された量子化パラメータで量子化を行った場合でも、算術符号化器２２０でビットストリームを生成すると、必ずしも期待された符号量が発生するとは限らない。
【００８８】
そこで、本実施の形態１では、目標符合量決定部２０５が、マクロブロック毎、すなわち後述する図４のＳ３１３にてスライス未終了（Ｓ３１３“ｎｏ”）と判定する度に、各マクロブロックの目標符号量の調整と決定を行い（Ｓ３０５）、各マクロブロックの量子化パラメータを決定して（Ｓ３０６）、量子化器２１５へ出力する。ここで、各マクロブロックの目標符号量の調整とは、マクロブロック毎に符号化で発生した符号量と、目標符号量とを常に比較して、各マクロブロックの目標符号量を超える符号量が発生した場合は、後続のマクロブロックの目標符号量を減らす方向で制御し、その逆に各マクロブロックの目標符合量より少ない符号量が発生した場合は、後続のマクロブロックの目標符号量を増やす方向で制御することをいう。なお、このような符号量の調整は、スライス単位でも実行される（Ｓ３０４）。
【００８９】
これにより、量子化器２１５は、マクロブロック毎に直交変換器２１２からのＤＣＴ係数を量子化し、ローカルデコードを行う逆量子化器２１９へ出力する一方、２値化器２１７へ出力し、２値化されたマクロブロック毎の量子化係数が算術符号化器２２０で算出符号化される（Ｓ３０７）。
【００９０】
すると、符号量カウント部２２２が、算術符号化器２２０で算出符号化されるビットストリームの符号量をカウントして積算をする（Ｓ３０８）。
【００９１】
ところで、本実施の形態１では、図２に示すように、現在のスライスの符号化が完了する以前に次のスライスの目標符号量を決定し、次のスライスの量子化パラメータの初期値sliceQPを決めるようにしている。
【００９２】
そのため、本実施の形態１では、スライスの算術符号化が始まると、全体処理タイミング制御部２２６が、次のスライスで使用するコンテキストテーブルの初期化開始時間が来るか否かを判断し（ステップＳ３０９）、次のスライスで使用するコンテキストテーブルの初期化開始時間が来ていない場合には（ステップＳ３０９“ｎｏ”）、スライスの終了か否かを判断し（Ｓ３１３）、スライスの終了でなければ（Ｓ３１３“ｎｏ”）、前記ステップＳ３０３の処理に戻る。
【００９３】
これに対し、全体処理タイミング制御部２２６が、次のスライスで使用するコンテキストテーブルの初期化開始時間が来たと判断した場合（ステップＳ３０９“ｙｅｓ”）、目標符号量決定部２０５に次のスライスの目標符号量の算出指示を出力する。
【００９４】
すると、目標符号量決定部２０５は、全体処理タイミング制御部２２６からの算出指示により、現在のスライスにおいてすでに符号化が完了して符号量カウント部２２２にて積算されているマクロブロックの符号量から残りのマクロブロックで生成されると予想される符号量を計算して、現在のスライスで予想する符号量の累計を算出する（Ｓ３１０）。
【００９５】
ここで、現在のスライスで発生する符号量の累計は、例えば、１スライスのマクロブロック数をｎとし、スライスで発生すると予測される符号量をＳｎ、すでに発生した符号量をＳｍ、すでに符号化が終わったマクロブロックの数をｍとすると、Ｓｎ＝Ｓｍ／ｍ×ｎで算出される。
【００９６】
そして、目標符号量決定部２０５は、以上のようにして算出した符号量Ｓｎを用いて次のスライスの目標符号量を決定して、量子化パラメータ決定部２０６へ出力する。ここで、次のスライスの目標符号量を決定する際、現在のスライスで発生すると予想される符号量が目標符号量と誤差が生じる場合は、その差分符号量を次のスライスで一度にリカバリーしたり、ＧＯＰを構成する残りのスライスに均等に差分符号を割り振って調整するようにする。
【００９７】
量子化パラメータ決定部２０６では、目標符号量決定部２０５にて決定された次のスライスの目標符号量と、アクティビティ算出部２０１にて算出されたアクティビティとから、次のスライスの量子化パラメータの初期値sliceQPを決定して、コンテキストテーブル初期化部２０９へ出力する（Ｓ３１１）。
【００９８】
コンテキストテーブル初期化部２０９は、マクロブロックの符号化と並行して動作可能な構成を有し、量子化パラメータ決定部２０６より次のスライスの量子化パラメータの初期値sliceQPを受けると、切り替え部２１１を介して次のスライスに適応されるコンテキストテーブルの初期化を行う（Ｓ３１２）。
【００９９】
そして、このようにして、次のスライスに用いるコンテキストテーブルの初期化が、次のスライスに切り替わり前に完了し、現在のスライスが終了すると（ステップＳ３１３“ｙｅｓ”）、全体処理タイミング生成部２２６は切り換えタイミング制御部２２５へ指示を送り、切り換えタイミング制御部２２５は、この指示に基づき切り替え部２１６に対しテーブル切り換えの指示を送る。
【０１００】
すると、切り替え部２１６は、現在のスライスが終了した瞬間に、現在のスライス用のコンテキストテーブル（例えば、第１のコンテキストテーブル２１３）から次のスライス用のコンテキストテーブル（例えば、第２のコンテキストテーブ２１４）へ切り替える（Ｓ３１４）。これにより、スライスの切り替わり時においても、瞬時に次のスライス用のコンテキストテーブルを用いて次のスライスの第１マクロブロックから算術符号化を開始することが可能となる。
【０１０１】
そして、次のスライスの算術符号化が開始されると、図２に示すように、この次のスライスの算出符号化が終了するより前に、前のスライスの算術符号化で使用したコンテキストテーブル（例えば、第１のコンテキストテーブル２１３）を事前に初期化しておき、この次のスライスの算出符号化が終了した時点で、使用中の第２のコンテキストテーブル（例えば、第２のコンテキストテーブ２１４）から初期化が完了したコンンテキストテーブル（例えば、第１のコンテキストテーブル２１３）に切り替えるようにする。
【０１０２】
なお、コンテキストテーブルの初期化に要する時間は、コンテキストテーブルの初期化に要するステップ数に依存する。初期化に要するステップ数がＮマクロブロックの算術符号化の処理時間に相当する場合は、スライスの最後からＮマクロブロック前にコンテキストテーブルの初期化指示が発行されるように構成する。コンテキストテーブルの初期化を開始する時刻や第１および第２のコンテキストテーブルを切り替える時刻は切り替えタイミング制御部２２５で管理される。また、初期化するコンテキストテーブルの切り替えは、切り替え器２１１により行われる一方、算術符号化に利用するコンテキストテーブルの切り替えは切り替え器２１６により行われる。
【０１０３】
そして、最後に算術符号化器２２０は、コンテキストモデラ２１８によって算出された第１のコンテキストテーブル２１３、または第２のコンテキストテーブル２１４に基づくコンテキストを基にビットストリームを生成して、生成したビットストリームをバイトパッキングしてストリームバッファ２２３に蓄積する。ストリームバッファ２２３のビットストリームは、ファイルとして蓄積したり、ネットワークを介して送信して消費等される。
【０１０４】
以上のように、本実施の形態１の符号化装置によれば、目標符号量決定部２０５が現在のスライス算術符号化が終了する前に、既に終了した算術符号化による符号量に基づいて次のスライスの目標符号量を決定し、量子化パラメータ決定部２０６が次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定し、コンテキストテーブル初期化部２０９が次のスライスの量子化パラメータに基づいて現在のスライスの算術符号化が終了する前に次のスライスで使用するコンテキストテーブルを初期化するようにしたので、コンテキストテーブルの初期化のための時間をスライス毎の算術符号化処理の間に特別確保する必要がなくなり、算術符号化処理を高速化することができる。
【０１０５】
これにより、少ないクロックサイクルで動作する算術符号化器２２０が実現できるので、消費電力を削減することができると共に、また決められたクロックサイクルの中でより高いビットレートの算術符号化の符号出力が可能となる。
【０１０６】
また、本実施の形態１では、現在のスライスの符号化が完了する前に、目標符号量決定部２０５が算術符号化をしている現在のスライスの途中までの符号量と、既に算術符号化が終了している現在のスライスの途中までの符号量から予測した当該現在のスライスの残りの符号量とに基づいて次のスライスの目標符号量を決定するようにしたので、確実に次のスライスの目標符号量を決定することができる。
【０１０７】
実施の形態２.
次に、本発明の実施の形態２の画像符号化装置について説明する。なお、説明の簡単のために、１スライスが６×２のマクロブロックで構成されるスライスの符号化を例に説明する。なお、本実施の形態２の画像符号化装置は、図１に示す実施の形態１の画像符号化装置と構成が同じであり、図１を参照してその動作を説明する。
【０１０８】
図５は、１スライスが６×２のマクロブロックで構成されるスライスの一例を示している。
【０１０９】
図５に示すように、このスライスの符号化はマクロブロックＭＢ１０まで完了している。マクロブロックＭＢ１１の符号化を開始する際に次のスライスへの切り替わり準備として実施の形態１で説明したようにコンテキストテーブルの初期化を開始する指示が発行される。この場合は、未だ符号化を行っていないマクロブロックＭＢ１１については上隣のマクロブロック５の符号量をマクロブロックＭＢ１１の予測符号量として採用し、マクロブロックＭＢ１２の予測符号量は、その上隣のマクロブロック６の符号量を採用する。
【０１１０】
これは、隣接したマクロブロックの画素の相関は高いので、実際の符号化によって発生する符号量に対して近い値を取ると予測されるからである。なお、上隣だけでなく、左隣等の隣接しているマクロブロックの発生符号量を採用してもよい。
【０１１１】
そして、本実施の形態２の目標符号量決定部２０５では、このように上隣のマクロブロックの符号量から予測したマクロブロックＭＢ１１,１２の符号量を、すでに符号化済みのマクロブロックＭＢ１からマクロブロックＭＢ１０までの符号量に加算して、次のスライスで発生する総符号量を予測して、量子化パラメータ決定部２０６へ出力する。符号量カウント手段２２２で発生した符号量を積算し、すでに発生した符号量を考慮して目標符合量の調整を行う。
【０１１２】
本実施の形態２の量子化パラメータ決定部２０６では、スライスの量子化パラメータの初期値sliceQPを決定し、コンテキストテーブル初期化部２０９へ出力する。
【０１１３】
本実施の形態２のコンテキストテーブル初期化部２０９では、この量子化パラメータの初期値sliceQPを用いてコンテキストテーブルを初期化することにより、次のスライスで用いる初期化されたコンテキストテーブルを事前に準備することができる。
【０１１４】
なお、その後の処理は、前記算術符号化が既に終了している符号化済み部分の符号量に基づいて実施の形態１の場合と同様である。
【０１１５】
以上のように、本実施の形態２の画像符号化装置によれば、前記実施の形態１と同様に、目標符号量決定部２０５が現在のスライス算術符号化が終了する前に、既に終了した算術符号化による符号量に基づいて次のスライスの目標符号量を決定し、量子化パラメータ決定部２０６が次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定し、コンテキストテーブル初期化部２０９が次のスライスの量子化パラメータに基づいて現在のスライスの算術符号化が終了する前に次のスライスで使用するコンテキストテーブルを初期化するようにしたので、コンテキストテーブルの初期化のための時間をスライス毎の算術符号化処理の間に特別確保する必要がなくなり、算術符号化処理を高速化することができる。
【０１１６】
特に、本実施の形態２の画像符号化装置では、スライス内に未符号化のマクロブロックがあっても、空間的に相関の高い隣接するマクロブロックの値を用いてスライスの目標符号量を決定するようにしたので、算術符号化が既に終了している部分の符号量に基づいて算術符号化が完了していない部分の符号量を計算により求める実施の形態１の場合よりも、正確にスライスの目標符号量を決定することができ、適切なスライスの量子化パラメータの初期値SliceQPが決定されるので符号化効率を高めることが可能となる。
【０１１７】
実施の形態３.
次に、本発明の実施の形態３の画像符号化装置について説明する。
【０１１８】
図６は、実施の形態３の画像符号化装置の構成を示すブロック図である。
【０１１９】
図６において、この実施の形態３の画像符号化装置は、図１に示す実施の形態１の画像符号化装置に対し、アクティビティ・符号量記憶部５０１と、類似アクティビティ検索部５０２とを設けたものである。そのため、図１に示す実施の形態１の画像符号化装置と同じ構成要素には、同じ符号を付して説明する。
【０１２０】
次に、実施の形態３の特徴部分の動作を説明する。
【０１２１】
本実施の形態３では、画像入力部２０２から入力した原画像は、フレームバッファ２０４に保存されるが、Ｈ．２６４／ＡＶＣ符号化を行う場合、Ｂスライスの符号化においては符号化フレームより時間的に前と後のフレームを参照するので複数フレーム枚の原画像をフレームバッファ２０４に記憶しておく必要がある。
【０１２２】
そのため、本実施の形態３では、画像入力部２０２より原画像がレームバッファ２０４に入力されると、直ぐにアクティビティ算出部２０１がマクロブロックのアクティビティを算出して、アクティビティ・符号量記憶部５０１にアクティビティの値だけを記憶する。
【０１２３】
アクティビティ・符号量記憶部５０１は、例えば、複数フレームに渡るアクティビティと符号量とが記憶できるように構成されたリングバッファ構造のメモリにより構成されており、フレーム番号とマクロブロック位置によってアクティビティと符号量の書き込みあるいは読み出しが行われる。
【０１２４】
一方、算術符号化器３２２にてマクロブロックの算術符号化を行い、符号量カウント部３２４にてそのマクロブロックの符号量をカウントし、カウントした符号量をアクティビティ・符号量記憶部５０１におけるそのフレーム番号とマクロブロック番号に該当する符号量記憶領域に記憶する。
【０１２５】
図７は、本実施の形態３におけるアクティビティ・符号量記憶部５０１におけるアクティビティと符号量の記憶状態の一例を示している。
【０１２６】
本実施の形態３では、符号量カウント部３２４は、アクティビティ・符号量記憶部５０１に、図７に示すようにフレーム番号（ｎ）、マクロブロック番号（ｘ、ｙ）毎に、アクティビティと、符号量とを記憶する。例えば、フレーム番号（ｎ）が“１２０”、マクロブロック番号（ｘ、ｙ）が（０、０）の場合、アクティビティが“１０５９”、符号量が“３４０”を記憶し、フレーム番号（ｎ）が“１２０”、マクロブロック番号（ｘ、ｙ）が（０、１）の場合、アクティビティが“３２０８”、符号量が“４２２”を記憶する。
【０１２７】
そして、本実施の形態３の場合、コンテキストテーブルの初期化要求が発生した場合、最初のうち、すなわちアクティビティ・符号量記憶部５０１にアクティビティと符号量とがあまり記憶されていない場合には、前記実施の形態１または実施の形態２と同様の手順で、コンテキストテーブルの初期化を行う。
【０１２８】
そして、本実施の形態３では、前記実施の形態１,２と同様の手順で、所定のスライス数（例えば、５スライス）または所定のマクロブロック数（例えば、１００マクロブロック）、さらには所定時間、コンテキストテーブルの初期化が繰り返し行われ、アクティビティ・符号量記憶部５０１にアクティビティと符号量のサンプルが数多く記憶された場合、全体処理タイミング生成部２２６から類似アクティビティ検索部５０２へ動作開始指示が出力される。
【０１２９】
すると、類似アクティビティ検索部５０２は、アクティビティ・符号量記憶部５０１に記憶されたすでに符号化が完了して符号量とアクティビティとがわかっているマクロブロックから、アクティビティの値が近いマクロブロックを検索して、そのマクロブロックのアクティビティと符号量とを未符号のマクロブロックのアクティビティと、予測される符号量として採用する。なお、符号化中のスライスに未符号のマクロブロックが複数ある場合、類似アクティビティ検索部５０２は、このようにアクティビティ・符号量記憶部５０１にアクセスして、以上の操作を繰り返して類似アクティビティを検索して目標符号量決定部２０５へ出力する。なお、類似するアクティビティがない場合、目標符号量決定部２０５は、前記実施の形態１または実施の形態２と同様の手順で、次のスライスの目標符号量を算出する。
【０１３０】
目標符号量決定部２０５では、符号量カウント部２２２からのスライス途中までの符号量と、類似アクティビティ検索部５０２によってアクティビティ・符号量記憶部５０１から出力されるアクティビティが類似するマクロブロックのアクティビティおよび符号量とに基づいて、次のスライスで発生する総符号量を予測し、この次のスライスの目標符号量を再設定して量子化パラメータ決定部２０６へ出力する。
【０１３１】
量子化パラメータ決定部２０６では、目標符号量決定部２０５からのスライスの目標符号量に基づいて、スライスの量子化パラメータの初期値sliceQPを決定して、コンテキストテーブル初期化部２０９へ出力する。
【０１３２】
コンテキストテーブル初期化部２０９は、この初期値sliceQPを用いて切り替え部２１１を介し第１のコンテキストテーブル２１３あるいは第１のコンテキストテーブル２１４を初期化することによって、次のスライスで用いる初期化されたコンテキストテーブルを事前に準備することが可能となる。
【０１３３】
以上のように、本実施の形態３の画像符号化装置によれば、前記実施の形態１，２と同様に、目標符号量決定部２０５が現在のスライス算術符号化が終了する前に、既に終了した算術符号化による符号量に基づいて次のスライスの目標符号量を決定し、量子化パラメータ決定部２０６が次のスライスの目標符号量に基づいて次のスライスの量子化パラメータを決定し、コンテキストテーブル初期化部２０９が次のスライスの量子化パラメータに基づいて現在のスライスの算術符号化が終了する前に次のスライスで使用するコンテキストテーブルを初期化するようにしたので、コンテキストテーブルの初期化のための時間をスライス毎の算術符号化処理の間に特別確保する必要がなくなり、算術符号化処理を高速化することができる。
【０１３４】
特に、本実施の形態３の画像符号化装置では、実施の形態１の構成に対し、アクティビティ・符号量記憶部５０１および類似アクティビティ検索部５０２を追加し、画像入力部２０２より原画像がフレームバッファ２０４に入力されると、直ぐにアクティビティ算出部２０１がマクロブロックのアクティビティを算出して、アクティビティ・符号量記憶部５０１にアクティビティの値だけを記憶しておき、コンテキストテーブルの初期化要求が発生した場合、類似アクティビティ検索部５０２が未符号のマクロブロックのアクティビティをアクティビティ・符号量記憶部５０１から呼び出すと共に、すでに符号化が完了して符号量とアクティビティとがわかっているマクロブロックの符号量とアクティビティとからアクティビティの値が近いマクロブロックを検索してそのマクロブロックの符号量を未符号のマクロブロックの予測される符号量として採用するようにしたので、スライス内に未符号化のマクロブロックがあっても、空間的に相関の高い隣接するマクロブロックの値を用いてスライスの目標符号量を決定するようにしたので、算術符号化が既に終了している部分の符号量に基づいて算術符号化が完了していない部分の符号量を計算により求める実施の形態１の場合よりも、正確なスライスの目標符号量を決定でき、適切なスライスの量子化パラメータの初期値SliceQPが決定されるので符号化効率を高めることが可能となる。
【０１３５】
なお、前述の実施の形態１〜３では、図１、図６に示すように本発明に係る算術符号化装置をハードウエア的に構成して説明したが、本発明は、このようなハードウエア的な構成に限定されるものではなく、例えば、前述の本実施の形態１〜３の算術符号化装置の機能をソフトウエア的、すなわち図３および図４に示すコンテキストテーブルの初期化処理をコンピュータに実現させるための算術符号化プログラムをＣＰＵ等が実行するように構成しても勿論よい。この場合、この算術符号化プログラムは、記録媒体から読み取られてコンピュータに取り込まれてもよいし、通信ネットワークを介してダウンロードされてコンピュータにインストールされるようにしてもよい。
【図面の簡単な説明】
【０１３６】
【図１】本発明に係る算術符号化装置を有する符号化装置の構成例を示す図である。
【図２】実施の形態１におけるコンテキストテーブルの初期化のタイミングを示す図である。
【図３】実施の形態1におけるコンテキストテーブルの初期化処理の手順の前半を示すフローチャートである。
【図４】実施の形態1におけるコンテキストテーブルの初期化処理の手順の後半を示すフローチャートである。
【図５】１スライスが６×２のマクロブロックで構成されるスライスの一例を示す図である。
【図６】実施の形態３の画像符号化装置の構成を示すブロック図である。
【図７】実施の形態３におけるアクティビティ・符号量記憶部５０１におけるアクティビティと符号量の記憶状態の一例を示す図である。
【図８】ビット列（０，０，１）のコンテキストテーブルを示す図である。
【図９】ビット列（０，０，１）の符号化の流れを説明する図である。
【図１０】従来のＣＡＢＡＣの算術符号化装置の構成例を示すブロック図である。
【符号の説明】
【０１３７】
２０１  アクティビティ算出部
２０２  画像入力部
２０３  スライスタイプ制御部
２０４  フレームバッファ
２０５  目標符号量決定部
２０６  量子化パラメータ決定部
２０７  画面内予測部
２０８  動き補償予測部
２０９  コンテキストテーブル初期化部
２１０  ＩＮＴＲＡ／ＩＮＴＥＲ判定部
２１１  切り替え部
２１２  直交変換器
２１３  第１のコンテキストテーブル
２１４  第２のコンテキストテーブル
２１５  量子化器
２１６  切り替え部
２１７  ２値化器
２１８  コンテキストモデラ
２１９  逆量子化器
２２０  算術符号化器
２２１  逆直交変換器
２２２  符号量カウント部
２２３  ストリームバッファ
２２４  デブロックフィルタ
２２５  切り替えタイミング制御部
２２６  全体処理タイミング生成部
５０１  アクティビティ・符号量記憶部
５０２  類似アクティビティ検索部
【図１】
2007300455.tif 000003
【図２】
2007300455.tif 000004
【図３】
2007300455.tif 000005
【図４】
2007300455.tif 000006
【図５】
2007300455.tif 000007
【図６】
2007300455.tif 000008
【図７】
2007300455.tif 000009
【図８】
2007300455.tif 000010
【図９】
2007300455.tif 000011
【図１０】
2007300455.tif 000012