JPH0936748A - ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置 - Google Patents

ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置

Info

Publication number
JPH0936748A
JPH0936748A JP18296795A JP18296795A JPH0936748A JP H0936748 A JPH0936748 A JP H0936748A JP 18296795 A JP18296795 A JP 18296795A JP 18296795 A JP18296795 A JP 18296795A JP H0936748 A JPH0936748 A JP H0936748A
Authority
JP
Japan
Prior art keywords
huffman
data
code
codes
types
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.)
Pending
Application number
JP18296795A
Other languages
English (en)
Inventor
Masaya Tomono
将也 伴野
Atsuko Toda
亜津子 戸田
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.)
Toshiba Corp
Toshiba Computer Engineering Corp
Original Assignee
Toshiba Corp
Toshiba Computer Engineering 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 Toshiba Corp, Toshiba Computer Engineering Corp filed Critical Toshiba Corp
Priority to JP18296795A priority Critical patent/JPH0936748A/ja
Publication of JPH0936748A publication Critical patent/JPH0936748A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Transmission Systems Not Characterized By The Medium Used For Transmission (AREA)

Abstract

(57)【要約】 【課題】 ハフマン符号化データファイルの一部分とし
て出力するハフマン木情報のデータ量を極力少なくす
る。 【解決手段】 本発明のハフマン符号化方法は、圧縮前
のデータファイル中における各コードの出現頻度に応じ
て作成されたハフマン符号表に基づいて上記データファ
イルの各コードをハフマン符号化することにより、ハフ
マン符号化データファイルを作成してデータ圧縮する方
法において、出現したコードの種類数を格納するデータ
領域と、出現したコードを出現頻度の順に並べて成る第
1のデータ配列と、ビット長が同じハフマン符号の種類
数を格納するデータ領域をハフマン符号のビット長の順
に並べて成る第2のデータ配列とをハフマン符号化デー
タファイルの先頭部分に配設するように構成したもので
ある。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ハフマン符号化方
法及びその装置並びにハフマン復号化方法及びその装置
に関する。
【0002】
【従来の技術】文字を表わすコードを並べて成るデータ
ファイルのデータ量を圧縮する方法として、従来より、
ハフマン符号化方法が使用されている。このハフマン符
号化方法では、データファイル中における各コードの出
現頻度に応じて作成したハフマン符号表に基づいて各コ
ードをハフマン符号化することにより、ハフマン符号化
データファイルを作成している。この場合、出現頻度の
高いコードほど短いビット列のハフマン符号に置き換え
られるようになっており、これによりデータ量が圧縮さ
れるのである。
【0003】また、上記ハフマン符号化データファイル
を元のデータファイルに戻す場合、即ち、ハフマン符号
を元のコードに復号する場合、ハフマン木情報のデータ
が必要である。このハフマン木情報は、ハフマン符号化
前のコードと、ハフマン符号化後のコード(即ちハフマ
ン符号)と、ハフマン符号のビット長とから構成された
データである。具体的には、ハフマン符号のデータとハ
フマン符号のビット長のデータとを並べたデータをハフ
マン符号化前のコードの順番(予め決めた順番)で並べ
て構成したデータ配列を、ハフマン木情報のデータとし
ている。この場合、上記データ配列の順番でハフマン符
号化前のコードがわかるようになっている。そして、上
記ハフマン木情報のデータをハフマン符号化データファ
イルの先頭部分に配設するように構成されている。
【0004】
【発明が解決しようとする課題】上記従来構成では、ハ
フマン木情報のデータ量は、ハフマン符号化前のコード
の種類数をχとすると、次式で表現されるビット数とな
る。
【0005】(ハフマン符号を格納するのに必要なデー
タ領域のビット数+ハフマン符号のビット長を格納する
のに必要なデータ領域のビット数)×χ この場合、コードの種類数がある程度多くなると、ハフ
マン木情報のデータ量がかなり多くなってしまうという
不具合があった。これに対して、ハフマン木情報のデー
タ量を少なくする構成として、特公平2−50667号
公報に記載された装置がある。
【0006】上記装置においては、ハフマン符号のデー
タを省略し、ハフマン符号のビット長のデータだけを並
べたデータの配列だけでハフマン木情報のデータを構成
するようにしている。この構成の場合、符号化のときと
復号化のときとで同じアルゴリズムを用いてハフマン符
号の割り当てを行うことにより、ハフマン符号のデータ
がなくても復号化可能な構成となっている。これによっ
て、上記公報の装置では、ハフマン符号化前のコードの
全種類数をαとすると、ハフマン木情報のデータ量は次
式で表現されるビット数となる。
【0007】(ハフマン符号のビット長を格納するのに
必要なデータ領域の最大ビット数)×α これにより、ハフマン木情報のデータ量をかなり少なく
することができる。しかし、上記装置の場合、データフ
ァイル中に出現しない文字のコードについてのデータを
ハフマン木情報のデータの中に含めて出力する構成とな
っている。具体的には、符号化前のコードがmビットの
データで表現されているとした場合、データファイル中
に出現する文字のコードの種類数に関係なく、常に(2
のm乗)個の要素から成るデータ配列をハフマン木情報
のデータとして出力している。このため、データファイ
ル中に出現する文字のコードの種類数が少ない場合に
は、ハフマン木情報のデータとして無駄なデータをかな
り多く出力しているという不具合があり、改善の余地が
あった。
【0008】そこで、本発明の目的は、ハフマン木情報
のデータ量を極力少なくすることができるハフマン符号
化方法及びその装置並びにハフマン復号化方法及びその
装置を提供するにある。
【0009】
【課題を解決するための手段】本発明のハフマン符号化
方法は、文字を表わすコードを並べて成るデータファイ
ルを、該データファイル中における各コードの出現頻度
に応じて作成されたハフマン符号表に基づいて各コード
をハフマン符号化することにより、ハフマン符号化デー
タファイルを作成する方法において、出現したコードの
種類数を格納するデータ領域と、出現したコードを出現
頻度の順に並べて成る第1のデータ配列と、ビット長が
同じハフマン符号の種類数を格納するデータ領域をハフ
マン符号のビット長の順に並べて成る第2のデータ配列
とを前記ハフマン符号化データファイルの先頭部分に配
設するように構成したところに特徴を有する。そして、
この方法において、出現したコードの種類数が1である
場合には、前記第2のデータ配列を省略するように構成
することが好ましい。
【0010】また、本発明のハフマン符号化装置は、文
字を表わすコードを並べて成るデータファイルを、該デ
ータファイル中における各コードの出現頻度に応じて作
成されたハフマン符号表に基づいて各コードをハフマン
符号化することによりハフマン符号化データファイルを
作成するものにおいて、出現したコードの種類数を格納
するデータ領域を作成する手段と、出現したコードを出
現頻度の順に並べて成る第1のデータ配列を作成する手
段と、ビット長が同じハフマン符号の種類数を格納する
データ領域をハフマン符号のビット長の順に並べて成る
第2のデータ配列を作成する手段と、前記データ領域、
前記第1のデータ配列及び前記第2のデータ配列を前記
ハフマン符号化データファイルの先頭部分に配設する手
段とを備えたところに特徴を有する。そして、この装置
において、出現したコードの種類数が1である場合に
は、前記第2のデータ配列を省略するように構成するこ
とが良い構成である。
【0011】一方、本発明のハフマン符号復号方法は、
ハフマン符号化データファイルをハフマン復号表に基づ
いて元のコードへ復号することにより、元のデータファ
イルを復元する方法において、出現したコードの種類数
を格納するデータ領域と、出現したコードを出現頻度の
順に並べて成る第1のデータ配列と、ビット長が同じハ
フマン符号の種類数を格納するデータ領域をハフマン符
号のビット長の順に並べて成る第2のデータ配列とに基
づいて前記ハフマン復号表を作成するように構成したと
ころに特徴を有する。この方法において、出現したコー
ドの種類数が1である場合には、前記データ領域と前記
第1のデータ配列とから前記ハフマン復号表を作成する
ように構成することが一層好ましい。
【0012】そして、本発明のハフマン符号復号装置
は、ハフマン符号化データファイルをハフマン復号表に
基づいて元のコードへ復号することにより、元のデータ
ファイルを復元するものにおいて、出現したコードの種
類数を格納するデータ領域を読み込む手段と、出現した
コードを出現頻度の順に並べて成る第1のデータ配列を
読み込む手段と、ビット長が同じハフマン符号の種類数
を格納するデータ領域をハフマン符号のビット長の順に
並べて成る第2のデータ配列を読み込む手段と、前記デ
ータ領域と前記第1のデータ配列と前記第2のデータ配
列とに基づいて前記ハフマン復号表を作成する手段とを
備えたところに特徴を有する。この装置において、出現
したコードの種類数が1である場合には、前記データ領
域と前記第1のデータ配列とから前記ハフマン復号表を
作成する手段を備えることがより一層好ましい。
【0013】上記手段によれば、データファイル中に出
現したコードだけについて、その種類数を格納したデー
タ領域と、出現したコードを出現頻度の順に並べた第1
のデータ配列と、ビット長が同じハフマン符号の種類数
を格納するデータ領域をハフマン符号のビット長の順に
並べた第2のデータ配列とを、ハフマン木情報としてハ
フマン符号化データファイルの先頭部分に配設するよう
に構成したので、出現したコードについてのデータだけ
がハフマン木情報のデータの中に含まれるようになる。
このため、出現しないコードについてのデータをハフマ
ン木情報のデータの中に含めて出力する従来構成に比べ
て、ハフマン木情報のデータ量を少なくすることが可能
となる。
【0014】そして、上記方法において、出現したコー
ドの種類数が1である場合には、第2のデータ配列が不
要であるから、この第2のデータ配列を省略するように
構成すると、ハフマン木情報のデータ量をより一層少な
くすることが可能となる。
【0015】
【発明の実施の形態】以下、本発明の一実施例について
図面を参照しながら説明する。まず、図1はハフマン符
号化装置であると共にハフマン復号装置であるデータ処
理装置の概略電気的構成を示すブロック図である。この
図1に示すように、データ処理装置1は、CPU2、記
憶装置3、ROM4及びRAM5をバス6を介して接続
して構成されている。この場合、CPU2は、マイクロ
プロセッサから構成されており、データ処理装置1全体
を制御する機能を有している。また、記憶装置3は、例
えばハードディスクやフロッピーディスク等から構成さ
れている。
【0016】この記憶装置3には、データ圧縮する対象
のデータファイル(即ち、文字を表わすコード(例えば
EBCDICコードやJISコードや漢字コード等)を
並べて成るデータファイル)が記憶されていると共に、
データ圧縮した後のデータファイル(即ち、ハフマン符
号化データファイル)が出力されて記憶されるようにな
っている。更に、ROM4には、ハフマン符号化処理及
びハフマン復号化処理を実行するためのプログラムが記
憶されている。そして、RAM5には、ハフマン符号化
処理時及びハフマン復号化処理時に生成したり、使用し
たりする各種のデータ配列やデータテーブル等を書き込
むための領域が確保されるようになっている。
【0017】次に、上記構成の作用を図2ないし図7も
参照して説明する。まず、ハフマン符号化処理を実行し
てデータを圧縮する場合について述べる。ここで、デー
タ圧縮した後のデータファイル、即ち、ハフマン符号化
データファイルの具体的構成を図2に従って説明する。
図2に示すように、ハフマン符号化データファイル7
は、先頭から順に、出現したコードの全データ数を格納
するデータ領域8と、出現したコードの種類数を格納す
るデータ領域9と、出現したコードを出現頻度順に並べ
て成る第1のデータ配列10と、ビット長が同じハフマ
ン符号の種類数を格納するデータ領域をハフマン符号の
ビット長の順に並べて成る第2のデータ配列11と、コ
ードをハフマン符号化したハフマン符号から成るハフマ
ン符号化データ12とを並べて構成されている。
【0018】この場合、データ領域8には、圧縮前のデ
ータファイル中に出現するコードの各出現回数の総和、
即ち、データファイル中に存在するコードの総数(全デ
ータ数)が格納されている。このデータ領域8のデータ
長は、対象とするデータファイルの許容最大値を格納可
能な大きさに設定されるようになっている。また、デー
タ領域9には、圧縮前のデータファイル中に出現するコ
ードの種類数が格納されており、この格納されている数
値により、この後に続く第1のデータ配列10の長さ
(コードの個数)がわかるようになっている。本実施例
の場合、コードとして例えば1バイトのコードを対象と
しているので、コードの種類数は最大でも256種類
(「0」H〜「FF」H、尚、Hは16進数を示す)で
ある。従って、データ領域9のデータ長は、1バイトま
たは2バイトで良い。
【0019】そして、第1のデータ配列10は、圧縮前
のデータファイル中に出現したコードを出現頻度の順
に、この場合、出現頻度の昇順に並べて構成されたデー
タ配列である。具体的には、圧縮前のデータファイル中
に出現したコードのうちで出現頻度が最小のコードが
「D」、その次のコードが「S」、その次のコードが
「A」、その次のコードが「C」、………であったとす
ると、第1のデータ配列10は、図3(a)に示すよう
なデータ構成となる。そして、圧縮前のデータファイル
中に出現したコードの種類数がa個であったとすると、
第1のデータ配列10のデータ長はaバイトとなる。
【0020】また、第2のデータ配列11は、ビット長
が同じハフマン符号の種類数を格納するデータ領域をハ
フマン符号のビット長の順に、この場合、ビット長の昇
順に並べて構成された配列である。具体的には、今、コ
ードの種類数がa個であったときに、ビット長が16ビ
ットのハフマン符号までで出現したコードをすべてハフ
マン符号に割り当てることができたとする。そして、0
ビットのハフマン符号の種類数が0、1ビットのハフマ
ン符号の種類数が0、2ビットのハフマン符号の種類数
が2、………、14ビットのハフマン符号の種類数が
1、15ビットのハフマン符号の種類数が1、16ビッ
トのハフマン符号の種類数が2であったとする。する
と、第2のデータ配列11は、図3(b)に示すような
データ構成となる。尚、この場合、2個の16ビットの
ハフマン符号が「D」と「S」のコードに対応し、1個
の15ビットのハフマン符号が「A」のコードに対応
し、1個の14ビットのハフマン符号が「C」のコード
に対応し、………、2個の2ビットのハフマン符号が出
現頻度が最も高い2個のコードに対応するということを
示している。そして、各ビット長のハフマン符号の個数
を格納するデータ領域の長さを1バイトとしているか
ら、上記第2のデータ配列11のデータ長は、17×1
バイトとなる。ここで、第2のデータ配列11のデータ
長は出現したコードの種類数aによって決まるようにな
っている。即ち、1ビットのハフマン符号の個数から順
に個数を加算していき、加算値が種類数aに達したとこ
ろで第2のデータ配列11の出力(作成)を終了するよ
うに構成されているのである。
【0021】そして、ハフマン符号化データ12は、デ
ータ圧縮前のデータファイルの各コードを出現順にハフ
マン符号化したハフマン符号をその出現順に並べて構成
されたデータである。
【0022】次に、ハフマン符号化処理を実行する場合
について、図4及び図5も参照して述べる。これら図4
及び図5のフローチャートは、ハフマン符号化処理のプ
ログラムの概略制御内容を示すものである。ハフマン符
号化処理を実行する場合、まず、図4のステップS1に
示すように、ハフマン符号(ハフマンコード)を生成す
る処理を実行する。この場合、データ圧縮前のデータフ
ァイルを一通り読み込むことにより、各コードの出現回
数(頻度)をカウントする。続いて、周知のハフマン符
号化方法により、カウントした出現回数のデータに基づ
いてハフマン符号生成のために必要な一般的なハフマン
木を作成する。このとき、ハフマン木を作成する際に
は、通常、出現回数の少ない順にコードを取り出す処理
を行うので、コードを取り出す毎に、そのコードを第1
のデータ配列10の先頭から順にセットしていくように
構成することが可能である。
【0023】これにより、上記ハフマン木が完成した時
点で、第1のデータ配列10の作成も完了する。次い
で、上記ハフマン木に基づいて第2のデータ配列11を
作成する。具体的には、上記ハフマン木をroot側か
ら順にたどっていくことにより、ハフマン符合のビット
長毎に何個のハフマン符合が存在するのかをカウントし
ていく。そして、これら各カウント値をビット長の昇順
に第2のデータ配列11の先頭から順にセットしていく
ことにより、第2のデータ配列11の作成が完了するよ
うになっている。
【0024】続いて、上記したように作成した第1のデ
ータ配列10と第2のデータ配列11とに基づいて、ハ
フマン符合のビット長のデータ配列から成る第3のデー
タ配列13(図3(c)参照)と、ハフマン符合のデー
タ配列から成る第4のデータ配列14(図3(d)参
照)とを作成する。このうちの第3のデータ配列13
は、圧縮前のコードに割り当てられたハフマン符合のビ
ット長を格納したデータ領域(例えば1バイトのデー
タ)を予め決めた順(例えばコードの値の昇順)に並べ
て構成されたものである。この場合、圧縮前のコードの
全種類、本実施例の場合、256種類のコード「0」H
〜「FF」Hのすべてについて、上記第3のデータ配列
13が作成されるように構成されている。
【0025】従って、第3のデータ配列13の配列の順
番によりコードの種類を特定することができると共に、
その特定したコードに割り当てられたハフマン符合のビ
ット長がわかるようになっている。具体的には、図3
(c)に示すように、第3のデータ配列13において、
例えばコード「A」に対応する順番の1バイトのデータ
領域内にはビット長が15ビットであることを示す数値
が格納され、例えばコード「C」に対応する順番の1バ
イトのデータ領域内にはビット長が16ビットであるこ
とを示す数値が格納されている。尚、上記第3のデータ
配列13において、ハフマン符合が割り当てられていな
いコード(圧縮前のデータファイルに出現しないコー
ド)に対応する順番の1バイトのデータ領域にはそれぞ
れ「0」が格納されており、これにより、そのコードが
出現しないコードであることがわかる構成となってい
る。
【0026】また、第4のデータ配列14は、圧縮前の
コードに割り当てられたハフマン符合を格納したデータ
領域(例えば2バイトのデータ)を上記第3のデータ配
列の順序と同じ順序、即ち、コードの値の昇順に並べて
構成されたものである。この場合、圧縮前のコードの全
種類、つまり、256種類のコード「0」H〜「FF」
Hのすべてについて上記第4のデータ配列14が作成さ
れている。これにより、第4のデータ配列14の配列の
順番によりコードの種類を特定することができると共
に、その特定したコードに割り当てられたハフマン符合
がわかるようになっている。具体的には、図4(d)に
示すように、第4のデータ配列14において、例えばコ
ード「A」に対応する順番の2バイトのデータ領域内に
はビット長が15ビットのハフマン符合がその先頭から
格納され、例えばコード「C」に対応する順番の2バイ
トのデータ領域内にはビット長が16ビットのハフマン
符合がその先頭から格納されている。尚、上記第4のデ
ータ配列14において、ハフマン符合が割り当てられて
いないコード(圧縮前のデータファイルに出現しないコ
ード)に対応する順番のデータ領域にはそれぞれ「0」
が格納されている。また、本実施例では、上記各データ
領域の先頭からハフマン符合を格納する構成としたが、
これに代えて、各データ領域内に後詰め方式でハフマン
符合を格納する構成としても良い。更に、本実施例で
は、ハフマン符合を格納する各データ領域の長さを2バ
イトに設定したが、ハフマン符合のビット長が16ビッ
トを越える場合には、その越えた長さを格納可能な長さ
のデータ領域を設定するように構成すれば良い。
【0027】そして、上記第3のデータ配列13と第4
のデータ配列14とに基づいてハフマン符合化処理を実
行することが可能である。この場合、上記第3のデータ
配列13と第4のデータ配列14とからハフマン符合表
が構成されるようになっている。そして、上記ハフマン
木、第1のデータ配列10、第2のデータ配列11、第
3のデータ配列13及び第4のデータ配列14を作成完
了することにより、ハフマン符合生成処理(ステップS
1)が完了する。尚、上記ハフマン木、第1のデータ配
列10、第2のデータ配列11、第3のデータ配列13
及び第4のデータ配列14は、いずれもRAM5内の適
当な領域に作成されるように構成されている。
【0028】次に、データ領域8、並びに、「元情報」
であるデータ領域9、第1のデータ配列10及び第2の
データ配列11を記憶装置3へ出力して、出力ファイル
(ハフマン符号化データファイル)の先頭部分を作成す
る処理を実行する(ステップS2)。この処理は、図5
に示すサブルーチンAで実行される。具体的には、ま
ず、データ領域8、即ち、出現したコードの全データ数
をハフマン符号化データファイルの先頭に出力する(ス
テップS200)。続いて、上記データ領域8の後にデ
ータ領域9、即ち、出現したコードの種類数aを出力す
る(ステップS201)。
【0029】そして、上記データ領域9に続いて第1の
データ配列10を出力する。この場合、第1のデータ配
列10の先頭の出現コードから順に出力していく。具体
的には、出現コードを全て出力したか否かを判断し(ス
テップS202)、全て出力してないければ、ステップ
S202にて「NO」へ進み、出現コードをハフマン符
号化データファイルに出力する(ステップS203)。
そして、第1のデータ配列10の最後の出現コードを出
力すると、ステップS202にて「YES」へ進み、上
記第1のデータ配列10に続いて第2のデータ配列11
を出力する処理を実行する。
【0030】この場合、まず、出現したコードの種類数
aが1であるか否かを判断し(ステップS204)、2
種類以上である場合には、ステップS203にて「N
O」へ進む。そして、第2のデータ配列11の全ての有
効データを出力したか否かを判断し(ステップS20
5)、出力していない場合には、ステップS205にて
「NO」へ進む。続いて、第2のデータ配列11の先頭
のデータ、即ち、ビット長が0ビットのハフマン符合の
種類数から順にハフマン符号化データファイルに出力す
る(ステップS206)。そして、出力したハフマン符
合の種類数を積算してその和を求める(ステップS20
7)。この場合、上記積算した和の値が出現コードの種
類数aに等しくなることにより、第2のデータ配列11
の全ての有効データを出力したことがわかる。この後、
第2のデータ配列11の全ての有効データを出力する
と、ステップS205にて「YES」へ進み、図4のス
テップS3へ進む。これにより、データ領域8並びに
「元情報」(データ領域9、第1のデータ配列10及び
第2のデータ配列11)をハフマン符号化データファイ
ルの先頭部分に配設(出力)する処理が完了する。
【0031】また、ステップS204において、出現し
たコードの種類数aが1である場合には、第2のデータ
配列11を出力する必要がないから、ステップS204
にて「YES」へ進み、データ領域8並びに「元情報」
の出力処理を完了し、図4のステップS3へ進むように
構成されている。
【0032】次に、上記したようにして「元情報」の出
力処理を完了したら、圧縮前のデータファイル中のコー
ドを先頭から順にハフマン符合化すると共に、符号化し
たハフマン符合をハフマン符号化データファイルのハフ
マン符号化データ12として出力する処理を実行する。
具体的には、まず、圧縮前のデータファイルの最後のコ
ードを符号化したか否かを判断し(ステップS3)、符
号化していない場合には、ステップS3にて「NO」へ
進む。そして、圧縮前のデータファイルの先頭のコード
から順にハフマン符号化する(ステップS4)。この場
合、ハフマン符合表である前記第3のデータ配列13
(図3(c)参照)と前記第4のデータ配列14(図3
(d)参照)とに基づいてハフマン符号化処理を行うよ
うに構成されている。そして、符号化したハフマン符合
をハフマン符号化データファイルのハフマン符号化デー
タ12として逐次出力するように構成されている。
【0033】この後、圧縮前のデータファイルの最後の
コードのハフマン符号化を完了すると、ステップS3に
て「YES」へ進む。これにより、ハフマン符号化デー
タファイルの作成処理が完了する。
【0034】次に、ハフマン復号化処理を実行する場合
について、図6及び図7を参照して説明する。これら図
6及び図7のフローチャートは、ハフマン復号化処理の
プログラムの概略制御内容を示すものである。ハフマン
復号化処理を実行する場合、まず、図6のステップT1
に示すように、データ領域8、並びに、「元情報」であ
るデータ領域9、第1のデータ配列10及び第2のデー
タ配列11を記憶装置3内のハフマン符号化データファ
イルから読み込む処理を実行する。この処理は、図7に
示すサブルーチンBで実行される。具体的には、まず、
データ領域8、即ち、出現したコードの全データ数をハ
フマン符号化データファイルの先頭から読出し、RAM
5内の適当な領域に書き込む(ステップT100)。続
いて、上記データ領域8の後に続くデータ領域9、即
ち、出現したコードの種類数aを読出し、RAM5内の
適当な領域に書き込む(ステップT101)。
【0035】そして、上記データ領域9に続く第1のデ
ータ配列10を読み込む。この場合、第1のデータ配列
10の先頭の出現コードから順に読み込んでいく。具体
的には、出現コードを全て読み込んだか否かを判断し
(ステップT102)、全て読み込んでいなければ、ス
テップT102にて「NO」へ進み、出現コードをハフ
マン符号化データファイルから読み込み、RAM5内の
適当な領域に書き込む(ステップT103)。この後、
第1のデータ配列10の最後の出現コードを読み込む
と、ステップT102にて「YES」へ進み、上記第1
のデータ配列10に続く第2のデータ配列11を読み込
む処理を実行する。
【0036】この場合、まず、データ領域9に格納され
たデータに基づいて出現したコードの種類数aが1であ
るか否かを判断し(ステップT104)、2種類以上で
ある場合には、ステップT103にて「NO」へ進む。
そして、第2のデータ配列11の全ての有効データを読
み込んだか否かを判断し(ステップT105)、読み込
んでいない場合には、ステップT105にて「NO」へ
進む。続いて、第2のデータ配列11の先頭のデータ、
即ち、ビット長が0ビットのハフマン符合の個数から順
にハフマン符号化データファイルから読み込み、RAM
5内の適当な領域に書き込む(ステップT106)。そ
して、読み込んだハフマン符合の個数を積算してその和
を求める(ステップT107)。この場合、上記積算し
た和の値が出現コードの種類数aに等しくなることによ
り、第2のデータ配列11の全ての有効データを読み込
んだことがわかる。この後、第2のデータ配列11の全
ての有効データを読み込むと、ステップT105にて
「YES」へ進み、図6のステップT2へ進む。これに
より、データ領域8並びに「元情報」(データ領域9、
第1のデータ配列10及び第2のデータ配列11)をハ
フマン符号化データファイルの先頭部分から読み込む処
理が完了する。
【0037】また、ステップT104において、出現し
たコードの種類数aが1である場合には、第2のデータ
配列11を読み込む必要がないから、ステップT104
にて「YES」へ進み、データ領域8並びに「元情報」
を読み込む処理を完了し、図6のステップT2へ進むよ
うに構成されている。
【0038】次に、ステップT2において、ハフマン復
号表を作成する処理を実行する。この場合、ハフマン復
号表とは、ハフマン符合のビット長の配列から成る第3
のデータ配列13(図3(c)参照)と、ハフマン符合
の配列から成る第4のデータ配列14(図3(d)参
照)とのことである。そして、上記ステップT2では、
上述したように読み込んだ第1のデータ配列10と第2
のデータ配列11とに基づいてハフマン符号化時と同様
にして、第3のデータ配列13と第4のデータ配列14
とを作成する。これにより、ハフマン復号表の作成処理
が完了する。
【0039】続いて、上記したようにしてハフマン復号
表(第3のデータ配列13及び第4のデータ配列14)
を作成したら、圧縮後のハフマン符号化データファイル
中のハフマン符号化データ12を読み込むと共に、読み
込んだハフマン符合を元のコードに復号する処理を実行
する。具体的には、まず、上記ハフマン符号化データ1
2の最後のハフマン符合を復号したか否かを判断し(ス
テップT3)、復号していない場合には、ステップT3
にて「NO」へ進む。そして、ハフマン符号化データ1
2の先頭のハフマン符合から順に復号する(ステップT
4)。この場合、ハフマン復号表である上記第3のデー
タ配列13(図3(c)参照)と上記第4のデータ配列
14(図3(d)参照)とに基づいて周知のアルゴリズ
ムに従ってハフマン復号化処理を行うようになってい
る。そして、復号したコードを圧縮前のデータファイル
としてその先頭から逐次出力し、記憶装置3に書き込む
ように構成されている。
【0040】この後、ハフマン符号化データ12の最後
のハフマン符号の復号を完了すると、ステップT3にて
「YES」へ進む。これにより、ハフマン符号化データ
ファイルを圧縮前のデータファイルに戻す(復号する)
処理が完了する。
【0041】このような構成の本実施例によれば、圧縮
前のデータファイル中に出現したコードだけについて、
その種類数aを格納したデータ領域9と、出現したコー
ドを出現頻度順に並べた第1のデータ配列10と、ビッ
ト長が同じハフマン符号の種類数を格納するデータ領域
をハフマン符号のビット長の順に並べた第2のデータ配
列11とを、ハフマン木情報(「元情報」)として圧縮
後のハフマン符号化データファイルの先頭部分に配設す
るように構成したので、出現しないコードについてのデ
ータをハフマン木情報のデータの中に含めて出力する従
来構成に比べて、ハフマン木情報のデータ量を少なくす
ることができる。
【0042】ここで、本実施例において、出現したコー
ドの種類数aが例えば100の場合におけるハフマン木
情報のデータ量を求めて見る。この場合、ビット長が1
6ビットのハフマン符号までで出現したコードをすべて
ハフマン符号に割り当てることができたとすると共に、
第2のデータ配列11が図3(b)で示すように構成さ
れたとする。このような場合、ハフマン木情報のデータ
量は、次の式で計算された通りとなる。
【0043】8ビット×100+8ビット×17=93
6ビット=117バイト 上記ハフマン木情報のデータ量は、出現コードの種類数
aが100の場合のデータ量であり、種類数aが100
よりも少ないときは、ハフマン木情報のデータ量は上記
計算結果よりも更に少なくなる。一方、種類数aが10
0よりも多いときは、ハフマン木情報のデータ量は上記
計算結果よりも多くなる。
【0044】これに対して、特公平2−50667号公
報に記載された装置におけるハフマン木情報のデータ量
は、次の式で計算された通りとなる。
【0045】 4ビット×256=984ビット=128バイト 従って、出現コードの種類数aが100を少し越える数
値までは、本発明の方がハフマン木情報のデータ量が少
なくなることがわかる。特に、出現コードの種類数aが
少ないときには、上記公報の装置に比べてハフマン木情
報のデータ量が大幅に少なくなることがわかる。
【0046】尚、上記公報に記載された装置におけるハ
フマン木情報において、ハフマン符合のビット長を上記
4ビットのデータ領域に代えて8ビットのデータ領域に
格納する構成とした場合には、ハフマン木情報のデータ
量は、次の式で計算された通りとなる。
【0047】8ビット×256=256バイト 従って、この場合には、出現コードの種類数aが100
をかなり越える数値まで、本発明の方がハフマン木情報
のデータ量が少なくなることがわかる。
【0048】また、本実施例では、出現したコードの種
類数aが1である場合には、第2のデータ配列11の出
力を省略するように構成したので、ハフマン木情報のデ
ータ量をより一層少なくすることができる。
【0049】尚、上記実施例では、データ圧縮後のハフ
マン符号化データファイルにおいて、データ領域9、第
1のデータ配列10及び第2のデータ配列11をこの順
に並べる構成としたが、これに限られるものではなく、
例えば第1のデータ配列10と第2のデータ配列11を
逆に並べる構成としても良い。また、上記実施例では、
データ圧縮前のデータファイル中のコードとして1バイ
トのコードをハフマン符合化する場合について適用した
が、これに代えて、2バイト或いは3バイト以上のコー
ドをハフマン符合化する場合、または、1バイト未満の
コードをハフマン符合化する場合について適用しても良
い。
【0050】
【発明の効果】本発明は、以上の説明から明らかなよう
に、データファイル中に出現したコードだけについて、
その種類数を格納したデータ領域と、出現したコードを
出現頻度順に並べた第1のデータ配列と、ビット長が同
じハフマン符号の種類数を格納するデータ領域をハフマ
ン符号のビット長の順に並べた第2のデータ配列とを、
ハフマン木情報としてハフマン符号化データファイルの
先頭部分に配設するように構成したので、出現しないコ
ードについてのデータをハフマン木情報のデータの中に
含めて出力する従来構成に比べて、ハフマン木情報のデ
ータ量を少なくすることができるという優れた効果を奏
する。
【0051】また、上記構成の場合、出現したコードの
種類数が1である場合には、第2のデータ配列の出力を
省略するように構成したので、ハフマン木情報のデータ
量を更に一層少なくすることができると共に、ハフマン
符号化処理及びハフマン復号化処理に要する時間を短縮
することができる。
【図面の簡単な説明】
【図1】本発明の一実施例を示すブロック図
【図2】ハフマン符号化データファイルの構成を示す図
【図3】(a)は第1のデータ配列の構成を示す図、
(b)は第2のデータ配列の構成を示す図、(c)は第
3のデータ配列の構成を示す図、(d)は第4のデータ
配列の構成を示す図
【図4】ハフマン符号化処理のフローチャート
【図5】サブルーチンAのフローチャート
【図6】ハフマン復号化処理のフローチャート
【図7】サブルーチンBのフローチャート
【符号の説明】
1はデータ処理装置、2はCPU、3は記憶装置、4は
ROM、5はRAM、6はバス、7はハフマン符号化デ
ータファイル、8はデータ領域、9はデータ領域、10
は第1のデータ配列、11は第2のデータ配列、12は
ハフマン符号化データ、13は第3のデータ配列、14
は第4のデータ配列を示す。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 文字を表わすコードを並べて成るデータ
    ファイルを、該データファイル中における各コードの出
    現頻度に応じて作成されたハフマン符号表に基づいて各
    コードをハフマン符号化することにより、ハフマン符号
    化データファイルを作成するハフマン符号化方法におい
    て、 出現したコードの種類数を格納するデータ領域と、 出現したコードを出現頻度の順に並べて成る第1のデー
    タ配列と、 ビット長が同じハフマン符号の種類数を格納するデータ
    領域をハフマン符号のビット長の順に並べて成る第2の
    データ配列とを前記ハフマン符号化データファイルの先
    頭部分に配設するようにしたことを特徴とするハフマン
    符号化方法。
  2. 【請求項2】 出現したコードの種類数が1である場
    合、前記第2のデータ配列を省略するように構成したこ
    とを特徴とする請求項1記載のハフマン符号化方法。
  3. 【請求項3】 文字を表わすコードを並べて成るデータ
    ファイルを、該データファイル中における各コードの出
    現頻度に応じて作成されたハフマン符号表に基づいて各
    コードをハフマン符号化することによりハフマン符号化
    データファイルを作成するハフマン符号化装置におい
    て、 出現したコードの種類数を格納するデータ領域を作成す
    る手段と、 出現したコードを出現頻度の順に並べて成る第1のデー
    タ配列を作成する手段と、 ビット長が同じハフマン符号の種類数を格納するデータ
    領域をハフマン符号のビット長の順に並べて成る第2の
    データ配列を作成する手段と、 前記データ領域、前記第1のデータ配列及び前記第2の
    データ配列を前記ハフマン符号化データファイルの先頭
    部分に配設する手段とを備えたことを特徴とするハフマ
    ン符号化装置。
  4. 【請求項4】 出現したコードの種類数が1である場
    合、前記第2のデータ配列を省略するように構成したこ
    とを特徴とする請求項3記載のハフマン符号化装置。
  5. 【請求項5】 ハフマン符号化データファイルをハフマ
    ン復号表に基づいて元のコードへ復号することにより、
    元のデータファイルを復元するハフマン符号復号方法に
    おいて、 出現したコードの種類数を格納するデータ領域と、 出現したコードを出現頻度の順に並べて成る第1のデー
    タ配列と、 ビット長が同じハフマン符号の種類数を格納するデータ
    領域をハフマン符号のビット長の順に並べて成る第2の
    データ配列とに基づいて前記ハフマン復号表を作成する
    ようにしたことを特徴とするハフマン符号復号方法。
  6. 【請求項6】 出現したコードの種類数が1である場
    合、前記データ領域と前記第1のデータ配列とから前記
    ハフマン復号表を作成するようにしたことを特徴とする
    請求項5記載のハフマン符号復号方法。
  7. 【請求項7】 ハフマン符号化データファイルをハフマ
    ン復号表に基づいて元のコードへ復号することにより、
    元のデータファイルを復元するハフマン符号復号装置に
    おいて、 出現したコードの種類数を格納するデータ領域を読み込
    む手段と、 出現したコードを出現頻度の順に並べて成る第1のデー
    タ配列を読み込む手段と、 ビット長が同じハフマン符号の種類数を格納するデータ
    領域をハフマン符号のビット長の順に並べて成る第2の
    データ配列を読み込む手段と、 前記データ領域と前記第1のデータ配列と前記第2のデ
    ータ配列とに基づいて前記ハフマン復号表を作成する手
    段とを備えたことを特徴とするハフマン符号復号装置。
  8. 【請求項8】 出現したコードの種類数が1である場
    合、前記データ領域と前記第1のデータ配列とから前記
    ハフマン復号表を作成する手段を備えたことを特徴とす
    る請求項7記載のハフマン符号復号装置。
JP18296795A 1995-07-19 1995-07-19 ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置 Pending JPH0936748A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP18296795A JPH0936748A (ja) 1995-07-19 1995-07-19 ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP18296795A JPH0936748A (ja) 1995-07-19 1995-07-19 ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置

Publications (1)

Publication Number Publication Date
JPH0936748A true JPH0936748A (ja) 1997-02-07

Family

ID=16127460

Family Applications (1)

Application Number Title Priority Date Filing Date
JP18296795A Pending JPH0936748A (ja) 1995-07-19 1995-07-19 ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置

Country Status (1)

Country Link
JP (1) JPH0936748A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010063192A (ko) * 1999-12-22 2001-07-09 구자홍 허프만 부호 복호화장치
JP2010093414A (ja) * 2008-10-06 2010-04-22 Fujitsu Ltd 情報処理プログラム、情報処理装置、および情報処理方法
US8254700B1 (en) 2006-10-03 2012-08-28 Adobe Systems Incorporated Optimized method and system for entropy coding
CN109889205A (zh) * 2019-04-03 2019-06-14 杭州嘉楠耘智信息科技有限公司 编码方法及***、解码方法及***、编解码方法及***

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010063192A (ko) * 1999-12-22 2001-07-09 구자홍 허프만 부호 복호화장치
US8254700B1 (en) 2006-10-03 2012-08-28 Adobe Systems Incorporated Optimized method and system for entropy coding
US8600183B2 (en) 2006-10-03 2013-12-03 Adobe Systems Incorporated Optimized method and system for entropy coding
JP2010093414A (ja) * 2008-10-06 2010-04-22 Fujitsu Ltd 情報処理プログラム、情報処理装置、および情報処理方法
CN109889205A (zh) * 2019-04-03 2019-06-14 杭州嘉楠耘智信息科技有限公司 编码方法及***、解码方法及***、编解码方法及***
CN109889205B (zh) * 2019-04-03 2023-08-15 嘉楠明芯(北京)科技有限公司 编码方法及***、解码方法及***、编解码方法及***

