JP4501288B2 - ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法 - Google Patents

ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法 Download PDF

Info

Publication number
JP4501288B2
JP4501288B2 JP2001047823A JP2001047823A JP4501288B2 JP 4501288 B2 JP4501288 B2 JP 4501288B2 JP 2001047823 A JP2001047823 A JP 2001047823A JP 2001047823 A JP2001047823 A JP 2001047823A JP 4501288 B2 JP4501288 B2 JP 4501288B2
Authority
JP
Japan
Prior art keywords
data
value
flag
stored
area
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
JP2001047823A
Other languages
English (en)
Other versions
JP2002252563A (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.)
Yamaha Corp
Original Assignee
Yamaha 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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2001047823A priority Critical patent/JP4501288B2/ja
Priority to US10/081,999 priority patent/US6621429B2/en
Publication of JP2002252563A publication Critical patent/JP2002252563A/ja
Application granted granted Critical
Publication of JP4501288B2 publication Critical patent/JP4501288B2/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

Description

【0001】
【発明の属する技術分野】
本発明は、ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法に関する。
【0002】
【従来の技術】
ハフマン符号は、記号にその出現確率に応じた長さの符号語を割り当てることにより符号の平均語長を最小にする符号であり、エントロピー符号化(可変長符号化)の代表的なものとして知られている。ハフマン符号は、画像データや音声データなどのマルチメディアデータの圧縮などに広く利用されている。
【0003】
従来のハフマン符号の復号装置の一例について、図6〜図8を参照して説明する。ここでは、図6に示すハフマンコードテーブルにより符号化された入力データを復号するものとする。すなわち、データ(記号)「A」に対して符号長1ビットの符号語'1'、「B」に対して符号長2の符号語'00'、「C」に対して符号長3の符号語'010'、「D」および「E」に対して符号長5の符号語'01111'および'01100'、「F」に対して符号長6の符号語'011101'、「G」、「H」、「I」、「J」、「K」および「L」に対してそれぞれ符号長7の符号語'0111001'、'0111000'、'0110111'、'0110110'、'0110101'、および、'0110100'が割り当てられている。
【0004】
図7は、従来のハフマン復号装置の構成例を示す図である。
図7において、31は図6に示したハフマンコードテーブルのうちの符号語を記憶した符号語テーブル、32は対応する符号長を記憶した符号長テーブル、33は対応する復号データを記憶したデータテーブルである。また、34は前記符号語テーブル31、符号長テーブル32およびデータテーブル33に対して読み出しアドレスを供給するカウンタ、35はハフマン符号化された入力データから前記符号長テーブル32から読み出された符号長(length)に基づいて決定されるビット数の入力データを取得する入力データ取得回路、36は前記符号語テーブル31から読み出された符号語(codeword)と前記データ取得回路35からの入力データDとの一致を検出する一致検出回路である。
【0005】
このように構成された従来のハフマン復号装置の処理の流れを図8のフローチャートを参照して説明する。
まず、ステップS21において、前記入力データ取得回路35で取得した入力データD、前記カウンタ34の計数値(すなわち前記テーブル31〜33の読み出しアドレス)nおよび符号長データLをいずれも初期値=0に設定する。そしてステップS22に進み、前記符号長テーブル32のアドレス#n(初期化直後は、n=0)をアクセスし、符号長を読み出す。
次に、ステップS23に進み、読み出した符号長(length)が符号長データLと一致するか否かを判定する。n=0の場合にはlength=1であるため、不一致となり、ステップS24に進む。ステップS24において、前記入力データ取得回路35により、入力データから(length−L)ビット(最初はL=0であるため、1ビット)を取得する。すなわち、前記入力データDを(length−L)ビット左シフトし、そこに取得した(length−L)ビットの入力データを加えて、新たな入力データDとする。n=0の場合には、D=0であるため、入力データDは、その先頭から1ビットのデータとなる。そして、符号長データLの値を符号長length(=1)とする。
【0006】
前記ステップS24を実行した後、あるいは、前記ステップS22で読み出した符号長(length)が符号長データLと一致しているとき(前記ステップS23の結果がYES)は、ステップS25に進み、前記アドレス#nの符号語(codeword)を読み出す。そして、ステップS26で、この読み出した符号語と前記入力データDとの一致を判定する。その結果、一致しているときは、前記データテーブル33からそのアドレス#nに記憶されている復号データを読み出し、このハフマン符号化データの復号を終了する。そして、次の入力データの復号のために、前記ステップS21からの処理を行なう。
一方、読み出した符号語と入力データDとが一致していないときは、ステップS28に進み、前記カウンタ34の計数値nを+1して、前記ステップS22に戻り、新たなアドレス(n+1)について、前述した処理を繰り返す。
このように、ハフマンコードテーブルを記憶したメモリを用い総当り方式でハフマン符号化された入力データの復号を行うことができる。
【0007】
なお、ハフマン復号方法および復号装置としては、上述した以外にも各種の方法が知られており、最大符号長分のアドレスを持つメモリを使用する方法、1ビットごとにコードツリーを追跡する方法、複数のメモリを用いて並列に復号する方法などが知られている。
【0008】
【発明が解決しようとする課題】
上述したハフマンコードテーブルを用いるハフマン復号方法の場合には、参照すべきデータとして、復号データ、符号長および符号語の全ての情報が必要なため、ハフマンコードテーブルのメモリ容量が大きくなるという欠点がある。また、一致するまで判定を繰り返す逐次探索方法であるため、符号長が長いデータを取得する場合、メモリへの参照の回数も多く、効率が良くないという問題点がある。
さらに、前記最大符号長分のアドレスを持つメモリを使用する方法は、高速に復号することが可能であるが、メモリ容量が非常に大きくなってしまうという問題点がある。
さらにまた、処理速度を向上させるために並列処理を行う方法の場合には、回路規模が大きくなってしまうという問題点がある。
【0009】
そこで本発明は、少ないメモリ容量で、かつ、高速に処理を行うことができるとともに、少ない回路規模しか必要としないハフマン符号の復号方法および復号装置を提供することを目的としている。
また、それに用いるハフマン符号復号用テーブルおよびその作成方法を提供することを目的としている。
【0010】
【課題を解決するための手段】
上記目的を達成するために、本発明のハフマン符号の復号方法は、ハフマン符号に対応する二分木を記述したテーブルを用いて前記ハフマン符号により符号化された入力データを復号する方法であって、前記テーブルは、アドレスごとに、フラグの種類を示す2ビットのフラグ領域と、復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されているものであり、前記フラグは、前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであり、前記テーブルには、前記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶し、前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶し、そのジャンプ先アドレスをデータ領域に記憶したものである。
【0011】
また、本発明の復号装置は、ハフマン符号により符号化された入力データを復号する復号装置であって、前記ハフマン符号に対応する二分木を記述したテーブルと、前記入力データを1ビットずつ抜き出し、その値を判定するビット抜出し及び判定部と、前記テーブルの読み出しアドレスを出力するアドレス生成手段とを有し、前記テーブルは、アドレスごとに、フラグの種類を示す2ビットのフラグ領域と、復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されているものであり、前記フラグは、前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであり、前記テーブルは、前記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶し、前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶し、そのジャンプ先アドレスをデータ領域に記憶したものであり、前記ビット抜出し及び判定部により1ビットずつ取得した前記入力データの値に応じて、前記テーブルの読み出しアドレスを制御し、前記テーブルを二分木探索して入力データに対応する復号データを出力するものである。
【0012】
さらに、本発明のハフマン符号復号用テーブルは、ハフマン符号により符号化された入力データを復号するための前記ハフマン符号に対応する二分木を記述したテーブルであって、アドレスごとに、フラグの種類を示す2ビットのフラグ領域と、復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されており、前記フラグは、前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであり、前記テーブルには、前記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶し、前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶し、そのジャンプ先アドレスをデータ領域に記憶したものである。
【0013】
さらにまた、本発明のハフマン符号の復号用テーブルの作成方法は、アドレスごとに、フラグの種類を示す2ビットのフラグ領域と復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されており、前記フラグは、前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであるハフマン符号復号用テーブルの作成方法であって、ハフマン符号の符号テーブルから、各終端節点復号データが格納された該ハフマン符号に対応した二分木を作成する第1のステップ、前記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶する第2のステップ、前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶する第3のステップ、前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶する第4のステップ、前記第2のステップないし前記第のステップで作成された語を二分探索順に配置する第のステップ、及び、前記配置後のアドレスを、前記第4のフラグを記憶したフラグ領域に対応するデータ領域に記憶する第6のステップを含むものである。
【0014】
【発明の実施の形態】
図1は、本発明のハフマン符号の復号方法が実行されるハフマン復号装置の一実施の形態の構成を示すブロック図である。この図において、1は本発明のハフマン復号方法において用いるハフマン符号復号用テーブル(以下、「変換ハフマンテーブル」と呼ぶ。)、2は+1加算を行うカウンタ3およびセレクタ4を有し、前記変換ハフマンテーブル1の読み出しアドレスを生成するアドレス生成手段、5はビット抜出し及び判定部である。ここで、前記変換ハフマンテーブル1は、ハフマン符号に対応した二分木を記述したテーブルであり、この二分木を探索するためのフラグと、ハフマン復号出力データあるいはジャンプ先アドレスとが格納されている。また、前記ビット抜出し及び判定部5は、前記変換ハフマンテーブル1から読み出されたフラグに応じて、入力データを1ビット抜き出し、その値が”0”であるのか”1”であるのかの判定を行う。前記アドレス生成手段2におけるセレクタ4は、前記ビット抜き出し及び判定部5からの制御信号に基づき、セレクタ4の出力をカウンタ3で+1した値と前記変換ハフマンテーブル1から読み出されたジャンプ先アドレスのいずれかを選択して前記変換ハフマンテーブル1にアドレスとして供給する。
【0015】
まず、前記変換ハフマンテーブル1およびその作成方法について、図2〜図4を参照して説明する。なお、ここでは、前述の場合と同じく図6に示したハフマンコードテーブルにより符号化された入力データを復号するものとする。
本発明のハフマン復号方法では、前記変換ハフマンテーブル1を作成するために、まず、前記図6に示したハフマンコードテーブルから、図2に示す該ハフマン符号に対応する二分木(binary tree)を生成する。このとき、各データ(記号)を二分木のリーフ(終端節点)に格納するようにする。
【0016】
すなわち、前記図6のハフマンコードテーブルをみると、その最初のアドレス(アドレス#0)には、符号長1、符号語'1'、データ「A」からなる語(word)が記憶されている。符号長が1であることにより、このデータ「A」がこのハフマン符号に対応する二分木のルートとなるノード(分岐節点)(図2における11)に直接接続されるリーフに格納されるものであることが分かり、ビット0を左部分木、ビット1を右部分木に割り当てるとすると、符号語が'1'であることからノード11の右部分木にデータ「A」を格納したリーフが接続され、左部分木に第2のノード12が接続される。
図6のハフマンコードテーブルの次のアドレス#1に記憶されている語は、符号長2、符号語'00'、データ「B」である。符号長が2であり、符号語の2ビット目が0であることから、前記第2のノード12の左部分木(ビット0)にデータ「B」を格納したリーフが接続され、右部分木(ビット1)に第3のノード13が接続される。
【0017】
前記ハフマンコードテーブルの次のアドレス#2に記憶されている語は、符号長3、符号語'010'、データ「C」である。符号長が3であり、符号語の3ビット目が0であることから、第3のノード13の左部分木(ビット0)にデータCを格納したリーフが接続され、右部分木(ビット1)に第4のノード14が接続される。
前記ハフマンコードテーブルの次のアドレス#3に記憶されている語は、符号長5、符号語'01111'、データ「D」である。符号長が5であることから、このデータ「D」は前記第4のノード14に直接接続されたリーフに格納されるものではないことが分かり、符号語の第4ビット目が1、第5ビット目が1であることから、前記第4のノード14の右部分木に接続されたノード(図2中のノード19)の右部分木にデータ「D」を格納したリーフが接続される。
以下、同様に前記ハフマンコードテーブルに記憶されている各語について、その符号長および符号語を解析することにより、各リーフにデータが格納された、このハフマン符号に対応する二分木を作成することができる。
【0018】
このようにしてハフマンコードに対応する二分木を作成した後、この二分木から前記変換ハフマンテーブル1を作成する。図3は前記図2に示した二分木から生成した変換ハフマンテーブル1を示す図であり、この図に示すように、変換ハフマンテーブル1の各アドレスには、フラグ領域とデータ領域からなる語(word)が記憶されている。ここで、フラグは、略号DL、DH、SおよびJHで示される4種類の情報であり、2ビットのデータで表わすことができる。また、データ領域には、復号出力データあるいはジャンプ先アドレスが格納されている。
【0019】
前記フラグDL、DH、SおよびJHについて、図4を参照して説明する。
フラグDLは'00'で表わされ、入力データストリームから1ビットを抜き出し、その値が0ならば符号語に一致するものとして、そのアドレスのデータ領域に記憶されているデータを復号データとして出力し、値が1であるときは、変換ハフマンテーブル1の次のアドレス(現アドレスを+1したアドレス)を参照することを示している。
フラグDHは'01'で表わされ、入力データストリームから1ビットを抜き出し、その値が1のときは符号語に一致するものとして、そのアドレスのデータ領域に記憶されているデータを復号データとして出力し、0のときは変換ハフマンテーブル1の次のアドレスを参照することを示している。
フラグSは'10'で表わされ、入力データストリームからデータを抜き出すことなく無条件にそのアドレスのデータ領域に記憶されているデータを復号データとして出力することを示している。
フラグJHは'11'で表わされ、入力データストリームから1ビット抜き出し、その値が0ならば変換ハフマンテーブル1の次のアドレスを参照し、1ならばデータ領域に記憶されているアドレスに移動(ジャンプ)することを示している。ここで、このジャンプ先アドレスは、この変換ハフマンテーブルの先頭位置からの相対アドレスで示されている。
【0020】
前記図2の二分木から前記図3の変換ハフマンテーブル1を生成する手順について説明する。
図2に示すように、二分木の節点は、(1)データが格納されるリーフ(終端節点)、(2)リーフを一つ有するノード(分岐節点)、(3)リーフを2つ有するノード、および、(4)リーフを持たないノードの4種類に分けられる。
そこで、上記(2)、(3)のリーフを有するノードに対して、DHまたはDLのフラグを持たせて、その枝に接続されるリーフのデータを格納する。すなわち、(2)のリーフを1つ有するノードに対しては、そのリーフに接続する枝の符号語のビットが”0”であるときにはフラグDL、”1”のときにはフラグDHを持たせ、そのリーフに格納されているデータの復号データをデータ領域に記憶して1語とする。また、(3)のリーフを2つ有するノードについては、一方の枝について上記(2)の場合と同様にDLまたはDHのフラグを持たせ、その枝に接続されているリーフに格納されているデータの復号データを記憶する。そして、他方の枝について、その次のアドレスにフラグSを付けてそのリーフに格納されているデータの復号データを格納する。これらにより、全てのリーフに対応する語を生成することができる。
また、前記(4)のリーフを持たないノードについては、フラグJHを付加し、前述のようにして作成された語が二分木探索の順に並べられて変換ハフマンテーブルのアドレスが確定した後に、そのジャンプ先アドレス(符号語のビットが”1”であるときに選択されるノードに対する語のアドレス)を前記データ領域に格納する。
【0021】
前記図2に示した例では、まず、根となるノード11について、そのビット1に対応する枝(右部分木)にデータAが格納されたリーフが接続されているので、1のときに符号語に一致すると判定するフラグDH('01')とそのリーフに格納されている「A」に対応する復号データとを記憶する(アドレス#0)。
次に、前記根となるノードの左部分木に接続されたノード(第2のノード)12に対しては、左部分木(ビット0)にデータBを格納したリーフが接続されているので、変換ハフマンテーブルのアドレス#1には、フラグDL('01')と「B」の復号データを記憶する。同様に、前記第2のノード12の右部分木に接続された第3のノード13に対応して、変換ハフマンテーブルのアドレス#2に、フラグDLと「C」の復号データを記憶する。
また、前記第3のノード13の右部分木に接続された第4のノード14は上記(4)のリーフを持たないノードであるため、変換ハフマンテーブルの当該アドレス(アドレス#3)のフラグ領域にはフラグJHを記憶し、データ領域についてはジャンプ先アドレスが確定するまでデータを記憶しない。
次に、前記第4のノード14の左部分木に接続された第5のノード15は、その左部分木(ビット0)にデータ「E」を格納したリーフが接続されているので、変換ハフマンテーブルのアドレス#4のフラグ領域にビット0で符号語と一致するフラグDL('00')を書き込むとともに、データ領域に「E」に対応する復号データを書き込む。
【0022】
前記第5のノード15の右部分木(ビット1)に接続された第6のノード16は、(4)のリーフを持たないノードであるため、変換ハフマンテーブルのアドレス#5のフラグ領域にフラグJHを記憶する。なお、データ領域には、ジャンプ先のアドレスが確定した後にそのアドレスを書き込む。
前記第6のノード16の左部分木(ビット0)に接続された第7のノード17は、その左部分木(ビット0)にデータLを格納したリーフが接続されているので、変換ハフマンテーブルのアドレス#6のフラグ領域にはフラグDLが記憶され、データ領域には「L」に対応する復号データが記憶される。
また、該第7のノード17の右部分木(ビット1)にはデータ「K」を格納したリーフが接続されているので、変換ハフマンテーブルのアドレス#7にはフラグS('10')とデータ「K」に対応する復号データが記憶される。
【0023】
次に、前記第6のノード16の右部分木(ビット1)に接続された第8のノード18に関する処理を行なう。この第8のノード18の左部分木にはデータ「J」を格納したリーフが接続されているので、変換ハフマンテーブルのアドレス#8にはフラグDLとデータ「J」に対応する復号データが記憶される。また、ここで、前記第6のノードの分岐先のアドレスがアドレス#8であることが決定されたので、前記保留とされていた第6のノード16に対するアドレス#5のデータ領域にこのジャンプ先アドレスである「8」を記憶する。
また、前記第8のノード18の右部分木(ビット1)にはデータ「I」を格納したリーフが接続されているので、変換ハフマンテーブルのアドレス#9にはフラグSとデータ「I」に対応する復号データが記憶される。
以上で前記第4のノード14の左部分木に連なる枝についての処理が終了したため、前記第4のノード14の右部分木に連なる枝の処理を行なう。
【0024】
前記第4のノードの右部分木(ビット1)には、第9のノード19が接続されている。この第9のノード19はその左部分木(ビット0)に第10のノード20が接続されており、右部分木(ビット1)にはデータ「D」を格納したリーフが接続されている。したがって、変換ハフマンテーブルのアドレス#10のフラグ領域にフラグDHを記憶し、データ領域にはデータ「D」に対応する復号データを記憶する。また、ここで、第4のノード14の右部分木に接続されたノード(第9のノード)19に対するデータの記憶アドレスが#10であることが決定されたため、前記第4のノード14に関する語(アドレス#3の語)のデータ領域にそのアドレス#10を示す10がジャンプ先アドレスとして記憶される。
前記第9のノード19の左部分木に接続された第10のノード20には、その左部分木(ビット0)に第11のノード21が接続され、右部分木(ビット1)にデータ「F」が格納されたリーフが接続されている。したがって、変換ハフマンテーブルのアドレス#11には、フラグDHとデータ「F」に対応する復号データが記憶される。
第10のノード20の左部分木に接続された第11のノード21は、その左部分木にデータ「H」を格納したリーフが接続され、右部分木にデータ「G」を格納したリーフが接続されている。したがって、変換ハフマンテーブルのアドレス#12にフラグDLとデータ「H」に対応する復号データが記憶され、アドレス#13にフラグSとデータ「G」に対応する復号データが記憶される。
【0025】
なお、上記においては、二分木の探索順に順次アドレスを決定しつつ変換ハフマンテーブル1を生成したが、それぞれのノードに対応する語を決定した後、それらを二分木探索順に並べて前記変換ハフマンテーブル1を作成するようにしてもよい。
また、上記においては、フラグJHにつき、ビットが0のときに次のアドレスを参照し、1のときにジャンプするというように定義したが、ビット1のときに次のアドレスを参照し、0のときにジャンプするというように定義しても良い。
【0026】
このようにして、ハフマン符号を記述した二分木から、変換ハフマンテーブルを作成することができる。作成された変換ハフマンテーブルは、各記憶アドレスごとに2ビットのフラグ領域と、データに対応するデータあるいはジャンプ先アドレスを示すデータが格納されるデータ領域とからなっている。すなわち、本発明の変換ハフマンテーブルは、前記ハフマンコードテーブル(図6)のように復号データ、符号長および符号語を記憶するものではなく、2ビットのフラグと復号データまたはジャンプ先アドレスを記憶するものである。
一方、アドレス数(すなわち変換ハフマンテーブルの語数)は、この例では、符号数+2となっており、前記図6に示したハフマンコードテーブルよりも、フラグJHが格納されているアドレスの分だけ(すなわち、リーフを持たないノードの数だけ)増加している。
しかしながら、上述のように語長が、復号データのビット数+2ビットと少なくなっているので、全体としてテーブルのサイズを小さくすることができる。
【0027】
次に、このようにして作成された変換ハフマンテーブル1を用いた本発明のハフマン復号装置(図1)の動作について、図5のフローチャートを参照して説明する。
初期状態では、前記セレクタ4がカウンタ3の出力を選択するように設定されているものとする。まず、ステップS1において、カウンタ3の計数値adrを0に初期設定する。そして、ステップS2に進み、前記変換ハフマンテーブル1の読出しアドレス#0のデータ(フラグDHと「A」の復号データ)を読出し、フラグとデータを分離する。
次に、ステップS3において、読出したフラグがSであるか否かを判定する。この場合は、アドレス#0から読出したフラグがDHであるため、この判定結果はNOとなり、ステップS5に進み、前記ビット抜き出し及び判定部4により入力データストリームから次の1ビット(I)を取得する。なお、読出したフラグがSであるときは、そのデータを復号データとして出力する(ステップS4)。
【0028】
そして、ステップS6に進み、前記読出したフラグがJHであるか否かを判定する。この判定結果がYESのときはステップS7に進み、前記ステップS5で取得したビットIが0であるか否かを判定する。ビットIが0であるときは、ステップS8に進み、前記カウンタ3の計数値を+1して、前記ステップS2に戻り、前記変換ハフマンテーブル1から当該アドレスのデータを読み出す。また、取得したビットIが1であるときには、ステップS9に進み、フラグJHとともに記憶されていたデータ(ジャンプ先アドレスを示すデータ)を読出しアドレスとして前記ステップS2に戻り、前記変換ハフマンテーブル1から当該アドレスのデータを読み出す。すなわち、前記セレクタ4の入力を前記変換ハフマンテーブル1の出力側に切り替え、前記フラグJHとともに記憶されていたデータ(ジャンプ先アドレス)を読み出しアドレスとする。
【0029】
一方、前記ステップS6の判定結果がNOのときは、ステップS10に進み、読み出されたフラグがDHであるか否かを判定する。この判定結果がYES(フラグがDH)のときは、ステップS11に進み、前記1ビット取得したデータIが0であるか否かを判定する。この判定結果がYESのときは、前記カウンタ3で読み出しアドレスを+1して(ステップS12)、前記ステップS2に戻り、前記変換ハフマンテーブル1の次のアドレスを読み出す。一方、Iが1であるときは、ステップS4に進み、フラグDHとともに読み出されたデータを復号データとして出力する。
また、前記ステップS10の判定結果がNO(すなわち、読出したフラグがDL)であるときには、ステップS13に進み、前記ステップS5で1ビット取得したデータIが0であるか否かを判定する。この判定結果がYESのときは、そのフラグDLとともに記憶されていたデータを復号データとして出力する(ステップS4)。一方、Iが1であるときは、ステップS14に進み、前記カウンタ3の計数値を+1して、前記ステップS2に戻り、復号データを出力し処理終了となるまで上述したステップを繰り返す。
【0030】
一例として、入力データストリームが'01100'である場合を例にとって説明する。なお、ここでは、最上位ビットを先頭として入力されてくるものとする。
まず、前記ステップS1、S2により図3に示した変換ハフマンテーブル1のアドレス#0からフラグDHと「A」の復号データが読み出される。このとき、前記ステップS3の判定結果はNOとなり、ステップS5により前記入力データの第1ビット目('0')が取得される(I=0)。そして、ステップS6の判定結果がNO、ステップS10の判定結果がYES、ステップS11の判定結果がYESとなり、ステップS12を介して、ステップS2で前記変換ハフマンテーブル1のアドレス#1のデータ(フラグDLと「B」の復号データ)が読み出される。
そして、ステップS3がNOとなり、ステップS5で入力データの次の1ビット('1')が読み出される(I=1)。そして、ステップS6がNO、ステップS10がNO、ステップS13の判定結果がNOとなり、ステップS14でアドレスが+1されて、ステップS2で前記変換ハフマンテーブル1のアドレス#2のデータ(フラグDL、「C」の復号データ)が読み出される。
このとき、ステップS3がNOとなり、ステップS5で入力データの次の1ビット('1')が取得される(I=1)。そして、ステップS6がNO、ステップS10がNO、ステップS11がNOとなり、アドレスが+1されて、ステップS2で前記変換ハフマンテーブル1のアドレス#3のデータ(フラグJH、データ10)が読み出される。
【0031】
そして、ステップS3がNOとなり、ステップS5で、前記入力データの次の1ビット('0')が読み出される(I=0)。この場合は、ステップS6の判定結果がYESとなり、ステップS7がYESとなって、ステップS8でアドレスが+1されて、前記ステップS2で前記変換ハフマンテーブル1のアドレス#4のデータ(フラグDL、「E」の復号データ)が読み出される。
そして、ステップS3の判定結果がNOとなり、ステップS5で入力データの次の1ビット('0')が読み出される。そして、ステップS6の判定結果がNO、ステップS10の判定結果がNO、ステップS13の判定結果がYESとなり、ステップS4で前記読み出された「E」の復号データが出力されることとなる。そして、前記ステップS1から次のハフマン符号化された入力データの復号処理が行われることとなる。
【0032】
このように、本発明のハフマン符号の復号方法では、ハフマン符号ビットの入力に従い、変換ハフマンテーブルを二分木探索している。したがって、前記ハフマン変換テーブル1に対するアクセス回数は少なくてすみ、処理量を軽減することができる。
また、前記図3の変換ハフマンテーブルと前記図6のハフマンコードテーブルとを比較すると、前記復号データのデータ長を20ビットとすると、前記図6のハフマンコードテーブルの場合には、符号長が3ビット、符号語が7ビットであり、1ワード当たり30ビット必要となる。そしてテーブルの行数は12で、合計30×12=360ビットとなる。一方、前記図3に示した本発明の変換ハフマンテーブルでは、復号データに20ビット、フラグに2ビットであり、1ワード当たり22ビットとなる。そして、テーブルの行数は前記図6の場合に比べ2行増加し、14行となるので、合計22×14=308ビットとなる。このように本発明によれば、必要とするメモリ容量を削減することができる。
【0033】
また、DSPなどへの実装を考えた場合、前述した従来技術の場合には、データ、符号長、符号語の3つの要素をメモリの1語に収められるとは限らない。ハフマンコードテーブルによって、符号長や符号語の格納に必要なビット数は異なってくる。また、前記3つの要素をまとめてメモリに格納した場合には、読み出したデータを分離することが必要であり、データバス幅の制約もある。もし、3つの要素を3ワードにそれぞれ格納した場合には、それだけメモリーを消費することとなってしまう。
これに対し、本発明の場合には、前述したフラグを格納するために増加するビット数は、どの場合でも2ビットであり、常に(データバス幅−2)ビットのデータ格納領域は確保することができる。
【0034】
なお、以上の説明では、予めハフマンコードテーブルが与えられているものとして説明したが、本発明のハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法は、ハフマンコードテーブルが符号化データとともに送られてくる場合にも適用することができる。
また、本発明の復号方法で用いられている手法は、一般の二分木探索の場合に適用することができる。
【0035】
【発明の効果】
以上説明したように、本発明のハフマン符号の復号方法、復号装置によれば、復号に用いるテーブル(変換ハフマンテーブル)の記憶容量を少なくすることができる。
また、二分木探索を行っているため、変換ハフマンテーブルの参照回数を少なくすることができ、処理量を削減するとともに、処理の高速化を図ることができる。
【図面の簡単な説明】
【図1】 本発明のハフマン復号方法が実行されるハフマン復号装置の位置実施の形態の構成を示すブロック図である。
【図2】 図6に示したハフマンコードテーブルから生成した二分木を示す図である。
【図3】 本発明のハフマン復号方法に用いる変換ハフマンテーブルの例を示す図である。
【図4】 フラグについて説明するための図表である。
【図5】 本発明のハフマン復号装置の処理の流れを説明するためのフローチャートである。
【図6】 ハフマンコードテーブルの例を示す図である。
【図7】 従来のハフマン復号装置の構成例を示す図である。
【図8】 従来のハフマン復号装置の処理の流れを説明するためのフローチャートである。
【符号の説明】
1 ハフマン復号用テーブル(変換ハフマンテーブル)、2 アドレス生成手段、3 カウンタ、4 セレクタ、5 ビット抜出し及び判定部

Claims (4)

  1. ハフマン符号に対応する二分木を記述したテーブルを用いて前記ハフマン符号により符号化された入力データを復号する方法であって、
    前記テーブルは、アドレスごとに、フラグの種類を示す2ビットのフラグ領域と、復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されているものであり、
    前記フラグは、
    前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、
    前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、
    無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、
    前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであり、
    前記テーブルには、
    前記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶し、
    前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、
    前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶し、そのジャンプ先アドレスをデータ領域に記憶したことを特徴とするハフマン符号の復号方法。
  2. ハフマン符号により符号化された入力データを復号する復号装置であって、
    前記ハフマン符号に対応する二分木を記述したテーブルと、
    前記入力データを1ビットずつ抜き出し、その値を判定するビット抜出し及び判定部と、
    前記テーブルの読み出しアドレスを出力するアドレス生成手段とを有し、
    前記テーブルは、アドレスごとに、フラグの種類を示す2ビットのフラグ領域と、復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されているものであり、
    前記フラグは、
    前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、
    前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、
    無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、
    前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであり、
    前記テーブルは、
    前記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶し、
    前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、
    前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶し、そのジャンプ先アドレスをデータ領域に記憶したものであり、
    前記ビット抜出し及び判定部により1ビットずつ取得した前記入力データの値に応じて、前記テーブルの読み出しアドレスを制御し、前記テーブルを二分木探索して入力データに対応する復号データを出力することを特徴とする復号装置。
  3. ハフマン符号により符号化された入力データを復号するための前記ハフマン符号に対応する二分木を記述したテーブルであって、
    アドレスごとに、フラグの種類を示す2ビットのフラグ領域と、復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されており、
    前記フラグは、
    前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、
    前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、
    無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、
    前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであり、
    前記テーブルには、
    前記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶し、
    前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、
    前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶し、そのジャンプ先アドレスをデータ領域に記憶したことを特徴とするハフマン符号復号用テーブル。
  4. アドレスごとに、フラグの種類を示す2ビットのフラグ領域と復号データ又はジャンプ先アドレスのいずれかが格納されるデータ領域とからなる語が記憶されており、前記フラグは、
    前記入力データから抜き出された1ビットのデータが第1の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第2の値のときに前記テーブルの次のアドレスを参照することを示す第1のフラグ、
    前記入力データから抜き出された1ビットのデータの値が第2の値のときに前記テーブルのデータ領域に記憶されているデータを復号データとして出力し、第1の値のときに前記テーブルの次のアドレスを参照することを示す第2のフラグ、
    無条件に前記テーブルのデータ領域に記憶されているデータを復号データとして出力することを示す第3のフラグ、又は、
    前記入力データから抜き出された1ビットのデータの値が第1の値のときに前記テーブルの次のアドレスを参照し、第2の値のときに前記テーブルのデータ領域に記憶されているジャンプ先アドレスに移動することを示す第4のフラグのいずれかであるハフマン符号復号用テーブルの作成方法であって、
    ハフマン符号の符号テーブルから、各終端節点復号データが格納された該ハフマン符号に対応した二分木を作成する第1のステップ、
    記二分木における終端節点を1つ有する分岐節点に対して、その終端節点に接続する枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その終端節点に格納されている復号データをデータ領域に記憶する第2のステップ、
    前記二分木における終端節点を2つ有する分岐節点に対して、その一方の枝について、その枝に対応する符号語のビット値が第1の値であるときには前記第1のフラグ、第2の値であるときには前記第2のフラグをフラグ領域に記憶し、その枝に接続された終端節点に格納されている復号データをデータ領域に記憶し、その次のアドレスに、前記第3のフラグをフラグ領域に記憶し、他方の枝に接続された終端節点に格納されている復号データをデータ領域に記憶する第3のステップ、
    前記二分木における終端節点を有さない分岐節点に対して、前記第4のフラグをフラグ領域に記憶する第4のステップ、
    前記第2のステップないし前記第のステップで作成された語を二分探索順に配置する第のステップ、及び、
    前記配置後のアドレスを、前記第4のフラグを記憶したフラグ領域に対応するデータ領域に記憶する第6のステップ
    を含むことを特徴とするハフマン符号復号用テーブルの作成方法。
JP2001047823A 2001-02-23 2001-02-23 ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法 Expired - Fee Related JP4501288B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2001047823A JP4501288B2 (ja) 2001-02-23 2001-02-23 ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法
US10/081,999 US6621429B2 (en) 2001-02-23 2002-02-22 Huffman decoding method and decoder, huffman decoding table, method of preparing the table, and storage media

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001047823A JP4501288B2 (ja) 2001-02-23 2001-02-23 ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法

Publications (2)

Publication Number Publication Date
JP2002252563A JP2002252563A (ja) 2002-09-06
JP4501288B2 true JP4501288B2 (ja) 2010-07-14

Family

ID=18909176

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001047823A Expired - Fee Related JP4501288B2 (ja) 2001-02-23 2001-02-23 ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法

Country Status (2)

Country Link
US (1) US6621429B2 (ja)
JP (1) JP4501288B2 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6903669B1 (en) * 2003-10-03 2005-06-07 Cirrus Logic, Inc. Systems and methods for decoding compressed data
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
CN1307584C (zh) * 2003-11-17 2007-03-28 中兴通讯股份有限公司 一种用二维表实现的树的存储、访问的方法
KR20050053996A (ko) * 2003-12-03 2005-06-10 삼성전자주식회사 허프만 코드를 효율적으로 복호화하는 방법 및 장치
US8037102B2 (en) 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US9646107B2 (en) 2004-05-28 2017-05-09 Robert T. and Virginia T. Jenkins as Trustee of the Jenkins Family Trust Method and/or system for simplifying tree expressions such as for query reduction
US7620632B2 (en) 2004-06-30 2009-11-17 Skyler Technology, Inc. Method and/or system for performing tree matching
US7801923B2 (en) 2004-10-29 2010-09-21 Robert T. and Virginia T. Jenkins as Trustees of the Jenkins Family Trust Method and/or system for tagging trees
US7627591B2 (en) 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7636727B2 (en) 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
US7630995B2 (en) 2004-11-30 2009-12-08 Skyler Technology, Inc. Method and/or system for transmitting and/or receiving data
US8316059B1 (en) 2004-12-30 2012-11-20 Robert T. and Virginia T. Jenkins Enumeration of rooted partial subtrees
US8615530B1 (en) 2005-01-31 2013-12-24 Robert T. and Virginia T. Jenkins as Trustees for the Jenkins Family Trust Method and/or system for tree transformation
US7681177B2 (en) 2005-02-28 2010-03-16 Skyler Technology, Inc. Method and/or system for transforming between trees and strings
US8356040B2 (en) 2005-03-31 2013-01-15 Robert T. and Virginia T. Jenkins Method and/or system for transforming between trees and arrays
US7899821B1 (en) 2005-04-29 2011-03-01 Karl Schiffmann Manipulation and/or analysis of hierarchical data
US8457419B2 (en) * 2007-04-13 2013-06-04 Research In Motion Limited Method of decoding entropy-encoded data
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
US20110310976A1 (en) * 2010-06-17 2011-12-22 Qualcomm Incorporated Joint Coding of Partition Information in Video Coding
CN101990104A (zh) * 2010-11-17 2011-03-23 中兴通讯股份有限公司 视频图像编码方法及装置
US8593308B1 (en) * 2012-05-31 2013-11-26 International Business Machines Corporation Method of accelerating dynamic Huffman decompaction within the inflate algorithm
US9923576B2 (en) 2014-09-16 2018-03-20 Cisco Technology, Inc. Decoding techniques using a programmable priority encoder
US10333696B2 (en) 2015-01-12 2019-06-25 X-Prime, Inc. Systems and methods for implementing an efficient, scalable homomorphic transformation of encrypted data with minimal data expansion and improved processing efficiency
US10601443B1 (en) * 2016-08-24 2020-03-24 Arrowhead Center, Inc. Protocol for lightweight and provable secure communication for constrained devices
CN109889205B (zh) * 2019-04-03 2023-08-15 嘉楠明芯(北京)科技有限公司 编码方法及系统、解码方法及系统、编解码方法及系统
CN112181790B (zh) * 2020-09-15 2022-12-27 苏州浪潮智能科技有限公司 一种存储设备的容量统计方法、系统及相关组件

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58145274A (ja) * 1982-02-24 1983-08-30 Hitachi Ltd モデイフアイド・ホフマン符号復号化方式
JPH03131176A (ja) * 1989-10-16 1991-06-04 Victor Co Of Japan Ltd 木構造可変長符号の復号方式
JPH03220870A (ja) * 1990-01-26 1991-09-30 Ricoh Co Ltd 可変長符号の復号化テーブルの自動作成方法
JPH07170197A (ja) * 1993-12-13 1995-07-04 Ricoh Co Ltd 可変長符号の復号化テーブル自動生成方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4535320A (en) * 1984-06-22 1985-08-13 Digital Recording Research Limited Partnership Method and apparatus for digital Huffman decoding
JP3323175B2 (ja) * 1999-04-20 2002-09-09 松下電器産業株式会社 符号化装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58145274A (ja) * 1982-02-24 1983-08-30 Hitachi Ltd モデイフアイド・ホフマン符号復号化方式
JPH03131176A (ja) * 1989-10-16 1991-06-04 Victor Co Of Japan Ltd 木構造可変長符号の復号方式
JPH03220870A (ja) * 1990-01-26 1991-09-30 Ricoh Co Ltd 可変長符号の復号化テーブルの自動作成方法
JPH07170197A (ja) * 1993-12-13 1995-07-04 Ricoh Co Ltd 可変長符号の復号化テーブル自動生成方法

Also Published As

Publication number Publication date
JP2002252563A (ja) 2002-09-06
US20020130796A1 (en) 2002-09-19
US6621429B2 (en) 2003-09-16

Similar Documents

Publication Publication Date Title
JP4501288B2 (ja) ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法
US4814746A (en) Data compression method
JP4805315B2 (ja) データ構造によるコンピュータ表現及びそれに関連する符号化/復号化方法
JP3278297B2 (ja) データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
JP3974036B2 (ja) ハフマン・デコーディングを実施する方法
US20070285290A1 (en) Data coding system and method
WO1987006081A1 (en) Method of controlling path memory in viterbi decoder
KR940006020A (ko) 가변장-코드로 엔코드된 신호의 디코딩 장치
EP0127815B1 (en) Data compression method
JP2007043595A (ja) 可変長符号復号化方法および装置ならびにデータ伸長装置
US5394144A (en) Variable length code decoding apparatus
WO1986000477A1 (en) Method and apparatus for digital huffman decoding
US5329279A (en) Method of transcoding data from a thermometric code, decoder and converter applying this method
US7764205B2 (en) Decompressing dynamic huffman coded bit streams
US7205915B2 (en) Method of decoding variable length prefix codes
JP2000286717A (ja) デコード装置
JP3429623B2 (ja) 高速可変長符号復号化装置
CN112685404A (zh) 应用于键树的编码方法、应用于键树的解码方法与电子装置
JP2537551B2 (ja) 可変長符号復号回路
JP3229690B2 (ja) 可変長符号復号器
JP3332630B2 (ja) 復号装置及びデコードテーブルの生成方法
JP3036868B2 (ja) 可変長復号化器
JP2002330076A (ja) ハフマン復号装置及び復号方法
JP3659196B2 (ja) ハフマン符号の復号方法および装置
KR101270633B1 (ko) 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091027

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091225

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100412

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140430

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees