JP4181699B2 - Encoding apparatus and method, and storage medium - Google Patents

Encoding apparatus and method, and storage medium Download PDF

Info

Publication number
JP4181699B2
JP4181699B2 JP21271399A JP21271399A JP4181699B2 JP 4181699 B2 JP4181699 B2 JP 4181699B2 JP 21271399 A JP21271399 A JP 21271399A JP 21271399 A JP21271399 A JP 21271399A JP 4181699 B2 JP4181699 B2 JP 4181699B2
Authority
JP
Japan
Prior art keywords
parameter
value
code amount
length code
encoding
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.)
Expired - Fee Related
Application number
JP21271399A
Other languages
Japanese (ja)
Other versions
JP2001044848A (en
Inventor
忠義 中山
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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP21271399A priority Critical patent/JP4181699B2/en
Priority to US09/618,461 priority patent/US6865299B1/en
Publication of JP2001044848A publication Critical patent/JP2001044848A/en
Application granted granted Critical
Publication of JP4181699B2 publication Critical patent/JP4181699B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は符号化装置及び方法及び記憶媒体に関するものである。
【0002】
【従来の技術】
画像、特に多値画像は非常に多くの情報を含んでおり、その画像を蓄積・伝送する際にはデータ量が膨大になってしまうという問題がある。このため画像の蓄積・伝送に際しては、画像の持つ冗長性を取り除き、画質の劣化を多少許すことで、データ量の削減を図る高能率符号化が用いられている。
【0003】
これら高能率符号化の1つとしてJPEG方式の圧縮符号化が知られている。この方式では多値画像をブロック毎にDCT変換することにより周波数成分に変換し、得られた変換係数を量子化し、可変長符号化するというものである。
【0004】
上記DCT変換を用いた符号化は、圧縮率を高く設定すると復号画像にブロック歪みが発生してしまうという問題がある。近年、このような歪みを解消するためにウェーブレット変換を用いる新たな符号化方式が提案されている。
【0005】
また、これら種々の高能率符号化の一部として、可変長符号化が適用されることが多い。
【0006】
【発明が解決しようとする課題】
しかしながら、多値画像を簡単な処理で可変長符号化する為の方式、更にはこの可変長符号化方式を高速に実行するための処理方法については未だ確立されていない。
【0007】
本発明はかかる状況に鑑みてなされたものであり、多値画像を簡易かつ高速に可変長符号化することのできる符号化装置及び方法及び記憶媒体を提供することを目的とする。
【0008】
【課題を解決するための手段】
この課題を解決するため、例えば本発明の符号化方法は、以下の構成を備える。すなわち、
符号化対象の所定単位のシンボル群を、あるパラメータに基づいて、前記シンボル群の内容と前記パラメータに依存して符号量が決まる可変長符号部分と、前記パラメータのみに依存して符号量が決まる固定長符号部分とで表わされる符号化データに符号化する符号化方法において、前記所定単位のシンボル群に対する符号量推定処理で得られる、各パラメータ対する前記可変長符号部分の符号量の差分値を評価することにより、前記所定単位のシンボル群に対する最小符号量となる前記パラメータの最適値を決定することを特徴とする。
【0009】
また、本発明の好適な実施態様に従えば、多値画像データを複数の情報群(本実施の形態では1サブブロック分の量子化値の集まり)に分割し、該情報群を各々個別のパラメータ(kパラメータ)に基づき可変長符号化(Golomb Rice符号化)する為の符号化装置であって、可変長符号部分の符号量が隣接するkパラメータ間でどのくらい差があるのか、その差分値を求め、kパラメータの許容範囲内で求めた全ての差分値を、所定の値とを順次比較することにより、各情報群に最適なパラメータkを決定する。
【0010】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【0011】
[第1の実施形態]
以下、8ビットのモノクロ画像データを符号化する例を第1の実施形態として説明するが本発明はこれに限らず、各画素4ビットで表わすモノクロ画像、或いは各画素における色成分(RGB/Lab/YCrCb)を8ビットで表現するカラーの多値画像を符号化する場合に適用することも可能である。これらに適用する場合には、各色成分をそれぞれモノクロ画像として符号化すればよい。
【0012】
図1は第1の実施形態における画像符号化装置のブロック構成図である。
【0013】
同図において、101は画像データ入力部、102はデータ格納部、103は離散ウェーブレット変換部、104は係数量子化部、105は符号化パラメータ選択部、106はGolomb Rice符号化部、107はビットプレーン走査部、108はバッファ、109は符号出力部である。
【0014】
まず、画像入力部101では符号化対象となる画素データをラスタースキャン順に入力する。この画像入力部101は、例えばスキャナ、デジタルカメラ等の撮像装置、或いはCCDなどの撮像デバイス、或いはネットワーク回線のインターフェース等からの画像データ入力処理があげられる。
【0015】
また、画像入力対象はRAM,ROM,ハードディスク、CD−ROM等の記録媒体であってもよい。
【0016】
画像データ格納部102は画像入力部101で入力される画像データを、記憶する。
【0017】
離散ウェーブレット変換部103では、上記画像データ格納部に記憶した1画面分の画像データに対して公知の離散ウェーブレット変換を施し、複数の周波数帯域に分解する。本実施形態の形態では、画像データ列x(n)に対する離散ウェーブレット変換は次式によって行なうものとする。
【0018】
r(n)=floor{(x(2n)+x(2n+1))/2}
d(n)=x(2n+2)−x(2n+3)+floor{(−r(n)+r(n+2)+2)/4}
r(n),d(n)は変換係数であり、r(n)は低周波成分、d(n)は高周波成分である。
【0019】
また上式においてfloor{X}はXを超えない最大の整数値を表わす。本変換式は一次元のデータに対するものであるが、この変換を水平方向、垂直方向の順に適用することで二次元の変換を行なうことが可能であり、図2(a)の様なLL,HL,LH,HHの4つの周波数帯域(サブブロック)に分割することができる。これらの変換データは、次段の係数量子化部104へスムーズにデータを出力したり、あるいは、更なるウェーブレット変換を行なうため、前記データ格納部102に記憶する。
【0020】
生成したLL成分について前記同様の手順にて離散ウェーブレット変換を施すことにより図2(b)のように7個の周波数帯域(サブブロック)に分解する。本実施形態の形態においては、更にもう一度繰り返して離散ウェーブレット変換を施すことにより図2(c)に示すようにLL,HL3,LH3,HH3,HL2,LH2,HH2,HL1,LH1,HH1の10個の周波数帯域(サブブロック)に分割し、前記データ格納部102に記憶する。
【0021】
変換係数はLL,HL3,LH3,HH3,HL2,LH2,HH2,HL1,LH1,HH1のサブブロック順に、かつ各サブブロック毎にラスタースキャン順にデータ格納部102から係数量子化部104へと出力する。
【0022】
係数量子化部104はウェーブレット変換係数の各々を各周波数成分毎に定めた量子化ステップで量子化し、量子化後の値を符号化パラメータ選択部105及びバッファ108へと出力する。
【0023】
係数値をX、この係数の属する周波数成分に対する量子化ステップの値をqとするとき、量子化後の量子化値Q(X)は次式によって求めるものとする。
【0024】
Q(X)=floor{(X/q)+0.5}
本実施形態の形態における各周波数成分と量子化ステップとの関係を図3に示す。図に示すように低周波成分(LL等)よりも高周波成分(HL1,LH1,HH1)等の方が量子化ステップを大きくしている。これにより、視覚的に劣化の目立ちにくい高周波成分の情報の削減を行ない圧縮の向上を図っている。
【0025】
上記量子化値は、符号化パラメータ選択部105で評価され、後段のGolomb Rice符号化部106でこの量子化値を符号化する際に必要となるkパラメータが決定されるまで、バッファ108に蓄積保持される。
【0026】
符号化パラメータ選択部105では、上記量子化値に基づいて後段のGolomb Rice符号化部106で使用されるkパラメータを選択する。
【0027】
このkパラメータとはGolomb Rice符号化という可変長符号化を行なう際の固定長部の符号長を示す値である。説明の都合上、符号化パラメータ選択部105の説明する前に、Golomb Rice符号化部106の動作から先に説明する。
【0028】
このGolomb Rice符号化部106で行なう符号化の基本的な方法は公知ではあるが、以下に符号化の基本的な動作及び本発明の特徴的な部分について説明する。
【0029】
まず、量子化値を格納したバッファ108から1サブブロック分のデータを順次読み出す。
【0030】
次に、Golomb Rice符号化部106で、該サブブロックに対応するkパラメータに基づき、以下に説明する前処理やGolomb Rice符号化処理を行なう。
【0031】
Golomb Rice符号化部106は入力した各量子化値の正/負を調べ、負号ビットを出力する。具体的には量子化値が0または正である場合には「0」を、負である場合には「1」を出力した後、該量子化値を絶対値に変換する。(この処理は厳密にはGolomb Rice符号化処理には含まれないが、ここでは前処理として、Golomb Rice符号化部106内で行なうものとする)
次に、該絶対値をGolomb Rice符号化する。符号化対象となる量子化値の絶対値をV、処理対象のサブブロックに適用されるkパラメータの値がkである場合のGolomb Rice符号化処理は次の手順にて行なう。
【0032】
まず、2進表現したVをkビット右シフトした後に、得られた値(残った値)の個数だけ「0」を連続して配置し、その次に区切りのビットとして「1」を配置し、その次に元のVの下位kビットを配置することにより可変長符号(Golomb Rice符号)を生成する。
【0033】
図4にV=0〜7、k=0,1,2に対するGolomb Rice符号の例を示す。例えば、V=4で、k=1の場合、4は二進数で“100B(Bは二進数を示す)”であるから、k(=1)ビット右シフトすると、残りは“10B”、つまり“2”であるから、“0”を2回続け、その後に区切りの“1”、そして値4(=100B)の下位k(=1)ビットにより、“0010”を得る。
【0034】
これから分かるように、絶対値V及びパラメータkから得られる各可変長符号の符号長は、V>>k(Vをkビット右シフトしたときに残った値)+1(区切りビット)+k(パラメータの値)ビットであることが容易に推測できる。正/負を表わす負号ビットを加えればさらに1ビット増える。
【0035】
また、図からも分かるように、kパラメータ=0の時には量子化値「0」に対するGolomb Rice符号長がk=1,2の時よりも特に短くなっている。これは符号化される量子化値群が0に偏っているため、kパラメータを小さくして符号化する方が適していることを示している。
【0036】
また、ここで用いるGolomb Rice符号化は、図4に示すような符号表を実際には保持することなく簡単な演算により符号化及び復号化を行なうことができるという効果がある。通常、ハフマン符号化等の可変長符号化では、符号化対象値に対する可変長符号を示すテーブルを保持しなければならない。特に、関連する状態に応じ、符号化対象値に対して複数の可変長符号を適宜切り換える場合には、上記テーブルを複数持つ必要がある。
【0037】
以上のようにして、入力される量子化値に対する負号ビット(+/−を表わす)と可変長符号(Golomb Rice符号)からなる符号化データを生成し、後段のビットプレーン走査部107へ出力する。
【0038】
次に、上述したGolomb Rice符号化部106で必要となるkパラメータを生成する符号化パラメータ選択部150の処理内容の説明を行なう。
【0039】
符号化するサブブロックの全符号量Tは、kパラメータの値をpとすると
p=Σ(Vi>>p(Viをpビット右シフトした値)+2(負号ビットと区切りビット)+p)・・・・(1)
となる。
【0040】
符号化するサブブロック内の量子化値の数をN個とすると、上記(1)式は下式のようになる。
【0041】
p=(p+2)×N+ΣVi>>p ・・・(2)
上記(2)式の第1項:(p+2)×Nは固定長符号部分による符号量で、第2項:ΣVi>>pは可変長符号部分による符号量である。ここで第2項のみを
p=ΣVi>>p ・・・(3)
と表わす。このSpはpの値が小さい程大きくなる。一方、固定長符号部分の符号量はpの値に比例して大きくなり、pが1つ大きくなると該符号量はNビット増える。
【0042】
次に、Viを2進表現したときの各ビットプレーンにおける「1」の個数について考える。
【0043】
Vi>>pの最下位ビットのプレーン中に存在する「1」の数をBp+1とする。すなわち、
p+1=Σ(Vi>>p)&1・・・・(4)
である。ここで、B1はViの最下位ビットプレーン中の「1」の個数を表わし、B2はViの最下位ビットから2番目のプレーン中の「1」の個数を表わす。
【0044】
ΣVi>>p=(2×ΣVi>>(p+1))+(Σ(Vi>>p)&1)
という関係と、(3)(4)式から
p=2×Sp+1+Bp+1・・・・(5)
という関係式が得られる。kパラメータの値が1つだけ異なるSp-1とSp間の差をDpとすると、
p=Sp-1−Sp=(2×Sp+Bp)−Sp
=Sp+Bp(p≧1)・・・・(6)
このDpはkパラメータの値がpからp−1に変わることで、可変長符号量がどれだけ増えるかを表わすもので、この値がNより小さいなら、全体の符号量はN−Dpだけ減るので、kパラメータの値はpよりp−1にした方がよい。逆に、Dp≧Nならkパラメータの値はpの方がよい。
【0045】
同様に、kパラメータの値が2つ異なるSp-2とSp間の差をDDp、すなわち、DDp=Sp-2−Spとすると、この値が2Nより小さいなら、kパラメータの値がpからp−2に変わることで可変長符号量が2N−DDpだけ減るので、kパラメータの値はpよりp−2にした方がよい。逆に、DDp≧2Nならkパラメータの値はpの方がよいと言える。
【0046】
上記(6)式をさらに変形すると、
p-1=Sp-1+Bp-1
=(2×Sp+Bp)+Bp-1
=(Sp+Bp)+Sp+Bp-1
=Dp+Sp+Bp-1
p,Bp-1≧0であるから
p-1≧Dp・・・・(7)
上記(7)式の関係と上述した説明から次のことが言える。
【0047】
『数列:D1、D2、D3、・・、Dp-1、Dp、Dp+1、・・、Dmには、D1≧D2≧D3≧・・≧Dp-1≧Dp≧Dp+1≧・・≧Dmという関係があり、Dq≧N≧Dq+1となるqが存在するとき、このqはkパラメータの最適値の内の1つである。』
ここでいう最適値とは、Golomb Rice符号化したときの全体の符号量が最小になるという意味である。また、mはゼロでないBpの中で最も大きなpの値であり、このmに対応するSmはゼロある。(一番大きな量子化絶対値をmビット右シフトすると0になるため)よって、Dm=Bm≦Nである。
【0048】
kパラメータがqからq+1になると符号量がN−Dq+1だけ増加し、kパラメータがqからq−1になると符号量がDq-Nだけ増加する。但し、Dq+1=NまたはDq=Nの時は符号量は増えず最小のままである。Dq+1=Nの時はq+1も最適値となり、Dq=Nの時はq−1も最適値となる。
【0049】
最適値は最大3個存在しうる。その条件はDq=N=Dq+1が成立する時で、言い替えるとSq-1=0、Sq=N、Sq+1=2Nとなる時である。この時、q−1、q、q+1が最適値となり、全符号量Tは極値(最小値)をとる。よって、kパラメータが上記最適値から遠ざかる程、全符号量は増加する。
【0050】
一方、上記qが存在しない時というのは、N>D1となる時で、この場合kパラメータの値が0で全符号量が最小となる。そして、全符号量はkの値の変化(増加)に対し単調増加となる。
【0051】
ここで、前記数列と最適値に関する関係を一般化するために、D0=D1+Nと定義する。すると、『数列:D0、D1、D2、D3、・・、Dp-1、Dp、Dp+1、・・、Dmには、D0≧D1≧D2≧D3≧・・≧Dp-1≧Dp≧Dp+1≧・・≧Dmという関係があり、Dq≧N≧Dq+1となるqが存在し、このqはkパラメータの最適値の内の1つである。』ということが言え、最適値qの存在が明確なものとなった。
【0052】
これまでの説明から、kパラメータの変化に対する全符号量Tkの局所的な最小値は、kパラメータの全範囲におけるグローバルな最小値でもあることが分かる。よって、kパラメータの最適値の探索は、kの値すべてについて全符号量Tkが最小になるかどうかを評価する必要はなく、局所的にTkが最小値となるkの値を見つけ出すだけでよいと言える。これにより、kパラメータの探索方法の簡略化が図れる。
【0053】
以上で述べたさまざまな関係から、kパラメータの最適値を決定するいくつかの方法(発明の実施形態)が考えられるが、本第1の実施形態の例を図5のフローチャートに示す。
【0054】
まず、ステップS501では、可変長符号部分の符号量Sp(p=0、1、2、・・、m−1)を計算し、ステップS501aでは、ゼロでないSpのpの最大値に1を加算してmを求める。
【0055】
ステップS502では、iに上記mを設定し、ステップ503では、Di=Si-1−Siを計算する。
【0056】
ステップS504では、DiをNと比較し、Di<Nなら、ステップS505へ、そうでなければ、ステップS507へ行く。
【0057】
ステップ505では、i=i−1を計算してkパラメータの候補値を更新する。そして、ステップ506では、更新したiの値が0かどうかを判定し、i=0であればステップ507へ行き、i=0でなければステップS503へ行ってループ処理を継続する。
【0058】
ステップS507では、kパラメータの値をiに決定する。
【0059】
ステップS501における、可変長符号部分による符号量Spの計算プログラム例(C言語で記述)を図6に示す。この例では、V=0のときにも最低1回の加算を行なうが、if文でV≠0を検出したときだけ、do〜While文を実行するようにしてもよい。
【0060】
サブブロック内の全て(N個)のVに対して図6の処理を行なったら次のステップS501aでkパラメータの上限候補値mを求める。この値は、前記Vの理論上の最大値から図6における変数pの理論上の最大値をあらかじめ計算しておき、S[]の値を順に評価することで求められる。
【0061】
そして、ステップS502において、該mをiに設定する。
【0062】
その次にステップS503にてDm=Sm-1−Smを計算する。このDmは全てのDiの中で一番小さく、最大でもNであり、Nより大きくなることは有り得ない。これは最も大きな値Vの最上位の有意ビット(0で無いビット)のビットプレーンに「1」が存在する個数を表わしている。
【0063】
よって、ステップS504で、Di(=m)<Nと判定され、ステップS505へ移る。
【0064】
ステップS505でiの値はmから1つ減らされm−1となり、次のステップS506でiの値が0かどうか判定されるが、ここではi≠0としてステップS503へ戻る。
【0065】
上記、ステップS503〜S506の処理を繰り返し行ない、Di>Nまたはi=0になるとkパラメータの値を変更しても符号量が減らないため、ステップS507に抜けて、kパラメータの値をiに決定する。
【0066】
以上のようにして、図1における符号化パラメータの選択部で処理を行ない、該パラメータに基づき、既に説明したGolomb Rice符号化処理部106を実行する。符号化されたデータは、次段のビットプレーン走査部107に出力される。
【0067】
ビットプレーン走査部107は、量子化値毎に符号化・出力された符号化データを受け取り、それをビットプレーン単位に並び替えて出力するものである。これを、上述した周波数成分(サブブロック)単位で行なう。
【0068】
まず、Golomb Rice符号化部で生成された符号化データをkパラメータでの値で決まる固定長符号部分と可変長符号部分に分離する。符号にはその外に1ビット固定の負号ビットがある。
【0069】
走査する順序は、重要な情報からで、まず最初に負号ビットをサブブロック内の全量子化値に対して走査する。次に、量子化値の上位ビットの情報を有する可変長符号部分を上位ビットプレーンから順に走査する。最後に固定長符号部分を上位ビットプレーンから順に走査する。各量子化値に対するGolomb Rice符号(但し、可変長符号部分と固定長符号部分とを分離したもの)と走査順序を図7に示す。
【0070】
可変長符号部分の走査についてはもう少し詳しい説明を付け加える。可変長符号はその名の通り長さが一定でないため、短い符号と長い符号をどのようにそろえて並べるかということが一意に決まらないが、ここでは、可変長符号の先頭ビットが同じプレーンになるように並べるものとする。すなわち、可変長符号は図7における可変長符号領域の上から順にうめるようにして並べる。上記ビットプレーン情報を上位ビットから順に走査すると、短い符号では途中のプレーンから情報(符号ビット)が無くなるので情報の無い符号は走査をスキップする。よって、下位のビットプレーンへ行くにつれ、走査する情報(符号ビット)が少なくなる。
【0071】
上記順序(負号ビット、可変長符号、固定長符号)で走査したビット情報の並びを図8に示す。
【0072】
このビットプレーン走査をサブブロック単位でLL,HL3,LH3,HH3,HL2,LH2,HH2,HL1,LH1,HH1の順に行なう。
【0073】
このビットプレーン走査部から出力されるビット列を次の符号出力部109にて順次転送する。転送相手は、ハードディスクやDVD等の記録メディアであっても良いし、インターネット、一般公衆回線、無線回線等のインターフェースであっても良い。
【0074】
なお、上記実施の形態において生成された符号化データには、復号時に必要となる各種情報、すなわち、画像サイズ、1画素あたりのビット数、各周波数成分に対する量子化ステップ、kパラメータの値等を付属情報として符号化データに適宜付加する。
【0075】
[第2の実施形態]
上記第1の実施の形態における符号化パラメータの選択方法、すなわち、kパラメータの生成方法とは若干異なる方法を図9に示し説明する。なお同じ役割を担う処理ステップには図5のものと同一の番号を付加している。
【0076】
本第2の実施形態は、前記(6)式:Dp=Sp+Bpを利用する。よって、ステップS501の替わりにステップS901、ステップS503の替わりにステップS903にて処理を行なう。
【0077】
ステップS901では、可変長符号部による符号量Sp(p=0、1、2、・・、m−1)と各ビットプレーンにおける「1」の数Bp(p=1、2、・・、m)を計算し、ステップS903では、Di=Si+Biを計算する。
【0078】
ステップS901のSpとBpの計算プログラム例(C言語で記述)を図10に示す。該プログラムにおけるdo〜Whileループ文の第1巡目でS0、B1に対して累積加算処理を行ない、第p巡目ではSp-1、Bpに対して累積加算処理を行なうようにしている。
【0079】
本第2の実施形態の最大の特徴は、Diを前記(6)式で計算することにある。そのために必要なSiとBiをステップS901にてあらかじめ求めておき、ステップS903にてDiを計算する。その他の処理は前記第1の実施形態と同じであるため、説明は省略する。
【0080】
[第3の実施形態]
本第3の実施形態は、前記(5)式:Sp=2×Sp+1+Bp+1の関係を利用する。すなわち、前記第2の実施形態におけるステップS901の処理で、SpとBp(p=0、1、2、・・、m)を計算する部分を、以下に示すステップS911〜ステップS913の処理に置き換える。
【0081】
ステップS911では、Bp(p=0、1、2、・・、m)を計算する。
【0082】
ステップS912では、ゼロでないBpのpの最大値mを求める。
【0083】
ステップS913では、Sm=0に初期化し、Sp-1=2×Sp+Bp(p=m、m−1、m−2、・・、1)を計算する。
【0084】
その他の処理は、前記第2の実施形態と同じであるので、説明を省略する。なお、ステップS913の処理を「Sm-1=Bに初期化し、Sp-1=2×Sp+Bp(p=m−1、m−2、・・、1)を計算する。」と変更してもよい。
【0085】
[第4の実施形態]
本第4の実施の形態は、前記(6)式の関係:Dp=Sp+Bpから容易に導き出せる Dp≦Spという関係を利用する。Dp≦Spという関係より、Sp<Nであれば、Dp<Nであると言える。
【0086】
そこで、図11に示すフローチャートのように、Si<Nの関係が成り立つかどうかを調べるステップS1101を前記第2の実施の形態を示す図9のステップS903の前に設け、該関係が成り立てば、ステップS903とステップS504をパスするようにした。
【0087】
なお、本実施形態は、前記第1の実施形態に適用することも可能である。その場合、ステップS1101を図5のステップS503の前に設け、該関係が成り立てば、ステップS503とステップS504をパスするようにする。
【0088】
[第5の実施形態]
上記第1、第2の実施の形態における符号化パラメータの選択方法とは異なる、更に別の方法について説明する。
【0089】
本実施の形態では、kパラメータの値が2つ異なるSp-2とSp間の差、すなわち、DDp=Sp-2−Spを利用する。
【0090】
既に説明したように、DDpが2Nより小さいなら、kパラメータの値をpからp−2に変えることで可変長符号量が2N−DDpだけ減るので、kパラメータの値はpよりp−2にした方がよい。逆に、DDp≧2Nならkパラメータの値はpの方がよいと言える。
【0091】
よって、該DDpを用いれば、kパラメータの候補値を2単位で高速に更新できる。本実施形態の処理方法を示すフローチャートを図12に示す。同じ役割を担う処理ステップには図5のものと同一の番号を付加している。
【0092】
本実施形態では、前記第1の実施形態における図5のステップS502とステップS503の間に別のループ処理を行なうステップS1201〜ステップS1004を設けている。
【0093】
ステップS1201では、本実施形態の一番の特徴であるDDi=Si-2−Siを計算する。ステップS1202では、DDiと2Nとを比較する。ステップS1203では、iを2単位で更新する。ステップS1204では、iが1以下であるかどうかを判定する。ステップS1201〜ステップS1204によるループ処理は、前記第1の実施形態におけるステップS503〜ステップS506によるループ処理と大変よく似ている。
【0094】
違いはiを更新する単位が2であるということである。ステップS1201で計算したDDiをステップS1202で2Nと比較することにより、iを2つ更新してもよいかどうか判定し、更新可能であれば、ステップS1203にてi=i−2によりiの値を更新する。
【0095】
i≦1ではステップS1201を実行できないので、(何故ならS-1が存在しないため)ステップS1204にて、i≦1を検出したら次のステージの処理(ステップS503)へ移り、i>1であれば、ステップS1201へ戻ってループ処理を継続する。
【0096】
上記ループ処理を抜けてきた時というのは、kパラメータをiからi−2にしても符号量が減らないという状態である。しかし、kパラメータをiからi−1にすると符号量が減る可能性がある。
【0097】
そこで、kパラメータをiからi−1に変更可能かどうかを調べるため、ステップS503でDi=Si-1−Siを計算し、ステップS504でDiをNと比較し、Di<Nなら、iからi−1に変更できるので、ステップS505に移り、そうでなければ、それまでのiをそのまま引き継いでステップS507へ行き該iの値をkパラメータの値とする。
【0098】
本実施形態では、まず最初にiを2単位で更新したが、Si-4−Siを用いれば、4単位で更新することもできるし、他の計算式を用いれば別の単位で更新することも可能である。
【0099】
4単位で更新した場合、最初のループ処理を抜けた時点で、最適なkパラメータの可能性としては、i〜i−3の4つが考えられる。そこで、次のステージで、この4つの値のどれかに特定するため、1単位で更新可能かどうかをループ処理で最大3回判定し、iの値を更新する、といった処理方法も考えられる。
【0100】
[第6の実施形態]
符号化パラメータの選択方法として、更に異なる方法を図13に示し説明する。なお同じ役割を担う処理ステップには図5のものと同一の番号を付加している。
【0101】
本実施形態は、Diを使用せずに、SNp=Sp+N(p=0、1、2、3、・・、m)という値を用いることが特徴である。
【0102】
ステップS1301では、上記SNpを計算し、ステップS1302では、Si-1とSNiを比較する。
【0103】
その他の処理は前記第1の実施の形態と同じである。
【0104】
ステップS501で計算したSp(p=0、1、2、3、・・、m)の値に対して、Nを加算した値SNpをステップS1301で計算した後、ステップS502でiの初期化を行なう。
【0105】
その後、kパラメータの候補値であるiをi−1へ更新可能かどうかを調べるため、ステップS1302にて、Si-1とSNiを比較する。Si-1<SNiであれば符号量が減るので、iをi−1へ更新するためステップS506へ行き、そうでなければ、ステップS504に抜けkパラメータの値をiに確定する。
【0106】
iをi−1へ変更した後、ステップS506にて、i=0かどうか判定する。i=0になるとiの値をそれ以上更新できないので、ループ処理を抜けステップ504へ行く。そうでなければ、ステップS1302へ戻り、iの更新処理を継続する。
【0107】
[第7の実施形態]
これまで説明した実施形態は、すべてループ制御変数iの初期値をmとしてきたが、本実施の形態では、該制御変数iの初期値を0に設定するものである。
【0108】
基本的には、これまで述べてきた全ての実施形態に適用可能であるが、特に第1の実施形態である図5を基にして、本実施の形態を説明する。iの初期値を0とする本実施形態を図14に示す。
【0109】
同図において、ステップS1402では、iに初期値0を設定し、ステップS1404では、DiをNと比較し、Di>NならステップS1405へ、そうでなければステップS1407へ行く。ステップS1405では、iに1を加算し、ステップS503に戻る。
【0110】
ステップS1407では、kパラメータの値をi−1に決定する。
【0111】
本実施形態では、これまでの実施形態で必要であった、mを求めるためのステップS501a、iが0かどうかを判定するステップS506が必要なくなった。
【0112】
以前述べたようにDm≦Nであるため、iの値がmまで大きくなるか、それ以前に必ず、Di≦Nという関係になるため、ステップS1404の分岐先は最後は必ずステップS1407になり、ここでkの値が確定する。
【0113】
ステップS1407でkパラメータの値を、iではなくi−1に設定する理由は、ステップS1404からステップS1407に分岐した時点での諸関係が、Di-1>N≧Diであるからである。前述したように、該関係でのkパラメータの最適値はi−1である。
【0114】
本実施形態は、これまでの中で最もシンプルな処理形態をとることができる。
【0115】
[第8の実施形態]
本実施形態は、前記制御変数iの初期値を、それ以前に行なう比較処理の結果によって変えるというものである。
【0116】
kパラメータの最適値は、i=mに近いところに存在する場合もあれば、i=0に近いところに存在する場合もある。前者であればi=mから、後者であればi=0から探索するのが合理的というものである。
【0117】
ループ処理に入る前にまずその判定をしなければならない。h=floor{m/2}に対する、Dhを計算し、該DhとNとを比較する。Dh<Nであれば、iを0に設定して処理を行ない、そうでなければ、iをmに設定して処理を行なう。というのが本実施形態の概略である。
【0118】
本実施形態を図15に示し、もう少し詳しく説明する。同図において、ステップS1502では、h=floor{m/2}を計算する。ステップS1503では、上記hに対応するDhを計算する。
【0119】
ステップ1504では、DhとNとを比較し、Dh<NであればステップS1402へ分岐し、そうでなければ、ステップS502へ分岐する。
【0120】
その他の処理ステップは図5あるいは図14の同一番号処理ステップと同じである。
【0121】
ステップS1402以降の処理は、前記第7の実施形態とまったく同じ処理であるが、ステップS502以降の処理は、基本的には前記第1の実施形態と同じであるが、若干違いがある。その違いは、ループ処理において、iが所定の値に達したかどうかの判定(ステップS506に相当する)が無いことである。
【0122】
何故判定が無いかというと、該ループ処理においてiの値が初期値mから1ずつ減少して上記hに達すると、ステップS504の判定で該ループ処理を抜けステップS507へ確実に分岐することが分かっているからである。これはステップS1504からステップS502へ分岐したときの条件(Dh≧N)から、明白である。
【0123】
同様に、ステップS503、S1404、S1405によるループ処理を抜け出る時のiの値の上限はhである。これはステップS1504からステップS1402へ分岐したときの条件(Dh<N)から分かる。
【0124】
本実施形態では、kパラメータを決定するまでのループ処理の上限ループ回数を約半分にすることができるので、より高速にkパラメータを決定することができる。
【0125】
また、本実施形態の応用として、kパラメータを決定するループ処理への分岐数を増やせば、各ループ処理の上限ループ回数を更に減らすことができ、より高速にkパラメータを決定することができる。
【0126】
[第9の実施形態]
前記第9の実施形態のような初期値の設定方法では、制御変数iが増加する場合のループ処理と減少する場合のループ処理の2つを用意しなければならない。そこで、該2つのループ処理を共通化した場合の処理形態を図16を用いて説明する。
【0127】
本実施形態では、ステップS1601にて、iの初期値をhに設定する。ステップ1602では、iがhに等しいかどうか判定する。ステップ1603では、iの初期値を0に再設定すると共に、hを−1に設定する。
【0128】
その他の処理ステップは前記第8の実施形態:図15の同一番号処理ステップと同じである。
【0129】
前記第8の実施形態と同様の演算でhを計算し(ステップS1502)、ステップS1601にて、iに該hを設定する。次に、ステップS503に移り、Dh=Sh-1−Shを計算する。そして、ステップS1404にて、DhがNより大きいかどうか判定する。ここまでの処理は、フローチャートの構造は違ってはいるが、前記第8の実施形態と同じである。
【0130】
h>Nであれば、i=hを初期値として、制御変数iが増加する場合のループ処理と同様の処理をステップS503、S1404、S1405にて行なう。該ループ処理を抜け出る時のiの値は、少なくとも1回はステップS1405(i=i+1を計算する)を通過するので、前記hより大きく、ステップS1602の判定を通って、ステップS1407にて、kパラメータの値をi−1に決定する。
【0131】
h>Nでない場合は、初回からステップS1602へ分岐する。この時i=hなので、ステップS1603へ分岐し、iの初期値を0に再設定すると共に、hを−1に設定する。hを−1に設定する理由はiが取り得ない値を設定することで、2度目のステップ1602における判定にひっかからない(i=hとならない)ようにするためである。
【0132】
iの初期他を0に再設定した後の処理は、前記第8の実施形態におけるステップS503、S1404、S1405によるループ処理と完全に同じで、該ループ処理を抜ける時のiの値は最大でfloor{m/2}である。
【0133】
変数hの値はステップS1603で−1に設定されているので、ステップS1602にてi=hが成り立つことは絶対にないため、ステップS1407へ分岐し、kパラメータの値はi−1に決定される。
【0134】
前記第8の実施形態に対して、処理を共通化したことによるオーバーヘッドは、iの初期値を0に再設定する際に必要なステップS1602の判定処理が初期化時に1/2回(初期化時にこの判定処理を行なう確率は約1/2であるため)と前記ループ処理を抜ける際に1回(この時は該判定処理を避けて通ることができないため)あるが、処理ルーチンのコンパクトさのメリットの方が大きいと思われる。
【0135】
なお、上記各実施形態におけるその構成は図1に従うものとしたが、例えば同図の処理をプログラムによっても実現できる。画像を入力するデバイスは、ネットワーク、ビデオカメラ、イメージスキャナ、ストレージデバイス(フロッピー等)で良いわけであるから、本発明は、例えばこれらのいずれかを有するシステムや汎用情報処理装置(パーソナルコンピュータ等)にも適用できる。
【0136】
従って、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0137】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【0138】
以上説明したように本実施形態によれば、あるパラメータに基づいてシンボルを可変長符号部分と固定長符号部分とで符号化する際、そのパラメータの各々の値に対する可変長符号部分の符号量間の差分値のみを評価して、最適なパラメータを高速に決定できるようになった。
【0139】
【発明の効果】
以上説明したように本発明によれば、多値画像を簡易かつ高速に可変長符号化することのできるようになる。
【図面の簡単な説明】
【図1】実施形態の装置のブロック構成図である。
【図2】離散ウェーブレット変換を施す様子を示す図である。
【図3】周波数成分(サブブロック)に用いる量子化ステップを示す図である。
【図4】Golomb Rice符号化をして得られる符号の一例を示す図である。
【図5】第1の実施形態である処理内容を示すフローチャートである。
【図6】kパラメータの各値に対する可変長符号の符号量Spを計算するプログラムの一例を示す図である。
【図7】Golomb Rice符号化した符号をビットプレーンで表現した図である。
【図8】最終的に出力されるビットストリームの様子を示す図である。
【図9】第2の実施形態である処理内容を示すフローチャートである。
【図10】符号量Spと各ビットプレーン中の1の数Bpの両方を計算するプログラムを示す図である。
【図11】第4の実施形態である処理内容を示すフローチャートである。
【図12】第5の実施形態である処理内容を示すフローチャートである。
【図13】第6の実施形態である処理内容を示すフローチャートである。
【図14】第7の実施形態である処理内容を示すフローチャートである。
【図15】第8の実施形態である処理内容を示すフローチャートである。
【図16】第9の実施形態である処理内容を示すフローチャートである。
【符号の説明】
101 画像入力部
102 データ格納部
103 離散ウェーブレット変換部
104 係数量子化部
105 符号化パラメータ選択部
106 Golomb Rice符号化部
107 ビットプレーン走査部
108 バッファ
109 符号出力部
[0001]
BACKGROUND OF THE INVENTION
The present invention relates to an encoding apparatus and method, and a storage medium.
[0002]
[Prior art]
Images, particularly multi-valued images, contain a great deal of information, and there is a problem that the amount of data becomes enormous when storing and transmitting the images. For this reason, when storing and transmitting images, high-efficiency coding is used to reduce the amount of data by removing the redundancy of the images and allowing some degradation in image quality.
[0003]
As one of these high-efficiency encodings, JPEG compression encoding is known. In this method, a multi-value image is converted into frequency components by DCT conversion for each block, and the obtained conversion coefficient is quantized and variable-length encoded.
[0004]
The encoding using the DCT transform has a problem that block distortion occurs in the decoded image when the compression rate is set high. In recent years, a new encoding method using wavelet transform has been proposed in order to eliminate such distortion.
[0005]
Also, variable length coding is often applied as part of these various high efficiency codings.
[0006]
[Problems to be solved by the invention]
However, a method for variable-length coding a multi-valued image with simple processing and a processing method for executing this variable-length coding method at high speed have not been established yet.
[0007]
The present invention has been made in view of such a situation, and an object of the present invention is to provide an encoding apparatus and method, and a storage medium capable of variable-length encoding a multi-valued image easily and at high speed.
[0008]
[Means for Solving the Problems]
  In order to solve this problem, for example, the encoding of the present invention.MethodHas the following configuration. That is,
  A symbol group of a predetermined unit to be encoded isBased on a certain parameterThe code amount is determined depending on the contents of the symbol group and the parameters.A variable-length code part;The code amount is determined only by the parameters.With fixed-length code partTo the encoded data representedIn an encoding method for encoding,Each obtained by the code amount estimation process for the symbol group of the predetermined unit,ParametersInAgainstAboveBy evaluating the difference value of the code amount of the variable length code part,The minimum code amount for the symbol group of the predetermined unitIt is characterized in that an optimum value of the parameter is determined.
[0009]
Further, according to a preferred embodiment of the present invention, multi-value image data is divided into a plurality of information groups (a collection of quantized values for one sub-block in the present embodiment), and the information groups are individually separated. A coding apparatus for performing variable length coding (Golomb Rice coding) based on a parameter (k parameter), and how much the code amount of a variable length code portion differs between adjacent k parameters, and a difference value thereof The optimum parameter k for each information group is determined by sequentially comparing all the difference values obtained within the allowable range of the k parameter with a predetermined value.
[0010]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, embodiments according to the present invention will be described in detail with reference to the accompanying drawings.
[0011]
  [First Embodiment]
  Hereinafter, an example of encoding 8-bit monochrome image data will be described as the first embodiment.,The present invention is not limited to this, and is applied to a case where a monochrome image represented by 4 bits for each pixel or a color multi-value image representing a color component (RGB / Lab / YCrCb) of each pixel by 8 bits is encoded. Is also possible. When applied to these, each color component may be encoded as a monochrome image.
[0012]
FIG. 1 is a block diagram of an image encoding device according to the first embodiment.
[0013]
In the figure, 101 is an image data input unit, 102 is a data storage unit, 103 is a discrete wavelet transform unit, 104 is a coefficient quantization unit, 105 is an encoding parameter selection unit, 106 is a Golomb Rice encoding unit, and 107 is a bit. A plane scanning unit 108 is a buffer, and 109 is a code output unit.
[0014]
First, the image input unit 101 inputs pixel data to be encoded in raster scan order. The image input unit 101 includes, for example, image data input processing from an imaging device such as a scanner or a digital camera, an imaging device such as a CCD, or a network line interface.
[0015]
Further, the image input target may be a recording medium such as a RAM, a ROM, a hard disk, and a CD-ROM.
[0016]
The image data storage unit 102 stores the image data input by the image input unit 101.
[0017]
The discrete wavelet transform unit 103 performs known discrete wavelet transform on the image data for one screen stored in the image data storage unit, and decomposes the image data into a plurality of frequency bands. In the present embodiment, it is assumed that the discrete wavelet transform for the image data string x (n) is performed by the following equation.
[0018]
r (n) = floor {(x (2n) + x (2n + 1)) / 2}
d (n) = x (2n + 2) -x (2n + 3) + floor {(-r (n) + r (n + 2) +2) / 4}
r (n) and d (n) are conversion coefficients, r (n) is a low frequency component, and d (n) is a high frequency component.
[0019]
In the above formula, floor {X} represents the maximum integer value not exceeding X. Although this conversion formula is for one-dimensional data, it is possible to perform two-dimensional conversion by applying this conversion in the order of the horizontal direction and the vertical direction, and the LL, It can be divided into four frequency bands (sub-blocks) of HL, LH, and HH. These converted data are stored in the data storage unit 102 in order to output the data smoothly to the next-stage coefficient quantization unit 104 or to perform further wavelet transform.
[0020]
The generated LL component is subjected to a discrete wavelet transform in the same procedure as described above to be decomposed into seven frequency bands (sub-blocks) as shown in FIG. In the present embodiment, the discrete wavelet transform is repeated once more, so that 10 pieces of LL, HL3, LH3, HH3, HL2, LH2, HH2, HL1, LH1, and HH1 are obtained as shown in FIG. Are divided into frequency bands (sub-blocks) and stored in the data storage unit 102.
[0021]
The transform coefficients are output from the data storage unit 102 to the coefficient quantization unit 104 in the order of subblocks LL, HL3, LH3, HH3, HL2, LH2, HH2, HL1, LH1, and HH1, and in the raster scan order for each subblock. .
[0022]
The coefficient quantization unit 104 quantizes each of the wavelet transform coefficients in a quantization step determined for each frequency component, and outputs the quantized value to the encoding parameter selection unit 105 and the buffer 108.
[0023]
When the coefficient value is X and the quantization step value for the frequency component to which this coefficient belongs is q, the quantized quantized value Q (X) is obtained by the following equation.
[0024]
Q (X) = floor {(X / q) +0.5}
FIG. 3 shows the relationship between each frequency component and the quantization step in the present embodiment. As shown in the figure, the quantization step is larger for the high frequency components (HL1, LH1, HH1) and the like than for the low frequency components (LL, etc.). As a result, the information of high frequency components that are hardly visually noticeable is reduced to improve the compression.
[0025]
The quantized value is evaluated by the encoding parameter selection unit 105, and stored in the buffer 108 until the k parameter required for encoding the quantized value is determined by the subsequent Golomb Rice encoding unit 106. Retained.
[0026]
The encoding parameter selection unit 105 selects the k parameter used in the latter-stage Golomb Rice encoding unit 106 based on the quantized value.
[0027]
The k parameter is a value indicating the code length of the fixed length part when performing variable length coding called Golomb Rice coding. For convenience of explanation, before explaining the coding parameter selection unit 105, the operation of the Golomb Rice coding unit 106 will be explained first.
[0028]
Although the basic method of encoding performed by the Golomb Rice encoding unit 106 is known, the basic operation of encoding and the characteristic part of the present invention will be described below.
[0029]
First, data for one sub-block is sequentially read from the buffer 108 that stores the quantization value.
[0030]
Next, the Golomb Rice encoding unit 106 performs preprocessing and Golomb Rice encoding processing described below based on the k parameter corresponding to the sub-block.
[0031]
The Golomb Rice encoding unit 106 checks the positive / negative of each input quantization value and outputs a negative sign bit. Specifically, “0” is output when the quantized value is 0 or positive, and “1” is output when the quantized value is negative, and then the quantized value is converted into an absolute value. (This process is not strictly included in the Golomb Rice encoding process, but here, as the pre-processing, it is performed in the Golomb Rice encoding unit 106)
Next, the absolute value is Golomb Rice encoded. The Golomb Rice encoding process when the absolute value of the quantization value to be encoded is V and the value of the k parameter applied to the sub-block to be processed is k is performed according to the following procedure.
[0032]
First, V in binary representation is shifted to the right by k bits, then “0” is continuously arranged for the number of obtained values (remaining values), and then “1” is arranged as a delimiter bit. Then, a variable length code (Golomb Rice code) is generated by arranging the lower k bits of the original V.
[0033]
FIG. 4 shows an example of Golomb Rice code for V = 0 to 7 and k = 0, 1, and 2. For example, when V = 4 and k = 1, 4 is a binary number “100B (B indicates a binary number)”, and when k (= 1) bits are shifted to the right, the rest is “10B”. Since “2”, “0” is continued twice, followed by “1” as a delimiter, and “0010” is obtained by the lower-order k (= 1) bit of the value 4 (= 100 B).
[0034]
As can be seen, the code length of each variable length code obtained from the absolute value V and the parameter k is V >> k (the value remaining when V is shifted to the right by k bits) +1 (separator bit) + k (parameter Value) bits. If a negative sign bit indicating positive / negative is added, it is further increased by one bit.
[0035]
As can be seen from the figure, when the k parameter = 0, the Golomb Rice code length for the quantized value “0” is particularly shorter than when k = 1,2. This indicates that since the quantized value group to be encoded is biased to 0, it is more appropriate to perform encoding with a smaller k parameter.
[0036]
Further, the Golomb Rice encoding used here has an effect that encoding and decoding can be performed by a simple calculation without actually holding a code table as shown in FIG. Normally, in variable-length encoding such as Huffman encoding, a table indicating variable-length codes for encoding target values must be held. In particular, when a plurality of variable length codes are appropriately switched for a value to be encoded according to a related state, it is necessary to have a plurality of the tables.
[0037]
As described above, encoded data composed of a negative bit (representing +/−) and a variable length code (Golomb Rice code) for the input quantized value is generated and output to the bit plane scanning unit 107 at the subsequent stage. To do.
[0038]
Next, processing contents of the encoding parameter selection unit 150 that generates k parameters required by the Golomb Rice encoding unit 106 described above will be described.
[0039]
The total code amount T of the sub-block to be encoded is given by assuming that the value of the k parameter is p.
Tp= Σ (Vi >> p (value obtained by shifting Vi to the right by p bits) +2 (negative bit and separator bit) + p) (1)
It becomes.
[0040]
Assuming that the number of quantization values in the sub-block to be encoded is N, the above equation (1) is as follows.
[0041]
Tp= (P + 2) × N + ΣVi >> p (2)
In the above equation (2), the first term: (p + 2) × N is the code amount by the fixed-length code portion, and the second term: ΣVi >> p is the code amount by the variable-length code portion. Here only the second term
Sp= ΣVi >> p (3)
It expresses. This SpIncreases as the value of p decreases. On the other hand, the code amount of the fixed-length code portion increases in proportion to the value of p, and when p increases by one, the code amount increases by N bits.
[0042]
Next, the number of “1” s in each bit plane when Vi is expressed in binary will be considered.
[0043]
The number of “1” present in the plane of the least significant bit of Vi >> p is Bp + 1And That is,
Bp + 1= Σ (Vi >> p) & 1 (4)
It is. Where B1Represents the number of “1” s in the least significant bit plane of Vi, and B2Represents the number of “1” s in the second plane from the least significant bit of Vi.
[0044]
ΣVi >> p = (2 × ΣVi >> (p + 1)) + (Σ (Vi >> p) & 1)
From the relationship of (3) and (4)
Sp= 2 x Sp + 1+ Bp + 1(5)
Is obtained. k parameter values differ by onep-1And SpThe difference between DpThen,
Dp= Sp-1-Sp= (2 x Sp+ Bp-Sp
= Sp+ Bp(P ≧ 1) (6)
This DpRepresents how much the variable-length code amount is increased by changing the value of the k parameter from p to p−1. If this value is smaller than N, the total code amount is NDpTherefore, the value of the k parameter should be p-1 rather than p. Conversely, DpIf ≧ N, the value of the k parameter should be p.
[0045]
Similarly, two different k parameter valuesp-2And SpDD difference betweenpThat is, DDp= Sp-2-SpIf this value is smaller than 2N, the variable length code amount becomes 2N-DD by changing the value of the k parameter from p to p-2.pTherefore, the value of the k parameter should be p-2 rather than p. Conversely, DDpIf ≧ 2N, it can be said that p is better for the value of the k parameter.
[0046]
When the above equation (6) is further modified,
Dp-1= Sp-1+ Bp-1
= (2 x Sp+ Bp) + Bp-1
= (Sp+ Bp) + Sp+ Bp-1
= Dp+ Sp+ Bp-1
Sp, Bp-1≧ 0
Dp-1≧ Dp(7)
The following can be said from the relationship of the above equation (7) and the above description.
[0047]
[Sequence: D1, D2, DThree, ..., Dp-1, Dp, Dp + 1, ..., Dm, D1 ≧ D2 ≧ D3 ≧ ··· ≧ Dp-1 ≧ Dp ≧ Dp + 1 ≧ ·· ≧ Dm,q≧ N ≧ Dq + 1Q is one of the optimal values of the k parameter. ]
The optimum value here means that the entire code amount when Golomb Rice encoding is minimized. M is not zero BpIs the largest value of p, and S corresponding to this mmIs zero. (Because the largest quantized absolute value is shifted to the right by m bits to 0)m= Bm≦ N.
[0048]
When the k parameter is changed from q to q + 1, the code amount is NDq + 1When the k parameter is changed from q to q-1, the code amount is DqNOnly increase. However, Dq + 1= N or DqWhen N = N, the code amount does not increase and remains the minimum. Dq + 1When N = N, q + 1 is also the optimum value, and DqWhen N = N, q-1 is also an optimum value.
[0049]
There can be a maximum of three optimum values. The condition is Dq= N = Dq + 1In other words, Sq-1= 0, Sq= N, Sq + 1= 2N. At this time, q-1, q and q + 1 are optimum values, and the total code amount T takes an extreme value (minimum value). Therefore, the total code amount increases as the k parameter moves away from the optimum value.
[0050]
On the other hand, when q does not exist, N> D1In this case, the k parameter value is 0 and the total code amount is minimum. The total code amount monotonically increases with respect to the change (increase) in the value of k.
[0051]
Here, in order to generalize the relationship between the sequence and the optimal value, D0= D1It is defined as + N. Then, "Number sequence: D0, D1, D2, DThree, ..., Dp-1, Dp, Dp + 1, ..., DmD0≧ D1≧ D2≧ DThree≧ ・ ・ ≧ Dp-1≧ Dp≧ Dp + 1≧ ・ ・ ≧ DmDq≧ N ≧ Dq + 1Q exists, and this q is one of the optimum values of the k parameter. The existence of the optimum value q became clear.
[0052]
From the above description, it can be seen that the local minimum value of the total code amount Tk with respect to the change of the k parameter is also the global minimum value in the entire range of the k parameter. Therefore, the search for the optimum value of the k parameter does not need to evaluate whether or not the total code amount Tk is the minimum for all the values of k, and it is only necessary to find the value of k where Tk is the minimum value locally. It can be said. This simplifies the k parameter search method.
[0053]
From the various relationships described above, several methods (embodiments of the invention) for determining the optimum value of the k parameter are conceivable. An example of the first embodiment is shown in the flowchart of FIG.
[0054]
First, in step S501, the code amount S of the variable length code portion.p(P = 0, 1, 2,..., M−1), and in step S501a, S is not zero.p1 is added to the maximum value of p to obtain m.
[0055]
In step S502, m is set to i. In step 503, D is set.i= Si-1-SiCalculate
[0056]
In step S504, DiCompare N with DiIf <N, go to step S505, otherwise go to step S507.
[0057]
In step 505, i = i-1 is calculated and the candidate value of the k parameter is updated. In step 506, it is determined whether or not the updated value of i is 0. If i = 0, the process goes to step 507, and if i = 0, the process goes to step S503 to continue the loop processing.
[0058]
In step S507, the value of the k parameter is determined as i.
[0059]
Code amount S by variable length code portion in step S501pFIG. 6 shows an example of the calculation program (described in C language). In this example, the addition is performed at least once even when V = 0, but the do to While statement may be executed only when V ≠ 0 is detected in the if statement.
[0060]
When the processing of FIG. 6 is performed for all (N) Vs in the sub-block, the upper limit candidate value m of the k parameter is obtained in the next step S501a. This value is obtained by calculating in advance the theoretical maximum value of the variable p in FIG. 6 from the theoretical maximum value of V and sequentially evaluating the value of S [].
[0061]
In step S502, m is set to i.
[0062]
Next, in step S503, Dm= Sm-1-SmCalculate This DmIs all DiIt is the smallest among them, N at the maximum, and cannot be larger than N. This represents the number of “1” s in the bit plane of the most significant bit (non-zero bit) of the largest value V.
[0063]
Therefore, in step S504, Di (= m)<N is determined, and the process proceeds to step S505.
[0064]
In step S505, the value of i is decremented by 1 from m to m−1. In the next step S506, it is determined whether i is 0 or not. Here, i ≠ 0 and the process returns to step S503.
[0065]
The above steps S503 to S506 are repeated, and DiIf> N or i = 0, the code amount does not decrease even if the value of the k parameter is changed. Therefore, the process goes to step S507 and the value of the k parameter is determined as i.
[0066]
As described above, the processing is performed by the encoding parameter selection unit in FIG. 1, and the above-described Golomb Rice encoding processing unit 106 is executed based on the parameter. The encoded data is output to the bit plane scanning unit 107 at the next stage.
[0067]
The bit plane scanning unit 107 receives encoded data encoded and output for each quantized value, rearranges them in bit plane units, and outputs the rearranged data. This is performed for each frequency component (subblock) described above.
[0068]
First, the encoded data generated by the Golomb Rice encoding unit is separated into a fixed length code portion and a variable length code portion determined by the value of the k parameter. In addition, the sign has a fixed negative bit of 1 bit.
[0069]
The scanning order is from important information. First, the negative bit is scanned for all quantized values in the sub-block. Next, the variable length code portion having the information of the upper bits of the quantized value is scanned in order from the upper bit plane. Finally, the fixed-length code portion is scanned in order from the upper bit plane. FIG. 7 shows the Golomb Rice code for each quantized value (however, the variable length code portion and the fixed length code portion are separated) and the scanning order.
[0070]
A little more detailed explanation is added about the scanning of the variable length code part. As the name of the variable-length code is not constant, it is not uniquely determined how to align the short code and the long code, but here the first bit of the variable-length code is on the same plane. It shall be arranged as follows. That is, the variable length codes are arranged in order from the top of the variable length code area in FIG. When the bit plane information is scanned in order from the upper bit, the information (code bit) is lost from the plane in the middle of the short code, so the code without information skips scanning. Therefore, the information to be scanned (code bits) decreases as the lower bit plane is reached.
[0071]
FIG. 8 shows an arrangement of bit information scanned in the above order (negative sign, variable length code, fixed length code).
[0072]
This bit plane scanning is performed in the order of LL, HL3, LH3, HH3, HL2, LH2, HH2, HL1, LH1, and HH1 in units of sub-blocks.
[0073]
The bit string output from the bit plane scanning unit is sequentially transferred by the next code output unit 109. The transfer partner may be a recording medium such as a hard disk or a DVD, or an interface such as the Internet, a general public line, or a wireless line.
[0074]
The encoded data generated in the above embodiment includes various information necessary for decoding, that is, the image size, the number of bits per pixel, the quantization step for each frequency component, the value of the k parameter, and the like. Appropriately added to the encoded data as attached information.
[0075]
[Second Embodiment]
A method slightly different from the coding parameter selection method in the first embodiment, that is, the k parameter generation method will be described with reference to FIG. Note that the same steps as those in FIG. 5 are added to the processing steps having the same role.
[0076]
In the second embodiment, the formula (6): Dp= Sp+ BpIs used. Therefore, processing is performed in step S903 instead of step S501 and step S903 instead of step S503.
[0077]
In step S901, the code amount S by the variable-length code unit.p(P = 0, 1, 2,..., M−1) and the number B of “1” in each bit plane Bp(P = 1, 2,..., M) is calculated. In step S903, D is calculated.i= Si+ BiCalculate
[0078]
S in step S901pAnd BpFIG. 10 shows an example of the calculation program (described in C language). Cumulative addition processing is performed on S0 and B1 in the first round of the do-while loop statement in the program, and cumulative addition processing is performed on Sp-1 and Bp in the pth round.
[0079]
The greatest feature of the second embodiment is DiIs calculated by the equation (6). S required for thatiAnd BiIs obtained in advance in step S901, and D is obtained in step S903.iCalculate Since other processes are the same as those in the first embodiment, description thereof will be omitted.
[0080]
[Third Embodiment]
In the third embodiment, the formula (5): Sp= 2 x Sp+ 1 + Bp + 1Use the relationship. That is, in the process of step S901 in the second embodiment, SpAnd BpThe part for calculating (p = 0, 1, 2,..., M) is replaced with the processing in steps S911 to S913 shown below.
[0081]
In step S911, Bp(P = 0, 1, 2,..., M) is calculated.
[0082]
In step S912, non-zero BpThe maximum value m of p is obtained.
[0083]
In step S913, Sm= 0 and Sp-1= 2 x Sp+ Bp(P = m, m−1, m−2,..., 1) is calculated.
[0084]
The other processes are the same as those in the second embodiment, and a description thereof will be omitted. The process of step S913 is referred to as “Sm-1= BmInitialized to Sp-1= 2 x Sp+ Bp(P = m−1, m−2,..., 1) is calculated. May be changed.
[0085]
[Fourth Embodiment]
In the fourth embodiment, the relationship of the above expression (6): Dp= Sp+ BpCan be easily derived from Dp≦ SpThis relationship is used. Dp≦ SpSp<N, DpIt can be said that <N.
[0086]
Therefore, as shown in the flowchart of FIG.iStep S1101 for checking whether or not the relationship <N is satisfied is provided before step S903 in FIG. 9 showing the second embodiment, and if the relationship is satisfied, step S903 and step S504 are passed.
[0087]
Note that this embodiment can also be applied to the first embodiment. In that case, step S1101 is provided before step S503 in FIG. 5, and if this relationship is established, step S503 and step S504 are passed.
[0088]
[Fifth Embodiment]
Another method different from the encoding parameter selection method in the first and second embodiments will be described.
[0089]
In this embodiment, the difference between Sp-2 and Sp having two different k parameter values, that is, DD.p= Sp-2-SpIs used.
[0090]
As already explained, DDpIs smaller than 2N, the variable length code amount becomes 2N-DD by changing the value of the k parameter from p to p-2.pTherefore, the value of the k parameter should be p-2 rather than p. Conversely, DDpIf ≧ 2N, it can be said that p is better for the value of the k parameter.
[0091]
Therefore, the DDpCan be used to update k-parameter candidate values at high speed by 2 units. A flowchart showing the processing method of this embodiment is shown in FIG. The same steps as those in FIG. 5 are added to the processing steps having the same role.
[0092]
In the present embodiment, steps S1201 to S1004 for performing another loop process are provided between step S502 and step S503 in FIG. 5 in the first embodiment.
[0093]
In step S1201, DD, which is the most characteristic feature of the present embodiment.i= Si-2-SiCalculate In step S1202, DDiAnd 2N are compared. In step S1203, i is updated by 2 units. In step S1204, it is determined whether i is 1 or less. The loop process in steps S1201 to S1204 is very similar to the loop process in steps S503 to S506 in the first embodiment.
[0094]
The difference is that the unit for updating i is 2. DD calculated in step S1201iIs compared with 2N in step S1202, and it is determined whether or not two i can be updated. If it can be updated, the value of i is updated by i = i−2 in step S1203.
[0095]
If i ≦ 1, step S1201 cannot be executed.-1If i ≦ 1 is detected in step S1204, the process proceeds to the next stage (step S503). If i> 1, the process returns to step S1201 to continue the loop process.
[0096]
When the loop processing is exited, the code amount does not decrease even if the k parameter is changed from i to i-2. However, if the k parameter is changed from i to i-1, the code amount may be reduced.
[0097]
Therefore, in order to check whether or not the k parameter can be changed from i to i-1, D is determined in step S503.i= Si-1-SiAnd D in step S504iCompare N with DiIf <N, i can be changed from i to i-1, so that the process proceeds to step S505. Otherwise, i is continued as it is, and the process proceeds to step S507 to set the value of i as the value of the k parameter.
[0098]
In this embodiment, i is first updated by 2 units.i-4-SiCan be updated in 4 units, and can be updated in another unit using other calculation formulas.
[0099]
When updating by 4 units, there are four possibilities of i to i-3 as the optimum k parameters when the first loop processing is exited. Therefore, in order to specify one of these four values in the next stage, it is possible to consider a processing method in which whether or not it can be updated in one unit is determined by a loop process at most three times and the value of i is updated.
[0100]
[Sixth Embodiment]
As a coding parameter selection method, a further different method is shown in FIG. 13 and described. Note that the same steps as those in FIG. 5 are added to the processing steps having the same role.
[0101]
In this embodiment, DiWithout using SNp= SpIt is characterized by using a value of + N (p = 0, 1, 2, 3,..., M).
[0102]
In step S1301, the SNpIn step S1302, S is calculated.i-1And SNiCompare
[0103]
Other processes are the same as those in the first embodiment.
[0104]
S calculated in step S501pA value SN obtained by adding N to the values (p = 0, 1, 2, 3,..., M)pIs calculated in step S1301, and i is initialized in step S502.
[0105]
Thereafter, in order to check whether or not i, which is a candidate value of the k parameter, can be updated to i-1, in step S1302, Si-1And SNiCompare Si-1<SNiIf so, the code amount is reduced, so that the process goes to step S506 to update i to i-1. Otherwise, the process returns to step S504, and the value of the k parameter is fixed to i.
[0106]
After i is changed to i-1, it is determined in step S506 whether i = 0. When i = 0, the value of i cannot be updated any more, so the loop process is exited and the process goes to step 504. Otherwise, the process returns to step S1302 and i update processing is continued.
[0107]
[Seventh Embodiment]
In all of the embodiments described so far, the initial value of the loop control variable i is set to m. In the present embodiment, the initial value of the control variable i is set to 0.
[0108]
Basically, the present embodiment is applicable to all the embodiments described so far. In particular, the present embodiment will be described based on FIG. 5 which is the first embodiment. This embodiment in which the initial value of i is 0 is shown in FIG.
[0109]
In the figure, in step S1402, an initial value 0 is set to i, and in step S1404, DiCompare N with DiIf> N, go to step S1405, otherwise go to step S1407. In step S1405, 1 is added to i, and the process returns to step S503.
[0110]
In step S1407, the value of the k parameter is determined to be i-1.
[0111]
In the present embodiment, Steps S501a and S506 for determining m, which are necessary in the previous embodiments, are no longer necessary.
[0112]
D as mentioned beforemSince ≦ N, the value of i increases to m or before that,iSince ≦ N, the branch destination in step S1404 is always step S1407, and the value of k is determined here.
[0113]
The reason why the value of the k parameter is set to i-1 instead of i in step S1407 is that the relationship at the time of branching from step S1404 to step S1407 is Di-1> N ≧ DiBecause. As described above, the optimal value of the k parameter in this relationship is i-1.
[0114]
The present embodiment can take the simplest processing form so far.
[0115]
[Eighth Embodiment]
In the present embodiment, the initial value of the control variable i is changed depending on the result of the comparison processing performed before that.
[0116]
The optimum value of the k parameter may exist near i = m or may exist near i = 0. It is reasonable to search from i = m for the former and from i = 0 for the latter.
[0117]
The determination must first be made before entering the loop process. D for h = floor {m / 2}hAnd DhAnd N are compared. DhIf <N, the process is performed with i set to 0; otherwise, the process is performed with i set to m. This is the outline of this embodiment.
[0118]
This embodiment is shown in FIG. 15 and will be described in more detail. In the figure, in step S1502, h = floor {m / 2} is calculated. In step S1503, D corresponding to the above h.hCalculate
[0119]
In step 1504, DhAnd N, and DhIf <N, the process branches to step S1402. Otherwise, the process branches to step S502.
[0120]
The other processing steps are the same as the same number processing steps in FIG. 5 or FIG.
[0121]
The processing after step S1402 is exactly the same as that of the seventh embodiment, but the processing after step S502 is basically the same as that of the first embodiment, but there are some differences. The difference is that there is no determination (corresponding to step S506) whether i has reached a predetermined value in the loop processing.
[0122]
The reason why there is no determination is that when the value of i is decreased by 1 from the initial value m and reaches the above h in the loop processing, the determination at step S504 exits the loop processing and branches to step S507 without fail. Because I know. This is obvious from the condition (Dh ≧ N) when branching from step S1504 to step S502.
[0123]
Similarly, the upper limit of the value of i when exiting the loop processing in steps S503, S1404, and S1405 is h. This can be seen from the condition (Dh <N) when branching from step S1504 to step S1402.
[0124]
In the present embodiment, the upper limit number of loop processes until the determination of the k parameter can be halved, so that the k parameter can be determined at a higher speed.
[0125]
Further, as an application of this embodiment, if the number of branches to the loop processing for determining the k parameter is increased, the upper limit number of loops of each loop processing can be further reduced, and the k parameter can be determined at a higher speed.
[0126]
[Ninth Embodiment]
In the initial value setting method as in the ninth embodiment, it is necessary to prepare two types of loop processing when the control variable i increases and loop processing when the control variable i decreases. Therefore, a processing form when the two loop processes are shared will be described with reference to FIG.
[0127]
In this embodiment, in step S1601, the initial value of i is set to h. In step 1602, it is determined whether i is equal to h. In step 1603, the initial value of i is reset to 0, and h is set to -1.
[0128]
The other processing steps are the same as those in the eighth embodiment: the same number processing step in FIG.
[0129]
H is calculated by the same calculation as in the eighth embodiment (step S1502), and in step S1601, the h is set to i. Next, the process proceeds to step S503, where Dh= Sh-1-ShCalculate In step S1404, DhIs greater than N. The processing so far is the same as in the eighth embodiment, although the structure of the flowchart is different.
[0130]
DhIf> N, i = h is set as an initial value, and the same processing as the loop processing when the control variable i increases is performed in steps S503, S1404, and S1405. Since the value of i when exiting the loop process passes through step S1405 (i = i + 1 is calculated) at least once, the value of i is larger than h, and through the determination of step S1602, k is determined in step S1407. The parameter value is determined as i-1.
[0131]
DhIf not> N, the process branches from the first time to step S1602. Since i = h at this time, the process branches to step S1603, the initial value of i is reset to 0, and h is set to -1. The reason for setting h to −1 is to set a value that i cannot take so that the determination in step 1602 for the second time is not caught (i = h is not satisfied).
[0132]
The processing after resetting initial values of i to 0 is completely the same as the loop processing in steps S503, S1404, and S1405 in the eighth embodiment, and the value of i when the loop processing is exited is the maximum. floor {m / 2}.
[0133]
Since the value of the variable h is set to -1 in step S1603, i = h is never satisfied in step S1602. Therefore, the process branches to step S1407, and the value of the k parameter is determined to be i-1. The
[0134]
Compared to the eighth embodiment, the overhead due to the common processing is that the determination processing in step S1602 required when resetting the initial value of i to 0 is 1/2 (initialization) Sometimes the probability of performing this determination process is about 1/2) and once when exiting the loop process (because this determination process cannot be avoided), the processing routine is compact. It seems that the merit of is greater.
[0135]
In addition, although the structure in each said embodiment shall be based on FIG. 1, the process of the same figure is realizable also with a program, for example. Since a device for inputting an image may be a network, a video camera, an image scanner, or a storage device (floppy, etc.), the present invention is, for example, a system or a general-purpose information processing apparatus (personal computer, etc.) having any of these. It can also be applied to.
[0136]
Accordingly, a storage medium (or recording medium) that records the program code of the software that implements the functions of the above-described embodiments is supplied to the system or apparatus, and the computer (or CPU or MPU) of the system or apparatus stores the storage medium. Needless to say, this can also be achieved by reading and executing the stored program code. In this case, the program code itself read from the storage medium realizes the functions of the above-described embodiments, and the storage medium storing the program code constitutes the present invention. Further, by executing the program code read by the computer, not only the functions of the above-described embodiments are realized, but also an operating system (OS) running on the computer based on the instruction of the program code. It goes without saying that a case where the function of the above-described embodiment is realized by performing part or all of the actual processing and the processing is included.
[0137]
Furthermore, after the program code read from the storage medium is written into a memory provided in a function expansion card inserted into the computer or a function expansion unit connected to the computer, the function is determined based on the instruction of the program code. It goes without saying that the CPU or the like provided in the expansion card or the function expansion unit performs part or all of the actual processing and the functions of the above-described embodiments are realized by the processing.
[0138]
As described above, according to the present embodiment, when a symbol is encoded with a variable-length code part and a fixed-length code part based on a certain parameter, the code amount of the variable-length code part for each value of the parameter It is now possible to evaluate only the difference value and determine the optimal parameter at high speed.
[0139]
【The invention's effect】
As described above, according to the present invention, it is possible to perform variable-length encoding of a multilevel image easily and at high speed.
[Brief description of the drawings]
FIG. 1 is a block configuration diagram of an apparatus according to an embodiment.
FIG. 2 is a diagram illustrating a state where a discrete wavelet transform is performed.
FIG. 3 is a diagram illustrating quantization steps used for frequency components (sub-blocks).
FIG. 4 is a diagram illustrating an example of a code obtained by performing Golomb Rice encoding.
FIG. 5 is a flowchart showing processing contents according to the first embodiment;
FIG. 6 is a diagram illustrating an example of a program that calculates a code amount Sp of a variable length code for each value of a k parameter.
FIG. 7 is a diagram representing a Golomb Rice encoded code in a bit plane.
FIG. 8 is a diagram illustrating a state of a bitstream that is finally output.
FIG. 9 is a flowchart showing processing contents according to the second embodiment;
FIG. 10 is a diagram illustrating a program for calculating both the code amount Sp and the number Bp of 1 in each bit plane.
FIG. 11 is a flowchart illustrating processing contents according to a fourth embodiment.
FIG. 12 is a flowchart illustrating processing contents according to a fifth embodiment.
FIG. 13 is a flowchart showing processing contents according to the sixth embodiment.
FIG. 14 is a flowchart showing processing contents according to a seventh embodiment;
FIG. 15 is a flowchart showing processing contents according to an eighth embodiment.
FIG. 16 is a flowchart showing processing contents according to the ninth embodiment;
[Explanation of symbols]
101 Image input unit
102 Data storage unit
103 Discrete wavelet transform unit
104 Coefficient quantization unit
105 Coding parameter selection unit
106 Golomb Rice Encoding Unit
107 bit plane scanning unit
108 buffers
109 Code output section

Claims (13)

符号化対象の所定単位のシンボル群を、あるパラメータに基づいて、前記シンボル群の内容と前記パラメータに依存して符号量が決まる可変長符号部分と、前記パラメータのみに依存して符号量が決まる固定長符号部分とで表わされる符号化データに符号化する符号化方法において、前記所定単位のシンボル群に対する符号量推定処理で得られる、各パラメータ対する前記可変長符号部分の符号量の差分値を評価することにより、前記所定単位のシンボル群に対する最小符号量となる前記パラメータの最適値を決定することを特徴とする符号化方法。 A symbol group of a predetermined unit to be encoded is determined based on a certain parameter , a variable length code portion whose code amount is determined depending on the contents of the symbol group and the parameter, and a code amount is determined only based on the parameter. in the coding method for coding the coded data represented by a fixed length code part, the resulting code amount estimation processing for symbol groups of a predetermined unit, the difference value of the code amount of the variable length code portion against the respective parameters And determining an optimum value of the parameter that is a minimum code amount for the symbol group of the predetermined unit . 前記可変長符号部分の符号量の差分値は、パラメータの値が1だけ異なる場合、あるいは、2以上異なる場合の差分値であることを特徴とする前記請求項1記載の符号化方法。  The encoding method according to claim 1, wherein the difference value of the code amount of the variable-length code portion is a difference value when the parameter value is different by 1 or when the parameter value is different by 2 or more. 前記可変長符号部分の符号量の差分値を計算する時に、符号化するシンボル群の各ビットプレーン中の1の個数を表わす情報を用いることを特徴とする前記請求項1記載の符号化方法。  2. The encoding method according to claim 1, wherein when the difference value of the code amount of the variable length code portion is calculated, information indicating the number of 1 in each bit plane of the symbol group to be encoded is used. 前記可変長符号部分の符号量の差分値をパラメータ値の昇順あるいは降順に並べた差分値列を、端から評価することを特徴とする前記請求項1記載の符号化方法。  The encoding method according to claim 1, wherein a difference value sequence in which difference values of code amounts of the variable-length code portions are arranged in ascending or descending order of parameter values is evaluated from the end. 前記可変長符号部分の符号量の差分値を、パラメータ値の昇順あるいは降順に並べた差分値列の途中の値を評価した結果に基づき、それ以降の評価順序を決定することを特徴とする前記請求項1記載の符号化方法。  The subsequent evaluation order is determined based on a result of evaluating a value in the middle of a difference value sequence in which the difference value of the code amount of the variable length code portion is arranged in ascending or descending order of parameter values. The encoding method according to claim 1. 符号化対象の所定単位のシンボル群を、あるパラメータに基づいて、前記シンボル群の内容と前記パラメータに依存して符号量が決まる可変長符号部分と、前記パラメータのみに依存して符号量が決まる固定長符号部分とで表わされる符号化データに符号化する符号化方法において、前記所定単位のシンボル群に対する符号量推定処理で得られる可変長符号部分の符号量に、前記所定単位のサイズに依存して決まる所定の値を加算した値を、隣接パラメータに従った可変長符号部分の符号量と比較することで、前記所定単位のシンボル群に対する最小符号量となる前記パラメータの最適値を決定することを特徴とする符号化方法。 A symbol group of a predetermined unit to be encoded is determined based on a certain parameter , a variable length code portion whose code amount is determined depending on the contents of the symbol group and the parameter, and a code amount is determined only based on the parameter. In an encoding method for encoding encoded data represented by a fixed-length code portion, the code amount of a variable-length code portion obtained by code amount estimation processing for the symbol unit of the predetermined unit depends on the size of the predetermined unit. The optimum value of the parameter that is the minimum code amount for the symbol group of the predetermined unit is determined by comparing the value obtained by adding the predetermined value determined in this way with the code amount of the variable length code portion according to the adjacent parameter. An encoding method characterized by the above. 符号化対象の所定単位のシンボル群を、あるパラメータに基づいて、前記シンボル分の内容と前記パラメータに依存して決まる可変長符号部分と、前記パラメータのみに依存して符号量が決まる固定長符号部分とで表わされる符号化データに符号化する符号化装置において、前記所定単位のシンボル群に対する符号量推定処理で得られる、各パラメータ対する前記可変長符号部分の符号量の差分値を計算する手段と、該差分値を前記所定単位のサイズに依存して決まる所定値と比較する手段と、該比較結果に基づいて前記所定単位のシンボル群に対する最小符号量となる前記パラメータの最適値を決定する手段とを有することを特徴とする符号化装置。Based on a certain parameter , a symbol group of a predetermined unit to be encoded, a variable-length code portion determined depending on the content of the symbol and the parameter, and a fixed-length code whose code amount is determined only based on the parameter in the encoding apparatus for encoding in the encoded data represented by a portion obtained by the code amount estimation processing for symbol group of the predetermined unit, calculates a difference value of the code amount of the variable length code portion against the respective parameters Means for comparing the difference value with a predetermined value determined depending on the size of the predetermined unit, and determining an optimum value of the parameter that is a minimum code amount for the symbol group of the predetermined unit based on the comparison result And a coding device. 前記可変長符号部分の符号量の差分値は、パラメータの値が1だけ異なる場合、あるいは、2以上異なる場合の差分値であることを特徴とする前記第7項記載の符号化装置。  8. The encoding apparatus according to claim 7, wherein the difference value of the code amount of the variable length code portion is a difference value when the parameter value is different by 1 or by two or more. 前記可変長符号部分の符号量の差分値を計算する手段は、符号化するシンボル群の各ビットプレーン中の1の個数を計数する手段を併せ持つことを特徴とする前記第7項記載の符号化装置。  8. The encoding according to claim 7, wherein the means for calculating the difference value of the code amount of the variable length code portion further includes means for counting the number of 1 in each bit plane of the symbol group to be encoded. apparatus. 前記可変長符号部分の符号量の差分値をパラメータ値の昇順あるいは降順に並べた差分値列を、端から所定値と順次比較する手段を有することを特徴とする前記第7項記載の符号化装置。  8. The encoding according to claim 7, further comprising means for sequentially comparing a difference value sequence in which the difference value of the code amount of the variable length code portion is arranged in ascending or descending order of the parameter value with a predetermined value from the end. apparatus. 前記可変長符号部分の符号量の差分値をパラメータ値の昇順あるいは降順に並べた差分値列の途中の値を所定値と比較する手段と、該比較結果に基づき、それ以降の比較順序を制御する手段と、該制御手段のもとで比較を行なう手段とを有することを特徴とする前記第7項記載の符号化装置。  Means for comparing the difference values of the code amount of the variable length code portion in the ascending order or descending order of the parameter values with a predetermined value, and controlling the subsequent comparison order based on the comparison result The encoding apparatus according to claim 7, further comprising means for performing comparison and means for performing comparison under the control means. 符号化対象の所定単位のシンボル群を、あるパラメータに基づいて、前記シンボル群の内容と前記パラメータに依存して符号量が決まる可変長符号部分と、前記パラメータのみに依存して符号量が決まる固定長符号部分とで表わされる符号化データに符号化する符号化装置において、各パラメータに基づいて、前記所定単位のシンボル群に対する符号量推定処理で得られる、可変長符号部分の符号量を計算する手段と、各パラメータ毎の計算して得られた符号量に、前記所定単位のサイズに依存して決まる所定の値を加算する手段と、加算して得られた値を隣接パラメータに従った可変長符号部分の符号量と比較する比較手段と、該比較結果に基づいて、前記所定単位のシンボル群に対する最小符号量となる前記パラメータの最適値を決定する手段とを有することを特徴とする符号化装置。 A symbol group of a predetermined unit to be encoded is determined based on a certain parameter , a variable length code portion whose code amount is determined depending on the contents of the symbol group and the parameter, and a code amount is determined only based on the parameter. In the encoding device that encodes the encoded data represented by the fixed-length code portion, the code amount of the variable-length code portion obtained by the code amount estimation process for the symbol group of the predetermined unit is calculated based on each parameter. Means for adding a predetermined value determined depending on the size of the predetermined unit to the code amount obtained by calculation for each parameter , and the value obtained by the addition according to the adjacent parameter comparing means for comparing the code amount of the variable length code portion, based on the comparison result, to determine the optimum value of the parameter having the minimum code amount for symbol group of said predetermined unit Encoding apparatus characterized by a means. コンピュータを、請求項6又は12に記載の符号化装置として機能させるコンピュータプログラムを格納したことを特徴とするコンピュータ読取り可能な記憶媒体。 A computer-readable storage medium storing a computer program for causing a computer to function as the encoding device according to claim 6 or 12 .
JP21271399A 1999-07-27 1999-07-27 Encoding apparatus and method, and storage medium Expired - Fee Related JP4181699B2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP21271399A JP4181699B2 (en) 1999-07-27 1999-07-27 Encoding apparatus and method, and storage medium
US09/618,461 US6865299B1 (en) 1999-07-27 2000-07-18 Coding apparatus and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21271399A JP4181699B2 (en) 1999-07-27 1999-07-27 Encoding apparatus and method, and storage medium

Publications (2)

Publication Number Publication Date
JP2001044848A JP2001044848A (en) 2001-02-16
JP4181699B2 true JP4181699B2 (en) 2008-11-19

Family

ID=16627205

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21271399A Expired - Fee Related JP4181699B2 (en) 1999-07-27 1999-07-27 Encoding apparatus and method, and storage medium

Country Status (1)

Country Link
JP (1) JP4181699B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4732203B2 (en) * 2006-03-17 2011-07-27 キヤノン株式会社 Image encoding apparatus, decoding apparatus, control method therefor, computer program, and computer-readable storage medium
CN107071420B (en) 2012-04-13 2021-07-16 佳能株式会社 Method, apparatus and system for encoding and decoding a subset of transform units of video data

Also Published As

Publication number Publication date
JP2001044848A (en) 2001-02-16

Similar Documents

Publication Publication Date Title
US5680129A (en) System and method for lossless image compression
US6711295B2 (en) Encoding apparatus and method, and storage medium
US6665444B1 (en) Image processing apparatus and method, and storage medium
JP4365957B2 (en) Image processing method and apparatus and storage medium
US6847735B2 (en) Image processing system, image processing apparatus, image input apparatus, image output apparatus and method, and storage medium
US6909811B1 (en) Image processing apparatus and method and storage medium storing steps realizing such method
US6567562B1 (en) Encoding apparatus and method
JP2000069292A (en) Image processing unit, its method and storage medium
US20080089413A1 (en) Moving Image Encoding Apparatus And Moving Image Encoding Method
JPH0927912A (en) Coder, coding method and method for utilizing embeded code stream
US7203371B2 (en) Tarp filter
US7551788B2 (en) Digital image coding device and method for noise removal using wavelet transforms
JP2002540711A (en) Lossless adaptive coding of finite alphabet data
JP4181699B2 (en) Encoding apparatus and method, and storage medium
JP2002064821A (en) Method for compressing dynamic image information and its system
JP4054430B2 (en) Image processing apparatus and method, and storage medium
JP4086424B2 (en) Encoder
JP2002247375A (en) Image coder and method thereof, program code and memory medium
JP2002077920A (en) Picture compressing apparatus and method therefor
JP2000022960A (en) Device and method for image processing and storage medium
JP2001258033A (en) Coder and method for image data, and storage medium
JP5078199B2 (en) Image encoding apparatus and method, program code, and storage medium
JP2001298623A (en) Encoder and encoding method
JP4743884B2 (en) Image coding apparatus and control method thereof
JP2001298739A (en) Coder and its method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060718

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20060718

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080404

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080731

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20080807

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: 20080822

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080901

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: 20110905

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110905

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120905

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130905

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees