Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP3974036B2 - How to perform Huffman decoding - Google Patents
[go: Go Back, main page]

JP3974036B2 - How to perform Huffman decoding - Google Patents

How to perform Huffman decoding Download PDF

Info

Publication number
JP3974036B2
JP3974036B2 JP2002540317A JP2002540317A JP3974036B2 JP 3974036 B2 JP3974036 B2 JP 3974036B2 JP 2002540317 A JP2002540317 A JP 2002540317A JP 2002540317 A JP2002540317 A JP 2002540317A JP 3974036 B2 JP3974036 B2 JP 3974036B2
Authority
JP
Japan
Prior art keywords
code
binary digital
digital signal
huffman
length
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.)
Expired - Fee Related
Application number
JP2002540317A
Other languages
Japanese (ja)
Other versions
JP2004515096A5 (en
JP2004515096A (en
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2004515096A publication Critical patent/JP2004515096A/en
Publication of JP2004515096A5 publication Critical patent/JP2004515096A5/ja
Application granted granted Critical
Publication of JP3974036B2 publication Critical patent/JP3974036B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • 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
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

【0001】
(関連出願)
本特許出願は、Acharyaらによる、同時出願された米国特許出願第09/704,392号、「A Method of Generating Huffman Code Length Information」(代理人整理番号第042390号、P9804)に関するものであり、本発明の譲受人に譲受され、かつ参照により、本明細書に組み込んである。
【0002】
(背景)
本開示は、ハフマン・デコーディングに関する。
【0003】
周知のように、ハフマン・コーディングは、普及している可変長統計エンコーディング・スキームである。またこれも周知のように、ハフマン・コードの生成は、それぞれの個々のシンボルに対する統計的確率に依拠する。たとえば、D.A.Huffmanによる、「A Method for the Reconstruction of Minimum Redundancy Codes」(Proceedings of the IRE、Volume 40、No.9、pages 1098〜1101,1952)を参照されたい。従来のテーブル・ルックアップ・ベースのエンコーディング・スキームが、少なくとも部分的に、効率性がよく、かつ比較的実装が簡単であるために、ハフマン・エンコーディングに広く使用されている。しかし、テーブル・サーチ・ベースのデコーディングは、通常、ソフトウェアとハードウェアの両方の実装の点において非効率的である。これは、実用的な応用例に典型的であるように、テーブル内のエントリの数がかなり高い場合に、特にそうである。ハフマン・デコーディングに用いられる別のアプローチが、「木をトラバースする技術」を用いるハフマン木の生成である。しかし、このデコーディング技術はまた欠点も有する。この特定の技術はビット・シーケンシャルであり、ハフマン木生成プロセスのためおよびデコーディング・プロセスのためのメモリ割当および計算の実行の両方で、余分な「オーバヘッド」を導入する。
【0004】
本発明と考えられる主題については、本明細書の結論部分において、詳細に記載しかつ明確に特許請求することとする。しかし、本発明は、構成およびオペレーションの方法と、その目的、特徴、利点の両方に関して、以下の詳細な説明を添付図面と合わせて参照することにより、最も良く理解されるであろう。
【0005】
(詳細な説明)
以下の詳細な説明において、本発明を完全に理解するために、多数の具体的な詳細事項を記載する。しかし、これらの具体的な詳細事項なしに本発明を実践できることを、当業者なら理解するであろう。他の例においては、本発明の意味が不明確とならないように、周知の方法、手順、構成要素、回路について詳細に記述していない。
【0006】
上記に表示したように、1組のシンボルのハフマン・コードの生成が、ソース・シンボルの出現確率に基づく。通常、本状況下でハフマン木と呼ぶ2分木の構築が用いられる。上述の文書で、D.A.Huffmanは、このようにプロセスを記述している。
・すべての可能なシンボルを、その確率とともに列挙する。
・最小の確率を有する2つのシンボルを見つける。
・これらを、その確率が個々の確率の合計である、両方のシンボルを含む単一の集合と置き換える。
・リストがただ1つのメンバしか含まなくなるまで繰り返す。
この手順により、複数の集合の再帰的に構造化された集合が作成され、そのそれぞれが正確に2つのメンバを含む。したがって、それは、「葉」としてのシンボルを有する2分木(「ハフマン木」)として表すことができる。次いで、特定のシンボルのコード(「ハフマン・コード」)を形成するために、2分木をルートからそのシンボルまでトラバースし、左の枝には「0」を、右の枝には「1」を記録する。しかし、この手順についての1つの問題点は、得られるハフマン木が一意ではないことである。このようなコードの応用例の一例が、GZIPなどのテキスト圧縮である。GZIPは、「無料の」または自由に使用可能なUNIX(登録商標)のようなオペレーション・システムを開発するという目標を有するGNU(Gnu’s Not Unix)プロジェクトの下で開発されたテキスト圧縮ユーティリティであり、UNIXオペレーション・システム上で「compress」テキスト圧縮ユーティリティを置き換えるためのものである。たとえば、ウェブサイト「http://www.gzip.orh/」のgzip−1.2.4.tarとして使用可能なGailly,J.L.およびAdler,M.による「GZIP documentation and sources」を参照されたい。
【0007】
周知のように、結果として生じるハフマン・コードはプリフィックス・コードであり、より頻繁に現れるシンボルに、より少ない数のビットが割り当てられて、可変長ハフマン・コードを形成する。その結果、シンボルの出現頻度を利用することから、最終的に平均コード長が減少される。
【0008】
図1は、3つのソース・シンボルを有するハフマン木の簡単な一例を示す図である。異なる2値シンボルを木の縁に割り当てることにより、いくつかの2進コードを使用して、同じハフマン木を表すことができる。
【0009】
このハフマン木のための可能な集合のハフマン・コードが、図2に例示してある。図2から、ハフマン・コードは一意ではないことが示されているが、この例からは、それぞれのシンボルの個々のコード長が一意であるように見える。
【0010】
対応するハフマン木を構築することにより、ハフマン・コードの長さ情報を生成できる。しかし、上記に表示したように、ハフマン・コードはこの方式で生成された場合は一意ではない。しかし、2つの制約を課すことにより、ハフマン木を用いて作成されたハフマン・コードが一意であると保証できることが分かる。
これらの制約とは、
1.所与のビット長のすべてのコードが、それらが表すシンボルと同じ順序で、辞書式順序で連続した値を有する。
2.より短いコードが、より長いコードより辞書式順序で先行する。
【0011】
これらの制約に基づいて、ハフマン・コードが一意的に判断できる。図3は、たとえば、これらの制約を用いる19シンボルのハフマン・コード集合を示す図であり、ここで、コード長はハフマン木を使用して事前に判断されている。図3の表については、ハフマン・コード・テーブル内のエントリ内のダッシュが、シンボルおよび現在のソース・アルファベットによるコードが存在せず、その長さ情報がゼロであることを示している。
【0012】
本発明の範囲がこの点に限定されるものではないが、上述した制約は、たとえば上記に記述したユーティリティ、GZIPなどのさまざまな圧縮アプローチおよび標準において用いられてきた。通常このような応用例では、ハフマン木情報は、圧縮されたテキスト・データとともに1組のコード長情報で通過する。したがって、その集合のコード長情報は、一意のハフマン木を再構築するのに十分である。たとえば、図3に例示されているハフマン・コード・テーブルを、GZIPで実施されるような以下のプロセスを使用して生成できる。
【0013】
コード長は、最初、長さ[l]である。
1)それぞれのコード長のためのコードの数をカウントする。
長さN(N>=1)のコードの数を「カウント[N]」とする。
2)それぞれのコード長のための最小コードの数値を見つける。

