JP3714935B2 - 改善されたハフマンデコーディング方法及び装置 - Google Patents

改善されたハフマンデコーディング方法及び装置 Download PDF

Info

Publication number
JP3714935B2
JP3714935B2 JP2003038864A JP2003038864A JP3714935B2 JP 3714935 B2 JP3714935 B2 JP 3714935B2 JP 2003038864 A JP2003038864 A JP 2003038864A JP 2003038864 A JP2003038864 A JP 2003038864A JP 3714935 B2 JP3714935 B2 JP 3714935B2
Authority
JP
Japan
Prior art keywords
entry
node
value
index
accessed
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
JP2003038864A
Other languages
English (en)
Other versions
JP2003273748A (ja
Inventor
興▲ヨプ▼ 張
泰奎 長
鐘勲 鄭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2003273748A publication Critical patent/JP2003273748A/ja
Application granted granted Critical
Publication of JP3714935B2 publication Critical patent/JP3714935B2/ja
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)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は改善されたハフマンデコーディング方法及び装置に係り、特に、ハフマンコーディングの基本原理である2進木から生成された一次元ルックアップテーブルの効率良い構成と、プロセシング効率を高めるための数値演算技法とを用いてハフマンデコーディングを行うハフマンデコーディング方法及び装置に関する。
【0002】
【従来の技術】
ハフマンコードが有する固有な特徴により、従来の2進木を用いたハフマンデコーディング技法は、最大検索時間及び平均検索時間の偏差の側面で極めて効率良い方法として見なされてきている。しかし、既存の2進木に基づく検索方法によれば、検索に必要な資料構造を生成するために、連結リストに基づく2進木を構成する複雑な過程を行わなければならず、且つ、2進木検索においてノード間の移動のために行う比較及び分岐構文はプロセッサーの動作中にパイプラインの流れを妨げてハフマンデコーダの処理速度を落とす主な原因となっている。
【0003】
以下、添付した図面に基づき、従来のハフマンデコーディング装置の構成及び動作と、その装置において行われる従来のハフマンデコーディング方法について説明する。
【0004】
図1は、従来のハフマンデコーディング装置の概略的なブロック図であって、入力バッファ110、サーチエンジン120、ハフマンルックアップテーブル130及び出力バッファ140を備えてなる。
【0005】
図2は、図1に示された装置において行われる既存の条件分岐構文に基づくハフマンデコーダのデコーディング方法を説明するためのフローチャートである。
【0006】
図3は、従来の方式による2進ハフマン木の構造を示し、ノード310、322、330、332、342、342、344、346、356は、次のノードに分岐される中間ノードであり、ノード320、340、346、350、352、354、360、362は、実際の戻し値を有する端末ノードである。
【0007】
表1は、図3に示された2進ハフマン木のコードブックを示している。
【表1】
Figure 0003714935
【0008】
図4A及び図4Bは、従来の2進木ハフマンデコーディング方法によるハフマンテーブルのメモリ構造を示している。図4A及び図4Bに示されたように、従来のハフマンテーブルでは、3つのメモリ空間を用いる。図4Aに示されたように、中間ノードの場合には割り当てられた3つのメモリ空間のうち中間のメモリ空間にはヌル値が貯蔵され、左側のメモリ空間には子ノードのうち左側ノードのアドレスが貯蔵され、右側のメモリ空間には子ノードのうち左側ノードのアドレスが貯蔵される。また、図4Bに示されたように、端末ノードの場合には、割り当てられた3つのメモリ空間のうち中間のメモリ空間には該当ノードの内部値、すなわち実際の戻し値が貯蔵され、左側及び右側のメモリ空間にはヌル値が貯蔵される。
【0009】
以下では、図3、図4及び図5と図2のフローチャートとを結び付けて従来の技術による2進木構造のハフマンテーブルを用いたハフマンデコーダのデコーディング方法について説明する。
【0010】
ステップ210はデコーディングの開始段階であって、ハフマンデコーダに入力される符号化されたビットストリームの符号に基づき図3に示されたハフマン木の根ノード、すなわち、中間ノード310に該当するエントリにアクセスする。
【0011】
ステップ220は比較及び分岐構文であって、ステップ210においてアクセスされたエントリに該当するノードが中間ノードであるか、それとも端末ノードであるかを判断する。
【0012】
ステップ230においては、ステップ220においてアクセスされたエントリに該当するノードが端末ノードであると判断された場合、端末ノードに割り当てられた3つのメモリ空間のうち中間のメモリ空間に貯蔵された値を実際に戻すデコーディングされたコードワード値として出力する。
【0013】
ステップ240においては、ステップ220においてアクセスされたハフマン木のアドレスに該当するノードが中間ノードであると判断された場合、ビットストリームから入力された1ビットの値が’0’である場合にはステップ250へ進み、’1’である場合にはステップ260へ進む。
【0014】
ステップ250においては、現在ノードに割り当てられた3つのメモリ空間のうち左側のメモリ空間に貯蔵されたアドレスに該当するエントリにアクセスし、ステップ220へ進む。
【0015】
ステップ260においては、現在ノードに割り当てられた3つのメモリ空間のうち右側のメモリ空間に貯蔵されたアドレスにアクセスし、ステップ220へ進む。
【0016】
以下、図2及び図5に基づき、前記従来のハフマンデコーディング方法により符号化された入力ビットストリーム’1110100....’をデコーディングする過程について説明する。ステップ210はデコーディングの開始段階であって、ハフマン2進木のルートアドレスに該当する図5に示されたハフマンテーブルのアドレス’1’に該当するエントリにアクセスする。
【0017】
ステップ220において、アクセスされたエントリのノードが中間ノードであるか、それとも端末ノードであるかを判断する。図5を参照すれば、アドレス’1’に該当するノードに該当する3つのメモリ空間のうち中間のメモリ空間に貯蔵された値は’ヌル’であり、左側のメモリ空間には’4’が貯蔵されており、右側のメモリ空間には’7’が貯蔵されている。従って、ステップ220においては、アドレス’1’に該当するノードが図4Aに示された中間ノードであると判断し、ステップ240へ進む。
【0018】
ステップ240においては、入力されたビットストリーム’1110100’の符号化された最初のコードワードの最初のビット’1’を入力され、入力されるビットnew_digit()が’1’であるため、ステップ260へ進む。
【0019】
ステップ260においては、現在アドレス’1’の右側アドレス’2’、すなわち、現在ノードの右側のメモリ空間に貯蔵されたアドレス’7’に該当するエントリにアクセスし、ステップ220へ進む。
【0020】
ステップ220においては、ハフマンテーブルのアドレス’7’に該当するノードが中間ノードであるか、それとも端末ノードであるかを判断する。図5を参照すれば、アドレス’7’に該当するノードに該当する3つのメモリ空間のうち中間のメモリ空間に貯蔵された値は’ヌル’であり、左側のメモリ空間には’10’が貯蔵されており、右側のメモリ空間には’13’が貯蔵されている。従って、ステップ220においてはアドレス’7’に該当するノードが図4Aに示された中間ノードであると判断し、ステップ240へ進む。
【0021】
ステップ240においては、入力されたビットストリーム’1110100’の最初のコードワードの2番目のビット’1’を入力され、入力されるビットnew_digit()が’1’であるため、ステップ260へ進む。
【0022】
ステップ260においては、現在アドレス’7’の右側アドレス’8’、すなわち、現在ノードの右側のメモリ空間に貯蔵されたアドレス’13’に該当するエントリにアクセスし、ステップ220へ進む。
【0023】
ステップ220においては、ハフマンテーブルのアドレス’13’に該当するノードが中間ノードであるか、それとも端末ノードであるかを判断する。図5を参照すれば、アドレス’1’に該当するノードに該当する3つのメモリ空間のうち中間のメモリ空間に貯蔵された値は’ヌル’であり、左側のメモリ空間には’22’が貯蔵されており、右側のメモリ空間には’25’が貯蔵されている。従って、ステップ220においては、アドレス’13’に該当するノードが図4Aに示された中間ノードであると判断し、ステップ240へ進む。
【0024】
ステップ240においては、入力されたビットストリーム’1110100’の最初のコードワードの3番目のビット’1’を入力され、入力されるビットnew_digit()が’1’であるため、ステップ260へ進む。
【0025】
ステップ260においては、現在アドレス’13’の右側アドレス’14’、すなわち現在ノードの右側のメモリ空間に貯蔵されたアドレス’25’に該当するエントリにアクセスし、ステップ220へ進む。
【0026】
ステップ220においては、ハフマンテーブルのアドレス’25’に該当するノードが中間ノードであるか、それとも端末ノードであるかを判断する。図5を参照すれば、アドレス’25’に該当するノードに割当する3つのメモリ空間のうち中間のメモリ空間に貯蔵された値は’4’であり、左側のメモリ空間には’ヌル’が貯蔵されており、右側のメモリ空間には’ヌル’が貯蔵されている。従って、ステップ220においてはアドレス25に該当するノードが図4Bに示された端末ノードであると判断し、ステップ230へ進む。
【0027】
ステップ230においては、アドレス’25’に該当するノードに割り当てられた3つのメモリ空間のうち中間のメモリ空間に貯蔵された値’4’をデコーディングされたコードワード値として出力する。
【0028】
従って、入力されたビットストリーム’1110100’の最初のコードワード’111’に対するデコーディングされたコードワード’4’を求め、ビットストリーム’1110100’の2番目のコードワードに対するデコーディングを再開する。
【0029】
デコーディングされたコードワード値’4’を求める過程と同様に、ステップ210においては、デコーディングの開始段階としてハフマン2進木のルートアドレスに該当するハフマンテーブルのアドレス’1’に該当するエントリにアクセスし、ステップ220へ進む。
【0030】
ステップ220において、アクセスされたハフマンテーブルのアドレス’1’に該当するノードが中間ノードであるか、それとも端末ノードであるかを判断し、アドレス’1’に該当するノードに該当する3つのメモリ空間のうち中間のメモリ空間に貯蔵された値は’ヌル’であり、左側のメモリ空間には’4’が貯蔵されており、右側のメモリ空間には’7’が貯蔵されている。従って、ステップ220においてはアドレス’1’に該当するノードが図4Aに示された中間ノードであると判断し、ステップ240へ進む。
【0031】
従って、ステップ240へ進んで入力されたビットストリーム’1110100’の2番目のコードワードの最初のビット’0’を入力され、入力されたビットnew_digit()が’0’であるため、ステップ250へ進む。
【0032】
ステップ250においては、現在アドレス’1’の左側アドレス’0’、すなわち、現在ノードの左側のメモリ空間に貯蔵されたアドレス’4’に該当するエントリにアクセスし、ステップ220へ進む。
【0033】
ステップ220においては、ハフマンテーブルのアドレス’4’に該当するノードが中間ノードであるか、それとも端末ノードであるかを判断する。図5を参照すれば、アドレス’4’に該当するノードの3つのメモリ空間のうち中間のメモリ空間に貯蔵された値は’60’であり、左側のメモリ空間には’ヌル’値が貯蔵されており、右側のメモリ空間には’ヌル’値が貯蔵されている。従って、ステップ220においてはアドレス’4’に該当するノードが図4Bに示された端末ノードであると判断し、ステップ230へ進む。
【0034】
ステップ230においては、アドレス’4’に該当するノードに割り当てられた3つのメモリ空間のうち中間のメモリ空間に貯蔵された値’60’をビットストリーム’1110100’の2番目のコードワード’0’に対するデコーディングされたコードワード値として出力する。
【0035】
このような方式により、ハフマンデコーダに入力される符号化されたビットストリーム’1110100’の3番目のコードワード’100’に対するデコーディングされたコードワード値’59’を出力し、ビットストリーム’1110100....’に対するデコーディングされたコードワード値’4,60,59....’値を求める。
【0036】
このように、従来の2進木に基づくハフマンデコーディング方法は、検索に必要な資料構造を生成するために連結リストに基づく2進木を構成する複雑な過程を行わなければならず、特に、2進木検索に当たって、ノード間の移動のために行う比較及び分岐構文はプロセッサーの動作中にパイプラインの流れを妨げて処理速度の効率を落とし、従来のハフマンデコーディング方法によるルックアップテーブルは各ノードごとに3つのメモリ空間を用いるために、メモリ空間を過度に消費するといった問題点がある。
【0037】
【発明が解決しようとする課題】
本発明が解決しようとする技術的な課題は、従来のハフマンデコーディング過程においてプロセシング効率を落とす’比較及び分岐’命令を省いてハフマンデコーダの処理速度を高め、且つ、要求されるメモリ空間を狭める改善されたハフマンデコーディング方法を提供するところにある。
【0038】
本発明が解決しようとする他の技術的な課題は、従来のハフマンデコーディング過程においてプロセシング効率を落とす’比較及び分岐’命令を省いてハフマンデコーダの処理速度を高め、且つ、要求されるメモリ空間を狭める前記改善されたハフマンデコーディング方法を行う改善されたハフマンデコーディングシステムを提供するところにある。
【0039】
【課題を解決するための手段】
前記課題を解決するために、本発明による改善されたハフマンデコーディング方法は、エントリとしてインデックス情報と内部値とを有するルックアップテーブルを用いて符号化されたビットストリームをデコーディングする方法であって、(a)前記符号化されたビットストリームを受信するステップと、(b)前記受信されたビットストリームの一部ビットよりなるコードワードのうちの最初のビットからインデックス情報を求め、前記インデックス情報に対応する前記ルックアップテーブルのエントリにアクセスするステップと、(c)前記アクセスされたエントリの内部値に基づき前記エントリの種類を判断するステップと、(d)前記判断されたエントリのノードが端末ノードと判断される場合、前記ルックアップテーブルの内部値を前記コードワードのデコーディングされたコードワードに出力するステップと、を含むことを特徴とする。
【0040】
好ましくは、本発明による改善されたハフマンデコーディング方法は、アクセスされたエントリの内部値の符号に基づき前記エントリが中間ノードに該当するか、それとも端末ノードに該当するかを判断することを特徴とする。
【0041】
好ましくは、本発明による改善されたハフマンデコーディング方法は、前記アクセスされたエントリが中間ノードであると判断される場合、前記現在エントリのインデックス値、前記アクセスされたエントリの内部値、及び前記コードワードのうちののビット値に基づき、次にアクセスするエントリのインデックス値を計算することを特徴とする。
【0042】
前記他の課題を解決するために、本発明による改善されたハフマンデコーディング装置は、符号化されたビットストリームをデコーディングするためのプロセッサーと、前記プロセッサーに結合され、前記デコーディングと関わるルックアップテーブルが貯蔵されたメモリと、を備え、前記ルックアップテーブルは2進木のノードに対応するインデックス情報と内部値を有するエントリを備え、前記エントリに該当する前記2進木のノードの種類は前記エントリと関わって貯蔵された内部値に基づき決定され、前記ノードの種類が端末ノードの場合、前記エントリの内部値は前記ビットストリームの所定のコードワードに対するデコーディングされたコードワードであることを特徴とする。
【0043】
好ましくは、本発明による改善されたハフマンデコーディング装置は、エントリと関わって貯蔵された内部値は、前記エントリに該当するノードの種類によって符号を異にすることを特徴とする。
【0044】
好ましくは、本発明による改善されたハフマンデコーディング装置は、前記エントリに該当するノードが中間ノードである場合、前記エントリの内部値は現在エントリに該当する中間ノードと次にアクセスするノードとの相対的な距離値であることを特徴とする。なお、符号化されたビットストリームは、例えば、MPEG規格、JPEG規格及びH.26規格のうちいずれか一つにより符号化されたものである。
【0045】
【発明の実施の形態】
以下、添付した図面に基づき、本発明による改善されたハフマンデコーディング方法について詳細に説明する。
【0046】
図6は、本発明による改善されたハフマンデコーディング方法を実現するためのルックアップテーブルの再構成による効率良い一次元ルックアップテーブルの構成過程を示している。
【0047】
テーブルの変換過程は、同一検索段階別に2進木のノードをグループ化し、表1に示されたコードワードの大きさ順に左側から右側へと一次元配列させることによりなされる。図6に示されたルックアップテーブルの生成に際し、各ノードは中間ノードの場合には現在ノードの位置を基準として次に移動するノードの相対的な距離を内部値として貯蔵し、端末ノードの場合には実際の戻し値を内部値として貯蔵する。
【0048】
前記一次元配列は、図6に示されたように、連結リストによる動的な資料構造の生成無しに、直列配列された静的なルックアップテーブルの構成を有する。
【0049】
以下、図6に基づき、一次元ルックアップテーブルの作成過程について詳細に説明する。
【0050】
図6の2進木の各ノードには上位レイヤから下位レイヤに、すなわち、レイヤ−0、レイヤ−1、レイヤ−2、レイヤ−3、レイヤ−4、レイヤ−5の順番にインデックス番号が付され、そして各レイヤ内においては各ノードに対して順次的なインデックス番号が付される。本発明による実施の形態においては、図6に示されたように、兄弟ノードには隣接したインデックス番号が付される。この実施の形態においては、同じレイヤ内においては左側から右側へとインデックス番号が付されるが、選択的に、同じレイヤ内においては右側から左側へとインデックス番号が付されても良い。
【0051】
図6において、インデックス番号0,4,7,8,9,10,12,13...が付された端末ノードには、表1に示されたコードワードの大きさによって左側から右側へと実際の戻し値’60’,’59’,’4’,’61’,’58’,’62’,’57’及び’63’が割り当てられる。
【0052】
一方、インデックス番号1,2,3,5,6,11,...が付された中間ノードには現在ノードと次の移動するノードとの相対的な距離値が貯蔵される。この実施の形態においては、インデックス番号1,2,3,5,6,11が付された中間ノードには現在ノードのインデックス番号と子ノードのうち左側ノードのインデックス番号との差分値、すなわち、’−1’,’−2’,’−3’,’−3’,’−4’,’−1’が各々貯蔵される。
【0053】
図7は、図6に示されたテーブルの再構成法により構成された一次元ルックアップテーブルを示している。再構成された一次元ルックアップテーブルは、前記2進木の各ノードに付されたインデックス番号及びインデックス番号を結び付けて貯蔵した各ノードの内部値を含む。
【0054】
ルックアップテーブルに貯蔵された各ノードの内部値は、中間ノードの場合には現在ノードと次の移動するノードとの相対的な距離値、この実施の形態の場合に現在ノードのインデックス番号と子ノードのうち左側ノードのインデックス番号との差分値であるために、常に負の値を有する。これに対し、端末ノードの場合には戻し値を貯蔵するために、正の値を有する。
【0055】
この実施の形態においては、中間ノードの場合、現在ノードと子ノードのうち左側ノードとのインデックス番号の差分値を有するが、選択的に、右側ノードのインデックス番号との差分値を貯蔵するなど、他の形の相対的な距離値を貯蔵するようにしても良い。
【0056】
図7に示された一次元ルックアップテーブルにおいて、’左側ノード:0’、’右側ノード:1’で表わされた列は図8に示された最終的なルックアップテーブルには含まれず、テーブルを生成する中間過程を表わす。これらは、検索過程で移動する検索アドレス値を表わし、符号化されたビットストリームから読み込まれたビットデータと連動して各々の場合、次に移動する検索段階のノードのインデックス番号を表示する。
【0057】
従来の2進木ハフマンルックアップテーブルの場合には、検索を行うためのルックアップテーブルは各ノードに対して、各ノードに該当するデータ値、左側または右側ノードに分岐時に移動するためのアドレス値の3つの構成要素を有していなければならないため、2進木の各々のノードに対して3つのメモリ空間を必要とする。
【0058】
これに対し、図8は、本発明による最終的なルックアップテーブルを示しており、中間ノードの場合に現在ノードを基準として他の移動するノードの相対的な距離値のみを有しており、端末ノードの場合に戻す結果値、すなわち、戻し値のみを有する。また、これら2値は図7の太線にて示されたように、常に排他的に発せられるため、図8に示されたように、一次元空間上に配列できる。従って、既存のルックアップテーブルに比べてメモリの使用空間が1/3に狭まる。
【0059】
図9は、図8に示された本発明による一次元ルックアップテーブルを用いてハフマンデコーディングを行う方法を説明するためのフローチャートである。
【0060】
ステップ910は、本発明による一次元ルックアップテーブルを用いてデコーディングを開始する段階であって、ハフマンデコーダに入力される符号化されたビットストリームの所定のコードワードの最初のビット値をインデックス情報として用いて 図8のルックアップテーブルのエントリにアクセスする。
【0061】
ステップ920においては、ステップ910においてアクセスされたエントリに該当する現在ノードが中間ノードであるか、それとも端末ノードであるかを判断する。この実施の形態においては、該当エントリの内部値が正の値であるか、それとも負の値であるかによってノードの種類を判別する。ステップ920においては、該当エントリに貯蔵された内部値が正の値である場合、現在ノードを端末ノードであると判断してステップ930へ進み、前記内部値が負の値である場合、現在ノードを中間ノードであると判断してステップ940へ進む。
【0062】
ステップ930においては、ステップ920において現在ノードを端末ノードであると判断した場合、現在エントリの内部値を実際の戻し値として出力する。
【0063】
ステップ940においては、ステップ920において現在ノードが中間ノードであると判断された場合、下記式[数2]によって新しいインデックス値を計算し、ルックアップテーブルにおいて計算されたインデックス値に該当するエントリにアクセスする。
【数2】
Figure 0003714935
(式中、右側のindexは現在エントリに該当するインデックス番号であり、data(index)は現在エントリに内部値として貯蔵された現在ノードと次に移動するノードとの相対的な距離であり、new_digit()は次のビット値を意味する。)
【0064】
この実施の形態においては、前記相対的な距離値は現在ノードのインデックス番号と現在ノードの子ノードのうち左側ノードのインデックス番号との差分値である。
【0065】
以下、図8の一次元ルックアップテーブル及び図9のフローチャートを結び付けて、ハフマンデコーダに入力される符号化されたビットストリームのうち’1110100’をデコーディングする過程について説明する。
【0066】
ステップ910はデコーディングの開始段階であって、ハフマンデコーダに入力される符号化されたビットストリーム’110100’の最初のコードワードの最初のビット’1’をインデックス情報として用いて図8のルックアップテーブルのエントリにアクセスする。ここでは、所定の戻し値に対応するコードワードがビットストリーム’1110100’の最初のビットから始まると仮定する。
【0067】
ステップ920においては、ステップ910においてアクセスされた現在エントリ、すなわち、図8のルックアップテーブルのインデックス値’1’を有するエントリに該当するノードの内部値の符号によって現在ノードが中間ノードであるか、それとも端末ノードであるかを判断する。この実施の形態においては、ステップ920においてはインデックス値’1’を有するエントリの内部値が負の値’−1’であるため、現在ノードを中間ノードであると判断し、ステップ940へ進む。
【0068】
ステップ940においては、前記式[数2]によって新しいインデックス値を計算し、計算されたインデックス値に基づき新しいエントリにアクセスし、ステップ920へ進む。この実施の形態においては、data(index)はインデックス番号1−2の結果値であり、new_digit()はデコーディングしようとするビットストリーム’110100’の次のビット値’1’であるため、新しいインデックス値は
【数3】
Figure 0003714935
となる。
【0069】
従って、ステップ940においては、インデックス値’3’に該当するエントリにアクセスし、ステップ920へ進む。
【0070】
ステップ920においては、ステップ940においてアクセスされた現在エントリ、すなわち、図8のルックアップテーブルのインデックス値’3’に該当するエントリのノードが中間ノードであるか、それとも端末ノードであるかを判断する。ステップ920においては、エントリの内部値’−3’が負の値であるため、現在ノードを中間ノードであると判断し、ステップ940へ再び進む。
【0071】
ステップ940においては、前記式[数2]によって新しいインデックス値を計算する。new_digit()はデコーディングしようとするビットストリーム’110100’の最初のコードワードの2番目のビット値’1’であるため、新しいインデックス値は、
【数4】
Figure 0003714935
となる。
【0072】
従って、インデックス値’7’に該当するエントリにアクセスし、ステップ920へ進む。
【0073】
ステップ920においては、ステップ940においてアクセスされた現在エントリ、すなわち、図8のルックアップテーブルのインデックス7に該当するエントリのノードが中間ノードであるか、それとも端末ノードであるかを判断する。ステップ920においては、現在エントリの内部値が正の値であるため、現在ノードを端末ノードであると判断し、ステップ930へ進む。
【0074】
ステップ930においては、インデックス7に該当するエントリの内部値’4’を実際の戻し値、すなわち、デコーディングされたコードワードとして出力し、符号化されたビットストリーム’1110100’のうち最初のビットセット、すなわち、コードワード’111’に対するデコーディング段階を終え、2番目のコードワードに対するデコーディングを再開する。
【0075】
ステップ910においては、ビットストリーム’111100’の2番目のコードワードの最初のビット’0’をインデックス情報として用いて図8のルックアップテーブルのエントリにアクセスする。
【0076】
ステップ920においては、ステップ910においてアクセスされたインデックス0に該当するエントリの内部値が正の値であるため、現在ノードを端末ノードであると判断し、ステップ930へ進む。
【0077】
ステップ930においては、インデックス0に該当するエントリの内部値’60’をデコーディングされたコードワードとして出力し、符号化されたビットストリーム’111100’のうち2番目のコードワード’0’に対するデコーディング段階を終え、3番目のコードワードに対するデコーディングを再開する。
【0078】
ステップ910においては、ビットストリーム’111000’の3番目のコードワードの最初のビット’1’をインデックス情報として用いて図8のルックアップテーブルのエントリにアクセスする。
【0079】
ステップ920においては、ステップ910においてアクセスされた現在エントリ、すなわち、インデックス1に該当するエントリの内部値’−1’が負の値であるため、現在ノードを中間ノードであると判断してステップ940へ進む。
【0080】
ステップ940においては、前記式[数2]によって新しいインデックス値を計算する。new_digit()はデコーディングしようとするビットストリーム’111010’の次のビット値’0’であるため、新しいインデックス値は、
【数5】
Figure 0003714935
となる。
【0081】
従って、インデックス値’2’に該当するエントリにアクセスし、ステップ920へ進む。
【0082】
ステップ920においては、ステップ940においてアクセスされた現在エントリ、すなわち、図8のルックアップテーブルのインデックス2に該当するエントリのノードが中間ノードであるか、それとも端末ノードであるかを判断する。この実施の形態においては、現在エントリの内部値’−2’が負の値であるため、現在ノードを中間ノードであると判断してステップ940へ進む。
【0083】
ステップ940においては、前記式[数2]によって新しいインデックス値を計算する。new_digit()はデコーディングしようとするビットストリーム’111010’の3番目のコードワードの2番目のビット値が’0’であるため、前記式[数2]によれば、新しいインデックス値は
【数6】
Figure 0003714935
となる。
【0084】
従って、インデックス値’4’に該当するエントリにアクセスし、ステップ920へ進む。
【0085】
ステップ920においては、ステップ940においてアクセスされた現在エントリ、すなわち、図8のルックアップテーブルのインデックス4に該当するエントリのノードが中間ノードであるか、それとも端末ノードであるかを判断する。ステップ920においては、現在エントリの内部値’59’が正の値であるため、現在ノードを端末ノードであると判断し、ステップ930へ進む。
【0086】
ステップ930においては、現在エントリの内部値’59’を符号化されたビットストリーム’1110100’の3番目のコードワード’100’のデコーディングされたコードワードとして出力する。
【0087】
このような方式により、符号化されたビットストリーム’111100’の3つのコードワードに対するデコーディングを行い、デコーディングされたコードワード’4,60,59’を結果値として出力する。
【0088】
このように、既存の2進木に基づくハフマンデコーディング方法と、本発明による改善されたハフマンデコーディング方法とを比較すれば、本発明によるハフマンデコーディング方法においては、符号化されたビットストリームから入力された1ビットのデータを直接的にルックアップテーブルのエントリへのアクセス、すなわち、アドレス値の演算に適用することにより、既存のハフマンデコーディング方法でノード間の移動のために存在していた条件文が除去可能になり、一層向上されたプロセシング効率が得られる。
【0089】
表2は、本発明の改善されたハフマンデコーディング方法による結果と、既存の順次的な検索方式に基づくハフマンデコーディング方法の結果とを示している。
【表2】
Figure 0003714935
表2から明らかなように、任意のMPEG−2 AAC(advanced audio coding)テストファイルを試験すれば、ハフマンコードの種類によって最小30%から最大777%の性能の向上がもたらされる。また、平均検索回数の側面でも、本発明によるハフマンデコーディング方法は、通常の順次的な検索方式のハフマンデコーダに比べて約75%の性能の向上を示している。
【0090】
表3は、同じ測定条件下で6種の相異なるMPEG−2 AACテストファイルを用いて測定を行った結果を示している。
【表3】
Figure 0003714935
【0091】
表3から明らかなように、本発明による改善されたハフマンデコーディング方法は、既存の順次的な検索方式のハフマンデコーディング方法に比べて、ファイルの種類によって最小24%から最高776%の検索速度の向上をもたらす。
【0092】
本発明は上述した実施の形態に限定されることなく、本発明の思想内であれば、当業者による変形が可能であるということは言うまでもない。
【0093】
本発明はまた、コンピュータにて読取り可能な記録媒体にコンピュータにて読取り可能なコードとして具現可能である。コンピュータにて読取り可能な記録媒体はコンピュータシステムによって読取り可能なデータが貯蔵されるあらゆる種類の記録装置を含む。コンピュータにて読取り可能な記録媒体の例としては、ROM、RAM、CD−ROM、磁気テープ、ハードディスク、フロッピー(登録商標)ディスク、フラッシュメモリ、光データ貯蔵装置などがあり、またキャリアウェーブ(例えば、インターネットを介した伝送)の形で具現されるものも含む。尚、コンピュータにて読取り可能な記録媒体は、ネットワークに連結されたコンピュータシステムに分散され、分散方式によりコンピュータにて読取り可能なコードとして貯蔵されて実行できる。
【0094】
【発明の効果】
上述したように、本発明による改善されたハフマンデコーディング方法及び装置によれば、従来2進木検索に必要であった’比較及び分岐’演算を除くことにより検索速度を向上でき、且つ、ルックアップテーブルの構成のためのメモリ空間も、既存の’比較及び分岐’構文において用いられるテーブルの1/3だけでも実現できる。
【図面の簡単な説明】
【図1】 従来のハフマンデコーディング装置の概略的なブロック図である。
【図2】 図1に示された装置において行われる従来のハフマンデコーディング方法を説明するためのフローチャートである。
【図3】 ハフマンデコーディング方法に用いられる2進木構造を示す図面である。
【図4A】 従来のハフマンデコーディング方法に用いられる各々のノードに対応するハフマンテーブルのメモリ空間を示す図面である。
【図4B】 従来のハフマンデコーディング方法に用いられる各々のノードに対応するハフマンテーブルのメモリ空間を示す図面である。
【図5】 従来のハフマンデコーディング方法に用いられるハフマンテーブルである。
【図6】 本発明による一次元ルックアップテーブルの作成過程を示す図面である。
【図7】 本発明による一次元ルックアップテーブルの作成過程を示す表である。
【図8】 本発明によるデコーディング方法に用いられる一次元ルックアップテーブルである。
【図9】 本発明による、数値演算に基づく改善されたハフマンデコーディング方法を説明するためのフローチャートである。
【符号の説明】
910、920、930、940 ステップ

