(57)【要約】【課題】同一データの連続性が低いデータであっても圧縮効率を向上できる。【解決手段】同一のデータが所定数以上の連続である場合には、全同一データの連続として、複数個の同一のデータを連長圧縮する。同一のデータが所定数以上の連続でない場合には、各データを上位と下位に分割する。上位のデータが同一値であって所定数以上の連続である場合には、半同一データの連続として、各データの上位を連長圧縮し、各データの下位を羅列する。同一データが所定数以上連続する場合は、全同一データとして第１の符号化を行って圧縮を図るので圧縮効率を向上できる。また、同一データが所定数以上連続しない場合にはデータを分割し、上位が同一で所定数以上連続している場合は、半同一データの連続として第２の符号化により圧縮を図る。したがって、同一データの連続性が低いデータであっても圧縮効率を向上できる。【選択図】図１
2014039198.tif 000002
【特許請求の範囲】
【請求項１】
処理対象データを圧縮するデータ圧縮方法において、
前記処理対象データについて同一のデータが所定数以上の連続であるか否かを判定する連続性判定ステップと、
前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、前記複数個の同一のデータを連長圧縮するための第１の符号化を行う第１の符号化ステップと、
前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、前記処理対象データの各データを上位ビットと下位ビットに分割する分割ステップと、
前記分割ステップによって分割された前記処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定する上位ビット連続性判定ステップと、
前記上位ビット連続性判定ステップによる判定により、前記各データのうち上位ビットのデータが同一であって所定数以上の連続である場合には、半同一データの連続として、前記各データの前記上位ビットを連長圧縮し、前記各データの下位ビットを羅列する第２の符号化を行う第２の符号化ステップと、
を有することを特徴とするデータ圧縮方法。
【請求項２】
請求項１に記載のデータ圧縮方法において、
前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、所定数未満の各データを非同一データとし、前記第１の符号化ステップを実施しないことを特徴とするデータ圧縮方法。
【請求項３】
請求項１または２に記載のデータ圧縮方法において、
前記上位ビット連続性判定ステップによる判定により、上位ビットのデータが同一であって所定数以上の連続でない場合には、所定数未満の各データを非同一データとし、前記第２の符号化ステップを実施しないことを特徴とするデータ圧縮方法。
【請求項４】
請求項１から３のいずれかに記載のデータ圧縮方法において、
前記連続性判定ステップにおける所定数は「３」であることを特徴とするデータ圧縮方法。
【請求項５】
請求項１から４のいずれかに記載のデータ圧縮方法において、
前記上位ビット判定ステップにおける所定数は「５」であることを特徴とするデータ圧縮方法。
【請求項６】
処理対象データを圧縮するデータ圧縮装置において、
前記処理対象データについて同一のデータが所定数以上の連続であるか否かを判定する連続性判定手段と、
前記連続性判定手段による判定により、前記処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、前記複数個の同一のデータを連長圧縮するための第１の符号化を行う第１の符号化手段と、
前記連続性判定手段による判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、前記処理対象データの各データを上位ビットと下位ビットに分割するするデータ分割手段と、
前記データ分割手段によって分割された前記処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定する上位ビット連続性判定手段と、
前記上位ビット連続性判定手段による判定により、前記各データのうち上位ビットのデータが同一であって所定数以上の連続である場合には、半同一データの連続として、前記各データの前記上位ビットを連長圧縮し、前記各データの下位ビットを羅列する第２の符号化を行う第２の符号化手段と、
を備えていることを特徴とするデータ圧縮装置。
【請求項７】
請求項６に記載のデータ圧縮装置において、
前記連続性判定手段による判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、所定数未満の各データを非同一データとし、前記第１の符号化手段による処理を実施しないことすることを特徴とするデータ圧縮装置。
【請求項８】
請求項６または７に記載のデータ圧縮装置において、
前記上位ビット連続性判定手段による判定により、上位ビットのデータが同一であって所定数以上の連続でない場合には、所定数未満の各データを非同一データとし、前記第２の符号化手段による処理を実施しないことを特徴とするデータ圧縮装置。
【請求項９】
処理対象データをコンピュータによって圧縮するデータ圧縮プログラムであって、
前記コンピュータのＣＰＵがメモリにおいて実行することにより、
前記処理対象データについて同一のデータが所定数以上の連続である否かを判定する連続性判定機能と、
前記連続性判定機能による判定により、前記処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、前記複数個の同一のデータを連長圧縮するための第１の符号化を行う第１の符号化機能と、
前記連続性判定機能による判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、前記処理対象データの各データを上位ビットと下位ビットに分割する分割機能と、
前記分割機能によって分割された前記処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定する上位ビット連続性判定機能と、
前記上位ビット連続性判定機能による判定により、前記各データのうち上位ビットのデータが同一であって所定数以上の連続である場合には、半同一データの連続として、前記各データの前記上位ビットを連長圧縮し、前記各データの下位ビットを羅列する第２の符号化を行う第２の符号化機能と、
を実現させるためのデータ圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データなどの処理対象データを圧縮するデータ圧縮方法及びその装置並びにそのプログラムに係り、特に、連続するデータを連長圧縮する技術に関する。
【背景技術】
【０００２】
従来、この種の方法としては、画像データなどのデータ圧縮のために、同一データの連続性に着目したPack Bits（連長圧縮やランレングス圧縮とも呼ばれる）がある（例えば、特許文献１参照）。このPack Bitsは、同一データの連続／不連続の長さを記録することでデータの可逆圧縮を行う。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−２７７９３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、このような構成を有する従来例の場合には、次のような問題がある。
すなわち、従来の方法は、多くの同一データが連続する場合にしか圧縮効果が得られない。例えば、画像データは、同一のデータが多く連続する割合は多くはなく、ノイズ的に近似データ状になっていることが多くある。したがって、画像データを効率的に圧縮することができないという問題がある。
【０００５】
本発明は、このような事情に鑑みてなされたものであって、同一データの連続性が低いデータであっても圧縮効率を向上することができるデータ圧縮方法及びその装置並びにそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明は、このような目的を達成するために、次のような構成をとる。
すなわち、請求項１に記載の発明は、処理対象データを圧縮するデータ圧縮方法において、前記処理対象データについて同一のデータが所定数以上の連続であるか否かを判定する連続性判定ステップと、前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、前記複数個の同一のデータを連長圧縮するための第１の符号化を行う第１の符号化ステップと、前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、前記処理対象データの各データを上位ビットと下位ビットに分割する分割ステップと、前記分割ステップによって分割された前記処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定する上位ビット連続性判定ステップと、前記上位ビット連続性判定ステップによる判定により、前記各データのうち上位ビットのデータが同一であって所定数以上の連続である場合には、半同一データの連続として、前記各データの前記上位ビットを連長圧縮し、前記各データの下位ビットを羅列する第２の符号化を行う第２の符号化ステップと、を有することを特徴とするものである。
【０００７】
［作用・効果］請求項１に記載の発明によれば、第１の符号化ステップでは、連続性判定ステップの判定により、処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、複数個の同一のデータを連長圧縮するための第１の符号化を行う。分割ステップでは、処理対象データについて同一のデータが所定数以上の連続でない場合には、処理対象データの各データを上位ビットと下位ビットに分割する。上位ビット連続性判定ステップでは、分割ステップによって分割された処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定し、連続である場合には、第２の符号化ステップにおいて、半同一データの連続として、各データの上位ビットを連長圧縮し、各データの下位ビットを羅列する第２の符号化を行う。このように、同一データが所定数以上連続する場合は、全同一データとして第１の符号化を行って圧縮を図るので圧縮効率を向上できる。また、同一データが所定数以上連続しない場合にはデータを分割し、上位ビットが同一で所定数以上連続している場合は、半同一データの連続として第２の符号化により圧縮を図る。したがって、同一データの連続性が低いデータであっても圧縮効率を向上することができる。
【０００８】
また、本発明において、前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、所定数未満の各データを非同一データとし、前記第１の符号化ステップを実施しないことが好ましく（請求項２）、前記上位ビット連続性判定ステップによる判定により、上位ビットのデータが同一であって所定数以上の連続でない場合には、所定数未満の各データを非同一データとし、前記第２の符号化ステップを実施しないことが好ましい（請求項３）。圧縮効果が期待できない場合には、第１の符号化ステップや第２の符号化ステップを実施しない方が結果が好ましくなる。
【０００９】
また、本発明において、前記連続性判定ステップにおける所定数は「３」であることが好ましく（請求項４）、前記上位ビット連続性判定ステップにおける所定数は「５」であることが好ましい（請求項５）。同一データの連続数は、「３」以上であれば圧縮効果が期待でき、半同一データの連続数は、「５」以上であれば圧縮効果を期待できる。
【００１０】
また、請求項６に記載の発明は、処理対象データを圧縮するデータ圧縮装置において、前記処理対象データについて同一のデータが所定数以上の連続であるか否かを判定する連続性判定手段と、前記連続性判定手段による判定により、前記処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、前記複数個の同一のデータを連長圧縮するための第１の符号化を行う第１の符号化手段と、前記連続性判定手段による判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、前記処理対象データの各データを上位ビットと下位ビットに分割するするデータ分割手段と、前記データ分割手段によって分割された前記処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定する上位ビット連続性判定手段と、前記上位ビット連続性判定手段による判定により、前記各データのうち上位ビットのデータが同一であって所定数以上の連続である場合には、半同一データの連続として、前記各データの前記上位ビットを連長圧縮し、前記各データの下位ビットを羅列する第２の符号化を行う第２の符号化手段と、を備えていることを特徴とするものである。
【００１１】
［作用・効果］請求項６に記載の発明によれば、第１の符号化手段は、連続性判定手段の判定により、処理対象データについて同一のデータが所定数以上の連続である場合には、同一データの連続として、複数個の同一のデータを連長圧縮するための第１の符号化を行う。分割手段は、処理対象データについて同一のデータが所定数以上の連続でない場合には、処理対象データの各データを上位ビットと下位ビットに分割する。上位ビット連続性判定手段は、分割手段によって分割された処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定し、連続である場合には、第２の符号化手段が、半同一データの連続として、各データの上位ビットを連長圧縮し、各データの下位ビットを羅列する第２の符号化を行う。このように、同一データが所定数以上連続する場合は、全同一データとして第１の符号化手段により第１の符号化を行って圧縮を図るので圧縮効率を向上できる。また、同一データが所定数以上連続しない場合にはデータを分割し、上位ビットが同一で所定数以上連続している場合は、第２の符号化手段により半同一データの連続として第２の符号化により圧縮を図る。したがって、同一データの連続性が低いデータであっても圧縮効率を向上することができる。
【００１２】
また、請求項９に記載の発明は、処理対象データをコンピュータによって圧縮するデータ圧縮プログラムであって、前記コンピュータのＣＰＵがメモリにおいて実行することにより、前記処理対象データについて同一のデータが所定数以上の連続である否かを判定する連続性判定機能と、前記連続性判定機能による判定により、前記処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、前記複数個の同一のデータを連長圧縮するための第１の符号化を行う第１の符号化機能と、前記連続性判定機能による判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、前記処理対象データの各データを上位ビットと下位ビットに分割する分割機能と、前記分割機能によって分割された前記処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定する上位ビット連続性判定機能と、前記上位ビット連続性判定機能による判定により、前記各データのうち上位ビットのデータが同一であって所定数以上の連続である場合には、半同一データの連続として、前記各データの前記上位ビットを連長圧縮し、前記各データの下位ビットを羅列する第２の符号化を行う第２の符号化機能と、を実現させるためのデータ圧縮プログラムである。
【発明の効果】
【００１３】
本発明に係るデータ圧縮方法によれば、第１の符号化ステップでは、連続性判定ステップの判定により、処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、複数個の同一のデータを連長圧縮するための第１の符号化を行う。分割ステップでは、処理対象データについて同一のデータが所定数以上の連続でない場合には、処理対象データの各データを上位ビットと下位ビットに分割する。上位ビット連続性判定ステップでは、分割ステップによって分割された処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定し、連続である場合には、第２の符号化ステップにおいて、半同一データの連続として、各データの上位ビットを連長圧縮し、各データの下位ビットを羅列する第２の符号化を行う。このように、同一データが所定数以上連続する場合は、全同一データとして第１の符号化を行って圧縮を図るので圧縮効率を向上できる。また、同一データが所定数以上連続しない場合にはデータを分割し、上位ビットが同一で所定数以上連続している場合は、半同一データの連続として第２の符号化により圧縮を図る。したがって、同一データの連続性が低いデータであっても圧縮効率を向上することができる。
【図面の簡単な説明】
【００１４】
【図１】実施例に係るデータ圧縮装置の概略構成を示すブロック図である。
【図２】データ圧縮装置の動作を示すフローチャートである。
【図３】全同一データ処理の動作を示すフローチャートである。
【図４】半同一データ処理の動作を示すフローチャートである。
【図５】非同一データ処理の動作を示すフローチャートである。
【図６】最終データ処理の動作を示すフローチャートである。
【図７】処理過程の例を説明するための図である。
【図８】処理過程の例を説明するための図である。
【図９】処理過程の例を説明するための図である。
【図１０】処理過程の例を説明するための図である。
【図１１】処理過程の例を説明するための図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の一実施例について説明する。
図１は、実施例に係るデータ圧縮装置の概略構成を示すブロック図である。
【００１６】
実施例に係るデータ圧縮装置は、処理対象データとして例えば画像データを与えられ、それを圧縮画像データとして出力するものであり、コンピュータ１から構成されている。コンピュータ１は、ＣＰＵ１ａ、メモリ１ｂ、ディスクドライブ１ｃ、ディスク１ｄや、入出力インターフェイス等を備えている。コンピュータ１は、機能的には、読み取り部３と、保持データレジスタ５と、比較部７と、ＦＩＦＯ９と、全同一カウンタ１１と、半同一カウンタ１３と、非同一カウンタ１５とから構成されている。なお、ディスク１ｄは、後述するプログラムを予め記憶している記憶媒体である。ディスクドライブ１ｃは、ディスク１ｄが着脱自在に構成され、ディスク１ｄに対する読み書きを行う。ここでは、ディスク１ｄのプログラムを読み取るものである。ＣＰＵ１ａは、ディスクドライブ１ｃを介してプログラムを読みとり、メモリ１ｂにそのプログラムをロードする。ＣＰＵ１ａは、メモリ１ｂのプログラムを実行することで、後述する処理を行う。
【００１７】
読み取り部３は、「処理対象データ」である画像データの一部のデータ（ここでは最小の処理単位のデータであり、１バイトである）を読み取る。保持データレジスタ５は、読み取り部３で読み取った画像データの一部を保持する。比較部７は、読み取り部３と保持データレジスタ５のデータ同士を比較し、全て一致（全同一）、半部一致（半同一）、全て不一致（非同一）の一致度合いを判断する。ＦＩＦＯ９は、先入れ先出し式のレジスタであり、保持データレジスタ５のデータを順次に保持する。全同一カウンタ１１と、半同一カウンタ１３と、非同一カウンタ１５とは、ＦＩＦＯ９内におけるそれぞれの種類のデータ数を示す。全同一カウンタ１１は、全同一データの個数を示すカウント値Ｎｆを保持し、半同一カウンタ１３は、半同一データの個数を示すカウント値Ｎｈを保持し、非同一データの個数を示す非同一カウンタ１５は、非同一データの個数を示すカウント値Ｎｎを保持する。
【００１８】
なお、上述したコンピュータ１が本発明における「連続性判定手段」と、「第１の符号化判定手段」と、「データ分割手段」と、「上位ビット連続性判定手段」と、「第２の符号化手段」とに相当する。
【００１９】
ここでは、上述した「全同一データ」は、８ビット／ピクセルのデータのうち、比較対象のデータと全ビットが同一であることをいう。また、「半同一データ」は、８ビット／ピクセルのデータのうち、上位ビット（４ビット）だけが比較対象のデータと同一であって、下位ビット（４ビット）が比較対象のデータとは相違することをいう。また、「非同一データ」は、上述した同一データ及び半同一データ以外のことをいう。
【００２０】
ここで、本発明の理解を容易にするために、まず従来例であるPack Bitsについて説明する。この圧縮技術は、同一データの連続／不連続する長さを記録していくことでデータの圧縮を行うものである。なお、以下の符号「−」は同一を表し、符号「＋」は非同一を表す。
【００２１】
例えば、４バイトで表現される「Ａ＿Ａ＿Ａ＿Ａ」という処理対象データは、同じく４バイトで表現される「−４＿Ａ」とされ、「Ａ＿Ｂ＿Ｃ＿Ｄ」という処理対象データは、「＋４＿Ａ＿Ｂ＿Ｃ＿Ｄ」とされる。前者は、４バイト→２バイトとなり、後者は、４バイト→５バイトとなる。つまり、前者は圧縮効果が得られているが、後者は圧縮効果が得られていない。
【００２２】
そこで、本発明は、以下に説明するPack Bitsに対する「改良点１」を加えた。
【００２３】
つまり、処理対象データの各データを上位４ビットと下位４ビットに分割し、上位４ビットが同一データの連続を「半同一データ」として扱う。
【００２４】
例えば、処理対象データが「７０＿７１＿７２＿７３＿７４＿７５＿７６＿７７」である場合には、従来のPack Bitsと本発明とで圧縮を行うと結果は次のようになる。なお、以下の符号「￥」は半同一を表すものとする。処理対象データは、上位ビットが「７」として表現され、下位ビットが「０〜７」として表現されているものとする。
【００２５】
従来例では、「＋８＿７０＿７１＿７２＿７３＿７４＿７５＿７６＿７７」となる。一方、本発明では、「￥８＿７０＿１２＿３４＿５６＿７ｘ」となる。なお、ここでの符号「ｘ」は、空いた下位４ビットを埋めるだけのものである。ここで、本発明は、上位４ビットだけが共通している半同一データが８個連続していることを示し、それに続いて上位４ビットの同一データである「７」を記し、それに続けて各半同一データの下位４ビットを羅列している。
【００２６】
従来例では、８バイト→９バイトとなって圧縮効果が得られていない一方、本発明では、８バイト→６バイトとなって圧縮効果が得られている。
【００２７】
なお、本発明は、データを全同一、半同一、非同一の三種類に分類するために判別用に２ビットを必要とする。そのため、データは６４個の連続数までのカウントとなる。
【００２８】
処理対象データの全てのデータが非同一データの連続であった場合、Pack Bitsにより符号が付加されるので、圧縮前のデータサイズよりも大きくなる。つまり、符号の付加以上の圧縮ができない場合には、圧縮率が１００％を越えて圧縮効果が期待できないということになる。
【００２９】
例えば、処理対象データが「００＿０１＿０２＿０２＿０３＿０４」である場合、Pack Bitsでは「＋２＿００＿０１＿−２＿０２＿＋２＿０３＿０４」となり、６バイト→８バイトとなる。Pack Bitsで全てを非同一データとして扱った場合には、「＋６＿００＿０１＿０２＿０２＿０３＿０４」となり、６バイト→７バイトとなる。つまり、このような場合には、同一データとして扱うよりも、全てを非同一データとして扱った方が圧縮効率がよいことになる。これにより、圧縮効果を得るためには、同一データが３連続以上である場合にのみ同一データとして扱うことが適切である。
【００３０】
また、半同一データは、処理対象データの各データが５個以上連続して半同一である場合にのみ半同一データとして扱うことが適切である。
【００３１】
例えば、処理対象データが以下の場合を例にとって圧縮効果について説明する。
【００３２】
３連続である場合
「００＿１０＿１１＿１２＿００」は、「＋１＿００＿￥３＿１０＿１２＿＋１＿００」となり、５バイト→７バイトとなる。
【００３３】
４連続である場合
「００＿１０＿１１＿１２＿１３＿００」は、「＋１＿００＿￥４＿１０＿１２＿３ｘ＿＋１＿００」となり、６バイト→８バイトとなる。
【００３４】
５連続の場合
「００＿１０＿１１＿１２＿１３＿１４＿００」は、「＋１＿００＿￥５＿１０＿１２＿３４＿＋１＿００」となり、７バイト→８バイトとなる。これは、全てが非同一データである場合と同じ圧縮率となる。
【００３５】
上述した点から、本発明では、同一データについては、３連続未満のときは非同一データとして扱い、半同一データについては、５連続未満のときは非同一データとして扱う。これが本発明のPack Bitsに対する「改良点２」である。
【００３６】
具体的な例を示すと、例えば、処理対象データが「００＿１０＿１０＿１１＿１２＿１３＿２１＿２０＿２０＿２０＿２１＿００」であったとする。この場合、第２番目と第３番目のデータはともに「１０」であるが、２連続であるので同一データとして扱わない。また、第２番目から第６番目のデータは、上位４ビットが「１」である半同一データとして扱う。また、第８番目から第１０番目のデータは全て「１０」であり、３連続以上であるので、同一データとして扱い、第７番目〜第１１番目のデータは、上位４ビットが「２」である半同一データとしても扱えるが、同一データが３連続以上であるので、同一データを優先して半同一データとしては扱わない。
【００３７】
次に、図２〜図６を参照して、上述したデータ圧縮装置の動作について説明する。
【００３８】
ステップＳ１〜Ｓ３
処理対象データである画像データを構成する各データのうち、最初のデータ（１バイト）を読み取り部３で読み込むとともに、そのデータを保持データレジスタ５に保持する。さらに、次のデータを読み取り部３に読み込む。ステップＳ２，Ｓ３により、画像データを構成している各データを順次１バイトずつ読み込んでいく。
【００３９】
ステップＳ４
比較部７は、現時点において読み取り部３にあるデータと、保持データレジスタ５にあるデータとを比較する。そして、その比較結果に応じて処理を分岐する。具体的には、全同一データであるならばステップＳ５へ移行し、半同一データであるならばステップＳ６へ移行し、非同一データであるならばステップＳ７へ移行する。なお、これらの各処理については詳細を後述する。
【００４０】
ステップＳ５
画像データを構成する各データの最後であるか否かにより処理を分岐する。最後である場合には、ステップＳ９に移行して最終データ処理を行い、最後でない場合には、ステップＳ２に移行して、読み取り部３から保持データレジスタ５へのデータ移動を行う。なお、最終データ処理については詳細を後述する。
【００４１】
ここで、図３を参照して「全同一データ処理」について説明する。なお、図３において「↓１−１」等の表記は、その下方の経路であることを示す。また、以下の説明において、半同一データの出力は、８ビットデータのうちの下位４ビットを使用する。この全同一データ処理が本発明における「第１の符号化ステップ」に相当する。
【００４２】
経路１−１
ステップＳ１１〜Ｓ１４（経路１−１）
この経路は、同一データが６４個連続している場合の処理である。ステップＳ１１において全同一カウンタ１１が６３であるならばステップＳ１２以降に処理を移行し、全同一データとしての符号に加えて連続データ数を６４とし、さらに保持データレジスタ５の値を付加して出力する。そして、ステップＳ１３において全同一カウンタ１１と、半同一カウンタ１３と、非同一カウンタ１５とのカウント値を０にする。そして、ステップＳ１４において、読み取り部３のデータを保持データレジスタ５に書き込む。
【００４３】
経路１−２〜経路１−５
これらの経路は、同一データが３個以上連続することが確定する場合の処理である。
【００４４】
経路１−２
ステップＳ１５では、全同一カウンタ１１が１以上であるか否かにより処理を分岐する。既にＦＩＦＯ９に全同一データが１個以上ある場合には、ステップＳ１６において、半同一カウンタ１３が５個以上であるか否かにより処理を分岐する。半同一データが５個以上ある場合には、ステップＳ１７において半同一データを出力する。出力は、半同一データとしての符号（連続データ数は、Ｎｈ−１）＋ＦＩＦＯ９のデータの値である。また、ステップＳ１８においてＦＩＦＯ９をクリアし、ステップＳ１９において全同一カウンタ１１をインクリメントする。
【００４５】
経路１−３
ステップＳ１６において半同一カウンタ１３が全同一カウンタ１１のカウント値Ｎｆ＋５個以上でなかった場合には、ステップＳ２０に移行する。非同一カウンタ１５が全同一カウンタ１１のカウント値Ｎｆ＋１個以上であって（ステップＳ２０）、非同一カウンタ１５が全同一カウンタ１１のカウント値Ｎｆ＋１２９以上である場合（ステップＳ２１）には、非同一データを出力する（ステップＳ２２）。出力は、非同一データとしての符号に加えて連続データ数１２８とし、さらにＦＩＦＯ９のデータの値を付加する。その後、非同一データを出力する（ステップＳ２３）。出力は、非同一データとしての符号に加えて連続数Ｎｎ−１とし、さらにＦＩＦＯ９のデータを付加する。
【００４６】
経路１−４
ステップＳ２１において非同一カウンタ１５が全同一カウンタ１１のカウント値Ｎｆ＋１２９未満である場合には、ステップＳ３にて非同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｎ−１とし、さらにＦＩＦＯ９のデータを付加する。
【００４７】
経路１−５
ステップＳ２０において非同一カウンタ１５が全同一カウンタ１１のカウント値Ｎｆ＋１未満である場合には、出力を行わずにステップＳ１８でＦＩＦＯ９をクリアする。
【００４８】
経路１−６
この経路は、同一データが３連続未満である場合の処理である。ステップＳ１５において全同一カウンタ１１が１未満である場合には、ステップＳ２４で保持データレジスタ５の値をＦＩＦＯ９に書き込み、ステップＳ２５で全てのカウンタ１１，１３，１５をインクリメントする。
【００４９】
ここで、図４を参照して「半同一データ処理」について説明する。この半同一データ処理が本発明における「分割ステップ」及び「第２の符号化ステップ」に相当する。
【００５０】
経路２−１
この経路は、全同一データが３個以上連続している場合の処理である。ステップＳ３１において全同一カウンタ１１が２以上である場合には、ステップＳ３２において全同一データを出力する。出力は、全同一データとしての符号に加えて連続データ数Ｎｆ＋１とし、さらに保持データレジスタ５の値を付加する。ステップＳ３４において、読み取り部３のデータを保持データレジスト５に書き込む。
【００５１】
経路２−２
この経路は、半同一データが６４個連続している場合の処理である。ステップＳ３１において全同一カウンタ１１が２未満である場合には、ステップＳ３５において半同一カウンタ１３が６３以上である場合、ステップＳ３６において保持データレジスタ５の値をＦＩＦＯ９に書き込む。ステップＳ３７では、半同一データを出力する。出力は、半同一データとしての符号に加えて連続数を６４とし、さらにＦＩＦＯ９の値を付加する。ステップＳ３８では、全同一カウンタ１１を０とし、半同一カウンタ１３をＮｈ―６４＋１とし、非同一カウンタ１５をＮｈ−６４＋１とする。
【００５２】
経路２−３〜２−４
これらの経路は、半同一データが５個以上連続するのが確定している場合の処理である。
【００５３】
経路２−３
ステップＳ３９で半同一カウンタ１３が５以上であって、ステップＳ４０で非同一カウンタ１５が半同一カウンタ１３のカウント値Ｎｆ＋１以上である場合には、ステップＳ４１にて非同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｎ−４とし、ＦＩＦＯ９のデータを付加する。次いで、ステップＳ４２では、保持データレジスタ５のデータをＦＩＦＯ９に書き込み、ステップＳ４２では、全同一カウンタ１１を０とし、半同一カウンタ１３をＮｈ＋１とし、非同一カウンタ１５を０にする。
【００５４】
経路２−４
ステップＳ４０において非同一カウンタ１５が半同一カウンタ１３のカウント値Ｎｈ＋１以上である場合には、ステップＳ４１を実行せずに、上述したステップＳ４２，Ｓ４３へ移行する。
【００５５】
経路２−５
ステップＳ３９において半同一カウンタ１３が５以上である場合には、ステップＳ４４にて保持データレジスタ５のデータをＦＩＦＯ９に書き込む。そして、ステップＳ４５において、全同一カウンタ１１を０とし、半同一カウンタ１３をＮｆ＋１とし、非同一カウンタ１５をＮｎ＋１とする。
【００５６】
ここで、図５を参照して「非同一データ処理」について説明する。
【００５７】
経路３−１
ステップＳ５１において、全同一カウンタ１１が２以上であるならば、ステップＳ５２にて全同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｆ＋１とし、保持レジスタデータ５のデータを付加する。ステップＳ５３において、全同一カウンタ１１と、半同一カウンタ１３と、非同一カウンタ１５とを全て０にする。そして、ステップＳ５４において、読み取り部３のデータを保持データレジスタ５に書き込む。
【００５８】
経路３−２、３−３
これらの経路は、半同一データが５個以上連続している場合の処理である。
【００５９】
経路３−２
半同一カウンタ１３が４以上で（ステップＳ５５）、かつ、非同一カウンタ１５が半同一カウンタ１３のカウント値Ｎｈ＋１である場合には、ステップＳ５７にて非同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｎ−Ｎｈとし、ＦＩＦＯ９のデータを付加する。ステップＳ５８において、保持データレジスタ５のデータをＦＩＦＯ９に書き込む。さらに、ステップＳ５９にて半同一データを出力する。出力は、半同一データとしての符号に加えて連続数Ｎｈ＋１とし、ＦＩＦＯ９のデータを付加する。その後、ステップＳ６０にて、全同一カウンタ１１と、半同一カウンタ１３と、非同一カウンタ１５の全てを０とする。
【００６０】
経路３−３
ステップＳ５６において、非同一カウンタ１３がＮｈ＋１未満であった場合には、ステップＳ５７を実施することなく、上述したステップＳ５８以降に処理を分岐する。
【００６１】
経路３−４
この経路は、非同一データが１２８個連続している場合の処理である。
【００６２】
非同一カウンタ１３が１２７以上である場合には（ステップＳ６１）、ステップＳ６３において保持データレジスタ５のデータをＦＩＦＯ９に書き込む。次に、ステップＳ６４において、非同一データを出力する。出力は、非同一データとしての符号に加えて連続数１２８とし、ＦＩＦＯ９のデータを付加する。ステップＳ６５では、全同一カウンタ１１を０とし、半同一カウンタ１３を０とし、非同一カウンタ１５をＮｎ−１２８＋１とする。
【００６３】
経路３−５
この経路は、非同一データが１２８個未満の連続である場合の処理である。
【００６４】
非同一カウンタ１３が１２７未満である場合には（ステップＳ６１）、ステップＳ６５にいて保持データレジスタ５のデータをＦＩＦＯ９に書き込む。続いて、ステップＳ６６において、全同一カウンタ１１を０とし、半同一データ１３を０とし、非同一カウンタ１５をＮｎ＋１とする。
【００６５】
次に、図６を参照して、「最終データ処理」について説明する。
【００６６】
経路４−１，４０２は、全同一データが３個以上連続する場合の処理である。
【００６７】
経路４−１
全同一カウンタ１１が２以上かつ６４である場合には（ステップＳ７１，Ｓ７２）、ステップＳ７３にて全同一データを出力する。出力は、全同一データとしての符号に加えて連続数６４とし、保持データレジスタ５のデータを付加する。ステップＳ７４では、非同一データを出力する。出力は、非同一データとしての符号に加えて連続数１とし、保持データレジスタ５のデータを付加する。
【００６８】
経路４−２
ステップＳ７２において全同一カウンタ１１が６４でない場合には、ステップＳ７５において全同一データを出力する。出力は、全同一データとしての符号に加えて連続数Ｎｆ＋１とし、保持データレジスタ５のデータを付加する。
【００６９】
経路４−３、４−４
これらの経路は、半同一データが５個以上連続している場合の処理である。
【００７０】
経路４−３
半同一カウンタ１３が４以上かつ６４以上である場合には（ステップＳ７６、Ｓ７７）、ステップＳ７８で保持データレジスタ５のデータをＦＩＦＯ９に書き込む。次に、ステップＳ７９において半同一データを出力する。出力は、半同一データとしての符号に加えて連続数６４とし、ＦＩＦＯ９のデータを付加する。さらに、ステップＳ８０において、非同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｈ＋６４＋１とする。
【００７１】
経路４−４
ステップＳ７７において半同一データが６４未満である場合には、ステップＳ８１にて保持データレジスタ５のデータをＦＩＦＯ９に書き込む。次に、ステップＳ８２において、半同一データを出力する。出力は、半同一データとしての符号に加えて連続数をＮｈ＋１とし、ＦＩＦＯ９のデータを付加する。
【００７２】
経路４−５、４−６
これらの経路は、非同一データの処理である。
【００７３】
経路４−５
ステップＳ７６において半同一カウンタ１３が４未満であり、非同一カウンタ１５が１２８以上である場合には（ステップＳ８３）、ステップＳ８４において保持データレジスタ５をＦＩＦＯ９に書き込む。次に、ステップＳ８５において、非同一データを出力する。出力は、非同一データとしての符号に加えて連続数１２８とし、ＦＩＦＯ９のデータを付加する。さらに、ステップＳ８６において、非同一データを出力する。出力は、非同一データとしての符号に加えて連増数Ｎｎ−１２８＋１とし、ＦＩＦＯ９のデータを付加する。
【００７４】
経路４−６
ステップＳ８３において非同一カウンタ１５が１２８未満であれば、ステップＳ８７において、保持データレジスタ５をＦＩＦＯ９に書き込む。次に、ステップＳ８８において、非同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｆ＋１とし、ＦＩＦＯ９のデータを付加する。
【００７５】
なお、上述したステップＳ７１が本発明における「連続性判定ステップ」に相当し、ステップＳ７６が本発明における「上位ビット連続性判定ステップ」に相当する。
【００７６】
ここで、図７〜図１１を参照する。なお、図７〜図１１は、処理過程の例を説明するための図である。
【００７７】
例１（図７）
同一データが２連続の場合であり、例えば、処理対象データがＡＢＢＣ……である場合を示す。この場合には、同一データの連続として扱わない
【００７８】
例２（図８）
同一データが３連続の場合であり、例えば、処理対象データがＡＢＢＢＣ……である場合を示す。
【００７９】
例３（図９）
同一データが４連続の場合であり、例えば、処理対象データがＡＢＢＢＢＣ……である場合を示す。
【００８０】
例４（図１０）
同一データが６４連続の場合であり、例えば、処理対象データがＡＢＢＢ……ＢＢＣ……である場合を示す。
【００８１】
例５（図１１）
同一データが６５連続の場合であり、例えば、処理対象データがＡＢＢＢ……ＢＢＢＣ……である場合を示す。
【００８２】
上述したように実施例に係るデータ圧縮装置によると、処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、複数個の同一のデータを連長圧縮する。処理対象データについて同一のデータが所定数以上の連続でない場合には、処理対象データの各データを上位ビットと下位ビットに分割する。分割された処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定し、連続である場合には、半同一データの連続として、各データの上位ビットを連長圧縮し、各データの下位ビットを羅列する。このように、同一データが所定数以上連続する場合は、全同一データとして第１の符号化を行って圧縮を図るので圧縮効率を向上できる。また、同一データが所定数以上連続しない場合にはデータを分割し、上位ビットが同一で所定数以上連続している場合は、半同一データの連続として第２の符号化により圧縮を図る。したがって、同一データの連続性が低いデータであっても圧縮効率を向上することができる。
【００８３】
また、同一データが「３」以上連続でなければ第１の符号化を行わず、半同一データが「５」以上連続でなければ第２の符号化を行わないので、符号追加による逆効果が生じず、圧縮効果が期待できる。
【００８４】
本発明は、上記実施形態に限られることはなく、下記のように変形実施することができる。
【００８５】
（１）上述した実施例では、図２〜図６に示すような手順で処理を行うようにしたが、本発明はこのような手順のみに限定されるものではない。
【００８６】
（２）上述した実施例では、処理対象データとして画像データを例示したが、本発明は処理対象データを画像データに限定するものではなく、例えば、文書データなどであっても処理対象とすることができる。
【符号の説明】
【００８７】
１  …  コンピュータ
３  …  読み取り部
５  …  保持データレジスタ
７  …  比較部
９  …  ＦＩＦＯ
１１  …  全同一カウンタ
１３  …  半同一カウンタ
１５  …  非同一カウンタ
【図１】
2014039198.tif 000003
【図２】
2014039198.tif 000004
【図３】
2014039198.tif 000005
【図４】
2014039198.tif 000006
【図５】
2014039198.tif 000007
【図６】
2014039198.tif 000008
【図７】
2014039198.tif 000009
【図８】
2014039198.tif 000010
【図９】
2014039198.tif 000011
【図１０】
2014039198.tif 000012
【図１１】
2014039198.tif 000013
【手続補正書】
【提出日】平成25年3月29日(2013.3.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４４
【補正方法】変更
【補正の内容】
【００４４】
経路１−２
ステップＳ１５では、全同一カウンタ１１が１以上であるか否かにより処理を分岐する。既にＦＩＦＯ９に全同一データが１個以上ある場合には、ステップＳ１６において、半同一カウンタ１３がＮｆ＋５個以上であるか否かにより処理を分岐する。半同一データがＮｆ＋５個以上ある場合には、ステップＳ１７において半同一データを出力する。出力は、半同一データとしての符号（連続データ数は、Ｎｈ−１）＋ＦＩＦＯ９のデータの値である。また、ステップＳ１８においてＦＩＦＯ９をクリアし、ステップＳ１９において全同一カウンタ１１をインクリメントする。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００４６
【補正方法】変更
【補正の内容】
【００４６】
経路１−４
ステップＳ２１において非同一カウンタ１５が全同一カウンタ１１のカウント値Ｎｆ＋１２９未満である場合には、ステップＳ２３にて非同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｎ−１とし、さらにＦＩＦＯ９のデータを付加する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５３
【補正方法】変更
【補正の内容】
【００５３】
経路２−３
ステップＳ３９で半同一カウンタ１３が４以上であって、ステップＳ４０で非同一カウンタ１５が半同一カウンタ１３のカウント値Ｎｈ＋１以上である場合には、ステップＳ４１にて非同一データを出力する。出力は、非同一データとしての符号に加えて連続数Ｎｎ−Ｎｈとし、ＦＩＦＯ９のデータを付加する。次いで、ステップＳ４２では、保持データレジスタ５のデータをＦＩＦＯ９に書き込み、ステップＳ４２では、全同一カウンタ１１を０とし、半同一カウンタ１３をＮｈ＋１とし、非同一カウンタ１５を０にする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
経路２−４
ステップＳ４０において非同一カウンタ１５が半同一カウンタ１３のカウント値Ｎｈ＋１未満である場合には、ステップＳ４１を実行せずに、上述したステップＳ４２，Ｓ４３へ移行する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
経路２−５
ステップＳ３９において半同一カウンタ１３が４未満である場合には、ステップＳ４４にて保持データレジスタ５のデータをＦＩＦＯ９に書き込む。そして、ステップＳ４５において、全同一カウンタ１１を０とし、半同一カウンタ１３をＮｆ＋１とし、非同一カウンタ１５をＮｎ＋１とする。
【手続補正６】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2014039198.tif 000014