(57)【要約】【課題】VLC方式の符号化において、符号化効率を改善することができるようにする。【解決手段】VLCテーブル切替部は、所定の閾値より低い量子化パラメータに対応して、k=0のテーブルを選択し、所定の閾値より高い量子化パラメータに対応して、k=1のテーブルを選択する。コードナンバ割当部は、所定の閾値より低い量子化パラメータに対応して、インター１６×１６モードを、コードナンバ”0”に割り当て、所定の閾値より高い量子化パラメータに対応して、スキップ（またはダイレクト）モードを、コードナンバ”0”に割り当てる。本発明は、例えば、H．264/AVC方式で符号化する画像符号化装置に適用することができる。【選択図】図１７
2011024066.tif 000002
【特許請求の範囲】
【請求項１】
復号処理の対象となる対象ブロックにおける量子化パラメータを復号する量子化パラメータ復号手段と、
前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の復号方法を切り替える切替手段と、
前記切替手段により切り替えられた前記復号方法で、前記予測モードに関する情報を復号する予測モード復号手段と
を備える画像処理装置。
【請求項２】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するVLC(Variable Length Coding)テーブルを切り替えることで、前記復号方法を切り替える
請求項１に記載の画像処理装置。
【請求項３】
前記予測モードに関する情報は、マクロブロックタイプの情報である
請求項２に記載の画像処理装置。
【請求項４】
前記予測モードに関する情報は、イントラ予測モードの情報である
請求項２に記載の画像処理装置。
【請求項５】
前記切替手段は、所定の閾値より値が大きい量子化パラメータの場合、コードナンバが小さい事象に対するビット長が短いテーブルに切り替える
請求項２に記載の画像処理装置。
【請求項６】
前記切替手段は、所定の閾値より値が小さい量子化パラメータの場合、コードナンバが増大しても、ビット長の増大が緩やかであるテーブルに切り替える
請求項２に記載の画像処理装置。
【請求項７】
前記符号化手段は、前記VLCテーブルとして、ゴロム符号を用いる
請求項２に記載の画像処理装置。
【請求項８】
前記符号化手段は、前記VLCテーブルとして、ハフマン符号を用いる
請求項２に記載の画像処理装置。
【請求項９】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するコードナンバの割当を切り替えることで、前記復号方法を切り替える
請求項１に記載の画像処理装置。
【請求項１０】
前記予測モードに関する情報は、インターマクロブロックタイプの情報である
請求項９に記載の画像処理装置。
【請求項１１】
前記切替手段は、所定の閾値より値が大きい量子化パラメータの場合、スキップまたはダイレクトモードの割当を、最小のコードナンバに切り替える
請求項１０に記載の画像処理装置。
【請求項１２】
前記切替手段は、所定の閾値より値が小さい量子化パラメータの場合、インター１６×１６予測モードの割当を、最小のコードナンバに切り替える
請求項１０に記載の画像処理装置。
【請求項１３】
前記予測モードに関する情報は、イントラ予測モードの情報である
請求項９に記載の画像処理装置。
【請求項１４】
画像処理装置が、
復号処理の対象となる対象ブロックにおける量子化パラメータを復号し、
前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の復号方法を切り替え、
切り替えられた前記復号方法で、前記予測モードに関する情報を復号するステップ
を含む画像処理方法。
【請求項１５】
符号化処理の対象となる対象ブロックにおける量子化パラメータを取得する量子化パラメータ取得手段と、
前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の符号化方法を切り替える切替手段と、
前記切替手段により切り替えられた前記符号化方法で、前記予測モードに関する情報を符号化する符号化手段と
を備える画像処理装置。
【請求項１６】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するVLC(Variable Length Coding)テーブルを切り替えることで、前記符号化方法を切り替える
請求項１５に記載の画像処理装置。
【請求項１７】
前記切替手段は、所定の閾値より値が大きい量子化パラメータの場合、コードナンバが小さい事象に対するビット長が短いテーブルに切り替える
請求項１６に記載の画像処理装置。
【請求項１８】
前記切替手段は、所定の閾値より値が小さい量子化パラメータの場合、コードナンバが増大しても、ビット長の増大が緩やかであるテーブルに切り替える
請求項１６に記載の画像処理装置。
【請求項１９】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するコードナンバの割当を切り替えることで、前記符号化方法を切り替える
請求項１５に記載の画像処理装置。
【請求項２０】
画像処理装置が、
符号化処理の対象となる対象ブロックにおける量子化パラメータを取得し、
前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の符号化方法を切り替え、
切り替えられた前記符号化方法で、前記予測モードに関する情報を符号化するステップ
を含む画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置および方法に関し、特に、VLC方式の符号化において、符号化効率を改善するようにした画像処理装置および方法に関する。
【背景技術】
【０００２】
近年、画像情報をデジタルとして取り扱い、その際、効率の高い情報の伝送、蓄積を目的とし、画像情報特有の冗長性を利用して、離散コサイン変換等の直交変換と動き補償により圧縮する符号化方式を採用して画像を圧縮符号する装置が普及しつつある。この符号化方式には、例えば、MPEG（Moving Picture Experts Group）などがある。
【０００３】
特に、MPEG2(ISO/IEC 13818-2)は、汎用画像符号化方式として定義されており、飛び越し走査画像及び順次走査画像の双方、並びに標準解像度画像及び高精細画像を網羅する標準である。例えば、MPEG2は、プロフェッショナル用途及びコンシューマ用途の広範なアプリケーションに現在広く用いられている。MPEG2圧縮方式を用いることにより、例えば720×480画素を持つ標準解像度の飛び越し走査画像であれば4乃至8Mbpsの符号量（ビットレート）が割り当てられる。また、MPEG2圧縮方式を用いることにより、例えば1920×1088画素を持つ高解像度の飛び越し走査画像であれば18乃至22 Mbpsの符号量（ビットレート）が割り当てられる。これにより、高い圧縮率と良好な画質の実現が可能である。
【０００４】
MPEG2は主として放送用に適合する高画質符号化を対象としていたが、MPEG1より低い符号量（ビットレート）、つまりより高い圧縮率の符号化方式には対応していなかった。携帯端末の普及により、今後そのような符号化方式のニーズは高まると思われ、これに対応してMPEG4符号化方式の標準化が行われた。画像符号化方式に関しては、1998年12月にISO/IEC 14496-2としてその規格が国際標準に承認された。
【０００５】
さらに、近年、当初テレビ会議用の画像符号化を目的として、H．26L (ITU-T Q6/16 VCEG）という標準の規格化が進んでいる。H．26LはMPEG2やMPEG4といった従来の符号化方式に比べ、その符号化、復号化により多くの演算量が要求されるものの、より高い符号化効率が実現されることが知られている。また、現在、MPEG4の活動の一環として、このH．26Lをベースに、H．26Lではサポートされない機能をも取り入れ、より高い符号化効率を実現する標準化がJoint Model of Enhanced-Compression Video Codingとして行われている。標準化のスケジュールとしては、2003年3月にはH．264及びMPEG-4 Part10 （Advanced Video Coding、以下H．264/AVCと記す）という国際標準となっている。
【０００６】
さらに、その拡張として、RGBや4:2:2、4:4:4といった、業務用に必要な符号化ツールや、MPEG-2で規定されていた8x8DCTや量子化マトリクスをも含んだFRExt (Fidelity Range Extension) の標準化が2005年2月に完了している。これにより、H．264/AVCを用いて、映画に含まれるフィルムノイズをも良好に表現することが可能な符号化方式となって、Blu-Ray Disc（商標）等の幅広いアプリケーションに用いられる運びとなった。
【０００７】
しかしながら、昨今、ハイビジョン画像の4倍の、4000×2000画素程度の画像を圧縮したいといった、更なる高圧縮率符号化に対するニーズが高まっている。あるいは、インターネットのような、限られた伝送容量の環境において、ハイビジョン画像を配信したいといった、更なる高圧縮率符号化に対するニーズが高まっている。このため、先述の、ITU-T傘下のVCEG (=Video Coding Expert Group) において、符号化効率の改善に関する検討が継続され行なわれている。
【０００８】
このH．264/AVC方式においては、非特許文献１に記載のように、可逆符号化方式として、CAVLC（Context-Adaptive Variable Length Coding）と、CABAC（Context-Adaptive Binary Arithmetic Coding）の２通りの方式が規格化されている。
【０００９】
まず、CAVLC方式について説明する。CAVLCにおいては、直交変換係数の符号化には、周辺ブロックにおける直交変換係数の発生に応じて切り替えられたVLCテーブルが用いられる。その他のシンタクス要素の符号化に関しては、図１に示される指数ゴロム（Exponential Golomb）符号が用いられる。
【００１０】
図１の指数ゴロム符号においては、例えば、コードナンバ(Code Number)0と符号語(Code Words)1が対応しており、コードナンバ1と符号語010が対応しており、コードナンバ2と符号語011が対応している。また、コードナンバ3と符号語00100が対応しており、コードナンバ4と符号語00101が対応しており、コードナンバ5と符号語00110が対応しており、コードナンバ6と符号語00111が対応している。
【００１１】
また、動きベクトルのようなシンタクス要素に関しては、負の値が生じる可能性がある。したがって、負の値が生じる可能性があるシンタクス要素の場合、図２に示される対応関係に基づいて、符号なしのコードナンバに置き換えられた後に、その符号化に、図１の指数ゴロム符号が用いられる。
【００１２】
図２には、コードナンバと、シンタクス要素vの対応関係が示されている。すなわち、この対応関係に基づくことにより、例えば、シンタクス要素v=0が、コードナンバ0に置き換えられ、シンタクス要素v=1が、コードナンバ1に置き換えられ、シンタクス要素v=-1が、コードナンバ2に置き換えられる。また、シンタクス要素v=2が、コードナンバ3に置き換えられ、シンタクス要素v=-2が、コードナンバ4に置き換えられ、シンタクス要素v=3が、コードナンバ5に置き換えられる。
【００１３】
次に、CABAC方式について説明する。
【００１４】
図３は、CABAC 符号化を行う可逆符号化部の構成例を表している。図３の例において、可逆符号化部は、コンテクストモデル化部１１、２値化部１２、並びに、確率推定部２１および符号化エンジン２２からなる適応２値算術符号化部１３により構成されている。
【００１５】
コンテクストモデル化部１１は、圧縮画像における任意のシンタクス要素に関し、まず、過去の履歴に応じて、シンタクス要素のシンボル（記号）を適切なコンテクストモデルに変換する。CABAC 符号化においては、異なるシンタクス要素は、異なるコンテクストにより符号化がなされる。また、同じシンタクス要素であっても、周辺ブロックまたはマクロブロックにおける符号化情報に応じて異なるコンテクストにより符号化がなされる。
【００１６】
例えば、図４を参照して、フラグmb_skip_fragを例にとって説明するが、他のシンタクス要素に対する処理についても同様である。
【００１７】
図４の例において、これから符号化される対象マクロブロックＣと、既に符号化済みのブロックであり、対象マクロブロックＣに隣接する隣接マクロブロックＡおよびＢが示されている。それぞれのマクロブロックＸ（Ｘ＝Ａ，Ｂ，Ｃ）に対して、フラグmb_skip_fragが定義されており、次の式（１）であるとする。
【００１８】
【数１】
2011024066.tif 000003
すなわち、マクロブロックＸが、参照フレームの空間的に対応する位置の画素をそのまま用いるスキップトマクロブロックである場合、f(X)は１とされ、そうでない場合、０とされる。
【００１９】
このとき、対象マクロブロックＣに対するコンテクストContext(C)は、次の式（２）のように、左の隣接マクロブロックＡのf(A)と上の隣接マクロブロックＢのf(B)の和として算出される。
Context(C) = f(A) + f(B)                                          ・・・（２）
【００２０】
すなわち、対象マクロブロックＣに対するコンテクストContext(C)は、隣接マクロブロックＡ，Ｂのフラグmb_skip_fragに応じて、0,1,2のいずれかの値をとることになる。つまり、対象マクロブロックＣに対するフラグmb_skip_fragは、0,1,2のいずれかの異なる符号化エンジン２２が用いられて符号化されることになる。
【００２１】
２値化部１２は、例えば、イントラ予測モードのように、シンタクス上、非２値化データである要素のシンボルを、図５に示されるテーブルに基づいて変換する。
【００２２】
図５のテーブルにおいては、コードシンボルが0の場合、0に２値化され、コードシンボルが1の場合、10に２値化され、コードシンボルが2の場合、110に２値化されることが示されている。また、コードシンボルが3の場合、1110に２値化され、コードシンボルが4の場合、11110に２値化され、コードシンボルが5の場合、111110に２値化されることが示されている。
【００２３】
ただし、マクロブロックタイプに関してはこのテーブルではなく、Ｉスライス、Ｐスライス、およびＢスライス、それぞれに対して、図６乃至図８に示される、別途規定された不規則なテーブルに基づいて２値化処理が行われる。
【００２４】
図６は、ＩおよびＳＩスライスの場合のマクロブロックタイプの２値化テーブルを示している。図６のテーブルにおいては、０乃至２５のマクロブロックタイプの値(Value(name)of mb_type)と、それに対応する２値列(Bin string)が示されている。
【００２５】
図７は、Ｐ、ＳＰ、およびＢスライスの場合のマクロブロックタイプの２値化テーブルを示している。図７のテーブルにおいては、ＰおよびＳＰスライスの場合の０乃至３０のマクロブロックタイプの値と、それに対応する２値化列が示されており、Ｂスライスの場合の０乃至４８のマクロブロックタイプの値と、それに対応する２値化列が示されている。
【００２６】
図８は、Ｐ、ＳＰ、およびＢスライスの場合のサブマクロブロックタイプの２値化テーブルを示している。図８のテーブルにおいては、ＰおよびＳＰスライスの場合の０乃至３のマクロブロックタイプの値と、それに対応する２値化列が示されており、Ｂスライスの場合の０乃至１２のマクロブロックタイプの値と、それに対応する２値化列が示されている。
【００２７】
以上のような２値化テーブルにより２値化されたシンタクス要素は、後段の適応２値算術符号化部１３により符号化される。
【００２８】
図３に戻って、適応２値算術符号化部１３においては、２値化されたシンボルに対して、確率推定部２１によって確率推定がなされ、符号化エンジン２２によって確率推定に基づく２値算術符号化が施される。その際、“0”,“1”の確率は、スライス先頭で初期化され、1Binの符号化が行われる毎にその確率テーブルが更新される。すなわち、２値算術符号化処理が行われた後、関連するモデルの更新が行われるため、それぞれのモデルは実際の画像圧縮情報の統計に応じた符号化処理を行うことが可能となる。
【００２９】
次に、図９を参照して、２値算術符号化の動作について説明する。いま、‘１’の発生（出現）確率が0.2、‘０’の発生確率が0.8である場合に、入力信号であるビット列“010”を符号化することを考える。
【００３０】
まず、ステップＳ１において、‘０’が符号化される。この結果、初期区間における図中下側0.8の部分（0.0-0.8）が更新された区間となる。ステップＳ２において、‘１’が符号化される。この結果、現在の区間（0.0-0.8）における図中上側0.2が新たな更新区間(0.64-0.8)となる。
【００３１】
ステップＳ３において、‘０’が符号化される。この結果、現在の区間(0.64-0.8)における図中下側0.8が新たな更新区間(0.64-0.768)となる。
【００３２】
算術符号の符号語は、最終区間を特定する実数値の２進表現になり、この例の場合は、0.64-0.768が最終区間となるので、その間に入る実数として、0.75をとることができる。実数0.75の２進表現は、0.11であるので、ステップＳ４においては、その２進表現（0.11）から、常に０になる最初の桁を除いた後の“11”が符号語とされ、最終的に、“11”なる信号が出力される。
【００３３】
ここで、図９における、例えば、“0.64”といった、区間間隔を保持するレジスタの桁数は、実際には有限である。そこで、適応２値算術符号化部１３の処理には、図９の２値算術符号化に、出力すべき区間の上位ビットが確定した段階で、適時確定ビットを出力し、区間の幅を広げる再正規化(Renormalization)と呼ばれる手法が加わえられる。
【００３４】
次に、図１０を参照して再正規化について説明する。なお、図１０の例において、図９と同じステップ番号は同じステップを表している。
【００３５】
ステップＳ２において、‘１’が符号化される。この結果、現在の区間（0.0-0.8）における図中上側0.2が新たな更新区間(0.64-0.8)となる。ステップＳ３において、区間(0.64-0.8)が0.5を超えたので、この時点で“1”を出力し、0.5から、1.0の間を、0.0から、1.0の間に拡大（再正規化）する。これにより、正規化された区間が(0.28-0.6)となる。
【００３６】
ステップＳ３´において、‘０’が符号化される。この結果、現在の区間(0.28-0.6)における図中下側0.8が新たな更新区間(0.28-0.536)となる。
【００３７】
この例の場合は、0.28-0.536が最終区間となるので、その間に入る実数として、0.5をとることができる。実数0.5の２進表現は、0.1であるので、ステップＳ４´においては、その２進表現（0.1）から、常に０になる最初の桁を除いた後の“1”が符号語とされ、最終的に、“1”なる信号が出力される。
【００３８】
この再正規化により、レジスタの精度が有効利用可能となる。
【００３９】
一方、H．264/AVC方式において、より高い符号化効率を達成するには、適切な予測モードの選択も重要である。
【００４０】
この予測モードの選択方式の例として、非特許文献２において公開されているJM(Joint Model)と呼ばれる参照ソフトウエア（reference software）に実装されている方法が挙げられる。
【００４１】
JMにおいては、次に述べるHigh Complexity モード、またはLow Complexity モードの２通りのモード判定方法を選択することができる。
【００４２】
High Complexity モードにおいては、次の式（３）で表わされるコスト関数が用いられて、コスト関数値が各予測モードに対して算出される。そして、算出されたコスト関数値の最小値を与える予測モードが、対象ブロック（あるいはマクロブロック）に対する最適予測モードであるとして選択される。
【００４３】
Cost(Mode∈Ω) = D + λ・R                                        ・・・（３）
ここで、Ωは、対象ブロック（あるいはマクロブロック）を符号化するための候補モードの全体集合である。Dは、予測モード（Mode）で符号化した場合の、原画像と復号画像の差分（歪）エネルギーである。Rは、直交変換係数まで含んだ、予測モード(Mode)で符号化した場合の総符号量である。λは、量子化パラメータQPの関数として与えられるラグランジュ未定乗数である。
【００４４】
すなわち、High Complexity モードでのモード判定を行うには、上述したパラメータDおよびRを算出する必要があるため、候補となる全ての予測モードに対して、仮に符号化処理までが行われるので、演算精度は高いが、より高い演算量を要する。
【００４５】
一方、Low Complexity モードにおいては、次の式（４）で表わされるコスト関数が用いられて、コスト関数値が各予測モードに対して算出される。そして、算出されたコスト関数値の最小値を与える予測モードが、対象ブロック（あるいはマクロブロック）に対する最適予測モードであるとして選択される。
【００４６】
Cost(Mode∈Ω) = D + QPtoQuant(QP)・HeaderBit                    ・・・（４）
ここで、Dは、High Complexity モードの場合と異なり、予測画像と入力画像の差分（歪）エネルギーである。HeaderBitは、直交変換係数を含まない、動きベクトルや予測モードといった、ヘッダに属する情報に関する符号量である。QPtoQuantは、量子化パラメータQPの関数として与えられる関数である。
【００４７】
すなわち、Low Complexity モードにおいては、全ての予測モードに対して、予測画像を生成するのみで、復号画像は必要なく、符号化処理および復号処理を行う必要がない。このため、High Complexity モードの場合より演算精度は低いが、低い演算量での実現が可能である。
【００４８】
ところで、図１１を参照して、上述した参照ソフトウエアを用いて、あるシーケンスを２種類の量子化パラメータを用いて、CABACおよびCAVLCでそれぞれ符号化した時の予測モードの分布について説明する。
【００４９】
図１１の上側には、低い量子化パラメータQP=22を用いて、CABACおよびCAVLCでそれぞれ符号化した場合の予測モード毎の出現頻度のグラフが示されている。また、下側には、高い量子化パラメータQP=37を用いて、CABACおよびCAVLCでそれぞれ符号化した場合の予測モード毎の出現頻度のグラフが示されている。
【００５０】
各グラフの縦軸は、各予測モードの出現頻度を表しており、横軸は、モード０乃至モード７の予測モードの種類を表している。ここで、モード０(copy)は、スキップモードやダイレクトモードを表しており、モード１(16×16)は、インター16×16（画素）モードを表している。モード２(16×8)は、インター16×8（画素）モードを表しており、モード３(8×16)は、インター8×16（画素）モードを表している。モード４(8×8)は、インター8×8（画素）以下のブロックサイズのすべてのモードを表している。モード５(intra 4×4)は、イントラ4×4（画素）モードを表しており、モード６(intra 8×8)は、イントラ8×8（画素）モードを表しており、モード７(intra 16×16)は、イントラ16×16（画素）モードを表している。
【００５１】
すなわち、グラフにおいて、インターに関するモードは、左からブロックサイズが大きい順に、モード０乃至モード４となっており、イントラに関するモードは、左からブロックサイズが小さい順に、モード５乃至７となっている。
【００５２】
ここで、両方のグラフからわかるように、低い量子化パラメータ（QP=22）と高い量子化パラメータ(QP=37)とは、予測モードの分布が異なる。
【００５３】
すなわち、第１の違いは、低い量子化パラメータにおいては、モード４で表されるインター8×8以下のブロックサイズのすべてのモードの出現頻度がそれなりにあるが、高い量子化パラメータにおいては、ほとんど出現しないことである。
【００５４】
第２の違いは、低い量子化パラメータにおいては、モード１で表されるインター16×16モードが最も出現頻度が高いが、高い量子化パラメータにおいては、モード０で表されるスキップモードやダイレクトモードの出現頻度が高いことである。
【００５５】
これらは、上述したHigh Complexity モードまたはLow Complexity モードに基づくモード判定において、以下の傾向にあるという事実に基づいている。その事実とは、低い量子化パラメータ（高いビットレート）においては、動きベクトルなどのヘッダビットを増大させても、より高い予測効率を選択する傾向にあることである。また、それに対して、高い量子化パラメータ（低いビットレート）においては、多少予測効率を下げても、ヘッダビットが少ないモードが優先される傾向にあることである。
【００５６】
なお、上記説明で用いられた図は、以下、本発明を説明する図としても適宜用いられる。
【先行技術文献】
【非特許文献】
【００５７】
【非特許文献１】”7.4.2.2 Picture parameter set RBSP semantics”, ”ITU-T Recommendation H.264 Advanced video coding for generic audiovisual”,P162-P164 November 2007
【非特許文献２】H.264/AVC Software Coordination、Institut Nachrichtentechnik Heinrich-Hertz-Institut、［平成２１年７月１０日検索］、インターネット＜URL： http://iphome.hhi.de/suehring/tml/index.htm＞
【発明の概要】
【発明が解決しようとする課題】
【００５８】
図１１を参照して上述した出現頻度の違いは、CABACにおいては、図３を参照して上述したコンテクストモデルによる確率テーブルの更新が対応することになり、それぞれの量子化パラメータに対応した符号化処理が行われることになる。
【００５９】
しかしながら、CAVLCにおいては、量子化パラメータによる出現頻度の違いが考慮されていない単一のテーブルにより符号化処理が行われており、個々の量子化パラメータに対応した、高い符号化効率の実現が困難となっている。
【００６０】
本発明は、このような状況に鑑みてなされたものであり、VLC方式の符号化において、符号化効率を改善するものである。
【課題を解決するための手段】
【００６１】
本発明の第１の画像処理装置は、復号処理の対象となる対象ブロックにおける量子化パラメータを復号する量子化パラメータ復号手段と、前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の復号方法を切り替える切替手段と、前記切替手段により切り替えられた前記復号方法で、前記予測モードに関する情報を復号する予測モード復号手段とを備える。
【００６２】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するVLC(Variable Length Coding)テーブルを切り替えることで、前記復号方法を切り替えることができる。
【００６３】
前記予測モードに関する情報は、マクロブロックタイプの情報である。
【００６４】
前記予測モードに関する情報は、イントラ予測モードの情報である。
【００６５】
前記切替手段は、所定の閾値より値が大きい量子化パラメータの場合、コードナンバが小さい事象に対するビット長が短いテーブルに切り替えることができる。
【００６６】
前記切替手段は、所定の閾値より値が小さい量子化パラメータの場合、コードナンバが増大しても、ビット長の増大が緩やかであるテーブルに切り替えることができる。
【００６７】
前記符号化手段は、前記VLCテーブルとして、ゴロム符号を用いることができる。
【００６８】
前記符号化手段は、前記VLCテーブルとして、ハフマン符号を用いることができる。
【００６９】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するコードナンバの割当を切り替えることで、前記復号方法を切り替えることができる。
【００７０】
前記予測モードに関する情報は、インターマクロブロックタイプの情報である。
【００７１】
前記切替手段は、所定の閾値より値が大きい量子化パラメータの場合、スキップまたはダイレクトモードの割当を、最小のコードナンバに切り替えることができる。
【００７２】
前記切替手段は、所定の閾値より値が小さい量子化パラメータの場合、インター１６×１６予測モードの割当を、最小のコードナンバに切り替えることができる。
【００７３】
前記予測モードに関する情報は、イントラ予測モードの情報である。
【００７４】
本発明の第１の側面の画像処理方法は、画像処理装置が、復号処理の対象となる対象ブロックにおける量子化パラメータを復号し、前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の復号方法を切り替え、切り替えられた前記復号方法で、前記予測モードに関する情報を復号するステップを含む。
【００７５】
本発明の第２の側面の画像処理装置は、符号化処理の対象となる対象ブロックにおける量子化パラメータを取得する量子化パラメータ取得手段と、前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の符号化方法を切り替える切替手段と、前記切替手段により切り替えられた前記符号化方法で、前記予測モードに関する情報を符号化する符号化手段とを備える。
【００７６】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するVLC(Variable Length Coding)テーブルを切り替えることで、前記符号化方法を切り替えることができる。
【００７７】
前記切替手段は、所定の閾値より値が大きい量子化パラメータの場合、コードナンバが小さい事象に対するビット長が短いテーブルに切り替えることができる。
【００７８】
前記切替手段は、所定の閾値より値が小さい量子化パラメータの場合、コードナンバが増大しても、ビット長の増大が緩やかであるテーブルに切り替えることができる。
【００７９】
前記切替手段は、前記量子化パラメータに応じて、前記予測モードに関する情報に対するコードナンバの割当を切り替えることで、前記符号化方法を切り替えることができる。
【００８０】
本発明の第２の側面の画像処理方法は、画像処理装置が、符号化処理の対象となる対象ブロックにおける量子化パラメータを取得し、前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の符号化方法を切り替え、切り替えられた前記符号化方法で、前記予測モードに関する情報を符号化するステップを含む。
【００８１】
本発明の第１の側面においては、復号処理の対象となる対象ブロックにおける量子化パラメータが復号され、前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の復号方法が切り替えられる。そして、切り替えられた前記復号方法で、前記予測モードに関する情報が復号される。
【００８２】
本発明の第２の側面においては、符号化処理の対象となる対象ブロックにおける量子化パラメータが取得され、前記量子化パラメータに応じて、前記対象ブロックに対する予測モードに関する情報の符号化方法が切り替えられる。そして、切り替えられた前記符号化方法で、前記予測モードに関する情報が符号化される。
【００８３】
なお、上述の画像処理装置のそれぞれは、独立した装置であっても良いし、１つの画像符号化装置または画像復号装置を構成している内部ブロックであってもよい。
【発明の効果】
【００８４】
本発明の第１の側面によれば、画像を復号することができる。また、本発明の第１の側面によれば、VLC方式の符号化における符号化効率を改善することができる。
【００８５】
本発明の第２の側面によれば、画像を符号化することができる。また、本発明の第２の側面によれば、VLC方式の符号化における符号化効率を改善することができる。
【図面の簡単な説明】
【００８６】
【図１】指数ゴロム符号を説明する図である。
【図２】シンタクス要素と符号なしコードナンバの対応関係を説明する図である。
【図３】CABAC 符号化を行う可逆符号化部の構成例を表すブロック図である。
【図４】CABAC 符号化を説明する図である。
【図５】２値化テーブルを示す図である。
【図６】ＩおよびＳＩスライスの場合のマクロブロックタイプの２値化テーブルを示す図である。
【図７】Ｐ、ＳＰ、およびＢスライスの場合のマクロブロックタイプの２値化テーブルを示す図である。
【図８】Ｐ、ＳＰ、およびＢスライスの場合のサブマクロブロックタイプの２値化テーブルを示す図である。
【図９】２値算術符号化の動作について説明する図である。
【図１０】再正規化について説明する図である。
【図１１】異なる量子化パラメータを用いて、CABACおよびCAVLCで符号化した時の予測モードの分布を示す図である。
【図１２】本発明を適用した画像符号化装置の一実施の形態の構成を示すブロック図である。
【図１３】可変ブロックサイズ動き予測・補償処理を説明する図である。
【図１４】動きベクトル情報の生成方法の例を説明する図である。
【図１５】時間ダイレクトモードについて説明する図である。
【図１６】モードテーブル切替部の構成例を示すブロック図である。
【図１７】図１６のVTCテーブル切替部が有するテーブルを示す図である。
【図１８】図１２の画像符号化装置の符号化処理を説明するフローチャートである。
【図１９】図１８のステップＳ２１の予測処理を説明するフローチャートである。
【図２０】１６×１６画素のイントラ予測モードの場合の処理順序を説明する図である。
【図２１】輝度信号の４×４画素のイントラ予測モードの種類を示す図である。
【図２２】輝度信号の４×４画素のイントラ予測モードの種類を示す図である。
【図２３】４×４画素のイントラ予測の方向を説明する図である。
【図２４】４×４画素のイントラ予測を説明する図である。
【図２５】輝度信号の８×８画素のイントラ予測モードの種類を示す図である。
【図２６】輝度信号の８×８画素のイントラ予測モードの種類を示す図である。
【図２７】輝度信号の１６×１６画素のイントラ予測モードの種類を示す図である。
【図２８】輝度信号の１６×１６画素のイントラ予測モードの種類を示す図である。
【図２９】１６×１６画素のイントラ予測を説明する図である。
【図３０】色差信号のイントラ予測モードの種類を示す図である。
【図３１】図１９のステップＳ３１のイントラ予測処理を説明するフローチャートである。
【図３２】図１９のステップＳ３２のインター動き予測処理を説明するフローチャートである。
【図３３】図１８のステップＳ２３の可逆符号化処理を説明するフローチャートである。
【図３４】CAVLCによる直交変換係数の符号化処理について説明する図である。
【図３５】CAVLCの動作原理の具体例について説明する図である。
【図３６】図３３のステップＳ８３のマクロブロックタイプの符号化処理について説明するフローチャートである。
【図３７】本発明を適用した画像復号装置の一実施の形態の構成を示すブロック図である。
【図３８】図３７の可逆復号部およびモードテーブル切替部の構成例を示すブロック図である。
【図３９】図３７の画像復号装置の復号処理を説明するフローチャートである。
【図４０】図３９のステップＳ１３２の可逆復号処理を説明するフローチャートである。
【図４１】図４０のステップＳ１５３のマクロブロックタイプの復号処理を説明するフローチャートである。
【図４２】図３９のステップＳ１３８の予測処理を説明するフローチャートである。
【図４３】本発明を適用した学習装置の一実施の形態の構成を示すブロック図である。
【図４４】ハフマン符号を説明する図である。
【図４５】図４３の学習装置の学習フローを説明するフローチャートである。
【図４６】コンピュータのハードウエアの構成例を示すブロック図である。
【発明を実施するための形態】
【００８７】
以下、図を参照して本発明の実施の形態について説明する。
【００８８】
［画像符号化装置の構成例］
図１２は、本発明を適用した画像処理装置としての画像符号化装置の一実施の形態の構成を表している。
【００８９】
この画像符号化装置５１は、例えば、H．264及びMPEG-4 Part10（Advanced Video Coding）（以下H．264/AVCと記す）方式で画像を圧縮符号化する。
【００９０】
図１２の例において、画像符号化装置５１は、Ａ／Ｄ変換部６１、画面並べ替えバッファ６２、演算部６３、直交変換部６４、量子化部６５、可逆符号化部６６、蓄積バッファ６７、逆量子化部６８、逆直交変換部６９、演算部７０、デブロックフィルタ７１、フレームメモリ７２、スイッチ７３、イントラ予測部７４、動き予測・補償部７５、予測画像選択部７６、レート制御部７７、およびモードテーブル切替部７８により構成されている。
【００９１】
Ａ／Ｄ変換部６１は、入力された画像をＡ／Ｄ変換し、画面並べ替えバッファ６２に出力し、記憶させる。画面並べ替えバッファ６２は、記憶した表示の順番のフレームの画像を、ＧＯＰ（Group of Picture）に応じて、符号化のためのフレームの順番に並べ替える。
【００９２】
演算部６３は、画面並べ替えバッファ６２から読み出された画像から、予測画像選択部７６により選択されたイントラ予測部７４からの予測画像または動き予測・補償部７５からの予測画像を減算し、その差分情報を直交変換部６４に出力する。直交変換部６４は、演算部６３からの差分情報に対して、離散コサイン変換、カルーネン・レーベ変換等の直交変換を施し、その変換係数を出力する。量子化部６５は直交変換部６４が出力する変換係数を量子化する。
【００９３】
量子化部６５の出力となる、量子化された変換係数は、可逆符号化部６６に入力され、ここで可変長符号化、算術符号化等の可逆符号化が施され、圧縮される。可逆符号化部６６においては、可逆符号化方式として、H．264/AVC方式で定められているCAVLC（Context-Adaptive Variable Length Coding）による可変長符号化が行われる。
【００９４】
可逆符号化部６６は、量子化された変換係数を符号化するとともに、シンタクス要素も符号化し、圧縮画像におけるヘッダ情報の一部とする。このとき、可逆符号化部６６は、モードテーブル切替部７８により切り替えられた符号化方法で、シンタクス要素のうちの予測モードに関する情報を符号化する。可逆符号化部６６は、符号化したデータを蓄積バッファ６７に供給して蓄積させる。
【００９５】
シンタクス要素としては、イントラ予測部７４または動き予測・補償部７５から取得される予測モードに関する情報、レート制御部７７から取得される量子化パラメータ、動き予測・補償部７５から取得される動きベクトル情報や参照フレーム情報などがある。また、予測モードに関する情報としては、例えば、マクロブロックタイプの情報や、どのイントラ予測モードであるかの情報（以下、イントラ予測モードの情報と称する）がある。
【００９６】
マクロブロックタイプの情報は、動き予測・補償部７５やイントラ予測部７４から取得される。イントラ予測モードの情報は、必要に応じてイントラ予測部７４から取得される。
【００９７】
蓄積バッファ６７は、可逆符号化部６６から供給されたデータを、H．264/AVC方式で符号化された圧縮画像として、例えば、後段の図示せぬ記録装置や伝送路などに出力する。
【００９８】
また、量子化部６５より出力された、量子化された変換係数は、逆量子化部６８にも入力され、逆量子化された後、さらに逆直交変換部６９において逆直交変換される。逆直交変換された出力は演算部７０により予測画像選択部７６から供給される予測画像と加算されて、局部的に復号された画像となる。デブロックフィルタ７１は、復号された画像のブロック歪を除去した後、フレームメモリ７２に供給し、蓄積させる。フレームメモリ７２には、デブロックフィルタ７１によりデブロックフィルタ処理される前の画像も供給され、蓄積される。
【００９９】
スイッチ７３はフレームメモリ７２に蓄積された参照画像を、動き予測・補償部７５またはイントラ予測部７４に出力する。
【０１００】
この画像符号化装置５１においては、例えば、画面並べ替えバッファ６２からのＩピクチャ、Ｂピクチャ、およびＰピクチャが、イントラ予測（イントラ処理とも称する）する画像として、イントラ予測部７４に供給される。また、画面並べ替えバッファ６２から読み出されたＢピクチャおよびＰピクチャが、インター予測（インター処理とも称する）する画像として、動き予測・補償部７５に供給される。
【０１０１】
イントラ予測部７４は、画面並べ替えバッファ６２から読み出されたイントラ予測する画像とフレームメモリ７２から供給された参照画像に基づいて、候補となる全てのイントラ予測モードのイントラ予測処理を行い、予測画像を生成する。その際、イントラ予測部７４は、候補となる全てのイントラ予測モードに対してコスト関数値を算出し、算出したコスト関数値が最小値を与えるイントラ予測モードを、最適イントラ予測モードとして選択する。
【０１０２】
イントラ予測部７４は、最適イントラ予測モードで生成された予測画像とそのコスト関数値を、予測画像選択部７６に供給する。イントラ予測部７４は、予測画像選択部７６により最適イントラ予測モードで生成された予測画像が選択された場合、最適イントラ予測モードの情報を、対応するマクロブロックタイプの情報とともに、可逆符号化部６６に供給する。可逆符号化部６６は、これらの情報をシンタクス要素として符号化し、圧縮画像におけるヘッダ情報の一部とする。
【０１０３】
動き予測・補償部７５は、候補となる全てのインター予測モードの動き予測・補償処理を行う。すなわち、動き予測・補償部７５には、画面並べ替えバッファ６２から読み出されたインター処理する画像と、スイッチ７３を介してフレームメモリ７２から参照画像が供給される。動き予測・補償部７５は、インター処理する画像と参照画像に基づいて、候補となる全てのインター予測モードの動きベクトルを検出し、動きベクトルに基づいて参照画像に補償処理を施し、予測画像を生成する。
【０１０４】
また、動き予測・補償部７５は、候補となる全てのインター予測モードに対してコスト関数値を算出する。動き予測・補償部７５は、算出したコスト関数値のうち、最小値を与える予測モードを、最適インター予測モードとして決定する。
【０１０５】
動き予測・補償部７５は、最適インター予測モードで生成された予測画像、およびそのコスト関数値を、予測画像選択部７６に供給する。動き予測・補償部７５は、予測画像選択部７６により最適インター予測モードで生成された予測画像が選択された場合、その最適インター予測モードに対応するマクロブロックタイプの情報を可逆符号化部６６に出力する。
【０１０６】
このとき、動きベクトル情報、フラグ、参照フレーム情報なども可逆符号化部６６に出力される。可逆符号化部６６は、動き予測・補償部７５からの情報をシンタクス要素として可逆符号化処理し、圧縮画像のヘッダ部に挿入する。
【０１０７】
予測画像選択部７６は、イントラ予測部７４または動き予測・補償部７５より出力された各コスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードから、最適予測モードを決定する。そして、予測画像選択部７６は、決定された最適予測モードの予測画像を選択し、演算部６３，７０に供給する。このとき、予測画像選択部７６は、予測画像の選択情報を、イントラ予測部７４または動き予測・補償部７５に供給する。
【０１０８】
レート制御部７７は、蓄積バッファ６７に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、対応する量子化パラメータにより、量子化部６５の量子化動作のレートを制御する。量子化部６５のレートの制御に用いられた量子化パラメータは、モードテーブル切替部７８および可逆符号化部６６に供給される。
【０１０９】
モードテーブル切替部７８は、レート制御部７７からの量子化パラメータに応じて、予測モードに関する情報に対する符号化方法を切り替え、切り替えた符号化方法の情報を、可逆符号化部６６に供給する。例えば、予測モードに関する情報に対するVLCテーブルが切り替えられる。
【０１１０】
なお、本実施の形態においては、以下、予測モードに関する情報のうち、マクロブロックタイプに応じて、VLCテーブルが切り替えられる例について説明される。
【０１１１】
［H．264/AVC方式の説明］
図１３は、H．264/AVC方式における動き予測・補償のブロックサイズの例を示す図である。H．264/AVC方式においては、ブロックサイズを可変にして、動き予測・補償が行われる。
【０１１２】
図１３の上段には、左から、１６×１６画素、１６×８画素、８×１６画素、および８×８画素のパーティションに分割された１６×１６画素で構成されるマクロブロックが順に示されている。また、図１３の下段には、左から、８×８画素、８×４画素、４×８画素、および４×４画素のサブパーティションに分割された８×８画素のパーティションが順に示されている。
【０１１３】
すなわち、H．264/AVC方式においては、１つのマクロブロックを、１６×１６画素、１６×８画素、８×１６画素、あるいは８×８画素のいずれかのパーティションに分割して、それぞれ独立した動きベクトル情報を持つことが可能である。また、８×８画素のパーティションに関しては、８×８画素、８×４画素、４×８画素、あるいは４×４画素のいずれかのサブパーティションに分割し、それぞれ独立した動きベクトル情報を持つことが可能である。
【０１１４】
H．264/AVC方式においては、図１３を参照して上述した動き予測・補償処理が行われることにより、膨大な動きベクトル情報が生成され、これをこのまま符号化することは、符号化効率の低下を招いてしまう。これに対して、H．264/AVC方式においては、図１４に示す方法により、動きベクトルの符号化情報の低減が実現されている。
【０１１５】
図１４は、H．264/AVC方式による動きベクトル情報の生成方法について説明する図である。
【０１１６】
図１４の例において、これから符号化される対象ブロックＥ（例えば、１６×１６画素）と、既に符号化済みであり、対象ブロックＥに隣接するブロックＡ乃至Ｄが示されている。
【０１１７】
すなわち、ブロックＤは、対象ブロックＥの左上に隣接しており、ブロックＢは、対象ブロックＥの上に隣接しており、ブロックＣは、対象ブロックＥの右上に隣接しており、ブロックＡは、対象ブロックＥの左に隣接している。なお、ブロックＡ乃至Ｄが区切られていないのは、それぞれ、図１３で上述した１６×１６画素乃至４×４画素のうちのいずれかの構成のブロックであることを表している。
【０１１８】
例えば、Ｘ（＝Ａ，Ｂ，Ｃ，Ｄ，Ｅ）に対する動きベクトル情報を、mvXで表す。まず、対象ブロックＥに対する予測動きベクトル情報pmvEは、ブロックＡ，Ｂ，Ｃに関する動きベクトル情報を用いて、メディアン予測により次の式（５）のように生成される。
【０１１９】
pmvE = med(mvA,mvB,mvC)                                          ・・・（５）
ブロックＣに関する動きベクトル情報が、画枠の端であったり、あるいは、まだ符号化されていないなどの理由により、利用可能でない（unavailableである）場合がある。この場合には、ブロックＣに関する動きベクトル情報は、ブロックＤに関する動きベクトル情報で代用される。
【０１２０】
対象ブロックＥに対する動きベクトル情報として、圧縮画像のヘッダ部に付加されるデータmvdEは、pmvEを用いて、次の式（６）のように生成される。
mvdE = mvE - pmvE                                                ・・・（６）
【０１２１】
なお、実際には、動きベクトル情報の水平方向、垂直方向のそれぞれの成分に対して、独立に処理が行われる。
【０１２２】
このように、予測動きベクトル情報を生成し、隣接するブロックとの相関で生成された予測動きベクトル情報と動きベクトル情報との差分であるデータmvdを、圧縮画像のヘッダ部に付加することにより、動きベクトル情報を低減することができる。
【０１２３】
ところで、Ｂピクチャについての動きベクトル情報における情報量は膨大であるが、H．264/AVC方式においては、ダイレクトモードと呼ばれるモードが用意されている。ダイレクトモードにおいては、動きベクトル情報は、圧縮画像中には格納されない。
【０１２４】
すなわち、復号側においては、対象ブロックの周辺の動きベクトル情報、または参照ピクチャにおいて、対象ブロックと座標が同じブロックであるco-locatedブロックの動きベクトル情報から、対象ブロックの動きベクトル情報が抽出される。したがって、動きベクトル情報を復号側に送る必要がない。
【０１２５】
このダイレクトモードには、空間ダイレクトモード（Spatial Direct Mode）と、時間ダイレクトモード（Temporal Direct Mode）の２種類が存在する。空間ダイレクトモードは、主として空間方向（ピクチャ内の水平、垂直の２次元空間）の動き情報の相関を利用するモードであり、一般的に、同じような動きが含まれる画像で、動きの速度が変化する画像で効果がある。一方、時間ダイレクトモードは、主として時間方向の動き情報の相関を利用するモードであり、一般的に、異なる動きが含まれる画像で、動きの速度が一定の画像で効果がある。
【０１２６】
これらの空間ダイレクトモードと時間ダイレクトモードのうち、どちらを用いるかは、スライス毎に切り替えることができる。
【０１２７】
再び、図１４を参照して、H．264/AVC方式による空間ダイレクトモードについて説明する。図１４の例においては、上述したように、これから符号化される対象ブロックＥ（例えば、１６×１６画素）と、既に符号化済みであり、対象ブロックＥに隣接するブロックＡ乃至Ｄが示されている。そして、例えば、Ｘ（＝Ａ，Ｂ，Ｃ，Ｄ，Ｅ）に対する動きベクトル情報は、mvXで表わされる。
【０１２８】
対象ブロックＥに対する予測動きベクトル情報pmvEは、ブロックＡ，Ｂ，Ｃに関する動きベクトル情報を用いて、メディアン予測により上述した式（５）のように生成される。そして、空間ダイレクトモードにおける対象ブロックＥに対する動きベクトル情報mvEは、次の式（７）で表される。
mvE = pmvE                                                        ・・・（７）
【０１２９】
すなわち、空間ダイレクトモードにおいては、メディアン予測により生成された予測動きベクトル情報が、対象ブロックの動きベクトル情報とされる。すなわち、対象ブロックの動きベクトル情報は、符号化済みブロックの動きベクトル情報で生成される。したがって、空間ダイレクトモードによる動きベクトルは、復号側でも生成することができるので、動きベクトル情報を送る必要がない。
【０１３０】
次に、図１５を参照して、H．264/AVC方式における時間ダイレクトモードについて説明する。
【０１３１】
図１５の例においては、時間軸tが時間の経過を表しており、左から順に、Ｌ０(List0)参照ピクチャ、いまから符号化される対象ピクチャ、Ｌ１(List1)参照ピクチャが示されている。なお、Ｌ０参照ピクチャ、対象ピクチャ、Ｌ１参照ピクチャの並びは、H．264/AVC方式においては、この順に限らない。
【０１３２】
対象ピクチャの対象ブロックは、例えば、Ｂスライスに含まれている。したがって、対象ピクチャの対象ブロックについては、Ｌ０参照ピクチャとＬ１参照ピクチャに対して、時間ダイレクトモードに基づくＬ０動きベクトル情報mvL0とＬ１動きベクトル情報mvL1が算出される。
【０１３３】
また、Ｌ０参照ピクチャにおいて、いまから符号化される対象ブロックと同じ空間上のアドレス（座標）にあるブロックであるco-locatedブロックにおける動きベクトル情報mvcolは、Ｌ０参照ピクチャとＬ１参照ピクチャに基づいて算出されている。
【０１３４】
ここで、対象ピクチャとＬ０参照ピクチャの時間軸上の距離をTDBとし、Ｌ０参照ピクチャとＬ１参照ピクチャの時間軸上の距離をTDDとする。この場合、対象ピクチャにおけるＬ０動きベクトル情報mvL0と、対象ピクチャにおけるＬ１動きベクトル情報mvL1は、次の式（８）で算出することができる。
【０１３５】
【数２】
2011024066.tif 000004
【０１３６】
なお、H．264/AVC方式においては、圧縮画像中には、対象ピクチャに対する時間軸t上の距離TDB、TDDに相当する情報が存在しない。したがって、距離TDB、TDDの実際の値としては、ピクチャの出力順序を示す情報であるPOC(Picture Order Count)が用いられる。
【０１３７】
また、H．264/AVC方式においては、同様に動きベクトル情報を送る必要がないモードとして、他に、スキップモードがある。動きベクトルに関する符号化データが０の場合（H．264/AVC方式の場合、上述した式（７）が成り立つ場合）で、かつ、DCT係数が全て０のとき、その対象ブロックは、スキップモードとなる。また、Ｂピクチャの場合には、ダイレクトモードで、かつ、DCT係数が０のとき、その対象ブロックは、スキップモードとなる。
【０１３８】
［モードテーブル切替部の構成例］
図１６は、モードテーブル切替部の構成例を示すブロック図である。
【０１３９】
図１６の例においては、モードテーブル切替部７８は、VLC(Variable Length Coding)テーブル切替部８１およびコードナンバ(Code Number)割当部８２により構成される。
【０１４０】
レート制御部７７からの量子化パラメータは、VLCテーブル切替部８１およびコードナンバ割当部８２に供給される。この量子化パラメータは、可逆符号化部６６にも供給される。
【０１４１】
VLCテーブル切替部８１は、マクロブロックタイプに対する、少なくとも２種類のVLCテーブルを有している。VLCテーブル切替部８１は、レート制御部７７からの量子化パラメータに応じて、２種類のマクロブロックタイプに対するVLCテーブルのうちのどちらかを選択する。VLCテーブル切替部８１は、選択したマクロブロックタイプに対するVLCテーブルの情報に、コードナンバ割当部８２からの割当情報を付加して、可逆符号化部６６に供給する。
【０１４２】
コードナンバ割当部８２は、レート制御部７７からの量子化パラメータに応じて、コードナンバ０に、所定のマクロブロックタイプを割り当て、その割当情報を、VLCテーブル切替部８１に供給する。
【０１４３】
可逆符号化部６６は、H．264/AVC方式の規格に基づいて、直交変換係数や、マクロブロックタイプ以外のシンタクス要素（レート制御部７７からの量子化パラメータを含む）を符号化する。これに対して、可逆符号化部６６は、VLCテーブル切替部８１により選択されたVLCテーブルを用いて、マクロブロックタイプに対する符号化を行う。
【０１４４】
[モードテーブル切替処理の説明]
次に、モードテーブル切替部７８により行われるモードテーブル切替処理について説明する。
【０１４５】
図１７の例においては、VTCテーブル切替部８１が有するテーブルとして、非可逆符号化処理においてよく用いられるゴロム(Golomb)符号のk=0のテーブル(左)と、k=1のテーブル（右）が示されている。テーブルは、コードナンバ(Code Number)と対応する符号語(Code Words)で構成される。なお、k=0の場合は、図５に示したunary符号に他ならない。
【０１４６】
k=0のテーブルにおいては、例えば、コードナンバ0と符号語1が対応しており、コードナンバ1と符号語01が対応しており、コードナンバ2と符号語001が対応しており、コードナンバ3と符号語0001が対応している。また、コードナンバ4と符号語00001が対応しており、コードナンバ5と符号語000001が対応しており、コードナンバ6と符号語0000001が対応している。
【０１４７】
k=1のテーブルにおいては、例えば、コードナンバ0と符号語10が対応しており、コードナンバ1と符号語11が対応しており、コードナンバ2と符号語010が対応しており、コードナンバ3と符号語011が対応している。また、コードナンバ4と符号語0010が対応しており、コードナンバ5と符号語0011が対応しており、コードナンバ6と符号語00010が対応している。
【０１４８】
このように、図１７の例においては、コードナンバ”0”に関しては、k=0のテーブルでは、１ビットで表されるのに対し、k=1のテーブルでは、２ビット必要である。しかしながら、コードナンバ”6”に関しては、k=0のテーブルでは、７ビットで表されるのに対し、k=1のテーブルでは、５ビット必要である。
【０１４９】
すなわち、k=0のテーブルとk=1のテーブルを比較すると、k=0のテーブルでは、小さい（若い）コードナンバに関しては、k=1のテーブルより符号量が短い。また、例えば、コードナンバと符号語のビット長との関数を考えたとき、k=0のテーブルとk=1のテーブルとは、その関数の傾きが異なる。k=0のテーブルは、k=1のテーブルに比して、その関数の傾きが大きい（急である）。それゆえ、k=0のテーブルでは、小さいコードナンバに関しては、k=1のテーブルより符号量が短いが、大きいコードナンバに関しては、k=1のテーブルより符号量が多くなる。
【０１５０】
なお、k≧2のテーブルは、k=1のテーブルよりさらに傾きが小さく（緩やかであり）、kが大きくなるにつれ、その関数の傾きがだんだん小さくなる傾向を有する。ちなみに、ゴロム符号の生成則は、次のとおりである。
【０１５１】
kを符号生成のためのパラメータとすると、k>0のとき、符号化対象とする整数x(≧0)について、xをkで割った商をq,余りをmとする。商qは、unary符号に符号化され、余りmはlog2kに従って、次のように符号化される。
【０１５２】
この値が整数値、すなわち、kが２のべき乗である場合、mは、log2kのバイナリ符号により符号化される。それ以外の場合、b=[log2k]としたとき、m=2b-k-1までの数は、b-1ビットまでのバイナリ符号により符号化され、残りについては、2b-kを加えた上で、bビットのバイナリ符号により符号化される。
【０１５３】
ここで、図１１を参照して上述したように、QP=22のような予測モードの分布の場合、モード２乃至モード４の出現頻度が、QP=37と比して高くなる。すなわち、インター１６×１６モードのブロックサイズより小さいブロックサイズのモードの出現頻度が、QP=37と比して高い。
【０１５４】
VLCテーブル切替部８１は、このようなQP=22の場合に、k=1のような関数の傾きが小さいテーブルによる符号を用いる。これにより、インター１６×１６モードのブロックサイズより小さいブロックサイズのモードに対する符号量を短くすることができ、その結果、平均符号長を短くすることが可能である。
【０１５５】
これに対して、QP=37のような予測モード分布の場合、モード２乃至モード４の出現頻度がかなり低い。モード４に関しては、ほとんど出現しない。すなわち、インター１６×１６モードのブロックサイズより小さいブロックサイズのモードの出現頻度が、QP=22と比してかなり低い。
【０１５６】
VLCテーブル切替部８１は、このようなQP=37の場合に、k=0のような若いコードナンバの符号長が短いテーブルによる符号を用いる。これにより、スキップ（またはダイレクト）モードやインター１６×１６モードといったような、より大きいブロックサイズのモードに対する符号量を短くすることができ、その結果、平均符号長を短くすることが可能である。
【０１５７】
また、従来において上述した図１１において、QP=22においては、最も出現確率の高い予測モードは、インター１６×１６モードであるが、QP=37においては、スキップ（またはダイレクト）モードである。
【０１５８】
そこで、コードナンバ割当部８２は、より高いビットレート（つまり、より低い量子化パラメータ）においては、最も少ないビット長で表現できるコードナンバ”0”に対して、インター１６×１６モードを割り当てる。
【０１５９】
これに対して、コードナンバ割当部８２は、より低いビットレート（つまり、より高い量子化パラメータ）においては、コードナンバ”0”に対して、スキップ（またはダイレクト）モードを割り当てる。このようにすることで、さらに、平均符号長を短くすることができる。
【０１６０】
すなわち、具体的には、画像符号化装置５１において、VLCテーブル切替部８１は、例えば、上述した小さい（若い）コードナンバの符号長、および傾きのうち少なくともどちらかが異なるk=0のテーブルおよびk=1のテーブルを有している。
【０１６１】
VLCテーブル切替部８１は、所定の閾値と量子化パラメータの値とを比較し、複数のテーブルの中から、マクロブロックタイプの符号化に用いるテーブルを、量子化パラメータに応じて切り替える。さらに、コードナンバ割当部８２は、コードナンバ”1”の割り当てを、量子化パラメータに応じて切り替える。なお、この所定の閾値は、例えば、図４３以降で後述されるVLCテーブルの学習時に求められる。
【０１６２】
以上により、低いビットレートにおいても、高いヒットレートにおいても、出力となる圧縮画像において、マクロブロックタイプに対する平均符号長を短くし、より高い符号化効率の実現を可能とすることができる。
【０１６３】
なお、上記説明においては、インターマクロブロックに関するマクロブロックタイプを例に説明したが、上述した説明のうち、VLCテーブルの切替については、イントラマクロブロックに関しても同様である。
【０１６４】
すなわち、より高い量子化パラメータで符号化される場合、k=0のようなVLCテーブルによる符号を用いることで、より出現頻度の高い、若いコードナンバに対するイントラマクロブロックタイプに対する符号長を短くすることが可能である。一方、より低い量子化パラメータで符号化される場合、k=1のようなVLCテーブルによる符号を用いることで、それなりの頻度で出現する、コードナンバが若くないイントラマクロブロックタイプに対する符号長を短くすることが可能である。
【０１６５】
これにより、イントラマクロブロックタイプの場合も、符号化効率を改善することができる。
【０１６６】
また、上記説明においては、QP=37などのより高い量子化パラメータに対するVLCテーブルとして、例えば、ゴロム符号のk=0のテーブルを説明したが、VLCテーブルは、これに限らない。すなわち、より高い量子化パラメータに対するVLCテーブルとしては、ゴロム符号のk=0のテーブルのようにコードナンバが大きい事象に対しては比較的長いビットが発生するとしても、コードナンバが小さい事象に対するビット長が短いテーブルであればよい。
【０１６７】
さらに、QP=22などのより低い量子化パラメータに対するVLCテーブルとして、例えば、ゴロム符号のk=1のテーブルを説明したが、VLCテーブルは、これに限らない。すなわち、より低い量子化パラメータに対するVLCテーブルとしては、ゴロム符号のk=1のテーブルのようにコードナンバが小さい事象に対するビット長はk=0ほど短くないとしても、コードナンバが増大しても、k=0ほどビット長は増大しないテーブルであればよい。
【０１６８】
なお、上記説明においては、ゴロム符号を例に説明したが、ハフマン符号に基づいて生成されたVLCテーブルを用いることもできる。なお、この場合、トレーニング信号を用いて、学習することにより、各量子化パラメータに対して、ハフマン符号に基づいて生成されたVLCテーブルを予め準備しておくことが必要となる。このVLCテーブルの学習については、図４３以降で詳しく説明する。
【０１６９】
また、上記説明においては、２種類のVLCテーブルを切り替える例を説明したが、VLCテーブルは、複数であればよく、２種類に限らない。
【０１７０】
［画像符号化装置の符号化処理の説明］
次に、図１８のフローチャートを参照して、図１２の画像符号化装置５１の符号化処理について説明する。
【０１７１】
ステップＳ１１において、Ａ／Ｄ変換部６１は入力された画像をＡ／Ｄ変換する。ステップＳ１２において、画面並べ替えバッファ６２は、Ａ／Ｄ変換部６１より供給された画像を記憶し、各ピクチャの表示する順番から符号化する順番への並べ替えを行う。
【０１７２】
ステップＳ１３において、演算部６３は、ステップＳ１２で並び替えられた画像と予測画像との差分を演算する。予測画像は、インター予測する場合は動き予測・補償部７５から、イントラ予測する場合はイントラ予測部７４から、それぞれ予測画像選択部７６を介して演算部６３に供給される。
【０１７３】
差分データは元の画像データに較べてデータ量が小さくなっている。したがって、画像をそのまま符号化する場合に較べて、データ量を圧縮することができる。
【０１７４】
ステップＳ１４において、直交変換部６４は演算部６３から供給された差分情報を直交変換する。具体的には、離散コサイン変換、カルーネン・レーベ変換等の直交変換が行われ、変換係数が出力される。ステップＳ１５において、量子化部６５は変換係数を量子化する。この量子化に際しては、後述するステップＳ２５の処理で説明されるように、レートが制御される。
【０１７５】
以上のようにして量子化された差分情報は、次のようにして局部的に復号される。すなわち、ステップＳ１６において、逆量子化部６８は量子化部６５により量子化された変換係数を量子化部６５の特性に対応する特性で逆量子化する。ステップＳ１７において、逆直交変換部６９は逆量子化部６８により逆量子化された変換係数を直交変換部６４の特性に対応する特性で逆直交変換する。
【０１７６】
ステップＳ１８において、演算部７０は、予測画像選択部７６を介して入力される予測画像を局部的に復号された差分情報に加算し、局部的に復号された画像（演算部６３への入力に対応する画像）を生成する。ステップＳ１９においてデブロックフィルタ７１は、演算部７０より出力された画像をフィルタリングする。これによりブロック歪みが除去される。ステップＳ２０においてフレームメモリ７２は、フィルタリングされた画像を記憶する。なお、フレームメモリ７２にはデブロックフィルタ７１によりフィルタ処理されていない画像も演算部７０から供給され、記憶される。
【０１７７】
ステップＳ２１において、イントラ予測部７４および動き予測・補償部７５は、それぞれ画像の予測処理を行う。すなわち、ステップＳ２１において、イントラ予測部７４は、イントラ予測モードのイントラ予測処理を行う。動き予測・補償部７５は、インター予測モードの動き予測・補償処理を行う。
【０１７８】
ステップＳ２１における予測処理の詳細は、図１９を参照して後述するが、この処理により、候補となる全てのイントラ予測モードでの予測処理がそれぞれ行われ、候補となる全てのイントラ予測モードでのコスト関数値がそれぞれ算出される。そして、算出されたコスト関数値に基づいて、最適イントラ予測モードが選択され、最適イントラ予測モードのイントラ予測により生成された予測画像とそのコスト関数値が予測画像選択部７６に供給される。
【０１７９】
また、この処理により、候補となる全てのインター予測モードでの予測処理がそれぞれ行われ、候補となる全てのインター予測モードでのコスト関数値がそれぞれ算出される。算出されたコスト関数値に基づいて、インター予測モードの中から、最適インター予測モードが決定され、最適インター予測モードで生成された予測画像とそのコスト関数値が、予測画像選択部７６に供給される。
【０１８０】
ステップＳ２２において、予測画像選択部７６は、イントラ予測部７４および動き予測・補償部７５より出力された各コスト関数値に基づいて、最適イントラ予測モードと最適インター予測モードのうちの一方を、最適予測モードに決定する。そして、予測画像選択部７６は、決定した最適予測モードの予測画像を選択し、演算部６３，７０に供給する。この予測画像が、上述したように、ステップＳ１３，Ｓ１８の演算に利用される。
【０１８１】
なお、この予測画像の選択情報は、イントラ予測部７４または動き予測・補償部７５に供給される。最適イントラ予測モードの予測画像が選択された場合、イントラ予測部７４は、最適イントラ予測モードの情報を、対応するマクロブロックタイプの情報とともに、可逆符号化部６６に供給する。
【０１８２】
最適インター予測モードの予測画像が選択された場合、動き予測・補償部７５は、最適インター予測モードに対応するマクロブロックタイプの情報と、必要に応じて、最適インター予測モードに応じた情報を可逆符号化部６６に出力する。最適インター予測モードに応じた情報としては、動きベクトル情報や、フラグ、参照フレーム情報などがあげられる。
【０１８３】
ステップＳ２３において、可逆符号化部６６は、可逆符号化処理を行う。この可逆符号化処理については、図３３を参照して後述される。
【０１８４】
ステップＳ２３の処理により、量子化部６５より出力された量子化された変換係数が可逆符号化され、圧縮される。このとき、上述したステップＳ２２において可逆符号化部６６に入力された、マクロブロックタイプや動きベクトル情報などのシンタクス要素、およびステップＳ２５の制御に用いられた量子化パラメータのシンタクス要素も、符号化され、ヘッダ情報に付加される。なお、シンタクス要素のうち、マクロブロックタイプについては、その量子化パラメータに応じて選択されたVLCテーブルにより符号化され、ヘッダ情報に付加される。
【０１８５】
ステップＳ２４において蓄積バッファ６７は差分画像を圧縮画像として蓄積する。蓄積バッファ６７に蓄積された圧縮画像が適宜読み出され、伝送路を介して復号側に伝送される。
【０１８６】
ステップＳ２５においてレート制御部７７は、蓄積バッファ６７に蓄積された圧縮画像に基づいて、オーバーフローあるいはアンダーフローが発生しないように、対応する量子化パラメータにより、量子化部６５の量子化動作のレートを制御する。量子化部６５のレートの制御に用いられた量子化パラメータは、モードテーブル切替部７８に供給され、ステップＳ２３の可逆符号化処理に用いられる。また、この量子化パラメータは、ステップＳ２３において符号化され、ヘッダに付加される。
【０１８７】
［予測処理の説明］
次に、図１９のフローチャートを参照して、図１８のステップＳ２１における予測処理を説明する。
【０１８８】
画面並べ替えバッファ６２から供給される処理対象の画像がイントラ処理されるブロックの画像である場合、参照される復号済みの画像がフレームメモリ７２から読み出され、スイッチ７３を介してイントラ予測部７４に供給される。これらの画像に基づいて、ステップＳ３１において、イントラ予測部７４は処理対象のブロックの画素を、候補となる全てのイントラ予測モードでイントラ予測する。なお、参照される復号済みの画素としては、デブロックフィルタ７１によりデブロックフィルタリングされていない画素が用いられる。
【０１８９】
ステップＳ３１におけるイントラ予測処理の詳細は、図３１を参照して後述するが、この処理により、候補となる全てのイントラ予測モードでイントラ予測が行われ、候補となる全てのイントラ予測モードに対してコスト関数値が算出される。そして、算出されたコスト関数値に基づいて、最適イントラ予測モードが選択され、最適イントラ予測モードのイントラ予測により生成された予測画像とそのコスト関数値が予測画像選択部７６に供給される。
【０１９０】
画面並べ替えバッファ６２から供給される処理対象の画像がインター処理される画像である場合、参照される画像がフレームメモリ７２から読み出され、スイッチ７３を介して動き予測・補償部７５に供給される。これらの画像に基づいて、ステップＳ３２において、動き予測・補償部７５はインター動き予測処理を行う。すなわち、動き予測・補償部７５は、フレームメモリ７２から供給される画像を参照して、候補となる全てのインター予測モードの動き予測処理を行う。
【０１９１】
ステップＳ３２におけるインター動き予測処理の詳細は、図３２を参照して後述する。この処理により、候補となる全てのインター予測モードで動き予測処理が行われ、候補となる全てのインター予測モードに対してコスト関数値が算出される。
【０１９２】
ステップＳ３３において、動き予測・補償部７５は、ステップＳ３２において算出されたインター予測モードに対してのコスト関数値を比較する。動き予測・補償部７５は、そのコスト関数値が、最小値を与える予測モードを、最適インター予測モードとして決定し、最適インター予測モードで生成された予測画像とそのコスト関数値を、予測画像選択部７６に供給する。
【０１９３】
［Ｈ．２６４／ＡＶＣ方式におけるイントラ予測処理の説明］
次に、Ｈ．２６４／ＡＶＣ方式で定められているイントラ予測の各モードについて説明する。
【０１９４】
まず、輝度信号に対するイントラ予測モードについて説明する。輝度信号のイントラ予測モードには、イントラ４×４予測モード、イントラ８×８予測モード、およびイントラ１６×１６予測モードの３通りの方式が定められている。これは、ブロック単位を定めるモードであり、マクロブロック毎に設定される。また、色差信号に対しては、マクロブロック毎に輝度信号とは独立したイントラ予測モードを設定することが可能である。
【０１９５】
さらに、イントラ４×４予測モードの場合、４×４画素の対象ブロック毎に、９種類の予測モードから１つの予測モードを設定することができる。イントラ８×８予測モードの場合、８×８画素の対象ブロック毎に、９種類の予測モードから１つの予測モードを設定することができる。また、イントラ１６×１６予測モードの場合、１６×１６画素の対象マクロブロックに対して、４種類の予測モードから１つの予測モードを設定することができる。
【０１９６】
なお、以下、イントラ４×４予測モード、イントラ８×８予測モード、およびイントラ１６×１６予測モードは、それぞれ、４×４画素のイントラ予測モード、８×８画素のイントラ予測モード、および１６×１６画素のイントラ予測モードとも適宜称する。
【０１９７】
図２０の例において、各ブロックに付されている数字−１乃至２５は、その各ブロックのビットストリーム順（復号側における処理順）を表している。なお、輝度信号については、マクロブロックが４×４画素に分割されて、４×４画素のＤＣＴが行われる。そして、イントラ１６×１６予測モードの場合のみ、−１のブロックに示されるように、各ブロックの直流成分を集めて、４×４行列が生成され、これに対して、さらに、直交変換が施される。
【０１９８】
一方、色差信号については、マクロブロックが４×４画素に分割され、４×４画素のＤＣＴが行われた後に、１６および１７の各ブロックに示されるように、各ブロックの直流成分を集めて、２×２行列が生成され、これに対して、さらに、直交変換が施される。
【０１９９】
なお、このことは、イントラ８×８予測モードに関しては、ハイプロファイルまたはそれ以上のプロファイルで、対象マクロブロックに、８×８直交変換が施される場合についてのみ適用可能である。
【０２００】
図２１および図２２は、９種類の輝度信号の４×４画素のイントラ予測モード(Intra_4x4_pred_mode)を示す図である。平均値（ＤＣ）予測を示すモード２以外の８種類の各モードは、それぞれ、図２３の番号０，１，３乃至８で示される方向に対応している。
【０２０１】
９種類のIntra_4x4_pred_modeについて、図２４を参照して説明する。図２４の例において、画素ａ乃至ｐは、イントラ処理される対象ブロックの画素を表し、画素値Ａ乃至Ｍは、隣接ブロックに属する画素の画素値を表している。すなわち、画素ａ乃至ｐは、画面並べ替えバッファ６２から読み出された処理対象の画像であり、画素値Ａ乃至Ｍは、フレームメモリ７２から読み出され、参照される復号済みの画像の画素値である。
【０２０２】
図２１および図２２に示す各イントラ予測モードの場合、画素ａ乃至ｐの予測画素値は、隣接ブロックに属する画素の画素値Ａ乃至Ｍを用いて、以下のように生成される。なお、画素値が“available”であるとは、画枠の端であったり、あるいは、まだ符号化されていないなどの理由がなく、利用可能であることを表す。これに対して、画素値が“unavailable”であるとは、画枠の端であったり、あるいは、まだ符号化されていないなどの理由により利用可能ではないことを表す。
【０２０３】
モード０はVertical Prediction modeであり、画素値Ａ乃至Ｄが “available” の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（９）のように生成される。
画素ａ, ｅ, ｉ, ｍの予測画素値  ＝  Ａ
画素ｂ, ｆ, ｊ, ｎの予測画素値  ＝  Ｂ
画素ｃ, ｇ, ｋ, ｏの予測画素値  ＝  Ｃ
画素ｄ, ｈ, ｌ, ｐの予測画素値  ＝  Ｄ                            ・・・（９）
【０２０４】
モード１はHorizontal Prediction modeであり、画素値Ｉ乃至Ｌが “available” の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（１０）のように生成される。
画素ａ, ｂ, ｃ, ｄの予測画素値  ＝  Ｉ
画素ｅ, ｆ, ｇ, ｈの予測画素値  ＝  Ｊ
画素ｉ, ｊ, ｋ, ｌの予測画素値  ＝  Ｋ
画素ｍ, ｎ, ｏ, ｐの予測画素値  ＝  Ｌ                          ・・・（１０）
【０２０５】
モード２はDC Prediction modeであり、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌが全て “available” である時、予測画素値は式（１１）のように生成される。
（Ａ＋Ｂ＋Ｃ＋Ｄ＋Ｉ＋Ｊ＋Ｋ＋Ｌ＋４）  ＞＞  ３                ・・・（１１）
【０２０６】
また、画素値Ａ,Ｂ,Ｃ,Ｄが全て “unavailable” である時、予測画素値は式（１２）のように生成される。
（Ｉ＋Ｊ＋Ｋ＋Ｌ＋２）  ＞＞  ２                                ・・・（１２）
【０２０７】
また、画素値Ｉ,Ｊ,Ｋ,Ｌが全て “unavailable” である時、予測画素値は式（１３）のように生成される。
（Ａ＋Ｂ＋Ｃ＋Ｄ＋２）  ＞＞  ２                                ・・・（１３）
【０２０８】
なお、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌが全て“unavailable” である時、１２８を予測画素値として用いる。
【０２０９】
モード３はDiagonal_Down_Left Prediction modeであり、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌ,Ｍが“available”の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（１４）のように生成される。
画素ａの予測画素値                  ＝  （Ａ＋２Ｂ＋Ｃ＋２）  ＞＞  ２
画素ｂ，ｅの予測画素値              ＝  （Ｂ＋２Ｃ＋Ｄ＋２）  ＞＞  ２
画素ｃ，ｆ，ｉの予測画素値          ＝  （Ｃ＋２Ｄ＋Ｅ＋２）  ＞＞  ２
画素ｄ，ｇ，ｊ，ｍの予測画素値      ＝  （Ｄ＋２Ｅ＋Ｆ＋２）  ＞＞  ２
画素ｈ，ｋ，ｎの予測画素値          ＝  （Ｅ＋２Ｆ＋Ｇ＋２）  ＞＞  ２
画素ｌ，ｏの予測画素値              ＝  （Ｆ＋２Ｇ＋Ｈ＋２）  ＞＞  ２
画素ｐの予測画素値                  ＝  （Ｇ＋３Ｈ＋２）      ＞＞  ２
・・・（１４）
【０２１０】
モード４はDiagonal_Down_Right Prediction modeであり、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌ,Ｍが “available” の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（１５）のように生成される。
画素ｍの予測画素値                  ＝  （Ｊ＋２Ｋ＋Ｌ＋２）  ＞＞  ２
画素ｉ，ｎの予測画素値              ＝  （Ｉ＋２Ｊ＋Ｋ＋２）  ＞＞  ２
画素ｅ，ｊ，ｏの予測画素値          ＝  （Ｍ＋２Ｉ＋Ｊ＋２）  ＞＞  ２
画素ａ，ｆ，ｋ，ｐの予測画素値      ＝  （Ａ＋２Ｍ＋Ｉ＋２）  ＞＞  ２
画素ｂ，ｇ，ｌの予測画素値          ＝  （Ｍ＋２Ａ＋Ｂ＋２）  ＞＞  ２
画素ｃ，ｈの予測画素値              ＝  （Ａ＋２Ｂ＋Ｃ＋２）  ＞＞  ２
画素ｄの予測画素値                  ＝  （Ｂ＋２Ｃ＋Ｄ＋２）  ＞＞  ２
・・・（１５）
【０２１１】
モード５はDiagonal_Vertical_Right Prediction modeであり、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌ,Ｍが“available”の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（１６）のように生成される。
画素ａ，ｊの予測画素値              ＝  （Ｍ＋Ａ＋１）        ＞＞  １
画素ｂ，ｋの予測画素値              ＝  （Ａ＋Ｂ＋１）        ＞＞  １
画素ｃ，ｌの予測画素値              ＝  （Ｂ＋Ｃ＋１）        ＞＞  １
画素ｄの予測画素値                  ＝  （Ｃ＋Ｄ＋１）        ＞＞  １
画素ｅ，ｎの予測画素値              ＝  （Ｉ＋２Ｍ＋Ａ＋２）  ＞＞  ２
画素ｆ，ｏの予測画素値              ＝  （Ｍ＋２Ａ＋Ｂ＋２）  ＞＞  ２
画素ｇ，ｐの予測画素値              ＝  （Ａ＋２Ｂ＋Ｃ＋２）  ＞＞  ２
画素ｈの予測画素値                  ＝  （Ｂ＋２Ｃ＋Ｄ＋２）  ＞＞  ２
画素ｉの予測画素値                  ＝  （Ｍ＋２Ｉ＋Ｊ＋２）  ＞＞  ２
画素ｍの予測画素値                  ＝  （Ｉ＋２Ｊ＋Ｋ＋２）  ＞＞  ２
・・・（１６）
【０２１２】
モード６はHorizontal_Down Prediction modeであり、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌ,Ｍが“available”の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（１７）のように生成される。
画素ａ，ｇの予測画素値              ＝  （Ｍ＋Ｉ＋１）        ＞＞  １
画素ｂ，ｈの予測画素値              ＝  （Ｉ＋２Ｍ＋Ａ＋２）  ＞＞  ２
画素ｃの予測画素値                  ＝  （Ｍ＋２Ａ＋Ｂ＋２）  ＞＞  ２
画素ｄの予測画素値                  ＝  （Ａ＋２Ｂ＋Ｃ＋２）  ＞＞  ２
画素ｅ，ｋの予測画素値              ＝  （Ｉ＋Ｊ＋１）        ＞＞  １
画素ｆ，ｌの予測画素値              ＝  （Ｍ＋２Ｉ＋Ｊ＋２）  ＞＞  ２
画素ｉ，ｏの予測画素値              ＝  （Ｊ＋Ｋ＋１）        ＞＞  １
画素ｊ，ｐの予測画素値              ＝  （Ｉ＋２Ｊ＋Ｋ＋２）  ＞＞  ２
画素ｍの予測画素値                  ＝  （Ｋ＋Ｌ＋１）        ＞＞  １
画素ｎの予測画素値                  ＝  （Ｊ＋２Ｋ＋Ｌ＋２）  ＞＞  ２
・・・（１７）
【０２１３】
モード７は、Vertical_Left Prediction modeであり、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌ,Ｍが“available”の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（１８）のように生成される。
画素ａの予測画素値                  ＝  （Ａ＋Ｂ＋１）        ＞＞  １
画素ｂ，ｉの予測画素値              ＝  （Ｂ＋Ｃ＋１）        ＞＞  １
画素ｃ，ｊの予測画素値              ＝  （Ｃ＋Ｄ＋１）        ＞＞  １
画素ｄ，ｋの予測画素値              ＝  （Ｄ＋Ｅ＋１）        ＞＞  １
画素ｌの予測画素値                  ＝  （Ｅ＋Ｆ＋１）        ＞＞  １
画素ｅの予測画素値                  ＝  （Ａ＋２Ｂ＋Ｃ＋２）  ＞＞  ２
画素ｆ，ｍの予測画素値              ＝  （Ｂ＋２Ｃ＋Ｄ＋２）  ＞＞  ２
画素ｇ，ｎの予測画素値              ＝  （Ｃ＋２Ｄ＋Ｅ＋２）  ＞＞  ２
画素ｈ，ｏの予測画素値              ＝  （Ｄ＋２Ｅ＋Ｆ＋２）  ＞＞  ２
画素ｐの予測画素値                  ＝  （Ｅ＋２Ｆ＋Ｇ＋２）  ＞＞  ２
・・・（１８）
【０２１４】
モード８は、Horizontal_Up Prediction modeであり、画素値Ａ,Ｂ,Ｃ,Ｄ,Ｉ,Ｊ,Ｋ,Ｌ,Ｍが“available”の場合のみ適用される。この場合、画素ａ乃至ｐの予測画素値は、次の式（１９）のように生成される。
画素ａの予測画素値                  ＝  （Ｉ＋Ｊ＋１）        ＞＞  １
画素ｂの予測画素値                  ＝  （Ｉ＋２Ｊ＋Ｋ＋２）  ＞＞  ２
画素ｃ，ｅの予測画素値              ＝  （Ｊ＋Ｋ＋１）        ＞＞  １
画素ｄ，ｆの予測画素値              ＝  （Ｊ＋２Ｋ＋Ｌ＋２）  ＞＞  ２
画素ｇ，ｉの予測画素値              ＝  （Ｋ＋Ｌ＋１）        ＞＞  １
画素ｈ，ｊの予測画素値              ＝  （Ｋ＋３Ｌ＋２）      ＞＞  ２
画素ｋ，ｌ，ｍ，ｎ，ｏ，ｐの予測画素値  ＝  Ｌ
・・・（１９）
【０２１５】
次に、再び、図４を参照して、輝度信号の４×４画素のイントラ予測モード(Intra_4x4_pred_mode)の符号化方式について説明する。図４の例において、４×４画素からなり、符号化対象となる対象ブロックＣが示されており、対象ブロックＣに隣接する４×４画素からなるブロックＡおよびブロックＢが示されている。
【０２１６】
この場合、対象ブロックＣにおけるIntra_4x4_pred_modeと、ブロックＡおよびブロックＢにおけるIntra_4x4_pred_modeとは高い相関があると考えられる。この相関性を用いて、次のように符号化処理を行うことにより、より高い符号化効率を実現することができる。
【０２１７】
すなわち、図４の例において、ブロックＡおよびブロックＢにおけるIntra_4x4_pred_modeを、それぞれ、Intra_4x4_pred_modeAおよびIntra_4x4_pred_modeBとして、MostProbableModeを次の式（２０）と定義する。
MostProbableMode=Min(Intra_4x4_pred_modeA, Intra_4x4_pred_modeB)
・・・（２０）
【０２１８】
すなわち、ブロックＡおよびブロックＢのうち、より小さなmode_numberを割り当てられている方をMostProbableModeとする。
【０２１９】
ビットストリーム中には、対象ブロックＣに対するパラメータとして、prev_intra4x4_pred_mode_flag[luma4x4BlkIdx] および rem_intra4x4_pred_mode[luma4x4BlkIdx] という２つの値が定義されており、次の式（２１）に示される擬似コードに基づく処理により、復号処理が行われ、対象ブロックＣに対するIntra_4x4_pred_mode、Intra4x4PredMode[luma4x4BlkIdx] の値を得ることができる。
【０２２０】
if(prev_intra4x4_pred_mode_flag[luma4x4BlkIdx])
Intra4x4PredMode[luma4x4BlkIdx] = MostProbableMode
else
if(rem_intra4x4_pred_mode[luma4x4BlkIdx] < MostProbableMode)
Intra4x4PredMode[luma4x4BlkIdx]=rem_intra4x4_pred_mode[luma4x4BlkIdx]
else
Intra4x4PredMode[luma4x4BlkIdx]=rem_intra4x4_pred_mode[luma4x4BlkIdx] + 1
・・・（２１）
【０２２１】
次に、８×８画素のイントラ予測モードについて説明する。図２５および図２６は、９種類の輝度信号の８×８画素のイントラ予測モード(Intra_8x8_pred_mode)を示す図である。
【０２２２】
対象の８×８ブロックにおける画素値を、p[x,y](0≦x≦7;0≦y≦7)とし、隣接ブロックの画素値をp[-1,-1],…,p[-1,15],p[-1,0],…,[p-1,7]のように表すものとする。
【０２２３】
８×８画素のイントラ予測モードについては、予測値を生成するに先立ち、隣接画素にローパスフィルタリング処理が施される。ここで、ローパスフィルタリング処理前の画素値を、p[-1,-1],…,p[-1,15],p[-1,0],…p[-1,7]、処理後の画素値をp'[-1,-1],…,p'[-1,15],p'[-1,0],…p'[-1,7]と表すとする。
【０２２４】
まず、p'[0,-1]は、p[-1,-1] が “available” である場合には、次の式（２２）のように算出され、“not available” である場合には、次の式（２３）のように算出される。
p'[0,-1] = (p[-1,-1] + 2*p[0,-1] + p[1,-1] + 2) >> 2
・・・（２２）
p'[0,-1] = (3*p[0,-1] + p[1,-1] + 2) >> 2
・・・（２３）
【０２２５】
p'[x,-1] (x=0,…,7)は、次の式（２４）のように算出される。
p'[x,-1] = (p[x-1,-1] + 2*p[x,-1] + p[x+1,-1] + 2) >>2
・・・（２４）
【０２２６】
p'[x,-1] (x=8,…,15)は、p[x,-1] (x=8,…,15) が “available” である場合には、次の式（２５）のように算出される。
p'[x,-1] = (p[x-1,-1] + 2*p[x,-1] + p[x+1,-1] + 2) >>2
p'[15,-1] = (p[14,-1] + 3*p[15,-1] + 2) >>2
・・・（２５）
【０２２７】
p'[-1,-1]は、p[-1,-1]が “available” である場合には、以下のように算出される。すなわち、p'[-1,-1]は、p[0,-1]及びp[-1,0]の双方がavailableである場合には、式（２６）のように算出され、p[-1,0] が “unavailable” である場合には、式（２７）のように算出される。また、p'[-1,-1]は、p[0,-1] が “unavailable” である場合には、式（２８）のように算出される。
p'[-1,-1] = (p[0,-1] + 2*p[-1,-1] + p[-1,0] + 2) >>2
・・・（２６）
p'[-1,-1] = (3*p[-1,-1] + p[0,-1] + 2) >>2
・・・（２７）
p'[-1,-1] = (3*p[-1,-1] + p[-1,0] + 2) >>2
・・・（２８）
【０２２８】
p'[-1,y] (y=0, … ,7) は、p[-1,y] (y=0, … ,7) が “available” の時、以下のように算出される。すなわち、まず、p'[-1,0]は、p[-1,-1]が “available” である場合には、次の式（２９）のように算出され、“unavailable” である場合には、式（３０）のように算出される。
p'[-1,0] = (p[-1,-1] + 2*p[-1,0] + p[-1,1] + 2) >>2
・・・（２９）
p'[-1,0] = (3*p[-1,0] + p[-1,1] + 2) >>2
・・・（３０）
【０２２９】
また、p'[-1,y] (y=1,…,6)は、次の式（３１）のように算出され、p'[-1,7]は、式（３２）のように算出される。
p[-1,y] = (p[-1,y-1] + 2*p[-1,y] + p[-1,y+1] + 2) >>2
・・・（３１）
p'[-1,7] = (p[-1,6] + 3*p[-1,7] + 2) >>2
・・・（３２）
【０２３０】
このように算出されたp'を用いて、図２５および図２６に示される各イントラ予測モードにおける予測値は以下のように生成される。
【０２３１】
モード０はVertical Prediction modeであり、p[x,-1] (x=0, … ,7) が “available” である時のみ適用される。予測値pred8x8L[x,y]は、次の式（３３）のように生成される。
pred8x8L[x,y] = p'[x,-1] x,y=0,...,7
・・・（３３）
【０２３２】
モード１はHorizontal Prediction modeであり、p[-1,y] (y=0, … ,7) が “available” である時のみ適用される。予測値pred8x8L[x,y]は、次の式（３４）のように生成される。
pred8x8L[x,y] = p'[-1,y] x,y=0,...,7
・・・（３４）
【０２３３】
モード２はDC Prediction modeであり、予測値pred8x8L[x,y]は以下の通り生成される。すなわち、p[x,-1] (x=0, … ,7) および p[-1,y] (y=0, … ,7) の両方が “available” である場合には、予測値pred8x8L[x,y]は、次の式（３５）のように生成される。
【数３】
2011024066.tif 000005
【０２３４】
p[x,-1] (x=0, … ,7) は “available” であるが、 p[-1,y] (y=0, … ,7) が “unavailable” である場合には、予測値pred8x8L[x,y]は、次の式（３６）のように生成される。
【数４】
2011024066.tif 000006
【０２３５】
p[x,-1] (x=0, … ,7) は “unavailable” であるが、 p[-1,y] (y=0, … ,7) が “available” である場合には、予測値pred8x8L[x,y]は、次の式（３７）のように生成される。
【数５】
2011024066.tif 000007
【０２３６】
p[x,-1] (x=0, … ,7) および p[-1,y] (y=0, … ,7) の両方が “unavailable” である場合には、予測値pred8x8L[x,y]は、次の式（３８）のように生成される。
pred8x8L[x,y] = 128
・・・（３８）
ただし、式（３８）は、8ビット入力の場合を表している。
【０２３７】
モード３はDiagonal_Down_Left_prediction modeであり、予測値pred8x8L[x,y]は以下の通り生成される。すなわち、Diagonal_Down_Left_prediction modeは、p[x,-1], x=0,…,15が “available” の時のみ適用され、x=7かつy=7である予測画素値は、次の式（３９）のように生成され、その他の予測画素値は、次の式（４０）のように生成される。
pred8x8L[x,y] = (p'[14,-1] + 3*p[15,-1] + 2) >> 2
・・・（３９）
red8x8L[x,y] = (p'[x+y,-1] + 2*p'[x+y+1,-1] + p'[x+y+2,-1] + 2) >> 2
・・・（４０）
【０２３８】
モード４はDiagonal_Down_Right_prediction modeであり、予測値pred8x8L[x,y]は以下の通り生成される。すなわち、Diagonal_Down_Right_prediction modeは、p[x,-1],x=0,…,7及びp[-1,y],y=0,…,7が “available”の時のみ適用され、x > y である予測画素値は、次の式（４１）のように生成され、x < y である予測画素値は、次の式（４２）のように生成される。また、x = y である予測画素値は、次の式（４３）のように生成される。
pred8x8L[x,y] = (p'[x-y-2,-1] + 2*p'[x-y-1,-1] + p'[x-y,-1] + 2) >> 2
・・・（４１）
pred8x8L[x,y] = (p'[-1,y-x-2] + 2*p'[-1,y-x-1] + p'[-1,y-x] + 2) >> 2
・・・（４２）
pred8x8L[x,y] = (p'[0,-1] + 2*p'[-1,-1] + p'[-1,0] + 2) >> 2
・・・（４３）
【０２３９】
モード５はVertical_Right_prediction modeであり、予測値pred8x8L[x,y]は以下の通り生成される。すなわち、Vertical_Right_prediction modeは、p[x,-1],x=0,…,7及びp[-1,y],y=-1,…,7が “available”の時のみ適用される。今、zVRを、次の式（４４）のように定義する。
zVR = 2*x - y
・・・（４４）
【０２４０】
この時、zVRが、0,2,4,6,8,10,12,14の場合には、画素予測値は、次の式（４５）のように生成され、zVRが1,3,5,7,9,11,13の場合には、画素予測値は、次の式（４６）のように生成される。
pred8x8L[x,y] = (p'[x-(y>>1)-1,-1] + p'[x-(y>>1),-1] + 1) >> 1
・・・（４５）
pred8x8L[x,y]
= (p'[x-(y>>1)-2,-1] + 2*p'[x-(y>>1)-1,-1] + p'[x-(y>>1),-1] + 2) >> 2
・・・（４６）
【０２４１】
また、zVRが-1の場合には、画素予測値は、次の式（４７）のように生成され、これ以外の場合、すなわち、zVRが-2,-3,-4,-5,-6,-7の場合には、画素予測値は、次の式（４８）のように生成される。
pred8x8L[x,y] = (p'[-1,0] + 2*p'[-1,-1] + p'[0,-1] + 2) >> 2
・・・（４７）
pred8x8L[x,y] = (p'[-1,y-2*x-1] + 2*p'[-1,y-2*x-2] + p'[-1,y-2*x-3] + 2) >> 2
・・・（４８）
【０２４２】
モード６はHorizontal_Down_prediction modeであり、予測値pred8x8L[x,y]は以下の通り生成される。すなわち、Horizontal_Down_prediction modeは、p[x,-1],x=0,…,7及びp[-1,y],y=-1,…,7が “available”の時のみ適用される。今、zVRを次の式（４９）のように定義するものとする。
zHD = 2*y - x
・・・（４９）
【０２４３】
この時、zHDが0,2,4,6,8,10,12,14の場合には、予測画素値は、次の式（５０）のように生成され、zHDが1,3,5,7,9,11,13の場合には、予測画素値は、次の式（５１）のように生成される。
pred8x8L[x,y] = (p'[-1,y-(x>>1)-1] + p'[-1,y-(x>>1) + 1] >> 1
・・・（５０）
pred8x8L[x,y]
= (p'[-1,y-(x>>1)-2] + 2*p'[-1,y-(x>>1)-1] + p'[-1,y-(x>>1)] + 2) >> 2
・・・（５１）
【０２４４】
また、zHDが-1の場合には、予測画素値は、次の式（５２）のように生成され、zHDがこれ以外の値の場合、すなわち、-2,-3,-4,-5,-6,-7の場合には、予測画素値は、次の式（５３）のように生成される。
pred8x8L[x,y] = (p'[-1,0] + 2*p[-1,-1] + p'[0,-1] + 2) >> 2
・・・（５２）
pred8x8L[x,y] = (p'[x-2*y-1,-1] + 2*p'[x-2*y-2,-1] + p'[x-2*y-3,-1] + 2) >> 2
・・・（５３）
【０２４５】
モード７はVertical_Left_prediction modeであり、予測値pred8x8L[x,y]は以下の通り生成される。すなわち、Vertical_Left_prediction modeは、p[x,-1], x=0,…,15が “available” の時のみ適用され、y=0,2,4,6の場合、予測画素値は、次の式（５４）のように生成され、それ以外の場合、すなわち、y=1,3,5,7の場合、予測画素値は、次の式（５５）のように生成される。
pred8x8L[x,y] = (p'[x+(y>>1),-1] + p'[x+(y>>1)+1,-1] + 1) >> 1
・・・（５４）
pred8x8L[x,y]
= (p'[x+(y>>1),-1] + 2*p'[x+(y>>1)+1,-1] + p'[x+(y>>1)+2,-1] + 2) >> 2
・・・（５５）
【０２４６】
モード８はHorizontal_Up_prediction modeであり、予測値pred8x8L[x,y]は以下の通り生成される。すなわち、Horizontal_Up_prediction modeは、p[-1,y], y=0,…,7 が “available” の時のみ適用される。以下では、zHUを次の式（５６）のように定義する。
zHU = x + 2*y
・・・（５６）
【０２４７】
zHUの値が0,2,4,6,8,10,12の場合、予測画素値は、次の式（５７）のように生成され、zHUの値が1,3,5,7,9,11の場合、予測画素値は、次の式（５８）のように生成される。
pred8x8L[x,y] = (p'[-1,y+(x>>1)] + p'[-1,y+(x>>1)+1] + 1) >> 1
・・・（５７）
pred8x8L[x,y] = (p'[-1,y+(x>>1)]
・・・（５８）
【０２４８】
また、zHUの値が13の場合、予測画素値は、次の式（５９）のように生成され、それ以外の場合、すなわち、zHUの値が13より大きい場合、予測画素値は、次の式（６０）のように生成される。
pred8x8L[x,y] = (p'[-1,6] + 3*p'[-1,7] + 2) >> 2
・・・（５９）
pred8x8L[x,y] = p'[-1,7]
・・・（６０）
【０２４９】
次に、１６×１６画素のイントラ予測モードについて説明する。図２７および図２８は、４種類の輝度信号の１６×１６画素のイントラ予測モード(Intra_16x16_pred_mode)を示す図である。
【０２５０】
４種類のイントラ予測モードについて、図２９を参照して説明する。図２９の例において、イントラ処理される対象マクロブロックＡが示されており、P(x,y);x,y=-1,0,…,15は、対象マクロブロックＡに隣接する画素の画素値を表している。
【０２５１】
モード０は、Vertical Prediction modeであり、P(x,-1); x,y=-1,0,…,15が “available” である時のみ適用される。この場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６１）のように生成される。
Pred(x,y) = P(x,-1);x,y=0,…,15
・・・（６１）
【０２５２】
モード１はHorizontal Prediction modeであり、P(-1,y); x,y=-1,0,…,15が “available” である時のみ適用される。この場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６２）のように生成される。
Pred(x,y) = P(-1,y);x,y=0,…,15
・・・（６２）
【０２５３】
モード２はDC Prediction modeであり、P(x,-1)およびP(-1,y); x,y=-1,0,…,15が全て “available” である場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６３）のように生成される。
【数６】
2011024066.tif 000008
【０２５４】
また、P(x,-1); x,y=-1,0,…,15が “unavailable” である場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６４）のように生成される。
【数７】
2011024066.tif 000009
【０２５５】
P(-1,y); x,y=-1,0,…,15が “unavailable” である場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６５）のように生成される。
【数８】
2011024066.tif 000010
【０２５６】
P(x,-1)およびP(-1,y); x,y=-1,0,…,15が全て “unavailable” である場合には、予測画素値として１２８を用いる。
【０２５７】
モード３はPlane Prediction modeであり、P(x,-1)及びP(-1,y); x,y=-1,0,…,15が全て “available” の場合のみ適用される。この場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６６）のように生成される。
【数９】
2011024066.tif 000011
【０２５８】
次に、色差信号に対するイントラ予測モードについて説明する。図２３は、４種類の色差信号のイントラ予測モード(Intra_chroma_pred_mode)を示す図である。色差信号のイントラ予測モードは、輝度信号のイントラ予測モードと独立に設定が可能である。色差信号に対するイントラ予測モードは、上述した輝度信号の１６×１６画素のイントラ予測モードに順ずる。
【０２５９】
ただし、輝度信号の１６×１６画素のイントラ予測モードが、１６×１６画素のブロックを対象としているのに対し、色差信号に対するイントラ予測モードは、８×８画素のブロックを対象としている。さらに、上述した図２７と図３０に示されるように、両者においてモード番号は対応していない。
【０２６０】
ここで、図２９を参照して上述した輝度信号の１６×１６画素のイントラ予測モードの対象マクロブロックＡの画素値および隣接する画素値の定義に準じる。例えば、イントラ処理される対象マクロブロックＡ（色差信号の場合は、８×８画素）に隣接する画素の画素値をP(x,y);x,y=-1,0,…,7とする。
【０２６１】
モード０はDC Prediction modeであり、P(x,-1)およびP(-1,y); x,y=-1,0,…,7が全て “available” である場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６７）のように生成される。
【数１０】
2011024066.tif 000012
【０２６２】
また、P(-1,y) ; x,y=-1,0,…,7が “unavailable” である場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６８）のように生成される。
【数１１】
2011024066.tif 000013
【０２６３】
また、P(x,-1) ; x,y=-1,0,…,7が “unavailable”である場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（６９）のように生成される。
【数１２】
2011024066.tif 000014
【０２６４】
モード１はHorizontal Prediction modeであり、P(-1,y) ; x,y=-1,0,…,7が “available” の場合にのみ適用される。この場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（７０）のように生成される。
Pred(x,y) = P(-1,y);x,y=0,…,7
・・・（７０）
【０２６５】
モード２はVertical Prediction modeであり、P(x,-1) ; x,y=-1,0,…,7が “available” の場合にのみ適用される。この場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（７１）のように生成される。
Pred(x,y) = P(x,-1);x,y=0,…,7
・・・（７１）
【０２６６】
モード３はPlane Prediction modeであり、P(x,-1)及びP(-1,y) ; x,y=-1,0,…,7 が “available” の場合にのみ適用される。この場合、対象マクロブロックＡの各画素の予測画素値Pred(x,y)は、次の式（７２）のように生成される。
【数１３】
2011024066.tif 000015
【０２６７】
以上のように、輝度信号のイントラ予測モードには、９種類の４×４画素および８×８画素のブロック単位、並びに４種類の１６×１６画素のマクロブロック単位の予測モードがある。このブロック単位のモードは、マクロブロック単位毎に設定される。色差信号のイントラ予測モードには、４種類の８×８画素のブロック単位の予測モードがある。この色差信号のイントラ予測モードは、輝度信号のイントラ予測モードと独立に設定が可能である。
【０２６８】
また、輝度信号の４×４画素のイントラ予測モード（イントラ４×４予測モード）および８×８画素のイントラ予測モード（イントラ８×８予測モード）については、４×４画素および８×８画素の輝度信号のブロック毎に１つのイントラ予測モードが設定される。輝度信号の１６×１６画素のイントラ予測モード（イントラ１６×１６予測モード）と色差信号のイントラ予測モードについては、１つのマクロブロックに対して１つの予測モードが設定される。
【０２６９】
なお、予測モードの種類は、上述した図２３の番号０，１，３乃至８で示される方向に対応している。予測モード２は平均値予測である。
【０２７０】
［イントラ予測処理の説明］
次に、図３１のフローチャートを参照して、これらの予測モードに対して行われる処理である、図１９のステップＳ３１におけるイントラ予測処理を説明する。なお、図３１の例においては、輝度信号の場合を例として説明する。
【０２７１】
イントラ予測部７４は、ステップＳ４１において、４×４画素、８×８画素、および１６×１６画素の各イントラ予測モードに対してイントラ予測を行う。
【０２７２】
具体的には、イントラ予測部７４は、処理対象のブロックの画素を、フレームメモリ７２から読み出され、スイッチ７３を介して供給される復号済みの画像を参照して、イントラ予測する。このイントラ予測処理が、各イントラ予測モードで行われることで、各イントラ予測モードでの予測画像が生成される。なお、参照される復号済みの画素としては、デブロックフィルタ７１によりデブロックフィルタリングされていない画素が用いられる。
【０２７３】
イントラ予測部７４は、ステップＳ４２において、上述した式（３）または式（４）で示されるコスト関数値を用いて、４×４画素、８×８画素、および１６×１６画素の各イントラ予測モードに対するコスト関数値を算出する。
【０２７４】
イントラ予測部７４は、ステップＳ４３において、４×４画素、８×８画素、および１６×１６画素の各イントラ予測モードに対して、それぞれ最適モードを決定する。すなわち、上述したように、イントラ４×４予測モードおよびイントラ８×８予測モードの場合には、予測モードの種類が９種類あり、イントラ１６×１６予測モードの場合には、予測モードの種類が４種類ある。したがって、イントラ予測部７４は、ステップＳ４２において算出されたコスト関数値に基づいて、それらの中から、最適イントラ４×４予測モード、最適イントラ８×８予測モード、最適イントラ１６×１６予測モードを決定する。
【０２７５】
イントラ予測部７４は、ステップＳ４４において、４×４画素、８×８画素、および１６×１６画素の各イントラ予測モードに対して決定された各最適モードの中から、ステップＳ４２において算出されたコスト関数値に基づいて、最適イントラ予測モードを選択する。すなわち、４×４画素、８×８画素、および１６×１６画素に対して決定された各最適モードの中から、コスト関数値が最小値であるモードを、最適イントラ予測モードとして選択する。そして、イントラ予測部７４は、最適イントラ予測モードで生成された予測画像とそのコスト関数値とを、予測画像選択部７６に供給する。
【０２７６】
［インター動き予測処理の説明］
次に、図３２のフローチャートを参照して、図１９のステップＳ３２のインター動き予測処理について説明する。
【０２７７】
動き予測・補償部７５は、ステップＳ６１において、図１３を参照して上述した１６×１６画素乃至４×４画素からなる８種類の各インター予測モードに対して動きベクトルと参照画像をそれぞれ決定する。すなわち、各インター予測モードの処理対象のブロックについて、動きベクトルと参照画像がそれぞれ決定される。
【０２７８】
動き予測・補償部７５は、ステップＳ６２において、１６×１６画素乃至４×４画素からなる８種類の各インター予測モードについて、ステップＳ６１で決定された動きベクトルに基づいて、参照画像に動き予測と補償処理を行う。この動き予測と補償処理により、各インター予測モードでの予測画像が生成される。
【０２７９】
動き予測・補償部７５は、ステップＳ６３において、１６×１６画素乃至４×４画素からなる８種類の各インター予測モードに対して決定された動きベクトルについて、圧縮画像に付加するための動きベクトル情報を生成する。このとき、図１４を参照して上述した動きベクトルの生成方法が用いられる。
【０２８０】
生成された動きベクトル情報は、次のステップＳ６４におけるコスト関数値算出の際にも用いられ、最終的に予測画像選択部７６により対応する予測画像が選択された場合には、予測モード情報および参照フレーム情報とともに、可逆符号化部６６へ出力される。
【０２８１】
動き予測・補償部７５は、ステップＳ６４において、上述した式（３）または式（４）で示されるコスト関数を用いて、１６×１６画素乃至４×４画素からなる８種類の各インター予測モードに対してコスト関数値を算出する。ここで算出されたコスト関数値は、上述した図１９のステップＳ３３で最適インター予測モードを決定する際に用いられる。
【０２８２】
［可逆符号化処理の説明］
次に、図３３のフローチャートを参照して、図１８のステップＳ２３の可逆符号化処理について説明する。
【０２８３】
可逆符号化部６６には、図１８のステップＳ１５において量子化された直交変換係数が供給される。可逆符号化部６６は、ステップＳ８１において、H．264/AVC方式で定められているCAVLCのテーブルを用いて、量子化部６５により量子化された直交変換係数を符号化する。この直交変換係数の符号化処理の詳細は、図３４および図３５を参照して後述する。
【０２８４】
ステップＳ８２において、可逆符号化部６６は、H．264/AVC方式で定められているCAVLCのテーブルを用いて、マクロブロックタイプ以外のその他のシンタクス要素を符号化する。ステップＳ８２においては、レート制御部２５からの量子化パラメータなどのシンタクス要素も符号化される。特に、インター予測が行われた場合には、動きベクトル情報や、参照フレーム情報、フラグなどのシンタクス要素が符号化される。
【０２８５】
すなわち、ここでは、上述した図１の指数ゴロム符号が用いられて各シンタクス要素が符号化される。また、負の値が生じる可能性がある動きベクトルなどのシンタクス要素については、図２に示される対応関係に基づいて、符号なしのコードナンバに置き換えられた後に、図１の指数ゴロム符号が適用されて符号化される。
【０２８６】
可逆符号化部６６は、ステップＳ８３において、マクロブロックタイプの符号化処理を行う。このマクロブロックタイプの符号化処理については、図３６を参照して後述する。
【０２８７】
ステップＳ８３の処理により、レート制御部２５からの量子化パラメータに応じて選択されたVLCテーブルが用いられて、マクロブロックタイプの情報が符号化される。
【０２８８】
そして、可逆符号化部６６は、ステップＳ８４において、ステップＳ８２およびＳ８３で符号化されたシンタクス要素を、ステップＳ８１で符号化された圧縮画像のヘッダに付加する。シンタクス要素がヘッダに付加された圧縮画像は、図１８のステップＳ２４において、蓄積バッファ６７に蓄積される。
【０２８９】
次に、図３４を参照して、図３３のステップＳ８１におけるCAVLCによる直交変換係数の符号化処理について説明する。なお、図３４の例においては、4×4画素ブロックの例が示されており、各画素に付された数字は、スキャン順を表している。
【０２９０】
H．264/AVC方式においては、4×4ブロックは、直交変換により各周波数成分に相当する4×4の2次元データに変換される。この2次元データは、さらに、符号化処理の対象となる対象ブロックがフレーム符号化されたものであるか、フィールド符号化されたものであるかに応じた方式で、1次元データに変換される。
【０２９１】
すなわち、対象ブロックがフレーム符号化されたものである場合、4×4の2次元データは、図３４Ａに示されるジグザグスキャン方式により、1次元データに変換される。これに対して、対象ブロックがフィールド符号化されたものである場合、4×4の2次元データは、図３４Ｂに示されるフィールドスキャン方式により、1次元データに変換される。
【０２９２】
第１に、可逆符号化部６６は、上述したように1次元化された直交変換係数を、高域から低域に向かって逆スキャンを行う。第２に、可逆符号化部６６は、NumCoef（０でない係数の個数）と、T1s（高域から低域にスキャンしたときの、±１の係数の個数、最大でも３）の符号化を行う。
【０２９３】
例えば、再度、図４を参照するに、図４の例においては、符号化処理の対象ブロックＣと、既に符号化済みのブロックであり、対象ブロックＣに隣接する隣接ブロックＡおよびＢが示されている。
【０２９４】
このとき、可逆符号化部６６は、隣接ブロックＡおよびＢにおけるNumCoefに応じて、VLCテーブルを切り替える。
【０２９５】
第３に、可逆符号化部６６は、Level(DCT係数値)の符号化を行う。例えば、T1sに関しては、正／負のみが符号化される。その他の係数に関しては、コードナンバ（Code Number）が割り当てられて符号化される。このとき、可逆符号化部６６は、イントラ／インター、量子化パラメータQP、および、最後に符号化したLevelに応じてVLCテーブルを切り替える。
【０２９６】
第４に、可逆符号化部６６は、Runの符号化を行う。このとき、可逆符号化部６６は、TotalZeroの符号化において、NumCoefに応じてVLCテーブルの切り替えを行う。また、可逆符号化部６６は、Run_before（非０係数の前に続く０の数）の符号化において、ZerosLeft（残りの非０係数の数）に応じてVLCテーブルの切り替えを行う。そして、ZerosLeft=0で、符号化処理は終了となる。
【０２９７】
次に、図３５を参照して、CAVLCの動作原理の具体例について説明する。図３５の例においては、逆スキャンした後、次に示す順で符号化処理が行われる。
【０２９８】
TotalCoef（非０係数の個数）=7
TrailingOnes（最後に連続する絶対値１の係数の個数）=2
Trailing_ones_sign_flag（最後に連続する絶対値１の係数の符号）=-
Trailing_ones_sign_flag（最後に連続する絶対値１の係数の符号）=+
Level（DCT係数）=-3
Level=+8
Level=+11
Level=-4
Level=+23
TotalZeros（最後の非０係数以前の０係数の個数）=5(ZerosLeft=6)
run_before（係数値の前の０の連続個数）=1(ZerosLeft=5)
run_before=2(ZerosLeft=4)
run_before=0(ZerosLeft=3)
run_before=2(ZerosLeft=2)
run_before=0(ZerosLeft=1)
run_before=0(ZerosLeft=0)
【０２９９】
なお、これらの数値は、上述したように、周辺ブロックなどの符号化状況などに応じて切り替えられたテーブルによりVLC符号化される。
【０３００】
［マクロブロックタイプの符号化処理の説明］
次に、図３６のフローチャートを参照して、図３３のステップＳ８３のマクロブロックタイプの符号化処理について説明する。
【０３０１】
レート制御部７７から、量子化パラメータQPが、VLCテーブル切替部８１およびコードナンバ割当部８２に供給される（図１８のステップＳ２５）。
【０３０２】
VLCテーブル切替部８１およびコードナンバ割当部８２は、ステップＳ９１において、レート制御部７７からの量子化パラメータQPを取得する。
【０３０３】
ステップＳ９２において、VLCテーブル切替部８１は、レート制御部７７からの量子化パラメータに応じて、例えば、２種類のテーブルのどちらかを、マクロブロックタイプに対するVLCテーブルとして選択する。例えば、VLCテーブル切替部８１は、所定の閾値より低い量子化パラメータ（例えば、QP=22）に対応して、図１７のk=0のテーブルを選択し、所定の閾値より高い量子化パラメータ（例えば、QP=37）に対応して、k=1のテーブルを選択する。
【０３０４】
ステップＳ９３において、コードナンバ割当部８２は、レート制御部７７からの量子化パラメータに応じて、コードナンバ”0”を割り当てる。すなわち、コードナンバ割当部８２は、所定の閾値より低い量子化パラメータに対応して、インター１６×１６モードを、コードナンバ”0”に割り当てる。また、コードナンバ割当部８２は、所定の閾値より高い量子化パラメータに対応して、スキップ（またはダイレクト）モードを、コードナンバ”0”に割り当てる。
【０３０５】
この割当情報は、VLCテーブル切替部８１に供給され、マクロブロックタイプに対するVLCテーブル情報とともに、可逆符号化部６６に供給される。
【０３０６】
ステップＳ９４において、可逆符号化部６６は、VLCテーブル切替部８１により選択されたVLCテーブルで、マクロブロックタイプを符号化する。
【０３０７】
符号化されたマクロブロックタイプは、図３３のステップＳ８２において符号化された他のシンタクス要素とともに、ステップＳ８４において、ステップＳ８１で符号化された圧縮画像のヘッダに付加される。
【０３０８】
以上のようにして符号化された圧縮画像は、所定の伝送路を介して伝送され、画像復号装置により復号される。
【０３０９】
［画像復号装置の構成例］
図３７は、本発明を適用した画像処理装置としての画像復号装置の一実施の形態の構成を表している。
【０３１０】
画像復号装置１０１は、蓄積バッファ１１１、可逆復号部１１２、逆量子化部１１３、逆直交変換部１１４、演算部１１５、デブロックフィルタ１１６、画面並べ替えバッファ１１７、Ｄ／Ａ変換部１１８、フレームメモリ１１９、スイッチ１２０、イントラ予測部１２１、動き予測・補償部１２２、スイッチ１２３、およびモードテーブル切替部１２４により構成されている。
【０３１１】
蓄積バッファ１１１は伝送されてきた圧縮画像を蓄積する。可逆復号部１１２は、蓄積バッファ１１１より供給された、図１２の可逆符号化部６６により符号化された情報を、可逆符号化部６６の符号化方式に対応する方式で復号する。
【０３１２】
すなわち、可逆復号部１１２は、図１２の可逆符号化部６６により符号化された画像を復号し、量子化パラメータなどのシンタクス要素も復号する。復号された画像および量子化パラメータは、逆量子化部１１３に供給される。また、量子化パラメータは、モードテーブル切替部１２４にも供給される。
【０３１３】
さらに、可逆復号部１１２は、この量子化パラメータに対応してモードテーブル切替部１２４により選択された復号方法（具体的には、VLCテーブル情報）で、マクロブロックタイプも復号する。復号されたマクロブロックタイプは、対応する動き予測・補償部１２２またはイントラ予測部１２１に供給される。
【０３１４】
逆量子化部１１３は可逆復号部１１２により復号された画像を、可逆復号部１１２により復号された量子化パラメータを参照して、図１２の量子化部６５の量子化方式に対応する方式で逆量子化する。逆直交変換部１１４は、図１２の直交変換部６４の直交変換方式に対応する方式で逆量子化部１１３の出力を逆直交変換する。
【０３１５】
逆直交変換された出力は演算部１１５によりスイッチ１２３から供給される予測画像と加算されて復号される。デブロックフィルタ１１６は、復号された画像のブロック歪を除去した後、フレームメモリ１１９に供給し、蓄積させるとともに、画面並べ替えバッファ１１７に出力する。
【０３１６】
画面並べ替えバッファ１１７は、画像の並べ替えを行う。すなわち、図１２の画面並べ替えバッファ６２により符号化の順番のために並べ替えられたフレームの順番が、元の表示の順番に並べ替えられる。Ｄ／Ａ変換部１１８は、画面並べ替えバッファ１１７から供給された画像をＤ／Ａ変換し、図示せぬディスプレイに出力し、表示させる。
【０３１７】
スイッチ１２０は、インター処理される画像と参照される画像をフレームメモリ１１９から読み出し、動き予測・補償部１２２に出力するとともに、イントラ予測に用いられる画像をフレームメモリ１１９から読み出し、イントラ予測部１２１に供給する。
【０３１８】
イントラ予測部１２１には、ヘッダ情報を復号して得られたマクロブロックタイプ情報、およびイントラ予測モードを示す情報が可逆復号部１１２から供給される。イントラ予測部１２１は、この情報に基づいて、予測画像を生成し、生成した予測画像を、スイッチ１２３に出力する。
【０３１９】
動き予測・補償部１２２には、ヘッダ情報を復号して得られた情報のうち、マクロブロックタイプ情報、動きベクトル情報、参照フレーム情報などが可逆復号部１１２から供給される。動き予測・補償部１２２は、動きベクトル情報と参照フレーム情報に基づいて画像に動き予測と補償処理を施し、予測画像を生成する。すなわち、対象ブロックの予測画像は、参照フレームにおいて、対象ブロックに動きベクトルで対応付けられる参照ブロックの画素値が用いられて生成される。そして、動き予測・補償部１２２は、生成された予測画像をスイッチ１２３に出力する。
【０３２０】
スイッチ１２３は、動き予測・補償部１２２またはイントラ予測部１２１により生成された予測画像を選択し、演算部１１５に供給する。
【０３２１】
モードテーブル切替部１２４は、可逆復号部１１２により復号された量子化パラメータに応じて、マクロブロックタイプに対する復号方法（すなわち、VLCテーブル）を切り替え、切り替えたVLCテーブルの情報を、可逆復号部１１２に供給する。
【０３２２】
すなわち、モードテーブル切替部１２４は、量子化パラメータを、レート制御部７７から取得するのに対して、可逆復号部１１２から取得するという点が異なるだけであり、その他は、図１２のモードテーブル切替部７８と基本的に同様な処理を行う。
【０３２３】
［可逆復号部およびモードテーブル切替部の構成例］
図３８は、可逆復号部およびモードテーブル切替部の詳細な構成例を示すブロック図である。
【０３２４】
図３８の例においては、可逆復号部１１２は、量子化パラメータ復号部１３１およびマクロブロックタイプ復号部１３２を含むように構成される。すなわち、可逆復号部１１２には、実際には、画像符号化装置５１からの圧縮画像や、量子化パラメータおよびマクロブロックタイプ以外の動きベクトル情報などの他のシンタクス要素を復号する部も構成されるが、図３８の例においては、その図示は省略されている。
【０３２５】
モードテーブル切替部１２４は、VLCテーブル切替部１４１およびコードナンバ割当部１４２により構成される。
【０３２６】
量子化パラメータ復号部１３１は、圧縮画像のヘッダに付加されていた量子化パラメータを復号し、復号した量子化パラメータを、逆量子化部１１３、VLCテーブル切替部１４１、およびコードナンバ割当部１４２に供給する。
【０３２７】
マクロブロックタイプ復号部１３２は、VLCテーブル切替部１４１により選択されたVLCテーブルを用いて、マクロブロックタイプを復号し、復号したマクロブロックタイプを、動き予測・補償部１２２に供給する。なお、マクロブロックタイプがインターに関するものであり、そのマクロブロックタイプがスキップやダイレクトモードではない場合、動きベクトル情報や参照フレーム情報なども、可逆復号部１１２において別途復号されて、動き予測・補償部１２２に供給される。
【０３２８】
なお、その図示は省略されているが、マクロブロックタイプがイントラに関するものである場合、そのマクロブロックタイプは、イントラ予測部１２１に供給される。この場合、イントラ予測モードの情報も、可逆復号部１１２において別途復号され、イントラ予測部１２１に供給される。
【０３２９】
VLCテーブル切替部１４１は、マクロブロックタイプに対する、少なくとも２種類のVLCテーブルを有している。VLCテーブル切替部１４１は、量子化パラメータ復号部１３１からの量子化パラメータに応じて、２種類のマクロブロックタイプに対するVLCテーブルのうちのどちらかを選択する。VLCテーブル切替部１４１は、選択したマクロブロックタイプに対するVLCテーブルの情報に、コードナンバ割当部１４２からの割当情報を付加して、マクロブロックタイプ復号部１３２に供給する。
【０３３０】
コードナンバ割当部１４２は、量子化パラメータ復号部１３１からの量子化パラメータに応じて、コードナンバ０に、所定のマクロブロックタイプを割り当て、その割当情報を、VLCテーブル切替部１４１に供給する。
【０３３１】
［画像復号装置の復号処理の説明］
次に、図３９のフローチャートを参照して、画像復号装置１０１が実行する復号処理について説明する。
【０３３２】
ステップＳ１３１において、蓄積バッファ１１１は伝送されてきた画像を蓄積する。ステップＳ１３２において、可逆復号部１１２は、蓄積バッファ１１１から供給される圧縮画像を復号する可逆復号処理を行う。この可逆復号処理の詳細は、図４０を参照して後述される。
【０３３３】
ステップＳ１３２の処理により、図１２の可逆符号化部６６により符号化されたＩピクチャ、Ｐピクチャ、並びにＢピクチャが復号される。さらに、量子化パラメータ、マクロブロックタイプ、そして、このとき、符号化されていれば、動きベクトル情報、参照フレーム情報、イントラ予測モードを示す情報なども復号される。
【０３３４】
ステップＳ１３３において、逆量子化部１１３は可逆復号部１１２により復号された変換係数を、図１２の量子化部６５の特性に対応する特性で逆量子化する。ステップＳ１３４において逆直交変換部１１４は逆量子化部１１３により逆量子化された変換係数を、図１２の直交変換部６４の特性に対応する特性で逆直交変換する。これにより図１２の直交変換部６４の入力（演算部６３の出力）に対応する差分情報が復号されたことになる。
【０３３５】
ステップＳ１３５において、演算部１１５は、後述するステップＳ１４１の処理で選択され、スイッチ１２３を介して入力される予測画像を差分情報と加算する。これにより元の画像が復号される。ステップＳ１３６においてデブロックフィルタ１１６は、演算部１１５より出力された画像をフィルタリングする。これによりブロック歪みが除去される。ステップＳ１３７においてフレームメモリ１１９は、フィルタリングされた画像を記憶する。
【０３３６】
ステップＳ１３８において、イントラ予測部１２１または動き予測・補償部１２２、は、可逆復号部１１２から供給される予測モード情報に対応して、それぞれ画像の予測処理を行う。
【０３３７】
すなわち、マクロブロックタイプがイントラに関するものである場合、マクロブロックタイプとイントラ予測モードを示す情報などが、イントラ予測部１２１に供給される。可逆復号部１１２からマクロブロックタイプとイントラ予測モードが供給された場合、イントラ予測部１２１は、イントラ予測モードのイントラ予測処理を行う。
【０３３８】
マクロブロックタイプがインターに関するものである場合、マクロブロックタイプと、必要に応じて、動きベクトル情報および参照フレーム情報などが、動き予測・補償部１２２に供給される。可逆復号部１１２からマクロブロックタイプなどが供給された場合、動き予測・補償部１２２は、マクロブロックタイプに基づいて、インター予測モードの動き予測・補償処理を行う。
【０３３９】
ステップＳ１３８における予測処理の詳細は、図４２を参照して後述する。この処理により、イントラ予測部１２１により生成された予測画像または動き予測・補償部１２２により生成された予測画像がスイッチ１２３に供給される。
【０３４０】
ステップＳ１３９において、スイッチ１２３は予測画像を選択する。すなわち、イントラ予測部１２１により生成された予測画像、または動き予測・補償部１２２により生成された予測画像が供給される。したがって、供給された予測画像が選択されて演算部１１５に供給され、上述したように、ステップＳ１３４において逆直交変換部１１４の出力と加算される。
【０３４１】
ステップＳ１４０において、画面並べ替えバッファ１１７は並べ替えを行う。すなわち画像符号化装置５１の画面並べ替えバッファ６２により符号化のために並べ替えられたフレームの順序が、元の表示の順序に並べ替えられる。
【０３４２】
ステップＳ１４１において、Ｄ／Ａ変換部１１８は、画面並べ替えバッファ１１７からの画像をＤ／Ａ変換する。この画像が図示せぬディスプレイに出力され、画像が表示される。
【０３４３】
［可逆復号処理の説明］
次に、図４０のフローチャートを参照して、図３９のステップＳ１３２の可逆復号処理を説明する。
【０３４４】
蓄積バッファ１１１には、伝送されてきた画像を蓄積される。可逆復号部１１２は、ステップＳ１５１において、蓄積バッファ１１１から供給される圧縮画像を、図３３のステップＳ８１の符号化方法に対応する復号方法で復号し、復号した画像を、逆量子化部１１３に供給する。
【０３４５】
可逆復号部１１２は、ステップＳ１１２において、マクロブロックタイプ以外のその他のシンタクス要素を、図３３のステップＳ８２の符号化方法に対応する復号方法で復号する。特に、量子化パラメータは、量子化パラメータ復号部１３１により復号され、逆量子化部１１３、VLCテーブル切替部１４１、およびコードナンバ割当部１４２に供給される。
【０３４６】
マクロブロックタイプ復号部１３２は、ステップＳ１５３において、マクロブロックタイプの復号処理を行う。このマクロブロックタイプの復号処理の詳細は、図４１を参照して後述される。
【０３４７】
ステップＳ１５３の処理により、量子化パラメータ復号部１３１からの量子化パラメータに応じて選択されたVLCテーブルが用いられて、マクロブロックタイプの情報が復号される。
【０３４８】
［マクロブロックタイプの復号処理の説明］
次に、図４１のフローチャートを参照して、図４０のステップＳ１５３のマクロブロックタイプの復号処理について説明する。
【０３４９】
量子化パラメータ復号部１３１から、量子化パラメータQPが、VLCテーブル切替部１４１およびコードナンバ割当部１４２に供給される（図４０のステップＳ１５２）。
【０３５０】
VLCテーブル切替部１４１およびコードナンバ割当部１４２は、ステップＳ１６１において、量子化パラメータ復号部１３１からの量子化パラメータQPを取得する。
【０３５１】
ステップＳ１６２において、VLCテーブル切替部１４１は、量子化パラメータ復号部１３１からの量子化パラメータに応じて、例えば、２種類のテーブルのどちらかを、マクロブロックタイプに対するVLCテーブルとして選択する。すなわち、VLCテーブル切替部１４１は、所定の閾値より低い量子化パラメータ（例えば、QP=22）に対応して、図１７のk=0のテーブルを選択し、所定の閾値より高い量子化パラメータ（例えば、QP=37）に対応して、k=1のテーブルを選択する。
【０３５２】
なお、この所定の閾値は、VLCテーブル切替部８１に設定されるものと同じであり、例えば、図４３以降で後述されるVLCテーブルの学習時に求められる。
【０３５３】
ステップＳ１６３において、コードナンバ割当部１４２は、量子化パラメータ復号部１３１からの量子化パラメータに応じて、コードナンバ”0”を割り当てる。すなわち、コードナンバ割当部１４２は、所定の閾値より低い量子化パラメータに対応して、インター１６×１６モードを、コードナンバ”0”に割り当てる。また、コードナンバ割当部１４２は、所定の閾値より高い量子化パラメータに対応して、スキップ（またはダイレクト）モードを、コードナンバ”0”に割り当てる。
【０３５４】
この割当情報は、VLCテーブル切替部１４１に供給され、マクロブロックタイプに対するVLCテーブル情報とともに、マクロブロックタイプ復号部１３２に供給される。
【０３５５】
ステップＳ１６４において、マクロブロックタイプ復号部１３は、VLCテーブル切替部１４１により選択されたVLCテーブルで、マクロブロックタイプを復号する。
【０３５６】
復号されたマクロブロックタイプは、図４０のステップＳ１５２において符号化された他のシンタクス要素とともに、図３９のステップＳ１３８の予測処理に用いられる。
【０３５７】
［予測処理の説明］
次に、図４２のフローチャートを参照して、図３９のステップＳ１３８の予測処理を説明する。
【０３５８】
可逆復号部１１２は、ステップＳ１７１において、図４１のステップＳ１６４において復号されたマクロブロックタイプを参照して、対象ブロックがイントラ符号化されているか否かを判定する。
【０３５９】
ステップＳ１７１において対象ブロックがイントラ符号化されていると判定された場合、可逆復号部１１２は、そのマクロブロックタイプとともに、図４０のステップＳ１５２において復号されたイントラ予測モードの情報を、イントラ予測部１２１に供給する。
【０３６０】
これに対応して、イントラ予測部１２１は、ステップＳ１７２において、マクロブロックタイプ、およびイントラ予測モードの情報を取得し、ステップＳ１７３において、イントラ予測を行う。
【０３６１】
すなわち、処理対象の画像がイントラ処理される画像である場合、必要な画像がフレームメモリ１１９から読み出され、スイッチ１２０を介してイントラ予測部１２１に供給される。ステップＳ１７３において、イントラ予測部１２１は、ステップＳ１７２で取得したマクロブロックタイプで、イントラ予測モード情報に従ってイントラ予測し、予測画像を生成する。生成した予測画像は、スイッチ１２３に出力される。
【０３６２】
一方、ステップＳ１７１において、イントラ符号化されていないと判定された場合、可逆復号部１１２は、そのマクロブロックタイプを、動き予測・補償部１２２に供給する。このとき、マクロブロックタイプが示すモードがスキップ（ダイレクト）モードでない限り、参照フレーム情報および動きベクトル情報なども、図４０のステップＳ１５２において復号されるので、動き予測・補償部１２２に供給される。
【０３６３】
ステップＳ１７５において、動き予測・補償部１２２は、通常のインター予測を行う。すなわち、処理対象の画像がインター予測処理される画像である場合、必要な画像がフレームメモリ１６９から読み出され、スイッチ１７０を介して動き予測・補償部１７３に供給される。ステップＳ１７５において動き予測・補償部１７３は、ステップＳ１７４で取得したマクロブロックタイプでのインター予測モードの動き予測をし、予測画像を生成する。生成した予測画像は、スイッチ１２３に出力される。
【０３６４】
以上のように、画像符号化装置５１および画像復号装置１０１において、量子化パラメータに応じて、マクロブロックタイプのVLCテーブルを切り替えるようにしたので、マクロブロックタイプに対する符号長を短くすることができる。したがって、平均符号長を短くすることができる。
【０３６５】
図４３は、本発明を適用した学習装置の一実施の形態の構成を表している。この学習装置２０１は、トレーニング画像信号を用いて、ハフマン符号に基づきVLCテーブルを生成するための学習装置である。
【０３６６】
なお、トレーニング画像信号とは、フィルタ係数を求めるためのテスト画像のことであり、例えば、www.vqeg.orgにおいて取得可能な画像圧縮符号化の標準化で使われる標準シーケンスを用いてもよい。あるいは、また、各アプリケーションに応じた入力画像を用いてもよい。例えば、入力がカメラ信号である場合には、CCDやCMOSセンサを用いて撮影されたベースバンド信号を用いて学習を行ってもよい。
【０３６７】
図４３の学習装置２０１は、Ａ／Ｄ変換部６１、画面並べ替えバッファ６２、演算部６３、直交変換部６４、量子化部６５、可逆符号化部６６、蓄積バッファ６７、逆量子化部６８、逆直交変換部６９、演算部７０、デブロックフィルタ７１、フレームメモリ７２、スイッチ７３、イントラ予測部７４、動き予測・補償部７５、予測画像選択部７６、およびレート制御部７７を備えている点が、図１２の画像符号化装置５１と共通している。
【０３６８】
また、学習装置２０１は、用いられる信号として、トレーニング用の画像信号が用いられる点、並びに、モードテーブル切替部７８に代えて、モードテーブル算出部２１１を備えている点が、図１２の画像符号化装置５１と異なる。
【０３６９】
すなわち、学習装置２０１においては、モードテーブル算出部２１１の制御のもと、レート制御部７７により固定された量子化パラメータ用いられて、トレーニング画像信号が符号化される。なお、学習装置２０１は、図１２の画像符号化装置５１において、マクロブロックタイプに対する符号化も、H．264/AVC方式の規格に基づいて行われる以外、基本的に同じ符号化処理を行う。
【０３７０】
可逆符号化部６６には、予測画像選択部７６による予測画像の選択に対応して、イントラ予測部７４または動き予測・補償部７５からのマクロブロックタイプの情報が供給されるので、その情報を、モードテーブル算出部２１１に供給する。
【０３７１】
モードテーブル算出部２１１は、レート制御部７７を制御し、固定の量子化パラメータで、量子化部６５のレートを制御させる。モードテーブル算出部２１１は、量子化パラメータの情報と、可逆符号化部６６からのマクロブロックタイプの情報を用いて、量子化パラメータごとに、マクロブロックタイプの出現確率を算出する。
【０３７２】
モードテーブル算出部２１１は、算出した出現確率に応じてハフマン符号により、各量子化パラメータに対応したVLCテーブルを決定する。なお、このとき、量子化パラメータに対する閾値も求められる。
【０３７３】
ここで、ハフマン符号について説明する。ハフマン符号は、予め事象の確率がわかっているとき、平均符号長が最小になるよう、事象に対するビットレートの割り当て方法として用いられる。
【０３７４】
ハフマン符号による符号構成法を説明すると、第１のステップにおいては、各情報源記号に対する葉が作られる。各々の葉には、情報源符号の発生確率が記される。以下、これを、その葉の確率と称する。
【０３７５】
第２のステップにおいては、確率の最も小さい２枚の葉に対し、１つの節点が作られ、その節点と２枚の葉が枝で結ばれる。この２本の枝の一方には０、他方には１が割り当てられる。さらに、２枚の葉の確率の和が記され、この節点が新たに葉と考えられる。すなわち、この節点から出る枝が取り除かれたと考えられる。
【０３７６】
第３のステップにおいては、葉が１枚しか残っていなければ、それで符号構成法は終了となる。そうでなければ、処理は、第２のステップに戻る。
【０３７７】
この構成法によって、すべての情報源記号に対応した葉を持つ符号の木を作ることができる。その具体例について、図４４を参照して説明する。
【０３７８】
図４４の例においては、事象Ａ，Ｂ，Ｃ，Ｄの発生確率が、それぞれ、0.6,0.25,0.1,0.05である場合のハフマン符号の構成が示されている。まず、第１のステップとして、Ａ，Ｂ，Ｃ，Ｄに対応する葉が作られる。図４４の例において、()に示されているのは、各事象の確率である。
【０３７９】
最も確率が小さい２枚の葉はＣとＤであるので、第２のステップとして、節点Ｅが作られ、ＣおよびＤが節点Ｅに繋がれる。このときＥの確率は、0.1+0.05=0.15である。
【０３８０】
次に、節点Ｅも葉と考えて、Ａ，Ｂ，Ｅに対して同様の処理を行う。すなわち、最も小さい２枚の葉は、ＢとＥであるので、これらの節点Ｆが作られ、ＢおよびＥが節点Ｆに繋がれる。このときＦの確率は、0.25+0.15=0.4である。
【０３８１】
さらに、節点Ｆも葉と考えて、残りの２枚の葉Ａ，Ｆに対して同様の処理を行う。すなわち、ＡとＦの節点Ｇが作られ、ＡおよびＦが節点Ｇに繋がれる。このときＧの確率は、0.6+0.4=1.0である。ここで、節点Ｇも葉と考えたときに、葉は１つしか残っていないので、符号の木が完成となる。
【０３８２】
そして、この符号の木から得られる符号語は、事象Ａ，Ｂ，Ｃ，Ｄのそれぞれに対して、0,10,110,111となり、平均符号長は、次の式（７３）より、1.55(ビット)となる。
0.6*1+0.25*2+0.1*3+0.05*3
・・・（７３）
【０３８３】
次に、図４５のフローチャートを参照して、図４３の学習装置２０１の学習処理を説明する。
【０３８４】
モードテーブル算出部２１１は、レート制御部７７を制御し、量子化パラメータを固定させる。これに対応して、ステップＳ２０１において、画像符号化装置２０１は、トレーニング画像信号の符号化を行う。なお、この符号化処理は、マクロブロックタイプに対する符号化もH．264/AVC方式の規格に基づいて行われること、および、固定の量子化パラメータでレート制御されること以外、図１８を参照して上述した符号化処理と基本的に同じ処理である。したがって、この符号化処理の説明は、省略される。
【０３８５】
この符号化処理により、可逆符号化部６６には、予測画像選択部７６による予測画像の選択に対応して、イントラ予測部７４または動き予測・補償部７５からのマクロブロックタイプの情報が供給される。可逆符号化部６６は、その情報を、モードテーブル算出部２１１に供給する。
【０３８６】
このステップＳ２０１の処理は、様々な各量子化パラメータに対して行われる。
【０３８７】
ステップＳ２０２において、モードテーブル算出部２１１は、量子化パラメータの情報と、可逆符号化部６６からのマクロブロックタイプの情報を用いて、量子化パラメータ毎に、マクロブロックタイプの出現確率を算出する。
【０３８８】
ステップＳ２０３において、モードテーブル算出部２１１は、算出した出現確率に応じて、図４４で上述したハフマン符号により、各量子化パラメータに対応したVLCテーブルを決定する。
【０３８９】
なお、図４３においては、画像符号化装置と一体化された学習装置２０１の例を示したが、少なくともモードテーブル算出部２１１を含むコンピュータで学習装置を構成し、図１２の画像符号化装置５１に、固定の量子化パラメータで符号化処理を行わせる。そして、学習装置において、画像符号化装置５１からオンラインまたはオフラインで取得された、符号化処理の結果得られるマクロブロックタイプの情報が用いられて、各量子化パラメータに対応したVLCテーブルが決定されるようにすることもできる。
【０３９０】
以上のようにして決定されることにより生成されたVLCテーブルが、画像符号化装置５１のVLCテーブル切替部８１や、画像復号装置１０１のVLCテーブル切替部１４１のメモリなどに記憶されて、上述した符号化に用いられる。
【０３９１】
なお、上記説明においては、予測モードに関する情報のうち、マクロブロックタイプを用いて説明してきたが、図１１で上述したマクロブロックタイプに対しての量子化パラメータと予測モード分布についての傾向は、イントラ４×４予測モードにも当てはまる。
【０３９２】
すなわち、図２１を参照して上述した９つのイントラ予測モードについて、モード0乃至8のいずれかの情報を、圧縮画像のヘッダに付加してブロック毎に伝送する際、より大きな番号のモードを送ると、モードビットがより大きくなる。
【０３９３】
このため、より低い量子化パラメータ、つまり、より高いビットレートにおいては、多少モードビットが増大しても、予測効率を高めるよう、より大きな番号のモードも選択される。これに対して、より高い量子パラメータ、つまり、より低いビットレートにおいては、モードビットを増大させないよう、より小さな番号のモードが選択されやすいという傾向がみられる。
【０３９４】
すなわち、高い量子化パラメータで符号化処理を行うと、より若いコードナンバが割り当てられているVertical,Horizontal,DCといったイントラ予測モードの出現確率が高く、それ以外の予測モードの出現確率は低くなる傾向にある。
【０３９５】
一方、低い量子化パラメータにより符号化処理を行うと、若いコードナンバに対する予測モードの出現確率は下がり、それ以外の出現確率が上昇するという傾向になる。
【０３９６】
そこで、イントラ予測モードの場合についても、より高い量子化パラメータで符号化される場合、k=0のようなVLCテーブルによる符号が用いられる。これにより、より出現頻度の高い、若いコードナンバに対するイントラ予測モードに対する符号長を短くすることが可能である。一方、より低い量子化パラメータで符号化される場合、k=1のようなVLCテーブルによる符号が用いられる。これにより、それなりの頻度で出現する、コードナンバが若くないイントラ予測モードに対する符号長を短くすることが可能である。
【０３９７】
また、イントラ予測モードの場合についても、コードナンバ”1”の割り当てを、量子化パラメータに応じて切り替えるようにしてもよい。
【０３９８】
以上のように、本発明は、マクロブロックタイプの符号化に限らず、イントラ予測モードの符号化にも適用することができる。もちろん、イントラ４×４予測モードに限らず、本発明は、イントラ８×８予測モード、イントラ１６×１６予測モード、色差信号のイントラ予測モードにも適用することができる。
【０３９９】
また、上記説明においては、H．264/AVC方式をベースに説明してきたが、本発明は、これに限らず、複数のマクロブロックタイプまたはイントラ予測モードをVLCにより符号化するあらゆる符号化装置および復号装置について適用可能である。
【０４００】
なお、本発明は、例えば、MPEG、H．26x等の様に、離散コサイン変換等の直交変換と動き補償によって圧縮された画像情報（ビットストリーム）を、衛星放送、ケーブルテレビジョン、インターネット、または携帯電話機などのネットワークメディアを介して受信する際に用いられる画像符号化装置および画像復号装置に適用することができる。また、本発明は、光、磁気ディスク、およびフラッシュメモリのような記憶メディア上で処理する際に用いられる画像符号化装置および画像復号装置に適用することができる。さらに、本発明は、それらの画像符号化装置および画像復号装置などに含まれる動き予測補償装置にも適用することができる。
【０４０１】
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な汎用のパーソナルコンピュータなどが含まれる。
【０４０２】
図４６は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０４０３】
コンピュータにおいて、CPU(Central Processing Unit)３０１、ROM(Read Only Memory)３０２、RAM(Random Access Memory)３０３は、バス３０４により相互に接続されている。
【０４０４】
バス３０４には、さらに、入出力インタフェース３０５が接続されている。入出力インタフェース３０５には、入力部３０６、出力部３０７、記憶部３０８、通信部３０９、およびドライブ３１０が接続されている。
【０４０５】
入力部３０６は、キーボード、マウス、マイクロフォンなどよりなる。出力部３０７は、ディスプレイ、スピーカなどよりなる。記憶部３０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部３０９は、ネットワークインタフェースなどよりなる。ドライブ３１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア３１１を駆動する。
【０４０６】
以上のように構成されるコンピュータでは、CPU３０１が、例えば、記憶部３０８に記憶されているプログラムを入出力インタフェース３０５及びバス３０４を介してRAM３０３にロードして実行することにより、上述した一連の処理が行われる。
【０４０７】
コンピュータ（CPU３０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア３１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル放送といった、有線または無線の伝送媒体を介して提供することができる。
【０４０８】
コンピュータでは、プログラムは、リムーバブルメディア３１１をドライブ３１０に装着することにより、入出力インタフェース３０５を介して、記憶部３０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部３０９で受信し、記憶部３０８にインストールすることができる。その他、プログラムは、ROM３０２や記憶部３０８に、あらかじめインストールしておくことができる。
【０４０９】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０４１０】
本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０４１１】
５１  画像符号化装置，  ６６  可逆符号化部，  ７４  イントラ予測部，  ７５  動き予測・補償部，  ７７レート制御部，  ７８  モードテーブル切替部，  ８１  VLCテーブル切替部，  ８２  コードナンバ割当部，１０１  画像復号装置，  １１２  可逆復号部，  １２１  イントラ予測部，  １２２  動き予測・補償部，  １２４  モードテーブル切替部，  １３１  量子化パラメータ復号部，  １３２  マクロブロックタイプ復号部，  １４１  VLCテーブル切替部，  １４２  コードナンバ割当部，  ２０１  学習装置，  ２１１  モードテーブル算出部
【図１】
2011024066.tif 000016
【図２】
2011024066.tif 000017
【図３】
2011024066.tif 000018
【図４】
2011024066.tif 000019
【図５】
2011024066.tif 000020
【図６】
2011024066.tif 000021
【図７】
2011024066.tif 000022
【図８】
2011024066.tif 000023
【図９】
2011024066.tif 000024
【図１０】
2011024066.tif 000025
【図１１】
2011024066.tif 000026
【図１２】
2011024066.tif 000027
【図１３】
2011024066.tif 000028
【図１４】
2011024066.tif 000029
【図１５】
2011024066.tif 000030
【図１６】
2011024066.tif 000031
【図１７】
2011024066.tif 000032
【図１８】
2011024066.tif 000033
【図１９】
2011024066.tif 000034
【図２０】
2011024066.tif 000035
【図２１】
2011024066.tif 000036
【図２２】
2011024066.tif 000037
【図２３】
2011024066.tif 000038
【図２４】
2011024066.tif 000039
【図２５】
2011024066.tif 000040
【図２６】
2011024066.tif 000041
【図２７】
2011024066.tif 000042
【図２８】
2011024066.tif 000043
【図２９】
2011024066.tif 000044
【図３０】
2011024066.tif 000045
【図３１】
2011024066.tif 000046
【図３２】
2011024066.tif 000047
【図３３】
2011024066.tif 000048
【図３４】
2011024066.tif 000049
【図３５】
2011024066.tif 000050
【図３６】
2011024066.tif 000051
【図３７】
2011024066.tif 000052
【図３８】
2011024066.tif 000053
【図３９】
2011024066.tif 000054
【図４０】
2011024066.tif 000055
【図４１】
2011024066.tif 000056
【図４２】
2011024066.tif 000057
【図４３】
2011024066.tif 000058
【図４４】
2011024066.tif 000059
【図４５】
2011024066.tif 000060
【図４６】
2011024066.tif 000061