以下、図面を参照して本発明の実施形態を説明する。
(第1実施形態)
図1は、本発明の第1実施形態の可変長符号化/復号化装置の構成を示すブロック図である。
第1実施形態の可変長符号化/復号化装置は、大きく分けて符号語テーブル作成部101、符号化部113、伝送系または蓄積系105および復号化部114からなる。まず、これら各部の機能について簡単に説明すると、符号語テーブル作成部101は情報シンボルの生起確率に基づいて符号語テーブルを作成し、符号化部113内の符号語テーブル102と、復号化部114内の順方向符号語テーブル111および逆方向符号語テーブル112に符号語を送る。
符号化部113は、情報シンボルを可変長符号に符号化し、その可変長符号を符号化データとして伝送系または蓄積系105へ出力する。復号化部114は、伝送系または蓄積系105を介して入力されてきた符号化データを復号して元の情報シンボルを再生する。
次に、この第1実施形態の各部の詳細な構成と動作を説明する。
符号化部113において、入力された情報シンボルは符号化器103に入力される。符号化部113は、符号語テーブル102と符号化器103および同期区間設定部104により構成される。符号語テーブル102は、符号語テーブル作成部101によって予め作成された情報シンボルと可変長符号の符号語とを対応させて格納している。符号化器103は、符号語テーブル102に格納されている符号語の中から、入力された情報シンボルに対応した符号語を選択して出力する。同期区間設定部104では、符号化器103が選択した符号語を同期区間毎にまとめ、さらに順方向にも逆方向にも復号可能なスタッフィング符号を挿入して、同期区間毎に符号化データを出力する。この符号化データは、伝送系または蓄積系105を通して復号化部114に送られる。
前記復号化部114は、同期区間検出部106、バッファ107、順方向復号化器108、逆方向復号化器109、復号値判定部110、順方向復号化テーブル111および逆方向復号化テーブル112により構成される。復号化部114では、伝送系または蓄積系105より入力された符号化データから同期区間検出部106で符号化データの同期区間を検出し、符号化データをバッファ107に蓄積する。順方向復号化器108では、バッファ107に蓄積された符号化データの先頭から復号を開始する。逆方向復号化器109では、バッファ107に蓄積された符号化データの末尾から復号を開始する。
順方向復号化器108では、符号化データに順方向符号語テーブル111に存在しないビットパターンが出現した場合、およびバッファ107のビット数と異なるビット数の符号化データが復号された場合、誤り検出と判定する。同様に逆方向復号化器109でも、符号化データに逆方向符号語テーブル112に存在しないビットパターンが出現した場合、およびバッファ107のビット数と異なるビット数の符号化データが復号された場合には、誤り検出と判定する。
復号値判定部110は、順方向復号化器108によって得られた復号結果(順方向復号結果という)と、逆方向復号化器109によって得られた復号結果(逆方向復号器という)から復号値を判定し、最終的な復号結果を出力する。図2は符号語テーブル作成部101の構成を示すブロック図である。符号選択部21は情報シンボルの生起確率の情報が入力され、選択可能な符号系の中から最も平均符号長の小さいものを選択して、選択結果を符号語構成部22に送る。符号語構成部22では、符号語選択部21で選択された符号の符号語を構成する。
符号語構成部22で構成される符号語は、符号語の予め定められた重みにより符号の区切りが分かるように構成された順方向にも逆方向にも復号可能な可変長符号(以下、リバーシブル符号という)であり、例えば特願平7−89772、特願平7−260383に記載された符号である。
この第1実施形態においては、より幅広い確率分布に対応し、符号語のビットパターンの自由度を上げるために、符号語構成部22における符号語の構成方法として以下に示す方法を用いている。
図3は、符号語構成部22におけるリバーシブル符号の符号語の第1の構成方法を示している。まず、図3の左側に示すように、符号長が短い順にそれぞれの系列の重み(この場合、“1”の数)が一定で異なる重みを持つ2つの2進系列(この場合、重みは0個と1個)を作成する。次に、図3の中央に示すように、この2進系列のそれぞれ先頭と末尾に“1”を追加して2進系列のビットを反転させた後、これら2つの2進系列を図3の右側に示すように合成する。
この可変長符号では、各符号の最初にあるシンボルの個数をカウントすることによって符号長が分かる。図3の例では、最初が“0”ならば、“0”が2つ出現したら符号の区切り(符号長)が分かり、最初が“1”ならば、“1”が3つ出現したら符号の区切りが分かる符号構成となっている。また、この図3に示す可変長符号は、全ての情報シンボルA〜Jに対応する符号語が図4(a)に示す順方向の復号木の葉にも、図4(b)の逆方向の復号木の葉にも割り当てられることから、順方向にも逆方向にも復号可能であることが分かる。
図5は、符号語構成部22におけるリバーシブル符号の符号語の第2の構成方法を示している。まず、図5の左側に示すように、第1のリバーシブル符号と第2のリバーシブル符号を用意する。次に、図5の中央に示すように、第1のリバーシブル符号の全ての符号語の末尾に、第2のリバーシブル符号の最初の1つの符号語を追加する。以下、同様に第1のリバーシブル符号の全ての符号語の末尾に、第2のリバーシブル符号の全ての符号語を1つずつ追加した後、図5の右側に示すように並べ替えを行なって、新たなリバーシブル符号を構成する。このような構成方法によって、第1のリバーシブル符号の符号語数A(この例ではA=9)と第2のリバーシブル符号の符号語数B(この例ではB=3)を乗算した数A×B個(この例では27個)の新たなリバーシブル符号を構成することができる。
この構成方法によるリバーシブル符号の復号に当たっては、順方向から復号する時は、まず第1のリバーシブル符号を復号し、次に第2のリバーシブル符号を復号するようにする。逆方向から復号する時は、まず第2のリバーシブル符号を復号し、次に第1のリバーシブル符号を復号する。従って、順方向にも逆方向にも復号可能であることが分かる。
なお、この例では第1のリバーシブル符号の符号語の末尾に第2のリバーシブル符号を追加したが、第1のリバーシブル符号の先頭に、第2のリバーシブル符号を追加してもよく、また、第1のリバーシブル符号の末尾と先頭の両方に固定長符号を追加しても構わない。また、この例では第1のリバーシブル符号と第2のリバーシブル符号は異なるものを用いたが、同一のものを使用しても構わない。さらに、本実施形態では第1のリバーシブル符号も第2のリバーシブル符号も可変長符号を用いたが、どちらかを固定長符号に変更しても構わない。
図6は、符号語構成部21におけるリバーシブル符号の第3の符号構成方法を示している。まず、図6の左側に示すように、可変長のリバーシブル符号と固定長のリバーシブル符号を用意する。次に、図6の右側に示すように、リバーシブル符号の符号語の各ビットの直後に固定長のリバーシブル符号を追加する。この構成方法により、Kビットの固定長のリバーシブル符号を用いた場合、Hビットの符号語を(K+1)Hビットにして符号語数を2KH倍にすることができる。なお、この例ではリバーシブル符号の符号語の各ビット毎の直後に固定長符号を追加したが、各ビットの直前に固定長符号を追加してもよく、また直前と直後の両方に固定長符号を追加しても構わない。
次に、図7を用いて同期区間設定部104における符号化データの同期区間の設定方法の具体例について説明する。図7(a)は、同期符号を挿入することにより同期区間を設定する方法を示している。この場合、同期区間検出部106では符号化データの最初と最後の同期符号を検出することにより、同期区間を検出することができる。ここで、同期符号の挿入可能位置をある一定区間単位(この場合は、Mビット単位)に設定するようにするため、符号化データの末尾に1〜Mビットのスタッフィング符号を挿入している。
図7(b)は、符号化データの先頭に同期区間の符号量を記述する方法、言い換えれば同期区間の終了位置を示すポインタを挿入する方法を示している。この場合、同期区間検出部106では、まず符号化データの先頭の同期区間の符号量の記述を復号することで、同期区間を検出することができる。そして、符号量の記述の単位はMビット単位となっているため、符号化データの末尾に1〜Mビットのスタッフィング符号を挿入する。
ここで、図7(a)(b)で用いられるスタッフィング符号は、少なくとも逆方向に復号可能な構成となっていることが特徴である。図8は、このようなスタッフィング符号の具体例を示した図であり、このスタッフィング符号は順方向にも逆方向にも復号可能に構成されている。このスタッフィング符号の場合、1ビットの時は“1”が出現すればそれが区切りで、それ以外では“0”が2度出現すると区切りが分かるような、順方向にも逆方向にも復号可能な可変長符号となっていて、同期区間の最後からも逆方向に復号可能となっていると同時に、符号化データのビット数を計算することが可能になっている。符号化データのビット数の計算結果は、後述する誤り検出に用いられる。
なお、この例ではスタッフィング符号を符号化データの末尾に挿入したが、符号化データの先頭でも符号化データの内部でもよく、同期区間の内部で文法上特に問題ない位置ならば、その挿入位置はどこでもよい。また、スタッフィング符号は図9に示すような逆方向にのみ復号可能な符号でもよい。この符号の場合は、逆方向から復号して“0”が出現したら区切りになるような符号となっている。
次に、図10を用いて、復号値判定部110における復号値の判定方法について説明する。図10(a)に示すように、順方向復号結果と逆方向復号結果で誤りが検出される復号語の位置(誤り検出位置)が交差しない場合は、誤りが検出されなかった復号結果のみを復号値として使用し、2つの誤り検出位置の復号結果は復号値として使用せず放棄する。また、図10(b)に示すように、順方向復号結果と逆方向復号結果の誤り検出位置が交差する場合は、順方向復号結果の誤り検出位置までの復号値は順方向復号結果を使用し、それ以降の部分は逆方向復号結果を復号値として使用する。
なお、逆方向復号結果を優先して、逆方向復号結果の誤り検出位置までの復号値としては逆方向復号結果を使用し、それ以前の部分は順方向復号結果を復号値として使用してもよい。
また、図10(c)に示すように、順方向復号結果および逆方向復号結果のうち片方向の復号結果にしか誤りが検出されない場合(この例では、順方向復号結果のみ誤りが検出されている)は、誤り検出位置までの復号値は、順方向復号結果を使用し、それ以降の部分は逆方向復号結果を復号値として使用する。さらに、図10(d)に示すように、同一の符号語について順方向復号結果および逆方向復号結果の両方に誤りが検出される場合は、誤り検出位置の符号語に対する復号値を放棄し、それ以後の符号語に対する復号値として、逆方向復号結果を使用する。なお、順方向復号化器108および逆方向復号化器109での誤り判定に際しては、符号語として存在しないビットパターンが生じた場合、検出位置はその場所とし、前記の判定方法で誤りが検出されない場合で、復号したビット数が同期区間内の符号化データのビット数と一致しない場合は、復号化の最初の位置を誤り検出位置とする。
この第1実施形態では、4つの誤り検出位置のパターンによる復号値判定方法の1つの例を示したが、復号値判定部は順方向復号結果および逆方向復号結果の両方あるいはいずれか一方で誤りが検出された場合は、正しいと推定される順方向復号結果もしくは逆方向復号結果を使用し、いずれの復号結果でも復号できなかった部分は放棄すれば、どのような方法でもよいことはいうまでもない。
(第2実施形態)
次に、本発明の第2実施形態として本発明による可変長符号化/復号化装置の応用例について説明する。図11は、本発明の第2実施形態に係る可変長符号化/復号化装置が組み込まれた動画像符号化/復号化システムの概念図である。まず、動画像符号化器709においては、情報源符号化器702で符号化されたデータに対して動画像多重化器703で可変長符号化と多重化等が行なわれ、送信バッファ704で平滑化された後、符号化データとして伝送系または蓄積系705に送り出される。符号化制御部701は、送信バッファ704のバッファ量を考慮して、情報源符号化器702と動画像多重化器703の制御を行なう。
一方、動画像復号化器710においては、伝送系または蓄積系705からの符号化データが受信バッファ706に溜められ、動画像多重化分離器707で符号化データの多重化分離と可変長復号化が行なわれた後、情報源復号化器708に送られ、最終的に動画像情報が復号化される。ここで、動画像多重化器703および動画像多重化分離器707には第1実施形態で説明した可変長符号化/復号化装置が適用されている。
図12は、第2実施形態における動画像多重化器703および動画像多重化分離器707における動画像符号化方式のシンタクスを示している。マクロブロックのモード情報、動きベクトル情報およびINTRA DC(フレーム内符号化におけるDCT係数の直流成分)の情報を上位階層とし、INTRA DC以外のDCT係数情報を下位階層として下位階層にリバーシブル符号を適用している。
図13(a)(b)は、この第2実施形態における動画像多重化器703および動画像多重化分離器707の構成を示すブロック図である。
図13(a)に示す動画像多重化器703においては、図11中の情報源符号化器702で符号化されたデータのうち、マクロブロックのモード情報、動きベクトル情報およびINTRA DCなどの情報を上位階層とし、上位階層可変長符号化器901で通常の可変長符号化が行なわれ、多重化器903に送られる。また、情報源符号化器702で符号化されたデータのうち、INTRA DC以外のDCT係数は下位階層可変長符号化器903においてリバーシブル符号で符号化され、多重化器903に送られる。多重化器903では、上位階層の符号化データと下位階層の符号化データを多重化し、送信バッファ704に送る。
一方、図13(b)に示す動画像復号化器707においては、上位階層の符号化データと下位階層の符号化データが多重化分離部904により分離され、これらが上位階層可変長復号化器905および下位階層可変長復号化器906によりそれぞれ可変長復号化される。
図14〜図16、図17〜図18および図19は、下位階層可変長符号化器902で用いられる符号語テーブルの一例である。この符号語テーブルに格納された符号は、前述した符号語構成部22におけるリバーシブル符号の符号語の第1の構成方法によって作成した符号を末尾に2ビットの固定長符号を追加した符号である。
情報源符号化器702では、量子化後の8×8のDCT係数のブロック毎にブロック内のスキャンを行ない、LAST(0:ブロックの最後でない非零係数、1:ブロックの最後の非零係数)、RUN(非零係数までの零ランの数)およびLEVEL(係数の量子化値)を求め、動画像多重化部703に送る。
動画像多重化部703内の下位階層可変長符号化器902は、図14〜図16に示すINTRA(フレーム内符号化)およびINTER(フレーム間符号化)の非LAST係数、RUN、LEVELにリバーシブル符号の符号語(VLC_ CODE)を対応させた非LAST係数の符号語テーブルと、図17〜図18に示すINTRAおよびINTERのLAST係数、RUN、LEVELにリバーシブル符号の符号語(VLC_ CODE)を対応させたLAST係数の符号語テーブルを持っている。
そして、モード情報に基づいて、INTRAの時はINTRAの非LAST係数とLAST係数の符号語テーブル、INTERの時はINTERの非LAST係数とLAST係数の符号語テーブルを選択して符号化を行なう。符号語の最終ビットの“s”は、LEVELの符号を表し、“s”が“0”の時、LEVELの符号は正、“s”が“1”の時、LEVELの符号は負である。
また、この符号語テーブルに存在しない係数は、図20に示すようにLAST係数かどうかの1ビットとRUNとLEVELの絶対値を固定長符号化し、この固定長符号部の先頭に2つのエスケープ符号のうち、“00001”を付加し、末端にもエスケープ符号を付加する。図19は、エスケープ符号の符号語テーブルであり、エスケープ(ESCAPE)符号として用いられるVLC_ CODEの最終ビットの“s”はLEVELの符号を表し、“s”が“0”ならばLEVELは正、“1”ならばLEVELは負である。
図21はこの符号語テーブルを用いた時の零ランが最大になる場合を示している。通常、同期符号は零ランが続いた後に“1”を付加するビットパターンが選択されている。例えばITU−T H.263では16個の“0”の後に“1”が付くようなビットパターンが同期符号となっている。DCT係数の可変長符号化では、零ランが最大になるのを、エスケープ符号を使う係数で、LEVELが+64で、次もエスケープ符号を使う符号が出現する場合で、15個“0”が連続するのが最大となる。ゆえに“0”が16個連続するようなビットパターンを同期符号にすれば、擬似同期符号が生じるおそれはない。
復号値判定部110では、順方向復号化器108により得られた復号結果(順方向復号結果という)と、逆方向復号化器109により得られた復号結果(逆方向復号結果という)から復号値を判定し、最終的な復号結果を出力する。
順方向復号化器108および逆方向復号化器109での誤り判定は、符号語として存在しないビットパターンが生じた場合、およびチェックビット等で誤りを検出した場合、検出位置はその場所とし、前記の判定方法で誤りが検出されない場合で、復号したビット数が同期区間内の符号化データのビット数と一致しない場合は、復号化の最初の位置を誤り検出位置とする。
図22は、下位階層の復号値判定方法を示している。まず、図22(a)に示すように、順方向復号結果と逆方向復号結果で誤りが検出されるマクロブロック(MB)の位置(誤り検出位置)が交差しない場合は、誤りが検出されなかったマクロブロックの復号結果のみを復号値として使用し、二つの誤り検出位置の復号結果は復号値として使用せず、上位階層のモード情報の復号結果に基づいて、INTRAマクロブロック(フレーム内符号化されたマクロブロック)については前フレームをそのまま表示するように、INTERマクロブロック(フレーム間符号化されたマクロブロック)については前フレームより動き補償のみで表示するように、上位階層の復号結果を書き換える。
また、図22(b)に示すように、順方向復号結果と逆方向復号結果の誤りの検出位置が交差する場合は、順方向復号の結果で誤りが検出されたマクロブロックまでの復号値は、順方向復号結果を使用し、それ以降の部分は、逆方向復号結果を復号値として使用する。なお、逆方向復号結果を優先して、逆方向復号の結果で誤りが検出されたマクロブロックまでの復号値は、逆方向復号結果を使用し、それ以前の部分は、順方向復号結果を復号値として使用してもよい。
また、図22(c)に示すように、順方向復号結果および逆方向復号結果のうち片方向の復号結果にしか誤りが検出されない場合(この例では、順方向復号結果のみ誤りが検出されている)は、誤り検出位置以降のマクロブロックに対する復号値は逆方向の復号結果を使用する。さらに、図22(d)に示すように、同一のマクロブロックで順方向復号結果および逆方向復号結果の両方に誤りが検出される場合は、誤り検出位置のマクロブロックの復号値は放棄し、復号値として使用せずに、上位階層のモード情報の復号結果に基づいて、INTRAマクロブロックについては前フレームをそのまま表示するように、INTERマクロブロックについては前フレームよりの動き補償のみで表示するように、上位階層の復号結果を書き換え、それ以降のマクロブロックに対する復号値は逆方向の復号結
果を使用する。
なお、図22の復号値判定方法では、マクロブロックを単位に復号値の判定を行なったが、ブロックの単位あるいは符号語の単位で判定を行なってもよい。また、この第2実施形態ではDCT係数の可変長符号化に本発明を適用したが、可変長符号化を行なう場合には、他の情報シンボルについても適用することができることは言うまでもない。
(第3実施形態)
次に、図23を参照しながら本発明の第3実施形態に係る可変長符号化/復号化装置について説明する。
この第3実施形態に係る可変長符号化/復号化装置は、大きく分けて符号語テーブル作成部101、符号化部113、伝送系または蓄積系105および復号化部121からなる。まず、これら各部の機能について簡単に説明すると、符号語テーブル作成部101は情報シンボルの生起確率に基づいて符号語テーブルを作成し、符号化部113内の符号語テーブル102と、復号化部121内の順方向符号語テーブル111および逆方向符号語テーブル112に符号語を送る。符号化部113は、情報シンボルを可変長符号に符号化し、その可変長符号を符号化データとして伝送系または蓄積系104へ出力する。復号化部121は、伝送系または蓄積系105を介して入力されてきた符号化データを復号して元の情報シンボルを再生する。
次に、第3実施形態の各部の詳細な構成と動作を説明する。符号化部113は図1に示した第1実施形態と同様である。すなわち、符号化部113において、入力された情報シンボルは符号化器103に入力される。符号語テーブル102は、符号語テーブル作成部101によって予め作成された情報シンボルと可変長符号の符号語とを対応させて格納している。符号化器103は符号語テーブル102に格納されている符号語の中から、入力された情報シンボルに対応した符号語を選択する。同期区間設定部104では、符号化器103が選択した符号語を同期区間毎にまとめ、さらに順方向にも逆方向にも復号可能なスタッフィング符号を挿入して、同期区間毎に符号化データを出力する。この符号化データは、伝送系または蓄積系104を通して復号化部121に送られる。
復号化部121は、同期区間検出部106、バッファ107、符号化データ切替器122、復号化器124、符号語テーブル切替器125、復号値判定部110、順方向復号化テーブル111および逆方向復号化テーブル112により構成される。符号化データ切替器122および符号語テーブル切替器125は、復号化器124により制御されて切り替わる。
復号化部121では、伝送系または蓄積系105より入力された符号化データから同期区間検出部106で符号化データの同期区間を検査しながら、符号化データを復号化器124へ入力する。その際、符号化データをバッファ107にも蓄積する。復号化器124は、入力された符号化データの復号(順方向復号化という)を開始する。ここで、復号化器124は符号化データに順方向符号語テーブル111に存在しないビットパターンが出現した場合、およびバッファ107のビット数と異なるビット数の符号化データが復号された場合、誤り検出と判定する。
誤り検出と判定された場合、復号化器124は符号語テーブル切替器123で符号語テーブルを順方向符号語テーブル111から逆方向符号語テーブル112に切り替えると同時に、符号化データ切替器122により復号化器124への入力をバッファ107側に切り替える。バッファ107は、同期区間検出部106により次の同期を検出した場合、蓄積した符号化データを末尾から読み出し、復号化器124へ出力する。復号化器124では、入力された符号化データの復号(逆方向復号化という)を開始する。ここで、復号化器124は順方向復号化と同様に、符号化データに逆方向符号語テーブル112に存在しないビットパターンが出現した場合、およびバッファ107のビット数と異なるビット数の符号化データが復号された場合、誤り検出と判定する。復号値判定部110では、順方
向復号化によって得られた復号結果(順方向復号結果という)と、逆方向復号化によって得られた復号結果(逆方向復号結果という)から復号値を判定し、最終的な復号結果を出力する。
この第3実施形態における符号語テーブル作成部101は、基本的に第1の実施形態と同様であり、図2に示したように、情報シンボルの生起確率の情報を入力し、選択可能な符号系の中から最も平均符号長の小さいものを選択する符号選択部21と、この符号語選択部21で選択された符号の符号語を構成する符号語構成部22からなる。ただし、本実施形態ではより幅広い確率分布に対応し、符号語のビットパターンを自由度を上げるために、符号語構成部22における符号語の構成方法として以下の方法を用いている。
図24は、符号語構成部22におけるリバーシブル符号の符号語の第1の構成方法を示している。まず、図24の左側に示すように、第1のリバーシブル符号を用意する。次に、図24の中央に示すように、第1のリバーシブル符号のそれぞれの符号語に対して、破線で囲まれた(符号長−1)ビットの固定長符号を用意し、図24の右側に示すように、第1のリバーシブル符号の符号語の各ビットの間に固定長符号の符号語を破線で囲むように1ビットずつ挿入する。この図24の可変長符号は、第1のリバーシブル符号を復号しながら、1ビット毎に固定長符号を復号することにより、順方向にも逆方向にも復号可能であることが分かる。図24の例では、第1のリバーシブル符号の符号語の各ビットの間に固定長符号の符号語を1ビットずつ挿入したが、第1のリバーシブル符号のそれぞれの
符号語に対して、(符号長−1)×nビットの固定長符号を用意し、第1のリバーシブル符号の符号語の各ビットの間に固定長符号の符号語をnビットずつ付加してもよい。
図25は、符号語構成部22におけるリバーシブル符号の符号語の第2の構成方法を示している。図25の左側に示すように、第1のリバーシブル符号を用意する。次に、図25の上側に破線で囲んで示すように、第2のリバーシブル符号を用意し、図25の右側に示すように、第1のリバーシブル符号の符号語の各ビットの間に破線で囲んだように第2のリバーシブル符号を挿入する。この図25の可変長符号は、第1のリバーシブル符号を復号しながら、1ビット毎に第2のリバーシブル符号を復号することにより、順方向にも逆方向にも復号可能であることが分かる。なお、図25の例においては、第1のリバーシブル符号と第2のリバーシブル符号を同じ符号として示したが、異なる符号を用いても構わない。
この第3実施形態においては、図26に示すように図23中の順方向符号語テーブル111と逆方向符号語テーブル112を共通化した双方向符号語テーブル51を用いてもよい。この場合、図23中の復号化器124から順方向復号化/逆方向復号化の区別を示す識別信号53を入力し、この識別信号53によりアドレス変換器52を動作させて、双方向符号語テーブル51から符号語を読み出すためのアドレスを生成する。そして、このアドレスに対応する符号値を双方向符号語テーブル51から読み出す。
また、この第3実施形態においては、図27に示すように復号化器124に誤り検出機能が付加される。復号化器61に接続された誤り検出部62は、復号化器61の内部状態を監視し、これが異常となった場合、誤り検出信号を出力する。異常な内部状態とは、例えば以下のような状態をいう:
(1)符号語テーブルに存在しない符号化データを受信した場合;
(2)符号化データの長さと、実際に復号化器61で復号したデータの長さが一致しない場合;
(3)符号語テーブルには値が存在するため復号値を求めることは可能であるが、その値が不適な値である場合。この項目(3)の具体例としては(3−1)復号値が存在範囲を超えている場合、(3−2)データの個数が上限を超えた場合、および(3−3)前に復号した復号値と整合性の合わない復号値を出力した場合等が挙げられる;
(4)誤り検出符号等により、誤りを検出した場合。
次に、図28を用いてこの第3実施形態における復号方法を説明する。先の説明では、復号化器124での順方向および逆方向の復号処理は図28(a)に示すように順方向、逆方向双方で復号処理を並行して同時に行ない、それぞれが誤りを検出するまで復号を実行し復号値を求めていた。本実施形態はこれに限られず、図28(b)(c)(d)に示すような方法で復号を行なってもよい。なお、図28(a)(b)(c)(d)において、Xは誤り検出点を示し、また右側に向かう矢印は順方向の復号処理、左側に示す矢印は逆方向の復号処理をそれぞれ示している。
図28(b)に示す方法では、順方向の復号処理を行ない、誤りが検出された場合は、そこで順方向の復号処理を停止し、同期区間の符号化データの末尾から逆方向に、誤りが検出されるまで復号処理を行なう。図28(c)に示す方法では、順方向の復号処理で誤りが検出された場合、その誤り検出位置のnビット先から順方向の復号処理を再開する。この処理を現在の同期区間内の符号化データを全て処理するまで繰り返し行なう。順方向の復号処理の最後に、もし同期区間の符号化データ数と復号処理により復号を行なったデータ数とが一致しない場合は誤り検出とみなし、符号化データの末尾から逆方向の復号処理を誤りが発見されるまで行なう。図28(d)に示す方法では、順方向の復号処理で誤りが検出された場合、一旦その誤り検出位置のnビット先から逆方向にnビット分復号処理を行なう。その後、順方向の復号処理を誤り検出位置のnビット先(逆方向の復号処理を開始した位置)から行なう。この処理を現在の同期区間内の符号化データを全て処理するまで繰り返し行なう。最後に、もし同期区間の符号化データ数と復号処理により復号を行なったデータ数が一致しない場合は誤り検出とみなし、符号化データの末尾から逆方向の復号処理を誤りが発見されるまで行なう。
次に、図29を用いてこの第3実施形態における復号値判定部111での復号値の判定方法を説明する。なお、復号値判定部111で最終的に利用する復号値の選択にも、以下のような方法を用いることができる。図29(a)に示された復号値判定方法は、誤りを検出した場合、それ以降は復号を行なわない方法である。すなわち、誤りを検出した場合には、それ以降の復号は誤復号する可能性があるため、そのような誤復号の可能性のある復号値は利用せず、誤り検出位置までの復号値のみを利用する。
図29(b)に示す復号値判定方法は、誤りを検出しても復号を続けてなるべく復号を行ない、利用できる復号値は全て利用するようにする方法である。可変長符号には、同期が外れた場合でも復号処理を続けると、自動的に同期が回復する特徴を有する符号が存在する。これを自己同期回復性と呼ぶ。この自己同期回復能力が高い符号語の場合には、図29(a)のように誤り検出後に復号処理を停止せずに、図29(b)のようにそのまま復号を続けることで正しい復号値をより多く得ることができる。ただし、この場合には復号値に誤って復号された値を含む可能性がある。このような誤復号の可能性を許容するシステムにおいては、図29(b)の復号値判定方法を用いることも可能である。
(第4実施形態)
次に、図30を参照しながら本発明の第4実施形態に係る可変長符号化/復号化装置について説明する。
第4実施形態の可変長符号化/復号化装置は、大きく分けて符号語テーブル作成部201、符号化部213、伝送系または蓄積系205および復号化部214からなる。まず、これら各部の機能について簡単に説明すると、符号語テーブル作成部201は情報シンボルの生起確率に基づいて符号語テーブルを作成し、符号化部213内の符号語テーブル、復号化部214内の順方向符号語テーブルおよび逆方向符号語テーブルに符号語を送る。
符号化部213は、入力データとして与えられる情報シンボルを階層化して、各階層毎に可変長符号に符号化し、それらの可変長符号を多重化して符号化データとして伝送系または蓄積系205へ出力する。復号化部214は、伝送系または蓄積系205を介して入力されてきた符号化データを多重化分離し、各階層毎に可変長復号を行ない、階層毎の復号結果を合成して元の情報シンボルを再生し、再生データを出力する。
次に、第4実施形態の各部の詳細な構成と動作を説明する。符号化部213においては入力データである情報シンボルはデータ階層化部202により重要度に応じて1からnまで(nは2以上の自然数)の階層に分離される。分離された各階層i(i=1,2,…,n)の情報シンボルは、階層i毎に用意された可変長符号化部203−iに入力され、符号化される。可変長符号化部203−iで得られた各階層iの符号化データは、多重化部204で多重化され、伝送系または蓄積系205を通して復号化部214に送られる。
復号化部214では、伝送系または蓄積系205より入力された符号化データが多重化分離部206で各階層iの符号化データに分離される。分離された各階層の符号化データは、階層i毎に用意された可変長復号化部207−iに入力され、復号化される。可変長復号化部207−iで得られた各階層iの復号結果はデータ合成部208で合成され、再生データとして出力される。
符号語テーブル作成部201の構成は、第1の実施形態で用いた図2に示した符号語テーブル作成部101と同様であり、情報シンボルの生起確率の情報に基づいて、選択可能な符号系の中から最も平均符号長の小さいものを選択し、選択した符号の符号語を構成する。その符号語は、符号語の予め定められた重みによって符号の区切りが分かるように構成された順方向にも逆方向にも復号可能な可変長符号(リバーシブル符号)である。
次に、図30中の各階層iの可変長符号化部203−iの構成は図31に示す通りであり、図1中に示した符号化部113と同様に、符号語テーブル102と符号化器103および同期区間設定部104により構成される。すなわち、図30中のデータ階層化部202から入力された情報シンボルは、符号化器103に入力される。符号語テーブル102は、図30中の符号語テーブル作成部201によって予め作成された情報シンボルと可変長符号の符号語とを対応させて格納している。
符号化器103は、符号語テーブル102に格納されている符号語の中から、データ階層化部202より入力された情報シンボルに対応した符号語を選択して出力する。同期区間設定部104では、符号化器103が選択した符号語を同期区間毎にまとめ、さらに必要に応じて順方向にも逆方向にも復号可能なスタッフィング符号を挿入して、同期区間毎に符号化データを出力する。この符号化データは図30中の多重化部204に送られる。
一方、図30中の各階層iの可変長復号化部207−iの構成は図32に示す通りであり、図1中に示した復号化部114と同様に、同期区間検出部106、バッファ107、順方向復号化器108、逆方向復号化器109、復号値判定部110、順方向復号化テーブル111および逆方向復号化テーブル112により構成される。すなわち、可変長復号化部207−iでは、伝送系または蓄積系205より入力された符号化データから同期区間検出部106で符号化データの同期区間を検出して、符号化データをバッファ107に蓄積する。順方向復号化器108では、バッファ107に蓄積された符号化データの先頭から復号を開始する。逆方向復号化器109では、バッファ107に蓄積された符号化データの末尾から復号を開始する。
順方向復号化器108では、符号化データに順方向符号語テーブル111に存在しないビットパターンが出現した場合、およびバッファ107のビット数と異なるビット数の符号化データが復号された場合、誤り検出と判定する。同様に逆方向復号化器109でも、符号化データに逆方向符号語テーブル112に存在しないビットパターンが出現した場合、およびバッファ107のビット数と異なるビット数の符号化データが復号された場合、誤り検出と判定する。復号値判定部110では、順方向復号化器108によって得られた復号結果(順方向復号結果)と、逆方向復号化器109によって得られた復号結果(逆方向復号値)から復号値を判定し、最終的な復号結果を出力する。これらの各階層iの復号結果は、データ合成部208に送られる。
図33に、データ階層化部202でのデータ階層化および多重化部204で多重化の例を示す。図33(a)に示すようなn階層に分けることが可能なシンタクスの入力データ(情報シンボル列)があるとすると、データ階層化部202では図33(b)に示すように各階層i毎に入力データが繰り返されるようにシンタクスを変更してデータ階層化を行ない、各階層i毎の情報シンボルを可変長符号化部203−iに送る。多重化部204では、図33(c)に示すように可変長符号化部203−iにより階層i毎に可変長符号化され、かつ同期符号iの付加により同期区間が設定された符号化データを多重化して出力する。
図34は、図32中の復号値判定部110での復号値の判定方法の例を示している。各階層i毎の可変長復号化部207−iでは、それぞれ双方向復号が行なわれる。もし、ある階層の可変長復号化部に入力される符号化データに誤りがあった場合、その影響は当該階層より上位の階層と下位の階層の復号値に影響を与えるので、各階層iの可変長復号化部207−i内の復号値判定部110で情報をやりとりして、最終的な復号値を決定するようにする。
この図34の例では、上位階層に誤りがあり、復号できない部分がある場合、それに関連する下位階層の符号化データで復号できない部分ができる。また、下位階層の符号化データに誤りがあり、復号できない部分がある場合、それに対応する上位階層の符号化データの復号値を変更するようにする。図34はあくまで復号値判定方法の一つの例であり、各階層iの可変長復号化部207−i内の復号値判定部110では、上位階層と下位階層の復号結果を用いて順方向復号結果および逆方向復号結果の少なくとも一方で誤りが検出された場合は、順方向復号結果および逆方向復号結果のうち正しいと推定される方の復号結果を使用し、順方向復号および逆方向復号のいずれでも復号ができなかった部分については、その復号結果を放棄する方法であれば、どのような方法でもよいことはいうまでもない。また、この第4実施形態では全ての階層で順方向にも逆方向にもリバーシブル符号を用いる構成としたが、一部の階層のみにリバーシブル符号を用いる構成でも構わない。
(第5実施形態)
次に、図11に示した動画像符号化/復号化システムの動画像多重化部703および動画像多重化分離部707に第4実施形態で説明した可変長符号化/復号化装置を適用した第5実施形態について説明する。この場合の動画像符号化/復号化システムの基本的な構成と動作は第2の実施形態と同様であり、動画像多重化部703および動画像多重化分離部707における可変長符号化および可変長復号化の処理が階層毎に行なわれる点が異なる。
図35、図36、図37および図38は、第5実施形態における動画像多重化部703での動画像符号化方式のシンタクスの種々の例を示している。まず、図35に示すシンタクスについて説明する。このシンタクスでは、符号化データである入力された情報シンボルを上位階層と下位階層の2つに階層化し、それぞれに対して同期符号RMおよびMMにより同期区間を設定している。下位階層のシンタクスの末尾のSTは、図9に示したような逆方向から復号可能なスタッフィング符号である。
上位階層は、図35(a)に示したようにヘッダ情報と、マクロブロック毎の符号化モード、各ブロックを符号化するか否かの情報およびINTRA DCの値をモード情報として先頭側に固めて、これらを通常の順方向復号が可能な可変長符号で記述し、その後に動きベクトル情報を図39〜図46に示した符号化テーブルによりリバーシブル符号に可変長符号化して配置する。図39〜図46に示す符号化テーブルにおいて、“VECTOR DIFFERENCES”は動きベクトルの予測値(差分値)、“BIT NUMBER”は可変長符号の符号長、そして“VLC CODE”は可変長符号を表す。
ここで、動きベクトルは図47に示すように一次元予測により得られ、予測値は差分値で表される。動きベクトルの予測方向を図47中に矢印で示す。図47に示すように、動きベクトルはマクロブロック(図47中に大きな四角で示す)に1本存在する場合と、各輝度ブロック(図47中に小さな四角で示す)毎に各1本の計4本存在する場合とがあるが、これらについて一次元予測を行ない、予測値を図39〜図46に示した符号化テーブルに従って可変長符号で記述する。なお、予測で得られない動きベクトルについては、その動きベクトルの値そのものを図39〜図46に示した符号化テーブルに従って可変長符号により記述する。図35(a)の末尾の動きベクトル情報がこれに相当する。一方、下位階層は図35(b)に示したようにINTRA DCを除くDCT係数情報であり、例えば図14〜図20や特願平7−260383に記載されたリバーシブル符号で記述される。
次に、図36に示すシンタクスについて説明する。このシンタクスでは、上位階層は図36(a)に示すようにヘッダ情報とマクロ符号化毎の動きベクトルの数を表したモード情報1を先頭側に固めて、通常の順方向復号が可能な可変長符号で記述し、その後に動きベクトル情報の可変長符号を記述する。動きベクトル情報の可変長符号は、図35のシンタクスと同様である。下位階層は、図36(b)に示すように各ブロックのDCT係数があるか否かを示すモード情報2およびINTRA DCを先頭側に固めて、これらを通常の順方向復号が可能な可変長符号で記述し、その後にINTRA DCを除くDCT係数情報を図35のシンタクスと同様にリバーシブル符号で記述する。
次に、図37に示すシンタクスについて説明する。このシンタクスでは、上位階層に順方向復号が可能な可変長符号のみを用いている。すなわち、上位階層は図37(a)に示すように、ヘッダ情報、モード情報および動きベクトル情報を順方向復号が可能な可変長符号で記述し、下位階層は図37(b)に示すように、DCT係数情報を図35のシンタクスと同様にリバーシブル符号により記述している。
図38に示すシンタックスも、上位階層に順方向復号が可能な可変長符号のみを用いている。すなわち、上位階層は図38(a)に示すように、ヘッダ情報、マクロ符号化毎の動きベクトルの数を表したモード情報1および動きベクトル情報を順方向復号可能な可変長符号で記述する。下位階層は図38(b)に示すように、各ブロックのDCT係数があるか否かを示すモード情報2およびINTRA DCを先頭側に固めて、これらを通常の順方向復号が可能な可変長符号で記述し、その後にINTRA DC以外のDCT係数情報を図36のシンタクスと同様にリバーシブル符号で記述する。
第5実施形態における動画像多重化部703および動画像多重化分離部707の基本構成は図13(a)(b)に示す通りであるが、上位階層可変長符号化器901、下位階層可変長符号化器903および上位階層可変長復号化器905、下位階層可変長復号化器906の構成が第2実施形態とは異なっている。すなわち、情報源符号化器702で符号化されたデータのうち、例えば図35(a)または図36(a)のシンタクスで示された上位階層のデータが上位階層可変長符号化器901で可変長符号化され、多重化部903に送られる。また、情報源符号化器702で符号化されたデータのうち、図35(b)または図36(b)のシンタクスで示された下位階層のデータが可変長符号化器903で可変長符号化され、多重化部903に送られる。多重化部903では、上位階層の符号化データおよび下位階層の符号化データを多重化し、送信バッファ704に送る。
そして、この第5実施形態では上位階層可変長復号化器905および下位階層可変長復号化器906内の図32中に示した復号値判定部110では、順方向復号化器108によって得られた順方向復号結果から復号値を判定し、最終的な復号結果を出力する。各階層の順方向復号化器108および逆方向復号化器109での誤り判定は、符号語として存在しないビットパターンが出現した場合、およびチェックビット等で誤りを検出した場合には、検出位置はその場所とし、前記の判定方法で誤りが検出されない場合で、復号したビット数が同期区間内の符号化データのビット数と一致しない場合は、復号化の最初の位置を誤り検出位置とする。
次に、第5実施形態における復号値判定方法について説明する。図48は、動画像多重化部703での動画像符号化方式のシンタクスが図35に示すシンタクスである場合の復号値判定方法を示している。図35のシンタクスでは、上位階層の動きベクトル情報と下位階層のDCT係数情報にリバーシブル符号を用いているので、上位階層および下位階層の両者で双方向復号が可能である。
上位階層では、まずヘッダ情報とモード情報が復号される。ヘッダ情報やモード情報で誤りが発見されて全てが復号できない場合、誤りが生じた同期区間のマクロブロックの復号値は全てNot Codedとされ、前画面がそのまま表示される。もし、ヘッダ情報とモード情報が全て復号できた場合は、次に動きベクトル情報が双方向復号される。動きベクトル情報で復号ができない部分については、やはりNot Codedとされる。下位階層では、動きベクトルまで復号できたマクロブロックについてのみ、下位階層のDCT係数情報を使用される。誤りのためにDCT係数情報を放棄したマクロブロックは、Not Codedとされる。
図49は、動画像多重化部703での動画像符号化方式のシクタクスが図36に示すシンタクスである場合の復号値判定方法を示している。図36のシンタクスによると、上位階層ではまずヘッダ情報とモード情報1が復号される。ヘッダ情報やモード情報1で誤りが発見され、全てが復号できない場合は、誤りが生じた同期区間のマクロブロックの復号値は全てNot Codedとされ、前画面がそのまま表示される。もし、ヘッダ情報とモード情報1が全て復号できた場合は、次に動きベクトル情報が双方向復号される。この動きベクトル情報で復号ができない部分については、やはりNot Codedとされる。下位階層では、動きベクトルまで復号できたマクロブロックについてのみ下位階層のDCT係数情報が使用される。誤りのためにDCT係数情報を放棄したマクロブロックは、Not Codedとされる。
なお、図48および図49に示した復号値判定方法では、マクロブロック単位に復号値の判定を行なったが、ブロック単位でも符号語の単位で復号値の判定を行なってもよい。また、この第5実施形態では動きベクトル情報とDCT係数情報の可変長符号化に本発明を適用した場合について述べたが、可変長符号化を行なう他の情報シンボルについても本発明を適用できることはいうまでもない。
(第6実施形態)
次に、本発明の第6実施形態に係る可変長符号化/復号化装置について説明する。この第6実施形態の基本的な構成は第1実施形態の構成を示す図1のブロック図と同一なので、図1を参照しながら説明する。
符号化部113において、入力された情報シンボルは符号化器103に入力される。符号語テーブル102は、符号語テーブル作成部101によって予め作成された情報シンボルと可変長符号の符号語とを対応させて格納している。符号化器103は符号語テーブル102に格納されている符号語の中から、入力された情報シンボルに対応した符号語を選択する。同期区間設定部では、符号化器が選択した符号語を同期区間毎にまとめて符号化データとして出力する。この符号化データは、伝送系または蓄積系104を通して復号化部111に送られる。
復号化部114では、伝送系または蓄積系105より入力された符号化データから同期区間検出部106で符号化データの同期区間を検出し、符号化データをバッファ107に蓄積する。順方向復号化器109では、バッファに蓄積された符号化データの先頭から復号を開始し、逆方向復号化器111では、バッファに蓄積された符号化データの末尾から復号を開始する。
順方向復号化器では、符号化データに、順方向符号語テーブルに存在しないビットパターンが出現した場合、及びバッファのビット数と異なるビット数の符号化データが復号された場合、誤り検出と判定する。同様に逆方向復号化器でも、符号化データに、逆方向符号語テーブルに存在しないビットパターンが出現した場合、及びバッファのビット数と異なるビット数の符号化データが復号された場合、誤り検出と判定する。
復号値判定部では、順方向復号化器によって得られた復号結果(順方向復号結果という)と、逆方向復号化器によって得られた復号結果(逆方向復号値という)から復号値を判定し、最終的な復号結果を出力する。
図50は、符号語テーブル作成部101のブロック図である。情報シンボルの生起確率は、確率モデル作成部23に入力され、確率モデルを作成し、符号選択部21に入力され、選択可能な符号系の中から最も平均符号長の小さいものを選択し、選択結果を符号語構成部22に送る。符号語構成部22では、符号語選択部21で選択された符号の符号語を構成する。
この第6実施形態における確率モデルの設計方法は以下の通りである。第6実施形態では、様々な情報源の確率分布に対して、より汎用的で符号化効率のより確率モデルの設計方法について示す。
まず、記法を示す:
θi 情報源(i=1,…,n)
X 情報源の情報シンボルX=(x1 ,x2 ,…,xm )
P(X| θi ) θi の頻度分布
一例としては、複数のテスト画像を情報源として、そのテスト画像を符号化して得られた頻度分布を考えればよい。
ここで、設計する確率モデルQ(X)は、複数の情報源から得られた頻度分布を重み付けして平均して求めるものとする:
Q(X)=w(θ1 )P(X| θ1 )+…+w(θn )P(X| θn )
n
=Σw(θi )P(X| θi )
i=1
w(θi ) 重み付け係数 w(θ1 )+…+w(θn )=1
この時、いかに重み付け係数w(θi )を求めるかが問題となる。
情報源θi をQ(X)で符号化した時の理想符号長L(X| θi )は、
m
L(X| θi )=−ΣP(X| θi )log2(θ(X))
j=1
となる。各情報源に対して平均的に理想符号長L(X| θi )を最小化するには、
n m
M(X)=−(1/n)Σ ΣP(X| θi )log2(Q(X))
i=1 j=1
m
=−ΣU(X)log2(Q(X))
j=1
n
で、この時、U(X)=(1/n)ΣP(X| θi )とする。
i=1
この関数が最小になるのは、U(X)=Q(X)の時で、
w(θ1 )=…=w(θn )=1/n
となる。
別の確率モデルQ(X)の設計方法として、最悪の情報源を想定して確率モデルQ(X)を設計する手法を示す。
情報源θi をQ(X)で符号化した時の冗長度R(X| θi )は、
m
R(X| θi )=L(X| θi )+ΣP(X| θi )log2(P(X| θi ))
j=1
となる。この冗長度の各情報源に対する重みづけ平均S(X)は、
n
S(X)=Σw(θi )R(X| θi )
i=1
n m
=Σw(θi )ΣP(X| θi )
i=1 j=1
n
log2(P(X| θi )/Σw(θi )P(X| θi ))
i=1
となって、事象Xと事象θの相互情報量を示す関数になっている。この関数の最大値を求める方法は、S.Arimoto, "An algorithm for computing the capacity of arbitrary discrete memoryless channels,"IEEE Trans.Inform.Theory,Vol.IT-18,pp.14-20,1972. R.E. Blahut, "Computation of channel capacity and rate-distortion functions, "IEEE Trans.Inform.Theory,Vol.IT-18,pp.460-473,1972.に示されるArimoto-Blahutのアルゴリズム等が知られており、これらのアルゴリズムによってS(X)を最大化するつまり最悪の場合のw(θi )(i=1,…n )を求めることができる。
確率モデルQ(X)の設計方法として、理想符号長を平均的に最小にする方法と、平均的に最悪を想定する方法を示したが、2つの方法を組み合わせて、情報源をグループ化して前者の方法で確率モデルをいくつか作成し、その確率モデルに対して後者の方法を用いるなどの方法を適用してもよい。
図50に示す符号選択部21では、確率モデル作成部23で作成した確率モデルQ(X)を、情報シンボルXを確率の高い順にソーティングしたQ(Y)を作成し、一方、符号構成部22で作成されたリバーシブル符号の符号長を短い順にソーティングしたものF(Z)を作成し、
m
ΣQ(Y)F(Z)
j=1
を計算して最も値が小さいものを選択し、情報シンボルと符号語を対応させて符号語テーブルを作成する。
符号語構成部22で構成する符号は、例えば特願平7−89772および特願平7−260383並びに第1および第3実施形態で示されている符号語の重みを用いた順方向にも逆方向にも復号可能な可変長符号が用いられる。
(第7実施形態)
次に、本発明の第7実施形態を説明する。図51は、本発明の第7実施形態による可変長符号化/復号化装置が組み込まれた動画像符号化/復号化装置の概念図である。動画像符号化器709では、情報源符号化器702で符号化されたデータは、動画像多重化部703で可変長符号化、多重化等がおこなわれ、伝送バッファ704で平滑化された後に、符号化データとして、伝送系または蓄積系705に送り出される。符号化制御部701は、伝送バッファ704のバッファ量を考慮して、情報源符号化器702、動画像多重化部703の制御を行なう。
一方、動画像復号化器710では、伝送系または蓄積系705からの符号化データを受信バッファ706にためてから、動画像多重化分離部707で、符号化データの多重化分離、可変長復号化が行なわれ、情報源復号化器708に送られ、最終的に動画像が復号化される。
第7実施形態において追加されたシンタクスについて説明する。図53は、第7実施形態における動画像多重化部703および、動画像多重化分離部707での動画像符号化方式のシンタクスを示している。符号化データは、上位階層と下位階層に階層化し、それぞれを同期符号RMとMMによって、同期区間を設定している。また、下位階層のSTは、図62で示すような逆方向から復号可能なスタッフィング符号である。フレーム内符号化フレームは、図63のように、マクロブロックのモード情報の一部とINTRA DCを上位階層とし、モード情報の一部とAC−DCT係数情報を下位階層として、AC−DCT係数情報にリバーシブル符号を適用している。フレーム間符号化フレームは、図64のように、マクロブロックのモード情報の一部と動きベクトル情報を上位階層とし、モード情報の一部とINTRA DCとAC−DCT係数情報を下位階層として、AC−DCT係数情報にリバーシブル符号を適用している。
図53に示す上位階層と下位階層の符号化および復号化は、図52に示す動画像多重化部とにより行なわれている。これらの構成は、第5実施形態に係る符号化装置/復号化装置の構成と略同一である。すなわち、図51の動画像多重化部703および動画像多重化分離部707の基本構成は、図53(a)(b)に示す通りであるが、上位階層可変長符号化器801、下位階層可変長符号化器803および上位階層可変長復号化器805、下位階層可変長復号化器806の構成が第2実施形態とは異なっている。すなわち、情報源符号化器702で符号化されたデータのうち、例えば図53(a)のシンタクスで示された上位階層のデータが上位階層可変長符号化器801で可変長符号化され、多重化部803に送られる。また、情報源符号化器702で符号化されたデータのうち、図53(b)のシンタクスで示された下位階層のデータが可変長符号化器803で可変長符号化され、多重化部803に送られる。多重化部803では、上位階層の符号化データおよび下位階層の符号化データを多重化し、送信バッファ704に送る。
そして、この第7実施形態では上位階層可変長復号化器805および下位階層可変長復号化器806内の図32中に示した復号値判定部110では、順方向復号化器108によって得られた順方向復号結果から復号値を判定し、最終的な復号結果を出力する。各階層の順方向復号化器108および逆方向復号化器109での誤り判定は、符号語として存在しないビットパターンが出現した場合、およびチェックビット等で誤りを検出した場合には、検出位置はその場所とし、前記の判定方法で誤りが検出されない場合で、復号したビット数が同期区間内の符号化データのビット数と一致しない場合は、復号化の最処理位置を誤り検出位置とする。
(第8実施形態)
図54,図55は、本発明の第8実施形態に係る符号化/復号化装置における情報源符号化器702,情報源復号化器708の一例をそれぞれ示している。まず、図54において、入力画像信号は、ブロック化回路401でマクロブロックに分割される。マクロブロックに分割された入力画像信号は、減算器402に入力され、予測画像信号との差分がとられて、予測残差信号が生成される。この予測残差信号と、ブロック化回路401からの入力画像信号のいずれか一方を、モード選択スイッチ403により選択し、DCT(離散コサイン変換)回路404により離散コサイン変換される。DCT回路で得られたDCT係数データは、量子化回路405で量子化される。量子化されたデータは、2分岐され、一方はDCT係数情報として、動画像多重化器703に送られる。もう一方は逆量子化回路406およびIDCT(逆離散コサイン変換)回路407により量子化回路405およびDCT回路406の処理と逆の処理が順次行なわれた後、加算器408でスイッチ410を介して入力される予測画像信号と加算されることにより局部復号信号が生成される。この局部復号信号は、フレームメモリに蓄えられ、動き補償回路411に入力される。動き補償回路A010では、入力画像信号と局部復号信号との間で動き補償を行ない、動きベクトルを求め、予測画像信号を生成する。このとき求められた動きベクトル情報は、動画像多重化器703に送られる。モード選択回路412では、動き補償回路410からの情報に基づいて、各マクロブロックをどのような予測方式で符号化するかを決定し、その結果が量子化パラメータ等ともにモード情報として動画像多重化器703に送られる。なお、図54において、出力される符号化データはDCT符号化係数、動きベクトル情報、モード情報の3つが1つに纏められたデータである。
次に、図54により符号化されたデータを復号化する情報源復号化器708の構成について図55を参照しながら説明する。図55は、図54に対応する情報源復号化器708の一例を示している。図55において、情報源復号化器708は、動画像多重化分離回路707で分離したモード情報、動きベクトル情報、DCT係数情報等が入力される。
モード情報が入力されるモード判定回路504では、モード情報がINTRAならば、モード切替スイッチ505をオフに選択して、DCT係数情報を、逆量子化回路501で逆量子化し、IDCT回路502で逆離散コサイン変換処理を行なうことにより、再生画像信号を生成させる。この再生画像信号は、フレームメモリ506に参照画像として蓄積される一方、再生画像信号として出力する。モード情報かINTERならば、モード切替スイッチ505をオフに選択して、DCT係数情報を、逆量子化回路501で逆量子化し、IDCT回路502で逆離散コサイン変換処理を行ない、動きベクトル情報に基づいて、フレームメモリ504において参照画像を動き補償し、加算器503で足しあわせて、再生画像信号を生成させる。この再生画像信号は、フレームメモリ504に参照画像として蓄積される一方、再生画像信号として出力する。
(第9実施形態)
次に、本発明の応用例として、図56を用いて、本発明の可変長符号化/復号化装置が組み込まれた第9実施形態に係る動画像符号化/復号化システムを適用した画像送受信装置を説明する。パーソナルコンピュータ(PC)1001に備え付けられたカメラ1002より入力された画像信号は、PC1001に組み込まれた動画像符号化器709によって符号化される。動画像符号化器709から出力される符号化データは、他の音声やデータの情報と多重化された後、無線機1003より無線で送信され、他の無線機1004によって受信される。無線機1004で受信された信号は、画像信号の符号化データおよび音声データに分解される。これらのうち、画像信号の符号化データはワークステーション(EWS)1005に組み込まれた動画像復号化器710によって復号され、EWS1005のディスプレイに表示される。
一方、EWS1005に備え付けられたカメラ1006より入力された画像信号は、EWS1005に組み込まれた動画像符号化器709を用いて上記と同様に符号化される。符号化データは、他の音声やデータの情報と多重化され、無線機1004により無線で送信され、無線機1003によって受信される。無線機1003によって受信された信号は、画像信号の符号化データおよび音声やデータの情報に分解される。これらのうち、画像信号の符号化データはPC1001に組み込まれた動画像復号化器710によって復号され、PC1001のディスプレイに表示される。
(第10実施形態)
なお、上述した第1ないし第9実施形態に係る動画像符号化/復号化装置は、ハードウェアとしての構成として発明を捉えていたが、本発明はこれを発展させて上記各々の実施形態に係る符号化/復号化装置において用いられるデータまたはプログラムを記録する記録媒体としても捉えることができる。以下、第10実施形態に係るデータまたはプログラムを記録した記録媒体について説明する。
図51に示す情報源符号化器702では、量子化語の8×8のDCT係数のブロックについてブロックないのスキャンを行なって、LAST(0:ブロックの最後でない非零係数,1:ブロックの最後の非零係数),RUN(非零係数までの零ランの数)及びLEVEL(係数の量子化値)を求め、動画像多重化部703に送る。
動画像多重化部703内の下位階層可変長符号化器802は、図60に示すINTRA(フレーム内符号化)の非LAST係数のRUN,LEVELにリバーシブル符号の符号語(VLC_CODE)のINDEXを対応させたINDEXテーブルと、図61に示すINTER(フレーム間符号化)の非LAST係数のRUN,LEVELにリバーシブル符号の符号語(VLC_CODE)のINDEXを対応させたINDEXにテーブルと、図62に示すINTRA,INTER共通のLAST係数のRUN,LEVELにリバーシブル符号の符号語(VLC−CODE)のINDEXを対応させたINDEXテーブルと、図63,図64に示すINDEX値と符号語を対応させた符号語テーブルを持っている。
下位階層可変長符号化器802の動作を、図57のフローチャートに従って説明する。まず、モード情報に基づいて、INTERの時はINTRAの非LAST係数とLAST係数の符号語テーブル,INTERの時はINTERの非LAST係数とLAST係数のINDEXテーブルを選択する。(S101)
次に、符号語テーブルを用いて符号化するにあたって、(RUN,LEVEL)がINDEXテーブルのRUNの最大値R_max,LEVELの最大値L_maxと比較して、INDEXテーブル内に存在するかどうか確認する(S102)。
もし、存在した場合、図60〜図62のINDEXテーブルを引きINDEXの値が0であるかどうかチェックを行ない(S104),0でなければ、図12の符号語テーブルのINDEXの符号語を出力する。符号語テーブルの符号語の最終ビットの“s”は、LEVELの符号を表し、“s”が“0”のときは、LEVELの符号は正、“s”が“1”のときは、LEVELの符号は負である(S105)。INDEXの値が0であった場合と、範囲外であった場合は、符号語テーブルに存在しない係数で、図67に示すようにESCAPE符号を続けて、LAST係数かどうかの1ビットと図65および図66のRUNとLEVELの絶対値を固定長符号化し、この固定長符号化部の先頭に2つのエスケープのうち“00001”を付加し、末端にもエスケープ符号を付加する。図63,図64のINDEX値が0の符号語が、エスケープ符号であり、エスケープ(ESCAPE)符号として用いられるVLC_CODEの最終ビット“s”はLEVELの符号を表し、“s”が“0”ならばLEVELは正、“1”ならばLEVELは負である(S106)。
以上説明したように、INDEXテーブルを用いることにより、ESCAPE符号を用いた場合にも、探索することなく効率的に、符号語を出力できる。下位階層可変長復号化器802は、図68,図69の復号値テーブルを備えており、可変長符号を復号した結果得られるINDEX値に基づいて動作する。
次に、下位階層可変長復号化器の動作を、図58と図59のフローチャートに従って説明する。図58は、順方向の場合の復号動作である。まず、可変長復号を順方向復号する(S201)。次に、復号して得られたINDEX値が0かどうかをチェックし(S202)、0以外の場合は、上位階層のモード情報に基づいて、図68の復号値テーブルのINTRAとINTERを選択して、LAST,RUN,LEVELの復号値を得る(S203)。INDEX値が0の場合は、ESAPE符号であるから、次に続く固定長符号を復号して、LAST,RUN,LEVELの復号値を得る(S204)。つづいて、末尾のESCAPE符号を復号する(S205)。LEVELの正負は、符号語の最終ビットが“0”ならば、正であり、“1”ならば、負である(S206)。
図59は、逆方向の場合の復号動作である。まず、符号語の最初の1ビットで、LEVELの正負を決定する。もし、“0”ならば、正であり、“1”ならば負である(S301)。次に可変長符号を逆方向復号する(S302)。逆方向復号して得られたINDEX値が0かどうかチェックし(S303)、0以外の場合は、上位階層のモード情報に基づいて、図68の復号値テーブルのINTRAとINTERを選択して、LAST,RUN,LEVELの復号値を得る(S304)。INDEX値が0の場合には、ESCAPE符号であるから、次に続く固定長符号を復号して、LEVEL,RUN,LASTの復号値を得る(S305)。つづいて、先頭のESCAPE符号を復号する(S306)。以上説明したように、復号値テーブルを用いることで、ESCAPE符号を使った場合にも記憶量を節約し、効率的に双方向に復号することができる。
上記第10実施形態におけるデコードプロセスの補強例について説明する。すなわち、動画像多重化部703での動画像符号化方式のシンタクスが図53に示すシンタクスである場合の復号値判定方法について説明する。
フレーム内符号化フレームでは、まず、上位階層のモード情報1とINTRADCが復号される。もし、誤りが発見されて全てを復号できない場合は、誤りの生じた同期区間のマクロブロックの復号値を全てNot Codedとする。もし、符号化が最初のフレームで時間的に前のフレームが存在しない場合は、灰色あるいは特定の色でマクロブロックを埋める。
下位階層では、モード情報2が誤りのため復号できない場合、下位階層の符号化データを全て放棄し、上位階層の復号値を書き換えて、Not Codedとするか、INTRA DCのみで表示する。また、誤りのためDCT係数を放棄したマクロブロックは、Not Codedとするか、INTRA DCのみで表示する。
また、INTRAモードのマクロブロックで、AC−DCT係数の予測を行なっているマクロブロックがある場合は、可変長符号は復号できるが、周辺のマクロブロックからの予測を行なっているので、周辺のマクロブロックが復号できていないために復号できない場合、Not Codedとする。
フレーム間符号化フレームでは、まず、上位階層のモード情報1と動きベクトルが復号される。もし、誤りが発見されて全てを復号できない場合は、誤りが生じた同期区間のマクロブロックの復号値は全てNot Codedとされる。もし、全て復号できた場合、同期符号MMが存在することを確認し、もし、存在しなければ、やはり、同期区間のマクロブロックの復号値を全てNot Codedとする。
下位階層では、モード情報2及びINTRA DCで誤りのため復号されない場合、下位階層の符号化データを放棄し、Not Codedと表示するか、または、前フレームからの動き補償のみでの表示(MC Not Coded)に上位階層の復号値を書き換える。また、誤りのためDCT係数を放棄したマクロブロックは、MC Not Codedとする。
また、INTRAモードのマクロブロックで、AC−DCT係数の予測を行なっているマクロブロックがある場合は、可変長符号は復号できるが、周辺のマクロブロックからの予測を行なっているので、周辺のマクロブロックが復号できていないために復号できない場合、Not Codedとする。
図70はフレーム間符号化フレームのAC−DCT係数部の詳しい復号値判定方法を示している。
まず、図70(a)に示すように順方向復号結果と逆方向復号結果で誤りが検出されるマクロブロックの位置(誤り検出位置)が交差しない場合は、誤りが検出されなかったマクロブロックの復号結果のみを復号値として使用し、二つの誤り検出位置の復号結果は復号値として使用せず、上位階層のモード情報の復号結果に基づいて、INTRAマクロブロックについては、前フレームをそのまま表示するように、INTRAマクロブロックについては、前フレームより動き補償のみで表示するように、上位階層の復号結果を書き換える。
また、図70(b)に示すように順方向復号結果と逆方向復号結果の誤りの検出位置が交差する場合は、順方向復号の結果で誤りが検出されたマクロブロックまでの復号値は、順方向復号結果を使用し、それ以降の部分は、逆方向復号結果を復号値として使用する。
なお、逆方向復号結果を優先して、逆方向復号の結果で誤りが検出されたマクロブロックまでの復号値は、逆方向復号結果を使用し、それ以前の部分は、順方向復号結果を復号値として使用してもよい。
さらに、図70(c)に示すように同一のマクロブロックで順方向復号結果および逆方向復号結果の両方に誤りが検出される場合は、誤り検出位置のマクロブロックの復号値は放棄し、復号値として使用せずに、上位階層のモード情報の復号結果に基づいて、INTRAマクロブロックについては、前フレームをそのまま表示するように、INTERマクロブロックについては、前フレームよりの動き補償のみで表示するように、上位階層の復号結果を書き換え、それ以後のマクロブロックに対する復号値は逆方向の復号結果を使用する。
また、図70(d)に示すようにスタッフィング符号で誤りが検出され、逆方向に復号できない場合は、順方向復号のみ復号を行ない、誤りが検出された場合、誤り検出位置以降のマクロブロックは、上位階層のモード情報の復号結果に基づいて、INTRAマクロブロックについては、前フレームをそのまま表示するように、INTERマクロブロックについては、前フレームよりの動き補償のみで表示するように、上位階層の復号結果を書き換え、それ以後のマクロブロックに対する復号値は逆方向の復号結果を使用する。
図70の復号値判定方法では、マクロブロックを単位に復号値の判定をおこなったが、ブロックの単位でも、符号語の単位で判定をおこなってもよい。
以上実施形態で説明したように、本発明の可変長符号化/復号化装置は、従来と比較して、より少ない計算量と記憶量で十分であり、効率的である。
具体的には、動画像符号化/復号化装置にも適用することが可能であり、より少ない計算量と記憶量で効率的な動画像符号化/復号化装置を提供することができる。