JP2009017232A - 算術符号化装置及び画像符号化装置 - Google Patents
算術符号化装置及び画像符号化装置 Download PDFInfo
- Publication number
- JP2009017232A JP2009017232A JP2007176630A JP2007176630A JP2009017232A JP 2009017232 A JP2009017232 A JP 2009017232A JP 2007176630 A JP2007176630 A JP 2007176630A JP 2007176630 A JP2007176630 A JP 2007176630A JP 2009017232 A JP2009017232 A JP 2009017232A
- Authority
- JP
- Japan
- Prior art keywords
- code
- arithmetic
- length
- partial
- arithmetic code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
【課題】高速に算術符号を得る。
【解決手段】入力2値信号及びその発生確率の情報に対応した算術符号をその一部からなる部分算術符号と同一論理値が連続する挿入符号とに分け、前記部分算術符号及びその符号長並びに前記挿入符号の符号長に関する情報を保持するテーブルを用いて、前記入力2値信号及びその発生確率の情報から前記部分算術符号及びその符号長並びに前記挿入符号の符号長を求める算術符号テーブルブロック21と、前記算術符号テーブルブロックからの前記部分算術符号及びその符号長並びに前記挿入符号の符号長を用いて、前記算術符号を生成する算術符号連接部22とを具備したことを特徴とする。
【選択図】図1
【解決手段】入力2値信号及びその発生確率の情報に対応した算術符号をその一部からなる部分算術符号と同一論理値が連続する挿入符号とに分け、前記部分算術符号及びその符号長並びに前記挿入符号の符号長に関する情報を保持するテーブルを用いて、前記入力2値信号及びその発生確率の情報から前記部分算術符号及びその符号長並びに前記挿入符号の符号長を求める算術符号テーブルブロック21と、前記算術符号テーブルブロックからの前記部分算術符号及びその符号長並びに前記挿入符号の符号長を用いて、前記算術符号を生成する算術符号連接部22とを具備したことを特徴とする。
【選択図】図1
Description
本発明は、画像信号の符号化処理に好適な算術符号化装置及び画像符号化装置に関する。
近年、画像処理のディジタル化が普及している。ディジタル化された画像データは、符号量を削減するために、H.264、AVC規格等の動画像符号化方法を採用して符号化後に伝送や記録が行われることが多い。
H.264規格等においては、エントロピー符号化として定常的な信号を理論限界まで圧縮することができる算術符号化が採用されている。ここで、定常的な信号とは、確率的な性質が変化しないような信号のことで、例えば0、1の発生確率が半々であったとしたら、最後まで半々の確率で発生するような性質をもつ信号のことである。
H.264において採用されている算術符号化方式は、圧縮率が高いCABACと呼ばれる手法である。CABAC符号化では、マクロブロックの画素情報等を可変長符号化した2値信号列(binVal列)に対して、各2値信号(binVal)の発生確率を推定して算術符号化を行う。binValの発生確率は、その符号化の対象となるマクロブロックの周囲に隣接するマクロブロックの符号化情報を参照することで求められる。CABAC符号化は、符号化を各binVal1ビットずつ順番に行う必要があり、しかも各binVal1ビット毎の処理が複雑である。
即ち、CABAC符号化装置においては、2値信号列の各binValが“0”であるか“1”であるかの発生確率を推定し、入力された2値信号列に対して各binValの発生確率から2値信号列が得られる最終的な発生確率を求めて、符号化出力とするものである。各binValの発生確率が既知であれば、復号時において、最終的な発生確率から入力2値信号列を求めることができる。
このようなCABAC符号化を行うためには、発生確率の最小値0と最大値1との間のいずれの位置に発生確率が存在するかを、その下限値(以下、codILowともいう)と下限値から上限値までの区間長(以下、codIRangeともいう)とを用いて、各binVal毎に求めればよい。このようなCABAC符号化装置については、特許文献1に開示されたものがある。
ところで、発生確率は0〜1の範囲であり、入力2値化信号列のビット数が増えると、区間長の桁数が増大し、レジスタに区間長を保持することができなくなってしまう。そこで、入力2値信号列の全てに対して順次求めて得た最終的な区間から出力ビットを得るのではなく、最終的な区間の位置を表す上位側のビットが確定する毎に、順次ビットを出力する処理を行う。例えば、最終的な区間が0.5〜1の範囲になることが確定した場合には、0.5を示す小数点以下第1桁目の2進数“1”を出力する。そして、0.5〜1の区間を0〜1の区間に拡大して処理を繰返す。このような再正規化処理及び出力処理によって、比較的小さい容量のレジスタを用いて算術符号化が可能である。
このようなCABAC符号化処理は、ソフトウェア処理によって行われる。H.264規格においては、CABAC符号化を行うための3つの処理フロー、即ち、入力binvalに対してcodILow及びcodIRangeを算出する処理であるEncodeDecision、再正規化処理ループであるRenorm及び出力処理ループであるPutBitについて詳述されている。
EncodeDecisionでは、各入力binvalに対してcodILow及びcodIRangeを求めて、再正規化処理及び出力処理を呼び出すようになっている。これらの再正規化処理及び出力処理は、区間の位置によっては、複数回繰り返されることがある。また、再正規化処理は、出力処理を伴うこと無く複数回繰返されることがあり、この場合には、再正規化処理後において1ループで1ビットずつ出力する出力処理も再正規化処理回数だけ繰り返される。
codILowを10ビットとし、codIRangeを9ビットとすると、1binValに対する再正規化処理(Renorm)のループは最大8回となる。また、再正規化のループ処理は次のbinvalに繰り越すことができることから、所定の1binValに対する出力処理は、理論的には、処理が初期化されるスライスの範囲に応じた回数だけ繰返される可能性がある。
このように、1ビットのbinValを算術符号化するためには、多くの処理サイクル数が必要となる。H.264/AVCにおいて高解像度の画像を高ビットレート(例えば30Mbps)でCABAC符号化する場合には、CABAC符号化装置に入力されるbinVal数は1フレームで40〜50Mbinとなり、1binValに多くの処理サイクル数を要する上述したフローを採用するとリアルタイム処理が困難となるという問題があった。
特開2007−74648号公報
本発明は、比較的処理能力が低速であっても高速に算術符号化処理を行うことができる算術符号化装置及び画像符号化装置を提供することを目的とする。
本発明の一態様に係る算術符号化装置は、入力2値信号及びその発生確率の情報に対応した算術符号をその一部からなる部分算術符号と同一論理値が連続する挿入符号とに分け、前記部分算術符号及びその符号長並びに前記挿入符号の符号長に関する情報を保持するテーブルを用いて、前記入力2値信号及びその発生確率の情報から前記部分算術符号及びその符号長並びに前記挿入符号の符号長を求める算術符号テーブルブロックと、前記算術符号テーブルブロックからの前記部分算術符号及びその符号長並びに前記挿入符号の符号長を用いて、前記算術符号を生成する算術符号連接部とを具備したことを特徴とする。
本発明によれば、比較的処理能力が低速であっても高速に算術符号化処理を行うことができるという効果を有する。
以下、図面を参照して本発明の実施の形態について詳細に説明する。図1は本発明の第1の実施の形態に係る算術符号化装置を示すブロック図である。また、図2は図1の算術符号化装置が組込まれた画像符号化装置を示すブロック図である。
上述したように、CABAC符号は、入力binvalに対して求めたcodILow及びcodIRangeについて、再正規化処理(Renorm)及び出力処理(PutBit)を実行することによって求められる。即ち、codILow及びcodIRangeに対して出力のCABAC符号が一義的に決定される。そこで、codILow及びcodIRangeに対する符号化出力を記述したテーブルを用いることで、高速にCABAC符号化を行うことが考えられる。
しかしながら、1ループで1ビットのデータが出力される出力処理は、理論的にはスライスの範囲に応じた回数だけ繰返されることがある。このため、所定のbinValに対する最初の出力処理において例えば32ビットのビット数が発生することもあり、再正規化処理のループ数を考慮すると、1binValに対して例えば50ビットの出力が発生する可能性がある。このような出力の全てを考慮したテーブルは、極めて膨大なテーブルとなり、大きなメモリ容量と大きな占有面積を必要とし、このようなテーブルを用いたCABAC符号化では、1binValに対する処理に長時間を要してしまう。
そこで、本実施の形態においては、1ビットのbinValから生成される算術符号を、後述するように、挿入符号と部分算術符号とに分割し、挿入符号長に関するデータ及び部分算術符号長のデータと部分算術符号とをテーブルに保持して読み出すことにより、少ないメモリ容量のテーブルで構成可能とすると共に、高速な符号化処理を可能にしている。
図2において、コンテキストインデックス導出部11には、2値信号列(binVal列)が入力される。このbinVal列は、例えば、H.264規格の量子化出力であるシンタックス要素に基づいて得られた可変長の2値のシンボル列である。コンテキストインデックス導出部11は、2値信号(binVal)が入力されると、図示しないメモリに保持されている周囲のマクロブロック情報を参照してコンテキストインデックス(以下、ctxIdxともいう)を算出して、binVal及びctxIdxを出力する。
統計的には、binValは、シンタックスの種類に応じた発生確率を有する。binValの発生確率は、発生確率が高いシンボル(以下、MPS:Most Probable Symbolともいう)とその発生確率テーブルの番号である確率状態インデックス(以下、pStateIdxともいう)とによって指定することができる。確率状態導出部12は、図示しないメモリに、発生確率が高いシンボルの値(valMPS)とpStateIdxとを保持する。
pStateIdxはシンタックスの種類に応じた領域を有し、この領域はコンテキストインデックスによって指定することができる。確率状態導出部12は、binVal及びctxIdxを用いて、pStateIdx及びvalMPS(高発生確率シンボルの値)を読み出す。確率状態導出部12はbinVal、pStateIdx及びvalMPSを算術符号化部14に出力するようになっている。
算術符号化部14は、binVal、pStateIdx及びvalMPSが入力されると、これらを用いて算術符号を生成して出力する。確率状態更新部13は、算術符号化部14によって生成された算術符号が入力され、確率状態導出部12から入力されたbinVal、pStateIdx、valMPSを、生成された算術符号に基づいて更新して、更新したpStateIdx及びvalMPSを確率状態導出部12に戻して、記憶させるようになっている。
図1は算術符号化部14の具体的な構成を示している。先ず、算術符号化部14について説明する前に、図3乃至図7を参照して、H.264規格において規定されたCABAC符号化の3つの処理フロー及び出力ビットについて説明する。図3乃至図5は夫々CABAC符号化におけるEncodeDecision処理フロー、再正規化(Renorm)処理フロー及び出力(Putbit)処理フロー(H.264/AVC規格書のFig9-7,9-8,9-9)を示している。また、図6はcodIRange及びcodILowを説明するための説明図である。
<EncodeDecision>
上述したように、算術符号は、codIRange、codILowを用いたループ処理によって求められる。EncodeDecisionにおいては、入力binVal毎にcodIRange、codILowを求める。図6は、縦軸がbinValの発生確率に対応しており、連続して入力された2つのbinValによる発生確率の変化を示している。図6は、MPSのbinValに続いて発生確率が低いシンボル(以下、LPS:Least Probable Symbolともいう)のbinValが入力された例を示しており、斜線によってcodIRangeの変化を示している。なお、図6の左側のbinVal入力によるcodILowは0.0であるものとする。
上述したように、算術符号は、codIRange、codILowを用いたループ処理によって求められる。EncodeDecisionにおいては、入力binVal毎にcodIRange、codILowを求める。図6は、縦軸がbinValの発生確率に対応しており、連続して入力された2つのbinValによる発生確率の変化を示している。図6は、MPSのbinValに続いて発生確率が低いシンボル(以下、LPS:Least Probable Symbolともいう)のbinValが入力された例を示しており、斜線によってcodIRangeの変化を示している。なお、図6の左側のbinVal入力によるcodILowは0.0であるものとする。
図6の右側のLPSについてのbinVal及びpStateIdxが入力されると、図3のステップS1においては、先ず、1つ前のEncodeDecisionにおいて正規化されたcodIRangeを用いて、qCodIRangeIdxを求める。次に、入力されたpStateIdxとqcodIRangeIdxとを用いて、確率と区間長とに基づくテーブルから、LPSによる区間長(以下、codIRangeLPSともいう)を求める。
なお、MPSのbinValが入力された場合には、区間長(codIRange)は、図6に示すように、前のcodIRangeからcodIRangeLPSを減算することによって求められる(ステップS1)。
ステップS2では、binValがMPSでないか否かが判定される。LPSである場合には、処理をステップS3に移行して、codILow及びcodIRangeが求められる。codILowは図6から明らかなように、元のcodILowとMPS時のcodIRangeとの和で求められる。また、codIRangeはcodIRangeLPSである。なお、binValがMPSの場合には、ステップS1で求めたcodIRangeをそのまま用いることができ、codILowは前binVal入力時から変化しておらず同じである。
次のステップS4では、pStateIdxが0であるか否かが判定される。 pStateIdxが0の場合には、ステップS5においてMPSとLPSを反転させ、ステップS6において、pStateIdxをLPS時のテーブルに基づいて更新する。なお、ステップS2で、入力binValがMPSと判定された場合には、ステップS7において、pStateIdxをMPS時のテーブルに基づいて更新する。なお、ステップS6,S7の処理は、上述したように、確率状態更新部13において行われる。
次のステップS8において、再正規化(Renorm)処理が行われ、ステップS9において変数symCntをインクリメントする。
<Renorm>
再正規化処理においては、算出されたcodIRange、codILowを用いて算術符号を求める。図4に示すように、先ず、codIRangeが0x100よりも小さいか否かが判定される(ステップS11)。codIRangeの初期値(最大値)は、0x1FEであり、ステップS11ではcodIRangeがcodIRangeの最大値の1/2よりも小さいか否かが判定される。小さい場合には、再正規化処理が可能であり、処理をステップS12に移行する。codIRangeがcodIRangeの最大値の1/2よりも大きい場合には、再正規化処理は不能であり、処理をEncodeDecisionに戻す。
再正規化処理においては、算出されたcodIRange、codILowを用いて算術符号を求める。図4に示すように、先ず、codIRangeが0x100よりも小さいか否かが判定される(ステップS11)。codIRangeの初期値(最大値)は、0x1FEであり、ステップS11ではcodIRangeがcodIRangeの最大値の1/2よりも小さいか否かが判定される。小さい場合には、再正規化処理が可能であり、処理をステップS12に移行する。codIRangeがcodIRangeの最大値の1/2よりも大きい場合には、再正規化処理は不能であり、処理をEncodeDecisionに戻す。
次のステップS12においては、codILowが0x100よりも小さいか否かが判定される。codILowが0x100よりも小さい場合には、処理をステップS13に移行してPutBit処理(PutBit(0))が行われる。ステップS13のPutBit(0)では図5のBとして“0”が設定される。
一方、ステップS12において、codILowが0x100以上の場合には、処理がステップS14に移行する。ステップS14では、codILowが0x200以上であるか否かが判定される。codILowが0x200以上である場合には、処理をステップS15に移行してcodILowを0x200だけ小さな値としてPutBit処理(PutBit(1))を行う(ステップS16)。なお、この場合のPutBit(1)は、図5のBとして“1”が設定される。codILowが0x200よりも小さい場合には、処理をステップS17に移行してcodILowを0x100だけ小さな値とし、変数bitsOutstandingをインクリメントする。なお、bitsOutstandingの初期値は0である。
ステップS18においては、codIRange及びcodILowを上位ビット側に1ビットシフトする。即ち、codIRange,codILowを2倍する再正規化を行う。
<PutBit>
出力処理においては、ステップS21において、firstBitFlagが0でないか否かが判定される。firstBitFlagは初期値が1であり、初期状態では処理がステップS22に移行して、firstBitFlagに0がセットされる。初期状態以外では、処理がステップS23に移行して、1ビットのBが出力される。即ち、図4のステップS13のPutBit(0)では“0”が出力され、ステップS16のPutBit(1)では“1”が出力される。
出力処理においては、ステップS21において、firstBitFlagが0でないか否かが判定される。firstBitFlagは初期値が1であり、初期状態では処理がステップS22に移行して、firstBitFlagに0がセットされる。初期状態以外では、処理がステップS23に移行して、1ビットのBが出力される。即ち、図4のステップS13のPutBit(0)では“0”が出力され、ステップS16のPutBit(1)では“1”が出力される。
次のステップS24では、bitsOutstandingが0よりも大きいか否かが判定される。図4のステップS17の処理が1回以上行われている場合には、bitsOutstandingは1以上であり、次のステップS25において、1−Bを1ビット出力する。即ち、PutBit(0)では“1”が出力され、PutBit(1)では“0”が出力される。次のステップS26では、bitsOutstandingが1減算される。
即ち、firstBitFlagが1の初期状態以外では、PutBit処理においては、先ず、Bが1ビット出力され、次にbitsOutstandingの数のビット数だけ、Bの反転ビットが出力されることになる。
図7は図3乃至図5のフローに基づく算術符号化の処理サイクルを示す説明図である。
図7は一連のbinVal列のうちの所定の連続した3つのbinVal m〜m+2に対する算術符号化処理を示している。図7の塗り潰しはbinValの入力からEncodeDecisionまでの処理を示している。各binVal入力後の最初の1サイクルで、図3のEncodeDecisionが実施されて、codIRange及びcodILowが決定される。図7の斜線で囲った1つの枠は、図4のRenorm処理の1ループを示している。また、白地の枠はPutBit処理の1ループを示しており、数字によって出力ビットが“0”であるか“1”であるかを示している。1binValに対するrenorm処理の最大回数は8回であり、図7の例ではbinVal mに対して最大回数のrenormが実施されたことを示している。なお、図7はfirstBitFlagが初期状態でない例である。
binVal m+1の入力時には、4回のrenorm処理が行われている。1〜3回目のrenorm処理は、出力ビットが発生していないことから、図4のステップS17においてbitsOutstandingがインクリメントされたことを示している。binVal m+1の入力時の4回目のrenorm処理は、次にrenorm処理が行われていないので、ステップS11の判定からEncodeDecisionに処理を戻したことを示している。従って、binVal m+2の入力時点において、bitsOutstandingは3となっている。
binVal m+2入力時の1回目のrenorm処理において、出力処理が行われている。即ち、この1回目のrenorm処理によって、図4のステップS13のPutBit(0)がコールされ、図5のステップS23において“0”が1ビット出力され、次いでステップS25において、“0”がbitsOutstanding数(この場合には上述したように3)のビット数だけ出力される。
また、binVal m入力時には、2回目のrenorm処理において、PutBit(1)が発生したことを示している。このPutBit処理において“0”が5ビット出力されていることから、この2回目のrenorm処理の前までのrenorm処理において、bitsOutstandingが5になっていることが分かる。
図7の例では、binVal mの入力に対して、20サイクルで11ビットが出力され、次のbinVal m+1の入力に対して、5サイクルで処理が行われ、次のbinVal m+2の入力に対して、8サイクルで4ビットが出力されている。上述したように、renorm処理はスライス単位で初期化されることから、bitsOutstandingによる出力ビット数は32ビット程度になることもある。
即ち、各binVal入力に対して、出力ビット数が大きくなり、出力に要するサイクル数が大きくなるのは、前binVal入力に対する処理で発生したbitsOutstandingが順次繰り越されたことによる影響が大きい。そこで、本実施の形態においては、このように繰り越されたbitsOutstandingによる最初の出力処理時には、1ビットのビットBに続けてbitsOutstanding数だけビットBの反転ビットが出力されることを利用して、そのbitsOutstanding数を挿入符号長として求めるようになっている。
図8は本実施の形態における算術符号化の方法を説明するための説明図である。本実施の形態においては、少なくとも図4及び図5のrenorm処理及びPutBit処理は採用しない。
図8の上欄は上述した図3乃至図5のフローにより得られる算術符号の一例を示している。図8の例は1ビットのbinVal入力に対する算術符号を示している。
図8の例では、入力binVal入力に対して、“10000000101000”が得られるものとしている。本実施の形態においては、各binVal入力に対する最初の出力ビットBに続く、bitsOutstandingによる反転ビット(以下、挿入符号ともいう)の数を挿入符号長とする。図8の例では、挿入符号長は6である。そして、出力すべき算術符号から挿入符号を除く符号を部分算術符号とする。図8の例では部分算術符号は、“10101000”である。また、部分算術符号のビット数を部分算術符号長とする。図8の例では部分算術符号長は8である。
本実施の形態においては、算術符号化部14は算術テーブルブロック21を有しており、算術テーブルブロック21は、入力されたbinValに対して挿入符号長、部分算術符号及び部分算出符号長を求めるようになっている。
図9は図1中の算術テーブルブロック21の具体的な構成を示すブロック図である。
確率状態導出部12からのpStateIdxは、算術テーブルブロック21内のcodIRange計算部30に与えられる。また、確率状態導出部12からのbinVal及びvalMPSは、算術テーブルブロック21内のcodIRange計算部30及びcodILow計算部31の両方に与えられる。codIRange計算部30及びcodILow計算部31は、codIRange及びcodILowを算出して、夫々codIRange更新テーブル32及びcodILow更新テーブル33に与える。codIRange更新テーブル32及びcodILow更新テーブル33は、更新されたcodIRange及びcodILowを保持し、次回のbinVal入力時のcodIRange,codILowの算出に用いるために、夫々バッファ34,35に出力する。
codIRange計算部30及びcodILow計算部31には、バッファ34,35から前binVal入力時に求めたcodIRange及びcodILowも与えられる。codIRange計算部30及びcodILow計算部31は、図3と同様のフローによって、入力されたpStateIdx、binVal及びvalMPSを用いて、新たなcodIRange及びcodILowを算出する。
なお、codIRange計算部30及びcodILow計算部31は、図3のフローと同様の手法によってcodIRange及びcodILowを求めればよく、図3の処理をソフトウェアによって実行するマイクロコンピュータによって構成することができる。
codIRange計算部30及びcodILow計算部31からのcodIRange及びcodILowは、部分算術符号テーブル36,部分算術符号長テーブル37及び挿入符号長計算部38に与えられる。上述したように、codIRange及びcodILowに対して算術符号は一義的に決定される。また、算術符号に対して、図8に示すように、部分算術符号、部分算術符号長及び挿入符号長も一義的に決定される。部分算術符号テーブル36はこのような部分算術符号を格納し、部分算術符号長テーブル37は部分算術符号長を格納している。また、挿入符号長計算部38は挿入符号長テーブル39を有しており、挿入符号長テーブル39は、bitsOutstanding数を格納している。
CABAC符号化においては、部分算術符号長の最大値は例えば8である。従って、部分算術符号テーブル36としては8ビットの出力が得られるものを採用すればよい。また、部分算術符号長を保持する部分算術符号長テーブル37としては、3ビット又は4ビット程度の出力が得られるものを採用すればよい。また、CABAC符号化においては、挿入符号長のビット数は例えば19ビットであり、挿入符号長テーブル39としては、19ビットの出力が得られるものを採用すればよい。
部分算術符号テーブル36は、入力されたcodIRange及びcodILowに対応する部分算術符号を出力する。部分算術符号長テーブル37は、入力されたcodIRange及びcodILowに対応する部分算術符号長を出力する。
また、挿入符号長計算部38は、入力されたcodIRange及びcodILowに対応するbitsOutstanding数を挿入符号長テーブル39から読み出す。挿入符号長は、各binVal入力に対する最初の出力処理時のbitsOutstanding数である。挿入符号長計算部38は、各binVal入力に対する処理終了時点のbitsOutstanding数を繰り越し挿入符号長としてバッファ40に出力する。挿入符号長計算部38はバッファ40から繰り越し挿入符号長を読み出し、各binVal入力に対する最初の出力処理時に挿入符号長テーブル39から読み出したbitsOutstanding数と繰り越し挿入符号長とを加算して、挿入符号長として出力する。
部分算術符号テーブル36、部分算術符号長テーブル37及び挿入符号長計算部38は、各テーブル36,37,39の出力ビット数が比較的少ないので、高速に、部分算術符号、部分算術符号長及び挿入符号長を出力することができる。また、各テーブル36,37,39を比較的小さい容量で構成することができ、占有面積も小さい。
算術テーブルブロック21からの部分算術符号、部分算術符号長及び挿入符号長は、算術符号連接部22に与えられる。算術符号連接部22は入力された部分算術符号、部分算術符号長及び挿入符号長から算術符号を生成して出力する。
図10は算術符号連接部22の具体的な構成を示すブロック図である。
算術テーブルブロック21からの部分算術符号長は算術符号連接部22の部分算術符号シフト部41に与えられ、部分算術符号及び挿入符号長は、部分算術符号シフト部41及び挿入符号生成部42の両方に与えられる。部分算術符号シフト部41は、入力された算術符号の後方の(部分算術符号長−1)ビットを挿入符号長だけ後方側にシフトして、部分算術符号長+挿入符号長のビット数の符号を符号生成部43に出力する。即ち、部分算術符号シフト部41の出力は、2ビット目から挿入符号長だけ不定ビットとなる。
挿入符号生成部42は、部分算術符号の先頭ビットの反転ビットを挿入符号長のビット数生成する。挿入符号生成部42の出力は挿入符号として符号生成部43に与えられる。符号生成部43は、部分算術符号シフト部41の出力の不定ビットを挿入符号に置き換えて算術符号を生成するようになっている。
なお、算術符号連接部22は、例えば、上述した不定ビットを全て“0” にし、符号生成部43において、部分算術符号シフト部41の出力と挿入符号とのOR演算によって、算術符号を生成してもよい。
次に、このように構成された実施の形態の動作について図11のタイミングチャートを参照して説明する。図11は一連のbinVal列のうち図7と同一の算術符号に変換される連続した3つのbinVal m〜m+2に対する算術符号化処理を示している。図11の塗り潰しはbinVal入力からEncodeDecisionまでの処理を示し、斜線は部分算術符号等の生成処理を示し、無地の枠は符号連接処理を示している。
図2のコンテキストインデックス導出部11にbinVal mが入力されると、コンテキストインデックス導出部11はbinVal mに対応したctxIdxを導出する。確率状態導出部12は、ctxIdxを用いてbinVal mに対するpStateIdx及びvalMPSを導出して、算術符号化部14に供給する。算術符号化部14は、算術テーブルブロック21内のcodIRange計算部30及びcodILow計算部31において、codIRange及びcodILowを算出する。
binVal mの入力からbinVal mに対するcodIRange及びcodILowの導出までの処理(EncodeDecisionまでの処理)が、図11に示す塗り潰し期間に行われる。図11に示すように、binVal mの入力からEncodeDecisionまでの処理に要する時間は、1サイクル期間である。
次の1サイクル期間には、図11に示すように、部分算術符号、部分算術符号長及び挿入符号長が求められる。部分算術符号、部分算術符号長及びbitsOutstanding数は、テーブル36,37,39から求めることができ、挿入符号長はbitsOutstanding数から簡単に求めることができる。テーブル36,37,39の出力ビット数は十分に小さく、部分算術符号、部分算術符号長及び挿入符号長の算出は、例えば1サイクル等の極めて短時間に行うことができる。
図7の例に対応させると、binVal mに対する2サイクル目の処理によって、部分算術符号テーブル36から部分算術符号として、“101100”が出力され、部分算術符号長テーブル37から部分算術符号長として6が出力され、挿入符号長算出部3から挿入符号長として5が出力される。
これらの部分算術符号、部分算術符号長及び挿入符号長は、次の3サイクル目において算術符号連接部22に供給されて、算術符号が得られる。即ち、算術符号連接部22の部分算術符号シフト部41は、部分算術符号の2ビット目以降のビットを挿入符号長だけシフトする。これにより、“1×××××01100”が得られる。なお、×は不定ビットを表す。また、算術符号連接部22の挿入符号生成部42は、部分算術符号の先頭ビットの反転ビットを挿入符号長だけ配列した挿入符号“00000”を出力する。符号生成部43は、入力された不定ビットを挿入符号に置き換えて、“10000001100”の算術符号を出力する。算術符号連接部22におけるこれらの処理は1サイクルで行われる。
こうして、本実施の形態においては、binVal mについての算術符号化処理は3サイクルで行われる。同様に、各binValについても、binVal入力から算術符号出力までは、夫々3サイクルで実行される。なお、binVal m+1の入力時においては出力ビットは発生しない。また、入力からEncodeDecisionまでの処理、部分算術符号等の生成処理及び符号連接処理は、相互に独立して行うことができるので、図11に示すように、これらの処理を並行して実行することにより、3サイクル目以降については毎サイクル、各binVal入力に対する算術符号を出力することができる。
このように本実施の形態においては、codIRange及びcodILowに基づいて得られる算術符号を、部分算術符号と挿入符号とに分けてテーブルを用いて算術符号を求める。この場合において、挿入符号についてはその符号長に関連するbitsOutstanding数をテーブルに格納する。これにより、算術符号への変換に必要な部分算術符号、部分算術符号長及び挿入符号長のビット数を十分に低減して、これらのデータを保持するテーブルからのデータの読出しを高速にしている。これにより、binValから算術符号への変換を極めて高速に行うことができる。
例えば、クロック周波数が266MHz、ゲート長65nmのASIC(Application Specific Integrated Circuit)を用いると、1サイクル/1binValのスループットでの算術符号化が可能である。
図12は本発明の第2の実施の形態を示すブロック図である。図12において図1と同一の構成要素には同一符号を付して説明を省略する。
本実施の形態は算術符号化部14に代えて算術符号化部51を採用した点が第1の実施の形態と異なる。算術符号化部51は、算術テーブルブロック21と算術符号連接部22との間にFIFO23を設けた点が算術符号化部14と異なる。FIFO23は、算術テーブルブロック21から出力される部分算術符号、部分算術符号長及び挿入符号長を保持し、入力順に算術符号連接部22に順次出力するようになっている。
次に、このように構成された実施の形態の動作について図13及び図14のタイミングチャートを参照して説明する。
図11の例では、binVal m入力に対する処理において、11ビットの算術符号が出力される。しかし、算術符号の出力にはビット幅の制限がある場合がある。この場合には、1サイクルにおいて制限されたビット幅しか出力することはできない。図13は、第1の実施の形態において、算術符号の出力にビット幅の制限がある場合の処理サイクルを示すタイミングチャートである。図12の例はビット幅の制限が8ビットの例を示している。図13の3番目のサイクルにおいては、出力する算術符号の“10000001100”のうち、先頭8ビットの“10000001”のみが出力され、次の4番目のサイクルにおいて残りの3ビットの“100”が出力される。
即ち、この場合に、1binVal入力に対して出力に2サイクルを要する。このため、次のbinVal m+1の入力に対する部分算術符号等の生成処理に、1サイクル分のストールが生じている。
本実施の形態においては、算術テーブルブロック21からの部分算術符号、部分算術符号長及び挿入符号長は、FIFO23に蓄えられながら、入力順に順次算術符号連接部22に与えられる。図14の2サイクル目のbinVal mに対する部分算術符号等の生成処理によって生成された部分算術符号、部分算術符号長及び挿入符号長は、FIFO23を介して算術符号連接部22に与えられる。FIFO23は算術符号連接部22において連接処理される算術符号のビット数がビット幅の制限よりも大きい場合には、制限を超えたビット数については、次のサイクルまで保持して算術符号連接部22に出力する。
これにより、binVal入力からEncodeDecisionまでの処理、部分算術符号生成処理及び符号連接処理の間にストールが生じることなく、1binValに対する出力を毎サイクル連続的に出力することができる。
このように本実施の形態においては、第1の実施の形態と同様の効果が得られると共に、出力ビット幅が制限される場合においても、FIFOによって算術符号の発生と出力の差を吸収することで、、ストールの発生を低減させてスループットを向上させることができる。
11…コンテキストインデックス導出部、12…確率状態導出部、13…確率状態更新部、14…算術符号化部、21…算術テーブルブロック、22…算術符号連接部。
Claims (5)
- 入力2値信号及びその発生確率の情報に対応した算術符号をその一部からなる部分算術符号と同一論理値が連続する挿入符号とに分け、前記部分算術符号及びその符号長並びに前記挿入符号の符号長に関する情報を保持するテーブルを用いて、前記入力2値信号及びその発生確率の情報から前記部分算術符号及びその符号長並びに前記挿入符号の符号長を求める算術符号テーブルブロックと、
前記算術符号テーブルブロックからの前記部分算術符号及びその符号長並びに前記挿入符号の符号長を用いて、前記算術符号を生成する算術符号連接部とを具備したことを特徴とする算術符号化装置。 - 前記算術符号テーブルブロックからの前記部分算術符号及びその符号長並びに前記挿入符号の符号長を保持して前記算術符号連接部に与えるメモリを具備したことを特徴とする請求項1に記載の算術符号化装置。
- 前記算術符号テーブルブロックは、前記入力2値信号及びその発生確率に基づいて前記各入力2値信号の発生確率の存在範囲を示す区間長とその存在範囲の下限値とを求める第1の処理を具備し、
前記テーブルは、前記区間長及び下限値に対する前記部分算術符号及びその符号長並びに前記挿入符号の符号長に関する情報を保持することを特徴とする請求項1又は2のいずれか一方に記載の算術符号化装置。 - 前記算術符号テーブルブロックは、前記第1の処理と前記部分算術符号及びその符号長並びに前記挿入符号の符号長に関する情報を得る第2の処理とを夫々1サイクルで実行し、
前記算術符号連接テーブルは、前記部分算術符号及びその符号長並びに前記挿入符号の符号長を用いて前記算術符号を生成する第3の処理を1サイクルで実行することを特徴とする請求項3に記載の算術符号化装置。 - 請求項1に記載の算術符号化装置と、
入力画像信号を予測符号化して前記算術符号化装置に与える予測符号化手段とを具備したことを特徴とする画像符号化装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007176630A JP2009017232A (ja) | 2007-07-04 | 2007-07-04 | 算術符号化装置及び画像符号化装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007176630A JP2009017232A (ja) | 2007-07-04 | 2007-07-04 | 算術符号化装置及び画像符号化装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009017232A true JP2009017232A (ja) | 2009-01-22 |
Family
ID=40357570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007176630A Pending JP2009017232A (ja) | 2007-07-04 | 2007-07-04 | 算術符号化装置及び画像符号化装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009017232A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017511997A (ja) * | 2014-02-20 | 2017-04-27 | グルロジック マイクロシステムズ オーワイGurulogic Microsystems Oy | データのソース符号化及び復号の装置及びその方法 |
WO2019214140A1 (zh) * | 2018-05-11 | 2019-11-14 | 深圳市华星光电技术有限公司 | 编码方法、设备及可读存储介质 |
-
2007
- 2007-07-04 JP JP2007176630A patent/JP2009017232A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017511997A (ja) * | 2014-02-20 | 2017-04-27 | グルロジック マイクロシステムズ オーワイGurulogic Microsystems Oy | データのソース符号化及び復号の装置及びその方法 |
WO2019214140A1 (zh) * | 2018-05-11 | 2019-11-14 | 深圳市华星光电技术有限公司 | 编码方法、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7817864B2 (en) | Coding apparatus and decoding apparatus | |
US7385535B2 (en) | Decoding system and method based on context-based adaptive binary arithmetic coding | |
KR100975062B1 (ko) | 가변길이 부호화 장치 및 가변길이 부호화 방법 | |
KR101208233B1 (ko) | 중간 형식으로 변환하는 2단계 산술 복호 | |
US7573951B2 (en) | Binary arithmetic decoding apparatus and methods using a pipelined structure | |
US8711019B1 (en) | Context-based adaptive binary arithmetic coding engine | |
KR0180169B1 (ko) | 가변길이 부호기 | |
US20140286417A1 (en) | Data encoding and decoding | |
US20100054328A1 (en) | Encoding apparatus and control method thereof | |
KR20060064008A (ko) | 산술부호의 복호기 또는 부호화기와 역2치화 변환기 또는2치화 변환기의 사이에 중간 버퍼가 삽입된 복호장치 또는부호화 장치 | |
WO1996031008A1 (en) | Syntax based arithmetic coding circuit | |
US20060126743A1 (en) | Variable length code decoder and decoding method for variable length codes | |
JP4181887B2 (ja) | 可変長符号化装置、及びその方法 | |
JP2009021775A (ja) | 符号化装置及び符号化方法 | |
JP2009017232A (ja) | 算術符号化装置及び画像符号化装置 | |
JP2007074337A (ja) | 符号化装置及び符号化方法 | |
KR0154011B1 (ko) | 가변길이 복호화 장치 | |
KR100207428B1 (ko) | 허프만 코드 변환에 적응적인 고속 가변장 복호화 장치 및 방법 | |
JP2007074648A (ja) | Cabac復号化装置 | |
JP2003174365A (ja) | 復号化装置及びその方法 | |
KR100195715B1 (ko) | 가변 길이 복호기 | |
JP2934603B2 (ja) | 可変長さコードの復号化方法及びその装置 | |
KR100195717B1 (ko) | 가변 길이 복호기 | |
JPH0936749A (ja) | 符号化復号化装置およびこれに用いられる符号化方法 | |
JP5075135B2 (ja) | 復号装置及びその制御方法 |