まず、可逆エンコードされたコードストリームを、非可逆エンコードされたコードストリームに変換する画像データの変換処理について説明する。
図1は、そのような変換処理を用いる従来の符号化装置の構成例を示す図である。図1に示される符号化装置10は、入力されるベースバンドの画像データを、一旦、可逆圧縮方式により所定の圧縮率で圧縮符号化し、その後、圧縮されたコードストリームを全て、可逆圧縮方式に対応する伸長方式でベースバンドに伸長復号し、さらに、そのベースバンドの画像データを非可逆方式で所望の圧縮率に圧縮符号化し、コードストリームとして出力する装置である。
符号化装置10は、装置内の処理の負荷を軽減させるため、入力されるベースバンドの画像データ(マスタ画像)を、まず、可逆エンコード部11においてJPEG2000の可逆圧縮方式で圧縮符号化し、データサイズを小さくしたコードストリームに変換する。
例えば、符号化装置10は、情報処理部13−1において、そのコードストリームに対してメタ情報を付加する等の所定の処理を施す。また、例えば、符号化装置10は、そのコードストリームを、所定のバスやネットワーク等の伝送路13−2を介して伝送させる。さらに、例えば、符号化装置10は、そのコードストリームをハードディスクや半導体メモリ等の記憶部13−3に一旦保存し、所定のタイミングで読み出して出力する。
符号化装置10は、非可逆トランスコード部12において、このコードストリームを、JPEG2000の非可逆圧縮方式で圧縮符号化されたコードストリームに変換する。このとき非可逆トランスコード部12の可逆デコード部21は、JPEG2000の可逆伸長方式により、情報処理部13−1、伝送路13−2、または記憶部13−3を介して供給されるコードストリームを全て復号する。つまり、理論的には、可逆デコード部21の復号により、符号化装置10に入力されたときと同一のデータサイズのベースバンドの画像データが得られる。非可逆エンコード部22は、その画像データを、JPEG2000の非可逆圧縮方式により所望の圧縮率で圧縮符号化し、得られたコードストリームを符号化装置10の外部に出力する。
このように、符号化装置10は、非可逆トランスコード部12の可逆デコード部21によるデコード処理において、コードストリームを全て復号するので、マスタ画像のデータサイズが大きい場合、このデコード処理の負荷が増大し、変換処理の効率が低減してしまう。
なお、この符号化装置10は、ベースバンドの画像データを可逆圧縮方式で圧縮し、その後、そのコードストリームを非可逆圧縮方式のコードストリームに変換する一連の処理を装置として示したものであり、同様の処理を行う、複数の装置よりなるシステムの場合も同様である。
これに対して、図2は、本発明を適用した符号化装置の構成例を示すブロック図である。図2に示される符号化装置100は、図1の符号化装置10と同様に、入力されるベースバンドの画像データを、一旦、JPEG2000の可逆圧縮方式により所定の圧縮率で圧縮符号化し、その後、圧縮されたコードストリームを、JPEG2000の非可逆方式で所望の圧縮率に圧縮符号化し、コードストリームとして出力する装置である。
符号化装置100は、図2に示されるように、可逆エンコード部101および非可逆トランスコード部102を有する。
可逆エンコード部101は、可逆エンコード部11と同様に、入力されたベースバンドの画像データをJPEG2000の可逆圧縮方式により所定の圧縮率で圧縮符号化し、データサイズを小さくしたコードストリームの可逆圧縮ファイルに変換する。ただし、可逆エンコード部101は、符号化時に生成されるウェーブレット係数を重要度に応じて重み付けする。可逆エンコード部101の詳細については後述する。
例えば、符号化装置100は、符号化装置10の場合と同様に、情報処理部103−1において、その可逆圧縮ファイルに対してメタ情報を付加する等の所定の処理を施す。また、例えば、符号化装置100は、その可逆圧縮ファイルを、所定のバスやネットワーク等の伝送路103−2を介して伝送させる。さらに、例えば、符号化装置100は、その可逆圧縮ファイルをハードディスクや半導体メモリ等の記憶部103−3に一旦保存し、所定のタイミングで読み出して出力する。
非可逆トランスコード部102は、部分デコード部111および非可逆エンコード部112を有する。
部分デコード部111は、情報処理部103−1において処理された可逆圧縮ファイル、伝送路103−2を介して供給された可逆圧縮ファイル、または、記憶部103−3より読み出された可逆圧縮ファイルのコードストリームの一部を復号し、ベースバンドの画像データを生成する。非可逆エンコード部112は、そのベースバンドの画像データをJPEG2000の非可逆圧縮方式により所望の圧縮率で圧縮符号化し、生成したコードストリームを出力する。
このとき、非可逆エンコード部112は、生成するコードストリームの目標符号量に基づいて、自身が圧縮符号化を行うベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を算出し、それを目標圧縮率として部分デコード部111に供給する。つまり、非可逆エンコード部112は、目標符号量を達成するために必要なベースバンドの画像データの符号量を、マスタ画像(原画像)の画像データに対する圧縮率で表わし、それを部分デコード部111に供給する。
部分デコード部111は、その圧縮率を目標圧縮率とし、可逆圧縮ファイルのコードストリームを部分的に復号してベースバンドの画像データを生成する。後述するように、部分デコード部111は、生成するベースバンドの画像データの符号量が小さいほど、つまり、マスタ画像(原画像)の画像データに対する圧縮率が高いほど、復号するコードストリームの部分が少なくて済むので、復号処理の処理量を低減させることができる。しかしながら、部分デコード部111が生成するベースバンドの符号量が少なすぎると、非可逆エンコード部112が目標符号量を達成することができなくなる恐れがある。
そこで、部分デコード部111は、生成するベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率が、非可逆エンコード部112より取得した目標圧縮率と一致するように、または、それよりも少し小さくなるように、復号する部分の選択を行い、その選択した部分に対してのみ復号処理を行う。換言すれば、部分デコード部111は、非可逆エンコード部112が目標符号量を達成することができる範囲において、復号処理の処理量をより低減させるように、可逆圧縮ファイルのコードストリームを部分的に復号する。部分デコード部111は、その範囲を、非可逆エンコード部112より供給される目標圧縮率により判断する。
以下において、このようなコードストリームの一部分を復号することを部分デコード処理と称する。以上のように部分デコード処理を行うことにより、部分デコード部111は、マスタ画像(原画像)のデータサイズが大きくても、容易かつ適切に可逆圧縮ファイルを復号することができる。
また、上述したように可逆エンコード部101がウェーブレット係数に対して重要度に応じた重み付けを行うことにより、部分デコード部111は、コードストリームから復号する部分を選択する際に、各係数の重要度をその選択に反映させることができる(重要度に応じた選択を行うことができる)。
さらに、可逆エンコード部101、部分デコード部111、および非可逆エンコード部112は、ウェーブレット係数の各ビットを位ごとに分割したビットプレーン単位で処理するので、部分デコード部111は、画像の解像度を低減させずに部分デコード処理を行うことができる。もちろん、解像度を低減させることもできる。
部分デコード部111および非可逆エンコード部112の詳細については後述する。
次に、図2の符号化装置100の構成の詳細について説明する。図3は、図2の可逆エンコード部101の詳細な構成例を示すブロック図である。図3に示されるように、可逆エンコード部101は、DCレベルシフト部121、ウェーブレット変換部122、コードブロック化部124、ビットプレーン展開部125、エントロピ符号化部126、ヘッダ生成部127、およびパケット生成部128を有する。
DCレベルシフト部121は、後段のウェーブレット変換を効率的に行うために画像データのDC成分のレベルシフトを行う。例えば、RGB信号が正の値(符号無しの整数)を持っている。そこで、DCレベルシフト部121は、そのことを利用し、原信号のダイナミックレンジを半分にするレベルシフトを行うことで、圧縮効率の向上を図る。従ってYCbCr信号のCbやCr(色差信号)の様に符号(正負両方あり)の整数値を持つ信号を原信号とする場合、このレベルシフトは行われない。
ウェーブレット変換部122は、通常低域フィルタと高域フィルタから構成されるフィルタバンクによって実現される。また、デジタルフィルタは通常複数タップ長のインパルス応答(フィルタ係数)を有するので、ウェーブレット変換部122は、フィルタリングが行えるだけの入力画像を予めバッファリングするバッファを有する。
ウェーブレット変換部122は、DCレベルシフト部121より出力された画像データを、フィルタリングに最低限必要なデータ量以上取得すると、そのDCレベルシフト後の画像データに対して、5×3ウェーブレット変換フィルタを用いてフィルタリングを行い、ウェーブレット係数を生成する。なお、ウェーブレット変換部122は、画像の垂直方向および水平方向のそれぞれに対して、画像データを低域成分と高域成分に分離するフィルタリングを行う。
そして、ウェーブレット変換部122は、このようなフィルタリング処理を、図4に示されるように、垂直方向および水平方向の両方において低域成分として分離されたサブバンドに対して再帰的に所定回数繰り返す。これは、例えば、図5に示されるように、画像のエネルギーの多くが低域成分に集中しているからである。
図4は、分割レベル数3のウェーブレット変換処理により生成されるサブバンドの構成例を示す図である。この場合、ウェーブレット変換部122は、まず、画像全体をフィルタリングし、サブバンド3LL(図示せず)、3HL、3LH、および3HHを生成する。次に、ウェーブレット変換部122は、生成されたサブバンド3LLに対して再度フィルタリングを行い、2LL(図示せず)、2HL、2LH、および2HHを生成する。さらに、ウェーブレット変換部122は、生成されたサブバンド2LLに対して再度フィルタリングを行い、0LL、1HL、1LH、および1HHを生成する。
図5は、分割レベルを進めていくに従い、各帯域が形成されていく様子を示す図である。図5の左側には、分割レベルが1のウェーブレット変換処理により得られた各サブバンドの画像の様子が示されており、図5の右側には、分割レベルが3のウェーブレット変換処理により得られた各サブバンドの画像の様子が示されている。つまり、図5の右側は、図4の各サブバンドの画像の様子を示したものである。
ウェーブレット変換部122は、フィルタリングにより得られたウェーブレット係数を、サブバンド毎に、コードブロック化部124に供給する。このとき、ウェーブレット変換部122は、各サブバンドを、その重要度順(重要度の高いほうから低いほうに向かう順に)にコードブロック化部124に供給する。一般的に、ウェーブレット変換部122は、各サブバンドを、低域から高域に向かう順にコードブロック化部124に供給する。
なお、JPEG2000の規格では、可逆圧縮用のウェーブレット変換には5×3ウェーブレット変換フィルタを用いることが義務付けられており、この場合、量子化は行われず、後述する符号化パスまたはビットプレーンのすべてが符号化される。
ウェーブレット係数は、コードブロック化部124で、エントロピ符号化の処理単位である所定の大きさのコードブロックに分割される。図6は各サブバンド中のコードブロックの位置関係を示したものである。例えば64×64画素程度のサイズのコードブロックが、分割後のすべてのサブバンド中に生成される。図4の例において、最も分割レベルが小さい3HHのサブバンドの大きさが例えば640×320画素であるとすると、64×64画素のコードブロックは合計50個存在することになる。後段の各処理部は、このコードブロック毎に処理を行う。
コードブロック化部124は、各コードブロックをその重要度順(重要度の高いほうから低いほうへ向かう順)に、ビットプレーン展開部125に供給する。ビットプレーン展開部125は、係数データを、ビットの位毎のビットプレーンに展開し、それをエントロピ符号化部126に供給する。
ビットプレーンは、所定の数のウェーブレット係数よりなる係数群を、1ビット毎、つまり位毎に分割(スライス)したものである。つまり、ビットプレーンは、その係数群の互いに同一の位のビット(係数ビット)の集合である。
図7にその具体例を示す。図7の左図は縦4個、横4個の計16個の係数を示している。この16個の係数のうち、絶対値が最大のものは13で、2進数で1101と表現される。ビットプレーン展開部125は、このような係数群を、絶対値を示す4枚のビットプレーン(絶対値のビットプレーン)と、符号を示す1枚のビットプレーン(符号のビットプレーン)に展開する。つまり、図7中左の係数群は、図7中右に示されるように、4枚の絶対値のビットプレーンと1枚の符号のビットプレーンに展開される。ここで、絶対値のビットプレーンの要素はすべて0か1の値をとる。また、符号を示すビットプレーンの要素は、係数の値が正であることを示す値、係数の値が0であることを示す値、または係数の値がマイナスを示す値のいずれかをとる。
ビットプレーン展開部125は、このように展開したビットプレーンをその重要度順(重要度の高いほうから低いほうへ向かう順)に、エントロピ符号化部126に供給する。エントロピ符号化部126は、係数データのビットプレーンを、その順、すなわち、重要度の高いほうから低いほうへ向かう順に符号化する。例えば、エントロピ符号化部126は、各ビットプレーンを、係数の最上位ビット(MSB:Most Significant Bit)から最下位ビット(LSB:Less Significant Bit)に向かう順に符号化する。
図3に示されるようにエントロピ符号化部126は、EBCOT(Embedded Coding with Optimized Truncation)部132を有する。EBCOT部132は、入力される係数データに対して、JPEG2000規格で定められたEBCOTと呼ばれるエントロピ符号化を行う。EBCOTは、所定の大きさのブロック毎にそのブロック内の係数の統計量を測定しながら符号化を行う手法である。
EBCOT部132は、ビットモデリング部141および算術符号化部142を有する。ビットモデリング部141は、JPEG2000規格で定められた手順に従って、係数データに対してビットモデリングを行い、算術符号化部142にコンテキストを送出する。算術符号化部142は、係数のビットプレーンを算術符号化する。
コードブロックの縦横のサイズは4から256まで2のべき乗で、通常使用される大きさは、32×32、64×64、128×32等がある。係数値がnビットの符号付き2進数で表されていて、bit0からbit(n−2)がLSBからMSBまでのそれぞれのビットを表すとする。残りの1ビットは符号を示す。符号ブロックの符号化は、MSB側のビットプレーンから順番に、次の3種類の符号化パスによって行われる。
(1)Significant Propagation Pass
あるビットプレーンを符号化するSignificance Propagation Passでは、8近傍の少なくとも1つの係数が有意(Significant)であるようなnon-significant係数のビットプレーンの値が算術符号化される。その符号化したビットプレーンの値が1である場合は、符号が+であるか、−であるかが続けて算術符号化される。
ここでsignificanceという言葉について説明する。Significanceとは、各係数に対して符号化されたときにsignificantを表す1に変化し、以降常に1であり続けるものである。従って、significanceとは、有効桁の情報をすでに符号化したか否かを示すフラグとも言える。あるビットプレーンでsignificantになれば、以降のビットプレーンではsignificantになったままである。
(2)Magnitude Refinement Pass
ビットプレーンを符号化するMagnitude Refinement Passでは、ビットプレーンを符号化するSignificance Propagation Passで符号化されていないsignificantな係数のビットプレーンの値が算術符号化される。
(3)Cleanup Pass
ビットプレーンを符号化するCleanup Passでは、ビットプレーンを符号化するSignificance Pass で符号化されていないnon-sigunificanceな係数のビットプレーンの値が算術符号化される。また、その符号化されたビットプレーンの値が1である場合、符号が+であるか−であるかが続けて算術符号化される。
なお、以上の3つのPassでの算術符号化では、ケースに応じて(1)ZC(Zero Coding)、(2)RLC(Run-Length Coding)、(3)SC(Sign Coding)、または(4)MR(Magnitude Refinement)等の手法が使い分けられる。なお、ここではMQ符号化と呼ばれる算術符号が用いられるものとする。MQ符号化は、JBIG2で規定された学習型の2値算術符号である。JPEG2000では、すべての符号化パスで合計19種類のコンテキストがある。
これらの3つの符号化パスの用いられる順序の例は図8に示される。最初に最上位ビット(MSB)のビットプレーンであるビットプレーン(n−2){Bit-Plane(n−2)}がCleanup Passによって符号化される。続いて1枚ずつ順次LSB側に向かって各ビットプレーンが、上述した3つの符号化パスがSignificant Propagation Pass,Magnitude Refinement Pass,Cleanup Passの順序で用いられて符号化される。
ただし、実際には、EBCOT部132は、MSB側から何番目のビットプレーンで初めて1が出てくるかをヘッダに書き、全ての係数が0のビットプレーン(ゼロビットプレーンと称する)は符号化しない。
次に、係数の走査(スキャニング)について図9を用いて説明する。コードブロックは高さ4個の係数毎にストライプ(stripe)に分けられるストライプの幅はコードブロックの幅に等しい。スキャン順とは、1個のコードブロック内の、全ての係数をたどる順番で、コードブロック中では上のストライプから下のストライプへの順序、ストライプの中では、左の列から右の列へ向かっての順序、列の中では上から下へという順序である。各符号化パスにおいてコードブロック中の全ての係数が、このスキャン順で処理される。
なお、サブバンドや画像全体における符号化の順序の詳細については後述するが、エントロピ符号化部126は、基本的に、重要度の高いものから低いものに向かう順序で各係数ビットを符号化する。
図3に戻り、エントロピ符号化部126(EBCOT部132の算術符号化部142)は、生成した符号化コードストリームを全て、ヘッダ生成部127およびパケット生成部128に供給される。
パケット生成部128は、供給された符号化コードストリームをパケット化する。ヘッダ生成部127は、そのパケットのヘッダ情報を生成し、そのヘッダ情報をパケット生成部128に供給する。パケット生成部128は、そのヘッダ情報を用いてパケット化を行う。
JPEG2000規格では、符号化コードストリームを表現する際に、パケットと呼ばれる単位で符号化コードストリームがパッキングされる。このパケットの概念を図示したものが図10である。この図では、図4の例と同様に、ウェーブレット変換が3回施された例である。この場合、図10に示されるように、最低域の第1パケットから最高域の第4パケットまでの4個のパケットが生成される。従って、これら個々のパケット内サブバンド中に存在する、全てのコードブロックの符号化コードストリームが、パケット生成部128において、パケット毎にパッキングされ、可逆エンコード部101より出力される。
図11は、図2の部分デコード部111の詳細な構成例を示すブロック図である。図11に示されるように、部分デコード部111は、パケット解読部201、EBCOT部202、制御部231、コードブロック合成部206、ウェーブレット逆変換部208、およびDCレベル逆シフト部209を有する。
パケット解読部201は、可逆エンコード部101のパケット生成部128において生成されたパケットを解読し、符号化コードストリームをEBCOT部202に供給する。EBCOT部202は、上述した可逆エンコード部101のEBCOT部132に対応する復号方法でコードストリームを復号し、ビットプレーンに展開されたウェーブレット係数を生成する。EBCOT部202は、算術復号部221およびビットモデリング部222を有する。算術復号部221は、算術符号化部142に対応する方法でコードストリームを復号し、ビットモデリング部222は、ビットモデリング部141に対応する方法で、ビットプレーンに展開されたウェーブレット係数を生成する。EBCOT部202は、生成したビットプレーン毎の係数データを、制御部231の選択ビットプレーン符号量カウント部203に供給する。
制御部231は、復号処理により生成されるベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を制御する。制御部231は、選択ビットプレーン符号量カウント部203、目標圧縮率取得部204、および選択ビットプレーン決定部205を有する。
選択ビットプレーン符号量カウント部203は、供給されるビットプレーンを蓄積する。また、選択ビットプレーン符号量カウント部203は、蓄積したビットプレーンの中から、まず、後段の処理部に供給する(つまり復号結果として利用する)ビットプレーンである選択ビットプレーンの候補を選び、その候補の符号量をカウントし、そのカウント値(符号量の情報)を選択ビットプレーン決定部205に供給する。目標圧縮率取得部204は、非可逆エンコード部112より、非可逆エンコード部112より目標圧縮率を取得し、それを選択ビットプレーン決定部205に供給する。この目標符号量は、上述したように、非可逆エンコード部112が目標符号量を達成するために必要なベースバンドの画像データの符号量を、マスタ画像(原画像)の画像データに対する圧縮率で表わしたものである。
選択ビットプレーン決定部205は、選択ビットプレーン符号量カウント部203より供給される選択ビットプレーンの候補の符号量を用いて、その選択ビットプレーンの候補の、マスタ画像(原画像)の画像データに対する圧縮率を算出し、その圧縮率が、目標圧縮率取得部204より供給された目標圧縮率以下となったか否かを判定する。目標圧縮率に達した時点で、選択ビットプレーン決定部205は、選択ビットプレーン符号量カウント部203より選択ビットプレーンの候補を取得し、それらの候補を正式に選択ビットプレーンとして決定し、後段のコードブロック合成部206に供給する。
以上のように、選択ビットプレーン決定部205は、非可逆エンコード部112における目標圧縮率に応じて、可逆エンコードされたコードストリームを復号して得られる全てのビットプレーンの中から、一部のビットプレーンを選択することにより、後段の処理において、その選択した一部のビットプレーンでベースバンドの画像データを生成させる。このようにすることにより、部分デコード部111は、非可逆エンコード部112において必要なデータ量、もしくは、それより少し多目のデータ量のベースバンドの画像データを生成することができる。
つまり、部分デコード部111は、可逆圧縮されたコードストリームのうち、一部分のみを使用してベースバンドの画像データを生成する。上述したように、非可逆エンコード部112より供給される目標圧縮率に基づいてこのような部分デコード処理を行うことにより、少なくとも非可逆エンコード部112における符号化に必要なデータ量(目標符号量を達成するために必要な符号量)が確保されているので、非可逆エンコード部112は、不要な画質の劣化を伴わずに、非可逆圧縮された目標符号量の、またはそれに近似する符号量のコードストリームを生成することができる。このように、部分デコード部111は、上述した部分デコード処理により、不要に高画質なベースバンドの画像データを生成する必要がなくなり、マスタ画像のデータ量が大きい場合であっても、不要に画質を低下させずに(適切に)、不要な処理の負荷の増大を抑制する(容易に復号処理を行う)ことができる。
なお、選択ビットプレーン符号量カウント部203は、重要度の高いビットプレーンを優先的に選択ビットプレーンの候補として選択する。つまり、選択ビットプレーン符号量カウント部203は、蓄積したビットプレーンを、重要度の高い方から低い方に向かう順に選択ビットプレーンの候補として1つずつ選択し、選択する度に符号量を算出し、選択ビットプレーン決定部205にその情報を供給する。
換言すれば、部分デコード部111は、重要度の高いデータほど優先的に復号してベースバンドの画像データを生成する。このように部分デコード処理を行うことにより、部分デコード部111は、可能な限り画質の劣化を抑制するように適切に復号処理を行うことができる。
コードブロック合成部206は、供給されたビットプレーンを用いてコードブロック単位の係数データを生成し、さらにそれらを合成し、サブバンド毎の係数データを生成し、それをウェーブレット逆変換部208に供給する。ウェーブレット逆変換部208は、供給されたウェーブレット係数をウェーブレット逆変換し、ベースバンドの画像データを生成する。DCレベル逆シフト部209は、その画像データのDC成分に対して、DCレベルシフト部121においてシフトした分を元に戻すDCレベル逆シフト処理を必要に応じて行う。DCレベル逆シフト部209は、DCレベル逆シフト処理後の画像データを非可逆エンコード部112に供給する。
図12は、図2の非可逆エンコード部112の詳細な構成例を示すブロック図である。図12に示されるように、非可逆エンコード部112は、基本的に可逆エンコード部101(図3)と同様の構成を有するが、ウェーブレット変換部122の代わりにウェーブレット変換部322を有し、エントロピ符号化部126の代わりにエントロピ符号化部326を有し、さらに量子化部301および目標圧縮率供給部302を有する点で可逆エンコード部101と異なる。
ウェーブレット変換部322は、ウェーブレット変換部122と同様に、通常低域フィルタと高域フィルタから構成されるフィルタバンクによって実現され、フィルタリングが行えるだけの入力画像を予めバッファリングするバッファを有する。
ウェーブレット変換部322は、ウェーブレット変換部122と同様に、DCレベルシフト部121より出力された画像データを、フィルタリングに最低限必要なデータ量以上取得すると、そのDCレベルシフト後の画像データに対して、画像の垂直方向および水平方向のそれぞれに対して、画像データを低域成分と高域成分に分離するフィルタリングを行い、ウェーブレット係数を生成する。
ただし、ウェーブレット変換部122が、5×3ウェーブレット変換フィルタを用いてフィルタリングを行うのに対して、ウェーブレット変換部322は、9×7ウェーブレット変換フィルタを用いてフィルタリングを行う。
ウェーブレット変換部322は、このようなフィルタリング処理を、垂直方向および水平方向の両方において低域成分として分離されたサブバンドに対して再帰的に所定回数繰り返すと、得られたサブバンド毎のウェーブレット係数を量子化部301に供給する。
量子化部301は、供給されたウェーブレット係数を量子化する。この量子化の方法は任意であるが、量子化ステップサイズで除算するスカラ量子化が一般的である。量子化部301は、量子化により得られた量子化係数をコードブロック化部124に供給する。なお、これより後段においては、ウェーブレット係数の代わりに量子化係数が供給されることになるが、この量子化係数もウェーブレット係数の場合と基本的に同様に扱われる。したがって、以下においては、必要でない限りその点についての説明は省略し、単に係数または係数データと称する。
エントロピ符号化部326は、ビットプレーン展開部125より供給された、ビットプレーンに展開された係数データを、エントロピ符号化する。このエントロピ符号化部326も、エントロピ符号化部126と同様にEBCOT部132を有しており、基本的に同様に符号化を行うが、エントロピ符号化部326は、供給されるビットプレーンの全てを符号化するとは限らず、符号化した符号量が目標符号量に達した時点で符号化を終了する。つまり、エントロピ符号化部126は、符号量を調整しながら符号化を行う。
この目標符号量は、予め定められていてもよいし、例えば出力側のトラフィック状況等、何らかの要因に基づいて適宜設定される(さらに、時系列に沿って変動する)ようにしてもよい。
図12に示されるように、エントロピ符号化部326は、EBCOT部132の他に、制御部331および符号量加算部333を有する。
EBCOT部132は、ビットプレーンを符号化すると、その符号語を符号量加算部333に供給する。符号量加算部333は、その符号語の符号量をカウントし、累積する。そして、符号量加算部333は、その符号語をヘッダ作成部127およびパケット生成部128に供給するとともに、符号量の累積値を制御部331に供給する。制御部331は、供給された符号量の累積値と目標符号量とを比較し、累積値が目標符号量より小さい場合、EBCOT部132を制御し、次のビットプレーンの符号化を行わせる。EBCOT部132は、その制御に従って次に重要なビットプレーンを符号化し、生成した符号語を符号量加算部333に供給する。符号量加算部333は、その符号語の符号量をカウントして累積し、累積値を制御部331に供給する。
累積値が目標符号量に達するまで、以上のような処理が繰り返される。そして、累積値が目標符号量に達すると、制御部331は、EBCOT部132を制御し、符号化処理を終了させる。
以上のように、制御部331が、符号量加算部333において算出された符号量の累積値に基づいて、EBCOT部132を制御することにより、エントロピ符号化部126は、符号量を調整しながら符号化を行う。
目標圧縮率供給部302は、制御部331において設定されている目標符号量とマスタ画像のデータ量に基づいて算出される、部分デコード部111における目標圧縮率を部分デコード部111(目標圧縮率取得部204)に供給する。これにより、部分デコード部111は、その目標圧縮率に合わせて、デコード処理を行うことができ、マスタ画像のデータ量が大きい場合であっても、不要な処理の負荷の増大を適切に抑制することができる。
続いて、係数の重要度について説明する。符号化装置100において、可逆エンコード部101、部分デコード部111、および非可逆エンコード部112は、既存のRD(Rate-Distortion)特性を利用したレート制御法とは大きくことなり、基本的に、重要度の高いものから低いものに向かう順番に各係数ビットを符号化または復号する。
例えば、図13は、1つのサブバンドY-0LLを符号化(または復号)する順の例を示す図である。Y-0LLのYは輝度を表し、0LLは最低域を示している。このY-0LLにおいて、コードブロックCB0乃至コードブロックCBnまで(n+1)個のコードブロックが存在していることを示している。模様が付されている部分が、各コードブロックのビットプレーン群を示す。
図13に示されるように、サブバンド内において、EBCOT部132およびEBCOT部202は、各コードブロックのビットプレーンを、優先順位の高いコードブロックから優先順位の低いコードブロックの順に符号化または復号する。図13において、コードブロックCB0が最も優先順位の高い(最も重要度の高い)コードブロックを示し、コードブロックCBnが優先順位の最も低い(最も重要度の低い)コードブロックを示している。上述したように、各ビットプレーンは、MSBからLSBに向かう順に符号化または復号されるので、結局、図13の例の場合、Y-0LL内の符号化・復号順は、矢印に示されるように順となる。
係数が0しか存在しないゼロビットプレーンは処理されないので、実際には、ビットプレーンは、図13中に示される番号順((1)から(14)に向かう順)に処理される。なお、図13中においては、この番号は、円で囲まれた数字で示されているが、本明細書中においては括弧つき数字で示す。つまり、最初にEBCOTの対象になるのは、最もビット位置の高い(1)のビットプレーンになる。このビット位置では(1)しかビットプレーンが存在していないので、(1)だけをEBCOTして、次のビット位置に移動する(点線で図示してある)。次のビット位置では、(2)と(3)のビットプレーンがEBCOTの対象になる。
次に、データ量の調整方法について説明する。
まず、非可逆エンコード部112のエントロピ符号化部306の場合、上述した走査を繰り返し行い、各ビットプレーンのEBCOT符号化で発生した符号量を、前述の様に加算していき、その累算結果が目標符号量に達したときに、EBCOTを終了する。例えば、図13において、(9)まで符号化した時点で目標符号量に到達したとすると、制御部331は、その時点でEBCOT部132に符号化を終了させる。従ってこの場合、(10)も(9)とは同じビット位置にはあるが、エントロピ符号化部326(非可逆エンコード部112)より出力される符号化コードストリームの中には含まれないことになる。
これに対して、可逆エンコード部101の場合、同様の走査により(1)から(14)までの全てのビットプレーンが符号化される。従って、可逆エンコード部101より出力される可逆圧縮ファイルには、(1)から(14)までの全てのビットプレーンが含まれる。
部分デコード部111の場合、EBCOT部202では、供給される符号語が同様の走査順に復号される。選択ビットプレーン符号量カウント部203は、EBCOT部202より出力された順に各ビットプレーンを選択ビットプレーンの候補とし、その符号量をカウントする。つまり、(1)から(14)の順に各ビットプレーンの符号量がカウントされる。選択ビットプレーン決定部205は、選択ビットプレーン符号量カウント部203より供給される符号量に基づいて、選択ビットプレーンの候補の、マスタ画像(原画像)の画像データに対する圧縮率を算出し、それを目標圧縮率取得部204より供給された目標圧縮率と比較する。
そして、選択ビットプレーンの候補の圧縮率が目標圧縮率に達した時点(図12の例の場合、以下の式が成立した時点)で、選択ビットプレーン決定部205は、選択ビットプレーンの候補を、選択ビットプレーンとして正式に決定する。
目標圧縮率≦(1)乃至(9)の符号量の総和/マスタ画像のデータサイズ
目標圧縮率≧(1)乃至(10)の符号量の総和/マスタ画像のデータサイズ
部分デコード部111の制御部231は、以上のように、復号データのデータ量を調整する。
つまり、可逆エンコード部101、部分デコード部111、および非可逆エンコード部112は、それぞれ、係数データまたは符号語をその重要度の順に符号化または復号する。さらに、部分デコード部111および非可逆エンコード部112は、その重要度の順にデータの取捨選択を行い、データ量を調整する。
以上においては、1つのサブバンド内における走査方法について説明した。つまり、この場合、画像全体においては、各サブバンドが所定の順に1つずつ処理される(サブバンド毎に処理される)。
符号化および復号の走査順は、これ以外であってもよく、例えば、図14に示されるように、コンポーネント毎に処理されるような順でもよい。図14は、各ビット位置を、Y成分(輝度成分)の全てのサブバンドに渡って走査する場合の例を示す図である。
図14の例の場合、各サブバンドが、重要度に応じて(この例の場合、低域(0LL)から高域(3HH)に向かう順に)並べられている。また、各サブバンド内においては、各コードブロックが、重要度に応じて(この例の場合、CB0からCBnに向かう順に)並べられている。このように並べられたビットプレーンは、矢印に示されるように、ビット位置毎に、MSB側からLSB側に向かう順に処理される。従って、この場合、3段目の走査において、Y-0LLのビットプレーンだけでなく、Y-1HLやY-3HHのビットプレーンも処理される。
さらに、画像が複数のコンポーネントから構成されている場合、例えば、図15に示されるように、全てのコンポーネントを通して走査するようにしてもよい。図15は、各ビット位置を、Y成分、U成分、およびV成分の全てのコンポーネントに渡って走査する場合の例を示す図である。
図15の例の場合、Y成分(輝度成分)、U成分(色差成分)、およびV成分(色差成分)の各コンポーネントが、重要度に応じて(この例の場合、Y成分、U成分、V成分の順に)並べられている。また、各コンポーネント内においては、各サブバンドが、重要度に応じて(この例の場合、低域(0LL)から高域(3HH)に向かう順に)並べられている。さらに、各サブバンド内においては、各コードブロックが、重要度に応じて(この例の場合、CB0からCBnに向かう順に)並べられている。このように並べられたビットプレーンは、矢印に示されるように、ビット位置毎に、MSB側からLSB側に向かう順に処理される。従って、この場合、1段目の走査において、Y-0LLのビットプレーンだけでなく、U-0LLのビットプレーンも処理される。
より具体的に説明すると、EBCOT部132は、最初に、ゼロビットプレーンでないビットプレーンが存在する、MSBに最も近いビット位置において、Y成分の全てのサブバンド(0LLから3HHまで)内の全てのコードブロックを走査し、ゼロビットプレーンでないビットプレーンが存在する場合は、それを符号化する。EBCOT部132は、次に、同じビット位置において、U成分の全てのサブバンド(0LLから3HHまで)内の全てのコードブロックを走査し、ゼロビットプレーンでないビットプレーンが存在する場合は、それを符号化する。EBCOT部132は、さらに、同じビット位置において、V成分の全てのサブバンド(0LLから3HHまで)内の全てのコードブロックを走査し、ゼロビットプレーンでないビットプレーンが存在する場合は、それを符号化する。
V-3HHまで走査が終了すると、EBCOT部132は、次に、1つ下位のビット位置に移動し、そのビット位置について、同様の順で走査を続ける。
上述した図14においてはコンポーネント毎に各ビット位置を走査するように説明したが、この場合、画像が複数のコンポーネントから構成されているときは、各コンポーネントをその重要度順に走査する。つまり、例えば、図15の例のように、画像がY成分、U成分、およびV成分よりなり、この順に重要度が高い場合、まず、最も重要なY成分について処理が行われ、次にU成分について処理が行われ、最後に最も重要度の低いV成分について処理が行われるようにする。
また、上述した図13においてはサブバンド毎に各ビット位置を走査するように説明したが、この場合、各サブバンドをその重要度順に走査する。つまり、例えば、図14の例のように、画像が0LL乃至3HHのサブバンドにより構成されており、この順に重要度が高い場合、まず、最も重要な0LL成分について処理が行われ、次に、その次に重要な1LH成分について処理が行われ、以下同様に重要度の順に処理が行われ、最終的に最も重要度の低い3HHについて処理が行われるようにする。例えば、図16に示されるような、所定の順で各サブバンドが処理されるようにする。
なお、この走査順は予め定められている。つまり、各ビットプレーンの重要度は予め定められており、可逆エンコード部101、部分デコード部111、および非可逆エンコード部112は、この重要度について互いに共通の認識を持つ。
以上のような、符号化・復号処理の流れの例を以下に説明する。
最初に、図17のフローチャートを参照して、可逆エンコード部101による可逆符号化処理の流れの例を説明する。
可逆符号化処理が開始されると、ステップS101において、DCレベルシフト部121は、入力された画像データのDCレベルをシフトする。ステップS102において、ウェーブレット変換部122は、画像データをウェーブレット変換する。ステップS103において、コードブロック化部124は、重み付けされたウェーブレット係数をコードブロック単位で分割する。ステップS104において、ビットプレーン展開部125は、コードブロック毎の係数データをビットプレーンに展開する。ステップS105において、エントロピ符号化部126は、各ビットプレーンを、その重要度順にエントロピ符号化する。ステップS106において、ヘッダ生成部127およびパケット生成部128は、符号化されて得られた符号語をパケット化し、可逆符号化処理を終了する。
次に、図18のフローチャートを参照して、部分デコード部111により実行される部分デコード処理の流れの例を説明する。
部分デコード処理が開始されると、目標圧縮率取得部204は、ステップS201において、非可逆エンコード部112より目標圧縮率を取得する。ステップS202において、パケット解読部201は、入力された可逆圧縮ファイルのパケットを解読し、コードストリームを取得する。ステップS203において、EBCOT部202は、コードストリームを復号する。ステップS204において、選択ビットプレーン符号量カウント部203は、復号されて得られた係数(ビットプレーン)を保持する。ステップS205において、選択ビットプレーン符号量カウント部203は、保持しているビットプレーン群の中で最も重要なビットプレーンを選択ビットプレーンの候補に選択し、符号量を算出する。ステップS206において、選択ビットプレーン決定部205は、選択ビットプレーン符号量カウント部203によりカウントされた符号量に基づいて選択ビットプレーンの候補の、マスタ画像(原画像)の画像データに対する圧縮率を算出し、ステップS207において、その算出された圧縮率が、ステップS201の処理により取得された目標圧縮率以下であるか否かを判定する。
選択ビットプレーンの候補の圧縮率が目標圧縮率より大きい(選択ビットプレーンの候補の符号量が十分多くない)と判定した場合、選択ビットプレーン決定部205は、処理をステップS208に進める。ステップS208において、選択ビットプレーン符号量カウント部203は、保持しているビットプレーン群の中で次に重要なビットプレーンを選択ビットプレーンの候補に選択し、符号量を算出し、さらに処理をステップS206に戻し、それ以降の処理を繰り返す。つまり、制御部231(選択ビットプレーン符号量カウント部203および選択ビットプレーン決定部205)は、選択ビットプレーンの候補の圧縮率が目標圧縮率以下になるまで、ステップS206乃至ステップS208の各処理を繰り返し実行し、選択ビットプレーンの候補の符号量を増加させていく。
そして、ステップS207において、選択ビットプレーンの候補の圧縮率が目標圧縮率以下であると判定した場合、選択ビットプレーン決定部205は、処理をステップS209に進め、選択ビットプレーンを決定する。ステップS210において、コードブロック合成部206は、その選択ビットプレーンを用いてコードブロックを合成する。ステップS211において、ウェーブレット逆変換部208は、係数データをウェーブレット逆変換する。ステップS212において、DCレベル逆シフト部209は、画像データのDCレベルの逆シフトを行い、部分デコード処理を終了する。
次に、図19のフローチャートを参照して非可逆符号化処理の流れの例を説明する。
非可逆符号化処理が開始されると、ステップS301において、DCレベルシフト部121は、入力された画像データのDCレベルをシフトする。ステップS302において、ウェーブレット変換部322は、画像データをウェーブレット変換する。ステップS303において、量子化部301は、ウェーブレット係数に対して量子化を行う。ステップS304において、コードブロック化部124は、量子化係数をコードブロック単位で分割する。ステップS305において、ビットプレーン展開部125は、コードブロック毎の係数データをビットプレーンに展開する。ステップS306において、エントロピ符号化部326は、各ビットプレーンを、その重要度順にエントロピ符号化する。エントロピ符号化処理の詳細については後述する。ステップS307において、ヘッダ生成部127およびパケット生成部128は、符号化されて得られた符号語をパケット化する。ステップS308において、目標圧縮率供給部302は、エントロピ符号化部326において設定されている目標符号量に相当する目標圧縮率を部分デコード部111に供給し、非可逆符号化処理を終了する。
次に、図19のステップS306において実行されるエントロピ符号化処理の詳細な流れの例を、図20のフローチャートを参照して説明する。
エントロピ符号化処理が開始されると、制御部331は、ステップS331において、変数を初期化する。変数としては、例えば、符号化対象のコンポーネントNC={1,2,・・・,LC}、サブバンドNS={1,2,・・・,LS}、符号ブロックB、ビットプレーンC、符号量T(B,C,NC,NS)、および累積加算符号量Yがある。
ステップS332において、EBCOT部132は、係数のビットプレーン情報(ゼロビットプレーン情報も含む)を取得する。ステップS333において、制御部331は、変数Yの値を「0」に設定する。ステップS334において、EBCOT部132は、最も重要なビットプレーンを選択する。
ステップS335において、EBCOT部132は、選択したビットプレーンを符号化する。ステップS336において、符号量加算部333は、符号語の符号量T(B,C,NC,NS)を算出し、以下の式のように、変数Yにその符号量T(B,C,NC,NS)を加算する。
Y=Y+T(B,C,NC,NS)
ステップS337において、制御部331は、変数Yを参照し、符号化された符号量の累積値が目標符号量に達したか否かを判定する。変数Yの値(累積値)が目標符号量に達していないと判定した場合、制御部331は、処理をステップS338に進める。
ステップS338において、EBCOT部132は、同一ビット位置に未処理のビットプレーンが存在するか否かを判定し、存在すると判定した場合、処理をステップS339に進め、同一ビット位置の次に重要なビットプレーンを選択する。ビットプレーンを選択すると、EBCOT部132は、処理をステップS335に戻し、それ以降の処理を繰り返す。
また、ステップS338において、同一ビット位置に未処理のビットプレーンが存在しないと判定した場合、EBCOT部132は、処理をステップS340に進め、未処理のビットプレーンが存在するか否かを判定し、存在すると判定した場合、処理をステップS341に進める。ステップS341において、EBCOT部132は、次のビット位置の最も重要なビットプレーンを選択し、処理をステップS335に戻し、それ以降の処理を繰り返す。
ステップS337において、変数Yの値(累積値)が目標符号量に達したと判定した場合、制御部331は、エントロピ符号化処理を終了し、処理を図19のステップS306に戻し、ステップS307以降の処理を実行させる。また、ステップS340において、未処理のビットプレーンが存在しないと判定した場合、EBCOT部132は、エントロピ符号化処理を終了し、処理を図19のステップS306に戻し、ステップS307以降の処理を実行させる。
以上のような手順に従って、実際の画像に対して実験を行った結果を、図21の表に示す。なお、実験の各種条件は以下のとおりである。
・原画データ:4096×2160画素×10ビット×3(RGB)×24fps=6370Mbps
・テストシーケンス:Movie
・可逆圧縮結果(JPEG可逆モード):3469Mbps(原画の約54%)
・デコード画像:図1の非可逆エンコード結果のコードストリームを通常のJPEG2000非可逆デコーダでデコードした結果の画像
・非可逆エンコード後のビットレート:250Mbps
図21に示される表は、部分デコード時のビットレートとPSNR(Peak Signal-to-Noise Ratio)[dB]の関係を示すものである。
図21に示されるように、部分デコード時のビットレートを可逆のビットレート(3469Mbps)から徐々に下げていくと、それに従って、CPUのサイクル数が低減される。つまり、部分デコード時のビットレートを下げるほど、デコード処理の負荷が低減される。
このとき、部分デコード時のビットレートを下げるほど、非可逆エンコードファイルのデコード画像のPSNRは、低下する。つまり、非可逆エンコードファイルのデコード画像の画質が低下する。
しかしながら、部分デコード時のビットレートを、可逆レート(3469Mbps)のままとしたときと、後段の非可逆エンコードのビットレート250Mbpsと同一にしたときとの、非可逆エンコードファイルのデコード画像のPSNRの差は、36.89−37.38=0.49[dB]であり、その差は非常に小さい。それに比べて、CPUのサイクル数は、771/7105=0.108となり、約10分の1に低減される。なお、後段の非可逆エンコード時(250Mbps)のCPUサイクル数は、前段のデコード画像のビットレートの変化の影響を受けず、常に一定値(904サイクル)であった。
以上のように、部分デコード部111は、画質の劣化を低減させながら、可逆圧縮ファイルの復号の負荷を低減させることができる。換言すれば、非可逆トランスコード部102は、容易かつ適切に、可逆圧縮ファイルを非可逆圧縮ファイルに変換することができる。さらに、換言すれば、符号化装置100は、マスタ画像のデータサイズが大きくても、容易かつ適切に画像データを符号化することができる。
以上においては、部分デコード部111においてデコード画像に利用するビットプレーンを選択するように説明したが、これ以外にも、例えば、マスタ画像(原画像)のデータサイズが既知であることから、図22に示される例のように、切り捨てるビットプレーン(選択ビットプレーン以外のビットプレーン)を選択するようにしてもよい。この場合、部分デコード部111は、重要度の低い方から高いほうに向かう順で切り捨てるビットプレーン(以下、切り捨てビットプレーンと称する)を選択する。
図22は、切り捨てビットプレーンを選択する場合の走査順の例について説明する図である。図22においては、この選択順が矢印で示されている。つまり、図22の例の場合、LSBからMSBに向かう順で、切り捨てビットプレーンが選択される。最初に、(14)のビットプレーンが選択され、次に(13)のビットプレーンが選択される。そしてLSBのビットプレーンが全て選択されると次に1つ上のビット位置の、最も重要度の低いビットプレーン((10)のビットプレーン)が選択される。以下同様の手順で走査される。
部分デコード部111は、このように選択した、切り捨てビットプレーンの符号量を加算し、それをマスタ画像(原画像)の画像データのデータサイズより減算することで、切り捨てられないビットプレーン(つまり、選択ビットプレーン)の符号量(さらにマスタ画像(原画像)の画像データに対する圧縮率)を算出することができる。すなわち、部分デコード部111は、この場合も、選択ビットプレーンを選択するときと同様に、データ量の制御を行うことができる。
図23は、この場合の部分デコード部111の詳細な構成例を示すブロック図である。図23は、図12に対応する図である。図23に示されるように、この場合も、部分デコード部111は、図11の場合と基本的に同様の構成を有する。ただし、図23の場合の部分デコード部111は、制御部231の代わりに、制御部431を有する。
制御部431は、復号処理により生成されるベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を制御する。制御部431は、切り捨てビットプレーン符号量カウント部403、目標圧縮率取得部204、および切り捨てビットプレーン決定部405を有する。
切り捨てビットプレーン符号量カウント部403は、EBCOT部202より供給されるビットプレーンを蓄積し、重要度の低い方から高いほうに向かう順に切り捨てビットプレーンの候補として1つずつ選択し、選択した切り捨てビットプレーンの候補の符号量をカウントし、そのカウント値を、切り捨てビットプレーン決定部405に供給する。
切り捨てビットプレーン決定部405は、切り捨てビットプレーン符号量カウント部403より供給される符号量に基づいて、切り捨てないビットプレーン、つまり、選択ビットプレーンの、マスタ画像(原画像)の画像データに対する圧縮率を算出する。切り捨てビットプレーン決定部405は、その圧縮率と目標圧縮率取得部204により取得された目標圧縮率とを比較して、以下の式が満たされる場合、切り捨てビットプレーンの候補を切り捨てビットプレーンとして決定し切り捨てる(残りのビットプレーンを選択ビットプレーンとして後段の処理部に供給する)。
目標圧縮率≦(可逆圧縮符号量−(14)乃至(11)の符号量の総和)/マスタ画像のデータサイズ
目標圧縮率≧(可逆圧縮符号量−(14)乃至(10)の符号量の総和)/マスタ画像のデータサイズ
つまり、図22の例において、(14)のビットプレーンより選択を開始して、(10)のビットプレーンまで選択した時点で、切り捨てないビットプレーン(以下、残ビットプレーンと称する)の圧縮率が目標圧縮率以下になったことを示している。
切り捨てビットプレーン決定部405は、残ビットプレーンを選択ビットプレーンとしてコードブロック合成部206に供給する。
この場合の部分デコード処理の流れの例を図24のフローチャートを参照して説明する。この図24のフローチャートは、図18のフローチャートに対応する。
図24において、ステップS401乃至ステップS404の各処理は、図18のステップS201乃至ステップS204の各処理と同様に実行される。
ステップS405において、切り捨てビットプレーン符号量カウント部403は、保持しているビットプレーンの中で最も重要でないビットプレーンを切り捨てビットプレーンの候補に選択し、その符号量を算出する。ステップS406において、切り捨てビットプレーン決定部405は、切り捨てビットプレーン符号量カウント部403によりカウントされた符号量に基づいて残ビットプレーンの候補(すなわち、選択ビットプレーンの候補)の、マスタ画像(原画像)の画像データに対する圧縮率を算出し、ステップS407において、その算出された圧縮率が、ステップS401の処理により取得された目標圧縮率以下であるか否かを判定する。
残ビットプレーンの候補の圧縮率が目標圧縮率以下であると判定した場合、切り捨てビットプレーン決定部405は、処理をステップS408に進める。切り捨てビットプレーン符号量カウント部403は、保持しているビットプレーンの中で次に重要でないビットプレーンを切り捨てビットプレーンの候補に選択し、その符号量を算出し、さらに処理をステップS406に戻し、それ以降の処理を繰り返す。つまり、切り捨てビットプレーン決定部405は、残ビットプレーンの候補の圧縮率が目標圧縮率より大きくなるまで、ステップS406乃至ステップS408の各処理を繰り返し実行し、切り捨てビットプレーンの候補の符号量を増加させていく。
そして、ステップS407において、残ビットプレーンの候補の圧縮率が目標圧縮率より大きいと判定した場合、切り捨てビットプレーン決定部405は、処理をステップS409に進め、切り捨てビットプレーンを決定する。ステップS410乃至ステップS412の各処理は、図18のステップS210乃至ステップS212の各処理と同様に実行される。
以上のように、部分デコード部111は、より重要でないビットプレーンを切り捨てビットプレーンを選択することによって、より重要なビットプレーンを残ビットプレーン(選択ビットプレーン)として選択することもでき、上述した、重要なビットプレーンを直接選択する場合と同様の効果を得ることができる。
なお、以上においては、選択ビットプレーンの符号量を直接的または間接的にカウントするように説明したが、デコード処理をさらに簡易化するために、選択するビットプレーンの数を予め定めておくようにしてもよい。つまり、この場合、各ビットプレーンの符号量や目標圧縮率に関わらず、常に一定の数のビットプレーンが選択ビットプレーンとして選択される。
図25は、この場合の部分デコード部111の構成例を示すブロック図である。図25に示されるように、この場合の部分デコード部111は、基本的に図11の場合と同様の構成を有するが、図11の制御部231の代わりに制御部441を有する。つまり、この場合の部分デコード部111は、図11の選択ビットプレーン符号量カウント部203、目標圧縮率取得部204、および選択ビットプレーン決定部205の代わりに、選択ビットプレーン決定部435を有する。
制御部441の選択ビットプレーン決定部435は、EBCOT部202より供給されるビットプレーンを蓄積するとともに、その重要度順(重要度の高い方から低い方に向かう順)に、所定の数選択し、それらを選択ビットプレーンとしてコードブロック合成部206に供給する。なお、選択ビットプレーン決定部435は、選択ビットプレーンとして選択しなかった残ビットプレーンは切り捨てる。
この場合の部分デコード処理の流れの例を図26のフローチャートを参照して説明する。図26のフローチャートは、図18に対応するフローチャートである。
図26において、ステップS431乃至ステップS434の各処理は、図18のステップS201乃至ステップS204の各処理と同様に実行される。ステップS435において、選択ビットプレーン決定部435は、重要度の高いほうから順に、予め定められた所定数のビットプレーンを選択ビットプレーンとして選択し、決定する。ステップS436乃至ステップS438の各処理は、図21のステップS210乃至ステップS213の各処理と同様に実行される。
以上のように、部分デコード部111は、選択ビットプレーンの符号量をカウントする場合よりも、この場合の方が、より容易に復号処理を行うことができる。ただし、この場合、選択されるビットプレーンの数が画像の内容に関わらず一定であるため、入力画像によってエンコードの難易度が変化するのに対する柔軟性が低減する場合がある。例えば、予め定められているビットプレーンの選択数が、エンコードが容易な画像に対して多すぎ、エンコードの難易度が高い画像に対して少なすぎる結果になる場合がある。ただし、この誤差が許容範囲内に収まる場合は、デコード処理の負荷をさらに低減させる方法として有効である。
同様に、切り捨てビットプレーンを決定する場合も、切り捨てビットプレーンを符号量に基づいて決定するのではなく、予め定められた所定数のビットプレーンを選択するようにしてもよい。
図27は、この場合の部分デコード部111の構成例を示すブロック図である。図27に示されるように、この場合の部分デコード部111は、基本的に図23の場合と同様の構成を有するが、図23の制御部431の代わりに、制御部471を有する。つまり、この場合の部分デコード部111は、図23の切り捨てビットプレーン符号量カウント部403、目標圧縮率取得部204、および切り捨てビットプレーン決定部405の代わりに、切り捨てビットプレーン決定部465を有する。
切り捨てビットプレーン決定部465は、EBCOT部202より供給されるビットプレーンを、その重要度順(重要度の低い方から高い方に向かう順)に、所定の数選択し、それらを切り捨てビットプレーンとして切り捨て、残ビットプレーンをコードブロック合成部206に供給する。
この場合の部分デコード処理の流れの例を図28のフローチャートを参照して説明する。図28のフローチャートは、図24に対応するフローチャートである。
図28において、ステップS461乃至ステップS464の各処理は、図24のステップS401乃至ステップS404の各処理と同様に実行される。ステップS465において、切り捨てビットプレーン決定部465は、重要度の低いほうから順に、予め定められた所定数のビットプレーンを切り捨てる。ステップS466乃至ステップS468の各処理は、図24のステップS410乃至ステップS412の各処理と同様に実行される。
以上のように、部分デコード部111は、切り捨てビットプレーンの符号量をカウントする場合よりも、この場合の方が、より容易に復号処理を行うことができる。ただし、この場合、切り捨てられるビットプレーンの数が画像の内容に関わらず一定であるため、入力画像によってエンコードの難易度が変化するのに対する柔軟性が低減する場合がある。例えば、予め定められているビットプレーンの切り捨て数が、エンコードが容易な画像に対して少なすぎ、エンコードの難易度が高い画像に対して多すぎる結果になる場合がある。ただし、この誤差が許容範囲内に収まる場合は、デコード処理の負荷をさらに低減させる方法として有効である。
以上においては、非可逆トランスコード部が動画像を固定ビットレート(CBR(Constant Bit Rate))方式で非可逆エンコードする場合について説明したが、これに限らず、DCI規格書の定義に基づいて、非可逆トランスコード部が動画像を可変ビットレート(VBR(Variable Bit Rate))方式で非可逆エンコードするようにしてもよい。一般的に、映画においては、CG(Computer Graphics)や詳細なテキスチャが存在する画像から、ほとんど黒背景の画像など、多岐に渡る画像が使用される。言うまでもなく前者ではビットレートが高くなり、後者では低くなる。符号化装置が、このようなDCI規格に準拠する可変ビットレート方式の非可逆エンコードを用いてトランスコードを行う場合について、以下に説明する。
図29は、本発明を適用した符号化装置の他の構成例を示すブロック図である。図29に示される符号化装置500は、図2の符号化装置100と同様に、入力されるベースバンドの画像データを、一旦、JPEG2000の可逆圧縮方式により所定の圧縮率で圧縮符号化し、その後、圧縮されたコードストリームを、JPEG2000の非可逆方式で所望の圧縮率に圧縮符号化し、コードストリームとして出力する装置である。ただし、符号化装置500は、画像の内容に応じて符号化のビットレートを変更する可変ビットレート方式により非可逆エンコードを行う。
符号化装置500は、図29に示されるように、可逆エンコード部101および非可逆トランスコード部502を有する。
可逆エンコード部101は、上述したように、入力されたベースバンドの画像データを、符号化時に生成されるウェーブレット係数を重要度に応じて重み付けしながら、JPEG2000の可逆圧縮方式により所定の圧縮率で圧縮符号化し、データサイズを小さくしたコードストリームの可逆圧縮ファイルに変換する。
例えば、符号化装置500は、符号化装置100の場合と同様に、情報処理部103−1において、その可逆圧縮ファイルに対してメタ情報を付加する等の所定の処理を施す。また、例えば、符号化装置500は、その可逆圧縮ファイルを、所定のバスやネットワーク等の伝送路103−2を介して伝送させる。さらに、例えば、符号化装置500は、その可逆圧縮ファイルをハードディスクや半導体メモリ等の記憶部103−3に一旦保存し、所定のタイミングで読み出して出力する。
なお、符号化装置500は、例えば、可逆圧縮ファイルを、所定のバスやネットワーク等の伝送路103−2を介して伝送させるとともに、記憶部103−3に保存する等、上述した各処理を組み合わせて行ってもよい。
非可逆トランスコード部502は、可逆エンコード部101による可逆エンコード結果を参考にして、部分デコードのレート(Target_Rate)、すなわち、目標圧縮率を適宜決定する。
このような処理を行うために、非可逆トランスコード部502は、上述した部分デコード部111および非可逆エンコード部112の他に、さらに、コードブロック情報抽出部521および部分デコードレート制御部522を有する。
コードブロック情報抽出部521は、可逆エンコード部101により可逆エンコードされた画像のコードストリームから、符号化パラメータを抽出する。符号化パラメータは、画像データが符号化された符号化データのメタデータであり、符号化に関する情報等により構成される。コードブロック情報抽出部521は、このような符号化パラメータとして、例えばコードブロック毎の符号化パラメータであるコードブロック情報を、コードストリームより抽出する。
部分デコードレート制御部522は、そのコードブロック情報や、その他の情報に基づいて、部分デコード部111によるデコード処理の目標ビットレート(復号目標ビットレート)を決定する。
なお、以下においては、コードストリームにコードブロック単位で付加される符号化パラメータであるコードブロック情報を用いて復号目標ビットレートを決定する場合について説明するが、この符号化パラメータは、どのようなものであってもよく、コードブロック単位以外の情報であってももちろんよい。
非可逆トランスコード部502は、例えば、可逆エンコード部101により可逆エンコードされた画像のコードストリームの、有効ビットプレーン数に基づいて、復号目標ビットレートを決定する。つまり、この場合、非可逆トランスコード部502は、符号化パラメータ(コードブロック情報)として有効ビットプレーン数を用いる。
上述したように、ウェーブレット変換されて生成された各係数は、ビットプレーン展開される。ゼロビットプレーンは、符号化データの最上位ビット(MSB)からの各ビットプレーンを形成する係数の値が全て「0」であるビットプレーンを示し、ゼロビットプレーン数は、そのゼロビットプレーンの数(ビット数)を示す値である。有効ビットプレーンは、そのゼロビットプレーン以外のビットプレーンを示し、有効ビットプレーン数は、その有効ビットプレーンの数(ビット数)を示す。なお、ここでは、コードブロック毎にビットプレーン展開されるものとする。
図30は、その場合の、部分デコードレート制御部522の詳細な構成例を示すブロック図である。図30に示されるように、部分デコードレート制御部522は、ゼロビットプレーン数抽出部531、有効ビットプレーン数算出部532、総和算出部533、目標ビットレート取得部534、および目標ビットレート算出部535を有する。
ゼロビットプレーン数抽出部531は、各コードブロックについて、コードブロック情報抽出部521により抽出されたコードブロック情報(コードブロック毎の符号化パラメータ)から、ゼロビットプレーン数を抽出する。ゼロビットプレーン数を示す情報は、可逆エンコード時に符号化パラメータとして符号化データに付加されている。ゼロビットプレーン数抽出部531は、可逆エンコード部101による可逆エンコードの結果として得られたコードストリームより、このゼロビットプレーン数を示す情報を抽出する。ゼロビットプレーン数抽出部531は、抽出したゼロビットプレーン数を有効ビットプレーン数算出部532に供給する。
有効ビットプレーン数算出部532は、ゼロビットプレーン数抽出部531により抽出されたゼロビットプレーン数を用いて有効ビットプレーン数を算出する。
図31は、ビットプレーン展開された、ある(n+1)個のコードブロック(CB0,CB1,…,CBn)の有効ビットプレーン数を説明する図である。図31の例において、白地の部分がゼロビットプレーンを示し、斜線部分が有効ビットプレーンを示す。例えば、CB0のゼロビットプレーン数は「3」であり、CB1のゼロビットプレーン数は「2」である。
このように、ゼロビットプレーン数(有効ビットプレーン数)は、ビットプレーン展開される単位であるコードブロック毎に独立して決定される。上述したように、係数の、有効ビットプレーンの部分に対応する符号化データがコードストリームに含められ、ゼロビットプレーンの部分はコードストリームに含まれない。したがって、可逆エンコードされたコードストリームの符号量は、有効ビットプレーン数に依存する。つまり、有効ビットプレーン数が多いコードブロックほど、その符号量は多く、有効ビットプレーン数が少ないコードブロックほど、その符号量は少ない。換言すれば、符号化装置500は、有効ビットプレーン数に基づいて、画像データの符号化の難易度を、大まかに推定することができる。
図31に示されるように符号化データのビット深度をHとすると、有効ビットプレーンのビット数を示す有効ビットプレーン数(NUM_BP)は、ゼロビットプレーン数(NUM_ZB)を用いて、以下の式(1)のように表わすことができる。
有効ビットプレーン数算出部532は、各コードブロックについて、このような有効ビットプレーン数を算出し、算出結果を、総和算出部533に供給する。つまり、有効ビットプレーン数算出部532は、ウェーブレット係数の各サブバンドについて、有効ビットプレーン数をコードブロック毎に算出する。なお、ウェーブレット変換の分割数は任意であるが、以下においては、分割レベル3までウェーブレット変換が行われたものとする。つまり、サブバンドの構成は、図4に示される例と同様に、0LL乃至3HHとなる。
また、有効ビットプレーン数算出部532は、コンポーネントの各構成について(例えば、輝度Y、色差Cb、色差Crのそれぞれについて)、有効ビットプレーン数の算出を行う。コンポーネントの構成は任意であるが、以下においては、輝度Y、色差Cb、および色差Crにより構成される一般的なコンポーネントについて説明する。
総和算出部533は、有効ビットプレーン数算出部532において算出された有効ビットプレーン数の、ピクチャ毎の総和(ALL_NUM_BP)を、以下の式(2)のように算出する。
式(2)において、NUM_BP_Yは輝度Yの有効ビットプレーン数を示す。NUM_BP_Cbは色差Cbの有効ビットプレーン数を示す。NUM_BP_Crは色差Crの有効ビットプレーン数を示す。Σ(0LL,…,3HH)は、各構成(Y,Cb,Cr)の有効ビットプレーン数の、全サブバンド(0LL乃至3HH)についての総和を示す。
総和算出部533は、算出した有効ビットプレーン数のピクチャ毎の総和(ALL_NUM_BP)を、目標ビットレート算出部535に供給する。
目標ビットレート取得部534は、非可逆エンコード部112より供給される、非可逆エンコード部112により非可逆エンコードされて得られる符号化データのビットレートの目標値である非可逆符号化目標ビットレート(TR)を取得する。目標ビットレート取得部534は、取得した非可逆符号化目標ビットレート(TR)を目標ビットレート算出部535に供給する。
目標ビットレート算出部535は、総和算出部533から有効ビットプレーン数のピクチャ毎の総和(ALL_NUM_BP)を取得する。目標ビットレート算出部535は、また、目標ビットレート取得部534から非可逆符号化目標ビットレート(TR)を取得する。目標ビットレート算出部535は、さらに、予め定められた所定の有効ビットプレーン数を、基準値(Ref_ALL_NUM_BP)として取得する。なお、この基準値(Ref_ALL_NUM_BP)は、予め供給され、目標ビットレート算出部535が図示せぬ内蔵メモリ等に保持しておくようにしてもよい。
目標ビットレート算出部535は、これらの、有効ビットプレーン数のピクチャ毎の総和(ALL_NUM_BP)、非可逆符号化目標ビットレート(TR)、および基準値(Ref_ALL_NUM_BP)を用いて、部分デコード部111のデコード処理により得られる画像データのビットレートの目標値である復号目標ビットレート(Target_Rate)を求める。目標ビットレート算出部535は、例えば以下の式(3)のように、復号目標ビットレート(Target_Rate)を求める。
式(3)の例の場合、目標ビットレート算出部535は、有効ビットプレーン数のピクチャ毎の総和(ALL_NUM_BP)の、基準値(Ref_ALL_NUM_BP)との相対比に応じて、復号目標ビットレート(Target_Rate)を決定する。つまり、目標ビットレート算出部535は、有効ビットプレーン数の総和(ALL_NUM_BP)が基準値(Ref_ALL_NUM_BP)よりも大きい場合、可逆符号化結果のコードストリームの符号量が多いので、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より大きく設定する。
逆に、有効ビットプレーン数の総和(ALL_NUM_BP)が基準値(Ref_ALL_NUM_BP)よりも小さい場合、可逆符号化結果のコードストリームの符号量が少ないので、目標ビットレート算出部535は、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より小さく設定する。
このように、目標ビットレート算出部535は、有効ビットプレーン数の総和の、所定の基準値に対する相対比に基づいて復号目標ビットレートを決定するので、より容易かつ適切に、復号目標ビットレートを決定することができる。
なお、復号目標ビットレートは、どのような方法で求められるようにしてもよく、上述した式(3)以外の方法で求められるようにしてももちろんよい。
目標ビットレート算出部535は、このように算出した復号目標ビットレート(Target_Rate)を、部分デコード部111に供給する。部分デコード部111は、この復号目標ビットレートに基づいて、デコード処理により生成するベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を目標圧縮率として算出し、可逆圧縮ファイルのコードストリームを部分的に復号してベースバンドの画像データを生成する。
上述したように、部分デコード部111は、非可逆エンコード部112が非可逆符号化目標ビットレートを達成することができる範囲において、復号処理の処理量をより低減させるように、可逆圧縮ファイルのコードストリームを部分的に復号する(部分デコード処理を行う)。この場合、部分デコード部111は、その範囲を、上述した非可逆エンコード部112より供給される目標圧縮率の代わりに、目標ビットレート算出部535により算出された復号目標ビットレートに基づいて決定する。
部分デコード部111は、生成したベースバンドの画像データ(復号画像データ)を非可逆エンコード部112に供給する。
非可逆エンコード部112は、そのベースバンドの画像データをJPEG2000の非可逆圧縮方式により所望の圧縮率で圧縮符号化し、生成したコードストリームを出力する。なお、この場合、非可逆エンコード部112は、部分デコード部111に目標圧縮率を供給する代わりに、非可逆符号化目標ビットレートを部分デコードレート制御部522に供給する。
図32は、この場合の、非可逆トランスコード部502により実行されるトランスコード処理の流れの例を説明する。
情報処理部103−1、伝送路103−2、または、記憶部103−3より画像データが供給されると、非可逆トランスコード部502は、トランスコード処理を開始する。トランスコード処理が開始されると、コードブロック情報抽出部521は、図32のステップS501において、コードストリームよりコードブロック情報を抽出する。ステップS502において、部分デコードレート制御部522は、部分デコード処理の目標ビットレート(復号目標ビットレート)を決定する。この復号目標ビットレート決定処理の詳細については後述する。
復号目標ビットレートが決定されると、部分デコード部111は、ステップS503において、算出された復号目標ビットレートを用いて部分デコード処理を行い、復号画像データを生成する。この部分デコード処理は、図18のフローチャートを参照して説明した流れの例と同様に実行されるのでその説明を省略する。ただし、ステップS503の場合、部分デコード部111は、復号目標ビットレートから目標圧縮率を算出し、その目標圧縮率を用いて部分デコード処理を行う。
ステップS504において、非可逆エンコード部112は、非可逆符号化処理を行う。この非可逆符号化処理は、図19のフローチャートを参照して説明した流れの例と同様に実行されるので、その説明を省略する。ただし、ステップS504の場合、非可逆エンコード部112は、ステップS308において目標圧縮率を部分デコード部111に供給する代わりに、非可逆符号化目標ビットレートを部分デコードレート制御部522に供給する。
ステップS504の処理が終了されると、トランスコード処理は終了される。
非可逆トランスコード部502は、このようなトランスコード処理を、ピクチャ毎に繰り返す。
次に、図32のステップS502において実行される復号目標ビットレート決定処理の流れの例を、図33のフローチャートを参照して説明する。
復号目標ビットレート決定処理が開始されると、部分デコードレート制御部522のゼロビットプレーン数抽出部531は、ステップS521において、ゼロビットプレーン数を抽出する。ステップS522において、有効ビットプレーン数算出部532は、ゼロビットプレーン数から有効ビットプレーン数を算出する。ステップS523において、総和算出部533は、有効ビットプレーン数の、処理対象ピクチャの全コードブロック(全サブバンドおよびコンポーネントの全構成)についての総和を算出する。ステップS524において、目標ビットレート算出部535は、基準値を取得する。ステップS525において、目標ビットレート取得部534は、非可逆符号化目標ビットレートを取得する。
ステップS526において、目標ビットレート算出部535は、ステップS523において取得された有効ビットプレーン数の総和、ステップS524において取得された基準値、並びに、ステップS525において取得された非可逆符号化目標ビットレートを用いて、復号目標ビットレートを算出する。
ステップS527において、目標ビットレート算出部535は、ステップS526において算出した復号目標ビットレートを、部分デコード部111に供給する。
復号目標ビットレートが供給されると、部分デコードレート制御部522は、復号目標ビットレート決定処理を終了し、処理を図32のステップS502に戻し、ステップS503以降の処理を実行させる。
以上のように、部分デコードレート制御部522は、可逆エンコード部101による可逆エンコードの符号化パラメータ(有効ビットプレーン数)に基づいて復号目標ビットレートを求め、部分デコード部111は、その復号目標ビットレートを用いてデコード処理を行う。つまり、部分デコード部111は、可逆エンコード時の有効ビットプレーン数から、画像データの符号化の難易度を大まかに推定し、その難易度に応じて設定された復号目標ビットレートでデコード処理(部分デコード処理)を行う。したがって、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部502は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置500は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、図32に示されるトランスコード処理において、ステップS501およびステップS502の処理は並行して実行するようにしてもよい。つまり、例えば、コードブロック情報抽出部521がコードブロック情報を抽出する度に、部分デコードレート制御部522が、そのコードブロックについて、有効ビットプレーン数を求めるようにしてもよい。
また、以上においては、部分デコードレート制御部522が、デコード処理の目標値としてビットレート(復号目標ビットレート)を算出するように説明したが、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。その場合、部分デコード部111は、その目標値を情報の種類に応じて変換するだけで、基本的には、図18のフローチャートを参照して説明した場合と同様に部分デコード処理を行う。
また、同様に、非可逆エンコード部112より部分デコードレート制御部522に供給される情報もビットレート以外であっても良い。例えば、符号量や圧縮率などであってもよい。
さらに、以上においては、総和算出部533が、全てのコードブロックについての有効ビットプレーン数の総和を算出するように説明したが、これに限らず、総和算出部533が、ピクチャ内の一部のコードブロック(すなわち、代表とする所定のコードブロック)についてのみ、有効ビットプレーン数の総和を算出するようにし、目標ビットレート算出部535がその総和に基づいて復号目標ビットレートを算出するようにしてもよい。
次に、符号化パラメータの他の例を説明する。
非可逆トランスコード部502は、例えば、可逆エンコード部101により可逆エンコードされた画像のコードストリームの、コーディングパス数に基づいて、復号目標ビットレートを決定する。つまり、この場合、非可逆トランスコード部502は、符号化パラメータ(コードブロック情報)としてコーディングパス数を用いる。
コーディングパス(符号化パス)は、図8を参照して説明したように、コードブロック毎に行われる符号化の方法を示す。上述したように、コーディングパスには、Cleanup Pass(CP)、Significant Propagation Pass(SP)、およびMagnitude Refinement Pass(MR)がある。符号化においては、最上位ビット(MSB)からLSB側に向かう順に、上述した3つの符号化パスがCP,SP,MRの順に繰り返し適用されて、各ビットプレーンが符号化される。
部分デコードレート制御部522は、可逆エンコード部101による可逆エンコード時において適用された、これらのコーディングパスの数であるコーディングパス数に基づいて、画像データの符号化の難易度(必要な符号量)を大まかに推定する。なお、ここでは、コードブロック毎にビットプレーン展開されるものとする。
図34は、その場合の、部分デコードレート制御部522の詳細な構成例を示すブロック図である。図34に示されるように、部分デコードレート制御部522は、コーディングパス数抽出部541、総和算出部542、目標ビットレート取得部543、および目標ビットレート算出部544を有する。
コーディングパス数抽出部541は、各コードブロックについて、コードブロック情報抽出部521により抽出されたコードブロック情報(コードブロック毎の符号化パラメータ)から、コーディングパス数を抽出する。
図35は、ビットプレーン展開された、ある(n+1)個のコードブロック(CB0,CB1,…,CBn)のコーディングパス数(NUM_CP)を説明する図である。図35の例において、白地の部分がゼロビットプレーンを示し、斜線部分が有効ビットプレーンを示す。各有効ビットプレーン(斜線部分)は、図35に示されるように、複数のコーディングパスにより符号化されている。図35の例の場合、コードブロックCBnの有効ビットプレーンで符号化対象になるコーディングパスは、MSB方向から順番に、CP→SP→MR→CP→SP→MR→CP→SPである。従って、この時のコーディングパス数(NUM_CP)は8である。
このようなコーディングパス数(NUM_CP)を示す情報は、可逆エンコード時に符号化パラメータとして符号化データのパケットヘッダに記述されている。従って、この場合、コードブロック情報抽出部521は、そのパケットヘッダをコードブロック情報として抽出し、コーディングパス数抽出部541は、その抽出されたパケットヘッダ情報に記述されるコーディングパス数を参照(抽出)するだけでよい。コーディングパス数抽出部541は、抽出したコーディングパス数(NUM_CP)を総和算出部542に供給する。
総和算出部542は、コーディングパス数抽出部541において抽出されたコーディングパス数の、ピクチャ毎の総和(ALL_NUM_CP)を、以下の式(4)のように算出する。
式(4)において、NUM_CP_Yは輝度Yのコーディングパス数を示す。NUM_CP_Cbは色差Cbのコーディングパス数を示す。NUM_CP_Crは色差Crのコーディングパス数を示す。Σ(0LL,…,3HH)は、各構成(Y,Cb,Cr)のコーディングパス数の、全サブバンド(0LL乃至3HH)についての総和を示す。なお、上述した有効ビットプレーン数の場合と同様に、画像データのコンポーネントは輝度Y、色差Cb、および色差Crにより構成され、符号化時のウェーブレット変換は分割レベル3まで行われるものとする。
総和算出部542は、算出したコーディングパス数のピクチャ毎の総和(ALL_NUM_CP)を、目標ビットレート算出部544に供給する。
目標ビットレート取得部543は、目標ビットレート取得部534と同様に、非可逆エンコード部112より非可逆符号化目標ビットレート(TR)を取得する。目標ビットレート取得部543は、取得した非可逆符号化目標ビットレート(TR)を目標ビットレート算出部544に供給する。
目標ビットレート算出部544は、総和算出部542からコーディングパス数のピクチャ毎の総和(ALL_NUM_CP)を取得する。目標ビットレート算出部544は、また、目標ビットレート取得部543から非可逆符号化目標ビットレート(TR)を取得する。目標ビットレート算出部544は、さらに、予め定められた所定のコーディングパス数を、基準値(Ref_ALL_NUM_CP)として取得する。なお、この基準値(Ref_ALL_NUM_CP)は、予め供給され、目標ビットレート算出部544が図示せぬ内蔵メモリ等に保持しておくようにしてもよい。
目標ビットレート算出部544は、これらの、有効ビットプレーン数のピクチャ毎の総和(ALL_NUM_CP)、非可逆符号化目標ビットレート(TR)、および基準値(Ref_ALL_NUM_CP)を用いて、部分デコード部111の復号目標ビットレート(Target_Rate)を求める。目標ビットレート算出部544は、例えば以下の式(5)のように、復号目標ビットレート(Target_Rate)を求める。
式(5)の例の場合、目標ビットレート算出部544は、コーディングパス数のピクチャ毎の総和(ALL_NUM_CP)の、基準値(Ref_ALL_NUM_CP)との相対比に応じて、復号目標ビットレート(Target_Rate)を決定する。つまり、目標ビットレート算出部544は、コーディングパス数の総和(ALL_NUM_CP)が基準値(Ref_ALL_NUM_CP)よりも大きい場合、可逆符号化結果のコードストリームの符号量が多いので、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より大きく設定する。
逆に、コーディングパス数の総和(ALL_NUM_CP)が基準値(Ref_ALL_NUM_CP)よりも小さい場合、可逆符号化結果のコードストリームの符号量が少ないので、目標ビットレート算出部544は、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より小さく設定する。
このように、目標ビットレート算出部544は、コーディングパス数の総和の、所定の基準値に対する相対比に基づいて復号目標ビットレートを決定するので、より容易かつ適切に、復号目標ビットレートを決定することができる。
なお、復号目標ビットレートは、どのような方法で求められるようにしてもよく、上述した式(5)以外の方法で求められるようにしてももちろんよい。
目標ビットレート算出部544は、このように算出した復号目標ビットレート(Target_Rate)を、部分デコード部111に供給する。部分デコード部111は、この復号目標ビットレートに基づいて、デコード処理により生成するベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を目標圧縮率として算出し、可逆圧縮ファイルのコードストリームを部分的に復号してベースバンドの画像データを生成する。部分デコード部111は、生成したベースバンドの画像データ(復号画像データ)を非可逆エンコード部112に供給する。
非可逆エンコード部112は、そのベースバンドの画像データをJPEG2000の非可逆圧縮方式により所望の圧縮率で圧縮符号化し、生成したコードストリームを出力する。なお、この場合、非可逆エンコード部112は、部分デコード部111に目標圧縮率を供給する代わりに、非可逆符号化目標ビットレートを部分デコードレート制御部522に供給する。
次に、この場合に図32のステップS502において実行される復号目標ビットレート決定処理の流れの例を、図36のフローチャートを参照して説明する。
復号目標ビットレート決定処理が開始されると、部分デコードレート制御部522のコーディングパス数抽出部541は、ステップS541において、コーディングパス数を抽出する。ステップS542において、総和算出部542は、コーディングパス数の、処理対象ピクチャの全コードブロック(全サブバンドおよびコンポーネントの全構成)についての総和を算出する。ステップS543において、目標ビットレート算出部544は、基準値を取得する。ステップS544において、目標ビットレート取得部543は、非可逆符号化目標ビットレートを取得する。
ステップS545において、目標ビットレート算出部544は、ステップS542において算出されたコーディングパス数の総和、ステップS543において取得された基準値、並びに、ステップS544において取得された非可逆符号化目標ビットレートを用いて、復号目標ビットレートを算出する。
ステップS546において、目標ビットレート算出部544は、ステップS545におて算出した復号目標ビットレートを、部分デコード部111に供給する。
復号目標ビットレートが供給されると、部分デコードレート制御部522は、復号目標ビットレート決定処理を終了し、処理を図32のステップS502に戻し、ステップS503以降の処理を実行させる。
以上のように、部分デコードレート制御部522は、可逆エンコード部101による可逆エンコードの符号化パラメータ(コーディングパス数)に基づいて復号目標ビットレートを求め、部分デコード部111は、その復号目標ビットレートを用いてデコード処理を行う。つまり、部分デコード部111は、可逆エンコード時のコーディングパス数から、画像データの符号化の難易度を大まかに推定し、その難易度に応じて設定された復号目標ビットレートでデコード処理(部分デコード処理)を行う。したがって、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部502は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置500は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、この場合も図32に示されるトランスコード処理において、ステップS501およびステップS502の処理は並行して実行するようにしてもよい。
また、以上においては、部分デコードレート制御部522が、デコード処理の目標値としてビットレート(復号目標ビットレート)を算出するように説明したが、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。さらに、同様に、非可逆エンコード部112より部分デコードレート制御部522に供給される情報もビットレート以外であっても良い。例えば、符号量や圧縮率などであってもよい。
また、以上においては、総和算出部542が、全てのコードブロックについてのコーディングパス数の総和を算出するように説明したが、これに限らず、総和算出部542が、ピクチャ内の一部のコードブロック(すなわち、代表とする所定のコードブロック)についてのみ、コーディングパス数の総和を算出するようにし、目標ビットレート算出部544がその総和に基づいて復号目標ビットレートを算出するようにしてもよい。
次に、符号化パラメータの、さらに他の例を説明する。
非可逆トランスコード部502は、例えば、可逆エンコード部101により可逆エンコードされた画像のコードストリームの、非ゼロビットプレーン数に基づいて、復号目標ビットレートを決定する。つまり、この場合、非可逆トランスコード部502は、符号化パラメータ(コードブロック情報)として非ゼロビットプレーン数を用いる。
非ゼロビットプレーンは、上述した有効ビットプレーンから、その有効ビットプレーンに含まれる、全ての係数が「0」で構成されるゼロ係数ビットプレーンを除いたものを示す。つまり、非ゼロビットプレーンは、有効ビットプレーンの内、値が「1」の係数を含むビットプレーンである。非ゼロビットプレーン数は、各コードブロックの、この非ゼロビットプレーンの数(ビット数)を示す。ゼロ係数ビットプレーン数は、各コードブロックのゼロ係数ビットプレーンの数(ビット数)を示す。
部分デコードレート制御部522は、可逆エンコード部101による可逆エンコード時の、非ゼロビットプレーン数に基づいて、画像データの符号化の難易度(必要な符号量)を大まかに推定する。なお、ここでは、コードブロック毎にビットプレーン展開されるものとする。
図37は、その場合の、部分デコードレート制御部522の詳細な構成例を示すブロック図である。図37に示されるように、部分デコードレート制御部522は、ゼロ係数ビットプレーン数算出部561、非ゼロビットプレーン数算出部562、総和算出部563、目標ビットレート取得部564、および目標ビットレート算出部565を有する。
ゼロ係数ビットプレーン数算出部561は、各コードブロックについて、コードブロック情報抽出部521により抽出されたコードブロック情報(コードブロック毎の符号化パラメータ)から、ゼロ係数ビットプレーン数を抽出する。ゼロ係数ビットプレーン数は、実際に符号化データを参照して探すしかない。したがって、この場合、コードブロック情報抽出部521は、可逆符号化された符号化データを参照し、ゼロ係数ビットプレーンを探索して検出する。ゼロ係数ビットプレーン数算出部561は、その検出回数をカウントし、各コードブロックのゼロ係数ビットプレーン数を算出する。ゼロ係数ビットプレーン数算出部561は、算出したゼロ係数ビットプレーン数を非ゼロビットプレーン数算出部562に供給する。
非ゼロビットプレーン数算出部562は、ゼロ係数ビットプレーン数算出部561により算出されたゼロ係数ビットプレーン数を用いて非ゼロビットプレーン数を算出する。
図38は、ビットプレーン展開された、ある(n+1)個のコードブロック(CB0,CB1,…,CBn)の有効ビットプレーンの構成を説明する図である。図37の例において、白地の部分がゼロビットプレーンを示し、斜線部分が有効ビットプレーンを示す。各有効ビットプレーン(斜線部分)は、図38に示されるように、ゼロ係数ビットプレーン(Zero)と非ゼロビットプレーン(Non Zero)により構成される。図38の例の場合、コードブロックCBnの有効ビットプレーンは、MSB方向から順番に、Non Zero→Zero→Non Zero→Zero→Non Zero→Non Zero→Zero→Zeroである。従って、この時の非ゼロビットプレーン数(NUM_NONZERO_BP)は、有効ビットプレーン数(NUM_BP)とゼロ係数ビットプレーン数(NUM_ZERO_BP)との差、すなわち、「4」である。
このように、非ゼロビットプレーン数は、ビットプレーン展開される単位であるコードブロック毎に独立して決定される。有効ビットプレーンからゼロ係数ビットプレーンを除くことにより、可逆エンコードされたコードストリームの符号量をより適切に表わすことができる。つまり、符号化装置500は、非ゼロビットプレーン数に基づいて、画像データの符号化の難易度を、大まかに(有効ビットプレーン数を用いる場合よりは正確に)推定することができる。
非ゼロビットプレーン数算出部562は、各コードブロックについて、このような非ゼロビットプレーン数を算出し、算出結果を、総和算出部563に供給する。つまり、非ゼロビットプレーン数算出部562は、ウェーブレット係数の各サブバンドについて、非ゼロビットプレーン数をコードブロック毎に算出する。なお、ウェーブレット変換の分割数は任意であるが、以下においては、分割レベル3までウェーブレット変換が行われたものとする。つまり、サブバンドの構成は、図4に示される例と同様に、0LL乃至3HHとなる。
また、非ゼロビットプレーン数算出部562は、コンポーネントの各構成について(例えば、輝度Y、色差Cb、色差Crのそれぞれについて)、非ゼロビットプレーン数の算出を行う。コンポーネントの構成は任意であるが、以下においては、輝度Y、色差Cb、および色差Crにより構成される一般的なコンポーネントについて説明する。
総和算出部563は、非ゼロビットプレーン数算出部562において算出された有効ビットプレーン数の、ピクチャ毎の総和(ALL_NUM_NONZERO_BP)を、以下の式(6)のように算出する。
式(6)において、NUM_NONZERO_BP_Yは輝度Yの非ゼロビットプレーン数を示す。NUM_NONZERO_BP_Cbは色差Cbの非ゼロビットプレーン数を示す。NUM_NONZERO_BP_Crは色差Crの非ゼロビットプレーン数を示す。Σ(0LL,…,3HH)は、各構成(Y,Cb,Cr)の非ゼロビットプレーン数の、全サブバンド(0LL乃至3HH)についての総和を示す。
総和算出部563は、算出した非ゼロビットプレーン数のピクチャ毎の総和(ALL_NUM_NONZERO_BP)を、目標ビットレート算出部565に供給する。
目標ビットレート取得部564は、非可逆エンコード部112より供給される非可逆符号化目標ビットレート(TR)を取得する。目標ビットレート取得部564は、取得した非可逆符号化目標ビットレート(TR)を目標ビットレート算出部565に供給する。
目標ビットレート算出部565は、総和算出部563から非ゼロビットプレーン数のピクチャ毎の総和(ALL_NUM_NONZERO_BP)を取得する。目標ビットレート算出部565は、また、目標ビットレート取得部564から非可逆符号化目標ビットレート(TR)を取得する。目標ビットレート算出部565は、さらに、予め定められた所定の非ゼロビットプレーン数を、基準値(Ref_ALL_NUM_NONZERO_BP)として取得する。なお、この基準値(Ref_ALL_NUM_NONZERO_BP)は、予め供給され、目標ビットレート算出部565が図示せぬ内蔵メモリ等に保持しておくようにしてもよい。
目標ビットレート算出部565は、これらの、非ゼロビットプレーン数のピクチャ毎の総和(ALL_NUM_NONZERO_BP)、非可逆符号化目標ビットレート(TR)、および基準値(Ref_ALL_NUM_NONZERO_BP)を用いて、部分デコード部111のデコード処理により得られる画像データのビットレートの目標値である復号目標ビットレート(Target_Rate)を求める。目標ビットレート算出部565は、例えば以下の式(7)のように、復号目標ビットレート(Target_Rate)を求める。
式(7)の例の場合、目標ビットレート算出部565は、非ゼロビットプレーン数のピクチャ毎の総和(ALL_NUM_NONZERO_BP)の、基準値(Ref_ALL_NUM_NONZERO_BP)との相対比に応じて、復号目標ビットレート(Target_Rate)を決定する。つまり、目標ビットレート算出部565は、非ゼロビットプレーン数の総和(ALL_NUM_NONZERO_BP)が基準値(Ref_ALL_NUM_NONZERO_BP)よりも大きい場合、可逆符号化結果のコードストリームの符号量が多いので、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より大きく設定する。
逆に、非ゼロビットプレーン数の総和(ALL_NUM_NONZERO_BP)が基準値(Ref_ALL_NUM_NONZERO_BP)よりも小さい場合、可逆符号化結果のコードストリームの符号量が少ないので、目標ビットレート算出部565は、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より小さく設定する。
このように、目標ビットレート算出部565は、有効ビットプレーン数の総和の、所定の基準値に対する相対比に基づいて復号目標ビットレートを決定するので、より容易かつ適切に、復号目標ビットレートを決定することができる。
なお、復号目標ビットレートは、どのような方法で求められるようにしてもよく、上述した式(7)以外の方法で求められるようにしてももちろんよい。
目標ビットレート算出部565は、このように算出した復号目標ビットレート(Target_Rate)を、部分デコード部111に供給する。部分デコード部111は、この復号目標ビットレートに基づいて、デコード処理により生成するベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を目標圧縮率として算出し、可逆圧縮ファイルのコードストリームを部分的に復号してベースバンドの画像データを生成する。部分デコード部111は、生成したベースバンドの画像データ(復号画像データ)を非可逆エンコード部112に供給する。
非可逆エンコード部112は、そのベースバンドの画像データをJPEG2000の非可逆圧縮方式により所望の圧縮率で圧縮符号化し、生成したコードストリームを出力する。なお、この場合、非可逆エンコード部112は、部分デコード部111に目標圧縮率を供給する代わりに、非可逆符号化目標ビットレートを部分デコードレート制御部522に供給する。
次に、この場合の、図32のステップS502において実行される復号目標ビットレート決定処理の流れの例を、図39のフローチャートを参照して説明する。
復号目標ビットレート決定処理が開始されると、部分デコードレート制御部522のゼロ係数ビットプレーン数算出部561は、ステップS561において、ゼロ係数ビットプレーン数を算出する。ステップS562において、非ゼロビットプレーン数算出部562は、ゼロ係数ビットプレーン数から非ゼロビットプレーン数を算出する。ステップS563において、総和算出部563は、非ゼロビットプレーン数の、処理対象ピクチャの全コードブロック(全サブバンドおよびコンポーネントの全構成)についての総和を算出する。ステップS564において、目標ビットレート算出部565は、基準値を取得する。ステップS565において、目標ビットレート取得部564は、非可逆符号化目標ビットレートを取得する。
ステップS566において、目標ビットレート算出部565は、ステップS563において取得された非ゼロビットプレーン数の総和、ステップS564において取得された基準値、並びに、ステップS565において取得された非可逆符号化目標ビットレートを用いて、復号目標ビットレートを算出する。
ステップS567において、目標ビットレート算出部565は、ステップS566におて算出した復号目標ビットレートを、部分デコード部111に供給する。
復号目標ビットレートが供給されると、部分デコードレート制御部522は、復号目標ビットレート決定処理を終了し、処理を図32のステップS502に戻し、ステップS503以降の処理を実行させる。
以上のように、部分デコードレート制御部522は、可逆エンコード部101による可逆エンコードの符号化パラメータ(非ゼロビットプレーン数)に基づいて復号目標ビットレートを求め、部分デコード部111は、その復号目標ビットレートを用いてデコード処理を行う。つまり、部分デコード部111は、可逆エンコード時の非ゼロビットプレーン数から、画像データの符号化の難易度を大まかに推定し、その難易度に応じて設定された復号目標ビットレートでデコード処理(部分デコード処理)を行う。したがって、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部502は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置500は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、この場合も、図32に示されるトランスコード処理において、ステップS501およびステップS502の処理は並行して実行するようにしてもよい。また、この場合も、部分デコードレート制御部522が、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。さらに、同様に、非可逆エンコード部112より部分デコードレート制御部522に供給される情報もビットレート以外であっても良い。
また、以上においては、総和算出部563が、全てのコードブロックについての非ゼロビットプレーン数の総和を算出するように説明したが、これに限らず、総和算出部563が、ピクチャ内の一部のコードブロック(すなわち、代表とする所定のコードブロック)についてのみ、非ゼロビットプレーン数の総和を算出するようにし、目標ビットレート算出部565がその総和に基づいて復号目標ビットレートを算出するようにしてもよい。
以上に、復号目標ビットレートを算出する方法として、有効ビットプレーン数を用いる第1の方法、コーディングパス数を用いる第2の方法、および、非ゼロビットプレーン数を用いる第3の方法の、3つの方法を説明した。
これらの3つの方法のうち、第2の方法においては、パケットヘッダを参照するだけでコーディングパス数を得ることができる。また、コーディングパス数は符号量に対応する。したがって、第2の方法は、一般的に、他の方法と比べて最も容易に実現可能であり、かつ、復号目標ビットレートとして最も適切な値を求めることができる(必要な符号量を最も適切に見積もることができる)。
これに対して、第1の方法は、ゼロビットプレーン数から有効ビットプレーン数を求めるだけなので、一般的に、第3の方法よりは容易に実行可能であるが、第2の方法よりは処理が複雑になる。また、第1の方法の場合、有効ビットプレーンの実際の符号量は考慮しないので、一般的に他の方法よりも、復号目標ビットレートとして最も大まかな値しか求めることができない(必要な符号量の見積もり精度が最も低い)。
これらに対して、第3の方法は、符号化データを全て参照する必要があるので、一般的に他の方法より処理が複雑になる。ただし、有効ビットプレーン内の符号量(非ゼロビットプレーン数)も考慮するので、第3の方法は、一般的に、復号目標ビットレートとして第1の方法よりも適切な値を求めることができる(第1の方法の場合よりも、必要な符号量を適切に見積もることができる)。
実際には、例えばハードウェアの処理能力や、処理される画像データの特性等、様々な条件に応じて、より適切な方法を選択し適用するのが望ましい。この復号目標ビットレートを算出する方法は、予め定められていてもよいし、トランスコード処理を行う際に複数の方法の中から選択するようにしてもよい。
なお、以上においては、部分デコードレート制御部522が、符号化パラメータを基準値と比較し、その相対比に基づいて復号目標ビットレートを算出するように説明したが、これ以外にも、例えば、部分デコードレート制御部522が、予め用意された所定のテーブル情報を参照することにより、符号化パラメータから復号目標ビットレートを求めるようにしてもよい。
図40は、テーブル情報を用いて有効ビットプレーン数から復号目標ビットレートを求める場合の、部分デコードレート制御部522の詳細な構成例を示すブロック図である。図40に示されるように、部分デコードレート制御部522は、図30に示される場合と同様に、ゼロビットプレーン数抽出部531、有効ビットプレーン数算出部532、および総和算出部533を有し、さらに、図30の目標ビットレート取得部534および目標ビットレート算出部535の代わりに、テーブル情報保持部634、目標ビットレート決定部635、および補間処理部636を有する。
テーブル情報保持部634は、1ピクチャ分の有効ビットプレーン数の総和と、復号目標ビットレートとの対応関係を示すテーブル情報を保持しており、そのテーブル情報を適宜目標ビットレート決定部635に提供する。
図41は、テーブル情報保持部634が保持するテーブル情報の例を示す図である。図41に示されるテーブル情報601は、1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)と、復号目標ビットレート(Target_Rate)との対応関係を示すテーブル情報である。このテーブル情報601には、1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)の代表値と、その代表値に対応する復号目標ビットレート(Target_Rate)が示されている。
図41の例の場合、テーブル情報601には、1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)の代表値として、「〜50(50以下)」、「100」、「500」、「1000」、「1500」、「1800」、および「2000〜(2000以上)」が示されている。また、それらの代表値のそれぞれに対応する復号目標ビットレート(Target_Rate)として、「50Mbps」、「100Mbps」、「200Mbps」、「250Mbps」、「275Mbps」、「300Mbps」、および「350Mbps」が示されている。なお、基準値(Ref_ALL_NUM_BP)は任意であるが、図41の例においては「1000」に設定されている。
目標ビットレート決定部635は、このテーブル情報601を参照し、1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)から、その代表値に対応する復号目標ビットレート(Target_Rate)を求める。例えば、1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)が「1000」であるとすると、目標ビットレート決定部635は、図41のテーブル情報601を参照することにより、復号目標ビットレート(Target_Rate)を「250Mbps」に決定する。
補間処理部636は、目標ビットレート決定部635に制御されてテーブル情報保持部634が保持するテーブル情報601の補間処理を行う。例えば、総和算出部533において算出された1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)の値が、テーブル情報601に示される代表値でない場合が考えられる。このような場合、目標ビットレート決定部は、テーブル情報601を参照しても、その1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)に対応する適切な復号目標ビットレート(Target_Rate)を求めることができない。そこで、目標ビットレート決定部635は、補間処理部636にテーブル情報601の補間処理を実行させ、その1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)に対応する復号目標ビットレート(Target_Rate)を求める。
この補間処理は、どのような方法であってもよい。例えば、復号目標ビットレート(Target_Rate)が線形的に変化するものとしてもよい。つまり、補間処理部636が、テーブル情報601に含まれる代表値と、総和算出部533により算出された1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)の値との関係に基づいて、代表値に対応する復号目標ビットレート(Target_Rate)を線形的に変化させることにより、総和算出部533により算出された1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)に対応する復号目標ビットレート(Target_Rate)を求めるようにしてもよい。
また、例えば、復号目標ビットレート(Target_Rate)が代表値において階段状に変化するものとしてもよい。つまり、補間処理部636が、総和算出部533により算出された1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)に対応する復号目標ビットレート(Target_Rate)として、テーブル情報601に含まれる、その総和算出部533により算出された1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)より小さい代表値の中で最も大きな代表値に対応する復号目標ビットレート(Target_Rate)を適用するようにしてもよい。また、逆に、補間処理部636が、総和算出部533により算出された1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)に対応する復号目標ビットレート(Target_Rate)として、テーブル情報601に含まれる、その総和算出部533により算出された1ピクチャ分の有効ビットプレーン数の総和(ALL_NUM_BP)より大きい代表値の中で最も小さな代表値に対応する復号目標ビットレート(Target_Rate)を適用するようにしてもよい。
補間処理部636は、求めた復号目標ビットレート(Target_Rate)を目標ビットレート決定部635に供給する。目標ビットレート決定部635は、求めた復号目標ビットレート(Target_Rate)を部分デコード部111に供給する。
この場合の、図32のステップS502において実行される復号目標ビットレート決定処理の流れの例を、図42のフローチャートを参照して説明する。
復号目標ビットレート決定処理が開始されると、部分デコードレート制御部522のゼロビットプレーン数抽出部531は、ステップS621において、ゼロビットプレーン数を抽出する。ステップS622において、有効ビットプレーン数算出部532は、ゼロビットプレーン数から有効ビットプレーン数を算出する。ステップS623において、総和算出部533は、有効ビットプレーン数の、処理対象ピクチャの全コードブロック(全サブバンドおよびコンポーネントの全構成)についての総和を算出する。
ステップS624において、目標ビットレート算出部635は、テーブル情報保持部634により保持されるテーブル情報601を参照し、ステップS623において算出された1ピクチャ分の有効ビットプレーン数の総和に対応する復号目標ビットレートを決定する。このとき、補間処理部636は、必要に応じてテーブル情報601の補間処理を行う。
ステップS625において、目標ビットレート算出部635は、ステップS624におて算出した復号目標ビットレートを、部分デコード部111に供給する。
復号目標ビットレートが供給されると、部分デコードレート制御部522は、復号目標ビットレート決定処理を終了し、処理を図32のステップS502に戻し、ステップS503以降の処理を実行させる。
以上のように、部分デコードレート制御部522は、テーブル情報601を用いることにより、より容易に可逆エンコード部101による可逆エンコードの符号化パラメータ(有効ビットプレーン数)から復号目標ビットレートを求め、部分デコード部111は、その復号目標ビットレートを用いてデコード処理を行う。つまり、部分デコード部111は、可逆エンコード時の有効ビットプレーン数に応じた復号目標ビットレートでデコード処理(部分デコード処理)を行う。したがって、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部502は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置500は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、以上においては、部分デコードレート制御部522が、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。また、同様に、非可逆エンコード部112より部分デコードレート制御部522に供給される情報もビットレート以外であっても良い。
さらに、総和算出部533が、ピクチャ内の一部のコードブロック(すなわち、代表とする所定のコードブロック)についてのみ、有効ビットプレーン数の総和を算出するようにし、目標ビットレート算出部635がその総和に基づいて復号目標ビットレートを算出するようにしてもよい。
なお、符号化パラメータ(コードブロック情報)としてコーディングパス数が用いられる場合も、上述した有効ビットプレーン数の場合と同様に、テーブル情報を用いて復号目標ビットレートが決定されるようにしてもよい。
図43は、テーブル情報を用いてコーディングパス数から復号目標ビットレートを求める場合の、部分デコードレート制御部522の詳細な構成例を示すブロック図である。図43に示されるように、部分デコードレート制御部522は、図34に示される場合と同様に、コーディングパス数抽出部541および総和算出部542を有し、さらに、図34の目標ビットレート取得部543および目標ビットレート算出部544の代わりに、テーブル情報保持部643、目標ビットレート決定部644、および補間処理部645を有する。
テーブル情報保持部643は、1ピクチャ分のコーディングパス数の総和と、復号目標ビットレートとの対応関係を示すテーブル情報を保持しており、そのテーブル情報を適宜目標ビットレート決定部644に提供する。このテーブル情報の構成は、図41に示される有効ビットプレーン数の場合のテーブル情報601と基本的に同様であり、1ピクチャ分のコーディングパス数の総和(ALL_NUM_CP)の代表値と、その代表値に対応する復号目標ビットレート(Target_Rate)により構成される。
目標ビットレート決定部644は、このテーブル情報を参照し、1ピクチャ分のコーディングパス数の総和(ALL_NUM_CP)から、その代表値に対応する復号目標ビットレート(Target_Rate)を求める。
補間処理部645は、目標ビットレート決定部644に制御されてテーブル情報保持部643が保持するテーブル情報の補間処理を行う。この補間処理は、上述した有効ビットプレーン数の場合と同様に、どのような方法であってもよい。
補間処理部645は、求めた復号目標ビットレート(Target_Rate)を目標ビットレート決定部644に供給する。目標ビットレート決定部644は、求めた復号目標ビットレート(Target_Rate)を部分デコード部111に供給する。
この場合の、図32のステップS502において実行される復号目標ビットレート決定処理の流れの例を、図44のフローチャートを参照して説明する。
復号目標ビットレート決定処理が開始されると、部分デコードレート制御部522のコーディングパス数抽出部541は、ステップS641において、コーディングパス数を抽出する。ステップS642において、総和算出部542は、コーディングパス数の、処理対象ピクチャの全コードブロック(全サブバンドおよびコンポーネントの全構成)についての総和を算出する。
ステップS643において、目標ビットレート算出部644は、テーブル情報保持部643により保持されるテーブル情報を参照し、ステップS642において算出された1ピクチャ分のコーディングパス数の総和に対応する復号目標ビットレートを決定する。このとき、補間処理部645は、必要に応じてテーブル情報の補間処理を行う。
ステップS644において、目標ビットレート算出部644は、ステップS643におて算出した復号目標ビットレートを、部分デコード部111に供給する。
復号目標ビットレートが供給されると、部分デコードレート制御部522は、復号目標ビットレート決定処理を終了し、処理を図32のステップS502に戻し、ステップS503以降の処理を実行させる。
以上のように、部分デコードレート制御部522は、テーブル情報を用いることにより、より容易に可逆エンコード部101による可逆エンコードの符号化パラメータ(コーディングパス数)に基づいて復号目標ビットレートを求め、部分デコード部111は、その復号目標ビットレートを用いてデコード処理を行う。つまり、部分デコード部111は、可逆エンコード時のコーディングパス数に応じた復号目標ビットレートでデコード処理(部分デコード処理)を行う。したがって、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部502は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置500は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、以上においては、部分デコードレート制御部522が、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。また、同様に、非可逆エンコード部112より部分デコードレート制御部522に供給される情報もビットレート以外であっても良い。
さらに、総和算出部542が、ピクチャ内の一部のコードブロック(すなわち、代表とする所定のコードブロック)についてのみ、コーディングブロック数の総和を算出するようにし、目標ビットレート算出部644がその総和に基づいて復号目標ビットレートを算出するようにしてもよい。
なお、符号化パラメータ(コードブロック情報)として非ゼロビットプレーン数が用いられる場合も、上述した有効ビットプレーン数やコーディングパス数の場合と同様に、テーブル情報を用いて復号目標ビットレートが決定されるようにしてもよい。
図45は、テーブル情報を用いて非ゼロビットプレーン数から復号目標ビットレートを求める場合の、部分デコードレート制御部522の詳細な構成例を示すブロック図である。図45に示されるように、部分デコードレート制御部522は、図37に示される場合と同様に、ゼロ係数ビットプレーン数抽出部561、非ゼロビットプレーン数算出部562、および総和算出部563を有し、さらに、図37の目標ビットレート取得部564および目標ビットレート算出部565の代わりに、テーブル情報保持部664、目標ビットレート決定部665、および補間処理部666を有する。
テーブル情報保持部664は、1ピクチャ分の非ゼロビットプレーン数の総和と、復号目標ビットレートとの対応関係を示すテーブル情報を保持しており、そのテーブル情報を適宜目標ビットレート決定部665に提供する。このテーブル情報の構成は、図41に示される有効ビットプレーン数の場合のテーブル情報601と基本的に同様であり、1ピクチャ分の非ゼロビットプレーン数の総和(ALL_NUM_NONZERO_BP)の代表値と、その代表値に対応する復号目標ビットレート(Target_Rate)により構成される。
目標ビットレート決定部665は、このテーブル情報を参照し、1ピクチャ分の非ゼロビットプレーン数の総和(ALL_NUM_NONZERO_BP)から、その代表値に対応する復号目標ビットレート(Target_Rate)を求める。
補間処理部666は、目標ビットレート決定部665に制御されてテーブル情報保持部664が保持するテーブル情報の補間処理を行う。この補間処理は、上述した有効ビットプレーン数やコーディングパス数の場合と同様に、どのような方法であってもよい。
補間処理部666は、求めた復号目標ビットレート(Target_Rate)を目標ビットレート決定部665に供給する。目標ビットレート決定部665は、求めた復号目標ビットレート(Target_Rate)を部分デコード部111に供給する。
この場合の、図32のステップS502において実行される復号目標ビットレート決定処理の流れの例を、図46のフローチャートを参照して説明する。
復号目標ビットレート決定処理が開始されると、部分デコードレート制御部522のゼロ係数ビットプレーン数算出部561は、ステップS661において、ゼロ係数ビットプレーン数を算出する。ステップS662において、非ゼロビットプレーン数算出部562は、ゼロ係数ビットプレーン数から非ゼロビットプレーン数を算出する。ステップS663において、総和算出部563は、非ゼロビットプレーン数の、処理対象ピクチャの全コードブロック(全サブバンドおよびコンポーネントの全構成)についての総和を算出する。
ステップS664において、目標ビットレート算出部665は、テーブル情報保持部664により保持されるテーブル情報を参照し、ステップS663において算出された1ピクチャ分の非ゼロビットプレーン数の総和に対応する復号目標ビットレートを決定する。このとき、補間処理部666は、必要に応じてテーブル情報の補間処理を行う。
ステップS665において、目標ビットレート算出部665は、ステップS664におて算出した復号目標ビットレートを、部分デコード部111に供給する。
復号目標ビットレートが供給されると、部分デコードレート制御部522は、復号目標ビットレート決定処理を終了し、処理を図32のステップS502に戻し、ステップS503以降の処理を実行させる。
以上のように、部分デコードレート制御部522は、テーブル情報を用いることにより、より容易に可逆エンコード部101による可逆エンコードの符号化パラメータ(非ゼロビットプレーン数)から復号目標ビットレートを求め、部分デコード部111は、その復号目標ビットレートを用いてデコード処理を行う。つまり、部分デコード部111は、可逆エンコード時の非ゼロビットプレーン数に応じた復号目標ビットレートでデコード処理(部分デコード処理)を行う。したがって、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部502は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置500は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、部分デコードレート制御部522が、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。また、同様に、非可逆エンコード部112より部分デコードレート制御部522に供給される情報もビットレート以外であっても良い。
さらに、総和算出部563が、ピクチャ内の一部のコードブロック(すなわち、代表とする所定のコードブロック)についてのみ、非ゼロビットプレーン数の総和を算出するようにし、目標ビットレート算出部665がその総和に基づいて復号目標ビットレートを算出するようにしてもよい。
以上においては、可逆エンコードの符号化パラメータとして、有効ビットプレーン数、コーディングパス数、または、非ゼロビットプレーン数を用いる場合について説明したが、これらに限らず、上述した以外の任意の符号化パラメータを用いるようにしてもよい。
また、非可逆トランスコード部502が可逆エンコードの符号化パラメータを用いて符号化の難易度を推定し、復号目標ビットレートを決定するように説明したが、これに限らず、符号化の難易度の推定(復号目標ビットレートの決定)が、可逆エンコード結果に基づいて行われるようにしてもよい。
図47は、その場合の、符号化装置の構成例を示すブロック図である。図47に示されるように、符号化装置700は、基本的に図29の符号化装置500と同様の構成を有するが、非可逆トランスコード部502の代わりに、非可逆トランスコード部702を有する。この非可逆トランスコード部702は、基本的に図29の非可逆トランスコード部502と同様の構成を有するが、コードブロック情報抽出部521の代わりに可逆圧縮率測定部721を有し、部分デコードレート制御部522の代わりに部分デコードレート制御部722を有する。
可逆圧縮率測定部721は、情報処理部103−1、伝送路103−2、または記憶部103−3を介して供給される、可逆エンコード部101における画像データの可逆エンコード結果であるコードストリームを用いて、可逆エンコード部101における可逆エンコードの圧縮率(可逆圧縮率)を測定する。可逆圧縮率測定部721は、測定した可逆圧縮率を部分デコードレート制御部522に供給する。
部分デコードレート制御部722は、可逆圧縮率測定部721より供給される可逆圧縮率を用いて、部分デコード部111の復号目標ビットレート(Target_Rate)を求める。部分デコードレート制御部722は、求めた復号目標ビットレートを部分デコード部111に供給する。部分デコード部111は、その復号目標ビットレートを用いて部分デコード処理を行う。
図48は、可逆圧縮率測定部721および部分デコードレート制御部722の詳細な構成例を示すブロック図である。図48に示されるように、可逆圧縮率測定部721は、コードストリームデータサイズ測定部731および可逆圧縮率算出部732を有する。
コードストリームデータサイズ測定部731は、可逆エンコード部101における画像データの可逆エンコード結果であるコードストリームのデータサイズ(ファイルサイズ)を測定する。コードストリームのデータサイズ(ファイルサイズ)は、例えば、ファイルシステムの管理情報を参照することにより容易に求めることができる。コードストリームデータサイズ測定部731は、求めたデータサイズ(ファイルサイズ)を可逆圧縮率算出部732に供給する。
可逆圧縮率算出部732は、コードストリームデータサイズ測定部731より供給されたコードストリームのデータサイズ(ファイルサイズ)を用いて、可逆圧縮率を算出する。可逆圧縮率算出部732は、コードストリームのデータサイズ(ファイルサイズ)の、可逆エンコードされる前の原画像の画像データのデータサイズ(ファイルサイズ)に対する比を、可逆圧縮率(RATE_Lossless)として算出する。
この可逆エンコードされる前の原画像の画像データのデータサイズ(ファイルサイズ)は、ファイルシステムの管理情報を参照したり、簡単な計算を行ったりすることにより、容易に求めることができる。
例えば、HD画像の場合、可逆エンコードされる前の原画像の画像データのデータサイズ(ファイルサイズ)は、1920(画素)×1080(画素)×3(コンポーネントの構成の数(例えばRGB))×8(ビット深度)×24(1秒当たりのピクチャ数)×時間(秒)の演算により算出可能である。
可逆圧縮率算出部732は、算出した可逆圧縮率(RATE_Lossless)を、部分デコードレート制御部722に供給する。
図48に示されるように、部分デコードレート制御部722は、目標ビットレート取得部741および目標ビットレート算出部742を有する。
目標ビットレート取得部741は、非可逆エンコード部112より非可逆符号化目標ビットレート(TR)を取得し、目標ビットレート算出部742に供給する。
目標ビットレート算出部742は、可逆圧縮率測定部721より可逆圧縮率(RATE_Lossless)を取得する。また、目標ビットレート算出部742は、予め定められた所定の可逆圧縮率を、基準値(Ref_RATE_Lossless)として取得する。さらに、目標ビットレート算出部742は、目標ビットレート取得部741から非可逆符号化目標ビットレート(TR)を取得する。
目標ビットレート算出部742は、これらの、可逆圧縮率(RATE_Lossless)、非可逆符号化目標ビットレート(TR)、および基準値(Ref_RATE_Lossless)を用いて、部分デコード部111の復号目標ビットレート(Target_Rate)を求める。目標ビットレート算出部742は、例えば以下の式(8)のように、復号目標ビットレート(Target_Rate)を求める。
式(8)の例の場合、目標ビットレート算出部742は、可逆圧縮率(RATE_Lossless)の、基準値(Ref_RATE_Lossless)との相対比の逆数に応じて、復号目標ビットレート(Target_Rate)を決定する。つまり、目標ビットレート算出部742は、可逆圧縮率(RATE_Lossless)が基準値(Ref_RATE_Lossless)よりも小さい場合、可逆符号化結果のコードストリームの符号量が多いので、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より大きく設定する。
逆に、可逆圧縮率(RATE_Lossless)が基準値(Ref_RATE_Lossless)よりも大きい場合、可逆符号化結果のコードストリームの符号量が少ないので、目標ビットレート算出部535は、その分、復号目標ビットレート(Target_Rate)を、非可逆符号化目標ビットレート(TR)より小さく設定する。
このように、目標ビットレート算出部742は、可逆圧縮率の、基準値との相対比(の逆数)に基づいて復号目標ビットレートを決定するので、より容易かつ適切に、復号目標ビットレートを決定することができる。
なお、復号目標ビットレートは、どのような方法で求められるようにしてもよく、上述した式(8)以外の方法で求められるようにしてももちろんよい。
目標ビットレート算出部742は、このように算出した復号目標ビットレート(Target_Rate)を、部分デコード部111に供給する。部分デコード部111は、この復号目標ビットレートに基づいて、デコード処理により生成するベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を目標圧縮率として算出し、可逆圧縮ファイルのコードストリームを部分的に復号してベースバンドの画像データを生成する。
上述したように、部分デコード部111は、非可逆エンコード部112が非可逆符号化目標ビットレートを達成することができる範囲において、復号処理の処理量をより低減させるように、可逆圧縮ファイルのコードストリームを部分的に復号する(部分デコード処理を行う)。この場合、部分デコード部111は、その範囲を、目標ビットレート算出部742により算出された復号目標ビットレートに基づいて決定する。
部分デコード部111は、生成したベースバンドの画像データ(復号画像データ)を非可逆エンコード部112に供給する。
非可逆エンコード部112は、そのベースバンドの画像データをJPEG2000の非可逆圧縮方式により所望の圧縮率で圧縮符号化し、生成したコードストリームを出力する。なお、この場合、非可逆エンコード部112は、非可逆符号化目標ビットレートを部分デコードレート制御部722に供給する。
図49は、非可逆トランスコード部702により実行されるトランスコード処理の流れの例を説明するフローチャートである。
情報処理部103−1、伝送路103−2、または、記憶部103−3より画像データが供給されると、非可逆トランスコード部702は、トランスコード処理を開始する。トランスコード処理が開始されると、コードストリームデータサイズ測定部731は、図49のステップS701において、例えばファイルシステムの管理情報を参照する等して、コードストリームのデータサイズを取得する。ステップS702において、可逆圧縮率算出部732は、ステップS701において得られたコードストリームのデータサイズを用いて可逆圧縮率(RATE_Lossless)を算出する。
ステップS703において、部分デコードレート制御部522は、部分デコード処理の目標ビットレート(復号目標ビットレート)を決定する。この復号目標ビットレート決定処理の詳細については後述する。
復号目標ビットレートが決定されると、部分デコード部111は、ステップS704において、ステップS703において算出された復号目標ビットレートを用いて部分デコード処理を行い、復号画像データを生成する。この部分デコード処理は、図18のフローチャートを参照して説明した流れの例と同様に実行されるのでその説明を省略する。ただし、ステップS704の場合、部分デコード部111は、復号目標ビットレートから目標圧縮率を算出し、その目標圧縮率を用いて部分デコード処理を行う。
ステップS705において、非可逆エンコード部112は、非可逆符号化処理を行う。この非可逆符号化処理は、図19のフローチャートを参照して説明した流れの例と同様に実行されるので、その説明を省略する。ただし、ステップS705の場合、非可逆エンコード部112は、ステップS308において目標圧縮率を部分デコード部111に供給する代わりに、非可逆符号化目標ビットレートを部分デコードレート制御部722に供給する。
ステップS706において、非可逆トランスコード部702は、画像データの全てのピクチャを処理したか否かを判定する。未処理のピクチャが存在すると判定された場合、処理は、ステップ704に戻り、それ以降の処理が実行される。また、ステップS706において、画像データの全てのピクチャを処理されたと判定された場合、トランスコード処理が終了される。
つまり、この場合、復号目標ビットレートの算出は、コードストリームのデータサイズ(ファイルサイズ)に基づいて算出される可逆圧縮率を用いて行われるので、画像データに対して1回のみ行われる。
なお、可逆圧縮率測定部721が、画像データの例えばピクチャ毎等、所定のデータ単位毎に可逆圧縮率を算出するようにしてももちろんよい。ただし、その場合、コードストリームデータサイズ測定部731は、そのデータ単位毎(例えばピクチャ毎)に、コードストリームのデータサイズを求める必要があり、上述した場合と比べて処理が複雑になる。
次に、図49のステップS703において実行される復号目標ビットレート決定処理の流れの例を、図50のフローチャートを参照して説明する。
復号目標ビットレート決定処理が開始されると、部分デコードレート制御部722の目標ビットレート取得部741は、ステップS721において、非可逆符号化目標ビットレートを取得する。ステップS722において、目標ビットレート算出部742は、基準値を取得する。ステップS723において、目標ビットレート算出部742は、可逆圧縮率を取得する。ステップS724において、目標ビットレート算出部742は、ステップS721において取得された非可逆符号化目標ビットレート、ステップS722において取得された基準値、並びに、ステップS733において取得された可逆圧縮率を用いて、復号目標ビットレートを算出する。
ステップS725において、目標ビットレート算出部742は、ステップS724におて算出された復号目標ビットレートを、部分デコード部111に供給する。
復号目標ビットレートが供給されると、部分デコードレート制御部722は、復号目標ビットレート決定処理を終了し、処理を図49のステップS703に戻し、ステップS704以降の処理を実行させる。
以上のように、部分デコードレート制御部722は、可逆エンコード部101による可逆エンコードの可逆圧縮率に基づいて復号目標ビットレートを求め、部分デコード部111は、その復号目標ビットレートを用いてデコード処理を行う。つまり、部分デコード部111は、可逆圧縮率から、画像データの符号化の難易度を大まかに推定し、その難易度に応じて設定された復号目標ビットレートでデコード処理(部分デコード処理)を行う。
この場合、可逆圧縮率は、上述したようにファイルシステムの管理情報等を参照するだけで算出可能であるので、例えばコードブロック情報のパース等の処理が不要になる。また、コーデックのシンタックス理解も不要である。したがって、部分デコードレート制御部722は、復号目標ビットレートを求める処理の負荷をより軽減させることができる。
以上のように、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを、より容易に生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部702は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置700は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、以上においては、部分デコードレート制御部722が、デコード処理の目標値としてビットレート(復号目標ビットレート)を算出するように説明したが、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。その場合、部分デコード部111は、その目標値を情報の種類に応じて変換するだけで、基本的には、図18のフローチャートを参照して説明した場合と同様に部分デコード処理を行う。
また、同様に、非可逆エンコード部112より部分デコードレート制御部722に供給される情報もビットレート以外であっても良い。例えば、符号量や圧縮率などであってもよい。
また、符号化の難易度の推定(復号目標ビットレートの決定)を、可逆エンコード結果(コードストリーム)のシステムパラメータに基づいて行われるようにしてもよい。例えば、部分デコードレート制御部が、可逆エンコード部101による可逆エンコード処理の処理時間(クロック数やサイクル数)等のシステムパラメータを用いて符号化の難易度の推定を行うようにしてもよい。
図51は、その場合の、符号化装置の構成例を示すブロック図である。図51に示されるように、符号化装置800は、基本的に図29の符号化装置500と同様の構成を有するが、非可逆トランスコード部502の代わりに、非可逆トランスコード部802を有する。この非可逆トランスコード部802は、基本的に図29の非可逆トランスコード部502と同様の構成を有するが、コードブロック情報抽出部521の代わりにエンコード時間測定部821を有し、部分デコードレート制御部522の代わりに部分デコードレート制御部822を有する。
エンコード時間測定部821は、可逆エンコード部101により実行される可逆エンコード処理を監視し、その処理時間(可逆符号化時間)を測定し、その測定結果に基づいて、可逆エンコード部101により実行される可逆エンコード処理の圧縮率(可逆圧縮率)を算出する。
エンコード時間測定部821は、可逆エンコード部101により実行される可逆エンコード処理を監視し、その処理時間(可逆符号化時間)を測定すると、その測定結果を保持する。エンコード時間測定部821は、情報処理部103−1、伝送路103−2、または記憶部103−3を介して、可逆エンコード部101における画像データの可逆エンコード結果であるコードストリームを取得すると、そのコードストリームを生成する可逆エンコード処理の可逆符号化時間に基づいて、可逆圧縮率を算出する。エンコード時間測定部821は、算出した可逆圧縮率を部分デコードレート制御部822に供給する。
部分デコードレート制御部822は、エンコード時間測定部821より供給される可逆圧縮率を用いて、部分デコード部111の復号目標ビットレート(Target_Rate)を求める。部分デコードレート制御部822は、求めた復号目標ビットレートを部分デコード部111に供給する。部分デコード部111は、その復号目標ビットレートを用いて部分デコード処理を行う。
図52は、エンコード時間測定部821および部分デコードレート制御部822の詳細な構成例を示すブロック図である。図52に示されるように、エンコード時間測定部821は、可逆符号化時間測定部831、可逆符号化時間保持部832、可逆符号化時間抽出部833、および可逆圧縮率推定部834を有する。
可逆符号化時間測定部831は、可逆エンコード部101により実行される可逆エンコード処理を監視し、その可逆エンコード処理の処理時間(可逆符号化時間)を測定する。例えば、可逆符号化時間測定部831は、可逆エンコード処理が開始されてから終了するまでの時間を計測する。また、例えば、可逆符号化時間測定部831は、可逆エンコード処理が開始されてから終了するまでのクロック数をカウントする。さらに、例えば、可逆符号化時間測定部831は、可逆エンコード処理が開始されてから終了するまでのサイクル数をカウントする。
可逆符号化時間保持部832は、可逆符号化時間測定部831により測定された可逆符号化時間(例えば、クロック数やサイクル数等)を保持する。このとき、可逆符号化時間保持部832は、その可逆符号化時間を、可逆符号化された画像データの識別情報(例えばデータ名等)に関連付けて保持する。
可逆符号化時間抽出部833は、情報処理部103−1、伝送路103−2、または、記憶部103−3を介して、可逆エンコード部101より供給されるコードストリーム(可逆エンコード結果)を取得すると、そのコードストリームに対応する可逆符号化時間を、可逆符号化保持部832により保持されている可逆符号化時間群の中から抽出し、取得する。可逆符号化時間抽出部833は、抽出した可逆符号化時間を可逆圧縮率推定部834に供給する。
可逆圧縮率推定部834は、供給された可逆符号化時間に基づいて、可逆圧縮率を推定する。一般的に、可逆符号化時間が長い場合、符号化の難易度が高く、生成される符号量も多い。したがって、この場合、可逆圧縮率は低くなると推定される。逆に、可逆符号化時間が短い場合、一般的に符号化の難易度が低く、生成される符号量も少ない。したがって、この場合、可逆圧縮率は高くなると推定される。
可逆圧縮率推定部834は、このような可逆圧縮率の傾向に基づいて、可逆符号化時間の長さ(クロック数やサイクル数の値の大きさ)から、可逆圧縮率の値を推定する。したがって、可逆圧縮率推定部834は、容易に可逆圧縮率を推定することができる。可逆圧縮率推定部834は、このように推定された可逆圧縮率(RATE_Lossless)を部分デコードレート制御部822に供給する。
図52に示されるように、部分デコードレート制御部822は、目標ビットレート取得部841および目標ビットレート算出部842を有する。
目標ビットレート取得部841は、非可逆エンコード部112より非可逆符号化目標ビットレート(TR)を取得し、目標ビットレート算出部842に供給する。
目標ビットレート算出部842は、エンコード時間測定部821より可逆圧縮率(RATE_Lossless)を取得する。また、目標ビットレート算出部842は、予め定められた所定の可逆圧縮率を、基準値(Ref_RATE_Lossless)として取得する。さらに、目標ビットレート算出部842は、目標ビットレート取得部841から非可逆符号化目標ビットレート(TR)を取得する。
目標ビットレート算出部842は、これらの、可逆圧縮率(RATE_Lossless)、非可逆符号化目標ビットレート(TR)、および基準値(Ref_RATE_Lossless)を用いて、上述した目標ビットレート算出部742の場合と同様に、部分デコード部111の復号目標ビットレート(Target_Rate)を求める。
目標ビットレート算出部842は、このように算出した復号目標ビットレート(Target_Rate)を、部分デコード部111に供給する。部分デコード部111は、この復号目標ビットレートに基づいて、デコード処理により生成するベースバンドの画像データの、マスタ画像(原画像)の画像データに対する圧縮率を目標圧縮率として算出し、可逆圧縮ファイルのコードストリームを部分的に復号してベースバンドの画像データを生成する。
上述したように、部分デコード部111は、非可逆エンコード部112が非可逆符号化目標ビットレートを達成することができる範囲において、復号処理の処理量をより低減させるように、可逆圧縮ファイルのコードストリームを部分的に復号する(部分デコード処理を行う)。この場合、部分デコード部111は、その範囲を、目標ビットレート算出部842により算出された復号目標ビットレートに基づいて決定する。
部分デコード部111は、生成したベースバンドの画像データ(復号画像データ)を非可逆エンコード部112に供給する。
非可逆エンコード部112は、そのベースバンドの画像データをJPEG2000の非可逆圧縮方式により所望の圧縮率で圧縮符号化し、生成したコードストリームを出力する。なお、この場合、非可逆エンコード部112は、非可逆符号化目標ビットレートを部分デコードレート制御部822に供給する。
図53は、エンコード時間測定部821により実行される可逆符号化時間測定処理の流れの例を説明するフローチャートである。
可逆エンコード部101が、可逆エンコード処理を開始すると、エンコード時間測定部821は、可逆符号化時間測定処理を開始する。可逆符号化時間測定処理が開始されると、可逆符号化時間測定部831は、ステップS801において、可逆符号化時間の測定を開始する。ステップS802において、可逆エンコード部101は、画像データの全ピクチャについて可逆符号化を行う。可逆符号化が終了すると、可逆符号化時間測定部831は、ステップS803において、可逆符号化時間の測定を終了する。測定が終了されると、ステップS804において、可逆符号化時間保持部832は、ステップS801乃至ステップS803の間に測定された測定結果(可逆符号化時間)を保持し、可逆符号化時間測定処理を終了する。
次に、図54のフローチャートを参照して、この場合の、非可逆トランスコード部802により実行されるトランスコード処理の流れの例を説明する。
情報処理部103−1、伝送路103−2、または、記憶部103−3より画像データが供給されると、非可逆トランスコード部802は、トランスコード処理を開始する。トランスコード処理が開始されると、可逆符号化時間抽出部833は、ステップS821において、可逆符号化時間保持部832から、コードストリームに対応する可逆符号化時間を取得する。
ステップS822において、可逆圧縮率推定部834は、ステップS821において取得された可逆符号化時間から可逆圧縮率(RATE_Lossless)を推定する。ステップS823において、部分デコードレート制御部822は、部分デコード部111による部分デコード処理の復号目標ビットレートを決定する。この復号目標ビットレート決定処理は、図50のフローチャートを参照して説明した流れの例と同様に実行されるので、その説明は省略する。
復号目標ビットレートが決定されると、部分デコード部111は、ステップS824において、ステップS823において算出された復号目標ビットレートを用いて部分デコード処理を行い、復号画像データを生成する。この部分デコード処理は、図18のフローチャートを参照して説明した流れの例と同様に実行されるのでその説明を省略する。ただし、ステップS824の場合、部分デコード部111は、復号目標ビットレートから目標圧縮率を算出し、その目標圧縮率を用いて部分デコード処理を行う。
ステップS825において、非可逆エンコード部112は、非可逆符号化処理を行う。この非可逆符号化処理は、図19のフローチャートを参照して説明した流れの例と同様に実行されるので、その説明を省略する。ただし、ステップS825の場合、非可逆エンコード部112は、ステップS308において目標圧縮率を部分デコード部111に供給する代わりに、非可逆符号化目標ビットレートを部分デコードレート制御部822に供給する。
ステップS826において、非可逆トランスコード部802は、画像データの全てのピクチャを処理したか否かを判定する。未処理のピクチャが存在すると判定された場合、処理は、ステップ824に戻り、それ以降の処理が実行される。また、ステップS826において、画像データの全てのピクチャを処理されたと判定された場合、トランスコード処理が終了される。
つまり、この場合、復号目標ビットレートの算出は、可逆エンコード処理の処理時間に基づいて算出される可逆圧縮率を用いて行われるので、画像データに対して1回のみ行われる。
なお、可逆圧縮率測定部821が、画像データの例えばピクチャ毎等、所定のデータ単位毎に可逆圧縮率を算出するようにしてももちろんよい。ただし、その場合、可逆符号化時間測定部831は、そのデータ単位毎(例えばピクチャ毎)に、可逆符号化時間を求める必要があり、上述した場合と比べて処理が複雑になる。
以上のように、部分デコード部111は、画像データの符号化の難易度に応じたビットレートの復号画像データを、より容易に生成することができる。これにより、非可逆エンコード部112は、より容易かつ適切に、可変ビットレート方式で非可逆エンコードを行うことができる。すなわち、非可逆トランスコード部802は、可逆エンコードされたコードストリームを、より容易かつ適切に、可変ビットレート方式で非可逆エンコードされたコードストリームに変換することができる。換言すれば、符号化装置800は、マスタ画像のデータサイズが大きくても、容易かつ適切に、画像データを多様な圧縮率で符号化することができる。
なお、以上においては、部分デコードレート制御部822が、デコード処理の目標値としてビットレート(復号目標ビットレート)を算出するように説明したが、例えば、圧縮率や符号量など、ビットレートと同等の他の情報を目標値として算出するようにしてもよい。その場合、部分デコード部111は、その目標値を情報の種類に応じて変換するだけで、基本的には、図18のフローチャートを参照して説明した場合と同様に部分デコード処理を行う。
また、同様に、非可逆エンコード部112より部分デコードレート制御部822に供給される情報もビットレート以外であっても良い。例えば、符号量や圧縮率などであってもよい。
以上においては、本発明を符号化装置に適用する場合について説明したが、これに限らず、どのような装置に適用することも可能である。例えば、各図に示される各処理部をそれぞれ独立した1つの装置としてもよい。また、以上においては、圧縮・伸長方式の例としてJPEG2000を用いて説明したが、圧縮・伸長方式は、これに限らず任意である。
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図55に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
図55において、パーソナルコンピュータ900のCPU(Central Processing Unit)901は、ROM(Read Only Memory)902に記憶されているプログラム、または記憶部913からRAM(Random Access Memory)903にロードされたプログラムに従って各種の処理を実行する。RAM903にはまた、CPU901が各種の処理を実行する上において必要なデータなども適宜記憶される。
CPU901、ROM902、およびRAM903は、バス904を介して相互に接続されている。このバス904にはまた、入出力インタフェース910も接続されている。
入出力インタフェース910には、キーボード、マウスなどよりなる入力部911、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部912、ハードディスクなどより構成される記憶部913、モデムなどより構成される通信部914が接続されている。通信部914は、インターネットを含むネットワークを介しての通信処理を行う。
入出力インタフェース910にはまた、必要に応じてドライブ915が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア921が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部913にインストールされる。
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
この記録媒体は、例えば、図55に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc - Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini Disc)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア921により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM902や、記憶部913に含まれるハードディスクなどで構成される。
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数のデバイス(装置)により構成される装置全体を表わすものである。
なお、以上において、1つの装置として説明した構成を分割し、複数の装置として構成するようにしてもよい。逆に、以上において複数の装置として説明した構成をまとめて1つの装置として構成されるようにしてもよい。また、各装置の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置の構成の一部を他の装置の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。