Figure 0003974036
3)2で判断された連続した値を使用して、すべてのコードに数値を割り当てる。
【0014】
上記に表示したように、ハフマン・エンコーディングが、テーブル・ルックアップ技術を使用して比較的簡単に達成できる。しかし、ハフマン・コードのデコーディングは、通常はより計算集約的である。なぜなら、コード・ワードがデコードすべき圧縮されたビット・ストリーム内で受け取られた場合、コード・ワード間には定義済み境界がないからである。上記に記述したように、ハフマン・コードは可変長コードである。
【0015】
一定入力レート・デコーダと呼ぶ1つのアプローチまたは技術が入力ビット・ストリームを一度に1ビットずつシリアルに処理する。この方法は、デコーディングまたはハフマン木の構築を用いる。したがって、ルートから開始し、その技術には、終端ノードに到達するまで、デコーディング木の枝をトラバースすることが必要となる。終端ノードでは、コード・ワードは完全にデコードされ、したがって、対応するシンボルを所望のように作成または出力できる。次いで、このプロセスは、再び木のルートから開始する。たとえば、B.BhaskarinおよびK.Konstantinidesによる「Image and Video Compressions Standards:Algorithms and Architectures」(Kluwer Academic Publishers、1995)を参照されたい。
【0016】
図4は、対応するデコーディング木を有するハフマン・エンコーディング・テーブルの一例を示す図である。ハードウェアまたはソフトウェアにおけるこのようなデコーダに関連する1つの問題が、どのようにしてデコーディング木をメモリに効率的にマッピングするかである。たとえば、図5は、図4のデコーディング木を使用するビット・シリアル・ハフマン・デコーディングのための読取専用メモリ(ROM)エントリのテーブルを示す図である。メモリを効率的にマッピングするための1つのアプローチが、たとえば、Mukherjeeらによる「MARVLE:a VLSI chip for data compression using tree based codes」(IEEE Transactions on Very Large Scale Integration(VLSI)System、1(2):203−214、June 1993)に提案されている。
【0017】
特に効率的というわけではないが、ハフマン・コードをデコードするための別のアプローチが、ハフマン・テーブルのそれぞれのエントリを入力バッファ内の入力ビットと比較することである。このアプローチでは、最悪の場合、エンコーディング・テーブル内のNエントリが比較される。ここで、Nとはシンボルの総数である。その上、そのエントリのためのコード長情報は周知である。
【0018】
データ構造を使用して一連のバイナリ・デジタル信号をデコードする方法の一実施形態では、以下のアプローチを用いることができる。データ構造を、デコードされているサブグループのバイナリ・デジタル信号の長さに少なくとも部分的に基づいてサーチできる。この特定の実施形態では、エンコードされるハフマンなどの一連のバイナリ・デジタル信号がエンコードされるが、本発明の範囲は、ハフマン・コーディングまたはデコーディングに限定されるものではない。この特定の実施形態では、本発明の範囲がこの点に限定されるものではないが、サーチする前に、系列内の第1のNバイナリ・デジタル信号はサブグループとして選択される。ここで、Nとは最短コードの長さである。さらに、サブグループの長さが、長さNを有するデータ構造内のコードがそのサブグループに一致しない場合は、系列内の次のバイナリ・デジタル信号によって増加される。同様に、このアプローチが用いられるこの特定の実施形態では、サブグループと同じ長さを有するデータ構造内の全コードが、一致するかどうかチェックされる。以下にさらに詳細に記述するが、データ構造は、少なくとも部分的に、コード長に基づいて構成されることに留意されたい。さらに、データ構造は、同じコード長を有するコードが順次に格納されるように構成される。
【0019】
本発明の範囲がデータ構造のこの特定の実施形態に限定されるものではないが、この特定の実施形態は、テーブル内に冗長を示すためにいくつかのシンボルを再配置した後の、図3のハフマン・コード・テーブルに関係することがある。このことは、たとえば、図6に例示してある。たとえば、ハフマン・コード長ゼロを有するシンボルとは、これらのシンボルが用いられないということである。同様に、上記の第1の制約に基づき、所与のビット長のすべてのコードが、辞書式順序で連続した値を有する。したがって、長さ情報を追跡することにより、この長さのハフマン・コードを有する辞書式順序の第1のシンボルのハフマン・コード、および同じ長さを有する最後のシンボルまでのハフマン・コードの数のハフマン・コードが情報の冗長がほとんどない情報を提供する。
【0020】
データ構造のこの特定の実施形態が、図7に示してある。図7は図6と同じ情報を有するが、話を簡単にするためおよび使用しやすくするために再配置してあることに留意されたい。したがって、図7はより少ないメモリを用いており、以下にさらに詳細に記述するように、ビット・パラレル・デコーディング・スキームが適用できる。
【0021】
図7に例示したデータ構造の実施形態では、図7の実施形態で示したように、ハフマン・コードのデコーディングを、それぞれのコード長のためのハフマン・コードのコード長および範囲についての情報に少なくとも部分的に基づいて、ビット・パラレル・アプローチで実施できる。このことは、擬似コードの実施を使用して以下に例示し記述する。繰り返すが、本発明の範囲が提供される特定の擬似コードに限定されるものではない。
【0022】
この状況では、合成データ構造をNDS(NDC)と呼ぶ。これは、プログラミング言語Cのための合成データ構造の定義に対応するが、本発明の範囲がこのプログラミング言語または特定のプログラミング言語に限定されるものではない。この特定の実施形態では、繰り返すが、本発明の範囲がこの点に限定されるものではないが、この特定の実施形態では、NDSのそれぞれのエントリが、図7に示されているように、4つのフィールド、つまりそれぞれ、指定された長さ、開始コード、終了コード、ベース・インデックスを有する。もちろん、開始コードおよび終了コードではなく、開始コードおよび開始コードと終了コードとの差を用いることなどの、多くの均等データ構造が可能であることが理解されよう。
【0023】
しかし、この特定の実施形態では、NDCは、互いに異なったコード長を有するエントリの数である。それぞれのエントリが、同じコード長を有する1グループの連続したハフマン・コードを表す。開始コードはこのグループの第1のハフマン・コードであり、終了コードはこのグループの最後のハフマン・コードである。図6に示されているように、ベース・インデックスは、対応するシンボルのためのハフマン・テーブル内の第1のハフマン・コードのインデックス値である。上記に表示したように、本発明の範囲は、この特定のデータ構造に限定されるものではないことに留意されたい。この特定のデータ構造に対する多くの修正形態が可能であり、上記に記述してきた内容の趣旨および範囲内に含まれることは明らかである。
【0024】
図7に例示したデータ構造の実施形態を用いて、一連のバイナリ・デジタル信号をデコードするための本発明による一実施形態の擬似コード表示を以下に示す。
Figure 0003974036
【0025】
この特定の実施形態では、本発明の範囲がこの点に限定されるものではないが、データ構造をサーチする前に、系列内の第1のNバイナリ・デジタル信号がサブグループとして選択されるが、ここでNとは最短コードの長さである。次いで、その長さを有するすべてのコードを一致するかどうかチェックする。一致が出現しなかった場合は、サブグループの長さを系列内の次のバイナリ・デジタル信号によって増加させ、次いで、増加した長さを有するコードを一致するかどうかチェックする。このプロセスを一致が出現するまで続行する。上記に注記したように、データ構造が少なくとも部分的にコード長に基づいて構成され、データ構造は、同じコード長を有するコードが辞書式順序で順次格納されるよう構成される。このことにより、所望のままに効率的なオペレーションが可能となる。
【0026】
一代替実施形態では、最長コードでサーチを開始し、一致が出現しなかった場合は、サブグループの長さを減少させることが可能であることに留意されたい。しかし、通常、より短いハフマン・コードがより高い出現確率を有するために、このような状況では最短コードからサーチを開始することがより効率的である。
【0027】
一連のバイナリ・デジタル信号をデコードする方法のこの特定の実施形態は、メモリの利用、計算の複雑さおよび実施の面で、いくつかの利点を有する。上記に提案したように、データ構造のためのエントリの数は、シンボルの数ではなく、ハフマン・コードのための最大コード長に依存する。したがって、このことによりメモリが削減される。たとえば、GZIPなどの固定限度コード長を用いる応用例の場合、代表的なハフマン木が285シンボルを有し、コード長は15ビットに制限される。それと対称的に、この実施形態のために用いるエントリの数は、データによって異なるが、せいぜい15エントリを有し、その結果この例では、19xメモリ利用の削減が生じる。
【0028】
同様に、ビット・シリアル・サーチ・プロセスではなく、ビット・パラレル・サーチ・プロセスを使用することにより、計算の複雑さが減少される。ここで、この実施形態は、少なくとも部分的にデータ構造内のコード長情報に基づく。そのコード長を有するグループのための開始および終了コードの範囲をチェックすることにより、既存アプローチに比べてサーチ手順が向上する。19シンボルおよび7ビットの最大コード長を用いるこの実施形態の実験結果から、ハフマン・コード・テーブルのサーチを用いるデコーディングと比較して、複雑さの点で5.5倍削減される。同様に、ハフマン木が構築される場合に生じるような2分木の構築が起きないために、かつ動的なメモリ割当がほとんどまたは全くないために、ハードウェアとソフトウェアの両方で、本発明によるデコーディングの実施が比較的簡単となる。
【0029】
特定の実施形態のみを記述してきたが、本発明の範囲が特定の実施形態または実装形態に限定されるものではないことが、もちろん、理解されるであろう。たとえば、一実施形態はハードウェアでなされ、別の実施形態はソフトウェアでなされるてもよい。同様に、一実施形態が、たとえば、ファームウェア、あるいはハードウェア、ソフトウェア、またはファームウェアの組合せでもよい。同様に、本発明の範囲がこの点に限定されるものではないが、一実施形態が、記憶媒体などの製品を備えることができる。たとえば、CD−ROMやディスクなどの記憶媒体が、それに命令を格納していることがあり、コンピュータ・システムやプラットフォームまたは画像作成システムなどのシステムによって実行された場合、その結果、たとえば、上記に記述したようなハフマン・デコーディングを実施する方法などの、本発明による方法の一実施形態を実行できる。同様に、データ構造を作成する方法の実施形態を、本発明に従って実行できる。
【0030】
本発明のある特徴について、本明細書に例示し記述してきたが、当業者には、多くの修正形態、置換形態、変更形態、均等物が考えられるであろう。したがって、頭記の特許請求の範囲は、すべてのこのような修正形態および変更形態を、本発明の真の趣旨内に入るものとして、包含することを意図することを理解されるであろう。
【図面の簡単な説明】
【図1】 ハフマン木構築および関連するハフマン木の一例を示す図である。
【図2】 図1のハフマン木のための可能なハフマン・コードを示す表である。
【図3】 選択されたルールを適用して、一意的にハフマン・コードを判断するハフマン・コードの一例を示す表である。
【図4】 対応するデコーディング木を有するハフマン・エンコーディング・テーブルの一例を示す図である。
【図5】 ビット・シリアル・ハフマン・デコーディングのための読取専用メモリ(ROM)エントリを示す表である。
【図6】 異なる構成が適用されている、図3の表からの情報を使用する表である。
【図7】 本発明によるデータ構造の一実施形態を示す表である。[0001]
(Related application)
This patent application is related to co-filed US patent application 09 / 704,392, “A Method of Generating Huffman Code Length Information” (Attorney Docket No. 042390, P9804) by Acharya et al. Assigned to the assignee of the present invention and incorporated herein by reference.
[0002]
(background)
The present disclosure relates to Huffman decoding.
[0003]
As is well known, Huffman coding is a popular variable length statistical encoding scheme. As is also well known, the generation of Huffman codes relies on statistical probabilities for each individual symbol. For example, D.C. A. See “A Method for the Construction of Minimum Redundancy Codes” by Huffman (Proceedings of the IRE, Volume 40, No. 9, pages 1098 to 1101, 1952). Conventional table lookup-based encoding schemes are widely used for Huffman encoding because they are at least partially efficient and relatively easy to implement. However, table search based decoding is usually inefficient in terms of both software and hardware implementations. This is especially true when the number of entries in the table is quite high, as is typical for practical applications. Another approach used for Huffman decoding is the generation of a Huffman tree using a “tree traversal technique”. However, this decoding technique also has drawbacks. This particular technique is bit sequential and introduces extra “overhead” in both memory allocation and computation execution for the Huffman tree generation process and for the decoding process.
[0004]
The subject matter believed to be the invention will be described in detail and expressly claimed in the concluding portion of the specification. However, the present invention will be best understood by reference to the following detailed description taken in conjunction with the accompanying drawings, both in terms of methods of construction and operation, and their objects, features, and advantages.
[0005]
(Detailed explanation)
In the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, one of ordinary skill in the art appreciates that the invention may be practiced without these specific details. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to obscure the meaning of the present invention.
[0006]
As indicated above, the generation of the Huffman code for a set of symbols is based on the appearance probability of the source symbols. Usually, a binary tree construction called a Huffman tree is used in this situation. In the above document, D.C. A. Huffman describes the process in this way.
• List all possible symbols along with their probabilities.
Find the two symbols with the lowest probability.
Replace these with a single set containing both symbols whose probability is the sum of the individual probabilities.
Repeat until the list contains only one member.
This procedure creates a recursively structured set of sets, each of which contains exactly two members. It can therefore be represented as a binary tree (“Huffman tree”) with the symbol as “leaf”. The binary tree is then traversed from the root to that symbol to form a code for a particular symbol (“Huffman code”), with “0” on the left branch and “1” on the right branch. Record. However, one problem with this procedure is that the resulting Huffman tree is not unique. An example of such a code application is text compression such as GZIP. GZIP is a text compression utility developed under the GNU (Gnu's Not Unix) project with the goal of developing an operating system such as "free" or freely available UNIX (R) Yes, to replace the “compress” text compression utility on the UNIX operating system. For example, gzip-1.2.4. On the website “http: //www.gzip.orh/”. Gary, J., available as tar. L. And Adler, M .; See "GZIP documentation and sources".
[0007]
As is well known, the resulting Huffman code is a prefix code, where fewer symbols are assigned to more frequently occurring symbols to form a variable length Huffman code. As a result, since the symbol appearance frequency is used, the average code length is finally reduced.
[0008]
FIG. 1 is a diagram illustrating a simple example of a Huffman tree having three source symbols. By assigning different binary symbols to the edge of the tree, several binary codes can be used to represent the same Huffman tree.
[0009]
A possible set of Huffman codes for this Huffman tree is illustrated in FIG. FIG. 2 shows that the Huffman code is not unique, but from this example, it appears that the individual code length of each symbol is unique.
[0010]
Huffman code length information can be generated by constructing a corresponding Huffman tree. However, as indicated above, Huffman codes are not unique when generated in this manner. However, it can be seen that by imposing two constraints, it is possible to guarantee that the Huffman code created using the Huffman tree is unique.
These constraints are
1. All codes of a given bit length have consecutive values in lexicographic order, in the same order as the symbols they represent.
2. Shorter codes precede lexicographic order than longer codes.
[0011]
Based on these constraints, the Huffman code can be uniquely determined. FIG. 3 shows, for example, a 19-symbol Huffman code set using these constraints, where the code length is pre-determined using a Huffman tree. For the table of FIG. 3, the dash in the entry in the Huffman code table indicates that there is no symbol and no code in the current source alphabet, and its length information is zero.
[0012]
Although the scope of the present invention is not limited in this respect, the constraints described above have been used in various compression approaches and standards such as the utilities described above, GZIP, and the like. Typically in such applications, the Huffman tree information is passed with a set of code length information along with the compressed text data. Therefore, the code length information of the set is sufficient to reconstruct a unique Huffman tree. For example, the Huffman code table illustrated in FIG. 3 can be generated using the following process as implemented in GZIP.
[0013]
The code length is initially length [l].
1) Count the number of codes for each code length.
The number of codes of length N (N> = 1) is “count [N]”.
2) Find the numerical value of the minimum code for each code length.
Figure 0003974036
3) Assign numerical values to all codes using the consecutive values determined in 2.
[0014]
As indicated above, Huffman encoding can be achieved relatively easily using table lookup techniques. However, decoding of Huffman codes is usually more computationally intensive. This is because when code words are received in a compressed bit stream to be decoded, there are no defined boundaries between the code words. As described above, the Huffman code is a variable length code.
[0015]
One approach or technique, called a constant input rate decoder, serially processes the input bit stream one bit at a time. This method uses decoding or Huffman tree construction. Thus, starting from the root, the technique requires traversing the branches of the decoding tree until the end node is reached. At the end node, the code word is fully decoded so that the corresponding symbol can be created or output as desired. The process then starts again from the tree root. For example, B.I. Bhaskarin and K.K. See "Image and Video Compression Standards: Algorithms and Architectures" (Kluwer Academic Publishers, 1995) by Konstantinides.
[0016]
FIG. 4 is a diagram illustrating an example of a Huffman encoding table having a corresponding decoding tree. One problem associated with such decoders in hardware or software is how to efficiently map the decoding tree to memory. For example, FIG. 5 shows a table of read only memory (ROM) entries for bit serial Huffman decoding using the decoding tree of FIG. One approach to efficiently mapping memory is, for example, “MARVLE: a VLSI chip for data compression used based codes (IEEE Transforms on Very Large Scale)” by Mukherje et al. : 203-214, June 1993).
[0017]
Although not particularly efficient, another approach to decoding the Huffman code is to compare each entry in the Huffman table with the input bits in the input buffer. In this approach, N entries in the encoding table are compared in the worst case. Here, N is the total number of symbols. Moreover, the code length information for that entry is well known.
[0018]
In one embodiment of a method for decoding a series of binary digital signals using a data structure, the following approach may be used. The data structure can be searched based at least in part on the length of the binary digital signal of the subgroup being decoded. In this particular embodiment, a series of binary digital signals, such as Huffman to be encoded, are encoded, but the scope of the present invention is not limited to Huffman coding or decoding. In this particular embodiment, the scope of the present invention is not limited in this regard, but the first N binary digital signals in the sequence are selected as a subgroup before searching. Here, N is the length of the shortest code. Further, the length of the subgroup is increased by the next binary digital signal in the sequence if the code in the data structure having length N does not match that subgroup. Similarly, in this particular embodiment where this approach is used, all codes in a data structure having the same length as the subgroup are checked for a match. Note that, as described in more detail below, the data structure is structured based at least in part on the code length. Further, the data structure is configured such that codes having the same code length are sequentially stored.
[0019]
Although the scope of the present invention is not limited to this particular embodiment of the data structure, this particular embodiment is shown in FIG. 3 after rearranging several symbols to indicate redundancy in the table. May be related to the Huffman code table. This is illustrated, for example, in FIG. For example, a symbol having a Huffman code length of zero means that these symbols are not used. Similarly, based on the first constraint above, all codes of a given bit length have consecutive values in lexicographic order. Thus, by tracking the length information, the Huffman code of the first symbol in the lexicographic order having this length of Huffman code, and the number of Huffman codes up to the last symbol having the same length Huffman code provides information with little information redundancy.
[0020]
This particular embodiment of the data structure is shown in FIG. Note that FIG. 7 has the same information as FIG. 6, but has been rearranged for simplicity and ease of use. Accordingly, FIG. 7 uses less memory and a bit parallel decoding scheme can be applied, as described in more detail below.
[0021]
In the embodiment of the data structure illustrated in FIG. 7, as shown in the embodiment of FIG. 7, the decoding of the Huffman code is converted into information on the code length and range of the Huffman code for each code length. Based at least in part, it can be implemented in a bit parallel approach. This is illustrated and described below using pseudo-code implementation. Again, the scope of the present invention is not limited to the specific pseudo code provided.
[0022]
In this situation, the composite data structure is called NDS (NDC). This corresponds to the definition of a composite data structure for programming language C, but the scope of the invention is not limited to this programming language or a particular programming language. In this particular embodiment, again, the scope of the present invention is not limited in this respect, but in this particular embodiment, each entry in the NDS, as shown in FIG. It has four fields: a specified length, a start code, an end code, and a base index, respectively. Of course, it will be appreciated that many equal data structures are possible, such as using the start code and the difference between the start code and the end code rather than the start code and end code.
[0023]
However, in this particular embodiment, NDC is the number of entries with different code lengths. Each entry represents a group of consecutive Huffman codes having the same code length. The start code is the first Huffman code for this group and the end code is the last Huffman code for this group. As shown in FIG. 6, the base index is the index value of the first Huffman code in the Huffman table for the corresponding symbol. As indicated above, it should be noted that the scope of the present invention is not limited to this particular data structure. Obviously, many modifications to this particular data structure are possible and fall within the spirit and scope of what has been described above.
[0024]
A pseudocode display of one embodiment according to the present invention for decoding a series of binary digital signals using the data structure embodiment illustrated in FIG. 7 is shown below.
Figure 0003974036
[0025]
In this particular embodiment, the scope of the present invention is not limited in this respect, but the first N binary digital signals in the sequence are selected as a subgroup prior to searching the data structure. Here, N is the length of the shortest code. It then checks whether all codes with that length match. If no match appears, the length of the subgroup is increased by the next binary digital signal in the sequence, and then a check is made to see if the codes with the increased length match. Continue this process until a match appears. As noted above, the data structure is configured based at least in part on the code length, and the data structure is configured to sequentially store codes having the same code length in lexicographic order. This allows efficient operation as desired.
[0026]
Note that in an alternative embodiment, if the search is started with the longest code and no match appears, the length of the subgroup can be reduced. However, it is usually more efficient to start the search from the shortest code in this situation, since usually shorter Huffman codes have a higher probability of appearance.
[0027]
This particular embodiment of a method for decoding a series of binary digital signals has several advantages in terms of memory utilization, computational complexity and implementation. As suggested above, the number of entries for the data structure depends on the maximum code length for the Huffman code, not the number of symbols. This therefore reduces the memory. For example, for an application that uses a fixed limit code length such as GZIP, a typical Huffman tree has 285 symbols and the code length is limited to 15 bits. In contrast, the number of entries used for this embodiment depends on the data, but has at most 15 entries, resulting in a reduction in 19x memory utilization in this example.
[0028]
Similarly, computational complexity is reduced by using a bit parallel search process rather than a bit serial search process. Here, this embodiment is based at least in part on the code length information in the data structure. Checking the range of start and end codes for a group with that code length improves the search procedure compared to existing approaches. From the experimental results of this embodiment using 19 symbols and a maximum code length of 7 bits, the complexity is reduced by a factor of 5.5 compared to decoding using a Huffman code table search. Similarly, in accordance with the present invention, both in hardware and software, because there is no binary tree construction as occurs when a Huffman tree is constructed, and there is little or no dynamic memory allocation. Decoding is relatively easy to implement.
[0029]
While only specific embodiments have been described, it will be appreciated that the scope of the invention is not limited to any particular embodiment or implementation. For example, one embodiment may be made in hardware and another embodiment may be made in software. Similarly, an embodiment may be, for example, firmware or a combination of hardware, software, or firmware. Similarly, although the scope of the invention is not limited in this respect, one embodiment may comprise a product such as a storage medium. For example, a storage medium such as a CD-ROM or disk may store instructions on it, and when executed by a system such as a computer system, platform, or image creation system, the result is, for example, as described above. One embodiment of the method according to the present invention can be performed, such as a method of performing Huffman decoding as described above. Similarly, embodiments of a method for creating a data structure can be performed in accordance with the present invention.
[0030]
While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes and equivalents will occur to those skilled in the art. Accordingly, it will be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.
[Brief description of the drawings]
FIG. 1 is a diagram illustrating an example of Huffman tree construction and related Huffman trees.
FIG. 2 is a table illustrating possible Huffman codes for the Huffman tree of FIG.
FIG. 3 is a table showing an example of a Huffman code for uniquely determining a Huffman code by applying a selected rule.
FIG. 4 is a diagram illustrating an example of a Huffman encoding table having a corresponding decoding tree.
FIG. 5 is a table showing read only memory (ROM) entries for bit serial Huffman decoding.
FIG. 6 is a table using information from the table of FIG. 3, to which different configurations have been applied.
FIG. 7 is a table showing an embodiment of a data structure according to the present invention.

Claims (2)

コード長、開始コードと終了コードとを表す値及びベース・インデックスをそれぞれ保持するフィールドを有したテーブルを備えたデータ構造を使用して、エンコードされている第1のバイナリ・デジタル信号をデコードする方法であって、
(a)前記テーブルの最短のコード長に関する、開始コードと終了コードとを表す値から得られる開始コードから終了コードまでの複数の第2のバイナリ・デジタル信号のいずれかと前記第1のバイナリ・デジタル信号とが一致するか否か判定し、
(b)前記第1のバイナリ・デジタル信号と一致する第2のバイナリ・デジタル信号が存在する場合には、その一致した第2のバイナリ・デジタル信号とそれに対応するベース・インデックスとから決定されるメモリ場所に格納されているデータを前記第1のバイナリ・デジタル信号の復号値として取り出して出力し、
(c)前記第2のバイナリ・デジタル信号のいずれも前記第1のバイナリ・デジタル信号と一致しない場合には、次に短いコード長に関してステップ(a)〜(c)を繰り返し、この繰り返しのステップでマッチが見つかった場合に前記第1のバイナリ・デジタル信号の復号値を出力する
方法。
A method for decoding a first encoded binary digital signal using a data structure comprising a table having fields each holding a code length, a value representing a start code and an end code, and a base index Because
(A) One of a plurality of second binary digital signals from a start code to an end code obtained from a value representing a start code and an end code regarding the shortest code length of the table, and the first binary digital Determine if the signal matches,
(B) If there is a second binary digital signal that matches the first binary digital signal, it is determined from the matching second binary digital signal and the corresponding base index. Retrieve and store the data stored in the memory location as a decoded value of the first binary digital signal;
(C) If none of the second binary digital signals match the first binary digital signal, repeat steps (a)-(c) for the next short code length and repeat this step A method of outputting a decoded value of the first binary digital signal when a match is found in (1) .
コード長、開始コードと終了コードとを表す値及びベース・インデックスをそれぞれ保持するフィールドを有したテーブルを備えたデータ構造を使用して、エンコードされている第1のバイナリ・デジタル信号をデコードする命令を格納した記憶媒体であって、
その命令が実行されたときにコンピュータに、
(a)前記テーブルの最短のコード長に関する、開始コードと終了コードとを表す値から得られる開始コードから終了コードまでの複数の第2のバイナリ・デジタル信号のいずれかと前記第1のバイナリ・デジタル信号とが一致するか否か判定させ、
(b)前記第1のバイナリ・デジタル信号と一致する第2のバイナリ・デジタル信号が存在する場合には、その一致した第2のバイナリ・デジタル信号とそれに対応するベース・インデックスとから決定されるメモリ場所に格納されているデータを前記第1のバイナリ・デジタル信号の復号値として取り出して出力させ、
(c)前記第2のバイナリ・デジタル信号のいずれも前記第1のバイナリ・デジタル信号と一致しない場合には、次に短いコード長に関してプロセス(a)〜(c)を繰り返させ、この繰り返しのプロセスでマッチが見つかった場合に前記第1のバイナリ・デジタル信号の復号値を出力させる
ための命令を格納した記憶媒体
Instructions for decoding a first binary digital signal that is encoded using a data structure with a table having fields each holding a code length, a value representing a start code and an end code, and a base index A storage medium storing
When the instruction is executed,
(A) One of a plurality of second binary digital signals from a start code to an end code obtained from a value representing a start code and an end code regarding the shortest code length of the table, and the first binary digital Let us determine if the signal matches,
(B) If there is a second binary digital signal that matches the first binary digital signal, it is determined from the matching second binary digital signal and the corresponding base index. Extracting and outputting data stored in a memory location as a decoded value of the first binary digital signal;
(C) If none of the second binary digital signals match the first binary digital signal, the process (a)-(c) is repeated for the next short code length, Output a decoded value of the first binary digital signal when a match is found in the process
A storage medium storing instructions for use .
JP2002540317A 2000-10-31 2001-10-09 How to perform Huffman decoding Expired - Fee Related JP3974036B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/704,380 US6563439B1 (en) 2000-10-31 2000-10-31 Method of performing Huffman decoding
PCT/US2001/031532 WO2002037687A2 (en) 2000-10-31 2001-10-09 Method of performing huffman decoding

Publications (3)

Publication Number Publication Date
JP2004515096A JP2004515096A (en) 2004-05-20
JP2004515096A5 JP2004515096A5 (en) 2005-12-22
JP3974036B2 true JP3974036B2 (en) 2007-09-12

Family

ID=24829232

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002540317A Expired - Fee Related JP3974036B2 (en) 2000-10-31 2001-10-09 How to perform Huffman decoding

Country Status (9)

Country Link
US (3) US6563439B1 (en)
JP (1) JP3974036B2 (en)
KR (1) KR100527891B1 (en)
CN (1) CN100417028C (en)
AU (1) AU2002211558A1 (en)
DE (1) DE10196890B4 (en)
GB (1) GB2385759B (en)
TW (1) TW538599B (en)
WO (1) WO2002037687A2 (en)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563439B1 (en) * 2000-10-31 2003-05-13 Intel Corporation Method of performing Huffman decoding
US6636167B1 (en) * 2000-10-31 2003-10-21 Intel Corporation Method of generating Huffman code length information
US7274671B2 (en) * 2001-02-09 2007-09-25 Boly Media Communications, Inc. Bitwise adaptive encoding using prefix prediction
US6677868B2 (en) * 2001-03-16 2004-01-13 Sharp Laboratories Of America, Inc. Entropy coding with adaptive syntax to replace high probability symbols with lower probabilities symbols
US7129863B1 (en) * 2001-06-01 2006-10-31 California Institute Of Technology Interval modulation coding
US6778107B2 (en) * 2001-08-30 2004-08-17 Intel Corporation Method and apparatus for huffman decoding technique
US6573847B1 (en) 2002-01-08 2003-06-03 Intel Corporation Multi-table mapping for huffman code decoding
US20050111556A1 (en) * 2003-11-26 2005-05-26 Endress William B. System and method for real-time decompression and display of Huffman compressed video data
US7917480B2 (en) 2004-08-13 2011-03-29 Google Inc. Document compression system and method for use with tokenspace repository
US7068192B1 (en) * 2004-08-13 2006-06-27 Google Inc. System and method for encoding and decoding variable-length data
US8407239B2 (en) 2004-08-13 2013-03-26 Google Inc. Multi-stage query processing system and method for use with tokenspace repository
WO2007011116A1 (en) * 2005-07-20 2007-01-25 Humax Co., Ltd. Encoder and decoder
JP4958466B2 (en) * 2006-04-05 2012-06-20 グローバル・オーエルイーディー・テクノロジー・リミテッド・ライアビリティ・カンパニー Display device
TWI330473B (en) * 2006-11-24 2010-09-11 Primax Electronics Ltd Huffman decoding method
CN100581258C (en) * 2006-12-01 2010-01-13 致伸科技股份有限公司 Huffman decoding method and Huffman decoding device
CN101282121B (en) * 2007-04-05 2010-10-06 安凯(广州)微电子技术有限公司 A Method of Huffman Decoding Based on Conditional Probability
US20090006399A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Compression method for relational tables based on combined column and row coding
US8902873B2 (en) 2009-10-08 2014-12-02 Qualcomm Incorporated Efficient signaling for closed-loop transmit diversity
CN102237878B (en) * 2010-04-20 2015-09-02 慧荣科技股份有限公司 A Huffman decoding method
US8442988B2 (en) 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
KR101725223B1 (en) * 2011-03-25 2017-04-11 삼성전자 주식회사 Data compressing method of storage device
US8593308B1 (en) * 2012-05-31 2013-11-26 International Business Machines Corporation Method of accelerating dynamic Huffman decompaction within the inflate algorithm
KR101853148B1 (en) * 2013-05-20 2018-04-27 엘에스산전 주식회사 Method for storing data
CN105988777B (en) * 2015-01-27 2019-03-15 深圳市腾讯计算机系统有限公司 A kind of rule matching method and device
US9564917B1 (en) * 2015-12-18 2017-02-07 Intel Corporation Instruction and logic for accelerated compressed data decoding
CN107483059B (en) * 2017-07-31 2020-06-12 广东工业大学 Multi-channel data coding and decoding method and device based on dynamic Huffman tree

