(57)【要約】【目的】表形式のデータを圧縮する。【構成】輝度コードを格納した非圧縮表に基づいて，輝度コードのそれぞれについての上記非圧縮表における輝度コード格納位置を表す１次元データが作成される。１次元データと位置型パターンとが組合わせられ，この組合せに基づいて，非圧縮表を再現することができるかどうかが判断される。非圧縮表を再現することができないと判断された場合に，１次元データと位置型パターンとの組合せが変更されて，再度非圧縮表を再現することができるかどうかが判断される。非圧縮表を再現することができると判断された場合に，組合せ中の１次元データの要素の種類と位置型パターンとの組を含む圧縮表の作成が終了する。【選択図】  図１９
2004228726.tif 000002
【特許請求の範囲】
【請求項１】
複数の見出しによって特定される要素を格納した非圧縮表に基づいて，要素の種類のそれぞれについての上記非圧縮表における要素格納位置を表す１次元データを作成する手段，
１次元データと，一または複数の要素格納位置を表す位置型パターンとを組合わせる組合せ手段，
１または複数の１次元データと位置型パターンとの組合せに基づいて，非圧縮表を再現することができるかどうかを判断する手段，
非圧縮表を再現することができないと判断された場合に，上記１次元データと位置型パターンとの組合せを変更して，非圧縮表を再現することができるかどうかをさらに判断する手段，および
非圧縮表を再現することができると判断された場合に，上記組合せ中の１次元データの要素種類と位置型パターンとの組を含む圧縮表を作成する手段，
を備えたデータ圧縮装置。
【請求項２】
与えられる制限数の１次元データと位置型パターンの組合せによって，非圧縮表を再現することができるかどうかを判断する制限数内判断手段，
上記制限数の１次元データと位置型パターンとの組合せでは非圧縮表を再現することができないと判断された場合に，上記制限数を増加させる手段，および増加した制限数の１次元データと位置型パターンとの組合せによって，非圧縮表を再現することができるかどうかをさらに判断する手段を備えた，
請求項１に記載のデータ圧縮装置。
【請求項３】
上記非圧縮表に基づいて，上記非圧縮表における要素格納位置のそれぞれおよび複数の要素格納位置を表す位置型パターンを作成する手段を備えた，請求項１または２に記載のデータ圧縮装置。
【請求項４】
複数の見出しによって特定される要素を格納した非圧縮表に基づいて，要素のそれぞれについての上記非圧縮表における要素格納位置を表す１次元データを作成させ，
１次元データと一または複数の要素格納位置を表す位置型パターンとを組合わさせ，
組合わされた１または複数の上記１次元データと位置型パターンの組合せに基づいて，非圧縮表を再現することができるかどうかを判断させ，
非圧縮表を再現することができないと判断した場合に，上記１次元データと位置型パターンとの組合せを変更して，非圧縮表を再現することができるかどうかをさらに判断させ，
非圧縮表を再現することができると判断した場合に，上記組合せ中の１次元データの要素種類と位置型パターンとの組を含む圧縮表を作成させるようにコンピュータを制御する，プログラム。
【請求項５】
与えられる制限数の１次元データと位置型パターンの組合せによって，非圧縮表を再現することができるかどうかを判断させ，
上記制限数の１次元データと位置型パターンの組合せでは非圧縮表を再現することができないことを判断した場合に上記制限数を増加させ，
増加した制限数の１次元データと位置型パターンの組合せによって，非圧縮表を再現することができるかどうかをさらに判断させるようにコンピュータを制御する，請求項４に記載のプログラム。
【請求項６】
要素格納欄を含む非圧縮表を，要素格納欄に格納される要素の種類と要素格納欄の一または複数の欄を表す位置型パターンとの組合せによって表現することにより，非圧縮表を圧縮して表す圧縮表を作成する装置であって，要素格納欄の各要素格納位置に付された連続番号の順序で，要素種類ごとに要素の存在の有無を１または０のビット列によって表現した１次元データを作成する１次元データ作成手段，
すべての１次元データについて，対応するビット位置ごとの論理和を算出して背景ビット列を得る手段，
要素格納欄の各要素格納位置に付された連続番号の順序で，上記要素格納欄のそれぞれの位置および複数の要素格納欄の位置を１または０のビット列によって表現した位置型パターンを作成する位置型パターン作成手段，
最も存在数が多い要素種類についての１次元データと上記背景ビット列との排他的論理和を算出して残りビット列を得る手段，
算出された残りビット列がすべて０のビット列である場合には，上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを用いた圧縮表を生成する手段，
算出された残りビット列がすべて０のビット列でない場合には，
上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを圧縮表に含まれる圧縮行の第１行目に決定する手段，
上記圧縮行に用いられた位置型パターンと同等またはより狭い領域を表す位置型パターンのいずれかを選択し，選択された位置型パターンのビット列と残りビット列との論理和を算出し，算出された論理和と背景ビット列との論理積を算出して第１ビット列を得る手段，
上記圧縮行に用いられた要素種類を除く要素種類についての１次元データを選択し，選択された１次元データのビット列と選択された位置型パターンのビット列の論理積を算出して第２ビット列を得る手段，
第１ビット列と第２ビット列との論理積を算出する手段，
算出された論理積がすべて０のビット列である場合には，
他の位置型パターンおよび１次元データの組合せについて，上記第１ビット列および第２ビット列の算出と第１ビット列と第２ビット列との論理積の算出とを繰り返す手段，
算出された論理積がすべて０のビット列でない場合に，
選択された位置型パターンと選択された１次元データの要素種類との組合わせを，圧縮表に含まれる次の圧縮行に決定し，上記第１ビット列および第２ビット列において，同じビット位置のビットが１であるものについてビット１をビット０にした第１ビット列を，新たな残りビット列とする手段，
新たな残りビット列がすべて０でない場合には，次の圧縮行の決定のための上記第１ビット列および第２ビット列の算出と第１ビット列と第２ビット列の論理積の算出とを繰返す手段，ならびに
新たな残りビット列がすべて０の場合には，決定された圧縮行を含む圧縮表を生成する手段，
を備えたデータ圧縮装置。
【請求項７】
与えられる制限行数の範囲内において，圧縮表を生成することができるかどうかを判断する手段，
上記制限行数では圧縮表を生成することができないことが判断された場合に，制限行数を増加させる手段，および
増加した制限行数の範囲内において，圧縮表を生成することができるかどうかを再度判断する手段を備えた，
請求項６に記載のデータ圧縮装置。
【請求項８】
要素格納欄を含む非圧縮表を，要素格納欄に格納される要素の種類と要素格納欄の一または複数の欄を表す位置型パターンとの組合せによって表現することにより，非圧縮表を圧縮して表す圧縮表を作成する装置の制御プログラムであって，
要素格納欄の各要素格納位置に付された連続番号の順序で，要素種類ごとに要素の存在の有無を１または０のビット列によって表現した１次元データを作成させ，
すべての１次元データについて，対応するビット位置ごとの論理和を算出して背景ビット列を得，
要素格納欄の各要素格納位置に付された連続番号の順序で，上記要素格納欄のそれぞれの位置および複数の要素格納欄の位置を１または０のビット列によって表現した位置型パターンを作成させ，
最も存在数が多い要素種類についての１次元データと上記背景ビット列との排他的論理和を算出して残りビット列を得，
算出された残りビット列がすべて０のビット列である場合には，上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを用いた圧縮表を生成させ，
算出された残りビット列がすべて０のビット列でない場合には，上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを圧縮表に含まれる圧縮行の第１行目に決定させ，
上記圧縮行に用いられた位置型パターンと同等またはより狭い領域を表す位置型パターンのいずれかを選択させ，選択された位置型パターンのビット列と残りビット列との論理和を算出させ，算出された論理和と背景ビット列との論理積を算出して第１ビット列を得，
上記圧縮行に用いられた要素種類を除く要素種類についての１次元データを選択させ，選択された１次元データのビット列と選択された位置型パターンのビット列の論理積を算出して第２ビット列を得，
第１ビット列と第２ビット列との論理積を算出させ，
算出された論理積がすべて０のビット列である場合には，他の位置型パターンおよび１次元データの組合せについて，第１ビット列および第２ビット列の算出と，第１ビット列と第２ビット列との論理積の算出とを繰返させ，
算出された論理積がすべて０のビット列でない場合には，
選択された位置型パターンと選択された１次元データの要素種類との組合わせを，圧縮表に含まれる次の圧縮行に決定させ，上記第１ビット列および第２ビット列において，同じビット位置のビットが１であるものについてビット１をビット０にした第１ビット列を新たな残りビット列とさせ，
新たな残りビット列がすべて０でない場合には，次の圧縮行の決定のために第１ビット列および第２ビット列の算出と第１ビット列と第２ビット列の論理積の算出とを繰返させ，
新たな残りビット列がすべて０の場合には，決定された圧縮行を含む圧縮表を生成させるように上記データ圧縮装置を制御するプログラム。
【請求項９】
与えられる制限行数の範囲内において，圧縮表を生成することができるかどうかを判断させ，
上記制限行数では圧縮表を生成することができないことが判断された場合に，制限行数を増加させ，
増加した制限行数の範囲内において，圧縮表を生成することができるかどうかを再度判断させるようにデータ圧縮装置を制御するプログラム。
【発明の詳細な説明】
【０００１】
【技術分野】
この発明は，データ圧縮装置およびその制御プログラムに関し，より詳細には表形式により表現されるデータを圧縮する装置およびその制御プログラムに関する。
【０００２】
【発明の背景】
たとえば，複数のグレードが設定されている商品が備える部品のうちのいくつかが，共通して用いられる部品であるような場合，使用部品と商品とグレードとの関係を表形式で表すことができる。このような表形式によって表されるデータを圧縮することができれば，コンピュータの記憶領域の省スペース化，データ通信量の軽減等に有効になる。
【０００３】
画像情報，音声情報等の圧縮処理技術として，量子化，エントロピー符号化，周波数相関符号化，時間相関符号化等の技術が知られている。また，ディジタル・データの圧縮処理技術としてハフマン符号化，ＬＺ方式等の技術が知られている。これらの技術に関する先行技術文献は存在するが，表形式のデータの特性に着目したデータ圧縮に関する先行技術文献は，見つけることができなかった。
【０００４】
【発明の開示】
この発明は，表形式のデータを圧縮する圧縮装置を提供することを目的とする。
【０００５】
さらにこの発明は，上記の圧縮装置を制御するプログラムを提供することを目的とする。
【０００６】
この発明によるデータ圧縮装置は，複数の見出しによって特定される要素を格納した非圧縮表に基づいて，要素の種類のそれぞれについての上記非圧縮表における要素格納位置を表す１次元データを作成する手段，１次元データと，一または複数の要素格納位置を表す位置型パターンとを組合わせる組合せ手段，１または複数の１次元データと位置型パターンとの組合せに基づいて，非圧縮表を再現することができるかどうかを判断する手段，非圧縮表を再現することができないと判断された場合に，上記１次元データと位置型パターンとの組合せを変更して，非圧縮表を再現することができるかどうかをさらに判断する手段，および非圧縮表を再現することができると判断された場合に，上記組合せ中の１次元データの要素種類と位置型パターンとの組を含む圧縮表を作成する手段を備えている。
【０００７】
この発明によるプログラムは，複数の見出しによって特定される要素を格納した非圧縮表に基づいて，要素のそれぞれについての上記非圧縮表における要素格納位置を表す１次元データを作成させ，１次元データと一または複数の要素格納位置を表す位置型パターンとを組合わさせ，組合わされた１または複数の上記１次元データと位置型パターンの組合せに基づいて，非圧縮表を再現することができるかどうかを判断させ，非圧縮表を再現することができないと判断した場合に，上記１次元データと位置型パターンとの組合せを変更して，非圧縮表を再現することができるかどうかをさらに判断させ，非圧縮表を再現することができると判断した場合に，上記組合せ中の１次元データの要素種類と位置型パターンとの組を含む圧縮表を作成させるようにコンピュータを制御するものである。
【０００８】
この発明によるデータ圧縮装置は，複数の見出しによって特定される要素を格納した非圧縮表から，要素の種類と位置型パターンとの組を含む圧縮表を生成する装置である。
【０００９】
非圧縮表は，複数の見出し（行方向の見出しおよび列方向の見出し）を含む。行方向の見出しおよび列方向の見出しは複数階層に亘るものであってもよい。いずれにしても，非圧縮表は複数の見出し（キー）によって特定される要素が格納された表形式のデータである。換言すると，非圧縮表は，複数の見出しによって特定される複数のセル（単位領域）を含み，１または複数（全部であってもよい）のセル（単位領域）に要素を表すデータが格納されている（関連付けられている）データである。
【００１０】
非圧縮表に基づいて，要素の種類のそれぞれについての上記非圧縮表における要素格納位置を表す１次元データが作成される。１次元データは，たとえば，要素が格納されている要素格納位置に対応させてビットを立てたビット列によって表現することができる。
【００１１】
１次元データと一または複数の要素格納位置を表す位置型パターンとが組合わせられる。一または複数の要素格納位置を表す位置型パターンは，たとえば，２行２列の正方行列の非圧縮表であれば，第１行第１列の要素格納位置（１つのセル），第１行第２列の要素格納位置（１つのセル），第２行第１列の要素格納位置（１つのセル），第２行第２列の要素格納位置（１つのセル），第１行全列の要素格納位置（２つのセル），第２行全列の要素格納位置（２つのセル），全行第１列の要素格納位置（２つのセル），全行第２列の要素格納位置（２つのセル），および全行全列の要素格納位置（４つのセル）の９種類の位置型パターンとなる。
【００１２】
１次元データと位置型パターンの組合せに基づいて，非圧縮表を再現することができるかどうかが判断される。
【００１３】
位置型パターンは，上述のように複数の要素格納位置を表すものを含んでいる。このため，最も単純には，上述の２行２列の非圧縮表において一種類の要素がすべての要素格納位置（セル）に格納されているとすると，その要素とすべての要素格納位置を表す位置型パターンとの組とによって，非圧縮表と同じもの（圧縮表）を表すことができる。非圧縮表自体は，一つ一つの要素格納位置（セル）にいずれの要素が格納されているかを表すデータであるから，圧縮表は非圧縮表よりも少ないデータ量で，非圧縮表と同じデータを表すものとなる。
【００１４】
非圧縮表を再現することができないと判断された場合に，上記１次元データと位置型パターンとの組合せを変更して，非圧縮表を再現することができるかどうかがさらに判断される。
【００１５】
非圧縮表に複数種類の要素が含まれている場合には，圧縮表における１次元データと位置型パターンとの組合せは複数となる。好ましくは，データ圧縮装置は，与えられる制限数の１次元データと位置型パターンの組合せによって，非圧縮表を再現することができるかどうかを判断する制限数内判断手段，上記制限数の１次元データと位置型パターンの組合せでは非圧縮表を再現することができないと判断された場合に上記制限数を増加させる手段，および増加した制限数の１次元データと位置型パターンの組合せによって，非圧縮表を再現することができるかどうかをさらに判断する手段を備えている。より少ないデータ量（より少ない要素と要素格納位置を表す位置型パターンの組）によって，非圧縮表を圧縮して表す圧縮表を作成できるかどうかが試みられる。
【００１６】
一実施態様では，データ圧縮装置は，上記非圧縮表に基づいて，上記非圧縮表における要素格納位置のそれぞれおよび複数の要素格納位置を表す位置型パターンを作成する手段を備えている。作成された位置型パターンが用いられて，上記組合せ手段によって，１次元データと位置型パターンとが組合わせられる。
【００１７】
広い領域（複数の要素格納位置）を表す位置型パターンを圧縮表に用いる方が，圧縮表に含まれる要素と位置型パターンの組の数を少なくすることができる可能性がある。このため，好ましくは，組合せに用いられる位置型パターンは，より領域の広いものから順番に選択される。
【００１８】
この発明によるデータ圧縮装置は，要素格納欄を含む非圧縮表を，要素格納欄に格納される要素の種類と要素格納欄の一または複数の欄を表す位置型パターンとの組合せによって表現することにより，非圧縮表を圧縮して表す圧縮表を作成する装置であって，要素格納欄の各要素格納位置に付された連続番号の順序で，要素種類ごとに要素の存在の有無を１または０のビット列によって表現した１次元データを作成する１次元データ作成手段，すべての１次元データについて，対応するビット位置ごとの論理和を算出して背景ビット列を得る手段，要素格納欄の各要素格納位置に付された連続番号の順序で，上記要素格納欄のそれぞれの位置および複数の要素格納欄の位置を１または０のビット列によって表現した位置型パターンを作成する位置型パターン作成手段，最も存在数が多い要素種類についての１次元データと上記背景ビット列との排他的論理和を算出して残りビット列を得る手段，算出された残りビット列がすべての０のビット列である場合には，上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを用いた圧縮表を生成する手段，算出された残りビット列がすべて０のビット列でない場合には，上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを圧縮表に含まれる圧縮行の第１行目に決定する手段，上記圧縮行に用いられた位置型パターンと同等またはより狭い領域を表す位置型パターンのいずれかを選択し，選択された位置型パターンのビット列と残りビット列との論理和を算出し，算出された論理和と背景ビット列との論理積を算出して第１ビット列を得る手段，上記圧縮行に用いられた要素種類を除く要素種類についての１次元データを選択し，選択された１次元データのビット列と選択された位置型パターンのビット列の論理積を算出して第２ビット列を得る手段，第１ビット列と第２ビット列との論理積を算出する手段，算出された論理積がすべて０のビット列である場合には，他の位置型パターンおよび１次元データの組合せについて，上記第１ビット列および第２ビット列の算出と第１ビット列と第２ビット列との論理積の算出とを繰り返す手段，算出された論理積がすべて０のビット列でない場合に，選択された位置型パターンと選択された１次元データの要素種類との組合わせを，圧縮表に含まれる次の圧縮行に決定し，上記第１ビット列および第２ビット列において，同じビット位置のビットが１であるものについてビット１をビット０にした第１ビット列を，新たな残りビット列とする手段，新たな残りビット列がすべて０でない場合には，次の圧縮行の決定のための上記第１ビット列（新たな残りビット列が用いられて算出される）および第２ビット列の算出と第１ビット列と第２ビット列の論理積の算出とを繰返す手段，ならびに新たな残りビット列がすべて０の場合には，決定された圧縮行を含む圧縮表を生成する手段を備えている。
【００１９】
この発明によるデータ圧縮装置の制御プログラムは，要素格納欄を含む非圧縮表を，要素格納欄に格納される要素の種類と要素格納欄の一または複数の欄を表す位置型パターンとの組合せによって表現することにより，非圧縮表を圧縮して表す圧縮表を作成する装置の制御プログラムであって，要素格納欄の各要素格納位置に付された連続番号の順序で，要素種類ごとに要素の存在の有無を１または０のビット列によって表現した１次元データを作成させ（ステップ３３），すべての１次元データについて，対応するビット位置ごとの論理和を算出して背景ビット列を得（ステップ３４），要素格納欄の各要素格納位置に付された連続番号の順序で，上記要素格納欄のそれぞれの位置および複数の要素格納欄の位置を１または０のビット列によって表現した位置型パターンを作成させ（ステップ３５），最も存在数が多い要素種類についての１次元データと上記背景ビット列との排他的論理和を算出して残りビット列を得（ステップ３８），算出された残りビット列がすべて０のビット列である場合には，上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを用いた圧縮表を生成させ（ステップ３９でＹＥＳ  ，ステップ４０，４１），算出された残りビット列がすべて０のビット列でない場合には，上記最も存在数が多い要素種類と，要素格納欄のすべての位置を表す位置型パターンまたは最も存在数が多い要素種類の要素格納位置を表す位置型パターンとの組合せを圧縮表に含まれる圧縮行の第１行目に決定させ（ステップ３９でＮＯ，ステップ４２），上記圧縮行に用いられた位置型パターンと同等またはより狭い領域を表す位置型パターンのいずれかを選択させ，選択された位置型パターンのビット列と残りビット列との論理和を算出させ，算出された論理和と背景ビット列との論理積を算出して第１ビット列を得（ステップ５２，５３，５４），上記圧縮行に用いられた要素種類を除く要素種類についての１次元データを選択させ，選択された１次元データのビット列と選択された位置型パターンのビット列の論理積を算出して第２ビット列を得（ステップ５５，５６），第１ビット列と第２ビット列との論理積を算出させ（ステップ５７），算出された論理積がすべて０のビット列である場合には（ステップ５７でＹＥＳ），他の位置型パターンおよび１次元データの組合せについて，第１ビット列および第２ビット列の算出と，第１ビット列と第２ビット列との論理積の算出とを繰返えさせ（ステップ５２〜５７），算出された論理積がすべて０のビット列でない場合に（ステップ５７でＮＯ），選択された位置型パターンと選択された１次元データの要素種類との組合わせを，圧縮表に含まれる次の圧縮行に決定させ（ステップ５８），上記第１ビット列および第２ビット列において，同じビット位置のビットが１であるものについてビット１をビット０にした第１ビット列を新たな残りビット列とさせ（ステップ５９），新たな残りビット列がすべて０でない場合には（ステップ６０でＮＯ），次の圧縮行の決定のために第１ビット列および第２ビット列の算出と第１ビット列と第２ビット列の論理���の算出とを繰返させ（ステップ５２〜５７），新たな残りビット列がすべて０の場合には（ステップ６０でＹＥＳ  ），決定された圧縮行を含む圧縮表を生成させるように上記データ圧縮装置を制御するものである。
【００２０】
圧縮表に含まれる圧縮行に，複数の要素格納欄を表す位置型パターンを用いることができるので，圧縮表は，一つ一つの要素格納欄にいずれの要素が格納されているかを表す非圧縮表よりも少ないデータ量となる。
【００２１】
【実施例】
図１は，データ圧縮／伸張装置の構成を示すブロック図である。データ圧縮／伸張装置は，コンピュータ・システム（パーソナル・コンピュータ，ワークステーション等）によって構成される。後述するデータ圧縮／伸張プログラムはコンピュータ・システムの外部記憶装置にインストールされる。インストールされたデータ圧縮／伸張プログラムが実行されることによって，コンピュータ・システムがデータ圧縮／伸張装置として動作する。
【００２２】
データ圧縮／伸張装置は，データ圧縮／伸張装置を統括的に制御するＣＰＵ１と，バッファ・エリア，ワーク・エリア等を提供する内部メモリ２と，操作者の指示，圧縮すべきファイル（データ）または伸張すべきファイル（データ）の選択等を受付ける入力装置３（キーボード，マウス等）と，圧縮結果，伸張結果等を可視的に出力する出力装置４（表示装置，プリンタ等）と，各種プログラムやデータを記憶する外部記憶装置５（ハードディスク等）と，ＣＤ−ＲＯＭ８に記録されたプログラムやデータを読取るＣＤ−ＲＯＭドライブ６と，ＦＤ９に記録されたプログラムやデータを読取り，かつＦＤ９にプログラムやデータを書込むＦＤドライブ（ＦＤＤ）７を含む。
【００２３】
外部記憶装置５にはオペレーティング・システム（ＯＳ）およびデータ圧縮／伸張プログラムが記憶されている。ＯＳおよびデータ圧縮／伸張プログラムはＣＤ−ＲＯＭ８からＣＤ−ＲＯＭドライブ６およびＣＰＵ１を介して外部記憶装置５にロードまたはインストールされる，またはＦＤ９からＦＤＤ７およびＣＰＵ１を介して外部記憶装置５にインストールされる。
【００２４】
データ圧縮／伸張装置（データ圧縮／伸張プログラム）は，データ圧縮とデータ伸張とを実行する。データ圧縮とはもとのデータを圧縮することによってデータ量の少ない圧縮データを得るものである。得られた圧縮データは，もとの（圧縮前）のデータ（非圧縮データ）によって表されるデータ内容と同じデータ内容を，より少ないデータ量で表すものとなる。データ伸張とはデータ圧縮によって得られた圧縮データを元のデータに戻す処理である。以下の説明では，非圧縮データの一例として静止画像データを取りあげる。
【００２５】
（１）非圧縮データおよび圧縮データの具体例
図２は，３行３列の画素（ピクセル）によって構成される非圧縮画像の一例を示している。図２において一つ一つの枠内が，それぞれ画素を表している。図２では，各画素における発色が言葉（文章）によって示されている。以下の説明では，非圧縮画像の各画素の位置を特定するために，行番号（行座標）を２桁の数値（１０，２０，３０）により，列番号（列座標）をアルファベット（Ａ，Ｂ，Ｃ）により表すことにする。たとえば，座標（１０，Ａ）は，行座標が１０，列座標がＡであり，図２に示す３行３列の非圧縮画像において，最左行かつ最上列の画素の位置を示す。また，各画素の発色は，原色として赤（Ｒ），緑（Ｇ），青（Ｂ）を使用しそれぞれの輝度を変化させることにより種々の色を発色させる加法混色法による発色を基本とする。以下の実施例では，説明を簡単にするために，赤（Ｒ）および緑（Ｇ）のみを利用した画像例に基づいて説明する。
【００２６】
加法混色法においては，上述のように，３原色（ＲＧＢ）（この実施例では，赤（Ｒ）および緑（Ｇ））のそれぞれの輝度によって，各画素における発色が決定される。図３は，図２に示す非圧縮画像の各画素の発色を，原色（赤および緑），位置および輝度の強さによって表現したものである。図３に示す表を，以下，発色表と呼ぶ。
【００２７】
発色表では，各画素における原色（赤および緑）のそれぞれの輝度（発色）の強さが，丸数字▲１▼〜▲５▼の５段階で示されている。数値が大きくなるにしたがって輝度が強くなることを意味する。輝度の強さを表す数値（丸数字▲１▼〜▲５▼）を，以下，「輝度コード」と呼ぶ。
【００２８】
たとえば，図３に示す発色表において，座標（１０，Ａ）の画素（図２に示す非圧縮画像においては左上の画素）について，原色「赤」の輝度コードは▲１▼，原色「緑」の輝度コードは▲１▼である。輝度コード▲１▼の原色「赤」と，輝度コード▲１▼の原色「緑」を加色することによって得られる発色が「薄い黄色」（図２参照）である。
【００２９】
図４は，後述するデータ圧縮／伸張装置（データ圧縮／伸張プログラム）による処理に基づいて，図３に示す発色表を圧縮したものを表す表（これを，圧縮表と呼ぶ）の一例である（圧縮表の詳細については後述する）。
【００３０】
図５は，図３に示す発色表（非圧縮データ）の表現を，図４に示す圧縮表と同様の表現に改めたものである。
【００３１】
図５に示す発色表（非圧縮データ）は，１８行の行データから構成されている。一方，図４に示す圧縮表（圧縮データ）は５行の行データから構成されている。行データのそれぞれのデータ量が同じであるとすると，図４に示す圧縮表の圧縮率は約２７．８％（＝５／１８×１００）となっている。
【００３２】
（２）伸張処理
圧縮処理についての説明は後述することにして，はじめに図４に示す圧縮表から図３に示す発色表を得るための処理を具体例に，伸張処理を説明する。
【００３３】
図６は伸張処理（その１）の流れを示すフローチャートである。図７（Ａ）〜（Ｃ）および図８（Ａ）および（Ｂ）は，図４に示す圧縮表から図３に示す発色表を得るまでの流れを示している。
【００３４】
はじめに輝度コード格納欄が空白の発色表が内部メモリ２上に用意される（ステップ１１）。
【００３５】
圧縮表からの行データ取り出し位置を表すカウンタｐが生成される。圧縮表から元のデータを得る伸張処理（その１）においては，圧縮表の最下行から順に遡ることを原則とする。カウンタｐに圧縮行の最下行を表す数値が代入される（ステップ１２）。図４に示す圧縮表は５つの行方向のデータを含むので，カウンタｐには「５」が代入される。
【００３６】
圧縮表からカウンタｐが示す行データが読出され，内部メモリ２に一時的に記憶される（ステップ１３）。
【００３７】
図４の圧縮表の最下行（第５行目）は，原色が「緑」で，かつ行座標が「第３０行」で，かつすべての列座標（△で表す）について，「輝度コード」が「▲５▼」であることを意味する。圧縮表の第５行目に基づいて，原色「緑」について行座標「３０」のすべての列座標（Ａ，Ｂ，Ｃ）に，輝度コード▲５▼が格納（セット）される（ステップ１４）（図７（Ａ）  ）。
【００３８】
カウンタｐがデクリメントされる（ステップ１５）。圧縮表の第４行目についての処理に進む。
【００３９】
第４行目は原色が「緑」で，かつすべての行座標（横方向）（△で表す）で，かつ列座標（縦方向）が「Ｃ列」は，輝度コードが▲４▼であることを意味する。ここで，輝度コード▲４▼の発色表への格納処理（ステップ１４）では，圧縮表の第５行目によって既に輝度コード▲５▼が格納された領域には輝度コード▲４▼は格納されない。圧縮表の第５行目によって既に輝度コード▲５▼が格納された領域を除いて，圧縮表の第４行目に基づいて，原色「緑」の行座標「１０」および「２０」で，かつ列座標「Ｃ」の位置に，輝度コード▲４▼が格納される（図７（Ｂ）  ）。
【００４０】
第３行目の処理に進む。第３行目は原色「赤」および「緑」（△で表す）で，かつ行座標（横方向）が「第３０行」で，かつすべての列座標（縦方向）（△で表す）について，輝度コードが▲２▼であることを意味する。圧縮表の第５行目および第４行目によって輝度コード▲５▼および輝度コード▲４▼が格納された領域を除いて，圧縮表の第３行に基づいて，原色「赤」の行座標「３０」のすべての列座標（Ａ，Ｂ，Ｃ）に，輝度コード▲２▼が格納される（ステップ１４）（図７（Ｃ））。
【００４１】
第２行目の処理に進む。第２行目は原色「赤」および「緑」で，かつすべての行座標（横方向）で，かつ「Ｃ列」について，輝度コードが▲３▼であることを意味する。圧縮表の第５行目，第４行目および第３行目によって輝度コード▲５▼，▲４▼および▲２▼が格納された領域を除いて，圧縮表の第２行目に基づいて，原色「赤」の行座標「１０」および「２０」の列座標「Ｃ」に，輝度コード▲３▼が格納される（ステップ１４）（図８（Ａ））。
【００４２】
最後に第１行目の処理に進む。第１行目は原色「赤」および「緑」で，かつすべての行座標（横方向）で，かつすべての列座標（縦方向）について（すなわち，発色表の全体），輝度コードが▲１▼であることを意味する。圧縮表の第５行目，第４行目，第３行目および第２行目によって輝度コード▲５▼，▲４▼，▲２▼および▲３▼が格納された領域を除いて，圧縮表の第１行目に基づいて，第５行〜第２行までのロジックを経て未だ輝度コードが格納されていない領域に，輝度コード▲１▼が格納される（ステップ１４）（図８（Ｂ）；図３に示す発色表と同じ）。
【００４３】
カウンタｐが０，すなわち圧縮表のすべての行データについて上述の処理が終了すると，伸張処理（その１）は終了する（ステップ１６でＹＥＳ  ）。
【００４４】
図４に示す圧縮表から図３に示す発色表を得ることができ，図３に示す発色表から図２に示す画像を得ることができるので，図４に示す圧縮表から図２に示す画像を得ることができる。上述したように，図４に示す圧縮表のデータ量は，図３に示す発色表のデータ量の約２７．８％のデータ量である。
【００４５】
図９は，伸張処理（その２）の流れを示すフローチャートである。伸張処理（その２）では，圧縮表の最上行から順番に行データが読出されて処理される点が，伸張処理（その１）とは異なる。図６に示す処理と同一の処理については同一の符号を付し，重複説明を避ける。
【００４６】
カウンタｐに圧縮表の最上行の行数（すなわち「１」）を表す数値が代入される（ステップ１７）。圧縮表の最上行の行データが内部メモリ２に一時的に記憶される（ステップ１３）。最上行の行データによって特定される領域に，行データ中の輝度コードが格納（セット）される（ステップ１４Ａ）。その後，カウンタｐがインクリメントされる（ステップ１８）。
【００４７】
伸張処理（その２）では，すでに輝度コードが格納（セット）されている領域についても，その後の行データの処理において，輝度データが上書きされる（ステップ１４Ａ）。
【００４８】
カウンタｐが最下行の行数を超えると，伸張処理（その２）が終了する。
【００４９】
伸張処理（その１）および伸張処理（その２）のいずれの処理であっても，圧縮表（圧縮データ）から発色表（非圧縮データ）を得ることができる。ハードディスク５に記憶されるデータ圧縮／伸張プログラムには，一般的には，伸張処理（その１）または伸張処理（その２）のいずれか一方の処理のためのプログラムが記述される。
【００５０】
（３）位置型表記および強度型表記
後述するように，データ圧縮／伸張プログラムによるデータ圧縮処理では，位置型表記（位置型データ）および強度型表記（強度型データ）の２つの表記（データ）が用いられる。データ圧縮／伸張プログラムによる圧縮処理の説明に進む前に，この位置型表記および強度型表記について説明しておく。
【００５１】
（Ａ）  位置型表記
図１０は，図３に示す発色表中の輝度コードが格納される欄（輝度コード格納欄）のそれぞれに，１から始まる連続する番号を付したもの（位置座標表）を示している。図１１は，輝度コード格納欄の一または隣合う複数の欄の位置を特定する表記するものの一覧表（テーブル）である。輝度コード格納欄の一または隣合う複数の欄の位置を特定する表記を，以下，「位置型表記」と呼ぶ。
【００５２】
図１０に示す位置座標表において，輝度コード格納欄中の番号は，輝度コード格納欄の左上（原色「赤」の座標（１０，Ａ））からスタートして右向きに進み，さらに次の行に移って右向きに進み，最終的に輝度コード格納欄の右下（原色「緑」の座標（３０，Ｃ））で終えるように，順番にナンバリングされている。各輝度コード欄中の各番号を，以下，「位置番号」と呼ぶ。位置番号によって，輝度コード格納欄の位置（座標）（原色別画素位置）が特定される。たとえば，位置番号「３」は「原色「赤」について座標（１０，Ｃ）」を意味する。位置番号「１１」は「原色「緑」について座標（１０，Ｂ）」を意味する。
【００５３】
図１１に示す位置型表記の一覧表における各位置型表記は，原色，行座標および列座標の３つ表記の組によって構成される。
【００５４】
左側の表記が原色を表している。△はすべての原色（この実施例では，赤および緑）を表す。
【００５５】
中央の表記は行座標を表している。△はすべての行座標（図３に示す発色表の例では，第１０行，第２０行および第３０行）を表す。
【００５６】
右側の表記は列座標を表している。△はすべての列座標（図３に示す発色表の例では，第Ａ列，第Ｂ列および第Ｃ列）を表す。
【００５７】
図１２（Ａ）および（Ｂ）ならびに図１３は，それぞれ，位置型表記と，位置型表記をビット列によって表記したものと，位置型表記によって特定される輝度コード格納欄の位置との関係を示すものである。
【００５８】
位置型表記「△  △  △」（図１２（Ａ））は，発色表の輝度コード格納欄における，すべての原色，かつすべての行，かつすべての列の位置を意味する。位置型表記「△  △  △」を，上述の位置番号に対応させてビット列で表記すると「１１１１１１１１１１１１１１１１１１」となる。すなわち，輝度コード格納欄のすべて（ハッチング部分）の位置を示す。
【００５９】
位置型表記「△  １０  △」（図１２（Ｂ））は，輝度コード格納欄における，すべての原色で，かつ第１０行で，かつすべての列の位置を意味する。位置型表記「△  １０  △」を，位置番号に対応させてビット列で表記すると「１１１００００００１１１００００００」となる。６つ分の輝度コード格納欄の位置を示す。
【００６０】
位置型表記「緑  ３０  Ｃ」（図１３）は，輝度コード格納欄における，原色「緑」，第３０行，第Ｃ列を意味する。位置番号に対応させてビット列で表記すると「０００００００００００００００００１」となる。１つ分の輝度コード格納欄の位置を示す。
【００６１】
このように，位置型表記は，輝度コード格納欄の一または隣合う複数の欄の位置を特定する表記（データ）（ビット列）である。
【００６２】
（Ｂ）  強度型表記
図１４は，図３に示す発色表の各輝度コード格納欄に格納された輝度コードのそれぞれが格納されている輝度コード格納欄の位置を，上述の位置番号（図１０）に対応させてビット列で表記したものである。輝度コードごとに，その輝度コードが格納されている位置をビット列で表記したものを，「強度型表記」と呼ぶ。
【００６３】
たとえば，輝度コード▲１▼については，位置番号１，２，４，５，１０，１１，１３および１４にビット列「１」が対応している。輝度コード▲１▼についての強度型表記によって，輝度コード▲１▼が格納されている輝度コード格納欄の位置が特定される。
【００６４】
図１４に示すビット列において，最下段のビット列は，輝度コード▲１▼〜▲５▼のそれぞれの強度型表記について各位置番号におけるビットの排他的論理和（ＸＯＲ）をとったものである。このビット列を「背景ビット列」と呼ぶ。
【００６５】
（４）圧縮処理（その１）
図１５〜図１９は，図３に示す発色表（非圧縮データ）を圧縮する（圧縮表にする）処理の流れを示すものである。図１５〜図１９のそれぞれにおいて，左側には圧縮表（完成途上のものを含む）が示されている。圧縮表の右側には，左側の圧縮表によって表される発色表を示している。右側の発色表において，正しく輝度コードが格納されていない領域（他の輝度コードが格納されるべき領域）がハッチングによって示されている。
【００６６】
データ圧縮／伸張プログラムによるデータ圧縮処理では，はじめに，「制限行数」が設定される。制限行数は圧縮表に用いられるべき行数の最大値を意味する。設定された制限行数の行データを含む圧縮表によって発色表を表現できるかどうかが試行される。発色表を表現できない場合には制限行数をインクリメントして，再度，発色表を表現できるかどうかが試行される。できるだけ少ない行数の圧縮表を作成した方が圧縮率が高められるからである。
【００６７】
また，発色表の圧縮処理の前処理として，発色表（非圧縮データ）に基づいて，上述した位置型表記の一覧表（図１１）および輝度型表記（図１４）が作成される。
【００６８】
図１５に示すように，はじめに制限行数が「１」に設定される。１行の圧縮表で発色表を表すことができるかどうかが試行される。
【００６９】
図３に示す発色表は，１行の圧縮表で表すことができないことがデータ圧縮／伸張プログラムの圧縮処理において判断される（詳しくは後述する）。この場合，各強度型表記（ビット列）中の「１」の数が算出され，最も「１」の数が多い強度型表記の輝度コードと，最も広い位置型表記との組合せが圧縮表の第１行とされる。圧縮表の第１行が決定される。
【００７０】
１行の圧縮表によって表現される発色表において，非圧縮データによって表される発色表とは異なる輝度コードが格納されている輝度コード格納欄に，正しい輝度コードを格納していくルーチンが，以下の処理において行われることになる。
【００７１】
制限行数がインクリメントされる。図１６に示すように，２行の圧縮表で発色表を表現できるかどうかが試行される。はじめに位置型表記を選択し，次に強度型表記を選択し，選択した位置型表記と選択した強度型表記を仮に圧縮表の第２行として，その２行の圧縮表で発色表を表すことができるかどうかが試行される。選択した位置型表記と選択した強度型表記を用いることによっては発色表を表すことができない場合には，位置型表記についてはそのまま選択したものを用い，強度型表記については他の輝度コードを含む強度型表記を新たに選択して試行が行われる。それでも発色表を表すことができない場合には，他の位置型表記が新たに選択され，新たに選択された位置型表記と強度型表記との組合せで試行が行われる。なお，位置型表記の一覧表（図１１）は，位置型表記が輝度コード格納欄の広い範囲を示すものから狭い範囲を示すものの順番に並べられており，広い範囲を示すものから順番に選択される。また，第１行において用いられた最も広い範囲を示す位置型表記は選択されず，その次に広い範囲のものから選択が開始される。
【００７２】
試行の結果，２行の圧縮表では発色表を表すことができないことが判断されると，制限行数がさらにインクリメントされる。３行の圧縮表で発色表を表現できるかどうかが試行される。
【００７３】
３行の圧縮表を用いて発色表を表現できるかどうかの試行では，第２行，第３行のそれぞれについて，多数の強度型表記と位置型表記の組合せについて試行が行われる。３行の圧縮表においては，選択される位置型表記は，圧縮表の第２行については第１行の位置型表記よりも狭い範囲を示すものが選択され，第３行については第２行の位置型表記と同等，または狭い範囲を示すものが選択される。
【００７４】
図３に示す発色表についての制限行数を３行とした圧縮表作成の試行の過程では，図１７（Ａ）  に示す組合せも，図１７（Ｂ）  に示す組合せも出現することになる。
【００７５】
試行の結果，３行の圧縮表では発色表を表すことができないことがデータ圧縮プログラムの処理において判断されると，制限行数がさらにインクリメントされる。４行の圧縮表で発色表を表現できるかどうかが試行される。第２行，第３行，第４行のそれぞれについて，多数の強度型表記と位置型表記の組合せについて試行が行われる。図３に示す発色表についての制限行数を４行とした圧縮表作成の試行の過程では，図１８（Ａ）  に示す組合せも，図１８（Ｂ）  に示す組合せも出現することになる。
【００７６】
試行の結果，４行の圧縮表では発色表を表すことができないことが判断されると，制限行数がさらにインクリメントされる。５行の圧縮表で発色表を表現できるかどうかが試行される。第２行，第３行，第４行，第５行のそれぞれについて，強度型表記と位置型表記の種々の組合せについて試行が行われる。
【００７７】
制限行数が５行の場合，図１９（Ａ），図１９（Ｂ），図１９（Ｃ）  のいずれの圧縮表も出現する可能性がある。図１９（Ｃ）  の圧縮表は，図３の発色表を表すものとなっている。試行過程において図１９（Ｃ）  が出現すると，圧縮表が完成したことが，データ圧縮処理において判断されると，データ圧縮／伸張プログラムの圧縮処理が終了する。
【００７８】
図１９（Ｃ）  に示す圧縮表と図４に示す圧縮表は，いずれも図３に示す発色表を圧縮して表すものであるが，その内容は異なっている（第２行目と第３行目を参照）。このようにデータ圧縮／伸張プログラムによる圧縮処理では，一つの発色表について数種類の圧縮表が作成され得る。データ圧縮／伸張プログラムによる圧縮処理では，種々の強度型表記と位置型表記の組合せについて試行し，最初に出現した完成した圧縮表を出力する。
【００７９】
（５）  圧縮処理（その２）
図２０〜図２４はデータ圧縮／伸張プログラムによるデータ圧縮処理の流れを示すフローチャートである。
【００８０】
データ圧縮／伸張プログラムが実行される。次に圧縮処理すべき非圧縮データが圧縮処理装置の操作者によって選択される。たとえば，操作者によってＦＤ９に記録されている非圧縮データが選択されると，ＦＤ９に記録されている非圧縮データがＦＤＤ７によって読取られ，ＣＰＵ１を介して内部メモリ２に一時的に記憶される（ステップ３１）。
【００８１】
内部メモリ２に記憶された非圧縮データ，たとえば非圧縮画像データによって表される画像を表す画素の配列に応じて，行座標（１０，２０，３０・・・）および列座標（Ａ，Ｂ，Ｃ・・・）が決定され，発色表（図３）が作成される（ステップ３２）。
【００８２】
図３に示す発色表は，赤（Ｒ）および緑（Ｇ）のそれぞれについて輝度コード（▲１▼〜▲５▼）のデータを含む。輝度コード▲１▼〜▲５▼のそれぞれについて強度型表記（ビット列）が作成される（ステップ３３；図１４参照）。非圧縮画像データが輝度コードごとに一次元化されて表現される。
【００８３】
作成された強度型表記に基づいて，位置番号によって特定されるビット位置ごとのビットの論理和が算出される。算出された論理和を「背景ビット列」と呼ぶ（ステップ３４；図１４参照）。
【００８４】
位置型表記の一覧表（図１１）が作成される（ステップ３５）。位置型表記の一覧表では，広い領域を表記する位置型表記から，狭い領域を表記する位置型表記の順番に並べられる。
【００８５】
ここで，制限行数が仮に決定される（ライン・ジェネレート；ステップ３６）。制限行数は１から順に増やされていく。できるだけ少ない行数で圧縮表を作成すると，圧縮率の高い圧縮表が得られるので，仮に決定される制限行数をもつ圧縮表によって発色表を表す圧縮表が完成するかどうかが試行される。
【００８６】
はじめに，制限行数が「１」とされ，１行の圧縮表によって発色表を表現することができるかどうかが試行される。
【００８７】
輝度コード▲１▼〜▲５▼のそれぞれについての強度型表記（図１４）のビット列に含まれるビット「１」の総数がカウントされ，最もビット「１」の数が多い強度型表記が選択される。たとえば，図１４に示す強度型表記では，輝度コード▲１▼についての強度型表記にビット「１」が最も多く含まれている。最もビット「１」の数が多い強度型表記が選択される（ステップ３７）。
【００８８】
選択された強度型表記のビット列と背景ビット列の排他的論理和が算出される（ステップ３８）。
【００８９】
ステップ３８の排他的論理和の算出は，選択された強度型表記のビット列によって上記背景ビット列を消込む（埋める）ことができるか，すなわち，選択された強度型表記のみによって上記非圧縮データが構成されているかどうか判断するために行われる。
【００９０】
排他的論理和が０（ビット列のすべてのビットが０）であれば，発色表（非圧縮データ）は，選択された強度型表記のみによって構成されていることが分かる。この場合，選択された強度型表記の輝度コードと，最も広い位置型表記の組合せを用いた１行の圧縮表が作成され，出力（外部記憶装置５への記録）が行われる（ステップ３９でＹＥＳ  ，ステップ４０，ステップ４１）。もちろん，最も広い位置型表記ではなく，選択された強度型表記において「１」がある場所（すなわち，選択された強度型表記においてビット「１」がある位置番号に対応する輝度コード格納欄）を表す位置型表記を，位置型表記の一覧表（図１１）から選択して，圧縮表の第１行目に用いるようにしてもよい。
【００９１】
排他的論理和が０でない場合には（ステップ３９でＮＯ），発色表には，選択された強度型表記以外の強度型表記が用いられており，１行の圧縮表では発色表を表すことができないことが分かる。
【００９２】
選択された強度型表記の輝度コードと最も広い範囲を表す位置型表記の組合せが，圧縮表における１行目に決定される（ステップ４２）。圧縮表の１行目を，以下「基本データ」と呼ぶ。
【００９３】
たとえば，発色表から作成される強度型表記が図１４に示すものである場合，最も「１」の数が多い強度型表記は輝度コード▲１▼の強度型表記であるので，圧縮表の１行目（基本データ）は，輝度コード「▲１▼」，位置型コード「△  △  △」の組合せに決定される。
【００９４】
次に，ラインポインタｐ１の格納領域がメモリ上に作成される（ステップ４３）。ラインポインタ格納領域については，後述する説明において明らかにする。
【００９５】
作成されたラインポインタｐ１の格納領域に，制限行数ｉの内容がコピーされる（ステップ４４）。基本データが作成された直後においては，制限行数ｉ＝１であるので，ラインポインタｐ１＝１となる。
【００９６】
圧縮行作成処理（ステップ４５；図２２）に進む。
【００９７】
圧縮行作成処理は，簡潔に言えば，上述の制限行数ｉの範囲内において，発色表（非圧縮データ）を表す圧縮表（圧縮表を構成する各行）を作成することができるかどうかを試行する処理である。総当たり的に強度型表記と位置型表記を組合わせ，すべての組合せを試行した結果，発色表を表す圧縮表を得ることができないと判断された場合には，制限行数がインクリメントされ，インクリメントされた制限行数の圧縮表によって，発色表を表すことができるかどうかを更に試行するという処理である。
【００９８】
また，圧縮行作成処理では，後述するように，再帰処理（圧縮行作成処理中に，さらに圧縮行作成処理が行われること）が行われる。圧縮行作成処理では，圧縮表における第２行目を仮に決定しておき，さらに再帰処理において第３行目を仮に決定し，さらに第４行目を決定する，といった処理が行われる。
【００９９】
はじめに，上述のラインポインタｐ１がデクリメントされる（図２２；ステップ５０）。デクリメントされたｐ１の値が０以下の場合には，圧縮行作成処理（ステップ４５）から抜ける（ステップ５１でＹＥＳ  ）。ラインポインタｐ１格納領域が削除される（ステップ４６）。
【０１００】
残りビット列が「０」でないので圧縮表が未完成と判断される（ステップ４７でＮＯ）。
【０１０１】
圧縮表が未完成と判断されると，ラインジェネレートが行われ，制限行数ｉがインクリメントされる（ステップ４９）。制限行数ｉ＝１であったとすると，新たな制限行数ｉ＝２，すなわち，２行の圧縮表によって発色表（非圧縮データ）を表すことができるかどうかの試行が開始される。
【０１０２】
ラインポインタｐ１の格納領域が作成され（ステップ４３），作成されたラインポインタｐ１の値として，新たな制限行数ｉの値がコピーされる（ステップ４４）。最大行数ｉ＝２の場合にはｐ１＝２とされる。
【０１０３】
圧縮行作成処理が再び開始される（ステップ４５；図２２）。
【０１０４】
ラインポインタｐ１の値がデクリメントされる（ステップ５０）。ラインポインタｐ１＝２の場合，デクリメントされるとｐ１＝１となる。
【０１０５】
ラインポインタｐ１が０よりも大きい場合（ステップ５１でＮＯ  ），位置型表記と強度型表記の組合せの処理（試行）が行われる。
【０１０６】
はじめに位置型表記の一覧表（図１１）から，一の位置型表記が選択される（ステップ５２）。ここで選択される位置型表記は，範囲の大きい順番に並べられている位置型表記の一覧表にしたがって，範囲の大きい順に選択される。ただし，先に選択された位置型表記は選択されず，その次の位置型表記から選択が開始される。たとえば，図１１に示す位置型表記の一覧表を例にとると，圧縮表の第１行目で「△  △  △」が用いられているので，その次の位置型表記である「赤  △  △」が選択されることになる。
【０１０７】
選択された位置型表記のビット列と残りビット列の論理和が算出される（ステップ５３）。算出される論理和は，選択された位置型表記が影響を及ぼす輝度コード格納欄における範囲および残りビット列によって表される輝度コード格納欄における範囲を意味する。
【０１０８】
算出された論理和と，背景ビット列の論理積が算出される（ステップ５４）。この処理は，発色表の輝度コード格納欄において，何もデータが格納されていない領域がある場合に，その領域を除外する処理である。発色表にデータが存在しない領域がない場合には，この処理はスキップしてもよい。
【０１０９】
上述の論理積の結果のビット列を，以下，「ビット列Ａ」と呼ぶ。
【０１１０】
次に強度型表記が選択される（ステップ５５）。図１４に示す強度型表記を例にとると，輝度コード▲１▼〜▲５▼についての５つの強度型表記があり，輝度コード▲１▼についての強度型表記は圧縮表の第１行目に用いられているので，輝度コード▲１▼を除く４つの輝度コード（輝度コード▲２▼〜▲５▼）についての強度型表記のうちのいずれかが選択される。
【０１１１】
選択された強度型表記のビット列と，選択された位置型表記のビット列の論理積が算出される（ステップ５６）。算出されるビット列を「ビット列Ｂ」と呼ぶ。ビット列Ｂは，選択された位置型表記によって表される輝度コード格納欄における範囲において，選択された輝度型表記のビット列が存在するかどうかを表すものとなる。
【０１１２】
ビット列Ａとビット列Ｂの論理積が算出され，算出されるビット列が「０」（すべてのビットが「０」）かどうかが判断される（図２３；ステップ５７）。
【０１１３】
ビット列Ａとビット列Ｂの論理積が「０」ということは，選択された位置型表記によって表される輝度コード格納欄における範囲において，選択された強度型表記の輝度コードがまったく位置していないことを意味する。この場合には，位置型表記をそのままとし，強度型表記を他のものに代える処理が行われる（ステップ５７でＹＥＳ  ，ステップ５５に戻る）。他の強度型表記が選択され，上述と同様の処理が行われる（ステップ５５，５６，５７）。
【０１１４】
強度型表記がすべて選択され，そのいずれにおいてもビット列Ａとビット列Ｂの論理積が「０」である場合には，ステップ５５（強度型表記の選択）のループを抜け，ステップ５２（位置型表記の選択）のループに戻る。すなわち，他の位置型表記が選択されて，選択された新たな位置型表記が用いられて上述と同様の処理が行われる（ステップ５２〜ステップ５７）。
【０１１５】
ビット列Ａとビット列Ｂの論理積が「０」でない場合（ステップ５７でＮＯ），選択された位置型表記によって表される輝度コード格納欄における範囲において，選択された強度型表記の輝度コードが少なくとも一つは位置していることが分かる。この場合，選択された強度型表記の輝度コードと，選択された位置型表記の組合せが一時的にメモリに記憶される（ステップ５８）。圧縮表の第２行目として，この輝度コードと位置型表記の組合せが仮決定される。
【０１１６】
ビット列Ａとビット列Ｂにおいて，ともに「１」であるビット列について，「１」を「０」とした新たなビット列Ａを作成する（ステップ５９）。この処理は，すでに圧縮表の第１行目に決定している輝度コードと位置型表記との組合せと，上述のメモリに記憶された第２行目に仮決定された輝度コードと位置型表記の組合せによって，発色表（非圧縮データ）を表す圧縮表が完成しているかどうかの判断に用いられる。この処理によって得られるビット列も「残りビット列」と呼ぶ。
【０１１７】
残りビット列が「０」であるかどうかが判断される（ステップ６０）。残りビット列が「０」であれば（ステップ６０でＹＥＳ  ），２行の圧縮表で発色表を表すことができていることになる。圧縮行作成処理（図２１；ステップ４５）を抜け，圧縮表が完成していると判断され（ステップ４７でＹＥＳ  ），メモリに記憶されている輝度コードと位置型表記の組合せを２行目とする２行の圧縮表が出力される（ステップ４８）。
【０１１８】
残りビット列が「０」でない場合には（ステップ６０でＮＯ），メモリに記憶されている輝度コードと位置型表記の組合せを圧縮表の２行目として仮に決定し，次の行（３行目）の決定処理に移ることになる。
【０１１９】
ラインポインタｐ１の格納領域がさらに作成される（ステップ６１）。ラインポインタの格納領域は２つとなる。
【０１２０】
後述するように，制限行数が増えると，その制限行数にともなってラインポインタ格納領域も増加する。以下の説明において，作成されるラインポインタ格納領域同志の関係を「階層」で表現することにする。上述のステップ６１において作成されるラインポインタ格納領域は，ステップ４３（図２１）において既に作成されているラインポインタ格納領域の一つ下の階層におけるラインポインタ格納領域という位置づけになる。逆に言うと，ステップ４３において既に作成されているラインポインタ格納領域は，新たに作成されるラインポインタ格納領域の一つ上の階層のラインポインタ格納領域ということになる。
【０１２１】
新たに作成されたラインポインタ格納領域のラインポインタｐ１に，一つ上層のラインポインタｐ１がコピーされる（ステップ６２）。上層のラインポインタｐ１が「１」であれば，新たに作成された下層のラインポインタｐ１も「１」とされる。
【０１２２】
圧縮行作成処理が再帰的に呼び出される（図２４；ステップ６３）。すなわち，圧縮行作成処理の処理中においてさらに圧縮行作成処理が行われる。再帰呼出された圧縮行作成処理は，上述の例では第３行目についての圧縮行作成処理である。
【０１２３】
再帰呼出された圧縮行作成処理のステップ５０の処理は，ステップ６１において新たに作成されたラインポインタｐ１についての処理となる。ラインポインタｐ１＝１であるから，デクリメントされるとｐ１＝０となる（ステップ５１でＹＥＳ  ）。このように，制限行数ｉ＝２の場合に第３行目の圧縮作成処理に進むと，その処理をすぐに抜けることになる（図２４；ステップ６３を抜ける）。ラインポインタ格納領域が削除される（ステップ６４）。
【０１２４】
残りビット列が「０」でないので圧縮表は完成していないと判断される（ステップ６５でＮＯ）。圧縮表の第２行目としてメモリに仮に記憶されている輝度コードと位置型表記の組合せが削除される（ステップ６６）。圧縮表の第２行目について，再び位置型表記と強度型表記の組合せ（試行）が行われることになる（ステップ５５，ステップ５２）。
【０１２５】
すべての位置型表記と強度型表記の組合せ（試行）を行って圧縮表が完成に至らなかった場合には（図２１；ステップ４７でＮＯ），ラインジェネレートが更に行われる（ステップ４９）。３行の圧縮表によって発色表（非圧縮データ）を表すことができるかどうかが試行される。
【０１２６】
３行の圧縮表によって非圧縮データを表すことができるかどうかの処理についても，圧縮表の第２行について処理（位置型表記と強度型表記の組合せの試行）から開始される。
【０１２７】
上述のような処理を経ることによって，ステップ６０の判断において残りビット列が「０」になると，圧縮表が完成した判断され（ステップ６５でＹＥＳ  ，ステップ４７でＹＥＳ  ），圧縮処理が終了する。
【０１２８】
図２５は，上述の再帰処理を模式的に表すものである。
【０１２９】
たとえば，制限行数ｉ＝３の場合には，圧縮表の第２行目について圧縮行作成処理が行われ（符号８１），その圧縮行作成処理中に呼び出される圧縮行作成処理（再帰処理）において圧縮表の第３行目について圧縮行作成処理が行われる（符号８２）。さらに圧縮表の第３行目についての圧縮行作成処理中の呼び出される圧縮行作成処理（再帰処理中の再帰処理）で圧縮表の第４行目について圧縮行作成処理が行われる（符号８３）。制限行数ｉ＝３であれば，圧縮表の第４行目についての圧縮行作成処理（符号８３）はすぐにその処理を抜け，１行前（すなわち，圧縮表の第３行目）についての圧縮行作成処理（符号８２）に戻ることになる。圧縮表の第３行目についての試行がすべて終えたときに圧縮表が完成していない場合には，さらに圧縮表の第３行目についての処理を抜け，圧縮表の第２行目についてさらに試行が行われる。このようにして圧縮表の第２行，第３行について，強度型表記と位置型表記の組合せのすべてについて試行が行われる。その結果，圧縮表が完成しなかった場合には，制限行数ｉがインクリメントされることになる。
【０１３０】
このようにデータ圧縮処理を経ることによって，非圧縮データは少ない行数の圧縮表によって表すことができる。制限行数の範囲内で試行を繰り返すことによって，より少ない行数の圧縮表を作成することができるので，圧縮率の高い圧縮データ（圧縮表）を得ることができる。
【０１３１】
上述した例では，画像データを一例にしてデータ圧縮およびデータ伸張の処理を説明したが，画像データのみならず，他のデータであっても同様にデータ圧縮処理およびデータ伸張処理を行うことができるのは言うまでもない。以下，画像データ以外のデータについての適用例を挙げておく。
【０１３２】
図２６（Ａ）  は航空路線と，航空機の機種と，座席グレードと，料金との関係を表す料金表を表している。図２６（Ｂ）  は図２６（Ａ）  に示す料金表を圧縮した圧縮表を表している。図２６（Ａ）  において「×」は未設定を表している。上述の圧縮処理を用いることによって，図２６（Ａ）  に示す料金表（非圧縮データ）から，図２６（Ｂ）  に示す圧縮表を得ることができる。伸張処理（その１であっても，その２であってもよい）を用いることによって，図２６（Ｂ）  に示す圧縮表から図２６（Ａ）  に示す料金表を得ることができる。
【０１３３】
図２７（Ａ）  は寿司の量と，商品名と，ランクと，寿司ネタとの関係を表す寿司ネタ表を表している。図２７（Ｂ）  は電源電圧と，シリーズと，ランクと，部品グレードとの関係を表す使用部品表を表している。図２７（Ａ）  に示す寿司ネタ表および図２７（Ｂ）  に示す使用部品表についても，上述の圧縮処理を用いることによって，よりデータ量の少ない圧縮表を得ることができる。
【図面の簡単な説明】
【図１】データ圧縮装置のハードウエア構成を示すブロック図である。
【図２】３行３列の画素の画像を示す。
【図３】発色表の一例を示す。
【図４】圧縮表の一例を示す。
【図５】図３に示す発色表を図４に示す圧縮表と同じ表記にして示すものである。
【図６】伸張処理（その１）の流れを示すフローチャートである。
【図７】（Ａ），（Ｂ），（Ｃ）は圧縮表から発色表を得る伸張処理の具体例を示す。
【図８】（Ａ），（Ｂ）は圧縮表から発色表を得る伸張処理の具体例を示す。
【図９】伸張処理（その２）の流れを示すフローチャートである。
【図１０】図３に対応する発色表の輝度コード格納欄に，連続する番号を付したものを示す。
【図１１】位置型表記の一覧表を示す。
【図１２】（Ａ），（Ｂ）は位置型表記と，その位置型表記をビット列によって表したものと，その位置型表記によって特定される輝度コード格納欄の位置との関係をそれぞれ示す。
【図１３】位置型表記と，その位置型表記をビット列によって表したものと，その位置型表記によって特定される輝度コード格納欄の位置との関係をそれぞれ示す。
【図１４】強度型表記および背景ビット列の一例を示す。
【図１５】発色表から圧縮表を作成する処理の一例を示す。
【図１６】発色表から圧縮表を作成する処理の一例を示す。
【図１７】（Ａ），（Ｂ）は，発色表から圧縮表を作成する処理の一例を示す。
【図１８】（Ａ），（Ｂ）は，発色表から圧縮表を作成する処理の一例を示す。
【図１９】（Ａ），（Ｂ），（Ｃ）は，発色表から圧縮表を作成する処理の一例を示す。
【図２０】データ圧縮処理の流れを示すフローチャートである。
【図２１】データ圧縮処理の流れを示すフローチャートである。
【図２２】データ圧縮処理の流れを示すフローチャートである。
【図２３】データ圧縮処理の流れを示すフローチャートである。
【図２４】データ圧縮処理の流れを示すフローチャートである。
【図２５】再帰処理を模式的に示す。
【図２６】（Ａ）  は料金表の一例を，（Ｂ）  は料金表を圧縮した圧縮表の一例を示す。
【図２７】（Ａ）  は寿司ネタ表の一例を，（Ｂ）  は使用部品表の一例を示す。
【符号の説明】
１  ＣＰＵ
２  内部メモリ
３  入力装置
４  出力装置
５  外部記憶装置
６  ＣＤ−ＲＯＭドライブ
７  ＦＤＤ
８  ＣＤ−ＲＯＭ
９  ＦＤ
【図１】
2004228726.tif 000003
【図２】
2004228726.tif 000004
【図３】
2004228726.tif 000005
【図４】
2004228726.tif 000006
【図５】
2004228726.tif 000007
【図６】
2004228726.tif 000008
【図７】
2004228726.tif 000009
【図８】
2004228726.tif 000010
【図９】
2004228726.tif 000011
【図１０】
2004228726.tif 000012
【図１１】
2004228726.tif 000013
【図１２】
2004228726.tif 000014
【図１３】
2004228726.tif 000015
【図１４】
2004228726.tif 000016
【図１５】
2004228726.tif 000017
【図１６】
2004228726.tif 000018
【図１７】
2004228726.tif 000019
【図１８】
2004228726.tif 000020
【図１９】
2004228726.tif 000021
【図２０】
2004228726.tif 000022
【図２１】
2004228726.tif 000023
【図２２】
2004228726.tif 000024
【図２３】
2004228726.tif 000025
【図２４】
2004228726.tif 000026
【図２５】
2004228726.tif 000027
【図２６】
2004228726.tif 000028
【図２７】
2004228726.tif 000029