JP3199291B2 - ハフマン復号化テーブルの構成方法 - Google Patents
ハフマン復号化テーブルの構成方法Info
- Publication number
- JP3199291B2 JP3199291B2 JP11275793A JP11275793A JP3199291B2 JP 3199291 B2 JP3199291 B2 JP 3199291B2 JP 11275793 A JP11275793 A JP 11275793A JP 11275793 A JP11275793 A JP 11275793A JP 3199291 B2 JP3199291 B2 JP 3199291B2
- Authority
- JP
- Japan
- Prior art keywords
- code
- conversion table
- bits
- 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 - Lifetime
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
号する復号化処理に関し、特に、ハフマン符号によって
圧縮されたデータを復号化する際に使用されるハフマン
復号化テーブルの構成方法に関する。
めに、データの圧縮が行なわれる。圧縮の方法としては
各種のものが知られているが、ファクシミリ通信などで
はハフマン(Huffman)符号化が用いられている。ハフ
マン符号化では、頻繁に出現する記号に対して符号長の
短い符号語を対応させ、出現頻度が小さい記号に対して
は長い符号語を対応させる。したがって、ハフマン符号
化を行なった場合、その符号長は一定ではない。図1は
6種の記号に対してハフマン符号化を行なう場合を説明
するものであり、最短1ビット、最長4ビットの符号語
が生成してすることが示されている。ハフマン符号化は
図1に示すように、根(ルート)101から枝102が
延び、節103で枝102が分岐する木構造として表わ
され、木構造の各葉104すなわち枝102に末端に各
符号語が対応する。
れたデータの復号化は、符号語の最大長さに対応する大
きさの変換テーブル(ハフマン・テーブル)を用意し、
圧縮されたデータから符号語の最大長さ分のデータを読
み込み、変換テーブルを検索して入力データに対応する
記号を出力することによって行なわれる。
復号化に使用される変換テーブルのエントリー数が符号
語の最大長さで決定されることになる。すなわち、符号
語の最大長さがMビットであれば、一般にはエントリー
数は2Mとなる。図1に示した例では、総エントリー数
が24=16となる。このため符号語の数に比べて変換
テーブルのエントリー数が極端に多くなって、復号化を
処理を行なうときに、、出力すべき記号を検索するのに
要する時間が長くなり、また使用するメモリ容量やCP
Uパワーも増加するという問題点がある。
ー数が少なく、固定長の符号語に対して高速での復号化
を行なうことのできるような変換テーブルを構成する方
法を提供することにある。
テーブルの構成方法は、ハフマン符号化によって圧縮さ
れた符号化データを復号化する際に用いられハフマン符
号語と該ハフマン符号語に対応する記号との関係を示す
ハフマン・テーブルを構成する方法において、前記ハフ
マン符号語のうち最長のものの符号長がMビットである
場合に、
と、エントリー数が2のNj乗と等しくなるように第j
段目(ただしjはL以下の自然数)の変換テーブルを設
ける第2の工程と、第j段目の変換テーブルの各エント
リーごとに、対応する符号長と記号とを設定し、第(j
+1)段目の変換テーブルに対するポインタ情報を設定
する第3の工程とを有し、前記第1の工程の実施したの
ち、j=1からj=Lに達するまで、前記第2および第
3の工程を実施してjに1を加えることを繰り返し、前
記第(j+1)段目の変換テーブルが
されるものである。
テーブル全体としての総エントリー数を削減することが
できる。このとき、ハフマン符号化を表わす木構造にお
いて変換テーブルの分割が根に近い側と遠い側との間で
行なわれているので、符号長の短いすなわち出現頻度の
大きい符号語に対しては、より少ない段数の変換テーブ
ルの検索によって該当する記号を取得することができ
る。したがって、変換テーブルの分割による処理時間の
増加は起こらず、エントリー数が減少した分に見合って
処理時間が減少する。
て説明する。図1は本発明の一実施例のハフマン復号化
テーブルの構成方法の手順を示すフローチャートであ
る。
ビットであるとする。まず、
1)。そして、j=1として(ステップ12)、第j段
目の変換テーブルのエントリー数を2のNj乗とする
(ステップ13)。例えば、Nj=3であれば、10進
表示で0,1,…,7で表わされる8(=23)個のエント
リーを持つように、第j段目の変換テーブルを定める。
そして、この第j段目の変換テーブルについて、各エン
トリーごとに、対応する符号長と記号とを設定し、さら
にj<Lであれば、第(j+1)段目の変換テーブルへ
のポインタ情報を設定する(ステップ14)。ここで第
(j+1)段目の変換テーブルは、自然数列{Ni}に
おけるiが1からjまでの和すなわち
されるものである。
(ステップ15)、j=Lであれば処理を終了し、j≠
Lであればjに1を加え(ステップ16)、ステップ1
3に戻る。このような手順を進めることにより、まず第
1段目の変換テーブルが構成され、次に第2段目の変換
テーブルが構成され、以下、同様にして最後に第L段目
の変換テーブルが構成されて、全ての変換テーブルが構
成されたことになる。
た木構造で表わされるハフマン符号化(最大符号長4ビ
ット)に対し、図3に示すように符号長3ビットで変換
テーブルを分割するものとする。根101側の変換テー
ブルが第1段目の変換テーブル121となり、根101
から遠い方の変換テーブルが第2段目の変換テーブル1
22となる。これら各変換テーブル121,122の構
成が、図4に示されている。3ビットの符号長までの符
号語に対応する記号は第1段目の変換テーブル121に
登録され、符号長4ビットの記号は第2段目の変換テー
ブル122に登録されている。そして、第1段目の変換
テーブル121においてエントリー"111"には、第2段
目の変換テーブル122へのポインタ情報が登録されて
いる。なお、第1段目の変換テーブル121の最初のエ
ントリーには"0**"と記されているが、"*"は任意である
ことを示し、実際には"000","001","010","011"の4つ
のエントリーが設けられていることを示している。結
局、第1段目の変換テーブルのエントリー数は8、第2
段目の変換テーブルのエントリー数は2であって、総エ
ントリー数は10となり、図1に示したものの総エント
リー数16に比べ、大幅に減少している。
121,122を用いた復号化について説明する(図4
参照)。まず、ハフマン符号化による圧縮データから3
ビットを取り出し、第1段目の変換テーブル121を検
索する。符号長が3ビットまでの記号すなわち出現頻度
が大きい方の記号は、この段階で確定する。取り出した
3ビットが"111"である場合には、符号長が4ビットで
ある記号に対応するので、さらに1ビットを読出し、こ
の1ビットによって第2段目の変換テーブル122を検
索する。これによって、符号長が4ビットの記号も確定
する。
るMH符号の復号化処理に適用した例を説明する。MH
符号は、ハフマン符号に若干の修正を加えたものである
から、本実施例を適用することができる。ファクシミリ
でのMH符号化処理は画像符号化処理であり、復号化し
て取得される記号は、画像上での白または黒のランレン
グスとなる。
な流れについて図5を用いて説明する。まず、圧縮デー
タファイルを読み込み(ステップ31)、終端符号(E
OF)であるかどうかのチェックを行なう(ステップ3
2)。終端符号を検出した場合には処理を終了し、そう
でない場合には、白または黒のデータについて交互に
(ステップ33)、ランレングスへの復号化(ステップ
34またはステップ35)を行ない、復号化して得たデ
ータをイメージデータとして書き込む(ステップ3
6)。そして、ステップ32に戻り、終端符号を検出す
るまで、ステップ33〜36の処理を繰り返すようにな
っている。MH符号では、画像上での白領域の符号化と
黒領域の符号化とが異なるハフマン符号を用いて行なわ
れるので、復号化処理も白と黒とで分けて行なわれ、白
と黒とで別々に変換テーブルが設けられることになる。
なお、符号語の長さの最大値は、白については12ビッ
ト、黒については13ビットである。
白に対しては、符号長8ビットで変換テーブルの分割を
行ない、第1段目をメインテーブル131とする。そし
て、第2段目をサブテーブル132とメークアップ符号
用拡張テーブル133の2本立てとする。このように第
2段目に相当する変換テーブルを2つ設けるのは、拡張
メークアップ符号に属する符号語が必ず"00000001"で始
まる11ビットあるいは12ビットのものであり、拡張
メークアップ符号以外の白の符号語はたかだか9ビット
であることに対応している。これら各テーブル131〜
133の内容およびその相互関係が図6に示されてい
る。なお、メインテーブル131において符号長が負と
なっているのは、終端符号であること、あるいはサブテ
ーブル132やメークアップ符号用拡張テーブル133
に対するポインタ情報であることを示している。なお、
メインテーブル131のエントリー数は256、サブテ
ーブル132とメークアップ符号用拡張テーブル133
のエントリー数はそれぞれ16であり、各エントリー、
符号長、ランレングスはそれぞれ10進数で表示されて
いる。
31〜133を用いて行なう復号化処理について、図7
のフローチャートを用いて説明する。
したのち(図5のステップ32)、データ圧縮の行なわ
れているデータファイルから8ビット分のビット列を読
み出し(ステップ41)、このビット列の前後の順番を
逆転させる(ステップ42)。例えば、ビット列が"000
00101"であれば、"10100000"と逆転される。そして、逆
転して得たビット列に基づいて、メインテーブル131
を参照する(ステップ43)。メインテーブル131の
エントリーの中にこのビット列に対応するものが必ずあ
るから、そのエントリーの符号長とランレングスとを読
み出す。そして、読み出された符号長mがいくつである
かの判定を行なう(ステップ44)。
のみでランレングスが確定する場合である。この場合に
は、m=8かどうかを調べ(ステップ45)、m=8で
あればそのままランレングスを決定し(ステップ5
4)、m≠8であれば、符号語が8ビットより短い場合
であるので、データファイルにおいて(8−m)ビット
だけポインタを後退させてから(ステップ46)、ラン
レングスを決定する(ステップ54)。ステップ46で
の(8−m)ビットは、切り出された符号長と有効なビ
ット数との差に相当する。
プ符号以外の符号であってかつ符号長が9ビットの場合
であるので、データファイルからさらに1ビットを切り
出す(ステップ47)。切り出された1ビットをNとす
ると、(−2)*m+Nをビット演算で求め、求めた値
をサブテーブル132で検索するエントリーとし(ステ
ップ48)、サブテーブル132を参照する(ステップ
49)。実際には計算がビット演算で行なわれること、
m<0であることから、図8に示すように、符号長mの
下3ビットを1ビット左にシフトさせ、最下位ビットを
Nとした4ビットの値がエントリー値となる。そしてサ
ブテーブル132を参照して得たランレングスをもって
ランレングスを決定する(ステップ54)。
の場合であるので、データファイルから4ビットを切り
出し(ステップ50)、切り出したビット列の前後の順
番を逆転させる(ステップ51)。そして、逆転された
4ビットのビット列に応じてメークアップ符号用拡張テ
ーブル133を参照し(ステップ52)、ランレングス
を求める。この場合、メークアップ符号用拡張テーブル
133に登録された符号長nが4ビット未満の場合に
は、有効なビット数との差分だけデータファイルのポイ
ンタを後退させるものとする(ステップ53)。そし
て、メークアップ符号用拡張テーブル133の参照結果
に応じて、ランレングスを決定する(ステップ54)。
ら、処理を終了する。なお、メインテーブル131にお
いてエントリー"0"の符号長が"-9"となっているが、こ
れは"0"が8ビット続くのが終端符号(EOF)である
ことを示すためである。
黒に対しては、符号長8ビットで変換テーブルの分割を
行ない、第1段目をメインテーブル141とする。そし
て、第2段目をサブテーブル142とする。メインテー
ブル141のエントリー数は156であり、サブテーブ
ル142のエントリー数は224である。ここでサブテ
ーブル142のエントリー数が変則的なのは、全体とし
ての復号化処理を効率的に行なうためである。これら各
テーブル141,142の内容およびその相互関係が図
9に示されている。なお、メインテーブル141におい
て符号長が負となっているのは、終端符号であることあ
るいはサブテーブル142に対するポインタ情報である
ことを示している。なお、各エントリー、符号長、ラン
レングスはそれぞれ10進数で表示されている。
41,142を用いて行なう復号化処理について、図1
0のフローチャートを用いて説明する。
したのち(図5のステップ32)、データ圧縮の行なわ
れているデータファイルから8ビット分のビット列を読
み出し(ステップ61)、このビット列の前後の順番を
逆転させる(ステップ62)。逆転して得たビット列に
基づいて、メインテーブル141を参照し(ステップ6
3)、このビット列に対応するエントリーの符号長とラ
ンレングスとを読み出す。そして、読み出された符号長
mを判定を行なう(ステップ64)。
のみでランレングスが確定する場合である。この場合に
は、m=8かどうかを調べ(ステップ65)、m=8で
あればそのままランレングスを決定し(ステップ7
6)、m≠8であれば、符号語が8ビットより短い場合
であるので、データファイルにおいて(8−m)ビット
だけポインタを後退させてから(ステップ66)、ラン
レングスを決定する(ステップ76)。
からさらに5ビットを切り出し、切り出された5ビット
をNとする(ステップ67)。ビット列Nの前後の順番
を逆転させ(ステップ68)、(−32)*m+Nをビ
ット演算で求め、求めた値をサブテーブル142で検索
するエントリーとし(ステップ69)、サブテーブル1
42を参照する(ステップ70)。実際には計算がビッ
ト演算で行なわれること、m<0であることから、図1
1に示すように、符号長mの下3ビットを5ビット左に
シフトさせ、下5ビットを逆転後のNとした8ビットの
値がエントリー値となる。サブテーブル142を参照し
た結果、登録されている符号長nとランレングスとが得
られるが、n≠5の場合には、ステップ66と同様に、
データファイルにおいてポインタを(5−n)ビットだ
け後退させる(ステップ71)。そしてサブテーブル1
32を参照して得たランレングスをもってランレングス
を決定する(ステップ76)。
場合であるので、データファイルから4ビットを切り出
し(ステップ72)、切り出したビット列の前後の順番
を逆転させる(ステップ73)。そして、逆転された4
ビットのビット列に応じてサブテーブル142を参照し
(ステップ74)、ランレングスを求める。この場合、
サブテーブル142に登録された符号長n'が4ビット
未満の場合には、有効なビット数との差分だけデータフ
ァイルのポインタを後退させるものとする(ステップ7
5)。そして、サブテーブル142の参照結果に応じて
ランレングスを決定する(ステップ76)。
ら、処理を終了する。なお、メインテーブル141にお
いてエントリー"0"の符号長が"-7"となっているが、こ
れは"0"が8ビット続くのが終端符号(EOF)である
ことを示すためである。また図9で"011?1110"とあるの
は、"01101110"あるいは"01111110"であることを示して
いる。
るMH符号に適用した例を説明したが、このようにMH
符号の復号化に使用される変換テーブルを分割すること
により、変換テーブル全体としての総エントリー数が大
幅に減少し、高速での画像復号化処理を達成することが
できる。
符号語とハフマン符号語に対応した記号との対応関係を
表わす変換テーブルを分割することにより、復号化に使
用される変換テーブル全体としての総エントリー数を削
減することができという効果があり、また、ハフマン符
号において出現頻度が高いために短い符号長を割り当て
られた符号語に対しては、より少ない段数の変換テーブ
ルの検索によって該当する記号を取得することができる
ので、変換テーブルの分割による復号化処理時間の劣化
を防止することができるという効果がある。
構成方法を手順を説明するフローチャートである。
割を説明する図である。
ブルを説明する図である。
ある。
説明する図である。
するフローチャートである。
説明する図である。
明するフローチャートである。
テップ 121,122 変換テーブル 131,141 メインテーブル 132,142 サブテーブル 133 メークアップ符号用拡張テーブル
Claims (1)
- 【請求項1】 ハフマン符号化によって圧縮された符号
化データを復号化する際に用いられハフマン符号語と該
ハフマン符号語に対応する記号との関係を示すハフマン
・テーブルを構成する方法において、 前記ハフマン符号語のうち最長のものの符号長がMビッ
トである場合に、 【数1】 となるように自然数の列{Ni}を定める第1の工程
と、 エントリー数が2のNj乗と等しくなるように第j段目
(ただしjはL以下の自然数)の変換テーブルを設ける
第2の工程と、 第j段目の変換テーブルの各エントリーごとに、対応す
る符号長と記号とを設定し、第(j+1)段目の変換テ
ーブルに対するポインタ情報を設定する第3の工程とを
有し、 前記第1の工程の実施したのち、j=1からj=Lに達
するまで、前記第2および第3の工程を実施してjに1
を加えることを繰り返し、 前記第(j+1)段目の変換テーブルが 【数2】 を越える符号長のハフマン符号語の復号化において使用
されるものであることを特徴とするハフマン復号化テー
ブルの構成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11275793A JP3199291B2 (ja) | 1993-05-14 | 1993-05-14 | ハフマン復号化テーブルの構成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP11275793A JP3199291B2 (ja) | 1993-05-14 | 1993-05-14 | ハフマン復号化テーブルの構成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06326616A JPH06326616A (ja) | 1994-11-25 |
JP3199291B2 true JP3199291B2 (ja) | 2001-08-13 |
Family
ID=14594786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP11275793A Expired - Lifetime JP3199291B2 (ja) | 1993-05-14 | 1993-05-14 | ハフマン復号化テーブルの構成方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3199291B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003309471A (ja) | 2002-04-15 | 2003-10-31 | Fujitsu Ltd | 可変長符号データ復号装置および復号方法 |
WO2013132590A1 (ja) * | 2012-03-06 | 2013-09-12 | 富士通株式会社 | プログラム、情報処理装置およびデータ生成方法 |
-
1993
- 1993-05-14 JP JP11275793A patent/JP3199291B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH06326616A (ja) | 1994-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4814746A (en) | Data compression method | |
EP0695040B1 (en) | Data compressing method and data decompressing method | |
US5229768A (en) | Adaptive data compression system | |
US20020196166A1 (en) | Data compression method and data compression apparatus | |
US6128412A (en) | Statistical data compression/decompression method | |
JPH1188192A (ja) | データ圧縮方法及び装置 | |
EP0127815A2 (en) | Data compression method | |
JP3241788B2 (ja) | データ圧縮方式 | |
JP3199291B2 (ja) | ハフマン復号化テーブルの構成方法 | |
CN112527951B (zh) | 整数数据的存储方法、装置及存储介质 | |
JP2940948B2 (ja) | データ圧縮方式 | |
Ghuge | Map and Trie based Compression Algorithm for Data Transmission | |
EP0871294B1 (en) | Method and apparatus for compression and decompression of data | |
JP3199292B2 (ja) | ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法 | |
JP2774350B2 (ja) | データ圧縮方法および圧縮データのデータ復元方法 | |
JP3130324B2 (ja) | データ圧縮方式 | |
JPH06168097A (ja) | データ符号化方式及びデータ復元方式 | |
JP3038233B2 (ja) | データ圧縮及び復元装置 | |
JPH07152533A (ja) | データ圧縮装置 | |
JPH02190080A (ja) | 画像符号化装置 | |
JP3053656B2 (ja) | データ圧縮における辞書登録方式 | |
JP3100206B2 (ja) | データ圧縮方法 | |
JP3012677B2 (ja) | Zl符号化方法 | |
Andrii et al. | UDC 004.627 LZW COMPRESSION ALGORITHM | |
JP3115066B2 (ja) | 辞書検索方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090615 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090615 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100615 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100615 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110615 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120615 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130615 Year of fee payment: 12 |
|
EXPY | Cancellation because of completion of term |