JP3974036B2 - How to perform Huffman decoding - Google Patents
How to perform Huffman decoding Download PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion 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/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion 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)それぞれのコード長のための最小コードの数値を見つける。
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に例示したデータ構造の実施形態を用いて、一連のバイナリ・デジタル信号をデコードするための本発明による一実施形態の擬似コード表示を以下に示す。
【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.
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.
[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)
(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) .
その命令が実行されたときにコンピュータに、
(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 .
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)
| 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)
| 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 |
-
2000
- 2000-10-31 US US09/704,380 patent/US6563439B1/en not_active Expired - Fee Related
-
2001
- 2001-10-09 AU AU2002211558A patent/AU2002211558A1/en not_active Abandoned
- 2001-10-09 GB GB0311329A patent/GB2385759B/en not_active Expired - Fee Related
- 2001-10-09 KR KR10-2003-7006044A patent/KR100527891B1/en not_active Expired - Fee Related
- 2001-10-09 WO PCT/US2001/031532 patent/WO2002037687A2/en not_active Ceased
- 2001-10-09 DE DE10196890T patent/DE10196890B4/en not_active Expired - Fee Related
- 2001-10-09 CN CNB01818216XA patent/CN100417028C/en not_active Expired - Fee Related
- 2001-10-09 JP JP2002540317A patent/JP3974036B2/en not_active Expired - Fee Related
- 2001-10-29 TW TW090126738A patent/TW538599B/en not_active IP Right Cessation
-
2002
- 2002-11-12 US US10/293,187 patent/US6646577B2/en not_active Expired - Fee Related
-
2003
- 2003-03-18 US US10/391,892 patent/US6982661B2/en not_active Expired - Fee Related
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 |