Family Cites Families (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4899149A (en) * 1986-02-28 1990-02-06 Gary Kahan Method of and apparatus for decoding Huffman or variable-length coees
FR2612025B1 (en) * 1987-03-06 1989-05-26 Labo Electronique Physique DUOBINARY CODED SIGNAL DECODING DEVICE
US4813056A (en) * 1987-12-08 1989-03-14 General Electric Company Modified statistical coding of digital signals
DE3943879B4 (en) * 1989-04-17 2008-07-17 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Digital coding method
DE69329092T2 (en) * 1992-10-13 2001-03-22 Nec Corp., Tokio/Tokyo Huffman code decoding circuit
US5778371A (en) * 1994-09-13 1998-07-07 Kabushiki Kaisha Toshiba Code string processing system and method using intervals
US5821886A (en) * 1996-10-18 1998-10-13 Samsung Electronics Company, Ltd. Variable length code detection in a signal processing system
US5821887A (en) * 1996-11-12 1998-10-13 Intel Corporation Method and apparatus for decoding variable length codes
US5875122A (en) 1996-12-17 1999-02-23 Intel Corporation Integrated systolic architecture for decomposition and reconstruction of signals using wavelet transforms
FI102426B1 (en) * 1997-03-14 1998-11-30 Nokia Telecommunications Oy Procedure for memory formation
US6009201A (en) 1997-06-30 1999-12-28 Intel Corporation Efficient table-lookup based visually-lossless image compression scheme
US5973627A (en) * 1997-08-28 1999-10-26 Philips Electronics North America Corporation Variable length decoder with adaptive acceleration optimized by sub-grouping and cross-grouping the symbols having the highest probability of occurrence
US6009206A (en) 1997-09-30 1999-12-28 Intel Corporation Companding algorithm to transform an image to a lower bit resolution
US6160918A (en) 1997-10-02 2000-12-12 At&T Corp. Method and apparatus for fast image compression
US6285796B1 (en) 1997-11-03 2001-09-04 Intel Corporation Pseudo-fixed length image compression scheme
US6130960A (en) 1997-11-03 2000-10-10 Intel Corporation Block-matching algorithm for color interpolation
US6151069A (en) * 1997-11-03 2000-11-21 Intel Corporation Dual mode digital camera for video and still operation
US6091851A (en) 1997-11-03 2000-07-18 Intel Corporation Efficient algorithm for color recovery from 8-bit to 24-bit color pixels
US6351555B1 (en) 1997-11-26 2002-02-26 Intel Corporation Efficient companding algorithm suitable for color imaging
US6229578B1 (en) 1997-12-08 2001-05-08 Intel Corporation Edge-detection based noise removal algorithm
US6094508A (en) 1997-12-08 2000-07-25 Intel Corporation Perceptual thresholding for gradient-based local edge detection
US6348929B1 (en) 1998-01-16 2002-02-19 Intel Corporation Scaling algorithm and architecture for integer scaling in video
US6215916B1 (en) 1998-02-04 2001-04-10 Intel Corporation Efficient algorithm and architecture for image scaling using discrete wavelet transforms
US6075470A (en) 1998-02-26 2000-06-13 Research In Motion Limited Block-wise adaptive statistical data compressor
US6392699B1 (en) * 1998-03-04 2002-05-21 Intel Corporation Integrated color interpolation and color space conversion algorithm from 8-bit bayer pattern RGB color space to 12-bit YCrCb color space
US6211521B1 (en) 1998-03-13 2001-04-03 Intel Corporation Infrared pixel sensor and infrared signal correction
US6356276B1 (en) 1998-03-18 2002-03-12 Intel Corporation Median computation-based integrated color interpolation and color space conversion methodology from 8-bit bayer pattern RGB color space to 12-bit YCrCb color space
US6366694B1 (en) 1998-03-26 2002-04-02 Intel Corporation Integrated color interpolation and color space conversion algorithm from 8-bit Bayer pattern RGB color space to 24-bit CIE XYZ color space
US6366692B1 (en) 1998-03-30 2002-04-02 Intel Corporation Median computation-based integrated color interpolation and color space conversion methodology from 8-bit bayer pattern RGB color space to 24-bit CIE XYZ color space
US6154493A (en) 1998-05-21 2000-11-28 Intel Corporation Compression of color images based on a 2-dimensional discrete wavelet transform yielding a perceptually lossless image
US6040790A (en) * 1998-05-29 2000-03-21 Xerox Corporation Method of building an adaptive huffman codeword tree
US6124811A (en) 1998-07-02 2000-09-26 Intel Corporation Real time algorithms and architectures for coding images compressed by DWT-based techniques
US6233358B1 (en) 1998-07-13 2001-05-15 Intel Corporation Image compression using directional predictive coding of the wavelet coefficients
US6236765B1 (en) 1998-08-05 2001-05-22 Intel Corporation DWT-based up-sampling algorithm suitable for image display in an LCD panel
US5995210A (en) 1998-08-06 1999-11-30 Intel Corporation Integrated architecture for computing a forward and inverse discrete wavelet transforms
US6178269B1 (en) 1998-08-06 2001-01-23 Intel Corporation Architecture for computing a two-dimensional discrete wavelet transform
US6047303A (en) 1998-08-06 2000-04-04 Intel Corporation Systolic architecture for computing an inverse discrete wavelet transforms
US6166664A (en) 1998-08-26 2000-12-26 Intel Corporation Efficient data structure for entropy encoding used in a DWT-based high performance image compression
US6301392B1 (en) 1998-09-03 2001-10-09 Intel Corporation Efficient methodology to select the quantization threshold parameters in a DWT-based image compression scheme in order to score a predefined minimum number of images into a fixed size secondary storage
US6731807B1 (en) * 1998-09-11 2004-05-04 Intel Corporation Method of compressing and/or decompressing a data set using significance mapping
US6195026B1 (en) 1998-09-14 2001-02-27 Intel Corporation MMX optimized data packing methodology for zero run length and variable length entropy encoding
US6108453A (en) 1998-09-16 2000-08-22 Intel Corporation General image enhancement framework
US6236433B1 (en) 1998-09-29 2001-05-22 Intel Corporation Scaling algorithm for efficient color representation/recovery in video
US6625318B1 (en) * 1998-11-13 2003-09-23 Yap-Peng Tan Robust sequential approach in detecting defective pixels within an image sensor
US6759646B1 (en) * 1998-11-24 2004-07-06 Intel Corporation Color interpolation for a four color mosaic pattern
US6151415A (en) 1998-12-14 2000-11-21 Intel Corporation Auto-focusing algorithm using discrete wavelet transform
US6215908B1 (en) 1999-02-24 2001-04-10 Intel Corporation Symmetric filtering based VLSI architecture for image compression
US6381357B1 (en) 1999-02-26 2002-04-30 Intel Corporation Hi-speed deterministic approach in detecting defective pixels within an image sensor
US6275206B1 (en) 1999-03-17 2001-08-14 Intel Corporation Block mapping based up-sampling method and apparatus for converting color images
US6377280B1 (en) 1999-04-14 2002-04-23 Intel Corporation Edge enhanced image up-sampling algorithm using discrete wavelet transform
US6574374B1 (en) * 1999-04-14 2003-06-03 Intel Corporation Enhancing image compression performance by morphological processing
US6563948B2 (en) * 1999-04-29 2003-05-13 Intel Corporation Using an electronic camera to build a file containing text
US6640017B1 (en) * 1999-05-26 2003-10-28 Intel Corporation Method and apparatus for adaptively sharpening an image
US6697534B1 (en) * 1999-06-09 2004-02-24 Intel Corporation Method and apparatus for adaptively sharpening local image content of an image
US6292114B1 (en) 1999-06-10 2001-09-18 Intel Corporation Efficient memory mapping of a huffman coded list suitable for bit-serial decoding
US6628716B1 (en) * 1999-06-29 2003-09-30 Intel Corporation Hardware efficient wavelet-based video compression scheme
US6600833B1 (en) * 1999-07-23 2003-07-29 Intel Corporation Methodology for color correction with noise regulation
US6373481B1 (en) 1999-08-25 2002-04-16 Intel Corporation Method and apparatus for automatic focusing in an image capture system using symmetric FIR filters
US7065253B2 (en) * 1999-09-03 2006-06-20 Intel Corporation Wavelet zerotree coding of ordered bits
US6625308B1 (en) * 1999-09-10 2003-09-23 Intel Corporation Fuzzy distinction based thresholding technique for image segmentation
US6658399B1 (en) 1999-09-10 2003-12-02 Intel Corporation Fuzzy based thresholding technique for image segmentation
US6633610B2 (en) * 1999-09-27 2003-10-14 Intel Corporation Video motion estimation
US6834123B2 (en) 2001-05-29 2004-12-21 Intel Corporation Method and apparatus for coding of wavelet transformed coefficients
US6798901B1 (en) * 1999-10-01 2004-09-28 Intel Corporation Method of compressing a color image
US7106910B2 (en) * 1999-10-01 2006-09-12 Intel Corporation Color video coding scheme
US6956903B2 (en) 2001-05-29 2005-10-18 Intel Corporation Method and apparatus for three-dimensional wavelet transform
US6731706B1 (en) * 1999-10-29 2004-05-04 Intel Corporation Square root raised cosine symmetric filter for mobile telecommunications
US6813384B1 (en) 1999-11-10 2004-11-02 Intel Corporation Indexing wavelet compressed video for efficient data handling
US6628827B1 (en) * 1999-12-14 2003-09-30 Intel Corporation Method of upscaling a color image
US6650688B1 (en) 1999-12-20 2003-11-18 Intel Corporation Chip rate selectable square root raised cosine filter for mobile telecommunications
US6757430B2 (en) * 1999-12-28 2004-06-29 Intel Corporation Image processing architecture
US6748118B1 (en) * 2000-02-18 2004-06-08 Intel Corporation Method of quantizing signal samples of an image during same
US6654501B1 (en) 2000-03-06 2003-11-25 Intel Corporation Method of integrating a watermark into an image
US6449380B1 (en) * 2000-03-06 2002-09-10 Intel Corporation Method of integrating a watermark into a compressed image
US6738520B1 (en) * 2000-06-19 2004-05-18 Intel Corporation Method of compressing an image
US6775413B1 (en) * 2000-09-18 2004-08-10 Intel Corporation Techniques to implement one-dimensional compression
US6636167B1 (en) 2000-10-31 2003-10-21 Intel Corporation Method of generating Huffman code length information
US6563439B1 (en) 2000-10-31 2003-05-13 Intel Corporation Method of performing Huffman decoding
US6690306B1 (en) * 2000-11-03 2004-02-10 Intel Corporation Method of generating a length-constrained huffman code
US6678708B1 (en) * 2000-11-15 2004-01-13 Intel Corporation Method and apparatus for two-dimensional separable symmetric filtering
US6751640B1 (en) * 2000-11-20 2004-06-15 Intel Corporation Method and apparatus for multiply-accumulate two-dimensional separable symmetric filtering
US6707928B2 (en) * 2000-11-29 2004-03-16 Intel Corporation Method for block-based digital image watermarking
US20020063899A1 (en) * 2000-11-29 2002-05-30 Tinku Acharya Imaging device connected to processor-based system using high-bandwidth bus
US6917381B2 (en) * 2000-11-30 2005-07-12 Intel Corporation Color filter array and color interpolation algorithm
US6662200B2 (en) 2001-01-03 2003-12-09 Intel Corporation Multiplierless pyramid filter
US20020122482A1 (en) * 2001-01-03 2002-09-05 Kim Hyun Mun Method of performing video encoding rate control using bit budget
US20020118746A1 (en) * 2001-01-03 2002-08-29 Kim Hyun Mun Method of performing video encoding rate control using motion estimation
US6681060B2 (en) * 2001-03-23 2004-01-20 Intel Corporation Image retrieval using distance measure
US20020174154A1 (en) 2001-03-26 2002-11-21 Tinku Acharya Two-dimensional pyramid filter architecture
US6766286B2 (en) * 2001-03-28 2004-07-20 Intel Corporation Pyramid filter
US20020184276A1 (en) 2001-03-30 2002-12-05 Tinku Acharya Two-dimensional pyramid filter architecture
US6889237B2 (en) * 2001-03-30 2005-05-03 Intel Corporation Two-dimensional pyramid filter architecture
US6725247B2 (en) * 2001-04-30 2004-04-20 Intel Corporation Two-dimensional pyramid filter architecture
US20030021486A1 (en) * 2001-07-27 2003-01-30 Tinku Acharya Method and apparatus for image scaling
US6653953B2 (en) 2001-08-22 2003-11-25 Intel Corporation Variable length coding packing architecture
US6996180B2 (en) * 2001-09-05 2006-02-07 Intel Corporation Fast half-pixel motion estimation using steepest descent
US6891889B2 (en) * 2001-09-05 2005-05-10 Intel Corporation Signal to noise ratio optimization for video compression bit-rate control
US7136515B2 (en) * 2001-09-13 2006-11-14 Intel Corporation Method and apparatus for providing a binary fingerprint image
US20030063782A1 (en) * 2001-09-13 2003-04-03 Tinku Acharya Method and apparatus to reduce false minutiae in a binary fingerprint image
US6795592B2 (en) * 2001-09-13 2004-09-21 Intel Corporation Architecture for processing fingerprint images
US6944640B2 (en) * 2001-12-28 2005-09-13 Intel Corporation Progressive two-dimensional (2D) pyramid filter
US20030123539A1 (en) * 2001-12-28 2003-07-03 Hyung-Suk Kim Method and apparatus for video bit-rate control
US20030194008A1 (en) * 2002-04-11 2003-10-16 Tinku Acharya Computationally fast and efficient DV to DVD transcoding
US20030198387A1 (en) * 2002-04-22 2003-10-23 Tinku Acharya Method and apparatus for image retrieval
US7133555B2 (en) * 2002-08-02 2006-11-07 Intel Corporation Image color matching scheme
US7266151B2 (en) * 2002-09-04 2007-09-04 Intel Corporation Method and system for performing motion estimation using logarithmic search
US20040042551A1 (en) * 2002-09-04 2004-03-04 Tinku Acharya Motion estimation
US20040057626A1 (en) * 2002-09-23 2004-03-25 Tinku Acharya Motion estimation using a context adaptive search
US7075987B2 (en) * 2002-09-23 2006-07-11 Intel Corporation Adaptive video bit-rate control

Also Published As

Publication number Publication date
TW538599B (en) 2003-06-21
WO2002037687A2 (en) 2002-05-10
US6646577B2 (en) 2003-11-11
GB2385759A (en) 2003-08-27
US6982661B2 (en) 2006-01-03
DE10196890B4 (en) 2008-02-07
US20030085821A1 (en) 2003-05-08
CN1547805A (en) 2004-11-17
JP2004515096A (en) 2004-05-20
US6563439B1 (en) 2003-05-13
KR20030040567A (en) 2003-05-22
AU2002211558A1 (en) 2002-05-15
CN100417028C (en) 2008-09-03
WO2002037687A3 (en) 2002-08-29
GB2385759B (en) 2004-11-03
US20030174077A1 (en) 2003-09-18
GB0311329D0 (en) 2003-06-25
DE10196890T1 (en) 2003-12-18
KR100527891B1 (en) 2005-11-15

Similar Documents

Publication Publication Date Title
JP3974036B2 (en) How to perform Huffman decoding
US6876774B2 (en) Method and apparatus for compressing data string
JP4012065B2 (en) How to generate Huffman code length information
JP4501288B2 (en) Huffman code decoding method, decoding apparatus, Huffman code decoding table, and method for creating the same
JPH0682370B2 (en) Character processor
US6778107B2 (en) Method and apparatus for huffman decoding technique
JPH07107303A (en) Decoding method for huffman code
JP2025010382A (en) A device that processes received data
JP3565147B2 (en) Decryption device
US6765513B2 (en) Decoding bit streams compressed with compression techniques employing variable length codes
GB2402584A (en) Method of performing Huffman decoding
JP3384844B2 (en) Data compression method and apparatus and data decompression method and apparatus
WO2025177531A1 (en) Decoding device, decoding method, and program
WO2025169470A1 (en) Decoding device, decoding method, and program
WO2025158631A1 (en) Encoding device, decoding device, encoding method, decoding method, data structure, and program
JP3332630B2 (en) Decoding device and decoding table generation method
JP3236747B2 (en) Data decompression method
JP2005175926A (en) Decoding apparatus and method
WO2025173103A1 (en) Encoding device, encoding method, and encoding program
WO2025163695A1 (en) Encoding device, decoding device, encoding method, decoding method, data structure, and program
WO2025169479A1 (en) Encoding device, decoding device, encoding method, decoding method, and program
JPH06274311A (en) Data compression device and data decompression device
JPH05341953A (en) Data compression method and apparatus
KR20050037307A (en) Huffman decoding method based on n-tree searching and apparatus thereof

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040727

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040727

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040727

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060605

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060613

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20060913

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20060921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061213

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070613

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100622

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110622

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees