JP2006129467A - 整数データの無損失適応符号化・復号化 - Google Patents

整数データの無損失適応符号化・復号化 Download PDF

Info

Publication number
JP2006129467A
JP2006129467A JP2005284786A JP2005284786A JP2006129467A JP 2006129467 A JP2006129467 A JP 2006129467A JP 2005284786 A JP2005284786 A JP 2005284786A JP 2005284786 A JP2005284786 A JP 2005284786A JP 2006129467 A JP2006129467 A JP 2006129467A
Authority
JP
Japan
Prior art keywords
mode
parameter
adaptive
encoder
run
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
Application number
JP2005284786A
Other languages
English (en)
Other versions
JP2006129467A5 (ja
Inventor
Henrique S Malvar
エス.マルバー エンリケ
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/978,157 external-priority patent/US6987468B1/en
Priority claimed from US10/976,623 external-priority patent/US7015837B1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2006129467A publication Critical patent/JP2006129467A/ja
Publication of JP2006129467A5 publication Critical patent/JP2006129467A5/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • 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

【課題】新規な後方適応技法を用いた整数データの無損失圧縮の方法およびシステムを提供する。
【解決手段】適応ランレングス・ゴロム/ライス(RLGR)符号器・復号器(コーデック)およびその方法は、ゴロム/ライス(G/R)符号器のみを使用するモードと、ランレングス符号器と組み合わせてG/R符号器を使用するモードとを切り替える。後方適応技法は、各符号化シンボルの後で符号化パラメータを調整する新規な適応規則を含む。符号化モードパラメータおよびG/Rパラメータが適応を受ける。符号化モードパラメータはランレングス符号化を使用するかどうかを制御する。G/Rパラメータは両方のモードにおいて、各入力値を符号化するため(G/R専用モード)、またはゼロの不完全ランの後の数値を符号化するため(RLGRモード)に用いられる。本コーデックおよび方法は、ちょうど符号器規則の逆に基づいて実現可能な復号器も含む。
【選択図】図4

Description

本発明は、一般にディジタルデータの処理に関し、特に、新規な後方適応技法(backward-adaptive technique)を用いた整数データの無損失符号化・復号化の改善された方法およびシステムに関する。
コンピュータデータ(例えばテキスト、オーディオ、ビデオ、イメージおよびプログラムファイル)のサイズが増大していくにつれて、データ圧縮がますます重要になっている。データ圧縮とは、ディジタルデータを、元のデータよりも少ないビット数を用いた符号化表現に符号化する方法である。より少ないビット数でデータを表現することは、データが占有する記憶スペースがより少なく、必要な伝送帯域幅がより狭くなることを意味する。
一般に、データ圧縮は、最も頻繁に出現するデータを予測し、それをより小さいスペースに記憶することによって、データを圧縮する。具体的には、データ圧縮は、(1)入力データの確率を予測するためのデータモデルを定義し、(2)符号器を用いてその確率から符号を生成する、という少なくとも2種類のタスクを含む。さらに、一部のデータ圧縮技法では、データを数学的に変換し量子化することにより、さらに高度の圧縮を達成する。
圧縮技法には、無損失のものと有損失のものがある。無損失圧縮技法は、符号化前の元データと復号化後の復元されたデータとがビットごとに同一であるという意味で可逆である。有損失圧縮は、データには品質のかなりの損失を伴うが捨てることができる多くの繰り返しがあるという事実を利用する。有損失圧縮は、より高い圧縮を達成するために元データの一部の損失を許容する。
無損失圧縮は通常、テキストやバイナリデータを圧縮するために用いられるのに対し、有損失圧縮は通常、オーディオ、イメージおよびビデオデータに用いられる。しかし、有損失圧縮技法であっても、時には無損失圧縮技法を使用することがあり得る。例えば、2種類の広く用いられている圧縮(あるいは符号化)技法として、変換符号化および予測符号化がある。この種の圧縮方式では、元データを変換してから量子化(最も近い整数に丸める)か、あるいは、(固定的または適応的な)信号モデルに基づいて元データを予測してから予測誤差(元データと予測データの差)を量子化する。いずれの場合でも、量子化後のデータは整数形式である。これらの整数が得られた後、データを表現するのに必要なビット数を低減するために、無損失圧縮技法を用いて量子化値を符号化する。
これらの整数値の集合は通常、対応する確率分布関数(PDF)を有する。このPDFは、予測符号化において、データの性質が予測子によってうまくモデル化されていれば、ほとんどの場合に予測誤差がゼロに近くなるような分布を有する。同様に、変換符号化においては、ほとんどの量子化された変換係数がゼロになる。図1は、これらの整数値の典型的な確率分布を例示している。ゼロは最尤値(most likely value)であり、非ゼロ値の確率はマグニチュード(大きさ)が増大するにつれてほぼ指数関数的に急速に減少する。データが図1に示す確率分布を有するのは、無損失圧縮技法を用いて符号化されているデータが元データではないからである。図1は、変換係数あるいは予測誤差を量子化することから生じる整数データである。
数学的にいえば、問題は、N個の整数からなるベクトルxを符号化するための効率的な解法を見出すことである。各要素x(n)、n=0,1,...,N−1、は、図1と同様の確率分布に従う値を有するので、最も確からしい値はゼロであり、ゼロから離れた値ほど急速に減少する確率を有する。
図1のような確率分布の簡単な数学的モデルとして、次のような、パラメータθで特徴づけられるラプラス分布、あるいは両側幾何(two-sided geometric : TSG)分布がある。
Figure 2006129467
なお、パラメータθは、|x|が増大する際の確率の減衰率を制御することに留意されたい。θの値が大きいほど減衰は急速である。パラメータθは、x=0における確率に直接関係づけることができる。すなわち、P(0,θ)=(1−θ)/(1+θ)である。また、情報源シンボルの絶対値の期待値は次のようになる。
Figure 2006129467
情報源のエントロピーは、ビット/シンボル単位で次式で与えられる。
Figure 2006129467
そこで、良好な符号器は、N個のxの値からなるベクトルを、理論的最小値であるN・H(x)ビットよりもあまり多くないビット数を含むビットストリームに写像(map)すべきである。
ラプラス分布は、(ほとんどの無損失のオーディオおよびイメージ符号器のような)予測符号器における予測誤差、あるいは(ほとんどの有損失のオーディオ、イメージ、およびビデオ符号器のような)量子化された変換係数のいずれの場合でも、媒体圧縮(media compression)方式におけるありふれたモデルである。
ラプラス/TSG分布を有する情報源に対し、多くの符号器が提案されている。簡単だが効率的な符号器としてゴロム−ライス(Golomb-Rice)符号器がある。まず、TSG情報源値xを次の簡単な可逆写像で非負値uに写像する。
Figure 2006129467
これは、uを、並べ替えたアルファベット{0,−1,+1,−2,+2,...}へのインデックスとみなすことと等価である。新しい情報源uは、幾何情報源に近い確率分布を有する。幾何情報源にはゴロム符号が最適である。というのは、ゴロム符号は、ゴロムパラメータを適切に選択する限り、幾何情報源に対するハフマン符号であるからである。
パラメータmのいくつかの値に対して、ゴロム−ライス(G/R)符号の一例を表1に示す。なお、mが2のべき乗に等しい場合にはパラメータkを用いるが、これはm=2kによってmに関係づけられることに留意されたい。ハフマン符号に比べてG/R符号の主な利点は、任意の入力値に対して2進符号語を簡単な規則で計算できることである。このため、テーブルを記憶しておく必要がない。これは、最新のプロセッサでは特に有用である。最新のプロセッサでは、テーブルエントリを記憶しているメモリ位置からの読み出しが、数個の命令を実行するよりも長くかかり得るからである。容易に分かるように、パラメータmは、連続する何個の符号語が同じビット数を有するかを決定する。それはまた、uを入力値として、符号語の計算がu/mの計算を伴うことも示している。ほとんどのプロセッサでは、整数除算には多くのサイクル数がかかるので、一般のmではG/R符号は魅力的でない。m=2kに選ぶと、これはライス符号に対応するが、除算u/mはシフトで置き換えることができる。というのは、u/m=u>>k(ここで>>は右シフト演算子を表す)だからである。このため、任意の入力uに対してG/R符号を計算することは容易であり、単にp=u>>kおよびv=u−(p<<k)を計算すれば良い。そして符号は、p個の1を有するストリングをvのkビット2進表現と連結することにより形成される。
Figure 2006129467
表1から明らかなように、G/Rパラメータkの選択は、情報源の統計値に依存しなければならない。uが増大する際の確率の減衰が遅いほど、より大きいkを選択すべきである。さもなければ、符号語長があまりにも急激に長くなる。kを選択するための簡単な規則として、与えられた入力値uに対する符号語長が、その値の出現確率の、2を底とする対数に近くなるようにすると良い。
G/R符号は幾何分布情報源に対しては最適であるが、式4の写像によるラプラス/TSG情報源からのシンボルを符号化するには最適ではない。この理由は、TSG分布を有する入力変数xに対して、式4の変数uは、幾何分布に近いが厳密には幾何分布でない確率分布を有するからである。実際には、パフォーマンスは十分に最適に近い(例えば、レートは通常、エントロピーよりも5%未満高いだけである)ので、G/R符号はかなり普及している。TSG情報源に対する最適符号は、4種類の符号変種のセットを含み、これらはほとんどの場合、実装して圧縮を5%未満改善するには、より複雑である。したがって、ほとんどの場合、G/R符号が、パフォーマンスと簡単さの間の最良のトレードオフを提供する。
図1において、確率分布は単一のパラメータで表され、このパラメータは指数関数の減衰率である。減衰率が高いほど、値がゼロである可能性が高くなる。これは、多くの場合にゼロが生じやすいので、ゼロのランが非常に生じやすくなることを意味する。すなわち、確率分布の減衰率が十分に高ければ、ランを符号化するのが良い考えである。ゼロのランを符号化することは、入力データ中の多くのエントリを処理するためにほんの数ビットしか使われないことを意味する。
データのランを符号化することは、ランレングス符号化を用いて効率的に実行される。ランレングス符号化は、簡単な形式のデータ圧縮であって、同じ値が連続して繰り返された系列(すなわち「ラン」)を、元のランとしてではなく、単一のデータ値およびそのランの長さとして記憶するものである。
例えば予測符号化では、データが予測子(predictor)によって用いられるモデルに一致する場合に、予測誤差がゼロとなる可能性がはるかに高くなる。しかし、良好なモデルでも、時には大きい値を有する可能性がある。これは、例えば画素値が背景値から前景値になるというように、ある境界に達した時に起こり得る。時々、大きい数値が生じ得る。これが起こる場合に、ランレングス符号化よりも有用な符号化技法の一種として「ランレングス・ゴロム/ライス(RLGR: Run-Length Golomb/Rice)」符号化技法として知られているものがある。このようなRLGR符号化技法の1つが特許文献1(発明者:Malvar、名称:「ディジタルデータのプログレッシブ変換符号化のシステムおよび方法(System and Method for Progressively Transform Coding Digital Data)」)および特許文献2(発明者:Malvar、名称:「有限アルファベットデータの無損失適応符号化(Lossless Adaptive Encoding of Finite Alphabet Data)」)に開示されている。
現実には、データの情報源が変動すると、確率は一定にとどまらず時間とともに変動する。これは例えば、イメージおよびオーディオの場合に当てはまる。一般に、このような入力データにおける確率変動はさまざまな方法で処理される。例えばJPEG(ジェイペグ:Joint Photographic Experts Group)では、符号化すべき異なる値に対して異なる長さの符号語を用いるためのエントロピー符号器(ハフマン符号器)がある。通常、ハフマンテーブルがあらかじめ設計される。すなわち、一般に、いくつかのイメージを取得し、それらの確率を測定し、すべてのイメージに用いられる平均モデルを構築する。この手法の1つの問題点は、イメージのあらゆる部分に符号化効率の損失があることである。というのは、エントロピー符号器によって用いられている確率モデルは平均としては良好であるが、イメージの当該部分(that portion)にとっては必ずしも良好であるとは限らないからである。
表1から分かるように、ゴロム/ライス符号には次の2つの主要な問題点がある。(1)kの適当な値を決めることができるためには、確率減衰パラメータθ、あるいは同じことであるが、確率P(x=0)が既知でなければならない。(2)減衰パラメータが小さすぎる場合、エントロピーH(x)が1より小さくなるため、ゴロム/ライス符号は最適でない。というのは、その平均符号語長が1ビット/シンボルより小さくなり得ないからである。
実際には、第1の問題点(最適なゴロム/ライスパラメータの推定)は通常、入力ベクトルを所定長のブロックに分割することによって対処される。各ブロックについて、符号器は2つのパスからなる処理を行う。第1パスで、入力値の平均マグニチュードを計算する。そのために、パラメータθを式2から推定し、対応する最適なkを求めることができる。第2パスで、符号器は、まず2進形式でkの値を出力し、続いて当該ブロック内のデータ値に対するゴロム/ライス符号のストリングを連接させることによって、当該ブロックに対するビットストリームを生成する。これは、無損失イメージ圧縮のためのJPEG−LSや無損失オーディオ圧縮のためのSHORTEN等、ゴロム/ライス符号を用いる実質上すべての無損失圧縮方式で使用される手法である。これは、「ブロック単位の適応(blockwise adaptation)」あるいは「前方(フォーワード)適応(forward adaptation)」モデルと呼ばれる。前方適応モデルは、符号器がまず符号化前にデータを見て、統計パラメータ(通常は平均マグニチュード)を測定してから、そのパラメータに基づいて符号化を行い、データを符号化するために用いたパラメータの値を、復号器で使用するためにヘッダに入れる、という意味で前方という。データを一挙に符号化しようとする代わりに、データを小部分すなわちブロックに分解する。各ブロックについて、そのブロックの統計値を測定し、バッファ内にあるものと一致するデータの部分について統計パラメータを測定し、エントロピー符号器をそのパラメータに合わせて調整する。符号化されたファイルには、そのデータブロックを符号化するために用いているパラメータの値を示すヘッダが挿入される。
実際上の第2の問題点、すなわち、非常に低いエントロピーで情報源を符号化することは、通常、ブロック単位の適応すなわち前方適応モデルを用いて対処される。ブロック内の入力シンボルの平均マグニチュード値が、推定エントロピーH(x)が1未満になるほど小さい場合、符号器はゴロム/ライス符号化ではなくランレングス符号化を使用する。
これらの手法は実際上有効ではあるが、2つの主要な欠点を有する。第1の欠点として、符号器は、データに対して2つのパスを実行するために、各入力ブロックを2度読む必要がある。1回目は、平均マグニチュードを計算することによりゴロム/ライスパラメータを求めるためであり、2回目は、実際の符号化を実行するためである。これは、符号器が追加的作業を実行することを要求し、複雑さを増加させる。アプリケーションによっては符号化時間は問題ではないが、例えばディジタルカメラの場合、符号化プロセスを遅くすれば、ランダムアクセスメモリのコストが増大する。特に、前方適応モデルはまずデータを見てから統計値を測定し、モデルパラメータを求めた後、符号化をしなければならない。このことは、高い処理能力を有するパーソナルコンピュータ上で符号器が動作する場合には問題とはならない。しかし、携帯電話で写真を撮り、その携帯電話自身で符号化する場合、処理能力ははるかに限定される。
第2の、そして最も重大な欠点は、ブロックサイズを選択する際の困難に伴うものである。ブロックサイズが大きすぎると、ブロック内で統計値が急激に変化する可能性がある。他方、ブロックサイズが小さすぎる場合には、そのデータブロックを符号化するためにどのようなパラメータを用いたかを復号器に知らせなければならないことのオーバーヘッドが負担となる。各ブロックについて、符号器は、そのブロックを符号化するのにどのようなパラメータ値を用いているかを記憶しなければならない。ある点で、小さいブロックを符号化するのに要するオーバーヘッドは、達成される圧縮に値しなくなる。これがトレードオフを作り出す。一方で、小さいブロックを用いればブロックの統計値を一致させることができるが、数が少ないので統計値を測定することが困難になり、符号化のオーバーヘッドが高くなる。他方、大きいブロックを用いると、統計値がブロック内で大きく変動し得ることが問題になる。実際には、これらの2つの相反する要因の間の妥協点を見出すのは困難なので、ブロックサイズは通常、符号化するデータのタイプに応じて、128〜2,048サンプルの間で選択される。
1つの解決法は、符号器において後方適応(バックワード・アダプティブ)技法を用いることである。後方適応では、符号化は、各ブロックごとに初期状態について復号器と符号器を一致させることから開始される。すなわち、各パラメータを所定値に初期化してから符号化を開始する。符号器が出力シンボルを生成するたびに、そのシンボルを直ちに復号器へ送信できる。というのは、復号器はそのシンボルを符号化するために用いられたそのパラメータ値を知っているからである。符号器は、シンボルを出力した後、所定の適応規則に従い、出力したシンボルに応じて符号化パラメータの新たな値を計算する。復号器はパラメータ適応規則を知っているので、復号器もまた、符号化パラメータのその新たな値を計算できる。こうして、各符号化シンボルの後で符号化パラメータが調整され、符号器と復号器は常に同期する。すなわち、復号器は符号化パラメータの変化を追跡する。これは、符号器が、データを符号化するのにどのようなパラメータを用いたかに関していかなるオーバーヘッド情報も復号器へ送信する必要がないことを意味する。
米国特許第6771828号公報 米国特許第6477280号公報
したがって、ゼロのランを符号化するためのランレングス符号化と、ゼロのランの後の数値を符号化するためのゴロム/ライス符号化とを切り替えることによって整数データを効率的に圧縮する無損失圧縮符号器およびその方法が必要とされている。また、ゼロのランの後に現れ得る入力整数値を処理し符号化することが可能な適応符号器およびその方法が必要とされている。さらに、後方適応技法を用いて入力データの高速な追跡および効率的圧縮を行うことにより、前方適応に伴う上記の問題を回避する適応符号器およびその方法も必要とされている。
本明細書に開示される発明は、整数データを無損失符号化するための適応ランレングス・ゴロム/ライス(RLGR)符号器・復号器(コーデック)およびその方法を含む。適応RLGRコーデックおよびその方法は、後方(バックワード)適応を用いて、入力データにおける変化する統計値を高速に追跡する。後方適応を用いることで、適応RLGRコーデックおよびその方法は、入力データの統計値のいかなる変化も迅速に学習する。さらに、適応RLGRコーデックおよびその方法は、いかなる入力整数値も符号化可能である。適応RLGRコーデックおよびその方法は、オーディオ、イメージおよびビデオ符号器のようなマルチメディア圧縮システムを含む広範囲の圧縮アプリケーションに適用可能である。
適応RLGRコーデックおよびその方法は、ランレングス符号化とゴロム/ライス(G/R)符号化を新規な方法で組み合わせる。具体的には、適応RLGRコーデックおよびその方法は、G/R符号化専用である第1のモード(G/R専用モード)と、G/R符号化とランレングス符号化を組み合わせた第2のモード(RLGRモード)とを有する。また、適応RLGRコーデックおよびその方法は、各符号化シンボルの後で符号化パラメータを調整する新規な後方適応技法も使用する。符号化モード(G/R専用モードまたはRLGRモード)はパラメータ値から自動的に決定される。確率テーブルや符号語テーブルは不要なので、適応RLGRコーデックおよびその方法は、小さいメモリ設置面積(footprint)に収まる。したがって、適応RLGRコーデックおよびその方法は、通常は命令のフェッチおよび実行よりもメモリアクセスのほうに多くのサイクル数を要する最新のプロセッサに好適である。また、メモリおよび処理能力が限定された小型デバイスにも好適である。というのは、適応RLGRコーデックおよびその方法は、入力データをブロック単位でバッファリングする必要がなく、また、各データ値を2度処理する必要がないからである。
適応RLGRコーデックおよびその方法は、符号化規則の簡単だが新規な組合せを使用し、符号化モードに応じて入力データのストリングを出力符号語に写像(マッピング)する。また、適応RLGRコーデックおよびその方法は、新規な適応規則を有する新規な後方適応技法も使用する。2つのパラメータ、すなわち、符号器ランパラメータ(s)およびゴロム/ライス(G/R)パラメータ(k)が用いられる。符号器ランパラメータは、適応RLGRコーデックおよびその方法がランレングス符号化を使用する(s>0の場合)かどうか、そして使用する場合、ランレングス符号化をどのように使用するかを制御する。G/Rパラメータは、入力値を直接符号化するか(G/R専用モードでs=0の場合)、または、ゼロの不完全ラン(incomplete run)の後で入力値を符号化する(RLGRモードの場合)ために、両方の符号化モードで用いられる。
適応RLGRコーデックおよびその方法の主な利点の1つは、そのパラメータ(sおよびk)が、生成される各符号語の後で調整され更新されることである。これにより、入力データの統計値におけるいかなる変化も非常に迅速に追跡できる。復号器へ符号化パラメータを送信するためのオーバーヘッドは不要である。というのは、それらの変化は復号器によって追跡されるからである。適応規則が簡単なので、後方適応を使用することの計算量(複雑さ)は低い。したがって、適応RLGRコーデックおよびその方法は、多くの実際的アプリケーションにとって魅力的である。
適応RLGR方法は、ランレングス符号器以外のエントロピー符号器を使用する第1の符号化モードと、ランレングス符号器と組み合わせてエントロピー符号器を使用する第2の符号化モードとの間で選択を行い、後方適応技法を用いて第1および第2のモードの符号器を適応させることを含む。一般に、エントロピー符号器はゴロム/ライス符号器である。後方適応技法は、符号化モードパラメータsを用いて第1モードと第2モードの間で選択を行い、ゴロム/ライス(G/R)パラメータkをG/R符号器で使用することを含む。s=0の場合、第1の符号化モードを選択し、s>0の場合、第2の符号化モードを選択する。これらの各パラメータは、ランレングス符号器またはG/R符号器によって生成される各符号語の後で更新される。
符号化規則は符号化モードに依存する。s=0の場合、次の入力値xは、まずそれを簡単な一対一写像規則(x>0の場合はu=2x、x<0の場合はu=−2x−1)により非負値uに写像してから、パラメータkのゴロム/ライス符号器を用いてuを符号化することによって、符号化される。そこで、出力符号語をGR(u,k)で表す。s>0の場合、まず入力値xのゼロのランrを調べる。r=2sの場合、ランrは完全ランと定義され、出力符号語は0に等しい1ビットである。r<2sの場合、ランrは不完全ランと定義され、符号語は1+bin(r,s)+GR(u,k)である。ここで、bin(r,s)は不完全ランrの長さをsビットで表した2進表現であり、GR(u,k)は不完全ランrに続く値の(この場合もxからuへの写像を用いた)ゴロム/ライス符号である。
1シンボルを符号化した後、パラメータ適応規則を適用する。後方適応技法の適応規則は、各パラメータsおよびkに対する規則を含む。sの適応規則は以下の通りである。s=0(G/R専用モード)の場合、入力値xの絶対値を調べる。|x|=0の場合、sをスケーリング(拡大縮小)したもの、すなわちSを、第1の整数定数A1だけ増加させる。|x|>0の場合、Sを第2の整数定数B1だけ減少させる。s>0(RLGRモード)の場合、ランrが完全ランならば、Sを第3の整数定数A2だけ増加させる。ランrが不完全ランならば、Sを第4の整数定数B2だけ減少させる。そして、次の符号語を生成するために用いるsの値をs=S/Lとして計算する。ここでLは一定のパラメータである(Lを2のべき乗に選択すれば、Lによる除算は単にシフト演算である)。
kの適応規則は以下の通りである。入力値u(GR符号器は常にu値に作用することを想起されたい)から、一時値pをp=u>>k(ここで>>は右シフト演算子を表す)により計算する。p=0の場合、kをスケーリングしたもの、すなわちKを、第5の整数定数B3だけ減少させる。p=1の場合、Kを変えずに据え置く。p>1の場合、Kをpだけ増加させる。このようにして、各符号語が生成された後、第1および第2の両方のモードにおいて、G/R符号器に対してパラメータkを更新する。そして、次の符号語を生成するために用いるkの値をk=K/Lとして計算する。ここでLは一定のパラメータである(Lを2のべき乗に選択すれば、Lによる除算は単にシフト演算である)。
上記の適応規則の説明から分かるように、適応RLGR方法は「分数適応(fractional adaptation)」と呼ばれる特徴も含む。分数適応により、より細かい適応レートの制御が可能となる。まず、スケーリングパラメータLを定義する。Lの値は通常、2のべき乗とする。次に、スケーリングされた符号化モードパラメータS=s×LおよびスケーリングされたG/RパラメータK=k×Lを定義する。sおよびkに対する上記の適応規則を用いて、スケーリングされたパラメータ値SおよびKを、生成された符号語に応じて整数定数だけインクリメントまたはデクリメントする。SおよびKの適応後、最終的なパラメータ値sおよびkをs=S/Lおよびk=K/Lにより計算する。そうすれば、SおよびKの整数インクリメントは、sおよびkの分数インクリメントとみることができ、これによりsおよびkの値のより滑らかな制御が可能なため、入力統計値の変化をより良く追跡できる。仮に、各符号化シンボルの後でsおよびkを整数インクリメントだけ調整すると、それらの値はあまりに大きく変動してしまう。パラメータ値におけるこのようなノイズは圧縮比(符号化ビットストリームを記憶するのに要するビット数に対する、入力データを直接2進フォーマットで記憶するのに要するビット数の比)の低下につながであろう。
適応RLGRコーデックは、上記の適応RLGR方法を組み込むためのモジュールを含む。
適応RLGRコーデックおよびその方法は、上記の符号化規則に対応する復号化規則を用い、上記と同じパラメータ適応規則を用いることにより動作する。復号器における復号化規則は、符号器における上記の符号化規則の逆である。すなわち、s=0の場合、復号器は、GRパラメータkの現在値に応じて必要なだけのビット数を入力ビットストリーム(またはファイル)から読み出す。このようにして復号器は、表1に従って、有効なゴロム/ライス符号GR(u,k)に対応する完全な符号語を読み出す。すると、ゴロム/ライス符号はあらゆるパラメータkに対して一意復号可能なので、復号器はその符号語を復号化できる。すなわち、復号器は、符号器に存在したシンボルuの値を決定できる。uから、復号器は、単に逆の一対一写像規則を用いることにより、対応するデータ値xを決定できる。具体的には、uが偶数の場合、x=u/2であり、uが奇数の場合、x=−(u+1)/2である。s>0の場合、復号器は、入力ビットストリームまたはファイルから次のビットを読み出す。そのビットが0(ゼロ)に等しい場合、復号器は、r=2sとして、r個のゼロからなるストリングである出力を生成する。そのビットが1に等しい場合、復号器は、次のsビットを変数rの2進表現として読み出す。その後、復号器は、GRパラメータkの現在値に応じて必要なだけのビット数を入力ビットストリーム(またはファイル)から読み出す。このようにして、有効なゴロム/ライス符号GR(u,k)に対応する完全な符号語が読み出される。G/R符号から、復号器は、一時変数uを決定し、逆の一対一写像規則により、ゼロの部分的(不完全)ストリングに続いていた入力データ値xを計算することができる。具体的には、uが偶数の場合、x=u/2であり、uが奇数の場合、x=−(u+1)/2である。そして、復号器は、r個のゼロからなるストリングと、それに続いてその値xを出力する。上記の復号化プロセスを実行することで、入力符号語は、符号器で見られたものと厳密に一致する出力値すなわち値のストリングに復号化される。このように、復号化プロセスは無損失である。
上記のように入力ビットストリームまたはファイルから符号語(codeword)を復号化した後で、復号器は、上記の符号器について説明したのと同じ適応規則を計算する。このようにして、復号器は、符号器が行うのと全く同じようにパラメータsおよびkの値を調整する。こうして、パラメータは、ビットストリーム(またはファイル)の次の符号語を復号化するための正しい値を有することになる。
本発明は、本発明の諸態様を例示する以下の説明および添付図面を参照することでさらに理解することができる。他の特徴および効果は、以下の発明の詳細な説明を、本発明の原理を例として示す添付図面とともに考慮することから明らかとなるであろう。
以下、図面全体を通じて、同一参照番号は対応する部分を表す。
以下の本発明の説明では添付図面を参照する。添付図面は、説明の一部をなし、本発明を実施し得る具体例が実例として示される。なお、他の実施形態も利用可能であり、本発明の範囲から逸脱することなく構成の変更をなし得ることが理解されるべきである。
[I.はじめに]
本明細書に開示されるランレングス・ゴロム/ライス(RLGR)符号器およびその方法は、広範囲の圧縮アプリケーションにおいて使用可能である。マルチメディア圧縮システム(例えば、オーディオ、イメージ、およびビデオコーデック)や、圧縮のために予測または変換手法を用いるその他のシステムは通常、図1と同様の確率分布を有する整数データを生成する。RLGRコーデックおよびその方法は、イメージ、オーディオ、地形標高、および幾何マップデータの圧縮のためのアプリケーションにおいて実装されている。これらのアプリケーションにおいてRLGRコーデックおよびその方法を使用した結果、より簡単な実装でありながら、最も高性能のエントロピー符号器に匹敵する圧縮比となっている。
本明細書に開示されるRLGRコーデックおよびその方法は、整数データの無損失圧縮のための改善された技法を提供する。整数値からなるベクトルを符号器でビットストリームに写像する。このビットストリームは後で復号器により正確に再構成できる。パフォーマンスを改善するために後方適応を用いることで、RLGRコーデックおよびその方法は、入力データの統計値の変化を迅速に学習し、それに適応する。RLGRコーデックおよびその方法は、オーディオ、イメージ、およびビデオコーデックのようなマルチメディア圧縮システムを含む広範囲の圧縮アプリケーションに適用可能である。
RLGRコーデックおよびその方法は、ランレングス符号化とゴロム−ライス符号化を新規な方法で組み合わせるとともに、各符号化シンボルの後で符号器パラメータを調整する後方適応ストラテジによって特徴づけられる。確率テーブルや符号語テーブルは不要なので、RLGRコーデックおよびその方法は、非常に小さいメモリ設置面積に収まる。したがって、RLGRコーデックおよびその方法は、通常は命令のフェッチ(取り出し)および実行よりもメモリアクセスに多くのサイクル数を要する最新のプロセッサに特に好適である。
従来型のエントロピー符号器に対して、RLGRコーデックおよびその方法の1つの主要な利点は、後方適応ストラテジ(strategy:戦略、方策)がデータの統計値の変化を迅速に学習することである。このため、実際には、RLGRコーデックおよびその方法は、ハフマン符号器、ブロック適応ゴロム/ライス符号器やコンテクスト適応算術符号器のような他の種類の符号器よりも良好なパフォーマンス(性能、能力)を示している。符号化パラメータに対して後方適応ストラテジを使用することのもう1つの利点は、確率推定器が不要なことである。RLGRコーデックおよびその方法のさらにもう1つの利点は、データに対して単一パスで各符号化シンボルの後に適応を実行するので、ブロック単位の適応や前方適応を使用する符号器よりも良好な圧縮結果を生成し、符号化もより高速である。
[II.全体的概観]
図2Aおよび図2Bは、本明細書に開示される適応ランレングス・ゴロム/ライス(RLGR)符号器およびその方法の例示的実施態様を示すブロック図である。図2Aには、適応RLGRコーデックおよびその方法の符号器部分のブロック図が示されている。図2Bには、適応RLGRコーデックおよびその方法の復号器部分のブロック図が示されている。なお、図2Aおよび図2Bは、適応RLGRコーデックおよびその方法が実施され使用され得るいくつかの方法のうちの2つに過ぎないことに留意されたい。
図2Aを参照すると、適応RLGR符号器200は第1のコンピューティングデバイス上で動作する。適応RLGR符号器200は整数データ220が入力され、それを処理する。概して、適応RLGR符号器200は、整数値からなるベクトルのような整数データ220が与えられると、その整数データ220を符号化ビットストリーム230へと符号化すなわち写像する。整数データ220は通常、最も確からしい値がゼロであり、非ゼロ値はその値が増大するにつれて確率が減少するような整数のベクトルを含む。このタイプの整数データは通常、図1に示したのと同様の確率分布関数(PDF)を有する。整数データが符号化された後、符号化ビットストリーム230は記憶あるいは送信されることが可能である。
図2Bを参照すると、RLGR復号器240が第2のコンピューティングデバイス250上にある。なお、第1のコンピューティングデバイス240および第2のコンピューティングデバイス250は、別個のコンピューティングデバイスとして図示されているが、同一のコンピューティングデバイスであってもよいことに留意されたい。すなわち、RLGR符号器200および復号器240は同一のコンピューティングデバイス上に存在してもよい。概して、RLGR復号器240は、符号化ビットストリーム230を処理し、再構成された整数データ260を出力する。適応RLGR符号器200は整数データ220の無損失符号化を実行するので、RLGR復号器240は、符号化ビットストリーム230を読み出し、整数データ220に含まれていた元のデータベクトルを正確に再構成することができる。
なお、実際のアプリケーションでは、デバイスあるいは機器が、RLGR符号器を含むがRLGR復号器を含まないことがある(例えばディジタルカメラ)ことに留意されたい。同様に、デバイスあるいは機器が、RLGR復号器を含むがRLGR符号器を含まないことがある(例えばディジタルオーディオプレーヤやディジタルピクチャビューア)。
[III.例示的オペレーティング環境]
適応ランレングス・ゴロム/ライス(RLGR)コーデックおよびその方法は、あるコンピューティング環境において、図2に示した第1のコンピューティングデバイス210および第2のコンピューティングデバイス250のようなコンピューティングデバイス上で動作するように設計される。以下、適応RLGRコーデックおよびその方法が動作するコンピューティング環境について説明する。以下の説明は、適応ランレングス・ゴロム/ライス(RLGR)符号器およびその方法を実施し得る好適なコンピューティング環境の簡単な概要を提供することを意図している。
図3は、図2に示したRLGRコーデックおよびその方法を実施し得る好適なコンピューティングシステム環境の一例を示している。コンピューティングシステム環境300は好適なコンピューティング環境の単なる一例であり、本発明の利用または機能の範囲に関するいかなる限定を示唆することも意図していない。また、コンピューティング環境300は、例示的オペレーティング環境300に示されるいかなるコンポーネントまたはその組合せに関するいかなる従属性または要件を有するとも解釈されてはならない。
適応RLGRコーデックおよびその方法は、他の多くの汎用または専用のコンピューティングシステムの環境または構成とともに動作する。適応RLGRコーデックおよびその方法とともに使用するのに好適であり得る周知のコンピューティングシステム、環境、および/または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、携帯電話やPDAのようなハンドヘルド型、ラップトップ型またはモバイル型のコンピュータまたは通信デバイス、マルチプロセッサシステム、マイクロプロセッサ方式のシステム、セットトップボックス、プログラム可能な消費者電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境等があるが、これらには限定されない。
適応RLGRコーデックおよびその方法は、コンピュータによって実行されるプログラムモジュール等のコンピュータ実行可能命令との一般的関連で記述できる。一般的に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。また、適応RLGRコーデックおよびその方法は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実行されるような分散コンピューティング環境において実施してもよい。分散コンピューティング環境では、プログラムモジュールはメモリ記憶デバイスを含むローカルおよびリモートのいずれのコンピュータ記憶媒体に配置されてもよい。図3を参照すると、適応RLGRコーデックおよびその方法を実施するための例示的システムは、コンピュータ310の形態の汎用コンピューティングデバイスを含む。コンピュータ310は、図2に示した第1のコンピューティングデバイス210および第2のコンピューティングデバイス250の一例である。
コンピュータ310のコンポーネントとしては、処理ユニット320、システムメモリ330、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット320に接続するシステムバス321が挙げられるが、これらには限定されない。システムバス321は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、ペリフェラル(周辺機器)バス、およびローカルバスを含む、いくつかのタイプのバス構造のいずれでもよい。例として、限定ではないが、このようなアーキテクチャとしては、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect(PCI)バスがある。
コンピュータ310は通常、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ310がアクセスできるいかなる利用可能な媒体であってもよく、揮発性および不揮発性媒体、リムーバブル(取り外し可能)および非リムーバブル(取り外し不能)媒体の両方がある。例として、限定ではないが、コンピュータ可読媒体としては、コンピュータ記憶媒体および通信媒体が挙げられる。コンピュータ記憶媒体としては、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータのような情報の記憶のための任意の方法または技術で実現された揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体がある。
コンピュータ記憶媒体としては、以下のものに限定されないが、RAM、ROM、EEPROM、フラッシュメモリ等のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)等の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ等の磁気記憶デバイス、または所望の情報を記憶するために使用可能でありコンピュータ310によりアクセス可能な任意の他の媒体がある。通信媒体は通常、キャリア波等の変調データ信号または他のトランスポートメカニズムでコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを具現化し、いかなる情報配信媒体も含む。
なお、「変調データ信号」という用語は、信号中に情報を符号化するように1つまたは複数の信号の特性が設定または変更された信号を意味する。例として、限定ではないが、通信媒体としては、有線ネットワークまたは直接有線コネクションのような有線媒体、および音響、RF、赤外線等の無線媒体がある。上記のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
システムメモリ330は、読み出し専用メモリ(ROM)331およびランダムアクセスメモリ(RAM)332のような揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中等にコンピュータ310内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム333(BIOS)が通常ROM331に記憶されている。RAM332は通常、処理ユニット320から直ちにアクセス可能な、および/または処理ユニット320が現在作用しているデータおよび/またはプログラムモジュールを含む。例として、限定ではないが、図3は、オペレーティングシステム334、アプリケーションプログラム335、他のプログラムモジュール336、およびプログラムデータ337を示している。
また、コンピュータ310は、他のリムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータ記憶媒体を含んでもよい。単なる例として、図3は、非リムーバブル不揮発性磁気媒体の読み書きを行うハードディスクドライブ341、リムーバブル不揮発性磁気ディスク352の読み書きを行う磁気ディスクドライブ351、およびCD−ROM等の光媒体のようなリムーバブル不揮発性光ディスク356の読み書きを行う光ディスクドライブ355を示している。
例示的オペレーティング環境で使用可能な他のリムーバブル/非リムーバブル、揮発性/不揮発性のコンピュータ記憶媒体としては、以下のものに限定されないが、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、固体RAM、固体ROM等がある。ハードディスクドライブ341は通常、インタフェース340のような非リムーバブルメモリインタフェースを通じてシステムバス321に接続され、磁気ディスクドライブ351および光ディスクドライブ355は通常、インタフェース350のようなリムーバブルメモリインタフェースによりシステムバス321に接続される。
前述し図3に例示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ310のためのコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの記憶を行う。例えば図3において、ハードディスクドライブ341は、オペレーティングシステム344、アプリケーションプログラム345、他のプログラムモジュール346、およびプログラムデータ347を記憶するように示されている。なお、これらのコンポーネントは、オペレーティングシステム334、アプリケーションプログラム335、他のプログラムモジュール336、およびプログラムデータ337と同じでも異なってもよいことに留意されたい。オペレーティングシステム344、アプリケーションプログラム345、他のプログラムモジュール346、およびプログラムデータ347は、少なくともそれらが別のコピーであることを示すためにここでは異なる番号が与えられている。ユーザは、キーボード362、およびマウス、トラックボールまたはタッチパッドと一般的に呼ばれるポインティングデバイス361のような入力デバイスを通じてコンピュータ310にコマンドおよび情報を入力することができる。
他の入力デバイス(図示せず)としては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、ラジオ受信機、またはテレビあるいは放送ビデオ受信機等が挙げられる。これらおよび他の入力デバイスは、システムバス321に結合したユーザ入力インタフェース360を通じて処理ユニット320に接続されることが多いが、例えばパラレルポート、ゲームポートまたはユニバーサルシリアルバス(USB)等の他のインタフェースおよびバス構造により接続されてもよい。モニタ391または他のタイプのディスプレイデバイスもまた、ビデオインタフェース390のようなインタフェース経由でシステムバス321に接続される。モニタに加えて、コンピュータはスピーカ397やプリンタ396のような他の周辺出力デバイスを含んでもよく、これらは出力周辺インタフェース395を通じて接続され得る。
コンピュータ310は、リモートコンピュータ380のような1つまたは複数のリモートコンピュータへの論理コネクションを用いたネットワーク環境で動作してもよい。リモートコンピュータ380は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスまたは他のありふれたネットワークノードであってよく、通常、コンピュータ310に関して前述した要素の多くまたはすべてを含む。ただし、図3にはメモリ記憶デバイス381のみが示されている。図3に示す論理コネクションは、ローカルエリアネットワーク(LAN)371および広域ネットワーク(WAN)373を含むが、他のネットワークを含んでもよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットで一般的である。
LANネットワーキング環境で使用される場合、コンピュータ310はネットワークインタフェースすなわちアダプタ370を通じてLAN371に接続される。WANネットワーキング環境で使用される場合、コンピュータ310は通常、インターネットのようなWAN373を通じて通信を確立するためのモデム372等の手段を含む。モデム372は、内蔵でも外付けでもよいが、ユーザ入力インタフェース360等の適当なメカニズムを通じてシステムバス321に接続され得る。ネットワーク環境では、コンピュータ310に関して図示したプログラムモジュールまたはその部分は、リモートメモリ記憶デバイスに記憶されてもよい。例として、限定ではないが、図3は、リモートアプリケーションプログラム385がメモリデバイス381上に存在するように示している。理解されるように、図示したネットワークコネクションは例示であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよい。
[IV.システムコンポーネント]
図4は、図2に示した適応RLGR符号器200のコンポーネントを示す全体ブロック図である。適応RLGR符号器は、入力として入力値(または値のストリング)400を受け取る。次に、符号器モードセレクタ405を用いて、適応RLGR符号器200の2つのモードのうちの1つを選択し切り替える。具体的には、図4に示すように、符号器モードセレクタ405は、ゴロム/ライス専用モードまたはランレングス・ゴロム/ライス符号器モードのいずれかを選択できる。ゴロム/ライス専用モードは、適応パラメータを有するゴロム/ライス符号器410のみを使用する。ランレングス・ゴロム/ライス符号器モードは、適応パラメータを有するランレングス符号器415と、適応ゴロム/ライス符号器410の両方を使用する。
上記の2つのモードのうちの1つを用いて入力値(またはストリング)400を符号化することにより符号語420を得る。各入力値(またはストリング)400の符号化後、入力データの統計値を追跡するように符号化パラメータを適応させる。適応RLGR符号器200は、少なくとも2種類のパラメータを使用する。第1に、符号化モードパラメータを用いることにより、符号化モードがランレングス符号器を使用するかどうかを制御し、ランレングス符号器を使用する場合、ランレングス符号器をどのように使用するかを制御する。第2に、ゴロム/ライス(G/R)パラメータを両方のモードで用いることにより、(a)各入力値を符号化し(符号器がG/R専用モードにある場合)、(b)0の不完全ランに続く数値を符号化する(符号器がRLGRモードにある場合)。これらのパラメータおよびこれらのパラメータの適応については以下で詳細に説明する。
後方適応技法を用いて符号化モードパラメータを更新するために符号化モードパラメータ適応モジュール430が用いられる。モジュール430は、更新された符号化モードパラメータ435を生成する。同様に、後方適応技法を用いて当初のG/Rモードパラメータを更新するためにゴロム/ライスパラメータ適応モジュール440が用いられる。これは、更新されたG/Rパラメータ445を生成する。符号化モードパラメータおよびG/Rパラメータの両方の適応については以下で詳細に説明する。パラメータを更新した後、次の入力値450が、更新した符号化モードパラメータ435および更新したG/Rパラメータ445を用いて適応RLGR符号器200によって処理される。
[V.動作の概観]
次に、図2および図4に示した、適応RLGR符号器200およびそこで用いられる方法の動作について説明する。図5は、適応RLGR符号器200およびその方法の全体的動作を示す全体流れ図である。本方法はまず、符号化すべきディジタルデータを入力する(ボックス500)。1つの試験した実施形態では、入力ディジタルデータは、整数値を要素とするベクトルの形式の整数データである。なお、各入力ディジタルデータ値は任意の整数値であってよく、特定の範囲(例えば、他のエントロピー符号器で一般的なように、2進数または符号付き2進数)に制限されない。次に、適応RLGR符号器の符号器モードを選択する(ボックス510)。このモードは、符号化モードパラメータの値に応じてG/R専用モードまたはRL+G/Rモードのいずれかであり得る。そして、選択された符号器が入力ディジタルデータを符号化する。
ディジタルデータは、ある値に初期化された符号化パラメータを用いて、選択されたモードで符号化される。しかし、入力ディジタルデータの統計値は変動し得るので、RLGR符号器200は適応的である。この適応により、RLGR符号器200は、入力ディジタルデータの統計値を追跡し、その統計値に迅速に適応し、より高い符号化効率を達成することができる。RLGR符号器200およびその方法は、後方適応技法を用いて符号化パラメータを更新する(ボックス520)。符号パラメータのこの更新は、入力ディジタルデータのそれぞれの値または値のストリングが符号化された後に行われる。さらに、後方適応技法は新規な適応規則を含む。これについては以下で詳細に説明する。その後、符号化したディジタルデータを出力する(ボックス530)。次に、今説明した方法を用いて、入力ディジタルデータの次の値またはストリングが処理される。次の入力値またはストリングを符号化する際に、符号化パラメータの更新された値が用いられる。このプロセスを、すべてのディジタルデータが符号化ビットストリームへと符号化されるまで繰り返す。
図6は、図5に示した適応RLGR符号器およびその方法のさらなる詳細を示す流れ図である。具体的には、ディジタルデータの値またはストリングを入力として受け取る(ボックス600)。次に、符号器モードを以下のモード、すなわち(a)G/R専用モード、および(b)ランレングス・G/Rモード、のうちの1つとして選択する(ボックス610)。次に、選択した符号器モードを用いて入力値またはストリングを符号化する(ボックス620)。
入力値またはストリングを符号化した後、符号化パラメータを更新する。この適応プロセスはまず、分数適応パラメータを定義する(ボックス630)。分数適応パラメータは、最適なパラメータ値をより細かく追跡することができるように、符号化パラメータの適応を遅くするために用いられる。分数適応パラメータについては以下でさらに詳細に説明する。次に、新規な適応規則を含む後方適応技法を用いて、分数適応バージョンの符号化モードパラメータを更新する(ボックス640)。同様に、後方適応技法および新規な適応規則を用いてG/Rパラメータを更新する(ボックス650)。符号化した入力値またはストリングを符号化ビットストリームに付加し、符号化すべきディジタルデータから次の値またはストリングを入力する(ボックス660)。更新された符号化モードパラメータおよびG/Rパラメータを用いて、プロセスは再び次の値またはストリングの符号化を開始する。
[VI.動作の詳細]
次に、上記の図4、図5および図6の適応RLGR符号器200およびその方法の動作の詳細を説明する。
[符号器モードセレクタ]
図7は、図4に示した適応RLGR符号器200およびその方法の符号器モードセレクタ405の動作の詳細流れ図である。概して、符号器モードセレクタ405は、符号化モードパラメータの値に基づいて2つの符号器モードの間で選択および切替を行う。符号器モードの選択は、ディジタルデータの1つの値またはストリングが符号化され符号化パラメータが更新された後に行われる。
プロセスはまず、初期符号化モードパラメータ(ボックス705)および符号化すべき入力値(またはゼロのストリング)(ボックス710)を入力として受け取る。符号化モードパラメータの値がゼロに等しいかどうかを判断する(ボックス715)。ゼロに等しい場合、符号化モードはG/Rモードである。そうでない場合、符号化モードはRLGRモードである。
G/Rモードでは、適応G/R符号器を用いて入力値を符号化する(ボックス720)。この適応G/R符号器は、G/Rパラメータのために後方適応的な適応規則を使用するG/R符号器である。RLGRモード(これは、符号化モードパラメータがゼロよりも大きいことを意味する)では、入力値がゼロのランを含むことが高い確率で期待できる。ゼロのランが完全ランであるかそれとも不完全ランであるかを判断する(ボックス725)。ランは、互いに隣接する同じ値のストリングとして定義される。完全ランは、2の符号化モードパラメータ乗に等しい個数のゼロを有するランとして定義される。例えば、符号化モードパラメータが3に等しい場合、23=8である。したがって、この例では、完全ランは8個のゼロからなるランである。
ランが完全ランである場合、適応ランレングス符号器を用いて、入力値ストリングを符号語=0として符号化する(ボックス730)。すなわち、完全ランはゼロという符号語で表される。上記の例では、8個のゼロからなるストリング(これは完全ストリングを表す)が符号語=0で表される。ランが不完全ランである場合、入力値ストリングは、ランが不完全であること、不完全ラン内のゼロの個数、および不完全ランの直後の値を復号器に知らせるように符号化される。具体的には、適応ランレングス符号器を用いて、符号語=1で表される不完全ランとして入力値ストリングを符号化する(ボックス735)。これは、復号器に対して、ランが不完全ランであることを通知する。次に、符号化した入力値ストリングに不完全ランの長さを追加する(ボックス740)。この符号化値は不完全ランの長さを表す。例えば、不完全ランが4個のゼロからなる場合、値4(あるいは2進記法で「100」)を符号化ビットストリームに追加し、ランレングスが4に等しいことを復号器に知らせる。
あと符号化すべき情報として残っているのは、不完全ランの直後の値だけである。適応G/R符号器を用いて、不完全ランの直後の値を符号化する(ボックス745)。適応G/R符号器を用いる際にはG/Rパラメータを用いる。最後に、符号化した入力値(符号化モードがG/Rモードである場合)または符号化した入力値ストリング(符号化モードがRLGRモードである場合)を出力する(ボックス750)。
[符号化モードパラメータ適応モジュール]
図8は、図4に示した適応RLGR符号器200およびその方法の符号化モードパラメータ適応モジュール430の動作の詳細流れ図である。概して、符号化モードパラメータ適応モジュール430は、後方適応技法を用いて初期符号化モードパラメータを更新する。更新は、ディジタルデータのそれぞれの値またはストリングが符号化された後に実行される。後方適応技法は、新規な適応規則を用いて符号化モードパラメータを更新する。
プロセスはまず、初期符号化モードパラメータ(ボックス805)および符号化すべき入力値(ボックス810)を入力として受け取る。次に、符号化モードパラメータがゼロに等しいかどうかを判断する(ボックス815)。ゼロに等しい場合、符号化モードはG/R専用モードであり、そうでない場合、符号化モードはRLGRモードである。
G/R専用モードの場合、入力値の絶対値がゼロに等しいかどうかを判断する(ボックス820)。ゼロに等しい場合、現在のスケーリングされた符号化モードパラメータを第1の整数定数だけ増加させる(ボックス825)。そうでない場合、現在のスケーリングされた符号化モードパラメータを第2の整数定数だけ減少させる(ボックス830)。
RLGRモードの場合、その値のストリング内のゼロのランが完全ランであるかそれとも不完全ランであるかを判断する(ボックス835)。ランが完全ランである場合、現在のスケーリングされた符号化モードパラメータを第3の整数定数だけ増加させる(ボックス840)。ランが不完全ランである場合、現在のスケーリングされた符号化モードパラメータを第4の整数定数だけ減少させる(ボックス845)。
現在のスケーリングされた符号化モードパラメータを更新した後、現在の符号化モードパラメータを、更新した符号化モードパラメータで置き換える(ボックス850)。これは、スケーリングされた符号化モードパラメータを一定のスケーリングファクタで除算し、結果の整数部分を残すことによって得られる。適応は、スケーリングされた符号化モードパラメータを整数刻みで調整するので、実際の符号化パラメータはあたかも分数刻みで適応するかのように振る舞う。これは「分数適応」と呼ばれ、これにより、適応の速度のより細かい制御が可能となる。その後、最終的な更新した符号化モードパラメータを出力する(ボックス855)。再び、それぞれの入力値またはストリングを符号化した後、現在のスケーリングされた符号化モードパラメータを更新する。そして、次の入力値またはストリングの符号化において、更新した符号化モードパラメータを用いる。
[ゴロム/ライス(G/R)パラメータ適応モジュール]
図9は、図4に示した適応RLGR符号器200およびその方法のゴロム/ライス(G/R)パラメータ適応モジュール440の動作の詳細流れ図である。概して、G/Rパラメータ適応モジュール440は、新規な適応規則を有する後方適応技法を用いて初期G/Rパラメータを更新する。更新は、ディジタルデータのそれぞれの値またはストリングが符号化された後に実行される。
動作はまず、初期G/Rパラメータ(ボックス905)および適応値(ボックス910)を入力として受け取る。適応値の計算については後述する。次に、適応値がゼロに等しいかどうかを判断する(ボックス915)。ゼロに等しい場合、適応規則は、スケーリングされたG/Rパラメータを第5の整数定数だけ減少させることである(ボックス920)。
適応値がゼロに等しくない場合、適応値が1に等しいかどうかを判断する(ボックス925)。1に等しい場合、適応規則は、スケーリングされたG/Rパラメータを変えずに据え置く(ボックス930)。1に等しくない場合、適応規則は、スケーリングされたG/Rパラメータを適応値だけ増加させることである(ボックス935)。
G/Rパラメータを適応させた後、現在のG/Rパラメータを、更新したG/Rパラメータで置き換える(ボックス940)。これは、スケーリングされたG/Rモードパラメータを一定のスケーリングファクタで除算し、結果の整数部分を残すことによって得られる。適応は、スケーリングされたG/Rモードパラメータを整数刻みで調整するので、実際のG/Rパラメータはあたかも分数刻みで適応するかのように振る舞う。これも「分数適応」の一例であり、これにより、適応の速度のより細かい制御が可能となる。もちろん、G/Rパラメータを変えずに据え置く場合(ボックス930)、実行すべき更新はなく、現在のG/Rパラメータは同一である。最後に、更新したG/Rパラメータを出力する(ボックス945)。
図10は、適応値計算モジュール1000の動作の詳細流れ図である。図7および図9も参照すると、適応値計算モジュール1000は、図9の流れ図への入力である適応値(ボックス910)を生成する。動作はまず、2つの入力、すなわち、現在のG/Rパラメータ値(ボックス1005)と、図7のゴロム/ライス符号器(ボックス720および745)への入力値(ボックス1010)とを受け取る。次に、入力値をG/Rパラメータの値の桁数だけ右にシフトする(ボックス1020)。結果として得られた値が適応値であり、その後出力される(ボックス1030)。
[VII.実施例]
本明細書に開示される適応RLGR符号器およびその方法をさらに良く理解するため、例示的な実施例の動作の詳細を説明する。なお、本実施例は、適応RLGR符号器およびその方法を実施し得る単なる1つの方法に過ぎないことに留意されたい。
ランレングス・ゴロム/ライス(RLGR)符号器およびその方法は、前掲の特許文献2に開示されたPTCエントロピー符号器の拡張である。しかし、特許文献2のPTCエントロピー符号器は、2進データ(通常、整数データのビットプレーン)を符号化するために用いられる。本明細書に開示される適応RLGR符号器およびその方法は、任意の入力値を有する整数データを符号化できる。すなわち、本明細書に開示される適応RLGR符号器およびその方法は、任意のアルファベットのデータを符号化できる。なお、本明細書に開示されるRLGR符号器およびその方法は、データがゼロのランを含む可能性が高い場合のほうが効率的であるが、ランに現れる可能性がより高くなり得る任意の他の値のランに対応するように上記の符号化動作を変更するのは些細なことであることも留意されたい。
本明細書に開示されるRLGR符号器およびその方法の1つの利点は、PTCエントロピー符号器とは異なり、入力データの可能な最大値を知る必要がないことである。むしろ、RLGR符号器およびその方法は、いかなる大きさであれ、任意のサイズの入力値を処理できる。このことはすなわち、RLGR符号器は入力データが図1に示したようなラプラス分布を有することを仮定しており、突然大きい数値が入力データに現れると、RLGR符号器およびその方法はその大きい数値を符号化できる、ということである。その大きい数値を符号化するためには、より小さい数値よりも多くのビット数を用いることになるが、その大きい数値は符号化される。しかし、多くのビット数を用いるという代償は、大きい数値が現れる時にその大きい数値のみに対して払われ、他のあらゆる値に対してそうなるわけではない。これは、以下で述べる新規なモード選択および適応規則によるものである。
PTCエントロピー符号器では、入力データを受け取り、それをビットプレーンに分解してから、各ビットプレーンをG/R符号器で符号化する。本明細書に開示される適応RLGR符号器およびその方法では、G/R符号器がラプラス分布のデータを直接処理するように拡張される。これは、適応RLGR符号器およびその方法が1パス符号化を用いることにより、PTCエントロピー符号器よりも大幅に高速になるという利点を有する。
PTCエントロピー符号器の入力データは、小さい数値のほうが現れやすいラプラス分布を有する。時には、小さい数値が現れる可能性のほうが非常に高いので、ビットストリームの特定の部分については、ゼロのランを符号化するほうがより効率的となる。しかし、PTCエントロピー符号器は、データを選び出し、最上位ビットプレーンに対して1パスを実行し、戻って次のビットプレーンで1パスを実行する。例えば、データが16ビットであれば、まずビット#16に対してパスを実行し符号化する。もちろんほとんどのデータはゼロとなる。というのは、そのビットは非常に大きい数値に対してのみ分離し、後はそのまま下位に進むからである。ビット#5、4、3、2、および1に達すると、これらのビットは多数の0および1を有する。これは、それらを符号化しても全く無駄なところまで達していることを意味する。通常、最下位ビットは極めてランダムなので、そのビットを符号化するのに1ビットを使用しなければならない。すなわち、各入力ビットを出力に直接コピーする。PTCエントロピー符号器の問題点は、ビットプレーン単位の符号化がデータにおいて数回のパスを必要とすることである。特に、PTCエントロピー符号器は、最上位ビット、その次のビット、さらにその次のビットというように符号化をしなければならない。明らかにこれは要する時間が大幅に長くなり、場合によってはPTCエントロピー符号器は、本明細書に開示される適応RLGR符号器およびその方法よりも1.5〜3倍も遅い。
[符号器モードの選択]
図11は、適応RLGR符号器およびその方法の符号器モードを選択することの詳細を例示する実施例である。プロセスが開始されると(ブロック1105)、まず、要素x(n)(n=0,1,...,N−1)を有する入力ベクトル読み出す(ボックス1110)。本実施例では、入力ベクトルは図1に示したラプラス分布と同様の確率分布を有する。確率分布は単一のパラメータで表され、このパラメータは指数関数の減衰率である。図1に示したラプラス分布の減衰は適度に速い。実際には、減衰は一般に、より速いことも遅いこともあり得る。減衰率が高いほど、値がゼロに等しい可能性が高くなる。
適応RLGR符号器およびその方法は、整数の効率的な符号化に有用である。具体的にはこれは、効率的に符号化する必要のある整数値からなるベクトル(またはバッファ)がある場合に行われる。典型的には、この整数データは、小さい数値のほうが大きい数値よりも現れる可能性がはるかに高い。そして、データの確率分布の減衰率が十分に高い(これは、指数関数が急速に減衰することを意味する)ので、このことはゼロがより一層生じやすくなることを意味する。この場合、ゼロのランを符号化するのが良い考えである。
本実施例では、符号化されるデータ(あるいは入力データ)が元のマルチメディアデータではないので、入力データは図1に示した理想と同様の確率分布を有する。例えば、オーディオファイルの場合、適応RLGR符号器およびその方法は各オーディオサンプルに直接には適用されない。同様に、ピクチャファイルの場合、適応RLGR符号器およびその方法は各画素値に適用されるのではない。その代わりに、多くのアプリケーション(オーディオおよびイメージ符号化を含む)では、データの何らかのモデルがある。これは、データがどのようであるはずかについて合理的な推測を行う何らかの予測子が利用可能であることを意味する。そこで、予測誤差を入力データとすることができ、符号化されるのは予測誤差となる。予測誤差は実際の値と予測値の差である。さらに、データのモデルが合理的であれば、予測誤差がゼロとなる可能性がはるかに高くなる。しかし、良好なモデルでも、時には大きい値を有する可能性がある。これは、例えば画素値が背景値から前景値になるというように、ある境界に達した時に起こり得る。すなわち、図1に示したような確率分布でも時々大きい数値が生じ得る。他のマルチメディア符号化アプリケーションでは、元のデータ値(例えばオーディオサンプルや画素)が変換オペレータによって変換される。その目的は、少数の大きい値の変換係数と、多数の小さい値の変換係数に情報を集中させることである。その後これらの係数を量子化する(最も近い整数に丸める)。こうして、すべての量子化された変換係数が1つのベクトルとして読み取られる時、そのベクトルの要素は小さい値である可能性が高くなるので、本明細書に開示される適応RLGR符号器およびその方法による圧縮に非常に適している。
また、適応RLGR符号器およびその方法は無損失である。無損失圧縮とは、入力データをより小さいサイズに圧縮した後に復号化すると、元と厳密に同じ入力データの値が回復されることを意味する。これに対して有損失圧縮では、元の入力データと厳密に同じ値が回復されない。オーディオおよびビデオ圧縮は有損失圧縮を用いることができる。しかし、これらの有損失圧縮技法の多くでは、データに対して変換または予測子を生成する。その後、変換または予測子を量子化する。これは、それらを最も近い整数に丸めることを意味する。いったんこれらの整数が得られた後は、無損失圧縮が用いられることが多い。これは、マルチメディア用のほとんどの有損失コーデックが通常、量子化された予測または変換オペレータの整数値を符号化するための無損失符号器部分を有することを意味する。これらの整数値を符号化するために、適応RLGR符号器およびその方法を用いることができる。通常、これらの各整数値は対応する確率分布関数(PDF)を有する。このPDFは、モデルが良好であればほとんどの場合に予測誤差がゼロに近いはずであるという意味で、図1の確率分布と類似している。
図11を参照すると、次に、符号化パラメータ{s,S}および{k,K}を初期化する(ボックス1115)。そして、カウンタnと、runをゼロにセットする(ボックス1120)。本実施例では、sは符号化モードパラメータ、Sはスケーリングされた符号化モードパラメータ、kはG/Rパラメータ、そしてKはスケーリングされたG/Rパラメータである。概して、sは符号化モードと、どのようにランレングス符号器を使用するかとを制御し、kはG/R符号器を制御する。パラメータs=S/Lであり、ここでLはスケーリングパラメータである。本実施例では、Lは、2のべき乗である16に等しい。これにより、除算は単にシフトをすることで実行できる。
適応RLGR符号器およびその方法は、2つの異なる符号化モードを有する。第1の符号化モードは、ランレングス符号化なしで、ゴロム/ライス(G/R)符号化のみを実行する。このG/R専用モードは、ゼロがデータに現れる可能性がそれほど高くないため、ゼロのランがそれほど頻繁に現れない場合に適用される。第2の符号化モードは、ランレングス符号化とG/R符号化とを実行する。このRLGR符号化モードは、ゼロのランが入力データに現れる可能性が非常に高いため、ゼロのランを符号化することでビット数が節約される場合に用いられる。このように2つの異なる符号化モードがあり、適応RLGR符号器およびその方法は、符号化モードパラメータsの値に基づいて各符号化モードの間で自動的に選択および切替を行う。
sがゼロに等しいかどうかを判断する(ボックス1125)。ゼロに等しい場合、符号化モードはG/R専用モードである。この場合、適応G/R符号器を用いて入力データx(n)を符号化する(ボックス1130)。sがゼロに等しくない場合、符号化モードはRLGRモードである。この場合、適応ランレングス符号器および適応G/R符号器の両方を用いて入力データx(n)を符号化する(ボックス1135)。次に、nをn+1で置き換え(ボックス1140)、nがNに等しいかどうかを判断する(ボックス1145)。Nに等しくない場合、プロセスは再び新たなx(n)で開始される(ポイント1150)。Nに等しい場合、出力ビットストリームを書き出し(ボックス1155)、与えられた入力データに対するプロセスが終了する(ボックス1160)。
[符号化規則]
適応RLGR符号器およびその方法は、符号化モードパラメータsおよびG/Rパラメータkに基づく新規な符号化規則を使用する。表2は、適応RLGR符号器およびその方法が整数値xを2進ビットストリームに写像するための符号化規則を示している。表2から分かるように、符号はパラメータ{s,k}によって制御される。パラメータsは主な動作モード(G/R専用か、それともランレングス+GRか)を制御し、パラメータkはG/R符号器を制御する。
Figure 2006129467
本実施例では、写像値uが定義される。適応RLGR符号器およびその方法の入力値xは正でも負でもあり得る。入力値xはu値に写像されるが、uは正のみである。したがって、符号付きの入力値xが符号なしの等価な表現uに変換される。式4は、xからuへの写像を示している。具体的には、この写像によれば、0は0に写像され、−1は1に写像され、1は2に写像され、−2は3に写像され、2は4に写像され、等となって、u値は常に正である。これは、G/Rテーブル(表1)が使用可能となるように行われる。というのは、G/Rテーブルは非負値のみに対するものだからである。この写像により、適応RLGR符号器およびその方法は任意の入力アルファベットが処理可能となる。すなわち、G/Rテーブル(これは任意の入力数値を処理できる)を使用するので、入力アルファベットは無限となり、適応RLGR符号器およびその方法は任意のサイズの数値入力を処理できる。適応RLGR符号器およびその方法は、オペレーティングシステムが処理可能な数値のサイズによってのみ制限される。なお、実際には、G/R符号化テーブル(表1)はメモリに記憶される必要はないことに留意されたい。容易に分かるように、テーブルエントリは、uおよび符号化パラメータkの任意の値に対して符号語を容易に計算できるような構造を有する。
与えられたuデータに対して、表2は、パラメータsおよびkが既知である限りチャネルを伝わる符号を示している。表2の規則は、符号器がどのように符号化を行うかを正確に定義している。これは、復号器が表2の同じ規則を用いて符号化データを回復(すなわち復号化)できることを意味する。
G/R専用モード(これはs=0を意味する)では、表2は、入力値xの写像値uが、適応G/R符号器と、表1によって例示されるG/R符号化規則とを用いて符号化されることを示している。したがって、xを符号化するために用いられる符号語はuおよびkの値に基づく。G/Rパラメータkは、以下で詳細に説明するように、後方適応技法を用いて更新される。
RLGRモード(これはs>0を意味する)では、入力データは、r個の値x=0のランとみなされる。表2のRLGRモードを見ると、ある場合(第2行)では、入力データは、2s個のx=0という値のランである。これは完全ランと呼ばれる。例としてs=3と仮定する。入力データが連続する23=8個のゼロである場合、表2の規則を用いてそのランを0に等しい1ビットとして符号化する。すなわち、8個のゼロからなるラン全体が、値が0である1ビットに写像される。復号器は、0を読み出すと、それを2s個のゼロのストリングへと復号化しなければならないことを知る。この状況において最大圧縮が達成される。本発明によって達成される全体的圧縮は、このRLGRモードとG/Rモードの平均である。
入力データが2s個より少ないゼロからなるランを有する場合、そのランは不完全ランである。表2の第3行を参照すると、入力データに例えば連続する7個の(すなわち2sより少ない)ゼロしかない場合、符号語は0とはなり得ない。というのは、0は連続する8個のゼロすなわち完全ランを意味するからである。そこで、代わりに符号語は1から始まる。これは復号器に対して、不完全ランが後続することを知らせる。次に、符号語は不完全ランの長さの2進表現を含む。この2進表現はsビットを使って不完全ランの長さrを指定する。
例えば、r=7、したがって不完全ランが7個のゼロを有すると仮定する。その場合、符号語はまず「1」から始まり、これにより復号器に対して不完全ランが後続することを知らせる。この例ではs=3なので、(3ビットあれば0と7の間の数を表せるから)不完全ランの長さとなり得るのは0と7の間の数だけである。すなわち、rを表現するためには、sビットより大きいビット数を要することはない。したがって、111(2進数の7)に等しい3ビットを含むように符号語が付加される。すると復号器は、ランが不完全ランであり、ランレングスが7個のゼロであることを知る。
次に、不完全ランの直後に来る値が何かを示す符号語が付加される。不完全ランの後に来るこの値は、適応G/R符号器からの符号語によって表される。表2に示したように、まず、式4を用いて不完全ランの後の値を写像する。次に、適応G/R符号器を用いて、{u,k}の関数であるG/R符号を得る。表2の右下ブロックの一番下に、不完全ランを符号化するために用いられる符号語全体が、符号=1+bin(r,s)+GR(u,k)と示されている。ここで、bin(r,s)は、不完全ランの長さrをsビットで表した2進表現であり、GR(u,k)は、不完全ランの直後の値を表現する、表1によって与えられるG/R符号である。
[分数適応]
分数適応はsおよびkの代わりにSおよびKを用いる。分数適応は、適応を遅くするための1つの方法である。分数適応なしで適応RLGR符号器およびその方法を用いることも可能である。しかし、分数適応がないと、適応は通常あまりに急激に変化するため、一般に、入力データに対する最適なパラメータを正しく追跡することができない。
本実施例では、sおよびkパラメータの適応は、スケーリングされたSおよびKパラメータを用いて実行される。そこで、sおよびkの代わりにSおよびKを更新する。sとSおよびkとKの間の関係は、s=S/Lおよびk=K/Lである。ここで、Lは上記で説明したスケーリングパラメータである。したがって、適応を実行すると、Sの値が適応を受け、SをLで除算することでsの値が得られる。なお、すべての値が整数なので、s=S/Lは、結果の整数部分を意味する。また、一定のスケーリングパラメータLは2のべき乗に等しい値とされ(例えばL=16)、その場合、Lによる除算はシフト演算子により効率的に実行できることも想起されたい。
分数適応が好ましいのは、適応RLGR符号器およびその方法が、生成される各符号に対してパラメータ(sおよびk)の調整をするためである。すなわち、1つの入力値またはストリングを符号化した後に適応規則を適用する。sおよびkを整数値変化により直接適応させると、それらが整数値であるため、できることは同一に留まるか少なくとも1だけ増減するかになる。ここで、入力データが大きくなりつつあると仮定する。これは、パラメータを大きくしなければならないことを意味する。sを例えば1だけ増加させると大きすぎる可能性がある。例えば、s=3の場合、8個のゼロからなるランが符号化されている。sを1だけ増加させると、sは4に等しくなるが、今度は16個のゼロからなるランが単一の符号語=0により符号化されることを意味する。8から16へのこの跳びはやや大きい場合がある。次のストリングを符号化する時、sが大きすぎると判断すれば、sを3に減少させることになる。しかし、これは小さすぎるかもしれず、sが振動することになる。
分数適応により、sの分数インクリメントが可能となる。例えば、sを1ではなく0.5だけ増加させることができれば良い。しかし、sは整数パラメータなのでこれは許されない。そこで、分数適応はSの整数インクリメントを実行し、SをLで除算することで、sの分数インクリメントを行う。例えば、L=16、s=3と仮定する。これはS=48を意味する。入力データが非常に小さくなった場合、Sを増加させれば良い。次回にSを48から52に増加させ、16で割ると、sは依然として3であるが、Sは52である。次も小さい入力データが来た場合、Sを52から64に増加させれば、S=64で、s=4となる。このように、小さい入力データが来たからといって直ちにsを4に上げるのではなく、入力データの値の減少を見てs=3からs=4になるまでに2回かかっている。これにより、パラメータsおよびkが振動しないことが保証される。
分数適応を用いる代わりに、データの増減がある場合にある特定の符号化サイクル数を経過してからパラメータを増減させるようなフラグを定義することも可能である。符号化サイクル数を追跡する新たなパラメータを定義することもできる。すなわち、このパラメータは、パラメータが変化する前に条件(入力データの増加または減少)が何回発生すべきかを追跡する。しかし、この技法を試みたが、分数適応のほうが優れた結果になったことに留意されたい。
[符号化モード(s)パラメータの適応]
符号化モードパラメータsは、それぞれの入力値またはストリングが符号化された後で適応を行う。分数適応を用いる場合、sを直接適応させるのではなく、実際には分数符号化モードパラメータSを適応させる。表3は、符号化モードパラメータsの適応規則を示している。適応後、sの値をs=S/Lとする。ここでLはスケーリングパラメータである。本実施例では、Lは2のべき乗に等しいので、除算が右シフトで実行される。本実施例ではL=16である。
Figure 2006129467
表3の上段は、符号器がG/R専用モードにある場合のsの適応規則を与えている。符号化すべきシンボルxの大きさが0に等しい場合、パラメータsをA1という第1の整数定数だけ増加させる。左向き矢印(←)は、SをS+A1で置き換えることを意味する。xの絶対値が0よりも大きい場合、パラメータsをB1という第2の整数定数だけ減少させる。整数定数A1およびB1は、sをどのくらい上下に調整すべきかを示す増分および減分である。
表3の下段は、符号器がRLGRモードにある場合のsの適応規則を与えている。ランが完全ランである場合(これは、ランがx=0の値を2s個含むことを意味する)、パラメータsを第3の整数定数A2だけ増加させる。これに対して、ランが部分的(不完全)ランである場合(これは、ランが2sよりも少ない個数のゼロを含み、その後にゼロでないxの値が続くことを意味する)、パラメータsを第4の整数定数B2だけ減少させる。それぞれの入力値またはストリングを符号化した後に、これらの適応規則を用いて、パラメータs(あるいは分数適応を用いている場合はS)を更新する。
表3に記載の適応規則を用いることにより、入力データの確率モデルがそれとなく(implicitly)測定されている。実際、まず確率を測定してからパラメータを適応させようとする代わりに、パラメータを直接変化させている。本実施例では、以下の値が優れた結果を達成することが分かった:L=16、A1=3、B1=3、A2=4、B2=6およびB3=2。A1、B1、A2およびB2の適当な値を用いると、適応RLGR符号器およびその方法が実際に従来技術よりも高速に入力データの統計値の変化を追跡することが観察された。この理由は、従来技術はまず全体の統計モデルを測定してからG/Rパラメータのようなパラメータを調整するからである。従来技術はこうしているのは、妥当な確率推定値を計算するためには大量のデータが必要なためである。利用可能なデータは現在復号化されている値および前に復号化された値だけである。これは、確率推定値が正確であるためには、確率推定を行いG/Rパラメータを求めることができる前に大量のデータを使用しなければならないことを意味する。すなわち、符号化プロセスには遅延がある。例えば、オーディオファイルを符号化する場合、入力データの変化を検出する際に遅延が存在する。これは、ある期間の間、G/Rパラメータが入力データと不整合であることを意味する。すなわち、従来技術の方法よりも、表3(sパラメータに対する)および下記の表4(kパラメータに対する)に示す適応規則のほうがはるかに高速であり、入力データの統計値にはるかに迅速に適応する。実際、このこと、すなわち入力データの統計値への高速な適応は、従来技術に比べて大きな利点である。
[ゴロム/ライス専用モード]
図12は、G/R専用モードの符号化の詳細と、付随する符号化モードパラメータsの適応を例示する実施例である。プロセスが開始されると(ブロック1205)、まず、入力ベクトルx(n)を読み出す(ボックス1210)。G/R専用モードの2つの主要なプロセスとして、シンボル符号化(ボックス1215)および符号化モードパラメータ適応(ボックス1220)がある。シンボル符号化プロセスは、まず、表2にG/R専用モードについて示されているように、写像値uを定義する(ボックス1225)。次に、適応G/R符号器を用いて入力値を符号化する(ボックス1230)。なお、適応G/R符号器は、図14に示すようにG/Rパラメータkの適応を使用する。シンボル符号化プロセスは、G/R符号を出力符号化ビットストリームに付加(ボックス1235)して終了する。
符号化モードパラメータ適応プロセスは、まず、uの値がゼロに等しいかどうかを判断する(ボックス1240)。uがゼロに等しい場合、Sを第1の整数定数A1だけ増加させてSを更新し置き換える(ボックス1245)。uがゼロに等しくない場合、Sを第2の整数定数B1だけ減少させてSを更新し置き換える(ボックス1250)。最後に、sをS割るLに等しいと置き(ボックス1255)、プロセスは終了する(ボックス1260)。
[RLGRモード]
図13は、RLGRモードの符号化の詳細と、付随する符号化モードパラメータsの適応を例示する実施例である。プロセスが開始されると(ブロック1305)、まず、入力ベクトルx(n)を読み出す(ボックス1310)。今度も、RLGRモードの2つの主要なプロセスとして、シンボル符号化(ボックス1315)および符号化モードパラメータ適応(ボックス1320)がある。しかし今度は、シンボル符号化プロセスは、適応ランレングス符号器および適応G/R符号器を用いて入力値x(n)を符号化する。
シンボル符号化プロセスは、まず、xの値がゼロに等しいかどうかを判断する(ボックス1325)。xの値がゼロに等しい場合、runをrun+1で置き換える(ボックス1330)。次に、run=2sであるかどうかを判断する(ボックス1335)。すなわち、ランが完全ランかそれとも不完全ランかを調べる。ランが不完全ランである場合、プロセスは終了する(ポイント1340)。ランが完全ランである場合、bit=0をビットストリームに付加する(ボックス1345)。そして、runの値をゼロに等しいと置く(ボックス1350)。
xの値がゼロに等しくない場合(ボックス1325)、bit=1をビットストリームに付加する(ボックス1355)。次に、runのsビット2進値(すなわち不完全ランの長さをsビットで表したもの)をビットストリームに付加する(ボックス1360)。そして、適応G/R符号器を用いて不完全ランの後の値を符号化する。具体的には、写像値uを定義し(ボックス1365)、適応G/R符号器を用いてその値を符号化し、そのG/Rをビットストリームに付加する(ボックス1370)。なお、この場合も、適応G/R符号器は、図14に示すようなG/Rパラメータkの適応を使用する。シンボル符号化プロセスは、runをゼロに等しいと置く(ボックス1380)ことで終了する。
符号化モードパラメータ適応プロセスは、xの値がゼロに等しい場合(ボックス1325)、Sを第3の整数定数A2だけ増加させてSを更新し置き換える(ボックス1385)。xの値がゼロに等しくない場合(ボックス1325)、Sを第4の整数定数B2だけ減少させてSを更新し置き換える(ボックス1390)。最後に、sをS割るLに等しいと置き(ボックス1395)、プロセスは終了する(ボックス1398)。前述のように、Lの値を2のべき乗に選択すれば、Lによる除算はシフト演算で実行できる。
[ゴロム/ライス(k)パラメータの適応]
G/Rパラメータkは、それぞれの入力値またはストリングが符号化された後で適応を行う。分数適応を用いる場合、kを直接適応させるのではなく、実際には、スケーリングされたG/RパラメータKを適応させる。表4は、G/Rパラメータkの適応規則を示している。値uを符号化した後、適応は、p=u>>k(これは、uを右にk桁シフトすることを意味する)という適応値によって制御される。適応後、kの値をk=K/Lとする。ここでLは定数である。本実施例ではL=16である。
Figure 2006129467
表1のG/R符号はパラメータkに依存する。例えば、不完全ランの後の値が13である場合、13に対するGR符号は「1111111111110」(k=0の場合)であり、k=1の場合は「11111101」である。kが大きいほど、13を表す数値は小さくなる。また、kが小さいほど、13を表す数値は大きくなる。したがって、パラメータkが既知でなければならない。これは、適応RLGR符号器およびその方法は、sおよびkの良い値を選択する場合にうまく働くことができることを意味する。しかし、大きいkの値を用いることが常に有利というわけではない。というのは、そうすると、表1に示したように、より小さい入力データの値に対してストリングが長くなるからである。すなわち、kの値の良好な選択は入力データに依存する。値が13である場合、大きいkの値を用いるのは良い考えである。しかし、不完全ランの後の値が「1」であるとすると、より小さいkの値が望ましい。したがって、不完全ランの後の値が小さい場合には小さいkを使用するほうが良く、値が大きい場合には大きいkを使用するほうが良い。このように、kの選択は値の確率に関係している。従来技術にはこのことに関する多くの理論研究がある。入力データの確率が既知であれば(例えば、入力データが、減衰を制御する単一のパラメータが存在するラプラス分布である場合)、減衰パラメータから、使用すべきパラメータkを計算することができる周知の公式がある。これにより、平均として、写像はできるだけ少ないビット数を使用することが可能となる。
したがって、kパラメータが適応的であることが重要である。そうすれば、入力データに大きい値が現れた場合、大きい値に対してはkがより大きいほうが良いので、kを増加させれば良い。他方、小さい値が現れた場合、kを減少させれば良い。直観的に分かるように、大きい数値に対してkを増加させ、小さい数値に対してkを減少させると良い。そうすれば、kが(分数適応を用いる場合のように)十分小さいペースで変化する限り、入力データに対する最適なパラメータが常に正しく追跡されることになる。
表4に示したkの適応規則は全く新規なものである。適応RLGR符号器およびその方法においては、ゼロの不完全ランの後に任意の値が現れる可能性があり、この値を符号化しなければならない。符号化は、適応G/R符号器およびG/Rパラメータkを用いて行われる。表4を参照すると、入力データはxである。入力データxは任意の整数であり得るが、小さいxのほうが現れやすい(正であることも、負であることもあり得る)。しかし、G/R符号化は正の数のみに対するものである。xの簡単な写像を用いて(式4を参照)xをuに写像する。kの適応は適応値pによって制御される。適応値pは、uを右にk桁シフトしたものとして定義される。したがって、適応値pはuをスケールダウンしたものである。あるいは同じことであるが、pパラメータはu/2kの整数近似である。右にk桁シフトすることは、その数を2kで除算することと等価である。例えば、ある数を右に5ビットシフトすれば、これはその数を32(すなわち25)で割るのと同じである。剰余は捨て、商だけを用いる。
表4を参照すると、適応値pがゼロに等しい場合、Kを第5の整数定数B3だけ減少させてKを更新し置き換える。適応値pが1に等しい場合、Kは不変である。適応値pが1よりも大きい場合、Kを適応値pだけ増加させてKを更新し置き換える。
適応値pが1に等しい場合、これはuの値が2kに近いことを意味する。これは、パラメータkが正しいことに相当する値である。そこで、表4に示したように変更はない。適応値pの値が0である場合、これは入力値が2kよりも小さいことを意味する。すなわち、(入力値が2kよりも小さいので)kを減少させ始めるべき時である。適応値pが1よりも大きい場合ははるかに起こりにくい。というのは、入力値が非常に大きくなる可能性は低いからである。しかし、数値が大きくp>1である場合は、kパラメータを増加させ始めるべき時である。
[適応G/R符号器]
図14は、G/Rパラメータkの適応規則を含む、適応G/R符号化モジュールの符号化の詳細を例示する実施例である。なお、kの適応は、G/R専用モードおよびRLGRモードの両方で用いられるが、図面が繁雑になるのを避けるために図12および図13には示していない。プロセスが開始されると(ブロック1405)、まず、入力値uを読み出す(ボックス1410)。適応G/Rモードの2つの主要なプロセスとして、G/R符号化(ボックス1415)およびG/Rパラメータ適応(ボックス1420)がある。
G/R符号化プロセスは、まず、適応値pと、vを計算する(ボックス1425)。ビットストリームに、pビットの1を付加する(ボックス1430)。次に、vのkビット2進値をビットストリームに付加する(ボックス1435)。これらの動作は、表1で定義したゴロム/ライス符号器を構成する。
G/Rパラメータ適応プロセスは、適応値pが1に等しいかどうかを判断することを含む(ボックス1440)。適応値pが1に等しい場合、適応値pを変えずに据え置く(ポイント1445)。そうでない場合、次に、適応値pがゼロに等しいかどうかを判断する(ボックス1450)。適応値pがゼロに等しい場合、Kを第5の整数定数B3だけ減少させてKを更新し置き換える(ボックス1455)。そうでない場合、Kを適応値pだけ増加させてKを更新し置き換える(ボックス1460)。最後に、kをK割るLに等しいと置き(ボックス1465)、プロセスは終了する(ボックス1470)。
[結果]
本実施例のRLGR符号器およびその方法を、イメージ、オーディオ、および地図データの圧縮のためのアプリケーションにおいて実施した。これらのアプリケーションにおいてRLGR符号器およびその方法を使用した結果、圧縮比は最も高度なエントロピー符号器に匹敵し、それにもかかわらず実装はより簡単であった。
具体的には、整数データのための従来のエントロピー符号器に対して、RLGR符号器およびその方法は、図1のような広範囲のクラスの情報源シンボル確率分布に対して、(情報源エントロピーで決まる)理論的最大値に近い圧縮比を達成する。例として、周知のゴロム−ライス符号器およびハフマン符号器が効率的であるのは、情報源エントロピーがシンボル当たり1ビット以上の場合だけである。
[VIII.復号化]
適応RLGRコーデックおよびその方法は、上記の符号器に基づいて正確に実現可能な復号器も含む。図2Bを参照すると、コンピューティングデバイス(ボックス250)が、ちょうどRLGR復号器240を実現することができる。適応RLGR復号器240およびその方法は、符号化ビットストリーム(ボックス230)から符号語を受け取る。次に、適応RLGR復号器240は、G/R専用モードまたはRLGRモードの規則に対応する逆の規則を適用することによって符号語を復号化する。次に、符号器(前述)とちょうど同じ規則を用いて符号化モードパラメータおよびG/Rパラメータを適応させる。最後に、復号化(再構成)された整数データを出力する(ボックス260)。
符号化規則は一意復号可能であり、復号器の適応規則は符号器のものと同一であるので、符号化規則および適応規則の上記の説明は、ちょうど復号器の動作の説明にもなっている。
以上、例示および説明の目的で本発明について記載した。これは、網羅的であることも、本発明を開示されている通りの形態に限定することも意図していない。上記の教示に照らして多くの変更および変形が可能である。本発明の範囲は、この発明の詳細な説明によってではなく、添付の特許請求の範囲によって限定されるものとする。
本明細書に開示される適応ランレングス・ゴロム/ライス(RLGR)符号器およびその方法を用いると有効に作用する整数値の典型的な確率分布を示す図である。 本明細書に開示されるRLGRコーデックおよびその方法の符号器部分の例示的実施態様を示すブロック図である。 本明細書に開示されるRLGRコーデックおよびその方法の復号器部分の例示的実施態様を示すブロック図である。 図2に示した適応RLGRコーデックおよびその方法を実施し得る好適なコンピューティングシステム環境の一例を示す図である。 図2に示した適応RLGR符号器のコンポーネントを示す全体ブロック図である。 図2および図4に示した適応RLGR符号器およびその方法の全体的動作を示す全体流れ図である。 図5に示した適応RLGR符号器およびその方法のさらなる詳細を示す流れ図である。 図4に示した適応RLGR符号器およびその方法の符号器モードセレクタの動作の詳細流れ図である。 図4に示した適応RLGR符号器およびその方法の符号化モードパラメータ適応モジュールの動作の詳細流れ図である。 図4に示した適応RLGR符号器およびその方法のゴロム/ライス(G/R)パラメータ適応モジュールの動作の詳細流れ図である。 図9に示したゴロム/ライス(G/R)パラメータ適応モジュールによって用いられる適応値の計算の詳細流れ図である。 適応RLGR符号器およびその方法の符号器モードを選択することの詳細を例示する実施例の図である。 G/R専用モードの符号化の詳細と、付随する符号化モードパラメータsの適応を例示する実施例の図である。 RLGRモードの符号化の詳細と、付随する符号化モードパラメータsの適応を例示する実施例の図である。 適応G/R専用モードの符号化の詳細と、G/Rパラメータkの適応規則を例示する実施例の図である。
符号の説明
200 適応RLGR符号器
210 第1のコンピューティングデバイス
220 整数データ
230 符号化ビットストリーム
240 RLGR復号器
250 第2のコンピューティングデバイス
260 再構成された整数データ
300 コンピューティングシステム環境
310 コンピュータ
320 処理ユニット
321 システムバス
330 システムメモリ
331 読み出し専用メモリ(ROM)
332 ランダムアクセスメモリ(RAM)
333 基本入出力システム(BIOS)
334 オペレーティングシステム
335 アプリケーションプログラム
336 他のプログラムモジュール
337 プログラムデータ
340 非リムーバブルメモリインタフェース
341 ハードディスクドライブ
344 オペレーティングシステム
345 アプリケーションプログラム
346 他のプログラムモジュール
347 プログラムデータ
350 リムーバブルメモリインタフェース
351 磁気ディスクドライブ
352 磁気ディスク
355 光ディスクドライブ
356 光ディスク
360 ユーザ入力インタフェース
361 ポインティングデバイス
362 キーボード
370 ネットワークインタフェース
371 ローカルエリアネットワーク(LAN)
372 モデム
373 広域ネットワーク(WAN)
380 リモートコンピュータ
381 メモリ記憶デバイス
385 リモートアプリケーションプログラム
390 ビデオインタフェース
391 モニタ
395 出力周辺インタフェース
396 プリンタ
397 スピーカ
400 入力値
405 符号器モードセレクタ
410 ゴロム/ライス符号器
415 ランレングス符号器
420 符号語
430 符号化モードパラメータ適応モジュール
435 更新された符号化モードパラメータ
440 ゴロム/ライスパラメータ適応モジュール
445 更新されたG/Rパラメータ
450 次の入力値
1000 適応値計算モジュール

