JP2004056605A - Method, device and program for controlling code amount - Google Patents

Method, device and program for controlling code amount Download PDF

Info

Publication number
JP2004056605A
JP2004056605A JP2002213368A JP2002213368A JP2004056605A JP 2004056605 A JP2004056605 A JP 2004056605A JP 2002213368 A JP2002213368 A JP 2002213368A JP 2002213368 A JP2002213368 A JP 2002213368A JP 2004056605 A JP2004056605 A JP 2004056605A
Authority
JP
Japan
Prior art keywords
code amount
code
amount
block
distortion
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.)
Granted
Application number
JP2002213368A
Other languages
Japanese (ja)
Other versions
JP3966507B2 (en
Inventor
Tetsuo Kuge
久下 哲郎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Japan Broadcasting Corp
Original Assignee
Nippon Hoso Kyokai NHK
Japan Broadcasting Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nippon Hoso Kyokai NHK, Japan Broadcasting Corp filed Critical Nippon Hoso Kyokai NHK
Priority to JP2002213368A priority Critical patent/JP3966507B2/en
Publication of JP2004056605A publication Critical patent/JP2004056605A/en
Application granted granted Critical
Publication of JP3966507B2 publication Critical patent/JP3966507B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Abstract

<P>PROBLEM TO BE SOLVED: To provide a code amount controlling method, a code amount controller and a code amount control program for calculating a bit position at which distortion quantity becomes minimum with a small amount of operation when an image is divided into blocks of a particular size and bit positions for discarding the bit plane of each of the blocks are determined in encoding the image under the upper limit value of a code amount. <P>SOLUTION: This code amount controller 3 is provided with a code block dividing means 10, a distortion/code amount table generating means 11, a code amount reference value list generating means 12, a work table generating means 13, a reverse searching means 14 and a bit omitting means 15. In addition, a bit position at which the total distortion quantity between a first block and a particular block is minimum and the total distortion amount at that time is generated as a work table for every value of a plurality of code amount reference values where a code amount upper limit value is an upper limit. and a bit position where the total distortion amount of the whole blocks is minimum is reversely searched from the work table. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は、画像符号化技術に関し、より詳細には、符号量を制限された条件の下で、符号化データの切り捨てを行い画像を圧縮符号化する際に、歪量を最も少なくして符号化を行うための符号量制御を行う符号量制御方法、符号量制御装置及び符号量制御プログラムに関する。
【0002】
【従来の技術】
従来、符号量を制限された条件の下で、符号化データの切り捨てを行い画像を圧縮符号化する符号化方式としては、ウェーブレット(Wavelet)変換により符号化を行うJPEG2000(Joint Photographic Expert Group 2000)等が挙げられる。
【0003】
このJPEG2000は、入力画像を、ウェーブレット変換を用いた2次元サブバンド分解によって分解し、その分解された各サブバンドの画素を複数ビット(Pビット)で表現し、さらに、各サブバンドを空間的に特定の大きさ(垂直m画素、水平n画素)のブロック(コードブロック)に分割する。そして、各ブロック毎にm×nビットのP個のビットプレーンが生成されることになる。JPEG2000は、このビットプレーンを1単位として独立してエントロピ符号化を行うことで、圧縮符号化を行うものである。例えば、入力画像がブロック数Nに分解されていたとすると、N×P個のビットプレーンが生成されることになり、入力画像は、JPEG2000によってN×P個のエントロピ符号に変換(符号化)されることになる。
【0004】
ここで、図11を参照して、JPEG2000等で入力画像を2次元サブバンド分解によって分解し、各サブバンドをコードブロックに分割する例について説明する。図11(a)は、入力画像を2次元ウェーブレット変換により、2次元空間周波数サブバンドに分解した例を示している。図11(b)は、サブバンドを特定の大きさのコードブロックに分割した例を示している。図11(a)に示すように、2次元ウェーブレット変換は、入力画像に1次元のウェーブレット変換を水平及び垂直に施すものであり、1回の分解によって入力画像をL1L1、L1H1、H1L1、H1H1に分解する。この分解をさらにL1L1に対して行うことで、L1L1は、L2L2、L2H2、H2L2、H2H2に分解される。
【0005】
このように低周波領域を繰り返して分解することで、2次元ウェーブレット変換は、入力画像の階層的なサブバンド分解を実現している。なお、サブバンド分解を行う目的は、符号化された単一の符号化コードストリームに対して、受信側でその一部分を切り出すだけで低解像の画像を再現することを可能にするためである。そして、図11(a)のように分解されたサブバンドを、図11(b)に示すように特定の大きさのコードブロックに分割する。
【0006】
このようにコードブロックに分割された入力画像は、ビットプレーン単位で符号化を行うことで、画像全体の符号化が行われる。この画像全体の符号量は、画像毎に異なるため、一定符号量以下に符号量を制限するには、画像全体として歪量が最小限になるようにビットプレーンを選択的に廃棄することが行われている。このビットプレーンを選択的に廃棄して符号化を行うことをビットプレーン符号化という。
【0007】
ここで、図12を参照して、JPEG2000で用いられているビットプレーン(bitplane)符号化の動作について説明する。図12は、入力画像をコードブロックに分割し、そのコードブロック毎のビットプレーンを選択的に廃棄して全体の符号量を一定符号量以下に抑えるビットプレーン符号化を模式的に表した図である。
図12に示すように、入力画像Imgは、N個のコードブロックB(B(j)(j=1,…,N))に分割される。なお、個々のコードブロックBは、m×nビットのP個のビットプレーンで構成される。
【0008】
ここでコードブロックBの中で着目するビット位置をt(t=0,…,P−1)とし、tより下位のビットプレーンを廃棄してコードブロックBを符号化したときの、符号量Rを(1)式で定義する。
【0009】
R(t,j)≡:r(t,j)+…+r(P−1,j)   …(1)
【0010】
なお、r(t,j)は、コードブロックB(j)(j=1,…,N)において、ビットプレーンtをエントロピ符号化したときの符号量を示す。すなわち、符号量Rは、コードブロックBのビットプレーンtからビットプレーン(P−1)までの符号量を示す。この着目するビット位置tは、ビットプレーンを廃棄する基準点を指し示すので、以下TP(Truncation Point)と呼ぶ。
また、(1)式において廃棄された歪量Dを(2)式で定義する。
【0011】
D(t,j)≡:b(0,j)*2+…+b(t−1,j)*2t−1   …(2)
【0012】
なお、b(t,j)は、コードブロックB(j)(j=1,…,N)において、ビットプレーンtの非ゼロビットの総数を示す。すなわち、歪量Dは、コードブロックBのビットプレーン0からビットプレーン(t−1)までの歪量の和を示す。この歪量Dは、例えば、b(t,j)*2以外にも、その自乗値を用いて算出することとしてもよい。
【0013】
一般に、サブバンド分解によって分解されたサブバンド(係数)は正負の値を取り得るので、最上位のビットプレーン(P−1)を係数の符号を示すビットプレーン(係数符号プレーン)とし、ビットプレーン0,…,P−2を係数の絶対値のビット値とする。
【0014】
例えば、TPがt=0の場合、ビットプレーンを一切廃棄しないので、(2)式において、D(0,j)=0となる。また、TP=P−1の場合、ビットプレーンを全て廃棄するので、(1)式において、R(P−1,j)=0となる。
【0015】
ここで、コードブロックBのビットプレーンの数を16(P=16)としたときのTPと、符号量R(t)及び歪量D(t)との関係を図13に示す。図13では、ビットプレーンのTPの位置t=15を係数符号プレーンとしている。ここでビットプレーンのTPをtとしたとき、tより下位のビットプレーン0,…,t−1のt個のビットプレーンが廃棄される。また、r(s)(0≦s≦15)は、ビットプレーンsをエントロピ符号化したときの符号量を示し、d(s)(0≦s≦15)は、ビットプレーンsを廃棄するときの歪量を表している。この歪量は、例えば(ビットプレーンsの非ゼロビットの総数)*2、あるいはその自乗値とする。また、R(t)は、ビットプレーンのTPの位置をtとしたときのコードブロックB(j)(j=1,…,N)全体の符号量を示し、D(t)は、コードブロックB(j)全体の歪量を示している。
【0016】
さらに、図14にビットプレーンのTPの位置(大きさ)と歪量D(t)及び符号量R(t)との関係を、あるコードブロックBについてモデル的に示す。図14(a)はビットプレーンのTPの位置(大きさ)と歪量D(t)との関係を、図14(b)はビットプレーンのTPの位置(大きさ)と符号量R(t)との関係を示している。図14に示すように、TPが大きくなる(上位のビットプレーンから多くのビットプレーンが廃棄される)と、歪量D(t)が増大し、符号量R(t)が減少する。逆に、TPが小さくなる(下位のビットプレーンで少ないビットプレーンが廃棄される)と、歪量D(t)が減少し、符号量R(t)が増大する。
ここで、コードブロックB(j)(j=1,…,N)について、コードブロックのTPの位置を示すt(j)のリスト(TPリスト)Tを(3)式で定義する。
【0017】
T≡(t(1),…,t(N))   …(3)
【0018】
すなわち、コードブロックB(j)のTPの位置をビットプレーンt(j)とすると、N個のコードブロック全体の符号量総和R(T)は(4)式で、歪量総和D(T)は、(5)式で表すことができる。
【0019】
R(T)=R(t(1),1)+…+R(t(N)、N)   …(4)
【0020】
D(T)=D(t(1),1)+…+D(t(N)、N)   …(5)
【0021】
これにより、JPEG2000等で符号量を制限された条件の下で、符号化データの切り捨てを行い画像を圧縮符号化するには、以下の(問題A)の解を求めればよいことになる。
【0022】
(問題A)
目標とする符号量上限値をKとするとき、R(T)=Kなる条件の下で、D(T)を最小化するTP(Truncation Point)のリスト(TPリスト)Tを決定する(T、R(T)及びD(T)は(3)式、(4)式及び(5)式参照)。
(問題A終)
【0023】
この(問題A)の解を直接求めることは膨大な数の組合せ演算を要するため、従来、JPEG2000では、(問題A)の類似的な問題として以下の(問題B)の解を求め、リスト(TPリスト)T((3)式)を決定している。
【0024】
(問題B)
目標とする符号量上限値をKとするとき、R(T)=Kなる条件の下で、(6)式で示した評価関数を最小化する組合せTとλを求める。
【0025】
L(T,λ)≡R(T)+λD(T)   …(6)
【0026】
(T、R(T)及びD(T)は(3)式、(4)式及び(5)式参照)
(問題B終)
【0027】
この(問題B)の解を求めるには、一般的には評価関数L(T,λ)が連続関数の場合であれば、ラグランジュ(Lagrange)の未定乗数法を用いて解析的に解くことが可能である。しかし、評価関数L(T,λ)は離散関数であるため、予め設定した複数のλの値により、そのλの値を変化させることで、評価関数L(T,λ)をより小さくするTPのリストT(t(1),…,t(N))を逐次的に決定する等の近似的な手法が用いられている。
【0028】
このように、従来では、近似的な手法により、TPのリストTを決定し、各コードブロック毎にt(1),…,t(N)より下位のビットプレーンを廃棄し、各ビットプレーンを符号化することで、符号量を制限された条件の下で、画像の圧縮符号化を行っている。
【0029】
【発明が解決しようとする課題】
しかし、前記従来の技術では、(問題A)の解は(問題B)の解となるが、(問題B)の解は本来求めたい(問題A)の解となる保証がない。すなわち、(問題B)の解は、近似的な手法によりTP(Truncation Point)のリストT(t(1),…,t(N))を求めるため、評価関数L(T,λ)((6)式参照)を最小にする最適解にならない場合があるという問題がある。
【0030】
なお、(問題A)の解を直接求める方法としては、全検索により解を求める方法がある。すなわち、N個のコードブロックB(j)(j=1,…,N)において、あるTPのリストTに対するR(T)及びD(T)((4)式及び(5)式参照)を求め、逐次リストTを変化させることで、R(T)=K(Kは符号量上限値)を満たし、D(T)が最小となるリストTを探索する方法である。
【0031】
しかし、この方法では、例えば、水平512画素、垂直512画素で1画素8ビットの画像について、コードブロックを64に分割して符号化を行う場合、すなわち、画像を水平64画素、垂直64画素の64個のコードブロック(N=64)に分割し、各コードブロックのビットプレーンの数が8(P=8)であるとすると、取り得るリストTの数はP=6.2*1057となり、1つのリストTの検証を1ナノ秒(ns)で行ったとしても、D(T)が最小となるリストTを探索するには、6.2*1048秒(sec)=2*1041年を要することになり、現実的な時間では検索することができない。
【0032】
本発明は、以上のような問題点に鑑みてなされたものであり、符号量を制限された条件の下で、符号化データの切り捨てを行い画像を圧縮符号化する場合に、その画像を特定の大きさのブロック(コードブロック)に分割し、各ブロックのビットプレーンを廃棄するビット位置を決定する際に、歪量が最小となる最適なビット位置を全検索よりも遥かに少ない演算量で求めることを可能にする符号量制御方法、符号量制御装置及び符号量制御プログラムを提供することを目的とする。
【0033】
【課題を解決するための手段】
本発明は、前記目的を達成するために創案されたものであり、まず、請求項1に記載の符号量制御方法は、符号化対象となる画像を特定の大きさのブロックに分割して、その分割されたブロックの順に可変長符号を生成する画像符号化において、与えられた符号量上限値の範囲内で画像を符号化するために、各ブロックの符号量を制御する符号量制御方法であって、以下のステップを含むものとした。
【0034】
すなわち、ブロックを量子化する複数の量子化レベルに基づいてブロックを符号化したときの符号量と、そのときの量子化レベルに基づいて前記ブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成する歪・符号量テーブル生成ステップと、符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成する符号量基準値リスト生成ステップと、第1番目のブロックで符号量基準値に最も近い符号量となる量子化レベル及びそのときの歪量を、符号量基準値とブロックとを対応付けたインデックステーブル及び歪総量テーブルの初期値として設定する作業テーブル初期値設定ステップと、符号量基準値毎に、歪総量テーブルを参照して、第1番目のブロックから特定ブロックまでの歪総量を最小とする量子化レベル及びそのときの歪総量を順次決定して、第2番目以降のブロックにおけるインデックステーブル及び歪総量テーブルの値を設定する作業テーブル設定ステップと、この作業テーブル設定ステップで設定したインデックステーブルから、全ブロックの歪総量を最小とする量子化レベルを逆探索して求める逆探索ステップと、を含むことを特徴とする。
【0035】
この方法によれば、符号量制御方法は、歪・符号量テーブル生成ステップによって、複数の量子化レベルに基づいてブロックを符号化したときの符号量と、そのときの量子化レベルに基づいてブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成する。この量子化レベルは、符号化を行う際の符号量を削減するためのレベルを示すものである。
【0036】
そして、符号量制御方法は、符号量基準値リスト生成ステップによって、符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成する。この符号量基準値は、符号量上限値における最適な量子化レベルを求める問題を解くときに、小規模な問題を解決し、その結果から順次問題の規模を拡大することで求める問題を解くために、符号量上限値を小規模な問題の値になるように細分化したものである。例えば、HDTV(High Definition Television)の入力画像を符号化する場合は、符号量基準値の個数を100〜200個程度とする。
【0037】
さらに、符号量制御方法は、作業テーブル初期値設定ステップによって、第1番目のブロックで符号量基準値に最も近い符号量となる前記量子化レベル及びそのときの歪量を、符号量基準値とブロックとを対応付けたインデックステーブル及び歪総量テーブルの初期値として設定し、作業テーブル設定ステップによって、符号量基準値毎に、歪総量テーブルを参照して、第1番目のブロックから特定ブロックまでの歪総量を最小とする量子化レベル及びそのときの歪総量を順次決定して、第2番目以降のブロックにおけるインデックステーブル及び歪総量テーブルの値を設定する。これによって、作業テーブル初期値設定ステップで初期化したインデックステーブル及び歪総量テーブルは、作業テーブル初期値設定ステップによって、帰納的にブロックの順に値が設定される。
【0038】
そして、符号量制御方法は、逆探索ステップによって、作業テーブル設定ステップで設定したインデックステーブルから、全ブロックの歪総量を最小とする量子化レベルを逆探索して求める。この逆探索ステップでは、すでに作業テーブル設定ステップでインデックステーブルが設定されているため、このインデックステーブルを参照することで、歪総量を最小とする量子化レベルを最終ブロックから順番に検索していき、全ブロックの量子化レベルを取得する。
【0039】
また、請求項2に記載の符号量制御方法は、符号化対象となる画像を特定の大きさのブロックB(j)(j=1,…,N)に分割して、そのブロック毎に可変長符号を生成する画像符号化において、与えられた符号量上限値Kの範囲内で画像を符号化するために、前記各ブロックの符号量を制御する符号量制御方法であって、以下のステップを含むものとした。
【0040】
すなわち、ブロックを量子化する複数の量子化レベルtに基づいてブロックB(j)を符号化したときの符号量R(t,j)と、量子化レベルtに基づいてブロックB(j)から廃棄される歪量D(t,j)とを算出し、歪・符号量テーブルとして生成する歪・符号量テーブル生成ステップと、符号量上限値Kを最大値とするS(K)個の符号量基準値k(i)(i=1,…,S(K)=K)からなる符号量基準値リストを生成する符号量基準値リスト生成ステップと、符号量基準値k(i)に最も近い符号量R(t,1)となる量子化レベルt及びそのときの歪量D(t,1)を、符号量基準値k(i)とブロックB(j)とを対応付けたインデックステーブルIdx(i,j)及び歪総量テーブルF(i,j)の初期値として設定する作業テーブル初期値設定ステップと、を含む。
【0041】
さらに、符号量をrとし、そのrに最も近い前記符号量基準値k(i)のインデックスiを返す写像をψ(r)として、歪総量f(i,j;t)をD(t,j)+F(ψ(k(i)−R(t,j)),j−1)と定義したときの、歪総量f(i,j;t)を最小とする量子化レベルt及びそのときの歪総量f(i,j;t)を、インデックステーブルIdx(i,j)及び歪総量テーブルF(i,j)に設定する作業テーブル設定ステップと、符号量基準値k(i)のインデックスiにS(K)を、ブロックB(j)のインデックスjにNを初期値として与え、ブロックB(j)に割り当てる量子化レベルt(j)をインデックステーブルIdx(i,j)とし、写像ψ(k(i)−R(t(j)、j))を計算し、その計算結果を改めてiの値とし、jを順次減算することで、量子化レベルt(j)のリスト(t(1),…,t(N))を前記インデックステーブルIdx(i,j)から逆探索する逆探索ステップと、を含むことを特徴とする。
【0042】
この方法によれば、符号量制御方法は、歪・符号量テーブル生成ステップによって、ブロックを量子化する複数の量子化レベルtに基づいてブロックB(j)を符号化したときの符号量R(t,j)と、量子化レベルtに基づいてブロックB(j)から廃棄される歪量D(t,j)とを算出し、歪・符号量テーブルとして生成する。
【0043】
そして、符号量制御方法は、符号量基準値リスト生成ステップによって、符号量基準値リストを生成する。この符号量基準値リストは、符号量上限値Kを最大値とするS(K)個の符号量基準値k(i)(i=1,…,S(K)=K)からなる。
【0044】
さらに、符号量制御方法は、作業テーブル初期値設定ステップによって、符号量基準値k(i)とブロックB(j)とを対応付けたインデックステーブルIdx(i,j)及び歪総量テーブルF(i,j)を初期化する。この初期化で使用する初期値は、符号量基準値k(i)に最も近い符号量R(t,1)となる量子化レベルt及びそのときの歪量D(t,1)とする。そして、作業テーブル設定ステップによって、インデックステーブルIdx(i,j)及び歪総量テーブルF(i,j)に値を設定する。このインデックステーブルIdx(i,j)及び歪総量テーブルF(i,j)に設定する値は、写像ψ(r)を符号量rに最も近い符号量基準値k(i)のインデックスiを返す写像とし、歪総量f(i,j;t)をD(t,j)+F(ψ(k(i)−R(t,j)),j−1)と定義したときの、歪総量f(i,j;t)を最小とする量子化レベルt及びそのときの歪総量f(i,j;t)とする。なお、写像ψ(r)は、符号量rと符号量基準値k(i)との差分を求め、その差分量が最も小さくなるインデックスiを返すものである。
【0045】
そして、符号量制御方法は、逆探索ステップによって、量子化レベルt(j)のリスト(t(1),…,t(N))をインデックステーブルIdx(i,j)から逆探索する。この逆探索は、符号量基準値k(i)のインデックスiにS(K)を、ブロックB(j)のインデックスjにNを初期値として与え、ブロックB(j)に割り当てる量子化レベルt(j)をインデックステーブルIdx(i,j)とし、写像ψ(k(i)−R(t(j)、j))を計算し、その計算結果を改めてiの値とし、jを順次減算することで行う。
【0046】
さらに、請求項3に記載の符号量制御方法は、請求項2に記載の符号量制御方法であって、量子化レベルtは、各ブロックB(j)のビットプレーンの位置を示す値であり、そのビットプレーンの位置に基づいて各ブロックB(j)を量子化することを特徴とする。
【0047】
この方法によれば、符号量制御方法は、量子化レベルtを各ブロックB(j)のビットプレーンの位置を示す値とし、この値に基づいて、ビットプレーンの廃棄を行うことで、各ブロックB(j)の量子化を行う。これによって、符号化における符号量を削減する。
【0048】
また、請求項4に記載の符号量制御装置は、符号化対象となる画像を特定の大きさのブロックに分割して、その分割されたブロックの順に可変長符号を生成する画像符号化において、与えられた符号量上限値の範囲内で画像を符号化するために、各ブロックの符号量を制御する符号量制御装置であって、以下の構成にかかるものとした。
【0049】
すなわち、ブロックを量子化する複数の量子化レベルに基づいてブロックを符号化したときの符号量と、量子化レベルに基づいてブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成する歪・符号量テーブル生成手段と、この歪・符号量テーブル生成手段によって生成された歪・符号量テーブルを保持する歪・符号量テーブル保持手段と、符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成する符号量基準値リスト生成手段と、この符号量基準値リスト生成手段で生成された符号量基準値リストを保持する符号量基準値リスト保持手段と、第1番目のブロックから特定ブロックまでの符号量が、符号量基準値に最も近い符号量となる特定ブロックの量子化レベル及びそのときの歪総量を、符号量基準値とブロックとを対応付けたインデックステーブル及び歪総量テーブルとして生成する作業テーブル生成手段と、この作業テーブル生成手段で生成されたインデックステーブル及び歪総量テーブルを保持する作業テーブル保持手段と、この作業テーブル保持手段に保持されているインデックステーブルから、全ブロックの歪総量を最小とする量子化レベルを逆探索して求める逆探索手段と、を備える構成とした。
【0050】
かかる構成によれば、符号量制御装置は、歪・符号量テーブル生成手段によって、複数の量子化レベルに基づいてブロックを符号化したときの符号量と、量子化レベルに基づいてブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成し歪・符号量テーブル保持手段に保持する。この量子化レベルは、符号化を行う際の符号量を削減するためのレベルを示すものである。
【0051】
そして、符号量制御装置は、符号量基準値リスト生成手段によって、符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成し符号量基準値リスト保持手段に保持する。この符号量基準値は、符号量上限値における最適な量子化レベルを求める問題を解くときに、小規模な問題を解決し、その結果から順次問題の規模を拡大することで求める問題を解くために、符号量上限値を小規模な問題の値とするために細分化したものである。例えば、HDTV(High Definition Television)の入力画像を符号化する場合は、符号量基準値の個数を100〜200個程度とする。
【0052】
さらに、符号量制御装置は、作業テーブル生成手段によって、第1番目のブロックから特定ブロックまでの符号量が、符号量基準値に最も近い符号量となる特定ブロックの量子化レベル及びそのときの歪総量を、符号量基準値とブロックとを対応付けたインデックステーブル及び歪総量テーブルとして生成し作業テーブル保持手段に保持する。
【0053】
そして、符号量制御装置は、逆探索手段によって、作業テーブル保持手段に保持されているインデックステーブルから、全ブロックの歪総量を最小とする量子化レベルを逆探索して求める。この逆探索手段では、すでに作業テーブル生成手段によって、インデックステーブルが作業テーブル保持手段に保持されているため、このインデックステーブルを参照することで、歪総量を最小とする量子化レベルを最終ブロックから順番に検索していき、全ブロックの量子化レベルを取得する。
【0054】
さらに、請求項5に記載の符号量制御プログラムは、符号化対象となる画像を特定の大きさのブロックに分割して、その分割されたブロックの順に可変長符号を生成する画像符号化において、与えられた符号量上限値の範囲内で画像を符号化するときの各ブロックの符号量を制御するために、コンピュータを、以下の手段によって機能させる構成とした。
【0055】
すなわち、ブロックを量子化する複数の量子化レベルに基づいてブロックを符号化したときの符号量と、量子化レベルに基づいてブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成して歪・符号量テーブル保持手段に保持する歪・符号量テーブル生成手段、符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成して符号量基準値リスト保持手段に保持する符号量基準値リスト生成手段、第1番目のブロックから特定ブロックまでの符号量が、符号量基準値に最も近い符号量となる前記量子化レベル及びそのときの歪総量を、符号量基準値とブロックとを対応付けたインデックステーブル及び歪総量テーブルを生成して作業テーブル保持手段に保持する作業テーブル生成手段、作業テーブル保持手段で保持されているインデックステーブルから、全ブロックの歪総量を最小とする量子化レベルを逆探索して求める逆探索手段、とした。
【0056】
かかる構成によれば、符号量制御プログラムは、歪・符号量テーブル生成手段によって、複数の量子化レベルに基づいてブロックを符号化したときの符号量と、量子化レベルに基づいてブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成し歪・符号量テーブル保持手段に保持する。この量子化レベルは、符号化を行う際の符号量を削減するためのレベルを示すものである。
【0057】
そして、符号量制御プログラムは、符号量基準値リスト生成手段によって、符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成し符号量基準値リスト保持手段に保持する。この符号量基準値は、符号量上限値における最適な量子化レベルを求める問題を解くときに、小規模な問題を解決し、その結果から順次問題の規模を拡大することで求める問題を解くために、符号量上限値を小規模な問題の値とするために細分化したものである。例えば、HDTV(High Definition Television)の入力画像を符号化する場合は、符号量基準値の個数を100〜200個程度とする。
【0058】
さらに、符号量制御プログラムは、作業テーブル生成手段によって、第1番目のブロックから特定ブロックまでの符号量が、符号量基準値に最も近い符号量となる量子化レベル及びそのときの歪総量を、符号量基準値とブロックとを対応付けたインデックステーブル及び歪総量テーブルを生成し作業テーブル保持手段に保持する。
【0059】
そして、符号量制御プログラムは、逆探索手段によって、作業テーブル保持手段に保持されているインデックステーブルから、全ブロックの歪総量を最小とする量子化レベルを逆探索して求める。この逆探索手段では、すでに作業テーブル生成手段によって、インデックステーブルが作業テーブル保持手段に保持されているため、このインデックステーブルを参照することで、歪総量を最小とする量子化レベルを最終ブロックから順番に検索していき、全ブロックの量子化レベルを取得する。
【0060】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照して説明する。
図1は、本発明における符号量制御装置を含んだ符号化装置の構成を示したブロック図である。図1に示す符号化装置1は、サブバンド分解手段2と、符号量制御装置3と、エントロピ符号生成手段4とを備え、画像符号化規格JPEG2000に代表されるウェーブレット変換を用いたサブバンド符号化により、入力画像を、与えられた符号量上限値内で圧縮符号化し、エントロピ符号に変換するものである。
【0061】
サブバンド分解手段2は、入力画像を、ウェーブレット変換を用いた2次元サブバンド分解によって分解するものである。図11(a)に示すように、このサブバンド分解手段2は、入力画像に1次元のウェーブレット変換を水平及び垂直に施すものであり、1回の分解によって入力画像をL1L1、L1H1、H1L1、H1H1に分解する。この分解をさらにL1L1に対して行うことで、L1L1は、L2L2、L2H2、H2L2、H2H2に分解される。このように、サブバンド分解手段2は、入力画像の低周波領域を繰り返して分解することで、入力画像を階層的なサブバンドに分解するものである。
【0062】
符号量制御装置3は、サブバンド分解手段2で分解されたサブバンドを特定の大きさのブロック(コードブロック)に分割し、そのブロック毎に量子化のレベル(量子化レベル)を変えて量子化を行いデータの切り捨てを行う際に、符号化歪を最小にする各ブロック毎の量子化レベルを選択するものである。ここでは、量子化レベルとして、図12で説明したビットプレーン符号化で使用するビットプレーンの位置を示すものとする。この符号量制御装置3の構成については後記する。
【0063】
エントロピ符号生成手段4は、符号量制御装置3で各ブロックの量子化レベルによって削減されたデータを、適応的算術符号等のエントロピ符号化を行うものである。このエントロピ符号生成手段4によって、符号化データであるエントロピ符号が生成される。
【0064】
(符号量制御装置の構成)
次に、本発明における符号量制御装置の構成について説明する。
図1に示すように、符号量制御装置3は、コードブロック分割手段10と、歪・符号量テーブル生成手段11と、符号量基準値リスト生成手段12と、作業テーブル生成手段13と、逆探索手段14と、ビット切り捨て手段15と、を備える構成とした。
【0065】
コードブロック分割手段10は、サブバンド分解手段2によってサブバンドに分解された入力画像を特定の大きさのブロック(コードブロック)に分割するものである(図11(b)参照)。ここでは、コードブロック分割手段10は、各サブバンドの画素をPビットで表現し、さらに各サブバンドを空間的に垂直m画素、水平n画素のN個のコードブロックB(j)(j=1,…,N)に分割するものとする。これにより、各コードブロックはm×nビットのP個のビットプレーンとして生成される。このコードブロックは、歪・符号量テーブル生成手段11と、ビット切り捨て手段15とに出力される。
【0066】
歪・符号量テーブル生成手段11は、コードブロック分割手段10で分割されたコードブロックの量子化レベルを変えてエントロピ符号化を行ったときの符号量と、その符号化によって廃棄される歪量とを、各コードブロックと量子化レベルを対応付けた歪・符号量テーブルを生成するものである。なお、このエントロピ符号化は、エントロピ符号生成手段4と同一の符号化である。ここで、量子化レベルは、図12で説明したビットプレーン符号化におけるビットプレーンを廃棄する基準となる位置(TP:Truncation Point)を用いることとする。
【0067】
この歪・符号量テーブル生成手段11では、歪・符号量テーブルとして、コードブロックB(j)のTPをt(t=0,…,P−1)とし、tより下位のビットプレーンを廃棄してコードブロックを符号化したときの符号量を(1)式で定義して、符号量テーブル(R(t,j))とし、(1)式において廃棄された歪量を、歪量テーブル(D(t,j))として生成する。すなわち、図2に示すように、歪量テーブル(図2(a)参照)及び符号量テーブル(図2(b)参照)は、P個のビットプレーンの中でTPの位置を指し示すインデックスtと、コードブロックB(j)を指し示すインデックスjとを引数とする2次元の配列となる。この歪量テーブル及び符号量テーブルが請求項に記載の歪・符号量テーブル保持手段に該当し、メモリ等の記憶手段に保持される。
【0068】
符号量基準値リスト生成手段12は、与えられた符号量上限値を最大値とする数列を符号量基準値のリスト(符号量基準値リストKset)として生成するものである。この符号量基準値リスト生成手段12は、与えられた符号量上限値をKとしたとき、Kを最大値とするS(K)通りの符号量基準値リストKsetを、図3に示すようにk(1),…,k(S(K))の1次元配列データとして生成する。例えば、HDTV(High Definition Television)の入力画像を符号化する場合は、符号量基準値リストKsetの数列の個数を100〜200個程度とする。この符号量基準値リストKsetが請求項に記載の符号量基準値リスト保持手段に該当し、メモリ等の記憶手段に保持される。
【0069】
作業テーブル生成手段13は、歪・符号量テーブル生成手段11で生成された歪量テーブルD、符号量テーブルR及び符号量基準値リスト生成手段12で生成された符号量基準値リストKsetを参照して、符号量基準値k(i)(i=0,…,S(K))毎に、j個のコードブロックB(1),…,B(j)の歪総量が最小となる量子化レベルのリストを設定したときの歪総量を歪総量テーブルF(i,j)とし、そのときの量子化レベル(TP)を指し示すインデックスをインデックステーブルIdx(i,j)として生成するものである。この歪総量テーブルF及びインデックステーブルIdxの生成手順については後記する。この歪総量テーブルF及びインデックステーブルIdxが請求項に記載の作業テーブル保持手段に該当し、メモリ等の記憶手段に保持される。
【0070】
逆探索手段14は、歪・符号量テーブル生成手段11で生成された符号量テーブルR、符号量基準値リスト生成手段12で生成された符号量基準値リストKset及び作業テーブル生成手段13で生成されたインデックステーブルIdxを参照して、N個のコードブロックB(j)(j=1,…,N)毎のTPの位置(t(1),…,t(N))をTPリストTとして決定するものである。
【0071】
この逆探索手段14は、作業テーブル生成手段13で生成されたインデックステーブルIdxですでに求められているIdx(S(K),N)の値、すなわち、コードブロック数をN個としたときの、コードブロックB(N)のTPの位置(t(N))を初期値として、インデックステーブルIdxから順次t(N−1),…,t(1)を逆探索して求めていくものである。この逆探索手順については後記する。
【0072】
ビット切り捨て手段15は、コードブロック分割手段10で分割されたコードブロックB(j)(j=1,…,N)から、逆探索手段14で求められたTPリストT(t(1),…,t(N))に基づいて、各コードブロックB(j)からTPリストTのTPの位置より下位のビットプレーンを廃棄し、残ったビットプレーンをエントロピ符号生成手段4へ出力するものである。
これにより、エントロピ符号生成手段4で符号化されたエントロピ符号は、入力画像を、与えられた符号量上限値内で歪量を最小にして圧縮符号化された符号化データとなる。
【0073】
以上、一実施形態に基づいて、符号量制御装置3の構成について説明したが、符号量制御装置3は、コンピュータにおいて各手段を各機能プログラムとして実現することも可能であり、各機能プログラムを結合して符号量制御プログラムとして動作させることも可能である。
【0074】
(符号量制御装置の動作)
次に、符号量制御装置3の動作について説明する。
[動作概念]
まず、符号量制御装置3で行う符号量制御動作の概念について説明する。この符号量制御装置3は、N個のコードブロックB(j)(j=1,…,N)で前記した(問題A)の解を求めるにあたり、(問題A)を図4に示すようにN通りの部分的な対象に分解し、その部分的な対象における問題を順次解くことにより、最終的に(問題A)の解を得るものである。
【0075】
図4に示したN通りの対象(1〜N)について、符号量基準値リスト生成手段12で生成する符号量基準値k(i)(i=1,…,S(K))を符号量上限値とする、対象j(j=1,…,N)の符号量の割り当てを最適化する問題を、A(i,j)で表し、このS(K)×N通りの問題を以下の(サブ問題A)として定式化する。
【0076】
(サブ問題A)
j個のコードブロックB(1),B(2),…,B(j)について、目標とする符号量上限値をk(i)とするとき、R(T(j))=k(i)なる条件の下で、D(T(j))を最小化するTP(Truncation Point)のリスト(TPリスト)T(j)を決定する(R及びDは、(4)式及び(5)式参照)。
ただし、T(j)=((t(1),…,t(j)))で、j個のコードブロックB(1),B(2),…,B(j)にそれぞれ割り当てられるTPのリストT(j)とする。
(サブ問題A終)
【0077】
このように定式化されたS(K)×N個のサブ問題の中で(サブ問題A)A(S(K),N)が本来求めたい(問題A)に該当することになる。
この符号量制御装置3では、最も小規模な(サブ問題A)A(1,1)から、i及びjを順次拡大しながら、すでに解かれた小規模の(サブ問題A)の解を参照することで、逐次的に問題を解決していき、最終的に求めたい(サブ問題A)A(S(K),N)、すなわち(問題A)を解くものである。
【0078】
次に、図5を参照(適宜図1参照)して、(サブ問題A)を順次解いていく符号量制御装置3の動作について説明する。図5は、符号量制御装置3の概略動作を示すフローチャートである。なお、コードブロック分割手段10及びビット切り捨て手段15の動作については、従来と同様の動作であるのでここでは説明を省略する。
【0079】
[ステップS1:歪・符号量テーブル生成]
まず、符号量制御装置3は、ブロック分割手段10でm×nビットのP個のビットプレーンとして分割された各コードブロックB(j)(j=1,…,N)を、歪・符号量テーブル生成手段11によって、量子化レベル(TP)の値(t=0,…,P−1)毎にエントロピ符号化を行った符号量を符号量テーブルR(t,j)として生成し、その符号化によって廃棄される歪量を歪量テーブルD(t,j)として生成する。
【0080】
[ステップS2:符号量基準値リスト生成]
また、符号量制御装置3は、符号量基準値リスト生成手段12によって、与えられた符号量上限値をKとしたとき、Kを最大値とするS(K)通りの符号量基準値のリスト(符号量基準値リストKset)を、Kset≡(k(1),…,k(S(K))=K)として生成する。
【0081】
なお、この符号量基準値リストKsetは、k(i)<k(i+1)かつk(S(K))=Kであればよい。例えば、正数εをK/(S(K)−1)とし、(7)式に示すようにk(i)を直線的に増加する数列とする。
【0082】
k(i)=(i−1)*ε   …(7)
【0083】
また、符号量基準値リストKsetは、ある符号量基準値付近を細かく分割する非線型に増加する数列としてもよい。
【0084】
[ステップS3:作業テーブル初期値設定]
そして、符号量制御装置3は、作業テーブル生成手段13によって、(サブ問題A)を順次、帰納的に解くための作業領域となるS(K)行N列のインデックステーブルIdx及び歪総量テーブルFに初期値を設定する。
【0085】
ここで、Idx(i,j)及びF(i,j)(i=1,…,S(K),j=1,…,N)を、インデックステーブルIdx及び歪総量テーブルFのi行j列の要素とすると、F(i,j)は、符号量基準値k(i)でj個のコードブロックB(1),…,B(j)について最適なTPのリストT(j)を設定したとき、すなわち、(サブ問題A)A(i,j)を解いたときの歪量総和D(T(j))を格納する場所となる。また、Idx(i,j)は、(サブ問題A)A(i,j)を解いたときのコードブロックB(j)のTPを示すt(j)の値を格納する場所となる。
【0086】
このステップS3では、コードブロックB(1)に着目して、最も規模の小さい(サブ問題A)A(i,1)(i=1,…,S(K))を解き、インデックステーブルIdx及び歪総量テーブルFの第1列の要素を決定する。この(サブ問題A)A(i,1)(i=1,…,S(K))は、ある符号量基準値k(i)における1個のブロックB(1)に符号量を割り当てる問題であって、求めるべきTPのリストであるT(1)には1個の要素t(1)しか存在しない。従って、(サブ問題A)A(i,1)の解、すなわち、符号量基準値k(i)の符号量制約の下でコードブロックB(1)に対する最適なTPであるt(1)は、符号量総和R(T)=k(i)、すなわち、R(t(1),1)=k(i)によって一意に決定されることになる。この場合、必ずしもR(t(1),1)=k(i)が正確に成立するt(1)が存在するとは限らないため、ここでは、k(i)に「最も近い」符号量R(t,1)となるt、すなわちt(1)を決定し、このt(1)の値をインデックステーブルIdx(i,1)に格納する。
【0087】
そして、歪総量テーブルFのF(i,1)には、(サブ問題A)A(i,1)での歪量、すなわち、インデックステーブルIdxのIdx(i,1)におけるコードブロックB(1)に発生する符号化歪量を、歪量テーブルDから歪量D(Idx(i,1)、1)の値を読み込んで格納する。
【0088】
ここで「最も近い」について定義しておく。例えば符号量をrとし、符号量基準値k(i)(i=1,…,S(K))としたとき、近さの尺度を|k(i)−r|(k(i)とrとの差分の絶対値)とすると、k(i)は(7)式に示したようにiに関して単調増加(k(i−1)<k(i))するものであり、k(i−1)<r<k(i)であって、rがk(i−1)とk(i)とのちょうど中間に位置する場合、すなわちr−k(i−1)=k(i)−rであるとすると、rに「最も近い」値はk(i−1)とk(i)との2個になり、ある符号量rに「最も近い」符号量基準値が特定できないことになる。
【0089】
そこで、ここではk(i)≦rで、かつ、i´≠iである全てのi´について|r−k(i)|≦|r−k(i´)|とすることで、ある符号量rに「最も近い」符号量基準値k(i)のiを特定するものとする。なお、このiを特定する方法はこれ以外にも種々あり、例えば、k(i)≧rで、かつ、i´≠iである全てのi´について|r−k(i)|≦|r−k(i´)|とすることも可能である。
【0090】
以上の作業テーブル初期値設定(ステップS3)の動作を図6のフローチャートに示す。図6に示すように、作業テーブル初期値設定(ステップS3)は、まず変数iを1に初期化する(ステップS30)。そして、符号量基準値k(i)に「最も近い」符号量R(t,1)となるコードブロックB(1)に対するTPの値をtとする(ステップS31)。なお、このステップS31において、argument{条件|パラメータリスト}は「パラメータリスト」から「条件」を満たすパラメータを取り出す操作を表すものとする。また、「条件」における「≒」記号は「最も近い」を表す記号とする。
【0091】
そして、このステップS31で取得したTPの値tを、インデックステーブルIdx(i,1)に格納し(ステップS32)、歪量D(t、1)すなわちD(Idx(i,1)、1)を読み込んで、歪総量テーブルFのF(i,1)に格納する(ステップS33)。そして、変数iが符号量基準値の数(S(K))かどうかを判定し(ステップS34)、等しい場合(Yes)は処理を終了し、異なる場合(No)は変数iの値を1加算して(ステップS35)、ステップS31へ戻って処理を続ける。
【0092】
以上の動作によって、符号量基準値k(i)(i=1,…,S(K))において、インデックステーブルIdxのIdx(i,1)には、コードブロックB(1)に対して、k(i)に「最も近い」符号量を与えるTPの値が格納される。また、歪総量テーブルFのF(i,1)には、コードブロックB(1)に対して、k(i)に「最も近い」符号量を与えるTPにおけるコードブロックB(1)の歪量が格納される。
これにより、インデックステーブルIdx及び歪総量テーブルFにおける第1列目のS(K)個の値が埋められ、(サブ問題A)A(i,1)(i=1,…,S(K))が解かれたことになる。
【0093】
[ステップS4:作業テーブル設定]
次に符号量制御装置3は、作業テーブル生成手段13によって、ステップS3で解かれた(サブ問題A)A(i,1)の結果を初期値として、コードブロックB(i),…,B(j−1)に関する(サブ問題A)A(i,j−1)を参照して、(サブ問題A)A(i,j)を解いていく。すなわち、インデックステーブルIdx及び歪総量テーブルFですでに確定している第(j−1)列のS(K)個の値を参照して、第j列の値を帰納的に決定していく。
【0094】
ここで作業テーブル設定(ステップS4)の動作を図7のフローチャートを参照して説明する。
図7に示すように、作業テーブル設定(ステップS4)は、まず、コードブロックB(j)のインデックスである変数jを2に初期化し(ステップS40)、符号量基準値k(i)のインデックスである変数iを1に初期化する(ステップS41)。ここで変数jを2に初期化するのは、作業テーブル初期値設定(ステップS3)において、コードブロックB(1)におけるインデックステーブルIdxは、すでに設定されているためである。
【0095】
そして、(サブ問題A)A(i,j)において、TPのリストであるT(j)の最後の要素t(j)をtとしたとき(コードブロックB(j)のTPをtとしたとき)のコードブロックB(1),…,B(j)の歪総量を算出する(ステップS42)。
ここでは、まず、符号量rから符号量基準値リストKsetの要素のインデックスへの写像ψを(8)式で定義しておく。
【0096】

Figure 2004056605
【0097】
この(8)式において、argument{条件|パラメータリスト}は「パラメータリスト」から「条件」を満たすパラメータを取り出す操作を表すものとし、「条件」における「≒」記号は「最も近い」を表す記号とする。
そして、このステップS42のコードブロックB(1),…,B(j)の歪総量f(i,j;t)の算出には、(9)式を用いる。
【0098】
Figure 2004056605
【0099】
この(9)式において、(k(i)−R(t,j))は、(サブ問題A)A(i,j)に割り当てられた符号量基準値k(i)から、コードブロックB(j)の符号量R(t,j)を引いた量で、ここでは残余符号量と呼ぶこととする。また、ψ(k(i)−R(t,j))は、(8)式に示したように、残余符号量(k(i)−R(t,j))に「最も近い」符号量基準値リストKsetの要素のインデックスを表している。従って、歪総量テーブルFのF(ψ(k(i)−R(t,j)),j−1)は、(サブ問題A)A(ψ(k(i)−R(t,j),j−1)を解いたときの歪総量となる。
【0100】
そして、(9)式は、この(サブ問題A)A(ψ(k(i)−R(t,j),j−1)を解いたときの歪総量に、コードブロックB(j)の歪量D(t,j)を加算したもので、(サブ問題A)A(i,j)において、TPのリストであるT(j)の最後の要素t(j)をtとしたときのコードブロックB(1),…,B(j)の歪総量となる。
このように、(9)式で算出した歪総量が最小となるTPの値tを(10)式を用いて取得する(ステップS43)。
【0101】
Figure 2004056605
【0102】
この(10)式は、歪総量f(i,j;t)がパラメータtによって変化するときに最小値(minimize)となるtの値を取り出すことを表している。ここで、歪総量f(i,j;t)の要素は最大P(0,…,P−1)個あり、その中の最小値が、(サブ問題A)A(i,j)を解いたときの歪総量である。従って、その歪総量が最小値となるときのTPの値tを取得すれば、このtの値が、(サブ問題A)A(i,j)の解であるTPのリストT(j)における最後の要素t(j)となる。
【0103】
そして、ステップS43で取得したTPの値tを、インデックステーブルIdx(i,j)に格納し(ステップS44)、そのときのtの値における歪総量f(i,j;t)を、歪総量テーブルFのF(i,j)に格納する(ステップS45)。そして、変数iが符号量基準値の数(S(K))かどうかを判定し(ステップS46)、異なる場合(No)は変数iの値を1加算して(ステップS47)、ステップS42へ戻って処理を続ける。
【0104】
そして、変数iが符号量基準値の数(S(K))と等しい場合(Yes)は、変数jがコードブロックの数(N)かどうかを判定し(ステップS48)、等しい場合(Yes)は処理を終了し、異なる場合(No)は変数jの値を1加算して(ステップS49)、ステップS41へ戻って処理を続ける。
【0105】
以上の動作によって、インデックステーブルIdx及び歪総量テーブルFにおける第2列目以降のコードブロックB(j)(j=2,…,N)の値がS(K)個づつ順に埋められ、(サブ問題A)A(i,j)を解いたときの、インデックステーブルIdxの値であるIdx(i,j)と、歪総量テーブルFの値であるF(i,j)が決定される。このインデックステーブルIdx及び歪総量テーブルFの要素が逐次的に決定される順序を図9に示す。図9(a)には、インデックステーブルIdxの決定順序を、図9(b)には、歪総量テーブルFの決定順序を模式的に示している。インデックステーブルIdx及び歪総量テーブルF共に、第1列目(コードブロックB(1))の符号量基準値k(i)のインデックスi=1からi=S(K)までが初期値として設定された後に、第2列目のコードブロックB(2)から順番にコードブロックB(N)までの値が決定される。
【0106】
このように、帰納的に(サブ問題A)を解いていくことで、(サブ問題A)A(S(K),N)における歪総量テーブルFの値であるF(S(K),N)と、インデックステーブルIdxの値であるIdx(S(K),N)とを求めることができる。
【0107】
[ステップS5:逆探索]
次に符号量制御装置3は、作業テーブル生成手段13によって、ステップS4で設定されたインデックステーブルIdxのS(K)行N列のテーブルであるIdx(i,j)(i=1,…,S(K),j=1,…,N)を用いて、Idx(S(K),N)、すなわち、コードブロックの数がN個の場合のコードブロックB(N)におけるTPの値t(N)を初期値として、逆探索によりt(N−1),…,t(1)を順次決定する。
【0108】
ここで、逆探索(ステップS5)の動作を図8のフローチャートを参照して説明する。
図8に示すように、逆探索(ステップS5)は、まず、符号量基準値k(i)のインデックスである変数iを符号量基準値の数(S(K))に初期化し(ステップS50)、コードブロックB(j)のインデックスである変数jをコードブロックの数(N)に初期化する(ステップS51)。
【0109】
そして、コードブロックB(j)に割り当てるTPの値であるIdx(i,j)をインデックステーブルIdxから取得し、t(j)に設定する(ステップS52)。このステップS52は、あるIdx(i,j)が定まっているとすると、符号量基準値k(i)をコードブロックB(1),…,B(j)に割り当てる(サブ問題A)A(i,j)はすでに解かれており、Idx(i,j)は、最後のコードブロックB(j)に割り当てるTPの値であるt(j)となる。
【0110】
この結果、符号量基準値k(i)から、コードブロックB(j)に割り当てる符号量R(t,j)を引いた量、すなわち、残余符号量k(i)−R(t(j),j)がコードブロックB(1),…,B(j−1)に割り当てるべき符号量となる。そこで、このコードブロックB(j)の残余符号量k(i)−R(t(j),j)に「最も近い」符号量基準値のインデックスをψ(k(i)−R(t(j),j))で算出し、新たに変数iに代入する(ステップS53)。
【0111】
そして、コードブロックB(j)のインデックスである変数jから1減算し(ステップS54)、変数jが0になったかどうかを判定する(ステップS55)。ここで変数jが0になった場合(Yes)は、処理を終了し、変数jが0でない場合(No)は、ステップS52へ戻って処理を続ける。
【0112】
以上の動作を図10を参照してさらに説明する。図10は、逆探索手段14における逆探索動作を模式的に表した図である。インデックステーブルIdxの値であるIdx(S(K),N)、すなわちコードブロックB(N)のTPの値(t(N))は、すでにステップS4によって求められている(A1に書き込まれている)。次に、符号量上限値Kから、t(N)でコードブロックB(N)を符号化したときの符号量(R(t(N)、N))を引いた残余符号量(K−R(t(N)、N))に「最も近い」符号量基準値リストKsetの要素のインデックスをiとする。すなわち、K−R(t(N)、N)≒k(i)となるインデックスiを求める。そして、インデックステーブルIdxで、このインデックスiに該当する(A2に書き込まれている)コードブロックB(N−1)の値(Idx(i,N−1))をコードブロックB(N−1)のTPの値(t(N−1))とする。
【0113】
さらに、符号量基準値k(i)から、t(N−1)でコードブロックB(N−1)を符号化したときの符号量(R(t(N−1)、N−1))を引いた残余符号量(K−R(t(N−1)、N−1))に「最も近い」符号量基準値リストKsetの要素のインデックスをi´とする。すなわち、K−R(t(N−1)、N−1)≒k(i´)となるインデックスi´を求める。そして、インデックステーブルIdxで、このインデックスi´に該当する(A3に書き込まれている)コードブロックB(N−2)の値(Idx(i´,N−2))をコードブロックB(N−2)のTPの値(t(N−2))とする。このように、順次TPの値をt(1)まで逆探索する。
【0114】
以上の動作によって、N個のコードブロックB(j)のTPのリストT=(t(1),…,t(N))は、すでに求まっているインデックステーブルIdxを参照(逆探索)することで、t(N),…,t(1)の順番に決定される。
以上のステップS1〜S5の動作により、与えられた符号量上限値Kの下で歪量総和D(T)((5)式参照)を最小化するコードブロックB(j)(j=1,…,N)についてのTP(Truncation Point)のリスト(TPリスト)Tを逐次的に決定することができる。
【0115】
このステップS1〜S5の動作で明らかなように、本手法によれば(問題A)は、S(K)*N*Pのオーダの演算で解くことが可能である。例えば、符号量基準値の数を100(S(K)=100)、コードブロックの数を64(N=64)、各コードブロックのビットプレーンの数を16(P=16)とすると、51200回の演算ステップで動作させることが可能で、例えば、1ステップあたり100ナノ秒(ns)の演算時間としても、1/30秒のフレームレートで本手順を動作させることができる。これにより、ソフトウェアによる符号量制御を実現することができる。
【0116】
なお、本手法において、量子化レベルをビットプレーンの位置を示すTP(Truncation Point)として説明したが、この量子化レベルは、サブバンド符号化で使用されるビットプレーン符号化に限定されるものではなく、ブロック単位で符号量と、歪量とをパラメータ制御するような符号化方式においても、そのパラメータを量子化レベルとみなすことで実現することが可能である。例えば、DCT(Discrete Cosine Transform:離散コサイン変換)ベースのブロック符号化においては、ブロック単位に量子化レベルを決定すればよい。
【0117】
また、JPEG2000では、1つのビットプレーンが3種類のパスに分類されてエントロピ符号化されるが、本手法においては、パス毎に別のビットプレーンとみなすことで前記した動作と同様に扱うことが可能である。
【0118】
【発明の効果】
以上説明したとおり、本発明に係る符号量制御方法、符号量制御装置及び符号量制御プログラムでは、以下に示す優れた効果を奏する。
【0119】
請求項1、請求項2、請求項4又は請求項5に記載の発明によれば、情報量を廃棄(量子化)することで、所定の符号量上限値の範囲内で圧縮符号化を行う画像符号化において、歪量を最小化する符号をテーブル検索及び四則演算による短いステップの演算で決定することができる。
これによって、汎用のCPUであっても、動画像を実時間で高画質に圧縮符号化を行うことが可能になり、低コストで符号化装置を実現することができる。
【0120】
請求項3に記載の発明によれば、量子化を行うレベル(量子化レベル)をビットプレーン符号化におけるビットプレーンを廃棄する基準位置とすることで、例えば、ビットプレーン符号化によって量子化を行うJPEG2000等で、画像をブロックに分割し、そのブロックのビットプレーンを廃棄する位置を各ブロック毎に制御することが可能になる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る符号量制御装置の全体構成を示すブロック図である。
【図2】本発明の実施の形態に係る歪量テーブル及び符号量テーブルの構造を説明するための説明図である。
【図3】本発明の実施の形態に係る符号量基準値リストの構造を説明するための説明図である。
【図4】本発明の実施の形態に係る(問題A)の解を求めるためにコードブロックを複数の対象に分解する作業を説明するための説明図である。
【図5】本発明の実施の形態に係る符号量制御動作の概略を示すフローチャートである。
【図6】本発明の実施の形態に係る作業テーブル初期設定の動作を示すフローチャートである。
【図7】本発明の実施の形態に係る作業テーブル設定の動作を示すフローチャートである。
【図8】本発明の実施の形態に係る逆探索の動作を示すフローチャートである。
【図9】本発明の実施の形態に係るインデックステーブル及び歪総量テーブルを設定する順序を視覚的に表した模式図である。
【図10】本発明の実施の形態に係る逆探索動作を模式的に表した模式図である。
【図11】サブバンド符号化におけるサブバンド分解とコードブロック分割を説明するための説明図である。
【図12】ビットプレーン符号化の動作の概要を説明するための説明図である。
【図13】ビットプレーン符号化におけるTruncation pointと符号量及び歪量との関係を説明するための説明図である。
【図14】ビットプレーンの位置(大きさ)と、歪量及び符号量の関係を説明するための説明図である。
【符号の説明】
1……符号化装置
2……サブバンド分解手段
3……符号量制御装置
4……エントロピ符号生成手段
10……コードブロック分割手段
11……歪・符号量テーブル生成手段
12……符号量基準値リスト生成手段
13……作業テーブル生成手段
14……逆探索手段
15……ビット切り捨て手段
D…………歪量テーブル(歪・符号量テーブル保持手段)
R…………符号量テーブル(歪・符号量テーブル保持手段)
Kset…符号量基準値リスト(符号量基準値リスト保持手段)
Idx……インデックステーブル(作業テーブル保持手段)
F…………歪総量テーブル(作業テーブル保持手段)[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to an image coding technique, and more particularly, to compressing an image by truncating coded data under a condition where the amount of code is limited, and compressing the image with the least amount of distortion. TECHNICAL FIELD The present invention relates to a code amount control method for performing code amount control for performing coding, a code amount control device, and a code amount control program.
[0002]
[Prior art]
2. Description of the Related Art Conventionally, as an encoding method for compressing and encoding an image by truncating encoded data under a condition in which a code amount is limited, JPEG2000 (Joint Photographic Expert Group 2000) which performs encoding by wavelet transform. And the like.
[0003]
In JPEG2000, an input image is decomposed by two-dimensional subband decomposition using a wavelet transform, pixels of the decomposed subbands are represented by a plurality of bits (P bits), and each subband is spatially separated. Is divided into blocks (code blocks) having a specific size (vertical m pixels, horizontal n pixels). Then, P bit planes of m × n bits are generated for each block. JPEG2000 performs compression encoding by independently performing entropy encoding with this bit plane as one unit. For example, if the input image is decomposed into the number of blocks N, N × P bit planes are generated, and the input image is converted (encoded) into N × P entropy codes by JPEG2000. Will be.
[0004]
Here, an example in which an input image is decomposed by two-dimensional subband decomposition using JPEG2000 or the like and each subband is divided into code blocks will be described with reference to FIG. FIG. 11A shows an example in which an input image is decomposed into two-dimensional spatial frequency subbands by two-dimensional wavelet transform. FIG. 11B shows an example in which a subband is divided into code blocks of a specific size. As shown in FIG. 11A, the two-dimensional wavelet transform is to apply a one-dimensional wavelet transform to an input image horizontally and vertically, and the input image is transformed into L1L1, L1H1, H1L1, and H1H1 by one decomposition. Decompose. By further performing this decomposition on L1L1, L1L1 is decomposed into L2L2, L2H2, H2L2, and H2H2.
[0005]
By thus repeatedly decomposing the low-frequency region, the two-dimensional wavelet transform realizes hierarchical subband decomposition of the input image. The purpose of performing the sub-band decomposition is to enable a low-resolution image to be reproduced by simply cutting out a part of the encoded single encoded code stream on the receiving side. . Then, the subbands decomposed as shown in FIG. 11A are divided into code blocks of a specific size as shown in FIG. 11B.
[0006]
The input image divided into code blocks in this manner is encoded in units of bit planes, so that the entire image is encoded. Since the code amount of the entire image differs for each image, in order to limit the code amount to a certain code amount or less, it is necessary to selectively discard bit planes so that the distortion amount is minimized as the entire image. Has been done. Performing encoding by selectively discarding the bit plane is called bit plane encoding.
[0007]
Here, the operation of bitplane encoding used in JPEG2000 will be described with reference to FIG. FIG. 12 is a diagram schematically illustrating bit plane encoding in which an input image is divided into code blocks, and bit planes for each code block are selectively discarded to reduce the total code amount to a certain code amount or less. is there.
As shown in FIG. 12, the input image Img is divided into N code blocks B (B (j) (j = 1,..., N)). Each code block B is composed of P bit planes of m × n bits.
[0008]
Here, the bit position of interest in the code block B is set to t (t = 0,..., P−1), and the code amount R when the code block B is coded by discarding the bit planes lower than t. Is defined by equation (1).
[0009]
R (t, j) ≡: r (t, j) +... + R (P−1, j) (1)
[0010]
Note that r (t, j) indicates a code amount when the bit plane t is entropy-coded in the code block B (j) (j = 1,..., N). That is, the code amount R indicates the code amount from the bit plane t to the bit plane (P-1) of the code block B. Since the focused bit position t indicates a reference point at which the bit plane is discarded, it is hereinafter referred to as a TP (Truncation Point).
Also, the amount of distortion D discarded in equation (1) is defined by equation (2).
[0011]
D (t, j) ≡: b (0, j) * 2 0 + ... + b (t-1, j) * 2 t-1 … (2)
[0012]
Note that b (t, j) indicates the total number of non-zero bits of the bit plane t in the code block B (j) (j = 1,..., N). That is, the distortion amount D indicates the sum of the distortion amounts from the bit plane 0 to the bit plane (t−1) of the code block B. This distortion amount D is, for example, b (t, j) * 2 t Alternatively, the calculation may be performed using the square value.
[0013]
In general, the sub-band (coefficient) decomposed by the sub-band decomposition can take positive or negative values. Therefore, the most significant bit plane (P-1) is set as a bit plane (coefficient sign plane) indicating the sign of the coefficient, and the bit plane .., P-2 are the bit values of the absolute value of the coefficient.
[0014]
For example, when TP is t = 0, no bit plane is discarded, so that D (0, j) = 0 in equation (2). When TP = P−1, all bit planes are discarded, so that R (P−1, j) = 0 in equation (1).
[0015]
Here, FIG. 13 shows a relationship between TP when the number of bit planes of the code block B is 16 (P = 16), and the code amount R (t) and the distortion amount D (t). In FIG. 13, the position t = 15 of the TP of the bit plane is set as the coefficient code plane. Here, assuming that the bit plane TP is t, t bit planes 0,..., T−1 lower than t are discarded. Also, r (s) (0 ≦ s ≦ 15) indicates a code amount when the bit plane s is entropy-coded, and d (s) (0 ≦ s ≦ 15) indicates a case where the bit plane s is discarded. Represents the amount of distortion. This distortion amount is, for example, (total number of non-zero bits of bit plane s) * 2 s Or its squared value. R (t) indicates the code amount of the entire code block B (j) (j = 1,..., N) when the position of the TP on the bit plane is t, and D (t) indicates the code block. B (j) indicates the overall distortion amount.
[0016]
Further, FIG. 14 shows a model of the relationship between the position (size) of the TP on the bit plane and the amount of distortion D (t) and the amount of code R (t) for a certain code block B. FIG. 14A shows the relationship between the position (size) of the TP on the bit plane and the distortion amount D (t), and FIG. 14B shows the position (size) of the TP on the bit plane and the code amount R (t). ). As shown in FIG. 14, when TP increases (many bit planes are discarded from the upper bit plane), the distortion amount D (t) increases and the code amount R (t) decreases. Conversely, when the TP becomes smaller (a smaller bit plane is discarded in the lower bit plane), the distortion amount D (t) decreases and the code amount R (t) increases.
Here, for the code block B (j) (j = 1,..., N), a list (TP list) T of t (j) indicating the position of the TP of the code block is defined by Expression (3).
[0017]
T≡ (t (1),..., T (N)) (3)
[0018]
That is, assuming that the position of the TP of the code block B (j) is a bit plane t (j), the total code amount R (T) of the entire N code blocks is given by Expression (4), and the total distortion amount D (T) Can be expressed by equation (5).
[0019]
R (T) = R (t (1), 1) +... + R (t (N), N) (4)
[0020]
D (T) = D (t (1), 1) +... + D (t (N), N) (5)
[0021]
As a result, under the condition that the code amount is limited by JPEG2000 or the like, the solution of the following (Problem A) may be obtained in order to perform truncation of the encoded data and compression encoding of the image.
[0022]
(Issue A)
When the target code amount upper limit is K, a list (TP list) T of TP (Truncation Point) that minimizes D (T) is determined under the condition of R (T) = K (T , R (T) and D (T) refer to equations (3), (4) and (5)).
(End of Question A)
[0023]
Since directly calculating the solution of this (problem A) requires an enormous number of combinational operations, conventionally, in JPEG2000, the solution of the following (problem B) is obtained as a similar problem to (problem A), and a list ( TP list) T (Equation (3)).
[0024]
(Issue B)
Assuming that the target code amount upper limit is K, a combination T and λ that minimizes the evaluation function shown in Expression (6) is obtained under the condition of R (T) = K.
[0025]
L (T, λ) ≡R (T) + λD (T) (6)
[0026]
(For T, R (T) and D (T), refer to equations (3), (4) and (5))
(End of Question B)
[0027]
In order to find a solution to this (problem B), generally, if the evaluation function L (T, λ) is a continuous function, it can be analytically solved using the Lagrange's undetermined multiplier method. It is possible. However, since the evaluation function L (T, λ) is a discrete function, by changing the value of λ according to a plurality of λ values set in advance, the TP for making the evaluation function L (T, λ) smaller is changed. , A list T (t (1),..., T (N)) is sequentially determined.
[0028]
As described above, conventionally, a list T of TPs is determined by an approximate method, bit planes lower than t (1),..., T (N) are discarded for each code block, and each bit plane is discarded. By performing the encoding, the image is compression-encoded under the condition that the code amount is limited.
[0029]
[Problems to be solved by the invention]
However, in the above-described conventional technique, the solution of (Problem A) is the solution of (Problem B), but the solution of (Problem B) is not guaranteed to be the solution of (Problem A) originally desired. That is, the solution of (problem B) is obtained by obtaining a list T (t (1),..., T (N)) of TP (Truncation Point) by an approximate method, and therefore, the evaluation function L (T, λ) (( 6) Refer to the equation).
[0030]
As a method of directly obtaining the solution of (problem A), there is a method of obtaining a solution by a full search. That is, in N code blocks B (j) (j = 1,..., N), R (T) and D (T) with respect to a list T of a certain TP (see equations (4) and (5)) In this method, a list T that satisfies R (T) = K (K is the code amount upper limit) and minimizes D (T) is obtained by sequentially changing the list T.
[0031]
However, in this method, for example, for an image of 8 bits per pixel with 512 horizontal pixels and 512 vertical pixels, encoding is performed by dividing the code block into 64, that is, the image is divided into 64 horizontal pixels and 64 vertical pixels. If the code block is divided into 64 code blocks (N = 64) and the number of bit planes in each code block is 8 (P = 8), the number of possible lists T is P N = 6.2 * 10 57 Even if the verification of one list T is performed in 1 nanosecond (ns), to search for the list T that minimizes D (T), 6.2 * 10 48 Second (sec) = 2 * 10 41 It takes years and cannot be searched in real time.
[0032]
SUMMARY OF THE INVENTION The present invention has been made in view of the above-described problems, and when an image is compressed and encoded by truncating encoded data under a condition where the code amount is limited, the image is identified. When deciding the bit position at which the bit plane of each block is to be discarded when determining the bit position at which the bit plane of each block is to be discarded, the optimal bit position with the minimum distortion amount is calculated with a much smaller amount of calculation than the full search. It is an object of the present invention to provide a code amount control method, a code amount control device, and a code amount control program that can be obtained.
[0033]
[Means for Solving the Problems]
The present invention has been devised to achieve the above object. First, the code amount control method according to claim 1 divides an image to be encoded into blocks of a specific size, In image coding for generating a variable length code in the order of the divided blocks, a code amount control method of controlling the code amount of each block in order to encode an image within a given code amount upper limit value range. Therefore, the method includes the following steps.
[0034]
That is, a code amount when a block is encoded based on a plurality of quantization levels for quantizing the block and a distortion amount discarded from the block based on the quantization level at that time are calculated, and the distortion Generating a code amount table as a code amount table; a code amount reference value list generating step of generating a code amount reference value list including a plurality of code amount reference values having a maximum code amount upper limit; The quantization level at which the code amount is closest to the code amount reference value in the first block and the distortion amount at that time are set as initial values of an index table and a total distortion amount table in which the code amount reference value is associated with the block. For the work table initial value setting step and for each code amount reference value, the total distortion amount from the first block to the specific block is minimized by referring to the total distortion amount table. A work table setting step of sequentially determining the quantization level and the total amount of distortion at that time, and setting values of an index table and a total amount of distortion table in the second and subsequent blocks, and an index table set in the work table setting step. And a reverse search step of performing a reverse search for a quantization level that minimizes the total distortion amount of all blocks.
[0035]
According to this method, the code amount control method performs the distortion / code amount table generation step, wherein the code amount when the block is encoded based on the plurality of quantization levels and the block amount based on the quantization level at that time. , And the amount of distortion to be discarded is calculated to generate a distortion / code amount table. This quantization level indicates a level for reducing the amount of code at the time of encoding.
[0036]
In the code amount control method, the code amount reference value list including a plurality of code amount reference values having the maximum code amount upper limit value is generated in the code amount reference value list generation step. This code amount reference value is used to solve the problem of finding the optimum quantization level at the code amount upper limit value, to solve the small problem, and to solve the problem to be obtained by sequentially expanding the scale of the problem from the result. In addition, the code amount upper limit value is subdivided so as to be a small problem value. For example, when encoding an input image of HDTV (High Definition Television), the number of code amount reference values is set to about 100 to 200.
[0037]
Further, in the code amount control method, the work table initial value setting step sets the quantization level at which the code amount is closest to the code amount reference value in the first block and the distortion amount at that time to the code amount reference value. Blocks are set as initial values of an index table and a total distortion amount table, and a work table setting step refers to the total distortion amount table for each code amount reference value, and refers to the total distortion amount table from the first block to the specific block. The quantization level that minimizes the total distortion amount and the total distortion amount at that time are sequentially determined, and the values of the index table and the total distortion amount table in the second and subsequent blocks are set. Thus, the index table and the total distortion amount table initialized in the work table initial value setting step are recursively set in the order of blocks in the work table initial value setting step.
[0038]
Then, in the code amount control method, in a reverse search step, a quantization level that minimizes the total distortion amount of all blocks is reversely searched for from the index table set in the work table setting step, and is obtained. In this reverse search step, since the index table has already been set in the work table setting step, by referring to this index table, the quantization level that minimizes the total distortion amount is searched in order from the last block, Get the quantization levels for all blocks.
[0039]
In the code amount control method according to the present invention, an image to be encoded is divided into blocks B (j) (j = 1,..., N) of a specific size, and each block is variable. In the image encoding for generating a long code, a code amount control method for controlling the code amount of each block in order to encode an image within a given code amount upper limit K, comprising the following steps: Was included.
[0040]
That is, the code amount R (t, j) when the block B (j) is encoded based on a plurality of quantization levels t for quantizing the block, and the block B (j) based on the quantization level t A distortion / code amount table generation step of calculating the amount of distortion D (t, j) to be discarded and generating the same as a distortion / code amount table, and S (K) codes with the maximum code amount upper limit K as the maximum value A code amount reference value list generating step of generating a code amount reference value list composed of the amount reference values k (i) (i = 1,..., S (K) = K); An index table that associates a quantization level t with a close code amount R (t, 1) and a distortion amount D (t, 1) at that time with a code amount reference value k (i) and a block B (j). Idx (i, j) and the work to be set as initial values of the total distortion amount table F (i, j) Including a table initial value setting step.
[0041]
Further, a code amount is defined as r, a mapping that returns an index i of the code amount reference value k (i) closest to the r is defined as ψ (r), and a total distortion amount f (i, j; t) is defined as D (t, t). j) + F (ψ (k (i) −R (t, j)), j−1), and the quantization level t that minimizes the total distortion amount f (i, j; t), and A work table setting step of setting the total distortion amount f (i, j; t) in the index table Idx (i, j) and the total distortion amount table F (i, j), and the index of the code amount reference value k (i). S (K) is given to i as an initial value and N is given to an index j of a block B (j). A quantization level t (j) assigned to the block B (j) is set as an index table Idx (i, j). ψ (k (i) -R (t (j), j)) is calculated, and the calculation result is again calculated for i. And an inverse search step of performing an inverse search of the list (t (1),..., T (N)) of the quantization levels t (j) from the index table Idx (i, j) by sequentially subtracting j. , Is included.
[0042]
According to this method, the code amount control method uses the code amount R () when the block B (j) is encoded based on the plurality of quantization levels t for quantizing the block in the distortion / code amount table generation step. t, j) and the amount of distortion D (t, j) discarded from the block B (j) based on the quantization level t, and are generated as a distortion / code amount table.
[0043]
In the code amount control method, a code amount reference value list is generated in a code amount reference value list generation step. This code amount reference value list is composed of S (K) code amount reference values k (i) (i = 1,..., S (K) = K) having the maximum code amount upper limit K as the maximum value.
[0044]
Further, in the code amount control method, the index table Idx (i, j) and the total distortion amount table F (i) in which the code amount reference value k (i) and the block B (j) are associated in the work table initial value setting step. , J) are initialized. The initial values used in this initialization are the quantization level t at which the code amount R (t, 1) is closest to the code amount reference value k (i) and the distortion amount D (t, 1) at that time. Then, in the work table setting step, values are set in the index table Idx (i, j) and the total distortion amount table F (i, j). The values set in the index table Idx (i, j) and the total distortion amount table F (i, j) return the index i of the code amount reference value k (i) closest to the map ψ (r). A total distortion amount f (i, j; t) is defined as D (t, j) + F (ψ (k (i) −R (t, j)), j−1). A quantization level t that minimizes (i, j; t) and a total distortion amount f (i, j; t) at that time are set. The mapping ψ (r) is for calculating the difference between the code amount r and the code amount reference value k (i), and returning the index i that minimizes the difference amount.
[0045]
Then, in the code amount control method, a list (t (1),..., T (N)) of the quantization levels t (j) is reversely searched from the index table Idx (i, j) by the reverse search step. In the reverse search, S (K) is given to index i of code amount reference value k (i), N is given to index j of block B (j) as an initial value, and quantization level t assigned to block B (j) is given. (J) is used as an index table Idx (i, j), a mapping ψ (k (i) −R (t (j), j)) is calculated, the calculation result is again set to the value of i, and j is sequentially subtracted. Do it by doing.
[0046]
Further, the code amount control method according to claim 3 is the code amount control method according to claim 2, wherein the quantization level t is a value indicating the position of the bit plane of each block B (j). , Each block B (j) is quantized based on the position of the bit plane.
[0047]
According to this method, the code amount control method sets the quantization level t to a value indicating the position of the bit plane of each block B (j), and discards the bit plane based on this value, thereby making each block B (j) discard. B (j) is quantized. This reduces the amount of code in encoding.
[0048]
The code amount control device according to claim 4 divides an image to be encoded into blocks of a specific size, and generates a variable-length code in the order of the divided blocks. A code amount control device that controls the code amount of each block in order to encode an image within a given code amount upper limit range, and has the following configuration.
[0049]
That is, the amount of code when the block is coded based on a plurality of quantization levels for quantizing the block, and the amount of distortion discarded from the block based on the quantization level are calculated. A distortion / code amount table generating means for generating, a distortion / code amount table holding means for holding the distortion / code amount table generated by the distortion / code amount table generating means, and a plurality of codes having a maximum code amount upper limit value Code amount reference value list generating means for generating a code amount reference value list composed of the code amount reference values, and a code amount reference value list holding the code amount reference value list generated by the code amount reference value list generating means Means, the quantization level of the specific block in which the code amount from the first block to the specific block is the code amount closest to the code amount reference value, and the total distortion amount at that time, A work table generating unit that generates an index table and a total distortion amount table in which the signal amount reference value and the block are associated with each other; a work table holding unit that holds the index table and the total distortion amount table generated by the work table generating unit; A reverse search means for performing a reverse search for a quantization level which minimizes the total distortion amount of all blocks from the index table held in the work table holding means.
[0050]
According to this configuration, the code amount control device discards the code amount when the block is coded based on the plurality of quantization levels by the distortion / code amount table generation unit, and discards the block based on the quantization level. The amount of distortion is calculated as a distortion / code amount table, and stored in the distortion / code amount table holding means. This quantization level indicates a level for reducing the amount of code at the time of encoding.
[0051]
The code amount control device generates a code amount reference value list including a plurality of code amount reference values having the maximum code amount upper limit value by the code amount reference value list generation unit, and stores the generated code amount reference value list in the code amount reference value list holding unit. Hold. This code amount reference value is used to solve the problem of finding the optimum quantization level at the code amount upper limit value, to solve the small problem, and to solve the problem to be obtained by sequentially expanding the scale of the problem from the result. In addition, the code amount upper limit value is subdivided in order to make it a small problem value. For example, when encoding an input image of HDTV (High Definition Television), the number of code amount reference values is set to about 100 to 200.
[0052]
Further, the code amount control device uses the work table generating means to set the quantization level of the specific block in which the code amount from the first block to the specific block is the code amount closest to the code amount reference value and the distortion at that time. The total amount is generated as an index table and a total distortion amount table in which a code amount reference value and a block are associated with each other, and is held in a work table holding unit.
[0053]
Then, the code amount control device reversely searches for a quantization level that minimizes the total distortion amount of all blocks from the index table held in the work table holding means by the reverse search means. In this reverse search means, the index table is already held in the work table holding means by the work table generation means, and by referring to this index table, the quantization levels that minimize the total amount of distortion are sequentially determined from the last block. To obtain the quantization levels of all the blocks.
[0054]
Further, the code amount control program according to claim 5 divides an image to be encoded into blocks of a specific size, and generates a variable length code in the order of the divided blocks. In order to control the code amount of each block when encoding an image within the range of the given code amount upper limit, the computer is configured to function by the following means.
[0055]
That is, the amount of code when the block is coded based on a plurality of quantization levels for quantizing the block, and the amount of distortion discarded from the block based on the quantization level are calculated. A distortion / code amount table generating unit that generates and stores the distortion / code amount table in the distortion / code amount table holding unit, generates a code amount reference value list including a plurality of code amount reference values having the maximum code amount upper limit value, and generates a code amount reference value. Code amount reference value list generation means held in the value list holding means, the quantization level at which the code amount from the first block to the specific block is the code amount closest to the code amount reference value, and the total distortion amount at that time Table generating means for generating an index table and a total distortion amount table in which a code amount reference value and a block are associated with each other, and storing the generated total table in a work table holding means. From the index table held by lifting means and minimize distortion total amount of all blocks reverse search means for obtaining by reverse search the quantization level, and.
[0056]
According to this configuration, the code amount control program is discarded by the distortion / code amount table generation unit from the block based on the code amount when the block is encoded based on the plurality of quantization levels and the quantization level. The amount of distortion is calculated as a distortion / code amount table, and stored in the distortion / code amount table holding means. This quantization level indicates a level for reducing the amount of code at the time of encoding.
[0057]
The code amount control program generates a code amount reference value list including a plurality of code amount reference values having the maximum code amount upper limit value by the code amount reference value list generation unit, and stores the generated code amount reference value list in the code amount reference value list holding unit. Hold. This code amount reference value is used to solve the problem of finding the optimum quantization level at the code amount upper limit value, to solve the small problem, and to solve the problem to be obtained by sequentially expanding the scale of the problem from the result. In addition, the code amount upper limit value is subdivided in order to make it a small problem value. For example, when encoding an input image of HDTV (High Definition Television), the number of code amount reference values is set to about 100 to 200.
[0058]
Further, the code amount control program uses the work table generating means to set the quantization level at which the code amount from the first block to the specific block is the code amount closest to the code amount reference value and the total distortion amount at that time. An index table and a total distortion amount table in which a code amount reference value and a block are associated with each other are generated and stored in a work table storage unit.
[0059]
Then, the code amount control program reversely searches for a quantization level that minimizes the total distortion amount of all blocks from the index table held in the work table holding means by the reverse search means. In this reverse search means, the index table is already held in the work table holding means by the work table generation means, and by referring to this index table, the quantization levels that minimize the total amount of distortion are sequentially determined from the last block. To obtain the quantization levels of all the blocks.
[0060]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, embodiments of the present invention will be described with reference to the drawings.
FIG. 1 is a block diagram showing a configuration of an encoding device including a code amount control device according to the present invention. An encoding device 1 shown in FIG. 1 includes a subband decomposition unit 2, a code amount control device 3, and an entropy code generation unit 4, and a subband code using a wavelet transform represented by the image encoding standard JPEG2000. In this way, the input image is compression-coded within the given code amount upper limit value and is converted into an entropy code.
[0061]
The sub-band decomposition unit 2 decomposes the input image by two-dimensional sub-band decomposition using wavelet transform. As shown in FIG. 11A, the sub-band decomposition unit 2 performs one-dimensional wavelet transform on an input image horizontally and vertically, and performs L1L1, L1H1, H1L1, H1L1, Decomposes into H1H1. By further performing this decomposition on L1L1, L1L1 is decomposed into L2L2, L2H2, H2L2, and H2H2. As described above, the subband decomposition unit 2 decomposes the input image into hierarchical subbands by repeatedly decomposing the low frequency region of the input image.
[0062]
The code amount control device 3 divides the sub-band decomposed by the sub-band decomposing unit 2 into blocks (code blocks) of a specific size, and changes the quantization level (quantization level) for each of the blocks. When the data is truncated by performing the quantization, the quantization level for each block that minimizes the coding distortion is selected. Here, the quantization level indicates the position of the bit plane used in the bit plane coding described in FIG. The configuration of the code amount control device 3 will be described later.
[0063]
The entropy code generation means 4 performs entropy coding such as adaptive arithmetic coding on the data reduced by the quantization level of each block in the code amount control device 3. The entropy code generation means 4 generates an entropy code which is encoded data.
[0064]
(Configuration of code amount control device)
Next, the configuration of the code amount control device according to the present invention will be described.
As shown in FIG. 1, the code amount control device 3 includes a code block dividing unit 10, a distortion / code amount table generating unit 11, a code amount reference value list generating unit 12, a work table generating unit 13, a reverse search, Means 14 and a bit truncation means 15.
[0065]
The code block dividing means 10 divides the input image decomposed into sub-bands by the sub-band decomposing means 2 into blocks (code blocks) of a specific size (see FIG. 11B). Here, the code block dividing means 10 expresses the pixels of each sub-band by P bits, and furthermore, each sub-band is spatially N code blocks B (j) (j = (n = n) of m pixels vertically and n pixels horizontally). 1,..., N). Thereby, each code block is generated as P bit planes of m × n bits. This code block is output to the distortion / code amount table generation unit 11 and the bit truncation unit 15.
[0066]
The distortion / code amount table generation unit 11 changes the quantization level of the code block divided by the code block division unit 10 to perform the entropy encoding, and the distortion amount discarded by the encoding. To generate a distortion / code amount table in which each code block is associated with a quantization level. Note that this entropy coding is the same coding as the entropy code generation means 4. Here, as the quantization level, a position (TP: Truncation Point) serving as a reference for discarding a bit plane in the bit plane coding described with reference to FIG. 12 is used.
[0067]
In the distortion / code amount table generation means 11, the TP of the code block B (j) is set to t (t = 0,..., P-1) as a distortion / code amount table, and bit planes lower than t are discarded. The code amount when the code block is coded by using Equation (1) is defined as a code amount table (R (t, j)), and the discarded amount of distortion in Equation (1) is calculated by using the distortion amount table ( D (t, j)). That is, as shown in FIG. 2, the distortion amount table (see FIG. 2A) and the code amount table (see FIG. 2B) include an index t indicating the position of the TP in the P bit planes. , An index j indicating the code block B (j). The distortion amount table and the code amount table correspond to a distortion / code amount table holding unit described in claims, and are stored in a storage unit such as a memory.
[0068]
The code amount reference value list generation means 12 generates a sequence having the maximum value of the given code amount upper limit as a code amount reference value list (code amount reference value list Kset). Assuming that the given code amount upper limit value is K, the code amount reference value list generation unit 12 generates an S (K) type code amount reference value list Kset with K being the maximum value as shown in FIG. k (1),..., k (S (K)) are generated as one-dimensional array data. For example, when encoding an input image of HDTV (High Definition Television), the number of sequences in the code amount reference value list Kset is set to about 100 to 200. The code amount reference value list Kset corresponds to a code amount reference value list holding unit described in claims, and is held in a storage unit such as a memory.
[0069]
The work table generation unit 13 refers to the distortion amount table D, the code amount table R generated by the distortion / code amount table generation unit 11, and the code amount reference value list Kset generated by the code amount reference value list generation unit 12. For each code amount reference value k (i) (i = 0,..., S (K)), quantization is performed so that the total distortion amount of j code blocks B (1),. The total amount of distortion when the level list is set is defined as a total distortion amount table F (i, j), and an index indicating the quantization level (TP) at that time is generated as an index table Idx (i, j). The procedure for generating the total distortion amount table F and the index table Idx will be described later. The distortion total amount table F and the index table Idx correspond to a work table holding unit described in claims, and are held in a storage unit such as a memory.
[0070]
The inverse search means 14 generates the code amount table R generated by the distortion / code amount table generation means 11, the code amount reference value list Kset generated by the code amount reference value list generation means 12, and the work table generation means 13. With reference to the index table Idx, the position (t (1),..., T (N)) of the TP for each of the N code blocks B (j) (j = 1,. To decide.
[0071]
The reverse search means 14 calculates the value of Idx (S (K), N) already obtained from the index table Idx generated by the work table generation means 13, that is, the number of code blocks is N. , T (1) are sequentially searched from the index table Idx by using the position of the TP (t (N)) of the code block B (N) as an initial value. is there. This reverse search procedure will be described later.
[0072]
The bit truncation unit 15 converts the code block B (j) (j = 1,..., N) divided by the code block division unit 10 into the TP list T (t (1),. , T (N)), the bit planes lower than the position of TP in the TP list T are discarded from each code block B (j), and the remaining bit planes are output to the entropy code generation means 4. .
As a result, the entropy code encoded by the entropy code generation unit 4 becomes encoded data obtained by compressing and encoding the input image with a minimum distortion amount within a given code amount upper limit value.
[0073]
As described above, the configuration of the code amount control device 3 has been described based on one embodiment. However, the code amount control device 3 can also realize each unit in a computer as each function program, and combine each function program. Then, it can be operated as a code amount control program.
[0074]
(Operation of code amount control device)
Next, the operation of the code amount control device 3 will be described.
[Operation concept]
First, the concept of the code amount control operation performed by the code amount control device 3 will be described. The code amount control device 3 calculates (Solution A) with N code blocks B (j) (j = 1,..., N) as shown in FIG. The solution of (problem A) is finally obtained by decomposing into N partial objects and sequentially solving the problems in the partial objects.
[0075]
The code amount reference values k (i) (i = 1,..., S (K)) generated by the code amount reference value list generation unit 12 are used for the N objects (1 to N) shown in FIG. The problem of optimizing the allocation of the code amount of the target j (j = 1,..., N), which is the upper limit, is represented by A (i, j). Formulated as (sub-problem A).
[0076]
(Sub-problem A)
For the j code blocks B (1), B (2),..., B (j), when the target code amount upper limit is k (i), R (T (j)) = k (i) ), A list (TP list) T (j) of TPs (Truncation Points) that minimizes D (T (j)) is determined (R and D are expressed by equations (4) and (5)). See formula).
Here, T (j) = ((t (1),..., T (j))), and TPs assigned to j code blocks B (1), B (2),. As a list T (j).
(End of sub-problem A)
[0077]
Of the S (K) × N subproblems formulated in this way, (subproblem A) A (S (K), N) corresponds to the originally desired (problem A).
The code amount control device 3 refers to the already solved small-scale (sub-problem A) solution while sequentially increasing i and j from the smallest (sub-problem A) A (1, 1). By doing so, the problem is solved successively, and finally (sub-problem A) A (S (K), N) desired to be obtained, that is, (problem A) is solved.
[0078]
Next, the operation of the code amount control device 3 for sequentially solving (sub-problem A) will be described with reference to FIG. FIG. 5 is a flowchart illustrating a schematic operation of the code amount control device 3. The operations of the code block dividing means 10 and the bit truncating means 15 are the same as those in the conventional art, and thus the description is omitted here.
[0079]
[Step S1: Distortion / code amount table generation]
First, the code amount control device 3 divides each of the code blocks B (j) (j = 1,..., N) divided by the block dividing means 10 as P bit planes of m × n bits into distortion / code amounts. The table generation means 11 generates a code amount subjected to entropy coding for each quantization level (TP) value (t = 0,..., P-1) as a code amount table R (t, j). The distortion amount discarded by encoding is generated as a distortion amount table D (t, j).
[0080]
[Step S2: Code amount reference value list generation]
When the code amount reference value list generating means 12 sets the given code amount upper limit value to K, the code amount control device 3 lists S (K) types of code amount reference values in which K is the maximum value. (Code amount reference value list Kset) is generated as Kset≡ (k (1),..., K (S (K)) = K).
[0081]
Note that the code amount reference value list Kset only needs to be k (i) <k (i + 1) and k (S (K)) = K. For example, let the positive number ε be K / (S (K) −1), and let k (i) be a sequence that increases linearly as shown in equation (7).
[0082]
k (i) = (i−1) * ε (7)
[0083]
Further, the code amount reference value list Kset may be a non-linearly increasing numerical sequence that divides the vicinity of a certain code amount reference value into small pieces.
[0084]
[Step S3: Work table initial value setting]
Then, the code amount control device 3 causes the work table generating means 13 to sequentially and recursively solve the (sub-problem A), an index table Idx of S (K) rows and N columns, and a total distortion table F Set the initial value to.
[0085]
Here, Idx (i, j) and F (i, j) (i = 1,..., S (K), j = 1,..., N) are stored in the index table Idx and the i-th row j of the total distortion amount table F. As a column element, F (i, j) is a list T (j) of optimal TPs for j code blocks B (1),..., B (j) with a code amount reference value k (i). When this is set, that is, (sub-problem A), it is a place to store the total distortion amount D (T (j)) when solving A (i, j). Idx (i, j) is a place for storing the value of t (j) indicating the TP of the code block B (j) when solving (sub-problem A) A (i, j).
[0086]
In this step S3, focusing on the code block B (1), the smallest (sub-problem A) A (i, 1) (i = 1,..., S (K)) is solved, and the index tables Idx and The element in the first column of the total distortion amount table F is determined. This (sub-problem A) A (i, 1) (i = 1,..., S (K)) is a problem of allocating a code amount to one block B (1) at a certain code amount reference value k (i). In T (1), which is a list of TPs to be obtained, there is only one element t (1). Therefore, (sub-problem A) the solution of A (i, 1), that is, t (1) which is the optimal TP for code block B (1) under the code amount constraint of the code amount reference value k (i) is , Code amount total R (T) = k (i), that is, R (t (1), 1) = k (i). In this case, t (1) for which R (t (1), 1) = k (i) is not always true does not always exist, and here, the code amount R “closest” to k (i) is used. The value of t (1), that is, t (1), is determined, and the value of t (1) is stored in the index table Idx (i, 1).
[0087]
F (i, 1) of the total distortion amount table F includes (sub-problem A) the distortion amount in A (i, 1), that is, the code block B (1) in Idx (i, 1) of the index table Idx. ), The value of the distortion amount D (Idx (i, 1), 1) is read from the distortion amount table D and stored.
[0088]
Here, “closest” is defined. For example, when the code amount is r and the code amount reference value is k (i) (i = 1,..., S (K)), the closeness measure is | k (i) −r | (k (i). Assuming that (the absolute value of the difference from r), k (i) monotonically increases (k (i−1) <k (i)) with respect to i as shown in equation (7), and k (i) -1) <r <k (i), and r is located exactly between k (i-1) and k (i), that is, rk (i-1) = k (i) If -r, the value “closest” to r is k (i−1) and k (i), and the code amount reference value “closest” to a certain code amount r cannot be specified. become.
[0089]
Therefore, here, | r−k (i) | ≦ | r−k (i ′) | is established for all i ′s where k (i) ≦ r and i ′ ≠ i, so that a certain code It is assumed that i of the code amount reference value k (i) “closest” to the amount r is specified. Note that there are various other methods for specifying i. For example, | r−k (i) | ≦ | r for all i ′ where k (i) ≧ r and i ′ ≠ i −k (i ′) |.
[0090]
The operation of the work table initial value setting (step S3) is shown in the flowchart of FIG. As shown in FIG. 6, in the work table initial value setting (step S3), first, a variable i is initialized to 1 (step S30). Then, the value of TP for the code block B (1) having the code amount R (t, 1) "closest" to the code amount reference value k (i) is set to t (step S31). In step S31, the argument {condition | parameter list} represents an operation of extracting a parameter satisfying the "condition" from the "parameter list". In addition, the “≒” symbol in the “condition” is a symbol representing “closest”.
[0091]
Then, the value t of the TP acquired in step S31 is stored in the index table Idx (i, 1) (step S32), and the distortion amount D (t, 1), that is, D (Idx (i, 1), 1). Is read and stored in F (i, 1) of the total distortion amount table F (step S33). Then, it is determined whether or not the variable i is the number of code amount reference values (S (K)) (step S34). If the variable i is equal (Yes), the process is terminated, and if different (No), the value of the variable i is set to 1 It adds (step S35), returns to step S31, and continues processing.
[0092]
By the above operation, in the code amount reference value k (i) (i = 1,..., S (K)), Idx (i, 1) of the index table Idx includes the code block B (1). The value of TP that gives the “closest” code amount to k (i) is stored. Also, F (i, 1) of the total distortion amount table F indicates the distortion amount of the code block B (1) in the TP that gives the code amount “closest” to k (i) with respect to the code block B (1). Is stored.
Thereby, the S (K) values in the first column in the index table Idx and the total distortion amount table F are filled, and (sub-problem A) A (i, 1) (i = 1,..., S (K) ) Has been solved.
[0093]
[Step S4: Work table setting]
Next, the code amount control device 3 uses the result of the (sub-problem A) A (i, 1) solved in step S3 by the work table generating means 13 as an initial value, and sets the code blocks B (i),. With reference to (sub-problem A) A (i, j-1) related to (j-1), (sub-problem A) A (i, j) is solved. That is, the value of the j-th column is determined recursively by referring to the S (K) values of the (j-1) -th column already determined in the index table Idx and the total distortion amount table F. .
[0094]
Here, the operation of setting the work table (step S4) will be described with reference to the flowchart of FIG.
As shown in FIG. 7, in the work table setting (step S4), first, a variable j which is an index of the code block B (j) is initialized to 2 (step S40), and an index of the code amount reference value k (i) is set. Is initialized to 1 (step S41). The reason why the variable j is initialized to 2 is that the index table Idx in the code block B (1) has already been set in the work table initial value setting (step S3).
[0095]
(Sub-problem A) In A (i, j), when the last element t (j) of T (j) which is a list of TPs is t (the TP of the code block B (j) is t) , B (j) are calculated (step S42).
Here, first, a mapping の from the code amount r to the index of the element of the code amount reference value list Kset is defined by Expression (8).
[0096]
Figure 2004056605
[0097]
In the expression (8), the argument {condition | parameter list} represents an operation of extracting a parameter satisfying the “condition” from the “parameter list”, and the “≒” symbol in the “condition” is a symbol representing “closest”. And
Formula (9) is used to calculate the total distortion amount f (i, j; t) of the code blocks B (1),..., B (j) in step S42.
[0098]
Figure 2004056605
[0099]
In this equation (9), (k (i) -R (t, j)) is (sub-problem A) from the code amount reference value k (i) assigned to A (i, j), The amount obtained by subtracting the code amount R (t, j) of (j) is referred to as a residual code amount here. Ψ (k (i) −R (t, j)) is a code “closest” to the residual code amount (k (i) −R (t, j)) as shown in Expression (8). The index of the element of the quantity reference value list Kset is shown. Therefore, F (ψ (k (i) −R (t, j)), j−1) of the distortion total amount table F is (sub-problem A) A (ψ (k (i) −R (t, j)) , J−1) are solved.
[0100]
Equation (9) shows that the (sub-problem A) A (ψ (k (i) −R (t, j), j−1)) is solved by adding the total distortion to the code block B (j). This is the sum of the distortion amounts D (t, j). (Sub-problem A) In A (i, j), when the last element t (j) of T (j), which is a list of TPs, is t .., B (j).
As described above, the value t of the TP at which the total amount of distortion calculated by the equation (9) is minimized is obtained using the equation (10) (step S43).
[0101]
Figure 2004056605
[0102]
The expression (10) indicates that the value of t that takes the minimum value (minimize) when the total distortion amount f (i, j; t) changes according to the parameter t is extracted. Here, there are at most P (0,..., P−1) elements of the total distortion amount f (i, j; t), and the minimum value among them is (sub-problem A) solving A (i, j). It is the total amount of distortion when there is. Therefore, if the value t of TP when the total amount of distortion becomes the minimum value is obtained, the value of t is (sub-problem A) in the list T (j) of TP which is the solution of A (i, j). It becomes the last element t (j).
[0103]
Then, the value t of the TP obtained in step S43 is stored in the index table Idx (i, j) (step S44), and the total distortion amount f (i, j; t) at the value of t at that time is calculated as the total distortion amount. It is stored in F (i, j) of the table F (step S45). Then, it is determined whether or not the variable i is the number of code amount reference values (S (K)) (step S46). If different (No), the value of the variable i is incremented by 1 (step S47), and the process proceeds to step S42. Return and continue processing.
[0104]
If the variable i is equal to the number of code amount reference values (S (K)) (Yes), it is determined whether the variable j is the number of code blocks (N) (Step S48), and if equal, (Yes). Ends the processing, and if different (No), adds 1 to the value of the variable j (step S49), returns to step S41, and continues the processing.
[0105]
By the above operation, the values of the code blocks B (j) (j = 2,..., N) in the second and subsequent columns in the index table Idx and the total distortion amount table F are filled in order by S (K), and Problem A) When solving A (i, j), Idx (i, j) which is the value of the index table Idx and F (i, j) which is the value of the total distortion amount table F are determined. FIG. 9 shows the order in which the elements of the index table Idx and the total distortion amount table F are sequentially determined. FIG. 9A schematically shows the order in which the index table Idx is determined, and FIG. 9B schematically shows the order in which the total distortion table F is determined. In both the index table Idx and the total distortion amount table F, the indexes i = 1 to i = S (K) of the code amount reference value k (i) of the first column (code block B (1)) are set as initial values. After that, the values from the code block B (2) in the second column to the code block B (N) are determined in order.
[0106]
In this way, by recursively solving (sub-problem A), (sub-problem A) F (S (K), N) which is the value of the total distortion amount table F in A (S (K), N) ) And Idx (S (K), N) which is the value of the index table Idx.
[0107]
[Step S5: reverse search]
Next, the code amount control device 3 causes the work table generating means 13 to output Idx (i, j) (i = 1,...) Which is a table of S (K) rows and N columns of the index table Idx set in step S4. Using S (K), j = 1,..., N), Idx (S (K), N), that is, the value t of the TP in the code block B (N) when the number of code blocks is N Using (N) as an initial value, t (N−1),..., T (1) are sequentially determined by an inverse search.
[0108]
Here, the operation of the reverse search (step S5) will be described with reference to the flowchart of FIG.
As shown in FIG. 8, in the reverse search (step S5), first, a variable i which is an index of the code amount reference value k (i) is initialized to the number of code amount reference values (S (K)) (step S50). ), A variable j, which is an index of the code block B (j), is initialized to the number (N) of code blocks (step S51).
[0109]
Then, Idx (i, j), which is the value of the TP allocated to the code block B (j), is obtained from the index table Idx, and is set to t (j) (step S52). In this step S52, assuming that a certain Idx (i, j) is determined, the code amount reference value k (i) is assigned to the code blocks B (1),..., B (j) (sub-problem A) A ( i, j) has already been solved, and Idx (i, j) becomes t (j) which is the value of the TP allocated to the last code block B (j).
[0110]
As a result, the amount obtained by subtracting the code amount R (t, j) to be allocated to the code block B (j) from the code amount reference value k (i), that is, the remaining code amount k (i) -R (t (j)) , J) are the code amounts to be assigned to the code blocks B (1),..., B (j-1). Therefore, the index of the code amount reference value “closest” to the residual code amount k (i) −R (t (j), j) of the code block B (j) is ψ (k (i) −R (t ( j) and j)), and newly assigned to a variable i (step S53).
[0111]
Then, 1 is subtracted from the variable j which is the index of the code block B (j) (step S54), and it is determined whether or not the variable j has become 0 (step S55). Here, when the variable j has become 0 (Yes), the process is terminated, and when the variable j is not 0 (No), the process returns to step S52 to continue the process.
[0112]
The above operation will be further described with reference to FIG. FIG. 10 is a diagram schematically showing the reverse search operation in the reverse search means 14. The value of the index table Idx, Idx (S (K), N), that is, the value of the TP (t (N)) of the code block B (N) has already been obtained in step S4 (written to A1). There). Next, the remaining code amount (K−R) obtained by subtracting the code amount (R (t (N), N)) when the code block B (N) is encoded with t (N) from the code amount upper limit K. Let i be the index of the element of the code amount reference value list Kset “closest” to (t (N), N)). That is, an index i that satisfies KR (t (N), N) ≒ k (i) is obtained. Then, in the index table Idx, the value (Idx (i, N-1)) of the code block B (N-1) corresponding to the index i (written in A2) is stored in the code block B (N-1). (T (N-1)).
[0113]
Further, from the code amount reference value k (i), the code amount (R (t (N-1), N-1)) when the code block B (N-1) is encoded at t (N-1). Let i ′ be the index of the element of the code amount reference value list Kset that is “closest” to the residual code amount (KR (t (N−1), N−1)) obtained by subtracting. That is, an index i ′ that satisfies KR (t (N−1), N−1) ≒ k (i ′) is obtained. Then, in the index table Idx, the value (Idx (i ', N-2)) of the code block B (N-2) corresponding to the index i' (written in A3) is stored in the code block B (N- The value of TP in 2) is (t (N−2)). In this way, the value of TP is sequentially searched backward until t (1).
[0114]
By the above operation, the list T = (t (1),..., T (N)) of the TPs of the N code blocks B (j) refers to the index table Idx that has already been obtained (reverse search). , And t (N),..., T (1).
By the above operations of steps S1 to S5, the code block B (j) (j = 1, j) that minimizes the distortion sum D (T) (see equation (5)) under the given code amount upper limit K. , N), a list (TP list) T of TPs (Truncation Points) can be sequentially determined.
[0115]
As is clear from the operations in steps S1 to S5, according to this method, (problem A) can be solved by an operation of the order of S (K) * N * P. For example, if the number of code amount reference values is 100 (S (K) = 100), the number of code blocks is 64 (N = 64), and the number of bit planes in each code block is 16 (P = 16), 51200 The operation can be performed in a single calculation step. For example, even if the calculation time is 100 nanoseconds (ns) per step, the present procedure can be operated at a frame rate of 1/30 second. As a result, code amount control by software can be realized.
[0116]
In the present method, the quantization level has been described as a TP (Truncation Point) indicating the position of a bit plane. However, this quantization level is not limited to the bit plane coding used in subband coding. In addition, even in an encoding method in which the code amount and the distortion amount are parameter-controlled in block units, it can be realized by regarding the parameters as quantization levels. For example, in DCT (Discrete Cosine Transform) -based block coding, a quantization level may be determined for each block.
[0117]
Further, in JPEG2000, one bit plane is classified into three types of paths and entropy-encoded, but in this method, it is possible to treat each path as a separate bit plane and treat it in the same manner as the above-described operation. It is possible.
[0118]
【The invention's effect】
As described above, the code amount control method, the code amount control device, and the code amount control program according to the present invention have the following excellent effects.
[0119]
According to the first, second, fourth, or fifth aspect of the present invention, the amount of information is discarded (quantized) to perform compression encoding within a predetermined code amount upper limit. In image coding, a code for minimizing the amount of distortion can be determined by a short-term operation using a table search and four arithmetic operations.
As a result, even a general-purpose CPU can compress and encode a moving image in real time with high image quality, and can realize an encoding device at low cost.
[0120]
According to the third aspect of the present invention, quantization is performed by, for example, bit plane coding by setting the level at which quantization is performed (quantization level) as a reference position at which a bit plane in bit plane coding is discarded. With JPEG2000 or the like, it is possible to divide an image into blocks and control the position of discarding the bit plane of each block for each block.
[Brief description of the drawings]
FIG. 1 is a block diagram showing an overall configuration of a code amount control device according to an embodiment of the present invention.
FIG. 2 is an explanatory diagram for explaining the structures of a distortion amount table and a code amount table according to the embodiment of the present invention.
FIG. 3 is an explanatory diagram for explaining a structure of a code amount reference value list according to the embodiment of the present invention.
FIG. 4 is an explanatory diagram illustrating an operation of disassembling a code block into a plurality of objects in order to obtain a solution to (problem A) according to the embodiment of the present invention.
FIG. 5 is a flowchart schematically showing a code amount control operation according to the embodiment of the present invention.
FIG. 6 is a flowchart showing an operation of initial setting of a work table according to the embodiment of the present invention.
FIG. 7 is a flowchart showing an operation of setting a work table according to the embodiment of the present invention.
FIG. 8 is a flowchart showing an operation of a reverse search according to the embodiment of the present invention.
FIG. 9 is a schematic diagram visually illustrating an order of setting an index table and a total distortion amount table according to the embodiment of the present invention.
FIG. 10 is a schematic diagram schematically showing a reverse search operation according to the embodiment of the present invention.
FIG. 11 is an explanatory diagram for explaining subband decomposition and code block division in subband encoding.
FIG. 12 is an explanatory diagram for describing an outline of an operation of bit plane encoding.
FIG. 13 is an explanatory diagram for explaining a relationship between a truncation point and a code amount and a distortion amount in bit plane coding.
FIG. 14 is an explanatory diagram for explaining the relationship between the position (size) of a bit plane and the amount of distortion and the amount of code.
[Explanation of symbols]
1 ... Encoding device
2 ... Subband decomposition means
3. Code amount control device
4 ... Entropy code generation means
10 code block dividing means
11... Distortion / code amount table generating means
12 Code amount reference value list generation means
13 Work table generating means
14 Reverse search means
15 Bit truncation means
D: Distortion amount table (distortion / code amount table holding means)
R code amount table (distortion / code amount table holding means)
Kset: code amount reference value list (code amount reference value list holding unit)
Idx Index table (work table holding means)
F ...... Total distortion amount table (work table holding means)

Claims (5)

符号化対象となる画像を特定の大きさのブロックに分割して、その分割されたブロックの順に可変長符号を生成する画像符号化において、与えられた符号量上限値の範囲内で前記画像を符号化するために、前記各ブロックの符号量を制御する符号量制御方法であって、
前記ブロックを量子化する複数の量子化レベルに基づいて前記ブロックを符号化したときの符号量と、前記量子化レベルに基づいて前記ブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成する歪・符号量テーブル生成ステップと、
前記符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成する符号量基準値リスト生成ステップと、
第1番目のブロックで前記符号量基準値に最も近い符号量となる前記量子化レベル及びそのときの歪量を、前記符号量基準値と前記ブロックとを対応付けたインデックステーブル及び歪総量テーブルの初期値として設定する作業テーブル初期値設定ステップと、
前記符号量基準値毎に、前記歪総量テーブルを参照して、第1番目のブロックから特定ブロックまでの歪総量を最小とする量子化レベル及びそのときの歪総量を順次決定して、第2番目以降のブロックにおける前記インデックステーブル及び前記歪総量テーブルの値を設定する作業テーブル設定ステップと、
この作業テーブル設定ステップで設定した前記インデックステーブルから、前記全ブロックの歪総量を最小とする量子化レベルを逆探索して求める逆探索ステップと、
を含んでいることを特徴とする符号量制御方法。
In an image encoding in which an image to be encoded is divided into blocks of a specific size and a variable length code is generated in the order of the divided blocks, the image is encoded within a range of a given code amount upper limit value. A code amount control method for controlling the code amount of each block for encoding,
A code amount when the block is coded based on a plurality of quantization levels for quantizing the block, and a distortion amount discarded from the block based on the quantization level are calculated. Generating a distortion / code amount table as a table;
A code amount reference value list generating step of generating a code amount reference value list including a plurality of code amount reference values having the code amount upper limit as a maximum value,
In the first block, the quantization level that is the code amount closest to the code amount reference value and the distortion amount at that time are stored in an index table and a distortion total amount table in which the code amount reference value is associated with the block. A work table initial value setting step to be set as an initial value;
For each of the code amount reference values, a quantization level for minimizing the total amount of distortion from the first block to the specific block and the total amount of distortion at that time are sequentially determined with reference to the total distortion amount table. A work table setting step of setting values of the index table and the distortion total amount table in the second and subsequent blocks,
From the index table set in this work table setting step, a reverse search step of performing a reverse search for a quantization level that minimizes the total distortion amount of the all blocks,
A code amount control method comprising:
符号化対象となる画像を特定の大きさのブロックB(j)(j=1,…,N)に分割して、そのブロック毎に可変長符号を生成する画像符号化において、与えられた符号量上限値Kの範囲内で前記画像を符号化するために、前記各ブロックの符号量を制御する符号量制御方法であって、
前記ブロックを量子化する複数の量子化レベルtに基づいて前記ブロックB(j)を符号化したときの符号量R(t,j)と、前記量子化レベルtに基づいて前記ブロックB(j)から廃棄される歪量D(t,j)とを算出し、歪・符号量テーブルとして生成する歪・符号量テーブル生成ステップと、
前記符号量上限値Kを最大値とするS(K)個の符号量基準値k(i)(i=1,…,S(K)=K)からなる符号量基準値リストを生成する符号量基準値リスト生成ステップと、
前記符号量基準値k(i)に最も近い符号量R(t,1)となる前記量子化レベルt及びそのときの歪量D(t,1)を、前記符号量基準値k(i)と前記ブロックB(j)とを対応付けたインデックステーブルIdx(i,j)及び歪総量テーブルF(i,j)の初期値として設定する作業テーブル初期値設定ステップと、
符号量をrとし、そのrに最も近い前記符号量基準値k(i)のインデックスiを返す写像をψ(r)として、歪総量f(i,j;t)をD(t,j)+F(ψ(k(i)−R(t,j)),j−1)と定義したときの、前記歪総量f(i,j;t)を最小とする前記量子化レベルt及びそのときの前記歪総量f(i,j;t)を、インデックステーブルIdx(i,j)及び歪総量テーブルF(i,j)に設定する作業テーブル設定ステップと、
前記符号量基準値k(i)のインデックスiにS(K)を、前記ブロックB(j)のインデックスjにNを初期値として与え、前記ブロックB(j)に割り当てる量子化レベルt(j)をインデックステーブルIdx(i,j)とし、前記写像ψ(k(i)−R(t(j)、j))を計算し、その計算結果を改めてiの値とし、jを順次減算することで、前記量子化レベルt(j)のリスト(t(1),…,t(N))を前記インデックステーブルIdx(i,j)から逆探索する逆探索ステップと、
を含んでいることを特徴とする符号量制御方法。
In image encoding for dividing an image to be encoded into blocks B (j) (j = 1,..., N) of a specific size and generating a variable length code for each block, a given code is used. A code amount control method for controlling the code amount of each block in order to encode the image within a range of an amount upper limit K,
The code amount R (t, j) when the block B (j) is encoded based on a plurality of quantization levels t for quantizing the block, and the block B (j) based on the quantization level t ), A distortion / code amount table generation step of calculating the amount of distortion D (t, j) to be discarded and generating a distortion / code amount table;
A code for generating a code amount reference value list including S (K) code amount reference values k (i) (i = 1,..., S (K) = K) having the code amount upper limit K as a maximum value. An amount reference value list generation step;
The quantization level t at which the code amount R (t, 1) is closest to the code amount reference value k (i) and the distortion amount D (t, 1) at that time are represented by the code amount reference value k (i). A work table initial value setting step of setting as an initial value of an index table Idx (i, j) and a total distortion amount table F (i, j) in which the table and the block B (j) are associated with each other;
The code amount is r, the mapping that returns the index i of the code amount reference value k (i) closest to r is ψ (r), and the total distortion amount f (i, j; t) is D (t, j). + F (ψ (k (i) −R (t, j)), j−1) and the quantization level t that minimizes the total distortion amount f (i, j; t), and Setting the total distortion amount f (i, j; t) in an index table Idx (i, j) and a total distortion amount table F (i, j);
S (K) is given as an index i of the code amount reference value k (i), N is given as an index j of the block B (j) as an initial value, and a quantization level t (j) assigned to the block B (j) is given. ) Is used as an index table Idx (i, j), the above-mentioned mapping ψ (k (i) −R (t (j), j)) is calculated, the calculation result is again set to the value of i, and j is sequentially subtracted. A reverse search step of performing a reverse search of the list (t (1),..., T (N)) of the quantization levels t (j) from the index table Idx (i, j);
A code amount control method comprising:
前記量子化レベルtは、前記各ブロックB(j)のビットプレーンの位置を示す値であり、そのビットプレーンの位置に基づいて各ブロックB(j)を量子化することを特徴とする請求項2に記載の符号量制御方法。The said quantization level t is a value which shows the position of the bit plane of each said block B (j), and quantizes each block B (j) based on the position of the bit plane. 3. The code amount control method according to 2. 符号化対象となる画像を特定の大きさのブロックに分割して、その分割されたブロックの順に可変長符号を生成する画像符号化において、与えられた符号量上限値の範囲内で前記画像を符号化するために、前記各ブロックの符号量を制御する符号量制御装置であって、
前記ブロックを量子化する複数の量子化レベルに基づいて前記ブロックを符号化したときの符号量と、前記量子化レベルに基づいて前記ブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成する歪・符号量テーブル生成手段と、
この歪・符号量テーブル生成手段によって生成された前記歪・符号量テーブルを保持する歪・符号量テーブル保持手段と、
前記符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成する符号量基準値リスト生成手段と、
この符号量基準値リスト生成手段で生成された符号量基準値リストを保持する符号量基準値リスト保持手段と、
第1番目のブロックから特定ブロックまでの符号量が、前記符号量基準値に最も近い符号量となる前記特定ブロックの量子化レベル及びそのときの歪総量を、前記符号量基準値と前記ブロックとを対応付けたインデックステーブル及び歪総量テーブルとして生成する作業テーブル生成手段と、
この作業テーブル生成手段で生成された前記インデックステーブル及び前記歪総量テーブルを保持する作業テーブル保持手段と、
この作業テーブル保持手段に保持されている前記インデックステーブルから、前記全ブロックの歪総量を最小とする量子化レベルを逆探索して求める逆探索手段と、
を備えていることを特徴とする符号量制御装置。
In an image encoding in which an image to be encoded is divided into blocks of a specific size and a variable length code is generated in the order of the divided blocks, the image is encoded within a range of a given code amount upper limit value. For encoding, a code amount control device that controls the code amount of each of the blocks,
A code amount when the block is coded based on a plurality of quantization levels for quantizing the block, and a distortion amount discarded from the block based on the quantization level are calculated. Distortion / code amount table generating means for generating a table,
Distortion / code amount table holding means for holding the distortion / code amount table generated by the distortion / code amount table generation means,
A code amount reference value list generating unit that generates a code amount reference value list including a plurality of code amount reference values having the code amount upper limit as a maximum value,
Code amount reference value list holding means for holding the code amount reference value list generated by the code amount reference value list generation means,
The code amount from the first block to the specific block is the quantization level of the specific block that is the code amount closest to the code amount reference value and the total distortion amount at that time, the code amount reference value and the block Work table generating means for generating an index table and a distortion total amount table in which
Work table holding means for holding the index table and the total distortion amount table generated by the work table generation means,
From the index table held in the work table holding means, a reverse search means for performing a reverse search for a quantization level that minimizes the total distortion amount of the blocks,
A code amount control device comprising:
符号化対象となる画像を特定の大きさのブロックに分割して、その分割されたブロックの順に可変長符号を生成する画像符号化において、与えられた符号量上限値の範囲内で前記画像を符号化するときの前記各ブロックの符号量を制御するために、コンピュータを、
前記ブロックを量子化する複数の量子化レベルに基づいて前記ブロックを符号化したときの符号量と、前記量子化レベルに基づいて前記ブロックから廃棄される歪量とを算出し、歪・符号量テーブルとして生成して歪・符号量テーブル保持手段に保持する歪・符号量テーブル生成手段、
前記符号量上限値を最大値とする複数の符号量基準値からなる符号量基準値リストを生成して符号量基準値リスト保持手段に保持する符号量基準値リスト生成手段、
第1番目のブロックから特定ブロックまでの符号量が、前記符号量基準値に最も近い符号量となる前記量子化レベル及びそのときの歪総量を、前記符号量基準値と前記ブロックとを対応付けたインデックステーブル及び歪総量テーブルを生成して作業テーブル保持手段に保持する作業テーブル生成手段、
前記作業テーブル保持手段で保持されている前記インデックステーブルから、前記全ブロックの歪総量を最小とする量子化レベルを逆探索して求める逆探索手段、
として機能させることを特徴とする符号量制御プログラム。
In an image encoding in which an image to be encoded is divided into blocks of a specific size and a variable length code is generated in the order of the divided blocks, the image is encoded within a range of a given code amount upper limit value. In order to control the code amount of each block when encoding, a computer,
A code amount when the block is coded based on a plurality of quantization levels for quantizing the block, and a distortion amount discarded from the block based on the quantization level are calculated. Distortion / code amount table generating means generated as a table and held in the distortion / code amount table holding means,
A code amount reference value list generation unit that generates a code amount reference value list including a plurality of code amount reference values with the code amount upper limit being the maximum value and holds the code amount reference value list holding unit,
The quantization level at which the code amount from the first block to the specific block is the code amount closest to the code amount reference value and the total distortion at that time are associated with the code amount reference value and the block. Work table generating means for generating the index table and the total distortion amount table and holding the work table holding means
From the index table held by the work table holding means, a reverse search means for performing a reverse search for a quantization level that minimizes the total distortion amount of the blocks,
A code amount control program characterized by functioning as:
JP2002213368A 2002-07-23 2002-07-23 Code amount control method, code amount control apparatus, and code amount control program Expired - Fee Related JP3966507B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002213368A JP3966507B2 (en) 2002-07-23 2002-07-23 Code amount control method, code amount control apparatus, and code amount control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002213368A JP3966507B2 (en) 2002-07-23 2002-07-23 Code amount control method, code amount control apparatus, and code amount control program

