(本発明の基礎となった知見)
現在のHEVC規格の画像符号化方法は、符号化画像を予測するステップと、予測画像と符号化対象画像の差分を求めるステップと、差分画像を周波数係数に変換するステップと、周波数係数を算術符号化するステップとで構成される。算術符号化では、符号化対象ブロックの高周波成分から低周波成分の順に各係数(周波数係数)を符号化する。このとき符号化対象係数の周辺の符号化済み係数に応じてコンテキストを選択し、選択したコンテキストに対応して決められるシンボル発生確率によって符号化対象係数を算術符号化する。一般的な画像では低周波成分に近い係数ほど大きい値になるため、符号化済みの周辺係数(符号化対象係数より高周波の係数)を参照してコンテキストを決めることによってシンボル発生確率に偏りを持たせることができる。例えば、符号化済みの周辺係数(符号化対象係数より高周波の係数)で値が大きければ符号化対象係数も大きい値となる確率が大きいため、大きい値用のコンテキストを使用することによって発生符号量を抑えることができる。また、係数は複数パラメータで表現され、例えば係数絶対値が0か1以上かを示すフラグ、係数絶対値を示すフラグ、係数が正か負かを示すフラグなどによって表現される。
しかしながら、従来の方法では周辺係数の係数値ではなく、パラメータの値を参照してコンテキストを決めており、係数値を参照する方法と比較するとシンボル発生確率に偏りを持たせることができておらず、符号化効率が悪いという問題があった。
このような問題を解決するために、本発明の一態様に係る画像符号化方法は、符号化対象画像を符号化する画像符号化方法であって、符号化対象画像を複数の符号ブロックに分割するブロック分割ステップと、予測画像を生成する予測ステップと、前記符号ブロックと予測画像から差分画像を生成する差分ステップと、前記差分画像を周波数変換することにより複数の係数を生成する変換ステップと、前記複数の係数からなるセットを複数の係数サブセットに分割するサブセット分割ステップと、係数サブセット内の係数ごとに、当該係数を複数のパラメータに置き換える置き換えステップと、前記係数サブセットに含まれる係数である符号化対象係数の周辺にある係数に関する値を参照することにより、算術符号化で使用するコンテキストを選択する選択ステップと、選択されたコンテキストに対応して決められるシンボル発生確率によって、前記符号化対象係数に対応するパラメータを算術符号化する符号化ステップとを含み、前記符号化ステップでは、係数ごとに、当該係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連するパラメータである関連パラメータを算術符号化し、係数サブセットごとに、当該係数サブセット内にある複数の係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータをまとめて算術符号化する。
これにより、例えば係数の絶対値や3クリップ値などの係数に関する値を参照してコンテキストが選択されるため、シンボル発生確率に偏りを持たせることができ、符号化効率を向上することができる。さらに、コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータが、係数サブセットごとにまとめて算術符号化されるため、符号化の処理速度を高速化することができる。したがって、符号化効率の向上と処理速度の高速化とを両立することができる。
また、前記選択ステップでは、前記符号化対象係数の周辺にある係数の絶対値を参照することによって前記コンテキストを選択し、前記符号化ステップでは、係数の絶対値に関連する前記関連パラメータを算術符号化し、複数の係数のそれぞれが正か負かを示す前記複数の非関連パラメータをまとめて算術符号化してもよい。
これにより、符号化効率の向上と処理速度の高速化とを適切に両立することができる。
また、前記符号化ステップでは、選択されたコンテキストを用いた算術符号化によって前記関連パラメータを符号化し、コンテキストを用いない算術符号化であるBypass符号化によって前記複数の非関連パラメータをまとめて符号化し、前記選択ステップでは、前記符号化対象係数の周辺にある係数に対応する複数のパラメータのうち、前記Bypass符号化される全ての非関連パラメータを除く少なくとも1つのパラメータによって特定される値を参照してコンテキストを選択してもよい。
コンテキストを用いない算術符号化であるBypass符号化によって複数の非関連パラメータがまとめて符号化されるため、処理速度のさらなる高速化を図ることができる。
また、前記符号化ステップでは、前記符号化対象係数に対応する複数のパラメータのうち、前記符号化対象係数が正か負かを示す第1のパラメータと、前記符号化対象係数の絶対値に関して3種類以上の値を示すことが可能な第2のパラメータとをそれぞれ非関連パラメータとしてBypass符号化し、前記複数のパラメータのうち、前記符号化対象係数の絶対値に関して2種類の値のみを示すことが可能なパラメータを関連パラメータとして、選択されたコンテキストを用いて算術符号化してもよい。
これにより、符号化効率の向上と処理速度の高速化とを適切に両立することができる。
また、前記符号化ステップでは、さらに、前記係数サブセット内の所定の係数が正か負かに応じて、前記係数サブセット内の全ての係数の係数絶対値の総和が偶数または奇数になるように、前記係数サブセット内の係数の値を変更し、前記所定の係数が正であるか負であるかを示す非関連パラメータを除く前記複数の非関連パラメータをまとめて算術符号化してもよい。
これにより、所定の係数が正であるか負であるかを示す非関連パラメータが算術符号化されないため、符号化効率をさらに向上することができる。
また、本発明の一態様に係る画像復号化方法は、画像を符号化することによって生成された符号列を復号化する画像復号化方法であって、前記符号列は複数の係数サブセットを含み、前記複数の係数サブセットのそれぞれは、複数の周波数係数のそれぞれを係数として含み、それぞれの係数は複数のパラメータに置き換えて符号化されており、前記画像復号化方法は、係数サブセットに含まれる係数である復号化対象係数の周辺にある係数に関する値を参照することにより、算術復号化で使用するコンテキストを選択する選択ステップと、選択されたコンテキストに対応して決められるシンボル発生確率によって、前記復号化対象係数に対応するパラメータを算術復号化する復号化ステップと、算術復号化された前記パラメータを用いて、前記復号化対象係数を係数値として復元する復元ステップと、復元された複数の係数をそれぞれ含む複数の係数サブセットを結合することによって、復号ブロックを生成する結合ステップと、前記復号ブロックを逆周波数変換することにより差分画像を生成する逆変換ステップと、予測画像を生成する予測ステップと、前記差分画像と前記予測画像から復号画像を生成する復号画像生成ステップとを含み、前記復号化ステップでは、係数ごとに、当該係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連するパラメータである関連パラメータを算術復号化し、係数サブセットごとに、当該係数サブセット内にある複数の係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータをまとめて算術復号化する。
これにより、例えば係数の絶対値や3クリップ値などの係数に関する値を参照してコンテキストが選択されるため、シンボル発生確率に偏りを持たせることができ、符号化効率が向上された符号列を適切に復号化することができる。さらに、コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータが、係数サブセットごとにまとめて算術復号化されるため、復号化の処理速度を高速化することができる。したがって、符号化効率の向上と処理速度の高速化とを両立することができる。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータ読み取り可能なCD−ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムまたは記録媒体の任意な組み合わせで実現されてもよい。
以下、本発明の一態様に係る画像符号化方法により画像を符号化する動画像符号化装置(画像符号化装置)および本発明の一態様に係る画像復号化方法により画像を復号化する動画像復号化装置(画像復号化装置)等の実施の形態について図面を参照して説明する。
なお、以下で説明する実施の形態は、いずれも包括的または具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序などは、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態1)
<全体構成>
図1は、第1の実施の形態における動画像符号化装置の構成を示す。
動画像符号化装置1000は、符号ブロック分割部1100、減算部1200、変換部1300、係数符号化部1400、逆変換部1500、加算部1600、フレームメモリ1700、および予測部1800を備える。
<動作(全体)>
次に、図2を参照しつつ、符号化全体フローについて説明する。
(ステップS101)
符号ブロック分割部1100は、入力画像を符号ブロックに分割し、符号ブロックを順次、減算部1200と予測部1800に出力する。この時、符号ブロックは可変サイズとし、画像の特徴を用いて分割される。本実施の形態における符号ブロックの種類には、4x4画素、8x8画素、16x16画素、および32x32画素の4種類がある。以下、それらを4x4、8x8、16x16、32x32と称す。
(ステップS102)
予測部1800は、符号ブロックとフレームメモリ1700に格納してある復号画像とから予測ブロックを生成する。
(ステップS103)
減算部1200は、入力画像と予測ブロックとから差分ブロックを生成する。
(ステップS104)
変換部1300は、差分ブロックを周波数係数に変換する。
(ステップS105)
係数符号化部1400は、周波数係数を符号化し、符号列を出力する。
(ステップS106)
逆変換部1500は、周波数係数を画素データに変換し、差分ブロックを復元する。
(ステップS107)
加算部1600は、復元した差分ブロックと予測ブロックを加算して復号ブロックを生成し、フレームメモリ1700に格納する。
(ステップS108)
動画像符号化装置1000は、符号化対象画像内の全符号ブロックの符号化が完了するまでステップS102からステップS107を繰り返す。
以降、特徴的な係数符号化部1400について詳細に説明する。
<係数符号化部構成>
図3は、係数符号化部1400の内部構成を示す。
係数符号化部1400は、4x4係数ブロック分割部1401、level修正部1402、係数絶対値メモリ1403、significant_flag符号化部1401、greater1_flag符号化部1405、greater2_flag符号化部1406、level_minus3符号化部1407、およびsign_flag符号化部1408を備える。
本実施の形態では、係数をsignificant_flag、greater1_flag、greater2_flag、level_minus3、およびsign_flagの5つのパラメータを用いて符号化する。significant_flagは、係数が0かどうかを示すフラグであり、そのフラグの値が0の場合は、係数が0であることを示し、そのフラグの値が1の場合は、係数が0以外であることを示す。greater1_flagは、significant_flagが1の係数(0ではない係数)のみに存在し、係数絶対値が2以上かどうかを示すフラグである。greater1_flagは、本フラグの値が0の場合は、係数絶対値が1であることを示し、そのフラグの値が1の場合は、係数絶対値が2以上であることを示す。greater2_flagは、greater1_flagが1の係数(絶対値が2以上の係数)のみに存在し、係数絶対値が3以上かどうかを示すフラグである。greater2_flagは、本フラグの値が0の場合は、係数絶対値が2であることを示し、そのフラグの値が1の場合は、係数絶対値が3以上であることを示す。level_minus3は、greater2_flagが1の係数(絶対値が3以上の係数)のみに存在し、係数絶対値から3を減算した値に設定される。sign_flagは、significant_flagが1の係数(0ではない係数)のみに存在し、係数が負の値かどうかを示すフラグである。sign_flagは、本フラグの値が0の場合は、係数が正の値であることを示し、そのフラグの値が1の場合は、係数が負の値であることを示す。
<動作(係数符号化)>
次に、図4を参照しつつ、係数符号化フローについて説明する。
(ステップS201)
4x4係数ブロック分割部1401は、符号ブロックを4x4係数ブロックに分割する。符号ブロックが32x32の場合、横に8分割、縦に8分割する。符号ブロックが4x4の場合は分割を行わない。なお、以降のステップS202〜ステップS216では、4x4係数ブロック毎に処理が行なわれる。
(ステップS202)
level修正部1402は、sign_flag削減用にlevelを修正する。詳細は後述する。
(ステップS203)
level修正部1402は、係数の絶対値(level)を以降の係数の周辺参照用に係数絶対値メモリ1403に格納する。
(ステップS204)
significant_flag符号化部1404は、significant_flagの設定及び符号化を行う。詳細は後述する。
(ステップS205)
greater1_flag符号化部1405は、対象係数の絶対値が0より大きいかを判定し、0より大きい場合はステップS206を行なう。0の場合は、対象係数絶対値の符号化が完了となり、ステップS211が行なわれる。
(ステップS206)
greater1_flag符号化部1405は、greater1_flagの設定及び符号化を行う。
(ステップS207)
greater2_flag符号化部1406は、対象係数の絶対値が1より大きいかを判定し、1より大きい場合は、ステップS208を行なう。1より大きくない場合は、対象係数絶対値の符号化が完了となり、ステップS211が行なわれる。
(ステップS208)
greater2_flag符号化部1406は、greater2_flagの設定及び符号化を行う。
(ステップS209)
level_minus3符号化部1407は、対象係数の絶対値が2より大きいかを判定し、2より大きい場合は、ステップS210を行なう。2より大きくない場合は、対象係数絶対値の符号化が完了となり、ステップS211が行なわれる。
(ステップS210)
level_minus3符号化部1407は、level_minus3の設定及び符号化を行う。
(ステップS211)
係数符号化部1400は、4x4係数ブロック内の全係数の処理が完了するまでステップS204〜ステップS210を繰り返す。
(ステップS212)
sign_flag符号化部1408は、対象係数の絶対値が0かどうかを判定し、0の場合はsign_flagを符号化せず、ステップS215を行い、1以上の場合はステップS213を行なう。
(ステップS213)
sign_flag符号化部1408は、対象係数がスキャン順で4x4係数ブロック内の最終の0でない係数(非0係数)かどうかを判定し、最終非0係数の場合はsign_flagを符号化せずステップS215を行ない、最終非0係数でない場合はステップS214を行なう。
(ステップS214)
sign_flag符号化部1408は、sign_flagの設定及び符号化を行う。詳細は後述する。
(ステップS215)
sign_flag符号化部1408は、4x4係数ブロック内の全係数の処理が完了するまでステップS212〜ステップS214を繰り返す。
(ステップS216)
係数符号化部1400は、符号ブロック内の全4x4係数ブロックの符号化が完了するまでステップS202〜ステップS215を繰り返す。
符号列の例を図11に示す。係数絶対値(level)に関するパラメータは係数毎に符号化されるが、符号情報のsign_flagは4x4係数ブロック内でひとかたまりで符号化される。なお、significant_flag以外のパラメータは他のパラメータの値によって存在しない場合もあるが、図11は説明簡略化のために全てのパラメータが存在する場合を示している。
以降、level修正部1402、significant_flag符号化部1404、およびsign_flag符号化部1408について詳細に説明する。
<level修正部構成>
図5は、level修正部1402の内部構成を示す。
level修正部1402は、level減算部1422および修正要否判定部1421を備える。
<動作(level修正)>
図6を参照しつつ、level修正フローについて説明する。
(ステップS301)
修正要否判定部1421は、4x4係数ブロック内の全係数の係数絶対値の総和を計算し、その最下位bitを取得し、次のステップで使用するSignTmpに設定する。SignTmpには係数絶対値の総和が偶数の場合には0、奇数の場合には1が設定されることになる。
(ステップS302)
修正要否判定部1421は、スキャン順で4x4係数ブロック内の最終の0でない係数(非0係数)の符号情報(正の場合は0、負の場合は1となる情報)がSignTmpと同じかどうかを判定し、同じ場合はlevel減算部1422にlevelの修正をさせずに処理を終了し、異なる場合はlevel減算部1422にステップS303の処理を実行させる。
(ステップS303)
level減算部1422は、スキャン順で4x4係数ブロック内の先頭の0でない係数(非0係数)の係数から1を減算する。これにより4x4係数ブロック内の係数絶対値総和の偶数/奇数を反転させることができ、上述の最下位bitをスキャン順で最後の非0係数の符号情報と一致させることができる。level減算部1422は、修正した係数の絶対値は以降の係数の周辺参照用に係数絶対値メモリに格納する。
<significant_flag符号化部構成>
図7は、significaint_flag符号化部1404の内部構成を示す。significaint_flag符号化部1404は、significaint_flag設定部1441、算術符号化部1442、significaint_flagコンテキスト選択部1443、およびsignificaint_flagコンテキストメモリ1444を備える。
なお、greater1_flag、greater2_flagの符号化に関してはsignificant_flagとほぼ同様のため、説明を省略する。また、level_minus3の符号化はコンテキストを用いないBypass符号化によって行なわれるが、それ以外はほぼ他のパラメータと変わらないため説明を省略する。
<動作(significant_flag符号化)>
次に、図8を参照しつつ、significant_flag符号化フローについて説明する。
(ステップS401〜ステップS403)
significant_flag設定部1441は、処理対象係数が0かどうか判断し、0の場合はsignificant_flagに0を、0でない場合はsignificant_flagに1を設定する。
(ステップS404〜ステップS405)
significant_flagコンテキスト選択部1443は、処理対象係数の周辺5係数の絶対値の平均を算出する。周辺5係数は図12で示すように、処理対象係数の右2係数、下2係数、および右下係数である。周辺5係数は係数絶対値メモリ1403から取得される。次に、significant_flagコンテキスト選択部1443は、周辺5係数の絶対値の平均と5を比較し、小さい方の値をコンテキスト番号に設定する。
(ステップS406〜ステップS408)
算術符号化部1442は、コンテキスト番号に従ってsignificant_flagコンテキストメモリ1444から使用するコンテキストをロードし、算術符号化を実施し、符号列を出力する。そして算術符号化で更新したコンテキストをsignificant_flagコンテキストメモリ1444にストアする。
<sign_flag符号化部構成>
図9は、sign_flag符号化部1408の内部構成を示す。
sign_flag符号化部1408は、sign_flag設定部1481および算術符号化部1482を備える。
<動作(sign_flag符号化)>
次に、図10を参照しつつ、sign_flag符号化フローについて説明する。
(ステップS501〜ステップS503)
sign_flag設定部1481は、処理対象係数が0より大きいかどうか判断し、0より大きい場合(正数の場合)はsign_flagに0を、0より大きくない場合(負数の場合)でない場合はsign_flagに1を設定する。ちなみに、図4で示した係数符号化フローの通り、対象係数が0の場合はsign_flag符号化は実施されないため、0より大きくない場合は係数値は負数ということになる。
(ステップS504)
算術符号化部1482は、sign_flagを算術符号化し、符号列を出力する。ここでの算術符号化では、算術符号化部1482はコンテキストを用いないBypass符号化を行う。
以上、本発明の一態様に係る画像符号化方法について、本実施の形態を用いて説明したが、この画像符号化方法は以下のステップを含んでいるといえる。つまり、画像符号化方法は、符号化対象画像を符号化する画像符号化方法であって、符号化対象画像を複数の符号ブロックに分割するブロック分割ステップ(S101)と、予測画像を生成する予測ステップ(S102)と、前記符号ブロックと予測画像から差分画像を生成する差分ステップ(S103)と、前記差分画像を周波数変換することにより複数の係数を生成する変換ステップ(S104)と、前記複数の係数からなるセットを複数の係数サブセットに分割するサブセット分割ステップ(S201)と、係数サブセット内の係数ごとに、当該係数を複数のパラメータに置き換える置き換えステップ(S204,S206など、具体的にはS402,S403など)と、前記係数サブセットに含まれる係数である符号化対象係数の周辺にある係数に関する値を参照することにより、算術符号化で使用するコンテキストを選択する選択ステップ(S405)と、選択されたコンテキストに対応して決められるシンボル発生確率によって、前記符号化対象係数に対応するパラメータを算術符号化する符号化ステップ(S407など)とを含む。そして、前記符号化ステップでは、係数ごとに、当該係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連するパラメータである関連パラメータを算術符号化し(S204〜S210)、係数サブセットごとに、当該係数サブセット内にある複数の係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータをまとめて算術符号化する(S214)。
<効果>
以上、本実施の形態によれば、周辺の係数パラメータではなく、係数絶対値を参照してコンテキストを決定することによって、よりシンボル発生確率に偏りを持たせることが出来、符号化効率を向上させることができる。他係数から参照されるパラメータ、つまり係数絶対値に関するパラメータを係数毎に符号化することによってこれを実現した。より具体的に説明すると、符号列の復号のことを考慮すると、参照するデータは復号するデータよりも前に存在しなければならない。例えば、係数を復号する時に参照する周辺のパラメータは既に復号済みでなければならない。つまり、係数絶対値に関するパラメータを係数毎に符号化することにより、次に符号化する係数は直前の係数の係数絶対値を参照することが可能となる。
また、他係数から参照されないパラメータについては係数サブブロック内の最後にまとめて符号化することによって処理を高速化できる。より具体的には、同じパラメータは連続して符号化した方が処理効率が良いことが一般的に知られている。例えば、同じパラメータであれば使用するコンテキストの種類も限られているのでキャッシュメモリやレジスタにあらかじめコンテキストをロードしておき、高速にアクセスすることが可能となる。また、同じパラメータであれば符号化ロジックも同じため、パイプライン処理も組みやすい。また、本実施の形態のようにコンテキストを使わないBypass符号化のパラメータをまとめると、出力する符号列のbit数も符号化前にわかり、コンテキストの更新も不要であるため、処理を高速化可能である。どのパラメータを最後にまとめるかは前記のどのパラメータを他の係数から参照可能にして符号化効率を向上させるかという点とトレードオフの関係にある。そこで、本発明者らは、Signパラメータ(sign_flag)に関しては他係数から参照可能にしても符号化効率は向上しないということを発見したため、本実施の形態ではSignパラメータのみを最後にまとめた。
また、1係数のSignパラメータを符号化不要とすることによって、画質劣化をほとんど発生させず発生符号量を抑えることができる。より具体的には、4x4係数ブロック内において1つの係数のSignパラメータを符号化せず、符号化しなかったSignパラメータを4x4係数ブロック内の係数絶対値の総和が偶数か奇数かによって表現することにより、発生符号量を抑制している。また、Signパラメータを最後にまとめることにより、最後のSignパラメータの位置(非0係数の位置)を明確にし、最後のSignパラメータを削除することを可能にしている。もし、Signパラメータも他のパラメータと同様に係数毎に符号化した場合、どの係数が最後の非0係数かがわからず、復号化時にSignパラメータが符号化されていない係数はどれなのかがわからない。
なお、本実施の形態によれば、スキャン最後の非0係数のsign_flagを符号化していないが、必ず符号化しないというわけではなく、フラグや係数値の状況に応じて符号化する/しないを切り替えてもよい。
また、周辺の5係数を参照しているが、参照する数に制限はなく、5係数より多くてもよいし、少なくてもよい。また、対象係数から離れている位置を参照してもよい。また、周辺5係数の平均を用いているが、平均ではなく、中間値を用いてもよい。また、平均と5を比較して小さい方の値をコンテキスト番号に設定しているが、平均と比較される値は5よりも大きくても小さくても構わず、平均値そのものをコンテキスト番号に設定してもよい。
また、4x4係数ブロック内の係数絶対値を用いてSignTmpを算出しているが、係数絶対値でなく、「係数絶対値−1」や「係数絶対値−2」等、係数絶対値を修正した数値を用いてもよい。
また、4x4係数ブロック内のスキャン順で最後の非0係数のSignパラメータを符号化していないが、最後の非0係数でなくてもよく、先頭の非0係数や、中間の非0係数のSignパラメータを対象にしてもよい。
また、4x4係数ブロック内のスキャン順で最後の非0係数のSignパラメータがSignTmpと異なる場合は先頭の非0係数の係数値から1減算しているが、4x4係数ブロック内の係数絶対値総和が偶数または奇数になればそれでよく、別の方法をとってもよい。例えば、他の係数値に対して1減算もしくは1加算する方法をとってもよいし、他の係数値に対して2加算(減算)して別の係数値に対して1減算(加算)してもよい。
また、係数をsignificant_flag、greater1_flag、greater2_flag、level_minus3、およびsign_flagの5つのパラメータを用いて符号化しているが、それに限らず、例えばsignificant_flag、level_minus1、およびsign_flagの3つのパラメータで符号化してもよい。
また、level_minus3とsign_flagをBypass符号化しているが、significant_flagやgreater1_flag等もBypass符号化してもよい。
また、参照する係数については、処理対象の符号ブロックの外部の係数を参照しないようにしてもよいし、空間的だけでなく、時間的な周辺係数を参照してもよい。例えば、1ピクチャ前の対象係数と同じ位置の係数を参照してもよい。
また、符号ブロックは最大32x32、最小4x4としたが、それ以上でもそれ以下でもよい。また、符号ブロックは固定サイズでもよい。
また、符号ブロックを4x4係数ブロックに分割しているが、4x4でなくてもよく、8x8でもよいし、2x2でもよいし、4x8の長方形でもよい。また、ブロック毎でなくとも例えばスキャン順で16係数毎に分割してもよい。
更に、本実施の形態における処理は、ソフトウェアで実現してもよい。そして、このソフトウェアをダウンロード等により配布してもよい。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布してもよい。なお、このことは、本明細書における他の実施の形態においても該当する。
(実施の形態2)
<全体構成及び動作(全体)>
第2の実施の形態における動画像符号化装置の全体構成及び全体の動作は実施の形態1と同じであるため説明を省略する。
<係数符号化部構成>
図13は、本実施の形態における係数符号化部の内部構成を示す。
この係数符号化部1400aは、4x4係数ブロック分割部1401、level修正部1402、係数3クリップ値メモリ1409、significant_flag符号化部1401、greater1_flag符号化部1405、greater2_flag符号化部1406、level_minus3符号化部1407、およびsign_flag符号化部1408を備える。つまり、本実施の形態における係数符号化部1400aは、実施の形態1の係数絶対値メモリ1403の代わりに係数3クリップ値メモリ1409を備え、それ以外は実施の形態1と同じ構成要素を備える。
<動作(係数符号化)>
次に、図14を参照しつつ、係数符号化フローについて説明する。ステップS603、ステップS610〜ステップS612以外は実施の形態1と同様であるため、説明を省略する。つまり、本実施の形態におけるステップS601、S602、S604〜S608、S609およびS613〜S617は、実施の形態1におけるステップS201、S202、S204〜S208、S211、およびS212〜S216と同一である。
(ステップS603)
level修正部1402は係数絶対値と3を比較し、小さい方の値(3クリップ値)を以降の係数の周辺参照用に係数3クリップ値メモリ1409に格納する。
(ステップS610〜ステップS612)
level_minus3符号化部1407は、係数絶対値が2より大きい係数に対し、level_minus3の設定及び符号化を実施する。これを4x4係数ブロック内の全係数が完了するまで繰り返す。level_minus3の符号化はコンテキストを用いないBypass符号化によって行なわれる。
符号列の例を図17に示す。係数値を3でクリップした値に関するパラメータ(significant_flag、greater1_flag、greater2_flag)は係数毎に符号化されるが、それ以外のlevel_minus3とsign_flagは4x4係数ブロック内でひとかたまりで符号化される。なお、significant_flag以外のパラメータは他のパラメータの値によって存在しない場合もあるが、図17は説明簡略化のために全てのパラメータが存在する場合を示している。
以降、significant_flag符号化部1404について詳細に説明する。なお、level修正部1402およびsign_flag符号化部1408等その他の部分については実施の形態1と同様である。
<significant_flag符号化部構成>
図15は、significaint_flag符号化部1404の内部構成を示す。
このsignificaint_flag符号化部1404は、実施の形態1と同様に、significaint_flag設定部1441、算術符号化部1442、significaint_flagコンテキスト選択部1443、およびsignificaint_flagコンテキストメモリ1444を備える。ここで、本実施の形態におけるsignificaint_flagコンテキスト選択部1443は、実施の形態1の係数絶対値メモリ1403の代わりに係数3クリップ値メモリ1409を使用する。
<動作(significant_flag符号化)>
次に、図16を参照しつつ、significant_flag符号化フローについて説明する。ステップS704以外は実施の形態1と同様であるため、説明を省略する。つまり、ステップS701〜S703およびS705〜S708は、実施の形態1におけるステップS401〜S403およびS405〜S408と同一である。
(ステップS704)
significant_flagコンテキスト選択部1443は、処理対象係数の周辺5係数の3クリップ値の平均を算出する。周辺5係数の位置は実施の形態1と同じである。周辺5係数の3クリップ値は係数3クリップ値メモリ1409から取得される。
<効果>
以上、本実施の形態によれば、周辺の係数パラメータではなく、係数絶対値を3でクリップした値を参照してコンテキストを決定することによって、よりシンボル発生確率に偏りを持たせることが出来、符号化効率を向上させることができる。他係数から参照されるパラメータ、つまり係数絶対値を3でクリップした値に関するパラメータを係数毎に符号化することによってこれを実現した。
また、参照に係数値ではなく、係数絶対値を3でクリップした値を用いることにより、参照メモリの容量を削減できる。現在のHEVC規格では係数値は16bitデータであり、係数値を参照することにすると1係数あたり16bit必要である。しかし、参照に係数絶対値を3でクリップした値を用いることにより1係数あたり2bitでよくなり、参照メモリの容量を約88%削減可能である。
また、他係数から参照されないパラメータについては係数サブブロック内の最後にまとめて符号化することによって処理を高速化できる。より具体的には、同じパラメータは連続して符号化した方が処理効率が良いことが一般的に知られている。例えば、同じパラメータであれば使用するコンテキストの種類も限られているのでキャッシュメモリやレジスタにあらかじめコンテキストをロードしておき、高速にアクセスすることが可能となる。また、同じパラメータであれば符号化ロジックも同じため、パイプライン処理も組みやすい。
また、本実施の形態のようにコンテキストを使わないBypass符号化のパラメータをまとめると、出力する符号列のbit数も符号化前にわかり、コンテキストの更新も不要であるため、処理を高速化可能である。どのパラメータを最後にまとめるかは前記のどのパラメータを他の係数から参照可能にして符号化効率を向上させるかという点とトレードオフの関係にある。そこで、本発明者らは、Signパラメータ(sign_flag)に関しては他係数から参照可能にしても符号化効率は向上しないということを発見したため、そのパラメータを最後にまとめた。また、本発明者らは、以下の事象1〜3を考慮することによって、level_minus3も最後にまとめた。つまり、第1の事象は、level_minus3の符号化はBypass符号化であるために、そのパラメータをまとめると処理高速化の効果が大きくなるという事象である。また、第2の事象は、そのパラメータを参照可能にすると参照メモリの容量が大きくなってしまう事象である。また、第3の事象は、本発明者らによって発見された事象であって、そのパラメータを参照可能にしてもそれほど符号化効率は向上しないという事象である。
また、1係数のSignパラメータを符号化不要とすることによって、画質劣化をほとんど発生させず発生符号量を抑えることができる。より具体的には、4x4係数ブロック内において1つの係数のSignパラメータを符号化せず、符号化しなかったSignパラメータを4x4係数ブロック内の係数絶対値の総和が偶数か奇数かによって表現することにより、発生符号量を抑制している。また、Signパラメータを最後にまとめることにより、最後のSignパラメータの位置(非0係数の位置)を明確にし、最後のSignパラメータを削除することを可能にしている。もし、Signパラメータも他のパラメータと同様に係数毎に符号化した場合、どの係数が最後の非0係数かがわからず、復号化時にSignパラメータが符号化されていない係数はどれなのかがわからない。
なお、本実施の形態によれば、係数絶対値を3でクリップした値を他係数から参照しているが、係数絶対値が4以上であることを示すgreater3_flagを新たに設け、4でクリップした値を他係数から参照可能にしてもよい。
また、greater2_flagもlevel_minus3と同様に4x4係数ブロック内でまとめ、他係数からは2でクリップした値を参照可能にしてもよい。
また、スキャン最後の非0係数のsign_flagを符号化していないが、必ず符号化しないというわけではなく、フラグや係数値の状況に応じて符号化する/しないを切り替えてもよい。
また、周辺の5係数を参照しているが、参照する数に制限はなく、5係数より多くてもよいし、少なくてもよい。また、対象係数から離れている位置を参照してもよい。また、周辺5係数の平均を用いているが、平均ではなく、中間値を用いてもよい。また、平均と5を比較して小さい方の値をコンテキスト番号に設定しているが、平均と比較される値は5よりも大きくても小さくても構わず、平均値そのものをコンテキスト番号に設定してもよい。
また、4x4係数ブロック内の係数絶対値を用いてSignTmpを算出しているが、係数絶対値でなく、「係数絶対値−1」や「係数絶対値−2」等、係数絶対値を修正した数値を用いてもよい。
また、4x4係数ブロック内のスキャン順で最後の非0係数のSignパラメータを符号化していないが、最後の非0係数でなくてもよく、先頭の非0係数や、中間の非0係数のSignパラメータを対象にしてもよい。
また、4x4係数ブロック内のスキャン順で最後の非0係数のSignパラメータがSignTmpと異なる場合は先頭の非0係数の係数値から1減算しているが、4x4係数ブロック内の係数絶対値総和が偶数または奇数になればそれでよく、別の方法をとってもよい。例えば、他の係数値に対して1減算もしくは1加算する方法をとってもよいし、他の係数値に対して2加算(減算)して別の係数値に対して1減算(加算)してもよい。
また、係数をsignificant_flag、greater1_flag、greater2_flag、level_minus3、およびsign_flagの5つのパラメータを用いて符号化しているが、それに限らず、例えばsignificant_flag、level_minus1、およびsign_flagの3つのパラメータで符号化してもよい。
また、level_minus3とsign_flagをBypass符号化しているが、significant_flagやgreater1_flag等もBypass符号化してもよい。
また、参照する係数については、処理対象の符号ブロックの外部の係数を参照しないようにしてもよいし、空間的だけでなく、時間的な周辺係数を参照してもよい。例えば、1ピクチャ前の対象係数と同じ位置の係数を参照してもよい。
また、符号ブロックは最大32x32、最小4x4としたが、それ以上でもそれ以下でもよい。また、符号ブロックは固定サイズでもよい。
また、符号ブロックを4x4係数ブロックに分割しているが、4x4でなくてもよく、8x8でもよいし、2x2でもよいし、4x8の長方形でもよい。また、ブロック毎でなくとも例えばスキャン順で16係数毎に分割してもよい。
(実施の形態3)
<全体構成>
図18は、第3の実施の形態における動画像復号化装置の構成を示す。
動画像復号化装置2000は、係数復号化部2100、逆変換部2200、加算部2300、復号ブロック結合部2400およびフレームメモリ2500を備える。
<動作(全体)>
次に、図19を参照しつつ、復号化全体フローについて説明する。
(ステップS801)
係数復号化部2100は、符号列から周波数係数を復号し、周波数係数を逆変換部2200へ出力する。
(ステップS802)
逆変換部2200は、周波数係数を画素データに変換し、差分ブロックを生成する。
(ステップS803)
加算部2300は、フレームメモリ2500に格納してある復号画像と差分ブロックを加算して復号ブロックを生成する。
(ステップS804)
動画像復号化装置2000は、復号化対象画像内の全復号ブロックの復号化が完了するまでステップS801〜ステップS803を繰り返す。
(ステップS805)
復号ブロック結合部2400は、全復号ブロックを結合することによって復号画像を生成すると共にフレームメモリ2500にその復号画像を格納する。
<係数復号化部構成>
図20は、係数復号化部2100の内部構成を示す。本実施の形態では実施の形態1と同様に係数を、significant_flag、greater1_flag、greater2_flag、level_minus3、およびsign_flagに分けて表現する。
係数復号化部2100は、係数絶対値メモリ2110、significant_flag復号化部2120、greater1_flag復号化部2130、greater2_flag復号化部2140、level_minus3復号化部2150、sign_flag復号化部2160、復元部2170および4x4係数ブロック結合部2180を備える。
<動作(係数復号化)>
次に、図21を参照しつつ、係数復号化フローについて説明する。
(ステップS901)
significant_flag復号化部2120は、significant_flagを復号化する。詳細は後述する。
(ステップS902)
greater1_flag復号化部2130は、significant_flagが1かどうかを判定し、1の場合はステップS903を行なう。0の場合は、対象係数絶対値の復号化が完了となり、ステップS908が行なわれる。
(ステップS903)
greater1_flag復号化部2130は、greater1_flagを復号化する。
(ステップS904)
greater2_flag復号化部2140は、greater1_flagが1かどうかを判定し、1の場合はステップS905を行なう。0の場合は、対象係数絶対値の復号化が完了となり、ステップS908が行なわれる。
(ステップS905)
greater2_flag復号化部2140は、greater2_flagを復号化する。
(ステップS906)
level_minus3復号化部2150は、greater2_flagが1かどうかを判定し、1の場合はステップS907を行なう。0の場合は、対象係数絶対値の復号化が完了となり、ステップS908が行なわれる。
(ステップS907)
level_minus3復号化部2150は、level_minus3を復号化する。なお、level_minus3はコンテキストを用いないBypass復号化を用いて復号化される。
(ステップS908)
復元部2170は、復号化されたsignificant_flag等を用いて係数絶対値を復元し、以降の係数の周辺参照用に係数絶対値メモリ2110に格納する。
(ステップS909)
係数復号化部2100は、4x4係数ブロック内の全係数の処理が完了するまでステップS901〜ステップS908を繰り返す。
(ステップS910)
sign_flag復号化部2160は、対象係数のsignificant_flagが1かどうかを判定し、1の場合はステップS911を行なう。0の場合は、対象係数は0であり、sign_flagを持っていないので、復号化は完了となり、ステップS915が行なわれる。
(ステップS911)
sign_flag復号化部2160は、対象係数がスキャン順で4x4係数ブロック内の最終の0でない係数(非0係数)かどうかを判定し、最終非0係数の場合はステップS912を行ない、そうでない場合はステップS913を行なう。
(ステップS912)
sign_flag符号化部2160は、4x4係数ブロック内の全係数の係数絶対値の総和を計算し、総和が偶数ならsign_flagに0を、奇数ならsign_flagに1を設定する。
(ステップS913)
sign_flag復号化部2160は、sign_flagを復号化する。なお、sign_flagはコンテキストを用いないBypass復号化を用いて復号化される。
(ステップS914)
復元部2170は、復号したsignificant_flagやsign_flag等を用いて係数値を復元する。
(ステップS915)
sign_flag復号化部2160および復元部2170は、4x4係数ブロック内の全係数の処理が完了するまでステップS910〜ステップS914を繰り返す。
(ステップS916)
係数復号化部2100は、復号ブロック内の全4x4係数ブロックの復号化が完了するまでステップS901〜ステップS915を繰り返す。
(ステップS917)
4x4係数ブロック結合部2100は、復号ブロック内の全4x4係数ブロックを結合し、復号ブロックの全係数を出力する。
以降、significant_flag復号化部2120について詳細に説明する。
<significant_flag復号化部構成>
図22は、significant_flag復号化部2120の内部構成を示す。なお、greater1_flag、およびgreater2_flagの復号化に関してはsignificant_flagとほぼ同様のため、説明を省略する。また、level_minus3、およびsign_flagの復号化はコンテキストを用いないBypass復号化で復号化されるが、それ以外はほぼ他のパラメータと変わらないため説明を省略する。
significant_flag復号化部2120は、significant_flagコンテキスト選択部2122、算術復号化部2121、およびsignificant_flagコンテキストメモリ2123を備える。
<動作(significant_flag復号化)>
図23を参照しつつ、significant_flag復号化フローについて説明する。
(ステップS1001〜ステップS1002)
significant_flagコンテキスト選択部2122は、処理対象係数の周辺5係数の絶対値の平均を算出する。周辺5係数の位置は実施の形態1と同じである。周辺5係数は係数絶対値メモリ2110から取得される。次に、significant_flagコンテキスト選択部2122は、周辺5係数の絶対値の平均と5を比較し、小さい方の値をコンテキスト番号に設定する。
(ステップS1003〜ステップS1005)
算術復号化部2121は、コンテキスト番号に従ってsignificant_flagコンテキストメモリ2123から使用するコンテキストをロードし、算術復号化を実施し、significant_flagを出力する。そして算術復号化部2121は、算術復号化で更新したコンテキストをsignificant_flagコンテキストメモリ2123にストアする。
以上、本発明の一態様に係る画像復号化方法について、本実施の形態を用いて説明したが、この画像復号化方法は以下のステップを含んでいるといえる。この画像復号化方法は、画像を符号化することによって生成された符号列を復号化する画像復号化方法であって、前記符号列は複数の係数サブセットを含み、前記複数の係数サブセットのそれぞれは、複数の周波数係数のそれぞれを係数として含み、それぞれの係数は複数のパラメータに置き換えて符号化されており、前記画像復号化方法は、係数サブセットに含まれる係数である復号化対象係数の周辺にある係数に関する値を参照することにより、算術復号化で使用するコンテキストを選択する選択ステップ(S1001)と、選択されたコンテキストに対応して決められるシンボル発生確率によって、前記復号化対象係数に対応するパラメータを算術復号化する復号化ステップ(S1004)と、算術復号化された前記パラメータを用いて、前記復号化対象係数を係数値として復元する復元ステップ(S914)と、復元された複数の係数をそれぞれ含む複数の係数サブセットを結合することによって、復号ブロックを生成する結合ステップ(S917)と、前記復号ブロックを逆周波数変換することにより差分画像を生成する逆変換ステップ(S802)と、予測画像を生成する予測ステップ(S803)と、前記差分画像と前記予測画像から復号画像を生成する復号画像生成ステップ(S803)とを含む。また、前記復号化ステップでは、係数ごとに、当該係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連するパラメータである関連パラメータを算術復号化し(S901〜S907)、係数サブセットごとに、当該係数サブセット内にある複数の係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータをまとめて算術復号化する(S913)。
<効果>
以上、本実施の形態によれば、周辺の係数パラメータではなく、係数絶対値を参照してコンテキストを決定することによって、よりシンボル発生確率に偏りを持たせることが出来、それによって符号化効率を向上させた符号列を復号することができる。他係数から参照されるパラメータ、つまり係数絶対値に関するパラメータを係数毎に復号化することによってこれを実現した。より具体的に説明すると、参照するデータは復号するデータよりも前に存在しなければならない。例えば、係数を復号する時に参照する周辺のパラメータは既に復号済みでなければならない。つまり、係数絶対値に関するパラメータを係数毎に復号化することにより、次に復号化する係数は直前の係数の係数絶対値を参照することが可能となる。
また、他係数から参照されないパラメータについては係数サブブロック内の最後にまとめて復号化することによって処理を高速化できる。より具体的には、同じパラメータは連続して復号化した方が処理効率が良いことが一般的に知られている。例えば、同じパラメータであれば使用するコンテキストの種類も限られているのでキャッシュメモリやレジスタにあらかじめコンテキストをロードしておき、高速にアクセスすることが可能となる。また、同じパラメータであれば復号化ロジックも同じため、パイプライン処理も組みやすい。また、本実施の形態のようにコンテキストを使わないBypass復号化のパラメータをまとめると、入力する符号列のbit数も復号化前にわかり、コンテキストの更新も不要であるため、処理を高速化可能である。どのパラメータを最後にまとめるかは前記のどのパラメータを他の係数から参照可能にして符号化効率を向上させるかという点とトレードオフの関係にある。そこで、本発明者らは、Signパラメータ(sign_flag)に関しては他係数から参照可能にしても符号化効率は向上しないということを発見したため、本実施の形態ではSignパラメータのみを最後にまとめた。
また、1係数のSignパラメータを復号化不要とすることによって、画質劣化をほとんど発生させず符号列の符号量を抑えることができる。より具体的には、4x4係数ブロック内において1つの係数のSignパラメータを復号化せず、復号化しなかったSignパラメータを4x4係数ブロック内の係数絶対値の総和が偶数か奇数かによって決定することにより、発生符号量を抑制している。また、Signパラメータを最後にまとめることにより、最後のSignパラメータの位置(非0係数の位置)を明確にし、最後のSignパラメータを削除することを可能にしている。もし、Signパラメータも他のパラメータと同様に係数毎に復号化した場合、どの係数が最後の非0係数かがわからず、Signパラメータが符号化されていない係数はどれなのかがわからない。
なお、本実施の形態によれば、スキャン最後の非0係数のsign_flagを復号化していないが、必ず復号化しないというわけではなく、フラグや係数値の状況に応じて復号化する/しないを切り替えてもよい。
また、周辺の5係数を参照しているが、参照する数に制限はなく、5係数より多くてもよいし、少なくてもよい。また、対象係数から離れている位置を参照してもよい。また、周辺5係数の平均を用いているが、平均ではなく、中間値を用いてもよい。また、平均と5を比較して小さい方の値をコンテキスト番号に設定しているが、平均と比較される値は5よりも大きくても小さくても構わず、平均値そのものをコンテキスト番号に設定してもよい。
また、4x4係数ブロック内の係数絶対値の総和を用いて1係数のsign_flagを決定しているが、係数絶対値でなく、「係数絶対値−1」や「係数絶対値−2」等、係数絶対値を修正した数値を用いてもよい。
また、4x4係数ブロック内のスキャン順で最後の非0係数のSignパラメータを復号化していないが、最後の非0係数でなくてもよく、先頭の非0係数や、中間の非0係数のSignパラメータを対象にしてもよい。
また、係数をsignificant_flag、greater1_flag、greater2_flag、level_minus3、およびsign_flagの5つのパラメータを用いて表現しているが、それに限らず、例えばsignificant_flag、level_minus1、およびsign_flagの3つのパラメータで表現してもよい。
また、level_minus3とsign_flagをBypass復号化しているが、significant_flagやgreater1_flag等もBypass復号化してもよい。
また、参照する係数については、処理対象の復号ブロックの外部の係数を参照しないようにしてもよいし、空間的だけでなく、時間的な周辺係数を参照してもよい。例えば、1ピクチャ前の対象係数と同じ位置の係数を参照してもよい。
また、復号ブロックは最大32x32、最小4x4としたが、それ以上でもそれ以下でもよい。また、復号ブロックは固定サイズでもよい。
また、復号ブロックを4x4係数ブロックに分割しているが、4x4でなくてもよく、8x8でもよいし、2x2でもよいし、4x8の長方形でもよい。また、ブロック毎でなくとも例えばスキャン順で16係数毎に分割してもよい。
(実施の形態4)
<全体構成及び動作(全体)>
第4の実施の形態における動画像復号化装置の全体構成及び全体の動作は実施の形態3と同じであるため説明を省略する。
<係数符号化部構成>
図24は、本実施の形態における係数復号化部の内部構成を示す。
この係数復号化部2100aは、係数3クリップ値メモリ2111、significant_flag復号化部2120、greater1_flag復号化部2130、greater2_flag復号化部2140、level_minus3復号化部2150、sign_flag復号化部2160、復元部2170および4x4係数ブロック結合部2180を備える。つまり、本実施の形態における係数復号化部2100aは、実施の形態3の係数絶対値メモリ2110の代わりに係数3クリップ値メモリ2111を備え、それ以外は実施の形態3と同じ構成要素を備える。
<動作(係数符号化)>
次に、図25を参照しつつ、係数復号化フローについて説明する。ステップS1106、ステップS1108〜ステップS1110以外は実施の形態3と同様であるため、説明を省略する。つまり、本実施の形態におけるステップS1101〜S1105、S1107、およびS1111〜S1118は、実施の形態3におけるステップS901〜S905、S909、およびS910〜S917と同一である。
(ステップS1106)
復元部2170は、復号したsignificant_flag、greater1_flag、およびgreater2_flagを用いて係数絶対値を3でクリップした値を取得する。パラメータ値と3でクリップした値との関係を図28に示す。なお、係数絶対値を3でクリップした値を3クリップ値という。そして、復元部2170は、3クリップ値を以降の係数の周辺参照用に係数3クリップ値メモリ2111に格納する。
(ステップS1108〜ステップS1110)
level_minus3復号化部2150は、greater2_flagが1の係数に対し、level_minus3の復号化を実施する。これを4x4係数ブロック内の全係数が完了するまで繰り返す。level_minus3の復号化はコンテキストを用いないBypass復号化によって行なわれる。
以降、significant_flag復号化部2120について詳細に説明する。
<significant_flag復号化部構成>
図26は、significaint_flag復号化部2120の内部構成を示す。
このsignificant_flag復号化部2120は、実施の形態3と同様に、significant_flagコンテキスト選択部2122、算術復号化部2121、およびsignificant_flagコンテキストメモリ2123を備える。ここで、本実施の形態におけるsignificant_flagコンテキスト選択部2122は、実施の形態3の係数絶対値メモリ2110の代わりに係数3クリップ値メモリ2111を使用する。
<動作(significant_flag復号化)>
次に、図27を参照しつつ、significant_flag復号化フローについて説明する。ステップS1201以外は実施の形態3と同様であるため、説明を省略する。つまり、ステップS1202〜S1205は、実施の形態3におけるステップS1002〜S1005と同一である。
(ステップS1201)
significant_flagコンテキスト選択部2122は、処理対象係数の周辺5係数の3クリップ値の平均を算出する。周辺5係数の位置は実施の形態3と同じである。周辺5係数の3クリップ値は係数3クリップ値メモリ2111から取得される。
<効果>
以上、本実施の形態によれば、周辺の係数パラメータではなく、係数絶対値を3でクリップした値を参照してコンテキストを決定することによって、よりシンボル発生確率に偏りを持たせることが出来、それによって符号化効率を向上させた符号列を復号することができる。他係数から参照されるパラメータ、つまり係数絶対値を3でクリップした値に関するパラメータを係数毎に符号化することによってこれを実現した。
また、参照に係数値ではなく、係数絶対値を3でクリップした値を用いることにより、参照メモリの容量を削減できる。現在のHEVC規格では係数値は16bitデータであり、係数値を参照することにすると1係数あたり16bit必要である。しかし、参照に係数絶対値を3でクリップした値を用いることにより1係数あたり2bitでよくなり、参照メモリの容量を約88%削減可能である。
また、他係数から参照されないパラメータについては係数サブブロック内の最後にまとめて復号化することによって処理を高速化できる。より具体的には、同じパラメータは連続して復号化した方が処理効率が良いことが一般的に知られている。例えば、同じパラメータであれば使用するコンテキストの種類も限られているのでキャッシュメモリやレジスタにあらかじめコンテキストをロードしておき、高速にアクセスすることが可能となる。また、同じパラメータであれば復号化ロジックも同じため、パイプライン処理も組みやすい。
また、本実施の形態のようにコンテキストを使わないBypass復号化のパラメータをまとめると、入力する符号列のbit数も復号化前にわかり、コンテキストの更新も不要であるため、処理を高速化可能である。どのパラメータを最後にまとめるかは前記のどのパラメータを他の係数から参照可能にして符号化効率を向上させるかという点とトレードオフの関係にある。そこで、本発明者らは、Signパラメータ(sign_flag)に関しては他係数から参照可能にしても符号化効率は向上しないということを発見したため、そのパラメータを最後にまとめた。また、本発明者らは、以下の事象1〜3の事象を考慮することによって、level_minus3も最後にまとめた。つまり、第1の事象は、level_minus3の符号化はBypass符号化であるために、そのパラメータをまとめると処理高速化の効果が大きくなるとう事象である。また、第2の事象は、そのパラメータを参照可能にすると参照メモリの容量が大きくなってしまうという事象である。また、第3の事象は、本発明者らによって発見された事象であって、そのパラメータを参照可能にしてもそれほど符号化効率は向上しないという事象である。
また、1係数のSignパラメータを復号化不要とすることによって、画質劣化をほとんど発生させず符号列の符号量を抑えることができる。より具体的には、4x4係数ブロック内において1つの係数のSignパラメータを復号化せず、復号化しなかったSignパラメータを4x4係数ブロック内の係数絶対値の総和が偶数か奇数かによって決定することにより、発生符号量を抑制している。また、Signパラメータを最後にまとめることにより、最後のSignパラメータの位置(非0係数の位置)を明確にし、最後のSignパラメータを削除することを可能にしている。もし、Signパラメータも他のパラメータと同様に係数毎に復号化した場合、どの係数が最後の非0係数かがわからず、Signパラメータが符号化されていない係数はどれなのかがわからない。
なお、本実施の形態によれば、係数絶対値を3でクリップした値を他係数から参照しているが、係数絶対値が4以上であることを示すgreater3_flagを新たに設け、4でクリップした値を他係数から参照可能にしてもよい。
また、greater2_flagもlevel_minus3と同様に4x4係数ブロック内でまとめ、他係数からは2でクリップした値を参照可能にしてもよい。
また、スキャン最後の非0係数のsign_flagを復号化していないが、必ず復号化しないというわけではなく、フラグや係数値の状況に応じて復号化する/しないを切り替えてもよい。
また、周辺の5係数を参照しているが、参照する数に制限はなく、5係数より多くてもよいし、少なくてもよい。また、対象係数から離れている位置を参照してもよい。また、周辺5係数の平均を用いているが、平均ではなく、中間値を用いてもよい。また、平均と5を比較して小さい方の値をコンテキスト番号に設定しているが、平均と比較される値は5よりも大きくても小さくても構わず、平均値そのものをコンテキスト番号に設定してもよい。
また、4x4係数ブロック内の係数絶対値の総和を用いて1係数のsign_flagを決定しているが、係数絶対値でなく、「係数絶対値−1」や「係数絶対値−2」等、係数絶対値を修正した数値を用いてもよい。
また、4x4係数ブロック内のスキャン順で最後の非0係数のSignパラメータを復号化していないが、最後の非0係数でなくてもよく、先頭の非0係数や、中間の非0係数のSignパラメータを対象にしてもよい。
また、係数をsignificant_flag、greater1_flag、greater2_flag、level_minus3、およびsign_flagの5つのパラメータを用いて表現しているが、それに限らず、例えばsignificant_flag、level_minus1、およびsign_flagの3つのパラメータで表現してもよい。
また、level_minus3とsign_flagをBypass復号化しているが、significant_flagやgreater1_flag等もBypass復号化してもよい。
また、参照する係数については、処理対象の復号ブロックの外部の係数を参照しないようにしてもよいし、空間的だけでなく、時間的な周辺係数を参照してもよい。例えば、1ピクチャ前の対象係数と同じ位置の係数を参照してもよい。
また、復号ブロックは最大32x32、最小4x4としたが、それ以上でもそれ以下でもよい。また、復号ブロックは固定サイズでもよい。
また、復号ブロックを4x4係数ブロックに分割しているが、4x4でなくてもよく、8x8でもよいし、2x2でもよいし、4x8の長方形でもよい。また、ブロックでなくとも例えばスキャン順で16係数毎に分割してもよい。
以上の各実施の形態において、機能ブロックの各々は、通常、MPU(Micro-Processing Unit)やメモリ等によって実現可能である。また、機能ブロックの各々による処理は、通常、ソフトウェア(プログラム)によって実現することができ、当該ソフトウェアはROM等の記録媒体に記録されている。そして、このようなソフトウェアをダウンロード等により配布してもよいし、CD−ROMなどの記録媒体に記録して配布してもよい。なお、各機能ブロックをハードウェア(専用回路)によって実現することも、当然、可能である。
また、各実施の形態において説明した処理は、単一の装置(システム)を用いて集中処理することによって実現してもよく、あるいは、複数の装置を用いて分散処理することによって実現してもよい。また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
なお、上記各実施の形態において、各構成要素は、専用のハードウェアで構成されるか、各構成要素に適したソフトウェアプログラムを実行することによって実現されてもよい。各構成要素は、CPUまたはプロセッサなどのプログラム実行部が、ハードディスクまたは半導体メモリなどの記録媒体に記録されたソフトウェアプログラムを読み出して実行することによって実現されてもよい。ここで、上記各実施の形態の画像符号化方法などを実現するソフトウェアは、次のようなプログラムである。
すなわち、このプログラムは、コンピュータに以下の画像符号化方法を実行させる。この画像符号化方法は、符号化対象画像を符号化する画像符号化方法であって、符号化対象画像を複数の符号ブロックに分割するブロック分割ステップと、予測画像を生成する予測ステップと、前記符号ブロックと予測画像から差分画像を生成する差分ステップと、前記差分画像を周波数変換することにより複数の係数を生成する変換ステップと、前記複数の係数からなるセットを複数の係数サブセットに分割するサブセット分割ステップと、係数サブセット内の係数ごとに、当該係数を複数のパラメータに置き換える置き換えステップと、前記係数サブセットに含まれる係数である符号化対象係数の周辺にある係数に関する値を参照することにより、算術符号化で使用するコンテキストを選択する選択ステップと、選択されたコンテキストに対応して決められるシンボル発生確率によって、前記符号化対象係数に対応するパラメータを算術符号化する符号化ステップとを含み、前記符号化ステップでは、係数ごとに、当該係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連するパラメータである関連パラメータを算術符号化し、係数サブセットごとに、当該係数サブセット内にある複数の係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータをまとめて算術符号化する。また、このプログラムは、コンピュータに以下の画像復号化方法を実行させる。この画像復号化方法は、画像を符号化することによって生成された符号列を復号化する画像復号化方法であって、前記符号列は複数の係数サブセットを含み、前記複数の係数サブセットのそれぞれは、複数の周波数係数のそれぞれを係数として含み、それぞれの係数は複数のパラメータに置き換えて符号化されており、前記画像復号化方法は、係数サブセットに含まれる係数である復号化対象係数の周辺にある係数に関する値を参照することにより、算術復号化で使用するコンテキストを選択する選択ステップと、選択されたコンテキストに対応して決められるシンボル発生確率によって、前記復号化対象係数に対応するパラメータを算術復号化する復号化ステップと、算術復号化された前記パラメータを用いて、前記復号化対象係数を係数値として復元する復元ステップと、復元された複数の係数をそれぞれ含む複数の係数サブセットを結合することによって、復号ブロックを生成する結合ステップと、前記復号ブロックを逆周波数変換することにより差分画像を生成する逆変換ステップと、予測画像を生成する予測ステップと、前記差分画像と前記予測画像から復号画像を生成する復号画像生成ステップとを含み、前記復号化ステップでは、係数ごとに、当該係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連するパラメータである関連パラメータを算術復号化し、係数サブセットごとに、当該係数サブセット内にある複数の係数に対応する複数のパラメータのうち、前記コンテキストの選択のために参照される値に関連しない複数のパラメータである複数の非関連パラメータをまとめて算術復号化する。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。つまり、以上のように、複数の態様に係る画像符号化方法および画像復号化方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の趣旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、複数の態様の範囲内に含まれてもよい。
(実施の形態5)
上記各実施の形態で示した動画像符号化方法(画像符号化方法)または動画像復号化方法(画像復号方法)の構成を実現するためのプログラムを記憶メディアに記録することにより、上記各実施の形態で示した処理を独立したコンピュータシステムにおいて簡単に実施することが可能となる。記憶メディアは、磁気ディスク、光ディスク、光磁気ディスク、ICカード、半導体メモリ等、プログラムを記録できるものであればよい。
さらにここで、上記各実施の形態で示した動画像符号化方法(画像符号化方法)や動画像復号化方法(画像復号方法)の応用例とそれを用いたシステムを説明する。当該システムは、画像符号化方法を用いた画像符号化装置、及び画像復号方法を用いた画像復号装置からなる画像符号化復号装置を有することを特徴とする。システムにおける他の構成について、場合に応じて適切に変更することができる。
図29は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示す図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex106、ex107、ex108、ex109、ex110が設置されている。
このコンテンツ供給システムex100は、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex106からex110を介して、コンピュータex111、PDA(Personal Digital Assistant)ex112、カメラex113、携帯電話ex114、ゲーム機ex115などの各機器が接続される。
しかし、コンテンツ供給システムex100は図29のような構成に限定されず、いずれかの要素を組合せて接続するようにしてもよい。また、固定無線局である基地局ex106からex110を介さずに、各機器が電話網ex104に直接接続されてもよい。また、各機器が近距離無線等を介して直接相互に接続されていてもよい。
カメラex113はデジタルビデオカメラ等の動画撮影が可能な機器であり、カメラex116はデジタルカメラ等の静止画撮影、動画撮影が可能な機器である。また、携帯電話ex114は、GSM(登録商標)(Global System for Mobile Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband-Code Division Multiple Access)方式、若しくはLTE(Long Term Evolution)方式、HSPA(High Speed Packet Access)の携帯電話機、またはPHS(Personal Handyphone System)等であり、いずれでも構わない。
コンテンツ供給システムex100では、カメラex113等が基地局ex109、電話網ex104を通じてストリーミングサーバex103に接続されることで、ライブ配信等が可能になる。ライブ配信では、ユーザがカメラex113を用いて撮影するコンテンツ(例えば、音楽ライブの映像等)に対して上記各実施の形態で説明したように符号化処理を行い(即ち、本発明の一態様に係る画像符号化装置として機能する)、ストリーミングサーバex103に送信する。一方、ストリーミングサーバex103は要求のあったクライアントに対して送信されたコンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114、ゲーム機ex115等がある。配信されたデータを受信した各機器では、受信したデータを復号化処理して再生する(即ち、本発明の一態様に係る画像復号装置として機能する)。
なお、撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするストリーミングサーバex103で行ってもよいし、互いに分担して行ってもよい。同様に配信されたデータの復号化処理はクライアントで行っても、ストリーミングサーバex103で行ってもよいし、互いに分担して行ってもよい。また、カメラex113に限らず、カメラex116で撮影した静止画像および/または動画像データを、コンピュータex111を介してストリーミングサーバex103に送信してもよい。この場合の符号化処理はカメラex116、コンピュータex111、ストリーミングサーバex103のいずれで行ってもよいし、互いに分担して行ってもよい。
また、これら符号化・復号化処理は、一般的にコンピュータex111や各機器が有するLSIex500において処理する。LSIex500は、ワンチップであっても複数チップからなる構成であってもよい。なお、動画像符号化・復号化用のソフトウェアをコンピュータex111等で読み取り可能な何らかの記録メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込み、そのソフトウェアを用いて符号化・復号化処理を行ってもよい。さらに、携帯電話ex114がカメラ付きである場合には、そのカメラで取得した動画データを送信してもよい。このときの動画データは携帯電話ex114が有するLSIex500で符号化処理されたデータである。
また、ストリーミングサーバex103は複数のサーバや複数のコンピュータであって、データを分散して処理したり記録したり配信するものであってもよい。
以上のようにして、コンテンツ供給システムex100では、符号化されたデータをクライアントが受信して再生することができる。このようにコンテンツ供給システムex100では、ユーザが送信した情報をリアルタイムでクライアントが受信して復号化し、再生することができ、特別な権利や設備を有さないユーザでも個人放送を実現できる。
なお、コンテンツ供給システムex100の例に限らず、図30に示すように、デジタル放送用システムex200にも、上記各実施の形態の少なくとも動画像符号化装置(画像符号化装置)または動画像復号化装置(画像復号装置)のいずれかを組み込むことができる。具体的には、放送局ex201では映像データに音楽データなどが多重化された多重化データが電波を介して通信または衛星ex202に伝送される。この映像データは上記各実施の形態で説明した動画像符号化方法により符号化されたデータである(即ち、本発明の一態様に係る画像符号化装置によって符号化されたデータである)。これを受けた放送衛星ex202は、放送用の電波を発信し、この電波を衛星放送の受信が可能な家庭のアンテナex204が受信する。受信した多重化データを、テレビ(受信機)ex300またはセットトップボックス(STB)ex217等の装置が復号化して再生する(即ち、本発明の一態様に係る画像復号装置として機能する)。
また、DVD、BD等の記録メディアex215に記録した多重化データを読み取り復号化する、または記録メディアex215に映像信号を符号化し、さらに場合によっては音楽信号と多重化して書き込むリーダ/レコーダex218にも上記各実施の形態で示した動画像復号化装置または動画像符号化装置を実装することが可能である。この場合、再生された映像信号はモニタex219に表示され、多重化データが記録された記録メディアex215により他の装置やシステムにおいて映像信号を再生することができる。また、ケーブルテレビ用のケーブルex203または衛星/地上波放送のアンテナex204に接続されたセットトップボックスex217内に動画像復号化装置を実装し、これをテレビのモニタex219で表示してもよい。このときセットトップボックスではなく、テレビ内に動画像復号化装置を組み込んでもよい。
図31は、上記各実施の形態で説明した動画像復号化方法および動画像符号化方法を用いたテレビ(受信機)ex300を示す図である。テレビex300は、上記放送を受信するアンテナex204またはケーブルex203等を介して映像データに音声データが多重化された多重化データを取得、または出力するチューナex301と、受信した多重化データを復調する、または外部に送信する多重化データに変調する変調/復調部ex302と、復調した多重化データを映像データと、音声データとに分離する、または信号処理部ex306で符号化された映像データ、音声データを多重化する多重/分離部ex303を備える。
また、テレビex300は、音声データ、映像データそれぞれを復号化する、またはそれぞれの情報を符号化する音声信号処理部ex304、映像信号処理部ex305(本発明の一態様に係る画像符号化装置または画像復号装置として機能する)を有する信号処理部ex306と、復号化した音声信号を出力するスピーカex307、復号化した映像信号を表示するディスプレイ等の表示部ex308を有する出力部ex309とを有する。さらに、テレビex300は、ユーザ操作の入力を受け付ける操作入力部ex312等を有するインタフェース部ex317を有する。さらに、テレビex300は、各部を統括的に制御する制御部ex310、各部に電力を供給する電源回路部ex311を有する。インタフェース部ex317は、操作入力部ex312以外に、リーダ/レコーダex218等の外部機器と接続されるブリッジex313、SDカード等の記録メディアex216を装着可能とするためのスロット部ex314、ハードディスク等の外部記録メディアと接続するためのドライバex315、電話網と接続するモデムex316等を有していてもよい。なお記録メディアex216は、格納する不揮発性/揮発性の半導体メモリ素子により電気的に情報の記録を可能としたものである。テレビex300の各部は同期バスを介して互いに接続されている。
まず、テレビex300がアンテナex204等により外部から取得した多重化データを復号化し、再生する構成について説明する。テレビex300は、リモートコントローラex220等からのユーザ操作を受け、CPU等を有する制御部ex310の制御に基づいて、変調/復調部ex302で復調した多重化データを多重/分離部ex303で分離する。さらにテレビex300は、分離した音声データを音声信号処理部ex304で復号化し、分離した映像データを映像信号処理部ex305で上記各実施の形態で説明した復号化方法を用いて復号化する。復号化した音声信号、映像信号は、それぞれ出力部ex309から外部に向けて出力される。出力する際には、音声信号と映像信号が同期して再生するよう、バッファex318、ex319等に一旦これらの信号を蓄積するとよい。また、テレビex300は、放送等からではなく、磁気/光ディスク、SDカード等の記録メディアex215、ex216から多重化データを読み出してもよい。次に、テレビex300が音声信号や映像信号を符号化し、外部に送信または記録メディア等に書き込む構成について説明する。テレビex300は、リモートコントローラex220等からのユーザ操作を受け、制御部ex310の制御に基づいて、音声信号処理部ex304で音声信号を符号化し、映像信号処理部ex305で映像信号を上記各実施の形態で説明した符号化方法を用いて符号化する。符号化した音声信号、映像信号は多重/分離部ex303で多重化され外部に出力される。多重化する際には、音声信号と映像信号が同期するように、バッファex320、ex321等に一旦これらの信号を蓄積するとよい。なお、バッファex318、ex319、ex320、ex321は図示しているように複数備えていてもよいし、1つ以上のバッファを共有する構成であってもよい。さらに、図示している以外に、例えば変調/復調部ex302や多重/分離部ex303の間等でもシステムのオーバフロー、アンダーフローを避ける緩衝材としてバッファにデータを蓄積することとしてもよい。
また、テレビex300は、放送等や記録メディア等から音声データ、映像データを取得する以外に、マイクやカメラのAV入力を受け付ける構成を備え、それらから取得したデータに対して符号化処理を行ってもよい。なお、ここではテレビex300は上記の符号化処理、多重化、および外部出力ができる構成として説明したが、これらの処理を行うことはできず、上記受信、復号化処理、外部出力のみが可能な構成であってもよい。
また、リーダ/レコーダex218で記録メディアから多重化データを読み出す、または書き込む場合には、上記復号化処理または符号化処理はテレビex300、リーダ/レコーダex218のいずれで行ってもよいし、テレビex300とリーダ/レコーダex218が互いに分担して行ってもよい。
一例として、光ディスクからデータの読み込みまたは書き込みをする場合の情報再生/記録部ex400の構成を図32に示す。情報再生/記録部ex400は、以下に説明する要素ex401、ex402、ex403、ex404、ex405、ex406、ex407を備える。光ヘッドex401は、光ディスクである記録メディアex215の記録面にレーザスポットを照射して情報を書き込み、記録メディアex215の記録面からの反射光を検出して情報を読み込む。変調記録部ex402は、光ヘッドex401に内蔵された半導体レーザを電気的に駆動し記録データに応じてレーザ光の変調を行う。再生復調部ex403は、光ヘッドex401に内蔵されたフォトディテクタにより記録面からの反射光を電気的に検出した再生信号を増幅し、記録メディアex215に記録された信号成分を分離して復調し、必要な情報を再生する。バッファex404は、記録メディアex215に記録するための情報および記録メディアex215から再生した情報を一時的に保持する。ディスクモータex405は記録メディアex215を回転させる。サーボ制御部ex406は、ディスクモータex405の回転駆動を制御しながら光ヘッドex401を所定の情報トラックに移動させ、レーザスポットの追従処理を行う。システム制御部ex407は、情報再生/記録部ex400全体の制御を行う。上記の読み出しや書き込みの処理はシステム制御部ex407が、バッファex404に保持された各種情報を利用し、また必要に応じて新たな情報の生成・追加を行うと共に、変調記録部ex402、再生復調部ex403、サーボ制御部ex406を協調動作させながら、光ヘッドex401を通して、情報の記録再生を行うことにより実現される。システム制御部ex407は例えばマイクロプロセッサで構成され、読み出し書き込みのプログラムを実行することでそれらの処理を実行する。
以上では、光ヘッドex401はレーザスポットを照射するとして説明したが、近接場光を用いてより高密度な記録を行う構成であってもよい。
図33に光ディスクである記録メディアex215の模式図を示す。記録メディアex215の記録面には案内溝(グルーブ)がスパイラル状に形成され、情報トラックex230には、予めグルーブの形状の変化によってディスク上の絶対位置を示す番地情報が記録されている。この番地情報はデータを記録する単位である記録ブロックex231の位置を特定するための情報を含み、記録や再生を行う装置において情報トラックex230を再生し番地情報を読み取ることで記録ブロックを特定することができる。また、記録メディアex215は、データ記録領域ex233、内周領域ex232、外周領域ex234を含んでいる。ユーザデータを記録するために用いる領域がデータ記録領域ex233であり、データ記録領域ex233より内周または外周に配置されている内周領域ex232と外周領域ex234は、ユーザデータの記録以外の特定用途に用いられる。情報再生/記録部ex400は、このような記録メディアex215のデータ記録領域ex233に対して、符号化された音声データ、映像データまたはそれらのデータを多重化した多重化データの読み書きを行う。
以上では、1層のDVD、BD等の光ディスクを例に挙げ説明したが、これらに限ったものではなく、多層構造であって表面以外にも記録可能な光ディスクであってもよい。また、ディスクの同じ場所にさまざまな異なる波長の色の光を用いて情報を記録したり、さまざまな角度から異なる情報の層を記録したりなど、多次元的な記録/再生を行う構造の光ディスクであってもよい。
また、デジタル放送用システムex200において、アンテナex205を有する車ex210で衛星ex202等からデータを受信し、車ex210が有するカーナビゲーションex211等の表示装置に動画を再生することも可能である。なお、カーナビゲーションex211の構成は例えば図31に示す構成のうち、GPS受信部を加えた構成が考えられ、同様なことがコンピュータex111や携帯電話ex114等でも考えられる。
図34Aは、上記実施の形態で説明した動画像復号化方法および動画像符号化方法を用いた携帯電話ex114を示す図である。携帯電話ex114は、基地局ex110との間で電波を送受信するためのアンテナex350、映像、静止画を撮ることが可能なカメラ部ex365、カメラ部ex365で撮像した映像、アンテナex350で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ex358を備える。携帯電話ex114は、さらに、操作キー部ex366を有する本体部、音声を出力するためのスピーカ等である音声出力部ex357、音声を入力するためのマイク等である音声入力部ex356、撮影した映像、静止画、録音した音声、または受信した映像、静止画、メール等の符号化されたデータもしくは復号化されたデータを保存するメモリ部ex367、又は同様にデータを保存する記録メディアとのインタフェース部であるスロット部ex364を備える。
さらに、携帯電話ex114の構成例について、図34Bを用いて説明する。携帯電話ex114は、表示部ex358及び操作キー部ex366を備えた本体部の各部を統括的に制御する主制御部ex360に対して、電源回路部ex361、操作入力制御部ex362、映像信号処理部ex355、カメラインタフェース部ex363、LCD(Liquid Crystal Display)制御部ex359、変調/復調部ex352、多重/分離部ex353、音声信号処理部ex354、スロット部ex364、メモリ部ex367がバスex370を介して互いに接続されている。
電源回路部ex361は、ユーザの操作により終話及び電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することにより携帯電話ex114を動作可能な状態に起動する。
携帯電話ex114は、CPU、ROM、RAM等を有する主制御部ex360の制御に基づいて、音声通話モード時に音声入力部ex356で収音した音声信号を音声信号処理部ex354でデジタル音声信号に変換し、これを変調/復調部ex352でスペクトラム拡散処理し、送信/受信部ex351でデジタルアナログ変換処理および周波数変換処理を施した後にアンテナex350を介して送信する。また携帯電話ex114は、音声通話モード時にアンテナex350を介して受信した受信データを増幅して周波数変換処理およびアナログデジタル変換処理を施し、変調/復調部ex352でスペクトラム逆拡散処理し、音声信号処理部ex354でアナログ音声信号に変換した後、これを音声出力部ex357から出力する。
さらにデータ通信モード時に電子メールを送信する場合、本体部の操作キー部ex366等の操作によって入力された電子メールのテキストデータは操作入力制御部ex362を介して主制御部ex360に送出される。主制御部ex360は、テキストデータを変調/復調部ex352でスペクトラム拡散処理をし、送信/受信部ex351でデジタルアナログ変換処理および周波数変換処理を施した後にアンテナex350を介して基地局ex110へ送信する。電子メールを受信する場合は、受信したデータに対してこのほぼ逆の処理が行われ、表示部ex358に出力される。
データ通信モード時に映像、静止画、または映像と音声を送信する場合、映像信号処理部ex355は、カメラ部ex365から供給された映像信号を上記各実施の形態で示した動画像符号化方法によって圧縮符号化し(即ち、本発明の一態様に係る画像符号化装置として機能する)、符号化された映像データを多重/分離部ex353に送出する。また、音声信号処理部ex354は、映像、静止画等をカメラ部ex365で撮像中に音声入力部ex356で収音した音声信号を符号化し、符号化された音声データを多重/分離部ex353に送出する。
多重/分離部ex353は、映像信号処理部ex355から供給された符号化された映像データと音声信号処理部ex354から供給された符号化された音声データを所定の方式で多重化し、その結果得られる多重化データを変調/復調部(変調/復調回路部)ex352でスペクトラム拡散処理をし、送信/受信部ex351でデジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex350を介して送信する。
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、または映像およびもしくは音声が添付された電子メールを受信する場合、アンテナex350を介して受信された多重化データを復号化するために、多重/分離部ex353は、多重化データを分離することにより映像データのビットストリームと音声データのビットストリームとに分け、同期バスex370を介して符号化された映像データを映像信号処理部ex355に供給するとともに、符号化された音声データを音声信号処理部ex354に供給する。映像信号処理部ex355は、上記各実施の形態で示した動画像符号化方法に対応した動画像復号化方法によって復号化することにより映像信号を復号し(即ち、本発明の一態様に係る画像復号装置として機能する)、LCD制御部ex359を介して表示部ex358から、例えばホームページにリンクされた動画像ファイルに含まれる映像、静止画が表示される。また音声信号処理部ex354は、音声信号を復号し、音声出力部ex357から音声が出力される。
また、上記携帯電話ex114等の端末は、テレビex300と同様に、符号化器・復号化器を両方持つ送受信型端末の他に、符号化器のみの送信端末、復号化器のみの受信端末という3通りの実装形式が考えられる。さらに、デジタル放送用システムex200において、映像データに音楽データなどが多重化された多重化データを受信、送信するとして説明したが、音声データ以外に映像に関連する文字データなどが多重化されたデータであってもよいし、多重化データではなく映像データ自体であってもよい。
このように、上記各実施の形態で示した動画像符号化方法あるいは動画像復号化方法を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記各実施の形態で説明した効果を得ることができる。
また、本発明はかかる上記実施の形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
(実施の形態6)
上記各実施の形態で示した動画像符号化方法または装置と、MPEG−2、MPEG4−AVC、VC−1など異なる規格に準拠した動画像符号化方法または装置とを、必要に応じて適宜切替えることにより、映像データを生成することも可能である。
ここで、それぞれ異なる規格に準拠する複数の映像データを生成した場合、復号する際に、それぞれの規格に対応した復号方法を選択する必要がある。しかしながら、復号する映像データが、どの規格に準拠するものであるか識別できないため、適切な復号方法を選択することができないという課題を生じる。
この課題を解決するために、映像データに音声データなどを多重化した多重化データは、映像データがどの規格に準拠するものであるかを示す識別情報を含む構成とする。上記各実施の形態で示す動画像符号化方法または装置によって生成された映像データを含む多重化データの具体的な構成を以下説明する。多重化データは、MPEG−2トランスポートストリーム形式のデジタルストリームである。
図35は、多重化データの構成を示す図である。図35に示すように多重化データは、ビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム(PG)、インタラクティブグラフィックスストリームのうち、1つ以上を多重化することで得られる。ビデオストリームは映画の主映像および副映像を、オーディオストリーム(IG)は映画の主音声部分とその主音声とミキシングする副音声を、プレゼンテーショングラフィックスストリームは、映画の字幕をそれぞれ示している。ここで主映像とは画面に表示される通常の映像を示し、副映像とは主映像の中に小さな画面で表示する映像のことである。また、インタラクティブグラフィックスストリームは、画面上にGUI部品を配置することにより作成される対話画面を示している。ビデオストリームは、上記各実施の形態で示した動画像符号化方法または装置、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠した動画像符号化方法または装置によって符号化されている。オーディオストリームは、ドルビーAC−3、Dolby Digital Plus、MLP、DTS、DTS−HD、または、リニアPCMのなどの方式で符号化されている。
多重化データに含まれる各ストリームはPIDによって識別される。例えば、映画の映像に利用するビデオストリームには0x1011が、オーディオストリームには0x1100から0x111Fまでが、プレゼンテーショングラフィックスには0x1200から0x121Fまでが、インタラクティブグラフィックスストリームには0x1400から0x141Fまでが、映画の副映像に利用するビデオストリームには0x1B00から0x1B1Fまで、主音声とミキシングする副音声に利用するオーディオストリームには0x1A00から0x1A1Fが、それぞれ割り当てられている。
図36は、多重化データがどのように多重化されるかを模式的に示す図である。まず、複数のビデオフレームからなるビデオストリームex235、複数のオーディオフレームからなるオーディオストリームex238を、それぞれPESパケット列ex236およびex239に変換し、TSパケットex237およびex240に変換する。同じくプレゼンテーショングラフィックスストリームex241およびインタラクティブグラフィックスex244のデータをそれぞれPESパケット列ex242およびex245に変換し、さらにTSパケットex243およびex246に変換する。多重化データex247はこれらのTSパケットを1本のストリームに多重化することで構成される。
図37は、PESパケット列に、ビデオストリームがどのように格納されるかをさらに詳しく示している。図37における第1段目はビデオストリームのビデオフレーム列を示す。第2段目は、PESパケット列を示す。図37の矢印yy1,yy2,yy3,yy4に示すように、ビデオストリームにおける複数のVideo Presentation UnitであるIピクチャ、Bピクチャ、Pピクチャは、ピクチャ毎に分割され、PESパケットのペイロードに格納される。各PESパケットはPESヘッダを持ち、PESヘッダには、ピクチャの表示時刻であるPTS(Presentation Time−Stamp)やピクチャの復号時刻であるDTS(Decoding Time−Stamp)が格納される。
図38は、多重化データに最終的に書き込まれるTSパケットの形式を示している。TSパケットは、ストリームを識別するPIDなどの情報を持つ4ByteのTSヘッダとデータを格納する184ByteのTSペイロードから構成される188Byte固定長のパケットであり、上記PESパケットは分割されTSペイロードに格納される。BD−ROMの場合、TSパケットには、4ByteのTP_Extra_Headerが付与され、192Byteのソースパケットを構成し、多重化データに書き込まれる。TP_Extra_HeaderにはATS(Arrival_Time_Stamp)などの情報が記載される。ATSは当該TSパケットのデコーダのPIDフィルタへの転送開始時刻を示す。多重化データには図38下段に示すようにソースパケットが並ぶこととなり、多重化データの先頭からインクリメントする番号はSPN(ソースパケットナンバー)と呼ばれる。
また、多重化データに含まれるTSパケットには、映像・音声・字幕などの各ストリーム以外にもPAT(Program Association Table)、PMT(Program Map Table)、PCR(Program Clock Reference)などがある。PATは多重化データ中に利用されるPMTのPIDが何であるかを示し、PAT自身のPIDは0で登録される。PMTは、多重化データ中に含まれる映像・音声・字幕などの各ストリームのPIDと各PIDに対応するストリームの属性情報を持ち、また多重化データに関する各種ディスクリプタを持つ。ディスクリプタには多重化データのコピーを許可・不許可を指示するコピーコントロール情報などがある。PCRは、ATSの時間軸であるATC(Arrival Time Clock)とPTS・DTSの時間軸であるSTC(System Time Clock)の同期を取るために、そのPCRパケットがデコーダに転送されるATSに対応するSTC時間の情報を持つ。
図39はPMTのデータ構造を詳しく説明する図である。PMTの先頭には、そのPMTに含まれるデータの長さなどを記したPMTヘッダが配置される。その後ろには、多重化データに関するディスクリプタが複数配置される。上記コピーコントロール情報などが、ディスクリプタとして記載される。ディスクリプタの後には、多重化データに含まれる各ストリームに関するストリーム情報が複数配置される。ストリーム情報は、ストリームの圧縮コーデックなどを識別するためストリームタイプ、ストリームのPID、ストリームの属性情報(フレームレート、アスペクト比など)が記載されたストリームディスクリプタから構成される。ストリームディスクリプタは多重化データに存在するストリームの数だけ存在する。
記録媒体などに記録する場合には、上記多重化データは、多重化データ情報ファイルと共に記録される。
多重化データ情報ファイルは、図40に示すように多重化データの管理情報であり、多重化データと1対1に対応し、多重化データ情報、ストリーム属性情報とエントリマップから構成される。
多重化データ情報は図40に示すようにシステムレート、再生開始時刻、再生終了時刻から構成されている。システムレートは多重化データの、後述するシステムターゲットデコーダのPIDフィルタへの最大転送レートを示す。多重化データ中に含まれるATSの間隔はシステムレート以下になるように設定されている。再生開始時刻は多重化データの先頭のビデオフレームのPTSであり、再生終了時刻は多重化データの終端のビデオフレームのPTSに1フレーム分の再生間隔を足したものが設定される。
ストリーム属性情報は図41に示すように、多重化データに含まれる各ストリームについての属性情報が、PID毎に登録される。属性情報はビデオストリーム、オーディオストリーム、プレゼンテーショングラフィックスストリーム、インタラクティブグラフィックスストリーム毎に異なる情報を持つ。ビデオストリーム属性情報は、そのビデオストリームがどのような圧縮コーデックで圧縮されたか、ビデオストリームを構成する個々のピクチャデータの解像度がどれだけであるか、アスペクト比はどれだけであるか、フレームレートはどれだけであるかなどの情報を持つ。オーディオストリーム属性情報は、そのオーディオストリームがどのような圧縮コーデックで圧縮されたか、そのオーディオストリームに含まれるチャンネル数は何であるか、何の言語に対応するか、サンプリング周波数がどれだけであるかなどの情報を持つ。これらの情報は、プレーヤが再生する前のデコーダの初期化などに利用される。
本実施の形態においては、上記多重化データのうち、PMTに含まれるストリームタイプを利用する。また、記録媒体に多重化データが記録されている場合には、多重化データ情報に含まれる、ビデオストリーム属性情報を利用する。具体的には、上記各実施の形態で示した動画像符号化方法または装置において、PMTに含まれるストリームタイプ、または、ビデオストリーム属性情報に対し、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示す固有の情報を設定するステップまたは手段を設ける。この構成により、上記各実施の形態で示した動画像符号化方法または装置によって生成した映像データと、他の規格に準拠する映像データとを識別することが可能になる。
また、本実施の形態における動画像復号化方法のステップを図42に示す。ステップexS100において、多重化データからPMTに含まれるストリームタイプ、または、多重化データ情報に含まれるビデオストリーム属性情報を取得する。次に、ステップexS101において、ストリームタイプ、または、ビデオストリーム属性情報が上記各実施の形態で示した動画像符号化方法または装置によって生成された多重化データであることを示しているか否かを判断する。そして、ストリームタイプ、または、ビデオストリーム属性情報が上記各実施の形態で示した動画像符号化方法または装置によって生成されたものであると判断された場合には、ステップexS102において、上記各実施の形態で示した動画像復号方法により復号を行う。また、ストリームタイプ、または、ビデオストリーム属性情報が、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠するものであることを示している場合には、ステップexS103において、従来の規格に準拠した動画像復号方法により復号を行う。
このように、ストリームタイプ、または、ビデオストリーム属性情報に新たな固有値を設定することにより、復号する際に、上記各実施の形態で示した動画像復号化方法または装置で復号可能であるかを判断することができる。従って、異なる規格に準拠する多重化データが入力された場合であっても、適切な復号化方法または装置を選択することができるため、エラーを生じることなく復号することが可能となる。また、本実施の形態で示した動画像符号化方法または装置、または、動画像復号方法または装置を、上述したいずれの機器・システムに用いることも可能である。
(実施の形態7)
上記各実施の形態で示した動画像符号化方法および装置、動画像復号化方法および装置は、典型的には集積回路であるLSIで実現される。一例として、図43に1チップ化されたLSIex500の構成を示す。LSIex500は、以下に説明する要素ex501、ex502、ex503、ex504、ex505、ex506、ex507、ex508、ex509を備え、各要素はバスex510を介して接続している。電源回路部ex505は電源がオン状態の場合に各部に対して電力を供給することで動作可能な状態に起動する。
例えば符号化処理を行う場合には、LSIex500は、CPUex502、メモリコントローラex503、ストリームコントローラex504、駆動周波数制御部ex512等を有する制御部ex501の制御に基づいて、AV I/Oex509によりマイクex117やカメラex113等からAV信号を入力する。入力されたAV信号は、一旦SDRAM等の外部のメモリex511に蓄積される。制御部ex501の制御に基づいて、蓄積したデータは処理量や処理速度に応じて適宜複数回に分けるなどされ信号処理部ex507に送られ、信号処理部ex507において音声信号の符号化および/または映像信号の符号化が行われる。ここで映像信号の符号化処理は上記各実施の形態で説明した符号化処理である。信号処理部ex507ではさらに、場合により符号化された音声データと符号化された映像データを多重化するなどの処理を行い、ストリームI/Oex506から外部に出力する。この出力された多重化データは、基地局ex107に向けて送信されたり、または記録メディアex215に書き込まれたりする。なお、多重化する際には同期するよう、一旦バッファex508にデータを蓄積するとよい。
なお、上記では、メモリex511がLSIex500の外部の構成として説明したが、LSIex500の内部に含まれる構成であってもよい。バッファex508も1つに限ったものではなく、複数のバッファを備えていてもよい。また、LSIex500は1チップ化されてもよいし、複数チップ化されてもよい。
また、上記では、制御部ex501が、CPUex502、メモリコントローラex503、ストリームコントローラex504、駆動周波数制御部ex512等を有するとしているが、制御部ex501の構成は、この構成に限らない。例えば、信号処理部ex507がさらにCPUを備える構成であってもよい。信号処理部ex507の内部にもCPUを設けることにより、処理速度をより向上させることが可能になる。また、他の例として、CPUex502が信号処理部ex507、または信号処理部ex507の一部である例えば音声信号処理部を備える構成であってもよい。このような場合には、制御部ex501は、信号処理部ex507、またはその一部を有するCPUex502を備える構成となる。
なお、ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用してもよい。このようなプログラマブル・ロジック・デバイスは、典型的には、ソフトウェア又はファームウェアを構成するプログラムを、ロードする又はメモリ等から読み込むことで、上記各実施の形態で示した動画像符号化方法、又は動画像復号化方法を実行することができる。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
(実施の形態8)
上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データを復号する場合、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データを復号する場合に比べ、処理量が増加することが考えられる。そのため、LSIex500において、従来の規格に準拠する映像データを復号する際のCPUex502の駆動周波数よりも高い駆動周波数に設定する必要がある。しかし、駆動周波数を高くすると、消費電力が高くなるという課題が生じる。
この課題を解決するために、テレビex300、LSIex500などの動画像復号化装置は、映像データがどの規格に準拠するものであるかを識別し、規格に応じて駆動周波数を切替える構成とする。図44は、本実施の形態における構成ex800を示している。駆動周波数切替え部ex803は、映像データが、上記各実施の形態で示した動画像符号化方法または装置によって生成されたものである場合には、駆動周波数を高く設定する。そして、上記各実施の形態で示した動画像復号化方法を実行する復号処理部ex801に対し、映像データを復号するよう指示する。一方、映像データが、従来の規格に準拠する映像データである場合には、映像データが、上記各実施の形態で示した動画像符号化方法または装置によって生成されたものである場合に比べ、駆動周波数を低く設定する。そして、従来の規格に準拠する復号処理部ex802に対し、映像データを復号するよう指示する。
より具体的には、駆動周波数切替え部ex803は、図43のCPUex502と駆動周波数制御部ex512から構成される。また、上記各実施の形態で示した動画像復号化方法を実行する復号処理部ex801、および、従来の規格に準拠する復号処理部ex802は、図43の信号処理部ex507に該当する。CPUex502は、映像データがどの規格に準拠するものであるかを識別する。そして、CPUex502からの信号に基づいて、駆動周波数制御部ex512は、駆動周波数を設定する。また、CPUex502からの信号に基づいて、信号処理部ex507は、映像データの復号を行う。ここで、映像データの識別には、例えば、実施の形態6で記載した識別情報を利用することが考えられる。識別情報に関しては、実施の形態6で記載したものに限られず、映像データがどの規格に準拠するか識別できる情報であればよい。例えば、映像データがテレビに利用されるものであるか、ディスクに利用されるものであるかなどを識別する外部信号に基づいて、映像データがどの規格に準拠するものであるか識別可能である場合には、このような外部信号に基づいて識別してもよい。また、CPUex502における駆動周波数の選択は、例えば、図46のような映像データの規格と、駆動周波数とを対応付けたルックアップテーブルに基づいて行うことが考えられる。ルックアップテーブルを、バッファex508や、LSIの内部メモリに格納しておき、CPUex502がこのルックアップテーブルを参照することにより、駆動周波数を選択することが可能である。
図45は、本実施の形態の方法を実施するステップを示している。まず、ステップexS200では、信号処理部ex507において、多重化データから識別情報を取得する。次に、ステップexS201では、CPUex502において、識別情報に基づいて映像データが上記各実施の形態で示した符号化方法または装置によって生成されたものであるか否かを識別する。映像データが上記各実施の形態で示した符号化方法または装置によって生成されたものである場合には、ステップexS202において、駆動周波数を高く設定する信号を、CPUex502が駆動周波数制御部ex512に送る。そして、駆動周波数制御部ex512において、高い駆動周波数に設定される。一方、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合には、ステップexS203において、駆動周波数を低く設定する信号を、CPUex502が駆動周波数制御部ex512に送る。そして、駆動周波数制御部ex512において、映像データが上記各実施の形態で示した符号化方法または装置によって生成されたものである場合に比べ、低い駆動周波数に設定される。
さらに、駆動周波数の切替えに連動して、LSIex500またはLSIex500を含む装置に与える電圧を変更することにより、省電力効果をより高めることが可能である。例えば、駆動周波数を低く設定する場合には、これに伴い、駆動周波数を高く設定している場合に比べ、LSIex500またはLSIex500を含む装置に与える電圧を低く設定することが考えられる。
また、駆動周波数の設定方法は、復号する際の処理量が大きい場合に、駆動周波数を高く設定し、復号する際の処理量が小さい場合に、駆動周波数を低く設定すればよく、上述した設定方法に限らない。例えば、MPEG4−AVC規格に準拠する映像データを復号する処理量の方が、上記各実施の形態で示した動画像符号化方法または装置により生成された映像データを復号する処理量よりも大きい場合には、駆動周波数の設定を上述した場合の逆にすることが考えられる。
さらに、駆動周波数の設定方法は、駆動周波数を低くする構成に限らない。例えば、識別情報が、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示している場合には、LSIex500またはLSIex500を含む装置に与える電圧を高く設定し、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合には、LSIex500またはLSIex500を含む装置に与える電圧を低く設定することも考えられる。また、他の例としては、識別情報が、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示している場合には、CPUex502の駆動を停止させることなく、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合には、処理に余裕があるため、CPUex502の駆動を一時停止させることも考えられる。識別情報が、上記各実施の形態で示した動画像符号化方法または装置によって生成された映像データであることを示している場合であっても、処理に余裕があれば、CPUex502の駆動を一時停止させることも考えられる。この場合は、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する映像データであることを示している場合に比べて、停止時間を短く設定することが考えられる。
このように、映像データが準拠する規格に応じて、駆動周波数を切替えることにより、省電力化を図ることが可能になる。また、電池を用いてLSIex500またはLSIex500を含む装置を駆動している場合には、省電力化に伴い、電池の寿命を長くすることが可能である。
(実施の形態9)
テレビや、携帯電話など、上述した機器・システムには、異なる規格に準拠する複数の映像データが入力される場合がある。このように、異なる規格に準拠する複数の映像データが入力された場合にも復号できるようにするために、LSIex500の信号処理部ex507が複数の規格に対応している必要がある。しかし、それぞれの規格に対応する信号処理部ex507を個別に用いると、LSIex500の回路規模が大きくなり、また、コストが増加するという課題が生じる。
この課題を解決するために、上記各実施の形態で示した動画像復号方法を実行するための復号処理部と、従来のMPEG−2、MPEG4−AVC、VC−1などの規格に準拠する復号処理部とを一部共有化する構成とする。この構成例を図47Aのex900に示す。例えば、上記各実施の形態で示した動画像復号方法と、MPEG4−AVC規格に準拠する動画像復号方法とは、エントロピー符号化、逆量子化、デブロッキング・フィルタ、動き補償などの処理において処理内容が一部共通する。共通する処理内容については、MPEG4−AVC規格に対応する復号処理部ex902を共有し、MPEG4−AVC規格に対応しない、本発明の一態様に特有の他の処理内容については、専用の復号処理部ex901を用いるという構成が考えられる。復号処理部の共有化に関しては、共通する処理内容については、上記各実施の形態で示した動画像復号化方法を実行するための復号処理部を共有し、MPEG4−AVC規格に特有の処理内容については、専用の復号処理部を用いる構成であってもよい。
また、処理を一部共有化する他の例を図47Bのex1000に示す。この例では、本発明の一態様に特有の処理内容に対応した専用の復号処理部ex1001と、他の従来規格に特有の処理内容に対応した専用の復号処理部ex1002と、本発明の一態様に係る動画像復号方法と他の従来規格の動画像復号方法とに共通する処理内容に対応した共用の復号処理部ex1003とを用いる構成としている。ここで、専用の復号処理部ex1001、ex1002は、必ずしも本発明の一態様、または、他の従来規格に特有の処理内容に特化したものではなく、他の汎用処理を実行できるものであってもよい。また、本実施の形態の構成を、LSIex500で実装することも可能である。
このように、本発明の一態様に係る動画像復号方法と、従来の規格の動画像復号方法とで共通する処理内容について、復号処理部を共有することにより、LSIの回路規模を小さくし、かつ、コストを低減することが可能である。