Claims (15)

  1. エントリとしてインデックス情報と内部値とを有するルックアップテーブルを用いて符号化されたビットストリームをデコーディングする方法であって、
    (a)前記符号化されたビットストリームを受信するステップと、
    (b)前記受信されたビットストリームの一部ビットよりなるコードワードのうちの最初のビットからインデックス情報を求め、前記インデックス情報に対応する前記ルックアップテーブルのエントリにアクセスするステップと、
    (c)前記アクセスされたエントリの内部値に基づき前記エントリの種類を判断するステップと、
    (d)前記判断されたエントリのノードが端末ノードと判断される場合、前記ルックアップテーブルの内部値を前記コードワードのデコーディングされたコードワードに出力するステップと、を含むことを特徴とするデコーディング方法。
  2. 前記ステップ(c)は、前記アクセスされたエントリの内部値の符号に基づき前記エントリが中間ノードに該当するか、それとも端末ノードに該当するかを判断することを特徴とする請求項1に記載のデコーディング方法。
  3. (e)前記ステップ(c)において、前記アクセスされたエントリが中間ノードであると判断される場合、前記現在エントリのインデックス値、前記アクセスされたエントリの内部値、及び前記コードワードのうちの次のビット値に基づき、次にアクセスするエントリのインデックス値を計算することを特徴とする請求項1または2に記載のデコーディング方法。
  4. 前記次にアクセスするエントリのインデックス値は下記式[数1]により計算され、計算されたインデックス値を用いて対応する前記ルックアップテーブルのエントリにアクセスするステップをさらに含むことを特徴とする請求項3に記載のデコーディング方法。
    Figure 0003714935
    ただし、式中、indexは現在エントリのインデックス番号であり、data(index)は現在エントリの戻し値であり、new_digit()は前記コードワードのうちの次のビット値である。
  5. 前記現在エントリの内部値は、現在ノードと次に移動するノードとの相対的な距離値であることを特徴とする請求項3または4に記載のデコーディング方法。
  6. 前記次にアクセスするエントリは、現在エントリに該当するノードの子ノードのうち左側ノードに該当するエントリであり、前記現在エントリの内部値は、現在エントリのインデックス値と前記左側ノードに該当するエントリのインデックス値との差分値である相対的な距離であることを特徴とする請求項3または4に記載のデコーディング方法。
  7. 次にアクセスするエントリのインデックス値を、前記現在のインデックス値、前記内部値の絶対値、及びコードワードの次のビット値の和値により計算することを特徴とする請求項3に記載のデコーディング方法。
  8. 前記ステップ(c)は、(c1)前記計算されたインデックスに対応する前記ルックアップテーブルのエントリの内部値に基づき前記アクセスされたエントリが中間ノードに該当するか、それとも端末ノードに該当するかを判断するステップをさらに含むことを特徴とする請求項3に記載のデコーディング方法。
  9. 前記符号化されたビットストリームは、MPEG規格、JPEG規格及びH.26x規格のうちのいずれか一つにより符号化されたことを特徴とする請求項1に記載のデコーディング方法。
  10. 前記ルックアップテーブルは、2進木から生成されたことを特徴とする請求項1に記載のデコーディング方法。
  11. 符号化されたビットストリームを2進木検索によりデコーディングするためのデコーディング装置であって、
    前記符号化されたビットストリームをデコーディングするためのプロセッサーと、
    前記プロセッサーに結合され、前記デコーディングと関わるルックアップテーブルが貯蔵されたメモリと、を備え、
    前記ルックアップテーブルは前記2進木のノードに対応するインデックス情報と内部値を有するエントリを備え、前記エントリに該当する前記2進木のノードの種類は前記エントリと関わって貯蔵された内部値に基づき決定され、前記ノードの種類が端末ノードの場合、前記エントリの内部値は前記ビットストリームの所定のコードワードに対するデコーディングされたコードワードであることを特徴とするデコーディング装置。
  12. 前記エントリと関わって貯蔵された内部値は、前記エントリに該当するノードの種類によって符号を異にすることを特徴とする請求項11に記載のデコーディング装置。
  13. 前記エントリに該当するノードが中間ノードである場合、前記エントリの内部値は、現在エントリに該当する中間ノードと次にアクセスするノードとの相対的な距離値であることを特徴とする請求項11または12に記載のデコーディング装置。
  14. 次にアクセスするエントリは現在エントリに該当するノードの子ノードのうち左側ノードに該当するエントリであり、前記相対的な距離値は、現在エントリのインデックス値と前記左側ノードに該当するエントリのインデックス値との差分値であることを特徴とする請求項13に記載のデコーディング装置。
  15. 前記符号化されたビットストリームは、MPEG規格、JPEG及びH.26x規格のうちのいずれか一つにより符号化されたことを特徴とする請求項11に記載のデコーディング装置。
JP2003038864A 2002-02-28 2003-02-17 改善されたハフマンデコーディング方法及び装置 Expired - Fee Related JP3714935B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR2002-010981 2002-02-28
KR10-2002-0010981A KR100484137B1 (ko) 2002-02-28 2002-02-28 개선된 허프만 디코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
JP2003273748A JP2003273748A (ja) 2003-09-26
JP3714935B2 true JP3714935B2 (ja) 2005-11-09

Family

ID=36753915

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003038864A Expired - Fee Related JP3714935B2 (ja) 2002-02-28 2003-02-17 改善されたハフマンデコーディング方法及び装置

Country Status (5)

Country Link
US (1) US6741191B2 (ja)
EP (1) EP1341314A3 (ja)
JP (1) JP3714935B2 (ja)
KR (1) KR100484137B1 (ja)
CN (1) CN1254921C (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100468742B1 (ko) * 2002-06-26 2005-01-29 삼성전자주식회사 이진 검색 기법을 이용한 jpeg 허프만 테이블 디코더및 그 방법
EP1645037B1 (en) * 2003-09-02 2017-05-24 HMD Global Oy Huffman decoding
US6839005B1 (en) * 2003-11-07 2005-01-04 Broadcom Corporation Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels
KR100959532B1 (ko) 2003-12-18 2010-05-27 엘지전자 주식회사 Cavlc 복호 방법
US6975253B1 (en) * 2004-08-06 2005-12-13 Analog Devices, Inc. System and method for static Huffman decoding
JP2006178013A (ja) * 2004-12-20 2006-07-06 Canon Inc データベース作成装置及び方法
US20060190251A1 (en) * 2005-02-24 2006-08-24 Johannes Sandvall Memory usage in a multiprocessor system
EP1908287A4 (en) * 2005-07-20 2011-02-16 Humax Co Ltd CODIER AND DECODER
KR100840757B1 (ko) 2006-02-28 2008-06-23 노키아 코포레이션 허프만 부호화 및 복호화
CN101072034B (zh) * 2007-06-12 2010-06-02 华为技术有限公司 一种变长解码方法及其装置
TW201143306A (en) * 2010-05-19 2011-12-01 Hon Hai Prec Ind Co Ltd Method for storing information of nodes in a huffman tree and method for decoding data using an array of the huffman tree
CN102938685A (zh) * 2012-11-15 2013-02-20 大连理工大学 一种基于变长编码的无线传感器网络数据压缩方法
CN104283567B (zh) * 2013-07-02 2018-07-03 北京四维图新科技股份有限公司 一种名称数据的压缩、解压缩方法及设备
US9086871B2 (en) 2013-09-26 2015-07-21 International Business Machines Corporation Reordering the output of recirculated transactions within a pipeline
CN104717499B (zh) * 2015-03-31 2018-06-05 豪威科技(上海)有限公司 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法
WO2017009996A1 (ja) * 2015-07-16 2017-01-19 三菱電機株式会社 情報処理装置、情報処理方法及びプログラム
CN107797541B (zh) * 2016-08-29 2020-11-10 河北百亚信息科技有限公司 基于智能家居环境中ZigBee固件升级的镜像文件轻便解压算法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6292114B1 (en) * 1999-06-10 2001-09-18 Intel Corporation Efficient memory mapping of a huffman coded list suitable for bit-serial decoding
EP1069691A1 (en) * 1999-06-15 2001-01-17 STMicroelectronics S.r.l. Decoding method for a Huffman code
US6307489B1 (en) * 2000-03-15 2001-10-23 Robert Allen Freking Fast and small serial huffman decoder for decoding at an optimally high rate
US6636167B1 (en) * 2000-10-31 2003-10-21 Intel Corporation Method of generating Huffman code length information

Also Published As

Publication number Publication date
CN1254921C (zh) 2006-05-03
JP2003273748A (ja) 2003-09-26
CN1441555A (zh) 2003-09-10
EP1341314A3 (en) 2006-01-04
US6741191B2 (en) 2004-05-25
KR100484137B1 (ko) 2005-04-18
US20030174076A1 (en) 2003-09-18
EP1341314A2 (en) 2003-09-03
KR20030071327A (ko) 2003-09-03

Similar Documents

Publication Publication Date Title
JP3714935B2 (ja) 改善されたハフマンデコーディング方法及び装置
US5363098A (en) Byte aligned data compression
US9235651B2 (en) Data retrieval apparatus, data storage method and data retrieval method
US6167159A (en) Triangle mesh compression
US10153780B2 (en) Coding method, decoding method, coder, and decoder
Wu Notes on design and implementation of compressed bit vectors
JP3778087B2 (ja) データ符号化装置及びデータ復号装置
CN110943744B (zh) 数据压缩、解压缩以及基于数据压缩和解压缩的处理方法及装置
KR20030040567A (ko) 허프만 디코딩을 수행하는 방법
US9665590B2 (en) Bitmap compression for fast searches and updates
CN116594572B (zh) 浮点数流式数据压缩方法、装置、计算机设备及介质
JP4267707B2 (ja) データフローアーキテクチャにおけるビットストリングのn−ウェイ処理
CN116089663A (zh) 一种规则表达式匹配方法、装置及计算机可读存储介质
US7205915B2 (en) Method of decoding variable length prefix codes
Cannane et al. General‐purpose compression for efficient retrieval
US20120319875A1 (en) Method for storing node information of huffman tree and corresponding decoding method
US6108633A (en) Audio decoder core constants ROM optimization
US9697899B1 (en) Parallel deflate decoding method and apparatus
JP2000339332A (ja) 検索インデックスを記録した媒体、検索インデックス更新方法、その装置、そのプログラムを記録した媒体
CN111431539A (zh) 一种神经网络数据的压缩方法、装置及计算机可读存储介质
JP2011033806A (ja) 言語モデル圧縮装置、言語モデルのアクセス装置、言語モデル圧縮方法、言語モデルのアクセス方法、言語モデル圧縮プログラム、言語モデルのアクセスプログラム
WO2015151444A1 (ja) データ構造、情報処理装置、情報処理方法、及びプログラム記録媒体
JP2006162774A (ja) 信号処理装置
JP3565147B2 (ja) 復号装置
US7065606B2 (en) Controller architecture for memory mapping

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040622

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040922

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050405

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050701

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050823

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090902

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100902

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110902

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120902

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130902

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees