(57)【特許請求の範囲】
【請求項１】
順次入力されるデータを夫々異なる手法で符号化する複数のデータ符号化手段と、前記各データ符号化手段で得られた符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った前記データ符号化手段の識別値の履歴を符号化した識別符号を出力する符号選択手段とを含むデータ圧縮装置であって、
前記符号選択手段から出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記データ符号化手段を再選択し再符号化を行う再符号化手段を含むことを特徴とするデータ圧縮装置。
【請求項２】
前記再符号化手段は前記識別符号の符号量がより小さくなるように前記識別値の履歴を変更することを特徴とする請求項１記載のデータ圧縮装置。
【請求項３】
前記識別符号は前記識別値の履歴をランレングス符号化することにより得られることを特徴とする請求項１又は２記載のデータ圧縮装置。
【請求項４】
前記再符号化手段は前記変更後の識別値に対応する符号化部で再符号化した符号と前記変更後の識別値の履歴を符号化した識別符号の合計符号量と、識別値変更前の合計符号量とを比較し、前記変更後の合計符号量が前記変更前の合計符号量よりも小さい場合に前記変更後の識別符号及び符号を出力することを特徴とする請求項１から３いずれかに記載のデータ圧縮装置。
【請求項５】
前記再符号化手段を複数用いることにより、前記合計符号量をさらに削減することを特徴とする請求項４記載のデータ圧縮装置。
【請求項６】
前記識別符号の符号量は前記識別値のラン長が長くなるように制御されることを特徴とする請求項３から５いずれかに記載のデータ圧縮装置。
【請求項７】
前記再符号化手段は前記識別値の履歴から得られる複数のランの各々についてラン長が長くなるように前記識別値を変更し、その変更後の前記識別値で選択された前記データ符号化手段にて再符号化を行うことを特徴とする請求項３から６いずれかに記載のデータ圧縮装置。
【請求項８】
順次入力されるデータを夫々異なる手法で符号化するデータ符号化手順と、前記異なる手法で符号化された符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った手法の識別値の履歴を符号化した識別符号を出力する符号選択手順とを含むデータ圧縮方法であって、
前記符号選択手順によって出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記手法を再選択し再符号化を行う再符号化手順を含むことを特徴とするデータ圧縮方法。
【請求項９】
前記再符号化手順は前記識別符号の符号量がより小さくなるように前記識別値の履歴を変更することを特徴とする請求項８記載のデータ圧縮方法。
【請求項１０】
前記識別符号は前記識別値の履歴をランレングス符号化することにより得られることを特徴とする請求項８又は９記載のデータ圧縮方法。
【請求項１１】
前記再符号化手順は前記変更後の識別値に対応する手法で再符号化した符号と前記変更後の識別値の履歴を符号化した識別符号の合計符号量と、識別値変更前の合計符号量とを比較し、前記変更後の合計符号量が前記変更前の合計符号量よりも小さい場合に前記変更後の識別符号及び符号を出力することを特徴とする請求項８から１０いずれかに記載のデータ圧縮方法。
【請求項１２】
前記再符号化手順を複数用いることにより、前記合計符号量をさらに削減することを特徴とする請求項１１記載のデータ圧縮方法。
【請求項１３】
前記識別符号の符号量は前記識別値のラン長が長くなるように制御されることを特徴とする請求項１０から１２いずれかに記載のデータ圧縮方法。
【請求項１４】
前記再符号化手順は前記識別値の履歴から得られる複数のランの各々についてラン長が長くなるように前記識別値を変更し、その変更後の前記識別値で選択された手法にて再符号化を行うことを特徴とする請求項１０から１３いずれかに記載のデータ圧縮方法。
【請求項１５】
順次入力されるデータを夫々異なる手法で符号化するデータ符号化手順と、前記異なる手法で符号化された符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った手法の識別値の履歴を符号化した識別符号を出力する符号選択手順とをコンピュータに実行させるための制御プログラムを記録した記録媒体であって、
前記制御プログラムは前記符号選択手順によって出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記手法を再選択し再符号化を行う再符号化手順を含むことを特徴とする記録媒体。
【請求項１６】
前記再符号化手順は前記識別符号の符号量がより小さくなるように前記識別値の履歴を変更することを特徴とする請求項１５記載の記録媒体。
【請求項１７】
前記識別符号は前記識別値の履歴をランレングス符号化することにより得られることを特徴とする請求項１５又は１６記載の記録媒体。
【請求項１８】
前記再符号化手順は前記変更後の識別値に対応する手法で再符号化した符号と前記変更後の識別値の履歴を符号化した識別符号の合計符号量と、識別値変更前の合計符号量とを比較し、前記変更後の合計符号量が前記変更前の合計符号量よりも小さい場合に前記変更後の識別符号及び符号を出力することを特徴とする請求項１５から１７いずれかに記載の記録媒体。
【請求項１９】
前記再符号化手順を複数用いることにより、前記合計符号量をさらに削減することを特徴とする請求項１８記載の記録媒体。
【請求項２０】
前記識別符号の符号量は前記識別値のラン長が長くなるように制御されることを特徴とする請求項１７から１９いずれかに記載の記録媒体。
【請求項２１】
前記再符号化手順は前記識別値の履歴から得られる複数のランの各々についてラン長が長くなるように前記識別値を変更し、その変更後の前記識別値で選択された手法にて再符号化を行うことを特徴とする請求項１７から２０いずれかに記載の記録媒体。
【請求項２２】
順次入力されるデータを夫々異なる手法で符号化する複数のデータ符号化手段と、前記各データ符号化手段で得られた符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った前記データ符号化手段の識別値の履歴を符号化した識別符号を出力する符号選択手段とを含むデータ圧縮装置であって、
前記符号選択手段から出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記データ符号化手段を再選択し再符号化を行う再符号化手段を含んでおり、
前記識別符号は前記識別値の履歴をランレングス符号化することにより得られ、かつ前記再符号化手段は複数のランの各々についてラン長が長くなるように前記識別値を変更し、その変更後の前記識別値で選択された前記データ符号化手段にて再符号化を行うことを特徴とするデータ圧縮装置。
【請求項２３】
前記再符号化手段は、各ランを最も左側のランから順に、ランを長くしたものを変更候補としていき、最も右側のランを長くしたものを最後の変更候補とすることを特徴とする請求項２２記載のデータ圧縮装置。
【請求項２４】
順次入力されるデータを夫々異なる手法で符号化するデータ符号化手順と、前記異なる手法で符号化された符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った手法の識別値の履歴を符号化した識別符号を出力する符号選択手順とを含むデータ圧縮方法であって、
前記符号選択手順によって出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記手法を再選択し再符号化を行う再符号化手順を含んでおり、
前記識別符号は前記識別値の履歴をランレングス符号化することにより得られ、かつ前記再符号化手順は複数のランの各々についてラン長が長くなるように前記識別値を変更し、その変更後の前記識別値で選択された手法にて再符号化を行うことを特徴とするデータ圧縮方法。
【請求項２５】
前記再符号化手順は、各ランを最も左側のランから順に、ランを長くしたものを変更候補としていき、最も右側のランを長くしたものを最後の変更候補とすることを特徴とする請求項２４記載のデータ圧縮方法。
【請求項２６】
順次入力されるデータを夫々異なる手法で符号化するデータ符号化手順と、前記異なる手法で符号化された符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った手法の識別値の履歴を符号化した識別符号を出力する符号選択手順とをコンピュータに実行させるための制御プログラムを記録した記録媒体であって、
前記制御プログラムは前記符号選択手順によって出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記手法を再選択し再符号化を行う再符号化手順を含んでおり、
前記識別符号は前記識別値の履歴をランレングス符号化することにより得られ、かつ前記再符号化手順は複数のランの各々についてラン長が長くなるように前記識別値を変更し、その変更後の前記識別値で選択された手法にて再符号化を行うことを特徴とする記録媒体。
【請求項２７】
前記再符号化手順は、各ランを最も左側のランから順に、ランを長くしたものを変更候補としていき、最も右側のランを長くしたものを最後の変更候補とすることを特徴とする請求項２６記載の記録媒体。
【請求項２８】
順次入力されるデータを夫々異なる手法で符号化する複数のデータ符号化手順と、前記各データ符号化手順で得られた符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った前記データ符号化手順の識別値の履歴を符号化した識別符号を出力する符号選択手順と、前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記データ符号化手順を再選択し再符号化を行う再符号化手順とをコンピュータに実行させるための制御プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体に関し、特に高い圧縮率を実現できるデータ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
従来のデータ圧縮装置の一例が、特開平６−３１１３６９号公報（以下、先行技術文献という）に記載されている。この先行技術文献記載の技術は量子化された画像信号を入力データとしてデータ圧縮処理を行う画像符号化装置におけるデータ圧縮装置についてのものである。このデータ圧縮装置の構成図を図７に、その動作を示すフローチャートを図８に夫々示す。このデータ圧縮装置は、それぞれ異なるハフマン符号化テーブルを用いてデータ圧縮を行う第１ハフマン符号化部３０１〜第３ハフマン符号化部３０３と、これらのハフマン符号化部３０１〜３０３の中から最小の符号量を出力するハフマン符号化部を選択し、選択されたハフマン符号化部を示す識別符号と、選択されたハフマン符号化部によって圧縮されたハフマン符号を出力する符号選択部３０４とから構成されている。
【０００３】
このような構成を有する従来のデータ圧縮装置（図７参照）は次のようにデータ圧縮を行う。まず、入力データを第１ハフマン符号化部３０１〜第３ハフマン符号化部３０３によって符号化する。これらのハフマン符号化部３０１〜３０３ではそれぞれ異なるハフマン符号化表を用いて入力データをハフマン符号化し、ハフマン符号を符号選択部３０４に出力する。符号選択部３０４では入力された複数のハフマン符号から最も符号量が少ないものを選択し、最も符号量の少ないハフマン符号と、そのハフマン符号の生成に用いられたハフマン符号化部を示す識別符号を出力する。
【０００４】
次に、このデータ圧縮装置の動作について説明する。ここでは複数のデータを圧縮する手法を説明する。図８を参照すると、手順４０１ではｎの値を０に初期化する。ｎの値は現在何番目のデータを処理しているかを示す変数である。
【０００５】
手順４０２、４０３、４０４ではそれぞれ異なるハフマン符号化表を用いてｎ番目のデータをハフマン符号化しハフマン符号を得る。
【０００６】
手順４０５では、手順４０２、４０３、４０４で得られたハフマン符号の中で最小の符号量となるものを選択する。そして最小の符号量を生成するハフマン符号化手順（４０２、４０３、４０４のいずれか）を示す識別値（一例として、手順４０２なら０、手順４０３なら１、手順４０４なら２）をＣ（ｎ）とする。
【０００７】
手順４０６では、手順４０５で選択された最小の符号量となるハフマン符号をＨ（ｎ）とし、これを処理結果として出力する。
【０００８】
手順４０７では、圧縮すべきデータが残っていれば（手順４０７にて「イエス」の場合）手順４０８へ、そうでなければ（手順４０７にて「ノ−」の場合）手順４０９へ処理を分岐する。
【０００９】
手順４０８では、ｎを１増加し、手順４０２へ戻る。手順４０９では、識別値Ｃ（０〜ｎ）を符号化して識別符号ＣＣとし、これを処理結果として出力する。従って、処理全体としては、ハフマン符号Ｈ（０〜ｎ）と識別符号ＣＣが処理結果として出力される。
【００１０】
このようなデータ圧縮処理を複数回繰り返した場合、識別符号ＣＣの符号量が増大し、符号化効率劣化の要因と成り得る。そのため、オーディオ信号の国際標準圧縮方式であるＭＰＥＧ−２  ＡＡＣでは、識別符号の生成にランレングス符号化を用いることで識別符号の符号量削減を図っている。ＭＰＥＧ−２  ＡＡＣ規格の詳細については、「１９９７年、インフォメーション  テクノロジー  −ジェネリック  コーディング  オブ  ムービング  ピクチャーズ  アンド  アソシエイティッド  オーディオ、パート７：アドバンスド  オーディオ  コーディング、エーエーシー”「Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ−Ｇｅｎｅｒｉｃ  ｃｏｄｉｎｇ  ｏｆ  ｍｏｖｉｎｇ  ｐｉｃｔｕｒｅｓ  ａｎｄａｓｓｏｃｉａｔｅｄ  ａｕｄｉｏ，  Ｐａｒｔ７：Ａｄｖａｎｃｅｄ  Ａｕｄｉｏ  Ｃｏｄｉｎｇ，ＡＡＣ」に詳しく記載されている。ＭＰＥＧ−２  ＡＡＣでの識別符号の生成方法を以下で説明する。
【００１１】
ＭＰＥＧ−２  ＡＡＣでは０から１５までの数値を用いて、選択されたハフマン符号化部を表す。例えば、図７において、第１のハフマン符号化部３０１が選択されれば「０」、第２のハフマン符号化部３０２が選択されれば「１」、第３のハフマン符号化部３０３が選択されれば「２」といった具合に識別値が符号選択部３０４から出力される。識別値は複数まとめられてランレングス符号化され識別符号となる。
【００１２】
例えば、識別値が「０，０，０，２，２，１，１，１，１」であった場合、「０」が「３」連続、「２」が「２」連続、「１」が「４」連続という意味で「０，３，２，２，１，４」という識別符号となる。このようにランレングス符号化では、「ある値」が「いくつ連続するか」を符号化する。ＭＰＥＧ−２  ＡＡＣ規格では一般に「ある値」を４ビット、「いくつ連続するか」を５ビットで符号化する。先ほどの例（「０，０，０，２，２，１，１，１，１」）の各数値を４ビットで符号化すると４ビット×９＝３６ビット必要となるが、ランレングス符号化することにより「０，３，２，２，１，４」は（４ビット＋５ビット）×３＝２７ビットで符号化でき、符号量を削減することができる。
【００１３】
【発明が解決しようとする課題】
しかしながら、この符号量削減効果は、同じ識別値が多く連続する場合にのみ得られる。例えば、識別値が「０，１，０，２，１，２，０，１，２」という場合、各値を４ビットで符号化すれば４ビット×９＝３６ビットであるのに対し、ランレングス符号化を用いると（４ビット＋５ビット）×９＝８１ビット必要となってしまう。
【００１４】
即ち、符号量が多く圧縮率が悪いという欠点がある。その理由は、選択されたハフマン符号化手段を示す識別符号の符号化効率が悪いためである。
【００１５】
そこで本発明の目的は、符号量を低減させ高い圧縮率が得られるデータ圧縮装置及び圧縮方法並びにその制御プログラムを記録した記録媒体を提供することにある。
【００１６】
【課題を解決するための手段】
前記課題を解決するために本発明によるデータ圧縮装置は、順次入力されるデータを夫々異なる手法で符号化する複数のデータ符号化手段と、前記各データ符号化手段で得られた符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った前記データ符号化手段の識別値の履歴を符号化した識別符号を出力する符号選択手段とを含むデータ圧縮装置であって、その装置は前記符号選択手段から出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記データ符号化手段を再選択し再符号化を行う再符号化手段を含むことを特徴とする。
【００１７】
又、本発明によるデータ圧縮方法は、順次入力されるデータを夫々異なる手法で符号化するデータ符号化手順と、前記異なる手法で符号化された符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った手法の識別値の履歴を符号化した識別符号を出力する符号選択手順とを含むデータ圧縮方法であって、その方法は前記符号選択手順によって出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記手法を再選択し再符号化を行う再符号化手順を含むことを特徴とする。
【００１８】
又、本発明による記録媒体は、順次入力されるデータを夫々異なる手法で符号化するデータ符号化手順と、前記異なる手法で符号化された符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った手法の識別値の履歴を符号化した識別符号を出力する符号選択手順とをコンピュータに実行させるための制御プログラムを記録した記録媒体であって、その記録媒体は前記制御プログラムは前記符号選択手順によって出力された前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記手法を再選択し再符号化を行う再符号化手順を含むことを特徴とする。
【００１９】
本発明によれば、再符号化部（図１の１０５）が識別符号とハフマン符号の合計符号量が従来よりも小さくなるよう再符号化する。
【００２０】
【発明の実施の形態】
以下、本発明の実施の形態について添付図面を参照しながら説明する。図１は本発明に係るデータ圧縮装置の第１の実施の形態の構成図である。同図を参照すると、データ圧縮装置は第１ハフマン符号化部１０１〜第３ハフマン符号化部１０３と、符号選択部１０４と、再符号化部１０５と、これら構成部分１０１〜１０５を制御する制御部１０６とから構成されている。
【００２１】
第１ハフマン符号化部１０１〜第３ハフマン符号化部１０３は従来手法における第１ハフマン符号化部３０１〜第３ハフマン符号化部３０３と同様に入力データをそれぞれ異なるハフマン符号表を用いてハフマン符号化し、ハフマン符号を符号選択部１０４に出力する。なお、本発明ではハフマン符号化部が３つ（１０１，１０２，１０３）存在する場合を例に説明するが、この数に制限はない。
【００２２】
符号選択部１０４は従来手法における符号選択部３０４と同様に、入力された複数のハフマン符号から最も符号量が少ないものを選択し、最も符号量の少ないハフマン符号と、そのハフマン符号の生成に用いられたハフマン符号化部を示す識別値を符号化した識別符号とを再符号化部１０５に出力する。
【００２３】
次に、再符号化部１０５の構成について説明する。図２は再符号化部１０５の構成図である。なお、図１と同様の構成部分には同一番号を付し、その説明を省略する。図２を参照すると、再符号化部１０５は符号選択部１０４から入力された識別符号を変更する識別符号変更部１０７と、識別符号変更部１０７にて変更された識別符号に基づき再選択される第１ハフマン符号化部１０１〜第３ハフマン符号化部１０３と、これらハフマン符号化部１０１〜１０３で符号化されたデ−タから最短符号を選択する最短符号選択部１０８とから構成されている。
【００２４】
再符号化部１０５は、識別符号とハフマン符号の合計符号量がより小さくなるように識別符号を変更してハフマン符号化部（１０１，１０２，１０３のいずれか）を再選択し、再選択されたハフマン符号化部を示す識別値を符号化した識別符号と、再選択されたハフマン符号化部を用いて符号化されたハフマン符号を出力する。
【００２５】
次に、図３及び図４を参照して第１の実施の形態の全体の動作について詳細に説明する。図３及び図４は本発明に係るデータ圧縮装置の第１の実施の形態の動作を示すフロ−チャートである。
【００２６】
図３を参照すると、手順２０１ではｎの値を０に初期化する。ｎの値は現在何番目のデータを処理しているかを示す変数である（図８に示す従来技術における手順４０１と同じである）。
【００２７】
手順２０２、２０３、２０４では夫々異なるハフマン符号化表を用いて第１ハフマン符号化部３０１〜第３ハフマン符号化部３０３にてｎ番目のデータをハフマン符号化しハフマン符号を得る（図８に示す従来技術における手順４０２、４０３、４０４と同じである）
手順２０５では、符号選択部１０４にて手順２０２、２０３、２０４で得られたハフマン符号の中で最小の符号量となるハフマン符号化部を選択する。そして最小の符号量を生成するハフマン符号化手順（２０２、２０３、２０４のいずれか）を示す識別値（一例として、手順２０１なら０、手順２０２なら１、手順２０３なら２）をＣ（ｎ）とする（図８に示す従来技術における手順４０５と同じである）。
【００２８】
手順２０６では、手順２０５で選択された最小の符号量となるハフマン符号をＨ（ｎ）とする（図８に示す従来技術における手順４０６とはＨ（ｎ）を処理結果として出力しない点で異なる）。
【００２９】
手順２０７では、圧縮すべきデータが残っていれば（手順２０７にて「イエス」の場合）手順２０８へ、そうでなければ（手順２０７にて「ノ−」の場合）手順２０９へ処理を分岐する（図８に示す従来技術における手順４０７と同じである）。
【００３０】
手順２０８では、ｎを１増加し、手順２０２へ戻る（図８に示す従来技術における手順４０８と同じである）。
【００３１】
手順２０９では、識別値Ｃ（０〜ｎ）を符号化して識別符号ＣＣを生成する。その符号化手法にはランレングス符号化等を用いることができる（図８に示す従来技術における手順４０９とは識別符号ＣＣを処理結果として出力しない点で異なる）。
【００３２】
次に、図４を参照すると、手順２１０では識別符号変更部１０７にて識別値Ｃ（０〜ｎ）に変更を加え、これを識別値Ｃ’（０〜ｎ）とする。変更の加え方については後述するが、一般にはＣ’（０〜ｎ）を符号化した識別符号の符号量が少なくなるような変更を行う。例えば、識別符号の生成がランレングス符号化によって行われる場合は、識別値Ｃ’（０〜ｎ）のラン長が長くなるように（同じ識別値が多く連続するように）変更を行う。
【００３３】
手順２１１では識別値Ｃ’（０〜ｎ）が示すハフマン符号化部（１０１，１０２，１０３のいずれか）を用いて０番目からｎ番目までのデータをハフマン符号化し、生成されたハフマン符号をＨ’（０〜ｎ）とする。
【００３４】
手順２１２では、識別値Ｃ’（０〜ｎ）を手順２０９と同様な手法で符号化して識別符号ＣＣ’を生成する。
【００３５】
手順２１３では、最短符号選択部１０８にて識別符号ＣＣ’とＨ’（０〜ｎ）の合計符号量が識別符号ＣＣとＨ（０〜ｎ）の合計符号量よりも小さい場合に（手順２１３にて「イエス」の場合）手順２１４へ、そうでなければ（手順２１３にて「ノ−」の場合）手順２１５へ分岐する。手順２１３では、手順２１０での識別値の変更によって符号量削減効果が得られたかどうかを判定している。
【００３６】
手順２１４では、現時点での最小符号量を実現する識別値として、識別値Ｃ’（０〜ｎ）を識別値Ｃ（０〜ｎ）に、識別符号ＣＣ’を識別符号ＣＣに、ハフマン符号Ｈ’（０〜ｎ）をハフマン符号Ｈ（０〜ｎ）に夫々値をコピーする。
【００３７】
手順２１５では、手順２１０で行う識別値Ｃ（０〜ｎ）の変更において、他の変更候補が残っていれば（手順２１５にて「イエス」の場合）手順２１０へ戻り処理を繰り返し、他の変更候補が残っていなければ（手順２１５にて「ノ−」の場合）手順２１６へ進む。このように識別値の変更とハフマン符号化を繰り返し、最小符号量を実現する識別値を探索する。
【００３８】
手順２１６では、処理結果として識別符号ＣＣとハフマン符号Ｈ（０〜ｎ）を出力する。
【００３９】
次に、手順２１０と手順２１５について一例を挙げて説明する。例えば、データの数が５（即ち、ｎ＝４）であり、手順２０５で得られた識別値Ｃ（０〜４）が”０，１，０，１，１”であったとする。また、手順２０９と手順２１２において識別符号の生成に従来技術の説明で用いたランレングス符号化を用いるとする。すると、手順２０９が終了した時点で識別符号ＣＣの符号量は、３６ビットとなる。
【００４０】
即ち、識別値Ｃ（０〜４）が”０，１，０，１，１”だから、「０」が「１」連続、「１」が「１」連続、「０」が「１」連続、「１」が「２」連続であり、ランの数は４となる。従って、識別符号ＣＣの符号量は、９ビット×４＝３６ビットとなるのである。
【００４１】
手順２１０では上述のように識別符号ＣＣの符号量が少なくなるように識別値Ｃを変更する。ランレングス符号化においては、ランの長さを長くすることが符号量削減となる。現在の識別値Ｃ（０〜４）＝”０，１，０，１，１”は上述したように４つのランに分けられ、各々のランを長くすることで識別符号の符号長を少なくできる。
【００４２】
たとえば、最初の”０”の１連続ランを長くすると識別値Ｃ’（０〜４）は”０，０，０，１，１”となり、２つのランとなる。従って、９ビット×２＝１８ビットで符号化できる。又、２つ目のランを左方向に長くした場合は、Ｃ’（０〜４）＝”１，１，０，１，１”、右方向に長くした場合は、Ｃ’（０〜４）＝”０，１，１，１，１”、左右方向に長くした場合はＣ’（０〜４）＝”１，１，１，１，１”となる。同様に、３つ目のランを左方向に長くした場合は、Ｃ’（０〜４）＝”０，０，０，１，１”、右方向に長くした場合は、Ｃ’（０〜４）＝”０，１，０，０，１”、左右方向に長くした場合はＣ’（０〜４）＝”０，０，０，０，１”となり、４つ目のランを左方向に長くした場合は、Ｃ’（０〜４）＝”０，１，１，１，１”となる。
【００４３】
このように各ランを、左方向、右方向、左右方向に長くした場合の各々が識別値Ｃの変更候補となる。識別値Ｃを変更することで、一般にハフマン符号の符号量は増大する。しかしながら、識別符号ＣＣにおける符号量削減効果がハフマン符号量増大よりも大きい場合にデータ圧縮処理全体としての圧縮率向上が実現できる。
【００４４】
手順２１５では全てのランについて左方向、右方向、左右方向に長くした場合が既に実行されたかを判定し、変更候補が残っていれば（手順２１５にて「イエス」の場合）処理２１０へ戻る。実装方法の一例としては、各ランを最も左側のランから順に、ランを長くしたものを変更候補としていき、そして、最も右側のランを長くしたものを最後の変更候補とするという方法が考えられる。又、この手順法によって符号量削減効果が得られた場合は、さらにもう一度、最も左側のランから順に、ランを長くしたものを変更したものを変更候補とし、これを最も右側のランまで繰り返す上記手順を符号量削減効果が得られなくなるまで、もしくは予め定められた規定回数まで繰り返しても良い。
【００４５】
なお、手順２０２、２０３、２０４、２１１におけるハフマン符号化においては、実際にハフマン符号化を行わず、ハフマン符号量を求めるだけでもよい。これによって演算量削減効果が得られることがある。その場合、処理２１６で、識別値Ｃ（０〜ｎ）を用いて０番目からｎ番目までのデータをハフマン符号化してハフマン符号Ｈ（０〜ｎ）を生成する。
【００４６】
なお、手順２１０、２１５の説明では識別値Ｃの変更候補として、ランを左方向、右方向、左右方向に長くする場合の３通り全てを候補としたが、これら３つの中のいずれか１つもしくは２つのみを用いても良い。
【００４７】
次に、第２の実施の形態について説明する。第２の実施の形態は上述した手順２１５の具体例を示したものである。図４を参照すると、手順２１５では全てのランについて左方向、右方向、左右方向に長くした場合が既に実行されたか否かが判定され、変更候補が残っていれば手順２１０へ戻る。
【００４８】
実装方法の一例としては、考えられ得るランの結合の候補を全て変更候補とするというものがあるが、この方法では必要演算量が膨大となる場合がある。そこで、必要演算量が少なくて済む実装方法の一例として、各ランを最も左側のランから順に、ランを長くしたものを変更候補としていき、そして、最も右側のランを長くしたものを最後の変更候補とするという方法が考えられる。又、逆に最も右側のランから順に、ランを長くしたものを変更候補とし、最も左側のランを長くしたものを最後の変更候補とする方法も考えられる。
【００４９】
又、この手順によって符号量削減効果が得られた場合は、さらにもう一度、最も左側のランから順に、ランを長くしたものを変更候補とし、これを最も右側のランまで繰り返す上記手順を符号量削減効果が得られなくなるまで、もしくは予め定められた規定回数まで繰り返してよい。
【００５０】
この方法に沿うように図４のフローチャートを書き換えたものが図５の第２の実施の形態の動作を示すフローチャートである。なお、手順２０１〜２０９については図３のフローチャートと同様であるため説明を省略する。
【００５１】
図５を参照すると、手順２０９ａでは、現在処理の対象となっているランを表す変数をラン位置Ｒとし、その値をＣ（０）を含むラン、即ち、最も左側のランとする。
【００５２】
次に、手順２１０では、識別値Ｃ（０〜ｎ）に３種類の変更を加え、ラン位置Ｒのランを左方向に長くした識別値を識別値ＣＬ´（０〜ｎ）、右方向に長くした識別値を識別値ＣＲ´（０〜ｎ）、左右方向に長くした識別値を識別値ＣＬＲ´（０〜ｎ）とする。
【００５３】
次に、手順２１１では、識別値ＣＬ´（０〜ｎ）、ＣＲ´（０〜ｎ）、ＣＬＲ´（０〜ｎ）が示すハフマン符号化部を用いて０番目からｎ番目までのデータをハフマン符号化し、生成されたハフマン符号を各々ＨＬ´（０〜ｎ）、ＨＲ´（０〜ｎ）、ＨＬＲ´（０〜ｎ）とする。
【００５４】
次に、手順２１２では、識別値ＣＬ´（０〜ｎ）、ＣＲ´（０〜ｎ）、ＣＬＲ´（０〜ｎ）を手順２０９と同様な手法で各々符号化して識別符号ＣＣＬ´，ＣＣＲ´，ＣＣＬＲ´を生成する。又、識別符号ＣＣＬ´とハフマン符号ＨＬ´（０〜ｎ）との合計符号量と、識別符号ＣＣＲ´とハフマン符号ＨＲ´（０〜ｎ）との合計符号量と、識別符号ＣＣＬＲ´とハフマン符号ＨＬＲ´（０〜ｎ）との合計符号量とを比較し、最も少ない符号量を実現する識別符号をＣＣ´、ハフマン符号をＨ´（０〜ｎ）、識別値をＣ´（０〜ｎ）とする。例えば、識別符号ＣＣＬ´とハフマン符号ＨＬ´（０〜ｎ）との合計符号量が最小であれば、ＣＣ´＝ＣＣＬ´、Ｈ´（０〜ｎ）＝ＨＬ´（０〜ｎ）、Ｃ´（０〜ｎ）＝ＣＬ´（０〜ｎ）とする。
【００５５】
次に、手順２１３では、識別符号ＣＣ´とハフマン符号Ｈ´（０〜ｎ）との合計符号量が識別符号ＣＣとハフマン符号Ｈ（０〜ｎ）の合計符号量よりも小さい場合（手順２１３にて「イエス」の場合）に手順２１４へ進み、そうでなければ（手順２１３にて「ノ−」の場合）手順２１５へ分岐する。この手順２１３では、手順２１０での識別値の変更によって符号量削減効果が得られたか否かを判定している。
【００５６】
次に、手順２１４では、現時点での最小符号量を実現する識別値として、識別値Ｃ´（０〜ｎ）を識別値Ｃ（０〜ｎ）に、識別符号ＣＣ´を識別符号ＣＣに、ハフマン符号Ｈ´（０〜ｎ）をハフマン符号Ｈ（０〜ｎ）に夫々コピーする。
【００５７】
次に、手順２１５では、ラン位置Ｒが示すランがＣ（ｎ）を含むラン、即ち、最も右側のランであれば（手順２１５にて「イエス」の場合）手順２１６へ進み、そうでなければ（手順２１５にて「ノ−」の場合）、手順２１５ａでラン位置Ｒを一つ右隣のランへ移動して手順２１０へ戻る。
【００５８】
次に、手順２１６では、処理結果として識別符号ＣＣとハフマン符号Ｈ（０〜ｎ）とを出力する。
【００５９】
ここで、上述した手順２０９ａ以降の処理について具体的な数値を用いて説明する。一例として、手順２０９にて識別値Ｃ（０〜４）＝”０，１，０，１，１”が得られた場合について説明する。この場合、最も左側のラン（Ｒ１とする）が“０”、その右隣のラン（Ｒ２とする）が“１”、その右隣のラン（Ｒ３とする）が“０”、その右隣のラン（Ｒ４とする）が“１，１”である。
【００６０】
まず、手順２０９ａではラン位置をＲ１とする。次に、手順２１０では、ラン位置Ｒ１のランを右方向に長くする。従って、識別値ＣＲ´（０〜４）＝”０，０，０，１，１”となる。なお、ラン位置Ｒ１は左端であるためランを左方向及び左右方向に長くすることはできない。同様に、ラン位置Ｒ４は右端であるためランを右方向及び左右方向に長くすることはできない。
【００６１】
次に、手順２１１では識別値ＣＲ´（０〜４）が示すハフマン符号化部で各々入力データをハフマン符号化する。即ち、まず識別値ＣＲ´（０）＝”０”だから最初の入力データＤ１を第１のハフマン符号化部１０１で符号化しハフマン符号ＨＲ´（０）を得る。同様に、識別値ＣＲ´（１）＝”０”だから第２の入力データＤ２を第１のハフマン符号化部１０１で符号化しハフマン符号ＨＲ´（１）を、識別値ＣＲ´（２）＝”０”だから第３の入力データＤ３を第１のハフマン符号化部１０１で符号化しハフマン符号ＨＲ´（２）を、識別値ＣＲ´（３）＝”１”だから第４の入力データＤ４を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＲ´（３）を、識別値ＣＲ´（４）＝”１”だから第５の入力データＤ５を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＲ´（４）を夫々得る。
【００６２】
次に、手順２１２では識別値ＣＲ´（０〜４）＝”０，０，０，１，１”から識別符号ＣＣＲ´（０〜４）を生成する。すると、識別符号ＣＣＲ´（０〜４）＝“０，３，１，２”となる。なお、ラン位置Ｒ１が左端であるため識別値ＣＬ´（０〜４）及びＣＬＲ´（０〜４）は存在しない。従って、この場合、合計符号量の比較は行わない。即ち、識別符号ＣＣＲ´（０〜４）＝“０，３，１，２”をＣＣ´とし、ハフマン符号ＨＲ´（０〜４）をＨ´（０〜４）とし、識別値ＣＲ´（０〜４）＝”０，０，０，１，１”をＣ´（０〜４）とする。
【００６３】
次に、手順２１３では識別符号ＣＣ´とハフマン符号Ｈ´との合計符号量が識別符号ＣＣとハフマン符号Ｈとの合計符号量よりも小さいか否かを判定する。この場合、識別符号ＣＣ´とハフマン符号Ｈ´との合計符号量が識別符号ＣＣとハフマン符号Ｈとの合計符号量よりも小さいものとする。そこで、手順２１４に進み、識別値Ｃ´（０〜４）を識別値Ｃ（０〜４）に、識別符号ＣＣ´（０〜４）をＣＣ（０〜４）に、ハフマン符号Ｈ´（０〜４）をハフマン符号Ｈ（０〜４）にコピーする。
【００６４】
次に、手順２１５ではラン位置Ｒ１は最も右側のランではないので、手順２１５ａへ進み、ラン位置を右隣のＲ２へ移動する。そして、手順２１０に戻る。これから先は上述の手順２１０以降の繰り返しとなる。いま、ラン位置Ｒ２の場合についてのみ説明するが、ラン位置Ｒ３，Ｒ４の場合も同様に説明できる。
【００６５】
手順２１０ではラン位置Ｒ２のランを左方向に長くする。元の識別値Ｃ（０〜４）＝”０，１，０，１，１”だから、、識別値ＣＬ´（０〜４）＝”１，１，０，１，１”となる。次に、ラン位置Ｒ２のランを右方向に長くする。すると、識別値ＣＲ´（０〜４）＝”０，１，１，１，１”となる。次に、ラン位置Ｒ２のランを左右方向に長くする。すると、識別値ＣＬＲ´（０〜４）＝”１，１，１，１，１”となる。
【００６６】
次に、手順２１１では識別値ＣＬ´（０〜４）が示すハフマン符号化部で各々入力データをハフマン符号化する。即ち、まず識別値ＣＬ´（０）＝”１”だから最初の入力データＤ１を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬ´（０）を得る。同様に、識別値ＣＬ´（１）＝”１”だから第２の入力データＤ２を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬ´（１）を、識別値ＣＬ´（２）＝”０”だから第３の入力データＤ３を第１のハフマン符号化部１０１で符号化しハフマン符号ＨＬ´（２）を、識別値ＣＬ´（３）＝”１”だから第４の入力データＤ４を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬ´（３）を、識別値ＣＬ´（４）＝”１”だから第５の入力データＤ５を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬ´（４）を夫々得る。
【００６７】
同様に、識別値ＣＲ´（０〜４）が示すハフマン符号化部で各々入力データをハフマン符号化する。即ち、まず識別値ＣＲ´（０）＝”０”だから最初の入力データＤ１を第１のハフマン符号化部１０１で符号化しハフマン符号ＨＲ´（０）を得る。同様に、識別値ＣＲ´（１）＝”１”だから第２の入力データＤ２を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＲ´（１）を、識別値ＣＲ´（２）＝”１”だから第３の入力データＤ３を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＲ´（２）を、識別値ＣＲ´（３）＝”１”だから第４の入力データＤ４を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＲ´（３）を、識別値ＣＲ´（４）＝”１”だから第５の入力データＤ５を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＲ´（４）を夫々得る。
【００６８】
同様に、識別値ＣＬＲ´（０〜４）が示すハフマン符号化部で各々入力データをハフマン符号化する。即ち、まず識別値ＣＬＲ´（０）＝”１”だから最初の入力データＤ１を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬＲ´（０）を得る。同様に、識別値ＣＬＲ´（１）＝”１”だから第２の入力データＤ２を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬＲ´（１）を、識別値ＣＬＲ´（２）＝”１”だから第３の入力データＤ３を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬＲ´（２）を、識別値ＣＬＲ´（３）＝”１”だから第４の入力データＤ４を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬＲ´（３）を、識別値ＣＬＲ´（４）＝”１”だから第５の入力データＤ５を第２のハフマン符号化部１０２で符号化しハフマン符号ＨＬＲ´（４）を夫々得る。
【００６９】
次に、手順２１２では識別値ＣＬ´（０〜４），ＣＲ´（０〜４），ＣＬＲ´（０〜４）から識別符号ＣＣＬ´，ＣＣＲ´，ＣＣＬＲ´を生成する。すると、識別符号ＣＣＬ´＝“１，２，０，１，１，２”、識別符号ＣＣＲ´＝“０，１，１，４”、識別符号ＣＣＬＲ´＝“１，５”となる。
【００７０】
次に、識別符号ＣＣＬ´とハフマン符号ＨＲ´（０〜４）との合計符号量と、識別符号ＣＣＲ´とハフマン符号ＨＲ´（０〜４）との合計符号量と、識別符号ＣＬＲ´とハフマン符号ＨＬＲ´（０〜４）との合計符号量とを比較し、最も少ない符号量を実現する識別符号をＣＣ´、ハフマン符号をＨ´（０〜４）、識別値をＣ´（０〜４）とする。
【００７１】
そして、上述したのと同様の手順で手順２１３，２１４を実行し，手順２１５でラン位置Ｒ２は最も右側のランではないので、手順２１５ａへ進み、ラン位置を右隣のＲ３へ移動する。そして、手順２１０に戻る。以下、ラン位置Ｒ２について行ったのと同様の手順をラン位置Ｒ２及びＲ３について実行する。
【００７２】
次に、第３の実施の形態について説明する。第３の実施の形態はデータ圧縮方法の制御プログラムを記録した記録媒体に関するものである。図６は記録媒体及び記録媒体駆動装置の一例の構成図である。同図を参照すると、記録媒体駆動装置は、前述した制御部（図１参照）１０６と、入力部１１０と、記憶部１１１とから構成され、制御部１０６が前述したハフマン符号化部１０１，１０２，１０３と、符号選択部１０４と、再符号化部１０５と（図１参照）を制御する。一方、記録媒体１１２には図３〜図５にフローチャートで示した制御プログラムが記録されている。
【００７３】
次に、記録媒体駆動装置の動作について説明する。まず、入力部１１０から制御部１０６に対し記録媒体１１２の制御プログラムの入力命令が出されると、制御部１０６は記録媒体１１２から制御プログラムを読み込み、記憶部１１に格納する。次に、入力部１１０から制御部１０６に対し制御プログラムの実行命令が出されると、制御部１０６は記憶部１１から制御プログラムを読出し、その制御プログラムに従ってハフマン符号化部１０１，１０２，１０３と、符号選択部１０４と、再符号化部１０５とを制御する。その制御内容については既に述べたので説明を省略する。
【００７４】
【発明の効果】
本発明による第１の発明によれば、順次入力されるデータを夫々異なる手法で符号化する複数のデータ符号化手段と、前記各データ符号化手段で得られた符号のうち最短符号を選択し、その最短符号及びその最短符号化を行った前記データ符号化手段の識別値の履歴を符号化した識別符号を出力する符号選択手段とを含むデータ圧縮装置であって、その装置は前記識別符号と前記最短符号の合計符号量がより小さくなるように前記識別値を変更して前記データ符号化手段を再選択し再符号化を行う再符号化手段を含むため、符号量を従来技術よりも低減することが可能となる。
【００７５】
即ち、識別符号の符号量が少なくなるような変更とその時の符号量計算を繰り返し行い、識別符号とハフマン符号の合計符号量がより小さくなるように構成されているため、より高い圧縮率でデータ圧縮することができる。又、第２及び第３の発明も第１の発明と同様の効果を奏する。
【図面の簡単な説明】
【図１】本発明に係るデータ圧縮装置の第１の実施の形態の構成図である。
【図２】同データ圧縮装置の再符号化部１０５の構成図である。
【図３】本発明に係るデータ圧縮装置の第１の実施の形態の動作を示すフロ−チャートである。
【図４】本発明に係るデータ圧縮装置の第１の実施の形態の動作を示すフロ−チャートである。
【図５】第２の実施の形態の動作を示すフローチャートである。
【図６】記録媒体及び記録媒体駆動装置の一例の構成図である。
【図７】従来のデータ圧縮装置の一例の構成図である。
【図８】従来のデータ圧縮装置の動作を示すフローチャートである。
【符号の説明】
１０１〜１０３  第１〜第３ハフマン符号化部
１０４  符号選択部
１０５  再符号化部
１０６  制御部
１０７  識別符号変更部
１０８  最短符号選択部
１１２  記録媒体
【図１】
0003580251.tif 000002
【図２】
0003580251.tif 000003
【図３】
0003580251.tif 000004
【図４】
0003580251.tif 000005
【図５】
0003580251.tif 000006
【図６】
0003580251.tif 000007
【図７】
0003580251.tif 000008
【図８】
0003580251.tif 000009