Claims (20)

  1. ディジタルデータを符号化する方法(200)において、
    前記ディジタルデータを符号化ビットストリームへと符号化するために第1の符号化モードと第2の符号化モードの間で選択を行うステップであって、前記第1のモードはランレングス符号器以外の第1のタイプのエントロピー符号器を使用し、前記第2のモードはランレングス符号器と組み合わされた前記第1のタイプのエントロピー符号器を使用する、選択を行うステップ(510)と、
    後方適応技法を用いて前記符号化ビットストリームに基づいて前記第1のモードおよび前記第2のモードの符号器を適応させるステップ(520)と
    を含むことを特徴とするディジタルデータを符号化する方法。
  2. 前記第1のタイプのエントロピー符号器が、前記第2のモードにおいて前記ランレングス符号器と組み合わされてランレングス・ゴロム/ライス(RLGR)符号器を形成する(610)ゴロム/ライス符号器であることを特徴とする請求項1に記載の方法。
  3. 前記第1のモードと第2のモードの間で選択を行うために符号化モードパラメータを使用するステップ(520)をさらに含むことを特徴とする請求項2に記載の方法。
  4. ゴロム/ライスパラメータを更新するステップ(650)をさらに含み、該更新するステップが、
    前記ゴロム/ライスパラメータに関する適応値を定義するステップ(910)と、
    前記適応値がゼロに等しい場合、前記ゴロム/ライスパラメータを第3の整数定数だけ減少させるステップ(920)と、
    前記適応値が1に等しい場合、前記ゴロム/ライスパラメータを変えずに据え置くステップ(930)と、
    前記適応値が1よりも大きい場合、前記ゴロム/ライスパラメータを前記適応値だけ増加させるステップ(935)と
    を含むことを特徴とする請求項2に記載の方法。
  5. 生成される各符号語の後で前記第1のモードおよび前記第2のモードの符号器を適応させるステップ(650)をさらに含むことを特徴とする請求項2に記載の方法。
  6. コンピュータ可読媒体(310,331,332,341,352,356)において、コンピュータシステム(300)上で実行される場合に該コンピュータシステム(300)に対して請求項1に記載の方法を実行させるコンピュータ実行可能命令を備えたことを特徴とするコンピュータ可読媒体。
  7. 整数値を有するディジタル整数データを符号化する方法において、
    前記ディジタル整数データの入力ストリングxを受け取るステップ(1110)と、
    (a)適応ゴロム/ライス(G/R)符号器のみを使用する第1のモードと、(b)適応ランレングス符号器および前記適応G/R符号器を使用する第2のモードと、のいずれかを使用することを選択するために符号化モードパラメータsを使用するステップ(1115,1120,1125,1130,1135)と、
    Lをスケーリングパラメータとして、スケーリングされた符号化モードパラメータをS=s×Lで定義するステップ(1255)と、
    前記第1および第2のモードの適応G/R符号器において、スケーリングされたG/RパラメータKを使用するステップ(1115)と、
    後方適応技法を用いて、前記スケーリングされた符号化モードパラメータS(1395)および前記スケーリングされたG/RパラメータK(1465)を更新するステップと
    を含むことを特徴とするディジタル整数データを符号化する方法。
  8. s=0の場合、前記第1のモードで前記入力ストリングを符号化するステップ(1130)と、
    |x|=0の場合、Sを第1の整数定数A1だけ増加させるステップ(1245)と、
    |x|>0の場合、Sを第2の整数定数B1だけ減少させるステップ(1250)と
    をさらに含むことを特徴とする請求項7に記載の方法。
  9. s>0の場合、前記第2のモードで前記入力ストリングを符号化するステップ(1135)と、
    r=2sであるようなr個のゼロからなるランをxが含む場合、Sを第3の整数定数A2だけ増加させるステップ(1385)と、
    r<2sであるようなr個のゼロからなるランをxが含む場合、Sを第4の整数定数B2だけ減少させるステップ(1390)と
    をさらに含むことを特徴とする請求項7に記載の方法。
  10. 適応値pを定義するステップ(1425)と、
    p=0の場合、Kを第5の整数定数B3だけ減少させるステップ(1455)と、
    p=1の場合、Kを変えずに据え置くステップ(1445)と、
    p>1の場合、Kをpだけ増加させるステップ(1460)と
    をさらに含むことを特徴とする請求項9に記載の方法。
  11. 符号化ビットストリーム(230)を復号化する方法において、
    前記符号化ビットストリームから符号語を受け取るステップ(230)と、
    前記符号語を復号化するために第1の復号化モードと第2の復号化モードの間で選択を行うステップであって、前記第1のモードはランレングス復号器以外の第1のタイプのエントロピー復号器を使用し、前記第2のモードはランレングス復号器と組み合わされた前記第1のタイプのエントロピー復号器を使用する、選択を行うステップ(240)と、
    後方適応技法を用いて前記第1のモードおよび前記第2のモードの復号器を適応させるステップ(240)と、
    前記復号化された符号語からディジタルデータの値を再構成するステップ(260)と
    を含むことを特徴とする符号化ビットストリームを復号化する方法。
  12. 後方適応技法を有する適応ランレングス・ゴロム/ライス(RLGR)符号器(200)を用いてディジタル整数データを符号化することから得られる符号化ビットストリーム(230)を復号化するコンピュータ実施処理方法において、
    前記符号化ビットストリームから前記符号化されたディジタル整数データを表現する符号語を受け取るステップ(230)と、
    ゴロム/ライス(G/R)復号化のみを実行する第1の復号器モードと、ランレングス復号化およびG/R復号化を実行する第2の復号器モードとの間の切替を行うステップ(240)と、
    前記第1および第2の復号器モードのいずれが使用されるかを制御するために符号化モードパラメータsを使用するステップ(715)と、
    前記後方適応技法を用いて、各符号語が復号化された後に前記符号化モードパラメータsを更新するステップ(855)と
    を含むことを特徴とするコンピュータ実施処理方法。
  13. 前記第1および第2の復号化モードの両方のG/R復号化を制御するためにゴロム/ライス(G/R)パラメータkを定義するステップ(905)と、
    前記後方適応技法を用いて、各符号語が復号化された後に前記G/Rパラメータkを更新するステップ(940)と
    をさらに含むことを特徴とする請求項12に記載のコンピュータ実施処理方法。
  14. s=0である場合に前記第1の復号化モードに切り替えるステップ(720)をさらに含むことを特徴とする請求項13に記載のコンピュータ実施処理方法。
  15. s>0である場合に前記第2の復号化モードに切り替えるステップ(725,730,735)をさらに含むことを特徴とする請求項13に記載のコンピュータ実施処理方法。
  16. スケーリングパラメータLを定義するステップ(1255)と、
    スケーリングされた符号化モードパラメータをS=s×Lで定義するステップ(1255)と、
    スケーリングされたG/RパラメータをK=k×Lで定義するステップ(1465)と、
    前記後方適応技法および適応規則を用いて、各符号語が復号化された後にsおよびkの代わりに前記スケーリングされた符号化モードパラメータS(1385,1390)および前記スケーリングされたG/RパラメータK(1455,1460)を更新するステップと
    をさらに含むことを特徴とする請求項13に記載のコンピュータ実施処理方法。
  17. 整数値を含む符号化されたディジタル整数データ(230)を表現する符号語を有する符号化ビットストリームを復号化するための適応ランレングス・ゴロム/ライス(RLGR)復号器(240)において、
    前記符号化ビットストリーム(230)の符号語を復号化する適応ゴロム/ライス(G/R)復号器(240)と、
    前記符号語を復号化する適応ランレングス復号器(240)と、
    前記適応G/R復号器のみを含む第1の復号化モードと、前記適応ランレングス復号器および前記適応G/R復号器の両方を含む第2の復号化モードとの間で切替を行うために符号化モードパラメータsを使用する手段(405)と、
    適応規則を有する後方適応技法を用いて前記符号化モードパラメータsを更新する手段(435)と
    を備えたことを特徴とする適応RLGR復号器。
  18. 前記適応RLGR復号器(240)において、
    前記第1および第2の両方の復号化モードの適応G/R復号器を用いて前記符号語を復号化するためのゴロム/ライス(G/R)パラメータk(445)と、
    適応規則を有する前記後方適応技法を用いて前記G/Rパラメータkを更新する手段(440)と
    をさらに備えたことを特徴とする請求項17に記載の適応RLGR復号器。
  19. 前記適応RLGR復号器(240)において、前記適応規則が、
    前記符号化モードパラメータsについて、
    s=0の場合、sを第1の整数定数A1だけ増加させ(1245)、
    s>0の場合、sを第2の整数定数B1だけ減少させ(1250)、
    r個のゼロからなるランが、r=2sであるような完全ランである場合、sを第3の整数定数A2だけ増加させ(1385)、
    r個のゼロからなるランが、r<2sであるような不完全ランである場合、sを第4の整数定数B2だけ減少させる(1390)
    ことにより、前記符号化モードパラメータsを更新する手段(430)と、
    前記G/Rパラメータkについて、
    適応値pを定義し(1425)、
    p=0の場合、kを第5の整数定数だけ減少させ(1455)、
    p=1の場合、kをそのまま保持し(1445)、
    p>1の場合、kをpだけ増加させる(1460)
    ことにより、前記G/Rパラメータkを更新する手段(440)と
    をさらに備えたことを特徴とする請求項18に記載の適応RLGR復号器。
  20. 前記適応RLGR復号器(240)において、
    スケーリングされた符号化モードパラメータSおよびスケーリングされたG/RパラメータKを、
    スケーリングパラメータLを定義し、
    S=s×Lを定義し(1255)、
    K=k×Lを定義する(1465)
    ことにより定義する手段と、
    それぞれの適応規則を用いてsおよびkの代わりにSおよびKを更新する手段と
    をさらに備えたことを特徴とする請求項19に記載の適応RLGR復号器。
