JP5632328B2 - 符号量予測装置及びプログラム - Google Patents
符号量予測装置及びプログラム Download PDFInfo
- Publication number
- JP5632328B2 JP5632328B2 JP2011104452A JP2011104452A JP5632328B2 JP 5632328 B2 JP5632328 B2 JP 5632328B2 JP 2011104452 A JP2011104452 A JP 2011104452A JP 2011104452 A JP2011104452 A JP 2011104452A JP 5632328 B2 JP5632328 B2 JP 5632328B2
- Authority
- JP
- Japan
- Prior art keywords
- code amount
- value
- symbol
- binary
- binary symbol
- 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.)
- Active
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
デジタル放送やDVD(Digital Versatile Disc)への動画の記録などの高画質(高ビットレート)用途に対し、MPEG−2符号化方式が、また携帯電話におけるテレビ視聴などの低画質(低ビットレート)用途はMPEG−4符号化方式が広く用いられている。
また、最近では、ITU−Tと、ISO(International Organization for Standardization)/IEC(International Electrotechnical Commission)JTC(Joint Technical Committee )とが共同で標準化を行ったH.264/AVC(Advanced Video Coding)符号化方式が、高画質と高圧縮率とを両立する新たな符号化方式として注目を集めている。
図示しない映像符号化器の前段部において、画像予測処理、直交変換、量子化などを経て、マクロブロックのスライス・ヘッダ情報(モード情報や動き情報)や量子化された変換係数情報である輝度・色差レベル情報等をシンタックスエレメント(シンタックス要素)とする多値シンボルが生成される。この生成された多値シンボルが、前段部から映像符号化器に供給され、算術符号化処理が行われる。
このとき、2値化処理部21は、多値データを構成するシンタックスエレメントを判別し、データの確率特性によりユーナリーバイナライゼーションや固定長バイナライゼーションのテーブルを用い、多値シンボルを2値シンボルの列、すなわちビン系列に変換する。
このとき、2値化処理部21の処理は、多値シンボル毎に対して原理的に独立に行うことができ、複数の多値シンボルの各々の2値化処理を並列に行うことも可能である。
算術符号化処理部3は、H.264/AVC符号化方式標準における算術符号化として、バイパス符号化を行うバイパスコーダ34と、レギュラー符号化を行うレギュラーコーダ33とを有している。いずれのコーダを選択するかはH.264/AVC符号化方式標準で定められている。
このとき、バイパスコーダ34は、2値シンボルのビン系列と同一長のビット数からなる符号化ストリームを、算術符号化処理の結果として出力する。すなわち、1 ビン=1ビットの関係が成り立つ。
コンテキスト演算部31は、レギュラーコーダ33において算術符号化処理を行うにあたり、ビン系列を構成するそれぞれのビンについて、2値シンボル0および1がどのような確率で発生するか、その発生確率を算出するとともに、この発生確率の値を更新してゆく役割を持つ。すなわち、コンテキスト演算部31は、レギュラーコーダ33において算術符号化処理が行われる毎に、ビン系列を構成するそれぞれのビンの発生確率を算出するとともに、この発生確率の値を更新する処理を行う。
このレギュラーコーダ33は、周知技術としての算術符号化の処理として、数直線上の0から1までの有限精度の範囲に、2値シンボル0または1の発生確率に対応する幅に分割区間を設定し、実際に発生した2値シンボルに対応する区間を新たな区間として、算術符号化の進行に伴い分割区間をさらに分割して狭めていく。
H.264/AVC符号化方式標準においては、この分割区間の長さがcodIRange値で管理されており、256から510までの値をとり、算術符号化を開始する際の初期値は510である。
レギュラーコーダ33は、内部の記憶部に現在の分割区間の長さを示すcodIRange値を保持している。
レギュラーコーダ33は、この分割区間の割り振りを、2値シンボルと共に供給された発生確率を示す値pStateIdxと、valMPS値とにより、H.264/AVC符号化方式標準で定められたテーブルを用いて、このテーブルに記載されている規則により実施する。
発生確率を示す値pStateIdxが0の場合、0と1とがほぼ50%の確率で発生することを意味しており、発生確率を示す値pStateIdxが大きければ大きいほど、valMPS値で示されるシンボルが発生しやすくなることを示している。
次に、レギュラーコーダ33は、入力された2値シンボル(ビン)に対応する分割区間として、上記のいずれかの分割区間を選択する。
そして、レギュラーコーダ33は、選択した分割区間に基づいて、codIRange値を狭める処理を行う。
すなわち、コンテキスト演算部31は、valMPS値で示されたものと同一の2値シンボルが符号化された場合、H.264/AVC符号化方式標準で定められた方法により従い、pStateIdxの値を上昇させる。この処理は、valMPS値として示されている、発生確率の高い方の2値シンボルの発生確率が高くなったことを、pStateIdxに反映させるために行われる。
また、コンテキスト演算部31は、発生確率を示す値pStateIdxが0となった後、valMPS値の示す2値シンボルと異なる2値シンボルが発生した場合、valMPS値の示す2値シンボルの入れ替え、例えば1であると0とし、逆に0であると1に変更する。
そして、映像符号化器は、実際に符号化処理結果として出力された符号化ストリームの量であるビット数を監視し、符号化ストリームの発生符号量が目標発生符号量を超える場合、マクロブロック予測残差を量子化する際の量子化ステップ(QP値)を大きくする。
上述した理由から、供給される動画像(映像)の符号化単位のデータ、算術符号化により実時間で符号化するリアルタイム符号化器の場合、画質制御及びビットレート制御等の安定性を実現するため、符号化を行った結果として、実際に出力される符号化ストリームの発生符号量をなるべく早く得て、量子化ステップ(QP値)の加減により符号量を調整するフィードバックをなるべく早く行うことが望ましい。
この算術符号化処理は、供給される2値シンボル(ビン)を用い、順次符号化ストリームを生成するため、処理自体を並列に行うことができない。
この逐次処理により、中間バッファ22において、2値化処理部21からの2値シンボルの待ち行列が生じることなり、リノーマライゼーション処理後の符号化ストリームの出力の遅延が大きくなる現象が発生する。
このように、発生符号量の確定が遅れている間にも、算術符号化以前の符号化処理は実時間で継続して行われるため、結果として発生符号量の大小を量子化ステップの制御に反映するタイミングが遅れる、すなわち符号量制御のフィードバックループ遅延が長くなることで、発生符号量の制御が不安定となってしまう。
したがって、発生符号量の制御を安定させるため、算術符号化処理後の発生符号量を、算術符号化処理の前に予測する手段が必要となる。
また、符号化処理の前に発生符号量を推定する方法として、関数を用いてマクロブロックから得られる予測残差により、発生符号量を予測する手法も開示されている(例えば、特許文献2参照)。
すなわち、2値シンボルを符号化ストリームとした際の発生符号量は、2値シンボル量や予測残差の影響もあるが、実質的に符号化対象である画像の性質によって異なるため、2値シンボル量や予測残差からでは単純に発生符号量を予測することができない。
このため、量子化ステップを変更するフィードバック情報として用いても、発生符号量を精度良く制御することができず、かつ画質を安定化させることもできない。
号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、前記2値シンボルが算術符号化処理される際、前記2値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる2値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を2分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記2値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められることを特徴とする。
量を加算して、加算結果を前記2値シンボル列の算術符号化された発生符号量の予測値として出力する手段として機能させ、前記第1符号量テーブル及び前記第2符号量テーブルに記憶されている前記予測符号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、前記2値シンボルが算術符号化処理される際、前記2値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる2値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を2分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記2値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められているプログラムである。
以下、図面を参照して、本発明の第1の実施形態について説明する。図1は、この発明の第1の実施形態による符号量予測装置を用いた映像符号化装置(CABAC符号化器)の構成例を示す概略ブロック図である。同図において、図10の各部に対応する部分には同一の符号を付け、その説明を省略する。
図1における映像符号化装置には、図10の2値化処理部21、中間バッファ22、算術符号化処理部3に加えて、符号量予測部1が設けられている。本願実施形態においては、図10の従来の映像符号化装置と異なる構成がこの符号量予測部1であり、以下、この符号化予測部1について、詳細に説明する。
コンテキスト演算部11は、コンテキスト演算部31と同様に、それぞれの2値シンボル(ビン)に対して、対応するコンテキスト値CtxIdxをテーブル引きの見出しとして、コンテキスト状態保持バッファ12から2値シンボル(ビン)のvalMPS値とpStateIdx値を読み出すとともに、実際に発生した2値シンボル(ビン)に対応したvalMPS値とpStateIdx値の更新処理を行い、コンテキスト状態保持バッファ12に上書きして更新する。ここで、コンテキスト状態保持バッファ12は、コンテキスト状態保持バッファ32と同様の構成をしている。また、valMPS値とpStateIdx値の読み出しおよび更新処理も、背景技術等において従前に説明した通りである。
符号量加算部16は、コンテキスト演算部11が出力したテーブル参照情報13に応じて、符号量テーブル14から読み出された予測符号量15を、符号量加算部16に対して出力する。符号量テーブル14に格納されている予測符号量15を予め生成する方法については後述する。
符号量加算部16は、入力されるビット符号量を累算し、合計予測符号量17として出力する。
擬似コードにおける整数(int)rangeが、レギュラーコーダ33の動作説明における分割区間の長さを示すcodIRangeに相当している。
また、update_range(range,bin[i])関数が、レギュラーレコーダ33において行われる算術符号化処理自体に相当し、ビン系列bin[i]の先頭のビン(2値シンボル)から符号化処理を順次行う。
コンピュータは、bin[i]から2値シンボルを順次読み出す。また、それぞれの2値シンボル(ビン)に対応するCtxIdx値により、コンテキスト状態保持バッファからpStateIdx値及びvalMPS値を読み出して取得するが、この処理は本説明の中心事項ではないため、図2の擬似コードでは省略している。
取得した後、コンピュータは、この読み出した2値シンボル(ビン)と、取得したpStateIdx値及びvalMPSとにより、update_range(range,bin[i])関数によるrangeの再分割を行う。
次に、コンピュータは、図2のリストに記載されたwhile文の処理において、コンテキスト演算部31が行うリノーマライゼーションと同様の処理を行う。
このとき、コンピュータは、符号化ストリームのビット数を求めるため、ビットシフトを行う毎に、ビット出力に対応したnr_outbitsのインクリメント(++nr_outbits)を行う。これにより、1つのビンを算術符号化した際に出力される符号化ビットのビット数を求めることができる。
そして、for(int i;i<nr_bin;++i){}により、1つのビン系列の算出符号化処理における符号化ストリームのビット数を求めることができる。
すなわち、bin[i]を符号化する際のrange値がわからなければ、算術符号化を行うことができない。
ここで、bin[i]で発生する符号量を、range値が分からない状態でも、何らかの形で予想したいと考える。このとき、rangeの値が256、257から510まで確率的に均一に分布しているとの前提が成り立つとする。そのうえで、rangeの値が256の場合、257の場合から510の場合それぞれについて、update_range()処理およびリノーマライゼーション処理を行ってnr_outbitsの値を求め、その平均値をとる。するとこの平均値は、range値が分からない状態において、bin[i]を算術符号化した際に発生する符号量の期待値(すなわち、統計的手法によって求められた期待値)を示していることになる。
このため、すべての2値シンボル(ビン)に対して発生符号量の予測を可能とするためには、すべてのpStateIdx値及びvalMPS値の組み合わせに対して、上記の平均値を算出しておけば、発生符号量の予測が可能となる。
図3は、図1の映像符号化装置における予測値の算出処理の動作例を示すプログラムの概念図である。すなわち、図3は、符号量テーブル14に格納する、2値シンボル毎の予測符号量を事前生成する処理例を示すコードを示す図である。
この図3において、update_range_and_renormlize(assumed_range)の関数は、図2における2値シンボルの算術符号化処理を行うupdate_range(range,bin[i])の関数と、リノーマライゼーションを行うwhile文とをまとめた関数である。
次に、コンピュータは、rangeが256から510の場合の全てのビット積算値の合計であるsum_of_nr_outbitsを255で除算し、rangeが256から510の範囲内における255個種類のrangeでの平均値を算出し、予測符号量として出力する。
また、2値シンボルが0及び1の各々の場合についても算出する。
そして、コンピュータは、pStateIdx値及びvalMPS値の組合せの全てにおいて、pStateIdx値及びvalMPS値の組合せと、対応する予測ビット量とを対応付けて、符号量テーブル14に書き込む。
また、図3においては、記載されているrangeが256から510までの範囲におけるビット積算値の合計値の平均を求めているが、rangeの範囲を256から511までの256個とし、平均値を求める演算を256で除算することとし、除算を右へ8ビット分シフトさせるシフト演算のみで構成しても良い。
ここで、H.264/AVC符号化標準においては、valMPS値と、2値シンボルとが同一か否かにより、算術符号化処理が行われる。
したがって、符号量テーブル14は、pStateIdx値と判定データとの組合せと、この組合せに対応した予測符号量とが対応付けて記憶された構成として生成される。
このとき、コンピュータは、符号量テーブル14に書き込む予測ビット量を計算する際、pStateIdx値毎に、valMPS値と算術符号化する2値シンボルとが同一の場合、及び異なる場合の各々で予測符号量を算出する。
例えば、コンピュータは、valMPS値が0であるとし、2値シンボルが0である(同一)場合と、2値シンボルが1である(非同一)場合、とにおいて、算術符号化を行い、予測符号量を算出する。
そして、コンピュータは、pStateIdx値と、同一及び非同一のいずれかを示す判定信号との組合せに関連づけて、予測符号量を符号量テーブル14に書き込む。
コンテキスト演算部11は、中間バッファ22からビン系列bin[i]の2値シンボルを順次読み込み、内部に記憶する。
このとき、符号量加算部16は、内部に積算結果として記憶している合計予測符号量を0に初期化する。
そして、コンテキスト演算部11は、ビン系列bin[i]の先頭の2値シンボル(ビン)から順次、当該の2値シンボル(ビン)に対応するコンテキスト値CtxIdxにより、コンテキスト状態保持バッファ12からvalMPS値を読み出し、この読み出したvalMPS値と、当該の2値シンボル(ビン)が等しいか否かの判定を行い、この判定結果により判定データを生成する。
これにより、符号量テーブル14は、入力されるテーブル参照情報13により、このテーブル参照情報13に対応して記憶されている予測符号量を読み出し、符号量加算部16へ出力する。
予測符号量が入力されると、符号量加算部16は、内部に記憶されている合計予測符号量に対し、入力された予測符号量を加算し、予測符号量の積算を行う。
そして、符号量加算部16は、終了信号が入力されると、符号化ストリームの発生符号量の予測値として、終了信号の入力時点における合計予測符号量を、発生符号量の予測結果として出力する。
また、本実施形態においては、符号予測部1内においてコンテキスト演算部11、コンテキスト状態保持バッファ12を複数有し、複数のビン系列の符号量の算出を同時に並列に行う構成としてもよいし、複数の符号予測部1を並列に設け、複数のビン系列の符号量の算出を同時に並列に行う構成としてもよい。
ここで、中間バッファ22に対し、すなわちビン系列の入力に対して、コンテキスト演算部11を並列に設ける、または符号化予測部1を並列に設ける構成としてもよい。この構成によれば、複数のビン系列の予測符号量の算出を並列に行うことができる。
以下、図面を参照して、本発明の第2の実施形態について説明する。図4は、この発明の第2の実施形態による符号量予測装置を用いた映像符号化装置(CABAC符号化器)の構成例を示す概略ブロック図である。同図において、図1の第1の実施形態の各部に対応する部分には同一の符号を付け、その説明を省略する。
図4における映像符号化装置には、図10の2値化処理部21、中間バッファ22、算術符号化処理部3に加えて、第1の実施形態と同様に、符号量予測部1が設けられている。本願実施形態においては、図10の従来の映像符号化装置と異なる構成がこの符号量予測部1であり、以下、この符号化予測部1の第1の実施形態と異なる点について、詳細に説明する。
また、第1の実施形態と異なる点は、符号量テーブル14が、符号量Aテーブル14aと符号量Bテーブル14bとから構成されていることである。この符号量Aテーブル14aは、第1の実施形態で記載した符号量テーブル14と同様な構成である。一方、符号量Bテーブル14bは、第2の実施形態において、後述するように、予測符号量、valMPS値及びpStateId値のみでなく、実際に発生した2値シンボル(ビン)に対応したvalMPS値とpStateId値との更新値(発生確率更新情報14c)が記憶された構成であり、符号量テーブル14に対して新たに付加された符号量テーブルである。
この符号量Bテーブル14bは、テーブル参照情報13がテーブル引きの見出し、すなわち検索キーとして供給されると、予測符号量15をコンテキスト演算部11に対して出力するとともに、発生確率更新情報14cをコンテキスト演算部11に戻す機能が新たに設けられている。すなわち、コンテキスト演算部11は、符号量Bテーブル14bの構成については後述する。
一方、コンテキスト演算部11は、ビン系列を構成する複数のビンが連続して同一のCtxidx値に対応しているビン系列の場合には、符号量Bテーブル14bを用いて、予測符号量を求めるとともに、valMPS値とpStateId値とを読み出し、コンテキスト状態保持バッファ12の更新処理を行う。
したがって、コンテキスト演算部11は、ビン系列を構成する複数個のビンにおいて同一のCtxidx値に対応しているビンが2個以上連続しているか否かの検出を行い、ビン系列のビンの各々が異なるCtxidx値である場合、符号量Aテーブル14aを用い、一方、2個以上の複数のビンが同一のCtxidx値に対応している場合、符号量Bテーブル14bを用いる。
すなわち、コンテキスト演算部11は、自身内部に設定されているビン系列を構成する複数のビンが同一であるCtxidx値と、符号化対象のビン系列のCtxidx値とが一致する場合、ビン系列を構成する連続する複数のビンが同一のCtxidx値に対応していると判定し、一方、符号化対象のビン系列のCtxidx値とが一致しない場合、ビン系列のビンの各々が異なるCtxidx値と判定する。
そして、コンテキスト演算部11は、実際に発生した2値シンボル(ビン)に対応したvalMPS値とpStateIdx値とを求める更新処理を行い、コンテキスト状態保持バッファ12に上書きして更新する。
また、コンテキスト演算部11は、符号量テーブル参照情報13を符号量Aテーブル14aに出力する。この符号量テーブル参照情報13に含まれる情報は、コンテキスト状態保持バッファ12から読み出した前述のvalMPS値、pStateIdx値、および、符号化対象となる2値シンボル(ビン)である。
符号量加算部16は、読み込んだ予測符号量であるビット符号量をビン系列毎に累算し、合計予測符号量17として出力する。
この図2において、擬似コードにおける整数(int)rangeが、レギュラーコーダ33の動作説明における分割区間の長さを示すcodIRangeに相当している。
また、update_range(range,bin[i])関数が、レギュラーレコーダ33において行われる算術符号化処理自体に相当し、ビン系列bin[i]の先頭のビン(2値シンボル)から符号化処理を順次行う。
コンピュータは、bin[i]から2値シンボルを順次読み出す。また、それぞれの2値シンボル(ビン)に対応するCtxIdx値により、コンテキスト状態保持バッファからpStateIdx値及びvalMPS値を読み出して取得するが、この処理は本説明の中心事項ではないため、図2の擬似コードでは省略している。
取得した後、コンピュータは、この読み出した2値シンボル(ビン)と、取得したpStateIdx値及びvalMPSとにより、update_range(range,bin[i])関数によるrangeの再分割を行う。
次に、コンピュータは、図2のリストに記載されたwhile文の処理において、コンテキスト演算部31が行うリノーマライゼーションと同様の処理を行う。
このとき、コンピュータは、符号化ストリームのビット数を求めるため、ビットシフトを行う毎に、ビット出力に対応したnr_outbitsのインクリメント(++nr_outbits)を行う。これにより、1つのビンを算術符号化した際に出力される符号化ビットのビット数を求めることができる。
そして、for(int i;i<nr_bin;++i){ }により、1つのビン系列の算出符号化処理における符号化ストリームのビット数を求めることができる。
このとき、H.264/AVC符号化方式でのcodIRange値にあたるrange値が、256の場合、257の場合、…、510の場合のすべてについて、コンピュータは、実際の算術符号化処理にあたるupdate_range_and_renormalize();関数を実行する。
そして、コンピュータは、発生した符号量の総計sum_of_nr_outbitsの平均を求めることにより、当該のpStateIdx値、valMPS値および符号化対象2値シンボル(ビン)の組合せに対する予測符号量とする。図5は、pStateIdx値、valMPS値および符号化対象2値シンボル(ビン)のデータの組み合わせと、この組み合わせから求められた予測符号量とを対応付けた予測符号量テーブルを示している。
実際には、第1の実施形態において述べたように、H.264/AVC符号化標準においては、valMPS値と、符号化対象2値シンボルとが同一か否かをパラメータとして算術符号化処理が行われている。
このため、valMPS値と、符号化対象2値シンボルの2つは、「valMPS値と符号化対象2値シンボルが同一か否か」を示す情報として1つに集約することができ、実際の符号量Aテーブル14aは図6に示すような構成とし、図5と比較して行数を1/2に削減することができる。
したがって、コンテキスト演算部11は、ビン系列を構成する複数のビンが同一のCtxIdx値となっていない場合、符号量Aテーブル14aを参照するため、テーブル参照情報13として、pStateIdx値と、valMPS値と符号化対象2値シンボルが同一か否かを示す値の2つの情報を出力する。
まず、コンテキスト演算部11は、コンテキスト値CtxIdxをテーブル引きの見出しとして、コンテキスト状態保持バッファ12から2値シンボル(ビン)の発生確率であるvalMPS値とpStateIdx値を読み出す。
このコンテキスト状態保持バッファ12から、コンテキスト演算部11により読み出されたvalMPS値とpStateIdx値は、同一のCtxIdx値に対応する連続した2値シンボル(ビン)を有するビン系列を算術符号化するにあたっての初期値に相当する。
その上で、コンテキスト演算部11は、どのコンテキスト値CtxIdxのビン系列の予測を今から行うかの種別情報(すなわち、CtxIdx値そのもの)、このvalMPS値とpStateIdx値tの初期値、および、同一のCtxIdx値に属する2値シンボル(ビン)が連続しているビン系列(後述するビン系列の種類)の合計4つの情報をテーブル参照情報13として、符号量Bテーブル14bに出力する。
しかしながら、第2の実施形態の場合には、同一のCtxIdx値に属する連続した複数の2値シンボル(ビン)からなるビン系列の符号量予測値、また更新に用いるvalMPS値及びpStateIdx値を一括して出力するところが第1の実施形態と異なる。
符号量Bテーブル14bは、このテーブル参照情報13をもとに内部のテーブル参照を行う。符号量Bテーブル14bの構成の詳細については後述する。
ここで、符号量Bテーブル14bから出力される予測符号量15は、ビン系列における上述した同一のCtxIdx値に属する連続した2値シンボル(ビン)全てを符号化した際に発生するであろう符号量予測値である。
この符号量予測値の事前の生成方法の詳細については後述する。また、符号量加算部16以降の処理は、第1の実施形態の場合と同様のため説明を省略する。
この発生確率更新情報14cは、すでに述べたvalMPS値とpStateIdx値を初期値とし、ビン系列における同一のCtxIdx値に属する連続した2値シンボル(ビン)すべてを符号化した際に得られる符号化後のvalMPS値とpStateIdx値を示すものである。この発生確率更新情報14cの事前生成方法についても、後に詳細に説明する。
そして、コンテキスト演算部11は、自分自身ではvalMPS値とpStateIdx値の更新処理を行わず、発生確率更新情報14cにより得られたvalMPS値とpStateIdx値をコンテキスト状態保持バッファ12に上書きして更新する。
H.264/AVCのイントラ符号化において、ビン系列を構成する複数のビンが同一のCtxIdx値に対応しているようなビン系列が発生するのは、mb_qp_delta(CtxIdx値=63)、coeff_abs_level_minus1(CtxIdx値=232、233など)、intra_chroma_pred_mode(CtxIdx値=67)、rem_intra8x8_pred_mode(CtxIdx値=69)という4つの要素の場合である。この4つの要素それぞれに対して、符号量テーブル141、142、143及び144が割り当てられる。以下の説明は、intra_chroma_pred_mode用符号量テーブル141を例として行う。
そして、intra_chroma_pred_mode用符号量テーブル141には、それぞれの行におけるvalMPS値、pStateIdx値及びビン系列の種類に対応した符号量予測値と、更新されたvalMPS値とpStateIdx値とが、対応付けて格納されている。
この図8を用いて、事前にコンピュータシミュレーションにより、計算されて格納されている符号量予測値の計算方法について示す。以下の説明において、コンピュータは各数値を、メモリ上に書き込みまたは読み出して、シミュレーションの処理を行う。
図8おいて、符号量予測値を求めるための基本的概念は、算術符号化の分割区間の長さを示す値であるcodIRange値に相当するassumed_range値が、算術符号化開始において、256から510まで等確率に分布していると仮定することである。この仮定に基づいて、assumed_range値が256の場合、257の場合、…、510の場合それぞれの場合において、複数のビンからなるビン系列の算術符号化を行い、結果として発生した符号量の平均を符号量予測値とする考え方をとる。
コンピュータは、256から510までのそれぞれのassumed_range値を初期値として、current_rangeに対して代入するとともに、current_pStateIdxには初期値として2を代入し、curent_valMPSには初期値として0を代入する。
このupdate_range_and_renormalize()の関数による演算処理の結果として、発生した符号量nr_outbitsと、新しいrangeの値であるnew_rangeが求められる。
コンピュータは、発生した符号量nr_outbitsを、符号量を累算するsum_of_nr_outbits変数に加算して、累算処理を行う。
また、コンピュータは、current_range値に対し、新しいmew_range値を代入することにより、current_range値を更新する。
また、このupdate_context()関数で表現される、pStateIdx値とvalMPS値との更新手順はH.264/AVC符号化標準に定められており、具体的には図9に示すような状態遷移を示すテーブルによって定義される。この図9は、現在のpStateIdx値と、valMPS値により変化した次のpStateIdx値との対応を示すテーブルである。
この図9のテーブルの見方を説明すると、現在のpStateIdx値を「pStateIdx」として、valMPS値と異なる2値シンボル(ビン)が発生した場合には「transIdxLPS」で示された値が次のpStateIdx値となる。逆に、valMPSと同一のビンが発生した場合には「transIdxMPS」で示された値が次のpStateIdx値となるように設定されている。
この図9のテーブルにおいて、pStateIdx=0の状態で、現在のvalMPS値と異なるビンが発生した場合のみ、pStateIdx値が反転(1ならば0、0ならば1)する設定となっている。
また、コンピュータは、このときvalMPS値の変更を行わない。コンピュータは、最後にnew_pStateIdxとnew_valMPS(実際に発生した2値シンボルの値)との各々を求め、current_pStateIdxとcurrent_valMPSとのそれぞれに代入する。
次に、コンピュータは、変数iが1の状態において、2つめのビンである「0」について、算術符号化およびリノーマライゼーション処理に相当するupdate_range_and_renormalize()関数による演算処理が実行される。
コンピュータは、update_range_and_renormalize()関数による演算処理の結果と得られた、発生した符号量nr_outbitsと、新しいrangeの値であるnew_rangeとが得られる。
そして、コンピュータは、この発生した符号量nr_outbitsを、符号量を累算するsum_of_nr_outbits変数に加算し、累算処理を行う。
また、コンピュータは、累算処理とともに、current_range値に新しいrange値を代入して、current_range値の更新を行う。
すなわち、コンピュータは、図9のテーブルに従って処理を行い、current_pStateIdx=1、current_valMPS=0であり、かつcurrent_valMPSと同じビンである「0」が発生した場合、「pStateIdx」=1の列の「transIdxMPS」に記載されている「2」を、新たなpStateIdx値、すなわちnew_pStateIdxとして求める。このとき、コンピュータは、このときvalMPS値の変更を行わない。コンピュータは、最後にnew_pStateIdxとnew_valMPSとの各々を求め、current_pStateIdxとcurrent_valMPSのそれぞれに代入される。
次に、コンピュータは、ふたつめのビン「0」の処理が終了したこの時点で、current_pSteteIdxが2、current_valMPSが0、current_range値をupdate_range_and_renormalize()関数による算術符号化処理を行った後の値に書き換えて変化させている。
そして、コンピュータは、最後にsum_of_nr_ourbitsを255で除算して平均値を取った値を、intra_chroma_pred_mode用符号量テーブル141における、pStateIdx=2、valMPS=0、ビン系列=10の行に格納される符号量予測値として出力する。
また、この行に格納される更新されたpStateIdx値、valMPS値は、上述したあるassumed_range値における予測符号量算出処理を終了した状態におけるcurrent_pStateIdx値とcurrent_valMPS値とである。
すなわち、上述した例の場合、「2」であったcurrent_pStateIdx値と、「0」であったcurrent_valMPS値が、ビン系列の最初のビンの処理後に、current_pStateIdx値が「1」となり、current_valMPS値が「0」となっている。
また、ビン系列の最初のビンの処理後に、「1」となったcurrent_pStateIdx値と、「0」となったcurrent_valMPS値が、2つめのビンの処理後に、current_pStateIdx値が「2」に、current_valMPS値が「0」に戻っている。
この書き込まれる数値は、すなわち、それぞれのpStateIdx値とvalMPS値の初期値に対して、それぞれのビン系列を算術符号化したあとの最終的なpStateIdx値とvalMPS値を示すものであって、assumed_rangeの値が256、257…510のいずれかによらず同じ値である。
そして、符号量Bテーブル14bは、予測符号量15として上記の通り求めた符号量予測値を符号量加算部16に対して出力する。
また、符号量Bテーブル14bは、発生確率更新情報14cとして、更新されたpStateIdx値として「2」を、またvalMPS値として「0」を、コンテキスト演算部11に対して出力する。
また、コンテキスト演算部11は、自らpStateIdx値及びvalMPS値の更新処理を行なう必要が無い。
すなわち、コンテキスト演算部11は、複数のビンからなるビン系列を算術符号化することによって更新されるpStateIdx値とvalMPS値を、符号量Bテーブル14bから発生確率更新情報14cとして得て、コンテキスト状態保持バッファ12に書き込み、コンテキスト状態保持バッファ12を変更することができる。
それぞれのテーブルの行数は、発生し得るビン系列の種類によって増減し、図7に示すように、最大75個のビンが発生する可能性のあるmb_qp_deltaの要素のmb_qp_delta用符号量テーブル144がもっとも大きなテーブル構成となる。
なお、この最大75個のビンが発生する場合、符号量テーブル参照情報13に含まれるビン系列として、最大75ビットの情報を送るのは無駄である。
すなわち、74種類のビン系列のどれかを示す情報(例えば、0〜73などのビン系列の種別の数を示す番号)に置き換えれば、情報量として7ビットで済むため、符号量テーブル参照情報13を74種類のビン系列のどれかを示す情報を用いて構成してもよいことは自明である。
これにより、本実施形態においては、同一のCtxIdx値に属して複数のビンが発生するようなビン系列であっても、処理を遅延させることなく、符号量予測を行う処理を可能とすることができる。
そもそも、第1の実施形態において説明されているように、算術符号化において並列化処理が行えない主たる理由は、あるビン系列が与えられたとき、あるrangeの値を初期値として、算術符号化処理と、リノーマライゼーション処理を直列的に処理しながら、range値を逐次更新していくことが避けられないことが原因である。
ここで得た平均値は、range値が分からない状態において、ある1つのビンを算術符号化した際に発生する符号量の期待値を示していることになる。
しかしながら、ビン系列を構成する複数のビンが連続して同一のCtxIdx値に対応していた場合、第1の実施形態の場合には、同一のCtxIdx値のビンの先頭から順次、テーブルの参照と、pStateIdx値及びvalMPS値の更新処理を逐次的に行う必要がある。
したがって、第1の実施形態においては、同一のCtxIdx値を持った連続した複数のビンからなるビン系列をテーブル参照によって符号量予測しようとしても、pStateIdx値とvalMPS値の遷移を結局は逐次的に処理しなければならない。
しかしながら、コンテキスト演算部11は、あるコンテキスト値CtxIdxに対して発生符号量を予測するために符号量テーブル14を一度参照する毎に、符号量テーブル14における当該CtxIdxに対応するpStateIdx値とvalMPS値の更新処理が必要となる。
このCtxIdxに対応するpStateIdx値とvalMPS値の更新処理に伴う問題について、以下に説明する。
このとき、コンテキスト演算部11は、符号量テーブル14のpStateIdx値とvalMPS値の更新処理も独立して並列に行うことができる。このため、コンテキスト演算部11の行う発生符号量の予測が遅延することはない。
すなわち、複数のビンが同一のCtxIdx値に属しているため、あるビンにおけるpStateIdx値とvalMPS値の更新処理が完了する必要がある。更新処理が完了し、新たなpStateIdx値とvalMPS値が確定しなければ、コンテキスト演算部11は、続くビンのテーブルの参照ができない。
したがって、上述したように、ビン系列を構成する複数のビンが同一のCtxIdx値に対応している場合、コンテキスト演算部11は、発生符号量予測を逐次的にしか処理することができず、結果として発生符号量の予測に遅延が発生する。
この同一のコンテキスト値CtxIdxに属する発生符号量を予測するため、コンテキスト演算部11は、符号量テーブル14の参照と更新処理とを最大75回、逐次的に反復して処理しなければならない。このため、予測値を得るまでに大きな遅延が発生する可能性がある。
このため、第2の実施形態は、同一のCtxIdx値を持った複数のビンからなるビン系列の符号量予測を行うための構成であり、同一のCtxIdxを持つビン系列に対しては符号量Bテーブル14bを用いて、pStateIdx値とvalMPS値の更新処理も含めて複数のビンに対する処理を一度に行うことができる。
したがって、上述したように、本実施形態によれば、符号予測部1により、算術符号化処理部3の符号化処理を終了せずとも、ビン系列の算術符号化処理の結果としての発生符号量の予測を高速に行うことができる。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
3…算術符号化処理部
11,31…コンテキスト演算部
12,32…コンテキスト状態保持バッファ
14…符号量テーブル
14a…符号量Aテーブル
14b…符号量Bテーブル
16…符号量加算部
21…2値化処理部
22…中間バッファ
33…レギュラーコーダ
34…バイパスコーダ
Claims (4)
- 多値データが2値化された2値シンボル列が算術符号化処理した結果として出力される発生符号量を予測する符号量予測装置であり、
2値シンボル列における各2値シンボルの発生確率と、前記2値シンボルにおいて発生確率の高い方の2値シンボルを示す優勢シンボル情報との組合せに対応し、予め統計的に求められた前記2値シンボルを算術符号化した際の予測符号量が記憶された第1符号量テーブルと、
各2値シンボルに対応する前記発生確率と前記優勢シンボル情報を読み出して前記第1符号量テーブルの参照情報とするとともに、実際に発生した2値シンボルに対応して前記発生確率と前記優勢シンボル情報を更新するコンテキスト演算部と、
前記発生確率と前記優勢シンボル情報とに対応して読み出された前記予測符号量を、2値シンボル列における全ての2値シンボルの処理毎に加算し、加算結果を前記2値シンボル列の算術符号化された発生符号量の予測値として出力する符号量加算部と
を有し、
同一のコンテキスト値に属する前記2値シンボルが複数連続している同一コンテキスト2値シンボル列に対し、当該コンテキスト値の種別と、2値シンボルの発生確率の初期値と、発生確率が高い方の2値シンボルを示す優勢シンボル情報の初期値と、発生した2値シンボル列の情報との組み合わせに対応して、予め統計的に求められた当該組み合わせを算術符号化した際の予測符号量と、予め求められた前記2値シンボル列を算術符号化した後の更新された発生確率と優勢シンボルとが対応付けて記憶されている第2符号量テーブルをさらに有し、
前記コンテキスト演算部が、
前記予測符号量を求める対象の2値シンボル列が前記同一コンテキスト2値シンボル列でない場合、前記第1符号量テーブルにより、当該2値シンボル列の予測符号量を読み出し、前記発生確率と前記優勢シンボルとの更新演算を行い、
一方、前記予測符号量を求める対象の2値シンボル列が前記同一コンテキスト2値シンボル列である場合、前記第2符号量テーブルにより、当該2値シンボル列の予め設定されている予測符号量、発生確率及び優勢シンボル情報を更新し、
前記符号量加算部が、
読み出した予測符号量を加算して、加算結果を前記2値シンボル列の算術符号化された発生符号量の予測値として出力し、
前記第1符号量テーブル及び前記第2符号量テーブルに記憶されている前記予測符号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、
前記2値シンボルが算術符号化処理される際、前記2値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる2値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を2分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記2値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められる
ことを特徴とする符号量予測装置。 - 前記コンテキスト演算部が前記2値シンボル列の入力に対して並列に複数個設けられ、複数の前記2値シンボル列の前記発生符号量の予測値を同時に算出することを特徴とする請求項1に記載の符号量予測装置。
- 多値データが2値化された2値シンボル列を算術符号化処理した結果として出力される発生符号量を予測する符号量予測装置の動作をコンピュータに実行させるプログラムであり、
2値シンボル列における各2値シンボルの発生確率と、発生確率が高い方の2値シンボルを示す優勢シンボル情報とにより、前記発生確率と、前記優勢シンボル情報との組合せに対応し、予め統計的に求められた前記2値シンボルを算術符号化した際の予測符号量が記憶された第1符号量テーブルを参照するとともに、実際に発生した2値シンボルに対応して前記発生確率と前記シンボル情報を更新する第1のコンテキスト演算手段と、
前記2値シンボル列における前記シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる2値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を2分割する第2のコンテキスト演算手段と、
前記発生確率と前記シンボル情報とに対応して読み出された前記予測符号量を、2値シンボル列における全ての2値シンボルの処理毎に加算し、加算結果を前記2値シンボル列の算術符号化された発生符号量の予測値として出力する符号量加算手段と
して機能させ、
前記予測符号量を求める対象の2値シンボル列が同一のコンテキスト値に属する前記2値シンボルが複数連続している同一コンテキスト2値シンボル列でない場合、前記第1符号量テーブルにより、当該2値シンボル列の予測符号量を読み出し、前記発生確率と前記優勢シンボルとの更新演算を行い、一方、前記予測符号量を求める対象の2値シンボル列が前記同一コンテキスト2値シンボル列である場合、同一の前記コンテキスト値に属する前記2値シンボルが複数連続している同一コンテキスト2値シンボル列に対し、当該コンテキストの種別と、2値シンボルの発生確率の初期値と、発生確率が高い方の2値シンボルを示す優勢シンボル情報の初期値と、発生した2値シンボル列の情報との組み合わせに対応して、予め統計的に求められた当該組み合わせを算術符号化した際の予測符号量と、予め求められた前記2値シンボル列を算術符号化した後の更新された発生確率と優勢シンボルとが対応付けて記憶されている第2符号量テーブルにより、当該2値シンボル列の予め設定されている予測符号量、発生確率及び優勢シンボル情報を更新する第3のコンテキスト演算手段と、
読み出した予測符号量を加算して、加算結果を前記2値シンボル列の算術符号化された発生符号量の予測値として出力する手段と
して機能させ、
前記第1符号量テーブル及び前記第2符号量テーブルに記憶されている前記予測符号量が、前記発生確率と前記優勢シンボル情報との組合せ毎に、
前記2値シンボルが算術符号化処理される際、前記2値シンボル列における前記優勢シンボル情報の示す優勢シンボルと、当該優勢シンボルと異なる2値シンボルである劣勢シンボルとの比に従い、有限精度の分割区間を2分割する際、前記分割区間が予め設定された範囲内の全てにおいて、前記2値シンボルの算術符号化処理を行い、得られた符号量を積算し、前記範囲内の前記分割区間の総数にて除算して求められている
プログラム。 - 前記第1のコンテキスト演算手段、前記第2のコンテキスト手段及び前記第3のコンテキスト手段が前記2値シンボル列の入力に対して並列に複数個設けられ、複数の前記2値シンボル列の前記発生符号量の予測値を同時に算出することを特徴とする請求項3に記載のプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011104452A JP5632328B2 (ja) | 2010-06-14 | 2011-05-09 | 符号量予測装置及びプログラム |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010135239 | 2010-06-14 | ||
JP2010135239 | 2010-06-14 | ||
JP2011104452A JP5632328B2 (ja) | 2010-06-14 | 2011-05-09 | 符号量予測装置及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012023715A JP2012023715A (ja) | 2012-02-02 |
JP5632328B2 true JP5632328B2 (ja) | 2014-11-26 |
Family
ID=45777545
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011104452A Active JP5632328B2 (ja) | 2010-06-14 | 2011-05-09 | 符号量予測装置及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5632328B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10021409B2 (en) * | 2012-05-09 | 2018-07-10 | Integrated Device Technology, Inc. | Apparatuses and methods for estimating bitstream bit counts |
CA3217710A1 (en) | 2012-05-25 | 2013-11-28 | Sun Patent Trust | Image encoding and decoding using context adaptive binary arithmetic coding with a bypass mode |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008011431A (ja) * | 2006-06-30 | 2008-01-17 | Toshiba Corp | 画像符号化装置 |
CN101502123B (zh) * | 2006-11-30 | 2011-08-17 | 松下电器产业株式会社 | 编码装置 |
-
2011
- 2011-05-09 JP JP2011104452A patent/JP5632328B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2012023715A (ja) | 2012-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4354520B2 (ja) | 符号化装置 | |
KR102254000B1 (ko) | 움직임 벡터 차분값의 엔트로피 코딩 | |
KR100801364B1 (ko) | 산술부호의 복호기 또는 부호화기와 역2치화 변환기 또는2치화 변환기의 사이에 중간 버퍼가 삽입된 복호장치 또는부호화 장치 | |
US7884742B2 (en) | System and method for efficient compression of digital data | |
US7304590B2 (en) | Arithmetic decoding apparatus and method | |
KR0180169B1 (ko) | 가변길이 부호기 | |
US20140286417A1 (en) | Data encoding and decoding | |
US20060176953A1 (en) | Method and system for video encoding with rate control | |
US11336921B2 (en) | Acceleration of context adaptive binary arithmetic coding (CABAC) in video codecs | |
US9621886B2 (en) | Motion video encoding apparatus, motion video encoding method, and motion video encoding computer program | |
US8400336B2 (en) | Methods and devices for reordered parallel entropy coding and decoding | |
KR20070006445A (ko) | 하이브리드 엔트로피 부호화, 복호화 방법 및 장치 | |
US20120314760A1 (en) | Method and system to reduce modelling overhead for data compression | |
JP5231243B2 (ja) | 符号化装置及び符号化方法 | |
JP5116704B2 (ja) | 画像符号化装置及び画像符号化方法 | |
JP2022516132A (ja) | 係数レベルのためのエスケープコーディング | |
JP2009021775A (ja) | 符号化装置及び符号化方法 | |
JP5632328B2 (ja) | 符号量予測装置及びプログラム | |
US20220109891A1 (en) | Features of range asymmetric number system encoding and decoding | |
JP2008311803A (ja) | 算術復号方法、算術復号装置及び算術復号プログラム | |
JP6549057B2 (ja) | 符号化装置および符号化方法 | |
JP2004254341A (ja) | 動画像情報の圧縮方法およびそのシステム | |
JPH09135418A (ja) | 画像記録装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20130606 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20130726 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130815 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140502 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140624 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140731 |
|
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: 20141007 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20141009 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5632328 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |