本発明は、画像を符号化する画像符号化装置及び画像符号化方法に関する。
画像符号化の効率を向上させる手法の一つとして、符号量(レート)・歪み最適化手法がある。レート・歪み最適化手法は、符号化データを構成する複数の区分ごとに、発生符号量と画像の歪みに関する指標値を求め、総符号量が目標値以下という条件の下で、総歪み指標値の最小化を図るものである。
ISO/IEC JTC1/SC29/WG1での標準化作業により制定された静止画像符号化の国際標準方式JPEG2000(ISO/IEC 15444)は、ウェーブレット変換により得られる各サブバンドの係数をコードブロックと呼ばれる矩形領域に分割してそれぞれ独立に符号化するという構成になっている。このJPEG2000は、各コードブロックをさらに複数のパスに分けて符号化しており、パスを単位として発生符号量と画像の歪み指標値を求めてレート・歪み最適化手法を適用することが考慮されている。そこで、JPEG2000標準を実施する上での参考として、レート・歪み最適化手法の一適用方法が示されている(例えば、非特許文献1参照)。
例えば、コードブロックBiの符号打ち切り可能点をniとし、niで符号を打ち切った場合のコードブロックBiの符号量をRi(ni)、歪みの指標値をDi(ni)とするとき、画像全体での総歪み指標値D、及び総符号量Rは、次式のように示すことができる。
そして、レート・歪み最適化の目標は、目標となる総符号量Rmax以下の条件、すなわち、R≦Rmaxで総歪み指標値Dを最小化する打ち切り点niの集合を求めることとなる。
この最適化問題は、一般化ラグランジェ乗数法によって解決することができる(例えば、非特許文献2参照)。
すなわち、あるλの値について、次式を最小化する問題に帰着する。尚、λの値は総符号量RがRmax以下となるように調整される。
上式の最小化は、各コードブロックの個々の最小化問題となる。以下、コードブロックBiについて、Di(ni)+λRi(ni)が最小となる符号打ち切り点niを求める単純なアルゴリズムについて説明する。
図4は、有効符号化パスの数がki_maxであるコードブロックBiについて符号打ち切り点niを決定する処理の手順を説明するためのフローチャートである。図4に示すように、まず、符号打ち切り点niを0に初期化しておく(ステップS401)。次に、着目する符号打ち切り可能点を示す変数kを1に設定する(ステップS402)。続いて、着目する符号打ち切り可能点kについて、このコードブロックBiの符号打ち切り点をniからkに移動させた場合の符号量増加分ΔRi(k)と、歪み指標値減少分ΔDi(k)を求める(ステップS403)。
そして、符号打ち切り点niから着目する符号打ち切り可能点kまでの間にある符号の符号量対歪み指標値として、ΔDi(k)/ΔRi(k)を算出して、1/λと比較する(ステップS404)。その結果、1/λよりも大きい場合(Yes)、niの値をkに更新する(ステップS405)。次に、kに1を加えて、着目する符号打ち切り点を一つ下げる(ステップS406)。一方、ステップS404で、1/λよりも小さい場合(No)、niは更新せずにステップS406に進む。そして、更新されたkの値をこのコードブロックの符号化パスの数ki_maxと比較する(ステップS407)。
その結果、k≦ki_maxであれば(No)、更新されたkについてステップS403から繰り返して処理を行う。一方、k>ki_maxであれば(Yes)、処理を終了して、与えられたλでの着目コードブロックBiの符号打ち切り点は終了時点のniに定まる。
上述したアルゴリズムは、種々のλの値について実施されることを考慮すると、あらかじめコードブロックの符号打ち切り点の候補を定めておく方が効率が良い。コードブロックの符号打ち切りは、符号化パス単位に行われるので、基本的には全ての符号化パス境界で符号打ち切りが可能である。しかし、上述の符号打ち切り点ni決定アルゴリズムを適用する場合、符号打ち切り候補点間のレート・歪みの勾配を表す値、Si(k)=ΔDi(k)/ΔRi(k)が、kに伴って単調減少となるように打ち切り候補点が決定され、条件を満たさない符号化パス境界は符号打ち切り点として選択されない。
例えば、図10のように、4つの符号化パスにより符号化されたコードブロックを考える。図10は、コードブロックの各パスのレートと歪みの関係の一例を示す図である。すなわち、基本的には、図10の打ち切り可能点0〜4で示される4つのパスの境界で符号を打ち切ることが可能である。しかし、打ち切り可能点2ではレート・歪みの勾配が単調減少となっておらず、コードブロックの符号を打ち切るのは効率的でないため、上述のアルゴリズムでは符号打ち切り点として選択されることはない。
以下、全符号化パスの境界から符号打ち切り点の候補を選択するアルゴリズムについて説明する。図5は、符号打ち切り点の候補を選択する処理の流れを説明するためのフローチャートである。ここでは、符号打ち切り点の候補の集合をNiとする。
まず、符号打ち切り点の候補の集合Niの初期状態として、着目するコードブロックの全符号化パスの境界の集まりとする(ステップS501)。例えば、コードブロックBiの符号化パスの数をki_maxとすると、Ni={1,2,3,…,ki_max}である。次に、候補判定の対象となる符号打ち切り点pを0に設定する(ステップS502)。また、候補判定の対象となる符号打ち切り点の次の打ち切り点として、kを1に設定する(ステップS503)。
そして、設定されたkが集合Niに属しているか否かを判定し(ステップS504)、Niに属している場合(Yes)、符号打ち切り点をpからkに移動させた場合の符号量増加分ΔRi(k)、歪み指標値減少分ΔDi(k)、及び、この区間のレート・歪み勾配Si(k)を求める(ステップS505)。一方、Niに属さない場合(No)、後述するステップS508へと処理を移す。
ステップS505の処理後、p≠0の場合であって、かつSi(k)>Si(p)であるか否かを比較する(ステップS506)。その結果、p≠0、かつ、Si(k)>Si(p)の場合(Yes)、pを集合Niから除いて(ステップS510)、ステップS502へと戻る。一方、それ以外の場合には(例えば、p=0やSi(k)≦Si(p))、pにkを設定し(ステップS507)、kの値に1を加えて更新する(ステップS508)。
そして、kとki_maxを比較して(ステップS509)、k≦ki_maxならば(No)、更新されたkについてステップS504から処理を行う。一方、k>ki_maxならば(Yes)、処理を終了して、この時点での集合Niが符号打ち切り点の候補集合となる。例えば、先に例に挙げた図10に示すようなコードブロックの場合、打ち切り点の候補集合Ni={1,3,4}となり、これらの打ち切り候補点では図11に示すようにレート・歪み勾配がkに伴って単調減少となる。すなわち、図11は、上述した単調減少化処理によりパスが統合される様子を示す図である。
以上により得られた符号打ち切り点候補集合Niに属するkについて、レート・歪み勾配Si(k)、符号量Ri(k)の値を保持しておき、Si(k)>λとなる最大のkを選択する。λの値が小さい場合には、符号打ち切り点は下がって切り捨てられる符号は少なくなり、逆にλの値が大きい場合には、符号打ち切り点は上がって切り捨てられる符号は多くなるため、乗数λは画質のパラメータとみなすことができる。そして、大きいλの値から小さい値へと変化させながら、総符号量R=Rmax、あるいはR≒Rmaxとなるλを探して、そのλに基づいて各コードブロックの符号打ち切り点を決定することで、レート・歪み勾配の最適化を図ることができる。
以下、レート・歪み最適化手法をJPEG2000に適用する一形態について説明する。但し、JPEG2000による符号化の具体的方法については勧告書(非特許文献1)に詳細に説明されているので、ここでは簡単な例についてその大まかな処理の流れのみを説明する。
また、説明簡略化のため、符号化対象画像は各画素が8ビット(0〜255)で表現された512×512画素のモノクロ画像とし、符号化対象画像の各画素の水平方向の画素位置(座標)をx、垂直方向の画素位置をyとして、画素位置(x,y)の画素値をP(x,y)で表す。また、JPEG2000の符号化の条件として、タイル分割なし、離散ウェーブレット変換2回、9×7非可逆フィルタ(9-7 Irreversible Filter)使用、コードブロックサイズは64×64、1レイヤでの符号列形成として説明する。その他にも、エントロピー符号化のオプション等の様々な条件設定が必要であるが、ここでは特に言及しない。
図2は、一般的なJPEG2000符号化を行う画像符号化装置の構成を示すブロック図である。図2において、200は画像データ入力部、201は離散ウェーブレット変換部、202は係数量子化部、203はコードブロック分割部、204はコードブロック符号化部、205は符号列形成部、206は符号列格納部、207はコードブロック情報格納部、208は符号出力部である。
まず、画像データ入力部200から符号化対象の画像データを構成する各画素値P(x,y)が順に入力される。画像データ入力部200では、入力される各画素値P(x,y)から中間値128を引くことで、0から255の入力データのDCレベルシフトを行い、−128から127までのデータP'(x,y)に変換して、離散ウェーブレット変換部201へと出力する。
離散ウェーブレット変換部201では、DCレベルシフト後の入力データP'(x、y)を不図示の内部バッファに適宜格納し、2次元離散ウェーブレット変換を実施する。2次元離散ウェーブレット変換は、1次元の離散ウェーブレット変換を水平及び垂直方向それぞれに適用することにより行われる。離散ウェーブレット変換部201では、1次元離散ウェーブレット変換として9×7非可逆フィルタを使用する。
図3は、2次元離散ウェーブレット変換によって処理される符号化対象画像のサブバンドを説明するための図である。すなわち、離散ウェーブレット変換部201では、図3(a)に示されるような符号化対象画像に対して、まず垂直方向に1次元離散ウェーブレット変換を適用し、図3(b)に示されるように低周波サブバンドLと高周波サブバンドHとに分解する。次に、それぞれのサブバンドに対して水平方向の1次元離散ウェーブレット変換を適用することにより、図3(c)に示されるようなLL、HL、LH、HHの4つのサブバンドに分解する。
離散ウェーブレット変換部201では、上述した2次元離散ウェーブレット変換により得られたサブバンドLLに対して、さらに繰り返して2次元離散ウェーブレット変換を適用する。これによって、符号化対象画像をLL、HL1、LH1、HH1、HL2、LH2、HH2の7つのサブバンドに分解することができる。
図6は、2回の2次元離散ウェーブレット変換によって得られる7つのサブバンドを説明するための図である。図6に示すように、復号側では、LLサブバンドの係数を復号することにより、水平・垂直方向ともに1/4の大きさで画像を再生することができ、さらにHL1、LH1、HH1の係数を復号することにより、水平・垂直1/2の大きさの画像を再生することができる。そして、HL2、LH2、HH2まで復号することにより、元の画像と同じ大きさの画像を再生することができる。以降、LLサブバンドを解像度レベル0、LH1、HL1、HH1を解像度レベル1、LH2、HL2、HH2を解像度レベル2という呼び方で呼ぶ。
尚、以降では、各サブバンド内の係数をC(S,x,y)と表す。ここで、Sはサブバンドの種類を表し、LL、LH1、HL1、HH1、LH2、HL2、HH2のいずれかである。また、(x,y)は各サブバンド内の左上隅の係数位置を(0,0)としたときの水平方向及び垂直方向の係数位置(座標)を表す。
係数量子化部202では、離散ウェーブレット変換部201で生成された各サブバンドの係数C(S,x,y)を、各サブバンド毎に定めた量子化ステップdelta(S)を用いて量子化する。ここで、量子化された係数値をQ(S,x,y)と表すとすると、係数量子化部203で行われる量子化処理は次式により表すことができる。
ここで、sign{I}は整数Iの正負符号を表す関数であり、Iが正の場合は1を、負の場合は−1を返す。また、floor{R}は実数Rを超えない最大の整数値を表す。
コードブロック分割部203は、係数量子化部202で量子化されたサブバンドの係数C(S,x,y)を不図示の内部バッファに適宜格納して、コードブロックとよばれる所定の大きさの矩形に分割して切り出す。コードブロック分割は、サブバンドの左上隅を基準として、64×64のブロックに分割することで行われる。これにより、LL、HL1、LH1、HH1の各サブバンドは、それぞれ4つのコードブロックに分割され、HL2、LH2、HH2の各サブバンドは16個のコードブロックに分割される。
尚、各コードブロックには、順番に、重複しない識別番号i(0〜63)を割り振り、B0、B1、B2…B63のように、Biという形でコードブロックを特定する。また、識別番号iは、解像度レベル順に割り振り、同一解像度レベル内においては、HL、LH、HHサブバンドの順に、同一サブバンド内においてはラスタースキャン順に番号を付けるものとする。図7は、コードブロック分割部203におけるコードブロック分割の様子を示す図である。図7において、実線はサブバンドの境界を表し、点線はコードブロックの境界を示しており、点線または実線で区切られる矩形がコードブロックである。
コードブロック符号化部204は、コードブロック分割部203により切り出されたコードブロックBi内の量子化された係数値Q(S,x,y)(以降、単に「係数値」と称す。)の絶対値を自然2進数で表現して、上位の桁から下位の桁へとビットプレーン方向を優先して二値算術符号化し、コードブロックの符号化データを符号列格納部206に格納する。各ビットプレーンは、最上位のビットプレーンを除いて、3つのパスに分けて符号化する。尚、パスへの分割、各パスでの具体的な符号化方法については、勧告書に従う。
すなわち、コードブロック符号化部204は、各パスの符号化毎に着目するパスの符号量増加分ΔRi(k)と、歪み指標値減少分ΔDi(k)とを求め、図8に示すテーブルを構築して不図示の内部バッファに格納する。図8は、コードブロック符号化部204の内部に構築されるコードブロックBiの情報の例を示す図である。尚、歪み指標値には、平均二乗誤差や、サブバンド毎に重みをつけて導出される重み付き平均二乗誤差等が用いられる。3種類のパスそれぞれについて、各係数の歪み指標値減少分を導出する一方式は、非特許文献1(勧告書の附属書J)等に記されている。
着目するコードブロックBiについて、全パスの符号化が終了し、図8に示すようなテーブルが完成されると、前述した図5に示す符号打ち切り点の候補を選択するアルゴリズムを実施し、全符号化パス境界の集合からSi(k)が単調減少となる符号打ち切り点候補集合Niを求める。そして、図9に示すように、候補集合Niの要素の数NPと、各打ち切り候補点でのパス番号kと、レート・歪み勾配Si(k)と、符号量Ri(k)とをコードブロック情報格納部207に格納する。すなわち、図9は、コードブロック情報格納部207に格納される符号打ち切り候補点の情報の例を示す図である。
符号列形成部205は、コードブロック符号化部204により全てのコードブロックの符号化が終了すると、コードブロック情報格納部205に格納される各コードブロックの打ち切り候補点の情報を参照しながら、総符号量R=Rmax、あるいはR≒Rmaxとなるλを探して、Si(k)>λとなる部分の符号を集めて最終符号列を形成し、出力する。
図14は、符号列形成部205におけるλ決定の処理の流れを説明するためのフローチャートである。以下、図14を用いて、符号列形成部205によるしきい値λ決定の処理について説明する。尚、以下では、しきい値を表す変数としてSを導入し、処理終了時点での変数Sの値がλとなる。
符号列形成部205では、まず、コードブロック情報格納部207に格納される全コードブロックの打ち切り候補点の情報を参照して、Si(k)の最小値Sminと最大値Smaxを求める(ステップS1401)。次に、しきい値を表す変数SにステップS1401で求められたSmaxを設定する(ステップS1402)。続いて、変数Sからあらかじめ定めたしきい値変更幅ΔSを減じ、変数Sの値を少しだけ下げる(ステップS1403)。
そして、コードブロック番号を表す変数iに0を設定し、累積符号量Rを0に初期化する(ステップS1404)。次いで、コードブロック情報格納部205に格納されるコードブロックBiの打ち切り候補点情報を参照して、Si(k)>Sを満たす最大のkを求め、コードブロックBiの打ち切り点niとする(ステップS1405)。Si(k)の値は、コードブロックBiの打ち切り候補点順に単調減少化されているので、Si(k)を候補点の順番に比較していくことでniを求めることができる。
そして、ステップS1405で求めた打ち切り点niでのコードブロックBiの符号量Ri(ni)を累積符号量Rに加える(ステップS1406)。さらに、iに1を加えて更新し(ステップS1407)、iを64と比較する(ステップS1408)。その結果、iが64ならば(Yes)、ステップ1409へ進む。一方、iが64以外の場合(No)、ステップS1405に処理を移して、次のコードブロックについて符号量加算を行う。
ステップS1409では、iが64の場合、すなわち、しきい値Sについて全コードブロックからの累積符号量の算出が終了した場合、累積符号量Rを目標符号量Rmaxと比較する。その結果、R<Rmaxの場合(Yes)、ステップS1410へ進み、そうでない場合(No)、ステップS1411へと処理を移す。ステップS1411へと処理が移された場合には、現在のしきい値Sでは目標符号量を超えるため、ΔSを加えて一つ前のしきい値Sに戻して処理を終了する(ステップS1411)。
ステップS1410では、しきい値SをステップS1401で求めた最小値Sminと比較し、S>Sminであれば(Yes)、ステップS1403へと戻り、Sの値をまた少し小さくしてから、再びステップS1409までの処理を行う。一方、ステップS1410において、S≦Sminであれば(No)、本処理を終了する。そして、処理終了時点でのSが、しきい値λとして選択される。
符号列形成部205は、上述した処理によって求められたしきい値λに対し、各コードブロックからSi(k)>λとなる部分の符号を符号列格納部206から読み出して、JPEG2000符号列のフォーマットに従って情報(メインヘッダ、タイルヘッダ、パケットヘッダ等)を付加して、JPEG2000の符号列を形成し、符号出力部208へと出力する。
しかしながら、上述の方法によりR≒Rmaxとなる最大のλを見つけるためには、様々なλで総符号量Rを求めて目標符号量Rmaxと比較するという処理を繰り返す必要があり、符号打ち切り点候補の情報Si(k)、Ri(k)を格納するメモリへの多数回のアクセスや、Si(k)とλの比較等の、総符号量Rを求めるために必要な演算コストなどから多くの処理時間を必要とするなどの問題があった。
本発明は、このような事情を考慮してなされたものであり、画像圧縮時の画像符号化における符号量(レート)・歪み最適化処理に要する演算コストを好適に低減することができる画像符号化装置及び画像符号化方法を提供することを目的とする。
上記課題を解決するため、本発明は、画像データを複数の小領域に分割し、符号量・歪み最適化処理を行って、該小領域を符号化する画像符号化装置であって、
各小領域内の符号量・歪み勾配をさらに複数の小区分に分割し、該複数の小区分をカテゴリ分類する分類手段と、
前記符号量・歪み勾配に基づいて分類された各カテゴリ毎の累積符号量を算出する算出手段と、
算出された前記累積符号量を保持する保持手段と、
累積符号量が目標符号量以上になったときのカテゴリを境界カテゴリとして選択する選択手段と、
前記小領域の符号化データが前記目標符号量となるときの該符号量・歪み勾配のしきい値を前記境界カテゴリ内で探索する探索手段と、
探索された前記しきい値以上の符号量・歪み勾配の符号化データを用いて、前記小領域の符号列を形成する符号列形成手段と
を備えることを特徴とする。
また、本発明は、画像データを複数の小領域に分割し、符号量・歪み最適化処理を行って、該小領域を符号化する画像符号化装置であって、
各小領域内の符号量・歪み勾配をさらに複数の小区分に分割し、該小区分の符号量・歪み勾配の最大値と最小値とを算出し、該最大値と該最小値との間を複数の区間に分割する分割手段と、
前記符号量・歪み勾配に基づいて、分割された各区間毎の累積符号量を算出する算出手段と、
算出された前記累積符号量を保持する保持手段と、
累積符号量が目標符号量以上になったときの区間を境界区間として選択する選択手段と、
前記小領域の符号化データが前記目標符号量となるときの該符号量・歪み勾配のしきい値を前記境界区間内で探索する探索手段と、
探索された前記しきい値以上の符号量・歪み勾配の符号化データを用いて、前記小領域の符号列を形成する符号列形成手段と
を備えることを特徴とする。
さらに、本発明は、画像データを複数の小領域に分割し、符号量・歪み最適化処理を行って、該小領域を符号化する画像符号化方法であって、
各小領域内の符号量・歪み勾配をさらに複数の小区分に分割し、該複数の小区分をカテゴリ分類する分類工程と、
前記符号量・歪み勾配に基づいて分類された各カテゴリ毎の累積符号量を算出する算出工程と、
算出された前記累積符号量を保持手段に保持する保持工程と、
累積符号量が目標符号量以上になったときのカテゴリを境界カテゴリとして選択する選択工程と、
前記小領域の符号化データが前記目標符号量となるときの該符号量・歪み勾配のしきい値を前記境界カテゴリ内で探索する探索工程と、
探索された前記しきい値以上の符号量・歪み勾配の符号化データを用いて、前記小領域の符号列を形成する符号列形成工程と
を有することを特徴とする。
本発明によれば、画像圧縮時の画像符号化における符号量(レート)・歪み最適化処理に要する演算コストを好適に低減することができる。
以下、本発明の好適な実施の形態について説明する。
図1は、本発明の第1の実施例に係る画像符号化装置の構成を示すブロック図である。前述した図2に示す従来の画像符号化装置と共通するブロックについては同じ記号を用い、説明を省略する。図1に示すように、第1の実施例に係る画像符号化装置は、画像データ入力部200、離散ウェーブレット変換部201、係数量子化部202、コードブロック分割部203、コードブロック符号化部204、符号列形成部103、コードブロック情報格納部207、符号列格納部206、カテゴリ情報生成部101、カテゴリ情報格納部102及び符号出力部208とを備える。
以下、図1を参照して、第1の本実施例に係る画像符号化装置の動作例について説明する。尚、図1に示す画像符号化装置で符号化対象とされる画像符号化データは、前述した図2で示す一般的なJPEG2000符号化を行う画像符号化装置の場合と同じく、512×512の各画素8ビットのモノクロ画像データとする。また、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択等の符号化の条件についても従来例と同じである。
図1に示す画像符号化装置では、符号量(レート)・歪み最適化処理を簡易化するため、レート・歪み勾配にm個のカテゴリを設け、符号化処理と並行して各符号化パス(又は、単調減少化により統合されたパス。以降、単に「符号化パス」と呼ぶ。)をカテゴリに分類し、各カテゴリ毎の累積符号量を算出しカウントする。以下、m個のカテゴリは、レート・歪み勾配の急峻なカテゴリから緩やかなカテゴリへ順序付けられ、C(1)からC(m)のように1からmまでの番号で識別する。尚、ある番号cのカテゴリC(c)とカテゴリC(c+1)の境界条件となるレート・歪み勾配のしきい値をT(c)と表す。ここで、T(c)とT(c+1)には、T(c)>T(c+1)の関係がある。
ここで、Si(k)≧T(1)となる符号化パスは、カテゴリC(1)に分類され、T(c−1)>Si(k)≧T(c)となる符号化パスは、カテゴリC(c)に分類され、T(m−1)>Si(k)となる符号化パスは、カテゴリC(m)に分類される。
また、カテゴリ情報格納部103には、図12に示すようなテーブルを用意しておき、各カテゴリ毎に累積符号量RC(c)を保持する。すなわち、図12は、カテゴリ情報格納部102に保持されるカテゴリの情報を示す図である。尚、符号化処理の開始時には各カテゴリの累積符号量RC(c)を全て0に初期化する。
図1において、符号化対象画像は、画像データ入力部200から入力され、コードブロック符号化部204までの処理によって、前述した一般的な画像符号化装置でのJPEG2000符号化の場合と同様にしてコードブロックに分割され、コードブロック単位に符号化される。
カテゴリ情報生成部101では、コードブロック符号化部204により1つのコードブロックBiの符号化処理が行われ、レート・歪み勾配の単調減少化処理が行われると、コードブロック情報格納部207に格納されるコードブロックBiの打ち切り候補点の情報を参照して、カテゴリ情報格納部102に保持される各カテゴリの総符号量を更新する。
図13は、カテゴリ情報生成部101における各カテゴリの符号量更新処理の流れを示す図である。以下、図13を用いて、カテゴリ情報生成部101の処理の流れについて説明する。
コードブロック符号化部204により着目するコードブロックBiの符号化処理が終了すると、まず、コードブロック情報格納部207に図9に示すような形式で格納されているコードブロックBiの情報から、符号打ち切り候補点の集合Niの要素数NPを読み出す(ステップS1301)。次に、カテゴリを表す変数cに1を設定し(ステップS1302)、打ち切り候補点の番号を表す変数jを0に設定する(ステップS1303)。続いて、変数jに1を加える(ステップS1304)。
そして、コードブロック情報格納部207からj番目の打ち切り候補点の情報を読み出す(ステップS1305)。ここで、打ち切り候補点の情報とは、打ち切り符号化パス番号k、レート・歪み勾配Si(k)及び符号量Ri(k)である。そして、レート・歪み勾配Si(k)をカテゴリのしきい値T(c)と比較する(ステップS1306)。その結果、Si(k)≧T(c)ならば(No)、着目する符号化パスをカテゴリC(c)に分類し、ステップS1309へ処理を移す。一方、Si(k)<T(c)ならば(Yes)、カテゴリの番号を表す変数cに1を加えて、次のカテゴリに比較対象を変更する(ステップS1307)。
次いで、変数cとカテゴリの数mを比較し(ステップS1308)、c=mならば(Yes)、着目する符号化パスをカテゴリC(m)に分類してステップS1309へと処理を移し、c≠mならば(No)、ステップS1306へ処理を移す。ステップS1309では、カテゴリの累積符号量RC(c)に着目するパスの符号量Ri(k)を加えて更新する。そして、打ち切り候補点の番号を表す変数jをNPと比較し(ステップS1310)、j≠NPならば(No)、ステップS1304へ戻って、次の候補点について同様にステップS1305からステップS1309の処理を行う。一方、j=NPならば(Yes)、着目するコードブロックBiについての処理を終了する。
コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いてカテゴリ情報生成部101により最終コードブロックについてのカテゴリ情報更新処理が終了すると、符号列形成部103は、カテゴリ情報格納部102に格納される各カテゴリの総符号量とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照して、総符号量R=Rmax、或いはR≒Rmaxとなる最大のλを探し、符号列格納部206からSi(k)>λとなる部分の符号を集めて符号列(例えば、JPEG2000符号列)を形成し、符号出力部208へ出力する。
図15は、画像符号化装置の符号列形成部103で実施されるしきい値決定処理の流れを説明するためのフローチャートである。尚、前述した従来例で説明した符号列形成部205におけるしきい値決定処理(図14)と共通するステップについては同じ番号を用い、説明を省略する。
まず、目標符号量Rmaxがカテゴリ内となる境界カテゴリcを求める(ステップS1501)。具体的には、カテゴリC(1)からC(m)に向かって順に累積符号量RC(c)を加算していき、ΣRC(c)>Rmaxとなる最小のcを求める。すなわち、累積符号量が目標符号量以上になったときのカテゴリを境界カテゴリとして選択する。次いで、境界カテゴリcが1かどうかを判定し(ステップS1502)、1であれば(Yes)、図14に示した従来のしきい値決定処理へと移行する。一方、境界カテゴリcが1でない場合(No)は、ステップS1503に処理を移す。
ステップS1503では、しきい値Sの初期値としてT(c−1)を設定する。その後、上述した図14に示すステップS1403からステップS1408までの処理を行う。そして、ステップS1408において、iが64と判定された場合、すなわち、識別番号i=0〜63までの全コードブロックが終了した場合、累積符号量Rと目標符号量Rmaxとを比較する(ステップS1504)。その結果、R<Rmaxの場合(Yes)は、ステップS1403に戻って、しきい値Sを少しだけ(ΔS)小さくしてから再度、累積符号量Rを算出する上記処理を行う。一方、R≧Rmaxの場合(No)はステップS1411へと処理を移す。ステップS1411へと処理が移された場合には、現在のしきい値Sでは目標符号量を超えるため、ΔSを加えて一つ前のしきい値Sに戻して処理を終了する(ステップS1411)。
上述したように、従来のしきい値決定処理では、SmaxからSminまでの範囲で目標符号量となるしきい値を探索していたのに対し、本実施例に係る画像符号化装置では、カテゴリ毎の累積符号量を保持しておくことにより、しきい値探索の範囲を境界カテゴリ内に限定することができる。このように、各コードブロックの符号打ち切り候補点をカテゴリ分類して、各カテゴリの総符号量を保持しておくことにより、目標符号量R以下となる最大のλを探索する範囲を限定することができ、画像圧縮時の画像符号化における符号量(レート)・歪み最適化処理に要する演算コストを好適に低減することができる。
前述した第1の実施例に係る画像符号化装置では、符号量(レート)・歪み勾配のカテゴリ毎に累積符号量を保持し、目標符号量にまたがるカテゴリ(境界カテゴリ)の内部でしきい値探索することで、レート・歪み最適化処理の簡易化を図った。ここで、カテゴリ数を多くして、十分細かく分類するようにした場合、或いは、多少の性能低下が許容できるような場合には、境界カテゴリ内のしきい値探索処理を省略することも可能である。以下、第2の実施例では、境界カテゴリ内のしきい値探索を行わない画像符号化装置による符号化処理の例について説明する。
本実施例に係る画像符号化装置は、上記第1の実施例における図1で説明した画像符号化装置と、符号列形成部103の処理のみ異なり、その他については同一のものを用いる。以下、本実施例に係る画像符号化装置の符号列形成部103の処理について説明する。尚、本実施例に係る画像符号化装置で符号化対象とする画像符号化データは、前述の従来例や第1の実施例と同じく、512×512の各画素8ビットのモノクロ画像データとし、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択等の符号化の条件についても従来例や第1の実施例と同じである。
図1に示すように、符号列形成部103は、コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いてカテゴリ情報生成部101により最終コードブロックについてのカテゴリ情報更新処理が終了すると、カテゴリ情報格納部102に格納される各カテゴリの総符号量とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照し、符号列格納部206から符号列を集めてJPEG2000符号列を形成し、符号出力部208へ出力する。
尚、本実施例では、境界カテゴリの番号cを求め、コードブロック番号ti−1までは境界カテゴリC(c)までの符号を、また、コードブロック番号ti以上についてはカテゴリC(c−1)までの符号を読み出してJPEG2000符号列を形成する。すなわち、本実施例では、境界カテゴリよりも優先度の高いカテゴリに含まれる全符号化データと境界カテゴリに含まれる一部又は全部の符号化データとを用いて符号列を形成する。ここで、境界カテゴリに含まれる一部又は全部の符号化データとは、境界カテゴリに含まれる符号化データのうち、符号列の符号量が目標符号量に達するようになるためのデータである。
図16は、本発明の第2の実施例に係る画像符号化装置の符号列形成部103で実施されるコードブロック番号のしきい値tiの決定処理の流れを説明するためのフローチャートである。まず、境界カテゴリcを求める(ステップS1601)。尚、ステップS1601の処理は、第1の実施例における符号列形成部103のしきい値決定処理で説明したステップS1501(図15)と同じである。
次に、累積符号量RにRC(c−1)を設定し(ステップS1602)、コードブロック番号のしきい値tiの初期値として0を設定する(ステップS1603)。さらに、着目するコードブロックtiについて、カテゴリc−1に含まれる符号打ち切り候補点の最大値k1を求める(ステップS1604)。最大値k1は、符号打ち切り点の順番にレート・歪み勾配Sti(k1)をT(c−1)と比較し、Sti(k1)≧T(c−1)となる最大のk1を求めることで得られる。
同様に、カテゴリcに含まれる符号打ち切り点の最大値k2を求める(ステップS1605)。次いで、累積符号量RにRti(k2)−Rti(k1)を加える(ステップS1606)。続いて、累積符号量Rを目標符号量Rmaxと比較する(ステップS1607)。その結果、R<Rmaxの場合(Yes)はtiの値を1つ増加させ(ステップS1608)、ステップS1604へ処理を移し、上述した符号量の累積を継続する。一方、R≧Rmaxの場合(No)は処理を終了し、終了時点でのtiをコードブロック番号のしきい値とする。
上述したように、本実施例に係る画像符号化装置で得られるJPEG2000符号列には、全てのコードブロックでカテゴリC(c−1)までの符号列が含まれ、さらに目標符号量に達するまでコードブロックの順番でカテゴリC(c)の符号列が含まれる。本実施例で説明した画像符号化処理は、第1の実施例における画像符号化処理と比較して、レート・歪み最適化の点ではやや効率低下を伴うが、さまざまなしきい値で符号量の見積もりをする必要がなく、より簡易にレート・歪み特性の向上を行うことができる。
前述した第1の実施例に係る画像符号化装置では、レート・歪み勾配のカテゴリ毎に累積符号量を保持し、目標符号量にまたがるカテゴリ(境界カテゴリ)の内部でしきい値探索することでレート・歪み最適化処理の簡易化を図った。すなわち、境界カテゴリ内部でのしきい値探索では、しきい値を少しずつ変化させながら目標符号量となるしきい値を探索する。これに対し、本実施例では、境界カテゴリとその直前のカテゴリ(優先度が1段階高いカテゴリ)の情報からしきい値λを推定することで、より効率的にしきい値探索する例について説明する。
本実施例に係る画像符号化装置は、第1の実施例において説明した図1のブロック図で示される画像符号化装置と符号列形成部103の処理のみ異なり、その他は同一のものである。以下、第3の実施例に係る画像符号化装置における符号列形成部103の処理について説明する。尚、本実施例に係る画像符号化装置で符号化対象とする画像符号化データは、前述した従来例、第1及び第2の実施例と同じく、512×512の各画素8ビットのモノクロ画像データとし、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択等の符号化の条件についても、従来例、第1及び第2の実施例と同じである。
コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いてカテゴリ情報生成部101により最終コードブロックについてのカテゴリ情報更新処理が終了すると、符号列形成部103は、カテゴリ情報格納部102に格納される各カテゴリの総符号量とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照し、総符号量R=Rmax、或いはR≒Rmaxとなる最大のλを探して、符号列格納部206からSi(k)>λとなる部分の符号を集めてJPEG2000符号列を形成し、符号出力部208へ出力する。
図17は、第3の実施例に係る画像符号化装置の符号列形成部103におけるしきい値決定処理の手順を説明するためのフローチャートである。まず、境界カテゴリ番号cを求める(ステップS1701)。具体的には、カテゴリC(1)からC(m)に向かって順に累積符号量RC(c)を加算していき、ΣRC(c)>Rmaxとなる最小のcを求める。次いで、cの値が1であるかどうかを判断する(ステップS1702)。
その結果、cが1である場合(Yes)は、コードブロック情報格納部207に格納される全コードブロックの打ち切り候補点の情報を参照して、Si(k)の最大値Smaxを求める(ステップS1713)。続いて、最小値SminにT(c)を設定し(ステップS1714)、後述するSmax、Smin間のしきい値探索処理に移る。
一方、ステップS1702において境界カテゴリcが1でない場合(No)には、図18に示すように、境界カテゴリcの一つ前のカテゴリC(c−1)(すなわち、当該カテゴリは、境界カテゴリよりも1段階優先度が高いカテゴリである。)までの累積符号量Rとレート・歪み勾配のしきい値T(c−1)と、境界カテゴリC(c)までの累積符号量Rとレート・歪み勾配のしきい値T(c)を結ぶ線分を考え、目標符号量Rmaxに対応するレート・歪み勾配Sを算出する(ステップS1703)。図18は、第3の実施例における境界カテゴリC(c)とカテゴリC(c−1)の情報からRmaxに対応するしきい値Sを推定する様子を示す図である。ここで、しきい値Sは以下の式(4)を用いて算出される。
次いで、ステップS1704では、コードブロックの番号を表す変数iを0に、累積符号量Rを0に設定する。次に、着目するコードブロックiについて、Si(k)≧Sとなる最大のkを求める(ステップS1705)。そして、累積符号量RにRi(k)を加算する(ステップS1706)。また、コードブロック番号iを64と比較して(ステップS1707)、i<64の場合(Yes)はiに1を加算し(ステップS1708)、ステップS1705へ戻る。
一方、ステップS1707でi≠64の場合(No)は、累積符号量RをRmaxと比較して(ステップS1709)、R≦Rmaxの場合(Yes)はステップS1710へ、R>Rmaxの場合(No)はステップS1711へ分岐する。
ここで、R>Rmaxの場合(No)は、勾配の最大値SmaxにT(c−1)を、最小値SminにSを設定し(ステップS1711)、後述するSmax、Smin間のしきい値探索処理へと移る。一方、R≦Rmaxの場合(Yes)は、Rが十分にRmaxに近い値かどうかを判定し(ステップS1709)、R≒Rmaxの場合(Yes)は処理を終了し、そうでない場合(No)はSmaxにSを、SminにT(c)を設定して、Smax、Smin間のしきい値探索処理へ移る。
尚、Smax、Smin間のしきい値探索処理は、従来例の説明で述べた符号列形成部205におけるしきい値探索処理(図14)で、最初のSmax、Sminの探索(ステップS1401)を除いたものである。
以上述べたように、レート・歪み勾配のカテゴリ分割を行い、目標符号量にまたがるカテゴリ(境界カテゴリ)周囲のカテゴリの累積符号量、しきい値の情報から、目標符号量に相当するしきい値を推定することにより、より効率的に境界カテゴリ内のしきい値探索を行うことができる。
図21は、本発明の第4の実施例に係る画像符号化装置の構成を示すブロック図である。前述の従来例や第1の実施例に係る画像符号化装置と共通するブロックについては同じ記号を用い、説明を省略する。図21に示すように、第4の実施例に係る画像符号化装置は、画像データ入力部200、離散ウェーブレット変換部201、係数量子化部202、コードブロック分割部203、コードブロック符号化部204、符号列格納部206、コードブロック情報格納部207、符号出力部208、区間分割部2101及び符号列形成部2102を備える。
以下、図21を参照して、本実施例に係る画像符号化装置の動作手順について説明する。
本実施例に係る画像符号化装置で符号化対象とする画像符号化データは、前述した従来例等と同じく、512×512の各画素8ビットのモノクロ画像データとする。また、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択等の符号化の条件についても従来例等と同じである。
符号化対象画像は、画像データ入力部200から入力され、従来例と同様にして画像データ入力部200からコードブロック符号化部204までの処理により、コードブロックに分割され、コードブロック単位に符号化される。
そして、全てのコードブロックがコードブロック符号化部204で符号化されると、区間分割部2101はコードブロック情報格納部207に格納されるコードブロックBiの打ち切り候補点の情報を参照して、レート・歪み勾配の最大値と最小値を算出し、その区間をN個の区間に分割(N分割)し、各区間分割点における符号量を求めて図20に示すようなテーブルを作成して、不図示の内部バッファに格納する。
図20は、第4の実施例における区間分割部2101に保持される区間情報を示す図である。本実施例では、図20に示すように、N個の区間をレート・歪み勾配の急な区間から順に1から番号を付けてK(1)、K(2)、…、K(N)のようにK(n)の形式で表す。また、区間K(n)と区間K(n+1)の境界となるレート・歪み勾配のしきい値をT(n)、区間K(n)までに含まれる累積符号量をRK(n)と表す。
図19は、第4の実施例に係る画像符号化装置の区間分割部2101における区間分割処理と区間情報生成処理の手順を説明するためのフローチャートである。以下、図19を用いて、区間分割部2101における処理の流れについて説明する。
コードブロック符号化部204により全てのコードブロックの符号化処理が終了すると、区間分割部2101は、コードブロック情報格納部207に格納される全コードブロックの打ち切り候補点の情報を参照して、レート・歪み勾配の最大値Smax、最小値Sminを求める(ステップS1901)。次に、Smax、Smin間をN分割して、各区間のしきい値T(n)を定める(ステップS1902)。ここで、本実施例では、図26に示すようにSmax、Smin間を等間隔に区間分割するものとする。図26は、区間分割部2101においてSmax、Smin間をN区間に等間隔に分割する様子を示す図である。従って、しきい値T(n)は以下の式(5)を用いて求めることができる。
区間のしきい値T(n)が定まった後、続いて、各コードブロックから区間の符号量K(n)を求める処理に移る。そこで、コードブロック番号を表す変数iを0に初期化する(ステップS1903)。次に、着目するコードブロックBiについて、各符号打ち切り点毎にどの区間に属するかを判断して、属する区間の符号量RK(n)を更新する(ステップS1904)。尚、ステップS1904の具体的処理については後述する。次に、変数iを1増加させ(ステップS1905)、そのiを64と比較する(ステップS1906)。その結果、i=64の場合(Yes)は処理を終了し、そうでない場合(No)はステップS1904に戻って処理を継続する。
ここで、ステップS1904の処理について詳細に説明する。図27は、区間分割部2101における各区間の符号量を更新するにステップS1904の処理の手順を説明するためのフローチャートである。まず、コードブロック情報格納部207に前述した図9に示すような形式で格納されているコードブロックBiの情報から、符号打ち切り候補点の集合Niの要素数NPを読み出す(ステップS2701)。次に、区間番号を表す変数nに1を(ステップS2702)、打ち切り候補点の番号を表す変数jを0に設定する(ステップS2703)。続いて、変数jに1を加える(ステップS2704)。
さらに、コードブロック情報格納部207からj番目の打ち切り候補点の情報を読み出す(ステップS2705)。ここで、打ち切り候補点の情報とは、打ち切り符号化パス番号k、レート・歪み勾配Si(k)、符号量Ri(k)である。その後、レート・歪み勾配Si(k)を区間K(n)のしきい値T(n)と比較する(ステップS2706)。
その結果、Si(k)≧T(n)の場合(No)、着目する符号化パスは区間K(n)に含まれるとしてステップS2709へ処理を移す。一方、Si(k)<T(n)の場合(Yes)、区間の番号を表す変数nに1を加えて、次の区間に比較対象を変更する(ステップS2707)。そして、変数nと区間の数Nを比較する(ステップS2708)。
その結果、n=Nの場合(Yes)、着目する符号化パスは区間K(n)に属すると判断して、ステップ2709へと処理を移す。一方、n≠Nの場合(No)はステップS2706へと処理を移す。
ステップS2709では、区間の累積符号量RK(n)に着目するパスの符号量Ri(k)を加えて更新する。その後、打ち切り候補点の番号を表す変数jをNPと比較する(ステップS2710)。その結果、j≠NPの場合(No)はステップS2704へ戻って、次の候補点について、同様にステップS2705からステップS2709の処理を行う。一方、j=NPの場合(Yes)は着目するコードブロックBiについての処理を終了する。
以上の処理により、区間分割部2101内部の不図示のバッファに図20に示す形式のテーブルを構築することができる。
符号列形成部2102は、コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いて区間分割部2101により区間分割と区間情報の生成処理が終了すると、区間分割部2101の内部に格納される区間情報とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照して、総符号量R=Rmax、或いはR≒Rmaxとなる最大のλを探して、符号列格納部206からSi(k)>λとなる部分の符号を集めてJPEG2000符号列を形成し、符号出力部208へ出力する。
図22は、第4の実施例に係る画像符号化装置の符号列形成部2102におけるしきい値決定処理手順を説明するためのフローチャートである。図22のフローチャートでは、従来例等で説明した符号列形成部205におけるしきい値決定処理(図14)と共通するステップについては同じ番号を用い、説明を省略する。
符号列形成部2102では、まず、目標符号量Rmaxを含む区間(「境界区間」と呼ぶ。)を選択する(ステップS2201)。具体的には、区間K(1)からK(N)に向かって順に累積符号量RK(n)を加算していき、ΣRK(n)>Rmaxとなる最小のnを求める。次いで、nの値が1であるかどうかを判断する(ステップS2202)。その結果、n=1の場合(Yes)、図14で示した従来のしきい値決定処理へと移行し、n≠1の場合(No)はステップS2203に処理を移す。
ステップS2203では、しきい値Sの初期値としてT(n−1)を設定する。次いで、累積符号量Rと目標符号量Rmaxとを比較し(ステップS2204)、R<Rmaxの場合(Yes)はステップS1403に戻って、しきい値Sを少しだけ(ΔS)小さくしてから再度、累積符号量Rを算出する。一方、R≧Rmaxの場合(No)は、ステップS1411へと処理を移す。ステップS1411へと処理が移された場合には、現在のしきい値Sでは目標符号量を超えるため、ΔSを加えて一つ前のしきい値Sに戻して処理を終了する(ステップS1411)。
このように、従来のしきい値決定処理では、SmaxからSminの範囲で目標符号量となるしきい値を探索したのに対し、本実施例に係る画像符号化装置では区間毎の累積符号量を保持しておくことにより、しきい値探索の範囲を境界区間内に限定することができる。
すなわち、Smax、Smin間をN区間に分割し、各区間の総符号量を求めることにより、目標符号量R以下となる最大のλを探索する範囲を境界区間内に限定することができ、処理の簡易化を図ることができる。
前述の第4の実施例に係る画像符号化装置では、レート・歪み勾配の最大、最小値間をN個の区間に分割し、目標符号量を含む区間(境界区間)の内部でしきい値探索することでレート・歪み最適化処理の簡易化を図った。ここで、区間分割数Nを多くして、ある程度細かく区分した場合、或いは、多少の性能低下が許容できる場合には、境界区間内のしきい値探索処理を省略することも可能である。以下、境界区間内のしきい値探索を行わない実施例について説明する。
本実施例に係る画像符号化装置のブロック図は第4の実施例で説明した図21に示す画像符号化装置と同じであり、符号列形成部2102の処理のみ異なる。以下、第5の実施例に係る画像符号化装置の符号列形成部2102の処理について説明する。尚、本実施例に係る画像符号化装置で符号化対象とする画像符号化データは、前述の従来例や第4の実施例等と同じく、512×512の各画素8ビットのモノクロ画像データとし、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択等の符号化の条件についても前述の実施例等と同じである。
符号列形成部2102では、コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いて区間分割部2101により区間分割と、区間情報生成処理が終了すると、区間分割部2101の内部に格納される各区間の情報とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照し、符号列格納部206から符号列を集めてJPEG2000符号列を形成し、符号出力部208へ出力する。本実施例では、境界区間の番号nを求め、所定のコードブロック番号ti−1まではT(n)をしきい値としてSi(k)≧T(n)までの符号を読み出し、また、コードブロック番号ti以上についてはT(n−1)をしきい値としてSi(k)≧T(n−1)までの符号を読み出してJPEG2000符号列を形成する。すなわち、本実施例では、境界区間よりも上位の区間に含まれる全符号化データと境界区間に含まれる一部又は全部の符号化データとを用いて符号列を形成する。ここで、境界区間に含まれる一部又は全部の符号化データとは、境界区間に含まれる符号化データのうち、符号列の符号量が目標符号量に達するようになるためのデータである。
図23は、第2の実施例に係る画像符号化装置における符号列形成部2102で実施されるコードブロック番号のしきい値tiを決定する処理の流れを説明するためのフローチャートである。まず、境界区間nを求める(ステップS2301)。ステップS2301の処理は、第4の実施例における符号列形成部2102のしきい値決定処理で説明したステップS2201(図22)と同じである。
次に、累積符号量RにRK(n−1)を設定し(ステップS2302)、コードブロック番号のしきい値tiの初期値として0を設定する(ステップS2303)。そして、着目するコードブロックtiについて、区間n−1に含まれる符号打ち切り候補点の最大値k1を求める(ステップS2304)。k1は、符号打ち切り点の順番にレート・歪み勾配Sti(k1)をT(n−1)と比較し、Sti(k1)≧T(n−1)となる最大のk1を求めることで得られる。
同様に、区間nに含まれる符号打ち切り点の最大値k2を求める(ステップS2305)。そして、累積符号量RにRti(k2)−Rti(k1)を加える(ステップS2306)。続いて、累積符号量Rを目標符号量Rmaxと比較し(ステップS2307)、R<Rmaxの場合(Yes)はtiの値を1つ増加させ(ステップS2308)、ステップS2304へ処理を移し、符号量の累積を継続する。一方、R≧Rmaxの場合(No)は処理を終了し、終了時点でのtiをコードブロック番号のしきい値とする。
上述したように、本実施例に係る画像符号化装置で得られるJPEG2000符号列には、全てのコードブロックで区間K(n−1)までの符号列が含まれ、さらに目標符号量に達するまでコードブロックの順番で区間K(n)の符号列が含まれる。本実施例の符号化処理は、第4の実施例と比べて、レート・歪み最適化の点ではやや効率低下を伴うが、符号量の見積もりが必要なのは各区間境界となるしきい値のみであり、より簡易にレート・歪み特性の向上を行うことができる。
前述した第4の実施例に係る画像符号化装置では、レート・歪み勾配の最大値、最小値間をN区間に分割し、目標符号量にまたがる区間(境界区間)の内部でしきい値探索することでレート・歪み最適化処理の簡易化を図ったが、境界区間内部でのしきい値探索では、しきい値を少しずつ変化させながら目標符号量となるしきい値を探索する処理が必要となる。そこで、本実施例では、各区間の情報からしきい値λを推定することで、より効率的にしきい値探索する例について説明する。
本実施例に係る画像符号化装置は、第4の実施例の説明に用いた図21のブロック図で示される画像符号化装置と符号列形成部2102の処理のみ異なり、その他は同じものである。以下、第6の実施例に係る画像符号化装置における符号列形成部2102の処理について説明する。尚、本実施例に係る画像符号化装置で符号化対象とする画像符号化データは、前述した従来例や第4、第5の実施例と同じく、512×512の各画素8ビットのモノクロ画像データとし、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択等の符号化の条件についても同様である。
符号列形成部2102では、コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いて区間分割部2101により区間分割と、区間情報の生成処理が終了すると、区間分割部2101の内部に格納される各区間の情報とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照し、総符号量R=Rmax、或いはR≒Rmaxとなる最大のλを探して、符号列格納部206からSi(k)>λとなる部分の符号を集めてJPEG2000符号列を形成し、符号出力部208へ出力する。
図24は、第6の実施例に係る画像符号化装置の符号列形成部2102におけるしきい値決定処理の流れを説明するためのフローチャートである。まず、境界区間の番号nを求める(ステップS2401)。具体的には区間K(1)からK(N)に向かって順に累積符号量RK(n)を加算していき、ΣRK(n)>Rmaxとなる最小のnを求める。
そして、nの値が1かどうかを判断し(ステップS2402)、n=1の場合(Yes)は、ステップS2413へと処理を移し、それ以外の場合(No)にはステップ2403へと進む。ステップS2413では、区間分割部2101の処理で得たレート・歪み勾配の最大値Smaxを読み出す。続いて、最小値にT(n)を設定し(ステップS2414)、後述するSmax、Smin間のしきい値探索処理に移る。
一方、ステップS2402で境界区間の番号nが1以外である場合(No)は、図25に示すように、境界区間K(n)の一つ前(すなわち、1段階上位)の区間K(n−1)までの累積符号量とレート・歪み勾配のしきい値T(n−1)と、境界区間K(n)までの累積符号量とレート・歪み勾配のしきい値T(n)を結ぶ線分を考え、目標符号量Rmaxに対応するレート・歪み勾配のしきい値Sを算出(推定)する(ステップS2403)。ここで、図25は、境界区間K(n)と区間K(n−1)の情報からRmaxに対応するしきい値Sを推定する様子を説明するための図である。しきい値Sは以下の式(6)により算出される。
ステップS2404では、コードブロックの番号を表す変数iを0に、累積符号量Rを0に設定する。次に、着目するコードブロックiについて、Si(k)≧Sとなる最大のkを求める(ステップS2405)。そして、累積符号量RにRi(k)を加算する(ステップS2406)。さらに、コードブロック番号iを64と比較して(ステップS2407)、i<64の場合(Yes)はiに1を加算し(ステップS2408)、ステップS2405へ戻る。一方、i<64でない場合(No)はステップS2409に処理を移す。
ステップS2409では、累積符号量RをRmaxと比較し、R≦Rmaxの場合(Yes)はステップS2410へ、R>Rmaxの場合(No)はステップS2411へ分岐する。
すなわち、R>Rmaxの場合は、勾配の最大値SmaxにT(n−1)を、最小値SminにSを設定し(ステップS2411)、後述するSmax、Smin間のしきい値探索処理へと移る。
一方、R≦Rmaxの場合は、Rが十分にRmaxに近い値かどうか(R≒Rmax)を判定し(ステップS2410)、Rmaxに十分近い値である場合(Yes)は処理を終了し、そうでない場合(No)は、SmaxにSを、SminにT(n)を設定してSmax、Smin間のしきい値探索処理へ移る(ステップS2412)。
尚、Smax、Smin間のしきい値探索処理は、従来例の説明で述べた符号列形成部205のしきい値探索処理(図14)で、最初のSmax、Sminの探索(ステップS1401)を除いたものである。
以上述べたように、本実施例では、レート・歪み勾配の最大値、最小値間をN分割し、目標符号量にまたがる区間(境界区間)の周囲の区間の累積符号量、しきい値の情報から、目標符号量に相当するしきい値を推定することにより、より効率的に境界区間内のしきい値探索を行うことができる。
図28は、本発明の第7の実施例に係る画像符号化装置の構成を示すブロック図である。図28においては、前述した従来例や第1〜第6の実施例と共通するブロックについては同一の記号を用い、説明を省略する。以下、本実施例に係る画像符号化装置の動作について説明する。尚、本実施例に係る画像符号化装置で符号化対象とする画像符号化データは、前述の従来例や第1〜第6の実施例と同じく、512×512の各画素8ビットのモノクロ画像データとし、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択等の符号化の条件についても従来例、第1〜第6の実施例と同じである。
境界カテゴリ探索部2801では、コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いてカテゴリ情報生成部101により最終コードブロックについてのカテゴリ情報更新処理が終了すると、カテゴリ情報格納部102に格納される各カテゴリの情報を参照して目標符号量Rを含む境界カテゴリC(c)を求め、区間分割部2802へ境界カテゴリ番号を出力する。
区間分割部2802では、カテゴリ情報格納部102から境界カテゴリC(c)のしきい値T(c−1)とT(c)を読み出し、その区間をN分割して各区間分割点における符号量を求めて図20のようなテーブルを作成し、不図示の内部バッファに格納する。図20では、N個の区間をレート・歪み勾配の急な区間から順に1から番号を付けてK(1)、K(2)、…、K(N)のようにK(n)の形式で表す。また、区間K(n)と区間K(n+1)の境界となるレート・歪み勾配のしきい値をT(n)、区間K(n)に含まれる符号量をRK(n)と表す。
区間分割部2802における区間分割、区間情報生成処理の流れは、前述した第4の実施例に係る画像符号化装置の区間分割部2101における処理とステップS1901を除いて同一である。前述の区間分割部2101では、ステップS1901でレート・歪み勾配の最大値Smaxと最小値Sminを全コードブロックの符号打ち切り候補点から探索したが、区間分割部2802では境界カテゴリ探索部2801から指定される境界カテゴリ番号cに基づき、カテゴリ情報格納部102からT(c−1)、T(c)を読み出し、T(c−1)をSmax、T(c)をSminとして以降の処理を行う。但し、c=1の場合には、全コードブロックの符号打ち切り点から最大値を探索してSminとする。
以上述べたように、本実施例では、レート・歪み勾配のカテゴリ分割を行い、目標符号量にまたがるカテゴリ(境界カテゴリ)を求め、さらに境界カテゴリ内部をN区間に分割して境界区間を求める、境界区間内で目標符号量に相当するしきい値を推定することにより、より効率的に境界カテゴリ内のしきい値探索を行うことができる。
本発明は、上述した実施例だけに限定されるものではない。例えば、上述した第1から第7の実施例においては、タイル分割なし、離散ウェーブレット変換2回、9×7非可逆フィルタ(9-7 Irreversible Filter)使用、コードブロックサイズは64×64、1レイヤでの符号列形成として説明したが、JPEG2000符号化の条件を変更した場合にも適用できる。例えば、複数のビットレートでレイヤ構成する場合、それぞれのレイヤで目標符号量Rmaxを設定することにより適用することができる。その他、離散ウェーブレット変換のフィルタ、適用回数等を変更しても構わないことは言うまでもない。
また、本発明はJPEG2000での実施に好適であるが、符号化データを小区分に分けて符号量、歪み指標値を得られるその他の符号化方式においても適用することが可能である。
また、上述の実施例では、コードブロック情報格納部、符号列格納部のように、目的に応じてブロックを定義しているが、単一の格納部(記憶領域)を用意して、使い分けるようにするような構成としても構わない。
また、上述の実施例ではコードブロック情報格納部、カテゴリ情報格納部、符号列格納部のように目的に応じてブロックを定義しているが、単一の記憶領域を用意して使い分けるような構成としても構わない。
また、上述の実施例では、512×512の各画素8ビットのモノクロ画像データを符号化対象画像として説明したが、その他のサイズ、ビット深度の画像、各画素が複数の色成分で表されたカラー画像など、その他の画像データに適用しても構わない。さらに、動画像の各フレーム、フィールドなどに対して適用しても構わない。
尚、本発明は、複数の機器(例えば、ホストコンピュータ、インタフェース機器、リーダ、プリンタ等)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置等)に適用してもよい。
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体(又は記憶媒体)を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU)が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
本発明の第1の実施例に係る画像符号化装置の構成を示すブロック図である。
一般的なJPEG2000符号化を行う画像符号化装置の構成を示すブロック図である。
2次元離散ウェーブレット変換によって処理される符号化対象画像のサブバンドを説明するための図である。
有効符号化パスの数がki_maxであるコードブロックBiについて符号打ち切り点niを決定する処理の手順を説明するためのフローチャートである。
符号打ち切り点の候補を選択する処理の流れを説明するためのフローチャートである。
2回の2次元離散ウェーブレット変換によって得られる7つのサブバンドを説明するための図である。
コードブロック分割部203におけるコードブロック分割の様子を示す図である。
コードブロック符号化部204の内部に構築されるコードブロックBiの情報の例を示す図である。
コードブロック情報格納部207に格納される符号打ち切り候補点の情報の例を示す図である。
コードブロックの各パスのレートと歪みの関係の一例を示す図である。
上述した単調減少化処理によりパスが統合される様子を示す図である。
カテゴリ情報格納部102に保持されるカテゴリの情報を示す図である。
カテゴリ情報生成部101における各カテゴリの符号量更新処理の流れを示す図である。
符号列形成部205におけるλ決定の処理の流れを説明するためのフローチャートである。
画像符号化装置の符号列形成部103で実施されるしきい値決定処理の流れを説明するためのフローチャートである。
本発明の第2の実施例に係る画像符号化装置の符号列形成部103で実施されるコードブロック番号のしきい値tiの決定処理の流れを説明するためのフローチャートである。
第3の実施例に係る画像符号化装置の符号列形成部103におけるしきい値決定処理の手順を説明するためのフローチャートである。
第3の実施例における境界カテゴリC(c)とカテゴリC(c−1)の情報からRmaxに対応するしきい値Sを推定する様子を示す図である。
第4の実施例に係る画像符号化装置の区間分割部2101における区間分割処理と区間情報生成処理の手順を説明するためのフローチャートである。
第4の実施例における区間分割部2101に保持される区間情報を示す図である。
本発明の第4の実施例に係る画像符号化装置の構成を示すブロック図である。
第4の実施例に係る画像符号化装置の符号列形成部2102におけるしきい値決定処理手順を説明するためのフローチャートである。
第2の実施例に係る画像符号化装置における符号列形成部2102で実施されるコードブロック番号のしきい値tiを決定する処理の流れを説明するためのフローチャートである。
第6の実施例に係る画像符号化装置の符号列形成部2102におけるしきい値決定処理の流れを説明するためのフローチャートである。
境界区間K(n)と区間K(n−1)の情報からRmaxに対応するしきい値Sを推定する様子を説明するための図である。
区間分割部2101においてSmax、Smin間をN区間に等間隔に分割する様子を示す図である。
区間分割部2101における各区間の符号量を更新するにステップS1904の処理の手順を説明するためのフローチャートである。
本発明の第7の実施例に係る画像符号化装置の構成を示すブロック図である。
符号の説明
101 カテゴリ情報生成部
102 カテゴリ情報格納部
103 符号列形成部
200 画像データ入力部
201 離散ウェーブレット変換部
202 係数量子化部
203 コードブロック分割部
204 コードブロック符号化部
205 符号列形成部
206 符号列格納部
207 コードブロック情報格納部
208 符号出力部