JP2005284786A 2004-10-29 2005-09-29 整数データの無損失適応符号化・復号化 Pending JP2006129467A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/978,157 US6987468B1 (en) 2004-10-29 2004-10-29 Lossless adaptive encoding and decoding of integer data
US10/976,623 US7015837B1 (en) 2004-10-29 2004-10-29 Lossless adaptive encoding and decoding of integer data

Publications (2)

Publication Number Publication Date
JP2006129467A true JP2006129467A (ja) 2006-05-18
JP2006129467A5 JP2006129467A5 (ja) 2008-11-13

Family

ID=35929810

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005284786A Pending JP2006129467A (ja) 2004-10-29 2005-09-29 整数データの無損失適応符号化・復号化

Country Status (3)

Country Link
EP (1) EP1653746A3 (ja)
JP (1) JP2006129467A (ja)
KR (1) KR20060051157A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008072562A (ja) * 2006-09-15 2008-03-27 Nec Corp 符号化装置とその方法、復号装置とその方法、および符号化ならびに復号プログラム
KR100903109B1 (ko) * 2006-12-13 2009-06-16 한국전자통신연구원 오디오 신호의 무손실 부호화/복호화 장치 및 그 방법
JP2016213526A (ja) * 2015-04-28 2016-12-15 キヤノン株式会社 画像符号化装置及びその制御方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9002913B2 (en) * 2009-06-22 2015-04-07 Universidad De Barcelona Method for fully adaptive calibration of a prediction error coder
US9936200B2 (en) 2013-04-12 2018-04-03 Qualcomm Incorporated Rice parameter update for coefficient level coding in video coding process
US10021419B2 (en) 2013-07-12 2018-07-10 Qualcomm Incorported Rice parameter initialization for coefficient level coding in video coding process
WO2019021552A1 (ja) * 2017-07-25 2019-01-31 日本電信電話株式会社 符号化装置、復号装置、符号列のデータ構造、符号化方法、復号方法、符号化プログラム、復号プログラム
EP3734973B1 (en) * 2019-05-02 2023-07-05 Sick IVP AB Method and encoder relating to encoding of pixel values to accomplish lossless compression of a digital image
CN116505952B (zh) * 2023-06-27 2023-09-08 厦门立林科技有限公司 红外码压缩方法、装置、智能设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10285601A (ja) * 1997-04-10 1998-10-23 Canon Inc 符号化装置及び方法及び方法を記憶した記憶媒体
JP2000115781A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
JP2001076166A (ja) * 1999-08-11 2001-03-23 K Media Co Ltd アニメーション動画像の符号化方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735254B2 (en) * 2001-06-29 2004-05-11 Qualcomm, Inc. DCT compression using Golomb-Rice coding

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10285601A (ja) * 1997-04-10 1998-10-23 Canon Inc 符号化装置及び方法及び方法を記憶した記憶媒体
JP2000115781A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
JP2001076166A (ja) * 1999-08-11 2001-03-23 K Media Co Ltd アニメーション動画像の符号化方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008072562A (ja) * 2006-09-15 2008-03-27 Nec Corp 符号化装置とその方法、復号装置とその方法、および符号化ならびに復号プログラム
JP4655013B2 (ja) * 2006-09-15 2011-03-23 日本電気株式会社 符号化装置とその方法、復号装置とその方法、および符号化ならびに復号プログラム
KR100903109B1 (ko) * 2006-12-13 2009-06-16 한국전자통신연구원 오디오 신호의 무손실 부호화/복호화 장치 및 그 방법
JP2016213526A (ja) * 2015-04-28 2016-12-15 キヤノン株式会社 画像符号化装置及びその制御方法

