JP2016513436A - エンコーダ、デコーダ及び方法 - Google Patents

エンコーダ、デコーダ及び方法 Download PDF

Info

Publication number
JP2016513436A
JP2016513436A JP2015559442A JP2015559442A JP2016513436A JP 2016513436 A JP2016513436 A JP 2016513436A JP 2015559442 A JP2015559442 A JP 2015559442A JP 2015559442 A JP2015559442 A JP 2015559442A JP 2016513436 A JP2016513436 A JP 2016513436A
Authority
JP
Japan
Prior art keywords
data
value
encoded
encoding
values
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.)
Granted
Application number
JP2015559442A
Other languages
English (en)
Other versions
JP6045123B2 (ja
Inventor
オッシ カレヴォ
オッシ カレヴォ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gurulogic Microsystems Oy
Original Assignee
Gurulogic Microsystems Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gurulogic Microsystems Oy filed Critical Gurulogic Microsystems Oy
Publication of JP2016513436A publication Critical patent/JP2016513436A/ja
Application granted granted Critical
Publication of JP6045123B2 publication Critical patent/JP6045123B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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
    • H03M7/3002Conversion to or from differential modulation
    • 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
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • 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
    • H03M7/3002Conversion to or from differential modulation
    • H03M7/3044Conversion to or from differential modulation with several bits only, i.e. the difference between successive samples being coded by more than one bit, e.g. differential pulse code modulation [DPCM]
    • 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
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3079Context modeling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

数値列を含む前記入力データ(D1)を符号化することにより、対応符号化出力データ(D2又はD3)を生成するエンコーダ(10)であって、エンコーダ(10)は、差分符号化及び/又は合算符号化の方式を前記入力データ(D1)に適用することにより1つ又は複数の対応符号化列を生成するデータ処理装置を備えるものであり、但し、前記1つ又は複数の対応符号化列は、符号化出力データ(D2又はD3)を生成するために、最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを受け、かつエンコーダ(10)は、出力符号化データ(D2又はD3)を作成するのに利用される一連の予測値としてデフォルト第1予測値を利用するように動作可能であり、該符号化データは、入力値、予測値及び符号化演算子を用いて生成されることを特徴とする、エンコーダ(10)が提供される。【選択図】図1

Description

本開示は、エンコーダに関し、例えば直接ODelta演算子(direct ODelta operator)を利用するよう動作可能であるエンコーダ等に関する。さらに、本開示は、データを符号化する方法に関し、例えば直接ODelta演算子を利用してデータを符号化する方法に関する。さらに、本開示は、符号化されたデータを復号するデコーダにも関し、例えば逆ODelta演算子を適用するよう動作可能であるデコーダに関する。加えて、本開示は、符号化されたデータを復号する方法に関連し、例えば逆ODelta演算子を適用することによって符号化されたデータを復号する方法に関する。さらに加えて、本開示は、不揮発性(非一時的)機械可読データ記憶媒体に記録されたソフトウェア製品であって、上記方法を実装するコンピュータハードウェアで実行可能であるソフトウェア製品に関する。
背景
クロード・E・シャノン(Claude E. Shannon)は、現代の通信システムの基礎を提供する、通信の数学的理論を提唱した。さらに、様々な現代の符号化法が上記数学的理論の知識において発展してきた。表1には、現代の技術知識の概要を提供する情報源のリストが示されている。

欧州特許EO1376974B1(「パケットヘッダ圧縮の方法及び装置」、アルカテル・ルーセント(Alcatel Lucent)(フランス))には、データパケットを送信する方法であって、データパケットが、圧縮値を含むフィールド(CF)を含む、方法が記載されている。この圧縮値は、2つの連続データパケットの間で生じる値を示すものであり、所定の区間(以下、「解析区間」("interpretation interval"))を含む。この方法は、以下の工程を含む。
(i)圧縮される値及と所定のラップアラウンド境界(wraparound boundary)との間の距離が、所定の閾値よりも小さい場合に、圧縮された値に対する追加ビットであって、ラップアラウンド境界に対する、圧縮される値の相対位置を一義的に示す追加ビットを付加すること、
(ii)レシーバにおいて、圧縮値の受信ビット全てに応じて第1解析区間を計算すること、
(iii)第1解析区間の1を超える値が受信圧縮値に一致した場合、ラップアラウンドを信号伝達すること、
(iv)ラップアラウンドの信号伝達を受けて、上記追加ビットを除く圧縮値の受信ビット全てに従い、第2解析区間を計算すること、並びに
(v)上記追加ビットを用いて、上記第2解析区間における展開値について曖昧性解消を実行すること。
シャノンエントロピーの定義は、表1に記載される文献P7及びP8で与えられる。所与のデータに存在するエントロピーを圧縮するよう動作可能である各種圧縮法が多数存在し、それら方法は、例えば所与のデータに対してより大きい可逆圧縮率を獲得することを目的としてエントロピーを変更するために時として利用される。このようなエントロピー変更方法は、例えば、表1の文献P2に記載されるランレングス符号化(run-length-encoding;RLE)、表1の文献P1に記載される可変長符号化(variable-length-coding;VLC)、表1の文献P3に記載のハフマン符号化(Huffman coding)、表1の文献P6に記載の差分符号化(Delta coding)、及び表1の文献P4に記載の算術符号化(Arithmetic coding)、即ちレンジ符号化(Range coding)を含むものである。これら方法は、アルファベット文字、数字、バイト及びワードを表すデータを圧縮するために有利に利用される。しかしながら、これら方法は、ビットレベルにおいて所与のデータを圧縮するのに十分に適合されたものではなく、そのため、ビット単位で変化しやすい上記のような所与のデータを圧縮するのに十分に適したものとはいえない。
例えば表1の文献P6に記載されるような差分符号化は、正の元データ値から正又は負の値を取り得る差分値を生成するように機能可能である。さらに、用いられるデータ要素の大きさいに基づいて8ビット、16ビット又は32ビットのラップアラウンドに用いるための差分エンコーダの実装が知られている。しかしながら、8ビット、16ビット又は32ビットの値以外のレジーム用に最適化された差分エンコーダは、現在、存在しない。詳細には、元ビット値、即ち「0」及び「1」を、例えばビット単位の符号化において、それら値から典型的に生じる3つの異なる値、即ち「−1」、「0」及び「1」として符号化する場合には、既知の差分エンコーダは特に効率が悪い。
あらゆる種類のデータが記憶領域を消費し、また上記のようなデータをある位置から他の位置に移動する際に通信システム伝送容量が必要とされる。例えば3次元動画コンテンツ等のマルチメディアの発展の結果、データ量が増加するにつれ、それに応じて、より多くの記憶領域及び伝送容量が、当該データを取り扱うのに必要とされ、さらに、データ量が増加するにつれ、より多くのエネルギーが必要とされる。世界規模で、伝送されるデータ量は、時代と共に着実に増加しており、例えば、インターネットは、膨大な量のデータを包含しており、そのデータの一部は、複数コピーで記憶されている。さらに、例えばデータのサイズを小さくする際に用いられる、該データに関連するエントロピーEを圧縮するために現在利用可能な方法がある。さらに、例えば差分符号化及びランレングス符号化(run-length encoding;RLE)等、エントロピーを変更する方法もまた利用可能なものがあるが、現在、実現可能なものよりも更に高い程度のデータ圧縮を提供するために、改良法が必要とされている。
例えば元データのデータ要素における全ての値が用いられず、かつ/又は、差分符号化法と組み合わせて利用される先行又は後続の符号化法が、符号化されるデータに当初用いられるビットダイナミックよりも高いビットフォーマットを必要とする場合は、より高速かつより効率的な元データの符号化を達成することを可能とするために既知の差分符号化法、例えばビット単位の符号化の利用を最適化する必要もある。
欧州特許EO1376974B1
可変長符号("Variable-length code")、ウィキペディア(2012年11月28日にアクセス)URL: http://en.wikipedia.org/wiki/Variable-length_code ランレングス符号化("Run-length encoding")、ウィキペディア(2012年11月28日にアクセス)URL: http://en.wikipedia.org/wiki/Run-length_encoding ハフマン符号化("Huffman coding")、ウィキペディア(2012年11月28日にアクセス)URL: http://en.wikipedia.org/wiki/Huffman_coding 算術符号化("Arithmetic coding")、ウィキペディア(2012年11月28日にアクセス)URL: http://en.wikipedia.org/wiki/Arithmetic_coding 通信の数学的理論("A Mathematic Theory of Communication")、シャノン・クロード・E(Shannon, Claude E.)(1948)、ウィキペディア(2012年11月28日にアクセス)URL: http://cm:bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf 差分符号化("Delta encoding")、ウィキペディア(2012年11月28日にアクセス)URL: http://en.wikipedia.org/wiki/Delta_coding シャノンの情報源符号化定理(Shannon's source coding theorem);ウィキペディア(2012年11月28日にアクセス)URL: http://en.wikipedia.org/wiki/Source_coding_theorem エントロピー("Entropy")- ウィキペディア(2012年11月28日にアクセス)URL: http://en.wikipedia/wiki/Entropy
摘要
本開示は、各ビットそれぞれを符号化する場合、つまりビット単位の符号化において各ビットを符号化する場合、並びにデータのその他値を符号化する場合により効率的な、差分エンコーダの改良型、即ち「直接ODeltaエンコーダ」を提供することを目的とする。
また、本開示は、データを差分符号化する改良法、即ち、データを直接ODelta符号化する方法を提供することを目的とする。
さらに、本開示は、符号化データ(例えば、ODelta符号化データ)を復号する改良デコーダ、即ち、逆ODeltaデコーダを提供することを目的とする。
加えて、本開示は、符号化データ(例えば、ODelta符号化データ)を復号する改良法、即ち、データの逆ODelta復号法を提供することを目的とする。
第1の態様によれば、添付の請求項1に記載されるエンコーダが提供される。即ち、数値列を含む入力データ(D1)を符号化することにより、対応符号化出力データ(D2又はD3)を生成するエンコーダ(10)であって、エンコーダ(10)は、差分符号化及び/又は合算符号化の方式を入力データ(D1)に適用することにより1つ又は複数の対応符号化列を生成するデータ処理装置を備えるものであり、但し、上記1つ又は複数の対応符号化列は、符号化出力データ(D2又はD3)を生成するために、最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを受け、かつエンコーダ(10)は、出力符号化データ(D2又はD3)を作成するのに利用される一連の予測値としてデフォルト第1予測値を利用するように動作可能であり、該符号化出力データ(D2又はD3)は、入力値、予測値及び符号化演算子を用いて生成されることを特徴とする、エンコーダ(10)が提供される。
上記ラップアラウンドは、上記エンコーダを実施する場合に、負の差分又は極端に大きい値を生じさせないために利用されるという利点を持つ。「数値」という用語は、個々のビット(2進法)、並びにビットの群(2進数より高次)を含むものと解される。
本発明は、差分符号化及び/又は合算符号化並びにラップアラウンドの組合せにより、符号化データ(D2)を生成する上で入力データ(D1)の有用なエントロピー変更を提供することが可能であり、この事は、符号化データ(D2)から符号化データ(D3)を生成する際に所与のエントロピーエンコーダ内でデータ圧縮強化の達成を可能にするという利点を有する。
オプションで、上記エンコーダに関し、上記データ処理装置は、入力データ(D1)及び/又は上記1つ又は複数の対応符号化列を分析することにより、符号化出力データ(D2又はD3)の生成に用いるための上記1つ又は複数の対応符号化列に適用する1つ又は複数のオフセット値、最小値、及び/又は最大値を計算するように動作可能である。さらにオプションで、上記エンコーダに関し、上記1つ又は複数のオフセット値は、値「0」を有する。
オプションで、上記エンコーダは、1つ又は複数の1ビット値を含む数値を処理するように動作可能であり、かつ上記エンコーダは、ビット単位方式で入力データ(D1)を符号化するように動作可能である。
オプションで、上記エンコーダにおいて、上記1つ又は複数の対応符号化列は、入力データ(D1)の連続値における変化を表す。
オプションで、上記エンコーダは、ラップアラウンド値(wrapValue)を利用するように動作可能であり、該ラップアラウンド値は、最大値(highValue)−最小値(lowValue)+1である。このようなラップアラウンド値は、符号化出力データ(D2又はD3)を生成する際に、最小値(lowValue)未満の値や、しばしば負の値、又は最大値(highValue)を超える値を生じさせないために、有利に用いられる。
オプションで、上記エンコーダは、別々に符号化される複数のデータセクションに入力データ(D1)を分割するように動作可能である。さらにオプションで、上記エンコーダは、上記データセクションに対して選択的に符号化を適用するように動作可能であり、該符号化の適用は、これによってデータ圧縮が符号化出力データ(D2又はD3)において達成可能である場合にのみ実行されるものである。
さらにオプションで、上記エンコーダにおいて、デフォルト第1予測値は「0」である。さらにオプションで、上記第1予測値は、また、最大値(highValue)、最小値(lowValue)、(最大値(highValue)+最小値(lowValue)÷2等であり得る。
オプションで、上記エンコーダは、更なる符号化を適用することにより、符号化入力データ(D2又はD3)を生成し、該更なる符号化が、ランレングス符号化(RLE)、分割RLE、エントロピー変更(EM)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化のうちの少なくとも1つを含む。
オプションで、エンコーダ(10)は、相互に類似のビットのランレングスに応じて入力データ(D1)を複数のセクションに分割するように動作可能であり、上記ランレングスは、ランレングス符号化(RLE)、分割RLE、エントロピー変更(EM)、ハフマン符号化、可変長符号化(VLE)、レンジ符号化及び/又は算術符号化を用いる符号化に有効なものである。
オプションで、上記エンコーダにおいて、上記処理装置は、コンピュータハードウェアを用いて実施するものであり、該コンピュータハードウェアは、非一時的機械可読データ記憶媒体に記録された1つ又は複数のソフトウェア製品を実行するように動作可能である。
第2の態様によれば、数値列を含む入力データ(D1)を符号化するエンコーダを用いることにより、対応符号化入力データ(D2又はD3)を生成する方法であって、該方法は、
(a)差分符号化及び/又は合算符号化の方式を入力データ(D1)に適用することにより、1つ又は複数の対応符号化列を生成するエンコーダのデータ処理装置を用いること;並びに
(b)符号化出力データ(D2又はD3)を生成するために、上記1つ又は複数の対応符号化列に対して最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを行う、上記データ処理装置を用いること
を含み、
上記方法は、符号化出力データ(D2又はD3)を作成するのに利用される一連の予測値としてデフォルト第1予測値を利用することを含み、上記符号化データは、入力値、予測値及び符号化演算子を用いて生成されることを特徴とする方法が提供される。
上記ラップアラウンドは、上記符号化法を実施する場合に、負の差分や極端に大きい値を生じさせないために利用されるという利点を持つ。「数値」という用語は、個々のビット(2進法)、並びにビットの群(2進数より高次)を含むものと解される。
オプションで、入力データ(D1)及び/又は上記1つ又は複数の対応符号化列を分析することにより、符号化出力データ(D2又はD3)の生成に用いるための上記1つ又は複数の対応符号化列に適用する1つ又は複数のオフセット値、最小値、及び/又は最大値を計算する上記データ処理装置を用いる。さらにオプションで、上記方法は、1つ又は複数のオフセット値に関し値「0」を用いることを含む。
オプションで、上記方法は、1つ又は複数の1ビット値を含む数値を処理すること、並びにビット単位方式で入力データ(D1)を符号化することを含む。さらにオプションで、上記方法は、1つ又は複数のオフセット値に関し値「0」を用いることを含む。
オプションで、上記方法を実施する際には、上記1つ又は複数の対応符号化列は、入力データ(D1)の連続値における変化を表す。
オプションで、上記方法は、ラップアラウンド値(wrapValue)を利用するようにエンコーダを動作させることを含み、該ラップアラウンド値は、最大値(highValue)−最小値(lowValue)+1である。このようなラップアラウンドは、符号化出力データ(D2又はD3)を生成する際に、最小値(lowValue)未満の値、しばしば負の値、又は最大値(highValue)を超える値を生じさせないために、有利に用いられる。
オプションで、上記方法は、別々に符号化される複数のデータセクションに入力データ(D1)を分割することを含む。さらにオプションで、上記方法は、上記データセクションに対して選択的に符号化を適用することを含み、該符号化を適用することは、これによってデータ圧縮が符号化出力データ(D2又はD3)において達成可能である場合にのみ実行されるものである。
さらにオプションで、上記方法において、デフォルト第1予測値は「0」である。さらにオプションで、上記第1予測値は、また、最大値(highValue)、最小値(lowValue)、(最大値(highValue)+最小値(lowValue)÷2等であり得る。
オプションで、上記方法は、更なる符号化を適用することにより、符号化出力データ(D2)を生成することを含み、該更なる符号化が、ランレングス符号化(RLE)、分割RLE、エントロピー変更(EM)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化のうちの少なくとも1つを含む。
さらにオプションで、上記方法は、相互に類似のビットのランレングスに応じて入力データを複数のセクションに分割することを含み、上記ランレングスは、ランレングス符号化(RLE)、分割RLE、エントロピー変更(EM)、ハフマン符号化、可変長符号化(VLE)、レンジ符号化及び/又は算術符号化を用いる符号化に有効なものである。
さらにオプションで、上記方法は、コンピュータハードウェアを用いて上記処理装置を実施することを含み、該コンピュータハードウェアは、非一時的機械可読データ記憶媒体に記録された1つ又は複数のソフトウェア製品を実行するように動作可能である。
第3の態様によれば、符号化データ(D2、D3又はD4)を復号することにより対応復号出力データ(D5)を生成するデコーダであって、デコーダは、符号化データ(D2、D3又はD4)の1つ又は複数の部分を処理するデータ処理装置を備え、該データ処理装置は、上記1つ又は複数の部分の1つ又は複数の対応符号化列に対して差分復号及び/又は合算復号の方式を適用するように動作可能であり、上記1つ又は複数の符号化列は、復号出力データ(D5)を生成するために、最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを受け、上記データ処理装置は、該装置を介して復号される一連のデータにおいて第1予測値のデフォルト値を仮定するように動作可能であることを特徴とする、デコーダが提供される。
オプションで、上記デコーダは、1つ又は複数の1ビット値を含む符号化データ(D2、D3又はD4)を復号するように動作可能であり、かつ上記デコーダは、ビット単位方式で符号化データ(D2、D3又はD4)を復号するように動作可能である。
オプションで、上記デコーダは、上記データ処理装置が、復号出力データ(D5)の生成に用いるための上記1つ又は複数の符号化列に適用する1つ又は複数の値を受信するように動作可能となるように構成されている。さらにオプションで、受信される値は、最大値、最小値、及び/又はオフセット値である。さらにオプションで、上記デコーダは、値「0」を有する1つ又は複数のオフセット値に関して機能するように動作可能である。
オプションで、上記デコーダは、符号化データ(D2、D3又はD4)に符号化される連続値における変化を表す1つ又は複数の対応符号化列に関して機能するように動作可能である。
オプションで、上記デコーダは、ラップアラウンド値(wrapValue)を利用するように動作可能であり、該ラップアラウンド値は、最大値(highValue)−最小値(lowValue)+1である。このようなラップアラウンドは、復号出力データ(D5)を生成する際に、最小値(lowValue)未満の値、しばしば負の値、又は最大値(highValue)を超える値を生じさせないために用いられる。
オプションで、上記デコーダは、上記データ処理装置が、該装置を介して処理されるデータに対して、ランレングス符号化(RLE)、分割RLE、エントロピー変更(EM)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化の少なくとも1つの逆を適用するように動作可能となるように動作可能である。
さらにオプションで、上記デフォルト予測値は、値「0」を有する。しかしながら、上述のとおり、予測値は、また、最小値(lowValue)、最大値(highValue)、(最大値(highValue)+最小値(lowValue)+1)÷2等であり得る。
オプションで、上記デコーダにおいて、上記処理装置は、コンピュータハードウェアを用いて実装されるものであり、該コンピュータハードウェアは、非一時的機械可読データ記憶媒体に記録された1つ又は複数のソフトウェア製品を実行するように動作可能である。
第4の態様によれば、符号化データ(D2、D3又はD4)を復号するデコーダを用いることにより対応復号出力データ(D5)を生成する方法であって、該方法は、
上記復号データ(D2、D3又はD4)の1つ又は複数の部分を処理するデータ処理装置を用いることを含み、
上記データ処理装置は、上記1つ又は複数の部分の1つ又は複数の対応符号化列に対して差分復号及び/又は合算復号の方式を適用するように動作可能であり、上記1つ又は複数の符号化列が、復号出力データ(D5)を生成するために、最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを受け、
上記データ処理装置は、該装置を介して復号される一連のデータにおいて第1予測値のデフォルト値を仮定するように動作可能であることを特徴とする方法が提供される。
オプションで、上記方法は、1つ又は複数の1ビット値を含む符号化データ(D2、D3又はD4)を復号すること、並びにビット単位方式で符号化データ(D2、D3又はD4)を復号するデコーダを用いることを含む。さらにオプションで、上記方法において、1つ又は複数のオフセット値は値「0」を有する。
オプションで、上記方法は、入力データ(D1)の値、及び/又は復号出力データ(D5)の生成に用いるための1つ又は複数の対応復号列に適用する1つ又は複数の対応符号化列(D2、D3又はD4)を受信するデータ処理装置を用いることを含む。
オプションで、上記方法において、上記1つ又は複数の対応符号化列は、符号化データ(D2、D3又はD4)に符号化される連続値における変化を表す。
オプションで、上記方法は、復号出力データ(D5)を生成する際に、最大値におけるラップアラウンド又は最小値におけるラップアラウンドを利用することにより、負の差分や極端に大きな値を生じさせないデータ処理装置を用いることを含む。
オプションで、上記方法において、上記データ処理装置は、該装置を介して処理されるデータに対して、ランレングス符号化(RLE)、分割RLE、エントロピー変更(EM)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化の少なくとも1つの逆を適用するように動作可能である。
さらにオプションで、上記方法において、上記デフォルト値は、値「0」を有する。
オプションで、上記方法において、上記処理装置は、コンピュータハードウェアを用いて実装され、該コンピュータハードウェアは、非一時的機械可読データ記憶媒体に記録された1つ又は複数のソフトウェア製品を実行するように動作可能である。
第5の態様によれば、符号化データ(D2、D3又はD4)を復号するデコーダを用いることにより対応復号出力データ(D5)を生成する方法であって、該方法は、
(a)上記符号化データ(D2、D3又はD4)を処理するものであり、上記符号化データ(D2、D3又はD4)は、変換データの連続値における変化を表す少なくとも1つの符号化列を含み、かつ最大値におけるラップアラウンド又は最小値におけるラップアラウンドを利用するものであることを考慮して、上記符号化データ(D2、D3又はD4)の1つ又は複数の部分に復号を適用するデータ処理装置を用いること、並びに
(b)対応処理データを生成し、かつ少なくとも1つのプリオフセット値及び/又はポストオフセット値を用いて上記1つ又は複数の部分を変換することにより復号出力データ(D5)を生成するデータ処理装置を用いること、を含むことを特徴とする方法が提供される。
上述の態様に関連し、オフセット値については、オプションで、デコーダにおいて、上記データ処理装置は、符号化データ(D2、D3又はD4)における各種値を受信し、かつそれら値から少なくとも1つのプリオフセット値及び/又はポストオフセット値を導出するように動作可能である。上記ポストオフセット値は、逆演算子、例えば、直接逆ODelta演算子を用いる前に変換データを生成するのに用いることが可能であり、上記プリオフセット値は、逆演算子の後にデータを変換するのに用いられる。少なくとも1つのオフセット値は、オプションで、処理データと組合され、復号出力データ(D5)が生成される。
オフセットは、任意にデコーダにおいて使用可能である。オフセットは、それがエンコーダにおいてもまた用いられる際に用いられる。範囲 (lowValueからhighValue)を用いるパラメータ(wrapValue)内のラップアラウンド、逆演算子(合算対差分)及び逆予測因子(入力値対出力値)は、デコーダの重要な要素である。
オプションで、上記デコーダにおいて、上記データ処理装置は、該装置を介して処理されるデータに対して、ランレングス符号化(RLE)、分割RLE、エントロピー変更(EM)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化の少なくとも1つの逆を適用するように動作可能である。この処理は、データ(D3)からデータ(D4)を生成する目的のために実行される。
上記デコーダにおいて、上記データ処理装置は、逆復号、例えば逆ODelta復号の方式で実施される場合、範囲(lowValueからhighValue)を用いるパラメータ(wrapValue)内のラップアラウンドを利用するように動作可能である。
上記第6の態様によれば、入力データ(D1)を符号化することにより対応符号化データ(D2又はD3)を生成する、第1の態様によるエンコーダを少なくとも1つ、並びに符号化データ(D2、D3又はD4)を復号することにより対応復号データ(D5)を生成する、第3の態様によるデコーダを少なくとも1つ備えるコーデック装置が提供される。
第7の態様によれば、不揮発性(非一時的)機械可読データ記憶媒体に記録されたソフトウェア製品であって、該ソフトウェア製品は、第2の態様による、データを符号化する方法を実施するためにコンピュータハードウェアで実行可能である、ソフトウェア製品が提供される。
第8の態様によれば、不揮発性(非揮発性)機械可読データ保存媒体に記録されたソフトウェア製品であって、該ソフトウェア製品は、第4の態様による、データを符号化する方法を実施するためにコンピュータハードウェアで実行可能である、ソフトウェア製品が提供される。
本発明の特徴は、添付の特許請求の範囲に規定される発明の要旨を逸脱することなく、各種組合せにおいて組合せることが可能であることが理解される。
以下の図面を参照して、本開示の実施形態を例としてのみ以下に説明する。
図1は、本開示に従って機能するように実施されるエンコーダ及びデコーダを備えるコーデック装置の図である。 図2は、図1のエンコーダにおいて実行される、データを符号化する方法の工程の図である。 図3は、図1のデコーダにおいて実行される、データを復号する方法の工程の図である。
詳細説明
添付の図面において、下線を付した番号は、その下線を付した番号が位置する要素、又はその下線を付した番号が隣接する要素を表すのに用いられる。下線が付されていない番号は、要素にその下線が付されていない番号を結合させる線によって特定されるその要素に関する。番号に下線が付されておらず、関連する矢印が付随する場合、下線が付されていないその番号が、その矢印が指し示す全体要素を特定するのに用いられる。
本開示の実施形態を説明する際、表2に示す通り以下の頭字後及び定義が用いられる。
概して、図1を参照すると、本開示は、エンコーダ10及びそれに関連する操作方法に関連し、エンコーダ10は、直接ODeltaエンコーダとして実施されるという利点を持つ。さらに、本開示は、対応するデコーダ20にも関連し、デコーダ20は、逆ODeltaデコーダとして実施されるという利点を持つ。該開示による実施形態では、有利には、上述した既知の差分符号化法のビット最適化バージョン、並びにその他データに関するレンジ最適化バージョンである直接ODelta演算子を利用する。ODelta符号化が、可変長データワード、例えば8/16/32/64ビットを利用し、かつ/又は元の値が1〜64ビットの範囲で表現される8/16/32/64ビットのデータ要素の可変長符号化を利用するコンピュータハードウェア又は専用デジタルハードウェアにおいて利用され、対応する符号化値が1〜64ビットで生成される。勿論、エンコーダ10及びデコーダ20は、如何なる場合においても、データD1、例えば元データにどの種類の数値が含まれているのかを認識し、従って、その定義又は伝送が、ここでさらに明らかになることはない。数値範囲(MIN及びMAX)が既知であること、並びにデータD1が利用され得ることが単に仮定される。
既知の差分符号化法は、元(MIN〜MAX)から結果(MIN−MAX〜MAX−MIN)まで値の範囲を増加させる。この事は、該符号化法は、元データが正の値のみを含む場合、負の値もまた作成することを意味する。本開示によるODelta演算子は、対応する元の値の範囲にない値を作成することは決してなく、従って、使用されるデータ範囲を増加させることもなく、それ故に例えばエントロピー低減及び関連データ圧縮を実行する際に有利に利用される。例えば、既知の差分符号化法は、5ビット、即ち0〜31の値の範囲のデータストリームを用いて作動し、その結果、該差分符号化法によって生成されるデータ値は、−31〜+31の範囲、即ち6ビット(即ち符号ビット+5ビット)を用いて実質的に表現され得る63個の値になる。対照的に、直接ODelta生成値は、上記の5ビットデータストリームから生成される際には、0〜31の範囲に依然としてある。さらに、既知の差分符号化法は、再起的に実施することは不可能であるが、本開示による直接又は逆ODelta演算子は、再帰的に実施可能であるにも関わらず、用いた値の範囲を依然として保存する。この値の範囲は、ビットに対して忠実である必要はなく、例えば、0〜31の値は5ビットで定義されるが、ODelta演算子は、任意の値の範囲、例えば0〜25の値の範囲を用いることができ、依然として適切に動作する。
原則として、本明細書に記載されるODelta法は、常に、既存のデータ範囲に基づいて直接機能することが可能であり、そのデータ範囲の例は以下に挙げられる。ODelta法は、データにおいて生じる最低値(「lowValue」)及びデータにおいて生じる最高値(「highValue」)を示す情報を伝達することによって強化することもできる。lowValue≧MINかつhighValue≦MAXであること、並びにこれらの値は任意選択のものであることに留意されたい。
本開示による直接ODelta演算子及び逆ODelta演算子の2つの例が以下に記載されている。直接ODelta演算子及び逆ODelta演算子の最初の例は、例えば不揮発性(非一時的)機械可読データ記憶媒体に記録された1つ又は複数のソフトウェア製品を実行するように動作可能である電子ハードウェア及び/又はコンピュータハードウェアにおいて実施するのに、効率的であり、かつ比較的単純である。
本開示による直接ODelta演算子又は逆ODelta演算子を実施する際には、有利には、元のデータ値列は全て正であり、最低値は0である。オプションで、何らかのオフセット値、即ちプリオフセット値又はポストオフセット値が、データ値のすべてが正となり、かつ最低値が「0」となるように、それらデータ値をシフトさせるのに利用され得る。本開示によるODelta演算子は、直接方式で全種類のデータと共に容易に利用され得る。本開示によるODelta演算子は、典型的には、データ圧縮を提供することが可能であり、即ち伝達データレートを減らすことができる。その理由は、オフセット値がすべての値に加算されるか、或はすべての値から引かれる際に、データ値の範囲は、より少ないビットで定義され得るからである。例えば、直接ODelta演算子又は逆ODelta演算子を適用する前の元データ値は、−11〜+18の範囲にあり、この範囲は、+11のオフセット値を用いて0〜29の範囲に変換することができ、その変換範囲はその後、5ビットで記述される。このようなプリオフセット値又はポストオフセット値が利用されない場合、元データ値は、それらを記述するのに少なくとも6ビットを必要とし、しばしば、実際には、完全な8ビット符号付バイトが便宜上利用される。
データ範囲に対する同様の最適化が、一般化された直接ODelta演算子又は逆ODelta演算子を用いる際にもまた可能である。したがって、直接ODelta演算子若しくは逆ODelta演算子又は何らかのその他方法が、値の完全な範囲よりも小さいオフセット値で提示され得るデータ値を作成する場合、その範囲最適化は、ODelta符号化法のどの段階においても実施され得る。オフセット値が、符号が負であろうと又は正であろうと用いられる際には、以下に図1、図2及び図3を参照して説明するとおり、オフセット値は、また、エンコーダ10からデコーダ20に伝送されなければならない。
直接ODelta演算子は、例えばビット単位方式で元データD1を符号化するために、1ビット方式で容易に実施され得る。このような1ビット方式で、以下により詳細に説明されるとおり方法1及び方法3により、図1の元データD1においてビット値の変化がない場合には値「0」が作成され、元データD1においてビット値に変化が生じた場合には値「1」が作成される。元データの最初のビットに関する予測は、任意に値「0」であり、従って、元データD1における最初のビット値が保存される。或は、元データの最初のビット予測値を値「1」として利用することも任意に可能であるが、このような選択は、符号化において如何なる利益も与えることはない。そのため、その予測が常に1ビットデータに対してデフォルトで値「0」であると仮定される場合、如何なる選択も伝送される必要はない。即ち、所定の値「0」が、エンコーダ10及びデコーダ20によって利用されることにより、この予測を伝達する必要がなくなり、その結果データ圧縮の向上に繋がる。
本開示による直接ODelta符号化の例を以下に記載する。例示である元ビット列、即ち17個の「1」と20個の「0」とを含む37個のビットが、以下のとおり式1で与えられる。
[式1]
0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
式1のエントロピーEは、式2から計算可能である。
[式2]
式2においてエントロピーを符号化するのに必要なビットの数、即ちMin_bitは、上述の文書D7及びD8に記載されるとおり、つまり式3で与えられるとおり、シャノンの情報源符号化定理から計算可能である。
[式3]
元ビット列が、上述のとおり直接ODelta演算子、即ち方法1及び方法3で処理されると、13個の「1」と24個の「0」が存在する、37個のビットを含む以下のビット列が生成される。
[式4]
0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
式4のエントロピーEは、式5から計算可能である。
[式5]
式5は、ビット最小値、即ち、式6によるMin_bitsで表現可能である。
[式6]
式4のビット列は、例えばランレングス符号化(RLE)、ハフマン符号化、算術符号化、レンジ符号化、エントロピー変更器符号化、又はSRLE符号化のうちの少なくとも1つを用いた更なる符号化で処理され、データ圧縮が達成されるという利点を持つ。
ODelta演算子は、その関連エントロピー符号化法が適用される場合、元データD1を表すのに必要なビット量を減らし、例えば、RLE又はSRLEが、例えば式1にあるような元データの代わりに、例えば式4にあるような演算データに用いられ、この1ビット直接ODelta演算子は、即ち方法1及び方法3は、式1の元ビット列において多数の変化がある場合には複数の「1」を作成し、式1の元ビット列において相互に類似のビットの長いストリームがある場合には複数の「0」を生成する。
ODelta演算子の逆バージョン、即ち方法1及び方法3の逆は、符号化データストリーム、即ちデータD2に値「1」がある場合には、ビット値を、値「0」から値「1」に、又は必要に応じて値「1」から値「0」に変化させ、データD2の符号化ストリームに「0」の値がある場合にはビット値を変化させることはない。ODelta演算が、直接ODelta演算が為されたデータD2のビットストリームに対して実行される場合、データD1の元ストリームは、復号データD5として再生される。しかしながら、上述のとおり、VLC又はハフマン符号化等の更なる符号化が有利に利用されるが、この事も考慮される必要がある。これは、データD3がエントロピーエンコーダの正方向の演算を用いてデータD2から生成され、データD4がエントロピーデコーダの逆演算を用いてデータD3から生成されることを意味する。
データD1の元ストリームは、符号化をそれに適用する前に、2以上のセクションに分割されるという利点を持つ。このような分割は、データD1の元ストリームを符号化する際により良い最適化が利用され得る機会を提供する。例えば、データD1における可変列が、直接ODelta符号化される場合、即ち方法1及び方法3を利用して符号化される場合により多くの「1」を生成する。これに対して、フラットな不変列、即ち「フラット」列では、例えば後続のVRL符号化又はハフマン符号化にとって望ましい「0」が、より多く作成されるので、データD1を、上述のとおり別々に符号化できる複数のセクションに分割することによって、データD1を構成するビットストリーム全体に対してエントロピーEを低減することができる。したがって、このような分割が有利となる。
本発明による直接ODelta符号化の例を、相互に別々に符号化される複数のセクションが利用される場合について以下に説明する。元の単一ビット列を含む第1セクションは、以下式7のとおり、全体で16個のビット、即ち7個の「1」及び9個の「0」を含む。
[式7]
0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1
ここで、H(X)=4.7621かつB=15.82であり、Hはエントロピーを示し、BはMax_bitを示す。式7の元ビット列が、直接ODelta演算子で処理される場合、対応変換ビット列が式8のように与えられる。
[式8]
0 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1
ここで、H(X)=4.3158かつB=14.34である。
元の単一ビット列を含む第2セクションは、以下式9に示すとおりのビットを含む。
[式9]
0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
ここで、H(X)=6.3113かつB=20.97である。式9の元ビット列が直接ODelta演算子で処理されると、対応変換ビット列は、式10のとおり与えられる。
[式10]
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
ここで、H(X)=1.7460かつB=5.80である。これらの例では、上述したとおり、H(X)はエントロピーEを表し、Bは、符号化に要するビット最小数を表す。
この例における式7及び式10による最良の圧縮は、両セクションが別々に直接ODelta演算子で処理される場合に達成される(即ち、14.34ビット+5.80ビット=全体で20.14ビットに符号化)。これは、もともと必要とされていた36.82ビットよりも少ないビットを要し、即ち直接ODelta演算ビットは34.60ビット、又は分割後に要したビット数(=15.82ビット+20.97ビット=36.79ビット)を要する。有利には、データD1の元ビットストリームのセクションへの分割を、元データD1、及び変更データ(即ちデータD2に含まれるような変更データ)の対応エントロピーHを1つずつ分析することによって自動的に実行する。
データD1に複数の長いランセクションがある場合に、ビット値が配列に沿って急激に変化する十分に大きなデータ領域があることを前提として、オプションで、データD1の部分を符号化される新規セクションに単に分割することによって粗い方式で、データ圧縮が実施される。オプションで、データD1の幾つかのセクションは、例えば個々の異なるビットが比較的少ない、相互に類似のビットの長いランが存在する場合、直接ODelta演算子を利用することなく符号化される。このような場合、直接ODelta演算子は、データ圧縮目的には有意な利益をもたらさない。
データD1をより小さいセクションに分割することは、符号化データD2にデータを付与する更なるオーバーヘッドを生成するという欠点を有する。このようなオーバーヘッドは、例えば、全ての新しいセクションに関連するデータビット量又はデータバイト量を示す情報を含む。しかしながら、少なくとも特定量のオーバーヘッドデータ値を伝達する必要があると常に認められ、従って、所与のデータが2つのデータセクションに分割された場合には、追加のオーバーヘッドデータ値が1つのみ存在することになる。
後に復号され得る符号化ビットストリームを達成するためには、エントロピー符号化が、直接ODelta演算子、例えばVLC、ハフマン符号化、算術符号化、レンジ符号化、RLE、SRLE、EM等の後に有利に実施される。実際のデータ符号化と比較して、算出エントロピーE及び最小ビット見積値に基づいて最適化計算を実行する方がより簡単であり、かつ計算上より効率的である。このような順番で実行することにより、顕著な速度の最適化が可能となり、しばしば、符号化データD2において最適なデータ圧縮の結果が達成される。或は、元のビット、アルファベット、数字、バイト及びワードのデータ、即ちデータD1にあるものが、何らかの他の方法で最初に符号化されることにより、エントロピー最適化ビットストリームが生成され、その後、直接ODelta演算子を用いてエントロピー最適化ビットストリームを変更し、対応符号化データ、即ちデータD2を提供するように、エントロピー最適化を実行することも可能である。さらに、このODelta演算データは、データD2から、さらに他の符号化方法を用いて符号化し、データD3を生成することもできる。
一般化された直接ODelta演算子は、データD1において用いられる様々な値を記述するパラメータ、即ち、その様々な値を提示するのに必要とされるビットの値又は数を利用する。さらに、ODelta演算子は、正及び負のオフセット値、言い換えると正及び負の「ペデスタル(基礎)」値の使用を可能にする方法において利用される。例えば、データD1が7個のビットを用いて提示され場合であって、即ち使用可能な「0」〜「127」の値を有するが、「60」〜「115」の範囲の値のみを含む場合において、−60のオフセット値がデータD1に適用されると、これによって、6個のビットのみを含む値として表すこともできる、「0」〜「55」の範囲の値を有する変換データが生成され、つまりある程度のデータ圧縮が、これによって達成可能となる。従って、この一般化直接ODelta演算子は、全範囲のデータ値が、即ち7個のビットにおいて表され、かつ8ビットバイトによって従来表されるデータ値がデータD1に存在する場合に、結果を向上させる。
本発明によれば、直接ODelta値、即ち方法1は、正の値(lowValue=MIN=0かつhighValue=MAX=127、wrapValue=127−0+1=128)のみを有するデータに関する、以下の例示ソフトウェア符号の抜粋によって記述される手順を用いて容易に計算可能である。
wrapValue = power(2, bits) = power(2, 7) = 128
prediction Value(予測値) = (lowValue + highValue + 1) div 2 = (wrapValue + 1) div 2 + lowValue = 64
for all pixels(全てのピクセルについて)

begin
if(originalValue >= predictionValue) then
ODeltaValue = originalValue - predictionValue
else
ODeltaValue = wrapValue + originalValue - predictionValue
predictionValue = originalValue
End
さらに上記ODelta演算子を説明するために一例を以下に提供する。値の元配列は、式11のとおりである。
[式11]
65, 80, 126, 1, 62, 45, 89, 54, 66
対応差分符号化値は式12のとおりである。
[式12]
65, 15, 46, -125, 61, -17, 44, -35, 12
対応直接ODelta符号化値は式13のとおりである。
[式13]
1, 15, 46, 3, 61, 111, 44, 93, 12
ここで、パラメータwrapValue内のラップアラウンドが利用される。
逆ODelta演算子、即ち方法1が、逆ODelta値を生成するために使用可能であり、例えば以下の例示ソフトウェアコードによって実施される。
wrapValue = power(2, bits) = power(2, 7) = 128
predictionValue(予測値) = (wrapValue + 1) div 2 + lowValue = 64
for all pixels(全てのピクセルについて)

begin
ODeltaValue = originalValue + predictionValue
if (ODeltaValue >= wrapValue) then
ODeltaValue = ODeltaValue - wrapValue
predictionValue = ODeltaValue
end
このソフトウェアコードが、式13に対して実行、適用された場合、式14で与えられる値が生成される。
[式14]
65, 80, 126, 1, 62, 45, 89, 54, 66
本例では、wrapValueが2の冪乗の値として用いられる。これは必須ではなく、負の値がまた利用可能であるか、所与のデータ列においてプリオフセットによって範囲が変更される場合、wrapValueが、データの最高値より大きい任意の値、又は用いられる範囲よりも大きい値であってもよい。この特徴を示す更なる例を以下に示す。
図1を参照した上述の説明を要約すると、本開示は、エンコーダ10及びデコーダ20に関連するものである。オプションで、エンコーダ10及びデコーダ20は、30によって全体が示されているコーデック装置と組合せて利用される。エンコーダ10は、元入力データD1を受信するように動作可能であり、元入力データD1は、例えば直接ODelta法を用いて符号化されることにより、対応符号化データD2又はD3が生成される。符号化データD2又はD3は、オプションで、通信ネットワーク40を介して伝達されるか、又はデータ記憶媒体50、例えば光ディスク読取専用メモリ(ROM)等のデータ媒体に記憶される。デコーダ20は、例えば通信ネットワーク40を介してストリーム配信される符号化データD2又はD3、又はデータ記憶媒体50に提供される符号化データD2又はD3を受信し、かつ逆の方法、例えば逆ODelta法を適用することにより、例えば元データD1に実質的に類似する対応復号データD5を生成するように動作可能である。エンコーダ10及びデコーダ20は、例えば本明細書における例示実施形態として提供されるコードのように、1つ又は複数のソフトウェア製品を実行するように動作可能である、デジタルハードウェア、例えばコンピュータハードウェアを用いて実施されるという利点を持つ。或は、エンコーダ10及び/又はデコーダ20は、専用デジタルハードウェアを用いて実施される。
エンコーダ10において実行されるODelta法は、図2に記載される工程を利用するものである。任意の第1工程100において、入力データD1が処理され、そのデータ要素の値の範囲が見出される。任意の第2工程110において、データ要素を正のレジームに変換することにより変換要素の対応セットを生成するために、その値の範囲から、オフセット、即ちプリオフセットが計算される。第3工程120においては、第2工程110において任意に変換された要素が、次いで、直接ODelta符号化を受けることにより、対応ODelta符号化値が生成される。第4工程130においては、ODelta符号化値、並びに任意のオフセット値、最小値(lowValue)、及び/又は最大値(highValue)が、次いで、例えばランレングス符号化(RLE)、レンジ符号化、又はハフマン符号化を用いて別々に符号化され、データD2からデータD3が生成される。オフセット値、最小値(lowValue)、及び/又は最大値(highValue)は、常に圧縮可能であるという訳ではなく、従って、それらはエンコーダ10からデコーダ20に適切なビット量を用いて伝達されることを要する。さらに、オフセット値、最小値(lowValue)、及び/又は最大値(highValue)は、直接ODelta演算子に関する任意の特徴であり、例えば、オフセット値は、特定の状況では、値「0」を有し、lowValueは、値MINを有し、highValueは、値MAXを有する。即ち、変換は全く適用されずに、全範囲が用いられる。特に、直接ODelta演算子が、1ビットデータ、即ちビット単位の符号化のために実施される場合、オフセット値を必要とすることは全くなく、そのため、工程100及び110は常に無視される。オフセット値が、工程110においてもまた用いられる場合には、最高値と最低値を提示する範囲値は、その中で更新されなければならない。異なる値の数、即ちwrapValueは、デコーダ20によってまた識別されなければならず、或は、さもなければエンコーダ10は、圧縮データ内においてそれをデコーダ20に伝達しなければならない。オプションで、デフォルトwrapValue(=highValue−lowValue+1)が、エンコーダ及びデコーダにおいて用いられる。オプションで、エンコーダ10及びデコーダ20の少なくとも1つが、例えば入力データD1を符号化のためのセクションに分割してデータD1の最適な圧縮を提供し、符号化データD2を生成する最適な方式を見出すために、再帰的な方式で動作する。
デコーダ20において実行される逆ODelta法は、図3に記載される工程を利用する。第1工程200において、データD2/D3又はD4は、上述の工程130において利用されるものとは逆の符号化を受けることにより、復号ODeltaデータが生成され、復号ODeltaデータは、ODelta符号化値を有し、かつ任意の別のオフセット値を有する。第2工程210においては、ODelta符号化値は、復号され、データ要素列が生成される。第3工程220においては、データ要素列が、最適プリオフセット値を用いて変換され、復号データD5が生成される。特定の状況においては、このような変換は値「0」に設定され、つまり、有効な変換が適用されることはない。この場合も、例えば1ビット符号化、即ちビット単位の符号化を実行する場合、オフセット値を利用する必要なく、上記方法を実行することが可能であり、それによって、工程220を無視することが可能になる。さらに、デコーダ20は、受信したデータ要素を適切な方式で復号することを可能にするためにwrapValueを識別することも要する。
上記オフセットを利用し、正の値のみを取得することによって、データD2又はD3におけるより効率的なデータ圧縮が達成可能となる。すべてのデータ値が、既に正の値である場合、如何なるオフセット値を追加する必要はない。勿論、以下の例に示すとおり、負のオフセット値は、利用可能な範囲を小さくするために任意に利用されるが、必須ではない。
図2及び図3の方法は、オプションで、ODelta符号化を受ける利用可能な値のみを用いることによって更に最適化され得る。このような最適化には、用いる値が既知であることが必要とされる。例えば、上述の例においては、1(=元の最小値)〜126(=元の最大値)の値のみが元データセットD1に存在する。このため、オフセット値は、1である(->lowValue=元の最小値−オフセット=1−1=0かつhighValue=元の最大値−オフセット=126−1=125)。プリオフセット値が元データD1から引かれた場合、結果として式15にある次の値が得られる。
[式15]
64, 79, 125, 0, 61, 44, 88, 53, 65
式15から、最大値として125が決定され(highValue=元の最大値(original max)−オフセット=126−1=125)、その結果、「数字」(=最大差分値(maximum Delta value)=highValue − lowValue)は、そうすると、125となり、即ちwrapValueは、最小で126となり得る(=数字+1=highValue−lowValue+1)。すると、これらの値を保存するか、及び/又は伝達する必要があるため、前の例は、以下のとおりプロセス値を変化させることによって変更することができる。
wrapValue = 126 (「0」〜「125」=>126個の異なる値)
prediction Value(予測値)= (highValue + lowValue + 1) div 2 = (wrapValue + 1) div 2 + lowValue = 63
対応する直接ODelta演算子の値は式16で与えられている。
[式16]
1, 15, 46, 1, 61, 109, 44, 91, 12
全ての「負の差分値」が、今や、2分の1に減じられている(即ち=範囲変化=128−126)ことが理解される。同様に、デコーダ20においても、プロセス値は以下のとおり変化させなければならない。
wrapValue = 126
predictionValue = (wrapValue + 1) div 2 + lowValue = 63
対応する逆のODelta値は、以下の式17のとおりである。
[式17]
64, 79, 125, 0, 61, 44, 88, 53, 65
プリオフセット値を式17に加算すると、式15における元データに対応して、以下の式18の結果が得られる。
[式18]
65, 80, 126, 1, 62, 45, 89, 54, 66
本例では、値の範囲はほぼ全体であり、従って、オフセット値及び最大値(highValue)を用いて直接ODelta演算子を適用することにより得られる利益は比較的それほど大きいものではない。しかしながら、それら値が適切に伝達される場合には、エントロピーEの低減が依然として達成可能であり、即ち、頻度テーブル又は符号テーブルにおいて値の数を減らすことができる。この範囲がより小さい場合に最大の利益が得られる。
データを符号化及び復号する実践的な1ビットの直接及び逆ODelta法の例示実施形態、即ち、方法1又は方法3が、実行可能なコンピュータソフトウェアコードにより以下に提供される。これらの方法は、上記の直接及び逆ODelta演算子、即ち方法1又は方法3を利用する。ソフトウェアコードは、コンピュータハードウェアで実行される際に動作可能であり、1つのバイトバッファから別のバイトバッファに対してビットを処理する。ソフトウェアコードでは、GetBit、SetBit、及びClearBitの関数が、常に、HeaderBits値を更新する。HeaderIndex値もまた、次のビットが次のバイトにある場合に更新される。オプションで、ソフトウェアコードは、1セットのHeaderIndex値及びHeaderBits値のみがソース及び宛先に関し用いられるように最適化することができ、その結果、所与のビットが宛先バッファに書き込まれる場合のみ値が更新される。
上述の直接及び逆ODelta演算子、即ち方法1又は方法3は、例えばビデオデータ、画像データ、音声データ、グラフィックデータ、地震データ、医療データ、測定値、参照数字及びマスク等のデジタルフォーマットである任意の種類のデータを圧縮するのに有利に利用される。さらに、1つ又は複数のアナログ信号も、対応デジタルデータに最初に変換させる場合に、例えば圧縮前にADCを用いることによって、直接ODelta演算子を用いて圧縮可能である。逆ODelta演算子を用いる際、データを変換して1つ又は複数のアナログ信号に戻すことが望まれる場合には、演算の後にDACを用いることができる。しかしながら、直接ODelta演算子それ自体は、データを圧縮するのに通常は効果的ではないものの、例えば可変長符号化(VLC)、算術符号化、レンジ符号化、ランレングス符号化、SRLE、エントロピー変更器等の他の符号化法と組合せて利用される場合には効果的なデータ圧縮を提供できることが理解される。これらの符号化法は、直接ODelta演算子がエンコーダ10において利用された後に、データD2に対して用いられる。生じるデータがデコーダ20において実施される逆ODelta演算子に伝達される前に、符号化データD2は、対応的に復号されて元に戻されなければならない。ODelta演算子は、他の種類のエントロピー変更器と共に利用することもできる。特定の状況においては、直接ODelta演算子は、エントロピーEの増加を生じさせることもあり、データ圧縮アルゴリズムは、データの符号化に用いるための直接ODelta演算子を、それが有利なデータ圧縮性能を提供する場合のみ、選択的に利用するように有利に動作可能であり、例えば、それは圧縮されるデータの性質に基づいて選択的に利用されたり、例えば上述のとおり入力データD1の選択部分に選択的に利用されたりする。
直接ODelta演算子は、例えば、本願において援用される米国特許出願US13/584, 005に記載されるようなブロックエンコーダと組合せて利用されること等が考案されている。逆ODelta演算子は、本願において援用される米国特許出願US13/584, 047に記載されるようなブロックデコーダと組合せて利用されることが考案されている。オプションで、直接ODelta演算子及び逆ODelta演算子は、本願において援用される米国特許出願US13/657, 382に記載されるようなマルチレベル符号化法と組合せて利用されるという利点を持つ。2進状態を含む全ての種類の1ビットデータ、例えばデータD1に存在するもの等を1ビットバージョンの直接ODelta演算子で処理されることにより対応変換データを生成し、対応変換データは、次いで、その後、実際のエントロピー符号化を受けることにより、符号化データD2又はD3が生成されるという利点を持つ。オプションで、上述のとおり、直接ODelta演算子が、元データD1の性質に応じて選択的に利用される。
オプションで、直接ODelta演算子の前又は後に、データのエントロピーを変更する他の方法を利用することができる。例えば、一般化されたバージョンの直接ODelta演算子の中でマルチビットデータに対して直接、直接ODelta演算子を用いることもできる。さらに、用いられるビット全てをビットの連続配列に最初に入力した後に、上記1ビットバージョンの直接ODelta演算子をマルチビットデータに対して有利に利用する。
エンコーダ10において直接ODelta演算子と組合せて複数の方法がデータ圧縮のために利用される場合、対応する逆演算が、例えば以下のとおり、デコーダ20において逆順に実行される。
以下の方法の順序がエンコーダ10において利用される。
[式19]
[データD1] =>直接ODelta(方法2)
=>VLC−
=>EM
=>算術符号化
=> [データD3]
以下の方法の逆順がデコーダ20において利用される。
[式20]
[データD3] =>逆算術符号化
=>逆EM
=>逆VLC
=>逆ODelta(方法2)
=>[データ D5]
ここで、「VLC」は可変長符号化を示し、「EM」はエントロピー変更を示す。
上記に記載したODelta演算子は、可逆的であり、かつ無損失である。さらに、上記ODelta演算子は、オプションで、例えばビット単位の符号化を実行する際には1ビットデータストリームに対して、さらにそれだけではなくその他データに対しても、特に実施することが容易に可能である。すべての種類のデータが、一般化バージョンの直接ODelta演算子を用いて容易に処理され得るという利点を持つ。そして、直接ODelta演算子はデータが圧縮される際に利用され、対応する逆ODelta演算子は圧縮データを展開する際に利用されるという利点を持つ。オプションで、ODelta演算子が利用される場合、直接ODelta演算子と、それに対応する逆演算が、逆順に利用され、言い換えると、逆ODelta演算子は、元ビットストリームに対して最初に一時的に実行され、その後直接ODelta演算子が続き、元ビットストリームが再生される。一方のODelta演算子はエントロピーを増やし、他方のODelta演算子はエントロピーを減らす。直接ODelta演算子がエントロピーを全く変更してはならず、次いで逆ODelta演算子もエントロピーを変更しないというのは極めて稀有なケースである。例えば方法1のために直接ODelta演算子及び逆ODelta演算子が用いられる場合、これらの演算の逆順は、方法4の通常の順序と同様である。順序の同様の変更が、方法2及び方法3についても可能である。
1ビットバージョンにおいて、即ちビット単位方式でデータを符号化するために、直接ODelta演算子は、予測無しで有利に開始し、即ち、デフォルトで初期値「0」の予測を仮定する。一般化バージョンにおいては、ODelta演算子は、使用可能なデータ範囲の半分を表す予測を用いて開始し、例えば、5ビットがデータD1の入力データ値に用いられる場合、即ち「0」〜「31」の範囲の32個の異なる値が用いられる場合、予測値は32/2=16である。有利には、ODelta演算子には、データ要素が該演算子を用いて処理されるために、使用可能なデータ範囲に関する情報が提供される必要がある。
上記に記載される発明の実施形態によれば、データD1においてビット又は任意のデジタル値として提示されるエントロピーEを低減することが可能になる。直接ODelta演算子によって、ほぼ常に、差分符号化と比較してより向上したエントロピー低減を行える。差分符号化がバイトラップアラウンドと共に用いられ、元予測を用いた差異ODelta演算(方法1)が、wrapValue=256、lowValue=MIN=0、及びhighValue=MAX=255の値を用いる場合のみ、その中で同一の出力結果を生成する。別の直接ODelta法が用いられる場合、又は入力データにおいて全データ範囲が利用可能ではない場合、ODelta演算子は、選択した方法、又はlowValue及び/若しくはhighValueを送信することによってより良い結果を生成するが、即ち、これら送信されるものはwrapValueもまた自動的に変更する。エントロピーが小さいほど、より高いデータ圧縮比でデータを圧縮することが可能になる。より高いデータ圧縮比は、より小さい容量のデータ記憶媒体の利用を可能にし、また、圧縮データを伝送する場合に、より遅いデータ帯域幅の利用も可能にし、対応するエネルギー消費の低減も可能にする。
上記において、差分と合算の方式の計算がエンコーダ10において実行され、かつ対応する逆の計算がデコーダ20において実行されることが理解される。エンコーダ10において用いられる他の予測方法を用いることも可能であり、対応する逆予測が次いでデコーダ20において実行される。この事は、実際、少なくとも4つの異なる直接ODelta方法、並びに少なくとも4つの対応する逆ODelta方法が存在することを意味している。これらの方法の詳細かつ厳密な説明は以下のとおりである。オプションで、上記計算は、再帰的な方式で実行されることにより、符号化データD2(又はD3)において高度なデータ圧縮が得られる。このような帰納的な計算を実行する際には、変化する数の範囲が、再帰的計算が何回利用されてきたかに応じて利用される。例えば、エンコーダ10においては、以下の順序の計算がデータD1に対して実行され、符号化データD2(又はD3)が生成される。
[式21]
[データD1] e直接ODelta (方法3)=>
e直接ODelta (方法3)=>
eEM=>
e直接ODelta (方法1)=>
eVLC [データD3]
かつ、デコーダ20において対応する逆演算が実行される。
[式22]
[データD3] dVLC=>
d逆ODelta (方法1)=>
dEM=>
d逆ODelta (方法3)=>
d逆ODelta (方法3) [データD5]
式21(方法1に対応)、式22(方法2に対応)、式23(方法3に対応)、及び式24(方法4に対応)によって示されるとおり、データがこれら4つの方法において演算処理されるたびに、任意にすべての方法を用いることを試すことが可能である。その理由は、これらの方法のうち1つが、その他の方法よりも、処理されるデータのエントロピーを減らせる可能性があるからである。エンコーダ10及び/又はデコーダ20内における方法の使用を最適化する上で、選択される1つの方法又は複数の方法が、必要とされるデータにおける情報量と比較してエントロピーを減少させる限り、何度も同一又は異なる方法を用いることは有利である。従って、方法1〜4は、数値を符号化するために使用可能であるが、「数値」とは、その定義において、ビット単位方式の符号化ビットストリームにあるような1ビットデータ並びに非2進数、並びにマルチビット値を包含する。
差分演算は、連続数値の余りを表し、それに対応して合算演算は、連続数値の合計を表す。エンコーダ10において実行されるこれらの演算には、デコーダ20におけるそれぞれ独自の対応する逆演算がある。差分又は合計は、現入力値、及び予測値として用いられる前の入力値又は結果値に基づいて計算され得る。他の予測値も用いることができ、それらは、例えば、デコーダにおいて逆を実行することが可能である限りにおいて、エンコーダにおいて以前の入力値及び出力値を用いることにより予測を作成し得る。
このような方法の何れも、エンコーダ10及びデコーダ20内で有意にデータを圧縮するものではないが、すべての方法は、エントロピーを低減するのに有利に利用され、その結果、他の圧縮法により、次いで、エントロピー低減データをより効率的に圧縮することができる。このような他の圧縮法は、オプションで、ハフマン符号化、算術符号化、レンジ符号化、RLE符号化、SRLE符号化、エントロピー変更器符号化の少なくとも1つである。しかしながら、全ての方法に関し、例えばデータの可逆圧縮及びそれに続く可逆展開が達成し得る場合には、幾つかの数値を伝送する必要があり、その幾つかの数値を用いて上記演算とその逆演算とが常に正確に実施し得る。勿論、エンコーダ10及びデコーダ20は、どのような種類の数値が入力データD1に含まれているかに関する情報を有する。有利には、数値範囲、即ちMIN及びMAXによって定義される数値範囲が認識されることが想定されている。原則、方法は、常に、直接既存のデータ範囲に基づいて機能し得る。上記演算が必要とする数値は、生じる最低値(lowValue)及び生じる最高値(highValue)であり、lowValueはMIN以上であり、highValueはMAX以下である。
これらの値に基づいて、他の必要な数値を導くことができる。これらの値は、様々な形態で伝送され、欠損値が有利に計算されるという利点を持つ。例えば、セット[「lowValue」、「highValue」、「number(数)」]からの2つの値が既知である場合、その「number(数)」は、[highValue −lowValue]であり、次いで、第3の値は、それらから計算することができる。データD2において特定の値を省略し、次いでデコーダ20においてそれら値を導くことは、データD2においてより大きな程度のデータ圧縮を提供することを可能にする。
これらの値に加えて、第1の値、即ち「prediction」(「予測」)の計算において前の値として用いられ得る数Pが必要とされる。「0」と「number」(「数」)の値との間の値は、常に、数P、即ち「prediction」(「予測」)に関して選択され得る。さらに、上記演算が、エンコーダ20においてデータD2/D3又はD4を復号する際に回復可能に機能するためには、つまり、演算が生成する値の範囲をできる限り小さく縮小させるためには、値「wrapValue」が上記演算に提供される必要がある。しかしながら、この「wrapValue」は、「number」(「数」)よりも大きくなければならず、有利には、それは値「number」(「数」)+1を有する。オプションで、例えばデータD1が大きい値よりも小さい値をより多く含むと仮定した場合、データD1の性質に応じて、第1「prediction」(「予測」)値には、上記のとおり「0」が選択され得る。或は、データD1が小さい値よりも大きい値をより多く含むと仮定した場合、第1「prediction」「予測」値には、「number」「数」と等しい値が選択され得る。仮定が値の大きさに関して為されていない場合、「prediction」(「予測」)値には値「(wrapValue+1)÷2+lowValue」を用いることが望ましい。
本開示の実施形態を実施する際にコンピュータハードウェアにおいて実行する演算の例について以下に説明する。
エンコーダ10において、第1直接差分演算、即ち方法1は、有利には以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」値(「元」)値に対応する出力値、即ち「result」(「結果」)がソフトウェアループにおいて計算される。
result = original - prediction
if result < lowValue then result = result + wrapValue
最終的に、次の入力に関する予測値が現入力と等しい値に設定され、即ち、以下とされる。
prediction s= original
デコーダ20において、第1逆差分演算、即ち、方法1が、有利には、以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」(「元」)値に対応する出力値、即ち「result」(「結果」)がソフトウェアループにおいて計算される。
result = original + prediction
if result > highValue then result = result - wrapValue
最終的に、次の入力に関する予測値が、現結果と等しい値に設定され、即ち、以下のとおりとされる。
prediction = result
エンコーダ10において、第2直接差分演算、即ち方法2が、有利には以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」(「元」)値に対応する出力値、即ち「result」(「結果」)がソフトウェアループにおいて計算される。
result = original - prediction
if result < lowValue then result = result + wrapValue
最終的に、次の入力に関する予測値が、現結果と等しい値に設定され、即ち、以下のとおりとされる。
prediction = result
デコーダ20において、第2逆差分演算、即ち方法2が、有利には以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」(「元」)値に対応する出力値、即ち「result」(「結果」)がソフトウェアループにおいて計算される。
result = original + prediction
if result > highValue then result = result - wrapValue
最終的に、次の入力に関する予測値が、現入力と等しい値に設定され、即ち、以下のとおりとされる。
prediction = original
エンコーダ10において、第1直接合算演算、即ち方法3が、有利には以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」(「元」)値に対応する入力値、即ち「result」(「結果」)がソフトウェアループにおいて計算される。
result = original + prediction
if result > highValue then result = result - wrapValue
最終的に、次の入力に関する予測値が、現入力と等しい値に設定され、即ち、以下のとおりとされる。
prediction = original
デコーダ20において、第1逆合算演算、即ち方法3が、有利には以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」(「元」)値に対応する入力値、即ち「result」(「結果」)がソフトウェアループにおいて以下のとおり計算される。
result = original - prediction
if result < lowValue then result = result + wrapValue
最終的に、次の入力に関する予測値が、現結果と等しい値に設定され、即ち、以下のとおりとされる。
prediction = original
エンコーダ10において、第2直接合算演算、即ち方法4が、有利には以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」(「元」)値に対応する入力値、即ち「result」(「結果」)がソフトウェアループにおいて以下のとおり計算される。
result = original + prediction
if result > highValue then result = result - wrapValue
最終的に、次の入力に関する予測値が、現結果と等しい値に設定され、即ち、以下のとおりとされる。
prediction = original
デコーダ20において、第2逆合算演算、即ち方法4が、有利には以下のとおり実施される。全てのデータ値に関し、入力値、即ち「original」(「元」)値に対応する出力値、即ち「result」(「結果」)がソフトウェアループにおいて以下のとおり計算される。
result = original - prediction
if result < lowValue then result = result + wrapValue
最終的に、次の入力に関する予測値が、現結果と等しい値に設定され、即ち、以下のとおりとされる。
prediction = original
このような合算及び差分の演算、4つの方法すべてが、即ちODeltaバージョンのエンコーダ10及びデコーダ20を実施する際に、1ビットデータ、即ちビット単位で適用可能でもある。1ビットデータの状況においては、次の値は、エンコーダ10及びデコーダ20の両方によって既知であり、つまり、MIN=0、MAX=1である。さらに、有利には、lowValue=MIN=0かつhighValue=MAX=1と仮定される。さらに、このような場合、「number」(「数」)は、従って、[highValue−lowValue=1−0=1]であり、wrapValueについては、「number」(「数」)+1=1+1=2が選択されるという利点を持つ。その理由は、lowValue=MIN=0から開始する正の値のみを有し得ると考慮される1ビットデータのみ存在するからである。1ビットデータに関し、方法1及び方法3は、相互に類似の符号化結果を算出する。同様に、方法2及び方法4は、相互に類似の符号化結果を算出する。このような知識を有することは、様々なデフォルトが仮定され得るので、データD2に送信される必要のある情報を有利に簡素化する。即ち、差分演算、つまり方法1又は方法2の実行回数の数、及び選択された予測(入力値(方法1)又は結果値(方法2))についての情報を送信する必要があるだけで、その結果、デコーダ20は、データD2、D3又はD4を復号して復号データD5を生成する際に、正しい逆差分演算を必要回数、実行し得る。
同様の出力を作成する方法1又は方法3を用いることによって作成された第1の例は、やはり同様の出力を作成する方法2又は方法4を用いることによっても処理され得る。以下に示す結果は、それら方法をデータ式1に適用した場合に取得され得るものである。
0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1
この時、処理データは、24個の「1」と13個の「0」とを有し、即ちそのエントロピーは第1の例のものと同じであるが、「1」及び「0」のカウントは位置を変える。これは常に生じる訳ではなく、その代わり、しばしば、これら異なる方法の間でエントロピーが同様に変化する。例えば、データの最初の4つの要素の後、方法1及び/又は方法3は、3個の「1」と1個の「0」を生成するのに対し、元データと、方法2及び/又は方法4を用いて処理されたデータは、2個の「1」と2個の「0」とを有する。従って、このような場合の方法1及び/又は方法3は、方法2及び/又は方法4より小さいエントロピーを生成し、また、元のものよりも小さいエントロピーを生成する。
マルチビットによる実施においては、データD1が−64〜+63の範囲の値を含む場合、MIN=−64かつMAX=63である。lowValue=MINかつhighValue=MAXと仮定することによって、 「number」(「数」)=127であり、wrapValueには、有利に128が選択される。しかしながら、データD1がランダムに変化する場合、「prediction」(「予測」)値は、有利には、値[(wrapValue+1)÷2+lowValue=64+−64=0]に設定される。
第1値が例えば−1である場合、直接ODelta方法1及び/又は方法2を用いた第1符号化値は−1−0=−1となり、これに対応して、直接ODelta方法3及び/又は方法4を用いた第1符号化値は−1+0=−1となるであろう。次の値は、次いで、どのようにデータが進行するかに応じて変化し、例えば第2値が5となる場合、直接ODelta方法1は5− −1=6を生成し、直接ODelta方法2は5− −1=6を生成し、直接ODelta方法3は5+ −1=4を生成し、直接ODelta方法4は5+ −1=4を生成するだろう。デコーダ20は、この場合、逆ODelta方法1及び/又は方法2を用いた場合に第1値として−1+0=−1を生成することが可能であり、逆ODelta方法3及び/又は方法4を用いて、−1−0=−1を生成することが可能であるだろう。これに対応して、逆ODelta方法1を用いた第2値は6+ −1=5となり、逆ODelta方法2を用いた第2値は6+ −1=5となり、逆ODelta方法3を用いた第2値は4− −1=5となり逆ODelta方法4を用いた第2値は4− −1=5となるであろう。
この解決手段は、数の範囲が実際に−20〜+27の値のみを含む場合には、次いで最適化され得る。本例の場合、例えば、lowValue=−20及びhighValue=27を伝達することが可能である。両方が伝達される場合は、number=47と計算可能であり、wrapValueには、次いで、有利には48が選択される。すると、predictionについて、値48÷2+ −20=4を計算可能である。次いで、以前の例により、ODelta方法1又は方法2が用いられる場合、例えば、値−1に関して−1−4=−5が生成され、ODelta方法3又は方法4が用いられる場合には、−1+4=3が生成される。同様に、第2値は、ODelta方法については、(5− −1)=6、(5− −5)=10、(5+ −1)=4、及び(5+3)=8となるであろう。デコーダ20は、再び正常に機能し、方法1及び/又は方法2に関して第1値を−5+4=−1と生成し、方法3及び/又は方法4に関して3−4=−1を生成する。対応して、各種方法に関する第2値は、(6+ −1)=5、(10+ −5)=5、(4− −1)=5、及び(8−3)=5として復号されるだろう。
上記のこれら例における値は、上記範囲、即ち−64〜+63又は−20〜+27の内にあることが解り、従って、これらの例による値の内で補正項を実行する必要はないが、任意の負又は正の変化が十分に大きいものである場合には、データ値に対する補正が、与えられる式21〜24によって為され、上記範囲内に結果値を維持する必要がある。ここで補正項はラップアラウンド値を指していることに留意されたい。
lowValueが既知である場合、エントロピー符号化データD3と共にエンコーダ10からデコーダ20に送信されなければならない符号化テーブルを簡素化するために、符号化値は、有利には、0で開始し、かつ値「number」(「数」)で終了するように構成される。この演算は、ポストオフセットと呼ばれ、このポストオフセット値は、エントロピー符号化の後、かつデータD4に対する逆ODelta演算の前に、符号化データ値から削除されなければならない。
当初述べたとおり、pre−offset(プリオフセット)機能を用いてオフセットを実施することも可能であり、この場合、元入力データ(D1)は、ODelta方法の実際の実行の前に既に0から「number」(「数」)までの値を含み得る正の要素に変換される。また、この状況においては、 「プリオフセット」及びODelta法が繰り返し同じ情報を伝達しないように、又は何らかの他の方法の結果、既知であることを無視するように、この演算が要する情報伝達が実行されるのが有利である。適切なD5出力データを作成するためには、このプリオフセットによる効果は、逆ODelta演算の後に復号データから削除されなければならない。
上記に記載した発明の実施形態に対する変更は、添付の特許請求の範囲によって定義される発明の要旨から逸脱することのない限り可能である。本発明を説明し、また特許請求する際に用いられる「含む」又は「備える」("including"、"comprising")、「組み込む」("incorporating")、「から成る」("consisting of")、「有する」("have")、「である」("is")等の表現は、非排他的に解釈されるべきことが意図されており、即ち明示されていない事項、成分又は要素が存在し得る。単数での表記は、複数にも関連するものと理解される。添付の特許請求の範囲における括弧内の数値は、請求項の理解を補助するためのものであり、それら請求項によって記載される主題を限定するものとして解釈してはならない。

Claims (43)

  1. 数値列を含む入力データ(D1)を符号化することにより、対応符号化出力データ(D2又はD3)を生成するエンコーダ(10)であって、
    前記エンコーダ(10)は、差分符号化及び/又は合算符号化の方式を前記入力データ(D1)に適用することにより1つ又は複数の対応符号化列を生成するデータ処理装置を備え、
    前記1つ又は複数の対応符号化列は、符号化出力データ(D2又はD3)を生成するために、最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを受ける、
    エンコーダ(10)。
  2. 前記データ処理装置は、前記入力データ(D1)及び/又は前記1つ又は複数の対応符号化列を分析することにより、符号化出力データ(D2又はD3)の生成に用いるための前記1つ又は複数の対応符号化列に適用する1つ又は複数のオフセット値、最小値又は最大値を計算するように動作可能であることを特徴とする、請求項1に記載のエンコーダ(10)
  3. 前記1つ又は複数のオフセット値は、値「0」を有することを特徴とする、請求項2に記載のエンコーダ(10)。
  4. 1つ又は複数の1ビット値を含む数値を処理するように動作可能であり、かつ、ビット単位方式で前記入力データ(D1)を符号化するように動作可能であることを特徴とする、請求項1に記載のエンコーダ(10)。
  5. 前記1つ又は複数の対応符号化列は、前記入力データ(D1)の連続値における変化を表すことを特徴とする、請求項1に記載のエンコーダ(10)。
  6. 別々に符号化される複数のデータセクションに前記入力データ(D1)を分割するように動作可能であることを特徴とする、請求項1に記載のエンコーダ(10)。
  7. 前記データセクションに対して選択的に符号化を適用するように動作可能であり、該符号化の適用は、これによってデータ圧縮が符号化出力データ(D2又はD3)において達成可能である場合にのみ実行されるものである、請求項6に記載のエンコーダ(10)。
  8. 出力符号化データ(D2又はD3)を作成するのに利用される一連の予測値としてデフォルト第1予測値を利用するように動作可能である、請求項1に記載のエンコーダ(10)。
  9. 前記第1予測値が、0,最高値÷2,最高値÷2+最低値,最高値−最低値のうちの少なくともいずれかである、請求項8に記載のエンコーダ(10)。
  10. 更なる符号化を適用することにより、符号化入力データ(D2)を生成し、該更なる符号化が、ランレングス符号化(RLE)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化のうちの少なくとも1つを含むことを特徴とする、請求項1から9の何れか1項に記載のエンコーダ(10)。
  11. 相互に類似のビットのランレングスに応じて前記入力データ(D1)を複数のセクションに分割するように動作可能であり、前記ランレングスは、ランレングス符号化(RLE)、ハフマン符号化、可変長符号化(VLE)、レンジ符号化及び/又は算術符号化を用いる符号化に有効なものであることを特徴とする、請求項6に記載のエンコーダ(10)。
  12. 前記データ処理装置は、コンピュータハードウェアを用いて実装されるものであり、該コンピュータハードウェアは、機械可読データ記憶媒体に記録された1つ又は複数のソフトウェアを実行するように動作可能であることを特徴とする、請求項1から11の何れか1項に記載のエンコーダ(10)。
  13. 数値列を含む入力データ(D1)を符号化するエンコーダ(10)を用いることにより、対応符号化入力データ(D2又はD3)を生成する方法であって、該方法は、
    (a)差分符号化及び/又は合算符号化の方式を前記入力データ(D1)に適用することにより、1つ又は複数の対応符号化列を生成することと;
    (b)符号化出力データ(D2又はD3)を生成するために、前記1つ又は複数の対応符号化列に対して最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを行うことと;
    を含む、方法。
  14. 前記入力データ(D1)及び/又は前記1つ又は複数の対応符号化列を分析することにより、符号化出力データ(D2又はD3)の生成に用いるための前記1つ又は複数の対応符号化列に適用する1つ又は複数のオフセット値、最小値、又は最大値を計算する前記データ処理装置を用いることを特徴とする、請求項13に記載の方法。
  15. 前記1つ又は複数のオフセット値に関し値「0」を用いることを含むことを特徴とする、請求項14に記載の方法。
  16. 1つ又は複数の1ビット値を含む数値を処理することを含み、
    前記エンコーダ(10)が、ビット単位方式で前記入力データ(D1)を符号化するように動作可能である、
    請求項14に記載の方法。
  17. 前記1つ又は複数の対応符号化列は、前記入力データ(D1)の連続値における変化を表すことを特徴とする、請求項13に記載の方法。
  18. データ処理装置を使って、別々に符号化される複数のデータセクションに前記入力データ(D1)を分割することを含むことを特徴とする、請求項13に記載の方法。
  19. 前記データセクションに対して選択的に符号化を適用することを含み、該符号化を適用することは、これによってデータ圧縮が符号化出力データ(D2又はD3)において達成可能である場合にのみ実行されるものであることを特徴とする、請求項18に記載の方法。
  20. 出力符号化データ(D2又はD3)を作成するのに利用される一連の予測値としてデフォルト第1予測値を利用することを含む、請求項13に記載の方法。
  21. 前記第1予測値が、0,最高値÷2,最高値÷2+最低値,最高値−最低値のうちの少なくともいずれかである、請求項20に記載の方法。
  22. 更なる符号化を適用することにより、符号化出力データ(D2又はD3)を生成することを含み、該更なる符号化が、ランレングス符号化(RLE)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化のうちの少なくとも1つを含むことを特徴とする、請求項13から21の何れか1項に記載の方法。
  23. コンピュータハードウェアを用いて前記処理装置を実施することを含み、該コンピュータハードウェアは、機械可読データ記憶媒体に記録された1つ又は複数のソフトウェアを実行するように動作可能であることを特徴とする、請求項13から22の何れか1項に記載の方法。
  24. 符号化データ(D2又はD3)を復号することにより対応復号出力データ(D5)を生成するデコーダ(20)であって、
    前記符号化データ(D2又はD3)の1つ又は複数の部分を処理するデータ処理装置を備え、
    前記データ処理装置は、前記1つ又は複数の部分の1つ又は複数の対応符号化列に対して差分復号及び/又は合算復号の方式を適用するように動作可能であり、
    前記1つ又は複数の符号化列が、前記復号出力データ(D5)を生成するために、最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを受ける、
    デコーダ(20)。
  25. 1つ又は複数の1ビット値を含む前記符号化データ(D2又はD3)を復号するように動作可能であり、かつ、ビット単位方式で前記符号化データ(D2又はD3)を復号するように動作可能であることを特徴とする、請求項24に記載のデコーダ(20)。
  26. 前記復号出力データ(D5)の生成に用いるための前記1つ又は複数の符号化列に適用する1つ又は複数のオフセット値、最小値、又は最大値を完成するように動作可能であることを特徴とする、請求項24に記載のデコーダ(20)
  27. 前記1つ又は複数のオフセット値が値「0」であることを特徴とする、請求項26に記載のデコーダ(20)。
  28. 前記1つ又は複数の対応符号化列は、符号化データ(D2又はD3)に符号化される連続値における変化を表すことを特徴とする、請求項24に記載のデコーダ(20)。
  29. 前記データ処理装置は、該装置を介して処理されるデータに対して、ランレングス符号化(RLE)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化の少なくとも1つの逆を適用するように動作可能であることを特徴とする、請求項24に記載のデコーダ(20)。
  30. 前記データ処理装置は、該装置を介して復号される一連のデータにおいてデフォルト第1予測値を仮定するように動作可能である、請求項24に記載のデコーダ(20)。
  31. 前記デフォルト値は、値「0」を有することを特徴とする、請求項30に記載のデコーダ(20)。
  32. 前記データ処理装置は、コンピュータハードウェアを用いて実装されるものであり、該コンピュータハードウェアは、非一時的機械可読データ記憶媒体に記録された1つ又は複数のソフトウェアを実行するように動作可能であることを特徴とする、請求項24から31の何れか1項に記載のデコーダ(20)。
  33. 符号化データ(D2又はD3)を復号するデコーダ(20)を用いることにより対応前記復号出力データ(D5)を生成する方法であって、
    (a)データ処理装置を用いて、前記符号化データデータ(D2又はD3)の1つ又は複数の部分を処理することと;
    (b)前記データ処理装置は、前記1つ又は複数の部分の1つ又は複数の対応符号化列に対して差分復号及び/又は合算復号の方式を適用するように動作可能であり、前記1つ又は複数の符号化列が、前記復号出力データ(D5)を生成するために、最大値におけるラップアラウンド及び/又は最小値におけるラップアラウンドを受けることと;
    を特徴とする方法。
  34. 1つ又は複数の1ビット値を含む前記符号化データ(D2又はD3)を復号するように前記デコーダ(20)を動作させることを含み、
    ここで前記デコーダ(20)は、ビット単位方式で前記符号化データ(D2又はD3)を復号するように動作可能である、
    請求項33に記載の方法。
  35. 1つ又は複数のオフセット値、最小値、及び最大値を完成するように前記データ処理装置を動作させることを含み、該1つ又は複数のオフセット値、最小値、及び最大値は、前記復号出力データ(D5)の生成に用いるための前記1つ又は複数の符号化列に適用するものであることを特徴とする、請求項33に記載の方法。
  36. 前記1つ又は複数のオフセット値が値「0」であることを特徴とする、請求項35に記載の方法。
  37. 前記1つ又は複数の対応符号化列は、前記符号化データ(D2又はD3)に符号化される連続値における変化を表すことを特徴とする、請求項33に記載の方法。
  38. 前記データ処理装置を、該装置を介して処理されるデータに対して、ランレングス符号化(RLE)、可変長符号化(VLC)、ハフマン符号化、算術符号化、レンジ符号化の少なくとも1つの逆を適用するように動作させることを含む、請求項33に記載の方法。
  39. 前記データ処理装置を、該装置を介して復号される一連のデータにおいて第1予測値のデフォルト値を仮定するように動作させることを含む、請求項33に記載の方法。
  40. 前記デフォルト値は、値「0」を有することを特徴とする、請求項39に記載の方法。
  41. コンピュータハードウェアを用いて前記処理装置を実装することを含み、該コンピュータハードウェアは、機械可読データ記憶媒体に記録された1つ又は複数のソフトウェアを実行するように動作可能であることを特徴とする、請求項33から40の何れか1項に記載の方法。
  42. 前記入力データ(D1)を符号化することにより対応符号化データ(D2)を生成する、請求項1に記載のエンコーダ(10)を少なくとも1つ、並びに前記符号化データ(D2又はD3)を復号することにより対応復号データ(D5)を生成する、請求項24に記載のデコーダ(20)を少なくとも1つ備えるコーデック装置(30)。
  43. 装置の処理手段に実行されることにより、前記装置に、請求項13〜23及び33〜41のいずれか1項に記載の方法を遂行させるように構成されるプログラム命令を備える、コンピュータプログラム。
JP2015559442A 2013-03-01 2014-02-27 エンコーダ、デコーダ及び方法 Active JP6045123B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1303661.1A GB2511355B (en) 2013-03-01 2013-03-01 Encoder, decoder and method
GB1303661.1 2013-03-01
PCT/EP2014/000510 WO2014131517A1 (en) 2013-03-01 2014-02-27 Encoder, decoder and method

Publications (2)

Publication Number Publication Date
JP2016513436A true JP2016513436A (ja) 2016-05-12
JP6045123B2 JP6045123B2 (ja) 2016-12-14

Family

ID=48142238

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015559442A Active JP6045123B2 (ja) 2013-03-01 2014-02-27 エンコーダ、デコーダ及び方法

Country Status (9)

Country Link
US (1) US8810439B1 (ja)
EP (1) EP2962398A1 (ja)
JP (1) JP6045123B2 (ja)
KR (1) KR101610610B1 (ja)
CN (1) CN105359418B (ja)
BR (1) BR112015021204A2 (ja)
GB (1) GB2511355B (ja)
RU (1) RU2595916C1 (ja)
WO (1) WO2014131517A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3084968A4 (en) * 2013-12-16 2017-11-29 McAfee, LLC Process efficient preprocessing for an encryption standard
GB2523347B (en) 2014-02-20 2016-01-13 Gurulogic Microsystems Oy Encoder, decoder and method
GB2527588B (en) 2014-06-27 2016-05-18 Gurulogic Microsystems Oy Encoder and decoder
GB2527607B (en) 2014-06-27 2016-10-05 Gurulogic Microsystems Oy Encoder, decoder and method
GB2528460B (en) * 2014-07-21 2018-05-30 Gurulogic Microsystems Oy Encoder, decoder and method
GB2539488B8 (en) 2015-06-18 2020-08-19 Gurulogic Microsystems Oy Encoder, decoder and method employing palette utilization and compression
CN109309501B (zh) * 2018-09-12 2022-04-29 成都宝通天宇电子科技有限公司 高精度多环数据压缩方法
US11410043B2 (en) 2019-05-16 2022-08-09 International Business Machines Corporation Hamming distance based robust output encoding for improved generalization
EP4300038A1 (en) 2021-02-26 2024-01-03 Sony Semiconductor Solutions Corporation Information processing device and method

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08307279A (ja) * 1995-04-27 1996-11-22 Sony Corp 量子化装置および量子化方法
JP2003249856A (ja) * 2001-11-27 2003-09-05 Samsung Electronics Co Ltd データ符号化及び復号化方法、並びに装置
JP2008067361A (ja) * 2006-08-07 2008-03-21 Fuji Xerox Co Ltd 符号化装置、復号化装置、符号化方法及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4791483A (en) 1987-11-20 1988-12-13 The Grass Valley Group, Inc. Adaptive differential pulse code modulation video encoder
SU1499501A1 (ru) * 1987-12-03 1989-08-07 Предприятие П/Я А-7956 Дельта-кодек
SU1762411A1 (ru) * 1990-10-29 1992-09-15 Самарский электротехнический институт связи Преобразователь сигналов с адаптивной дельта-модул цией со слоговым компандированием в сигналы с нелинейной импульсно-кодовой модул цией
US5864650A (en) * 1992-09-16 1999-01-26 Fujitsu Limited Speech encoding method and apparatus using tree-structure delta code book
AUPR890201A0 (en) * 2001-11-16 2001-12-06 Silverbrook Research Pty. Ltd. Methods and systems (npw005)
ATE369687T1 (de) * 2002-06-06 2007-08-15 Alcatel Lucent Verfahren und vorrichtung zur paketenkopfkomprimierung
US6642874B1 (en) * 2002-10-11 2003-11-04 Realtek Semiconductor Corp. Sigma-delta data conversion employing quantization error feedback
CN101202548A (zh) * 2007-12-28 2008-06-18 北京邮电大学 一种双游程数据编码方法
CN101299611B (zh) * 2008-06-30 2011-10-05 中国电子科技集团公司第二十八研究所 一种基于集合游程的数据压缩方法
EP2214315A1 (en) * 2009-01-30 2010-08-04 Thomson Licensing Method and device for encoding a bit sequence

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08307279A (ja) * 1995-04-27 1996-11-22 Sony Corp 量子化装置および量子化方法
JP2003249856A (ja) * 2001-11-27 2003-09-05 Samsung Electronics Co Ltd データ符号化及び復号化方法、並びに装置
JP2008067361A (ja) * 2006-08-07 2008-03-21 Fuji Xerox Co Ltd 符号化装置、復号化装置、符号化方法及びプログラム

Also Published As

Publication number Publication date
RU2595916C1 (ru) 2016-08-27
GB2511355B (en) 2015-06-03
CN105359418B (zh) 2018-11-09
GB2511355A (en) 2014-09-03
JP6045123B2 (ja) 2016-12-14
WO2014131517A1 (en) 2014-09-04
US8810439B1 (en) 2014-08-19
BR112015021204A2 (pt) 2017-07-18
GB201303661D0 (en) 2013-04-17
KR101610610B1 (ko) 2016-04-07
CN105359418A (zh) 2016-02-24
US20140247168A1 (en) 2014-09-04
EP2962398A1 (en) 2016-01-06
KR20150126890A (ko) 2015-11-13

Similar Documents

Publication Publication Date Title
JP6045123B2 (ja) エンコーダ、デコーダ及び方法
KR101737294B1 (ko) 심볼 압축을 수반하는 데이터의 소스 코딩 및 디코딩을 위한 방법들 및 디바이스들
JP2017507590A5 (ja)
KR102175020B1 (ko) 데이터의 소스-인코딩 및 디코딩 디바이스 및 방법
KR102238058B1 (ko) 인코더, 디코더 및 방법
JP2016512004A (ja) データエンコーダ、データデコーダ及び方法
RU2611249C1 (ru) Модификатор энтропии и способ его использования
KR102393743B1 (ko) 모드 심볼들을 사용하는 인코더, 디코더 및 방법
Al-Bahadili A novel lossless data compression scheme based on the error correcting Hamming codes
US8018359B2 (en) Conversion of bit lengths into codes
JP4727669B2 (ja) LASeR二進表現のポイントシーケンス符号化/復号化方法及び装置
US8754791B1 (en) Entropy modifier and method
KR101676420B1 (ko) 데이터의 압축 및 복원 방법과 장치

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20160414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161021

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161114

R150 Certificate of patent or registration of utility model

Ref document number: 6045123

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250