従来、この種の符号化装置や復号化装置が設けられたシステムとして、例えば、テレビ会議システムやテレビ電話システム等のような動画像データを遠隔地に伝送するシステムがある。
そして、かかるシステムにおいては、伝送路を効率良く利用して動画像データを伝送するために、フレーム単位の画像のライン相関やフレーム間相関を利用して動画像データを順次フレーム単位で圧縮符号化している。
ここで、動画像データを高能率符号化する圧縮符号化方式の代表的なものとしては、MPEG2(Moving Picture Experts Group 2: 蓄積用動画像符号化)方式がある。
このMPEG2方式は、ISO−IEC/JTC1/SC2/WG11(International Organization for Standardization-International Electrotechnical Commission/Joint Technical Committee 1/Sub Committee 2/Working Group 11 )において議論され、標準案として提案されたものであり、動き補償予測符号化とDCT(Discrete Cosine Transform :離散コサイン変換)符号化とを組み合わせたハイブリッド方式が採用されている。
また、MPEG2方式では、様々なアプリケーションや機能に対応するために、いくつかのプロファイル及びレベルが定義されており、その最も基本となるものは、メインプロファイルメインレベル(MP@ML:Main Profile at Main Level)である。
ここで、MPEG2方式におけるメインプロファイルメインレベルを適用したエンコーダとしては、例えば、図24に示すように構成されたものがある。
すなわち、図24に示すエンコーダ1においては、外部から供給される圧縮符号化対象の動画像データを順次フレーム単位でフレームメモリ2に取り込み、当該取り込んだフレーム単位の画像データ(以下、これをフレーム画像データと呼ぶ)を一時記憶する。
この場合、フレームメモリ2に供給されるフレーム画像データは、MPEG2方式に従って輝度成分と2つの色差成分とから構成され、それぞれの画素値のビット精度(すなわち、色の階調の精度)として8ビットの精度をもった8ビット画像のみが供給可能なものとして定義されている。
因みに、フレーム画像データにおいて、8ビットの精度をもつということは、輝度成分と2つの色差成分とのそれぞれの値(すなわち、色の階調)の取り得る範囲が 0〜225 (256 階調)ということになる。
動きベクトル検出器3は、フレームメモリ2に記憶されたフレーム画像データを、例えば、16画素×16ライン等で構成されるマクロブロック単位で読み出し、当該読み出したマクロブロックのデータ(以下、これをマクロブロックデータと呼ぶ)の動きベクトルを検出する。
ここで、動きベクトル検出器3においては、各フレーム画像データを、I(Intra )ピクチャ( フレーム内符号化画像)、P(Predictive)ピクチャ(前方予測符号化画像)又はB(Bidirectionally predictive)ピクチャ(両方向予測符号化画像)のうちのいずれかとして処理する。
因みに、動きベクトル検出器3においては、シーケンシャルに入力される各フレーム画像データを、Iピクチャ、Pピクチャ、Bピクチャのうちのいずれのピクチャとして処理するかが、例えば、予め定められている(例えば、連続するフレーム画像データがIピクチャ,Bピクチャ,Pピクチャ,Bピクチャ,Pピクチャ,……,Bピクチャ,Pピクチャの並びとして処理される)。
実際上、動きベクトル検出器3は、フレームメモリ2に記憶されたフレーム画像データの中の、予め定められた所定の参照用のフレーム画像データ(以下、これを参照フレーム画像データと呼ぶ)を参照し、その参照フレーム画像データと、現在、圧縮符号化対象となっているフレーム画像データの16画素×16ラインのマクロブロックデータとをパターンマッチング(ブロックマッチング)することにより、そのマクロブロックデータの動きベクトルを検出する。
ここで、MPEG方式(MPEG1方式及びMPEG2方式)においては、マクロブロックデータの符号化モードとして、イントラ符号化(フレーム内符号化)モード、前方予測符号化モード、後方予測符号化モード、両方向予測符号化モードの4種類が規定されている。
そして、Iピクチャのマクロブロックデータはイントラ符号化モードに従いイントラ符号化される。また、Pピクチャのマクロブロックデータはイントラ符号化モード又は前方予測符号化モードのいずれかに従いイントラ符号化又は前方予測符号化される。
さらに、Bピクチャのマクロブロックデータはイントラ符号化モード、前方予測符号化モード、後方予測符号化モード又は両方向予測符号化モードのいずれかに従いイントラ符号化、前方予測符号化、後方予測符号化又は両方向予測符号化される。因みに、これら符号化モードは同一のフレーム画像データ内であっても、マクロブロックデータ単位で選択し得るように規定されている。
このため、動きベクトル検出器3は、Iピクチャのマクロブロックデータについては符号化モードをイントラ符号化モードに設定し、そのマクロブロックデータの動きベクトルは検出せずに、イントラ符号化モードに設定したことを表す符号化モード情報を可変長符号化(VLC:Variable Length Coding)器4及び動き補償器5に送出する。
また、動きベクトル検出器3は、Pピクチャのマクロブロックデータについては前方予測を行うことにより当該マクロブロックデータの動きベクトルを検出すると共に、その前方予測を行うことにより生じる予測誤差と、圧縮符号化対象のマクロブロックデータ(Pピクチャのマクロブロックデータ)の例えば分散とを比較する。
そして、動きベクトル検出器3は、その比較の結果、マクロブロックデータの分散の方が予測誤差よりも小さいときには、符号化モードをイントラ符号化モードに設定して、これを表す符号化モード情報を可変長符号化器4及び動き補償器5に送出する。
これに対して、動きベクトル検出器3は、マクロブロックデータの分散よりも予測誤差の方が小さいときには、符号化モードを前方予測符号化モードに設定し、当該設定した前方符号化モードを表す符号化モード情報を、検出した動きベクトルと共に可変長符号化器4及び動き補償器5に送出する。
さらに、動きベクトル検出器3は、Bピクチャのマクロブロックデータについては、前方予測、後方予測及び両方向予測を行うことによりこれら前方予測、後方予測及び両方向予測毎にマクロブロックデータの動きベクトルを検出する。
この場合、動きベクトル検出器3は、前方予測、後方予測及び両方向予測によって生じた予測誤差のなかから最小の予測誤差(以下、これを最小予測誤差と呼ぶ)を検出し、当該検出した最小予測誤差と、圧縮符号化対象のマクロブロックデータ(Bピクチャのマクロブロックデータ)の、例えば分散とを比較する。
そして、動きベクトル検出器3は、その比較の結果、マクロブロックデータの分散の方が最小予測誤差よりも小さいときには、符号化モードをイントラ符号化モードに設定して、これを表す符号化モード情報を可変長符号化器4及び動き補償器5に送出する。
これに対して、動きベクトル検出器3は、マクロブロックデータの分散よりも最小予測誤差の方が小さいときには、符号化モードをその最小予測誤差が得られた前方予測、後方予測及び両方向予測に応じた前方予測符号化モード、後方予測符号化モード又は両方向予測符号化モードに設定し、当該設定した前方予測符号化モード、後方予測符号化モード又は両方向予測符号化モードを表す符号化モード情報を、対応する動きベクトルと共に可変長符号化器4及び動き補償器5に送出する。
動き補償器5は、動きベクトル検出器3から与えられる符号化モード情報及び動きベクトルに基づいて、フレームメモリ6からこれに記憶されている、圧縮符号化され、かつすでに局所復号化されたフレーム画像データ(以下、これを局所復号化フレーム画像データと呼ぶ)を読み出し、当該読み出した局所復号化フレーム画像データをマクロブロックデータの予測用のフレーム画像データ(以下、これを予測フレーム画像データと呼ぶ)として演算器7及び8に送出する。
演算器7は、動きベクトル検出器3がフレームメモリ2から読み出したマクロブロックデータと同一のマクロブロックデータをそのフレームメモリ2から読み出し、当該読み出したマクロブロックデータと、動き補償器5から与えられた予測フレーム画像データ内の対応するマクロブロックデータとの差分値を算出し、これを差分値データとしてDCT器9に送出する。
因みに、演算器7から得られる出力画像(DCT器9への入力画像)の画素値のビット精度は、対応するマクロブロックデータ同士の差分値であるため8ビットから1ビット増えて9ビットとなり、その値の取り得る範囲は-255〜+255となる。
一方、動き補償器5は、動きベクトル検出器3から符号化モード情報のみが与えられたとき、符号化モードがイントラ符号化モードであるため、予測フレーム画像データを送出しない。
従って、演算器7(演算器8も同様)は、このとき、特に処理を行わずにフレームメモリ2から読み出したマクロブロックデータをそのまま差分値データとしてDCT器9に送出する。
DCT器9は、演算器7から与えられた差分値データに対して離散コサイン変換処理(以下、これをDCT処理と呼ぶ)を施し、その結果得られた離散コサイン変換係数(以下、これをDCT係数と呼ぶ)を量子化器10に送出する。
因みに、DCT器9においては、MPEG方式の規定に従い16画素×16ラインからなるマクロブロックデータを、さらに8画素×8ラインからなるブロックに再分割し、これら8画素×8ラインのブロックのデータに対してDCT処理を行う。
また、DCT器9においては、MPEG方式の規定に従い、差分値データにDCT処理を施すことにより、その差分値データの9ビットの精度を3ビット増加させた12ビットの精度のDCT係数を量子化器10に送出している。因みに、かかるDCT係数の値の取り得る範囲は -2048〜+2047となる。
量子化器10は、バッファ11から与えられるデータ蓄積量(バッファ11に記憶されているデータの量)に対応して(バッファフィードバック)量子化スケールを設定し、当該設定した量子化スケールに基づいて、DCT器9から与えられたDCT係数を量子化する。因みに、量子化器10は、DCT係数を量子化した結果生じる端数に対しては、例えば4捨5入といった丸め処理を施して整数化する。
ここで、量子化器10においては、量子化スケールの値を決める際、線形量子化と非線型量子化との2つの方法がある。
図25に示すように、量子化器10においては、線形量子化を実行する場合、量子化スケールコードに対してその2倍の値を量子化スケールの値として用いるようにする。また、量子化器10においては、非線型量子化を実行する場合、量子化スケールコードに対して非線型な量子化スケールの値を用いている。
すなわち、線形量子化において、量子化スケールコードと、量子化スケールの値とをグラフ化すると、図26に示すようになり、これら量子化スケールコードと量子化スケールの値との関係は、量子化スケールコードをqscとし、量子化スケールをqsとすると、(1)式
で表すことができる。
また、非線形量子化において、量子化スケールコードと量子化スケールの値との関係をグラフ化すると、図27に示すようになり、上述した(1)式と同様に量子化スケールコードをqscとし、量子化スケールをqsとすると、これら量子化スケールコードと量子化スケールの値との関係は、(2)式
で表される。
そして、非線形量子化においては、MPEG2方式の規定に従って量子化スケールコードを5ビットで表すため、その量子化スケールコードの上位2ビットからなる値をkとし、残りの下位3ビットからなる値をjとすると、上述した(2)式を(3)式
に代えて表すこともできる。因みに、kの値の取り得る範囲は0〜3であり、jの値の取り得る範囲は0〜7である。また、この(3)式では、k=j=0は禁止されている。
ところで、量子化器10(図24)においては、量子化スケールの値を直接指定するわけではなく、MPEG2方式の規定に従い、量子化スケールコードを指定し、線形量子化と、非線型量子化とのいずれを用いるのかに応じて、対応する(1)式、(2)式又は(3)式からその指定した量子化スケールコードに対応する量子化スケールの値を算出する。
因みに、量子化器10においては、MPEG2方式の規定に従い線形量子化と非線形量子化とのいずれを用いるかをピクチャ単位で設定し得るようになされている。
また、量子化器10においては、MPEG2方式の規定に従って量子化スケールコードを5ビットで表すため、その量子化スケールコードの値の取り得る範囲が1〜31(0は禁止されている)となり、線形量子化を用いたときに量子化スケールの値の取り得る範囲は2〜62となる(図25)。
そして、量子化器10においては、線形量子化を実行してDCT係数を量子化すると、その結果得られる量子化係数の値の取り得る範囲が、2の値の量子化スケールで -1024〜+1023 となり、また、62の値の量子化スケールでは -33〜+33 となる。
ところで、量子化器10においては、量子化に用いた量子化スケールの値が比較的小さいと、その量子化の結果、値の比較的大きい量子化係数を送出するため、これに伴い可変長符号化器4において生成される符号の量が比較的多くなり、ビットレートが上がる。
これに対して、量子化器10においては、量子化に用いた量子化スケールの値が比較的大きいと、その量子化の結果、値の比較的小さい量子化係数を送出するため、これに伴い可変長符号化器4において生成される符号の量が比較的少なくなり、ビットレートは小さくなる。このように、量子化スケールの値は、符号化後のビットレートに直接関わっている。
そして、量子化器10においては、図25からも明らかなように、線形量子化を用いると、量子化スケールの値として偶数の値しか用いることができないため、ビットレートを比較的高くしたいとき、すなわち、比較的小さい値の量子化スケールコードを指定するときにはビットレートを細かく調節し難くなる。
これとは逆に、量子化器10においては、ビットレートを極端に下げたいときには、最高で62という値の量子化スケールまでしか用いることができないため、ビットレートを極端には下げられない。
そこで、MPEG2方式では、量子化の際に線形量子化に加えて非線形量子化をも用いることができるように規定されており、量子化器10においては、図25からも明らかなように、非線型量子化を実行する際、量子化スケールコードの値の小さい範囲(1〜8)では奇数の値の量子化スケールを用いることができるため、ビットレートをより細かく調節することができる。
また、量子化器10においては、非線型量子化を実行する場合、量子化スケールコードの最大値31に対応させて 112の値の量子化スケールを用いることができるため、線形量子化を実行する場合に比べて、ビットレートをより低くすることができる。
因みに、量子化器10においては、非線型量子化を実行してDCT係数を量子化すると、その結果得られる量子化係数の値の取り得る範囲が量子化スケールコードの値を1に指定したとき -2048〜+2047 となり、DCT係数を量子化せずにそのまま可変長符号化器4に送出して符号化することと等価となる。
一方、量子化器10においては、非線型量子化を実行して31の値の量子化スケールコードを指定したときには、量子化係数の値の取り得る範囲が -18〜+18 となり、MPEG2方式で規定されている符号化後の画質の最低レベルを確保するようになされている。
ただし、量子化器10においては、上述した線形量子化と、非線形量子化とを用いるのは、動きベクトル検出器3で設定された符号化モードがイントラ符号化モードのときのマクロブロックデータのDCT係数の直流成分を除いた全ての交流成分に対してと、イントラ符号化モードのマクロブロックデータのDCT係数全てに対してである。
因みに、量子化器10においては、イントラ符号化モードにおけるマクロブロックデータのDCT係数の直流成分に対してはピクチャ単位で指定されたイントラ符号化モードにおけるDCT係数の直流成分の量子化後のビット精度(量子化係数ビット精度)に応じて別途量子化する。
なお、イントラ符号化モードにおけるDCT係数の直流成分の量子化係数ビット精度としては、11ビット、10ビット、9ビット、8ビットのいずれかがピクチャ単位で決められており、量子化係数ビット精度が11ビットのときは、DCT器9から与えられるDCT係数の直流成分を量子化器10において量子化せずにそのまま可変長符号化器4に送出して符号化することと等価となる。
これは、MPEG2方式で規定されているDCT係数のビット精度をこれまで12ビットと記述してきたが、DCT係数の直流成分は負値は取らず符号ビットが不要なため、実質11ビットで表現が可能だからである。
そして、量子化器10においては、これら11ビット、10ビット、9ビット、8ビットの量子化係数ビット精度にそれぞれに対応する直流成分の量子化スケールの値が1,2,4,8となり、この量子化スケールを用いてイントラ符号化モードにおけるDCT係数の直流成分に対して線形量子化を行う。因みに、量子化器10においては、イントラ符号化モードにおけるDCT係数の直流成分に対して量子化を行った結果、端数が生じると、これに例えば4捨5入といった丸め処理を施して整数化する。
このようにして、量子化器10は、DCT係数を量子化すると、その結果得られた量子化係数を、量子化に用いた量子化スケールの値と共に、可変長符号化器4に送出する。
可変長符号化器4は、量子化器10から与えられた量子化係数を、例えばハフマン符号等の可変長符号に変換し、バッファ11に送出する。
ここで、MPEG2方式によって規定されている量子化係数の可変長符号化方式を説明すると、可変長符号化器4は、量子化器10から与えられた量子化係数をジグザグスキャニングして1次元情報に変換し、その1次元情報の低域係数から順次ゼロラン長+レベル値のシンボル列に変換してそのシンボルそれぞれを低域から順に予め用意している可変長符号テーブルを参照して符号化する。
ところで、可変長符号化器4においては、全てのシンボルに対する可変長符号テーブルを予め用意しているわけではなく、出現頻度の低いシンボルに対しては可変長符号テーブルのエスケープコードを割り当て、このエスケープコードを割り当てたたシンボルに対しては、ゼロラン長とレベル値とを固定長符号として符号化する。
因みに、可変長符号化器4においては、ゼロラン長に対する固定長符号長を6ビットとし、レベル値に対する固定長符号長を12ビットとしており、これは、ゼロラン長の最大値が63であり、レベル値の範囲がDCT係数の範囲となる -2048〜+2047 (12ビット精度)であるからである。
また、可変長符号化器4は、量子化器10から与えられる量子化スケールと、動きベクトル検出器3から与えられる符号化モード情報(イントラ符号化(フレーム内符号化)モード、前方予測符号化モード、後方予測符号化モード、又は両方向予測符号化モードのうちのいずれが設定されたかを示す情報)及び動きベクトルも可変長符号化し、得られた符号化データをバッファ11に送出する。
バッファ11は、可変長符号化器4から与えられた符号化データを一時蓄積することにより、そのデータ量を平滑化し、符号化ビットストリームとして、例えば、伝送路に出力し、又は記録媒体に記録する。
また、バッファ11は、そのデータ蓄積量を量子化器10に送出しており、量子化器10は、このバッファ11から与えられるデータ蓄積量に基づいて量子化スケールを設定する。
すなわち、量子化器10は、バッファ11がオーバーフローしそうなときには量子化スケールを比較的大きくして量子化係数のデータ量を低下させ、バッファ11がアンダーフローしそうなときには、量子化スケールを比較的小さくして量子化係数のデータ量を増大させる。このようにして、量子化器10は、バッファ11のオーバフローとアンダフローを未然に防止し得るようになされている。
ところで、量子化器10は、量子化係数と量子化スケールとを可変長符号化器4に加えて逆量子化器12にも送出する。
逆量子化器12は、量子化器10から与えられる量子化係数を、同様に量子化器10から与えられる量子化スケールに従って逆量子化することによりその量子化係数をDCT係数に変換し、そのDCT係数をIDCT(Inverse Discrete Cosine Transform )器13に送出する。
IDCT器13は、逆量子化器12から与えられるDCT係数を逆DCT処理し、得られたデータ(予測残差(差分値データ))を演算器8に送出する。
演算器8には、上述したように動き補償器5から演算器7に送出される予測フレーム画像データと同一の予測フレーム画像データが与えられており、IDCT器13から与えられるデータ(予測残差(差分値データ))を、予測フレーム画像データに加算することにより元のフレーム画像データを局所復号化し、得られた局所復号化フレーム画像データをフレームメモリ6に送出して一時記憶させる。
因みに、演算器8は、符号化モードがイントラ符号化モードに設定されている場合、IDCT器13から与えられるデータをそのまま局所復号化フレーム画像データとしてフレームメモリ6に送出して一時記憶させる。
なお、演算器8は、このようにして、フレームメモリ6に局所復号化フレーム画像データを更新するように一時記憶し、この結果、フレーム全面に渡って復号化したフレーム画像データ(以下、これを復号化フレーム画像データと呼ぶ)を構築する。そして、その復号化フレーム画像データは、後述するデコーダにおいて得られる復号化フレーム画像データと同一のものである。
また、フレームメモリ6に構築された復号化フレーム画像データは、その後、インター符号化(前方予測符号化、後方予測符号化、両方向予測符号化)されるフレーム画像データに対する参照フレーム画像データとして用いられる。
次いで、図24について上述したエンコーダ1から与えられる符号化データを復号化し得る、MPEG2方式のメインプロファイルメインレベルが適用されたデコーダとしては、図28に示すように構成されたものがある。
この図28に示すように、デコーダ20においては、伝送路を介して伝送されて受信装置(図示せず)によって受信された符号化ビットストリーム、又は記録媒体から再生装置(図示せず)によって再生された符号化ビットストリームをバッファ21に取り込んで一時記憶する。
可変長復号化(IVLC:Inverse Variable Length Coding )器22は、バッファ21からこれに記憶された符号化ビットストリームを所定単位の符号化データとして読み出し、当該読み出した符号化データを可変長復号化することにより当該符号化データをマクロブロック単位で動きベクトル、符号化モード情報、量子化スケール及び量子化係数に分離する。
そして、可変長復号化器22は、マクロブロック単位で分離した動きベクトル、符号化モード情報、量子化スケール及び量子化係数のうちの動きベクトル及び符号化モード情報を動き補償器23に送出し、量子化スケール及びマクロブロックの量子化係数を逆量子化器24に送出する。
逆量子化器24は、可変長復号化器22から与えられるマクロブロック単位の量子化係数を、同様に可変長復号化器22から与えられる量子化スケールに従って逆量子化し、得られたDCT係数をIDCT器25に送出する。
IDCT器25は、逆量子化器24から与えられるマクロブロック単位のDCT係数を逆DCT処理し、得られたデータ(予測残差(差分値データ))を演算器26に送出する。
また、動き補償器23は、基本的には図24について上述したエンコーダ1の動き補償器5と同様に動作し、このとき、可変長復号化器22から与えられる動きベクトル及び符号化モード情報に基づいて、フレームメモリ27からこれに記憶されている、すでに復号化されている復号化フレーム画像データを読み出し、当該読み出した復号化フレーム画像データを予測フレーム画像データとして演算器26に送出する。
従って、演算器26は、IDCT器25から与えられるデータ(予測残差(差分値))と、動き補償器23から与えられる対応する予測フレーム画像データとを加算することにより復号化フレーム画像データを生成し、これをフレームメモリ27に送出して記憶させると共に、その元のフレーム画像の連続する再生画像データとして、例えば、所定のディスプレイに送出することにより当該ディスプレイにその再生画像データに基づく動画像を表示させる。
因みに、演算器26は、IDCT器25から与えられるデータがイントラ符号化されたものであるときには、そのデータをそのまま復号化フレーム画像データとしてフレームメモリ27に送出して記憶させる。また、フレームメモリ27は、記憶した復号化フレーム画像データを、その後復号化されるマクロブロック単位の符号化データに対する参照フレーム画像データとして用いられる。
なお、MPEG1及びMPEG2方式においては、Bピクチャを参照フレーム画像データとしては用いないため、エンコーダ1(図24)及びデコーダ20(図28)において、それぞれフレームメモリ6(図24)及び27(図28)に記憶しないように規定されている。
以下図面について、発明を実施するための最良の形態(以下、これを実施の形態とも呼ぶ)について説明する。
(1)原理
現在、MPEG4方式が適用されたエンコーダにおいては、供給される入力画像のビット精度(色の階調)を8ビット精度よりも高精度にし得るものの、その精度のビット数をNとすると、DCT器に入力される差分値データ(すなわち、演算器の出力データ)のビット精度がN+1ビットであるとき、当該DCT器から得られるDCT係数のビット精度はそのN+1ビットから3ビット増えてN+4ビットの精度となるように規定されている。
そして、エンコーダにおいては、DCT係数のビット精度によって、圧縮符号化後(量子化後)の動画像の画質の限界が決まるため、入力画像のビット精度に応じて圧縮符号化後の動画像の画質を高精度にするには、DCT器から得られるDCT係数のビット精度を拡張させる必要がある。
従って、本発明によるエンコーダにおいては、DCT演算によって増加する精度のビット数をαとし、DCT器から得られるDCT係数のビット精度をN+1+αビットとして、圧縮符号化後の動画像に対して要求される画質に応じてそのαの値を任意に設定し得るようになされている。因みに、MPEG4方式においては、そのαが3として固定されている。
そして、本発明においては、エンコーダにおいて、Nビットの精度の入力画像を入力し得ると共に、αを任意に設定し得るようにしてDCT器から得られるDCT係数のビット精度をN+4ビットからN+1+αビットに拡張する分、DCT器の後段に設けられた量子化器及び可変長符号化器の構成と、当該エンコーダと対になるデコーダの逆量子化器及び逆可変長符号化器の構成とを、そのビット精度に応じて拡張するようにした。
実際上、本発明においては、任意のNビット精度の入力画像に対する任意のN+1+αビット精度のDCT係数に適用する量子化方式を、MPEG2方式で規定されている線形量子化方式及び非線形量子化方式を拡張して実現している。
また、本発明においては、任意のNビット精度の入力画像における、マクロブロックデータの符号化モードがイントラ符号化モードのときには、N+αビット精度のDCT係数の直流成分に適用する量子化方式を、MPEG2方式で規定されているイントラ符号化モードのDCT係数の直流成分の量子化方式を拡張して実現する。
因みに、本発明においては、量子化方式の拡張にあたり、MPEG2方式の量子化方式と互換性をもたせ、N=8、α=3の条件の元ではMPEG2の量子化方式と同一になるようにした。
また、比較的高いビットレートの場合においても、比較的細かくビットレートを調節し得るように、量子化スケールコードの値が比較的小さい範囲では、量子化スケールの刻み幅を細かくした。
さらに、Nやαの値がどんなに大きくなっても、MPEG2方式のN=8、α=3の場合と同等のビットレートまで圧縮符号化が可能となるように、Nやαの値によらずに、量子化スケールの最大値を用いたときに量子化係数の取り得る値の範囲が同等となるようにした。
このようにして、本発明においては、高精度の入力画像を処理して、高画質な画像を得るような場合でも、エンコーダ及びデコーダにおいて、処理に不具合が生じることを防止し得るようになされている。
ところで、現在、MPEG4方式が適用されたエンコーダにおいては、N+4ビットの精度のDCT係数を量子化器で量子化し、得られた量子化係数に対して可変長符号化器において単一の可変長符号化テーブルを用いて可変長符号化を行うように規定されているものの、量子化係数の出現確立の統計的性質が入力画像のビット精度を表すNに応じて変わるため、設定し得る全ての入力画像のビット精度(N)に対して同一の可変長符号化テーブルを用いるのは圧縮符号化の効率上適切とは言えない。
また、DCT係数のビット精度を拡張してN+1+αビットとすると、量子化係数の出現確立の統計的性質がαに応じても変わるため、設定し得る全てのαに対しても同一の可変長符号化テーブルを用いるのは圧縮符号化の効率上適切とは言えない。
さらに、DCT係数のビット精度を拡張してN+1+αビットとすると、これに応じて量子化スケールも拡張する必要があるものの、量子化係数の出現確立の統計的性質がその量子化スケールに応じても変わるため、全ての量子化スケールに対して同一の可変長符号化テーブルを用いることも圧縮符号化の効率上適切とは言えない。
従って、本発明においては、可変長符号化器において、入力画像のビット精度やDCT係数のビット精度、量子化スケール(すなわち量子化係数ビット精度)に応じて適切な可変長符号化テーブルを切り換えて用いることができるように、複数種類の可変長符号化テーブルをもたせて拡張するようにした。
これにより、本発明においては、任意の入力画像のビット精度における任意のビット精度のDCT係数の量子化係数に適用される可変長符号化テーブルを、入力画像のビット精度やDCT係数のビット精度、量子化係数の取り得る範囲(すなわち、量子化スケールの値)に応じて適切なものを選択し得るようにし、かくして、可変長符号化テーブルを選択できない場合に比べて、より効率良く圧縮符号化し得るようになされている。
(2)本実施の形態によるエンコーダの構成
図1において、30は全体として本発明を適用したエンコーダを示し、外部から供給される入力画像の画像データをフレームメモリ31に取り込み、当該フレームメモリ31にその画像データをVOP(Video Object Plane:ビデオオブジェクトプレーン)として記憶する。
ここで、図2に示すように、VOPは、形状情報をもったピクチャであり、その形状情報をあらわすデータと、VOPのサイズデータFSZ_Bと、フレームにおけるそのVOPの位置を表すオフセットデータFPOS_Bと、VOPの画像データを表すテクスチャーデータとからなる。
因みに、本発明においては、そのVOPに対して形状情報を無視してもかまわないため、当該VOPをMPEG2方式等で規定されているピクチャと同じものとして考える。
また、このエンコーダ30においては、フレームメモリ31に記憶される画像データの画素値の精度(色の階調)を表すビット数をNとし、当該画素値の取り得る範囲が0〜2N−1となる。そして、Nの取り得る値としては、通常利用される値として、8、10、12、14といった値があるが、本発明では任意の正の整数値を取り得るようになされている。
そして、動きベクトル検出器32(図1)は、フレームメモリ31に記憶されたVOPに対してマクロブロック単位で動きベクトルを検出する。
ここで、VOPは、時刻(ピクチャ)によって、大きさや位置が変化するため、その動きベクトルの検出にあたっては、その検出のための基準となる絶対座標系を設定し、その絶対座標系における動きを検出する必要がある。
従って、動きベクトル検出器32は、フレーム座標系を基準となる絶対座標系とし、サイズデータFSZ_B及びオフセットデータFPOS_Bに基づいて、その絶対座標系に符号化対象のVOPと、参照フレーム画像データとするVOPとを配置し、動きベクトルを検出する。
因みに、動きベクトル検出器32は、検出した動きベクトル(MV)を符号化モード情報と共に形状情報符号化器50、可変長符号化器36及び動き補償器42、量子化器35及び逆量子化器38に送出する。また、動き補償を行う場合においても、やはり上述した様に基準となる絶対座標系における動きベクトルを検出する必要があるため、動き補償器42には、サイズデータFSZ_B及びオフセットデータFPOS_Bが供給されている。
演算器33には、図24について上述したエンコーダ1(図24)の演算器7(図24)と同様に、動きベクトル検出器32がフレームメモリ31から読み出したフレーム画像データにおけるものと同一のマクロブロックデータが供給されており、そのマクロブロックデータと動き補償器42から与えられる予測フレーム画像データとの差分を演算し、得られた差分値を差分値データとしてDCT器34に送出する。
ここで、演算器33は、フレームメモリ31から読み出したマクロブロックデータと、動き補償器42から与えられる対応する予測フレーム画像データとの差分を演算して差分値データを生成することにより、その差分値データの取り得る範囲を−(2N−1)〜2N−1のように、入力画像の画素値の取り得る範囲の2倍にすることができる。
従って、演算器33は、DCT器34に送出する差分値データのビット精度を、入力画像の画素値のビット精度よりも1ビット増加させたN+1ビットの精度とすることができる。
動き補償器42は、図24について上述したエンコーダ1(図24)の動き補償器5(図24)と同様にして、符号化モード情報がイントラ符号化モードであるときには、演算器33及び40に予測フレーム画像データを送出しない。従って、演算器33(演算器40も同様)は、このとき特に処理を行わずにフレームメモリ31から読み出したマクロブロックデータをそのままDCT器34に送出する。
DCT器34は、演算器33から与えられる差分値データに対して8画素×8ラインからなるブロック単位でDCT処理を施し、得られたDCT係数を量子化器35に送出する。
ここで、DCT器34から得られるDCT係数、すなわち量子化器35への入力値のビット精度はN+1ビットからαビット増加したN+1+αビットとなり、そのDCT係数の値の取り得る範囲は−2N+α〜2N+α−1である。因みに、従来のMPEG2方式においては、そのDCT係数におけるαを3と規定しているが、本発明では、そのαとして任意の正の整数値を適用し得るようになされている。
量子化器35は、図24について上述したエンコーダ1(図24)の量子化器10(図24)と同様に、DCT器34から与えられるDCT係数を量子化し、得られた量子化係数を可変長符号化器36及び逆量子化器38に送出する。
実際上、量子化器35においては、図24について上述した量子化器10のような、MPEG2方式の規定に従った8ビット精度の入力画像から得られる12ビット精度のDCT係数に対する線形量子化と非線形量子化とを、Nビット精度の入力画像から得られるN+1+αビット精度のDCT係数に対する線形量子化と、非線形量子化とに拡張している。
まず、図24について上述した量子化器10においては、MPEG2方式に従って12ビット精度のDCT係数に対して5ビット長(1〜31)の量子化スケールコードを割り当てているのに対して、量子化器35においては、DCT係数のビット精度の増減に応じて量子化スケールコードのビット長も増減させる。
すなわち、量子化器35においては、例えば、8ビット精度の入力画像に対し、α=5とした場合、MPEG2方式におけるα=3よりもDCT係数のビット精度が2ビット多くなっているため、量子化スケールコードのビット長も2ビット多くし7ビットとする。因みに、このとき、量子化スケールコードの取り得る範囲は1〜 127となる。
また、量子化器35は、例えば、12ビット精度の入力画像に対してα=6とした場合、MPEG2方式における入力ビット精度よりもNが4ビット増加し、かつ、MPEG2方式におけるα=3よりもDCT係数のビット精度が3ビット増加して合わせて7ビットの増加となるため、量子化スケールコードのビット長を7ビット多くした12ビットとする。因みに、このとき、量子化スケールコードの取り得る値の範囲は1〜4095となる。
そして、量子化器35における量子化スケールコードのビット長の可変を一般化すると、任意のNとαに対して、その量子化スケールコードのビット長はN+α−6となり、その値の取り得る範囲は1〜2N+α−6−1となる。
因みに、DCT係数のビット精度が12ビットよりも小さくなったときには、量子化スケールコードのビット長も5ビットより短くなる。
次いで、量子化器35において、ビット数の決定した量子化スケールコードを量子化スケールにマッピングする方法、すなわち、線形量子化と非線形量子化の方法について以下に説明する。
量子化器35においては、線形量子化を実行する場合、MPEG2方式の規定と同様に、量子化スケールコードを2倍にして量子化スケールを得ており、その線形量子化に用いる量子化スケールの値は単純に上に延びることになる。
そして、量子化器35においては、その線形量子化を実行することにより得られるDCT係数のビット精度、当該DCT係数の最大値、量子化スケールコードの範囲、量子化スケールの範囲及び量子化後の量子化係数の最大値の範囲の例は以下のようになる。
すなわち、N=8、α=3(MPEG2方式と同様)の条件では、DCT係数の精度が12ビットとなり、DCT係数の最大値が2047、量子化スケールコードの範囲が1〜31、量子化スケールの範囲が2〜62、量子化係数の最大値の範囲が33〜1023となる。
また、N=8、α=6の条件では、DCT係数の精度が15ビットとなり、DCT係数の最大値が16383 、量子化スケールコードの範囲が1〜255 、量子化スケールの範囲が2〜510 、量子化係数の最大値の範囲が33〜8191となる。
さらに、N=12、α=6の条件では、DCT係数の精度が19ビットとなり、DCT係数の最大値が262143、量子化スケールコードの範囲が1〜4095、量子化スケールの範囲が2〜8190、量子化係数の最大値の範囲が33〜131071となる。
そして、これを一般化すると、N、αの条件では、DCT係数の精度がN+1+αビットとなり、DCT係数の最大値が2N+α−1、量子化スケールコードの範囲が1〜2N+α−6−1、量子化スケールの範囲が2〜2N+α−5−2、量子化係数の最大値の範囲が33〜2N+α−1−1となる。
このようにして、量子化器35においては、線形量子化を拡張した場合、MPEG2方式の線形符号化方式と互換性をもち、かつ、Nやαの値によらずに量子化スケールの最大値を用いたときに、そのMPEG2方式と同等のビットレートまで圧縮符号化が可能であることが明らかである。
因みに、一般化した線形量子化の方式は、量子化スケールコードをqscとし、量子化スケールをqsとすると、(4)式
で表される。
一方、量子化器35においては、線形量子化を実行する場合、量子化スケールコードの増加によって量子化スケールの値を単純に上に伸ばしたが、非線形量子化を実行する場合には、拡張の仕方を正しく定義しないと、実現し得るビットレートやMPEG2方式の非線形量子化との互換性を保てなくなることがある。
従って、この量子化器35においては、所望するビットレートを実現し、かつMPEG2方式の非線形量子化との互換性を保つという目的を満たすように非線形量子化方式を拡張している。
すなわち、量子化器35においては、非線形量子化を実行する場合、量子化スケールコードのビット長の増加に従って、図26について上述したMPEG2方式における12ビット精度のDCT係数の生成に用いられる非線形量子化カーブの刻み幅を等間隔に細かくする。
例えば、量子化器35においては、DCT係数のビット精度が13ビットになったときは、図3に示すように、量子化スケールコードの刻み幅を21=2つに分けて細かくする。
これにより、量子化器35においては、量子化スケールコードの刻みの数を2倍にしたものに+21−1を加算して63個とし、小さいほうから順に小さい量子化スケールコードを割り当てると共に、量子化スケール軸上の値を2倍にする。
かくして、量子化器35においては、新しい量子化スケールコードに対応した量子化スケールが13ビット精度のDCT係数に対する非線形量子化における量子化スケールとなる。
また、量子化器35においては、例えば、DCT係数のビット精度が14ビット精度となったときは、図4に示す様に量子化スケールコードの刻み幅を22=4つに分けて細かくする。
これにより、量子化器35においては、量子化スケールコードの刻みの数を4倍したものに+22−1を加算して127 個とし、小さいほうから順に小さい量子化スケールコードを割り当てると共に、量子化スケール軸上の値を4倍にする。
かくして、量子化器35においては、新しい量子化スケールコードに対応した量子化スケールが14ビット精度のDCT係数に対する非線形量子化における量子化スケールとなる。
そして、量子化器35においては、その非線形量子化の定義を一般化すると、DCT係数のビット精度がN+1+αビット精度となった場合は、図5に示すように、量子化スケールコードの刻みを2N+α−11個に等間隔に分けて細かくする。
これにより、量子化器35においては、量子化スケールコードの刻みの数を2N+α−11倍+2N+α−11−1の(2N+α−6−1)個とし、小さいほうから順に小さい量子化スケールコードを割り当てると共に、量子化スケール軸上の値を2N+α−11倍にする。
因みに、刻みの数に2N+α−11−1を加えているが、これは刻みの総数を(2N+α−6−1)個にするためであり、この加えられた刻みは、量子化スケールコードの最大値方向に付け加えられる。
かくして、量子化器35においては、新しい量子化スケールコードに対応した量子化スケールがN+1+αビット精度のDCT係数に対する非線形量子化における量子化スケールとなる。
ところで、量子化器35においては、DCT係数のビット精度が12ビットよりも小さくなったときには、その分だけ図26について上述した量子化スケールコードの刻みを統合する。
すなわち、DCT係数のビット精度が11ビットのときには、量子化スケールコードが4ビット長となり、図26について上述した量子化スケールコードの刻みのうち、隣り合う2つずつを統合すれば良い。また、DCT係数のビット精度が10ビットの場合には、量子化スケールコードは3ビット長となり、図26について上述した量子化スケールコードの刻みのうち、隣り合う4つずつを統合すれば良い。
そして、量子化器35においては、その非線形量子化を実行することにより得られるDCT係数のビット精度、当該DCT係数の最大値、量子化スケールコードの範囲、量子化スケールの範囲及び量子化後の量子化係数の最大値の範囲の例は以下のようになる。
すなわち、N=8、α=3(MPEG2方式と同様)の条件では、DCT係数の精度が12ビットとなり、DCT係数の最大値が2047、量子化スケールコードの範囲が1〜31、量子化スケールの範囲が1〜112 、量子化係数の最大値の範囲が18〜2047となる。
また、N=8、α=6の条件では、DCT係数の精度が15ビットとなり、DCT係数の最大値が16383 、量子化スケールコードの範囲が1〜255 、量子化スケールの範囲が1〜952 、量子化係数の最大値の範囲が18〜16383 となる。
さらに、N=12、α=6の条件では、DCT係数の精度が19ビットとなり、DCT係数の最大値が262143、量子化スケールコードの範囲が1〜4095、量子化スケールの範囲が1〜15352 、量子化係数の最大値の範囲が18〜262143となる。
そして、これを一般化すると、N、αの条件では、DCT係数の精度がN+1+αビットとなり、DCT係数の最大値が2N+α−1、量子化スケールコードの範囲が1〜2N+α−6−1、量子化スケールの範囲が1〜120 ×2N+α−11−8、量子化係数の最大値の範囲が18〜2N+α−1となる。
このようにして、量子化器35においては、非線形量子化を拡張した場合、MPEG2方式の非線形符号化方式と互換性をもち、かつ、比較的高いビットレートの場合において量子化スケールの刻み幅を細かく取ることができ、さらに、Nやαの値によらずに量子化スケールの最大値を用いたときに、そのMPEG2方式と同等のビットレートまで圧縮符号化が可能であることが明らかである。
因みに、一般化した非線形量子化の方式は、量子化スケールコードをqscとし、量子化に実際に用いられる量子化スケールをqsとすると、(5)式
で表される。
また、量子化器35においては、量子化スケールコードをN+α−6ビットで表すため、その上位2ビットからなる値をk、残りのN+α−8ビットからなる値をjとすると、上述した(5)式を(6)式
に変えて表すことができる。因みに、kの値の取り得る範囲は0〜3であり、jの値の取り得る範囲は0〜2N+α−8−1である。そして、k=j=0は禁止されている。
ところで、量子化器35においては、マクロブロックデータの符号化モードがイントラ符号化モードに設定された場合、DCT係数の直流成分に対しては、MPEG2方式に従った8ビット精度の入力画像から得られる12ビット精度のDCT係数の直流成分を量子化した後のビット精度の規定を、Nビット精度の入力画像から得られるN+1+αビット精度のDCT係数の直流成分を量子化した後のビット精度の規定に拡張する。
すなわち、量子化器35においては、量子化係数のビット精度を拡張する際、MPEG2方式に従うと11ビット精度のDCT係数の直流成分に対して11ビット、10ビット、9ビット、8ビット精度の4種類の量子化係数をピクチャ単位で選択することができた。
そして、量子化器35においては、それぞれのビット精度において量子化係数の取り得る範囲が0〜2047、0〜1023、0〜511 、0〜255 となり、DCT係数のビット精度の増減に応じて直流成分の量子化係数のビット精度の種類も増減させる。
この場合、量子化器35においては、例えば、8ビット精度の入力画像に対してα=5とした場合、MPEG2方式におけるα=3よりもDCT係数のビット精度が2ビット多くなっているため、量子化係数のビット精度の種類も、ビット精度が増える方向に2つ増やして、13ビット、12ビット、11ビット、10ビット、9ビット、8ビットとする。
そして、量子化器35においては、それぞれのビット精度で量子化係数の取り得る範囲が0〜8191、0〜4095、0〜2047、0〜1023、0〜511 、0〜255 となる。すなわち、これは、量子化器35からDCT係数をそのまま量子化係数として可変長符号化器36に送出することもできるし、DCT係数のビット精度が増加してもMPEG2方式と同程度のビットレート(量子化係数が8ビットの精度)まで圧縮符号化が可能であることを表している。
また、量子化器35においては、例えば、12ビット精度の入力画像に対してα=6とした場合、MPEG2方式における入力画像のビット精度よりも4ビット増加し、かつ、MPEG2方式におけるα=3よりもDCT係数のビット精度が3ビット増加して合わせて7ビットとの増加となるため、量子化係数のビット精度の種類も、ビット精度が増える方向に7つ増やして、18ビット、17ビット、16ビット、15ビット、14ビット、13ビット、12ビット、11ビット、10ビット、9ビット、8ビットとする。
そして、量子化器35においては、それぞれのビット精度で量子化係数の取り得る範囲が、0〜262143、0〜131071、0〜65535 、0〜32767 、0〜16383 、0〜8191、0〜4095、0〜2047、0〜1023、0〜511 、0〜255 となる。すなわち、これは量子化器35からDCT係数をそのまま量子化係数として可変長符号化器36に送出することもできるし、DCT係数のビット精度が増加してもMPEG2方式と同程度のビットレート(量子化係数が8ビットの精度)まで圧縮符号化が可能であることを表している。
ところで、量子化器35においては、そのDCT係数の直流成分の量子化精度を一般化すると、Nビット精度の入力画像に対してDCT係数の直流成分のビット精度をN+αビット(符号ビットを含めるとN+1+αビット精度)とした場合、量子化係数のビット精度の種類をN+αビット、N+α−1ビット、N+α−2ビット、……、9ビット、8ビットとする。
そして、量子化器35においては、それぞれのビット精度で量子化係数の取り得る範囲が0〜2N+α−1、0〜2N+α−1−1、0〜2N+α−2−1、……、0〜511 、0〜255 となる。
すなわち、これは量子化器35からDCT係数をそのまま量子化係数として可変長符号化器36に送出することもできるし、DCT係数のビット精度が増加してもMPEG2方式と同程度のビットレート(量子化係数が8ビットの精度)まで圧縮符号化が可能であることを表している。
このようにして、量子化器35においては、DCT係数の直流成分を量子化方式を拡張した場合、MPEG2方式によるDCT係数の直流成分の量子化方式と互換性をもち、かつ、Nやαの値によらずに量子化係数精度の最小値を用いたときにそのMPEG2方式と同等のビットレートまで圧縮符号化が可能であることが明らかである。なお、このとき量子化器35においては、比較的高いビットレートの場合において量子化スケールの刻み幅を細かくするような考慮は必要ない。
ところで、逆量子化器38(図1)は、量子化器35から与えられる8画素×8ラインのブロック単位で量子化されたDCT係数(すなわち、量子化係数)を逆量子化し、IDCT器39に送出する。
ここで、逆量子化器38は、量子化係数を逆量子化する際、上述した量子化器35と同様の値でなる量子化スケールコードを用い、かつ、量子化器35と同様の線形量子化及び非線形量子化のうちの同じ方式を用いて量子化スケールを算出し、当該算出した量子化スケールを用いて逆量子化を行う。
また、マクロブロックの予測モードがイントラ符号化モードの場合におけるDCT直流係数の逆量子化方式は、上記DCT直流係数の量子化方式の逆を実行する。
IDCT器39は、図24のIDCT器39と同様に動作し、逆量子化器38より逆量子化されたDCT係数を、IDCT処理して演算器40に出力する。
演算器40には、IDCT器39の出力データの他、動き補償器42から、演算器33に供給されている予測画像と同一のデータが供給されている。演算器40は、IDCT器39の出力データ(予測残差(差分データ))と、動き補償器42からの予測画像データとを加算することで、元のフレーム画像データを局所復号し、得られた局所復号フレーム画像データ(局所復号画像データ)をテクスチャ(texture )情報としてパディング(padding )処理器51に送出する。
ただし、演算器40は、予測モードがイントラ符号化である場合には、IDCT器39から与えられる出力データをそのまま局所復号フレーム画像データでなるテクスチャ情報としてパディング処理器51に送出する。
一方、形状情報符号化器50には、外部から形状信号(キー信号)、サイズデータFSZ_B、オフセットデータFPOS_Bが供給されると共に、動きベクトル検出器32から動きベクトルと符号化モード情報が与えられる。
そして、形状情報符号化器50は、MPEG4方式の規定に従い、形状情報の符号化を行い、当該符号化した形状情報を形状情報復号化器52及び可変長符号化器36に送出する。
形状情報復号化器52は、形状情報符号化器50から与えられる符号化されている形状情報の局所復号化を行い、そのデータをパディング処理器51及び可変長符号化器36に送出する。
パディング処理器51は、MPEG4方式の規定に従い、テクスチャ情報に対してパディング処理を行い、当該パディングしたテクスチャ情報をフレームメモリ41に送出して記憶する。
これにより、フレームメモリ41に記憶されたテクスチャ情報は、その後、インター符号化(前方向予測符号化、後方向予測符号化、両方向予測符号化)される画像に対する予測フレーム画像データとして用いられる。
すなわち、動き補償器42は、フレームメモリ41に記憶された画像データを、前方向予測に用いる画像、または後方向予測に用いる画像データとして、出力することになる。一方、動き補償器42は、動き補償参照画像指示信号により指定される画像(フレームメモリ41に記憶されている局所復号された画像でなるテクスチャ情報)に対して、動きベクトル検出器32から与えられる符号化モード情報及び動きベクトルに基づいて動き補償を施すことにより予測フレーム画像データを生成し、これを演算器33及び40に送出する。
すなわち、動き補償器42は、前方予測符号化モード、後方予測符号化モード及び両方向予測符号化モードの時のみ、フレームメモリ41の読み出しアドレスを、演算器33に対して現在出力しているブロックの位置に対応する位置から動きベクトルに対応する分だけずらし、当該フレームメモリ41から前方向予測符号化又は後方向予測符号化に用いる対応する予測フレーム画像データを読み出す。
そして、動き補償器42は、その予測フレーム画像データを演算器33及び40に送出する。
因みに、動き補償器42は、両方向予測符号化モードの時は、前方予測符号化と後方予測符号化に用いる予測フレーム画像データの両方を読み出し、例えば、その読み出した予測フレーム画像データの平均値を予測データとして演算器33及び40に送出する。
これにより、演算器33は、フレームメモリ31から読み出した所定ブロック(マクロブロック)単位のフレーム画像データから、動き補償器42から与えられる対応する予測画像データを減算し、かくして、差分値データを生成する。
また、演算器40は、前方予測符号化モード、後方予測符号化モード及び両方向予測符号化モードの場合、動き補償器42から与えられる予測フレーム画像データに加えて、予測フレーム画像データによって差分化された差分値データが逆DCT器39から与えられる。
従って、演算器40は、その差分値データを動き補償器42から与えられる予測フレーム画像データに加算し、これにより局所復号を行い、テクスチャ情報を生成する。
因みに、このテクスチャ情報は、局所復号化フレーム画像データであり、後述するデコーダで復号化して得られる画像データと全く同一のデータであり、上述したように、次ぎの処理画像に対して、前方予測符号化モード、後方予測符号化モード及び両方向予測符号化モードを行う時に用いる予測フレーム画像データとしてフレームメモリ41に記憶される。
また、演算器40は、符号化モードがイントラ符号化モードである場合、画像データそのものが逆DCT器39から与えられるため、その画像データをそのままテクスチャ情報としてパディング処理器51に送出する。
一方、可変長符号化器36は、量子化係数、量子化スケールコード、動きベクトル及び符号化モード情報が与えられると共に、サイズデータFSZ_B及びオフセットデータFPOS_Bも与えられる。従って、可変長符号化器36は、これらのデータ全てを可変長符号化する。
ここで、可変長符号化器36の構成を、量子化係数の可変長符号化方式に基づいて以下に説明する。
MPEG2方式においては、8ビット精度の入力画像に対する12ビット精度のDCT係数に対して、単一の可変長符号化テーブル(可変長符号コードの組み合わせ)を用いて符号化を行うように規定されている。
また、可変長符号化器36に与えられる量子化係数の値(もしくは値の組み合わせ)が可変長符号化テーブルで定義されている値(もしくは値の組み合わせ)の範囲外であるときには、その可変長符号化テーブルで定義されているエスケープコードを用いてその値(もしくは値の組み合わせ)を固定長符号として処理する。すなわち、このエスケープコードは比較的出現確立の低い量子化係数の値(もしくは値の組み合わせ)であり、可変長符号化するよりも固定長符号化した方が良いからである。
ここで、可変長符号化器36においては、そのMPEG2方式の機能を拡張しており、Nビット精度の入力画像から得られたN+1+αビット精度のDCT係数が量子化され、その結果得られた量子化係数を可変長符号化している。
また、可変長符号化器36においては、エスケープコードが用いられた場合に付加される固定長符号に対しても、その長さを入力画像のビット精度やDCT係数のビット精度に応じて変化させるようになされている。これに加えて、量子化スケールの値に応じてもその符号化方式を変更し得るようになされている。
まず、可変長符号化器36においては、入力画像のビット精度に応じて可変長符号化テーブルを変更する場合について説明する。これは、入力ビット精度に応じて量子化係数の出現確立の統計的性質も変わることに対処し、かつ、その出現確立からエスケープコードで扱う値の範囲を変更して画質の劣化を未然に防止するものである。
ここで、図6は、可変長符号化器36において、入力画像のビット精度に応じて可変長符号化テーブルを変更し得る構成を示すものであり、本来、可変長符号化器36の内部のメモリに格納されている複数種類の可変長符号化テーブルを説明を簡易化するために、その可変長符号化器36の外部に描いて示している。
可変長符号化器36においては、例えば、DCT器34の出力であるDCT係数の精度がα=3に固定された場合を考えると、入力画像の画素のビット精度Nに対するDCT係数のビット精度がN+4となり、そのN+4ビット精度のDCT係数が量子化器35において量子化されることにより得られた量子化係数が与えられる。
この場合、可変長符号化器36においては、予め入力画像の画素のビット精度に適した複数種類の可変長符号化テーブルを内部のメモリに格納されており、入力画像の画素のビット精度Nの値によって、量子化係数に適用する可変長符号化テーブルとエスケープコードに続く固定長符号の長さを変え得るようになされている。
これにより、可変長符号化器36においては、入力ビット精度の変化に応じて変わる量子化係数の出現確立の統計的性質に適確に対応してその量子化係数を圧縮符号化することができ、かくして、符号化処理により画質が劣化することを未然に防止し得るようになされている。
また、可変長符号化器36においては、このとき、量子化係数のレベル値の取り得る範囲が−2N+3〜2N+3−1であり、レベル値を表すための固定長符号長がN+4ビットあれば必要十分であるため、Nの値に応じて固定長符号の長さを変えることで固定長符号に無駄なビットを充てなくてすむようにし、かくして、画質の劣化を未然に防止し得るようになされている。
因みに、図6は、α=3の場合の例を示したが、α=aに対してもレベル値を表すための固定長符号長はN+1+aビットあれば必要十分である。
すなわち、エンコーダ30において、例えばN=8ビット、10ビット、12ビットの3種類の画素ビット精度の入力画像を扱え、かつα=6であった場合、可変長符号化器36においては、3種類(それぞれN=8、10、12用)の可変長符号化テーブルを持ち、かつ、レベル値を表すための固定長符号長を15、17、19とすればよい。
次いで、可変長符号化器36においては、入力画像の画素のビット精度をN=nとし、n+1+αビット精度のDCT係数を符号化する際の可変長符号化テーブルをαの値に応じて変更する場合について説明する。これは、DCT係数のビット精度に応じて量子化係数の出現確立及び統計的性質が変わることに対処し、かつ、その出現確立からエスケープコードで扱う値の範囲を変更して画質の劣化を未然に防止するものである。
ここで、図7は、可変長符号化器36において、DCT係数のビット精度のαに応じて可変長符号化テーブルを変更し得る構成を示すものであり、本来、可変長符号化器36の内部のメモリに格納されている複数種類の可変長符号化テーブルを説明を簡易化するために、その可変長符号化器36の外部に描いて示している。
可変長符号化器36においては、例えば、入力画像の画素のビット精度をN=8に固定した場合を考えると、DCT係数のビット精度は9+αとなり、その9+αビット精度のDCT係数が量子化器35において量子化されることにより得られた量子化係数が与えられる。
この場合、可変長符号化器36は、DCT器34から出力されるDCT係数のビット精度、この場合は、αの値によって、量子化係数に適用する可変長符号化テーブルと、エスケープコードに続く固定長符号のレベル値の長さを変えるようになされている。
すなわち、可変長符号化器36は、可変長符号化テーブルとして、DCT係数ビット精度に適したものを予め内部のメモリに格納しており、DCT係数のビット精度αに基づいて、量子化係数に適用する可変長符号化テーブルとエスケープコードに続く固定長符号の長さとを変え得るようになされている。
これにより、可変長符号化器36においては、DCT係数ビット精度の変化で変わる量子化係数の出現確立及び統計的性質に適確に対応してその量子化係数を圧縮符号化することができ、かくして、符号化処理により画質が劣化することを未然に防止し得るようになされている。
また、可変長符号化器36においては、量子化係数のレベル値の取り得る範囲が−28+α〜28+α−1であるため、レベル値を表すための固定長符号長が9+αビットあれば必要十分であり、αの値に応じて固定長符号の長さを変えることで固定長符号に無駄なビットを充てなくてすむようにし、かくして、画質の劣化を未然に防止し得るようになされている。
因みに、図7は、N=8の場合の例を示したが、N=nに対してもレベルを表すための固定長符号長はn+1+αビットあれば必要十分である。
すなわち、エンコーダ30においては、N=10であり、例えばα=3、4、5の3種類のDCT係数のビット精度の入力画像を扱えるとした場合、可変長符号化器36において、3種類(それぞれα=3、4、5用)の可変長符号化テーブルを持ち、かつ、レベル値を表すための固定長符号長を14、15、16とすればよい。
ここで、図6及び図7について上述した可変長符号化器36においては、個別の入力画像の画素のビット精度NとDCT係数のビット精度αの値にそれぞれ応じて可変長符号化テーブルと、量子化係数のレベル値を表す固定長符号長を適宜切り換える場合について説明したが、この2つの可変長符号化方式を組み合わせることも可能である。
すなわち、図8は、説明を簡易化するために、複数種類の可変長符号化テーブルを可変長符号化器36の外部に描いて示したものであるが、かかる可変長符号化器36においては、入力画像の画素のビット精度NとDCT係数のビット精度αの両方を考慮して可変長符号化テーブルと、固定長符号長を適宜切り換えるようになされている。因みに、この可変長符号化器36における固定長符号長はN+1+αとなる。
ところで、可変長符号化器36においては、入力画像の画素のビット精度をN=nとし、かつ、α=aにおけるDCT係数のビット精度をn+1+aとして、DCT係数を量子化するときに用いた量子化スケールの値に応じて、その量子化によって得られた量子化係数を可変長符号化するための可変長符号化テーブルと、レベル値の固定長符号長を変更する場合について説明する。これは、量子化スケールの値に応じて量子化係数の出現確立の統計的性質が変わることに対処し、かつ、その出現確立からエスケープコードで扱う値の範囲を変更して画質が劣化することを未然に防止するものである。
ここで、図9は、可変長符号化器36において、量子化スケールの値に応じて可変長符号化テーブルを変更し得る構成を示すものであり、本来、可変長符号化器36の内部のメモリに格納されている複数種類の可変長符号化テーブルを説明を簡易化するために、その可変長符号化器36の外部に描いて示している。
可変長符号化器36においては、例えば、入力画像の画素のビット精度をN=8とし、α=3に固定した場合を考えると、DCT係数のビット精度は12となり、その12ビット精度のDCT係数が量子化器35において量子化されることにより得られた量子化係数が与えられる。
そして、可変長符号化器36においては、量子化器35への入力であるDCT係数の値の取り得る範囲が-2048 〜+2047 であり、このとき、量子化スケールが1の場合には、量子化係数の値の取り得る範囲が-2048 〜+2047 であり、量子化スケールが1の場合の量子化係数のビット精度は12ビットとなる。
また、可変長符号化器36においては、量子化スケールが2の場合、量子化係数の取り得る範囲が-1024 〜+1023 であり、量子化係数のビット精度が11ビットとなる。さらに、可変長符号化器36においては、量子化スケールが4の場合、量子化係数の取り得る範囲が-512〜+511であり、量子化係数のビット精度が10ビットとなる。
図10に、量子化スケールの値による量子化係数のビット精度を示す。この場合、量子化スケールにおいては、そのグループ毎にそれぞれに異なる可変長符号化テーブルとレベル値の固定長符号長が割り当てられており、可変長符号化器36は与えられた量子化スケールの値に応じて対応する可変長符号化テーブルと、エスケープコードの場合のレベル値の固定長符号長を切り換える。因みに、レベル値の固定長符号長は図10の量子化係数ビット精度の値と同じである。
ところで、図9は、量子化スケールに基づいて可変長符号化テーブルを切り換える可変長符号化器36を示したが、図11に示すように、これに加えて、図6及び図7について上述した入力画像の画素のビット精度NとDCT係数のビット精度αをも用いて可変長符号化テーブルと、量子化係数のレベル値を表す固定長符号長を適宜切り換えることもできる。
因みに、図11においては、可変長符号化器36の内部に格納されている各種可変長符号化テーブルをその可変長符号化器36の外部に描いて説明を簡略化している。
また、可変長符号化器36においては、入力画像の画素のビット精度N、DCT係数のビット精度α、量子化スケールのうちの少なくとも1つ以上を用いて可変長符号化テーブルと、量子化係数のレベル値を表す固定長符号長を適宜切り換えることもできる。
また、可変長符号化器36においては、Iピクチャ、Pピクチャ、Bピクチャ(I−VOP、P−VOP、B−VOP)のマクロブロックデータについて、スキップマクロブロックとするかどうかを決定し、その決定結果を示すフラグを設定し、そのフラグも可変長符号化して伝送する。
因みに、エンコーダ30においては、各ブロック毎にそのDCT係数の符号化を行うが、形状情報復号化器52から出力される形状情報によりオブジェクトの外側にそのブロックがあると判断されたときには、DCT係数の符号化を行わない。
(3)本実施の形態によるデコーダの構成
一方、図12において、100は本発明を適用したデコーダを示し、図1について上述したエンコーダ30(図1)から伝送路又は記録媒体等を介して供給される符号化ビットストリームを復号化するようになされている。
このデコーダ100においては、エンコーダ30から伝送され、所定の受信装置(図示せず)で受信された符号化ビットストリーム、又は、エンコーダ30により記録媒体に記録され、所定の再生装置(図示せず)によってその記録媒体から再生された符号化ビットストリームをバッファ101に取り込んで一時記憶する。
可変長復号化器102は、後段におけるブロックの処理状態に対応して、バッファ101から符号化ビットストリームを適宜読み出し、その符号化ビットストリームを可変長復号することにより、量子化係数、動きベクトル、符号化モード情報、量子化スケールコード、サイズデータFSZ_B、オフセットデータFPOS_B等を分離する。
そして、可変長復号化器102は、量子化係数、量子化スケールコード、動きベクトル及び符号化モード情報を逆量子化器103に送出すると共に、動きベクトル、符号化モード情報、サイズデータFSZ_B及びオフセットデータFPOS_Bを動き補償器107に送出し、形状情報を形状情報復号化器110に送出する。
逆量子化器103、IDCT器104、演算器105、フレームメモリ106、形状復号化器110、パディング処理器108、動き補償器107は、図1について上述したエンコーダ30の逆量子化器38(図1)、IDCT器39(図1)、演算器40(図1)、フレームメモリ41(図1)、形状情報復号化器52(図1)、パディング処理器51(図1)、動き補償器42(図1)とそれぞれ同様の処理を実行する。
形状情報復号化器110は、可変長復号化器102から与えられる符号化された形状情報を復号化し、当該復号化した形状情報をパディング処理器108に送出する。
逆量子化器103は、可変長復号化器102から与えられる量子化スケールコードとピクチャ毎に設定される量子化スケールタイプ(線形量子化及び非線形量子化)とに基づいて、同様に可変長復号化器102から与えられる量子化係数を逆量子化し、得られたDCT係数をIDCT器104に送出する。
IDCT器104は、逆量子化器103から与えられたDCT係数をIDCT処理し、得られたデータを演算器105に供給する。
演算器105は、フレーム間予測が行われているときには動き補償器107からの出力とIDCT器104の出力とを1画素単位で加算し、得られた加算結果をテクスチャ情報としてパディング処理器108に送出すると共に、外部に出力する。また、演算器105は、フレーム内予測(イントラ符号化)が行われているときには、特に動作しない。
パディング処理器108は、形状情報復号化器110から与えられた形状情報に基づいて、演算器105から与えられるテクスチャ情報に対してパディング処理を行い、当該パディング処理したテクスチャ情報をフレームメモリ106に送出して記憶する。
フレームメモリ106に記憶されているテクスチャ情報は、動き補償器107により適宜読み出され、演算器105に送出され、この後、フレームメモリ106及び動き補償器107は、図1について上述したフレームメモリ41及び動き補償器42と同様に動作する。
ここで、エンコーダ30及びデコーダ100にMPEG4方式の規格を適用した場合について以下に説明する。
まず、エンコーダ30の量子化器35及び逆量子化器38と、デコーダ100の逆量子化器103について説明する。
図13はMPEG4方式のシンタックスのうちの、VOL(Video Object Layer)のシンタックスを示し、VOLは、符号化ビットストリーム内に格納された符号化されたビデオ情報全てに関わる情報が記述されているレイヤである。そして、このシンタックスのうち、入力画像の画素のビット精度を指定するフラグとしては、bits_per _pixel が準備されている。
そして、本発明においては、DCT係数のビット精度を指定するフラグとして、dct _precision を準備し、これにαの値を記述する。すなわち、DCT係数のビット精度はbits_per _pixel+1+dct _precision ビットとなる。
また、本発明においては、そのビット精度に応じて、図14に示すVOPレイヤ(各VOP毎の情報を記述)及び図15に示す各マクロブロック毎の情報を記述しているマクロブロックレイヤ(Macroblock Layer))のシンタックスにおいて、量子化スケールコードを示すフラグとして、quantizer _scale _codeを設け、このフラグを用いて量子化スケールのビット長を変更する。
すなわち、VOLシンタックスのbits_per _pixel とdct _percision の値に応じて、quantizer _scale _codeのビット長をbits_per _pixel+dct _precision-6 とする。因みに、MPEG2方式においては、bits_per _pixel とdct _precision がそれぞれ8と3であり、quantizer _scale _codeのビット長が5であるものの、本発明においては、quantizer _scale _codeのビット長は5となり、MPEG2方式と互換性を持っている。
そして、エンコーダ30及びデコーダ100においては、これらシンタックスに従い、bits_per _pixel 、dct _precision 及びquantizer _scale _codeが指定されて、次に、マクロブロックデータの量子化及び逆量子化を行う。
ここでまず、量子化器35においては、線形量子化を用いる場合、(7)式
で表される量子化スケールコードquantizer _scale _codeから量子化スケールquantizer _scale を計算する。
また、量子化器35は、非線形量子化を用いる場合、(8)式
で表される量子化スケールコードquantizer _scale _codeから量子化スケールquantizer _scale を計算する。
因みに、エンコーダ30及びデコーダ100においては、符号化対象のピクチャに対して線形量子化を適用するか、非線形量子化を適用するかを、図14に示すVOPシンタックスのquant _scale _typeと呼ばれるフラグの値により、どちらの量子化タイプを用いるかを指定する。かくして、量子化器35は、指定された量子化タイプを用いて計算した量子化スケールquantizer _scale を用いて量子化を行うことができる。
ただし、マクロブロックの符号化モードがイントラ符号化モードのときには、DCT係数の直流成分に対して異なる量子化方式を用いる。
実際上、DCT係数の直流成分の量子化スケールdc_scalerは、以下の手順で導き出すことができる。
すなわち、DCT係数の直流成分のビット精度がbits_per _pixel+dct _precision であるときには、量子化係数のビット精度として、図16に示すビット精度の中からピクチャ単位で指定することが可能であり、それを例えば、ユーザ等が図14に示すVOPシンタックスのintra _dc_precision と呼ばれるフラグで指定する。
そして、量子化器35は、intra _dc_precision により、量子化係数のビット精度が指定されると、図16に示すビット精度と、量子化スケールとの関係から対応する量子化スケールdc_scalerを算出し、これをイントラ符号化モードのときのDCT係数の直流成分の量子化に用いる。
次いで、逆量子化器38及び103は、上述した量子化器35と同様に、量子化スケールコードquantizer _scale _codeから量子化スケールquantizer _scale を計算することにより、その量子化スケールquantizer _scale を用いて逆量子化を行う。
ただし、逆量子化器38及び103は、マクロブロックデータの符号化モードがイントラ符号化モードの場合には、DCT係数の直流成分に対しては、異なる逆量子化方式を用いるが、その方法は図16に示したintra _dc_precision をもとに量子化スケールdc_scalerを求め、それを用いて逆量子化を行う。
このようにして、逆量子化器38及び103は、量子化スケールdc_scale を計算して逆量子化に用いることにより、DCT係数の直流成分の逆量子化を行うことができる。
次に、本発明における可変長符号化器36及び可変長復号化器102について説明する。
図17はMPEG4方式のシンタックスのうちの、ブロックレイヤ(Block Layer )を示し、現行のMPEG4方式においては、入力画像のビット精度bits_per _pixel とは無関係に、このブッロクシンタックスのDCT Coefficientを表すシンボルを符号化するのに、単一の可変長符号化テーブルを用いる。
ここで、その可変長符号化方式は、符号化対象の所定ブロック内の最終コード(LAST)と、当該ブロック内の連続する0の個数(RUN )と、ブロック内の非0係数の値(LEVEL )との3種類のデータから3D可変長符号化を行うようになされている。因みに、現行のMPEG4方式ではdct _precision は3で固定されている。
すなわち、可変長符号化器36は、3D可変長符号化を行う場合、図18〜図20に示す可変長符号化テーブルを用いる。
また、現行のMPEG4方式においては、入力画像のビット精度bits_per _pixel とは無関係に、ブロックの可変長符号化の際にエスケープコードが選択されたときには、図21に示すようにレベル値、ラン長を固定長符号を用いて符号化するが、このレベル値を符号化するビット長もbits_per _pixel とは無関係に固定されており、その長さは12ビットである。
これは本発明のbits_pre _pixel=8,dct _precision=3 の場合におけるDCT係数のビット精度であるので、8ビット精度入力よりもビット精度の高い入力画像に対しては、十分な値とは言えない。
従って、可変長符号化器36においては、図22に示すように、bits_per _pixel とdct _precision とquantizer _scale の値に応じて、可変長符号化テーブルを切り換えるようになされている。
因みに、図22は、例えば、bits_per _pixel=8、10、12、dct _precision=5が選択できる場合を示してあり、VLCt_0 〜20は図18〜図20に示すような可変長符号化テーブルであり、全て異なるテーブルとすることが可能である。
また、可変長符号化器36においては、レベル値を示す、固定長符号のビット長も、bits_per _pixel とdct _precision とquantizer _scale の値に応じて、切り換えることが可能であり、その長さは図23に示す通りである。この例も、bits_per _pixel=8、10、12、dct _precision=5が選択できる場合を示してある。
これに対して、可変長復号化器102においては、可変長符号化器36おける可変長符号化と同様に、bits_per _pixel とdct _precision とquantizer _scale の値に応じて、可変長符号化テーブルとエスケープコード発生時におけるレベル値のビット長を切り換えることにより、可変長復号化を行う。
(4)本実施の形態の動作及び効果
以上の構成において、エンコーダ30では、任意に設定されたビット精度Nの入力画像を取り込むことができると共に、DCT係数のビット精度αを任意に設定し得るようにし、当該入力画像のフレーム画像データからマクロブロック単位で動きベクトル等を用いて差分値データを生成すると、当該生成した差分値データをDCT処理して設定されたビット精度αのDCT係数を生成する。
そして、エンコーダ30では、そのDCT係数を、任意に設定された入力画像のビット精度N及びDCT係数のビット精度αとに基づいて拡張した量子化スケールを用いて量子化し、得られた量子化係数を、任意に設定された入力画像のビット精度N、DCT係数のビット精度α及び量子化に用いた量子化スケールの値のうちの少なくともいずれか1つに基づいて選定した可変長符号化テーブルを用いて可変長符号化する。
また、エンコーダ30では、このとき、量子化係数の値が選定した可変長符号化テーブルで定義されている値の範囲外であるときには、その可変長符号化テーブルで定義されているエスケープコードを用いてその量子化係数を固定長符号として処理する。
一方、デコーダ100では、エンコーダ30から与えられた符号化ビットストリームを、任意に設定された入力画像のビット精度N及びDCT係数のビット精度αと、当該ビット精度N及びαに基づいて拡張した量子化スケールとのうちの少なくとも1つに基づいて選定した可変長符号化テーブルを用いて復号化して各種データと共に量子化係数を分離する。
そして、デコーダ100では、その量子化係数を、任意に設定した入力画像のビット精度N及びDCT係数のビット精度αとに基づいて拡張した量子化スケールを用いて逆量子化し、当該設定されたビット精度αのDCT係数を生成し、当該DCT係数にIDCT処理するようにして、この後、復号化したフレーム画像データを得るようにした。
従って、エンコーダ30及びデコーダ100では、量子化及び逆量子化を行う際に、任意に設定されたDCT係数のビット精度αに応じて、そのビット精度αに対して適切で、かつ、MPEG2方式と互換性を持つ線形量子化及び非線形量子化を行うことができる。
また、エンコーダ30及びデコーダ100では、可変長符号化及び可変長復号化を行う際に、設定されたDCT係数のビット精度αと量子化スケールに対して、適切な可変長符号化テーブルとエスケープコードに続くレベル値のビット長とを選択することができる。
この結果、エンコーダ30及びデコーダ100では、入力画像を圧縮符号化するときに、当該入力画像の画質が劣化することを未然に防止することができると共に、符号化した入力画像を復号化するときにもその画質が劣化することを未然に防止することができる。
以上の構成によれば、任意に設定されたビット精度Nの入力画像を取り込み、かつDCT係数のビット精度αを任意に設定し得るようにし、そのDCT係数を当該入力画像のビット精度Nと、DCT係数のビット精度αとに基づいて拡張した量子化スケールを用いて量子化し、得られた量子化係数を、その入力画像のビット精度N、DCT係数のビット精度α及び量子化に用いた量子化スケールの値のうちの少なくともいずれか1つに基づいて選定した可変長符号化テーブルを用いて可変長符号化するようにしたことにより、入力画像を圧縮符号化するときに、当該入力画像の画質が劣化することを未然に防止し得るエンコーダを実現することができる。
また、任意に設定されたビット精度Nの入力画像を取り込み、かつDCT係数のビット精度αを任意に設定し得るようにし、符号化ビットストリームを当該入力画像のビット精度N及びDCT係数のビット精度αと、これらビット精度N及びαに基づいて拡張した量子化スケールとのうちの少なくともいずれか1つに基づいて選定した可変長符号化テーブルを用いて可変長復号化し、得られた量子化係数をその入力画像のビット精度N及びDCT係数のビット精度αに基づいて拡張した量子化スケールを用いて逆量子化するようにしたことにより、圧縮符号化された入力画像を復号化するときに、当該入力画像の画質が劣化することを未然に防止し得るデコーダを実現することができる。
従って、本実施の形態によれば、入力画像の圧縮符号化時及び復号化時に画質が劣化することを未然に防止し、かくして、入力画像を圧縮符号化した後、復号化して得られる画像の画質を入力画像の画質とほぼ同等にすることができるエンコーダ及びデコーダを実現することができる。
(5)他の実施の形態
なお、上述の実施の形態においては、bits_per _pixel=8、10、12、dct _precision=5が選択できるようにした場合について述べたが、本発明はこれに限らず、その他の組み合わせも可能であり、一方か両方をある値に固定することも可能である。これはそのシステムの利用目的に応じて選択されるべきであるが、本発明は、このようなシステムのいずれにも適応可能である。
また、上述の実施の形態においては、エンコーダ30において、ビット精度に応じた量子化及び可変長符号化を実行するようにした場合について述べたが、本発明はこれに限らず、エンコーダにおいて、ビット精度に応じた量子化及び可変長符号化のうちのいずれか一方を実行するようにしても良く、この場合でも、画質の劣化を未然に防止することができる。
さらに、上述の実施の形態においては、デコーダ100において、ビット精度に応じた量子化及び可変長符号化を実行するようにした場合について述べたが、本発明はこれに限らず、デコーダにおいて、ビット精度に応じた量子化及び可変長符号化のうちのいずれか一方を実行するようにしても良く、この場合でも、画質の劣化を未然に防止することができる。