Publications (2)

Publication Number Publication Date
JP2004056605A true JP2004056605A (en) 2004-02-19
JP3966507B2 JP3966507B2 (en) 2007-08-29

Family

ID=31935977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002213368A Expired - Fee Related JP3966507B2 (en) 2002-07-23 2002-07-23 Code amount control method, code amount control apparatus, and code amount control program

Country Status (1)

Country Link
JP (1) JP3966507B2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004088974A1 (en) * 2003-03-28 2004-10-14 Ricoh Company Ltd. Image compressing apparatus that achieves desired code amount
WO2004088973A1 (en) * 2003-03-28 2004-10-14 Ricoh Company, Ltd. Image compression device and method
WO2005112427A1 (en) * 2004-05-17 2005-11-24 Mitsubishi Denki Kabushiki Kaisha Image encoder

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004088974A1 (en) * 2003-03-28 2004-10-14 Ricoh Company Ltd. Image compressing apparatus that achieves desired code amount
WO2004088973A1 (en) * 2003-03-28 2004-10-14 Ricoh Company, Ltd. Image compression device and method
US7440630B2 (en) 2003-03-28 2008-10-21 Ricoh Company, Ltd Image compressing apparatus that achieves desired code amount
US7477787B2 (en) 2003-03-28 2009-01-13 Ricoh Company, Ltd Image compression device and method
WO2005112427A1 (en) * 2004-05-17 2005-11-24 Mitsubishi Denki Kabushiki Kaisha Image encoder

