(57)【特許請求の範囲】
【請求項１】
パリティを有する各変換係数を処理して、逆直交変換する際の丸め誤差を生じさせない誤差の無い変換係数の組を出力する変換係数処理方法において、
上記変換係数を加算して、パリティを有する和を求めるステップと、
上記和のパリティを判定するステップと、
上記和のパリティが偶数のとき、上記変換係数のうちの１つのパリティを反転して、上記パリティの和を奇数にするパリティ反転変換係数を得るステップと、
上記パリティ反転変換係数を含む変換係数を、上記誤差の無い変換係数の組として出力するステップとを有する変換係数処理方法。
【請求項２】
上記変換係数は、２次元の離散コサイン変換により得られる変換係数であり、
上記変換係数の組は、DC成分の変換係数を含み、
上記変換係数のうちの１つのパリティを反転するステップにおいて、上記DC成分の変換係数以外の変換係数のうちの１つのパリティを反転することを特徴とする請求の範囲第１項記載の変換係数処理方法。
【請求項３】
上記変換係数の組は、最高周波数成分の変換係数を含み、
上記変換係数のうちの１つのパリティを反転するステップにおいて、上記最高周波数成分の変換係数のパリティを反転することを特徴とする請求の範囲第２項記載の変換係数処理方法。
【請求項４】
上記組の各変換係数は、最下位ビットを含む２進数で表現され、
上記変換係数のうちの１つのパリティを反転するステップにおいて、上記変換係数のうちの１つの最下位ビットを反転することを特徴とする請求の範囲第３項記載の変換係数処理方法。
【請求項５】
上記組の各変換係数は、極性を有し、
上記変換係数のうちの１つのパリティを反転するステップは、
上記変換係数のうちの１つの極性を判定するステップと、
上記極性が負のときは、上記変換係数のうちの１つに所定の奇数値を加算するステップと、
上記極性が正のときは、上記変換係数のうちの１つから所定の奇数値を減算するステップとを有することを特徴とする請求の範囲第２項記載の変換係数処理方法。
【請求項６】
最後の変換係数を含んだ組の変換係数を順番に受け取るステップを有し、
上記変換係数のうちの１つのパリティを反転するステップにおいて、上記最後の変換係数のパリティを反転することを特徴とする請求の範囲第２項記載の変換係数処理方法。
【請求項７】
上記組の変換係数の全てが、０以外の値を有することを特徴とする請求の範囲第１項記載の変換係数処理方法。
【請求項８】
上記組の各変換係数は、最下位ビットを含む２進数で表現され、
上記変換係数の和を求めるステップにおいて、各変換係数の最下位ビットのみの和を求めることを特徴とする請求の範囲第１項記載の変換係数処理方法。
【請求項９】
変換係数ブロックから上記組の変換係数を選択するステップを有することを特徴とする請求の範囲第１項記載の変換係数処理方法。
【請求項１０】
パリティを有する各変換係数を処理して、逆直交変換する際の丸め誤差を生じさせない誤差の無い変換係数の組を出力する変換係数前処理装置において、
上記組の各変換係数が供給され、パリティを有する和を求めるアキュムレータと、
上記アキュムレータから和が供給され、該和のパリティを判定するパリティ判定手段と、
上記パリティ判定手段が上記和のパリティを偶数と判定したときに動作し、上記変換係数のうちの１つのパリティを反転して、上記和のパリティを奇数にするパリティ反転変換係数を得るパリティ反転手段と、
上記パリティ反転変換係数を含む変換係数を、上記誤差の無い変換係数の組として出力する手段とを備える変換係数前処理装置。
【請求項１１】
上記変換係数は、２次元の離散コサイン変換により得られる変換係数であり、
上記変換係数の組は、DC成分の変換係数を含み、
上記パリティ反転手段は、上記DC成分の変換係数以外の変換係数のうちの１つのパリティを反転することを特徴とする請求の範囲第10項記載の変換係数前処理装置。
【請求項１２】
上記変換係数の組は、最高周波数成分の変換係数を含み、
上記パリティ反転手段は、上記最高周波数成分の変換係数のパリティを反転することを特徴とする請求の範囲第11項記載の変換係数前処理装置。
【請求項１３】
上記組の各変換係数は、最下位ビットを含む２進数で表現され、
上記パリティ反転手段は、上記変換係数のうちの１つの最下位ビットを反転することを特徴とする請求の範囲第12項記載の変換係数前処理装置。
【請求項１４】
上記組の各変換係数は、最下位ビットを含む２進数で表現され、
上記アキュムレータは、各変換係数の最下位ビットのみの和を求める手段を備えることを特徴とする請求の範囲第10項記載の変換係数前処理装置。
【請求項１５】
変換係数ブロックから上記組の変換係数を選択する手段を備える請求の範囲第10項記載の変換係数前処理装置。
【請求項１６】
最下位ビットを含む２進数で表現された変換係数の組を、丸め誤差を発生させずに逆直交変換する逆直交変換方法において、
上記各変換係数の最下位ビットを判定するステップと、
値が１の最下位ビットを有する変換係数をカウントして、カウント値を出力するステップと、
上記カウント値が偶数であるかを判定するステップと、
上記カウント値が偶数であるときは、上記変換係数のうちの１つを変更して、上記カウント値を奇数にする変更変換係数を生成するステップと、
上記変更変換係数を含む変換係数の組を逆直交変換するステップとを有する逆直交変換方法。
【請求項１７】
パリティを有する変換係数の組を、丸め誤差を発生させずに逆直交変換する逆直交変換装置において、
上記変換係数を加算して、パリティを有する和を求める手段と、
上記和のパリティを判定するパリティ判定手段と、
上記パリティ判定手段が上記和のパリティを偶数と判定したときに動作し、上記変換係数のうちの１つのパリティを反転して、上記和を奇数にするパリティ反転変換係数を生成する和奇数化手段と、
上記和奇数化手段から、上記パリティ反転変換係数を含む変換係数の組が供給される逆直交変換回路とを備える逆直交変換装置。
【請求項１８】
上記和奇数化手段は、上記パリティ判定手段が上記和のパリティを偶数と判定したときに、上記変換係数のうちの１つに１を加算することを特徴とする請求の範囲第17項記載の逆直交変換装置。
【請求項１９】
上記各変換係数は極性を有し、
上記和奇数化手段は、
上記各変換係数の極性を判定する極性判定手段と、
上記極性判定手段が上記変換係数の極性を正と判定したときに、上記変換係数に１を加算し、上記極性判定手段が上記変換係数の極性を負と判定したときに、上記変換係数から１を減算する手段とを備えることを特徴とする請求の範囲第17項記載の逆直交変換装置。
【請求項２０】
上記各変換係数は、最下位ビットを含む２進数で表現され、
上記パリティ判定手段は、
上記各変換係数の最下位ビットを検出するLSB検出手段と、
上記LSB検出手段からの各変換係数の最下位ビットが供給される第１の入力と、第２の入力と、出力とを有する排他的論理和ゲートと、
上記排他的論理和ゲートの出力に接続された入力と、上記排他的論理和ゲートの第２の入力に接続された出力とを有するレジスタと、
上記レジスタの出力に接続されたパリティ判定回路とを備えることを特徴とする請求の範囲第17項記載の逆直交変換装置。
【請求項２１】
状態を有する最下位ビットを含む２進数で表現された変換係数の組を、丸め誤差を発生させずに逆直交変換する逆直交変換装置において、
上記各変換係数の最下位ビットの状態を判定する最下位ビット判定手段と、
上記最下位ビット判定手段により、上記最下位ビットが１の状態であると判定された変換係数をカウントして、カウント値を出力するカウント手段と、
上記カウント手段からのカウント値が偶数であるかを判定するカウント判定手段と、
上記カウント判定手段が上記カウント値を偶数と判定したときに動作し、上記変換係数のうちの１つを変更して、上記カウント値を奇数にする変更変換係数を生成するカウント奇数化手段と、
上記カウント奇数化手段から、上記変更変換係数を含む変換係数の組が供給される逆直交変換回路とを備える逆直交変換装置。
【発明の詳細な説明】
技術分野
本発明は、変換係数処理方法、変換係数前処理装置、並びに逆直交変換方法及び装置に関する。特に、本発明は、動画像信号の変換係数の前処理方法及び装置、並びに逆直交変換方法及び装置に関する。
背景技術
直交変換は、様々なディジタル信号処理装置において、様々な用途に用いられている。直交変換は周波数領域での信号処理を行うことを可能とするものである。直交変換としては、高速フーリエ変換（FFT:Fast Fourier Tranform）、離散コサイン変換（DCT:Discrete Cosine Transform）などが広く知られている。直交変換は、例えば、時間領域の信号成分を、時間領域の元の信号成分のスペクトル（すなわち、エネルギーの周波数に対する分布）を示す周波数成分（直交変換関数によって異なる）に分解する。信号成分を直交変換することにより得られる周波数成分（一般に変換係数と呼ばれる）に種々の処理を施すことにより、元の信号成分の冗長度を削減することができる。すなわち、直交変換は、元の信号成分を直交変換し、得られる変換係数に処理を施すことにより、元の信号成分を表すビット数をよりも少ないビット数とすることができる。また、変換係数を逆直交変換することにより、元の信号成分を得ることができる。
直交変換処理を利用したディジタル信号処理装置の一例として動画像信号の圧縮装置及び伸長装置がある。
相関性の強い信号は、周波数軸上では低周波数領域に信号電力が集中することが知られている。ある特定の座標軸（例えば周波数軸）への信号電力の集中度が高ければ高いほど、冗長度の削減が可能であり、信号圧縮効率が向上する。
画像信号は一般に空間的及び時間的に強い相関性を有するので、直交変換を行って特定の座標軸に電力を集中させ、動画像信号の高能率圧縮を実現することができる。
従来、例えばNTSC方式のビデオ信号に代表される動画像信号は、情報量が極めて多く、動画像信号を長時間記録するには、大容量の記録媒体が必要であった。さらに、このような記録媒体に対して動画像信号を記録再生する際の情報レートも非常に高かった。このため、動画像信号の記録には、大型の磁気テープや光ディスクが必要であった。
より小型の記録媒体に動画像信号を長時間記録する場合には、動画像信号に信号圧縮処理を施して記録情報量を削減することが不可欠である。さらに、小型の記録媒体から再生される圧縮動画像信号を伸長する装置が必要である。
このような要求に応えるため、動画像信号を構成する各画像を表す動画像信号間や動画像信号の各部分間の相関を利用した様々な動画像信号圧縮方式が提案されている。例えば、MPEG（Moving Picture Experts Group）により提案された動画像信号圧縮方式が広く知られている。このMPEG方式については、各種文献にて広く紹介されているので、ここでは詳細な説明は割愛する。
以下の説明は「画像」についてである。ここで説明する信号処理技術は、動画像を表す動画像信号の処理に関するものであり、一般には、ここで言う「画像」は、動画像の１つの画像を表す動画像信号の部分のことである。また、１つの動画像信号は、動画像の１つの画像をフレームあるいはフィールドとして表すことができる。特に記述のない場合、「画像」とはフィールドあるいはフレームのことである。
このMPEG方式は、まず、動画像信号を構成する画像間の差分を求め、動画像信号の時間軸方向の冗長度を低減する。その後、MPEG方式は、画像間差分のブロックに空間軸方向の直交変換処理を施すことにより、動画像信号の空間軸方向の冗長度を低減する。MPEG方式は、直交変換処理として離散コサイン変換（DCT）処理を用いている。時間軸及び空間軸の両方向の冗長度を低減すことにより、動画像は極めて効率よく圧縮される。このような圧縮処理によって得られる圧縮動画像信号は、記録媒体に記録され、あるいは伝送媒体を介して伝送される。
圧縮動画像信号を記録媒体から再生し、あるいは伝送媒体を介して受信する場合には、DCT変換により得られる変換係数のブロックを圧縮動画像信号から抽出する。変換係数を逆直交変換（MPEG方式における逆離散コサイン変換（IDCT:Inverse Discrete Cosine Transform））を用いて処理し、画像間差分のブロックを再生して、元の動画像信号の画像を再生する。
MPEG方式に基づいた動画像信号圧縮装置の構成例を図１に示す。この図１に示す動画像信号圧縮装置では、ディジタル動画像信号がブロック化回路101に入力され、例えばNTSC方式などの標準ビデオフォーマットからブロックフォーマットに変換されて、ブロック化動画像信号が生成される。ここで、動画像信号の各画像は、空間軸方向、すなわち水平方向及び垂直方向に16×16画素のマクロブロックに分割される。マクロブロックはさらに８×８画素のブロックに細分割される。
図１に示す動画像信号圧縮装置は、画像を構成するブロック全てが処理されるまで、動画像信号の各画像をブロック単位で圧縮する。つぎに、この動画像信号圧縮装置は、動画像信号の別の画像を処理するが、この別の画像は、動画像を構成する一連の画像における次の画像であってもよく、なくてもよい。以下に、図１に示す動画像信号圧縮装置における１つの画像内の画素の１ブロックの圧縮について説明する。圧縮される画素のブロックは現画像ブロックである。ブロック化動画像信号は動き予測器102に供給される。動き予測器102は、現画像ブロックS1を含む現画像をブロック単位で差分ブロック算出回路103に供給する。
差分ブロック算出回路103は、動き予測器102から現画像ブロックS1を受信するときに、動き予測器102からの現画像ブロックS1に対応するマッチングブロックS2を受信する。このマッチングブロックS2は、ピクチャメモリ群112に記憶された再生画像から予測器113によって得られる。差分ブロック算出回路103は、現画像ブロックS1と、これに対応するマッチングブロックS2との画素単位の差分をとる。得られる差分ブロックS3は直交変換回路104に供給される。
直交変換回路104は、通常DCT回路であり、差分ブロックS3を直交変換し、得られる変換係数のブロックを量子化器105に供給する。量子化器105は、変換係数のブロックを量子化して量子化変換係数のブロックを生成する。可変長符号化器106は、量子化器105からの量子化変換係数のブロックに、ハフマン符号化、ランレングス符号化等の可変長符号化を施す。そして、得られる符号化変換係数のブロックは出力バッファ107を介して、例えばディジタル伝送路に出力される。
出力バッファ107に記憶されたビット数を示す制御信号は、量子化器105にフィードバックされる。量子化器105は、この制御信号に応じて量子化ステップサイズを調整して、そのオーバフローやアンダフローを防止する。
また、量子化変換係数のブロックは、量子化器105から逆量子化器108に送られる。逆量子化器108は、この動画像信号圧縮装置での予測符号化の際に用いられる再生画像を量子化変換係数から生成する局部復号化器の一部である。逆量子化器108は、量子化器105による量子化処理と相補的な処理を行うことにより、量子化変換係数のブロックを逆量子化する。得られる変換係数のブロックは、逆直交変換回路109に送られ、そこで直交変換回路104による直交変換処理と相補的な処理を行うことによって、逆直交変換される。得られる再生差分ブロックS4は加算器110に供給される。
また、この加算器110は、ピクチャメモリ群112のうちの予測器113によって選択された１つのピクチャメモリから、現画像ブロックS1に対応したマッチングブロックS2が供給されている。加算器110は、逆直交変換回路109からの再生差分ブロックS4と、ピクチャメモリ群112からのマッチングブロックS2との画素単位の加算を行い、再生画像ブロックS5を生成する。再生画像ブロックS5は、セレクタ111により選択されたピクチャメモリ112A〜112Dのうち何れか１つに供給されて、記憶される。
再生画像ブロックS5は、選択されたピクチャメモリに記憶され、そのピクチャメモリ内の再生される画像の（現画像ブロックに対応する）１ブロックをブロック単位で形成する。その後、再生画像は、動画像信号の他の画像を圧縮する予測符号化のためのマッチングブロックS2を得るのに用いられる。
動き予測器102は、現画像のマクロブロック毎に、現画像のマクロブロックと、記憶されている動画像信号の他の画像の異なるマクロブロックとの動きベクトルを決定する。また、動き予測器102は、現画像の各マクロブロック内の画素と、他の画像の異なるマクロブロック内の画素との差分の絶対値和（絶対値差分和）を生成する。各絶対値差分和は、現画像の各マクロブロックと、他の画像のマクロブロックとのマッチングの度合を示す。動き予測器102は、各動きベクトルとそれに対応する絶対値差分和を予測モード決定回路115に供給する。
予測モード決定回路115は、動き予測器102からのデータを用いて、１以上の他の再生画像に基づいて現画像を予測符号化するのに用いられる予測モードを決定する。現画像は、以下の予測モードの何れか１つを用いて予測符号化することができる。
（１）他の画像を参照せず画像自体で圧縮される画像内モード。このように符号化された画像はＩピクチャと称せられる。
（２）動画像において時間的に先行する再生画像を参照して予測を行う前方予測モード。このように符号化された画像はＰピクチャと称せられる。
（３）動画像において時間的に先行する再生画像と動画像において時間的に後行する再生画像を参照して、あるいは、先行する再生画像と後行する再生画像の画素単位の線形演算（例えば、平均値計算）を行うことにより、ブロック単位の予測を行う両方向予測モード。このように符号化された画像はＢピクチャと称せられる。
すなわち、Ｉピクチャは、画像内で画像内符号化が完結する画像である。Ｐピクチャは、動画像において時間的に前にある再生Ｉピクチャ又はＰピクチャより予測される。Ｂピクチャは、時間的に前又は後にある再生Ｉピクチャ又はＰピクチャを用いてブロック単位で予測されるか、あるいは、動画像において時間的に前にある再生Ｉピクチャ又はＰピクチャと時間的に後にある再生Ｉピクチャ又はＰピクチャから線形演算によって得られるブロックを用いて予測される。
そして、予測モード決定回路115は、予測モード信号PMとそれに対応する動きベクトルを予測器113及び読出アドレス発生器114に供給する。読出アドレス発生器114は、動きベクトルに応じて、ピクチャメモリ群112に読出アドレスを供給し、ピクチャメモリ112A乃至112Dから記憶されている再生画像のブロックを読み出させる。再生画像の読出ブロックの位置は、動きベクトルにより指定される。予測器113は、予測モード決定回路115からの予測モード信号PMに基づいて、ピクチャメモリ112A乃至112Dから読み出されたブロックのうちの１つを選択する。選択された読出ブロックは、現画像ブロックS1に対するマッチングブロックS2である。現画像ブロックがＢピクチャの一部である場合、予測器113は、ピクチャメモリ112A乃至112Dからの読出ブロックに対して線形演算を行い、必要なマッチングブロックS2を生成する。予測器113は、マッチングブロックS2を差分ブロック算出回路103と加算器110に供給する。
MPEG方式による動画像信号伸長装置の構成例を図２に示す。この動画像信号伸長装置では、動画像信号圧縮装置から直接、あるいは記録媒体から再生された圧縮動画像信号は、ビットストリームとして入力バッファ121に供給され、一時的に記憶される。圧縮動画像信号は、符号化変換ブロック（現画像ブロックを表す符号化変換係数のブロックを含む）、及び各ブロックの予測モード情報、量子化ステップサイズ情報、動きベクトルからなる。
圧縮動画像信号は、入力バッファ121から１画像毎に読み出されて、逆可変長符号化器（IVLC）122に供給される。この逆可変長符号化器122は、圧縮動画像信号に逆可変長符号化を施して、圧縮動画像信号を量子化変換係数のブロック、及び各ブロックの予測モード情報、量子化ステップサイズ情報、動きベクトルからなる成分に分離する。
符号化変換係数の各ブロックは、逆量子化器123に供給され、この逆量子化器123は、ブロックの量子化ステップサイズを用いて量子化変換係数のブロックを逆量子化し、変換係数のブロックを生成する。逆直交変換回路124は、変換係数のブロックに逆直交変換処理、通常IDCT処理を施して、再生差分ブロックを生成する。逆量子化器123と逆直交変換回路124はそれぞれ、図１に示す動画像信号圧縮装置の量子化器105と直交変換回路104による処理と相補的な処理を行う。
読出アドレス発生器130は、逆可変長符号化器122から供給される現画像ブロックの動きベクトルに応じて、ピクチャメモリ128A乃至128Dに読出アドレスを供給する。各ピクチャメモリ128A乃至128Dは、読出アドレスに基づいて、記憶されている再生画像のブロックを読み出す。予測器129は、予測モード信号PMに応じて、ピクチャメモリ128A乃至128Dからの読出ブロックの何れか１つを選択する。選択された読出ブロックは、現画像ブロックを再生するためのマッチングブロックである。現画像ブロックがＢピクチャとして符号化された画像の一部をなす場合、予測器129は、ピクチャメモリ112A乃至112Dからの読出ブロックに対して線形演算を行って、マッチングブロックを生成する。予測器129は、マッチングブロックを加算器125に供給する。
加算器125は、逆直交変換回路124からの再生差分ブロックと、予測器129からのマッチングブロックとの画素単位の加算を行って、現画像の現画像ブロックを再生する。セレクタ126は、再生現画像ブロックをピクチャメモリ128A乃至128Dの何れか１に送って記憶させ、そこで現画像が再生される。再生現画像ブロックは、選択されたピクチャメモリ内の再生現画像の現画像ブロックの位置に記憶される。現画像の再生ブロック全てが、選択されたピクチャメモリ128A乃至128Dに記憶されると、再生現画像は、読出が可能となり、動画像における時間的に前又は後にある他の画像を再生するのに参照される。
ピクチャメモリ128A乃至128Dに記憶されている再生画像は、表示アドレス発生器127が発生する読出アドレスに応じて、セレクタ126を介し、出力動画像信号として読み出される。この出力動画像信号は、スキャンコンバータ（図示せず）によりピクチャメモリ128A乃至128Dから、例えばNTSC等の所定のビデオ信号フォーマットのラスタフォーマットで読み出される。得られる出力動画像信号は、例えばCRT等のディスプレイに表示される。この例では、同期信号発生器131は、外部同期発生器にロックされ、周期的にフレーム同期信号を発生し、これを表示アドレス発生器127に供給している。表示アドレス発生器127は、このフレーム同期信号に同期して読出アドレスを発生する。
直交変換回路、例えば上述した動画像信号圧縮装置や動画像信号伸長装置で用いられているDCT回路やIDCT回路等は、整数で表される画素値や変換係数に対して有限ビット数でそれぞれ演算を行う。その結果、これらの直交変換回路での直交変換では、ビット数の打ち切りが生じることがある。このため、実数を用いた直交変換の精度や、直交変換を行う回路構成が異なり、直交変換の結果が異なってしまう。これにより、動画像信号圧縮装置と動画像信号伸長装置間や共通の圧縮信号を伸長する動画像信号伸長装置間でミスマッチが生じる。
例えば、動画像信号圧縮装置では、圧縮動画像信号を生成する過程において、動画像信号から得られる差分ブロックは直交変換され、得られる変換係数は、所定の処理である量子化が施される。そして、動画像信号伸長装置においては、逆直交変換回路の実数演算精度や回路構成が動画像信号圧縮装置のものに対応していない場合、動画像信号伸長装置の出力が、動画像信号圧縮装置の入力と異なる可能性がある。すなわち、動画像信号伸長装置の出力は、動画像信号伸長装置に用いられている回路の演算精度や構成に依存する。
逆直交変換の演算精度や回路構成は、逆直交変換を行う装置によって異なる。例えば、変換係数のブロックを、２つの異なる回路構成の同種の逆直交変換回路を用いて逆変換すると、結果は異なることがある。このような結果の差異は、逆直交変換ミスマッチ誤差（ミスマッチ誤差）と呼ばれる。
MEPG方式は、DCTやIDCTの演算精度を規定しているが、演算方法や回路構成については何も規定していない。これは、MEPG方式の規格が決定される以前に、DCTやIDCTを行う回路や方法が開発されたためである。
MEPG方式においては、上述のように、動画像信号圧縮装置は、例えば動画像信号に対して画像間動き補償予測符号化を行う。ここで、動画像信号はブロックに分割され、現画像ブロックと、再生画像に動き補償を行うことにより得られるマッチングブロックとから差分ブロックが生成され、この差分ブロックがDCT処理により直交変換される。得られる変換係数は量子化され、量子化変換係数は可変長符号化が施され、そして、符号化変換係数は、予測モード情報、量子化ステップサイズ情報及び動きベクトルとともに組み込まれて、圧縮動画像信号が生成される。
動画像信号伸長装置は、符号化変換係数に逆可変長符号化を施し、逆可変長符号化により得られる量子化変換係数に逆量子化を行い、そして、逆量子化により得られる変換係数にIDCT処理を施す。得られる再生差分ブロックは、動きベクトルに応じて再生画像に動き補償を施すことにより得られるマッチングブロックに加算される。これにより得られる再生画像ブロックは、動画像出力信号を出力するための再生画像のブロックとして記憶され、参照画像としても使用される。
動画像信号圧縮装置は、予測符号化を行うための再生画像を量子化変換係数から再生する局部復号化器を内部に備える。この局部復号化器は、逆量子化器と逆直交変換回路を備える。
動画像信号圧縮装置の局部復号化器のIDCT回路と動画像信号伸長装置のIDCT回路の構成が異なると、動画像信号圧縮装置の局部復号化器で得られる再生画像が、動画像信号伸長装置で得られる再生画像と異なることがある。こうしたIDCT処理の実行による差異は、MPEG規格に準拠した動画像信号圧縮装置により生成した圧縮動画像信号を光ディスクなどの記録媒体に記録して販売する場合に問題を生じる。この光ディスクから再生された圧縮動画像信号を他の製造者により製造、販売された動画像信号伸長装置で伸長すると、再生画像が元の画像と異なることがある。しかも、その差異は、実際に使用された動画像信号伸長装置に依存する場合がある。圧縮動画像信号が、地上又は衛星放送、電話システム、ISDNシステム、ケーブル又は光配信システム等の配信システムにより配信される場合、異なる動画像信号伸長装置間で上述のような非互換性が生じる虞がある。
ミスマッチ誤差が特に問題となるのは、画像間予測符号化を行う場合である。画像間予測符号化は、フィールド間符号化やフレーム間符号化である。画像間予測符号化では、次第にこのミスマッチ誤差は累積されてしまい、再生画像に致命的な破綻を生じる可能性がある。
MPEG方式による動画像信号圧縮においては、各ビデオシーケンスは、例えば８又は12画像を単位とする画像郡（GOP:Group OfPictures）に分割されている。各画像は、上述したようにＩピクチャ、Ｐピクチャ、Ｂピクチャに分類される。
Ｂピクチャは動き予測の参照画像としては使用されない。したがって、Ｂピクチャで生じるミスマッチ誤差により他の画像に誤差が生じることはない。
Ｐピクチャでミスマッチ誤差が生じると、ミスマッチ誤差を有する画像が、予測符号化を行うためにピクチャメモリに記憶されることとなる。したがって、画像間予測符号化を行うと、ピクチャメモリ内に記憶されたＰピクチャの誤差が次第に大きくなり、予測符号化により得られるＰピクチャやＢピクチャにも及ぶ。この誤差は、誤差の無いＩピクチャ又はＰピクチャにより置換されるまで累積されていく。
同様に、Ｉピクチャにミスマッチ誤差が発生した場合、ミスマッチ誤差のある再生画像が、予測符号化を行うためにピクチャメモリに記憶されることとなる。したがって、画像間予測符号化を行うと、ピクチャメモリ内に記憶されたＩピクチャの誤差が、次第に大きくなり、予測符号化により得られるＰピクチャやＢピクチャにも及ぶ。この誤差は、誤差の無いＩピクチャにより置換されるまで累積されていく。
誤差の累積を図３に示す。図３において、Ｉピクチャを復号化する際に発生したミスマッチ誤差をEI、ＰピクチャP1を復号する際に発生したミスマッチ誤差をEP1とすると、再生されたＰピクチャP1に含まれる誤差の値はEI＋EP1となる。またＰピクチャP2を復号する際に発生したミスマッチ誤差をEP2とすれば、再生されたＰピクチャP2に含まれる誤差の値はEI＋EP1＋EP2となる。このように、個々のミスマッチ誤差は小さい値でも次第に累積していくと、大きな値の誤差となる。
このとき動画像信号圧縮装置及び動画像信号伸長装置のMPEG復号化器で用いられるIDCT処理によって発生したミスマッチ誤差には、次の２つのものが存在する。
（１）演算精度の不足に起因する誤差。
（２）四捨五入の方法の違いに起因する誤差。
演算精度はMPEGの規格で規定されているが、この規格は完全にミスマッチ誤差を発生させないほど十分ではなく、この規格を満たしているIDCT回路同士においても（１）のミスマッチ誤差が発生する可能性がある。
IDCT処理の出力は整数であるから、IDCT処理の実数演算を行った後、演算結果を整数に丸めなければならない。一般的には、最も近い整数に丸められる。しかし、ここで問題となるのは演算結果が＊.5（＊は整数）という数となった場合である。MPEG方式では演算結果である＊.5の丸め方法を規定していない。すなわち、あるIDCT回路ではこれを切り上げる処理を行うであろうし、またあるIDCT回路ではこれを切り捨てる処理を行う。また、演算結果の正負の符号により、丸め方法が異なる場合もある。この丸め方法の違いによって発生するミスマッチ誤差は、（２）のミスマッチ誤差である。
ここで、（１）のミスマッチ誤差がランダムに発生するのに対し、（２）のミスマッチ誤差は体系的であるという点で、（１）のミスマッチ誤差は、（２）のミスマッチ誤差とは異なる。（１）のミスマッチ誤差はランダムに発生するので、正の誤差と負の誤差がほぼ同じ確立で発生する。したがって、長時間予測符号化を行った場合、（１）のミスマッチ誤差は平均化されていくと考えられる。
一方、（２）のミスマッチ誤差は体系的であり、そのIDCT処理に固有のミスマッチ誤差であるので、一定して同一方向のミスマッチ誤差となる。したがって、長時間予測符号化を行うと、一方向に累積されていく。個々のミスマッチ誤差はわずか＋１又は−１であるが、一方向に累積されていくと、その値は次第に大きな値となる。
すなわち、（１）のミスマッチ誤差は、一時的には発生するものの、平均化されていくために、それほど大きな問題とはならない。一方、（２）のミスマッチ誤差は、一方向に累積するため、大きな問題となる。このため、累積する性質を有する（２）のミスマッチ誤差を防止する必要がある。
MPEG1方式では、（２）のミスマッチ誤差を防止するために、IDCT処理を行う前に、処理を行うことが提案されている。この処理は、画像内符号化画像（イントラマクロブロックという。）におけるマクロブロックの（0,0）成分以外の全変換係数の成分を奇数とする処理である。例えば図４に示すように、（0,1）成分、（7,1）成分、（2,3）成分、（5,3）成分、（1,5）成分、（6,5）成分、（3,7）成分、（4,7）成分は何れも変換係数が568であり、偶数であるので、これを前処理により、例えば奇数である567とする。この前処理を行った変換係数に対してIDCT処理を行うと、常に端数が出なくなる。
また、イントラマクロブロックのDC成分は、圧縮動画像信号から得られる画像において、視覚的に重要な信号であるので、その精度は８ビットに制限するのみにとどめておく。また、イントラマクロブロックのDC成分は、この重要成分の精度を低下させないために、奇数への変換は行わない。一方、画像間符号化を用いた符号化画像のマクロブロック（以下、ノンイントラマクロブロックという。）を変換することにより得られる変換係数は全て、イントラマクロブロックのDC成分以外の成分の変換係数と同様の処理を行い、変換係数を奇数のみに制限している。
このようにIDCT処理の対象である変換係数の値を奇数に制限する処理を、奇数化処理と呼ぶ。
このような奇数化処理を行うことにより、動画像信号圧縮装置と動画像信号伸長装置のIDCT処理が共通のルールで丸め処理を行い、画質の互換性を維持することができる。
しかし、上述の奇数化処理を行っても、IDCT処理により＊.5（＊は整数）という結果が生じることがあるため、MPEG1の処理では、累積する性質を有する（２）のミスマッチ誤差が発生する。＊.5という結果が生じる状況について、例えばMPEG方式における８×８の２次元IDCTを用いて以下に説明する。
８×８の２次元IDCTは以下の式で表される。
0003610578.tif 000002
上記の式において、Ｆ（u,v）は、２次元IDCTが施されるDCT係数を示す。式１において、IDCTの各出力値は実数、すなわち有理数や無理数である。＊.5は有理数であるので、IDCTの出力値を無理数にすることにより、累積する性質を有するミスマッチ誤差の発生を防ぐことができる。また、出力値が有理数である場合、その出力値を＊.5にすることができる。
DCT係数であるＦ（0,0）、Ｆ（0,4）、Ｆ（4,0）、Ｆ（4,4）は、特殊なDCT係数である。これらのDCT係数の何れかが非零値をとる場合、IDCTの出力値は有理数となる。この場合のIDCTの出力値は式２により表される。
0003610578.tif 000003
このように、特殊なDCT係数Ｆ（0,0）、Ｆ（0,4）、Ｆ（4,0）、Ｆ（4,4）の１つでも、４の倍数であって、８の倍数でない非零値をとる場合、出力値は＊.5となる。
上述の４つの特殊なDCT係数のみが非零値をとる係数である場合、IDCTの出力値は式３により表させる。
0003610578.tif 000004
ｘとｙの組合せが異なれば、式３中のｆ（x,y）は以下の値をとる。
0003610578.tif 000005
このように、４つの特殊なDCT係数が、式４で表される値の何れかが４の倍数であり８の倍数でないという値をとれば、結果は＊.5となる。
すなわち、４つの特殊なDCT係数が非零値をとれば、IDCTの出力値が＊.5となる可能性が高い。
また、上述の４つのDCT係数以外にも、非零値をとるDCT係数を対称的に種々に組み合わせることにより、＊.5という結果が得られる。例えば、
（１）DCT係数の組Ｘ（2n＋1,2m＋１）、Ｘ（2m＋1,2n＋１）が同一の非零値をとり、その値が４の倍数であり８の倍数でない場合。
（２）DCT係数の組Ｘ（2n＋1,2n＋１）、Ｘ（８−2n−1,8−2n−１）が同一の非零値をとり、その値が４の倍数であり８の倍数でない場合。
上記の表現において、Ｘ（i,j）は、８×８の２次元DCTの成分である変換係数である。
実際の動画像信号がMPEG方式に準拠した動画像信号圧縮装置により圧縮される場合、非零DCT係数は上記のパターンで得られることが多く、これによりIDCT出力値は＊.5となる。しかも、４つの特殊なDCT係数の値は、殆どの場合が非零である。
上述したように、最も頻繁に＊.5を発生させるDCT係数のパターンは、上述の４つのDCT係数が非零の値を有するときであるので、これらの場合に対策を施すことにより、ミスマッチ誤差の発生確率を下げることができる。
MPEG1におけるイントラマクロブロック及びノンイントラマクロブロックの逆量子化方法を図５に示す。図５において、QAC（i,j）はDCT係数の（i,j）成分、Wi（i,j）は重み行列の（i,j）成分、mquantは量子化係数、rec（i,j）は逆量子化されたDCT係数の（i,j）成分を示す。逆量子化方法はＣ言語の構文で記述されている。Ｃ言語の構文については、Herbert Schildt,Using Turbo C,Osborne McGraw Hill（1988）,p.83−87に記載されている。
量子化された各DCT係数は逆量子化された後、IDCT処理が施されるが、MPEG1では、DCT係数が偶数であった場合、＋１又は−１を加えてIDCT処理が施される値を全て奇数となるように処理を行う。この処理によると、例えば、４つのDCT係数のうちＦ（0,0）のみが非零の値を有する場合、Ｆ（0,0）が４の倍数でかつ８の倍数でないときにミスマッチ誤差を起こすので、DCT係数が全て奇数値を有するように処理を施して、IDCT変換すると、その結果は＊.5とはなり得ない。同様に、４つの特殊なDCT係数の他のDCT係数Ｆ（0,4）、Ｆ（4,0）、Ｆ（4,4）のどれか１つのみが非零の値を有する場合、ミスマッチ誤差を発生させない。しかし、図４から分かるように、上述の４つのDCT係数の内、複数個の係数が非零の値を有する場合、あるいは上述の（１）、（２）のように対称的なDCT係数の組がある場合には、全DCT係数を奇数にしても、ミスマッチ誤差の発生を防ぐことができない。
すなわち、MPEG1の奇数化処理では、非零の値を有するDCT係数が２個以上の場合、ミスマッチ誤差の発生を防ぐことができない。しかも、MPEG1では、偶数値を有する変換係数が存在してはならないので、MPEG1の奇数化処理は、量子化変換係数の分解能を劣化する。これにより、画質が低下し、高画質が求められる場合に問題となる。すなわち、累積する性質を有するミスマッチ誤差の防止方法であって、MPEG1の規格で提案されているものより優れた方法が切望されている。
発明の開示
こうした従来技術の問題を解決するために、本発明の目的は、変換係数を逆直交変換する際に、累積する性質を有するミスマッチ誤差の発生を効果的に防ぐことができ、かつ、変換係数の分解能を劣化させない方法及び装置を提供することである。
特に、本発明の目的は、ミスマッチ誤差の問題を効果的に解決することができる変換係数の逆直交変換方法及び装置を提供することである。
また、本発明の目的は、変換係数のブロックが逆直交変換されたときの丸め誤差を防止するために、変換係数のブロックを逆直交変換する前に、変換係数に前処理を施す変換係数処理方法及び変換係数前処理装置を提供することである。
さらに、本発明の目的は、従来の方式では解決できなかったミスマッチ誤差の発生を効果的かつ容易に防ぐことである。
本発明は、逆直交変換によって処理される誤差の無い変換係数の組を生成する変換係数処理方法を提供する。誤差の無い変換係数の組には、逆直交変換されたときの丸め誤差は発生しない。この変換係数処理方法では、組の変換係数の和が求められ、この和のパリティ（すなわち、和が奇数であるか偶数であるか）が判定される。この和のパリティが偶数であると判定されたとき、変換係数のうちの１つのパリティが反転されて、パリティ反転変換係数が生成される。このパリティ反転変換係数により、和のパリティは奇数になる。そして、このパリティ反転変換係数を含む変換係数の組は、誤差の無い変換係数の組として出力される。
また、本発明は、逆直交変換によって処理される誤差の無い変換係数の組を生成する変換係数前処理装置を提供する。誤差の無い変換係数の組には、逆直交変換されたときの丸め誤差は発生しない。この変換係数前処理装置はアキュムレータを備え、アキュムレータは、組の各変換係数が供給され、変換係数の和を求める。パリティ判定回路は、アキュムレータから和が供給され、和のパリティを判定する。パリティ反転回路は、パリティ判定回路により和のパリティが偶数であると判定されたときに動作し、変換係数のうちの１つのパリティを反転して、パリティ反転変換係数を生成する。このパリティ反転変換係数により、和のパリティは奇数になる。そして、このパリティ反転変換係数を含む変換係数の組は、誤差の無い変換係数の組として出力される。
さらに、本発明は、変換係数の組を、丸め誤差を発生させずに逆直交変換する逆直交変換方法を提供する。各変換係数は２進数によって表される。この逆直交変換方法では、各変換係数の最下位ビットが検出され、値が１の最下位ビットを有する変換係数がカウントされる。このカウント値は、偶数であるかが判定される。カウント値が偶数であると判定されたとき、変換係数のうちの１つが変更され、変更変換係数が生成される。この変更変換係数により、カウント値が奇数になる。そして、この変更変換係数を含む変換係数の組は、逆直交変換される。
また、本発明は、変換係数を、丸め誤差を発生させずに逆直交変換する逆直交変換装置を提供する。この逆直交変換装置は、変換係数の和を求める回路と、この和のパリティを判定するパリティ判定回路とを備える。和奇数化回路は、パリティ判定回路によりパリティが偶数であると判定されたときに動作し、変換係数のうちの１つのパリティを反転して、パリティ反転変換係数を生成する。このパリティ反転変換係数により、和のパリティは奇数になる。そして、和奇数化回路は、パリティ反転変換係数を含む変換係数を逆直交変換回路に供給する。
また、本発明は、変換係数を、丸め誤差を発生させずに逆直交変換する逆直交変換装置を提供する。この逆直交変換装置は、各変換係数の最下位ビットの状態を判定する最下位ビット判定回路を備える。カウンタ回路は、最下位ビット判定回路が値が１の最下位ビットを有すると判定した変換係数をカウントする。カウント判定回路は、カウンタ回路からのカウント値が偶数であるかを判定する。そして、カウント奇数化回路は、カウント判定回路によりカウント値が偶数であると判定されたときに動作し、変換係数のうちの１つを変更して、変更変換係数を生成する。この変更変換係数により、カウント値は奇数になる。そして、カウント奇数化回路は、変更変換係数を含む変換係数を逆直交変換回路に供給する。
以下、本発明による、累積する性質のミスマッチ誤差の防止方法を説明する。
式４を検討することにより、結果が（2n＋１）/2（ｎは整数）である場合にミスマッチ誤差が発生することが分かる。
式４は、以下のように要約できる。
0003610578.tif 000006
これにより、ACCが奇数とされた場合、ミスマッチ誤差は発生しないことが分かる。
したがって、本発明は、量子化DCT係数を逆量子化し、DCT係数の和を計算し、その後、IDCT処理を行う方式をとっている。DCT係数の和が偶数（すなわち、和のパリティが偶数）である場合、DCT係数のうちの１つのパリティを変更して、DCT係数の和を奇数（すなわち、和のパリティを奇数）にする。DCT係数の和を奇数化するには、１つのDCT係数のパリティを変更するだけで十分である。しかも、IDCTの出力値に最小の影響しか与えないDCT係数パリティであるから、変更することができる。つまり、本発明によれば、IDCT処理前にDCT係数の和のパリティをチェックすることにより、そして、和のパリティが偶数である場合、DCT係数の１つのパリティを変更してDCT係数の和を奇数化することにより、ミスマッチ誤差の発生を効果的に防ぐことができる。
重要なことは、本発明によれば、DCT係数の和を奇数化するのに、１つのDCT係数のパリティを変更するだけで十分であるということである。MPEG1は、全DCT係数を奇数化し、その結果、IDCT処理が施されるDCT係数の分解能を劣化させてしまっている。これに対し、本発明によるミスマッチ誤差防止法は、IDCT回路の入出力値の精度を余り低下させずに、DCT係数の和を奇数化する。本発明の方法を動画像信号圧縮装置、圧縮動画像信号伸長装置、あるいは圧縮動画像信号伝送装置に適用すれば、画質の低下を最小限に抑えることができる。
さらに、本発明の方法をMPEG方式に適用すれば、最小量子化ステップが２である従来技術に対し、最小量子化ステップを１にすることができる。
【図面の簡単な説明】
図１は従来のMPEG方式の動画像信号圧縮装置の構成を示すブロック図である。
図２は従来のMPEG方式の圧縮動画像信号伸長装置の構成を示すブロック図である。
図３はMPEG方式において動画像信号が圧縮されるシーケンスを説明するための図である。
図４はDCT係数の具体例を示す図である。
図５は従来のMPEG1方式のイントラマクロブロック及びノンイントラマクロブロックの逆量子化処理を説明するための図である。
図６は本発明に係る動画像信号圧縮装置の第１の実施例の構成を示すブロック図である。
図７はDCT係数のジグザグスキャンを示す図である。
図８は図６に示す和奇数化回路14の具体的な第１の実施例の構成を示すブロック図である。
図９は図８に示す和奇数化回路の動作を説明するためのフローチャートである。
図10Aは図６に示す和奇数化回路の第２の実施例の構成を示すブロック図である。
図10Bは図６に示す和奇数化回路の第２の実施例の変形例の構成を示す図である。
図11は図８に示すパリティインバータの第１の実施例の構成を示すブロック図である。
図12は上記パリティインバータの動作を説明するためのフローチャートである。
図13は上記パリティインバータの第２の実施例の構成を示すブロック図である。
図14は上記パリティインバータの第３の実施例の動作を説明するためのフローチャートである。
図15は上記パリティインバータの第３の実施例の構成を示すブロック図である。
図16は上記パリティインバータの第４の実施例の動作を説明するためのフローチャートである。
図17は上記パリティインバータの第４の実施例の構成を示すブロック図である。
図18は図６に示す和奇数化回路の第３の実施例の構成を示すブロック図である。
図19は本発明に係る圧縮動画像信号伸長装置の第１の実施例の構成を示す図である。
図20は図19に示す圧縮動画像信号伸長装置における逆量子化器及び和奇数化器の構成を示すブロック図である。
図21は上記逆量子化器及び和奇数化器の動作を説明するためのタイミングチャートである。
図22は本発明に係る動画像信号圧縮装置の第２の実施例の構成を示すブロック図である。
図23は図22に示す動画像信号圧縮装置の第２の実施例における和奇数化回路の第１の実施例の構成を示すブロック図である。
図24は図22に示す動画像信号圧縮装置の第２の実施例における和奇数化回路の第２の実施例の構成を示すブロック図である。
図25は図22に示す動画像信号圧縮装置の第２の実施例における和奇数化回路の第３の実施例の構成を示すブロック図である。
図26は図23乃至25に示す和奇数化回路におけるパリティインバータの一実施例の構成を示すブロック図である。
図27は図26に示すパリティインバータの第１の変形例の構成を示す図である。
図28は図26に示すパリティインバータの第２の変形例の構成を示す図である。
図29は図26に示すパリティインバータの第３の変形例の構成を示す図である。
図30は本発明に係る圧縮動画像信号伸長装置の第２の実施例の構成を示すブロック図である。
発明を実施するための最良の形態
以下、本発明に係る逆離散コサイン変換方法、逆離散コサイン変換装置、動画像信号圧縮装置、圧縮動画像信号伸長装置、記録媒体及び伝送装置について、図面を参照しながら説明する。
この実施例は、本発明を、動き補償予測符号化と離散コサイン変換（DCT:Discrete Cosine Transform）を組み合わせたハイブリッド（hybrid）符号化方式に適用したものである。このハイブリッド符号化方式は、動画像の符号化規格のための国際的な委員会である、CCITT（国際電信電話諮問委員会）のH.261のISO−IEC/JTC1/SC2/WG11（通常MPEGという）で検討されており、蓄積メディア用の動画像信号の圧縮などにおいても採用されており、広く知られた方式である。WG11の報告には、ここで用いられる語の用語集が記載されている。
動き補償予測符号化は、動画像信号の時間軸方向の相関を利用して動画像信号が有する冗長度を削減する方法である。既に復号化されている別の画像を参照画像として、現在の符号化対象である画像の信号を動き補償予測し、得られる動き補償予測誤差が動きベクトル、予測モードなどとともに圧縮信号に含まれる。これにより、現在の画像を表すのに必要な圧縮動画像信号の情報量を大幅に削減する。
そして、上記動き補償予測誤差信号は、動画像を構成する各画像の空間軸方向の相関を利用する差分信号圧縮器により圧縮される。この差分信号圧縮器の一例としては、DCT回路などの直交変換回路と量子化器を組み合わせたものが代表的である。DCTは、直交変換の一種で、画像信号の有する画像内（フレーム内又はフィールド内）２次元相関性により、特定の周波数成分に信号電力を集中させる。この集中分布したDCT係数のみは、そのままあるいは追加圧縮、圧縮信号に含まれる。これにより、現在の画像を表すのに必要な圧縮動画像信号の情報量をさらに削減する。
画像間動き補償予測符号化は、動画像信号のフレーム間で行うこともできる。またインタレース画像信号のような場合には、フィールド間でも行うことができる。また、フレーム間符号化とフィールド間符号化を動画像信号の性質に応じて、適応的に切り換えることも可能である。
第１の実施例
図６に、本発明を適用した動画像信号圧縮装置の具体的な構成を示す。図６に示す動画像信号圧縮装置においては、動画像信号が画像に分割され、画像単位で圧縮される。各画像は画像ブロックに分割され、ブロック単位で圧縮される。圧縮される画像ブロックは現画像ブロックと呼ばれる。現画像ブロックは現画像と呼ばれる画像のブロックである。
動画像信号（通常、ビデオ信号）は、第１のピクチャメモリ群２に供給され、複数の画像が一旦記憶される。メモリコントローラ３は、第１のピクチャメモリ群２及び第２のピクチャメモリ群４の読出を制御する。また、メモリコントローラ３は、スライススタート信号SS及びマクロブロックスタート信号BSをスライス／マクロブロック・カウンタ５に供給する。メモリコントローラ３は、現在符号化の対象である第１のピクチャメモリ群２から読み出される画像のスライス又はマイクロブロックに同期して、これらの信号を出力する。スライスは、画像の幅にわたるブロックの水平列である。
動き予測器６は、第１のピクチャメモリ群２に記憶されている現画像ブロックと、過去の画像と未来の画像の各ブロックとのブロックマッチングを行うことによって、動き予測を行う。ブロックマッチングは、例えば16×16画素のブロックを用いて行う。現画像とブロックマッチされる過去の画像と未来の画像の各ブロックは、メモリコントローラ３から出力される動き予測参照画像指示信号に従って、第１のピクチャメモリ群２の中から選択される。そして、動き予測器６は、選択されたブロックと現画像ブロックとの差、すなわち動き予測誤差が最小となる第１のピクチャメモリ群２内の過去又は未来の画像中のブロック位置を、動きベクトルMVとして動き補償器７に供給する。
動き補償器７は、動きベクトルMVに応じて、第２のピクチャメモリ群４に記憶されている各再生画像のブロックを潜在的なマッチングブロックとして読み出させる。これらの潜在的なマッチングブロックが読み出される再生画像の位置は、動きベクトルMVにより指定される。そして、第２のピクチャメモリ群４から読み出された潜在的なマッチングブロックのうちの１つが、メモリコントローラ３から出力される動き補償参照画像指示信号MAに従って、現画像ブロックに対するマッチングブロックとして選択される。第２のピクチャメモリ群４に記憶されている再生画像は、後述するように、差分ブロック符号化器９から出力される量子化DCT係数を局部復号化することにより再生された画像である。
動き補償参照画像指示信号MAによりマッチングブロックが選択される再生画像は、現画像の予測モードによって異なる。前方向予測モードでは、マッチングブロックが過去の再生画像から選択される。両方行予測モードでは、マッチングブロックは、過去の再生画像又は未来の再生画像から選択されるか、あるいは過去の再生画像と未来の再生画像の各ブロックに対して線形演算（例えば、平均値計算）を行うことにより得ることができる。そして、現画像が画像内符号化モードで符号化される場合、すなわち画像が予測なしで符号化される場合、全画素値が零である零ブロックがマッチングブロックとして用いられる。第２のピクチャメモリ群４から読み出されるマッチングブロックは適応的であり、これにより、動画像信号の各ブロックについて最適なマッチングブロックの選択が行われる。
動き補償器７は、まず、現画像ブロックと、異なる予測モードで得られる潜在的なマッチングブロックとの画素毎の差分の絶対値総和を計算することにより、各画像の予測モードを選択する。そして、この絶対値総和が最小である予測モードを選択する。動き補償器７は、選択された予測モードを示す動き補償モード信号MMを、後述する可変長符号化器17に供給する。また、動き補償器７は、第２のピクチャメモリ群４に、選択された予測モードのマッチングブロックS2を差分発生回路８に供給させる。
この差分発生回路８は、第１のピクチャメモリ群２から読み出された動画像信号の現画像ブロックS1を受け取り、現画像ブロックS1とマッチングブロックS2との差分を画素単位で計算する。差分発生回路８は、得られる差分ブロックS3を差分ブロック符号化器９に供給する。差分ブロック符号化器９は、差分ブロックS3を圧縮して、量子化変換係数SCのブロックを生成する。量子化変換係数SCのブロックは、局部復号化器10に供給され、伸長されて再生差分ブロックS4が生成される。この動画像信号圧縮装置内の局部復号化器10は、後述する圧縮動画像信号伸長装置と類似した構成を有するが、詳細においては区別される。
ここで、上記差分ブロック符号化器９、局部復号化器10について説明する。
差分ブロック号化器９は、図６に示すように、DCT回路11と量子化器12とを備える。DCT回路11は、差分発生回路８から供給される差分ブロックS3をDCT変換して、DCT係数を量子化器12に供給する。量子化器12は、DCT係数を量子化して、量子化DCT係数SCのブロックを出力する。
局部復号化器10は、図６に示すように、逆量子化器13と、和奇数化回路14と、IDCT回路15とを備えている。逆量子化器13は、量子化器12からの量子化DCT係数SCのブロックを量子化テーブルを用いて逆量子化する。和奇数化回路14は、DCT係数の和が奇数でないときに、DCT係数に対してパリティ反転を行う。これにより、和が奇数化されたDCT係数のブロックを逆直交変換する際には、ミスマッチ誤差が生じない。IDCT回路15は、和奇数化回路14からのDCT係数の和が奇数化されたブロックに対して逆離散コサイン変換（IDCT変換）を行って、再生差分ブロックS4を生成する。
つぎに、量子化器12での具体的な量子化について説明する。量子化は８×8DCT係数からなるブロック単位で行われる。画像内符号化モードで圧縮される画像（Ｉピクチャ）の各ブロックはイントラマクロブロックと呼ばれる。画像間符号化モードで圧縮される各ブロックは、ノンイントラマクロブロックと呼ばれる。イントラマクロブロックが直交変換されると、（0,0）成分のDCT係数はDC係数となる。DC係数については、四捨五入により、８ビット精度での量子化の際にはDC係数を８で割り、９ビット精度での量子化の際にはDC係数を４で割り、10ビット精度での量子化の際にはDC係数を２で割り、11ビット精度での量子化の際にはDC係数を１で割ることにより、量子化される。すなわち、イントラマクロブロックのDC係数は、以下の式に従って量子化される。なお、以下の式はＣプログラミング言語の構文で表されている。
QDC＝dc//8（8bits）
QDC＝dc//4（9bits）
QDC＝dc//2（10bits）
QDC＝dc//1（11bits）                      （５）
ここで、dcはDC係数、QDCは量子化されたDC係数をそれぞれ表す。
イントラマクロブロックを直交変換することにより得られるDCT係数であって、DC成分以外の成分である各DCT係数（以下、AC係数という。）は、以下の式に従い、重み付け行列WiによってDCT係数ac（i,j）を重み付けして、量子化ファクタac-（i,j）を求めることにより、量子化する。
ac-（i,j）＝（16＊ac（i,j））//Wi（i,j）  （６）
重み付け行列Wiの係数を以下に示す。
0003610578.tif 000007
つぎに、以下の式により、量子化ファクタac-（i,j）を量子化して、各AC係数の量子化レベルQAC（i,j）を求める。
0003610578.tif 000008
ここで、ｐ、ｑは固定の任意の整数であり、例えばｐ＝３、ｑ＝４を用いる。mquantは量子化係数である。
画像間符号化マクロブロック（ノンイントラマクロブロック）の直交変換により得られるDCT係数は、以下の式に従い、ノンイントラマクロブロックを変換して得られる全てのDCT係数を、重み付け行列Wnによって重み付けして、量子化ファクタac-（i,j）を求めることにより、量子化する。
ac-（i,j）＝（16＊ac（i,j））//Wn（i,j）  （９）
重み付け行列Wnの係数を以下に示す。
0003610578.tif 000009
つぎに、以下の式により、量子化ファクタac-（i,j）を量子化して、各AC係数の量子化レベルQACを求める。
0003610578.tif 000010
このようにして得られる量子化レベルQAC（i,j）は、上述した量子化DCT係数SCのブロックとして可変長符号化器17と局部復号化器10に供給される。
可変長符号化器17は、DCT係数のブロックを量子化して得られる量子化DCT係数SCのブロックを可変長符号化する。可変長符号化器17は、各マクロブロックを構成する４つの輝度ブロックにおける量子化変換係数と、各イントラマクロブロックのDC係数との差分を求め、得られる差分値を可変長符号化テーブルを用いて可変長符号化する。これは、隣接する４つの輝度ブロックでは、相関が高く、DC係数が殆ど同じ値を有するからである。また、可変長符号化器17は、２つの色差ブロックの量子化係数の差分を求め、得られる差分値を可変長符号化テーブルを用いて可変長符号化する。なお、輝度用の可変長符号化テーブルと色差用の可変長符号化テーブルは異なるテーブルである。
可変長符号化器17は、図７に示すように、（0,0）成分のDCT係数を先頭とするジグザグスキャンにより、量子化DCT係数を読み出して、量子化DCT係数ブロックを可変長符号化する。DCT変換により得られる非零DCT係数は、一般的に、（0,0）成分近傍に値が集中することから、量子化DCT係数SCのブロックはジグザグスキャンにより読み出される。すなわち、量子化DCT係数ブロックをジグザグスキャンによって読み出すことにより、各非零DCT係数間の連続した零DCT係数の個数（ラン）が増加し、可変長符号化の効率が向上する。
可変長符号化器17は、量子化DCT係数をジグザグスキャンの順で読み出し、各非零DCT係数の値（レベル）と、それに先行する零DCT係数の個数（ラン）を求めて、量子化DCT係数ブロックを２次元可変長符号化する。符号化の後、ブロック内のDCT係数はランとレベルとの組合せにより表される。また、可変長符号化器17は、最後の非零DCT係数を示す２ビット符号EOBを付加する。また、可変長符号化器17は、またジグザグスキャンの順の最後の非零DCT係数のアドレスを、アドレス変換器（図示せず）に供給し、アドレス変換器は、ジグザグスキャンでのアドレスをラスタスキャンにおけるアドレスEOB_adrsに変換する。可変長符号化器17は、このアドレスEOB_adrsを和奇数化回路14に供給する。
和奇数化回路14は、ラスタスキャンでのアドレスEOB_adrsを、例えば図８に示す後述のレジスタ25に記憶させる。
つぎに、逆量子化器13について説明する。逆量子化器13は、差分ブロック符号化器９からの量子化DCT係数SCのブロックを受け取り、逆量子化して、DCT係数のブロックを生成する。具体的には、逆量子化器13は、イントラマクロブロックを直交変換して得られる量子化DC係数を、式12により逆量子化して、各DC係数を生成する。また、逆量子化器13は、ノンイントラマクロブロックを直交変換して得られるAC係数を、式13により逆量子化する。また、逆量子化器13は、ノンイントラマクロブロックを直交変換して得られるの全ての量子化係数を、式14により逆量子化する。
0003610578.tif 000011
0003610578.tif 000012
0003610578.tif 000013
このようにして得られるDCT係数は、逆量子化器13から和奇数化回路14に供給される。和奇数化回路14の具体的な構成を図８に示す。
和奇数化回路14は、アキュムレータ23Aと、パリティ判定回路21と、パリティインバータ28とを備えている。アキュムレータ23Aは、逆量子化器13からのDCT係数ブロックにおけるDCT係数の和を求める。パリティ判定回路21は、アキュムレータ23AからのDCT係数の和が偶数又は奇数の何れか、すなわち、DCT係数の和のパリティが偶数又は奇数の何れかを判定する。DCT係数の和のパリティが偶数であるとパリティ判定回路21が判定したときのみ、ブロック内のDCT係数の少なくとも１つのパリティを変更して、DCT係数の和のパリティを奇数にする。すなわち、DCT係数の和を奇数化する。これにより、和奇数化回路14からの和奇数化されたDCT係数のブロックがIDCT回路15により逆直交変換された場合に、ミスマッチ誤差の発生を防止する。
カウンタ20は、逆量子化器13から供給されるDCT係数の数をカウントし、得られるカウント値coeff_adrsをパリティ判定回路21、メモリセレクタ22に供給する。
アキュムレータ23Aは、加算器23とレジスタ24を備える。加算器23は、逆量子化器13から供給されるDCT係数のブロックの各DCT係数と、レジスタ24中に保存されているブロック内の先行するDCT係数の和とを加算する。各DCT係数ブロックの和が求められると、レジスタ24はリセットされる。得られるDCT係数の和は加算器23からレジスタ24とパリティ判定回路21に供給される。パリティ判定回路21がDCT係数の和のパリティが偶数又は奇数であると判定するのに適した結果を得るためには、アキュムレータ23Aは、ブロック内のDCT係数の最下位ビットのみの和を求めればよい。
パリティ判定回路21は、カウンタ20から供給されるカウント値coeff_adrsに応じて、DCT係数ブロック内のDCT係数の和のパリティが奇数であるか偶数であるかを判定する。アキュムレータ23Aにブロック内の全てのDCT係数が供給されたとき、カウント値coeff_adrsは、アキュムレータ23Aがブロック内の全てのDCT係数の和を求めたことを示す。カウント値coeff_adrsに応じて、パリティ判定回路21は、アキュムレータ23AからのDCT係数の和のパリティが奇数であるか偶数であるかを判定する。例えば、８×８の２次元DCT変換の場合、カウント値coeff_adrsがブロック内の64個のDCT係数の和がアキュムレータ23Aに供給されたことを示すとき、パリティ判定回路21はアキュムレータ23AからのDCT係数の和のパリティが偶数であるか奇数であるかを判定する。
具体的には、例えばDCT係数が２進数で表現されていると、パリティ判定回路21は、アキュムレータ23Aから供給されるDCT係数の和の最下位ビット（LSB）を判定する。LSBが零のとき、和のパリティが偶数であることを示す。この場合、パリティ判定回路21は、パリティ反転を行うために処理要求信号REQ1をパリティインバータ28に出力する。この処理要求信号REQ1に応じて、パリティインバータ28は、DCT係数の少なくとも１つ（すなわち、奇数）のパリティを変更してDCT係数の和を奇数化する。一方、最下位ビットが１であるとき、和のパリティは奇数である。この場合、パリティ判定回路21は処理要求信号REQ1を出力せず、パリティインバータ28はブロック内の全てのDCT係数のパリティをそのままにしておく。
具体的には、逆量子化器13からのDCT係数は、メモリセレクタ22を介して第１のメモリ26又は第２のメモリ27に記憶される。すなわち、メモリセレクタ22は、カウンタ20から供給されるカウント値coeff_adrsに基づいて動作する。例えばメモリセレクタ22は、第１のメモリ26に全てのDCT係数が記憶されたと判定したとき、第２のメモリ27に次のブロックのDCT係数が記憶されるようにメモリを指定する。このようにして、DCT係数の連続したブロックが交互に第１のメモリ26、第２のメモリ27に記憶される。ブロック内の全てのDCT係数が第１のメモリ26又は第２のメモリ27の何れかに記憶された場合、全てのDCT係数が記憶されたメモリはメモリフル信号FULL1又はメモリフル信号FULL2をパリティインバータ28に出力する。
パリティインバータ28は、メモリフル信号FULL1又はメモリフル信号FULL2を受け取ると、そのメモリフル信号を発生したメモリにリードイネーブル信号RD_EN1又はリードイネーブル信号RD_EN2を供給する。これにより、DCT係数ブロックが、メモリフル信号を発生したメモリからパリティインバータ28に供給される。パリティインバータ28は、パリティ判定回路21からの処理要求信号REQ1の有無に基づいて、メモリから読み出されたDCT係数ブロックを処理する。パリティインバータ28は、処理要求信号REQ1を受け取ると、ブロック内のDCT係数のうちの１つ、例えばジグザグスキャンにおける最後の非零のDCT係数の最下位ビットを反転する。パリティインバータ28は、レジスタ25に記憶されているパリティ反転が可能なDCT係数のアドレスを用いて、パリティ反転が可能なDCT係数を識別する。例えば、図11は、パリティインバータ28の具体的な構成を示すブロック図である。比較器62には、最後の非零のDCT係数のアドレスEOB_adrsが供給される。したがって、パリティ反転が可能なDCT係数は、最後の非零のDCT係数となる。パリティインバータ28がパリティ反転が可能なDCT係数のパリティを反転すると、ブロック内の先頭から最後までの非零のDCT係数の和のパリティは奇数となる。パリティインバータ28は、LSBが反転されたDCT係数以外の全てのDCT係数を、LSBはそのままの状態で、IDCT回路15に供給する。また、このパリティインバータ28は、パリティ反転が可能なDCT係数を、パリティインバータ28が処理要求信号REQ1を受け取ったか否かでLSBが異なる状態で、IDCT回路15に供給する。
パリティインバータ28は、例えば図９に示すフローチャートに従って動作するコンピュータ又はディジタル信号処理器を備えてもよい。この例では、パリティ反転可能なDCT係数は最後の非零のDCT係数とする。ステップS1において、パリティインバータ28は、アドレスEOB_adrsに基づいて、そのDCT係数がLSB反転によりパリティ反転が可能であるかを反転し、該当する（YESの）ときはステップS2に進み、該当しない（NOの）ときは後述するステップ５に進む。
ステップS2において、パリティインバータ28は、処理要求信号REQ1の有無を判定し、処理要求信号REQ1が有ることを示すYESのときはステップS3に進み、処理要求が無いときはステップS5に進む。
ステップS3において、パリティインバータ28は、パリティ反転可能なDCT係数のLSBを反転してパリティを反転し、DCT係数の和のパリティを変更する。そして、ステップS4に進み、パリティ反転したDCT係数をIDCT回路15（図８）に供給する。その後、ステップS1に戻り、次のDCT係数ブロックを処理する。
処理したDCT係数がパリティ反転可能なDCT係数でないとき、あるいはパリティ反転すべきDCT係数がパリティ反転されないとき、すなわち処理要求信号REQ1が受け取られていないときは、ステップS5に進む。ステップS5において、DCT係数はそのままIDCT回路15に供給される。その後、ステップS1に戻り、次のDCT係数を処理する。
DCT係数が２の補数表現で表される場合、LSBも２の補数表現のLSBとなる。また、DCT係数が符号と絶対値に分けて表現される場合、そのLSBは絶対値のLSBとなる。
ところで、和奇数化回路14の構成は、上述の図８に示す構成に限定されるものではなく、例えば図10Aに示すように、図８に示す和奇数化回路14において、LSB検出器29を付加し、加算器23の代わりに排他的論理和ゲート30を用いてもよい。なお、図８に示す回路の構成要素に対応する図10Aに示す回路の構成要素には、同じ指示符号を付して、説明は割愛する。
図10Aにおいて、LSB検出器29は、DCT係数のブロック内の各DCT係数のLSBを検出する。排他的論理和ゲート30は、ブロック内の各DCT係数と、レジスタ24に記憶されいる処理済みのDCT係数のLSBの排他的論理和との排他的論理和演算を行う。排他的論理和ゲート30とレジスタ24は、各ブロックのDCT係数のLSBの排他的論理和を算出する。排他的論理和ゲート30とレジスタ24との組合せにより、値が１のLSBを有するDCT係数をカウントすることにもなる。そして、ブロック内の全てのDCT係数が受け取られたとき、排他的論理和ゲート30の出力の状態は、値が１のLSBを有するDCT係数のカウント値が偶数であるか奇数であるかを示す。そして、パリティ判定回路21は、値が１のLSBを有するDCT係数のカウント値が偶数である場合、処理要求信号REQ1を発生する。
図10Bは、排他的論理和ゲート30とレジスタ24の代わりに用いることができる別の回路構成を示す。ここで、逆量子化器13から供給された各DCT係数のLSBは、LSB検出器29からANDゲート88に供給される。ANDゲート88は、値が１のLSBのみをカウンタ89に送る。カウンタ89は、DCT係数の各ブロックの初めにリセットされ、供給される値が１の各LSBをカウントする。カウンタ89からのカウント値COUNTのLSBは、パリティ判定回路21に供給される。各ブロックの終わりで、パリティ判定回路21は、カウンタ89からのカウント値COUNTのLSBのパリティを求める。カウント値COUNTのLSBのパリティが奇数（例えば、COUNTのLSBが１）である場合、ブロック内の値が１のLSBを有するDCT係数が奇数個有り、ブロック内のDCT係数の和のパリティが奇数であることを示す。一方、カウント値COUNTのLSBのパリティが偶数（例えば、COUNTのLSBが０）である場合、ブロック内の値が１のLSBを有するDCT係数が偶数個有り、ブロック内のDCT係数の和のパリティが偶数であることを示す。
図８及び10に示す和奇数化回路14におけるパリティインバータ28の第１の実施例の具体的な構成を、図11を参照して説明する。パリティインバータ28は、読出カウンタ61、比較器62、LSBインバータ63、ANDゲート64、65、67、68、ORゲート66、69、インバータ71、72を備えている。
そして、パリティインバータ28は以下のように動作する。読出カウンタ61が第１のメモリ26又は第２のメモリ27からメモリフル信号FULLを受け取ると、第１のメモリ26又は第２のメモリ27にリードイネーブル信号RD_ENを送る。リードイネーブル信号RD_ENにより、記憶されたDCT係数ブロックのDCT係数は順次、信号線RDATAを介して第１のANDゲート67に供給される。
また、メモリフル信号FULLにより、読出カウンタ61は、受け取ったDCT係数のカウントを開始するとともに、このDCT係数の数を示すカウント値を比較器62に供給する。比較器62は、カウント値とレジスタ25から供給されるアドレスを比較して、第１のANDゲート67に供給されているDCT係数がパリティ反転を行うDCT係数であるか、すなわちLSB反転を行うDCT係数であるかを判定をする。図11に示す例では、パリティ反転を行うDCT係数は、レジスタ25に記憶されたアドレスEOB_adrsにより認識された最後の非零のDCT係数である。比較器62は、カウント値がパリティ反転を行うDCT係数のアドレスに一致したとき、すなわちこの例ではアドレスEOB_adrsに一致したとき、パリティ反転を行うDCT係数と判定して、その出力を０から１に変更する。
比較器62の出力は、直接第２のANDゲート68に供給されるとともに、インバータ72を介して第１のANDゲート67に供給される。そして、カウント値がアドレスEOB_adrsと一致しないとき、第１のANDゲート67が開き、第２のANDゲート68が閉じる。これにより、DCT係数が、そのまま第１のANDゲート67とORゲート69を介してIDCT回路15に出力される。
一方、パリティインバータ28に供給されたDCT係数がパリティ反転を行うDCT係数であり、カウント値がパリティ反転を行うDCT係数のアドレス、例えばEOB_adrsと一致したときは、比較器62の出力が上述のように変化する。これにより、第１のANDゲート67が閉じ、第２のANDゲート68が開き、ORゲート66を介して供給されるLSB反転されたDCT係数が、第２のANDゲート68とORゲート69を介してIDCT回路15に出力される。
LSB反転されたDCT係数は、DCT係数を信号線RDATAを介して第３のANDゲート64とLSBインバータ63に供給することにより、処理要求信号REQ1に応じて、選択的にIDCT回路15に供給される。処理要求信号REQ1は、パリティ判定回路21から直接第４のANDゲート65に供給されるとともに、インバータ71を介して第３のANDゲート64に供給されている。LSBインバータ63は、信号線RDATAを介して供給される各DCT係数のLSBを反転し、得られるLSB反転されたDCT係数を第４のANDゲート65に供給する。
そして、処理要求信号REQ1が無いとき、すなわち処理要求信号REQ1が０のとき、パリティ反転を行うDCT係数は、LSB反転されずにIDCT回路15に送られる。具体的には、この０の処理要求信号REQ1により、第３のANDゲート64が開き、第４のANDゲート65が閉じ、LSBが反転されない、すなわちパリティを変更しないDCT係数は、信号線RDATAから第３のANDゲート64、ORゲート66、第２のANDゲート68及びORゲート69を介してIDCT回路15に供給される。
一方、処理要求信号REQ1が有るとき、すなわち処理要求信号REQ1が１のとき、パリティ反転を行うDCT係数は、LSB反転されてIDCT回路15に供給され、DCT係数の和のパリティを変更する。具体的には、この１の処理要求信号REQ1により、第３のANDゲート64が閉じ、第４のANDゲート65が開き、LSB反転されたパリティ反転を行うDCT係数が、LSBインバータ63から第４のANDゲート65、ORゲート66、第２のANDゲート68及びORゲート69を介してIDCT回路15に供給される。
つぎに、このパリティインバータ28の第２の実施例について、図12を参照しながら説明する。このパリティインバータ28の第２の実施例は、処理要求信号REQ1が入力されると、パリティ反転を行うDCT係数に１を加算してDCT係数の和を奇数化するものである。
パリティインバータ28の第２の実施例として、図12に示すフローチャートに従って動作するコンピュータ又はディジタル信号処理器を用いてもよい。図12に示すフローチャートは、ステップS3での処理を除けば、図９に示すフローチャートと同じである。ステップS3において、パリティインバータ28の第２の実施例では、パリティ反転を行うDCT係数のLSBを反転する代わりに、パリティ反転を行うDCT係数に１を加算してDCT係数の和を奇数化する。パリティ反転を行うDCT係数は、例えば、ブロック内の最後の非零のDCT係数であるか、最高周波数成分のDCT係数であってもよい。
具体的には、パリティインバータ28の第２の実施例の具体的な回路構成は、パリティ反転を行うDCT係数に１を加算してブロック内のDCT係数の和を奇数化するものであり、その具体的な回路について、図13を参照して説明する。図13に示すパリティインバータ28の第２の実施例は、図11に示すパリティインバータ28の第１の実施例と略同じ構成を有する。図11に示す回路の構成要素に対応する図13に示す回路の構成要素は、同一符号を付して、説明は割愛する。
図13に示すパリティインバータ28は、図11に示すLSBインバータ63の代わりに＋１加算器73を備える。この＋１加算器73は、第１のメモリ26又は第２のメモリ27から読み出され、信号線RDATAを介して供給された各DCT係数に１を加算する。１が加算されたDCT係数のうちの１つが、処理要求信号REQ1に応じて選択され、DCT係数の和を奇数化する。
図13に示すパリティインバータ28の処理は、＋１加算器73が信号RDATAを介して得られる各DCT係数に１を加算すること以外は、図11に示す回路の処理と同じである。また、処理要求信号REQ1が有り、パリティ反転を行うDCT係数が検出されると、１が加算されたDCT係数は、＋１加算器73から第４のANDゲート65、ORゲート66、第２のANDゲート68及びORゲート69を介してIDCT回路15に供給される。
以下、パリティインバータ28の第３の実施例について、図14及び図15を参照して説明する。
このパリティインバータ28の第３の実施例は、処理要求信号REQ1が入力されると、パリティ反転を行うDCT係数の代わりに、DCT係数の符号が正であるとき１を引算し、負であるとき１を加算してパリティ反転されたDCT係数を用い、ブロック内のDCT係数の和を奇数化する。この処理により、パリティ反転を行うDCT係数のパリティを反転するのみならず、このDCT係数の大きさを削減する。すなわち、パリティ反転を行うDCT係数を０に近づける。パリティ反転を行うDCT係数に施す処理は以下の式により求められる。
0003610578.tif 000014
ここで、recはパリティ反転を行うDCT係数を示す。
パリティインバータ28の第３の実施例では、例えば図14に示すフローチャートに従って動作するコンピュータ又はディジタル信号処理器を用いてもよい。ステップS1において、パリティインバータ28は、アドレスEOB_adrsに基づいて、そのDCT係数がパリティ反転すべきDCT係数かを判定する。例えば、パリティインバータ28は、DCT係数が最後の非零DCT係数であるか否かを判定する。結果がYESであり、DCT係数がパリティ反転を行うDCT係数であるときはステップS2に進む。これに該当せず、DCT係数がパリティ反転を行わないDCT係数であるときはステップS8に進む。
ステップS2において、パリティインバータ28は、処理要求信号REQ1の有無を判定し、処理要求信号REQ1が有る（YESの）ときはステップS3に進み、無いときはステップS8に進む。ステップS2におけるYESの結果は、ステップS1でYESとなるときのみ得られるので、DCT係数がパリティ反転を行うDCT係数であることを示す。
ステップS3において、パリティインバータ28は、パリティ反転を行うDCT係数の極性を判定する。結果が、正であることを示すYESのときはステップS4に進み、０又は負のときはステップS6に進む。
ステップS4において、パリティインバータ28は、パリティ反転を行うDCT係数から１を減算（−１を加算）した後、ステップS5に進み、パリティ反転したDCT係数をIDCT回路15（図10A）に出力する。その後、ステップS1に戻り、次のDCT係数を処理する。
一方、ステップS6において、パリティインバータ28は、パリティ反転を行うDCT係数に１を加算した後、ステップS7に進み、パリティ反転したDCT係数をIDCT回路15に出力する。その後、ステップS1に戻り、次のDCT係数を処理する。
DCT係数がパリティ反転すべきものでないとき、又はパリティ反転すべきDCT係数がパリティ反転されないとき、すなわち処理要求信号REQ1が無いときは、ステップS8に進む。ステップS8では、DCT係数はそのままIDCT回路15に供給される。その後、ステップS1に戻り、次のDCT係数を処理する。
図15に、パリティ反転を行いDCT係数の大きさを削減する、すなわちDCT係数を０に近づけるパリティインバータ28の第３の実施例の回路構成についての具体例を示す。
図15に示すパリティインバータ28は、図11に示すパリティインバータ28と略同じ構成を有する。図11に示す回路の構成要素に対応する図15に示す回路構成要素には、同一の指示符号を付し、説明は割愛する。図15に示すパリティインバータ28は、LSBインバータ63に代えて規模削減回路80を備える点で、図11のパリティインバータ28と異なる。
そして、この規模削減回路80において、信号線RDATAを介して第１のメモリ26又は第２のメモリ27から供給された各DCT係数の極性が判定される。この規模削減回路80は、DCT係数の極性が正のときはDCT係数から１を減算し、０又は負のときは１を加算する。図15に示すパリティインバータ28は、規模削減回路80からのパリティ反転されたDCT係数を選択し、パリティ反転を行うDCT係数の代わりに、大きさが削減されるとともに、パリティ反転されたDCT係数を用いることにより、ブロック内のDCT係数の和を奇数化する。
規模削減回路80は、直接第５のANDゲート84を制御するとともに、インバータ87を介して第６のANDゲート85を制御する極性判定回路81を備えている。また、規模削減回路80は、信号線RDATA上のDCT係数から１を減算する−１減算器82と、１を加算する＋１加算器83を備える。−１減算器82又は＋１加算器83の出力が、極性判定回路81の出力に応じて第５のANDゲート84又は第６のANDゲート85により選択される。ANDゲート84、85の出力はORゲート86に送られ、大きさが削減され、選択されたDCT係数が第４のANDゲート65に供給される。ブロック内のDCT係数の和のパリティを反転する必要がある場合、第４のANDゲート65は、大きさが削減され、パリティ反転された規模削減回路80の出力を選択して、パリティ反転を行うDCT係数の代わりにIDCT回路15に供給する。
極性判定回路81は、信号線RDATAを介して供給されるDCT係数SCのブロック内の各DCT係数の極性を判定し、その極性の正負により、出力を１又は０とする。極性判定回路81が、DCT係数の極性が正であると判定した場合、極性判定回路81の出力は第５のANDゲート84を開き、第６のANDゲート85を閉じる。これにより、−１減算器82の出力、すなわち１が減算されたDCT係数が、第５のANDゲート84及びORゲート86を介して第４のANDゲート65に供給される。
一方、DCT係数の極性が負又は０であると判定したときは、極性判定回路81の出力により第５のANDゲート84が閉じ、第６のANDゲート85が開く。これにより、＋１加算器83の出力、すなわち１が加算されたDCT係数が、第６のANDゲート85及びORゲート86を介して第４のANDゲート65に供給される。
第４のANDゲート65は、処理要求信号REQ1に応じて、パリティ反転され、大きさが削減されたDCT係数を、規模削減回路80から第２のANDゲート68に供給する。比較器62が、信号線RDATA上のDCT係数をパリティ反転を行うDCT係数であると判定したとき、大きさが削減され、パリティ反転されたDCT係数が、図15に示すように、規模削減回路80からIDCT回路15（図10A）に送られる。一方、図15に示すパリティインバータ28の第３の実施例で処理要求信号REQ1が無い場合、パリティ反転を行うDCT係数はそのままIDCT回路15に送られる。
DCT係数の和が奇数化すべきものであるとき、図15に示すパリティインバータ28の第３の実施例では、極性が正のとき１を減算してパリティ反転し、負のときには１を加算してパリティ反転したDCT係数が、IDCT回路15に供給される。この処理により、パリティを反転し、パリティ反転を行うDCT係数の大きさを削減して、DCT係数の和を奇数化する。
以下、パリティインバータ28の第４の実施例について、図16及び17を参照して説明する。
このパリティインバータ28の第４の実施例は、処理要求信号REQ1が入力されると、パリティ反転を行うDCT係数の代わりに、極性が正のとき１を加算し、負のとき１を減算してパリティ反転を行うDCT係数を用いて、DCT係数の和を奇数化している。この処理により、パリティ反転を行うDCT係数のパリティを反転するのみならず、このDCT係数の大きさを増大する。すなわち、パリティ反転するDCT係数を０からさらに反転する。このパリティ反転を行うDCT係数に施す処理は、以下の式により求められる。
0003610578.tif 000015
ここで、recはパリティ反転を行うDCT係数を示す。
パリティインバータ28の第４の実施例では、図16に示すフローチャートに従って動作するコンピュータ又はディジタル信号処理器を用いてもよい。ステップS1において、パリティインバータ28は、アドレスEOB_adrsに基づいて、そのDCT係数がパリティ反転すべきDCT係数かを判定する。例えば、パリティインバータ28は、DCT係数が最後の非零のDCT係数であるか否かを判定する。結果がYESであり、DCT係数がパリティ反転を行うDCT係数であるときはステップS2に進む。これに該当せず、DCT係数がパリティ反転を行わないDCT係数であるときはステップS8に進む。
ステップS2において、パリティインバータ28は、処理要求信号REQ1の有無を判定し、処理要求信号REQ1が有る（YESの）ときはステップS3に進み、無いときはステップS8に進む。ステップS2におけるYESの結果は、ステップS1でYESとなるときのみ得られるので、DCT係数がパリティ反転を行うDCT係数であることを示す。
ステップS3において、パリティインバータ28は、パリティ反転を行うDCT係数の極性を判定する。結果が、正であることを示すYESのときはステップS4に進み、０又は負のときはステップS6に進む。
ステップS4において、パリティインバータ28は、パリティ反転を行うDCT係数に１を加算した後、ステップS5に進み、パリティ反転したDCT係数をIDCT回路15（図10A）に出力する。その後、ステップS1に戻り、次のDCT係数を処理する。
一方、ステップS6において、パリティインバータ28は、パリティ反転を行うDCT係数から１を減算（−１を加算）した後、ステップS7に進み、パリティ反転したDCT係数をIDCT回路15に出力する。その後、ステップS1に戻り、次のDCT係数を処理する。
DCT係数がパリティ反転すべきものでないとき、又はパリティ反転すべきDCT係数がパリティ反転されないとき、すなわち処理要求信号REQ1が無いときは、ステップS8に進む。ステップS8では、DCT係数はそのままIDCT回路15に供給される。その後、ステップS1に戻り、次のDCT係数を処理する。
図17に、パリティ反転を行いDCT係数の大きさを増大する、すなわちDCT係数を０からさらに反転するパリティインバータ28の第４の実施例の回路構成について具体例を示す。
図17に示すパリティインバータ28は、図11に示すパリティインバータ28と略同じ構成を有する。図11に示す回路の構成要素に対応する図17に示す回路構成要素には、同一の指示符号を付し、説明は割愛する。図17に示すパリティインバータ28は、LSBインバータ63に代えて規模増大回路90を備える点で、図11のパリティインバータ28と異なる。
そして、この規模増大回路90において、信号線RDATAを介して第１のメモリ26又は第２のメモリ27から供給された各DCT係数の極性が判定される。この規模増大回路90は、DCT係数の極性が正のときはDCT係数に１を加算し、０又は負のときは１を減算する。図17に示すパリティインバータ28は、規模増大回路90からのパリティ反転されたDCT係数を選択し、パリティ反転を行うDCT係数の代わりに、大きさが増大されたDCT係数を用いることにより、ブロック内のDCT係数の和を奇数化する。
規模増大回路90は、直接第５のANDゲート94を制御するとともに、インバータ97を介して第６のANDゲート95を制御する極性判定回路91を備えている。また、規模増大回路90は、DCT係数に１を加算する＋１加算器92と、１を減算する−１減算器93を備える。＋１加算器92又は−１減算器93の何れかの出力が、極性判定回路91の出力に応じて第５のANDゲート94又は第６のANDゲート95により選択される。ANDゲート94、95の出力はORゲート96に送られ、大きさが増大され、選択されたDCT係数が第４のANDゲート65に供給される。ブロック内のDCT係数の和のパリティを反転する必要がある場合、第４のANDゲート65は、パリティ反転され、大きさが増大された規模増大回路90の出力を選択して、パリティ反転を行うDCT係数の代わりにIDCT回路15に供給する。
極性判定回路91は、信号線RDATAを介して供給されるDCT係数のブロック内の各DCT係数の極性を判定し、その極性の正負により、出力を１又は０とする。極性判定回路91が、DCT係数の極性が正であると判定した場合、極性判定回路91の出力は、第５のANDゲート94を開き、第６のANDゲート95を閉じる。これにより、＋１加算器92の出力、すなわち１が加算されたDCT係数が、第５のANDゲート94及びORゲート96を介して第４のANDゲート65に供給される。
一方、DCT係数の極性が負又は０であると判定したときは、極性判定回路91の出力により第５のANDゲート94が閉じ、第６のANDゲート95が開く。これにより、−１減算器93の出力、すなわち１が減算されたDCT係数が、第６のANDゲート95及びORゲート96を介して第４のANDゲート65に供給される。
第４のANDゲート65は、処理要求信号REQ1に応じて、パリティ反転され、大きさが増大されたDCT係数を、規模増大回路90から第２のANDゲート68に供給する。比較器62が、信号線RDATA上のDCT係数をパリティ反転を行うDCT係数であると判定したとき、DCT係数が、図11に示すように、規模増大回路90からIDCT回路15（図10A）に送られる。
一方、図17に示すパリティインバータ28の第４の実施例において、処理要求信号REQ1が無い場合、パリティ反転を行うDCT係数はそのままIDCT回路15に送られる。
DCT係数の和が奇数化すべきものであるとき、図17に示すパリティインバータ28の第４の実施例では、極性が正のとき１を加算し、負のときには１を減算してパリティ反転したDCT係数が、IDCT回路15に供給される。この処理により、パリティを反転し、パリティ反転を行うDCT係数の大きさを増大させて、DCT係数の和を奇数化する。
図11、13、15、17に示すパリティインバータ28と、図９、12、14、16に示す演算処理は、ジグザグスキャンにより読み出される最後の非零のDCT係数以外のDCT係数のパリティを変更することにより、DCT係数の和を奇数化するように変更してもよい。例えば、８×８の２次元DCT変換において、DC成分のDCT係数、最高周波数成分である（7,7）成分のDCT係数、右上隅の（7,0）成分のDCT係数、又は左下隅の（0,7）成分のDCT係数としてもよい。特に最高周波数成分である（7,7）成分のDCT係数は画質に与える影響が小さいため、パリティ変更を行うDCT係数としては最良である。
図11、13、15、17に示すパリティインバータ28において、比較器62に供給されるアドレスEOB_adrsに代えてDCT係数のアドレスを用いることにより、別のDCT係数を選択することも可能である。また、最高周波数成分のDCT係数のパリティが変更すべきものである場合、読出カウンタ61と比較器62は省略してもよく、パリティ変更を行うDCT係数として最高周波数成分のDCT係数を認識するのに、メモリフル信号FULLを用いてもよい。
また、図６、18、10に示す和奇数化回路14は、ある特定のDCT係数、例えば（0,0）成分、（4,0）成分、（0,4）成分、（4,4）成分のDCT係数の和を求め、この和が奇数になるようにパリティ反転を行うこともできる。図18に、図８に示す和奇数化回路14の変更例を示す。ここでは、特定のDCT係数の和を求めて、パリティ反転が必要であるかを判定する。図８に示す和奇数化回路の構成要素に対応する図18に示す和奇数化回路の構成要素には同一の指示符号を付し、説明は割愛する。
図18に示す和奇数化回路14は、逆量子化器13とアキュムレータ23Aとの間にセレクタ51を備える。セレクタ51は、カウンタ20から、逆量子化器13に供給されたブロック内のDCT係数の数を示すカウント値coeff_adrsを受け取る。
そして、セレクタ51は、カウンタ20から供給されるカウント値coeff_adrsに基づいて、逆量子化器13から供給されている各DCT係数が特定のDCT係数であるか、及びアキュムレータ23Aにより求められる和に含まれるべきかを判定する。したがって、例えばセレクタ51は、カウント値coef_adrsが（0,0）成分、（4,0）成分、（0,4）成分、あるいは（4,4）成分に相当する値であるかを判定する。セレクタ51は、DCT係数が特定のDCT係数であると判定したとき、DCT係数をアキュムレータ23Aに供給する。これにより、図18に示すこの和奇数化回路14は、ブロック内の特定のDCT係数の和を求め、この和のパリティが偶数である場合、奇数となるように、少なくとも１つのDCT係数のパリティを変更する。図18に示す和奇数化回路14は、このパリティが処理されたDCT係数のブロックをIDCT回路15に供給する。
図18に示す実施例は、図10Aに示すのと同様に変更することができ、その回路により特定のDCT係数のLSBの排他的論理和を求めるような構成にしてもよい。すなわち、図18に示す和奇数化回路を、加算器23を図10Aに示すLSB検出器29及び排他的論理和ゲート30に置き換えた構成とする。
図６に戻り、DCT係数ブロック内のDCT係数は、上述のように、和奇数化回路14からIDCT回路15に供給される。和奇数化回路14からのDCT係数の和は奇数である。逆量子化器13からのDCT係数の和が偶数のとき、和奇数化回路14はDCT係数の少なくとも１つのパリティを変更して、IDCT回路15に供給するDCT係数の和を奇数化する。IDCT回路15は、ブロック内のDCT係数にIDCT処理を施し、再生差分ブロックS4を生成する。再生差分ブロックS4は加算器16に供給される。
加算器16は、再生差分ブロックS4と第２のピクチャメモリ群４から供給されるマッチングブロックS2とを１画素毎に加算する。得られる再生画像ブロックS5は、第２のピクチャメモリ群４に供給され、メモリコントローラ３により指定されるピクチャメモリの１つに記憶されて、再生画像のブロックを再生する。
可変長符号化器17は、差分ブロック符号化器９からの量子化されたDCT係数SCの各ブロックや、その動きベクトルMV、動き補償モードMM及び量子化テーブルのデータに対して、ハフマン符号化などの可変長符号化を行う。また、可変長符号化器17は、可変長符号化データを、MPEG規格のスタートコードや各層のヘッダ情報とともに組み合わせて、圧縮動画像信号を生成する。
スライス／マクロブロック・カウンタ５は、第１のピクチャメモリ群２から読み出される画像の各スライス及び各マクロブロックのスタートに同期して、メモリコントローラ３から出力されるスライス・スタート信号SS及びマクロブロックスタート信号BSをカウントする。スライス／マクロブロック・カウンタ５は、そのカウント値が予め決められた値となったら、スタート信号SOを可変長符号化器17に出力する。
このスタート信号SOを受けて、可変長符号化器17は、圧縮動画像信号を出力バッファ19に出力し、出力バッファ19は、圧縮動画像信号を一時的に記憶する。この圧縮動画像信号は、所定のビットレートでビットストリームとして出力バッファ19から読み出される。圧縮動画像信号のビットストリームは、伝送路を介して、あるいは光ディスク等の適当な記録媒体に記録することにより、相補型の圧縮動画像信号伸長装置に供給される。
すなわち、記録媒体は、予測符号化されるとともに離散コサイン変換された動画像信号から得られる圧縮動画像信号が記録されている記録媒体である。予測符号化において参照画像として使用される再生画像の各ブロックは、圧縮動画像信号を構成する量子化DCT係数のブロックを逆量子化し、得られるDCT係数ブロックのDCT係数の和を奇数化して、和が奇数化されたDCT係数ブロックを逆DCT変換することにより再生される。
ここで、本発明に係る伝送装置は、上述した本発明に係る動画像信号圧縮装置を備えている。
ところで、動画像信号圧縮装置の差分ブロック符号化器９において和の奇数化を行う方が好適であると考えられる。和の奇数化により、圧縮動画像信号を構成する各量子化DCT係数ブロックのDCT係数の和は奇数となる。このように圧縮動画像信号を処理することにより、圧縮動画像信号伸長装置においてDCT係数の和を奇数化する必要がなくなると考えられる。しかし、このような構成では、DCT係数が動画像信号圧縮装置において量子化され、圧縮動画像信号伸長装置において逆量子化された後、圧縮動画像信号伸長装置のIDCT回路に入力されるDCT係数の和は奇数でなくなる。よって、和の奇数化処理は、圧縮動画像信号伸長装置のIDCT処理の前に行い、ミスマッチ誤差が発生しないようにしなければならない。
つぎに、本発明を適用した圧縮動画像信号伸長装置について、図19を用いて説明する。図19において、圧縮動画像信号は、動画像圧縮装置から伝送路を介して、あるいは光ディスク等の適当な記録媒体から圧縮動画像信号を再生することにより、ビットストリームとして受信される。このビットストリームは入力バッファ31に供給され、一時的に記憶された後、読み出されて、画像毎に逆可変長符号化器（IVLC）32に供給される。逆可変長符号化器32は、MPEG符号のそれぞれの層のヘッダ情報を圧縮動画像信号から抽出し、このヘッダ情報から画像復号化制御情報PHをメモリコントローラ33に供給する。
また、逆可変長符号化器32は、可変長符号化されたDCT係数のブロックを逆可変長符号化して、量子化DCT係数の現画像ブロックCbを含む量子化DCT係数のブロックを再生し、この量子化DCT係数ブロックCbを差分ブロック復号化器34に供給する。差分ブロック復号化器34は、量子化DCT係数ブロックCbを復号化して、再生差分ブロックBSを再生し、この再生差分ブロックBSを加算器39に供給する。
また、逆可変長符号化器32は、圧縮動画像信号から動きベクトルMV及び量子化DCT係数ブロックCbの動き補償モードMMを抽出して、動き補償器37に供給する。この動き補償器37により、ピクチャメモリ群38から、再生差分ブロックBSに対応するマッチングブロックが読み出される。
ピクチャメモリ群38は複数のピクチャメモリからなり、ピクチャメモリはそれぞれ既に再生された画像を記憶している。マッチングブロックは、ピクチャメモリの１つに記憶されている動きベクトルMVで指定されたアドレスに位置する再生画像のブロックである。このマッチングブロックが読み出される再生画像が記憶されているピクチャメモリは、メモリコントローラ33によってピクチャメモリ群38の中から指定される。
上述のように、先行する再生画像からの予測、後行する再生画像からの予測、及び先行する再生画像と後行する再生画像に対する画素毎の線形演算を行うことにより得られるブロックからの予測により、画像が符号化される。また、画像を予測なしで符号化することもできる。この場合、ピクチャメモリ群38から供給されるマッチングブロックは、零ブロック、すなわち全画素値が零となっているブロックである。ピクチャメモリ群38から出力される動き補償されたマッチングブロックは、適応的なものとなっており、ブロック単位で最適なものが選択される。なお、ここでのブロックの大きさは16×16画素である。
ピクチャメモリ群38から読み出された各マッチングブロックは、加算器39に供給される。加算器39は、差分ブロック復号化器34から供給される再生差分ブロックBSとピクチャメモリ群38から供給されるマッチングブロックとを１画素毎に加算する。この結果、再生画像ブロックが再生され、この再生画像ブロックは、メモリコントローラ33により指定されたピクチャメモリ群38の中のピクチャメモリに記憶される。加算器39から供給される再生画像ブロックは、先にピクチャメモリに記憶された再生画像に上書きされ、選択されたピクチャメモリに１つずつ記憶されて、新たな再生画像を形成する。
ピクチャメモリ群38に記憶された再生画像は、メモリコントローラ33からの出力画像指示信号によって制御される順で読み出される。読み出された画像は、再生動画像信号として、ビデオモニターのような画像表示装置に供給される。画像表示装置は、この再生動画像信号に応じた動画像を表示する。
ここで、上記差分ブロック復号化器34について図19を参照して説明する。差分ブロック復号化器34は、逆量子化器40と、和奇数化回路35と、逆離散コサイン変換回路36とを備える。逆量子化器40は、逆可変長符号化器32から供給される量子化DCT係数ブロックCbを量子化テーブルを用いて逆量子化する。和奇数化回路35は、逆量子化器40からのDCT係数ブロックを受け取り、IDCT回路36でのIDCT処理におけるミスマッチ誤差の発生を防ぐ。IDCT回路36は、和奇数化回路35からの和が奇数化されたDCT係数ブロックをIDCT変換する。
図20に、逆量子化器40の構成例を示す。この逆量子化器40は、主として、ラン／レベル復号化器41と、アドレスカウンタ47と、アドレス変換器48と、セレクタ49と、第１のブロックメモリ42と、第２のブロックメモリ43と、逆量子化回路（以下、IQ回路という。）46により構成される。
ラン／レベル復号化器41は、逆可変長符号化器32から量子化DCT係数ブロックCbを受け取り、動画像信号圧縮装置の可変長符号化器17において量子化DCT係数に施されたラン／レベル符号化を復号化する。得られる量子化DCT係数ブロックは、ジグザグスキャンの順で、第１のブロックメモリ42又は第２のブロックメモリ43に供給される。第１のブロックメモリ42又は第２のブロックメモリ43は、量子化DCT係数ブロックを記憶する。
アドレスカウンタ47とアドレス変換器48は、それぞれ、第１のブロックメモリ42と第２のブロックメモリ43の書込アドレスと読出アドレスとを出力する。量子化DCT係数ブロックは、第１のブロックメモリ42と第２のブロックメモリ43に対し交互に書き込まれ、読み出される。各量子化DCT係数ブロックは、アドレスカウンタ47から供給される書込アドレスに応じて、ジグザグスキャンの順でブロックメモリの１つに書き込まれ、アドレス変換器48から供給される読出アドレスに応じてラスタスキャンの順でブロックメモリから読み出される。書込と読出のアドレス順の違いにより、ブロック内の量子化DCT係数の順がジグザグスキャンからラスタスキャンに変換される。
アドレスカウンタ47は、ジグザグスキャンの順で書込アドレスを発生する。アドレス変換器48は、アドレスカウンタ47からジグザグスキャンの順の書込アドレスを受け取り、これをアドレス変換テーブルを用いてラスタスキャンの順の読出アドレスに変換する。アドレスカウンタ47とアドレス変換器48が発生したアドレスは、セレクタ49により選択され、アドレスadrs1、adrs2として第１のブロックメモリ42及び第２のブロックメモリ43に供給される。ラン／レベル復号化器41からの量子化DCT係数ブロックが第１のブロックメモリ42又は第２のブロックメモリ43に書き込まれると、各アドレスadrs1、adrs2は、アドレスカウンタ47によりセレクタ49を介してジグザグスキャンの順で供給される。量子化DCT係数ブロックが第１のブロックメモリ42又は第２のブロックメモリ43からIQ回路46に読み出されると、各アドレスadrs1,adrs2は、アドレス変換器48からセレクタ49を介してラスタスキャンの順で供給される。
第１のブロックメモリ42又は第２のブロックメモリ43に全ての量子化DCT係数が記憶されると、量子化DCT係数ブロックはラスタスキャンの順で読み出され、IQ回路46に供給される。IQ回路46は、ブロック内の量子化DCT係数を逆量子化し、得られるDCT係数ブロックを和奇数化回路35に供給する。このIQ回路46での逆量子化は、図６に示す動画像信号圧縮装置の局部復号化器を構成する逆量子化器13での逆量子化と同じである。
和奇数化回路35は、逆量子化器40からのDCT係数ブロックのDCT係数の和のパリティが偶数であると判定したときは、DCT係数の和が奇数となるように、少なくとも１つのDCT係数に処理を施す。和奇数化回路35は、この和が奇数化されたDCT係数のブロックをIDCT回路36に供給する。なお、この和奇数化回路35での奇数化処理は、図６に示す動画像信号圧縮装置の局部復号化器を構成する和奇数化回路14での奇数化処理と同じである。
IDCT回路36は、和が奇数化されたDCT係数ブロックをIDCT変換して、再生差分ブロックBSを再生し、この再生差分ブロックBSを加算器39に供給する。
図20に示す逆量子化器40の具体的な動作を、図21A乃至21Iに示すタイミングチャートを用いて説明する。逆可変長符号化器32は、圧縮動画像信号から量子化されたDCT係数のブロックCbを取り出し、ラン／レベル復号化器41に対して量子化DCT係数ブロックを読み出すように指示するイベントイネーブル信号EV_EN（図21Aに示す）を発生する。量子化DCT係数ブロックのDCT係数は、ラン／レベル符号化されている。
また、逆可変長符号化器32は、図21Bに示すように、イベント数信号EVENT_NOをラン／レベル復号化器41に出力する。イベント数信号EVENT_NOは、量子化DCT係数ブロックCb内のラン／レベルの組合せの数、すなわちランとレベルを示すデータの組合せの数を示すものである。
ラン／レベル復号化器41は、このイベント数信号EVENT_NOを受け取ると、図21Cに示すように、各ラン／レベルの組合せについて読出要求信号RE_REQを逆可変長符号化器32に出力する。逆可変長符号化器32は、この読出要求信号RE_REQが入力されると、図21D、21Eに示すように、ラン／レベルの１組をラン／レベル復号化器41に出力し、これを受信した読出要求信号RE_REQの数だけ繰り返す。
ラン／レベル復号化器41は、ラン／レベル符号化された量子化DCT係数を復号化し、図21Gに示すように、量子化されたDCT係数のブロックをWDATAとしてジグザグスキャンの順に第１のブロックメモリ42に供給する。これと同時に、図21Fに示すように、アドレスカウンタ47はラン／レベル復号化器41からの量子化DCT係数をカウントし、各量子化DCT係数の書込アドレスを示すアドレス信号adrs1を、セレクタ49を介してジグザグスキャンの順で第１のブロックメモリ42に供給する。
そして、ラン／レベル復号化器41は、最後の非零のDCT係数を受信したことを示す符号EOBを逆可変長符号化器32から受け取ると、符号EOBに対応する量子化DCT係数を設定し、すなわち符号EOB以降のDCT係数データは全て０として、この０のDCT係数データを第１のブロックメモリ42に供給する。
また、ラン／レベル復号化器41は、符号EOBを受け取ると、図21Hに示すように、信号EOB_ENを位置（POS）レジスタ44、45に出力する。この信号EOB_ENは、符号EOBが受け取られたことをPOSレジスタ44、45に示すためのものである。POSレジスタ44、45は、第１と第２のブロックメモリ42、43に供給された各量子化DCT係数のアドレスを、アドレスカウンタ47からアドレス変換器48を介して受け取る。ラン／レベル復号化器41が符号EOBを受け取ると、アドレスカウンタ47により出力されるアドレスは最後の非零のDCT係数のアドレスとなる。信号EOB_ENにより、アドレス変換器48によりラスタスキャンアドレスに変換された最後の非零のDCT係数のアドレスEOB_POSは、量子化DCT係数ブロックが書き込まれているブロックメモリのPOSレジスタに書き込まれる。このようにして、POSレジスタ44、45の何れかが量子化DCT係数ブロックの最後の非零のDCT係数のアドレスを記憶する。
ラン／レベル復号化器41が量子化DCT係数ブロックを全て第１のブロックメモリ42又は第２のブロックメモリ43に供給すると、アドレスカウンタ47は、バンク切換信号BANKを第１のブロックメモリ42と第２のブロックメモリ43に供給する。バンク切換信号BANKは、ブロックメモリのモードを切り換えて、書込モードであった第１のブロックメモリ42が読出モードに、第２のブロックメモリ43が書込モードに切り換えられる。したがって、ラン／レベル復号化器41が次の量子化DCT係数ブロックの復号化を開始すると、得られる量子化DCT係数は第２のブロックメモリ43に書き込まれることになる。また、バンク切換信号BANKはセレクタ49を切り換えて、書込モードでブロックメモリに供給されていたアドレスをアドレスカウンタ47からのジグザグスキャンの順でアドレスとし、読出モードでブロックメモリに供給されていたアドレスをアドレス変換器48からのラスタスキャンの順のアドレスとする。
また、ラン／レベル復号化器41が量子化DCT係数ブロックを全て第１のブロックメモリ42に供給すると、第１のブロックメモリ42はメモリフル信号FULL1をIQ回路46に出力する。メモリフル信号FULL1は、全ての量子化DCT係数が記憶されたことを示すものである。IQ回路46は、メモリフル信号FULL1を受けとると、読出要求信号RD_EN1を第１のブロックメモリ42に送る。この読出要求信号RD_EN1により、第１のブロックメモリ42は、記憶している量子化DCT係数を、アドレス変換器48からセレクタ49を介してラスタスキャンの順で供給されるアドレスadrs1に応じて、読み出す。したがって、ブロック内の量子化DCT係数は第１のブロックメモリ42から読み出される。各アドレスに応じて読み出された量子化DCT係数はIQ回路46に供給される。ブロック内の量子化DCT係数が第１のブロックメモリ42から読み出されるのと同時に、次のブロックの量子化DCT係数が、アドレスカウンタ47からのアドレスに応じてジグザグスキャンの順で第２のブロックメモリ43に書き込まれる。
IQ回路46は、図６に示す動画像信号圧縮装置の逆量子化器13と同様に、ブロックの量子化DCT係数を逆量子化して、得られるDCT係数を和奇数化回路35に供給する。
１つのブロック内のDCT係数の和のパリティが偶数のとき、和奇数化回路35は、上述の動画像信号圧縮装置の和奇数化回路14と同様に、DCT係数の少なくとも１つを処理して、DCT係数の和を奇数化し、和が奇数化されたDCT係数のブロックをIDCT回路36に供給する。
例えば、和奇数化回路35は、POSレジスタ44、45を参照し、ジグザグスキャン順での最後の非零のDCT係数かどうかの判定を行い、最後の非零のDCT係数のパリティを処理してブロックのDCT係数の和を奇数化する。また、和奇数化回路35は、最高周波数成分のDCT係数を処理して、DCT係数の和を奇数化することもできる。最高周波数成分は画質に与える影響が小さく、また、最後の非零のDCT係数を探索する必要がないため、最高周波数成分のDCT係数のパリティを反転することが最良である。また、スキャン順がジグザグスキャン以外の場合も同様である。
なお、ミスマッチ誤差を防ぐため、動画像信号圧縮装置と圧縮動画像信号伸長装置での奇数化処理は同一でなければならないことは言うまでもない。
第２の実施例
動画像信号圧縮装置の第２の実施例の構成を図22に示す。この第２の実施例は、本発明の好適な実施例である。図22に示す動画像信号圧縮装置を構成する和奇数化回路50の構成を図23に示す。図６に示す動画像信号圧縮装置の第１の実施例の構成要素に対応する第２の実施例の構成要素には、同一の指示符号を付して、説明を割愛する。第２の実施例における動画像信号圧縮装置は、和奇数化回路50を除いて、第１の実施例と同じ構成を有する。
和奇数化回路50では、図23に詳細に示すように、カウンタ20が、逆量子化器13から供給される量子化DCT係数の数をカウントし、得られるカウント値coeff_adrsをパリティ判定回路21に供給する。
アキュムレータ23Aは、加算器23とレジスタ24とを備える。加算器23は、逆量子化器13から供給されるDCT係数ブロックの各DCT係数と、レジスタ24中に保存されている先行するDCT係数の和とを加算する。各DCT係数ブロックについての和が求められると、レジスタ24はリセットされる。得られるDCT係数の和が加算器23からレジスタ24とパリティ判定回路21に供給される。アキュムレータ23Aは、パリティ判定回路21がDCT係数の和の偶奇を判定するのためには、ブロックのDCT係数の最下位ビットのみの和をとればよい。
パリティ判定回路21は、以下のようにしてカウンタ20から供給されるカウント値coeff_adrsに応じて動作する。アキュムレータ23Aにより全てのDCT係数が加算されたことをカウント値coeff_adrsが示すとき、パリティ判定回路21は、アキュムレータ23Aから供給されたDCT係数の和のパリティが偶数か奇数かを判定する。例えば８×８の２次元DCT変換の場合、ブロックの64個のDCT係数の和が求められたことをカウント値coeff_adrsが示すとき、パリティ判定回路21は、アキュムレータ23Aから供給されるDCT係数の和のパリティが偶数であるか、奇数であるかを判定する。
具体的には、DCT係数が２進数で表現されているとき、パリティ判定回路21は、アキュムレータ23Aから供給されるDCT係数の和の最下位ビット（LSB）を判定する。LSBが０であるとき、和のパリティは偶数である。この場合、パリティ判定回路21は、パリティ反転を行うために処理要求信号REQ1をパリティインバータ53に出力する。この処理要求信号REQ1に応じて、パリティインバータ53は、ブロックのDCT係数の少なくとも１つ（例えば、奇数）のパリティを変更して、DCT係数の和を奇数化する。一方、LSBが１であるとき、和のパリティは奇数である。この場合、DCT係数の和のパリティが奇数なので、パリティ判定回路21は処理要求信号REQ1を出力せず、パリティインバータ53はブロックの全てのDCT係数のパリティをそのままにする。
逆量子化器13からのDCT係数ブロックは、アキュムレータ23Aに送られる他に、遅延回路52を介してパリティインバータ53にも送られる。この遅延回路52は、処理要求信号REQ1がパリティインバータ53に入力されるときに、最後のDCT係数、すなわち最高周波数成分のDCT係数（例えば８×8DCT変換では、（7,7）成分のDCT係数）がパリティインバータ53に入力されるように、アキュムレータ23A及びパリティ判定回路21での処理時間に相当する時間、DCT係数を遅延する。
したがって、パリティインバータ53は、最高周波数成分のDCT係数以外の全てのDCT係数を、そのままIDCT回路15に送る。パリティ判定回路21が処理要求信号REQ1を発生しないとき、パリティインバータ53は最高周波数成分のDCT係数もそのまま出力する。パリティ判定回路21が処理要求信号REQ1を発生したときのみ、パリティインバータ53は、最高周波数成分のDCT係数のLSBを反転し、パリティ反転した最高周波数成分のDCT係数をIDCT回路15に送る。
すなわち、DCT係数の和のパリティが偶数であることをパリティ判定回路21が示すとき、パリティインバータ53は、ブロックの最高周波数成分のDCT係数（８×8DCT変換では、（7,7）成分のDCT係数）を処理する。パリティインバータ53は、最高周波数成分のDCT係数のパリティを反転し、これにより、IDCT回路15に送るブロックのDCT係数の和を奇数化する。かくして、DCT係数ブロックのDCT係数の和は常に奇数となる。なお、（7,7）成分のDCT係数はIDCTの出力値に与える影響が最も小さいDCT係数である。
以下、本発明の好適な実施例における和奇数化回路50の具体例について説明する。
図23に示す加算器23の代わりに、LSB検出器29と排他的論理和ゲート30を用いた例を、図24に示す。図23の和奇数化回路の構成要素に対応する図24の和奇数化回路の構成要素には、同一の指示符号を付して、説明は割愛する。LSB検出器29は、ブロック内のDCT係数のLSBを検出し、排他的論理和ゲート30はレジスタ24とともに、ブロック内のDCT係数のLSBの排他的論理和を求める。図10A及び23を参照して上述のように、この排他的論理和のパリティは、パリティ判定回路21によって判定される。
また、図24に示す排他的論理和ゲート30及びレジスタ24に代えて、図10Bに示すANDゲート88及びカウンタ89を用いることもできる。
また、他の例を図25に示す。ここでは、逆量子化器13と、図23に示す和奇数化回路50を構成するアキュムレータ23Aとの間にセレクタ51を備える構成とする。図23の回路の構成要素に対応する図25の回路の構成要素には、同一の指示符号を付し、説明は割愛する。図25に示す和奇数化回路50は、例えばある特定のDCT係数、例えば（0,0）成分、（4,0）成分、（0,4）成分、（4,4）成分のみのDCT係数の和を求め、和の奇数化が必要であるかを判定する。セレクタ51は、カウンタ20からカウント値coeff_adrsを受け取り、逆量子化器13から供給されている各DCT係数が加算すべき特定のDCT係数かを判定する。セレクタ51は、DCT係数が加算すべき係数であると判定したとき、すなわちカウント値coeff_adrsが例えば（0,0）成分、（4,0）成分、（0,4）成分、（4,4）成分に相当する値のとき、DCT係数をアキュムレータ23Aに供給する。図25の和奇数化回路50は，セレクタ51の制御により、特定のDCT係数の和を求める。そして、パリティインバータ53は、必要に応じてこの特定のDCT係数の和が奇数となるように、少なくとも１つのDCT係数を処理して、特定のDCT係数の和を奇数にする。和が奇数化されたDCT係数のブロックは、IDCT回路15に供給される。
また、図25に示すセレクタ51を、図24に示す和奇数化回路50の逆量子化器13とLSB検出器29の間に設けるようにしてもよい。このように変形することで、図24に示す和奇数化回路50は、セレクタ51により選択される特定のDCT係数のLSBの排他的論理和を求めることになる。
さらに、和奇数化回路50の他の実施例としては、逆量子化器13から供給される最後のDCT係数がDC成分のDCT係数の場合、すなわちラスタスキャンの順が上述の実施例と逆の場合、パリティ反転が行われるDCT係数は、最高周波数成分ではなくDC成分のDCT係数となる。
つぎに、パリティインバータ53の具体的な回路構成について図26を参照しながら説明する。パリティインバータ53は、図11に示すパリティインバータ28を簡素化したものである。パリティインバータ53は、LSBインバータ63と、第３及び第４のANDゲート64、65と、ORゲート66と、インバータ71とから構成される。
このパリティインバータ53では、逆量子化器13から供給されたDCT係数ブロックの各DCT係数のLSBを反転する。これにより、各DCT係数のパリティが反転する。通常、処理要求信号REQ1は無く、パリティインバータ53は、供給された各DCT係数を第３のANDゲート64とORゲート69を介してIDCT回路15（図23）に送る。
和奇数化回路50（図23）がブロック内の最高周波数成分のDCT係数を受け取ると、カウンタ20からのカウント値coeff_adrsは、パリティ判定回路21に対して、このパリティ判定回路21が受け取った値は全てのDCT係数の和であることを示す。これに応じて、パリティ判定回路21は、DCT係数の和のパリティが奇数か偶数かを判定する。
パリティ判定回路21は、ブロック内のDCT係数の和のパリティが偶数であると判定すると、処理要求信号REQ1をパリティインバータ53に送る。処理要求信号REQ1は、最高周波数成分のDCT係数と同時に、遅延回路52を介してパリティインバータ53に供給される。この処理要求信号REQ1により、第３及び第４のANDゲート64、65の状態が変化する。これにより、LSB反転された最高周波数成分のDCT係数が、LSBインバータ63から第４のANDゲート65とORゲート69を介してIDCT回路15に供給される。このLSB反転された最高周波数成分のDCT係数は、通常の最高周波数成分のDCT係数の代わりにIDCT回路15に供給され、IDCT回路15に送られるDCT係数の和を奇数化する。
一方、パリティ判定回路21は、ブロック内のDCT係数の和のパリティが奇数であると判定すると、処理要求信号REQ1を発生しない。DCT係数ブロックの和の奇数化は必要ないので、パリティインバータ53は、通常の最高周波数成分のDCT係数をANDゲート64とORゲート69を介してIDCT回路15に送る。
また、このパリティインバータ53を変形した具体例を、図27乃至図29に示す。
図26に示すパリティインバータ53を構成するLSBインバータ63の代わりに用いる、図13に示す＋１加算器73と同じ＋１加算器73を図27に示す。それ以外は、このパリティインバータ53は変わらない。図27に示すように変形されたパリティインバータ53は、１を加算することによりブロック内の各DCT係数のパリティを反転する。したがって、パリティ判定回路21が処理要求信号REQ1をパリティインバータ53に送ると、パリティインバータ53は、通常の最高周波数成分のDCT係数の代わりに、最高周波数成分のDCT係数に１を加算したものをIDCT回路15に供給する。これにより、ブロック内のDCT係数の和は奇数化される。
図28に示すように、図26に示すパリティインバータ53のLSBインバータ63の代わりに、図15に示す規模削減回路80を用いているようにしてもよい。それ以外は、図26に示すパリティインバータ53は変わらない。図28に示すように変形された図26のパリティインバータ53は、上記の式15に従ってDCT係数の和を奇数化する。パリティ判定回路21が処理要求信号REQ1を発生すると、ブロック内のDCT係数の和は、パリティ反転された最高周波数成分のDCT係数をIDCT回路15に送ることにより奇数化される。最高周波数成分のDCT係数のパリティは、以下の方法で反転する。すなわち、最高周波数成分のDCT係数が正のときは−１減算器82により１を減算し、０又は負のときは＋１加算器83により１を加算して、DCT係数の和の奇数化を行うになっている。
また、図29に示すように、図26に示すLSBインバータ63の代わりに、図17に示す規模増大回路90を用いているようにしてもよい。それ以外は、図26に示すパリティインバータ53は変わらない。図29に示すように変形された図26のパリティインバータ53は、上記の式16に基づいてDCT係数の和を奇数化する。パリティ判定回路21が処理要求信号REQ1を発生すると、ブロック内のDCT係数の和は、パリティ反転された最高周波数成分のDCT係数をIDCT回路15に送ることにより奇数化される。最高周波数成分のDCT係数のパリティは、以下の方法で反転する。すなわち、最高周波数成分のDCT係数が０又は負のときは−１減算器93により１を減算し、正のときは＋１加算器92により１を加算して、DCT係数の和の奇数化を行うになっている。
つぎに、圧縮動画像信号伸長装置の第２の実施例について説明する。
この第２の実施例における圧縮動画像信号伸長装置は、上述の図19に示す圧縮動画像信号伸長装置の第１の実施例の和奇数化回路35の代わりに、図23に示す和奇数化回路50を用いている。それ以外は、図19に示す圧縮動画像信号伸長装置と変わらない。この圧縮動画像信号伸長装置の第２の実施例では、DCT係数の和を奇数化する処理は、上述の図22に示す第２の実施例の動画像信号圧縮装置と同様に行われる。したがって、逆可変長符号化器32から和奇数化回路50にアドレスEOB_adrsを送る必要がなくなる。
上述のように、本発明によれば、逆離散コサイン変換を行う際のミスマッチ誤差が生じる確率が低く、実用的にはミスマッチ誤差の無い逆離散コサイン変換方法、逆離散コサイン変換装置、動画像信号圧縮装置、圧縮動画像信号伸長装置、及び圧縮動画像信号の伝送装置を実現することができる。また、圧縮動画像信号が媒体から再生される際や、逆直交変換等の処理により伸長される際にミスマッチ誤差を発生させない情報記録媒体を実現することができる。
すなわち、本発明は、動画像信号の圧縮において離散コサイン変換を用い、圧縮動画像信号の伸長において逆離散コサイン変換を用いる場合、逆離散コサイン変換ミスマッチ誤差の発生を防止することができ、画質の劣化を小さくすることができる。したがって、本発明を適用した動画像信号圧縮装置及び圧縮動画像信号伸長装置では、動画像信号圧縮装置の局部デコード画像と、圧縮動画像信号伸長装置の再生画像とが異なることがなく、高品位の画像を提供することができる。
以上、本発明の実施例について詳細に説明したが、本発明はこれらの実施例に限定されるものではなく、請求の範囲内で種々の変更が可能である。
【図２６】
0003610578.tif 000016
【図１】
0003610578.tif 000017
【図２】
0003610578.tif 000018
【図３】
0003610578.tif 000019
【図５】
0003610578.tif 000020
【図２７】
0003610578.tif 000021
【図４】
0003610578.tif 000022
【図６】
0003610578.tif 000023
【図７】
0003610578.tif 000024
【図２８】
0003610578.tif 000025
【図８】
0003610578.tif 000026
【図９】
0003610578.tif 000027
【図１０】
0003610578.tif 000028
【図１１】
0003610578.tif 000029
【図１２】
0003610578.tif 000030
【図１３】
0003610578.tif 000031
【図１４】
0003610578.tif 000032
【図１５】
0003610578.tif 000033
【図１６】
0003610578.tif 000034
【図１７】
0003610578.tif 000035
【図１８】
0003610578.tif 000036
【図１９】
0003610578.tif 000037
【図２０】
0003610578.tif 000038
【図２１】
0003610578.tif 000039
【図２２】
0003610578.tif 000040
【図２３】
0003610578.tif 000041
【図２４】
0003610578.tif 000042
【図２５】
0003610578.tif 000043
【図２９】
0003610578.tif 000044
【図３０】
0003610578.tif 000045