(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、このような構成を有する従来例の場合には、次のような問題がある。
すなわち、従来の方法は、多くの同一データが連続する場合にしか圧縮効果が得られない。例えば、画像データが写真などの自然画像である場合には、同一のデータが多く連続する割合は多くはなく、ノイズ的に近似データ状になっていることが多くある。したがって、画像データを効率的に圧縮することができないという問題がある。
【0005】
本発明は、このような事情に鑑みてなされたものであって、同一データの連続性が低いデータであっても圧縮効率を向上することができるデータ圧縮方法及びその装置並びにそのプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、このような目的を達成するために、次のような構成をとる。
すなわち、本発明は、処理対象データを圧縮するデータ圧縮方法において、処理対象データを圧縮するデータ圧縮方法において、前記処理対象データの各データのうち、所定数以上が連続する
同一データがあるか否かを判定する連続性判定ステップと、前記連続性判定ステップにおける判定において、前記各データのう
ち非同一であるデータについては、当該データを非同一データとして前記処理対象データから抽出し、当該非同一データと、その位置情報とをあわせて羅列する第2の符号化ステップと、を有することを特徴とするものである。
【0009】
[作用・効果]本発明によれば、連続性判定ステップでは、処理対象データの各データのうち、所定数以上が連続する
同一データがあるか否かを判定する。第2の符号化ステップでは、連続性判定ステップにおいて、処理対象データから非同一であるデータについて非同一データとして抽出し、この非同一データとその位置情報とを合わせて羅列する。したがって、連続性のあるデータの間に非同一データが存在しても、非同一データを除いて連長圧縮することができる。その結果、非同一データが介在することによる圧縮率の低下を抑制できる。
【0010】
本発明において、前記連続性判定ステップの前に、前記処理対象データを構成している各データを上位ビットと下位ビットに分割する分割ステップを実施し、前記連続性判定ステップに代えて、前記分割ステップにより分割された前記処理対象データの各データのうち、上位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する上位ビット連続性判定ステップを実施し、前記第2の符号化ステップの前に、前記分割ステップにより分割された前記処理対象データの各データのうち、下位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する下位ビット連続性判定ステップを実施し、前記第2の符号化ステップに代えて、前記上位ビット連続性判定ステップ及び前記下位ビット連続性判定ステップにおける判定において、前記各データのうち上位ビットが非同一であるデータについては、当該データを非同一データとして前記処理対象データから抽出し、当該非同一データと、その位置情報とをあわせて羅列する第2の符号化ステップを実施することが好ましい。
【0011】
上位ビット連続性判定ステップでは、分割ステップにより上位ビットと下位ビットに分割された処理対象データの各データのうち、上位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する。下位ビット連続性判定ステップでは、分割ステップにより上位ビットと下位ビットに分割された処理対象データの各データのうち、下位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する。第2の符号化ステップでは、上位ビット連続性判定ステップ及び下位ビット連続性判定ステップにおいて、処理対象データから上位ビットが非同一であるデータについて非同一データとして抽出し、この非同一データとその位置情報とを合わせて羅列する。したがって、連続性のあるデータの間に非同一データが存在しても、非同一データを除いて連長圧縮することができる。その結果、非同一データが介在することによる圧縮率の低下を抑制できる。
【0014】
また、本発明において、前記第2の符号化ステップは、挿入データを表す符号と、前記位置情報である挿入位置と、当該非同一データとを、前記挿入位置より前に位置する非同一データ以外のデータの前に羅列することが好ましい。
【0015】
挿入データを表す符号と、挿入位置と、非同一データとを、挿入位置より前に位置する同一データ、半同一データ、連長半同一データのいずれかの前に羅列する。したがって、伸長時に非同一データを元の位置に正確に戻すことができ、正確に復号できる。
【0018】
また、本発明は、処理対象データを圧縮するデータ圧縮装置において、前記処理対象データの各データのうち、所定数以上が連続する
同一データがあるか否かを判定する連続性判定手段と、前記連続性判定手段における判定において、前記各データのうち非同一であるデータについては、当該データを非同一データとして前記処理対象データから抽出し、当該非同一データと、その位置情報とをあわせて羅列する第2の符号化手段と、を備えていることを特徴とするものである。
【0019】
[作用・効果]本発明によれば、連続性判定手段は、処理対象データの各データのうち、所定数以上が連続する
同一データがあるか否かを判定する。第2の符号化手段は、処理対象データから異なるデータを非同一データとして抽出し、この非同一データとその位置情報とを合わせて羅列する。したがって、連続性のあるデータの間に非同一データが存在しても、非同一データを除いて連長圧縮することができる。その結果、非同一データが介在することによる圧縮率の低下を抑制できる。
【0020】
また、本発明において、前記処理対象データを構成している各データを上位ビットと下位ビットに分割する分割手段と、前記分割手段により分割された前記処理対象データの各データのうち、下位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する下位ビット連続性判定手段と、をさらに備えるとともに、前記連続性判定手段に代えて、前記分割手段により分割された前記処理対象データの各データのうち、上位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する上位ビット連続性判定手段を備え、前記第2の符号化手段に代えて、前記上位ビット連続性判定手段及び前記下位ビット連続性判定手段における判定において、前記各データのうち上位ビットが非同一であるデータについては、当該データを非同一データとして前記処理対象データから抽出し、当該非同一データと、その位置情報とをあわせて羅列する第2の符号化手段を備えていることが好ましい。
【0021】
上位ビット連続性判定手段は、分割手段により上位ビットと下位ビットに分割された処理対象データの各データのうち、上位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する。下位ビット連続性判定手段は、分割手段により上位ビットと下位ビットに分割された処理対象データの各データのうち、下位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する。第2の符号化手段は、処理対象データから上位ビットが異なるデータを非同一データとして抽出し、この非同一データとその位置情報とを合わせて羅列する。したがって、連続性のあるデータの間に非同一データが存在しても、非同一データを除いて連長圧縮することができる。その結果、非同一データが介在することによる圧縮率の低下を抑制できる。
【0024】
また、本発明は、処理対象データをコンピュータによって圧縮するデータ圧縮プログラムにおいて、前記コンピュータのCPUがメモリにおいて実行することにより、前記処理対象データの各データのうち、所定数以上が連続する
同一データがあるか否かを判定する連続性判定機能と、前記連続性判定機能における判定において、前記各データのうち上位ビットが非同一であるデータについては、当該データを非同一データとして前記処理対象データから抽出し、当該非同一データと、その位置情報とをあわせて羅列する第2の符号化機能と、を備えていることを特徴とするものである。
【0025】
[作用・効果]本発明によれば、連続性判定機能は、処理対象データの各データのうち、所定数以上が連続する
同一データがあるか否かを判定する。第2の符号化機能は、処理対象データから異なるデータを非同一データとして抽出し、この非同一データとその位置情報とを合わせて羅列する。したがって、連続性のあるデータの間に非同一データが存在しても、非同一データを除いて連長圧縮することができる。その結果、非同一データが介在することによる圧縮率の低下を抑制できる。
【発明の効果】
【0026】
本発明に係るデータ圧縮方法によれば、連続性判定ステップでは、処理対象データの各データのうち、所定数以上が連続する
同一データがあるか否かを判定する。第2の符号化ステップでは、連続性判定ステップにおいて、処理対象データから非同一であるデータについて非同一データとして抽出し、この非同一データとその位置情報とを合わせて羅列する。したがって、連続性のあるデータの間に非同一データが存在しても、非同一データを除いて連長圧縮することができる。その結果、非同一データが介在することによる圧縮率の低下を抑制できる。
【発明を実施するための形態】
【0028】
以下、図面を参照して本発明の一実施例について説明する。
図1は、実施例に係るデータ圧縮装置の概略構成を示すブロック図である。また、
図2は、連長半同一データフォーマットの一例を示す模式図であり、
図3は、挿入データフォーマットの一例を示す模式図である。
【0029】
実施例に係るデータ圧縮装置は、処理対象データとして、例えば画像データを与えられ、それを圧縮処理して圧縮画像データとして出力するものである。このデータ圧縮装置は、コンピュータ1から構成されている。コンピュータ1は、CPU1aやメモリ1bなどで構成されている。コンピュータ1には、ディスクドライブ3が接続されている。このディスクドライブ3は、記憶メディア5を着脱自在に構成されている。記憶メディア5には、後述するプログラムPが記憶されている。このプログラムPは、記憶メディア5からコンピュータ1のメモリ1bにロードへされる。コンピュータ1は、メモリ1bにロードされたプログラムPをCPU1aで実行することにより、後述する処理を行うようになっている。
【0030】
コンピュータ1は、上述したようにCPU1aやメモリ1bで構成されているが、機能的には、拡張PackBits圧縮部7と、読み取り部9と、データ解析部11と、第1の符号化処理部13と、第2の符号化処理部15とを備えている。
【0031】
拡張PackBits圧縮部7は、従来からある連長圧縮の一種であるPackBits圧縮を改良した圧縮方法を実行する。この拡張PackBits圧縮方法は、本出願人によって既に出願されている(特願2012−181097号)。
【0032】
具体的には、前記圧縮方法は、処理対象データについて同一のデータが所定数以上の連続であるか否かを判定する連続性判定ステップと、前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、前記複数個の同一のデータを連長圧縮するための第1段目の符号化ステップと、前記連続性判定ステップによる判定により、前記処理対象データについて同一のデータが所定数以上の連続でない場合には、前記処理対象データの各データを上位ビットと下位ビットに分割する分割ステップと、前記分割ステップによって分割された前記処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定する上位ビット連続性判定ステップと、前記上位ビット連続性判定ステップによる判定により、前記各データのうち上位ビットのデータが同一であって所定数以上の連続である場合には、半同一データの連続として、前記各データの前記上位ビットを連長圧縮し、前記各データの下位ビットを羅列する第2段目の符号化ステップと、を有するものである。
【0033】
この拡張PackBits圧縮方法によると、次のような作用効果を奏する。
第1段目の符号化ステップでは、連続性判定ステップの判定により、処理対象データについて同一のデータが所定数以上の連続である場合には、全同一データの連続として、複数個の同一データを連長圧縮するための第1段目の符号化を行う。分割ステップでは、処理対象データについて同一のデータが所定数以上の連続でない場合には、処理対象データの各データを上位ビットと下位ビットに分割する。上位ビット連続性判定ステップでは、分割ステップによって分割された処理対象データの各データのうち、上位ビットのデータが同一値であって所定数以上の連続であるか否かを判定し、連続である場合には、第2段目の符号化ステップにおいて、半同一データの連続として、各データの上位ビットを連長圧縮し、各データの下位ビットを羅列する第2段目の符号化を行う。このように、同一データが所定数以上連続する場合は、全同一データとして第1段目の符号化を行って圧縮をはなるので、圧縮効率を向上できる。また、同一データが所定数以上連続しない場合にはデータを分割し、上位ビットが同一で所定数以上連続している場合は、半同一データの連続として第2の段目の符号化により圧縮を図る。したがって、同一データの連続性が低いデータであっても圧縮効率を向上することができる。
【0034】
読み取り部9は、拡張PackBits圧縮部7により圧縮された処理対象データの一部のデータを読み取る。ここでは、その一部のデータが最小の処理単位のデータである1バイトである。
【0035】
データ解析部11は、1バイトのうち上位ビットも下位ビットも同じデータが所定数以上連続していることを示す「同一データ」と、上位ビットも下位ビットも異なる「非同一データ」と、上位ビットが同一で下位ビットが異なるデータが所定数以上連続していることを表す「半同一データ」とのいずれであるかを解析する。このヘッダは、上述した同一データなどの符号を表す判断ビットと、そのデータが何個連続しているかを示すデータ数とを含む。また、処理対象データの各データのうち、上位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する上位ビット連続性判定と、処理対象データの各データのうち、下位ビットが同一値であって、かつ、所定数以上が連続するか否かを判定する下位ビット連続性判定との処理を行う。
【0036】
なお、上述した拡張PackBits圧縮部7が本発明における「分割手段」に相当する。但し、圧縮を行っていない画像データ(RAWデータ)を直接的に処理する場合には、データ解析部11は、読み込まれたデータを上位ビットと下位ビットに分割し、そのデータとその前後のデータの上位ビットと下位ビットとの比較により解析を行って上述した同一データなどの判断を行う。このような場合には、データ解析部11が本発明における「分割手段」に相当する。また、データ解析部11は、本発明における「上位ビット連続性判定手段」と「下位ビット連続性判定手段」に相当する。
【0037】
第1の符号化処理部13は、上位ビットが同一で下位ビットが異なるデータが所定数以上連続していることを示す「連長半同一データ」であるかを解析して符号化を行う。解析は、拡張PackBits圧縮により生成されたヘッダに基づいて行われる。この処理の詳細については後述するが、連長半同一データは、上位ビットが同一で所定個数以上連続し、さらに前のデータと上位ビットが同一で、下位ビットが異なるデータが所定個数以上連続している場合の一連のデータをいう。その場合には、
図2に示す連長半同一フォーマットの模式図のように、連長半同一データを表す符号である判断ビットと、抽出された共通の上位データと、各下位データ数とその連長数とを羅列することで表す。なお、ヘッダである判断ビットと、00と、上位データとのうち、00は空きビットを埋めるだけの仮のデータである。
【0038】
第2の符号化処理部15は、挿入データを考慮した符号化により圧縮を行う。解析は、拡張PackBits圧縮により生成されたヘッダに基づいて行われる。この詳細については後述するが、挿入データは、例えば、連続する同一データと、非同一データと、前記同一データと同じデータが連続する同一データとから構成されている場合の一つの非同一データのことであり、各データのうち上位ビットが非同一であるデータについては、このデータを非同一データとして処理対象データから抽出し、この非同一データと、その位置情報とをあわせて羅列する。その場合には、
図3に示す挿入データフォーマットの模式図のように、挿入データを表す符号である判断ビットと、挿入位置と、挿入データを羅列することで表す。この挿入データの場合のヘッダは、判断ビットと挿入位置である。
【0039】
なお、上記の第1の符号化処理部が本発明における「第1の符号化手段」に相当し、第2の符号化処理部が本発明における「第2の符号化手段」に相当する。
【0040】
次に、
図4を参照して上述したデータ圧縮装置の動作例について説明する。なお、
図4は、データ圧縮装置の動作を示すフローチャートである。
【0041】
ステップS1
圧縮されていない画像データに対して、半同一データという概念を用いた拡張PackBits圧縮処理を行う。
【0042】
ステップS2
画像データを1バイト読み出す。
【0043】
ステップS3
拡張PackBits圧縮処理が行われたデータに対して第1の符号化処理を行う。
【0044】
ステップS4
第2の符号化処理を行うか否かを判断する。第2の符号化処理を行わない場合には、ステップS6へ処理を移行する。
【0045】
ステップS5
第1の符号化処理が施されたデータに対して第2の符号化処理を行う。
【0046】
ステップS6
処理対象が最終データであるか否かを判断し、最終でない場合にはステップS2に戻って次のデータを読み出す。
【0047】
ステップS7
最終データの処理を終えたので、圧縮画像データを出力する。
【0048】
なお、上記のステップS1が本発明における「分割ステップ」、「上位ビット連続性判定ステップ」、「下位ビット連続性判定ステップ」に相当し、ステップS3が本発明における「第1の符号化ステップ」に相当し、ステップS5が本発明における「第2の符号化ステップ」に相当する。
【0049】
<第1の符号化処理>
ここで、
図5〜
図7を参照して上述した第1の符号化処理について説明する。なお、
図5は、第1の符号化処理の処理例を説明する模式図であり、(a)は画像データを示し、(b)は拡張PackBits圧縮後を示し、(c)は第1の符号化処理後の画像データを示す。また、
図6及び
図7は、第1の符号化処理の処理過程の一例を示す模式図である。
【0050】
処理対象データである画像データは、
図5(a)に示すものであるとする。つまり、上位ビットが“A”で共通であるが下位ビットが異なるデータが4個並び、上位ビットが異なるデータが3個並び、上位ビットが“E”であるが下位ビットが異なるデータが3個並び、上位ビットが異なるデータが1個並び、上位ビットが“G”で共通し、下位ビットが“a”で共通するデータが3個並び、上位ビットが“G”で下位ビットが“b”であるデータが2個並び、上位ビットが“G”で下位ビットが“c”であるデータが4個並び、上位ビットが“H”で下位ビットが“a”であるデータが4個並んでいる。
【0051】
上記の画像データを拡張PackBits圧縮で符号化すると、
図5(b)に示すようになる。つまり、半同一データが4個あることを示す“$4”及び上位ビットとこれに続く下位ビットと(最後のXは単に下位ビットを埋めるだめのデータ)、非同一データが3個あることを示す“+3”と3個の非同一データと、半同一データが3個あることを示す“$3”及び上位ビットとこれに続く下位ビットと、非同一データが1個あることを示す”+1”及び1個の非同一データと、同一データが3個あることを示す“−3”と3個の同一データと、同一データが2個あることを示す“−2”と2個の同一データと、同一データが4個あることを示す“−4”と4個の同一データと、同一データが4個あることを示す“−4”と4個の同一データとに符号化される。
【0052】
次に、拡張PackBits圧縮された画像データに対して第1の符号化を行うと、
図5(c)に示すようになる。このように第1の符号化を行う過程について、
図6及び
図7を参照して説明する。なお、
図6及び
図7は、第1の符号化処理の処理過程の一例を示す模式図である。以下の説明における括弧付き数字は、
図6及び
図7の括弧書き数字に対応している。
【0053】
(1)拡張PackBits圧縮された画像データを示す。
【0054】
(2)(1)のデータを1バイト読み出す。ヘッダの情報($4)から半同一データであることがわかる。また、半同一データは、4個で構成されていることもわかる。
【0055】
(3)(2)で読み出したヘッダと合わせて出力する。
【0056】
(4)次の1バイトを読み出す。ヘッダの情報(+3)から非同一データであり、3個のデータである。
【0057】
(5)非同一データの部分も読み出し、(4)で読み出したヘッダとともに出力する。
【0058】
(6)次の1バイトを読み出す。ヘッダの情報($3)から半同一データであり、3個のデータである。
【0059】
(7)半同一データの部分も読み出し、(6)で読み出したヘッダとともに出力する。
【0060】
(8)次の1バイトを読み出す。ヘッダの情報(+1)から非同一データであり、1個のデータである。
【0061】
(9)非同一データの部分も読み出し、(8)で読み出したヘッダとともに出力する。
【0062】
(10)次の1バイトを読み出す。ヘッダの情報(−3)から同一データであり、3個のデータである。
【0063】
(11)同一データの部分を読み出す。
【0064】
(12)次の1バイトを読み出す。ヘッダの情報(−2)から同一データであり、2個のデータである。
【0065】
(13)同一データの部分を読み出す。
【0066】
(14)(11)と(13)のデータは、上位ビットが共通している半同一データである。したがって、連長半同一データであるので、ヘッダの判断ビットを“#”とし、上位データを“G”とし、下位データ数を“02”とし、下位データ“a”の連長数が3となり、それに続く下位データ“b”の連長数が2となる。
【0067】
(15)次の1バイトを読み出す。ヘッダの情報(−4)から同一データであり、4個のデータである。
【0068】
(16)同一データの部分を読み出す。
【0069】
(17)(13)と(16)のデータは、上位ビットが共通している半同一データである。したがって、連長半同一データであるので、(14)のヘッダの下位データ数を“03”に増やし、下位データ“b”及び連長数“2”に続けて、下位データ“c”の連長数を4とする。
【0070】
(18)次の1バイトを読み出す。ヘッダの情報(−4)から同一データであり、4個のデータである。
【0071】
(19)同一データの部分を読み出す。
【0072】
(20)(16)のデータとは上位ビットが異なり、半同一データではないので、(17)のデータを出力する。
【0073】
(21)(19)で読み出したデータが最終データであるので、(18)、(19)を出力する。
【0074】
以上の各処理を経て、
図5(c)及び
図7の(21)の圧縮画像データが得られる。
【0075】
上述した第1の符号化ステップを備えたデータ圧縮方法によると、各データのうち上位ビットが同一かつ所定数以上連続している場合であって、かつ、データのうち下位ビットが同一かつ所定数以上連続している場合には、各データで共通する上位ビットを抽出して当該上位ビットの連長数を羅列し、各データの下位ビットを連長圧縮して連長半同一データとする。したがって、同一データでなくても上位ビットが共通する各データは下位ビットごとに連長圧縮されることになるので、同一データの連続性が低いデータであっても圧縮効率を向上できる。
【0076】
<第2の符号化処理>
ここで、
図8〜
図11を参照して上述した第2の符号化処理について説明する。
図8は、第2の符号化処理の処理例を説明する模式図であり、(a)は画像データを示し、(b)は拡張PackBits圧縮後を示し、(c)は第2の符号化処理後の画像データを示す。
図9〜
図11は、第2の符号化処理の処理過程の一例を示す模式図である。
【0077】
なお、説明の理解を容易にするために、上述した第1の符号化処理で用いた画像データとは異なるものを例にとり、第2の符号化処理についてのみ説明する。
【0078】
処理対象データである画像データは、
図8(a)に示すものであるとする。つまり、5個のデータ“A”と、1個のデータ“B”と、4個のデータ“A”と、1個のデータ“C”と、1個のデータ“D”と、1個のデータ“E”と、3個のデータ“A”と、1個のデータ“F”と、2個のデータ“A”と、1個のデータ“G”と、4個のデータ“A”と、1個のデータ“H”と、1個のデータ“I”である。
【0079】
上記の画像データを拡張PackBits圧縮で符号化すると、
図8(b)に示すようになる。つまり、同一データが5個あることを示す”−5”及びその同一データと、非同一データが1個あることを示す“+1”とその非同一データと、同一データが4個あることを示す“−4”及びその同一データと、非同一データが3個あることを示す“+3”及び3個の非同一データと、同一データが3個あることを示す“−3”とその同一データと、非同一データが1個あることを示す“+1”とその同一データと、同一データが2個あることを示す“−2”とその同一データと、非同一データが1個あることを示す“+1”とその非同一データと、同一データが4個あることを示す“−4”とその同一データと、非同一データが2個あることを示す“+2”と2個の非同一データとに符号化される。
【0080】
次に、拡張PackBits圧縮された画像データに対して第2の符号化を行うと、
図8(c)に示すようになる。このように第2の符号化を行う過程について、
図9〜
図11を参照して説明する。なお、
図9〜
図11は、第2の符号化処理の処理過程の一例を示す模式図である。以下の説明における括弧付き数字は、
図9〜
図11の括弧書き数字に対応している。
【0081】
(1)拡張PackBits圧縮された画像データを示す。
【0082】
(2)(1)のデータを1バイト読み出す。ヘッダの情報(−5)から同一データであり、4個で構成されていることがわかる。
【0084】
(4)次の1バイトを読み出す。ヘッダの情報(+1)から非同一データであり、1個のデータである。この場合、連長数=1であるので、挿入対象となる可能性がある。
【0085】
(5)非同一データの部分を読み出す。
【0086】
(6)次の1バイトを読み出す。ヘッダの情報から同一データであり、4個のデータである。
【0088】
(8)(3)で読み出したデータと同一であるので、挿入を適用する。
【0089】
(9)(5)で読み出した非同一データを挿入データとして出力する。ヘッダの情報における判断ビットは、挿入を表すYとし、挿入位置は前の5個の同一データの後であることがわかるように5とする。
【0090】
(10)(2)と(6)の連長数を加算して、新たな同一データを生成する。
【0091】
(11)次の1バイトを読み出す。ヘッダの情報(+3)から非同一データであり、3個のデータである。
【0092】
(12)非同一データであり、連長数が1ではない。したがって、挿入データとはならないので、(10)で生成した新たな同一データと、(11)の非同一データのヘッダ及び非同一データを出力する。
【0093】
(13)次の1バイトを読み出す。ヘッダの情報(−3)から同一データであり、3個のデータである。
【0094】
(14)同一データの部分を読み出す。
【0095】
(15)次の1バイトを読み出す。ヘッダの情報から非同一データであり、1個のデータである。この場合、連長数=1であるので、挿入対象となる可能性がある。
【0096】
(16)非同一データの部分を読み出す。
【0097】
(17)次の1バイトを読み出す。ヘッダの情報(−2)から同一データであり、2個のデータである。
【0098】
(18)同一データの部分を読み出す。
【0099】
(19)1個の非同一データを挟んで、その前の(14)で読み出した同一データと同じであるので、挿入を適用する。
【0100】
(20)(16)で読み出した非同一データを挿入データとして出力する。ヘッダの情報では、判断ビットをYとし、挿入位置は前の3個の同一データの後であることがわかるように3とする。
【0101】
(21)(13)と(17)の連長数を加算して、新たな同一データを生成する。
【0102】
(22)次の1バイトを読み出す。ヘッダの情報(+1)から非同一データであり、1個のデータである。この場合、連長数=1であるので、挿入対象となる可能性がある。
【0103】
(23)非同一データの部分を読み出す。
【0104】
(24)次の1バイトを読み出す。ヘッダの情報(−4)から同一データであり、4個のデータである。
【0105】
(25)同一データの部分を読み出す。
【0106】
(26)(21)で読み出したデータと同一であるので、挿入を適用する。
【0107】
(27)(23)で読み出した非同一データを挿入データとして出力する。ヘッダの情報は、判断ビットをYとし、挿入位置を前の5個の同一データの後であることがわかるように5とする。
【0108】
(28)(21)と(24)の連長数を加算して、新たな同一データを生成する。
【0109】
(29)次の1バイトを読み出す。ヘッダの情報(+2)から非同一データであり、2個のデータである。
【0110】
(30)非同一データであり、連長数が1ではない。したがって、挿入データにはならないので、(28)で生成した新たな同一データと、(29)の非同一データのヘッダ及びその非同一データを出力する。
【0111】
上述した第2の符号化ステップを備えたデータ圧縮方法によると、処理対象データから非同一データを抽出し、この非同一データとその位置情報とを合わせて羅列する。したがって、連続性のあるデータの間に非同一データが存在しても、非同一データを除いて連長圧縮することができる。その結果、非同一データが介在することによる圧縮率の低下を抑制できる。
【0112】
本発明は、上記実施形態に限られることはなく、下記のように変形実施することができる。
【0113】
(1)上述した実施例では、第1の符号化処理と第2の符号化処理とを別々に実施した例で説明したが、第1の符号化処理及び第2の符号化処理を行うことで、より圧縮効率を向上できる。また、第2の符号化処理の前に第1の符号化処理を行っているが、第1の符号化処理を行うことなく第2の符号化処理だけを行っても、従来よりも圧縮効率を向上できる。
【0114】
(2)上述した実施例では、連長半同一データフォーマットとして
図2に示す形態を例示し、挿入データフォーマットとして
図3に示す形態を例示したが、本発明はこのような形態に限定されるものではない。
【0115】
(3)上述した実施例では、拡張PackBits圧縮を行った画像データに対する処理を例にとって説明したが、その圧縮を行っていない画像データ(RAWデータ)を直接的に処理してもよい。その場合には、
図4におけるステップS2において、圧縮されていない画像データを読み込めばよい。