JP2005150842A - 画像データ符号化装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 - Google Patents
画像データ符号化装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 Download PDFInfo
- Publication number
- JP2005150842A JP2005150842A JP2003381638A JP2003381638A JP2005150842A JP 2005150842 A JP2005150842 A JP 2005150842A JP 2003381638 A JP2003381638 A JP 2003381638A JP 2003381638 A JP2003381638 A JP 2003381638A JP 2005150842 A JP2005150842 A JP 2005150842A
- Authority
- JP
- Japan
- Prior art keywords
- code amount
- block
- counter
- distortion
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
【課題】 特にJPEG2000等の画像符号化におけるコードブロックのレート・歪み最適化処理に要する演算量、及びメモリアクセス回数を低減を図ることができる。
【解決手段】 JPEG2000の符号化処理で選れたコードブロックB0,B1,…を並列に巡回するカウンタCU(0)乃至CU(3)を用意する。そして、各コードブロックにおける符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λの最大値Smax,SminをN分割した際の閾値を小さい順に各カウンタに割り当てる。そして、各カウンタでそれぞれの符号量を累積加算させ、オーバーフローした際には、未割り当ての閾値のうち最小値を割り当てることを行う。そして、全コードブロックを一巡し、尚且つ、オーバーフローしなかったカウンタに設定された閾値を限定後の最大値Smax、それより1つ小さな閾値を限定後のSminとして更新する。
【選択図】 図16
【解決手段】 JPEG2000の符号化処理で選れたコードブロックB0,B1,…を並列に巡回するカウンタCU(0)乃至CU(3)を用意する。そして、各コードブロックにおける符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λの最大値Smax,SminをN分割した際の閾値を小さい順に各カウンタに割り当てる。そして、各カウンタでそれぞれの符号量を累積加算させ、オーバーフローした際には、未割り当ての閾値のうち最小値を割り当てることを行う。そして、全コードブロックを一巡し、尚且つ、オーバーフローしなかったカウンタに設定された閾値を限定後の最大値Smax、それより1つ小さな閾値を限定後のSminとして更新する。
【選択図】 図16
Description
本発明は、静止画像または動画像のフレームデータを符号化する画像符号化技術に関するものである。
画像符号化の効率を向上させる手法の一つとしてレート・歪み最適化手法がある。レート・歪み最適化手法は符号化データを構成する複数の区分ごとに発生符号量と画像の歪みに関する指標値を求め、総符号量が目標値以下という条件の基で総歪み指標値の最小化を図るものである。
ISO/IEC JTC1/SC29/WG1での標準化作業により制定された静止画像符号化の国際標準である通称JPEG2000(ISO/IEC 15444)では、ウェーブレット変換により得られる各サブバンドの係数をコードブロックと呼ばれる矩形領域に分割してそれぞれ独立に符号化するという構成となっている。そして、各コードブロックを何回かに分けて(何回かのパスに分けて)符号化しており、パスを単位として発生符号量と画像の歪み指標値を求めてレート・歪み最適化手法を適用することが考慮されている。JPEG2000標準を実施する上での上記レート・歪み最適化手法の一適用方法がある(非特許文献1)。
コードブロックBiの符号打ち切り可能点をniとし、niで符号を打ち切った場合のコードブロックBiの符号量をRi(ni)、歪みの指標値をDi(ni)とするとき、画像全体での歪み指標値D、および総符号量Rは、
D=ΣDi(ni)
R=ΣRi(ni)
と考えることができる。(ここでΣは、「i=1,2,…,コードブロック総数」を変数とする合算関数)。歪みの指標値としては、平均二乗誤差や視覚的に重み付けされた平均二乗誤差など、画質の劣化の度合を表わす様々な値を用いることができる。
D=ΣDi(ni)
R=ΣRi(ni)
と考えることができる。(ここでΣは、「i=1,2,…,コードブロック総数」を変数とする合算関数)。歪みの指標値としては、平均二乗誤差や視覚的に重み付けされた平均二乗誤差など、画質の劣化の度合を表わす様々な値を用いることができる。
レート・歪み最適化の目標は、目標となる総符号量Rmax以下という条件、即ち、R≦Rmaxという条件で、Dを最小化する打ち切り点niの集合を求めることである。この最適化問題は、一般化ラグランジェ乗数法(非特許文献2)によって解決することができ、あるλの値について、
Σ(Di(ni)+λ×Ri(ni))
を最小化する問題に帰着する。λの値は総符号量RがRmax以下となるように調整される。
Σ(Di(ni)+λ×Ri(ni))
を最小化する問題に帰着する。λの値は総符号量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)。例えば、ΔRi(k)とΔDi(k)はそれぞれ、ΔRi(k)=Ri(k)-Ri(ni)、ΔDi(k)=Di(ni)-Di(k)により求める。符号打ち切り点niから着目する符号打ち切り可能点kの間にある符号の符号量対歪み指標値としてΔDi(k)/ΔRi(k)を算出してλと比較し(ステップS404)、大きければniの値をkに更新する(ステップS405)。次いで、kに1を加えて着目する符号打ち切り点を一つ下げ(ステップS406)、更新されたkの値をこのコードブロックの符号化パスの数ki_maxと比較し(ステップS407)、k≦ki_maxであれば更新されたkについてステップS403から繰り返して処理を行う。こうして、k>ki_maxであれば処理を終了し、与えられたλでの着目コードブロックBiの符号打ち切り点は終了時点のniを決定する。
このアルゴリズムは種々のλの値について実施されることを考慮すると、あらかじめコードブロックの符号打ち切り点の候補を定めておく方が効率が良い。
コードブロックの符号打ち切りは符号化パス単位に行われるので基本的には全ての符号化パス境界で符号打ち切りが可能であるが、上述の符号打ち切り点ni決定アルゴリズムを適用する場合、符号打ち切り候補点間のレート・歪みの勾配を表す値Si(k)=ΔDi(k)/ΔRi(k)がkに伴って単調減少となるように打ち切り候補点が決定され、条件を満たさない符号化パス境界は符号打ち切り点の候補から除外する。
例えば図10のように、4つの符号化パスにより符号化されたコードブロックを考える。4つのパスの境界(同図中、打ち切り可能点0から4)で符号を打ち切ることが可能であるが、打ち切り可能点2ではレート・歪みの勾配が単調減少となっておらず、コードブロックの符号を打ち切るのは効率的でないため、上述のアルゴリズムで符号打ち切り点として選択されることはないようにする。
なお、ここで言う、レート・歪みの勾配が減少するとは、その勾配が水平に近くなることを意味する。すなわち、「レート・歪みの勾配」の算術的な傾きの正負の符号は除外していることに注意されたい。
以下、全符号化パスの境界から符号打ち切り点の候補を決定するアルゴリズムについて説明する。
図5は符号打ち切り点の候補を選択する処理の流れを示す図である。ここでは符号打ち切り点の候補の集合をNiとする。まず、符号打ち切り点の候補の集合Niの初期状態として着目するコードブロックの全符号化パスの境界の集まりをセットする(ステップS501)。すなわち、コードブロックBiの符号化パスの数をki_maxとするとNi={1,2,3,・・・,ki_max}とする。
次に候補判定の対象となる符号打ち切り点pを0に設定する(ステップS502)。候補判定の対象となる符号打ち切り点の次の打ち切り点としてkを“1”に設定する(ステップS503)。kが集合Niに属しているか否かを判定し(ステップS503)、Niに属しているならば符号打ち切り点をpからkに移動させた場合の符号量増加分ΔRi(k),歪み指標値減少分ΔDi(k)を求め、更にこの区間のレート・歪み勾配Si(k)を求める(ステップS505)。Niに属さないならば後述するステップS508へと処理を移す。p≠0の場合、Si(k)とSi(p)を比較して(ステップS506)、Si(k)>Si(p)ならばpを集合Niから除き(ステップS510)、ステップS502へと戻る。それ以外の場合にはpにkを設定し(ステップS507)、kの値に1を加えて更新し(ステップS508)、kとki_maxを比較してk≦ki_maxならば更新されたkについてステップS504から処理を行い、k>ki_maxならば処理を終了して、この時点での集合Niに残った数字が符号打ち切り点(パス)の候補の集合となる。
上記処理を行うと、先に例に挙げた図10のようなコードブロックの場合には、採集的に残った注目コードブロックBiの打ち切り点の候補集合Niは{1,3,4}となり、これらの打ち切り候補点については図11に示すようにレート・歪み勾配がkに伴って単調減少となることが約束されることになる。
以上により得られた符号打ち切り点候補集合Niに属するkについてSi(k),Ri(k)の値を保持しておき、Si(k)>λとなる最大のkを選択する。λの値が小さい場合には符号打ち切り点は下がって切り捨てられる符号は少なくなり、逆にλの値が大きい場合には符号打ち切り点は上がって切り捨てられる符号は多くなるため、乗数λは画質のパラメータと見なすことができる。大きいλの値から小さい値へと変化させながら総符号量R=Rmax、あるいはR≒Rmaxとなるλを探して、そのλに基づいて各コードブロックの符号打ち切り点を決定することでレート・歪みの最適化を図ることができる。
以下、レート・歪み最適化手法をJPEG2000に適用する一形態について説明する。但し、JPEG2000による符号化の具体的方法については勧告書に詳細に説明されているので、ここでは簡単な例についてその大まかな処理の流れのみを説明する。
説明簡略化のため、符号化対象画像は、各画素が8ビット(0〜255の256階調)で表現された512×512画素のモノクロ画像とし、符号化対象画像の各画素の水平方向の画素位置(座標)をx、垂直方向の画素位置をyとして、画素位置(x,y)の画素値をP(x,y)で表す。また、JPEG2000の符号化の条件として、タイル分割なし(512×512画素=1タイル)、離散ウェーブレット変換2回、9×7非可逆フィルタ(9-7 Irreversible Filter)使用、コードブロックサイズは64×64、1レイヤでの符号列形成として説明する。その他にも、エントロピ符号化のオプションなど、様々な条件設定が必要であるが、ここでは特に言及しない。
図2はJPEG2000の符号化処理の流れを示す図である。同図において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次元離散ウェーブレット変換によって処理される符号化対象画像のサブバンドを説明するための図である。
すなわち、図3(a)に示されるような符号化対象画像に対して、まず垂直方向に1次元離散ウェーブレット変換を適用し、図3(b)に示されるように低周波サブバンドLと高周波サブバンドHとに分解する。次に、それぞれのサブバンドに対して水平方向の1次元離散ウェーブレット変換を適用することにより、図3(c)に示されるようなLL、HL、LH、HHの4つのサブバンドに分解し、1回目のウェーブレット変換を完了する。
離散ウェーブレット変換部201では、上述した2次元離散ウェーブレット変換により得られたサブバンドLLに対して、さらに繰り返して2次元離散ウェーブレット変換(2回目のウェーブレット変換)を適用する。これによって、符号化対象画像をLL、HL1、LH1、HH1、HL2、LH2、HH2の7つのサブバンドに分解することができる。
図6は、2回目の2次元離散ウェーブレット変換によって得られる7つのサブバンドを示している。復号側ではLLサブバンドの係数を復号することにより水平・垂直方向ともに原画像の1/4の大きさ(水平・垂直方向画素数が1/4)で画像を再生することができ、さらにHL1,LH1,HH1の係数を復号することにより水平・垂直とも1/2の大きさの画像を、HL2,LH2,HH2まで復号することにより元の画像と同じ大きさの画像を再生することができる。換言すれば、この順に画像の解像度が高くなることを意味するので、LLサブバンドに基づいて生成される画像は解像度0、解像度0の画像及びLH1,HL1,HH1のサブバンドで生成される画像は解像度レベル1、解像度1の画像及びLH2,HL2,HH2のサブバンドで生成される画像は像度レベル2を有すると言い換えることができる。
さて、ここで、各サブバンド内の係数をC(Sb,x,y)と表す。ここで、Sbはサブバンドの種類を表し、LL、LH1、HL1、HH1、LH2、HL2、HH2のいずれかである。また、(x,y)は各サブバンド内の左上隅の係数位置を(0,0)としたときの水平方向及び垂直方向の係数位置(座標)を表す。
係数量子化部202では、離散ウェーブレット変換部201で生成された各サブバンドの係数C(S,x,y)を、各サブバンド毎に定めた量子化ステップdelta(S)を用いて量子化する。ここで、量子化された係数値をQ(S,x,y)と表すとすると、係数量子化部203で行われる量子化処理は次式により表すことができる。
Q(S,x,y)=sign{C(S,x,y)}
×floor{|C(S,x,y)|/delta(S)}
ここで、sign{I}は整数Iの正負符号を表す関数であり、Iが正の場合は1を、負の場合は−1を返す。また、floor{R}は実数Rを超えない最大の整数値を表す。
Q(S,x,y)=sign{C(S,x,y)}
×floor{|C(S,x,y)|/delta(S)}
ここで、sign{I}は整数Iの正負符号を表す関数であり、Iが正の場合は1を、負の場合は−1を返す。また、floor{R}は実数Rを超えない最大の整数値を表す。
コードブロック分割部203は係数量子化部202で量子化されたサブバンドの係数C(S,x,y)を不図示の内部バッファに適宜格納してコードブロックとよばれる所定の大きさの矩形に分割して切り出す。コードブロック分割はサブバンドの左上隅を基準として例えば64×64のブロックに分割することで行われる。
したがって、2回ウェーブレット変換の場合、これによりLL,HL1,LH1,HH1の各サブバンドは128×128のサイズであるから、それぞれ2×2=4つのコードブロックを内包し、HL2,LH2,HH2の各サブバンドは4×4=16個のコードブロックを内包することになる。各コードブロックには順番に重複しない識別番号i(=0〜63)を割り振り、B0,B1,B2,…,B63のようにBiという形でコードブロックを特定する。識別番号iは、先に説明したように解像度レベル順に割り振り、同一解像度レベル内においてはHL,LH,HHサブバンドの順、同一サブバンド内においてはラスタースキャン順に番号付けるものとする。
図7はコードブロック分割部203におけるコードブロック分割と番号の割振りの様子を示している。同図において実線はサブバンドの境界を表し、点線はコードブロックの境界を示しており、点線または実線で区切られる矩形がコードブロックである。
コードブロック符号化部204はコードブロック分割部203により切り出されたコードブロックBi内の量子化された係数値Q(S,x,y)(以降、単に「係数値」と称す)の絶対値を自然2進数で表現して、上位の桁から下位の桁へとビットプレーン方向を優先して二値算術符号化し、コードブロックの符号化データを符号列格納部206に格納する。
このとき、各ビットプレーンは最上位のビットプレーンを除いて3つのパスに分けて符号化する。3つのパスへの分割は、着目するビットプレーンより上位のビットプレーンの情報を参照して行うため、先行するビットプレーンの存在しない最上位のビットプレーンについては複数のパスへに分割しない。
上記を分かりやすく示したのが図12である。上記では1つのコードブロックは64×64サイズとしているが、同図では簡単のため4×5サイズで示している。最上位ビットプレーンについては、先に述べたように、該当するコードブロックの最上位ビットプレーンであるので、全ビットが符号化対象として扱われる。そして、最上位ビットプレーンよりも下位のビットプレーンは、図示の如く3つのグループに分けられ、それぞれの符号化対象ビット位置は図示のように排他的な位置に設定される(全部をまとめると1つのビットプレーンとなる、という意味)。これまで説明した符号化を打ち切るパスが仮にnパス目としたとき、上位からnパス目までの符号化データを利用し、それ以降のパスの符号化データを切り捨てることを意味する。
最上位ビットプレーンを除く、各ビットプレーンのパスへの分割、各パスでの具体的な符号化方法については勧告書に従う。各パスの符号化毎に着目するパスの符号量増加分ΔRi(k)と歪み指標値減少分ΔDi(k)を求め、図8に示すテーブルを構築して不図示の内部バッファに格納する。歪み指標値には平均二乗誤差や、サブバンド毎に重みをつけて導出される重み付き平均二乗誤差などが用いられる。3種類のパスそれぞれについて、各係数の歪み指標値減少分を導出する一方式は勧告書の附属書J等に記されている。着目するコードブロックBiについて全パスの符号化が終了し、図8のようなテーブルが完成されると、先に述べた符号打ち切り点の候補を選択するアルゴリズム(図5)を実行し、全符号化パス境界の集合からSi(k)が単調減少となる符号打ち切り点候補集合Niを求める。図9のように候補集合Niの要素の数NPと各打ち切り候補点でのパス番号k、レート・歪み勾配Si(k)、符号量Ri(k)をコードブロック情報格納部207に格納する。
符号列形成部205はコードブロック符号化部204により全てのコードブロックの符号化が終了すると、コードブロック情報格納部205に格納される各コードブロックの打ち切り候補点の情報を参照しながら、総符号量R=Rmax、あるいはR≒Rmaxとなるλを探して、Si(k)>λとなる部分の符号を集めて最終符号列を形成し、出力する。
図13に符号列形成部205におけるλ決定の処理の流れを示す。以下、同図を用いて符号列形成部205による閾値λ決定の処理について説明する。以下の説明において、閾値を表す変数としてSを導入し、処理終了時点での変数Sの値がλとなることに注意されたい。
まず、コードブロック情報格納部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と比較し、i=64ならばステップS1409へ、そうでない場合にはステップS1405に処理を移して、次のコードブロックについて符号量加算を行う(ステップS1408)。
変数iの値が64に到達した場合、即ち、閾値Sについて全コードブロックからの累積符号量の算出が終了した場合、累積符号量Rを目標符号量Rmaxと比較し、R<RmaxならばステップS1410へ、そうでなければステップS1411へと処理を移す(ステップS1409)。ステップS1411へと処理が移された場合には、現在の閾値Sでは目標符号量を超えるため、ΔSを加えてひとつ前の閾値Sに戻して処理を終了する(ステップS1411)。また、ステップS1410では閾値SをステップS1401で求めた最小値Sminと比較し、S>SminであればステップS1403へと戻りSの値をまた少し小さくしてから再びステップS1409までの処理を行い、S≦Sminであれば処理を終了する。処理終了時点でのSが閾値λとして選択される。
上述の処理により求められた閾値λに対し、各コードブロックからSi(k)>λとなる部分の符号を符号列格納部206から読み出して、JPEG2000符号列のフォーマットに従って情報(メインヘッダ、タイルヘッダ、パケットヘッダなど)を付加してJPEG2000の符号列を形成し、符号出力部208へと出力する。
符号出力部208は符号列形成部205により生成されたJPEG2000符号化データを装置外部に出力する。符号出力部208は例えばハードディスク、光磁気ディスク、メモリなどの記憶媒体、または、ネットワークへのインターフェースなどである。
標準勧告書(ISO/IEC 15444−1)の附属書J "Generalized Lagrange Multiplier Method for Solving Problems of Optimum Allocation of Resources", Operation Research, vol.11, pp.399-417, 1963
標準勧告書(ISO/IEC 15444−1)の附属書J "Generalized Lagrange Multiplier Method for Solving Problems of Optimum Allocation of Resources", Operation Research, vol.11, pp.399-417, 1963
上述の方法によりR≒Rmaxとなる最大のλを見つけるためには、様々なλで総符号量Rを求めて目標符号量Rmaxと比較するという処理を繰り返す必要があり、符号打ち切り点候補の情報Si(k),Ri(k)を格納するメモリへの多数回のアクセスや、Si(k)とλの比較など、総符号量Rを求めるために多数回の演算が必要となり、多くの処理時間を要する。
本発明は、このような事情を考慮してなされたものであり、より簡易にレート・歪み最適化を実施し得る技術を提供しようとするものである。
かかる課題を解決するため、本発明の画像データ符号化装置は以下の構成を備える。すなわち、
画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置であって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを記憶する第1の記憶手段と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を記憶する第2の記憶手段と、
前記第2の記憶手段で記憶された情報に従って、各ブロックにおける符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λを、初期値として全ブロックのレート・歪みの最大値Smaxと最小値Sminに基づき決定するλ決定手段と、
該λ決定手段で決定したレート・歪み閾値λにしたがって、各ブロックのどのパス段階までの符号化データの採用するかを判定し、判定された符号化データを前記第1の記憶手段より読出して所定形式の圧縮符号化データとして出力する出力手段とを備え、
更に、前記λ決定手段における前記最大値Smax,最小値Sminを更に限定する限定手段を備え、当該限定手段は
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段と、
前記Smax、Smin間をΔ間隔に複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御手段と、
該巡回制御手段による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定手段と、
該第1の判定手段で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のうち最小の候補閾値で再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット手段と、
前記巡回制御手段による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定手段と、
該第2の判定手段で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、当該閾値候補より前記Δだけ小さい値を限定後の最小値Sminとして決定する決定手段とを備える。
画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置であって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを記憶する第1の記憶手段と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を記憶する第2の記憶手段と、
前記第2の記憶手段で記憶された情報に従って、各ブロックにおける符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λを、初期値として全ブロックのレート・歪みの最大値Smaxと最小値Sminに基づき決定するλ決定手段と、
該λ決定手段で決定したレート・歪み閾値λにしたがって、各ブロックのどのパス段階までの符号化データの採用するかを判定し、判定された符号化データを前記第1の記憶手段より読出して所定形式の圧縮符号化データとして出力する出力手段とを備え、
更に、前記λ決定手段における前記最大値Smax,最小値Sminを更に限定する限定手段を備え、当該限定手段は
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段と、
前記Smax、Smin間をΔ間隔に複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御手段と、
該巡回制御手段による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定手段と、
該第1の判定手段で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のうち最小の候補閾値で再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット手段と、
前記巡回制御手段による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定手段と、
該第2の判定手段で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、当該閾値候補より前記Δだけ小さい値を限定後の最小値Sminとして決定する決定手段とを備える。
本発明によれば、画像符号化におけるレート・歪み最適化処理に要する演算量、及びメモリアクセス回数を低減を図ることができる。
以下、添付図面に従って本発明に係る実施の形態を説明する。
<第1の実施形態>
図15は、第1の実施形態に係る画像符号化装置の構成を示すブロック図である。前述の従来の画像符号化装置(図2)と共通するブロックについては同じ記号を用い、説明を省略する。
図15は、第1の実施形態に係る画像符号化装置の構成を示すブロック図である。前述の従来の画像符号化装置(図2)と共通するブロックについては同じ記号を用い、説明を省略する。
図15に示すように、第1の実施形態に係る画像符号化装置は、画像入力部200、離散ウェーブレット変換部201、係数量子化部202、コードブロック分割部203、コードブロック符号化部204、符号列形成部2102、コードブロック情報格納部207、符号列格納部206、区間選定部2101とを備える。
以下、同図を参照して、本第1の実施形態の画像符号化装置の動作手順について説明する。
本第1の実施形態の画像符号化装置で符号化対象とする画像符号化データは、その説明を簡単なものとするため、先の従来例で説明したのと同じく、512×512画素で構成され、各画素は8ビットの256階調モノクロ画像データとする。また、タイル分割の無(画像=1タイル)、コードブロックのサイズ64×64、ウェーブレット変換は9×7タップフィルタを用いて2回行うものとする。
符号化対象画像は画像入力部200から入力され、従来例と同様にして、ウエーブレット変換、量子化、コードブロック分割処理を経て、各コードブロックのデータがコードブロック符号化部204の処理によりコードブロック単位に符号化が行われる(各コードブロックについて全パスの符号化を行う)。符号化されたデータは符号列格納部205に格納され、各パス段階での情報(各パス段階での符号量情報)はコードブロック毎にコードブロック情報格納部207に格納される。
全てのコードブロックがコードブロック符号化部204で符号化されると、区間選定部2101はコードブロック情報格納部207に格納されるコードブロックBiの打ち切り候補点の情報を参照して、目標符号量Rmaxとなるレート・歪み勾配の区間を求める。区間選定部2101には複数個の符号量カウンタユニットを持つ。本第1の実施形態では、符号量カウンタユニットの数を4個とし、CU0、CU1、CU2、CU3と名前を付けて識別する。CU0〜CU3のそれぞれの符号量カウンタユニットには、レート・歪み勾配の閾値と符号量のカウントを開始したコードブロック番号、および符号量の3つの値が保持される。以降、カウンタユニットCUn(nは0〜3)のレート・歪み勾配の閾値をT(CUn)、カウント開始コードブロック番号をB(CUn)、符号量をL(CUn)と記す。各符号量カウンタユニットには異なるレート・歪み勾配の閾値T(CUn)が設定され、Si(k)>T(CUn)となる符号化パスの総符号量のカウントが行われる。また、各カウンタユニットはカウンタユニットの状態を示すフラグF(CUn)を保持する。カウンタユニットは動作状態と待機状態の2状態があり、カウンタユニットCUnが動作状態にある場合、F(CUn)=0であり、待機状態の場合にはF(CUn)=1となる。
図14は、実施形態における区間選定部2101における区間選定の処理の流れを示すフローチャートである。以下、同図を用いて説明する。
コードブロック符号化部204により全てのコードブロックの符号化処理が終了すると、まず、コードブロック情報格納部207に格納される全コードブロックの打ち切り候補点の情報を参照して、レート・歪み勾配の最大値Smax、最小値Sminを求める(ステップS1901)。
次に、SmaxとSminの区間を均等にN分割してレート・歪み勾配の閾値の変更幅Twを求める(ステップ1902)。このときの変更幅Twは、
Tw=(Smax-Smin)/N
で求められる。
Tw=(Smax-Smin)/N
で求められる。
次に、区間選定部2101の内部に保持する4つの符号量カウンタユニットCU0〜CU3の初期化を行う(ステップS1903)。カウント開始コードブロック番号には全て0、即ちB(CU0)=B(CU1)=B(CU2)=B(CU3)=0とする。また、符号量についても同様に全て0に設定する。即ち、L(CU0)=L(CU1)=L(CU2)=L(CU3)=0とする。また、カウンタユニットの状態フラグには全て動作状態を示す0を設定する。即ち、F(CU0)=F(CU1)=F(CU2)=F(CU3)=0とする。また、レート・歪み勾配の閾値はCU0からCU3へと、Sminから変更幅Twづつ変えて設定する。各符号量カウンタユニットCUn(nは0〜3)に設定される閾値T(CUn)は以下のようになる。
T(CU0)=Smin
T(CU1)=Smin+Tw
T(CU2)=Smin+2×Tw
T(CU3)=Smin+3×Tw
続いて、レート・歪み勾配の閾値に関するパラメータ変数jを4に、コードブロック番号を表す変数iを0にそれぞれ初期化する(ステップS1904)。
T(CU0)=Smin
T(CU1)=Smin+Tw
T(CU2)=Smin+2×Tw
T(CU3)=Smin+3×Tw
続いて、レート・歪み勾配の閾値に関するパラメータ変数jを4に、コードブロック番号を表す変数iを0にそれぞれ初期化する(ステップS1904)。
次に、着目するコードブロックBiについて、各符号打ち切り点毎にSi(k)と各符号量カウンタユニットに保持される閾値T(CU0)〜T(CU3)を比較し、Si(k)>T(CUn)ならばRi(k)をL(CUn)に加算する(ステップS1905)。但し、動作状態を表すフラグF(CU(n))が1であるカウンタユニット、即ち、待機状態にあるカウンタユニットについては符号量の加算を行わない。
次に、次のコードブロックをスキャンするため、コードブロック番号を表す変数iを(i+1) % 64に更新する(ステップS1906)。記号%はモジュロ演算を示し、A%BはAをBで割った余りを表す。ステップS1906の処理を言い換えるならば、iを1つ増加させ、i=64となった場合にはi=0に設定し直することを意味する。
次に、各符号量カウンタユニットの保持する開始ブロック番号B(CU(n))と更新されたブロック番号iを比較し、全ブロックの符号量カウントが終了したカウンタユニットがないかチェックする(ステップS1907)。B(CU(n))=iとなっているカウンタユニットは符号量カウント処理がブロックを一巡したことを示しており、このようなカウンタがあった場合にはステップS1908へ、なければステップS1909へ処理を移す。
ブロックを一巡し終えたカウンタがない場合には、着目するカウンタCU(k)の保持する符号量L(CU(k))と目標符号量Rmaxを比較し、符号量のオーバーフローが発生していないかどうかを確認する(ステップS1909)。オーバーフローが発生していない場合にはステップS1905へと戻り、次のコードブロックBiについて符号量カウントの処理を行う。
また、オーバーフローしている場合には、そのカウンタよりもTwだけ少ない閾値を与えられたカウンタ、即ちCU((k+3)%4)がオーバーフローしているかどうかを確認する(ステップS1910)。CU((k+3)%4)がオーバーフローしていない場合にはステップS1913へと処理を移す(x%yは、xをyで割った際の余りを返す関数であることに注意されたい))。
また、オーバーフローしているならば、カウンタユニットを初期化した後、新たな閾値を設定して再稼動させる。即ち、カウント開始コードブロック番号B(CU((k+3)%4))としてその時の変数iの値を設定し、符号量L(CU((k+3)%4))に0を設定する。カウンタユニットの状態フラグF(CU((k+3)%4))には動作状態を示す0を設定する。また、レート・歪み勾配の閾値F(CU((k+3)%4))はSmin+j×Twを設定する。
ステップS1912では変数jに1を加えて更新し、ステップS1913では変数kに1を加えて4との剰余を求めて更新する。
一方、ステップS1907の判定でコードブロックを一巡したカウンタがあれば、一巡したカウンタCU(n)の符号量がオーバーフローしているか否かを判定する(ステップS1908)。ここで一巡したカウンタが同時に複数ある場合には、一巡したカウンタの中でもっとも大きな閾値が設定されているカウンタに着目して判定を行う。
カウンタCU(n)がオーバーフローしている場合にはカウンタユニットCU(n)の動作状態フラグF(CU(n))に1を設定し、待機状態に移行する(ステップS1914)。
カウンタCU(n)がオーバーフローしていない場合には処理を終了する。そして、一巡し、かつ、オーバーフローしたカウンタの閾値の最大値が区間の上限値(Smin及びTwはそれぞれ負の値を持つことに注意されたい)として決定し、一巡し、かつオーバーフローしないカウンタの閾値の最小値が区間の下限値となる。
以上であるが、上記処理手順をより判りやすくするため、図16を参照して説明する。同図は、4つのカウンタで区間選択処理を行う際の、それぞれのカウンタに与えるレート・歪み勾配の値の推移を示している。
符号化処理を終えたときの全コードブロックにおけるレート・歪み勾配の最大値Smax、最小値Sminの差をN分割した値Twを算出し、4つのカウンタユニットCU(0)〜CU(3)に初期値として閾値として、
T(CU0)=Smin
T(CU1)=Smin+Tw
T(CU2)=Smin+2×Tw
T(CU3)=Smin+3×Tw
を与える。
T(CU0)=Smin
T(CU1)=Smin+Tw
T(CU2)=Smin+2×Tw
T(CU3)=Smin+3×Tw
を与える。
各カウンタユニットの開始コードブロックの番号として0、各カウンタユニットの符号量を0に初期化する。
B(CU0)=B(CU1)=B(CU2)=B(CU3)=0
L(CU0)=L(CU1)=L(CU2)=L(CU3)=0
なお、以下の説明では、カウンタユニットCU(0)はカウンタユニットCU(1)の下位のカウンタユニット、換言すれば、カウンタユニットCU(1)はカウンタユニットCU(0)の上位のカウンタユニットとして表現する。注意したいのは、実施形態ではこれら4つのカウンタユニットを順番に更新していく(使いまわししていく)ので、カウンタCU(3)は、カウンタユニットCU(2)の上位カウンタユニットであると同時に、カウンタユニットCU(0)の下位カウンタユニットということもできる。
B(CU0)=B(CU1)=B(CU2)=B(CU3)=0
L(CU0)=L(CU1)=L(CU2)=L(CU3)=0
なお、以下の説明では、カウンタユニットCU(0)はカウンタユニットCU(1)の下位のカウンタユニット、換言すれば、カウンタユニットCU(1)はカウンタユニットCU(0)の上位のカウンタユニットとして表現する。注意したいのは、実施形態ではこれら4つのカウンタユニットを順番に更新していく(使いまわししていく)ので、カウンタCU(3)は、カウンタユニットCU(2)の上位カウンタユニットであると同時に、カウンタユニットCU(0)の下位カウンタユニットということもできる。
したがって、或るカウンタユニットCU(k)に着目したとき、その下位のカウンタユニットはCU((k+3)%4)として特定できることになる(x%yはxをyで割った際の余りを示すことに注意)。逆にカウンタユニットCU(k)の上位のカウンタユニットはCU((k+1)%4)で特定できる。
さて、上記設定が行われると、コードブロックB0から順に、各閾値を有するカウンタユニットがそれぞれの閾値に基づいて符号量を累積加算していく。
そして、或るカウンタユニットCU(k)がオーバーフローした場合には、その下位のカウンタユニットCU((k+3)%4)にセットしていた閾値に4×Twを足し込み、且つ、その時点でのコードブロックの番号から符号量の累積加算を開始することを示すために、B(CU(k+3)%4)にその時のコードブロックの番号を格納する。
なお、上記のように、カウンタユニットCU(k)がオーバーフローする以前に、その下位のカウンタユニットCU((k+3)%4)が一巡してしまうことが起こり得る。このように一巡してしまった場合には、カウンタユニットはそれ以上の符号量の累積加算は行わないで待機状態にする。
上記条件のもとで図16を参照すると、タイミング1601乃至1604にて各カウンタユニットがオーバーフローした場合、それぞれの下位のカウンタユニットがリセットされている。ここでカウンタユニットCU(2)に着目すると、それがリセットされるのはタイミング1603、すなわち、カウンタユニットCU(3)がコードブロックBiのデータを処理した際にオーバーフローになったときになる。このとき、カウンタユニットCU(3)は全コードブロックを一巡していないので、その後も符号量を累積していくが、カウンタユニットCU(3)の上位カウンタユニット((3+1)%4)=カウンタユニットCU(0)がオーバーフローしたタイミング1604でリセットされる。このとき、カウンタユニットCU(2)の符号量累積する開始するコードブロックはBiにセットされることになる。すなわち、B(CU(2))=Biとなる。
図示の場合、タイミング1604以降で再びコードブロックBiのデータを参照するまで、カウンタユニットCU(2)が累積していた符号量R(CU(2))がオーバーフローせずに到達したことを示している。すなわち、カウンタユニットCU(2)にセットされた閾値Smin+6Twで、オーバーフローせずに、全コードブロックの符号量を累積しえたことになる。
したがって、そのカウンタユニットCU(2)の下位カウンタユニットCU(1)にセットしたしき位置Smin+5・Twを下限と決定し、カウンタユニットCU(2)にセットした閾値Smin+6・Twを上限とする区間が選択される。換言すれば、オーバーフローせずに一巡したカウンタユニットCU(2)にセットされた閾値Smin+6・Twを上限値とし、それよりTwだけ小さな閾値であるSmin+5・Twを下限値として決定すれば良いことになる。
図15に戻るが、符号列形成部2102はコードブロック符号化部204により全てのコードブロックの符号化が終了し、続いて区間選択部2101による区間選択処理が終了すると、区間選択部2101で選択された区間情報とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照して、総符号量R=Rmax、あるいはR≒Rmaxとなる最大のλを探して、符号列格納部206からSi(k)>λとなる部分の符号を集めてJPEG2000符号列を形成し、符号出力部208へと出力する。このときのλの取り得る範囲に、上記の処理で決定した下限値及び上限値を用いることになる。
符号列形成部2102での処理は、図13に示した従来の閾値決定処理と、ステップS1401の処理が異なる点を除いて同じである。
先に述べて従来の閾値決定処理では、単純に全コードブロックのレート・歪みの勾配の最大値と最小値を用いて、それをステップS1401でSmaxとSminを求め、この区間からλを探索した。これに対し、本実施形態では、符号列形成部2102ではSminとして区間選択部2101で選択した区間の下限値を与え、Smaxとして区間選択部207で選択した区間の上限値を与えるものであるから、その範囲を更に限定することが可能となる。また、区間選択部2101における区間選択処理は複数の閾値について並行して符号量カウントを行い、かつ、閾値として不適切と判定された時点で次の閾値について符号量カウントを行う構成となっているので、コードブロック情報へのアクセス回数を少なくでき、短時間に区間選択が可能となる。
なお、上記の動作は図15をその基礎にして説明したが、本実施形態における処理は上記説明で用いたフローチャートにしたがって処理を行うコンピュータプログラムによって実現できるのは明らかである。
図1はその際の装置のブロック構成図であり、パーソナルコンピュータ等の汎用情報処理装置に適用した際の構成を示している。
同図において、1は装置全体の制御を司るCPUであり、2はブートプログラムやBIOSを記憶しているROM、3はCPU1のワークエリアとして使用されるRAMである。このRAM3には、本装置が起動した際にOS、並びに、実施形態で説明した画像圧縮に係るプログラムがロードされるものであるが、その際には図示に示す如くカウンタユニットCU(0)乃至CU(3)それぞれの格納エリアが確保されるものである。4はハードディスク等の外部記憶装置であって、OSや画像圧縮プログラムの他、図15における符号列格納部、コードブロック情報格納部に相当する一時記憶エリア、及び、最終的に出力する符号化データを格納する領域を有する。5はイメージスキャナ等、符号化対象となる画像を入力する画像入力部である。なお、符号化対象を入力するものであれば如何なるものでも良いのは明らかであるので、画像ファイルを記憶した記憶媒体、カメラ等でも良い。6はキーボード(KB)やマウス(商標)等のポインティングデバイス(PD)であり、7は表示用のビデオメモリ及びそのビデオメモリへの描画並びにビデオメモリからのデータを映像信号として出力する表示制御部、8は表示装置である。
上記構成において、本装置に電源が投入されると、CPU1はROM2のブートプログラムにしたがって外部記憶装置4からOSをRAM3にロードし、しかる後、実施形態で説明した画像圧縮処理に係るプログラムを起動することで、RAM3中にカウンタユニットの領域を確保し、画像入力部5からの画像データをウェーブレット変換、量子化、コードブロックの全パスについて符号列を符号列格納部に格納すると共に、その際の各パス段階での歪み・レートに関する情報をコードブロック情報格納部に格納する。その後、先に説明した処理を行うことで、最終的に出力符号を出力符号格納部に出力(記憶)することになる。なお、圧縮符号化する際の目標となる符号量Rmax等については、KB&PD6等を用いて指定するか、或いは、入力した画像サイズに応じて自動的に決める等を行えば良い。
<変形例>
上記実施形態では、或るカウンタユニットCU(k)がオーバーフローしても、その上位カウンタCU((k+1)%4)がオーバーフローしない限り、カウンタユニットCU(k)は一巡するまで符号量を累積加算するものであったが、単純に上限値、下限値を求めるだけで良いのであれば、各カウンタは、全コードブロックを一巡するまでにオーバーフローした際に即座にリセットするようにしてもよい。
上記実施形態では、或るカウンタユニットCU(k)がオーバーフローしても、その上位カウンタCU((k+1)%4)がオーバーフローしない限り、カウンタユニットCU(k)は一巡するまで符号量を累積加算するものであったが、単純に上限値、下限値を求めるだけで良いのであれば、各カウンタは、全コードブロックを一巡するまでにオーバーフローした際に即座にリセットするようにしてもよい。
図17はこの場合の各カウンタの閾値の推移を示している。以下、同図について簡単に説明する。
カウンタユニットCU(0)はタイミング1701においてオーバーフローし、その時点でのカウンタユニットCU(0)の符号量R(CU(0))=0、閾値T(CU(0))=T(CU(0))+4Twに更新すると共に、累積加算の開始コードブロックB(CU(0))をその際のコードブロックの番号を格納する。
その後に、タイミング1702乃至1706において各カウンタユニットCU(n)がリセットされていく。
ここでタイミング1703にて、カウンタユニットCU(2)がオーバーフローした際のコードブロックがBiであったとする。したがって、この時点でカウンタユニットCU(2)にセットされる閾値T(CU(2))はT(CU(2))=(Smin+2Tw)+4Tw=Smin+6Twに更新され、符号量R(CU(2))=0、開始コードブロックB(CU(2))=Biがセットされる。
図17では、その後、コードブロックBi+1,…B63,1,2,…と処理していき、再びコードブロックBiになってもカウンタユニットCU(2)がオーバーフローしないで一巡した例を示している。この場合、カウンタユニットCU(2)にセットされていた閾値Smin+6Twを上限値、カウンタユニットCU(2)にセットされた閾値からTwを減じたSmin+5Twを下限値として決定することになる。すなわち、一巡してもオーバーフローしなかったカウンタユニットに与えた閾値を上限値とし、その閾値より微小量Twを減じたものを下限値とする。
この結果、オーバーフローした際に待機状態になっている期間がなくなる分だけ、処理を高速化させることが可能となる。
<第2の実施形態>
前述の第1の実施形態の画像符号化装置ではレート・歪み勾配の最大、最小値間をN個の区間に分割し、目標符号量を含む区間(境界区間)の内部で閾値探索することでレート・歪み最適化処理の簡易化を図った。閾値幅Twを決定する際の分割数Nを多くしてある程度細かく区分した場合、あるいは、多少の性能低下が許容できる場合には、境界区間内の閾値探索処理を省略することも可能である。以下、境界区間内の閾値探索を行わない例を第2の実施形態として説明する。
前述の第1の実施形態の画像符号化装置ではレート・歪み勾配の最大、最小値間をN個の区間に分割し、目標符号量を含む区間(境界区間)の内部で閾値探索することでレート・歪み最適化処理の簡易化を図った。閾値幅Twを決定する際の分割数Nを多くしてある程度細かく区分した場合、あるいは、多少の性能低下が許容できる場合には、境界区間内の閾値探索処理を省略することも可能である。以下、境界区間内の閾値探索を行わない例を第2の実施形態として説明する。
本第2の実施形態における画像符号化装置のブロック図は、先に示した第1の実施形態における符号列形成部2102の処理内容が異なるのみであり、それ以外は図15と同じである。そこで、以下では本第2の実施形態における符号列形成部2102の処理について説明する。なお、ここでも説明を簡略化させるため、符号化対象とする画像符号化データは、前述の従来例、第1の実施形態と同じく、512×512の各画素8ビットのモノクロ画像データとし、タイル分割の有無、コードブロックのサイズ、9×7タップウェーブレット変換フィルタを行うものとする。
符号列形成部2102では、コードブロック符号化部204により全てのコードブロック、全てのパスの符号化が終了し、続いて区間選択部2101による区間選択処理が終了すると、区間選択部2101で選択された区間の情報とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照し、符号列格納部206から符号列を集めてJPEG2000符号列を形成し、符号出力部208へと出力する。
区間選択部2101で選択された区間の下限値を保持するカウンタをCU(l)、上限値をCU(h)とし、区間の下限値をT(CU(l))、上限値をT((CU(h))とするとき、本第2の実施形態の画像符号化装置では、所定のコードブロック番号ti-1まではT(CU(l))を閾値としてSi(k)≧T(CU(l))までの符号を読み出し、また、コードブロック番号ti以上についてはT(CU(h))を閾値としてSi(k)≧T(CU(h))までの符号を読み出してJPEG2000符号列を形成する。コードブロックの番号は、図7のように低周波成分から高周波成分に向かう順に番号付けられているので、上記は低周波から高周波に向かう順に並べられたコードブロック群を、2つに分け、前半のコードブロック群(低周波のコードブロック)については下限閾値T(CU(l))を用い、後半のコードブロック群(高周波のコードブロック)については上限閾値T(CU(h))を用いることを意味することになる。
以下、図19に従い、コードブロック番号の境目tiを決定する処理の流れを示す。
まず、累積符号量RにL(CU(h))を設定する(ステップS3001)。次に、コードブロック番号の閾値tiの初期値として0を設定する(ステップS3002)。着目するコードブロックtiについてT(CU(h))以上となる符号打ち切り候補点の最大値k1を求める(ステップS3003)。k1は、符号打ち切り点の順番にレート・歪み勾配Sti(k1)をT(CU(h))と比較し、Sti(k1)≧T(CU(h))となる最大のk1を求めることで得られる。同様にT(CU(l))以上となる符号打ち切り点の最大値k2を求める(ステップS3004)。累積符号量RにRti(k2)-Rti(k1)を加える(ステップ3005)。続いて、累積符号量Rを目標符号量Rmaxと比較し(ステップ3006)、R<Rmaxであればステップ3007でtiの値を1つ増加させ、ステップ3003へ処理を移し、符号量の累積を継続する。そうでない場合には処理を終了する。そして、終了時点でのtiが境目となるコードブロック番号となる。
上述のように本第2の実施形態の画像符号化装置で得られるJPEG2000符号列には、全てのコードブロックでレート・歪み勾配の指標値がT(CU(h))以上の符号列が含まれ、さらに目標符号量に達するまでコードブロックの順番でT(CU(l))以上の符号列が含まれる。レート・歪み最適化の点ではやや効率低下を伴うが、符号量の見積もりが必要なのは区間選択部2101で選択された区間内のみであり、より簡易にレート・歪み特性の向上を行うことができる。
<第3の実施形態>
前述の第1の実施の形態の画像符号化装置では区間選択部2101で目標符号量を含む区間(境界区間)を選択し、境界区間内部のみ従来と同じ閾値探索を行うことでレート・歪み最適化処理の簡易化を図った。しかしながら、区間選択部2101での区間選択処理を繰り返し行うことで、λを定めることも可能である。以下、この例を第3の実施形態として説明する。
前述の第1の実施の形態の画像符号化装置では区間選択部2101で目標符号量を含む区間(境界区間)を選択し、境界区間内部のみ従来と同じ閾値探索を行うことでレート・歪み最適化処理の簡易化を図った。しかしながら、区間選択部2101での区間選択処理を繰り返し行うことで、λを定めることも可能である。以下、この例を第3の実施形態として説明する。
本第3の実施形態における、画像符号化装置のブロック図は第1の実施の形態の説明に用いた図15と同じであり、区間選択部2101、および符号列形成部2102の処理のみ異なる。以下、本第3の実施形態における符号列形成部2102の処理について説明する。なお、本第3の実施形態の画像符号化装置で符号化対象とする画像符号化データは、前述の従来例、第1の実施の形態と同じく、512×512の各画素8ビットのモノクロ画像データとし、タイル分割の有無、コードブロックのサイズ、ウェーブレット変換フィルタの選択など、符号化の条件についても従来例、第1の実施の形態と同じである。
第1の実施形態と同様にして、全てのコードブロックがコードブロック符号化部204で符号化されると、区間選択部2101はコードブロック情報格納部207に格納されるコードブロックBiの打ち切り候補点の情報を参照して、目標符号量Rmaxとなるレート・歪み勾配の区間を求める。
図18に本第3の実施形態の画像符号化装置における区間選択部2101の区間選択処理の流れを示す。図において第1の実施の形態の区間選択部2101の処理の流れの説明で用いた図19と同じステップについては同じ番号で示し、説明を省略する。
ステップS2901はあらかじめ設定した符号量差分の閾値TLと選択した区間の閾値差分とを比較するステップ、ステップS2902はSmax,Sminの値を更新するステップである。
第1の実施の形態で説明した通り、ステップS1908でカウンタCU(n)がオーバーフローしていない場合、目標符号量となるレート・歪み勾配を含む境界区間が選択される。ここまでの処理で選択される区間の下限値を保持するカウンタをCU(l)、上限値をCU(h)とするとき、この区間での符号量差分L(CU(l))-L(CU(h))を求め、あらかじめ定めた閾値TLと比較してTLよりも小さい、あるいは等しければ区間選定処理を終了し、閾値TLよりも大きい場合にはステップS2902に処理を移す。閾値TLは目標とする符号量に対する許容誤差範囲であり、本第3の実施の形態の画像符号化装置にあらかじめ設定されているものとする。
ステップS2902ではSminにT(CU(l))を設定し、SmaxにT(CU(h))を設定して、再度ステップS1903から処理を開始する(再帰的処理となる)。ステップS2901とステップS2902を追加して、符号量差分が所定の範囲内に収まるまで繰り返して区間選択処理を行う構成となっている。すなわち、初期状態では全コードブロックの歪み・レートの最大勾配及び最小勾配をSmax,Sminとして行い、下限値、上限値を探し出し、その結果を再帰的にSmax,Sminに設定することを行うものである。
符号列形成部2102では、コードブロック符号化部204により全てのコードブロックの符号化が終了し、続いて区間選択部2101により境界区間の選択処理が終了すると、区間選択部2101の選択した区間の情報とコードブロック情報格納部207に格納される各コードブロックの符号打ち切り点の情報を参照し、符号列格納部206から符号列を集めてJPEG2000符号列を形成し、符号出力部208へと出力する。本実施の形態では、T(CU(h))を閾値として用い、Si(k)≧T(CU(h))までの符号を読み出しJPEG2000符号列を形成する。
上述のように本第3の実施形態の画像符号化装置では、第1の実施形態と同じく、複数のカウンタユニットに異なる閾値を設定して符号量をカウントし、かつ、閾値として不適切と判断された時点で次の閾値について符号量カウントを行う構成となっており、コードブロック情報へのアクセス回数を少なくし、短時間に区間選択が可能となっている。また、区間の符号量差分を調べて所定範囲となるように繰り返して区間選択を行うことにより、目標符号量と実際に発生する符号量との誤差範囲をある程度限定してJPEG2000符号列を生成することができる。特に、第1の実施形態における閾値変化量Twを求める際の分割数Nはある程度大きな値を必要としたが、本第3の実施形態によれば小さなNで第1の実施形態とほぼ同じ精度の上限値、下限値を決定でき、演算量を減らすことが可能となる。
<変形例>
上述の実施の形態では最終的に得られた境界区間の上限値T(CU(h))を閾値として用いているが、閾値選択の精度を向上するために、区間内部から目標符号量に近くなると思われる閾値を予測しても良い。この場合、例えば、境界区間の上限値T(CU(h))とその符号量L(CU(h))、下限値T(CU(l))とその符号量L(CU(l))を結ぶ線分を考え、以下の式によりRmaxに相当する閾値Sを算出することができる。
S = T(CU(h)) +(Rmax-L(CU(h)))×(T(CU(h))-T(CU(l))) / (L(CU(h)) - L(CU(l)))
このように、境界区間の両端の閾値と符号量を用いて閾値を予測することで、目標符号量からの差異を少なくすることが可能となる。
上述の実施の形態では最終的に得られた境界区間の上限値T(CU(h))を閾値として用いているが、閾値選択の精度を向上するために、区間内部から目標符号量に近くなると思われる閾値を予測しても良い。この場合、例えば、境界区間の上限値T(CU(h))とその符号量L(CU(h))、下限値T(CU(l))とその符号量L(CU(l))を結ぶ線分を考え、以下の式によりRmaxに相当する閾値Sを算出することができる。
S = T(CU(h)) +(Rmax-L(CU(h)))×(T(CU(h))-T(CU(l))) / (L(CU(h)) - L(CU(l)))
このように、境界区間の両端の閾値と符号量を用いて閾値を予測することで、目標符号量からの差異を少なくすることが可能となる。
<その他の実施形態>
本発明は、上述した実施形態に限定されるものではない。例えば、上述した第1から第3の実施形態においては、タイル分割なし、離散ウェーブレット変換2回、9x7非可逆フィルタ(9-7 Irreversible Filter)使用、コードブロックサイズは64x64、1レイヤでの符号列形成として説明したが、JPEG2000符号化の条件を変更した場合にも適用できる。例えば、複数のビットレートでレイヤ構成する場合、それぞれのレイヤで目標符号量Rmaxを設定することにより適用することができる。その他、離散ウェーブレット変換のフィルタ、適用回数等を変更しても構わないことは言うまでもない。
本発明は、上述した実施形態に限定されるものではない。例えば、上述した第1から第3の実施形態においては、タイル分割なし、離散ウェーブレット変換2回、9x7非可逆フィルタ(9-7 Irreversible Filter)使用、コードブロックサイズは64x64、1レイヤでの符号列形成として説明したが、JPEG2000符号化の条件を変更した場合にも適用できる。例えば、複数のビットレートでレイヤ構成する場合、それぞれのレイヤで目標符号量Rmaxを設定することにより適用することができる。その他、離散ウェーブレット変換のフィルタ、適用回数等を変更しても構わないことは言うまでもない。
また、本発明はJPEG2000での実施に好適であるが、符号化データを小区分に分けて符号量、歪み指標値を得られるその他の符号化方式においても適用することが可能である。
また、上述の実施形態ではコードブロック情報格納部、符号列格納部のように目的に応じてブロックを定義しているが、単一の記憶領域を用意して使い分けるような構成としても構わない。
また、上述の実施の形態では、512×512の各画素8ビットのモノクロ画像データを符号化対象画像として説明したが、その他のサイズ、ビット深度の画像、各画素が複数の色成分で表されたカラー画像など、その他の画像データに適用しても構わない。さらに、動画像の各フレーム、フィールドなどに対して適用しても構わない。
更に、上記各実施形態では、カウンタユニットを4つ設ける例を示したが、これによって本発明が限定されるものではなく、2以上であれば良い。
また、実施形態ではウェーブレット変換を用い、コードブロックを複数のパスに分けて符号化する技術を例にしたが、ブロック単位に、そのブロックをパスに分けて符号する技術に適用できるので、ウェーブレット変換に限らず、DCT変換を用いた画像圧縮技術にも適用可能である。
また、上述の実施の形態では、閾値幅Twを決定する際、レート・歪み勾配の最大値Smax、最小値Smin間を等間隔にN分割する例を示したが、境界区間となりそうな部分を予測してその部分の閾値幅Twは細かく、その他の部分では荒くするなど、非均等間隔で閾値を変更して各カウンタユニットに設定しても良い。
さらにまた、先に説明したように、本発明は、パーソナルコンピュータ等の汎用情報処理装置で実行するコンピュータプログラムによっても実現できるものであるから、本発明はかかるコンピュータプログラムをその範疇とするのは明らかである。また、通常、コンピュータプログラムはCDROM等のコンピュータ可読記憶媒体に記憶され、装置にセットしてシステムにそのコンピュータプログラムをコピーもしくはインストールすることで実行可能となるわけであるから、かかるコンピュータ可読記憶媒体をもその範疇とするのは明らかである。
Claims (10)
- 画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置であって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを記憶する第1の記憶手段と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を記憶する第2の記憶手段と、
前記第2の記憶手段で記憶された情報に従って、各ブロックにおける符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λを、初期値として全ブロックのレート・歪みの最大値Smaxと最小値Sminに基づき決定するλ決定手段と、
該λ決定手段で決定したレート・歪み閾値λにしたがって、各ブロックのどのパス段階までの符号化データの採用するかを判定し、判定された符号化データを前記第1の記憶手段より読出して所定形式の圧縮符号化データとして出力する出力手段とを備え、
更に、前記λ決定手段における前記最大値Smax,最小値Sminを更に限定する限定手段を備え、当該限定手段は
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段と、
前記Smax、Smin間を複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御手段と、
該巡回制御手段による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定手段と、
該第1の判定手段で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のひとつを再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット手段と、
前記巡回制御手段による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定手段と、
該第2の判定手段で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、設定済みの候補閾値の中で当該閾値候補より小さく、且つ、最大の値を限定後の最小値Sminとして決定する決定手段とを備える
ことを特徴とする画像データ符号化装置。 - 前記決定手段で決定した最大値Smaxと最小値Sminが設定されたカウンタ手段が累積加算した符号量の差が所定値以上の場合、限定後の最大値Smaxと最小値Sminを初期値にして、前記限定手段を再帰的に実行する手段を更に備えることを特徴とする請求項1に記載の画像データ符号化装置。
- 前記周波数変換はウェーブレット変換であることを特徴とする請求項1又は2に記載の画像データ符号化装置。
- 画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置であって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを記憶する第1の記憶手段と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を記憶する第2の記憶手段と、
該第2の記憶手段に記憶された情報に基づき、全ブロックの符号量変化に対する歪みを示すレート・歪みの最大値Smaxと最小値Sminを求めるレート・歪み値決定手段と、
該レート・歪み値決定手段で決定した最大値Smax、最小値Sminを更に限定すると共に、限定後のSmax及びSminを適用する前記ブロックB0,B1…における境界ブロックBiを決定する限定手段と、
該限定手段で得られた境界ブロックBiまでのブロック群については、限定後のSminを、符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λとして符号データを前記第1の記憶手段より読出し、前記境界ブロックBiに後続するブロック群については限定後のSmaxを前記レート・歪み閾値λにして符号データを前記第1の記憶手段より読出し、所定形式の圧縮符号化データとして出力する出力手段とを備え、
前記限定手段は、
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段と、
前記レート・歪み値決定手段で決定したSmax、Smin間を複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御手段と、
該巡回制御手段による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定手段と、
該第1の判定手段で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のひとつを再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット手段と、
前記巡回制御手段による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定手段と、
該第2の判定手段で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、設定済みの候補閾値の中で当該閾値候補より小さく、且つ、最大の値を限定後の最小値Sminとして決定する第1の決定手段と、
該第1の決定手段で決定された夫々のSmaxに基づく全ブロックの累積符号量を初期符号量Rとし、ブロックBjにおける前記Smaxにより決まる打ち切りパス候補k1j、Sminにより決まる打ち切りパス候補K2jとしたときの、それぞれのパス候補におけるブロックBjの符号量をRj(k1j),Rj(k2j)とし、最大許容符号量をRmaxとしたとき、
R+Σ(Rj(k2j)−Rj(k1j))<Rmax
(ここで、j=0,1,2,…)
を満たさなくなったブロックの番号jで示されるブロックを、前記境界ブロックBiとして決定する第2の決定手段と
を備えることを特徴とする画像データ符号化装置。 - 画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置の制御方法であって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを所定の第1の記憶手段に格納する第1の格納工程と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を所定の第2の記憶手段に格納する第2の格納工程と、
前記第2の記憶手段に記憶された情報に従って、各ブロックにおける符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λを、初期値として全ブロックのレート・歪みの最大値Smaxと最小値Sminに基づき決定するλ値決定工程と、
該λ決定工程で決定したレート・歪み閾値λにしたがって、各ブロックのどのパス段階までの符号化データの採用するかを判定し、判定された符号化データを前記第1の記憶種案より読出して所定形式の圧縮符号化データとして出力する出力工程とを備え、
更に、前記λ決定工程における前記最大値Smax,最小値Sminを更に限定する限定工程を備え、当該限定工程は
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段を確保する工程と、
前記Smax、Smin間を複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御工程と、
該巡回制御工程による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定工程と、
該第1の判定工程で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のひとつを再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット工程と、
前記巡回制御工程による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定工程と、
該第2の判定工程で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、設定済みの候補閾値の中で当該閾値候補より小さく、且つ、最大の値を限定後の最小値Sminとして決定する決定工程とを備える
ことを特徴とする画像データ符号化装置の制御方法。 - 画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置の制御方法であって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを所定の第1の記憶手段に格納する第1の格納工程と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を所定の第2の記憶手段に格納する第2の格納工程と、
該第2の記憶手段に記憶された情報に基づき、全ブロックの符号量変化に対する歪みを示すレート・歪みの最大値Smaxと最小値Sminを求めるレート・歪み値決定工程と、
該レート・歪み値決定工程で決定した最大値Smax、最小値Sminを更に限定すると共に、限定後のSmax及びSminを適用する前記ブロックB0,B1…における境界ブロックBiを決定する限定工程と、
該限定工程で得られた境界ブロックBiまでのブロック群については、限定後のSminを、符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λとして、符号データを前記第1の記憶手段より読出し、前記境界ブロックBiに後続するブロック群については限定後のSmaxを前記レート・歪み閾値λにして、符号データを前記第1の記憶手段より読出し、所定形式の圧縮符号化データとして出力する出力工程とを備え、
前記限定工程は、
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段を確保する工程と、
前記レート・歪み値決定工程で決定したSmax、Smin間を複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御工程と、
該巡回制御工程による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定工程と、
該第1の判定工程で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のひとつを再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット工程と、
前記巡回制御工程による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定工程と、
該第2の判定工程で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、設定済みの候補閾値の中で当該閾値候補より小さく、且つ、最大の値を限定後の最小値Sminとして決定する第1の決定工程と、
該第1の決定工程で決定された夫々のSmaxに基づく全ブロックの累積符号量を初期符号量Rとし、ブロックBjにおける前記Smaxにより決まる打ち切りパス候補k1j、Sminにより決まる打ち切りパス候補K2jとしたときの、それぞれのパス候補におけるブロックBjの符号量をRj(k1j),Rj(k2j)とし、最大許容符号量をRmaxとしたとき、
R+Σ(Rj(k2j)−Rj(k1j))<Rmax
(ここで、j=0,1,2,…)
を満たさなくなったブロックの番号jで示されるブロックを、前記境界ブロックBiとして決定する第2の決定工程と
を備えることを特徴とする画像データ符号化装置の制御方法。 - 画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置として機能するコンピュータプログラムであって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを記憶する第1の記憶手段と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を記憶する第2の記憶手段と、
前記第2の記憶手段で記憶された情報に従って、各ブロックにおける符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λを、初期値として全ブロックのレート・歪みの最大値Smaxと最小値Sminに基づき決定するλ決定手段と、
該λ決定手段で決定したレート・歪み閾値λにしたがって、各ブロックのどのパス段階までの符号化データの採用するかを判定し、判定された符号化データを前記第1の記憶手段より読出して所定形式の圧縮符号化データとして出力する出力手段とを備え、
更に、前記λ決定手段における前記最大値Smax,最小値Sminを更に限定する限定手段を備え、当該限定手段は
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段と、
前記Smax、Smin間を複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御手段と、
該巡回制御手段による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定手段と、
該第1の判定手段で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のひとつを再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット手段と、
前記巡回制御手段による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定手段と、
該第2の判定手段で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、設定済みの候補閾値の中で当該閾値候補より小さく、且つ、最大の値を限定後の最小値Sminとして決定する決定手段
として機能することを特徴とするコンピュータプログラム。 - 請求項7に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
- 画像データを周波数変換し、変換後のデータを所定サイズの複数のブロックB0,B1,…Bnに分割し、分割したブロック内の各係数値のビット情報を上位から下位に向かうパス順に符号化する画像データ符号化装置として機能するコンピュータプログラムであって、
周波数変換したデータの各ブロックについて、各パス段階での符号データを記憶する第1の記憶手段と、
前記各ブロックにおける各パス段階における画像の歪みを示す情報と、符号量変化情報との関係情報を記憶する第2の記憶手段と、
該第2の記憶手段に記憶された情報に基づき、全ブロックの符号量変化に対する歪みを示すレート・歪みの最大値Smaxと最小値Sminを求めるレート・歪み値決定手段と、
該レート・歪み値決定手段で決定した最大値Smax、最小値Sminを更に限定すると共に、限定後のSmax及びSminを適用する前記ブロックB0,B1…における境界ブロックBiを決定する限定手段と、
該限定手段で得られた境界ブロックBiまでのブロック群については、限定後のSminを、符号化データを切り捨てるパス位置を決定するためのレート・歪み閾値λとして符号データを前記第1の記憶手段より読出し、前記境界ブロックBiに後続するブロック群については限定後のSmaxを前記レート・歪み閾値λにして符号データを前記第1の記憶手段より読出し、所定形式の圧縮符号化データとして出力する出力手段とを備え、
前記限定手段は、
与えられた閾値をレート・歪みの閾値とし、当該レート・歪みの閾値に従って前記ブロックB0,B1,B2…Bnを巡回し、ブロック符号量を累積加算するための複数のカウンタ手段と、
前記レート・歪み値決定手段で決定したSmax、Smin間を複数に分割して複数の候補閾値を求め、前記複数のカウンタ手段それぞれに、前記候補閾値を小さな順に設定し、前記複数のカウンタ手段による符号量の累積加算のための巡回処理を並列に実行させる巡回制御手段と、
該巡回制御手段による巡回処理中、所定符号量を越えた符号量を持つカウンタ手段が存在するか否かを判定する第1の判定手段と、
該第1の判定手段で前記所定符号量を越えた符号量を有するカウンタ手段が存在すると判定した場合、当該カウンタ手段に、未設定の候補閾値のひとつを再設定すると共に、当該カウンタ手段が累積加算した符号量を零クリアするリセット手段と、
前記巡回制御手段による巡回処理中、全ブロックの符号量の累積加算に成功したカウンタ手段が在るか否かを判定する第2の判定手段と、
該第2の判定手段で、全ブロックの符号量の累積加算に成功したカウンタ手段が在ると判定した場合、当該カウンタ手段にセットされていた閾値候補を限定後の最大値Smax、設定隅の候補閾値の中で当該閾値候補より小さく、且つ、最大の値を限定後の最小値Sminとして決定する第1の決定手段と、
該第1の決定手段で決定された夫々のSmaxに基づく全ブロックの累積符号量を初期符号量Rとし、ブロックBjにおける前記Smaxにより決まる打ち切りパス候補k1j、Sminにより決まる打ち切りパス候補K2jとしたときの、それぞれのパス候補におけるブロックBjの符号量をRj(k1j),Rj(k2j)とし、最大許容符号量をRmaxとしたとき、
R+Σ(Rj(k2j)−Rj(k1j))<Rmax
(ここで、j=0,1,2,…)
を満たさなくなったブロックの番号jで示されるブロックを、前記境界ブロックBiとして決定する第2の決定手段
として機能することを特徴とするコンピュータプログラム。 - 請求項9に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003381638A JP2005150842A (ja) | 2003-11-11 | 2003-11-11 | 画像データ符号化装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003381638A JP2005150842A (ja) | 2003-11-11 | 2003-11-11 | 画像データ符号化装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005150842A true JP2005150842A (ja) | 2005-06-09 |
JP2005150842A5 JP2005150842A5 (ja) | 2006-11-24 |
Family
ID=34690951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003381638A Withdrawn JP2005150842A (ja) | 2003-11-11 | 2003-11-11 | 画像データ符号化装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005150842A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019522448A (ja) * | 2016-05-23 | 2019-08-08 | カカドゥ アール アンド ディー ピーティーワイ リミテッド | 画像を圧縮する方法および装置技術分野 |
-
2003
- 2003-11-11 JP JP2003381638A patent/JP2005150842A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019522448A (ja) * | 2016-05-23 | 2019-08-08 | カカドゥ アール アンド ディー ピーティーワイ リミテッド | 画像を圧縮する方法および装置技術分野 |
JP7037554B2 (ja) | 2016-05-23 | 2022-03-16 | カカドゥ アール アンド ディー ピーティーワイ リミテッド | 画像を圧縮する方法および装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110024392B (zh) | 用于视频译码的低复杂度符号预测 | |
JP4700491B2 (ja) | 適応係数スキャン順序付け | |
RU2509436C1 (ru) | Способ и устройство для кодирования и декодирования блока кодирования границы картинки | |
JP4787100B2 (ja) | 画像符号化装置 | |
JP5718363B2 (ja) | 大きいサイズの変換単位を用いた映像符号化、復号化方法及び装置 | |
JP4555758B2 (ja) | ビデオ圧縮におけるイントラ予測の符号化モード選択方法 | |
JP5963446B2 (ja) | 画像符号化装置、画像符号化方法及びプログラム、画像復号装置、画像復号方法及びプログラム | |
US7574063B2 (en) | Image coding method and apparatus | |
CN107211131B (zh) | 对数字图像块进行基于掩码的处理的系统和方法 | |
EP0940994A2 (en) | Image processing apparatus and method and storage medium storing steps realizing such method | |
US9210435B2 (en) | Video encoding method and apparatus for estimating a code amount based on bit string length and symbol occurrence frequency | |
WO2010050152A1 (ja) | 画素予測値生成手順自動生成方法、画像符号化方法、画像復号方法、それらの装置、それらのプログラム、およびこれらのプログラムを記録した記録媒体 | |
JPH09224253A (ja) | 画像符号化装置および画像復号装置 | |
WO2013149307A1 (en) | Method and apparatus for coding of spatial data | |
US8582898B2 (en) | Method and apparatus for encoding and decoding image based on code table selection adapted to residual value distribution | |
CN109936742B (zh) | 对视频序列进行编码的方法、编码装置和存储介质 | |
KR102138650B1 (ko) | 디지털 이미지의 블록을 처리하는 시스템 및 방법 | |
US8396308B2 (en) | Image coding based on interpolation information | |
JP6069128B2 (ja) | 変換量子化方法、変換量子化装置及び変換量子化プログラム | |
US10015484B2 (en) | Adaptive scan device and method for scanning thereof | |
US8463057B2 (en) | Image encoding apparatus and control method therefor | |
JP2005150842A (ja) | 画像データ符号化装置及びその制御方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体 | |
US20210377523A1 (en) | Encoding device, encoding method, decoding device, and decoding method | |
JP4083670B2 (ja) | 画像符号化装置及び画像符号化方法 | |
JP4784386B2 (ja) | 復号化装置、逆量子化方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061010 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061010 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20071129 |