Also Published As

Publication number Publication date
JP3966507B2 (en) 2007-08-29

Similar Documents

Publication Publication Date Title
JP4966669B2 (en) Data compression using matching tracking
US20200374535A1 (en) Hierarchical data structure
US5966465A (en) Compression/decompression using reversible embedded wavelets
JP3800551B2 (en) Data processing apparatus and method
JP5027936B2 (en) Method, recording medium, program and processing device for adaptive scan ordering.
US5412741A (en) Apparatus and method for compressing information
US7574063B2 (en) Image coding method and apparatus
KR100281165B1 (en) Lossless / Lossless Compression and Storage Method of Multiple Resolutions of Data for Efficient Processing and Its System
JP6902553B2 (en) Data compression
CN103947206A (en) Region-based image compression
JP2007267384A (en) Compression apparatus and compression method
US20080226187A1 (en) Image coding method, image coding apparatus, image coding circuit, information recording medium, and computer program
JP2007325262A (en) Method of video compression
JP3966507B2 (en) Code amount control method, code amount control apparatus, and code amount control program
EP1156679A2 (en) Image encoding and decoding method and apparatus, and recording medium in which program therefor is recorded
EP3056002A2 (en) Method for encoding and decoding a media signal and apparatus using the same
JPH11331852A (en) Reversible coding method and reversible coder
JPH11225075A (en) Encoding method and device
JP4114144B2 (en) Image encoding device, image encoding program, and image decoding program
JP3833585B2 (en) Image coding apparatus, image coding method, and computer program
US8260070B1 (en) Method and system to generate a compressed image utilizing custom probability tables
JP7406208B2 (en) Encoding device, encoding method and program
JP2005150843A (en) Image data coding apparatus and method, computer program, and computer-readable storage medium
JP2500583B2 (en) Image signal quantization characteristic control method and image signal compression coding apparatus
JP4309220B2 (en) Image coding apparatus and image coding method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050207

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070523

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070525

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110608

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120608

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130608

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140608

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees