以下では、MPEGビデオエンコーダの用語で記述されているが、それは、イメージフレームが部分的に動き補償付き予測や適応量子化に基づいて符号化される他のタイプのビデオエンコーダが使われる得ることを意図している。
(1)典型的なMPEGエンコーダ(図1).
図1は典型的なMPEGエンコーダを示す。このシステムでは、イメージを記述するビデオ信号が、画面並び換え器111に供給される。画面並び換え111器は画面順を並び換える。現フレームが時間的に先行するフレームにより参照される場合は、該現フレームが先行して復号されて画像メモリ142に格納されている必要がある。このため、現フレームとその時間的な先行フレームとは、現フレームが最初に処理されるように並び換えられる。例えば、時間的に先行するBピクチャによって参照される現I又はPピクチャは、先にマクロブロック変換器112へ出力される。
画面並び換え器111で並び換えられたビデオデータは、マクロブロック変換器112に入力される。例えば通常の2ポートメモリを含むマクロブロック変換器112は、信号を、ラスタスキャンフォーマットから16×16画素のマクロブロックフォーマットに変換して、減算器114と動き検出器146へ出力する。マクロブロックフォーマットでは、イメージの各フレームは、16×16画素の行列にアレンジされた256画素を有するマクロブロックの集まりとして表される。マクロブロック変換器112は、これらの画素値をマクロブロック毎に減算器114へ供給する。
非イントラ符号化モードでは、減算器114は、画像メモリ142から供給される参照マクロブロックを、マクロブロック変換器112から供給される対応する現マクロブロックから減算して、動き補償された差分マクロブロックである差分マクロブロックをブロック変換器116へ出力する。イントラ符号化モードでは、減算器114は、マクロブロック変換器112から供給された現マクロブックを、ブロック変換器116へ出力する。
ブロック変換器116は、図3に示すように、信号を、16×16画素のマクロブロックフォーマットから、8×8画素の4個のブロックフォーマットに変換して、DCT118へ出力する。ブロック変換器116は、これらの画素値をブロック毎にDCT118へ供給する。
DCTプロセッサ118は、各ブロックの画素値にDCT演算を適用して、DCT係数行列Cijのブロックに変換する。各ブロックは、図4(c)に示すようなジグザグスキャンを用いて、64個の係数Cijのリニアストリームにアレンジされる。何れのブロックに於いても、これらの係数Cijの先頭は、画素ブロックの直流(DC)空間周波数成分を表す。また、残りの係数Cijは、次に高い空間周波数成分である。
DCTプロセッサ118によって供給される係数値は、量子化器120に適用される。量子化器120は、各係数値Cijを、割り当てられたビット数を持つ2値に変換する。概して、低い順番の係数に対しては、高い順番の係数に対してよりも、大きいビット数が用いられる。その理由は、人間の目が、低空間周波数のイメージ成分に対してよりも、高空間周波数のイメージ成分に対しての方が、より感受性が鈍いためである。この操作は、例えば、各係数を、空間周波数に比例する各々異なる値によって除算することで実行され得る。
また、各係数値に割り当てられたビット数は、量子化コントローラ132から供給される量子化ステップ幅qに応じて変更され得る。量子化ステップ幅qは、各係数が、量子化行列Kijによって除算される前又は除算された後に、各係数を除算するために適用される。量子化器120はデジタル値の流れを産み、それは、VLC124と、逆量子化器136へ入力される。圧縮レートを制御する量子化ステップ幅qは可変である。
VLC124は、量子化器120からのデータを、例えば、ランレングスのハフマンタイプのコードを用いて符号化する。ハフマンタイプのコードを用いて、VLC124は、出現頻度の高いデータ値の結合と0の連続に対して、より少ないビット数を割り当てる。
第2のVLC134がある。これは、ともにモード決定器150からのデータであるマクロブロックタイプデータMBTと動きベクトルデータとを、可変長符号化する。
VLC124で発生された符号と、VLC134で発生された符号は、挿入器(FIFOメモリ)126に入力する。この挿入器(FIFOメモリ)126は、それらを結合して、ビットストリームをバッファメモリ(FIFOメモリ)128へ出力する。このビットストリームはバッファメモリ(FIFOメモリ)128に格納され、光ディスクのような記録媒体130に記録される。
MPEGエンコーダでは、バッファメモリ128のデータ量が監視され、MPEGデコーダのバッファメモリに格納されるデータ量がシミュレートされる。これにより、量子化ステップ幅qが、MPEGデコーダのバッファメモリがオーバーフローしないように制御される。即ち、量子化ステップ幅qは、バッファメモリ128と、バッファメモリ128の容量変化を参照して決定される。量子化ステップ幅qとしては、通常は、値1〜31が採用される。
BピクチャとPピクチャでは、差分値がDCTされて出力されため、データ量はIピクチャより少なくなる。この理由から、MPEGでは、目標データ量はピクチャタイプに応じて割り当てられる。また、発生されたデータ量は、各スライスやマクロブロック毎に監視される。データ量は目標値と比較され、量子化コントローラ132によって評価される。例えば、発生符号量が目標値より大きい場合は量子化ステップ幅qは大きくされ、量子化は粗くなる。この制御は、量子化コントローラ132により行われる。他方では、発生符号量が目標値より小さい場合は量子化ステップ幅qは小さくされ、量子化は細かくなる。バッファメモリ128はフレームタイプ、フレーム特性、量子化ステップ幅に起因して生ずる発生符号量の変動を緩和する。
なお、MPEG標準は、一般的ではないが、固定ビットレートに加えて、可変ビットレートを許容している。ビットレートが変動する場合は、量子化ステップ幅qは当然に変動する。
逆量子化器136と逆DCT138で構成される局部デコーダは、先行又は後続フレームのための参照イメージデータを再生する。再生されたフレームは、画像メモリ142に格納される。その後、減算器114へ前述のように出力される。加算器140は、上記再生データが差分データである場合に、参照フレーム内の動き補償された参照マクロブロックを上記再生データに加算する。
画像メモリ142は、少なくとも2つのイメージデータを格納する。IピクチャとIピクチャ、IピクチャとPピクチャ、PピクチャとPピクチャのペアの何れかである。画像メモリ142は、各マクロブロックを参照用に出力する。また、動きベクトル検出用に動きベクトル検出器146へ出力する。また、モード決定用にモード決定器150に出力する。動きベクトル検出器146では、現マクロブロックに最も似ている領域が、例えば、予測誤差を用いて参照フレーム内から探し出される。動きベクトル検出器146は、前方検出器146F、双方検出器146M、後方検出器146Bから成る。前方検出器146Fは、前方動きベクトルを検出して、その予測誤差とともに動き補償モード選択器148に出力する。双方検出器146Mは、両方向の動きベクトルを検出して、その予測誤差とともに動き補償モード選択器148に出力する。後方検出器146Bは、後方動きベクトルを検出して、その予測誤差とともに動き補償モード選択器148に出力する。
動き補償モード選択回路148は、最も予測誤差の少ないものを選択する。つまり、3つの動きベクトル検出回路146F,146M,146Bからの予測誤差出力の内、後方向動きベクトル検出回路146Bからの予測誤差がもっとも少なければ、動き補償モード選択回路148は、後方向動き補償を指示するマクロブロックタイプ情報を出力するとともに、後方向動きベクトル検出回路146Bからの動きベクトルを出力する。
また、同様に、3つの動きベクトル検出回路146F,146M,146Bからの予測誤差出力の内、双方向動きベクトル検出回路146Mの予測誤差がもっとも少なければ、動き補償モード選択回路148は、双方向動き補償を指示するマクロブロックタイプ情報を出力するとともに、双方向動きベクトル検出回路146Mからの動きベクトルを出力する。
前段の動き補償モード選択回路148により、マクロブロックを動き補償予測符号化(インター符号化)する場合に、最も、適切な動き補償の方向が選択済みである。しかし、画像のパターンによっては、マクロブロックを符号化する場合に画面内符号化(イントラ符号化)の方が、効率的な場合もある。モード決定回路150は、このイントラ/インターの決定を行う。モード決定回路150については、例えば、特許文献7、特許文献8に示されるように、良く知られている。
モード決定回路150は、マクロブロック変換器112からのマクロブロックの画像の分散値を求める。また、動き補償モード選択回路148からのマクロブロックタイプ情報及び動きベクトルに基づいて動き予測符号化した場合の差分画面の分散値を求める。このために、動き補償モード選択回路148からのマクロブロックタイプ情報及び動きベクトルに基づいて、予測マクロブロックを、動き補償読み出し制御回路144を介して画像メモリ142から読み出して、このモード決定回路150に入力する。
モード決定回路150は、この予測マクロブロックとマクロブロック変換器112からのマクロブロックとの差分画面のマクロブロックを得る。そして、このマクロブロックの分散値を求める。このように求めた2つの分散値を比較することによりマクロブロックのタイプを決定する。この決定に基づいて、マクロブロックタイプ情報を出力する。また、マクロブロックタイプ情報として、インター符号化が選ばれた場合は、動きベクトル情報も出力する。
MPEGエンコーダの動作を、図1〜図4を参照しつつ簡単に説明する。まず、画面並び替え回路111は、数十枚の画面から、一枚の画面が画面単位内で圧縮が行われるIピクチャを設定し、それ以外の画面は、動き補償を用いた画面単位間での圧縮が行われBピクチャ・Pピクチャとする。画面並び替え回路111は、この設定に合わせて画面の並び替えを行う。
そして、画面単位内で圧縮を行うイントラマクロブロックでは、ブロック化回路112で画面を複数の領域に分割し、減算回路114を素通りし、DCT回路118でそれぞれに二次元離散余弦変換(DCT)を行って周波数成分を求める。このDCT処理の単位は、8×8画素単位のブロックである。
画面(図4(a))はDCT処理されて、図4(b)に示されるように、周波数成分に変換される。この結果、左上が低周波領域となり、右下が高周波領域となる。得られた周波数成分は、図4(d)で示される値によって除算される。この除算が、量子化である。この量子化時に、人間の視覚特性が高周波に対して鈍感なことを利用し、低周波側には多くの符号を割り当て、高周波側の符号量を少なくするように、量子化する。つまり、前述の値Qijは、高周波に当る領域の値が大きく設定された量子化マトリックスKijと、量子化回路120からの量子化ステップ幅qとの、乗算結果である。こうして得られたデータを図4(c)の如く、低周波側から高周波側へジグザグに取り、この結果を可変長符号化する。
また、画面単位間で圧縮を行うインターマクロブロックでは、ブロック化回路112の出力(現画面)と、動き補償による予測画面とを、減算回路114に入力して差分をとり、以降は、Iピクチャと同等に符号化する。このようにBピクチャとPピクチャは、差分を伝送するので、データ量は小さい。したがって、このままでは、符号化時のデータ量(ビット量)が、画面によって異なる。しかし、MPEGでは、転送ビットレートは、ほぼ一定である。
このために、データ量が多い画面が続くと、バッファメモリ128がオーバーフローしてしまう恐れがある。そこで、量子化マトリックス(図4(d)の乗数である量子化ステップ幅qの値を変更することにより量子化の粗さを変更して(圧縮率を制御して)、発生データ量をフィードバック制御することにより、オーバーフローを防止している。
動きベクトル検出回路146は、動きベクトルを検出する。動き補償モード選択回路148は、このマクロブロックの適切な符号化モードを検出する。動きベクトル検出回路146、動き補償モード選択回路148では、いくつかある動き補償予測モードのすべての内で、予測誤差が最小になる動き補償モードを選択する。モード決定回路150は、最終的にマクロブロックタイプを決定し、このマクロブロックタイプ情報と、動きベクトルを出力する。
(2)第1実施例(図5〜図8).
図5において、図1と同一部分には、同一符号を付し説明を省略する。図5において、50は、イントラ符号化用のバッファである。52、54、56は、インター符号化用のバッファである。各バッファは、各動き補償モードにおける、動きベクトル等の付属データを含む画像の符号化データを格納する。
52は、前方向の動き補償予測符号化を行った場合に発生する符号を一時格納するバッファである。54は、双方向の動き補償予測符号化を行った場合に発生する符号を一時格納するバッファである。56は、後方向の動き補償予測符号化を行った場合に発生する符号を一時格納するバッファである。
58は、モード選択回路である。モード選択回路58は、バッファ50、52、54、56の符号量を検出し、符号量が最も少ないモードを選択して、モード決定回路60に出力する。このモード選択回路58は、複数の異なる動き補償予測符号化モードより動画像信号を符号化した場合に、実際に生じる動きベクトルを含めた符号量を検出するモード別発生符号量検出手段58を成している。
モード決定回路60は、符号化する場合のモードを決定する。モード決定回路60は、少なくても、モード選択回路58の出力により、符号化する動き補償モードを選択する適応型動き補償モード選択手段60を成している。
第1実施例の動作を説明する。Bピクチャを符号化する場合には、各マクロブロックについて、モードを決定しなくてはならない。動き検出回路146では、符号化するマクロブロックについて、各モードの動きベクトルを求める。
これより、本願の特徴を記載する。モード決定回路60は、図6のS1に示すように、まず、イントラ符号化が行われるように本エンコーダを制御する。そして、この時に発生する符号をバッファ50に格納する。
次に、モード決定回路60は、図6のS2に示すように、まず、インター符号化のうちの前方向予測符号化が行われるように本エンコーダを制御すると共に、対応する前方向の動きベクトルを出力する。そして、この時に発生する符号をバッファ52に格納する。
モード決定回路60は、図6のS3に示すように、インター符号化のうちの双方向予測符号化が行われるように本エンコーダを制御すると共に、対応する双方向の動きベクトルを出力する。そして、この時に発生する符号をバッファ54に格納する。
モード決定回路60は、図6のS4に示すように、インター符号化のうちの後方向予測符号化が行われるように本エンコーダを制御すると共に、対応する後方向の動きベクトルを出力する。そして、この時に発生する符号をバッファ56に格納する。
モード選択回路58は、図6のS5に示すように、バッファ50、52、54、56の符号量を検出し、もっとも符号量の少ないバッファを検出し、モード決定回路60に知らせる。つまり、モード選択回路58は、バッファ50、52、54、56の符号量を検出し、モード決定回路60は、図6のS6に示す如く、このもっとも少ない符号量に対応するモードでの符号化を決定する。ここからは、従来と同様に通常の符号化処理を行う。
このモードの決定について述べる。例えば、バッファ50の符号量が最も少ないのであれば、この時のマクロブロックに適した符号化は、イントラ符号化である。従って、モード選択回路58が、これを検出し、これをモード決定回路60に伝えると、モード決定回路60は、イントラ符号化を行うように本エンコーダを制御するために、イントラ符号化を示すマクロブロックタイプ情報を出力する。
また、バッファ56の符号量がもっとも少ないのであれば、この時のマクロブロックに適した符号化は、後方向の動き補償予測符号化である。従って、モード選択回路58が、これを検出し、これをモード決定回路60に伝えると、モード決定回路60は、後方向の動き補償予測符号化を行うように本エンコーダを制御するために、後方向予測符号化を示すマクロブロックタイプ情報を出力すると共に後方向の動きベクトルを出力する。
このように、この第1実施例によれば、実際の動きベクトルを含む符号量により、モードを選択しているので、発生符号量が少ない動き補償モードを選択することが出来る。なお、この第1実施例は、ハード的な概略回路ブロック図で説明したが、本願は、当然、MPEGの符号化をソフトウエアで行う場合に、採用しても良い。また、この第1実施例では、マクロブロックの符号化モードとしてイントラ符号化を含んでいるが、本願はこれに限定されるものではなく、複数種類の動き補償モードだけでもよい。また、この第1実施例は、3つの動き補償モードについて説明したが、本願は、当然、これだけに限定されるわけでなく、例えば、MPEG2のフレーム構造におけるフレーム予測とフィールド予測のモード選択にも利用できる。また、MPEG2のフィールド構造における16×16単位の予測と16×8単位の予測モードの選択にも利用できる。また、Pピクチャに用いても良い。
また、第1実施例では、常に、実際の符号量からモードを選択している。しかし、本願は、これに限定されるわけでない。例えば、十分にバッファ128に余裕があり、量子化ステップ幅qが最小の場合(圧縮率が小さな場合)は、従来と同様にしてモードを決定してもよい。そして、例えば、バッファ128に余裕がなくなる可能性が高まったり、量子化ステップ幅qが増加した場合(圧縮率が大きな場合)に、発生符号量を少なくするために、上述の処理を行うように構成してもよい。
また、この第1実施例は、3つの動き補償モードについては、全て実際に符号化した。しかし、本願は、当然、これだけに限定されるわけでなく。例えば、動き補償モードにおいて、予測誤差が小さい上位2つの動き補償モードについて全て実際に符号化するようにしてもよい。このようにすれば、プログラムにおける演算量を低減でき、処理スピードの高速化が図れる。なお、前述したように予測誤差が少ない場合に必ずしも符号量が少ないとは限らないが、その可能性が高いからである。
また、上述の如く、予測誤差が少ない上位2つの動き補償モードについて、全て実際に符号化するのではなく、図7の如く、予測誤差が所定閾値より少ない動き補償モードについて実際に符号化するようにしてもよい。このようにすると、プログラムにおける演算量を低減でき、処理スピードの高速化が図れる。
さらに、この図7の所定閾値の値を、量子化ステップ幅qに応じて変更してもよい。つまり、図8に示すように、量子化ステップ幅qが大きい場合、実際の符号量を出来るだけ検出するモードを選択した。つまり、バッファ128に余裕がない場合は、発生符号量の低減が切望されるので、この様な場合には、少しでも発生符号量を少なくする可能性を高めるために行う。
(3)第2実施例(図9).
図9において、図1及び図5と同一の部分には、同一符号を付して説明を省略する。この実施例は、本エンコーダでの圧縮率又は発生符号量に関連する値に応じて、符号化時のモード選択動作を変更するものである。なお、本エンコーダでの圧縮率又は発生符号量に関連する値としては、挿入器126からのマクロブロック毎の発生符号量、バッファ128の残り容量、量子化ステップ幅qがある。
この実施例では、量子化ステップ幅qを用いた。また、この実施例では、発生符号量に応じてモード選択動作を行う場合に、実際の発生符号量を検出するのではなく、分散値から発生符号量を予測した。図9において、62は、動き補償モード選択回路である。Lは、量子化ステップ幅qを動き補償モード選択回路62に伝送する報知手段としての信号線路である。
前記動き補償モード選択回路62は、予測誤差が所定の閾値より小さいモードをまず検出する。なお、この所定の閾値は、量子化ステップ幅qに応じて変更される。この量子化ステップ幅qは、信号線路Lにより動き補償モード選択回路62に伝送されている。量子化ステップ幅qが大きい場合には、前述の閾値も大きく変更される。
そして予測誤差と閾値との比較し、閾値より小さな予測誤差のモードを検出する。これに該当するモードがなければ、動き補償モード選択回路62は、最も予測誤差の小さいものを選択する。つまり、このモードを示すマクロブロックタイプ情報を出力するとともに、このモードの動きベクトルを出力する。また、これに該当するモードが1つのみであれば、動き補償モード選択回路62は、このモードを選択する。つまり、このモードを示すマクロブロックタイプ情報を出力するとともに、このモードの動きベクトルを出力する。
また、これに該当するモードが2つ以上であれば、動き補償モード選択回路62は、更に選択処理を行う。この選択処理のために、分散値による処理を行う。動き補償モード選択回路62は、複数のモードの一つについて、マクロブロックタイプ情報及び動きベクトルに基づいて、動き予測符号化した場合の誤差画面の分散値を求める。
このため、このモードに対応するマクロブロックタイプ情報及び動きベクトルを動き補償読み出し制御回路144に出力する。これにより、画像メモリ142からは、対応する予測画面のマクロブロックが、動き補償モード選択回路62へ出力される。
動き補償モード選択回路62は、マクロブロック変換器112からの現マクロブロックの画像と、画像メモリ142からの予測画面のマクロブロックの差分を求め、更に、この差分画面マクロブロックの分散値を求める。動き補償モード選択回路62は、残りのモードについても、同様に処理して、それぞれのモードにおける分散値を求める。
そして、動き補償モード選択回路62は、この分散値を比較して、動き補償モードを選択する。このように、動き補償モード選択回路62は、この動きベクトル検出回路(各モード別予測誤差検出手段:146)の出力と前記圧縮率に関連した値とを参考に前記動き補償モードを選定する、動き補償モード選択手段62を成している。また、この動き補償モード選択回路62は、少なくても前記圧縮率に関連した値に応じて動き補償モードを選択する処理を変更する動き補償モード選択手段62を成している。なお、この実施例では、動き補償モードによる差分画面の分散値をモード決定回路150でもう一度求めるようにしているが、これは、当然、回路をまとめてもよい。
(4)動き補償付き予測符号化(図17,図18).
従来より一般に行なわれている動き補償つき予測符号化を用いた圧縮手法について、以下に概略を説明する。図17は、MPEG規格に基づく圧縮動作の構成図、図18は、動き補償モードを選択する動作の構成図である。図17に於いて、イントラ画像はまず、ブロック毎にDCT/量子化部101で、DCT及び量子化が行なわれる。
この際、符号量制御部108より与えられる目標符号量に応じて、量子化ステップ幅等が定められる。生成したデータは、VLC部102へ送られて可変長符号化(VLC)が行なわれる。符号化データは、前記量子ステップ幅値とデータ統合され一本のビットストリームを形成する。一方、前記符号化データは、逆量子化/逆DCT(IDCT)部103へも送られて復号化され、復号データ(以下、デコード画像)は、画像メモリ104へ蓄えられる。
次に、インター画像は、まず、動き検出部105で、マクロブロック毎に、参照ピクチャに対して動きベクトルを検出する。ここで参照ピクチャは、画像メモリ104に保持されているデコード画像である。複数の動き補償モードが許容されている場合には、各動き補償モード毎に動きベクトル検出を行なう。その後に、動き補償部106において、画像間予測誤差が最小となる動き補償モードまたは、動き補償を行なわないモードを選択する。
選択したモードに対応する差分ブロックまたは処理ブロックは、DCT/量子化部101、次いでVLC部102へ送られて、イントラ画像と同様の圧縮処理が行なわれる。一方、動き補償部106で選択した前記モードの情報、及び動き補償を行う場合には対応する動きベクトル情報は、VLC部107へ送られて符号化される。最後にデータ統合部110において、各符号化情報が一本のビットストリームに統合されて出力される。生成ビットストリーム量は、符号量制御部108へ送られて、残存画像の符号化時に定める目標符号量の基準となる。
図18には、本構成の動き補償部106内部の詳細を記す。ここでは、まずブロック位置指定部11で、検出済みの動きベクトルデータを用いて、ピクチャ内の参照ブロック位置を指定し、参照ピクチャ内から、参照ブロックを切り出す。次に、差分ブロック生成部12で、前記参照ブロックと処理ブロックとの間の対応する画素値の差分を求め、差分ブロックを生成する。11〜13の動作は、複数の動き補償モードの各々及び動き補償を行わないピクチャ間予測符号化の各々について行う。但し、動き補償を行わない場合には、ブロック位置指定部11では、動きベクトルデータを用いず、処理マクロブロックと同じ座標を指定する。最小予測誤差選択部14では、各モードに対応する複数の差分ブロックを元に、画像間の予測誤差が最小になる動き補償モードを選択する。
最後に、選択した動き補償モードによる動き補償つきピクチャ間予測符号化(非イントラ)と、ピクチャ間予測符号化を行わないモード(イントラ)のいずれかを選択する、イントラ/非イントラ判定をイントラ/非イントラ判定部15で行う。一般には、ピクチャ間予測符号化の予測誤差が一定の閾値を越えれば、ピクチャ間予測符号化は行わない(イントラ判定)。
選択された動き補償モードの情報及び動きベクトルは、図17のVLC部107へ送られる。一方、対応する差分ブロック、または、動き補償を行なわないモードが選択された場合には、処理ブロックが、図17のDCT/量子化部101へ送られる。
(5)第3実施例(図10,図11).
本発明の第3実施例について述べる。図10は、本発明による動画像圧縮方法の構成の一例を示したもの、図11は、本発明による動き補償モード選択の詳細を示したものである。
図10に示す様に、この実施例の動作構成は、DCT及び量子化を行なうDCT/量子化部101及び可変長符号化を行なうVLC102、VLC107、逆量子化及びIDCTを行なう逆量子化/IDCT部103、少なくとも1枚以上のピクチャデータを格納する画像メモリ104、動き検出を行なう動き検出部105、動き補償を行なう動き補償部106、符号量制御を行なう符号量制御部108、種々の圧縮データを一本のビットストリームに統合するデータ統合部110で構成される。
本発明において、従来技術と異なる点は、インター画像における動き補償モードの選択であるので、イントラ画像の圧縮動作については、述べない。インター画像の場合は、まず、動き検出部105で画像メモリに蓄えられた参照画像に対して動き検出を行ない、さらに動き検出部で得られた動きベクトルを用いて動き補償部106で動き補償を行なう。
動き補償部では、過去に符号化済みのビットストリームの量から得られる目標符号量を用いて、複数の動き補償モードの中から最適な動き補償モードを選択する。DCT/量子化器101では、選択された動き補償モードに基づく動き補償により生成した差分ブロックデータをDCT及び量子化によって圧縮する。
更にVLC部102において可変長符号化を行なう。
一方、選択された動き補償モード情報と該動き補償モードに対応する動きベクトルは、VLC部107で可変長符号化される。データ統合部110では、上記圧縮データを統合して一つのビットストリームにし、出力する。
図11は、本実施例における、動き補償モード選択動作の詳細である。まず、ブロック位置指定部11において、検出済みの動きベクトルデータを用いて、参照ピクチャ内の、参照ブロックの位置を指定する。次に、差分ブロック生成部12において、処理ピクチャ内の処理ブロックと、前記参照ブロック位置に基づく参照ピクチャ内の参照ブロックとの対応する画素値の差分をとり、差分ブロックを生成する。
符号量計算部23では、前記差分ブロックを符号化する場合に生成する符号量を求める。ここで、符号量の算出は、予め差分ブロックの各要素、パターン、及び動きベクトル値に対応する符号量の表を保持しておき、該当する値を比較によって得る。または、差分ブロック及びその他のパラメータを実際に符号化処理して生成する符号量を得ても良い。その場合は、図10のDCT/量子化部101、VLC部102、VLC部107と同一の動作を全てのモードについて行い、符号量を得る。最近符号量選択部34では、各動き補償モード毎に求めた生成符号量から、目標符号量に最も近い値となる動き補償モードを選択する。
選択した動き補償データ及び対応する差分ブロックデータ、または、動き補償を行なわないモードが選択された場合には処理ブロックデータを出力する。ここで、符号量計算時に符号化を行なった場合には、ブロックデータの代わりに、符号化済みのデータを出力しても良い。その場合は、図10における、DCT/量子化部101、VLC部102、VLC部107の動作は行なわない。
(6)第4実施例(図12).
次に本発明の第4実施例を説明する。本実施例は、目標符号量の見積もりに量子化ステップ幅を用い、該目標符号量に最近の符号量となる動き補償モードを選択することを特徴とする。図12は、本実施例における、動き補償モード選択動作の詳細である。
まず、ブロック位置指定部11において、検出済みの動きベクトルデータを用いて、参照ピクチャ内の、参照ブロックの位置を指定する。次に、差分ブロック生成部12において、処理ピクチャ内の処理ブロックと、前記参照ブロック位置に基づく参照ピクチャ内の参照ブロックとの対応する画素値の差分をとり、差分ブロックを生成する。
符号量計算部23では、前記差分ブロックを符号化する場合に生成する符号量を求める。ここで、符号量の算出は、予め差分ブロックの各要素、パターン、及び動きベクトル値に対応する符号量の表を保持しておき、該当する値を比較によって得る。または、差分ブロック及びその他のパラメータを実際に符号化処理して生成する符号量を得ても良い。その場合は、図10のDCT/量子化部101、VLC部102、VLC部107と同一の動作を全てのモードについて行って符号量を得る。
符号化済みビットストリームのバッファ残存量に応じて量子化ステップ幅が定められる場合には、目標符号量の代わりに量子化ステップ幅を用いても良い。この場合、図中目標符号量見積り部45において、量子化ステップ幅値に対応する残存バッファ量のテーブルを予め保持しておき、該テーブルと比較することにより、目標符号量の概算を得る。
最近符号量選択部34では、各動き補償モード毎に求めた生成符号量から、見積もり目標符号量に最も近い値となる動き補償モードを選択する。選択した動き補償データ及び対応する差分ブロックデータ、または、動き補償を行なわないモードが選択された場合には処理ブロックデータを出力する。ここで、符号量計算時に符号化を行なった場合には、ブロックデータの代わりに、符号化済みのデータを出力しても良い。その場合は、図10における、DCT/量子化部101、VLC部102、VLC部107の動作は行なわない。
(7)第5実施例(図13).
次に本発明の第5実施例を説明する。本実施例は、符号化後の符号量が最小となる動き補償モードを選択することを特徴とする。図13は、本実施例における動き補償モード選択動作の詳細である。
まず、ブロック位置指定部11において、検出済みの動きベクトルデータを用いて、参照ピクチャ内の、参照ブロックの位置を指定する。次に、差分ブロック生成部12において、処理ピクチャ内の処理ブロックと、前記参照ブロック位置に基づく参照ピクチャ内の参照ブロックとの対応する画素値の差分をとり、差分ブロックを生成する。
符号量計算部23では、前記差分ブロックを符号化する場合に生成する符号量を求める。ここで、符号量の算出は、予め差分ブロックの各要素、パターン、及び動きベクトル値に対応する符号量の表を保持しておき、該当する値を比較によって得る。または、差分ブロック及びその他のパラメータを実際に符号化処理して生成する符号量を得ても良い。その場合は、図10のDCT/量子化部101、VLC部102、VLC部107と同一の動作を全てのモードについて行って符号量を得る。
最小符号量選択部54では、各モード毎に求めた生成符号量から、最小符号量となるモードを選択し、選択した動き補償データ及び対応する差分ブロックデータ、または、動き補償を行なわないモードが選択された場合には処理ブロックデータを出力する。選択した動き補償データ及び対応する差分ブロックデータ、または、動き補償を行なわないモードが選択された場合には処理ブロックデータを出力する。ここで、符号量計算時に符号化を行なった場合には、ブロックデータの代わりに、符号化済みのデータを出力しても良い。その場合は、図10におけるDCT/量子化部101、VLC部102、VLC部107の動作は行なわない。
(8)第6実施例(図14).
次に本発明の第6実施例を説明する。本実施例は、予測誤差が最小となる動き補償モード、及び、動き補償を行わないモードの内、符号化後の符号量が目標符号量にもっとも近くなるモードを選択することを特徴とする。
図14は、本実施例における、モード選択動作の詳細である。まず、ブロック位置指定部11において、検出済みの動きベクトルデータを用いて、参照ピクチャ内の、参照ブロックの位置を指定する。次に、差分ブロック生成部12において処理ピクチャ内の処理ブロックと前記参照ブロック位置に基づく参照ピクチャ内の参照ブロックとの対応する画素値の差分をとり、差分ブロックを生成する。
予測誤差計算部13では、予測誤差を計算する。符号量計算部23では、前記差分ブロックを符号化する場合に生成する符号量を求める。最小予測誤差選択部64では、ピクチャ間予測符号化を行なうモード毎に得た予測誤差の値が最小になるものを選び出す。符号量計算部23では、該最小予測誤差を持つモードと、イントラ符号化を行なうモードの双方について、圧縮後の符号量を計算する。
最近符号量選択部34では、該計算した符号量が、目標符号量に最も近くなるモードを選択する。なお、本実施例においては、最近符号量選択部34の代わりに最小符号量を選択する手段を用いても良い。また、目標符号量の代わりに、量子化ステップ幅を用い、目標符号量を見積もる手段を追加しても良い。
(9)第7実施例(図15).
次に本発明の第7実施例を説明する。本実施例は、最適な符号量を得るモードを用いて符号化を行い、生成ビットストリームを記録する、圧縮データ記録方法である。図15は本実施例における圧縮動画像記録方法の一例を示したものである。
図15に示す様に、この実施例の動作構成はDCT及び量子化を行なうDCT/量子化部101及び可変長符号化を行なうVLC102、VLC107、逆量子化及びIDCTを行なう逆量子化/IDCT部103、少なくとも1枚以上のピクチャデータを格納する画像メモリ104、動き検出を行なう動き検出部105、動き補償を行なう動き補償部106、符号量制御を行なう符号量制御部108、種々の圧縮データを一本のビットストリームに統合するデータ統合部110、圧縮データを記録する記録媒体611で構成される。
本発明において、従来技術と異なる点は、インター画像における動き補償モードの選択であるので、イントラ画像の圧縮動作については、述べない。インター画像の場合は、まず、動き検出部105で画像メモリに蓄えられた参照画像に対して動き検出を行ない、さらに動き検出部で得られた動きベクトルを用いて動き補償部106で動き補償を行なう。
動き補償部では、過去に符号化済みのビットストリームの量から得られる目標符号量を用いて、複数の動き補償モードの中から最適な動き補償モードを選択する。DCT/量子化器101では、選択された動き補償モードに基づく動き補償により生成した差分ブロックデータをDCT及び量子化によって圧縮する。
更にVLC部102において可変長符号化を行なう。一方、選択された動き補償モード情報と該動き補償モードに対応する動きベクトルは、VLC部107で可変長符号化される。データ統合部110では、上記圧縮データを統合して一つのビットストリームにし、出力する。
出力されたビットストリームは、記録装置に収納された記録媒体611に記録される。なお、動き補償部106の内部構成は、前記実施例3〜実施例6のいずれか一つと同じである。
(10)第8実施例(図16).
次に本発明の第8実施例を説明する。本実施例は、最適な符号量を得るモードを用いて符号化を行い、生成ビットストリームを伝送する、圧縮データ伝送手段である。
図16は本実施例における圧縮動画像記録方法の一例を示したものである。図16に示す様に、この実施例の動作構成は、DCT及び量子化を行なうDCT/量子化部101及び可変長符号化を行なうVLC102、VLC107、逆量子化及びIDCTを行なう逆量子化/IDCT部103、少なくとも1枚以上のピクチャデータを格納する画像メモリ104、動き検出を行なう動き検出部105、動き補償を行なう動き補償部106、符号量制御を行なう符号量制御部108、種々の圧縮データを一本のビットストリームに統合するデータ統合部110、圧縮データを転送する送信手段711で構成される。
本発明において、従来技術と異なる点は、インター画像における動き補償モードの選択であるので、イントラ画像の圧縮動作については、述べない。インター画像の場合は、まず、動き検出・BR>・05で画像メモリに蓄えられた参照画像に対して動き検出を行ない、さらに動き検出部で得られた動きベクトルを用いて動き補償部106で動き補償を行なう。
動き補償部では、過去に符号化済みのビットストリームの量から得られる目標符号量を用いて、複数の動き補償モードの中から最適な動き補償モードを選択する。DCT/量子化器101では、選択された動き補償モードに基づく動き補償により生成した差分ブロックデータをDCT及び量子化によって圧縮する。更にVLC部102において可変長符号化を行なう。一方、選択された動き補償モード情報と該動き補償モードに対応する動きベクトルは、VLC部107で可変長符号化される。データ統合部110では、上記圧縮データを統合して一つのビットストリームにし、出力する。
各処理部101〜110によって圧縮した動画像データのビットストリームは、送信手段711によって伝送される。なお、動き補償部106の内部構成は、前記実施例3〜実施例6のいずれか一つと同じである。