Also Published As

Publication number Publication date
EP1653746A2 (en) 2006-05-03
EP1653746A3 (en) 2006-05-10
KR20060051157A (ko) 2006-05-19

Similar Documents

Publication Publication Date Title
US6987468B1 (en) Lossless adaptive encoding and decoding of integer data
US7245235B2 (en) Lossless adaptive encoding and decoding of integer data
JP2006126810A (ja) 後方適応規則を用いた整数データの無損失適応Golomb−Rice符号化および復号化
JP2006129467A (ja) 整数データの無損失適応符号化・復号化
JP5736032B2 (ja) 算術符号化のための適応型2値化
US6906647B2 (en) Method and apparatus for arithmetic coding, including probability estimation state table creation
US20060171533A1 (en) Method and apparatus for encoding and decoding key data
JP4717780B2 (ja) 符号化装置及びその制御方法
US10666289B1 (en) Data compression using dictionary encoding
WO2007056657A2 (en) Extended amplitude coding for clustered transform coefficients
JP7046325B2 (ja) デジタルデータ圧縮のための方法及びデバイス
JP6426212B2 (ja) 制限されたキャリー演算による算術コーディングを遂行するための方法及び装置
JP5542808B2 (ja) データ・セクションのビット量の符号化方法および対応する復号方法、オーディオおよび/またはビデオ・データの符号化または復号方法、オーディオおよび/またはビデオ・データの伝送方法ならびにオーディオおよび/またはビデオ・データを含む記憶媒体
KR20040075944A (ko) 디지털 정보신호의 데이터 압축 및 압축해제
US20220109891A1 (en) Features of range asymmetric number system encoding and decoding
EP3149947B1 (en) Dedicated arithmetic encoding instruction
Mohamed Wireless Communication Systems: Compression and Decompression Algorithms
TW202218431A (zh) 對一序列資訊值進行算術編碼之算術編碼器與進行算數解碼之算數解碼器及用以算術編碼與解碼一序列資訊值之方法及實行該等方法之電腦程式
KR20160105848A (ko) 데이터 심볼들에 대해 산술 코딩을 수행하는 방법 및 장치
JP2011176831A (ja) 符号化装置及びその制御方法
Boyd Determining Optimal Compression Effort For JPEG-LS Images
JP2010118871A (ja) 画像処理装置、画像処理方法、プログラム及び記憶媒体

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080929

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100914

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110225