(57)【要約】【課題】シンタックスエレメントメモリの容量を削減する。【解決手段】ＣＡＢＡＣデコーダ１００において、インデックス生成部１１４は、コンテキストインデックを生成する際に、シンタックスエレメントメモリ１１２に格納された参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの絶対値と、該絶対値の２倍と、該絶対値の１／２のうちのいずれかを指標値に決定する。シンタックスエレメント置換部１５０は、参照ｓｕｂｍｂのｍｖｄシンタックスエレメントをシンタックスエレメントメモリ１１２に格納する際に、該ｍｖｄシンタックスエレメントの値に関わらず、その指標値が「０」になるか否かの判定をすると共に、指標値が「０」になると判定したときに、該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを「０」に置換えてシンタックスエレメントメモリ１１２に格納する。【選択図】図６
2011109364.tif 000002
【特許請求の範囲】
【請求項１】
ＣＡＢＡＣ符号化またはＣＡＢＡＣ復号化により動きベクトルの符号化または復号化をマクロブロック毎に順次行う画像処理装置であって、
注目マクロブロックの動きベクトルの符号化または復号化時に複数のシンタックスエレメントを参照されるマクロブロックである参照ＭＢの前記複数のシンタックスエレメントであって、該参照ＭＢを分割して得たサブマクロブロックである参照ｓｕｂｍｂ毎の各種動きベクトル差分をそれぞれ表す各種ｍｖｄシンタックスエレメントを含む前記複数のシンタックスエレメントを格納するシンタックスエレメントメモリと、
前記ｍｖｄシンタックスエレメント毎に割り当てられたコンテキストを格納するコンテキストメモリと、
前記注目マクロブロックの各サブマクロブロックについて、各ｍｖｄシンタックスエレメントにそれぞれ対応するコンテキストが前記コンテキストメモリに格納されたアドレスを示すコンテキストインデックスを生成する際に、該サブマクロブロックに対応する２つの前記参照ｓｕｂｍｂの指標値をそれぞれ求め、求められた２つの前記指標値の和に基づいて前記コンテキストインデックスを生成するインデックス生成部であって、前記シンタックスエレメントメモリに格納された、前記参照ｓｕｂｍｂの該ｍｖｄシンタックスエレメントの絶対値と、前記絶対値の２倍と、前記絶対値の１／２のうちのいずれか１つを前記指標値として求める前記インデックス生成部と、
前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを前記シンタックスエレメントメモリに格納する際に、該ｍｖｄシンタックスエレメントの値に関わらず、該参照ｓｕｂｍｂの前記指標値が「０」になるか否かの判定をすると共に、前記指標値が「０」になると判定したときに、前記ｍｖｄシンタックスエレメントを「０」に置換えて前記シンタックスエレメントメモリに格納し、それ以外の場合には前記ｍｖｄシンタックスエレメントを前記シンタックスエレメントメモリに格納するシンタックスエレメント置換部とを備えることを特徴とする画像処理装置。
【請求項２】
前記インデックス生成部は、前記２つの指標値の和が第１の閾値未満であるときと、前記第１の閾値より大きい第２の閾値より大きいときと、他のときとにおいて異なる値のコンテキストインデックスをそれぞれ生成し、
前記シンタックスエレメント置換部は、さらに、式（１）が示す第３の閾値以上である前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値を、該ｍｖｄシンタックスエレメントの値より小さく、式（１）に示すＰ以上の任意の値に置換えて前記シンタックスエレメントメモリに格納することを特徴とする請求項１に記載の画像処理装置。
第３の閾値≧Ｐ＝（第２の閾値＋１）×２              （１）
【請求項３】
前記シンタックスエレメント置換部は、式（１）に示すＰを前記第３の閾値とし、Ｐ以上である前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値をＰに置換えて前記シンタックスエレメントメモリに格納することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記シンタックスエレメント置換部は、さらに、式（２）が示す第４の閾値以上である前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値を所定のルールでエンコードして前記シンタックスエレメントメモリに格納し、
前記インデックス生成部は、前記シンタックスエレメントメモリに格納された、前記第４の閾値以上である参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを前記所定のルールに基づいてデコードしてから該参照ｓｕｂｍｂの前記指標値を算出し、
前記所定のルールは、エンコード後の値がエンコード前の値以下前記第４の閾値以上であり、かつ、２で割った後の整数部分が同一である２つの値が同一の値にエンコードされ、かつ、前記整数部分が１つ大きくなるとエンコード後の値も１つ大きくなることを特徴とする請求項２または３のいずれか１項に記載の画像処理装置。
第４の閾値≧Ｑ＝第２の閾値＋２                  （２）
【請求項５】
前記インデックス生成部は、前記参照ｓｕｂｍｂの前記指標値が該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの絶対値の１／２になると判定した場合においてのみ、前記シンタックスエレメントメモリに格納された該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントに対して前記所定のルールに基づいたデコードを行うことを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記第４の閾値は、式（２）に示すＱであることを特徴とする請求項４または５に記載の画像処理装置。
【請求項７】
ＣＡＢＡＣ符号化またはＣＡＢＡＣ復号化により動きベクトルの符号化または復号化をマクロブロック毎に順次行う画像処理装置であって、
注目マクロブロックの符号化または復号化時に複数のシンタックスエレメントを参照されるマクロブロックである参照ＭＢの前記複数のシンタックスエレメントであって、該参照ＭＢを分割して得たサブマクロブロックである参照ｓｕｂｍｂ毎の各種動きベクトル差分をそれぞれ表す各種ｍｖｄシンタックスエレメントを含む前記複数のシンタックスエレメントを格納するシンタックスエレメントメモリと、
前記ｍｖｄシンタックスエレメント毎に割り当てられたコンテキストを格納するコンテキストメモリと、
前記注目マクロブロックの各サブマクロブロックについて、各ｍｖｄシンタックスエレメントにそれぞれ対応するコンテキストが前記コンテキストメモリに格納されたアドレスを示すコンテキストインデックスを生成する際に、該サブマクロブロックに対応する２つの前記参照ｓｕｂｍｂの指標値をそれぞれ求め、求められた２つの前記指標値の和に基づいて前記コンテキストインデックスを生成するインデックス生成部であって、前記２つの指標値の和が第１の閾値未満であるときと、前記第１の閾値より大きい第２の閾値より大きいときと、他のときとにおいて異なる値のコンテキストインデックスをそれぞれ生成する前記インデックス生成部と、
式（３）が示す第３の閾値以上である前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値を、該ｍｖｄシンタックスエレメントの値より小さく、式（３）に示すＰ以上の任意の値に置換えて前記シンタックスエレメントメモリに格納するシンタックスエレメント置換部とを備えることを特徴とする画像処理装置。
第３の閾値≧Ｐ＝（第２の閾値＋１）×２              （３）
【請求項８】
前記シンタックスエレメント置換部は、式（３）に示すＰを前記第３の閾値とし、Ｐ以上である前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値をＰに置換えて前記シンタックスエレメントメモリに格納することを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記シンタックスエレメント置換部は、さらに、式（４）が示す第４の閾値以上である前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値を所定のルールでエンコードして前記シンタックスエレメントメモリに格納し、
前記インデックス生成部は、前記シンタックスエレメントメモリに格納された、前記第４の閾値以上である参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを前記所定のルールに基づいてデコードしてから該参照ｓｕｂｍｂの前記指標値を算出し、
前記所定のルールは、エンコード後の値がエンコード前の値以下前記第４の閾値以上であり、かつ、２で割った後の整数部分が同一である２つの値が同一の値にエンコードされ、かつ、前記整数部分が１つ大きくなるとエンコード後の値も１つ大きくなることを特徴とする請求項７または８のいずれか１項に記載の画像処理装置。
第４の閾値≧Ｑ＝第２の閾値＋２                  （４）
【請求項１０】
前記インデックス生成部は、前記参照ｓｕｂｍｂの前記指標値が該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの絶対値の１／２になると判定した場合においてのみ、前記シンタックスエレメントメモリに格納された該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントに対して前記所定のルールに基づいたデコードを行うことを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
前記第４の閾値は、式（４）に示すＱであることを特徴とする請求項９または１０に記載の画像処理装置。
【請求項１２】
前記シンタックスエレメント置換部は、さらに、前記参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを前記シンタックスエレメントメモリに格納する際に、該ｍｖｄシンタックスエレメントの値に関わらず、該参照ｓｕｂｍｂの前記指標値が「０」になるか否かの判定をすると共に、前記指標値が「０」になると判定したときに、前記ｍｖｄシンタックスエレメントを「０」に置換えて前記シンタックスエレメントメモリに格納し、それ以外の場合には前記ｍｖｄシンタックスエレメントを前記シンタックスエレメントメモリに格納し、
前記インデックス生成部は、前記シンタックスエレメントメモリに格納された、前記参照ｓｕｂｍｂの該ｍｖｄシンタックスエレメントの絶対値と、前記絶対値の２倍と、前記絶対値の１／２のうちのいずれか１つを前記指標値として求めることを特徴とする請求項７から１１のいずれか１項に記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理、具体的にはＣＡＢＡＣ符号化または復号化技術に関する。
【背景技術】
【０００２】
国際標準のＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６４｜ＩＳＯ／ＩＥＣ  １４４９６−１０（以下略してＨ．２６４という）で規定された動画像の符号化／復号化方式は、携帯電話などの低ビットレート用途からＨＤＴＶなどの高ビットレート用途まで幅広く利用されている（非特許文献１、特許文献１、特許文献２）。Ｈ．２６４では、エントロピー符号化方式として、ＣＡＶＬＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｖａｒｉａｂｌｅ  Ｌｅｎｇｔｈ  Ｃｏｄｉｎｇ：コンテキスト適応可変長符号化）とＣＡＢＡＣ（Ｃｏｎｔｅｘｔ−ｂａｓｅｄ  Ａｄａｐｔｉｖｅ  Ｂｉｎａｒｙ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ：コンテキスト適応二値算術符号化）のいずれかが選択できるようになっている。符号化に際しては、シンタックスエレメントと呼ばれ、ビデオエンコーダにより動画像から得られた各種データに対して、ＣＡＢＡＣまたはＣＡＶＬＣで符号化してビットストリームを得る。復号化に際しては、ビットストリームに含まれる情報が示す符号化方式（ＣＡＢＡＣまたはＣＡＶＬＣ）に応じてＣＡＢＡＣデコーダまたはＣＡＶＬＣデコーダによりビットストリームからシンタックスエレメントを得てビデオデコーダに出力し、ビデオデコーダによりシンタックスエレメントから動画像を得る。
【０００３】
符号化と復号化は、互いに逆順の処理である。ここで復号時の処理を代表にして説明する。
【０００４】
図１０は、Ｈ．２６４に準拠したビットストリームデコーダ１０を示す。ビットストリームデコーダ１０は、エントロピーデコーダ２０とビデオデコーダ７０を備える。エントロピーデコーダ２０は、ＣＡＢＡＣデコーダ３０とＣＡＶＬＣデコーダ６０を有する。
【０００５】
入力されたビットストリームに対して、エントロピーデコーダ２０は、ＣＡＢＡＣデコーダ３０とＣＡＶＬＣデコーダ６０のいずれかにより復号を行って、シンタックスエレメントを得る。シンタックスエレメントは、符号化モードや、動きベクトルや、画素データなど、ビデオデコーダ７０の処理に必要なデータである。
【０００６】
ビデオデコーダ７０は、シンタックスエレメントを用いてデコードし、動画像を構成する各フレームの画像を得る。
【０００７】
Ｈ．２６４では、符号化と復号化は、フレームを格子状に分割して得たマクロブロック単位に行うように規定されており、１つのマクロブロックは、輝度画素換算するとそのサイズが１６画素×１６画素である。例えば、フルＨＤサイズ（１９２０画素×１０８０画素）のフレームは、水平１２０マクロブロック、垂直６８マクロブロックに分割されて、マクロブロック毎に順次処理される。マクロブロックの処理順序についてはｎｏｎ−ＭＢＡＦＦとＭＢＡＦＦの２つのモードが規定されている。
【０００８】
図１１は、ｎｏｎ−ＭＢＡＦＦモード時に復号化する際のマクロブロックの処理順序を示す。このモードの場合は、行毎に、上の行ほど先に処理され、同一の行においては左のマクロブロックほど先に処理される。図１１に示すように、まず、１行目の左端すなわちフレームの最左端から、水平方向に１つずつ進む順にマクロブロックが処理される。該行の最右端のマクロブロックの処理が終わったら、１つ下の行に対して、再び最左端から、水平方向に１つずつ進む順にマクロブロックが処理されていく。
【０００９】
図１２は、ＭＢＡＦＦモード時に復号する際のマクロブロックの処理順序を示す。このモードの場合には、隣接する２行毎に処理される。説明上の便宜のため、この２行を以下グループという。上のグループほど先に処理され、同一のグループ内では、上の行に位置するマクロブロックほど、かつ左に位置するマイクロほど先に処理される。図１２に示すように、まず、１行目の左端のマクロブロックが処理され、次に２行目の左端のマクロブロックが処理される。そして、１行目の２列目のマクロブロック、２行目の２列目のマクロブロック、１行目の３列目のマクロブロック、・・・の順に処理がなされる。
【００１０】
図１３は、ＣＡＢＡＣデコーダ３０を示す。ＣＡＢＡＣデコーダ３０は、算術デコーダ４０と二値デコーダ５０を有する。算術デコーダ４０は、ビットストリームを入力し、デコード対象のシンタックスエレメント毎に割り当てられたコンテキストを用いて算術符号化を行って「ｂｉｎ」と呼ばれる二値データの列を得る。二値デコーダ５０は、算術デコーダ４０からのｂｉｎ列を入力して、シンタックスエレメントを得て出力する。二値デコーダ５０により得られたシンタックスエレメントは、ビデオデコーダ７０に出力されると共に、その一部は算術デコーダ４０にフィードバックされる。この一部のシンタックスエレメントは、後にデコードされるマクロブロックの動きベクトルを求めるための各シンタックスエレメントが含まれている。
【００１１】
図１４は、算術デコーダ４０の構成を示す。算術デコーダ４０は、シンタックスエレメントメモリ４２と、インデックス生成器４４と、二値算術デコーダ４６と、コンテキストメモリ４８を有する。
【００１２】
シンタックスエレメントメモリ４２は、二値デコーダ５０からフィードバックされた、デコード済みのマクロブロックの各シンタックスエレメントを記憶する
【００１３】
コンテキストメモリ４８は、各種シンタックスエレメントに割り当てられたコンテキストを記憶する。コンテキストは、算術符号化で用いられる確率や出力ビット値などであり、二値算術デコーダ４６による復号に必要である。コンテキストメモリ４８に記憶されたコンテキストは、１つのｂｉｎを得る毎にコンテキストメモリ４８からの読出し、次のｂｉｎを得るために二値算術デコーダ４６での使用と更新、コンテキストメモリ４８への書戻しがなされる。
【００１４】
インデックス生成器４４は、シンタックスエレメントメモリ４２に記憶されたデコード済みのマクロブロックのシンタックスエレメントを用いて、コンテキストメモリ４８における、該シンタックスエレメントに対応するコンテキストのアドレスを示すコンテキストインデックス（以下単にインデックスともいう）を生成して二値算術デコーダ４６に供する。
【００１５】
二値算術デコーダ４６は、コンテキストメモリ４８から、インデックス生成器４４が生成したインデックスが示すアドレスに記憶されたコンテキストを読み出して、算術復号を行ってｂｉｎを得ると共に、復号時に更新した該コンテキストをコンテキストメモリ４８の上記アドレスに書き戻す。
【００１６】
Ｈ．２６４では、図１１に示すｎｏｎ−ＭＢＡＦＦモードで復号する際に、既にデコード済みのマクロブロックのうちの、デコード対象のマクロブロックの隣接する２つのマクロブロックのシンタックスエレメントを用いることが規定されている。例えば、図１１に示すマクロブロック「Ｃｋ」を復号する際に、マクロブロック「Ｂｋ」と「Ｃ（ｋ−１）」のシンタックスエレメントが用いられる。また、マクロブロック「Ｃ（ｋ＋１）」を復号する際に、マクロブロック「Ｂ（ｋ＋１）」と「Ｃｋ」のシンタックスエレメントが用いられる。すなわち、ｎｏｎ−ＭＢＡＦＦで復号する場合に、シンタックスエレメントメモリ４２は、１行分のマクロブロックのシンタックスエレメントを記憶する必要がある。図１１に示す例の場合には、ｗ個のマクロブロックのシンタックスエレメントがシンタックスエレメントメモリ４２に記憶されることになる。
【００１７】
以下の説明において、あるマクロブロックをデコードする際に、シンタックスエレメントを参照されるマクロブロックを「参照ＭＢ」という。また、デコードされるマクロブロックを「注目マクロブロック」という。例えば図１１に示す例において、注目マクロブロック「Ｃ（ｋ＋１）」に対して、マクロブロック「Ｂ（ｋ＋１）」と「Ｃｋ」は、参照ＭＢになる。
【００１８】
図１２に示すＭＢＡＦＦモードで復号する際に、マクロブロック「Ｃｋ」と「Ｄｋ」の復号に、マクロブロック「Ａｋ」、「Ｂｋ」、「Ｃ（ｋ−１）」、「Ｄ（ｋ−１）」のシンタックスエレメントが必要であり、マクロブロック「Ｃ（ｋ＋１）」と「Ｄ（ｋ＋１）」の復号に、マクロブロック「Ａ（ｋ＋１）」、「Ｂ（ｋ＋１）」、「Ｃｋ」、「Ｄｋ」のシンタックスエレメントが必要である。すなわち、ＭＢＡＦＦモードで復号する場合には、シンタックスエレメントメモリ４２は、２行分のマクロブロックのシンタックスエレメントを記憶する必要がある。図１２に示す例の場合には、「２×ｗ」個のマクロブロックのシンタックスエレメントがシンタックスエレメントメモリ４２に記憶されることになる。
【００１９】
シンタックスエレメントの種類は多数であり、１つのマクロブロックにつき、多数のシンタックスエレメントがある。ここでシンタックスエレメントの１種である動きベクトル差分（ｍｖｄ）に注目してみる。
【００２０】
マクロブロックの動きベクトルを導出するために該マクロブロックの動きベクトル差分ｍｖｄを求める必要がある。動きベクトル差分ｍｖｄを表すシンタックスエレメントを以下ｍｖｄシンタックスエレメントという。ｍｖｄシンタックスエレメントは、動きベクトル差分ｍｖｄの水平成分と垂直成分をそれぞれ表すｍｖｄ「ｖｅｒｔｉｃａｌ」とｍｖｄ「ｈｏｒｉｚｏｎｔａｌ」に分けられ、ｍｖｄ「ｖｅｒｔｉｃａｌ」とｍｖｄ「ｈｏｒｉｚｏｎｔａｌ」は、さらにｍｖｄ＿ｌ０とｍｖｄ＿ｌ１の２種類に分けられている。これら各種のｍｖｄシンタックスエレメントは、マクロブロックを分割して得た各サブマクロブロック毎に割り当てられる。なお、Ｈ．２６４では、１マクロブロックにつきサブマクロブロックの最大数が１６（４×４）である。以下の説明において、参照ＭＢにおける各サブマクロブロックを参照ｓｕｂｍｂという。
【００２１】
ＣＡＢＡＣデコーダ３０は、注目マクロブロックの動きベクトルをデコードするために、サブマクロブロック毎に各種ｍｖｄシンタックスエレメントを求める。図１５は、ＣＡＢＡＣデコーダ３０が注目マクロブロックの動きベクトルをデコードする際に、参照マクロブロック毎に必要なシンタックスエレメントを示す。図示のように、１参照ブロックにつき、各参照ｓｕｂｍｂのシンタックスエレメント以外に、該参照ブロックの別の４個のシンタックスエレメント（１つのｍｂ＿ｓｋｉｐ＿ｆｌａｇ、１つのｍｂ＿ｔｙｐｅ、２つのｓｕｂ＿ｍｂ＿ｔｙｐｅ）が必要である。これらのシンタックスエレメントの総ビット数は、２３９ビットである。
【００２２】
算術デコーダ４０は、ｃｏｄＩＲＡＮＧＥ（以下Ｒという）と、ｃｏｄＩＲａｎｇｅＬＰＳ（以下Ｌという）と、ｃｏｄＩＯｆｆｓｅｔの３つの変数の値の大小関係に応じてデコードを行ってｂｉｎを得る。ＲはＣＡＢＡＣデコードの開始時に初期値を与えられる変数であり、Ｌはコンテキストメモリ４８から選択されたコンテキストから規定の式で値を導かれる変数であり、ｃｏｄＩＯｆｆｓｅｔはビットストリームにより値を与えられる変数である。デコードに際して、算術デコーダ４０は、ｃｏｄＩＯｆｆｓｅｔが「Ｒ−Ｌ」以上のときには「ｂｉｎ＝！ｖａｌＭＰＳ」を出力し、ｃｏｄＩＯｆｆｓｅｔが「Ｒ−Ｌ」より小さいときに「ｂｉｎ＝ｖａｌＭＰＳ」を出力する。ｖａｌＭＰＳは、コンテキストメモリ４８から選択されたコンテキストから導かれる変数であり、０または１を表す。また、算術デコーダ４０は、コンテキストメモリ４８から選択されたコンテキストから規定の式で導き出した変数Ｌおよび変数ｖａｌＭＰＳの値を、該コンテキストの更新された値としてコンテキストメモリ４８に書き戻す。
【００２３】
図１６と図１７を参照して、算術デコーダ４０がコンテキストメモリ４８からコンテキストを選択するために用いるコンテキストインデックスを生成するインデックス生成器４４の処理を説明する。インデックス生成器４４は、ｍｖｄシンタックスエレメント毎にインデックスを求める。以下において、「ｍｖｄ＿ｌｘ」により、ｍｖｄ＿ｌ０「ｖｅｒｔｉｃａｌ」、ｍｖｄ＿ｌ１「ｖｅｒｔｉｃａｌ」、ｍｖｄ＿ｌ０「ｈｏｒｉｚｏｎｔａｌ」、ｍｖｄ＿ｌ１「ｈｏｒｉｚｏｎｔａｌ」のいずれかを表す。
【００２４】
図１６において、実線枠はマクロブロックを示し、点線枠は、各マクロブロックを４×４に分割して得たサブマクロブロック（図中ｓｕｂ＿ｍｂ）を示す。前述したように、マクロブロックＣのデコードに際して、マクロブロックＡとマクロブロックＢが参照ＭＢになる。
【００２５】
インデックス生成器４４は、マクロブロックＣに対して、サブマクロブロック毎にコンテキストインデックスを求める。１つのサブマクロブロックのコンテキストインデックスの算出には、２つの参照ｓｕｂｍｂのシンタックスエレメントが用いられる。例えば、図１６に示す例において、注目マクロブロック（マクロブロックＣ）のサブマクロブロックｃのコンテキストインデックスを求める際に、参照ＭＢであるマクロブロックＡのサブマクロブロックａと、参照ＭＢであるマクロブロックＢのサブマクロブロックｂが参照ｓｕｂｍｂになり、それらのｍｖｄシンタックスエレメントが用いられる。
【００２６】
図１７は、インデックス生成器４４がサブマクロブロックｃのｍｖｄ＿ｌｘについてコンテキストインデックスを求める際のフローチャートを示す。まず、該サブマクロブロックの２つの参照ｓｕｂｍｂのうちの一方（図中ｂｌｏｃｋ  ａ）のシンタックスエレメントを用いて指標値Ａ（図１７における「ａｂｓＭｖｄＣｏｍｐＡ」）を求める（Ｓ１０）。次に、他方の参照ｓｕｂｍｂ（図中ｂｌｏｃｋ  ｂ）のシンタックスエレメントを用いて指標値Ｂを求める（Ｓ２０）。そして、指標値Ａと指標値Ｂの和を、複数の閾値と比較することにより、サブマクロブロックｃのｍｖｄ＿ｌｘのコンテキストインデックスを決定する（Ｓ３０）。
【００２７】
ステップＳ３０において、インデックス生成器４４は、具体的には、指標値Ａと指標値Ｂの和が第１の閾値（閾値ＴＨ０）未満である場合に「ｃｔｘＩｄｘＩｎｃ＝０」、指標値Ａと指標値Ｂの和が第２の閾値（閾値ＴＨ１）より大きい場合に「ｃｔｘＩｄｘＩｎｃ＝２」、指標値Ａと指標値Ｂの和が閾値ＴＨ０以上閾値ＴＨ１以下である場合に「ｃｔｘＩｄｘＩｎｃ＝１」となるようにｃｔｘＩｄｘＩｎｃの値を決定する。なお、ｍｖｄ＿ｌｘ毎に異なるベースアドレスが付与されており、ｍｖｄ＿ｌｘのベースアドレスと、該ｍｖｄ＿ｌｘに対して求められた上記ｃｔｘＩｄｘＩｎｃとの和が、該ｍｖｄ＿ｌｘのコンテキストインデックスになる。説明上の便宜のため、以下、ｃｔｘＩｄｘＩｎｃとコンテキストインデックスとを同じ意味で用いる。
【００２８】
図１８は、図１７におけるステップＳ１０及びステップＳ２０の詳細を示す。図１８において、指標値Ｎ（ａｂｓＭｖｄＣｏｍｐＮ）は指標値Ａと指標値Ｂに対応する。図中「ｂｌｏｃｋ  ｎ」が参照ｓｕｂｍｂを示し、図中「ＭＢ  Ｎ」は、該参照ｓｕｂｍｂが属するマクロブロック（すなわち参照ＭＢ）を示す。なお、図１８は、Ｈ．２６４で定められた当該処理をフローチャートで示したものであり、ここで概要のみを説明し、詳細については規格を参照されたい。
【００２９】
図１８に示すように、まず、ステップＳ１００〜Ｓ１２６の処理が行われる。これらの処理は、複数の判定ステップを経て、参照ｓｕｂｍｂのｍｖｄ＿ｌｘの値に関わらず、ａｂｓＭｖｄＣｏｍｐＮが「０」になるか否かの判定結果を得る。判定ステップＳ１２６において、判定の結果が「Ｙｅｓ」である場合には、該参照ｓｕｂｍｂの指標値Ｎ（ａｂｓＭｖｄＣｏｍｐＮ）が「０」に決定される（Ｓ１２８）。
【００３０】
判定ステップＳ１２６において、判定の結果が「Ｎｏ」である場合には、処理がステップＳ１３０に移行する。そして、ステップＳ１３０〜Ｓ１４４の処理により、指標値Ｎは、参照ｓｕｂｍｂのｍｖｄ＿ｌｘの絶対値（Ｓ１３２、Ｓ１４４）、参照ｓｕｂｍｂのｍｖｄ＿ｌｘの絶対値の２倍（Ｓ１３８）、参照ｓｕｂｍｂのｍｖｄ＿ｌｘの絶対値の１／２（Ｓ１４２）のいずれかに決定される。
【先行技術文献】
【特許文献】
【００３１】
【特許文献１】米国特許７２８６７１０号公報
【特許文献２】米国特許７４６９０７０号公報
【非特許文献】
【００３２】
【非特許文献１】ＩＴＵ−Ｔ  Ｒｅｃ．Ｈ．２６４｜ＩＳＯ／ＩＥＣ  １４４９６−１０
【発明の概要】
【発明が解決しようとする課題】
【００３３】
前述したように、シンタックスエレメントは多種類がある。コンテキストインデックの生成のために、シンタックスエレメントメモリ４２には、ｎｏｎ−ＭＢＡＦＦモードとＭＢＡＦＦモードの場合にそれぞれ１行分または２行分のマクロブロックのシンタックスエレメントが格納される。注目ブロックの動きベクトルをデコードするために、図１５に示すように、１参照ＭＢ当たりに２３９ビット分のシンタックスエレメントが必要であるため、ｎｏｎ−ＭＢＡＦＦモード時には「２３９×ｗ」ビット（ｗ：１行のマクロブロック数）、ＭＢＡＦＦモード時には「２３９×２×ｗ」ビットのシンタックスエレメントがシンタックスエレメントメモリ４２に格納される。動画像の１フレームのサイズが１９２０画素×１０８０画素である場合には、動きベクトルのデコードのために、シンタックスエレメントメモリ４２に保存される参照ブロックのシンタックスエレメントのサイズが７１７０Ｂｙｔｅになる。これでは、必要とするシンタックスエレメントメモリ４２の容量が大きい。
【００３４】
本発明は、上記事情に鑑みてなされたものであり、参照マクロブロックのシンタックスエレメントを格納するシンタックスエレメントメモリの容量を削減することができる技術を提供する。
【課題を解決するための手段】
【００３５】
本発明の一つの態様は、ＣＡＢＡＣ符号化またはＣＡＢＡＣ復号化により動きベクトルの符号化または復号化をマクロブロック毎に順次行う画像処理装置である。この画像処理装置は、シンタックスエレメントメモリと、コンテキストメモリと、インデックス生成部と、シンタックスエレメント置換部を備える。
【００３６】
シンタックスエレメントメモリは、参照ＭＢの複数のシンタックスエレメントを格納する。参照ＭＢは、注目マクロブロックの符号化または復号時に上記複数のシンタックスエレメントを参照されるマクロブロックである。これらの複数のシンタックスエレメントは、該参照ＭＢを分割して得たサブマクロブロックである参照ｓｕｂｍｂ毎の各種動きベクトル差分をそれぞれ表す各種ｍｖｄシンタックスエレメントを含む。
【００３７】
コンテキストメモリは、ｍｖｄシンタックスエレメント毎に割り当てられたコンテキストを格納する。
【００３８】
インデックス生成部は、注目マクロブロックの各サブマクロブロックについて、各ｍｖｄシンタックスエレメントにそれぞれ対応するコンテキストがコンテキストメモリに格納されたアドレスを示すコンテキストインデックスを生成する。その際、該サブマクロブロックに対応する２つの参照ｓｕｂｍｂの指標値をそれぞれ求め、求められた２つの指標値の和に基づいてコンテキストインデックスを生成する。また、インデックス生成部は、シンタックスエレメントメモリに格納された、参照ｓｕｂｍｂの該ｍｖｄシンタックスエレメントの絶対値と、該絶対値の２倍と、該絶対値の１／２のうちのいずれか１つを該参照ｓｕｂｍｂの指標値として求める。
【００３９】
シンタックスエレメント置換部は、参照ｓｕｂｍｂのｍｖｄシンタックスエレメントをシンタックスエレメントメモリに格納する際に、該ｍｖｄシンタックスエレメントの値に関わらず、該参照ｓｕｂｍｂの上記指標値が「０」になるか否かの判定をすると共に、指標値が「０」になると判定したときに、該ｍｖｄシンタックスエレメントを「０」に置換えてシンタックスエレメントメモリに格納する。それ以外の場合には置換えをせずにｍｖｄシンタックスエレメントをシンタックスエレメントメモリに格納する。
【００４０】
本発明の別の態様も、ＣＡＢＡＣ符号化またはＣＡＢＡＣ復号化により動きベクトルの符号化または復号化をマクロブロック毎に順次行う画像処理装置である。この画像処理装置は、シンタックスエレメントメモリと、コンテキストメモリと、インデックス生成部と、シンタックスエレメント置換部を備える。
【００４１】
シンタックスエレメントメモリとコンテキストメモリは、上述した態様の画像処理装置におけるものと同様である。
【００４２】
インデックス生成部は、注目マクロブロックの各サブマクロブロックについて、各ｍｖｄシンタックスエレメントのコンテキストインデックスを生成する際に、該サブマクロブロックに対応する２つの参照ｓｕｂｍｂの指標値をそれぞれ求め、求められた２つの指標値の和に基づいてコンテキストインデックスを生成する。その際、該２つの指標値の和が第１の閾値未満であるときと、第２の閾値より大きいときと、他のときとにおいて異なる値のコンテキストインデックスをそれぞれ生成する。なお、第２の閾値は、第１の閾値より大きい値である。
【００４３】
シンタックスエレメント置換部は、式（１）が示す第３の閾値以上である参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値を、該ｍｖｄシンタックスエレメントの値より小さく、式（１）に示すＰ以上の任意の値に置換えてシンタックスエレメントメモリに格納する。
第３の閾値≧Ｐ＝（第２の閾値＋１）×２              （１）
【００４４】
なお、上記態様の装置を方法やシステムに置換えて表現したもの、コンピュータを該装置の一部として実行せしめるプログラムなども、本発明の態様としては有効である。
【発明の効果】
【００４５】
本発明にかかる技術によれば、シンタックスエレメントメモリの容量を削減できる。
【図面の簡単な説明】
【００４６】
【図１】本発明の技術にかかる第１の手法を説明するためのフローチャートである（その１）。
【図２】図１に示すフローチャートの等価フローチャートである。
【図３】本発明の技術にかかる第２の手法を説明するためのフローチャートである（その２）。
【図４】本発明の技術にかかる第１の手法によるシンタックスエレメントメモリの容量削減を説明するための図である。
【図５】本発明の技術にかかる第３の手法を説明するための図である。
【図６】本発明の実施の形態にかかるＣＡＢＡＣデコーダを示す図である。
【図７】図６に示すＣＡＢＡＣデコーダにおけるシンタックスエレメント置換部の処理を示すフローチャートである。
【図８】図６に示すＣＡＢＡＣデコーダにおけるインデックス生成部がコンテキストインデックスを生成するための指標値Ｎを求める処理を示すフローチャートである。
【図９】図６に示すＣＡＢＡＣデコーダによるシンタックスエレメントメモリの容量削減を説明するための図である。
【図１０】Ｈ．２６４に準拠したビットストリームデコーダを示す図である。
【図１１】ｎｏｎ−ＭＢＡＦＦモードを説明するための図である。
【図１２】ＭＢＡＦＦモードを説明するための図である。
【図１３】図１０に示すビットストリームデコーダにおけるＣＡＢＡＣデコーダを示す図である。
【図１４】図１３に示すＣＡＢＡＣデコーダにおける算術デコーダを示す図である。
【図１５】動きベクトルをデコードするために１参照マクロブロック当たりに必要なシンタックスエレメントを示す図である。
【図１６】ｍｖｄシンタックスエレメントのコンテキストインデックスの算出を説明するための図である（その１）。
【図１７】ｍｖｄシンタックスエレメンのコンテキストインデックスの算出を説明するための図である（その２）。
【図１８】図１７のステップＳ１０とＳ２０を詳細に示す図である。
【発明を実施するための形態】
【００４７】
以下、図面を参照して本発明の実施の形態について説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００４８】
本発明の具体的な実施の形態を説明する前に、まず、本発明にかかる技術の原理を説明する。
本願発明者は、Ｈ．２６４で規定された方式で動画像を符号化または復号化する際に、注目マクロブロックの動きベクトルの符号化または復号化時に複数のシンタックスエレメントを参照される参照マクロブロック（参照ＭＢ）の上記複数のシンタックスエレメントを格納するシンタックスエレメントメモリの容量の削減について鋭意研究模索した結果、複数の知見を得ると共に、これらの知見に基づいた手法を確立した。以下、動きベクトルの復号時を例にして、これらの知見と手法を説明する。
【００４９】
＜第１の知見＞
前述したように、注目マクロブロックのｍｖｄ＿ｌｘのコンテキストインデックスを求めるために、図１７に示すように、まず、２つの参照ｓｕｂｍｂについてそれぞれ指標値（指標値Ａと指標値Ｂ）が求められる。本願発明者は、図１８に示す、指標値Ｎ（ａｂｓＭｖｄＣｏｍｐＮ：指標値Ａまたは指標値Ｂ）を求める処理を分析した。
【００５０】
図１８に示すように、ステップＳ１００〜Ｓ１２６の処理は、参照ｓｕｂｍｂのｍｖｄ＿ｌｘの値に関わらず、指標値Ｎを「０」にするか否かを判定するための処理である。ステップＳ１２６の判定結果が「Ｙｅｓ」である場合に、指標値Ｎは「０」に決定される（Ｓ１２８）。
【００５１】
ステップＳ１００〜Ｓ１２６までの処理では、最大６つの判定ステップ（Ｓ１００、Ｓ１０２またはＳ１０４、Ｓ１２０、Ｓ１２２、Ｓ１２４、Ｓ１２６）が実行される。これらの判定ステップは、当該参照ＭＢのデコード時に、判定結果が分かり得る処理である。
【００５２】
また、ステップＳ１２６の判定結果が「Ｎｏ」である場合には、指標値Ｎは、該参照ｓｕｂｍｂのｍｖｄ＿ｌｘの絶対値（Ｓ１３２、Ｓ１４４）、該絶対値の２倍（Ｓ１３８）、該絶対値の１／２（Ｓ１４２）のいずれかに決定される。そのため、もし、参照ｓｕｂｍｂのｍｖｄ＿ｌｘが「０」であると、ステップＳ１２６の判定結果が「Ｎｏ」であっても、指標値Ｎは、「０」に決定される。
【００５３】
さらに、ステップＳ１００〜Ｓ１２６に含まれる各判定ステップに用いられるｍｖｄシンタックスエレメント（ｍｂ＿ｓｋｉｐ＿ｆｌａｇ、ｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅ）は、後に指標値Ｎを決定するための各判定スキップに用いられない。すなわち、ステップＳ１２６までの処理を、参照ＭＢのｍｖｄシンタックスエレメントをシンタックスエレメントメモリに格納する前に完了させておけば、ｍｂ＿ｓｋｉｐ＿ｆｌａｇ、ｍｂ＿ｔｙｐｅ、ｓｕｂ＿ｍｂ＿ｔｙｐｅをシンタックスエレメントメモリに格納しなくてもよい。
【００５４】
上記知見に基づき、本願発明者は、動きベクトルをデコードするための参照ＭＢのシンタックスエレメントを記憶するシンタックスエレメントメモリの容量を削減できる第１の手法を確立した。
＜第１の手法＞
該手法では、注目マクロブロックをデコードして得た各シンタックスエレメントを後段の処理（ビデオデコーダによる処理）に出力すると共に、後のマクロブロックの動きベクトルをデコードするための各シンタックスエレメントとして、各サブマクロブロックのｍｖｄシンタックスエレメントのみをシンタックスエレメントメモリに出力する。また、ｍｖｄシンタックスエレメントをシンタックスエレメントメモリに出力する際に、ｍｖｄシンタックスエレメント（ｍｖｄ＿ｌｘ）に対して、図１に示す第１のｍｖｄ置換処理を行う。
【００５５】
図１は、第１のｍｖｄ置換処理のフローチャートを示す。図１において、「ＭＢ＿Ｎ」は現在復号されたマクロブロックであり、「ｂｌｏｃｋ  ｎ」は該マクロブロックに含まれるサブマクロブロックである。該処理により、当該マクロブロックのｍｖｄシンタックスエレメントの値に関わらず、該マクロブロックの指標値Ｎが「０」になると判定されたｍｖｄシンタックスエレメントは、「０」に置換えてからシンタックスエレメントメモリに出力される。
【００５６】
従来の手法と対比するために、図１の等価フローチャートを図２に示す。図２では、点線により囲まれたステップＳ１００〜Ｓ１２６において、「ＭＢ  Ｎ」が現在復号されたマクロブロックであり、「ｂｌｏｃｋ  ｎ」が該マクロブロックに含まれるサブマクロブロックであり、該処理がｂｌｏｃｋ  ｎのｍｖｄ＿ｌｘがシンタックスエレメントメモリに格納される前に行われる点を除き、各ステップの処理は図１８における同番号の処理と同一である。なお、図２において、図１８におけるステップＳ１２０の処理が無い。この処理は、シンタックスエレメントメモリに格納された後のコンテキストインデックス導出時において、参照マクロブロック「ＭＢ  Ｎ」が既にデコードされたか否かおよびスライス領域内に存在するか否かを判定するものであり、シンタックスエレメントメモリに格納される前においては判定不可であるためである。なお、スライスは画面を複数のマクロブロックのグループに分割したＣＡＢＡＣの処理単位である。
【００５７】
ステップＳ１２６における判定結果が「Ｙｅｓ」である場合に、サブマクロブロック「ｂｌｏｃｋ  ｎ」の当該ｍｖｄ＿ｌｘは、「０」に置き換えられてシンタックスエレメントメモリに出力される（Ｓ１２６：Ｙｅｓ、Ｓ２００、Ｓ２０２）。一方、ステップＳ１２６における判定結果が「Ｎｏ」である場合には、上記ｍｖｄ＿ｌｘは、「０」への置換えがなされずにそのままシンタックスエレメントメモリに出力される（Ｓ１２６：Ｎｏ、Ｓ２０２）。
【００５８】
また、この手法では、注目マクロブロックの動きベクトルのデコード時に、ｍｖｄ＿ｌｘについてコンテキストインデックスを求める際に、図３のフローチャートが示す手順で処理を行う。なお、図３において、「ＭＢ  Ｎ」は参照ＭＢであり、「ｂｌｏｃｋ  ｎ」は参照ｓｕｂｍｂである。
【００５９】
図３に示すように、まず、ステップＳ１２０において、参照ＭＢのシンタックスエレメントが存在するか否かの判定がなされる。参照ＭＢがまだデコードされていないか、またはスライス領域外に存在するために、そのシンタックスエレメントがシンタックスエレメントメモリに格納されていない場合には、指標値Ｎが「０」に決定される（Ｓ１２０：Ｙｅｓ、Ｓ１２８）。これらは、図１８における同番号の処理と同じである。
【００６０】
ステップＳ１２０において、判定の結果が「Ｎｏ」であり、すなわち参照ＭＢのシンタックスエレメントが既にシンタックスエレメントメモリに格納されている場合、指標値Ｎは、該参照ｓｕｂｍｂのｍｖｄ＿ｌｘの絶対値と、該絶対値の２倍と、該絶対値の１／２のいずれかに決定される。これらの処理は、図１８における同番号の処理と同じである。
【００６１】
すなわち、この手法は、参照ＭＢの各参照ｓｕｂｍｂのｍｖｄシンタックスエレメント（ｍｖｄ＿ｌｘ）をシンタックスエレメントメモリに格納する際に、ｍｖｄ＿ｌｘの値に関わらず、上記指標値Ｎが「０」になるべき参照ｓｕｂｍｂのｍｖｄ＿ｌｘを「０」に置き換える。そのため、後に注目マクロブロックのデコード時に図２に示すフローチャートで該参照ｓｕｂｍｂについて指標値Ｎを求める際に、ｍｖｄ＿ｌｘの絶対値、絶対値の２倍、絶対値の１／２のいずれに決定されようにしても、指標値Ｎが「０」になるように正しく求められる。
【００６２】
こうすることにより、ｍｂ＿ｓｋｉｐ＿ｆｌａｇと、ｍｂ＿ｔｙｐｅと、ｓｕｂ＿ｍｂ＿ｔｙｐｅとをシンタックスエレメントメモリに格納する必要が無くなる。図４は、この手法を適用した場合に、注目マクロブロックの動きベクトルをデコードするためにシンタックスエレメントメモリに格納する参照ＭＢ毎のｍｖｄシンタックスエレメントを示す。図示のように、本手法の適用によって、１参照ＭＢ当たりに、必要なｍｖｄシンタックスエレメントの最大総ビット数が２２４ビットになり、図１５に示す従来必要な２３９ビットより１５ビットを削減することができる。そのため、シンタックスエレメントメモリの容量を削減することができる。
【００６３】
なお、本手法による第１のｍｖｄ置換処理の各ステップの処理のうちに、該マクロブロックのデコード時に行われるものがある。これらの処理について、マクロブロックのデコード時の処理の結果を用いるようにすれば、効率向上を図ることができる。
【００６４】
＜第２の知見＞
本願発明者は、図１７におけるステップＳ３０の処理、すなわち２つの参照ｓｕｂｍｂについてそれぞれ求めた指標値Ａと指標値Ｂを用いてコンテキストインデックスを算出する処理を分析した。図１７に示すように、指標値Ａと指標値Ｂの和が閾値ＴＨ１より大きい場合に、コンテキストインデックスが「２」に決定される。
【００６５】
すなわち、指標値Ａと指標値Ｂのいずれか一方が閾値ＴＨ１より大きければ、コンテキストインデックスが「２」に決定される。また、指標値は、参照ｓｕｂｍｂのｍｖｄ＿ｌｘの絶対値、絶対値の２倍、絶対値の１／２のいずれかに決定されるので、２つの参照ｓｕｂｍｂのうちの片方のｍｖｄ＿ｌｘが式（１）に示すＰ以上であれば、該ｍｖｄ＿ｌｘの値を、該ｍｖｄ＿ｌｘより小さく、Ｐ以上の任意の値に置換えても、コンテキストインデックスが正しく決定される。
第３の閾値≧Ｐ＝（第２の閾値＋１）×２              （１）
【００６６】
例えば、閾値ＴＨ１が「３２」であるとすると、「６６」以上の参照ｓｕｂｍｂのｍｖｄ＿ｌｘの値を「６６」に置換えた場合に、指標値がｍｖｄ＿ｌｘの絶対値の１／２（ここでは「３３」）にすべきと判定されても、コンテキストインデックスが「２」に正しく決定される。
【００６７】
そこで、この知見に基づき、本願発明者は、動きベクトルをデコードするための参照ＭＢのシンタックスエレメントを記憶するシンタックスエレメントメモリの容量を削減できる第２の手法を確立した。
＜第２の手法＞
【００６８】
この手法では、参照ｓｕｂｍｂのｍｖｄシンタックスエレメント（ｍｖｄ＿ｌｘ）をシンタックスエレメントメモリに格納する際に、式（１）が示す第３の閾値以上である参照ｓｕｂｍｂのｍｖｄ＿ｌｘの値を、該ｍｖｄ＿ｌｘの値より小さく、式（１）に示すＰ以上の任意の値に置換えてシンタックスエレメントメモリに格納する。
【００６９】
こうすることにより、第３の閾値以上のｍｖｄ＿ｌｘが小さい値に置換えられてシンタックスエレメントメモリに格納されるため、シンタックスエレメントメモリの容量を削減することができる。
なお、第３の閾値が小さいほど、ｍｖｄ＿ｌｘが置き換えられる値が小さいほど、シンタックスエレメントメモリの容量を削減する効果が大きいので、第３の閾値としてはＰを用い、Ｐ以上のｍｖｄ＿ｌｘをＰに置換えるようにすることが好ましい。
上述した第２の手法による置換処理を、以下「第２のｍｖｄ置換処理」という。
【００７０】
＜第３の知見＞
本願発明者は、参照ｓｕｂｍｂのｍｖｄシンタックスエレメントのビット数を削減する視点から研究模索した結果、さらに、第３の知見を得た。
【００７１】
シンタックスエレメントメモリがシステムバスにより接続された場合、シンタックスエレメントメモリに参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを転送する際に、ｍｖｄシンタックスエレメントのビット数を削減することにより、転送回数を減らすことができ、効率よく転送することができる。また、ビット数の削減により、ｍｖｄシンタックスエレメントのデータ量も減るため、シンタックスエレメントメモリの容量削減にも功を奏することができる。
【００７２】
前述したように、指標値Ａと指標値Ｂのいずれか一方が閾値ＴＨ１より大きければ、コンテキストインデックスが「２」に決定される。また、指標値は、参照ｓｕｂｍｂのｍｖｄ＿ｌｘの絶対値、絶対値の２倍、絶対値の１／２のいずれかに決定される。また、絶対値の１／２に決定された場合、小数切り捨てがなされ、すなわち絶対値の１／２の整数部分のみが用いられる。
【００７３】
そのため、例えば、閾値ＴＨ１が３２である場合、「３４」以上のｍｖｄシンタックスエレメントの値のうち、２で割った場合に整数部分が同一である２つの値が同じ値（例えば小さいほうのｍｖｄシンタックスエレメント）に置換えられてからシンタックスエレメントメモリに格納されるようにしても、後に該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを用いてコンテキストインデックスを求める際に、コンテキストインデックスを正しく決定することができる。
この知見に基づき、本願発明者は、第３の手法を確立した。
【００７４】
＜第３の手法＞
この手法では、参照ｓｕｂｍｂのｍｖｄ＿ｌｘをシンタックスエレメントメモリに格納する際に、式（２）が示す第４の閾値以上であるｍｖｄ＿ｌｘの値を下記のエンコードルールでエンコードしてシンタックスエレメントメモリに格納する。そして、シンタックスエレメントメモリに格納された、第４の閾値以上である参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを上記エンコードルールに基づいてデコードしてから該参照ｓｕｂｍｂの指標値を算出する。
第４の閾値≧Ｑ＝第２の閾値＋２                  （２）
【００７５】
エンコードルールは、「エンコード後の値がエンコード前の値以下第４の閾値以上であり」、かつ、「２で割った後の整数部分が同一である２つの値が同一の値にエンコードされる」、かつ、「上記整数部分が１つ大きくなるとエンコード後の値も１つ大きくなる」である。
【００７６】
第４の閾値は、Ｑ以上であればよいが、Ｑであることが好ましい。この場合、参照ｓｕｂｍｂのｍｖｄシンタックスエレメントのビット数の削減に最も効果を発揮する。
【００７７】
図５は、第４の閾値を「６０」とした場合に、上記エンコードルールに従ったエンコードテーブルとデコードテーブルの例を示す。
【００７８】
図５に示すエンコードテーブルから分かるように、「６０」より小さい値がそのまま、「６０」以上の値が、元の値以下６０以上の値にエンコードされる。また、２で割った後の整数部分が同一である２つの値、例えば「６２」と「６３」は、同一の値（６１）にエンコードされる。また、上記整数部分が「３０」である「６０」と「６１」が「６０」にエンコードされ、上記整数部分が「３１」である「６２」と「６３」が「６１」にエンコードされるように、上記整数部分が１つ大きくなるとエンコード後の値も１つ大きくなるようにエンコードがなされる。参照ｓｕｂｍｂのｍｖｄシンタックスエレメントは、このようにエンコードされてシンタックスエレメントメモリに格納される。
【００７９】
後に参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを用いて指標値を算出する際に、図５に示すデコードテーブルに従ってデコードがなされる。
【００８０】
図５の右部分は、図５の左部分に示すエンコードテーブルでエンコードされ、図５の下部に示すデコードテーブルでデコードされた後に、参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの絶対値の１／２になると判定された場合に決定される指標値Ｎを示す。図示のように、本手法により参照ｓｕｂｍｂのｍｖｄシンタックスエレメントをエンコードしてからシンタックスエレメントメモリに格納した場合にも、後に正しい指標値Ｎを得ることができる。
以下の説明において、本第３の手法によるエンコードを「第３のｍｖｄ置換処理」ともいう。
【００８１】
なお、シンタックスエレメントメモリに格納された参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを用いて指標値を算出する際に、該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値が第４の閾値以上であり、かつ指標値が該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの絶対値の１／２になると判定した場合においてのみ、該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントに対して上記エンコードルールに従ったデコードを行うことが好ましい。他の場合において、上記エンコードがなされたままのｍｖｄシンタックスエレメントを用いても正しいコンテキストインデックスを求めることができる。こうすることにより、コンテキストインデックスを算出する処理の効率を向上させることができる。
【００８２】
上述した各手法は、いずれもシンタックスエレメントメモリの容量削減に功を奏することができ、これらの手法を組み合わせることにより、シンタックスエレメントメモリの容量削減効果をより大きくすることができる。
【００８３】
以上の原理を踏まえて、本発明の具体的な実施の形態を説明する。
図６は、本発明の実施の形態にかかるＣＡＢＡＣデコーダ１００を示す。このＣＡＢＡＣデコーダ１００は、図１０に示すビットストリームデコーダ１０におけるＣＡＢＡＣデコーダ３０に対応し、Ｈ．２６４に準拠したビットストリームに対してマクロブロック毎にデコードを行って各マクロブロックのシンタックスエレメントを順次得る。
【００８４】
ＣＡＢＡＣデコーダ１００は、算術デコーダ１１０、二値デコーダ１２０、シンタックスエレメント置換部１５０を備える。
【００８５】
算術デコーダ１１０は、ビットストリームを入力し、コンテキストを用いて算術符号化を行って「ｂｉｎ」を得る。
【００８６】
二値デコーダ１２０は、算術デコーダ１１０からのｂｉｎ列を入力して、シンタックスエレメントを得て出力する。二値デコーダ１２０により得られたシンタックスエレメントは、後段の処理例えばビデオデコーダに出力されると共に、その一部はシンタックスエレメント置換部１５０に出力される。この一部のシンタックスエレメントは、後にデコードされるマクロブロックの動きベクトルを求めるための各シンタックスエレメントが含まれている。
【００８７】
シンタックスエレメント置換部１５０は、マクロブロックの動きベクトルを求めるためのシンタックスエレメントの一部に対して、別の値に変換する置換えを行ってから算術デコーダ１１０に出力する。置換えがなされないシンタックスエレメントについては、そのまま算術デコーダ１１０に出力する。
【００８８】
算術デコーダ１１０は、シンタックスエレメントメモリ１１２、インデックス生成部１１４、二値算術デコーダ１１６、コンテキストメモリ１１８を有する。
【００８９】
シンタックスエレメントメモリ１１２は、シンタックスエレメント置換部１５０からのシンタックスエレメントを記憶する。
【００９０】
コンテキストメモリ１１８は、各種シンタックスエレメントに割り当てられたコンテキストを記憶している。コンテキストメモリ１１８に記憶されたコンテキストは、１つのｂｉｎを得る毎にコンテキストメモリ１１８からの読出し、次のｂｉｎを得るために二値算術デコーダ１１６での使用と更新、コンテキストメモリ１１８への書戻しがなされる。
【００９１】
インデックス生成部１１４は、デコードされるマクロブロック（注目マクロブロック）の各サブマクロブロックについて、該サブマクロブロックの各種ｍｖｄシンタックスエレメントにそれぞれ対応するコンテキストがコンテキストメモリ１１８に記憶されたアドレスを示すコンテキストインデックスを生成して二値算術デコーダ１１６に供する。
【００９２】
二値算術デコーダ１１６は、コンテキストメモリ１１８から、シンタックスエレメントメモリ１１２が生成したインデックスが示すアドレスに記憶されたコンテキストを読み出して、算術復号を行ってｂｉｎを得ると共に、算術復号時に更新した該コンテキストをコンテキストメモリ１１８の上記アドレスに書き戻す。
【００９３】
ＣＡＢＡＣデコーダ１００は、シンタックスエレメント置換部１５０を備える点と、インデックス生成部１１４がインデックスを生成する際の動作が、通常のＣＡＢＡＣデコーダにおけるインデックスの生成器の動作と異なる点を除き、通常のＣＡＢＡＣデコーダと同じである。そのため、以下において、シンタックスエレメント置換部１５０とインデックス生成部１１４についてのみ詳細に説明する。
【００９４】
図７は、シンタックスエレメント置換部１５０による処理の流れを示すフローチャートである。図示のように、シンタックスエレメント置換部１５０は、まず、二値デコーダ１２０からのｍｖｄシンタックスエレメント（後に参照ｓｕｂｍｂとなるサブマクロブロックのｍｖｄシンタックスエレメント）に対して、第１のｍｖｄ置換処理を行う（Ｓ３００）。この処理は、図１に示すフローチャートにおけるステップＳ２００までの処理である。この処理により、該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの値に関わらず、その指標値Ｎが「０」になるべきと判定されたｍｖｄシンタックスエレメントは「０」に置換えられる。他のｍｖｄシンタックスエレメントは、置換えがなされない。
【００９５】
シンタックスエレメント置換部１５０は、ステップＳ３００において、「０」への置換えがなされた参照ｓｕｂｍｂについて、そのｍｖｄシンタックスエレメントとして「０」をシンタックスエレメントメモリ１１２に出力する（Ｓ３２０：Ｙｅｓ、Ｓ３１０）。
【００９６】
一方、ステップＳ３００において、「０」への置換えがなされなかった参照ｓｕｂｍｂのｍｖｄシンタックスエレメントに対しては、さらに第２のｍｖｄ置換処理を行う（Ｓ３０２：Ｎｏ、Ｓ３０４）。
【００９７】
ステップＳ３０４における第２のｍｖｄ置換処理は、式（１）が示す第３の閾値以上のｍｖｄシンタックスエレメントの値を、該ｍｖｄシンタックスエレメントの値より小さく、式（１）に示すＰ以上の値例えばＰに置換える処理である。ここで、第２の閾値が「３２」であり、第３の閾値がＰであるすると、このステップにおいて、６６以上のｍｖｄシンタックスエレメントは、全て「６６」に置換えられる。
第３の閾値≧Ｐ＝（第２の閾値＋１）×２              （１）
【００９８】
なお、第３の閾値ここでは６６より小さい、すなわち６５以下のｍｖｄシンタックスエレメントは、上記置換えがなされず、そのままの値である。
【００９９】
シンタックスエレメント置換部１５０は、次いで、ステップＳ３０４の第２のｍｖｄ置換処理がなされた後のｍｖｄシンタックスエレメントについて、第３のｍｖｄ置換処理を施すか否かを判定する（Ｓ３０６）。第２のｍｖｄ置換処理を経た後のｍｖｄシンタックスエレメントが式（２）に示す第４の閾値より小さければ（Ｓ３０６：Ｎｏ）、第３のｍｖｄ置換処理行わず、ｍｖｄシンタックスエレメントをシンタックスエレメントメモリ１１２に出力する（Ｓ３０６：Ｎｏ、Ｓ３１０）。
第４の閾値≧Ｑ＝第２の閾値＋２                  （２）
【０１００】
第２の閾値が「３２」であり、第４の閾値が「６０」であるとすると、「６０」より小さいすなわち「５９」以下のｍｖｄシンタックスエレメントは、第３のｍｖｄ置換処理がなされずにシンタックスエレメントメモリ１１２に出力される。
【０１０１】
一方、第４の閾値（ここでは６０）以上であるｍｖｄシンタックスエレメントに対して、シンタックスエレメント置換部１５０は、さらに第３のｍｖｄ置換処理を行う（Ｓ３０６：Ｎｏ、Ｓ３０８）。
【０１０２】
第３のｍｖｄ置換処理は、ｍｖｄシンタックスエレメントのビット数を削減する処理であり、例えば図５に示すエンコードテーブルに従って行われる。なお、本実施の形態において、第２のｍｖｄ置換処理を経てからのｍｖｄシンタックスエレメントに対して第３のｍｖｄ置換処理を行うので、エンコードテーブルにおいて、エンコード前の最大値が「６６」である。また、第４の閾値以上のｍｖｄシンタックスエレメントに対してのみエンコードするので、エンコードテーブルにおいて、エンコード前の最小値が「６０」である。
【０１０３】
シンタックスエレメント置換部１５０は、第３のｍｖｄ置換処理を行って得たｍｖｄシンタックスエレメントをシンタックスエレメントメモリ１１２に出力する（Ｓ３０８、Ｓ３１０）。
【０１０４】
インデックス生成部１１４は、注目マクロブロックのサブマクロブロックのｍｖｄシンタックスエレメントのコンテキストを生成するために、シンタックスエレメントメモリ１１２に格納された２つの参照ｓｕｂｍｂのｍｖｄシンタックスエレメントを用いてそれぞれ指標値Ｎを求める。図８は、インデックス生成部１１４が指標値Ｎを求める処理を示すフローチャートである。このフローチャートは、ステップＳ３３０〜Ｓ３３２が追加された点を除き、図２のフローチャートと同様である。
【０１０５】
インデックス生成部１１４は、参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの絶対値、該絶対値の２倍、該絶対値の１／２のいずれかを指標値Ｎに決定する。指標値Ｎが参照ｓｕｂｍｂの絶対値に決定されるべきと判定した場合に、シンタックスエレメントメモリ１１２に格納された該ｍｖｄシンタックスエレメントの絶対値を指標値Ｎに決定する（（Ｓ１３０：Ｎｏ、Ｓ１３２）（Ｓ１３０：Ｙｅｓ、Ｓ１３４：Ｎｏ、Ｓ１３２）（Ｓ１３０：Ｙｅｓ、Ｓ１３４：Ｙｅｓ、Ｓ１３６：Ｎｏ、Ｓ１４０：Ｎｏ、Ｓ１４４）。また、指標値Ｎが該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの絶対値の２倍に決定されるべきと判定した場合に、シンタックスエレメントメモリ１１２に格納された該ｍｖｄシンタックスエレメントの絶対値の２倍を指標値Ｎに決定する（Ｓ１３０：Ｙｅｓ、Ｓ１３４：Ｙｅｓ、Ｓ１３６：Ｙｅｓ、Ｓ１３８）。
【０１０６】
一方、インデックス生成部１１４は、指標値Ｎが参照ｓｕｂｍｂのｍｖｄシンタックスエレメントの１／２に決定されるべきと判定した場合には（Ｓ１３０：Ｙｅｓ、Ｓ１３４：Ｙｅｓ、Ｓ１３６：Ｎｏ、Ｓ１４０：Ｙｅｓ）、さらに、シンタックスエレメントメモリ１１２に記憶された該参照ｓｕｂｍｂのｍｖｄシンタックスエレメントが第４の閾値（ここでは６０）以上であるか否かを確認する（Ｓ３３０）。ｍｖｄシンタックスエレメントが６０以上であれば、インデックス生成部１１４は、図５に示すデコードテーブルを参照して該ｍｖｄシンタックスエレメントをデコードし、デコード後のｍｖｄシンタックスエレメントの絶対値の１／２を指標値Ｎに決定する（Ｓ３３０：Ｙｅｓ、Ｓ３３２、Ｓ１４２）。一方、ステップＳ３３０における判定の結果、ｍｖｄシンタックスエレメントが５９以下であれば、インデックス生成部１１４は、シンタックスエレメントメモリ１１２に記憶されたｍｖｄシンタックスエレメントの絶対値の１／２を指標値Ｎに決定する（Ｓ３３０：Ｎｏ、Ｓ１４２）。
【０１０７】
本実施の形態のＣＡＢＡＣデコーダ１００は、本発明の原理の説明に述べた３つの手法を組み合わせたものであり、これらの手法の効果を得ることができると共に、組み合わせたことによりさらに効果を増大させることができる。
【０１０８】
例えば、図１５に示すように、従来、ｍｖｄシンタックスエレメントは、１５ビットまたは１３ビットで表現していた。それに対して、本実施の形態のＣＡＢＡＣデコーダ１００は、第２の手法と第３の手法を組み合わせることにより、シンタックスエレメントメモリ１１２に格納するｍｖｄシンタックスエレメントの値を「６３」以下に抑制しているので、ｍｖｄシンタックスエレメントを６ビットで表すことができるようになる。また、第１の手法の適用により、後の注目マクロブロックの動きベクトルをデコードするためにシンタックスエレメントメモリ１１２に格納する参照ＭＢのシンタックスエレメントをｍｖｄシンタックスエレメントのみにし、ｍｂ＿ｓｋｉｐ＿ｆｌａｇと、ｍｂ＿ｔｙｐｅと、ｓｕｂ＿ｍｂ＿ｔｙｐｅをシンタックスエレメントメモリ１１２に格納する必要を無くした。
【０１０９】
そのため、図９に示すように、本実施の形態のＣＡＢＡＣデコーダ１００において、マクロブロックの動きベクトルをデコードするために、１参照ＭＢ当たりに、シンタックスエレメントメモリ１１２に格納するｍｖｄシンタックスエレメントの最大総ビット数は９６ビットに抑制され、従来の２３９ビットより約６０％の削減となっており、シンタックスエレメントメモリの容量を大きく削減することができる。
【０１１０】
また、システムバスを介してシンタックスエレメントメモリにｍｖｄシンタックスエレメントを転送するシステムの場合、転送回数を減らすことができ、転送効率を向上させることができる。例えば、システムバスのビット幅が１２８ビットである場合に、従来の２３９ビットを転送するために、２回転送する必要がある。ＣＡＢＡＣデコーダ１００によれば、１回の転送のみでできるため、転送効率を５０％向上させることができる。同様に、６４ビットのバス幅の場合には２転送分、３２ビットバス幅の場合には５転送分を減らすことができ、それぞれ５０％と６２．５％の効率向上を図ることができる。
【０１１１】
以上、実施の形態をもとに本発明を説明した。実施の形態は例示であり、本発明の主旨から逸脱しない限り、上述した各実施の形態に対してさまざまな変更、増減、組合せを行ってもよい。これらの変更、増減、組合せが行われた変形例も本発明の範囲にあることは当業者に理解されるところである。
【０１１２】
また、本発明の技術をＣＡＢＡＣ復号化に適用した場合の実施の形態について説明したが、本発明の技術は、ＣＡＢＡＣ符号化時にも同様に適用することができる。また、適用することにより、復号時と同様の効果を得ることができる。
【符号の説明】
【０１１３】
１０  ビットストリームデコーダ
２０  エントロピーデコーダ
３０  ＣＡＢＡＣデコーダ
４０  算術デコーダ
４２  シンタックスエレメントメモリ
４４  インデックス生成器
４６  二値算術デコーダ
４８  コンテキストメモリ
５０  二値デコーダ
６０  ＣＡＶＬＣデコーダ
７０  ビデオデコーダ
１００  ＣＡＢＡＣデコーダ
１１０  算術デコーダ
１１２  シンタックスエレメントメモリ
１１４  インデックス生成部
１１６  二値算術デコーダ
１１８  コンテキストメモリ
１２０  二値デコーダ
１５０  シンタックスエレメント置換部
【図１】
2011109364.tif 000003
【図２】
2011109364.tif 000004
【図３】
2011109364.tif 000005
【図４】
2011109364.tif 000006
【図５】
2011109364.tif 000007
【図６】
2011109364.tif 000008
【図７】
2011109364.tif 000009
【図８】
2011109364.tif 000010
【図９】
2011109364.tif 000011
【図１０】
2011109364.tif 000012
【図１１】
2011109364.tif 000013
【図１２】
2011109364.tif 000014
【図１３】
2011109364.tif 000015
【図１４】
2011109364.tif 000016
【図１５】
2011109364.tif 000017
【図１６】
2011109364.tif 000018
【図１７】
2011109364.tif 000019
【図１８】
2011109364.tif 000020