Similar Documents

Publication Publication Date Title
US6597812B1 (en) System and method for lossless data compression and decompression
JP3034605B2 (ja) 2進データ通信システム
TW420908B (en) Lossless encoding and decoding system
CN103326732A (zh) 压缩数据的方法、解压数据的方法、编码器和解码器
JP3240495B2 (ja) データの可逆符号化方法および装置、並びに、伸長装置
CN104811209A (zh) 一种抗最长匹配检测的压缩文件数据嵌入方法及装置
JP2968112B2 (ja) 符号変換方法
JPH0936748A (ja) ハフマン符号化方法及びその装置並びにハフマン復号化方法及びその装置
JP4037875B2 (ja) コンピュータグラフィックスデータ符号化装置、復号化装置、符号化方法、および、復号化方法
US9479195B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
WO2014030189A1 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP2021145281A (ja) 圧縮装置、伸張装置及び方法
JPH07107303A (ja) ハフマン符号の復号化方法
JP2016170750A (ja) データ管理プログラム、情報処理装置およびデータ管理方法
JP2004517527A (ja) グラフィック画像符号化
CN102708191A (zh) 一种节省内存的字库编码和解码方法
US20230273855A1 (en) Data authentication for data compression
US20070226724A1 (en) Method and apparatus for firmware execution and provision
JPH03206533A (ja) データ圧縮方式
JP3229690B2 (ja) 可変長符号復号器
JP3708318B2 (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP3138342B2 (ja) 可変長符号の復号装置
JPS6276931A (ja) デ−タ圧縮装置
KR101173777B1 (ko) 비용 최적 데이터 압축 방법 및 시스템
KR20220046796A (ko) 전자 장치 및 그 제어 방법