JP2008535327A - 適応型データ圧縮、多次元予測、複数符号復号の改善による改良により前処理されたロスレスデータ変換の方法および装置 - Google Patents
適応型データ圧縮、多次元予測、複数符号復号の改善による改良により前処理されたロスレスデータ変換の方法および装置 Download PDFInfo
- Publication number
- JP2008535327A JP2008535327A JP2008503266A JP2008503266A JP2008535327A JP 2008535327 A JP2008535327 A JP 2008535327A JP 2008503266 A JP2008503266 A JP 2008503266A JP 2008503266 A JP2008503266 A JP 2008503266A JP 2008535327 A JP2008535327 A JP 2008535327A
- Authority
- JP
- Japan
- Prior art keywords
- error
- value
- predetermined
- target
- calculated
- 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
- 238000000034 method Methods 0.000 title claims description 101
- 230000003044 adaptive effect Effects 0.000 title abstract description 12
- 238000006243 chemical reaction Methods 0.000 title abstract description 10
- 238000013144 data compression Methods 0.000 title description 7
- 238000007906 compression Methods 0.000 claims abstract description 73
- 230000006835 compression Effects 0.000 claims abstract description 72
- 238000004364 calculation method Methods 0.000 claims description 44
- 238000012545 processing Methods 0.000 claims description 42
- 230000008569 process Effects 0.000 claims description 28
- 238000003491 array Methods 0.000 claims description 6
- 238000012886 linear function Methods 0.000 claims description 5
- 238000012935 Averaging Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims 7
- 239000011159 matrix material Substances 0.000 description 47
- 230000006870 function Effects 0.000 description 17
- 230000006837 decompression Effects 0.000 description 16
- 238000011156 evaluation Methods 0.000 description 16
- 230000008859 change Effects 0.000 description 13
- 239000003550 marker Substances 0.000 description 11
- 238000005259 measurement Methods 0.000 description 9
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000007781 pre-processing Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000012950 reanalysis Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000003325 tomography Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/93—Run-length coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
- H04N19/152—Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
適応圧縮、多次元予測、複数符号復号のオプションを有する、改良された、ロスレス・データ・変換の操作である。
Description
本発明は、圧縮、解凍のようなロスレスデータ変換に関する。とりわけ本発明は適応型データ圧縮、多次元予測及び/または複数符号復号を利用するロスレス変換に関する。
ビデオデータは通常巨大なメモリブロックを用いて符号化されている。1つのビデオフレームにでさえ何メガバイトもメモリを必要とする。ビデオデータを記憶させ、高コミュニケーション帯域幅を用いての転送に、膨大なメモリを必要とする。そのため、ビデオデータを圧縮することは非常に有利となる。しかしながら、一部の圧縮方法ではその過程で情報が失われていた。
いくつかのアプリケーションは種々の程度のロスへの耐性を有しているが、多くアプリケーションはロスレス圧縮を必要としている。
典型的なロスレスビデオデータ圧縮は予測符号化(DPCM)という方法が用いられている。これは現在の画素の値が隣接するピクセルとの差分に置き換えられるものである。画素の値は走査線に沿ってややゆっくりと変化するため、値の変化はゼロに近いので、圧縮アルゴリズムの作成はとりわけ効果的である。しかしながら、ゆっくりとした画素の値の間の変化は、垂直または対角線上にも多く発生する。画像の捜査線上の隣接するピクセルだけを利用する手法は最適では無い。
リアルタイムビデオデータの圧縮にハフマン符号化を用いることができる。ハフマンツリーがつくられ、ツリーはデータの再符号化に用いられる。基本的な考え方は、頻繁に出現するビデオコードがより少ない数のビットのハフマンコードに置き換えられる。
めったに起こらない、たまに現れるビデオコードはビデオコード自体より多くの数のビットを要求するハフマンコードで記述されることがある。これにもかかわらず、ハフマンコードを用いただけで、全体でみると圧縮比の向上になる。
ハフマン符号化により得られた利益や他のデータ圧縮分野における前進にもかかわらず、現在の発明者たちは機能強化や改善、関連する分野における種々の問題に対する解決手法の開発に力を注いできた。
詳細な説明
ハードウェア
構成
開示された発明の1つの局面はデータ変換装置、様々なハードウェアコンポーネントとの相互接続によって具体化される可能性を有する、に関係がある。いくつかの例を挙げると、データ変換装置は特定用途向け集積回路(ASIC)、ビデオカード、ラックに差した電子モジュール、外部処理モジュール、コンピュータプログラム、サブルーチン、ファームウェア、論理回路または様々な他の形体で実現することができる。
ハードウェア
構成
開示された発明の1つの局面はデータ変換装置、様々なハードウェアコンポーネントとの相互接続によって具体化される可能性を有する、に関係がある。いくつかの例を挙げると、データ変換装置は特定用途向け集積回路(ASIC)、ビデオカード、ラックに差した電子モジュール、外部処理モジュール、コンピュータプログラム、サブルーチン、ファームウェア、論理回路または様々な他の形体で実現することができる。
データ変換装置はさらにそれぞれが1つ以上のハードウェアデバイス、ソフトウェアデバイス、1つ以上のハードウェアまたはソフトウェアデバイスの一部もしくは前記の組み合わせにより実現される、のように様々なサブコンポーネントを含むことがある。以上のハードウェアの構造の特色、典型的なデジタルデータ処理装置、論理回路および信号保持媒体に関して以下により詳細に記載されている。
典型的なデジタルデータ処理装置
ある例として、データ変換装置はデータ処理実体、それ自体がさまざまなフォームによりもたらされる、により実行される。1つの例が、ハードウェアコンポーネントと、図9のデジタルデータ処理装置900との相互接続により例示されているデジタルデータ処理装置である。
ある例として、データ変換装置はデータ処理実体、それ自体がさまざまなフォームによりもたらされる、により実行される。1つの例が、ハードウェアコンポーネントと、図9のデジタルデータ処理装置900との相互接続により例示されているデジタルデータ処理装置である。
装置900は例えばストレージ904と結合されたマイクロプロセッサ、パーソナルコンピュータ、ワークステーション、コントローラ、マイクロコントローラ、ステートマシンまたは他の処理マシンのようにプロセッサ902を含む。現在の例では、ストレージ904は不揮発性ストレージ908と同様高速アクセスストレージ906を含む。高速アクセスストレージ906はランダムアクセスメモリ(RAM)を含み、プロセッサ902により実行されたプログラミング指令を記憶させられる。不揮発性ストレージ908は例えばバッテリーバックアップRAM、EEPROM、フラッシュPROM、1つ以上の磁気データストレージディスク、例えば「ハードドライブ」、テープドライブまたは他の適当なストレージデバイスを含む。装置900はまた、入出力装置910、例えばライン、バス、ケーブル、電磁気リンク、チャンネル、インターフェースやプロセッサ902が装置900への外部の他のハードウェアとデータ交換を行う他の手段、を含む。
以上の詳細な説明にもかかわらず、上述の装置が本発明を超えない範囲で異なる構造のマシンで実施できることを、本開示の恩恵を享受する当業者は理解する。特別な例として、906、908のいずれかの部品は除去出来る。更に、記録装置904、906及び/または908は処理装置902上で実現し有る、また装置900の外部に準備される。
信号保持媒体
本開示のいずれかの機能性が1つ以上の、様々な信号保持媒体で実施され得る機械実施プログラム制御列を1つ以上用いて実装される。図9ではこのような信号保持媒体は例えば、記録装置904や他の信号保持媒体、例えばプロセッサ902により直接あるいは間接的にアクセスできる取り外し可能なメディア1000(図10)を含む。たとえ、記録装置906、メディア1000や他の場所に保管されていても、命令は機械読み取り可能なデータ記録メディアに保管される。
本開示のいずれかの機能性が1つ以上の、様々な信号保持媒体で実施され得る機械実施プログラム制御列を1つ以上用いて実装される。図9ではこのような信号保持媒体は例えば、記録装置904や他の信号保持媒体、例えばプロセッサ902により直接あるいは間接的にアクセスできる取り外し可能なメディア1000(図10)を含む。たとえ、記録装置906、メディア1000や他の場所に保管されていても、命令は機械読み取り可能なデータ記録メディアに保管される。
いくつかの例では直接記録装置、例えば通常の「ハードドライブ」、「RAID」、もしくは他の直接アクセス記憶装置「DASD」、磁気もしくは光学テープなどのシリアルアクセス記憶装置、電子不揮発性メモリ、例えばROM、EPROM、フラッシュPROMあるいはEEPROM、バッテリーバックアップRAM、光記憶装置、例えばCD−ROM、WORM、DVDやデジタル光学テープ、紙のパンチ・カードもしくは、アナログもしくはデジタル転送メディアやアナログ通信リンクや無線通信などの他の適当な信号保持媒体を包含している。例示された実施形態で、機械可読な命令はアセンブリー言語やC言語をコンパイルした、ソフトウェアオブジェクトコードを含んでいる。
論理回路
上記で議論された信号保持媒体と対照的に、異なる実施形態ではコンピュータで実行された命令の代わりに論理回路を用いてここで説明する演算制御列の一部または全部を実行する。速度、費用、ツールの値段等の要求に応じて、論理回路は、数千の小さな集積回路よりなる特定用途向け集積回路(ASIC)を製作して実現される。そのようなASICはCOMS、TTL、VLSIまたは他の適当な工事で実行する。他の代替手段はデジタル信号処理チップ(DSP)、ディスクリート部品(例えば抵抗、コンデンサ、ダイオード、インダクタやトランジスタ)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、プログラマブルロジックデバイス(PLD)などを含む。意図的な制限が全くなければ、図11は論理回路のための典型的なパッケージ1100を説明する。ほぼ無尽蔵にある論理回路のためのパッケージの種類は商品、専門書、関連技術に関する知識などの対象である。
上記で議論された信号保持媒体と対照的に、異なる実施形態ではコンピュータで実行された命令の代わりに論理回路を用いてここで説明する演算制御列の一部または全部を実行する。速度、費用、ツールの値段等の要求に応じて、論理回路は、数千の小さな集積回路よりなる特定用途向け集積回路(ASIC)を製作して実現される。そのようなASICはCOMS、TTL、VLSIまたは他の適当な工事で実行する。他の代替手段はデジタル信号処理チップ(DSP)、ディスクリート部品(例えば抵抗、コンデンサ、ダイオード、インダクタやトランジスタ)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、プログラマブルロジックデバイス(PLD)などを含む。意図的な制限が全くなければ、図11は論理回路のための典型的なパッケージ1100を説明する。ほぼ無尽蔵にある論理回路のためのパッケージの種類は商品、専門書、関連技術に関する知識などの対象である。
演算
概要
様々な構造上の特色を説明したので、開示された発明の運用的側面の説明をいくつか行う。上記されたように、開示された発明のいくつかの運用的側面は入力シンボルのロスレス符号化及び復号過程を伴う。さらなるいくつかの改良は適応型圧縮、多次元予測及び複数符号復号を含む。
概要
様々な構造上の特色を説明したので、開示された発明の運用的側面の説明をいくつか行う。上記されたように、開示された発明のいくつかの運用的側面は入力シンボルのロスレス符号化及び復号過程を伴う。さらなるいくつかの改良は適応型圧縮、多次元予測及び複数符号復号を含む。
以下の記述はビデオ圧縮への応用について強調する。今日のデジタルメディア爆発で、ビデオ圧縮はデジタルビデオカメラ、X線マシン、コンピュータ支援トモグラフィー、電波媒体などの分野に応用されている。それでもなお、ビデオ圧縮アプリケーションは意図的な制限なしに提供され、この開示された発明は実質どのような入力シンボルの制御列、一例としてオーディオシグナル、ラジオ電波、レーダー信号など、等しく圧縮解凍適用できる。この点から、「ピクセル」などの語は「部分」を示す、より広い有用の例示的実施形態を例証することを意図し、利用されている。
広く、今回開示された発明の1つの側面が適応型圧縮、多次元予測及び/または複数符号復号を随意使う事による改良されたロスレスデータ変換の過程である。
最適近接前処理及びハフマン符号化方法
図1は高速前処理最適近隣圧縮方法の実施形態を示しており、ここでは一般に参照番号100で示されている。例では大きさ4平方のブロックを用いているが、一般的にはn×m、nは走査線の数より小さい任意の数、mは1つの走査線上のピクセル数より小さい任意の数、のブロックを用いることができると当業者は容易に理解する。
図1は高速前処理最適近隣圧縮方法の実施形態を示しており、ここでは一般に参照番号100で示されている。例では大きさ4平方のブロックを用いているが、一般的にはn×m、nは走査線の数より小さい任意の数、mは1つの走査線上のピクセル数より小さい任意の数、のブロックを用いることができると当業者は容易に理解する。
方法100で圧縮する典型的なビデオストリームは連続したビデオフレームの列、各ビデオフレームは数本の走査線を含み、各走査線は多くのピクセルを含む。方法100は現在の走査線アドレスカウンターをフレーム最上部の走査線に設定する操作102を含む。操作104は現在の走査線の下に残る走査線数が4(n)以下であるか調べる。そうでない場合、操作106が現在の走査線アドレスカウンターを4(n)下げる。本記述及び図1では例として走査線をフレームの一番下から上へ順に番号を付している。しかしながら、実際は、どのような適当な番号の付し方用いても良い。
操作108はカーソルアドレスカウンターを一番目、もしくは走査線の一番左のピクセルにセットする。操作110はカーソルの右のピクセルが4(m)以下か調べる。その場合、コントロールは操作104に戻る。そうでなければ操作112、カーソルアドレスカウンターを右に4(m)進める。例えば、操作114はカーソルピクセルが一番下の右端に位置する4平方(n×m)ピクセルの行列を選択する。
操作116は4個のピクセル差分値(デルタ)、左差分、左上差分、上差分、右上差分、を選択したピクセル行列について計算する。評価測定は4つの差分計算による各差分行列に応じて行われる。評価測定が最良(値が最低)の差分行列が選択され、元の行列は選択された差分行列とマーカーで置換される。マーカーにはハフマン符号化が施される。
操作118はピクセル左差分計算を現在の走査線の下の残り及び最上部の走査線に適用する。ピクセル左差分計算は一番左のピクセルを除き、走査線上の全てのピクセル値を置換する。各ピクセルはそのピクセル値とすぐ左のピクセル値との差で置換される。操作122はランレングス符号化を適用する。例えば、0,0,0,0,1,1,1,1,2,2,2,2のように、同じ値が連続したピクセル値の列の有る場合、これは(4,0)、(4,1)、(4,2)という最初の整数は2番目の整数の繰り返し数を示す、 タプルの組として符号化される。操作124は次にハフマンで全体の結果のフレームの各ピクセルを符号化する。また任意にノイズが多く効果がない画像に対してランレングス符号化がスキップされる。その場合、ランレングス符号化はそれぞれの領域のマーカーに適用される(変化が少しずつで、ノイズが少ない)。
開示された発明の方法の実施形態では、左差分計算は、ピクセル値が元の行列から計算された4×4(n×m)行列を返す。元行列の各ピクセルでは現在のピクセルとすぐ左のピクセルとの値の差が計算される。
左上差分計算はピクセル値が元の行列から計算された4×4(n×m)行列を返す。元行列の各ピクセルでは現在のピクセルとその左斜め上のピクセル値との差が計算される。
上差分計算はピクセル値が元の行列から計算された4×4(n×m)行列を返す。元行列の各ピクセルでは現在のピクセルと真上のピクセル値との差が計算される。
右上差分計算はピクセル値が元の行列から計算された4×4(n×m)行列を返す。元行列の各ピクセルでは現在のピクセルとその右上のピクセル値との差が計算される。
ハフマン符号化はハフマン符号木の作成及びそれに基づいた復号を含む。ハフマン符号木作成には多くの時間を要する。ハフマン符号化を用いたMPEGのような圧縮技術はビデオ全体にハフマン符号木を1つ使用するが、圧縮比が低下するため、多くの場合は満足の行くものとはならない。
開示された制御列はハフマン符号木を定期的に作成する。1つの方法では、一定のフレーム数毎に1つ、ハフマン符号木を作成する。木の作成の頻度は、フレーム毎の木の作成の計算時間が復号時間のおよそ1/10となるように計算される。
もう1つの方法は適応型である。コンピュータが速く、多くの計算時間が使われなくて残っている場合、ハフマン符号木作成はより頻繁に動作し、より良い圧縮比を得られる。問題の1つの解決方法は入力バッファーに注目する。入力バッファーが空、もしくはそれに近くなることは、圧縮システムがビデオ入力に追いついていることを意味し、それゆえ処理時間が他のこと、例えば木の生成、を行うために残されている。このアルゴリズムは入力バッファーサイズを監視し、サイズがいき値を下回るとハフマン符号木の生成を呼び出す。
ハフマン符号木生成の最も高価な部分がイメージ統計の収集なので、もう1つの方法として各フレームの圧縮中に統計収集を行い、そのフレームの前の1つ以上のフレームの統計に基づいて新しい各フレームの新しい符号木の計算を行う。
これには2つの利点があり:(1)データの圧縮または解凍中に統計を計算するので計算時間を節約出来る、(2)ハフマン符号木を圧縮されたストリームへ記録する事は、圧縮解凍両方のコードとも符合木の計算を行う同じデータへのアクセスを有するため、不要である。この方法の主たる不利な点は、ビデオストリーム統計が突然変化すると、前のフレームからの統計が現在のイメージのモデル化を不十分に行い、圧縮比が劇的に低下する可能性があることである。フレーム圧縮後、圧縮コードは、圧縮比がいき値以下となったことを認識し、古い効率の悪い符号木を用いてフレームの圧縮に失敗した間に計算した統計を用いて圧縮をし直す。そして新規の符号木は出力ストリームに含めることができる。統計が突然に変化する事はめったに起こらないので、いくつかのフレームを2回符号化する余分な計算は全体のパフォーマンスに殆ど影響を与えない。
図2は簡単な高速の最良近接圧縮方法の前処理200を表している。方法200は方法100に似ているが、左差分及び上差分の計算のみをおこなう。
方法200によって圧縮される典型的なビデオストリームは連続するビデオフレームを含み、各ビデオフレームはいくつもの走査線を含み、各走査線はいくつもの画素を含む。方法200は現在の走査線アドレスカウンターをフレーム最上部の走査線に設定する操作202を含む。操作204は、現在の走査線の下に残る走査線数が4(n)以下か調べる。そうでない場合、操作206が現在の走査線アドレスカウンターを4(n)下げる。
操作208はカーソルアドレスカウンターを一番目、即ち走査線の一番左のピクセルにセットする。操作210はカーソルの右のピクセルが4(m)以下か調べる。4(m)以下の場合には、制御は操作204に戻る。そうでなければ操作212は、カーソルアドレスカウンターを右に4(m)進める。例えば、操作214はカーソルピクセルが一番下の右端に位置する4平方(n×m)のピクセルの行列を選択する。
操作216は2個のピクセル差分値(デルタ)、左差分及び上差分、を選択したピクセル行列について計算する。評価測定は2つの差分計算による各差分行列に対して行われる。評価測定が最良(値が最低)の差分行列が選択される。 どの差分行列が選ばれたか示すマーカーが付加され、元の行列は選択された差分行列とマーカーで置換される。マーカーにはハフマン符号化が施される。
操作218はピクセル左差分計算を現在の走査線の下の残り及び最上部の走査線に適用する。操作222はランレングス符号化を適用する。操作224は全体のフレームの走査線をハフマン符号化する。
操作116と216についての評価値はむしろ4×4(n×m)の差分行列の全ピクセルの絶対値の合計と等しい事が望ましい。いくつかのピクセル値の差分がフレームの縁にあるため計算できないときは、評価値は存在しないか表されない。表1に示された圧縮例を検討する。
代替の実施形態では差分行列の絶対値の最大値のような他の評価計量を利用する。
最初に処理される行列を表2に示す。
第二列の第二行の値17がある。左差分計算は17−12=5、左上差分計算は17−14=3、上差分計算は17−18=−1、右上差分計算は17−22=−5となる。各16の現在のピクセル位置は左差分行列、左上差分行列、上差分行列及び右上差分行列を発生させるよう同様に計算される。完成した左差分行列は表2の一番目の行列に測定評価=ニルをもたらす。左上差分行列の計算もまた評価測定=ニルをもたらす。
上差分行列は表3にあるように評価測定=27という結果をもたらす。
右上差分行列は表4にあるように評価測定=83という結果をもたらす。
ゆえに、評価測定の比較は上差分(A)が一番目の4×4ピクセル行列に最適であることを示している。表5に二番目の行列を示す。
表6にあるように、そのような二番目の行列の左差分行列は評価測定=38という結果をもたらす。
左上差分行列は評価測定=59という結果をもたらす。
上差分行列は評価測定=51という結果をもたらす。
右上差分行列は評価測定=ニルという結果をもたらす。
そのため、評価測定の比較は左差分(L)が二番目の4×4ピクセル行列に最適である。最初の走査線のピクセル左差分は表9に示されている。
表10には結果が示されている。
近傍行列のマーカーは次のとおりである。
ハフマン圧縮処理は表11にあるハフマン符号木をもたらす。
この例の圧縮比は200/(200−133):1=2.99:1である。
一般には、開示された手法の実施形態ではピクセル値の差と近接するピクセルと比較し、いくつかのうち差が最小のものと置換する。マーカーが、ブロックを構成する全ピクセルが一方向に近接するものと比べるよう、ピクセルのブロックに付されている。マーカーはそのブロックの全ピクセルがどのように比較されるか示す。
定期的にハフマン符号木が作成される。ハフマン符号化が出来たフレームの圧縮に用いられる。ハフマン符号木はフレーム数q毎に1つ作成される。フレームは頻繁に変化しないので、qを30に設定しても圧縮比を大きく低下させない。リアルタイムビデオの圧縮に用いられる場合、作成を実行するプロセッサ時間のその時々の存在量に応じてハフマン符号木作成の頻度が選択される。より多くの処理時間が存在すれば、ハフマン符号木はより頻繁に計算される。頻度の変更は最初に入力ビデオフレームバッファーを調べる。フレームバッファーが空であれば、ハフマン符号木を作成する時間は存在する。
画像のロスレス圧縮が、画像の表面では色と明るさがゆっくりと変化するという事実を用いたので、近傍のピクセルは値が急激に変化せず実行された。別の言葉で言えば、画像データが完全に任意ではないので、各ピクセルは近傍のピクセルによる制約される。
多くの圧縮方法は、走査線上のピクセルの線形関数から得られる「予測子」を作成する差分パルス符号変調(DPCM)に基づいている。実際のピクセル値は、実際の値と予測子の差で置換される。予測子は度々直前のピクセル値と同値となる。このように、画像の全ピクセル値はゼロに近くなり、少ない数のビットを用いるかハフマン符号化を用いて圧縮される。各ピクセルにどの比較が用いられたか示すマーカーを割り当てると、そのようなマーカーに必要なデータ量は多大なもの、例えば全量の1/4、になる。このオーバーヘッドは画像をn×mの小さなブロックに分割することにより、大幅に削減できる。1つのブロックの全ピクセルに対し、1つのマーカーが割り当てられる。各ブロックに1つのマーカーが割り当てられ、4つの比較のうち選択されたものを示す。各ブロックの全てのピクセルは近傍のピクセルと一方向で比較される。ブロックは様々な形と大きさをとることができる。1つの実施形態では、n×mのブロックは4次正方行列とされる。
ピクセルの絶対値を全て前処理し、小さい数の差分値に減じた後、フレームの圧縮にハフマン符号化が用いられる。しかし、ビデオのハフマン符号化は時間がかかる。ハフマン符号化は2つのフェーズから成り立つ。第1は符号化のためのハフマン符号木作成、次にピクセルの符号化である。第1フェーズのハフマン符号木作成は第2フェーズで全画像の符号化と同じくらいの時間がかかる。この時間を減らすために、符号木作成は、数フレーム毎に行う事があります。画像は、フレーム毎にあまり変化しないので、これは通常は圧縮比を低下させない。
ハフマン符号木の作成の頻度を決めるため、2つの方法が考えられる。1つは、固定、もう1つは可変である。例えば、30という固定数のフレームが1つのハフマン符号木を共有することができる。可変の方法では、ハフマン符号木はその時のプロセッサパワーの存在量により作成される。処理能力の有用性は、入力バッファー中の圧縮の必要の有るエントリー数を見ることで評価できる。
少しあるいは全く仕事がないときはハフマン符号木作成をより頻繁に多くの計算時間をかけることが出来る。
ハフマン符号木は入力ビデオストリームの各符号をハフマン符号に変換するのに用いられる。ハフマン符号は、可変長符号で、頻繁に出現する入力符号は短い符号に、頻繁に出現しない入力符号は長い符号になる。あるハフマン符号木は、他の符号木より小さい出力ファイルを作成できれば、より効率が良いと考えられる。入力ビデオの統計的分布が知られている時は、大変効率の良いハフマン符号木が作成される。しかしながら、リアルタイム圧縮システムでは、全てのビデオの符号の分布を予測する事は出来ない。1つの方法は大部分の入力ファイルを上手く圧縮できる所定のハフマン符号木、を用いる事である。しかし、この方法は、いくつかの特別なケースで悪い結果をもたらす可能性がある。最適な方法は、フレーム毎に、ハフマン符号木を作成することであるが、これは多くの計算時間を使い過ぎる。
1つの前提は、ビデオの性質、即ちフレームの情報は頻繁に変化しないという事である。処理ステップとしては、最初の数フレームの符号の統計分布を得て、ハフマン符号木を作成する。ハフマン符号木を全ての入力ビデオに適用できる、しかしビデオの他の部分では、悪い結果になる可能性がある。その代わり、処理ステップでは、最初のスキャンされた数フレーム、例えば3フレーム、からハフマン符号木を作る。そして、このハフマン符号木を用いて、つながった、符号化された、フレーム、例えば20フレーム、を変換する。この方法を使って、ハフマン符号木作成に必要な長い時間は、長い時間で均等に分けられ、計算時間の中では、無視できる程の時間になる。
別の実施形態:最適近傍処理と適応型圧縮を伴うハフマン符号化
図1Aはタスク124(図1)あるいはタスク224(図2)の別の実施形態を行う処理ステップ150を示している。演算150は上で述べられたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。広く言えば、処理ステップ150は適応型圧縮の実施形態を実現し、ここでは、各走査線にハフマン符号化が適応される。各走査線の圧縮率があるいき値に達しない時は、ハフマン符号木は再計算され、新しく計算されたハフマン符号木を使って、その走査線は圧縮されなおす。別の実施様態としては、ハフマン符号化の代わりに、別の型のエントロピー符号化、例えば領域符号化、算術符号化等が使われる。説明を簡単にする為に、意図された制限がなければ、処理ステップ150は図1の処理ステップ100を使って説明される。
図1Aはタスク124(図1)あるいはタスク224(図2)の別の実施形態を行う処理ステップ150を示している。演算150は上で述べられたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。広く言えば、処理ステップ150は適応型圧縮の実施形態を実現し、ここでは、各走査線にハフマン符号化が適応される。各走査線の圧縮率があるいき値に達しない時は、ハフマン符号木は再計算され、新しく計算されたハフマン符号木を使って、その走査線は圧縮されなおす。別の実施様態としては、ハフマン符号化の代わりに、別の型のエントロピー符号化、例えば領域符号化、算術符号化等が使われる。説明を簡単にする為に、意図された制限がなければ、処理ステップ150は図1の処理ステップ100を使って説明される。
上で述べられているように、処理ステップ100は1つのビデオ・フレームの最適近傍処理を実行し、前処理されたビデオ・フレームのハフマン符号化を行う。下に示される処理ステップ150は、処理ステップ124の別の実施形態を示す。
現在のフレーム内の走査線の中の動きを追う為、処理ステップ152は「現在の走査線」を最上位の走査線にする。処理ステップ153はハフマン符号木を作成し、処理ステップ156は処理ステップ153で作られたハフマン符号木を使って現在の走査線を圧縮する。ハフマン符号木の作成とハフマン符号化の応用は関連した技術分野で良く知られており、様々な技術文献で、多く討論されている。別の実施形態では、ハフマン符号化の代わりに、別の、もう1つの型のエントロピー符号化が使われる、例として領域符号化や算術符号化がある。処理ステップ158は処理ステップ156で実行された1行の圧縮が示されたいき値に達しているか調べる。1つの例として、いき値は非圧縮と圧縮された走査線の大きさの比である。実際には、任意の値が使えるが、良く使われる例としては、2対1、2.5対1、3対1が有る。圧縮比がいき値に達していれば、操作158は操作166に進み、そこで、現在の走査線が、現在のフレームの最後の走査線かどうか問われる。そうならば、プログラムは終了する(操作168)。そうでなければ、操作168は現在の走査線を、フレーム内の次の走査線に進め、前述されたように、操作156を実行する。
前の記述とは反対に、操作158が、操作156の圧縮が指定のいき値に満たされないと見つけたら、操作160が実行される。操作150は前の走査線の値の統計的分布を用いて、ハフマン符号木を再計算する。そして、再計算されたハフマン符号木を用いて、操作162は現在の走査線にハフマン符号化を適用し、操作156で得られた現在の走査線のハフマン符号化の結果を捨てる。操作162の後は、上で述べたように、操作166が実行される。
別の実施形態では、画像を前処理し、画像の最適な分割方法を模索しながら統計データを集める(但し、前もって決められた最大数以上には分割しない)。各部分は、それぞれのハフマン符号木を使って、処理される
別の実施形態:多次元予測による前処理
図1Bは多次元予測処理ステップ170について記述している。演算170は上で説明されたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。この図を、以前説明された図におくため、処理ステップ170は図1または2のステップの前処理代替手段として実行される。この点から、処理ステップ170は操作309(図3)もしくは操作409(図4)遂行のために実行される。
別の実施形態:多次元予測による前処理
図1Bは多次元予測処理ステップ170について記述している。演算170は上で説明されたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。この図を、以前説明された図におくため、処理ステップ170は図1または2のステップの前処理代替手段として実行される。この点から、処理ステップ170は操作309(図3)もしくは操作409(図4)遂行のために実行される。
基本的に、前処理の処理ステップ170はビデオフレームの各ピクセルをそのピクセルの「エラー」と置換する。主として、前処理(1−D、2−Dもしくは3−Dエラーの計算)を行う理由は、ビデオフレームをより少ないデータ量、それにより将来ハフマン(または他のエントロピー)圧縮を改良する、で表すことである。ピクセルエラーの計算のため異なった実施形態がある。即ち、1−D、2−D及び3−Dエラー計算である。各エラー計算は異なる利点、特徴を有するため異なるアプリケーション、入力ビデオの性質、計算時間の有効性や他の条件に応じて利用することが出来る。
処理ステップ170は図1Bに、より詳細に表さていれる。操作172は処理のため、デジタルデータ入力ストリームを受け取る。本例では、入力ストリームはデータ・ストリーム提供のためデジタルビデオフレーム(イメージ)、受信、キャプチャ、スキャン、サンプリングされまたは別の方法で受け取る、を含む。ビデオは単に例であり、他のデータは開示された技術による符号化を同様に受け入れる。ビデオ「フレーム」より、むしろ他の入力ビデオのユニットは特定の手元のアプリケーションに対して適当に処理される。図示された例では入力(172)は連続したデータ・ストリームを包含し、1つのビデオフレームの線、そして時間内に次のビデオフレーム、などを含む。
操作174は入力フレームの処理を始め、現在(対象)のピクセル用に位置を確定させる。もしビデオフレーム全体を受信したら、最初のピクセルは画像内ピクセルの可能性がある。または、ビデオフレームのピクセルがサンプリング、キャプチャもしくはリアルタイムや他のシリアルオーダー(例えばストリーム)で受信した場合、現在のピクセルはそのようなオーダーの最初のピクセルから始まる。
次に、操作176現在のピクセルのエラー計算を行う。上で述べたように、1−Dエラー(操作176a)、2−Dエラー(操作176b)、もしくは3−Dエラー(操作176c)を含む。1つのアプリケーションでは、ルーチン170は176a−176cの選択肢の何れか1つを行うよう固定されてプログラムされている。この場合、他の選択肢はそれらがルーチン170にないときに実例目的に示される。他の例ではルーチン170は各ビデオフレーム、ストリームもしくは他の有用な入力ストリームのセグメントのため、176a−176cのオプションの1つに一貫してくっつくが、実施された選択肢176a−176cはセグメントにより異なることがある。選択肢176a−176cは、リソースの有用性処理、圧縮効率の検出、入力ストリーム特性、ユーザーからの指示、ランダム選択もしくは他の適当な要素に基づいている。代わりに、十分なコンピュータリソースがあるなら、画像は176a−176cのいくつかのオプションで圧縮を行い、圧縮結果が一番小さいものを選択する。
演算176aは現在のピクセルの1−Dエラーを計算する。以下で詳細に論ずるが、これは同じビデオフレーム列のピクセル値に基づく現在のピクセルの予測を伴う。現在のピクセルと予測の違いは1−Dエラーを構成する点である。
演算176bは現在のピクセルの2−Dエラーを計算する。以下で詳細に論ずるが、所定の決められた機能を複数の行と列のピクセルに適用することになる、そこで「2−D」という。1つの例として操作176bは現在のピクセルの1つ以上の1−Dエラーを計算し、さらにその1−Dエラーを処理して、変更された1−Dエラーが2−Dエラーとなる。簡単な記述では、2−Dエラーの計算は、現在のピクセルと近傍のピクセルとの1−Dエラーを計算し、現在のピクセルの1−Dエラーから、近傍のエラーを引いて得られる。この変更されたエラーが現在のピクセルの2−Dエラーである。例えばより複雑な計算は、2−Dエラーは現在のピクセルの、別の近傍を使い計算し変更された、エラーを組み合わせて得られる。
演算176cは現在のピクセルの3次元予測を行う。これは、2−D予測が、1つ以上前のビデオフレームの重要なピクセルの拡大を伴う。別の言葉で言えば、3−Dエラーは現在のフレームの現在のピクセルの2−Dエラーと、1つ以上前のフレームの2−Dエラーの組み合わせよりなる。
上記全ての場合(176a−176c)で、エラーの計算は、解凍アルゴリズムが現在のピクセル処理時に、解凍済みのピクセルのみを参照する。これにより、解凍アルゴリズムは圧縮アルゴリズムが用いた同じ予測を計算できる事を保証する。
操作176が現在のピクセルのエラーを計算した後、操作178は現在のフレームのエラー値の記録にこのエラー値を付加する。この記録は「エラーフレーム」と呼ばれる。操作184は次に現在のビデオフレーム内の全ピクセルが操作176と178で処理されたか聞く。されていなければ、操作182は次のピクセルに進み、そこを現在のピクセルとし、操作176に戻る。操作182は「次」が入力ストリームから選ばれたピクセルならば、どの順序で選んでも良い。この順序の例の1つは、入力ストリームのピクセルの順序である。
操作184が、全ピクセルが処理されたと判れば、操作186が実行される。操作186は操作178で作られたエラーフレームにランレングス符号化を施す。ランレングス符号化については多くの特許文献、技術文献、その他の参考書に記載されている。操作186は、操作186が圧縮されたフレームのサイズを大きくするような事実があれば、任意に省かれる。操作186の次に、操作188はエラーフレームを、前もって計算されていたハフマン符号木や操作306−307(図3)や操作406−407(図4)を使い計算された符号化テーブルを用い、ハフマン符号化で圧縮する。場合によっては、操作188は図1Aの適応型圧縮技術を使う。操作188が完了すると、現在のビデオフレームの処理ステップ170が終了する。次のビデオフレーム処理の為、処理ステップ170は繰り返される。
1−D、2−D及び3−Dの方法176a−176cは図1Cに詳細に、現在のビデオフレームの、対象のピクセルと様々な近傍のピクセルの位置関係を示している、説明されている。配列190は処理される現在のビデオフレームを作る様々な行と列がある。色々なピクセルの位置は、次のような符号で特定される。
S =対象のピクセル
U =Sの1つ上のピクセル
UU =Sの2つ上のピクセル
RU =Sの1つ上、1つ右のピクセル
L =Sの1つ左のピクセル
LL =Sの2つ左のピクセル
LLU =Sの1つ上、2つ左のピクセル
LU =Sの1つ上、1つ左のピクセル
LUU =Sの2つ上、1つ左のピクセル
「ビデオフレーム」や様々な「ピクセル」という特殊な語は次のプロセスの動作説明に使われる。この説明は意図的な制限が設けられていない。なぜならこれらのプロセスは、実質上ビデオフレームやピクセルと関係ない様々な要素を含むいかなる配列にも用いられるからである。さらに、「近傍」という語は現在のピクセルと所定のピクセルの位置関係について言及するものであり、隣同士の必要はない(「隣接」)。近傍のピクセルは近くにある事もあるが、現在のピクセル特に近接する必要はない。
U =Sの1つ上のピクセル
UU =Sの2つ上のピクセル
RU =Sの1つ上、1つ右のピクセル
L =Sの1つ左のピクセル
LL =Sの2つ左のピクセル
LLU =Sの1つ上、2つ左のピクセル
LU =Sの1つ上、1つ左のピクセル
LUU =Sの2つ上、1つ左のピクセル
「ビデオフレーム」や様々な「ピクセル」という特殊な語は次のプロセスの動作説明に使われる。この説明は意図的な制限が設けられていない。なぜならこれらのプロセスは、実質上ビデオフレームやピクセルと関係ない様々な要素を含むいかなる配列にも用いられるからである。さらに、「近傍」という語は現在のピクセルと所定のピクセルの位置関係について言及するものであり、隣同士の必要はない(「隣接」)。近傍のピクセルは近くにある事もあるが、現在のピクセル特に近接する必要はない。
A 1−Dエラーの計算
前に述べたように、演算176aは現在のピクセルの1−Dエラーを計算する。この為には、同じビデオフレームの行のピクセル値から予測する。現在のピクセルと予測の差が1−Dエラーである。
前に述べたように、演算176aは現在のピクセルの1−Dエラーを計算する。この為には、同じビデオフレームの行のピクセル値から予測する。現在のピクセルと予測の差が1−Dエラーである。
1−Dエラー計算を説明する為に詳細な解説をする。最初の演算は、同じビデオフレームの行の他のピクセル値から現在のピクセル値を予測する。この点から、「一次元」とは水平次元である。よって、現在のピクセルの予測値は、その行の1つ以上の他のピクセルに所定の関数を使う事により得られる。この関数の1つの例は、LとLLを使って予測される。この関係は、数学的には下の方程式1で示される。
方程式1 Sの予測値=f(L,LL)
次の演算は、現在のピクセルのエラー、対象のフレームのピクセルの値と予測との差を等しく計算する。この関係は、数学的に、下の方程式2で示される。
次の演算は、現在のピクセルのエラー、対象のフレームのピクセルの値と予測との差を等しく計算する。この関係は、数学的に、下の方程式2で示される。
方程式2 Sのエラー値=S−f(L,LL)
式1、2の関数を具現化する為に、様々な数学の関数が用いられる。例えば、1つ以上の線形関数、非線形関数、フラクタル、ウェーブレット、多項式関数等がある。
式1、2の関数を具現化する為に、様々な数学の関数が用いられる。例えば、1つ以上の線形関数、非線形関数、フラクタル、ウェーブレット、多項式関数等がある。
関数の1つの簡単な実施形態としては、2つのオペランドの関数の値は、いつでも最初のオペランドである。これは、数学的に、下の方程式3で示される。
方程式3 f(A,B)=A
B 2−Dエラーの計算
2−Dエラー計算につて詳細に述べる。即ち、2−Dエラーは所定の関数を対象のピクセルの存在する行とその他の行に適用することにより計算される。この所定の関数は対象のピクセルの前のピクセル、すなわち対象のピクセルの左及び上の列のピクセル、を引数とするどのような関数をも含む。ゆえに関数はシリアルビデオストリームで対象ピクセルより、前のピクセルに適用される。式4は本関数の一般例を表す。
B 2−Dエラーの計算
2−Dエラー計算につて詳細に述べる。即ち、2−Dエラーは所定の関数を対象のピクセルの存在する行とその他の行に適用することにより計算される。この所定の関数は対象のピクセルの前のピクセル、すなわち対象のピクセルの左及び上の列のピクセル、を引数とするどのような関数をも含む。ゆえに関数はシリアルビデオストリームで対象ピクセルより、前のピクセルに適用される。式4は本関数の一般例を表す。
方程式4 Sの予測値=g(L,LL,LLU,LU,U,…)
1つの特定の詳細な実施形態は、2−Dエラー計算は近傍ピクセルの1−Dエラーの計算によりなされ、現在のピクセルの1−Dエラーから近傍の1−Dエラーを引き、修正される。修正されたエラーが現在のピクセルの2−Dエラーである。
1つの特定の詳細な実施形態は、2−Dエラー計算は近傍ピクセルの1−Dエラーの計算によりなされ、現在のピクセルの1−Dエラーから近傍の1−Dエラーを引き、修正される。修正されたエラーが現在のピクセルの2−Dエラーである。
以下に先の実施形態を第1の例として表す。ここで、Uを近傍ピクセルとして選択する。Uの1−Dエラーは式5で計算される。
方程式5 Uのエラー値=U−f(LU,LLU)
対象のピクセルのエラーは以下に繰り返された式2で計算された。
対象のピクセルのエラーは以下に繰り返された式2で計算された。
方程式2 Sのエラー値=S−f(L,LL)
本例中の2−Dエラーは、式6が示すように、対象の1−Dエラーから近傍の1−Dエラーを引いたものである。
本例中の2−Dエラーは、式6が示すように、対象の1−Dエラーから近傍の1−Dエラーを引いたものである。
方程式6 2−Dエラー=S−f(L,LL)−[U−f(LU,LLU)]
2番目に、RUが近傍のピクセルの例を挙げる。RUの1−Dエラーは式7で計算される。
2番目に、RUが近傍のピクセルの例を挙げる。RUの1−Dエラーは式7で計算される。
方程式7 RUのエラー=RU−f(U,LU)
対象のピクセルエラーは上記の式2で計算された。本例の2−Dエラーは、式8が示すように、対象のピクセルの1−Dエラーから近傍の1−Dエラーを引いたものである。
対象のピクセルエラーは上記の式2で計算された。本例の2−Dエラーは、式8が示すように、対象のピクセルの1−Dエラーから近傍の1−Dエラーを引いたものである。
方程式8 2−Dエラー=S−f(L,LL)−[RU−f(U,LU)]
3番目に、LUが近傍のピクセルの例を挙げる。LUの1−Dエラーは式9で計算される。
3番目に、LUが近傍のピクセルの例を挙げる。LUの1−Dエラーは式9で計算される。
方程式9 LUのエラー=LU−f(LLU,LLLU)
対象のピクセルのエラーは上記の式2で計算された。本例の2−Dエラーは式10が示すように、対象のピクセルの1−Dエラーから近傍の1−Dエラーを引いたものである。
対象のピクセルのエラーは上記の式2で計算された。本例の2−Dエラーは式10が示すように、対象のピクセルの1−Dエラーから近傍の1−Dエラーを引いたものである。
方程式10 2−Dエラー=S−f(L,LL)−[LU−f(LLU,LLLU)]
4番目と最終としてLが近傍のピクセルの例を挙げる。水平方向に画像の類似性をキャプチャするため、下の式は上の各式と異なる位置関係を用いている。Lの1−Dエラーは式11で計算される。
4番目と最終としてLが近傍のピクセルの例を挙げる。水平方向に画像の類似性をキャプチャするため、下の式は上の各式と異なる位置関係を用いている。Lの1−Dエラーは式11で計算される。
方程式11 Lのエラー=L−f(LU,LLU)
水平方向に画像の類似性のキャプチャの精神と調和して、対象のピクセルは下の式12より上の式2を用いて予測される。
水平方向に画像の類似性のキャプチャの精神と調和して、対象のピクセルは下の式12より上の式2を用いて予測される。
方程式12 Sの予測値=f(U,UU)
予測されたピクセルのエラーは下の式13で計算される。
予測されたピクセルのエラーは下の式13で計算される。
方程式13 Sのエラー値=S−f(U,UU)
本例の2−Dエラーは、式14に示すように、対象のピクセルの1−Dエラーから近傍の1−Dエラーを引いたもので修正したものである。
本例の2−Dエラーは、式14に示すように、対象のピクセルの1−Dエラーから近傍の1−Dエラーを引いたもので修正したものである。
方程式14 2−Dエラー=S−f(U,UU)−[L−f(LU,LLLU)]
上の4つの例と対照的に、完全に異なった2−Dエラーの計算が、現在のピクセルのいくつかの修正されたエラー、各修正されたエラーは異なる近傍を用いて計算されている、を組み合わせ実現することが可能である。例えば、式6、8、10、14で計算されたSの2−Dエラーを平均して,得られる。
上の4つの例と対照的に、完全に異なった2−Dエラーの計算が、現在のピクセルのいくつかの修正されたエラー、各修正されたエラーは異なる近傍を用いて計算されている、を組み合わせ実現することが可能である。例えば、式6、8、10、14で計算されたSの2−Dエラーを平均して,得られる。
広義に言うと、2−Dエラーの過程が、ステップ176bの実行という形で、ビデオフレームに繰り返し適用されると、対象のピクセルと予め定められた位置関係に有る同じグループのピクセルが、そのフレーム処理で利用される。
先の例では、演算176bの一回ごとに実行は同じ近傍ピクセル、例えばU、RU、LU及び/もしくはL、を利用する。他の例では、操作176bは近傍ピクセル、すなわち対象のピクセルとの位置関係、は処理されたフレームにより異なる。予め定められた位置関係のセット間の選択や変更は様々な問題、例えば圧縮比、色領域やコンテンツタイプ、例えばビデオ、コンピュータで生成したグラフィックス、に基づき実行される。
C 3−Dエラーの計算
上で述べられたように、演算176cは現在のピクセルの3−D予測を実行する。これは、2−D予測を拡張し、1つ以上前のビデオフレームのピクセルを考慮に入れる。3−D予測は対象のピクセルの、現在及び1つ以上前のビデオフレームのピクセルのいかなる関数をも利用し実行する。
上で述べられたように、演算176cは現在のピクセルの3−D予測を実行する。これは、2−D予測を拡張し、1つ以上前のビデオフレームのピクセルを考慮に入れる。3−D予測は対象のピクセルの、現在及び1つ以上前のビデオフレームのピクセルのいかなる関数をも利用し実行する。
3−D予測のより詳細な例として、3−Dエラーは対象のピクセルの現在のフレームの2−Dエラーと1つ以上前のフレームの2−Dエラーの結合により計算されるであろう。
図1Dは対象のピクセルと、過去のビデオフレーム192に存在したこれらのピクセル値を用いる様々な近傍のピクセル、との位置関係を示す。過去のビデオフレーム192は現在のフレーム190(図1C)の1、2または任意のフレーム数前に出現し、その数はプログラム176cの実行に依存する。本例では、過去のフレーム192は現在のフレーム190の直前に起きているフレームである。
図1Cと1Dを念頭に、3−Dエラー計算について議論する。第1に、対象のピクセルの2−Dエラーは上記のようにフレーム190を利用し、計算される。上述したように、これは1、2、3または任意の数の近傍ピクセルを用い計算される。次に、計算を行い対象のピクセルの1以上前のフレーム、本例ではフレーム192の直前のもの、の2−Dエラーが得られる。現在と過去の2−Dエラーの差を計算すると、3−Dエラーが得られる。
圧縮制御列の全般−基本手順
図3Aは符号化(圧縮)制御列350を記述している。制御列350の典型的実施の2つが図3、4として記述されている。演算350は上で述べられたハードウェア装置、例として図9−11、を1つ以上用いて実行される。この図を他の図の背景に配置すると、制御列350は圧縮制御列全般として実行され、下のステップ358に記述された図1、1Aもしくは2に記載の前処理順序の1つを使う。
図3Aは符号化(圧縮)制御列350を記述している。制御列350の典型的実施の2つが図3、4として記述されている。演算350は上で述べられたハードウェア装置、例として図9−11、を1つ以上用いて実行される。この図を他の図の背景に配置すると、制御列350は圧縮制御列全般として実行され、下のステップ358に記述された図1、1Aもしくは2に記載の前処理順序の1つを使う。
ステップ352はN1個のフレームに基づく統計的分布を実行する。1つの具体例では、N1は3フレームである。1つの例では、統計的分布はヒストグラムを含む。ステップ354はステップ352の統計的分布に基づきハフマン符号木を形成する。ステップ356は後で符号化された出力手順の復号に使用するため、出力ストリームにハフマン符号木を記録する。ハフマン符号化は例として挙げられているだけであるが、他の実施形態では領域符号化、算術符号化等他のエントロピー符号化が利用される。
ステップ358は複数のフレームのピクセル値をハフマン符号に変換し、出力ストリームに記録する。ステップ358はN2個、N1より大きい数、のフレームの演算を行う。1つの例として、N2は20となる。1つの例で、ステップ358は各フレームで図1、1Aもしくは2の1つを実行し、ステップ354の最後の実行中に現在のハフマン符号木もしくは符号化に基づき計算され、実現される。
ステップ358への任意の強化として、ステップ366はステップ358で圧縮された各フレームの圧縮比を探知する。いずれのフレームの圧縮比も規定されたいき値に満たない場合、ステップ358はステップ358の残りのフレームの圧縮を中止し、ステップ359へ進む。ステップ359は次のフレームに進み、統計的分布の再計算(ステップ352)、ハフマン符号木の再計算(ステップ354)を行い、ステップ352に戻る。1つの例ではステップ366、359は下でより詳細に議論されるが、図4のステップ411、412により実行される。
ステップ358が無事終了すると、ステップ360は入力ストリーム中の全フレームが処理されたかたずねる。処理されていない場合は、ステップ364は次のN2個のフレーム進み、ステップ352へ戻る。ステップ360が全フレームの処理されたことを分かったら順序350はステップ362で終了する。
圧縮制御列の全般−第一の実施形態
図3で解説すると、この制御列は2つの数字(スキャン、符号化されたもの)を全体のファイルに一定に保つ、もしくはハフマン符号木を適用するフレームの数を変えることが出来る。この制御列は301で符合化されたフレーム数をカウンタで数える。この制御列では最初に、scanFrameの数だけのフレームがスキャンされ、統計的分布が制御列302、303、304、305でフレーム内のコードで計算される。本例では、scanFrameの値は3である。
図3で解説すると、この制御列は2つの数字(スキャン、符号化されたもの)を全体のファイルに一定に保つ、もしくはハフマン符号木を適用するフレームの数を変えることが出来る。この制御列は301で符合化されたフレーム数をカウンタで数える。この制御列では最初に、scanFrameの数だけのフレームがスキャンされ、統計的分布が制御列302、303、304、305でフレーム内のコードで計算される。本例では、scanFrameの値は3である。
制御列306では、スキャンされたフレームの統計的分布を用いハフマン符号木が作成される。ハフマン符号木は、出力ストリームに記録され、解凍ステージ307で読み出せる。開示された制御列はハフマン符号木を用いて、codedFrames数のフレームのセット内のコードを変換する。制御列308、309、310、311では、このセットには、スキャンされたフレームが含まれ、変換されて得られたハフマン符号は出力ストリームに吐き出される。本例のcodedFramesは20である。
開示された制御列はステップ312、313でビデオの全フレーム(totalFrames)に対し、ビデオの全フレームが変換されるまで繰り返す(制御列314)。
圧縮制御列の全般−第二の実施形態
図4について言えば、もし圧縮比が低くなったなら、それはシーンが変化し、フレーム内の符号の統計が大きく変化したためであろう。開示された制御列では、このことにより符号木が再作成される。図3と同様、図4の制御列は符号化されたフレーム数をカウンタで数える(制御列401)。制御列はフレームのscanFrame数のフレームをスキャンし、統計的分布をフレーム内のコードから求める(制御列402、403、404、405)。本例でscanFrameは3である。
図4について言えば、もし圧縮比が低くなったなら、それはシーンが変化し、フレーム内の符号の統計が大きく変化したためであろう。開示された制御列では、このことにより符号木が再作成される。図3と同様、図4の制御列は符号化されたフレーム数をカウンタで数える(制御列401)。制御列はフレームのscanFrame数のフレームをスキャンし、統計的分布をフレーム内のコードから求める(制御列402、403、404、405)。本例でscanFrameは3である。
スキャンされたフレームの統計的分布を用いハフマン符号木が作成される(制御列406)。ハフマン符号木は、出力ストリームに記録され、解凍ステージ407で読み出せる。開示された制御列はハフマン符号木を使い、スキャンされたフレームを含むcodeFramesの中の符号を変換し、出来たハフマン符号を出力ストリームに記録する(制御列408、409、410、411、413)。本例でcodeFramesは200である。
フレームの圧縮比がいき値(通常0.7)に満たない場合,大体の場合はシーンの変化を示し、開示された制御列はcurrentFrameを次のフレーム412にセットし、スキャンプロセス402、403、404、405に戻り、新しいハフマン符号木を作成する(制御列406、407)。
制御列はビデオ中の全フレーム(totalFrames)のため、ビデオ中の全フレームが変換される(制御列416)まで本工程(制御列414,415)を繰り返す。
ハフマン符号は高速符号化のため参照テーブルを用い符号化を行う。しかし、ハフマンアルゴリズムは短い符号を可変長符号に変換する為、中には大変長い符号もある。典型的な例では、入力符号が8ビットなら、作成されるハフマン符号は最長で30ビット程度である。符号化は比較的簡単に8ビット入力符号用の256個の要素からなる表として例示された表12を用いて行われる。
復号化テーブル:様々な方法
一方、復号化は長い符号用の参照テーブルの実現は不可能のため、より複雑で時間がかかる。ハフマン符号の最大長が30ビットの場合、表には10億の要素、現在のコンピュータのメインメモリをしても不可能、が必要となる。
一方、復号化は長い符号用の参照テーブルの実現は不可能のため、より複雑で時間がかかる。ハフマン符号の最大長が30ビットの場合、表には10億の要素、現在のコンピュータのメインメモリをしても不可能、が必要となる。
大部分のハフマン復号は、メインメモリにフィットし、早く処理できるよう、符号を2つに分割する。2つの部分は、固定長の前半分と、可変長の後半分である。開示された制御列は固定長の前半分を表13で例示された参照テーブルへのインデックスとして用いる。
記憶階層が数層ある現代のコンピュータを使えば、キャッシュメモリと呼ばれる最速のメモリに参照を入れることが望ましい。典型的なパーソナルコンピュータは256キロバイトのキャッシュメモリを持っており、示されている制御列は固定長の前半分は11ビットの長さを持っている(この値はコンピュータが進歩し、より大きなキャッシュが一般的になれば変わる)。大部分のピクセルは、ハフマン符号の、頻繁に出現する入力符号は短い出力符号を割り当てられる、という性質により、11ビットで収まる符号で符号化されているからである。
しかしながら、符号が11ビットに収まらない場合、符号の残りは後部分に残される。後部分の変換を扱う典型的な方法は探索テーブルを使うことである。最初の参照テーブルの要素は、ある前部分で始まる出力符号が11ビットより長い時、他のテーブルを指す。表14に示されるように、このオーバーフローしたテーブルでは要素は後部分と対象の符号という対になった数字からなる。最初の参照テーブルが符号は11ビット以上であると示した時は、オーバーフローしたテーブルを、後部分を比較のインデックス(または連想参照)として探索し、入力ストリームの次の、その後のビット列と比較される。もし一致する要素があれば、対応する対象符号が出力される。しかしこの方法は膨大な時間を要する。そこで一般にはハッシュテーブルが用いられ、探索を速くする。
ハッシュテーブルでさえ遅く、いくつかの参照を必要とする。したがって、これは完全に満足できるものではない。代わりに開示された制御列は連結符号を用いる。ハフマン符号作成時に出力が11ビットより長い場合、19ビット符号が11ビットの前部分と8ビットの入力符号の連結符号として作成される。復号化テーブル要素は前部分が11ビット以下の場合前部分の長さと8ビット出力符号、あるいは11ビットより長い場合は、長いというインジケーターである。復号化テーブルを、表15に示す。
解凍法
図5及び図6で、連結符号のハフマン解凍法が示される。示されている制御列は入力ストリーム501を、currentBitポインタ502を用いてストリームを移動して、処理する(制御列601)。符号は、入力ストリーム501からcurrentBitと次の10ビットを用いて計算される(制御列602)。解凍表は表15で示されたように、計算された符号を参照し符号のビットの数を求めるために用いられる(制御列603)。
図5及び図6で、連結符号のハフマン解凍法が示される。示されている制御列は入力ストリーム501を、currentBitポインタ502を用いてストリームを移動して、処理する(制御列601)。符号は、入力ストリーム501からcurrentBitと次の10ビットを用いて計算される(制御列602)。解凍表は表15で示されたように、計算された符号を参照し符号のビットの数を求めるために用いられる(制御列603)。
ビットの数が19の場合、制御列は入力ストリームに索引付けし、取った8ビットの入力符号を出力ストリームに付加する(制御列605、606、607、610)。ビットの数が19でない場合、制御列は復号テーブルから取った出力符号を出力ストリームに付加する(制御列608、609、610)。
当業者(開示の恩恵を受けている)には、アルゴリズムが8ビット以外の画像のピクセルに適応出来ることが明らかである。
この過程611は入力ストリーム501の全ビットを消費するまで繰り返し行われる(制御列612)。
上の方法は最悪の場合10%程度の圧縮ファイルの増大を犠牲にしても特別な符号の時間のかかる探索を避ける方法である
複数符号復号化法
A.イントロダクション
図6A−図6Cでは、前出の復号化スキームの他の手段が説明されている。概略としてはこの過程は符号化されたデータの塊に複数のハフマン符号が存在しても個別にハフマン符号を復号するよりむしろ1度での復号を可能にする。
複数符号復号化法
A.イントロダクション
図6A−図6Cでは、前出の復号化スキームの他の手段が説明されている。概略としてはこの過程は符号化されたデータの塊に複数のハフマン符号が存在しても個別にハフマン符号を復号するよりむしろ1度での復号を可能にする。
実行の仕方よっては、この方法は符号データの復号過程を大幅に速くする。この方法では、符号化は符号化表の変更を必要とせずにいかなる適用可能な方法(例えば前に示した方法)を使える。しかし、復号過程は複数符号復号化表と呼ばれる新しい復号化表を利用する。
B.複数符号復号化表
図6Bは複数符号復号化表の一例670を示す。前に説明した方法のように、表670はいくつかの行(”entries”)からなる。下に示すように、各行は行番号671(”index”)、ビット数(”numBits”)672、符号数(”numCodes”)674、そして復号された値676(”codeArray”)を含む。
図6Bは複数符号復号化表の一例670を示す。前に説明した方法のように、表670はいくつかの行(”entries”)からなる。下に示すように、各行は行番号671(”index”)、ビット数(”numBits”)672、符号数(”numCodes”)674、そして復号された値676(”codeArray”)を含む。
表の各行はアドレスを持つ。各行のアドレスはその行のインデックス671が与えられる。その代わりに、各行のアドレスが行番号の場合、(例えば最初の行のアドレスが1、二番目の行のアドレスが2等々)行のアドレスは表670に固有で、インデックス列は省略できる(制御列670)。インデックス671はまた、復号されたデータ・ストリームの予測されたデータの塊を代表する。説明されている例では、データの塊の長さは、欄671の幅(indexWidth 678)が11のため、11ビットである。ハフマン符号の長さは変化するので、各インデックス671は0、1あるいはそれ以上のハフマン符号を含む。
各行では、列676がインデックス671内のハフマン符号に対応する復号された値を順序付けし並べられる。例えば00011101100というインデックス値を持つ行では、このインデックス値はハフマン符号を3つ含み、それらは”a”、”b”及び”x”に復号される。インデックス値11011001011の行は、”x”、”a”及び”r”に復号される3つのハフマン符号を持つ。列676の復号された値とハフマン符号(連結され、インデックス671の一部あるいは全部になる)の関係は上の表12のような適切なハフマン符号化表で与えられる。
表670の大部分の行では行のインデックスビットは、欄676で復号される,一つ或いはそれ以上の、ハフマン符号を表す。numBits欄672は欄676で何ビットが復号されたかを表している。各行ではnumCode欄674が行のインデックス671に存在するハフマン符号の数を示している。
他の実施形態では、numCodeは除去され、欄676の値の数を調べることによりこの情報が得られる。また、別の実施形態では復号値欄676を除去し、通常のハフマン復号化をnumCodeの値の回数繰り返し、11ビットサンプルを完全に復号する。
もしnumBitsがインデックス幅678より(本例では11)大きい場合、インデックス671に対応するハフマン符号は11ビットより長いことを示し、復号のため次の入力ストリームの部分を必要とする。したがって、この場合、インデックス671はハフマン符号の一部のみを含む。インデックス値01010101010の列はこの一例である。ここではビットの数の欄672は12となっている。しかしこれは、復号された値に対応するインデックス671に12ビットは存在しない、インデックス欄671は本例で11ビットのみ含む、ため矛盾が生じる。ゆえにnumBits672がindexwidth678より大きい場合は、インデックスに対応するハフマン符号がハフマン符号の一部のみを表していることを示す。したがって、numCodes674とcodeArray676は空白かN/A、null等の値を含む。
別の実施形態は32ビット単長語もしくは64ビット語のいずれかを要素とする表の組み立てである。それゆえ各表の探索は、各表の要素への32ビットの単長語もしくは64ビット語の検索となる。この語は、ビット数を示す。4もしくは5ビットの欄、復号された符号の固定された数を入れる場所、及び各符号が存在しているかを示すフラッグとからなる。符号が表示されない場合、ビットの数はゼロであり、要素の残りが探索表のポインタである。
上で示したように、各インデックス値671はゼロ、1あるいはそれ以上の、復号された値と同数を示す、ハフマン符号を含む。列672は復号された値676を表すのに利用されたインデックスビットの数を示す。インデックスの残りのビットは次のハフマン符号、このデータの塊で復号することができない、を始める。列674は、インデックス値671により表されている、676内に有る、復号された値の数を述べる。
言い換えれば、列672はインデックス値671のいくつのビットが対象の要素により復号されたかを特定するビット数を提供する。列676はインデックス値671の最初のビット数のビットが復号された全出力値の連結したハフマン符号化を含む。列674は列676で提供された、復号された出力値の数を示す符号番号を提供する。
下の図6Cの復号制御列で、欄672、674及び676の値はそれぞれ、”numBits”、”numCodes”及び”codeArray”と呼ばれる。
上の例では表について述べたが、表は1つの例として挙げられているだけで、本開示発明においては「表」に限定されない。表670は代わりに他のツール、例えば連結リスト、リレーショナルデータベース、ハッシュ表、データ構造、プログラム等を利用し実行される。
C.複数符号復号化表の作成
図6Aは複数符号復号化表の作成プロセス650を記述する。演算650は上で述べられたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。前述の図では、表を作るプロセス650は、ステップ306(図3)やステップ406(図4)という適切なタイミングで実行される。
図6Aは複数符号復号化表の作成プロセス650を記述する。演算650は上で述べられたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。前述の図では、表を作るプロセス650は、ステップ306(図3)やステップ406(図4)という適切なタイミングで実行される。
ステップ652はハフマン符号木を作成し、可変長ビット符号(ハフマン符号)を各入力(unencode)符号に当てはめる。ハフマン符号木の作成は関連分野でよく知られており、様々な技術文献で議論されている。別の方法としては、領域符号化、算術符号化や他のエントロピー符号化が適用可能である。
ステップ654は複数符号復号化表670を初期化する。indexWidth678はステップ654の一部として確立される。幅678は様々なファクターにより決定される。例えば、復号過程がある特定のコンピュータで実行されるのであれば、indexWidth678は復号時間の最も早くなるメモリ階層により決定される。他の考慮から、幅678は以下のように選択される。選択された表の行(entries)の最大数を、要望した数、例えばコンピュータのバスの最大バイナリー数、と一致させ、選択された表の幅は、ハフマンインデックスに対応する復号された値の最大幅が適応する最小ものとする。さらに別の考慮としては、幅678は最も頻繁に現れる復号された値の組み合わせに適用できる十分な長さを得られるよう選ばれる。
ステップ656は表670に値を入れる。即ち、ステップ656はハフマン符号の適当な制御列を各表の要素に挿入し、制御列のハフマン符号を連結して作られたビット制御列は表のインデックス671の先頭部分と一致するようにし、さらにこれ以上ハフマン符号を追加すると幅678の上限を越える。別の言葉で言うと、各表の要素に対し、ステップ656はインデックス671を連結されたハフマン符号の列として扱い、ステップ656が欄676に挿入する復号値を与えるようにハフマン符号を復号する。インデックスの終わりの部分の残されたビットは無視される。ステップ658に示されるように、ステップ656の終了時、各復号値の欄676はインデックス671で割り当てられたハフマン符号と一致する最も長い復号された符号の列を含む。
ステップ660は欄672、674を完成させる。欄672は、欄676の中で復号された値で表されるインデックス671の中のビットの数を表す。復号化表に関する限り、使われなかった、後のビットは無視される。表の各要素に対して、欄674は、欄676にいくつ復号値が含まれているかを表す。
1つの実施形態として、実世界のビデオで、複数の色チャンネル、即ちR、G及びBチャンネルあるいは、Y、Cr及びCbチャンネルを含むビデオへの応用では、複数符号化表が作られ、それぞれの記号表は、それ自身のハフマン符号木を持っている。
D.複数符号復号化表を用いた復号
図6Cは複数符号を使った復号プロセス600を示す。演算600は上で述べられたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。制限は無く、単に説明を簡単にするため、操作600は表670のコンテクストで説明される(図6B)。
図6Cは複数符号を使った復号プロセス600を示す。演算600は上で述べられたハードウェア要素を1つ以上使って実行され、図9から11の部分がその例である。制限は無く、単に説明を簡単にするため、操作600は表670のコンテクストで説明される(図6B)。
ここでは示されていないが、最初に操作は符号化されたデータ・ストリームを受け取る。これが復号されるデータ・ストリームである。制御列600はポインタ(”currentBit”と呼ばれる)を使って、入力ストリームを処理する。ステップ601aは入力データの最初のビットもしくは適切な開始位置にポインタを設定する。
ステップ602aはcurrentBitポインタで始まるビットを調べる。ここで調べられたビットの数がindexWidth678で、現在のサンプルとして参照される。制限がない場合本例のindexWidth678は11となる。
ステップ603aはインデックス671を用い現在のサンプルを表670へインデックスし、対応する表の要素(row)を特定し、numBits672の値を求める。上記されたとおり、numBits値は復号値列676で復号されたインデックスビットの数を示す。
ステップ604aはnumBitsがindexWidth678より大きいかを聞く。大きい場合、現在のサンプルはインデックス671には大きすぎて収まらないハフマン符号の一部を示す。ゆえに現在のサンプルは完全なハフマン符号を表さない。その場合、ステップ604aからステップ605aに進む。ステップ605aではcurrentBitポインタをindexWidth678の値分前に進める。
次に、ステップ606aは次の8ビットを考慮する。ステップ606aの1つの例では、図6及び表15とともに上で議論されたように、これらの8つのビットはASCIIや他の出力表現の1つの特定された出力符号を含み示される。ステップ606aの別の例では、これら8つのビットは現在のサンプル(合計8+11=19ビット)と同時に考慮され、上記されたように図6及び表13−14とともに処理される。さらに別の実施形態では複数符号化表がエスケープ記号無しの長いハフマン符号を使って実行され、探索表へポインタを使用しており、ある状況下では、圧縮率の向上を見る。
ステップ606aの後、607aはポインタを8ビット進ませ、8ビットの次のビットがステップ606aで新たにサンプルされる。これは、ステップ602aが次に実行されるとき、次のサンプルを処理するポインタを準備する。ステップ607aの後、ステップ620はステップ606aで見つけられた最終値を取り、出力、例えば出力ストリームに加える、として提供する。
ステップ620の後、ステップ611aはポインタが入力ストリームの最後まで届いたかを聞く。届いた場合、ルーチン600はステップ612aで終了する。
以上の記述とは対照的に、ステップ604aは、表670の現在のサンプルの要素のnumBits欄がindexWidth678を超えない場合それを見つけ、ステップ621、622、609aはステップ605a、606a、607a620の代わりに実行される。
ステップ621は、表670を正しい行への索引付けに現在のサンプルを用い、そして欄674のnumCodesと一致する値を参照する。上で述べたように、これは一致するインデックス値に存在するハフマン符号の数を示す。ステップ622は次にnumCodesの異なるハフマン符号が復号されるまで現在のサンプルのビットでハフマン復号化を繰り返して実行する。代替手段として、ステップ622は欄676に記載された、復号された値を出力することがあり得る。いずれの場合にも、復号された値はステップ622における出力ストリームに追加される。
ステップ609aではcurrentBitポインタはステップ622で処理されたサンプルに対応するnumBits値672前に進む。例えば、最後のサンプルの6ビットが1つ以上のハフマン符号を表したなら(即ち、numBits672で6であった)、ステップ609aはcurrentBitポインタを6ビット進める。これは最後のサンプルの残り5ビットを、次の11ビットのサンプル(これらの5ビットを含む)がステップ602aで取られるときに再分析のため残す。
ステップ609aの後、ステップ611aはポインタが入力ストリームの最後まで届いたかを聞く。届いた場合、ルーチン600はステップ612aで終了する。別の状況ではcurrentBitsポインタが入力ストリームの最後に届かない場合、ルーチン600はステップ602aに戻り、より多くのビットを処理する。
タスク概要
図7を参照すると、タスク視点が示されている。圧縮側では、ビデオキャプチャタスク701は圧縮されることになっているビデオストリームをキャプチャする。ビデオストリームは高速前処理ビデオタスク702、ビデオを上記図1及び2に述べられているように、前処理される。ビデオ中のフレームが前処理されると、圧縮ビデオタスク703、ビデオを上記の記述及び図3及び4に記載のとおり圧縮を行う、へ送られる。圧縮ビデオタスク703は圧縮された出力ストリームに使われたハフマン符号木の記録及びハードディスク704上の出力ストリームの記録を行う。
図7を参照すると、タスク視点が示されている。圧縮側では、ビデオキャプチャタスク701は圧縮されることになっているビデオストリームをキャプチャする。ビデオストリームは高速前処理ビデオタスク702、ビデオを上記図1及び2に述べられているように、前処理される。ビデオ中のフレームが前処理されると、圧縮ビデオタスク703、ビデオを上記の記述及び図3及び4に記載のとおり圧縮を行う、へ送られる。圧縮ビデオタスク703は圧縮された出力ストリームに使われたハフマン符号木の記録及びハードディスク704上の出力ストリームの記録を行う。
解凍側では、圧縮されたビデオストリームが解凍されるため送られると、圧縮ビデオキャプチャタスク705が入力ストリームをキャプチャする。入力ストリームは、圧縮ビデオキャプチャタスク705からビデオ解凍タスク706へ送られる。ビデオ解凍タスク706は入力ストリームを上記と図6にあるように回答し、解凍されたビデオストリーム707を出力する。
ビデオのフレームサイズが大きい、もしくはフレームレートが高い場合、ビデオのデータレートが大変高くなり、CPUが力不足で全フレームの圧縮解凍が出来ない場合もある。そのような場合、解説されている制御列は、所定の間フレームを圧縮しないので、CPUは入力されてくるビデオデータに追いつくことができる。
選択して圧縮する方法は2つある。1つは、決まった周期で圧縮する方法である。例えば、説明されている制御列では、1フレームおきに圧縮するか、2フレーム圧縮し、3番目のフレームはそのままにし、また2フレーム圧縮する、ということが出来る。
処理可用性に基づく適応する方法
図8で示しているもう1つの方法は、適応システムである。この方法は、CUPリソースに空きがある場合、フレームを圧縮する。この制御列は入力フレーム802のバッファーを保持し、CPUの可用性を計算する。このバッファー802は高速ビデオ前処理タスク801とビデオ圧縮タスク803の間におかれる。バッファー802のなかのフレーム数がいき値、例えば5、を超えると、ビデオ圧縮タスク803はフレームの圧縮を飛ばし、バッファー802中のフレームを直ちにディスク804に書き込む。バッファーサイズが0、もしくは2番目のいき値以下になったら、ビデオ圧縮タスク803はフレームの圧縮を再開する。
図8で示しているもう1つの方法は、適応システムである。この方法は、CUPリソースに空きがある場合、フレームを圧縮する。この制御列は入力フレーム802のバッファーを保持し、CPUの可用性を計算する。このバッファー802は高速ビデオ前処理タスク801とビデオ圧縮タスク803の間におかれる。バッファー802のなかのフレーム数がいき値、例えば5、を超えると、ビデオ圧縮タスク803はフレームの圧縮を飛ばし、バッファー802中のフレームを直ちにディスク804に書き込む。バッファーサイズが0、もしくは2番目のいき値以下になったら、ビデオ圧縮タスク803はフレームの圧縮を再開する。
他の実施形態
今までの開示された発明は、いくつも例示的に実施形態を示しているが、当業者には、発明の範囲は添付した特許請求の範囲の記載を逸脱することなく改変を行うことができることは明白である。さらに、発明特定事項は明細書、特許請求の範囲では単数で記載されているが、単数への限定が明瞭に示されていない限り、複数が考慮される。その上、当業者にとり、演算制御列が説明と請求のため、特別な順序で見解を述べる必要があることは明白であるが、本発明では、そのような特別な順序以外の様々な変更が考慮されている。
今までの開示された発明は、いくつも例示的に実施形態を示しているが、当業者には、発明の範囲は添付した特許請求の範囲の記載を逸脱することなく改変を行うことができることは明白である。さらに、発明特定事項は明細書、特許請求の範囲では単数で記載されているが、単数への限定が明瞭に示されていない限り、複数が考慮される。その上、当業者にとり、演算制御列が説明と請求のため、特別な順序で見解を述べる必要があることは明白であるが、本発明では、そのような特別な順序以外の様々な変更が考慮されている。
また、当業者は情報や信号は多くの技術や技法を使い示されていることを解する。例えば、ここで参照されているデータ、命令、コマンド、情報、シグナル、ビット、信号及びチップは電圧、電流、電磁波、磁界または粒子、その他の物あるいはこれらの組み合わせで表される。
さらに、当業者は上述した論理ブロック、モジュール、回路、プロセスステップあるいはここで説明されている他の機能は、電子ハードウェア、ファームウェア、コンピュータソフトウェア、あるいはこれらの組み合わせとして実行されることを理解する。ハードウェアとソフトウェアの互換性、上述した要素、ブロック、モジュール、回路及びステップを理解することはそれらの機能性という点で、上で解説されている。そのような機能性がハードウェアまたはソフトウェアとして実行されているかどうかはシステム全体に特定のアプリケーションと設計制約が課されるかによる。当業者は解説された機能性を、各特定用途のための様々な方法で実施することがあるが、それは本発明の範囲外と解釈すべきではない。
ここで開示された実施形態と関連して記述された、上述の様々な論理ブロック、モジュールや回路は汎用プロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向き集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)や他のプラグラム可能な論理デバイス、ディスクリートゲート、トランジスタ論理、ディスクリートハードウェアコンポーネントやここで説明された機能を実行するために設計されたいかなる組み合わせとともに実施、実行しうる。汎用プロセッサはマイクロプロセッサでよいが、通常のプロセッサ、コントローラ、マイクロコントローラあるいは状態マシンでもよい。プロセッサはまた、計算デバイスの組み合わせは、例えばDSPとマイクロプロセッサの組み合わせ、複数のマイクロプロセッサ、1つ以上のDPSコアと結合したマイクロプロセッサ、や他のそのような構成として実行される。
本開示発明の実施形態に関連して説明された方法やアルゴリズムのステップは、直接ハードウェア、プロセッサにより実行されるソフトウェアモジュールあるいはそれらの組み合わせで行われる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスター、ハードディスク、リムーバルディスク、CD−ROMあるいはあらゆる公知の記録装置に存する。典型的な記録装置はプロセッサと組み合わされ、プロセッサは情報を読み、書き込むことが出来る。他の表現としては、記録装置はプロセッサと一体化している。プロセッサと記録装置は同じASIC中に存在する。
さらに、上述の開示された実施形態は、当業者が本発明の実施を可能な程度記載されている。実施形態の様々な改変は当業者にとり明白なものであり、本明細書に記載の包括的な原則は、他の実施形態に対し本発明の範囲を逸脱することなく応用できる。即ち、本発明はここで示された実施形態に制限されることなく、ここで開示された原理及び新規機能と最も広い範囲で一致させる。
本明細書中において「典型的」という語は、「例として、例、あるいは解説」という意味で用いられる。ここで「典型的」と説明されているいかなる実施形態も、他の実施形態と比較し優れているという意味ではない。
Claims (36)
- 各入力群が、値を有し、配列は複数の行及び列を有し、以下の操作から構成されることを特徴とする入力群の配列の処理方法。配列の各要素に対し、以下の操作より構成される演算を実行する。
所定の関数を、対象の要素と選択された所定の位置関係の最初の要素に適用し、対象の要素の値を予測する。ここで、最初の要素は、対象の要素と同じ行にある要素、もしくは対象の要素と同じ列にある要素のいずれかから構成されることを特徴とする。
対象の要素の予測値とその実際値の差から構成されることを特徴とする1−Dエラーの計算及び計算された1−Dエラーを、エラーフレームに対象のピクセルと共に入力する方法から構成されることを特徴とする演算を実行する。 - 前記選択された所定の位置関係が、対象の要素の1つ左の列もしくは2つ左の列のいずれかから構成されることを特徴とする請求項1に記載の方法。
- 前記所定の関数が、対象の要素の直ぐ左に有る要素の値をとることを特徴とする請求項1に記載の方法。
- 前記所定の関数が、少なくとも線形関数、非線形関数、フラクタル、ウェーブレット、多項式関数のいずれか1つから構成されることを特徴とする請求項1に記載の方法。
- 少なくとも1つの信号保持媒体が、デジタル・データ処理機により実行できる機械可読命令から成るプログラムで、次の操作を実行するものを実現する。すなわち、入力群の、それぞれが値を有し、複数の行と列を有する配列を処理する演算を実行し、演算は次の操作より成る。配列の各要素に対し、以下の操作より構成される演算を実行する。
所定の関数を、対象の要素と選択された所定の位置関係の最初の要素に適用し、対象の要素の値を予測する。ここで、最初の要素は、対象の要素と同じ行にある要素、もしくは対象の要素と同じ列にある要素のいずれかから構成されることを特徴とする。
対象の要素の予測値とその実際値の差から構成されることを特徴とする1−Dエラーの計算及び計算された1−Dエラーを、エラーフレームに対象のピクセルと共に入力する方法から構成されることを特徴とする演算を実行する。 - 前記選択された所定の位置関係が、対象の要素の1つ左の列もしくは2つ左の列のいずれかから構成されることを特徴とする請求項5に記載の媒体。
- 前記所定の関数が、対象の要素の直ぐ左に有る要素の値をとることを特徴とする請求項5に記載の媒体。
- 前記所定の関数が、少なくとも線形関数、非線形関数、フラクタル、ウェーブレット、多項式関数のいずれか1つから構成されることを特徴とする請求項5に記載の媒体。
- 複数の導電要素が接続された回路が、それぞれが値を有する入力要素群の、複数の行と列を有する配列を処理する演算を実行するように設計され、その演算は以下の操作から構成されることを特徴とする。
所定の関数を、対象の要素と選択された所定の位置関係の最初の要素に適用し、対象の要素の値を予測する。ここで、最初の要素は、対象の要素と同じ行にある要素、もしくは対象の要素と同じ列にある要素のいずれかから構成されることを特徴とする。
対象の要素の予測値とその実際値の差から構成されることを特徴とする1−Dエラーの計算及び計算された1−Dエラーを、エラーフレームに対象のピクセルと共に入力する方法。 - 前記選択された所定の位置関係が、対象の要素の1つ左の列もしくは2つ左の列のいずれかから構成されることを特徴とする請求項9に記載の回路。
- 前記所定の関数が、対象の要素の直ぐ左に有る要素の値をとることを特徴とする請求項9に記載の回路。
- 前記所定の関数が、少なくとも線形関数、非線形関数、フラクタル、ウェーブレット、多項式関数のいずれか1つから構成されることを特徴とする請求項9に記載の回路。
- 複数の配列に分割可能なデータ・ストリームを処理する方法が以下の操作から構成されることを特徴とする。ここで、それぞれの配列は複数の入力要素を持ち、各入力要素は値を持ち、それぞれの配列は,少なくとも最小の数の列と行を持っている。
対象の配列の各対象要素に、以下の操作から構成される第一の演算を実行する。
2−Dエラーを、所定の関数を、対象の要素と選択された所定の位置関係の最初の要素に適用し計算する。ここで、最初の要素は、対象の要素として、他の行と列の要素を含む。
計算された2−Dエラーを、エラーフレームに、対象のピクセルと共に入力する。 - 計算操作が、以下の操作から構成されることを特徴とする請求項13に記載の処理方法。
第一の値を、所定の関数を対象の要素の所定の近傍に適用して計算する。
第二の値を、所定の関数を、対象の要素の近傍である要素の所定の近傍に適用して計算する。
2−Dエラーを、第一の値と第二の値の差として計算する。 - 計算操作が、以下の操作から構成されることを特徴とする請求項13に記載の処理方法。
第一の値を、所定の関数を対象の要素の所定の近傍に適用して計算する。
複数のサブシーケンスの値を個々のケースにおいて、所定の関数を、対象の要素の近傍である要素の所定の近傍に適用して計算する。
第一の値と、各サブシーケンスの値との差を計算する。
計算された差を合計し、2−Dエラーを計算する。 - 前記の計算された差を合計する演算が、平均することを含むことを特徴とする請求項15に記載の処理方法。
- 前記所定の関数による計算結果が、所定の関数を適用した結果が、所定の要素の所定の1つの値から構成されることを特徴とする請求項15に記載の処理方法。
- 第一の要素が、対象の要素に対して、1つ左の列、1つ上の行、1つ上の行で1つ右の列、1つ上の行で1つ左の列に位置することを特徴とする請求項13に記載の処理方法。
- 演算がさらに、対象の第一の要素の位置を、圧縮手法で得られた圧縮率、入力ストリーム内の色の分布、入力ストリームの内容、その他の要素の少なくとも1つに応じて、対象の要素に関係する最初の要素の位置を調整することを特徴とする請求項13に記載の処理方法。
- 前記各配列が、要素の異なる時間での状態を表現する。
各対象の要素が、配列で独自の位置を占める。
配列の各要素への演算がさらに、対象の要素の2−Dエラーを少なくとも1つの所定の過去の配列の内容から計算する、3−Dエラーを、現在の配列の2−Dエラーと、少なくとも1つの過去の配列の2−Dエラーを合わせて計算する、計算された2−Dエラーをエラーフレームに入力する代わりに、3−Dエラーをエラーフレームの中に、対象のピクセルと並べて入力する操作から構成されることを特徴とする 請求項13に記載の処理方法。 - 少なくとも1つの信号保持媒体が、デジタル・データ処理装置により実行できる機械可読命令から成るプログラムで次の演算を実行するものを実現する。複数の配列に分割可能なデータ・ストリームを処理する方法が以下の操作より構成されることを特徴とする。ここで、それぞれの配列は複数の入力要素を持ち、各入力要素は値を持ち、それぞれの配列は,少なくとも最小の数の列と行を持っている。
対象の配列の対象の各要素に、以下の操作から構成される第一の演算を実行する。
2−Dエラーを、所定の関数を、対象の要素と選択された所定の位置関係の最初の要素に適用し計算する。ここで、最初の要素は、対象の要素として、他の行と列の要素を含む。
計算された2−Dエラーを、エラーフレームに、対象のピクセルと共に入力する。 - 計算操作が、以下の操作から構成されることを特徴とする請求項21に記載の媒体。
第一の値を、所定の関数を対象の要素の所定の近傍に適用して計算する。
第二の値を、所定の関数を、対象の要素の近傍である、対象の要素の近傍に作用して計算する。
2−Dエラーを、第一の値と第二の値の差として計算する。 - 計算操作が、2−Dエラーを、計算された差を合わせて計算し、第一の値を、所定の関数を対象の要素の所定の近傍に適用して計算し、複数のサブシーケンスの値を個々のケースにおいて、所定の関数を、対象の要素の近傍のである所定の要素の所定の近傍に適用して計算し、第一の値と、各サブシーケンスの値との差を計算し、2−Dエラーを、計算された差の合計として計算する操作から構成されることを特徴とする請求項21に記載の媒体。
- 前記の計算された差を合わせる演算が、平均することを含むことを特徴とする請求項23に記載の媒体。
- 前記所定の関数による計算結果が、所定の関数が適用された、所定の要素の1つの値から構成されることを特徴とする請求項23に記載の媒体。
- 第一の要素が、対象の要素に対して、1つ左の列、1つ上の行、1つ上の行で1つ右の列、1つ上の行で1つ左の列に位置することを特徴とする請求項21に記載の媒体。
- 演算がさらに、対象の第一の要素の位置を、圧縮手法で得られた圧縮率、入力ストリーム内の色の分布、入力ストリームの内容、その他の要素の少なくとも1つに応じて、対象の要素に関係する最初の要素の位置を調整することを特徴とする請求項21に記載の媒体。
- 前記各配列が、要素の異なる時間での状態を表現する。
各対象の要素が、配列で独自の位置を占める。
配列の各要素への演算がさらに、対象の要素の2−Dエラーを少なくとも1つの所定の過去の配列の内容から計算する、3−Dエラーを、現在の配列の2−Dエラーと、少なくとも1つの過去の配列の2−Dエラーを合計して計算する、計算された2−Dエラーをエラーフレームに入力する代わりに、3−Dエラーをエラーフレームの中に、対象のピクセルと並べて入力する操作から構成されることを特徴とする請求項21に記載の媒体。 - 複数の導電要素が接続された回路が、データ・ストリームの処理を実行するように設計され、た回路。すなわち、複数の配列に分割可能なデータ・ストリームを処理する方法が以下の操作から構成されることを特徴とする。ここで、それぞれの配列は複数の入力要素を持ち、各入力要素は値を持ち、それぞれの配列は,少なくとも最小の数の列と行を持っている。
対象の配列の各対象要素に、以下の操作から構成される第一の演算を実行する。
2−Dエラーを、所定の関数を、対象の要素と選択された所定の位置関係の最初の要素に適用し計算する。ここで、最初の要素は、対象の要素として、他の行と列の要素を含む。
計算された2−Dエラーを、エラーフレームに、対象のピクセルと共に入力する。 - 計算操作が、第一の値を所定の関数を、対象の要素の所定の近傍に適用して計算し、第二の値を所定の関数を、対象の要素の近傍である対象の要素の所定の近傍に適用して計算し、2−Dエラーを、第一の値と第二の値の差として計算する方法から構成されることを特徴とする請求項28に記載の回路。
- 計算操作が、第一の値を所定の関数を、対象の要素の所定の近傍に適用して計算し、複数のサブシーケンスの値を個々のケースにおいて、所定の関数を、対象の要素の近傍である所定の近傍に適用して計算し、第一の値と、各サブシーケンスの値との差を計算し、2−Dエラーを、計算された差を合わせて計算する操作から構成されることを特徴とする請求項28に記載の回路。
- 前記の計算された差を合わせる演算方法が、平均することを含むことを特徴とする請求項31に記載の回路。
- 前記所定の関数による計算結果が、所定の関数が適用された、所定の要素の1つの値から構成されることを特徴とする請求項31に記載の回路。
- 第一の要素が、対象の要素に対して、1つ左の列、1つ上の行、1つ上の行で1つ右の列、1つ上の行で1つ左の列に位置することを特徴とする請求項28に記載の回路。
- 演算がさらに、対象の第一の要素の位置を、圧縮手法で得られた圧縮率、入力ストリーム内の色の分布、入力ストリームの内容、その他の要素の少なくとも1つに応じて、対象の要素に関係する最初の要素の位置を調整することを特徴とする請求項28に記載の回路。
- 前記各配列が、要素の異なる時間での状態を表現する。各対象の要素が、配列で独自の位置を占める。
配列の各要素への演算がさらに、対象の要素の2−Dエラーを少なくとも1つの所定の配列の内容から計算する、3−Dエラーを、現在の配列の2−Dエラーと、少なくとも1つの過去の配列の2−Dエラーを合計して計算する、計算された2−Dエラーをエラーフレームに入力する代わりに、3−Dエラーをエラーフレームの中に、対象のピクセルと並べて入力することから構成されることを特徴とする、請求項28に記載の回路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/090,768 US7415162B2 (en) | 2003-05-27 | 2005-03-24 | Method and apparatus for lossless data transformation with preprocessing by adaptive compression, multidimensional prediction, multi-symbol decoding enhancement enhancements |
PCT/US2006/010996 WO2006102646A2 (en) | 2005-03-24 | 2006-03-22 | Method and apparatus for lossless data transformation with preprocessing by multidimensional-prediction |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008535327A true JP2008535327A (ja) | 2008-08-28 |
Family
ID=37024711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008503266A Pending JP2008535327A (ja) | 2005-03-24 | 2006-03-22 | 適応型データ圧縮、多次元予測、複数符号復号の改善による改良により前処理されたロスレスデータ変換の方法および装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7415162B2 (ja) |
JP (1) | JP2008535327A (ja) |
WO (1) | WO2006102646A2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8437805B2 (en) * | 2006-03-28 | 2013-05-07 | Research In Motion Limited | Method and apparatus for transforming images to accommodate screen orientation |
JP5080132B2 (ja) * | 2006-06-12 | 2012-11-21 | 三星電子株式会社 | データ補償回路及びこれを有する表示装置 |
US8792564B2 (en) * | 2008-10-28 | 2014-07-29 | Sony Corporation | Adaptive preprocessing method using feature-extracted video maps |
TWI378654B (en) * | 2009-02-04 | 2012-12-01 | Novatek Microelectronics Corp | Adaptive canonical huffman decoder and method thereof and video decoder |
US20110122224A1 (en) * | 2009-11-20 | 2011-05-26 | Wang-He Lou | Adaptive compression of background image (acbi) based on segmentation of three dimentional objects |
US10271057B2 (en) * | 2014-11-04 | 2019-04-23 | Vahagn Nurijanyan | System and methods for image/video compression |
US9673836B1 (en) * | 2016-09-23 | 2017-06-06 | International Business Machines Corporation | System level testing of entropy encoding |
US10362319B2 (en) * | 2017-06-04 | 2019-07-23 | Apple Inc. | Techniques for compressing multiple-channel images |
US10362325B2 (en) * | 2017-06-04 | 2019-07-23 | Apple Inc. | Techniques for compressing multiple-channel images |
EP4071497A1 (en) * | 2018-05-18 | 2022-10-12 | Aptiv Technologies Limited | Radar system and method for receiving and analyzing radar signals |
US11463559B1 (en) | 2021-08-24 | 2022-10-04 | Lyft, Inc. | Compressing digital metrics for transmission across a network utilizing a graph-based compression dictionary and time slice delta compression |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02125597A (ja) * | 1988-09-30 | 1990-05-14 | American Teleph & Telegr Co <Att> | カラー・ビデオ信号の符号化方法および符号化回路 |
JPH0397320A (ja) * | 1989-09-11 | 1991-04-23 | Matsushita Electric Ind Co Ltd | データ圧縮装置 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4818914A (en) * | 1987-07-17 | 1989-04-04 | Sri International | High efficiency lamp |
US4868653A (en) | 1987-10-05 | 1989-09-19 | Intel Corporation | Adaptive digital video compression system |
US5095374A (en) * | 1989-10-10 | 1992-03-10 | Unisys Corporation | Method and apparatus for lossless compression and decompression of image data |
DE69126940T2 (de) * | 1990-05-14 | 1998-02-05 | Eastman Kodak Co | Blockadaptive lineare prädiktionskodierung mit adaptiver verstärkung und vorspannung |
US5057917A (en) * | 1990-06-20 | 1991-10-15 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Real-time data compression of broadcast video signals |
DE69419545T2 (de) | 1993-02-26 | 1999-11-25 | Nec Corp., Tokio/Tokyo | Verfahren und Gerät zur Kompression binärer Bilddaten |
US5883976A (en) * | 1994-12-28 | 1999-03-16 | Canon Kabushiki Kaisha | Selectively utilizing multiple encoding methods |
KR0174452B1 (ko) | 1995-02-28 | 1999-03-20 | 배순훈 | 디지털 영상 복호화장치 |
US6014463A (en) | 1995-05-16 | 2000-01-11 | Canon Kabushiki Kaisha | Image processing apparatus and method |
US5680129A (en) * | 1995-07-18 | 1997-10-21 | Hewlett-Packard Company | System and method for lossless image compression |
US5764374A (en) * | 1996-02-05 | 1998-06-09 | Hewlett-Packard Company | System and method for lossless image compression having improved sequential determination of golomb parameter |
US5675382A (en) * | 1996-04-08 | 1997-10-07 | Connectix Corporation | Spatial compression and decompression for video |
US5751860A (en) * | 1996-09-03 | 1998-05-12 | Acer Peripherals, Inc. | Method for compressing and decompressing digital image data |
US6016163A (en) * | 1997-03-12 | 2000-01-18 | Scientific-Atlanta, Inc. | Methods and apparatus for comparing blocks of pixels |
US6041078A (en) | 1997-03-25 | 2000-03-21 | Level One Communications, Inc. | Method for simplifying bit matched motion estimation |
US6009209A (en) * | 1997-06-27 | 1999-12-28 | Microsoft Corporation | Automated removal of red eye effect from a digital image |
US5945933A (en) * | 1998-01-27 | 1999-08-31 | Infit Ltd. | Adaptive packet compression apparatus and method |
US6075470A (en) * | 1998-02-26 | 2000-06-13 | Research In Motion Limited | Block-wise adaptive statistical data compressor |
US6081209A (en) | 1998-11-12 | 2000-06-27 | Hewlett-Packard Company | Search system for use in compression |
IL129203A (en) * | 1999-03-28 | 2002-07-25 | Univ Ramot | System and method for compressing figures |
JP2000286717A (ja) | 1999-03-30 | 2000-10-13 | Matsushita Electric Ind Co Ltd | デコード装置 |
AU2001259427A1 (en) | 2000-05-04 | 2001-11-12 | Solemates, Inc. | Network-based system and method for specification, ordering and distribution of mass-customized consumer merchandise |
US6710909B2 (en) * | 2001-11-08 | 2004-03-23 | Seiko Epson Corporation | Projector |
ES2610430T3 (es) * | 2001-12-17 | 2017-04-27 | Microsoft Technology Licensing, Llc | Codificación por omisión de macrobloques |
US7567617B2 (en) * | 2003-09-07 | 2009-07-28 | Microsoft Corporation | Predicting motion vectors for fields of forward-predicted interlaced video frames |
-
2005
- 2005-03-24 US US11/090,768 patent/US7415162B2/en not_active Expired - Fee Related
-
2006
- 2006-03-22 JP JP2008503266A patent/JP2008535327A/ja active Pending
- 2006-03-22 WO PCT/US2006/010996 patent/WO2006102646A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02125597A (ja) * | 1988-09-30 | 1990-05-14 | American Teleph & Telegr Co <Att> | カラー・ビデオ信号の符号化方法および符号化回路 |
JPH0397320A (ja) * | 1989-09-11 | 1991-04-23 | Matsushita Electric Ind Co Ltd | データ圧縮装置 |
Also Published As
Publication number | Publication date |
---|---|
US20050232504A1 (en) | 2005-10-20 |
WO2006102646A3 (en) | 2007-11-01 |
WO2006102646A2 (en) | 2006-09-28 |
US7415162B2 (en) | 2008-08-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008535319A (ja) | 適応型データ圧縮、多次元予測、複数符号復号の改善による改良により前処理されたロスレスデータ変換の方法および装置 | |
JP2008535327A (ja) | 適応型データ圧縮、多次元予測、複数符号復号の改善による改良により前処理されたロスレスデータ変換の方法および装置 | |
CN112953550B (zh) | 数据压缩的方法、电子设备及存储介质 | |
US6931159B2 (en) | Size reduction method and device for compressed images | |
CN102687404B (zh) | 用于数据压缩的数据值出现信息 | |
JP2014525183A (ja) | 2dマトリクスにエンコーディングパラメータを保存する画像圧縮のための方法および装置 | |
US20020136454A1 (en) | Non-linear quantization and similarity matching methods for retrieving image data | |
CN109716658A (zh) | 一种基于相似性的重复数据删除方法和系统 | |
KR20120036834A (ko) | 하나 이상의 구성 요소들을 포함하는 3d 메시 모델을 인코딩/디코딩하는 방법 | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
CN110162290B (zh) | 一种针对OLED屏DeMURA数据的压缩方法 | |
WO2010141926A1 (en) | Efficient incremental coding of probability distributions for image feature descriptors | |
CN110933438B (zh) | 一种jpeg图像可逆信息隐藏方法 | |
US20230086264A1 (en) | Decoding method, encoding method, decoder, and encoder based on point cloud attribute prediction | |
JP2006505075A (ja) | 複数のイメージフレームを有するビデオシーケンス検索のための非線形量子化及び類似度マッチング方法 | |
CN102300095B (zh) | 一种超谱信号的快速压缩编码方法及图像压缩方法 | |
Vázquez et al. | Using normalized compression distance for image similarity measurement: an experimental study | |
CN110021368B (zh) | 比对型基因测序数据压缩方法、系统及计算机可读介质 | |
WO2016110125A1 (zh) | 高维向量的哈希方法、向量量化方法及装置 | |
CN112800183B (zh) | 内容名称数据处理方法及终端设备 | |
CN114372169A (zh) | 一种同源视频检索的方法、装置以及存储介质 | |
JPH08186823A (ja) | 符号化装置及び方法 | |
JP3495800B2 (ja) | 符号化装置及び方法 | |
JP3968276B2 (ja) | 時系列データ圧縮・解凍装置およびその方法 | |
CN118354087B (zh) | 一种图像无损压缩方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100930 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101005 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110301 |