JP2002271208A - ハフマン符号化・復号化法 - Google Patents

ハフマン符号化・復号化法

Info

Publication number
JP2002271208A
JP2002271208A JP2001375518A JP2001375518A JP2002271208A JP 2002271208 A JP2002271208 A JP 2002271208A JP 2001375518 A JP2001375518 A JP 2001375518A JP 2001375518 A JP2001375518 A JP 2001375518A JP 2002271208 A JP2002271208 A JP 2002271208A
Authority
JP
Japan
Prior art keywords
huffman
bits
code
value
data
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
JP2001375518A
Other languages
English (en)
Other versions
JP3627016B2 (ja
Inventor
Joan L Mitchell
ジョアン・エル・ミッチェル
Albert N Cazes
アルバート・エヌ・カゼス
Neil M Leeder
ニール・エム・リーダー
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2002271208A publication Critical patent/JP2002271208A/ja
Application granted granted Critical
Publication of JP3627016B2 publication Critical patent/JP3627016B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Discrete Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

(57)【要約】 【課題】 少ない処理資源とハードウェアを使い極めて
短時間で達成できるハフマン符号化と復号化の方法を提
供する。 【解決手段】 特にパックしたデータ形式から行なうハ
フマン符号化は、符号長によって異なる2つのテーブル
形式を使うと簡単化することができる。これにより、ハ
フマン・テーブルのサイズを小さくすることもできる。
ハフマン復号化法は、圧縮したデータ・ストリーム中の
有効なハフマン符号の長さに対して試験を行なうと共
に、試験基準に対応するオフセットを使うことにより、
実行時間を短縮することができる。これにより、ハフマ
ン・テーブルの記号値への直接索引を生成する特定の試
験結果が得られる一方、このような目的に使う参照テー
ブルのサイズを大幅に小さくすることができる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、一般に様々な用途
用の画像圧縮に関し、特に、パックした形式で離散コサ
イン変換(Discrete Cosine Transform:DCT) ブロッ
クを格納するための構造と組み合わせた、JPEG(Jo
int Photographic Experts Group)標準に従うハフマン
(Huffman)エントロピー符号化と復号化に関する。
【0002】
【従来の技術】写実画像やグラフィックス画像には、極
めて大量のデータが含まれている。したがって、ディジ
タル・データ・プロセッサで伝送したり処理したりする
ことができるようにディジタル化する場合、これらの画
像を構成している画素を忠実度良く表現するには、数メ
ガ・バイトを必要とする場合が多い。画像圧縮の目的
は、記憶のコストや伝送の時間とコストを節約するため
に、より少ないデータで画像を表現することである。最
も効率的な圧縮は、元の画像を正確に再現するのではな
く、それを近似することにより達成される。JPEG標
準を使うと、様々な用途の間で画像を交換するのが可能
になると共に、マルチメディア用途においてディジタル
連続色調カラー画像を提供する機能を実現することがで
きる。JPEG標準については、ペネベーカーとミッチ
ェル著『JPEG静止画像データ圧縮標準』("JPEG St
ill Image Data Compression Standard" by Pennebaker
and Mitchell, published by Van Nostrand, 1993.)に
詳細に説明されている。
【0003】JPEGは、2つの空間次元を有し、グレ
ー・スケール(白黒の階調)または色情報を備え、時間
に依存しない画像を主として扱う。この点で、MPEG
(Moving Picture Experts Group)と区別される。JP
EG圧縮を使うと、必要な記憶容量を1/10以下にす
ることができると共に、プロセスにおけるシステムの応
答時間を改善することができる。JPEG標準の主目的
は、所定量のデータ、および/または、利用可能な伝送
時間もしくは処理時間、に対して最大の画像忠実度を実
現することである(「Aおよび/またはB」は「Aおよ
びB、A、またはB」を表わす)。そして、これらデー
タ圧縮の尺度は、すべて達成されている。データを1/
20以下に圧縮しても(したがって伝送時間または処理
時間を1/20以下に減らしても)平均的な視聴者は気
付かない、ということは多くの場合に正しい。
【0004】JPEG用の基本構成要素の1つに、離散
コサイン変換(DCT) がある。この離散コサイン変換
の重要な側面として、非相関係数を生成する点が挙げら
れる。係数が相関しないということは、圧縮にとって極
めて重要である。なぜなら、各係数を独立に扱うことが
できるので、圧縮効率を損なうことがないからでる。D
CTの別の重要な側面は、視覚的に重み付けられた量子
化値を使ってDCT係数を量子化できる点である。人間
の視覚系の応答は空間周波数に強く依存しているので、
画像を、各々が特定の空間周波数を有する1組の波形に
分解することにより、目で見える画像構造と認識できな
い画像構造とを分離することが可能になる。したがっ
て、DCTを使うと、この分解にとって良好な近似を実
現することができる。この結果、視聴者が認識する画像
の忠実度に重大な影響を与えることなく、データを切り
捨てるすなわち省略することが可能になる。
【0005】JPEG標準によると、元の白黒画像は、
まず、目に見えるエイリアシング(曲線や斜線に生じる
ギザギザ)が生じないと思われる程度に高い任意の解像
度で、8×8の格子中の64画素から成るブロック群に
分解する。(カラー画像は、まず各色素を8×8画素の
ブロックに別々に分解することにより、圧縮する)。こ
の量子化した画像データに極めて迅速にDCTを施し
て、64個のDCT係数を得ることのできる手法とハー
ドウェアは、公知である。これらのDCT係数の多く
は、零またはほぼ零である。零のDCT係数は、画像に
全く影響しない。ほぼ零のDCT係数は、比較的目に感
じない空間周波数に対応させる場合、無視すなわち省略
することができる。人間の目は極めて高い空間周波数と
極めて低い空間周波数に対して感度が低いから、JPE
G標準の一部として、水平方向と垂直方向の空間周波数
の累積値にほぼ対応するいわゆるジグザグ・パターンで
DCT係数を提供すると、重要度の低い空間周波数に対
応するDCT係数をDCT係数のデータ・ストリームの
最後にグループ化するようになる。これにより、多くの
場合、これら重要度の低い空間周波数に対応するDCT
係数を1つのグループとして効率的に圧縮することがで
きる。
【0006】上述した離散コサイン変換(DCT) と符
号化は実務で扱う大部分の画像に対して意味のあるデー
タ圧縮を実現しているけれども、実際のデータ削減量は
保証されておらず、圧縮の程度は最適化されていない。
これは、特に各DCT係数の表現の精度が等しい場合に
は、同数のビットを伝送する必要があるからである(た
だし、JPEG標準は、1つのテーブルで符号化されて
いる複数の範囲によってDCT値を量子化するのを許し
ている)。すなわち、DCT符号化によって得られる圧
縮利得は、主に、DCT係数の零値とほぼ零値を処理す
ることにより効率が増大することに由来する。ただし、
精度を落とす量子化によっても圧縮を達成することがで
きる。以上の点から、JPEG標準は、エントロピー符
号化と呼ばれている第2段階の圧縮と符号化を規定して
いる。
【0007】一般に、エントロピー符号化の概念は、な
じみのある熱力学の分野におけるエントロピーの概念に
類似している。熱力学では、エントロピーとは、物理系
における「無秩序」の程度を数量化したものである。情
報理論の分野では、エントロピーとは、任意の大きさの
1団のデータから成る環境における任意の所定の情報量
子(例えば記号)の内容の予測可能性の尺度のことであ
る。この場合、エントロピーは、任意の所定の情報量子
(例えば記号)の意味とは無関係である。この概念によ
って、所定のアルファベット記号に対して行ないうる圧
縮の程度の達成可能な下限を決めることができる。より
基礎的には、この概念によって、「予測可能の程度が比
較的高いデータ(あるいは記号)は、予測可能の程度が
低いデータ(あるいは記号)よりも情報量が少ない」と
いう前提と、「予測可能の程度が比較的低いデータ(あ
るいは記号)は、予測可能の程度が高いデータ(あるい
は記号)よりも情報量が多い」という換位命題とに基づ
いた圧縮手法が得られる(換位命題とは、ある命題の主
部と述部の中の語を入れ替えた命題のことである)。し
たがって、説明のために適切な符号を1つ仮定すると、
予測可能の程度が高い(すなわちデータ本体における出
現頻度が高いが、情報量は少ない)記号(あるいは値)
にはより少ないビット数を割り当てる一方、予測可能の
程度が比較的低い記号(あるいは値)にはより長い符号
(すなわちより多いビット数)を割り当てることによ
り、最適化された効率的な圧縮を行なうことができる。
【0008】実際問題として、ハフマン符号化と算術符
号化は、エントロピー符号化に適している。そして、J
PEG標準は、両者に適合している。JPEG標準にお
ける対象の操作に関する相違点の1つは、両符号化手法
にとって符号に対応する値のテーブルが必要であるにも
かかわらず、デフォルトのテーブルが算術符号化には用
意されているが、ハフマン符号化には用意されていな
い、という点である。しかし、特定のハフマン・テーブ
ルの中には、最大の符号化効率と再構成時における最大
の画像忠実度とが得られるようにJPEG標準の下で自
由に指定できるものがある。けれども、それらは、特製
のハフマン・テーブルを計算・作成する計算上のオーバ
ーヘッドを避けようとして画像忠実度が過度に劣化しな
い限り、デフォルトのテーブルであるかのように見境な
く使われる場合が多い。
【0009】ここで、次の点を認識する必要がある。す
なわち、符号化テーブルあるいは条件付けテーブルが画
像に合理的に良好に適している場合、特にハフマン符号
化を使うエントロピー符号化がデータ圧縮を保証する程
度は極めて大きい。けれども、符号化それ自体は、統計
に基づいていると共に多数の画像値あるいは画像値を表
わす多数の値に関する一団の統計情報を必要とするの
で、極めて多くの計算を必要とする、という点である。
逆に、テーブルを作成する元になった画像において出現
するのが比較的稀(まれ)である多くの値を符号化する
ことを符号化中の画像が必要としている場合(たとえこ
のような環境が出現するのが稀であっても)、当該符号
化中の画像を表していない確率を搭載したテーブルを使
うと、圧縮ではなく展開が行なわれる可能性がある。
【0010】使用した圧縮の程度に対して、たとえ最適
圧縮および/または最適忠実度が達成されなくとも、あ
る種のハフマン・テーブルが事実上標準的に使用される
ようになったのは、この理由による。逆に、ハフマン符
号化の圧縮効率は、通常、顕著に向上しうる。そして、
問題の画像に対応する特製のハフマン・テーブルによっ
て、所定ビット数のデータに対して画像忠実度を最適に
維持しうる。しかし、これは、符号化するのに多大な計
算負荷を負担しないかぎり達成できない。
【0011】符号化した各値にハフマン符号割り当てる
手法の階層的性質と、最も出現頻度が高く最も予測可能
性の高い値(たとえそこに含まれている情報が理想的に
は余り意味がないとしても)を表わすのに少なくとも1
ビットを使う必要があるという事実とに起因して、符号
化すべき特定の値すべての発生頻度が50%に上昇する
と、ハフマン符号化らしく別の非効率が発生する。例え
ば、ある単一の値の発生頻度が75%に上昇すると、ハ
フマン符号化の効率は86%に低下する。実際問題とし
て、大多数のDCT係数は零である(あるいは零に量子
化されている)。したがって、DCT係数あるいはDC
T係数の差分をハフマン符号化する際に、多大な非効率
がしばしば発生する。AC係数の場合、JPEG委員会
は、零値の係数群を1つにまとめて個々の零値の係数を
符号化しないことにより、この問題を解決した。したが
って、ハフマン記号が50%以上発生する可能性は、著
しく低い。
【0012】圧縮効率は、各値(あるいは記号)の終点
を検出するのに余分の処理が必要な可変長符号によって
主として決まる。したがって、ハフマン復号化も、多大
な計算負荷を必要とする。さらに、このハフマン復号化
処理は、エントロピー符号化した画像データと一緒に伝
送する必要があると共に画像ごとに変化しうる符号化テ
ーブルを使って行なう。テーブル中のデータにアクセス
する複雑さは、ハフマン符号が可変長であるという事実
によって累増する。ハフマン符号化では、特定の記号
(あるいは値)に含まれている単一のデータあるいはあ
る量のデータの予測可能性に従って異なった数のビット
を割り当てる。したがって、ハフマン符号は可変長であ
る。応答速度を速めるために、復号化時に使用可能なハ
フマン・テーブルから参照用テーブルを計算してそれを
格納しておくのが実務になっいる。したがって、1つの
符号語当り少なくとも2バイトのテーブル・データにア
クセスする必要のあの場合が多い。
【0013】さらに、ハフマン符号長として16ビット
が許されているから、従来の復号化方法では、記号値ご
とに216個のエントリと符号長ごとに216個のエントリ
を備えたハフマン・テーブルにアクセスすることにな
る。これらのエントリは、ハフマン・テーブルを指定す
るあるいは変更するごとに計算する必要がある。復号化
のためには、最大4つのDCテーブルおよび4つのAC
テーブルと交互に配置した最低限4要素の画像とが必要
になる可能性がある。小さなオンチップのキャッシュ
(あるいはRAM)を備えたハードウェアの場合、この
ようなテーブルを使うと、キャッシュ・ミスあるいはR
AMアクセスごとに余分の処理サイクルを必要とするの
で、性能が劣化することになる。
【0014】
【発明が解決しようとする課題】本発明の目的は、少な
い処理資源とハードウェアを使い極めて短時間で達成で
きるハフマン符号化と復号化の方法を提供することであ
る。
【0015】本発明の別の目的は、パックした中間デー
タ形式を使って増強したハフマン符号化と復号化の方法
を提供することである。
【0016】
【課題を解決するための手段】本発明に係るハフマン符
号化法は、次のように構成する。記号をハフマン符号化
するハフマン符号化法であって、1つのテーブルにおけ
る所定長の符号の最初の出現に対するシード値を定義す
るステップと、1つの符号語の長さを格納するステップ
と、前記数および前記符号語のビット数が所定ビット数
以下の場合、前記長さおよび前記符号語を第1の形式で
格納するステップと、前記数および前記画像データが前
記所定ビット数を超えるビット数から成る場合、前記シ
ード値への索引、オフセット、および前記符号語を第2
の形式で格納するステップとを備える。
【0017】本発明に係るハフマン復号化法は、次のよ
うに構成する。圧縮データをハフマン復号化するハフマ
ン復号化法であって、有効なハフマン符号の長さを判断
する複数の試験基準の各々を使ってデータ・ストリーム
のビットを試験するステップと、前記長さに対応する複
数のオフセットのうちの1つと前記有効なハフマン符号
とを組み合わせて、索引を生成するステップと、前記索
引を使って、ハフマン・テーブル中の記号値にアクセス
するステップとを備える。
【0018】
【発明の実施の形態】次に、図面を参照して本発明の一
実施形態を説明する。図1は、ペネベーカーらの上掲書
の393頁に記載されているJPEG標準に従う、ハフ
マン・テーブル仕様の構文を示す図である。図1に示す
構文は、マーカー・セグメントと呼ばれており、以下で
ハフマン・エントロピー符号化または復号化を実行する
のに使用する少なくとも1つのハフマン符号化テーブル
を定義するのに使う。新たなパラメータすなわちテーブ
ル値を変更すべきときはいつでも、これと同じ構文を使
う。マーカー・セグメントは、常に、累積バイト数を含
んでいる(これは、セグメントの終わりに所定の論理値
のビットを付加することにより行なう場合がある)。そ
して、符号のフレーム開始(start of frame: SOF)
ブロックと走査開始(start of scan:SOS)ブロック
に適用されたマーカー・セグメントは、ヘッダと呼ばれ
ている。
【0019】JPEG標準に従うマーカー・セグメント
は、図1に示すように常に、2バイト符号で始まる。こ
の2バイト符号は、16進数の「FF」バイトで始ま
り、当該マーカー・セグメントの機能を指定する非零の
1バイトが続く。例えば、「FFDB」は「量子化テー
ブルを定義する(define quantization table:DQ
T)」を表し、「FFC4」は「ハフマン・テーブルを
定義する(define Huffman table: DHT)」を表わ
す。特に、「ハフマン・テーブルを定義する(DH
T)」機能に適用する場合、続く2バイトは、マーカー
・セグメントに設けられたパラメータ・フィールドの長
さLh を指定している。続く1バイトのうちの第1のニ
ブル中の1ビットTcは、DCまたはAC(「0」また
は「1」)として直ぐに続くテーブルを指定している。
(1ニブル=1バイトの半分=4ビット)。次に続くニ
ブル中のビット群Thは、当該テーブルの名前を指定し
ている。DCテーブルとACテーブルの各々に対して最
大4つのテーブルが許される。そして、これらのテーブ
ルのうちの任意のものあるいは全部を定義または再定義
するのに、マーカー・セグメントを使うことができる。
【0020】次の16バイトは、各ビット長がLiの符
号の個数を指定している。これらの符号は、JPEG標
準下で許される最大ビット長(あるいは任意のビット
長)に対応する引き続くテーブル中に含まれることにな
る。表記規則によると、1ビット符号の個数はL1であ
り、16ビット符号の個数はL16である。画像の精度
が8ビットであると、量子化後に得られる係数は高々1
1ビットである。したがって、特に画像の精度が8ビッ
トである場合には、すべてのビット長が表現されるわけ
ではない。画像データ中で表現されない符号長は、すべ
て、16進数の「00」として符号化することになる。
続くバイト群V1,1 〜V1,L16 は、出現頻度(例えば所
定の長さの符号が提示される回数など)の順に並べた各
ハフマン符号に対応する実際の値である。
【0021】ここで、次の点を思い出す必要がある。す
なわち、ハフマン符号化などのエントロピー符号化で
は、出現頻度すなわち出現可能性の高い値にはより少な
いビットを割り当てる。そして、DCT係数の多くは、
零である可能性がある、という点である。したがって、
JPEG標準は、各々が256ものエントリを有する8
つものハフマン・テーブルを用意している(そして、特
定のハフマン符号の特定のDCT係数へのマッピングは
常に定義されている、ということを保証している)。こ
のプロセスを速めるために、参照テーブルを用意して、
ハフマン・テーブルのVi,j フィールドを検索すること
もできる。これにより、特定のVi,j 値を捜し出す操作
の回数を減らすことができる。しかし、余分のメモリ資
源を必要とする。そして、上述したように、より多数の
テーブル・エントリを展開するのに余分の計算負荷をも
たらす。
【0022】次に、図3の典型的なハフマン・テーブル
を用いて、マーカー・セグメントの応用を説明する。導
入として、次の点を理解する必要がある。すなわち、圧
縮プロセスにおける量子化と離散コサイン変換(DC
T)の結果は、ラスター走査順に並べた一連のDCT係
数になっている(ラスター走査とは、CRTディスプレ
イの水平方向に左から右に走査しながら順次下方へ移動
する走査方式のことである)。零値の係数は、それらに
ジクザク順にアクセスすることにより大雑把にグループ
化されている。そして、さらなる圧縮(およびエントロ
ピー符号化など他の変換プロセスから成る強化)は、本
願の関連出願に開示されているラン・アンド・サイズ
(R/S)データに従ってデータをパックすることによ
り得られる。ランとは、零値のAC DCT係数から成
る連続列の長さのことである。サイズとは、非零のDC
T係数を指定するのに必要なビット数のことである。ラ
ンすなわちR値は、R/Sバイトの上位ニブル(=4ビ
ット)として符号化される。サイズすなわちS値は、R
/Sバイトの下位ニブルとして符号化される。
【0023】ここで、DC DCT係数差分とAC D
CT係数値は、R/S値によって完全には指定できな
い、という点を認識すべきである。しかし、JPEG標
準に従ってR/S値だけを符号化し、かつ、図2に示す
ように、各符号に、正のACDCT係数またはDC D
CT係数差分値から成る実際のビット、および負のAC
DCT係数またはDC DCT係数差分値から成る実
際のビットを付加すれば、後述するように極めて膨大な
データ圧縮をしながら、かつ、すべての細部にわたって
JPEG標準に準拠しながら、元のDCT係数の情報を
すべて含めるのに十分である。
【0024】説明を明瞭にするために、図3は、2バイ
トのマーカーが左方に伸びるように、ちょうど16列に
示してある。各バイトは、当該各バイトの2ニブルを表
わす2つの16進数化ディジットによって表されてい
る。
【0025】図3の第1のマーカーは、画像の開始(st
art of image: SOI)を表わす「FFD8」である。
第2のマーカーは、量子化テーブルの仕様を表わす「F
FDB」である。ここで、次の点を理解すべきである。
すなわち、量子化したDCT係数の値は、大きさが固定
された範囲の値を表わす必要はない。正確には、量子化
したDCT係数の値は、各々、大きさが他のもの異なる
範囲の値を表わすことができる、という点である。この
テーブルは、元の画像に対応するDCT係数を、本発明
を理解するのに重要でない方法で分析することにより得
られる。そして、このテーブルは、後で画像を再構成す
る間にDCT係数を「逆量子化(dequantize)」するの
に使う。
【0026】第3のマーカーは、少なくとも1つのハフ
マン・テーブルを指定しているマーカー・セグメントの
開始を表わす「FFC4」である。次の2バイト「01
A2」は10進数「418」の16進符号である。10
進数「418」は、走査開始(SOS)を表わす次のマ
ーカー「FFDA」までのバイト数である。「FFD
A」では、構成要素(例えばR、G、B、グレースケー
ル〔白黒の階調〕、輝度/クロミナンス〔参照色との色
質の違い〕など)の個数で始まるパラメータ・リストの
長さが指定されている。そして、模式的に「・・・」で
表してある圧縮データが続く。
【0027】上記「FFC4」の次のバイトは、Tcと
Thを表わす2ニブルから成る。両ニブルとも零である
から、このテーブルをDCテーブル0として定義してい
る。これらはDCテーブルであり、かつ、ブロック当り
1つのDC DCT係数しか用意されていないから、ラ
ン長は存在しない。そして、各バイトの第1のニブルが
零である一方、第2のニブルは各サイズの余分のビット
数(圧縮データ・ストリーム中で次に続く余分のビット
数)を指定している。符号中の特定の数は、図4に示す
ハフマン符号に対応している。これらのものは、3ビッ
ト長の符号5個を含めて12個しかない。これら12個
の値は、次の12バイトで指定されている。これで、D
Cテーブル0は完了する。
【0028】この時点で、29バイトしか使っていな
い。すなわち、Tc、Thに1バイト、Liに16バイ
ト、Vi,j に12バイトである。この29バイトという
値は、マーカーの直後に指定されているパラメータ長の
418バイトよりもはるかに小さい。したがって、次の
1バイトの2ニブルは、このマーカー・セグメントで指
定される第2のハフマン・テーブルのクラスと名前を定
義している。この場合、Tc値とTh値がそれぞれ
「1」と「0」であるから、第2のハフマン・テーブル
は、ACテーブル0である。次の16バイトは、各長さ
の符号数を示すLi 値である。そして、次のバイト群
(その数はLi 中で列挙されている符号の合計数〔最大
64〕に等しい)は、出現頻度の降順のハフマン符号の
各々に対するVi, j 記号値である。これで、ACテーブ
ル0は完了する。
【0029】「418」の残りは、上述したのと同じ形
式で記載すると共に符号化したさらに2つのテーブル、
DCテーブル1とACテーブル1から成る。DCテーブ
ル1用のハフマン符号を、図5に表として示す。
【0030】図4と図5とを比較すると、ハフマン符号
の特徴がいくつか分かる。第1に、上述したように、ハ
フマン符号は可変長である。そして、その「カテゴリ」
は、ビット数すなわちサイズすなわちS値である。この
S値は、上述したR/Sバイトに含まれていると共に、
図3などのハフマン・テーブルにVi,j として記録され
ている。第2に、すべて「1」値のビットから成る符号
は、許されない。第3に、所定長の複数の符号は、許さ
れる。上記「複数」は、当該所定長の符号によって表し
うる値の個数よりも小さい。第4に、そして本発明を理
解するのに最も重要なものとして、JPEGハフマン符
号を構築して、階層的に区別した値を表わしている。こ
の制約すなわち特質は、より長い他の符号と接頭辞が同
じになる符号は許されない、という特徴に現れている。
【0031】ここで、上述した事項から、ハフマン・テ
ーブルの構造を使うことにより、特定のハフマン符号群
と、それらにそれぞれ割り当てたR/S値との間の対応
関係を再構築することができる、ということが想起され
る。しかし、上述したように、このような再構築は、複
雑であると共に時間をくう。したがって、参照テーブル
を使ってハフマン・テーブルの検索する方がずっと普通
である。このプロセスは、ハフマン符号は可変長である
ので、有効なハフマン符号に対応する連続ビット数(1
6以下)をも認識している必要がある、という事実によ
って複雑になっている。
【0032】有効なハフマン符号を認識してハフマン・
テーブルを検索する公知の方法は、圧縮データ中で(次
に)続く16ビットを取り上げ、(216個のエントリを
有するテーブルで)検索対象符号のビット数を見つけ、
(同様のサイズの)別のテーブルで検索対象符号に対応
するR/Sバイトを捜し出すものであろう。しかし、こ
の方法は、記憶空間の観点から無駄が多いと共に、メモ
リに多大な負荷をかける。例えば、検索対象符号が調べ
るべき16ビットのうちの始めの1ビット符号であると
すると、各テーブルの半分は、同数ビット(16ビッ
ト)が「1」であり、検索対象記号に対するR/S値バ
イトが同一になるであろう。公知の別の方法では、複数
のテーブルを使うが、それに対応して多数の検索操作を
必要とする。
【0033】本発明では、各符号は任意の所定数の2進
ビットに対応する数値を有するものと考えることができ
ると共に、所定数の2進ビットに対応する数値が大きす
ぎてもそれを算出できる、というハフマン符号の特徴を
利用している。圧縮データのうちのnビットが論理的に
この最大値(以下、max(n)、ただしn=ビット
数)以上である場合、追加のビットを調べ、max(n
+1)と比較する必要がある。また、本発明は、ハード
ウェア・アーキテクチャの観点から、正しいビット数を
考察し、それより多いビット数に対する残りの試験が失
敗するまで、すべての試験が合格するから(例えば論理
値が有効なハフマン符号に対して大きすぎる)、これら
の試験は並行して実行できる、という事実も利用してい
る。
【0034】例えば、図6に示すように、この試験は、
16個の比較器を使って並行に実行することができる。
図6では、16個の比較器は、C[0・・・n]≧ma
x(n)なる数式で表されている。各比較器は、バレル
・シフタなどのCレジスタの連続するステージに接続さ
れた1個から16個の入力端子を備えている。これらの
比較器は、ディジタルであり、論理ゲートアレイとして
構成することができる。
【0035】すなわち、第1の試験では、Cレジスタの
現在の最上位ビットMSB(C[0])と1ビット値で
あるmax(1)とを比較する。1ビット符号がない場
合、max(1)=0である。1ビット符号がある場
合、max(1)=1である。(すべて「1」から成る
符号は不許可であるから、1ビット符号がある場合、そ
の1ビット符号は「0」である)。max(n)の値
は、max(n)がnビットのうちの第1の符号であ
り、より長い符号語の接頭辞であるように構築されてい
るから、いくつかの符号を有する第1のLn に対する非
零のmax(n)が存在することになる。(例えば、m
ax(2)=“10”であり、これは、図4のカテゴリ
5の接頭辞である)。
【0036】図7は、別の実施形態を示す図である。図
7では、圧縮データのだんだん多くなるビットとmax
(n)の値とを比較している。nの値は、比較が失敗す
る(すなわち「0」を生成する)最初の値に成るように
決めてある。
【0037】図8は、ALU(arithmetic logic unit:
算術演算装置)への入力の1つとしてCレジスタのn個
のMSBに付加した先行する「0」を示す図である。残
りの入力は、事前算出したoffset(n)である。
加算後に得られる低位の結果は、参照テーブル(LU
T)/ハフマン・テーブルへの索引である(この索引
は、AC符号化用の8ビットのうちのDC差分用の4ビ
ットから成っている)。参照テーブル(LUT)/ハフ
マン・テーブルは、「ハフマン・テーブルを定義(Defi
ne Huffman Table: DHT)」マーカー・セグメントで
渡されたVi,j 記号値を含んでいる。このテーブルの出
力は、R/Sバイトである。
【0038】図9は、max(n)値を構築するための
フローチャートを示す図である。この方法論は、図3の
DHTマーカー・セグメントで指定されているR/Sバ
イトへのオフセット(offset)も構築する。ただ
し、offset(0)は、R/SリストまたはR/S
リストへのポインタの第1バイトから成る索引(例えば
「0」)である。ステップ71におけるmax(n)と
offset(n)の初期化は、i、max(0)、o
ffset(0)を「0」に設定することにより開始す
る(ステップ72)。次いで、ステップ73で、iをイ
ンクリメントし、offsetをmax(i−1)未満
の最後のoffsetに設定する。max(i)の値
は、Li +max(i−1)として計算する。したがっ
て、Li が非零になるまで、offset(n)とma
x(n)は「0」のままである。それゆえ、図6または
図7の最初の比較C[0・・・n]は、常に合格する。
なぜなら、(当該長さの少なくとも1つの符号が存在す
ることを示す)非零のLi が出現するまで、第1ビット
の論理値/数値は、常に「0」以上であるからである。
ステップ73に示すように、非零(すなわち「1」)の
i が出現した場合、それを「0」に付加すると、ma
x(i)は、より大きな符号の接頭辞をなす第1の符号
に設定されることになる。このプロセスをi<16の間
繰り返して、すべてのLn に対するすべてのmax
(n)を生成する。したがって、例えば、5個の3ビッ
ト符号(例えば0、1、2、3、4)が存在する場合、
max(3)は5に設定される。この値5(2進数で
「101」)は、より長い符号の一部である。ただし、
これ以上符号が存在しなければ、この特定の符号は必ず
しも使用されない。それゆえ、max(i)は、大きす
ぎるiビットの第1の符号(すなわちiビットの最大符
号よりも1つの値だけ大きい符号)を指し示している。
L(i+1)がヌルでない(例えば1ビットだけ大きい
符号が存在する)場合、当該符号の値は、max(i)
の2倍である。(i+1)符号は、2*max(i)で
始まり、順番に番号付けされる。そして、max(i+
1)は、この順番のの後の次の数(すなわち2*max
(i)+L(i+1))である。L(i+1)=0の場
合、max(i+1)は2*max(i)に等しい。そ
して、次の非零のLi が出現する前に、このような2倍
項がいくつか存在しうる。
【0039】より一般に、max(i)とoffset
(i)は、次に示すように、Li の項で計算する。 (i=0 (max(0)=0 (offset(0)=0 (i=1 (max(1)=L1 +2*0 (offset(1)=0−0=0 (i=2 (max(2)=L2 +2*L1 (offset(2)=0−L1 ・ ・ ・
【0040】offset(i)は、検索対象符号に対
応する復号化した値がR/S値のリスト中のどこに位置
しているかを判断するのに使う。すなわち、offse
t(i)にハフマン符号のiビットを付加して得られる
値は、対応するR/Sバイトが存在する、ハフマン・テ
ーブル中のアドレスになる。これにより、本発明の文脈
において極めて重要な利点がいくつか得られる。特に、
各々が216個のエントリを有する複数の参照テーブルか
ら成る関数群は、16個のエントリに限られているma
x(n)値とoffset(n)から成るテーブル群で
置き換えることができる。このテーブルは、極めて迅速
に計算して効率的に格納することができる。このテーブ
ルは特異であると共に小さいから、その中のデータを極
めて迅速に取り出して、JPEG標準構文によるデータ
・ストリーム中にハフマン符号と共に含まれているDC
T係数データとDCT係数差分データを評価するのに使
うR/Sデータを取得するための、ハフマン・テーブル
への直接索引を作成することができる(これは、他の処
理手法と一緒に利用できると共に、他の型のデータに対
しても利用できる)。
【0041】まとめとして、圧縮データの復号化を図1
0を用いて説明し、その好適で完全な機能を図11〜図
13と共に後述する。プロセスがステップ81で開始す
ると、復号化するAC係数の個数kを零に初期化した
後、ループに入って非零のAC係数を各々順番に処理す
る。上述すると共にステップ83に示すように、圧縮デ
ータの16ビットの列を(例えば図6または図7の)C
レジスタにロードし、並列比較または逐次比較によっ
て、有効なハフマン符号のビット数nを判断する。いっ
たんnが判明すると、ステップ84に示すように、対応
するoffset(n)も判明し、ハフマン・テーブル
・アドレスへのポインタC[0・・・n−1]+off
set(n)を計算した後(例えば図8)、R/S値を
4ビット右にシフトすることにより、ハフマン・テーブ
ルのR/SバイトからS値を抽出する。次いで、ステッ
プ85に示すように、圧縮データを(ハフマン符号の長
さに対応する)nビットだけ(左に)シフトしてデータ
・ストリーム中にAC係数値を供給する。
【0042】次いで、ステップ86に示すように、この
データを図14の形式で供給するために、R/S値群の
ビット群と16進の「0F」バイトとをANDしてR/
S値からRを取り除き、2つの追加のバイトにR/Sバ
イトを格納すると共に余分なSビット群を格納する。そ
して、圧縮データを(左に)Sビットだけシフトして、
Cレジスタの先頭に次のハフマン符号を供給する。次い
で、次の非零のAC係数を復号化するために、k値をR
+1だけインクリメントする(ステップ87)。パック
したデータ形式を完了させるために、ステップ88でR
/S値を試験する。R/S値が0である場合、ステップ
90に示すように、ブロックの終わり(end-of-block:
EOB)を示した後、当該長さバイトを格納する。R/
S値が0でない場合、インクリメントしたk値を試験す
る(ステップ89)。k値が1つのブロック中のAC係
数の最大数である63である場合、0のR/S値を格納
してEOBを示した後、当該長さバイトを格納する。k
値が63未満の場合、プロセスはステップ83にループ
して、AC係数をさらに処理する。
【0043】図10のプロセスの完全な機能を図11〜
図13に示す。本発明のこの機能は、max(n)値群
を5個のxC_max<0・・・4>なる32ビット語
にパックするものである。これらは、レジスタに格納し
て操作することができる。これにより、例えば図6また
は図7のハードウェア構成に従う比較のために、頻繁に
メモリ・アクセスして値を取得する必要がなくなる。
【0044】max(n)値は、次に示すように、語中
に密にパックされている。 xC_max<0>=max(1),max(2),max(3),max(4),max(5),max
(6),max(7),0000=32ビット; xC_max<1>=max(8),max(9),max(10),00000=32 ビット; xC_max<2>=max(11),max(12),000000000=32 ビット; xC_max<3>=max(13),max(14),00000=32 ビット; xC_max<4>=max(15),max(16),0=32 ビット. これらの値は、図10のステップ83を実行する際に、
図11〜図13に示すように操作する。特に、ハフマン
符号中のビット数nを判断するために、nの値を1に初
期化した後、圧縮データの次の32ビットと共にレジス
タすなわち変数compをロードする。compは、xC
_max<0>の最上位ビットと論理比較する。compが論
理的にxC_max<0>の最上位ビット以上の場合、ハフマン
符号は1ビットではないので、nを2にインクリメント
する。次のmax(n)値をレジスタの最上位ビットに
シフトした後、もう1ビットとcomp値とを比較する
手順を繰り返す。この際、アクセスするごとにnをイン
クリメントする。compの比較が失敗したとき、求め
るビット数が見つかっているので、比較の手順を完了す
る。RISCアーキテクチャの中には、レジスタへの複
写、マスク、およびシフト命令を1サイクルで行なうも
のがある。この場合、n値、comp値、xC_max
値がレジスタ中に存在するものと仮定すると、n値がも
っと大きい必要があるか否か、そして、記憶装置(メモ
リ)アクセスは必要ないか否かを判断するのに3サイク
ルしかかからない。したがって、特に、短いハフマン符
号は長いものよりも出現頻度が高いから、上記比較試験
は、極めて迅速に実行することができる。
【0045】本発明による復号化器と復号化方法に関す
る以上の説明から、JPEG標準に従って圧縮した画像
データの再構成において、速度と応答性が顕著に向上し
ているのが分かる。その上、データ処理用のハードウェ
アおよび/またはソフトウェアに対する要件が顕著に低
減していることも分かる。また、上掲した本願の関連出
願に開示したパックしたデータの形式と組み合わせる
と、符号化プロセスにおいても顕著な利点が得られる。
ここに開示した中間データ形式を、図14に示す。
【0046】図15は、パックしたDCTブロックをエ
ントロピー符号化したデータに符号化するフローチャー
トを示す図である。まず、ステップ1001でDCT係
数を符号化する。次いで、ループ1002に入る。ルー
プ1002では、次のように各々実行する。すなわち、
ステップ1003でR/Sバイトの符号化を実行し、ス
テップ1004でS値に従って余分のビットの符号化を
実行し、ステップ1005で両者の格納を実行する。次
いで、ステップ1006でEOB符号があるか否かを判
断する。NOならば、ステップ1003に戻ってループ
1002を繰り返す。YESならば、ステップ1007
に進む。ステップ1007でk=63であるか否かを試
験する。YESならば、プロセスは完了する。なぜな
ら、k=63は供給されうる値の最大数を表わしている
と共に、EOB記号は、これだけを取り出して符号化す
る必要がないからである。NOすなわちk<63なら
ば、ステップ1008でEOBを符号化し、ステップ1
009で格納した後、プロセスを完了する。ここで、次
の点に留意する必要がある。すなわち、各エントリはハ
フマン符号化したデータに必要な粗い形で既に存在して
いるので、プロセスは、EOBマーカーが出現するま
で、最高速で各R/Sビットと余分のビットとの対を順
番に符号化することができる。
【0047】符号化の間に、R/Sバイトをハフマン符
号に変換する必要がある。R/S値にハフマン符号を割
り当てる際に依拠する統計データを集めるのに、図14
のパックしたデータ形式は特に都合がよい。すなわち、
データ・ブロックを走査する1回のパスで、各R/S値
とハフマン符号の割り当てと伝送すべきLi 値とが出現
する回数を計数することができる。データ・ブロックを
走査する2回目のパスの前に、伝送に使用する実際のR
/S値は、図1の形式の一部としての伝送用のVi,j
号値として組み立てる。各ハフマン符号長n内のカテゴ
リは任意に割り当てることができるから、max(n)
を格納する代わりに、長さnの第1のハフマン符号用に
seed(n)なる値を定義する。seed(n)は、
数値的に2*max(n−1)に等しい。
【0048】図16は、H_codeテーブル、H_o
ffsetテーブル、H_seedテーブルを初期化す
るフローチャートを示す図である。まず、開始シード
(seed)(すなわち所定のビット数に対応する数値
が最小である最初の符号語)を零(0)に初期化する。
当該符号語のビット数(すなわち符号語長)を零に初期
化する。
【0049】次いで、iが16未満である限り、iを1
だけインクリメントした後、seedを2倍にしてH_
seed(i)に格納する。次いで、codeをsee
dに設定した後、seedをiビット符号の数だけイン
クリメントする。次いで、jを零に初期化する。
【0050】jが符号Li の個数未満である限り、「ハ
フマン・テーブルを定義(DHT)」マーカー・セグメ
ントにおいて、R/Sを次のVi,j 記号値に設定する。
当該符号のビット数(i)が6未満の場合、当該ビット
数と当該符号をH_code(RS)にパックする。こ
のとき、当該バイトの上位3ビットを当該符号の当該ビ
ット数を設定し、下位5ビットに当該符号を設定する。
iが5よりも大きい場合、H_code(RS)を当該
ビット数に設定する。次いで、H_offset(R
S)をjに設定する。なぜなら、これはiビット符号の
うちのj+1番目の符号だからである。次いで、両経路
について、jとcodeの双方をインクリメントする。
【0051】ソフトウェアで実現する場合、最長のse
edが16ビットだから、H_seedテーブルは、お
そらく少なくとも16ビットの整数として実現される。
ハードウェアの場合、n番目のエントリがnビットの符
号用のseedだから、n番目のエントリしかnビット
である必要がない。説明を簡明にするために、図16で
は、H_seedテーブルを17エントリ(0〜16)
用に初期化している。図17に示すフローチャートで
は、6番目から16番目のエントリしか使うことができ
ない。ここでも、ハードウェアによる実施形態では、こ
れを利用してロード可能なレジスタの数を減らしてい
る。
【0052】DCハフマン・テーブルとACハフマン・
テーブルは、各々、H_seedテーブル、H_cod
eテーブル、およびH_offsetテーブルを1組必
要とする。幸い、最低限の実現方法の場合、R=0であ
り、Sの最大値が11だから、DC H_codeテー
ブルとDC H_offsetテーブルは、12エント
リしか必要としない。一般的な実現方法の場合、Sの最
大値が16であるから、これらのテーブル用に最大17
エントリ作成する。
【0053】説明を簡明にすると、大部分のR/Sバイ
トを使うことができるから、H_codeテーブルとH
_offsetテーブルは、各々、おそらく256エン
トリ備えることになる。これらのテーブルのエントリ
は、高々1バイトである。したがって、16ビット符号
語のビット数を表わすのに当該符号語のエントリに加え
余分のビットを必要とする代わりに、より長い符号語用
に小さなH_seedテーブルを使う。それゆえ、当該
サイズの最後の符号語を算出するのに、余分バイトは1
バイトしか必要としない。短い符号(すなわち5ビット
未満)は、すべて、H_codeバイトに含める。出現
頻度の高い記号ほど符号が短いから、記憶装置に対する
1バイト分のアクセスで、最も普通に符号化した記号に
必要なものをすべて取得することができる。
【0054】図17は、図15のR/Sバイトの符号化
を実行するステップ1003をより詳細に示す図であ
る。まず、一時変数または一時レジスタtemをH_c
ode(RS)の内容に設定する。nの値を当該バイト
の上位3ビットに設定する。nが零の場合、nをtem
に設定する。そして、H_seed(n)にH_off
set(RS)を加算して当該符号を生成する。nが零
でない場合、codeをtemの下位5ビットに設定す
る。次いで、圧縮データを左にnビットシフトさせた
後、その下位nビットに当該符号を入れる。comp
は、連続バレル・シフタのように取り扱う。そして、3
2ビット語を出力するプロセスは、当業者にとって周知
である。
【0055】従来技術では、最大256個のR/S記号
用に、nと最大16ビットのビット・パターンを格納し
ている。しかし、本発明によると、nと当該符号語は、
合計8ビット以下の中に両者を格納できるときには、1
バイトの中に格納する。これにより、ハフマン・テーブ
ルを顕著に短くすることができる。そして、出現する符
号の大部分はこの形式を使うのに十分なほどに短いか
ら、このことは特に好都合である。この形式を使ってい
ることは、当該バイトの上位3ビットの位置を非零値に
することにより示す。
【0056】すべての長いビット・パターンに対して
は、長さの表示だけをSとして格納する。そして、上位
ニブルを「0000」に設定して異なった形式であるこ
とを表示する。これら長い符号の場合、seed(すな
わち特定ビット長の最初の符号値)への索引として当該
長さを使う。次いで、参照テーブルから対応するオフセ
ットを決定し、それを当該seedに付加して当該符号
値を生成することができる(最大オフセットが255で
あるから、上記オフセットは1バイトの中に納まる)。
R/Sバイトを符号化して格納した後、余分のSビット
を符号化する。この符号化は、図14の中間データ形式
の各AC係数値の2バイトから可変長を展開するように
シフトして行なうのが望ましい。
【0057】上述した点から、本発明によれば、符号化
用のデータ処理の効率が向上すると共に、ハフマン・テ
ーブルを検索ためのテーブルを計算して格納する効率が
顕著に向上する。これらの利点は、JPEG標準に完全
に準拠した方法でもたらされると共に、ハフマン符号化
のすべての用途に適用可能である。
【0058】JPEG標準に関する好適な一実施形態の
観点から本発明を説明したけれども、本発明は特許請求
の範囲の本旨と範囲の内で変更して実施することができ
る、ということを当業者は認識できる。例えば、これら
高速符号化法と高速復号化法は、昇順に並んだ各長さの
多くの符号から構築されるすべてのハフマン・テーブル
に適用できる。さらに、当業者は、本発明の上の説明か
ら、上述した手法を降順に並べて構築したハフマン・テ
ーブルに適用することができる。
【0059】まとめとして以下の事項を開示する。 (1)記号をハフマン符号化するハフマン符号化法であ
って、1つのテーブルにおける所定長の符号の最初の出
現に対するシード値を定義するステップと、1つの符号
語の長さを格納するステップと、前記数および前記符号
語のビット数が所定ビット数以下の場合、前記長さおよ
び前記符号語を第1の形式で格納するステップと、前記
数および前記画像データが前記所定ビット数を超えるビ
ット数から成る場合、前記シード値への索引、オフセッ
ト、および前記符号語を第2の形式で格納するステップ
とを備えたハフマン符号化法。 (2)前記記号がJPEG R/Sバイトである、上記
(1)に記載のハフマン符号化法。 (3)前記符号語が画像データである、上記(1)に記
載のハフマン符号化法。 (4)前記画像データがJPEG画像データである、上
記(3)に記載のハフマン符号化法。 (5)圧縮データをハフマン復号化するハフマン復号化
法であって、複数の試験基準の各々を使ってデータ・ス
トリームのビットを試験して有効なハフマン符号の長さ
を判断するステップと、前記長さに対応する複数のオフ
セットのうちの1つと前記有効なハフマン符号とを組み
合わせて、索引を生成するステップと、前記索引を使っ
て、ハフマン・テーブル中の記号値にアクセスするステ
ップとを備えたハフマン復号化法。 (6)さらに、前記試験基準および前記複数のオフセッ
トを、ハフマン・テーブルのデータから計算するステッ
プを備えた、上記(5)に記載のハフマン復号化法。 (7)前記圧縮データが画像データである、上記(5)
に記載のハフマン復号化法。 (8)前記画像データがJPEG画像データである、上
記(7)に記載のハフマン復号化法。
【図面の簡単な説明】
【図1】 JPEG標準によるハフマン・テーブル仕様
の構文を示す図である。
【図2】 AC DCT係数またはDC DCT係数差
分のハフマン符号化を示す図である。
【図3】 JPEG標準による典型的なハフマン・テー
ブル仕様とエントロピー符号化した画像データを示す図
である。
【図4】 輝度DC DCT係数差分値に適したハフマ
ン符号の典型的なテーブルを示す図である。
【図5】 クロミナンスDC DCT係数差分値に適し
たハフマン符号の典型的なテーブルを示す図である。
【図6】 本発明の実施に使用可能な別のハードウェア
の実施形態の概念図である。
【図7】 本発明の実施に使用可能な別のハードウェア
の実施形態の概念図である。
【図8】 本発明の実施に使用可能なハードウェアの実
施形態を幾分詳細に示す概念図である。
【図9】 本発明による比較値とハフマン・テーブル・
ポインタ・データの計算の好適な形態を示すフローチャ
ートを示す図である。
【図10】 ハフマン符号化したR/S値を含む圧縮デ
ータの復号化における本発明の方法論を示すフローチャ
ートを示す図である。
【図11】 図10のプロセスの好適な機能を示すフロ
ーチャートを示す図である。
【図12】 図10のプロセスの好適な機能を示すフロ
ーチャートを示す図である。
【図13】 図10のプロセスの好適な機能を示すフロ
ーチャートを示す図である。
【図14】 ハフマン符号化を迅速に実行しうる元にな
るパックした中間データ形式を示す図である。
【図15】 本発明による符号化のフローチャートを示
す図である。
【図16】 符号化テーブルの初期化を行なうフローチ
ャートを示す図である。
【図17】 図15の一部の好適な実現方法を示す図で
ある。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ジョアン・エル・ミッチェル アメリカ合衆国 コロラド州 80503、ロ ングモント、17番 アベニュー 2400、ユ ニット 103ディー (72)発明者 アルバート・エヌ・カゼス アメリカ合衆国 ニューヨーク州 10549、 マウント キスコ、ウエスト ウエイ 9 (72)発明者 ニール・エム・リーダー アメリカ合衆国 ノース・カロライナ州 27502、エイペックス、セイモア クリー ク ドライブ 109 Fターム(参考) 5C059 KK06 KK15 MA00 MA23 MC33 MC34 MC38 ME02 ME17 PP01 SS06 SS11 UA02 UA05 UA38 5C078 AA04 BA57 CA25 DA01 DA06 5J064 AA03 AA04 BA09 BA16 BB05 BC01 BC02 BC04 BC08 BC14 BC29 BD01

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】記号をハフマン符号化するハフマン符号化
    法であって、 1つのテーブルにおける所定長の符号の最初の出現に対
    するシード値を定義するステップと、 1つの符号語の長さを格納するステップと、 前記数および前記符号語のビット数が所定ビット数以下
    の場合、前記長さおよび前記符号語を第1の形式で格納
    するステップと、 前記数および前記画像データが前記所定ビット数を超え
    るビット数から成る場合、前記シード値への索引、オフ
    セット、および前記符号語を第2の形式で格納するステ
    ップとを備えたハフマン符号化法。
  2. 【請求項2】前記記号がJPEG R/Sバイトであ
    る、請求項1に記載のハフマン符号化法。
  3. 【請求項3】前記符号語が画像データである、請求項1
    に記載のハフマン符号化法。
  4. 【請求項4】前記画像データがJPEG画像データであ
    る、請求項3に記載のハフマン符号化法。
  5. 【請求項5】圧縮データをハフマン復号化するハフマン
    復号化法であって、 複数の試験基準の各々を使ってデータ・ストリームのビ
    ットを試験して有効なハフマン符号の長さを判断するス
    テップと、 前記長さに対応する複数のオフセットのうちの1つと前
    記有効なハフマン符号とを組み合わせて、索引を生成す
    るステップと、 前記索引を使って、ハフマン・テーブル中の記号値にア
    クセスするステップとを備えたハフマン復号化法。
  6. 【請求項6】 さらに、 前記試験基準および前記複数のオフセットを、ハフマン
    ・テーブルのデータから計算するステップを備えた、請
    求項5に記載のハフマン復号化法。
  7. 【請求項7】前記圧縮データが画像データである、請求
    項5に記載のハフマン復号化法。
  8. 【請求項8】前記画像データがJPEG画像データであ
    る、請求項7に記載のハフマン復号化法。
JP2001375518A 2000-12-15 2001-12-10 ハフマン符号化・復号化法 Expired - Fee Related JP3627016B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/736,445 US6373412B1 (en) 2000-12-15 2000-12-15 Fast JPEG huffman encoding and decoding
US09/736445 2000-12-15

Publications (2)

Publication Number Publication Date
JP2002271208A true JP2002271208A (ja) 2002-09-20
JP3627016B2 JP3627016B2 (ja) 2005-03-09

Family

ID=24959886

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001375518A Expired - Fee Related JP3627016B2 (ja) 2000-12-15 2001-12-10 ハフマン符号化・復号化法

Country Status (3)

Country Link
US (2) US6373412B1 (ja)
JP (1) JP3627016B2 (ja)
CN (1) CN1148005C (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010258532A (ja) * 2009-04-21 2010-11-11 Internatl Business Mach Corp <Ibm> ビット長を符号に変換する回路及び方法
US9374594B2 (en) 2014-06-11 2016-06-21 Brother Kogyo Kabushiki Kaisha Converting apparatus
JPWO2019189433A1 (ja) * 2018-03-28 2021-03-11 日本電気株式会社 処理装置、システム、処理方法、およびコンピュータプログラム

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE512613C2 (sv) * 1996-12-30 2000-04-10 Ericsson Telefon Ab L M Metod och organ för informationshantering
US6819803B2 (en) * 2001-07-02 2004-11-16 International Business Machines Corporation Faster lossless rotation of JPEG images
US20030093451A1 (en) * 2001-09-21 2003-05-15 International Business Machines Corporation Reversible arithmetic coding for quantum data compression
US6985529B1 (en) * 2002-01-07 2006-01-10 Apple Computer, Inc. Generation and use of masks in MPEG video encoding to indicate non-zero entries in transformed macroblocks
US7149360B2 (en) * 2002-01-09 2006-12-12 Hewlett-Packard Development Company, L.P. Method for using a JPEG engine to assist in efficiently constructing MPEG I-frames
ES2297083T3 (es) 2002-09-04 2008-05-01 Microsoft Corporation Codificacion entropica por adaptacion de la codificacion entre modos por longitud de ejecucion y por nivel.
US6956511B2 (en) * 2004-01-06 2005-10-18 Sharp Laboratories Of America, Inc. Multi-symbol/coefficient decode operation for Huffman codes
US20060044576A1 (en) * 2004-07-30 2006-03-02 Kabushiki Kaisha Toshiba Apparatus for image processing
KR20060051812A (ko) * 2004-09-29 2006-05-19 후지 샤신 필름 가부시기가이샤 런 렝스 압축 데이터의 위치 특정 방법 및 장치
US7333037B2 (en) * 2006-02-14 2008-02-19 Broadcom Corporation Method and system for improved lookup table (LUT) mechanism for Huffman decoding
JP4745865B2 (ja) * 2006-02-28 2011-08-10 富士通セミコンダクター株式会社 符号化装置および方法
JP4958466B2 (ja) * 2006-04-05 2012-06-20 グローバル・オーエルイーディー・テクノロジー・リミテッド・ライアビリティ・カンパニー 表示装置
US8260070B1 (en) 2006-10-03 2012-09-04 Adobe Systems Incorporated Method and system to generate a compressed image utilizing custom probability tables
US7394411B1 (en) 2007-01-09 2008-07-01 International Business Machines Corporation Fast implementation of decoding function for variable length encoding
US8305244B2 (en) * 2007-04-16 2012-11-06 Hewlett-Packard Development Company, L.P. Coding data using different coding alphabets
US8031959B2 (en) * 2008-02-22 2011-10-04 Himax Technologies Limited Compression system for a bit-plane
US8406307B2 (en) 2008-08-22 2013-03-26 Microsoft Corporation Entropy coding/decoding of hierarchically organized data
US8073270B2 (en) * 2008-09-16 2011-12-06 Silicon Motion, Inc. Image decoding apparatus and method
CN101741392B (zh) * 2008-11-27 2013-01-09 安凯(广州)微电子技术有限公司 一种快速解析码长的哈夫曼解码方法
TWI343192B (en) * 2009-06-12 2011-06-01 Ind Tech Res Inst Decoding method
GB201014347D0 (en) * 2010-08-28 2010-10-13 Lu Mingying Huffman code table transform and parrallel Huffman decoding
CN106850504B (zh) * 2015-12-04 2019-11-15 北京航空航天大学 基于http静态压缩数据流的有害代码检测方法和装置
US10243668B2 (en) 2016-04-27 2019-03-26 Industrial Technology Research Institute Positioning measurement device and the method thereof
US9712830B1 (en) * 2016-09-15 2017-07-18 Dropbox, Inc. Techniques for image recompression
US9787323B1 (en) 2016-12-11 2017-10-10 Microsoft Technology Licensing, Llc Huffman tree decompression
US10613797B2 (en) * 2017-06-13 2020-04-07 ScaleFlux, Inc. Storage infrastructure that employs a low complexity encoder

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4396906A (en) * 1980-10-31 1983-08-02 Sri International Method and apparatus for digital Huffman encoding
US5227789A (en) * 1991-09-30 1993-07-13 Eastman Kodak Company Modified huffman encode/decode system with simplified decoding for imaging systems
US5550541A (en) * 1994-04-01 1996-08-27 Dolby Laboratories Licensing Corporation Compact source coding tables for encoder/decoder system
US5686915A (en) * 1995-12-27 1997-11-11 Xerox Corporation Interleaved Huffman encoding and decoding method
US5652582A (en) * 1995-12-29 1997-07-29 Xerox Corporation Method of high speed Huffman coding and decoding of lab color images
US5808570A (en) * 1996-06-28 1998-09-15 Philips Electronics North America Corp. Device and method for pair-match Huffman transcoding and high-performance variable length decoder with two-word bit stream segmentation which utilizes the same
US6040790A (en) * 1998-05-29 2000-03-21 Xerox Corporation Method of building an adaptive huffman codeword tree
US6130630A (en) * 1998-10-27 2000-10-10 Hewlett-Packard Company Apparatus and method for compressing Huffman encoded data

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010258532A (ja) * 2009-04-21 2010-11-11 Internatl Business Mach Corp <Ibm> ビット長を符号に変換する回路及び方法
US8018359B2 (en) 2009-04-21 2011-09-13 International Business Machines Corporation Conversion of bit lengths into codes
US9374594B2 (en) 2014-06-11 2016-06-21 Brother Kogyo Kabushiki Kaisha Converting apparatus
JPWO2019189433A1 (ja) * 2018-03-28 2021-03-11 日本電気株式会社 処理装置、システム、処理方法、およびコンピュータプログラム
US11586749B2 (en) 2018-03-28 2023-02-21 Nec Corporation Processing apparatus, system, processing method, and computer program
JP7375744B2 (ja) 2018-03-28 2023-11-08 日本電気株式会社 処理装置、システム、処理方法、およびコンピュータプログラム

Also Published As

Publication number Publication date
US6373412B1 (en) 2002-04-16
JP3627016B2 (ja) 2005-03-09
CN1359196A (zh) 2002-07-17
USRE39925E1 (en) 2007-11-27
CN1148005C (zh) 2004-04-28

Similar Documents

Publication Publication Date Title
JP2002271208A (ja) ハフマン符号化・復号化法
US11817885B2 (en) Guaranteed data compression
US6166664A (en) Efficient data structure for entropy encoding used in a DWT-based high performance image compression
US6195026B1 (en) MMX optimized data packing methodology for zero run length and variable length entropy encoding
US6219457B1 (en) Method and system for decoding data encoded in a variable length code word
US5218431A (en) Raster image lossless compression and decompression with dynamic color lookup and two dimensional area encoding
US11509330B2 (en) Guaranteed data compression
US6292114B1 (en) Efficient memory mapping of a huffman coded list suitable for bit-serial decoding
US7119723B1 (en) Decoding variable length codes while using optimal resources
US11677415B2 (en) Guaranteed data compression using reduced bit depth data
US20010054973A1 (en) Variable length decoder
US11374590B2 (en) Guaranteed data compression using intermediate compressed data
US12034934B2 (en) Guaranteed data compression
US11831342B2 (en) Guaranteed data compression
US6737993B2 (en) Method and apparatus for run-length encoding data values
JP4061104B2 (ja) コンテキストモデルによるラン・スキップカウントに基づくメモリアクセス及びスキッピング
TW202013969A (zh) 在顯示介面壓縮技術中形成熵編碼組的方法和系統
JPH0918350A (ja) 符号化復号化装置及び符号化復号化方法
JPH0936749A (ja) 符号化復号化装置およびこれに用いられる符号化方法
JP2934603B2 (ja) 可変長さコードの復号化方法及びその装置
Midtvik et al. Reversible compression of MR images
Zandi et al. Optimizing bit-plane context-dependent entropy coding for palettized images
Salomon Approaches to Compression
JPH0583562A (ja) 画像データ符号化装置
JPH07147678A (ja) 可変長符号化回路

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040420

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040521

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040602

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041019

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: 20041109

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041111

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071217

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101217

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101217

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121217

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121217

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131217

Year of fee payment: 9

LAPS Cancellation because of no payment of annual fees