(57)【要約】【課題】可逆圧縮によりデータ量が削減できる部分は可逆圧縮結果のデータを採用し、データ量が削減できない部分については元のデータを採用するという処理を少ないハードウエア資源で実現する。【解決手段】可逆圧縮器１０２は、元データ２１２のデータ単位ごとに、先頭から順に可逆圧縮する。データ量計数部１０４は、データ単位ごとに、可逆圧縮器１０２から順に出力される圧縮データのデータ量を累積加算する。圧縮判定部１１２は、データ量計数部１０４が求めた圧縮データのデータ量が元のデータ単位のデータ量以上になったか否かを判定する。管理テーブル生成部１１６は、圧縮データのデータ量が元のデータ単位のデータ量以上と判定されたデータ単位については元データ２１２内の当該データ単位のアドレス情報を、そうでないデータ単位については圧縮データのアドレス情報を、管理テーブル３００に記録する。【選択図】図１
2015088844.tif 000002
【特許請求の範囲】
【請求項１】
第１のメモリ領域に記憶された圧縮対象の元データのデータ単位ごとに、当該データ単位のデータをあらかじめ定められた順に可逆圧縮し、可逆圧縮により順に生成される圧縮データを第２のメモリ領域へと出力する可逆圧縮手段と、
前記データ単位ごとに、前記可逆圧縮手段が当該データ単位のデータを前記あらかじめ定められた順に可逆圧縮するにつれて出力する圧縮データのデータ量を計数する計数手段と、
前記元データの各データ単位の圧縮結果を示す圧縮結果管理データを生成して出力する生成手段であって、前記可逆圧縮手段が当該データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった場合には、当該データ単位の圧縮結果として前記第１のメモリ領域における当該データ単位の元データの記憶範囲を示すデータを前記圧縮結果管理データに組み込み、前記可逆圧縮手段が当該データ単位を圧縮し終わっても前記計数手段が計数した前記圧縮データのデータ量が前記データ単位のデータ量未満であった場合には、当該データ単位の圧縮結果として当該データ単位に対応する圧縮データの前記第２のメモリ領域上での記憶範囲を示すデータを前記圧縮結果管理データに組み込む生成手段と、
を有するデータ圧縮装置。
【請求項２】
前記可逆圧縮手段は、前記データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった時点で、当該データ単位の可逆圧縮を中止し、次のデータ単位の可逆圧縮を開始する、
ことを特徴とする請求項１に記載のデータ圧縮装置。
【請求項３】
コンピュータを、
第１のメモリ領域に記憶された圧縮対象の元データのデータ単位ごとに、当該データ単位のデータをあらかじめ定められた順に可逆圧縮し、可逆圧縮により順に生成される圧縮データを第２のメモリ領域へと出力する可逆圧縮手段、
前記データ単位ごとに、前記可逆圧縮手段が当該データ単位のデータを前記あらかじめ定められた順に可逆圧縮するにつれて出力する圧縮データのデータ量を計数する計数手段、
前記元データの各データ単位の圧縮結果を示す圧縮結果管理データを生成して出力する生成手段であって、前記可逆圧縮手段が当該データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった場合には、当該データ単位の圧縮結果として前記第１のメモリ領域における当該データ単位の元データの記憶範囲を示すデータを前記圧縮結果管理データに組み込み、前記可逆圧縮手段が当該データ単位を圧縮し終わっても前記計数手段が計数した前記圧縮データのデータ量が前記データ単位のデータ量未満であった場合には、当該データ単位の圧縮結果として当該データ単位に対応する圧縮データの前記第２のメモリ領域上での記憶範囲を示すデータを前記圧縮結果管理データに組み込む生成手段、
として機能させるためのプログラム。
【請求項４】
コンピュータを、
第１のメモリ領域に記憶された圧縮対象の元データのデータ単位ごとに、当該データ単位のデータをあらかじめ定められた順に可逆圧縮し、可逆圧縮により順に生成される圧縮データを第２のメモリ領域へと出力する可逆圧縮手段、
前記データ単位ごとに、前記可逆圧縮手段が当該データ単位のデータを前記あらかじめ定められた順に可逆圧縮するにつれて出力する圧縮データのデータ量を計数する計数手段、
前記元データの各データ単位の圧縮結果を示す圧縮結果管理データを生成して出力する生成手段であって、前記可逆圧縮手段が当該データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった場合には、当該データ単位の圧縮結果として前記第１のメモリ領域における当該データ単位の元データの記憶範囲を示すデータを前記圧縮結果管理データに組み込み、前記可逆圧縮手段が当該データ単位を圧縮し終わっても前記計数手段が計数した前記圧縮データのデータ量が前記データ単位のデータ量未満であった場合には、当該データ単位の圧縮結果として当該データ単位に対応する圧縮データの前記第２のメモリ領域上での記憶範囲を示すデータを前記圧縮結果管理データに組み込む生成手段、
として機能させるためのプログラムを記録した、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮装置、プログラム及びコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
一般に、データの可逆圧縮アルゴリズムは、データの偏りや法則性（すなわち冗長性）を見つけ出し、冗長性のある部分を除くことでデータ量の削減を図っている。このため、冗長性のないデータなどをそのアルゴリズムで処理すると、処理結果のデータが元のデータよりも大きいものになることがある。これでは「圧縮」にならないので、元データのうち可逆圧縮によりデータ量が削減できる部分はその可逆圧縮により加工したデータを出力し、可逆圧縮ではデータ量が削減できない部分については無加工のデータ（すなわち元のデータのまま）を出力するという制御が従来行われている。
【０００３】
このような制御に類似した制御を行う装置の一例として、特許文献１に開示されるものがある。この装置は、可逆圧縮器と非可逆圧縮器という２つの圧縮器を有すると共に、それら各圧縮器から出力された、あらかじめ定められた矩形ブロックの圧縮データをそれぞれ記憶する２つの格納部を有する。そして、圧縮方式選択部が、それら２つの格納部に格納された各圧縮方式の圧縮データのうちデータ量が小さいものを選択し、どちらの圧縮方式であるかを示す情報と共に出力する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−０１６５４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、可逆圧縮によりデータ量が削減できる部分は可逆圧縮結果のデータを採用し、データ量が削減できない部分については元のデータを採用するという処理を少ないハードウエア資源で実現することを目的とする。
【課題を解決するための手段】
【０００６】
請求項１に係る発明は、第１のメモリ領域に記憶された圧縮対象の元データのデータ単位ごとに、当該データ単位のデータをあらかじめ定められた順に可逆圧縮し、可逆圧縮により順に生成される圧縮データを第２のメモリ領域へと出力する可逆圧縮手段と、前記データ単位ごとに、前記可逆圧縮手段が当該データ単位のデータを前記あらかじめ定められた順に可逆圧縮するにつれて出力する圧縮データのデータ量を計数する計数手段と、前記元データの各データ単位の圧縮結果を示す圧縮結果管理データを生成して出力する生成手段であって、前記可逆圧縮手段が当該データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった場合には、当該データ単位の圧縮結果として前記第１のメモリ領域における当該データ単位の元データの記憶範囲を示すデータを前記圧縮結果管理データに組み込み、前記可逆圧縮手段が当該データ単位を圧縮し終わっても前記計数手段が計数した前記圧縮データのデータ量が前記データ単位のデータ量未満であった場合には、当該データ単位の圧縮結果として当該データ単位に対応する圧縮データの前記第２のメモリ領域上での記憶範囲を示すデータを前記圧縮結果管理データに組み込む生成手段と、を有するデータ圧縮装置である。
【０００７】
請求項２に係る発明は、前記可逆圧縮手段は、前記データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった時点で、当該データ単位の可逆圧縮を中止し、次のデータ単位の可逆圧縮を開始する、ことを特徴とする請求項１に記載のデータ圧縮装置である。
【０００８】
請求項３に係る発明は、コンピュータを、第１のメモリ領域に記憶された圧縮対象の元データのデータ単位ごとに、当該データ単位のデータをあらかじめ定められた順に可逆圧縮し、可逆圧縮により順に生成される圧縮データを第２のメモリ領域へと出力する可逆圧縮手段、前記データ単位ごとに、前記可逆圧縮手段が当該データ単位のデータを前記あらかじめ定められた順に可逆圧縮するにつれて出力する圧縮データのデータ量を計数する計数手段、前記元データの各データ単位の圧縮結果を示す圧縮結果管理データを生成して出力する生成手段であって、前記可逆圧縮手段が当該データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった場合には、当該データ単位の圧縮結果として前記第１のメモリ領域における当該データ単位の元データの記憶範囲を示すデータを前記圧縮結果管理データに組み込み、前記可逆圧縮手段が当該データ単位を圧縮し終わっても前記計数手段が計数した前記圧縮データのデータ量が前記データ単位のデータ量未満であった場合には、当該データ単位の圧縮結果として当該データ単位に対応する圧縮データの前記第２のメモリ領域上での記憶範囲を示すデータを前記圧縮結果管理データに組み込む生成手段、として機能させるためのプログラムである。
【０００９】
請求項４に係る発明は、コンピュータを、第１のメモリ領域に記憶された圧縮対象の元データのデータ単位ごとに、当該データ単位のデータをあらかじめ定められた順に可逆圧縮し、可逆圧縮により順に生成される圧縮データを第２のメモリ領域へと出力する可逆圧縮手段、前記データ単位ごとに、前記可逆圧縮手段が当該データ単位のデータを前記あらかじめ定められた順に可逆圧縮するにつれて出力する圧縮データのデータ量を計数する計数手段、前記元データの各データ単位の圧縮結果を示す圧縮結果管理データを生成して出力する生成手段であって、前記可逆圧縮手段が当該データ単位を可逆圧縮し終わる前に、前記計数手段が計数した前記圧縮データのデータ量が当該データ単位のデータ量以上となった場合には、当該データ単位の圧縮結果として前記第１のメモリ領域における当該データ単位の元データの記憶範囲を示すデータを前記圧縮結果管理データに組み込み、前記可逆圧縮手段が当該データ単位を圧縮し終わっても前記計数手段が計数した前記圧縮データのデータ量が前記データ単位のデータ量未満であった場合には、当該データ単位の圧縮結果として当該データ単位に対応する圧縮データの前記第２のメモリ領域上での記憶範囲を示すデータを前記圧縮結果管理データに組み込む生成手段、として機能させるためのプログラムを記録した、コンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００１０】
請求項１，３又は４に係る発明によれば、可逆圧縮によりデータ量が削減できる部分は可逆圧縮結果のデータを採用し、データ量が削減できない部分については元のデータを採用するという処理を、本発明を用いない場合よりも少ないハードウエア資源で実現することができる。
【００１１】
請求項２に係る発明によれば、個々のデータ単位をそれぞれ最後まで可逆圧縮してから次のデータ単位の可逆圧縮を開始する構成よりも、処理時間を短縮することができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態の装置構成の一例を示す図である。
【図２】管理テーブルのデータ内容の一例を示す図である。
【図３】図２に例示した管理テーブルの内容を説明するための図である。
【図４】実施形態のデータ圧縮装置の処理手順の一例を示す図である。
【図５】実施形態のデータ圧縮装置の動作の具体例を示すタイムチャートである。
【発明を実施するための形態】
【００１３】
図１を参照して、本発明に係るデータ圧縮装置１００の一例を説明する。図１に例示するデータ圧縮装置１００は、ビットマップ画像データを可逆（ロスレス）圧縮するための装置である。可逆圧縮とは、圧縮前の元データと、その元データの圧縮結果を伸張して得られるデータが完全に等しくなるデータ圧縮方式のことである。
【００１４】
１つの例では、データ圧縮装置１００は、デジタル複合機（コピー機、プリンタ、ファクシミリ等の機能を兼有する多機能装置）に内蔵されるコンピュータに接続される、画像データ圧縮用のハードウエアアクセレレータ回路として実装される。この回路の具体的な実装形態は特に限定されない。ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）等の固定的な回路構成の集積回路として実装されてもよいし、ＦＰＧＡ（Field Programmable Gate Array）や ＤＲＰ（Dynamically Reconfigurable Processor）のように内部の回路構成を再構成可能な回路上に構成される１つの回路構成（コンフィギュレーション）として実装されてもよい。デジタル複合機では、例えば、製本等を行う場合のように元の紙原稿や印刷データでのページ順とは異なるページ順で印刷を行う必要があったり、同じ文書の再印刷に対応したりするなどのために、スキャンや印刷データの処理により得たビットマップ画像を保存する必要がある場合がある。例えばこの保存の際に、ビットマップ画像をこのデータ圧縮装置１００を用いて可逆圧縮しておくことで、デジタル複合機が有する記憶装置の容量を抑える。この例では、データ圧縮装置１００は、デジタル複合機が有するコンピュータが実行する圧縮プログラムから圧縮対象のデータを指定した圧縮要求を受け、この要求に応じて圧縮処理を実行し、その圧縮結果（後述する管理テーブル３００）をそのプログラムに返す。
【００１５】
以下では、このようにデータ圧縮装置１００がデジタル複合機内のコンピュータに接続されるケースを例にとって説明する。
【００１６】
なお、データ圧縮装置１００がデジタル複合機のコンピュータに接続されるビットマップ画像データ圧縮用のハードウエアアクセレレータ回路として構成されるというのはあくまで一例に過ぎない。データ圧縮装置１００は、パーソナルコンピュータ等と言った他の種類のコンピュータに搭載されてもよいし、それらコンピュータで実行されるハードウエア回路ではなくソフトウエアとして構成されてもよい。また、圧縮対象のデータはビットマップ画像データに限られるものではなく、音声データや動画データ、マルチメディアデータなども含め、どのようなデータであってもよい。
【００１７】
図１に例示したデータ圧縮装置１００は、可逆圧縮器１０２、データ量計数部１０４及び圧縮管理部１１０を備える。
【００１８】
可逆圧縮器１０２は、圧縮対象の元データ２１２を可逆圧縮する。可逆圧縮器１０２が行う可逆圧縮の方式は特に限定されない。   
【００１９】
可逆圧縮器１０２が行う圧縮は、データをあらかじめ定められたデータ量のデータ単位ごとに区切られる。元データ２１２がビットマップ画像データの場合、矩形の画像の１ライン（走査線）がデータ単位の一例である。例えば解像度６００ｄｐｉ（ドット／パー／インチ）のＡ４サイズの縦長画像の場合１ラインの画素数は４９６１であり、この画像が１画素あたり８ビットで濃度を表現するグレースケール画像の場合、１ラインのデータ量は４９６１バイトである。もちろん、１ラインをデータ単位とするのはあくまで一例に過ぎない。この代わりに、画像を走査線に垂直な方向に等間隔に区分した「バンド」や画像を縦横に等間隔に区分した「タイル」等をデータ単位として用いてもよい。また、画像の縦横の幅と無関係な固定のデータ量（例えば４バイトや３２バイト）ごとに画像を先頭から区切ったものを、データ単位としてもよい。以下では、一例として、画像の１ラインをデータ単位とする。 
【００２０】
可逆圧縮器１０２は、元データ２１２のデータ単位ごとに、そのデータ単位内のデータをあらかじめ定められた順序で圧縮符号化していく。この「あらかじめ定められた順序」は、可逆圧縮器１０２が実行する圧縮符号化方式により規定される順序のことである。例えば、データ単位内の先頭のデータから末尾のデータに向かって順に圧縮符号化するという順序が、その一例である。以下では、可逆圧縮器１０２はデータ単位のデータを「先頭から順に」圧縮していく場合を例にとって説明する。ただし、以下で説明する本実施形態の方式は、それ以外の順序、例えばデータ単位の末尾から先頭に向かって順に圧縮符号化していく場合などにも、適用可能であり、同様の効果を奏する。
【００２１】
この例では、可逆圧縮器１０２は、データ単位の先頭から順に圧縮していき、そのデータ単位の末尾でいったん圧縮符号化を完結させ、次のデータ単位についてはまたその先頭から圧縮符号化を行う。このように可逆圧縮器１０２が行う圧縮符号化はデータ単位内で完結しており、隣り合う２つのデータ単位にまたがるデータ列を１つの圧縮符号に変換することはない。
【００２２】
可逆圧縮器１０２は、デジタル複合機のコンピュータが実行する圧縮プログラム１５０から、元データ２１２を特定する情報と、データ単位のデータ量の情報とを含む圧縮要求を受け取る。データ量の単位は、バイト単位でもビット単位でも、他の単位でもよい。元データ２１２を特定する情報は、当該コンピュータのメモリ（一次記憶）空間の一部である読み出しメモリ領域２１０上での、元データ２１２の存在範囲を示す情報である。例えば、元データ２１２を特定する情報としては、その読み出しメモリ領域２１０上での、元データ２１２の先頭アドレスとデータ量の組を用いることができる。もちろんこれは一例にすぎず、元データ２１２の存在範囲を特定できる情報であれば、どのような情報であってもよい。この情報により、可逆圧縮器１０２は、読み出しメモリ領域２１０内のどこからどこまでのデータを圧縮するのかを識別する。元データ２１２は、例えば、１ページのビットマップ画像である。
【００２３】
圧縮プログラム１５０から圧縮要求を受け取った可逆圧縮器１０２は、読み出しメモリ領域２１０上の元データ２１２を、例えば先頭から順に、１データ単位ずつ読み出して圧縮符号化していく。そして、可逆圧縮器１０２は、データ単位ごとに、コンピュータのメモリ空間内に設定された書き出しメモリ領域２２０内で、そのデータ単位の圧縮データの書き出しの先頭アドレスを決め、そのデータ単位を先頭から順に圧縮して得られる圧縮データを、その先頭アドレスから順に書き出していく。データ単位に対応する圧縮データの書き出しの先頭アドレスの決め方には特に限定はない。例えば、あるデータ単位の圧縮データの末尾のアドレスの次のアドレスをその次のデータ単位のための先頭アドレスに決めてもよいし、書き出しメモリ領域２２０内からランダムに先頭アドレスを選んでもよい。図１の例では、画像の２つのラインの圧縮データ２２２−１と２２２−２が、書き出しメモリ領域２２０内の離れたアドレスに書き込まれている。
【００２４】
元データ２１２内の先頭のデータ単位から順に処理していくのは、あくまで一例にすぎない。可逆圧縮器１０２が元データ２１２内の各データ単位をどのような順序で処理していくかは、可逆圧縮器１０２が実行する圧縮符号化方式により規定される。以下では、元データ２１２内の先頭のデータ単位から順に処理していく場合を例にとって説明するが、本実施形態の方式は、データ単位の処理順序には依存しないので、データ単位群を別の順序で処理していく場合にも適用可能である。
【００２５】
また、１つの例では、可逆圧縮器１０２は、１つのデータ単位の圧縮を行う際の所定のタイミング（例えば、圧縮開始時、圧縮終了時、又は圧縮開始から終了までの全期間）で、そのデータ単位の圧縮データの書き出し先の先頭アドレス（書き出しメモリ領域２２０内）の情報を、圧縮管理部１１０内のアドレス判定部１１４に出力する。また、可逆圧縮器１０２は、読み出しメモリ領域２１０内のそのデータ単位の先頭アドレスをアドレス判定部１１４に出力してもよい。可逆圧縮器１０２があるデータ単位についての圧縮を開始した時点で、そのデータ単位の先頭アドレスも、対応する圧縮データの書き出し先の先頭アドレスも、可逆圧縮器１０２にとっては既知の情報となっているので、可逆圧縮器１０２は、その既知の情報をアドレス判定部１１４へと出力すればよい。
【００２６】
データ量計数部１０４は、可逆圧縮器１０２が出力（すなわち書き出しメモリ領域２２０への書き出し）する圧縮データのデータ量を計数する。この計数は、データ単位ごとに行われる。すなわち、データ量計数部１０４が持つデータ量の計数（カウント）値は、データ単位ごとに、そのデータ単位の先頭で０にリセットされる。そして、可逆圧縮器１０２がそのデータ単位の先頭から順に圧縮して圧縮結果の符号を出力する都度、データ量計数部１０４は、その符号のデータ量を求め、求めたデータ量を計数値に加算する。したがって、データ量計数部１０４が持つ計数値は、データ単位の先頭から現在までに可逆圧縮器１０２が出力した圧縮符号のデータ量の累計値を表す。データ量計数部１０４は、この計数値を、圧縮管理部１１０の圧縮判定部１１２に供給する。
【００２７】
圧縮管理部１１０は、データ圧縮装置１００における圧縮処理の進行を管理すると共に、圧縮要求に対する応答として圧縮プログラム１５０に提供するための圧縮結果、すなわち管理テーブル３００を作成する。この機能を果たすため、圧縮管理部１１０は、圧縮判定部１１２、アドレス判定部１１４及び管理テーブル生成部１１６を有する。
【００２８】
圧縮判定部１１２は、データ単位ごとに、可逆圧縮器１０２がそのデータ単位のデータ圧縮に成功したか失敗したかを判定する。ここでいうデータ圧縮の成功とは、可逆圧縮結果のデータ量が元のデータのデータ量より低減されることであり、データ圧縮の失敗とは、可逆圧縮結果のデータ量が元のデータのデータ量以上となることである。すなわち、データ量の削減という「圧縮」の目的が達成されているかどうかを、データ単位ごとに判定するわけである。圧縮判定部１１２は、データ単位ごとに、データ量計数部１０４から供給される現時点での当該データ単位の圧縮データの累計データ量（計数値）を、当該データ単位のデータ量と比較することで、この判定を行う。データ単位（例えば画像データの１ライン）のデータ量は、前述の通り、圧縮プログラム１５０からの圧縮要求に、パラメータの１つとして含まれていたものである。可逆圧縮器１０２がデータ単位の先頭から順に圧縮符号化を進めていくにつれて、データ量計数部１０４が出力する計数値も順に増えていくが、この計数値がデータ単位のデータ量以上となったことを検知すると、圧縮判定部１１２は圧縮失敗（すなわち「圧縮」の目的が達成されなかった）と判定し、その旨を示すＮＧ信号を出力する。一方、可逆圧縮器１０２がデータ単位の最後の圧縮結果の符号を出力し終えたとき（すなわち、データ量計数部１０４がその最後の圧縮結果の符号のデータ量を計数値に加算し終えたとき）に、その計数値がデータ単位のデータ量未満であれば、可逆圧縮によりデータ量が削減されたことになる。この場合、圧縮判定部１１２は、圧縮成功を示すＯＫ信号を出力する。また、圧縮判定部１１２は、ＯＫ信号を出力する際、その時点でデータ量計数部１０４から供給されている計数値（この値は、データ単位に対応する圧縮データの総データ量を示す）を、管理テーブル生成部１１６に供給する。
【００２９】
なお、可逆圧縮器１０２がデータ単位の最後の圧縮結果の符号を出力し終えたタイミングは、データ単位の先頭からの経過時間を監視することで識別できる。すなわち、圧縮しているデータ単位のデータ量は既知なので、可逆圧縮器１０２は読み出しメモリ領域２１０から圧縮対象のデータ単位のデータを一定速度（例えば１クロックあたり１バイトなど）で読み出す場合、そのデータ量をその読み出し速度で割った値が、そのデータ単位の圧縮に要する時間（圧縮所要時間と呼ぶ）である。圧縮判定部１１２は、データ単位の圧縮開始からの経過時間（例えばクロック数単位）をカウントし、そのカウント値がその圧縮所要時間に達したタイミングを、そのデータ単位の圧縮の完了タイミング、すなわちデータ単位の最後の圧縮結果の符号が出力されたタイミングとして認識すればよい。なお、これは、可逆圧縮器１０２に対しデータ単位の最後のデータ部分（例えば１クロックあたり１バイトの入力速度の場合、データ単位の最後の１バイト）が入力されると即座に可逆圧縮器１０２からそのデータ単位の最後の圧縮符号が出力される場合の例である。可逆圧縮器１０２に対しデータ単位の最後のデータ部分が入力されてから、そのデータ単位に対応する最後の圧縮符号が出力されるまでに一定の時間がかかる場合は、圧縮開始からの経過時間が上述の圧縮所要時間にその一定の時間を足した値となった時点を、そのデータ単位の最後の圧縮結果の符号が出力されたタイミングとして認識すればよい。
【００３０】
圧縮判定部１１２が出力したＮＧ信号は、可逆圧縮器１０２、データ量計数部１０４、アドレス判定部１１４、及び管理テーブル生成部１１６に供給される。また、ＯＫ信号は、データ量計数部１０４、アドレス判定部１１４、及び管理テーブル生成部１１６に供給される。ＯＫ信号は、データ量計数部１０４、アドレス判定部１１４、及び管理テーブル生成部１１６に供給される。なお、それら各ユニットに明示的にＯＫ信号を供給する代わりに、各ユニットが１データ単位ごとにその先頭からの圧縮処理の経過時間を計数し、その経過時間の計数結果が１データ単位の圧縮に要する時間（固定値であり、既知である）に達してもＮＧ信号を受け取らなかった場合に、各ユニットが圧縮が成功した場合の処理を実行するようにしてもよい。
【００３１】
可逆圧縮器１０２は、ＮＧ信号を受け取ると、それまで実行していたデータ単位の圧縮を中止する。この場合、書き出しメモリ領域２２０内にあるそのデータ単位のそれまでの圧縮結果は廃棄され、可逆圧縮器１０２内に未圧縮の圧縮対象データがあればそれも廃棄される。そして、可逆圧縮器１０２は、次のデータ単位の圧縮処理を開始する。なお、データ単位の最後まで圧縮が終わっても圧縮判定部１１２からＮＧ信号が来ない場合は、そのデータ単位の圧縮が成功したと言うことである。この場合、可逆圧縮器１０２は、自動的に次のデータ単位の読み出し及び圧縮を開始する。したがって、可逆圧縮器１０２に対して圧縮判定部１１２から明示的にＯＫ信号を供給する必要はない。
【００３２】
データ量計数部１０４は、圧縮判定部１１２からＯＫ信号又はＮＧ信号を受け取ると、保持している計数値を０にリセットする。これにより、次のデータ単位の圧縮データのデータ量を０から再度カウントアップすることが可能になる。
【００３３】
アドレス判定部１１４は、１つの例では、可逆圧縮器１０２から、読み出しメモリ領域２１０内にある現在の圧縮対象であるデータ単位の先頭アドレス（入力先頭アドレス）、及び、書き出しメモリ領域２２０内のそのデータ単位に対応する圧縮データの書き出し先の先頭アドレス（出力先頭アドレス）を受け取る。そして、圧縮判定部１１２から供給される圧縮結果の判定信号がＯＫ信号の場合、出力先頭アドレス（圧縮データの先頭アドレス）を選んで管理テーブル生成部１１６に供給し、ＮＧ信号の場合、入力先頭アドレス（元のデータ単位の先頭アドレス）を選んで管理テーブル生成部１１６に供給する。
【００３４】
管理テーブル生成部１１６は、元データ２１２の圧縮結果を示す管理テーブル３００を生成する。
【００３５】
図２に管理テーブル３００のデータ構造の一例を示す。図示のように、管理テーブル３００には、元データ２１２の先頭から順に、データ単位ごとに、そのデータ単位の識別情報（例えば先頭から順に数えたデータ単位の番号）、出力データ種別フラグ、出力データ先頭アドレス、及び出力データ量が記録される。
【００３６】
「出力データ種別フラグ」は、データ圧縮装置１００が当該データ単位の出力データとして採用するのが、圧縮データと元データのうちのいずれであるかを示すフラグである。本実施形態では、可逆圧縮によりデータ量が削減される場合には圧縮データを出力し、データ量が削減されない場合には圧縮データの代わりに元データを出力することで、元データ２１２全体についての圧縮率が１以上とならない（すなわち圧縮結果のデータ量が元データ２１２のデータ量以上とならない）ことを保証する。このため、データ単位のデータ量よりも圧縮結果のデータ量が少ない場合には、可逆圧縮器１０２によるそのデータ単位の圧縮結果のデータを出力として採用し、そうでない場合には、読み出しメモリ領域２２０内にあるそのデータ単位自体を出力として採用するのである。
【００３７】
「出力データの先頭アドレス」は、データ圧縮装置１００が当該データ単位の出力データとして採用するデータの先頭アドレスである。データ単位に対応する出力データとして圧縮データが採用された場合は書き出しメモリ領域２２０内の当該データ単位に対応する圧縮データの先頭アドレスが、元データが採用された場合は読み出しメモリ領域２１０内の当該データ単位の先頭アドレスが、それぞれ「出力データの先頭アドレス」の値として記録される。
【００３８】
「出力データ量」は、データ圧縮装置１００が当該データ単位の出力データとして採用するデータのデータ量である。データ単位に対応する出力データとして圧縮データが採用された場合は、データ量計数部１０４が計数したデータ単位に対応する圧縮データの総データ量が「出力データ量」として記録される。データ単位に対応する出力データとして元データが採用された場合は、固定値であるデータ単位自体のデータ量（圧縮プログラム１５０からの圧縮要求に含まれていた値）が「出力データ量」として記録される。出力データ種別フラグが「元データ」の場合、出力データ量は常に同じ値（図示例では「0xf00」）となる。
【００３９】
このように、管理テーブル３００内の「出力データの先頭アドレス」と「出力データ量」の組により、データ単位の圧縮結果（圧縮データ又は元データ）がメモリ上のどの範囲記憶されているかが示される。なお、この範囲の情報は、「出力データの先頭アドレス」と「出力データ量」の組以外の表現形式で表現してもよい。
【００４０】
図２に示した管理テーブル３００（の一部）は、図３に示す状況を表している。図３の例では、画像データである元データ２１２の先頭アドレスは「0x4100」であり、１ラインのデータ量は「0xf00」バイトである。また、この例では、可逆圧縮のデータ単位は１ラインである。この例では、１番目のデータ単位（ライン番号１）については、圧縮データ２２２−１が出力として採用され、その先頭アドレスは書き出しメモリ領域２２０の「0x0」であり、圧縮データ量は「0xAAA」である。また、２番目のデータ単位（ライン番号２）元データ２１２内の当該ライン２自体が採用され、その先頭アドレスは読み出しメモリ領域２１０の「0x5000」であり、圧縮データ量は「0xf00」である。そして、３番目のデータ単位（ライン番号３）については、圧縮データ２２２−２が出力として採用され、その先頭アドレスは書き出しメモリ領域２２０の「0xC00」であり、圧縮データ量は「0xCC」である。
【００４１】
管理テーブル生成部１１６は、あるデータ単位について圧縮判定部１１２からＯＫ信号が入力された場合には、そのデータ単位の出力データ種別フラグを「圧縮データ」とすると共に、同じく圧縮判定部１１２から供給される圧縮データのデータ量の値を、出力データ量として記録する。また、アドレス判定部１１４から供給される圧縮データの先頭アドレスを、出力データの先頭アドレスとして記録する。
【００４２】
また、管理テーブル生成部１１６は、あるデータ単位について圧縮判定部１１２からＮＧ信号が入力された場合には、そのデータ単位の出力データ種別フラグを「元データ」とすると共に、固定値であるデータ単位のデータ量を出力データ量として記録する。また、アドレス判定部１１４から供給される当該データ単位の先頭アドレスを、出力データの先頭アドレスとして記録する。
【００４３】
管理テーブル生成部１１６は、元データ２１２の最後のデータ単位までの管理情報（フラグ、先頭アドレス及びデータ量の組）を管理テーブル３００に記録し終わると、完成した管理テーブル３００を圧縮要求に対する圧縮結果として圧縮プログラム１５０に返す。
【００４４】
圧縮プログラム１５０は、元データ２１２を圧縮する旨の要求をユーザ又は他のプログラム等から受けると、元データ２１２を特定する情報と、圧縮におけるデータ単位のデータ量とを含んだ圧縮要求をデータ圧縮装置１００に発する。ここで、データ単位をユーザが圧縮プログラム１５０に対して指定したり、あるいはデフォルトのデータ単位を圧縮プログラム１５０に設定しておけば、圧縮プログラム１５０は、その指定された又はデフォルトのデータ単位のデータ量を計算し、計算したデータ量を圧縮要求に含める。例えば、データ単位が元データ２１２である画像データの１ラインと指定又は設定された場合、圧縮プログラム１５０は、元データ２１２の画像データのサイズの情報から１ラインあたりの画素数と１画素あたりのデータ量を求め、１ラインあたりの画素数と１画素あたりのデータ量の乗算結果を、当該データ単位（１ライン）のデータ量として求める。データ単位が１バンドと指定された場合は、１バンドあたりのライン数を用いることで、データ単位のデータ量を求めればよい。
【００４５】
また圧縮プログラム１５０は、圧縮ファイル作成部１５２を有する。圧縮ファイル作成部１５２は、圧縮要求に対する応答としてデータ圧縮装置１００から返された管理テーブル３００を参照して、ユーザまたは他のプログラムからの圧縮指示に対する圧縮結果となる圧縮ファイルを作成する。圧縮ファイル作成部１５２は、先頭のデータ単位から順に、管理テーブル３００から１つずつデータ単位の情報を取り出す。そして、そのデータ単位の「出力データの先頭アドレス」が示すメモリ空間上のアドレスから、「出力データ量」が示すデータ量のデータを読み出し、読み出したデータを圧縮ファイルに書き込む。また、そのデータ単位の「出力データ種別フラグ」の値に応じて、当該データ単位のデータが圧縮データなのか元データ（非圧縮データ）なのかを示すフラグ情報を、圧縮ファイルにおける当該データ単位の管理情報に書き込む。また、圧縮ファイル内の当該データ単位の管理情報の中に、「出力データ量」の値を書き込んでもよい。圧縮ファイル作成部１５２は、ユーザや他のプログラムから指定された圧縮ファイルのフォーマットに従って、各データ単位の実体データ（圧縮データ又は元データ）や各データ単位の管理情報を圧縮ファイル内に書き込んでいけばよい。
【００４６】
図４に、この実施形態のデータ圧縮装置１００の処理手順の一例を示す。この手順では、データ圧縮装置１００は、圧縮プログラム１５０から圧縮要求を受けると、装置自体の初期化を行う（Ｓ１０）。初期化では、その圧縮要求に含まれる元データ２１２の先頭アドレス及びデータ量、データ単位のデータ量を、データ圧縮装置１００内部のレジスタ等の記憶部にセットする。データ圧縮装置１００内の可逆圧縮器１０２等の各ユニットは、この記憶部にセットされた値を必要に応じて参照する。あるいは、それら元データの先頭アドレス等の値を、データ圧縮装置１００内の当該値を使用する各ユニットに設定してもよい。
【００４７】
初期化が終了すると、可逆圧縮器１０２が、まず元データ２１２の先頭アドレス（すなわち、元データ２１２の最初のデータ単位の先頭アドレス）からデータを読み出し、圧縮処理を開始する（Ｓ１２）。これに応じ、データ量計数部１０４が、可逆圧縮器１０２から出力される圧縮データのデータ量の計数を開始する（Ｓ１４）。可逆圧縮器１０２によるデータ圧縮が進むにつれて、データ量計数部１０４の計数値が増大していく。例えば定期的に、あるいはデータ量計数部１０４から供給される計数値が大きくなるごとに、圧縮判定部１１２は、その計数値（当該データ単位についての現時点で圧縮データの総量）とデータ単位のデータ量を比較する（Ｓ１６）。
【００４８】
この比較の結果、計数値がデータ単位のデータ量未満であれば（Ｓ１６の判定結果Ｎｏ）、圧縮判定部１１２は、可逆圧縮器１０２が当該データ単位内の全データの圧縮を完了したかどうかを判定し（Ｓ１８）、圧縮が完了していなければ、Ｓ１６の判定を繰り返す。Ｓ１８で当該データ単位の圧縮が完了したと判定（判定結果Ｙｅｓ）すると、圧縮判定部１１２は、ＯＫ信号をデータ量計数部１０４、アドレス判定部１１４及び管理テーブル生成部１１６に対して出力すると共に、管理テーブル生成部１１６には更に、データ量計数部１０４から供給された計数値（データ単位の圧縮データの総量を示す）を出力する。データ量計数部１０４は、このＯＫ信号に応じて計数値を０にリセットする。また、管理テーブル生成部１１６は、管理テーブル３００における当該データ単位のデータ項目として、圧縮データを示すフラグ、アドレス判定部１１４から入力された圧縮データの先頭アドレス、及び圧縮判定部１１２から入力された圧縮データのデータ量をそれぞれ記録する（Ｓ２０）。
【００４９】
Ｓ１６の判定結果、計数値がデータ単位のデータ量以上であれば（Ｓ１６の判定結果Ｙｅｓ）、圧縮判定部１１２は、ＮＧ信号を可逆圧縮器１０２、データ量計数部１０４、アドレス判定部１１４及び管理テーブル生成部１１６に対して出力する。可逆圧縮器１０２は、このＮＧ信号に応じて、圧縮中のデータをフラッシュする（Ｓ２２）。すなわち、書き出しメモリ領域２２０内の、途中まで書き込んだ当該データ単位の圧縮データの領域を開放し、可逆圧縮器１０２内にある当該データ単位のデータや圧縮データを排出する。また、データ量計数部１０４は、このＮＧ信号に応じて計数値を０にリセットする。そして、管理テーブル生成部１１６は、管理テーブル３００における当該データ単位のデータ項目として、元データを示すフラグ、アドレス判定部１１４から入力された当該データ単位の先頭アドレス、及び固定値である当該データ単位のデータ量をそれぞれ記録する（Ｓ２４）。
【００５０】
Ｓ２０及びＳ２４の後、元データの最後のデータ単位まで処理が終わったかどうかを判定し（Ｓ２６）、終わっていなければ、Ｓ１２に戻って可逆圧縮器１０２が元データ２１２から次のデータ単位のデータの圧縮を開始する。以上の処理を、元データ２１２の最後のデータ単位の処理が完了するまで繰り返す（Ｓ２６）。
【００５１】
元データ２１２の最後まで処理が完了すると、その元データ２１２の圧縮結果を示す管理テーブル３００が完成し、書き出しメモリ領域２２０には圧縮結果に用いられる各データ単位の圧縮データ２２２−１，２２２−２，・・・が記憶された状態となる。また、読み出しメモリ領域２１０には元データ２１２がまだ保持されている。完成した管理テーブル３００を受け取った圧縮プログラム１５０の圧縮ファイル作成部１５２は、管理テーブル３００に従い、読み出しメモリ領域２１０及び書き出しメモリ領域２２０から各データ単位のデータを読み出して組み立てることで、元データ２１２に対応する圧縮ファイルを作成する。この圧縮ファイルには、各データ単位のデータが圧縮データなのか元データなのかを示す管理情報も含める。圧縮ファイルを伸張するための回路やプログラムは、その管理情報を参照し、圧縮ファイル中の圧縮データの部分は可逆圧縮に対応する伸張アルゴリズムで伸張して出力し、元データの部分はそのまま出力すればよい。
【００５２】
本実施形態の圧縮処理方式では、可逆圧縮器１０２が出力する各データ単位の圧縮データは、データ圧縮装置１００内に格納されることなく、すぐにデータ圧縮装置１００の外部の書き出しメモリ領域２２０に書き込まれる。また、データ量計数部１０４が圧縮データのデータ量を計数し、圧縮判定部１１２がその計数値を元データのデータ単位のデータ量と比較することで、圧縮データのデータ量が元データのデータ量以上となったかどうかを判定する。そして、データ圧縮装置１００は、圧縮結果として、各データ単位が元データなのか圧縮データなのかを示す管理テーブル３００を出力し、データ圧縮装置１００を利用する圧縮プログラム１５０が、その管理テーブル３００を用い、そのプログラム１５０が実行されているコンピュータのメモリ上にある元データ２１２及び各圧縮データ２２２−１，２２２−２，・・・から圧縮ファイルを作成する。このような機構を採用したので、データ圧縮装置１００の内部に、データ単位の元データや圧縮データを格納しておく記憶領域を設ける必要がない。すなわち、特許文献１に開示された装置のように比較対象のデータ（特許文献１の場合、可逆圧縮の圧縮データと非可逆圧縮の圧縮データ）を装置内部に格納する構成の場合、その格納のための記憶領域を装置内に設ける必要があるが、本実施形態の場合はその必要はない。このように、本実施形態では、データ圧縮装置１００が接続されるコンピュータのメモリを利用することで、データ圧縮装置１００の回路規模（記憶のための回路量）を低減している。
【００５３】
図５に、本実施形態の装置による圧縮処理のタイムチャートの一例を示す。図５には、上から順に、可逆圧縮器１０２に対する元データの入力、可逆圧縮器１０２での圧縮処理及び圧縮データの出力、圧縮判定部１１２での圧縮率１超え（すなわち圧縮データのデータ量がデータ単位のデータ量を超過）の検知、及び管理テーブル生成部１１６による管理テーブル３００の更新（データ単位についての情報の書き込み）、のタイミングを示している。図示例は、Ｎ単位目（Ｎは１以上の整数）〜（Ｎ＋２）単位目のデータ単位に対する処理の流れを例示している。
【００５４】
図示例では、Ｎ単位目は可逆圧縮により圧縮率が１未満（すなわち圧縮によりデータ量が低減）しており、圧縮は成功している。この例では元データ２１２は、Ａ４縦長サイズ、解像度６００ｄｐｉ、１画素あたり１バイトの画像であり、データ圧縮装置１００の動作クロックの１サイクル（１クロック）あたり１バイトのデータが入力される。また、データ単位は画像の１ライン（約５０００画素＝データ量  約５０００バイト）である。Ｎ単位目のデータ単位は、その最後までデータ圧縮装置１００に入力され圧縮されるので、圧縮処理に約５０００サイクルの時間がかかっている。Ｎ単位目のデータ単位の圧縮が完了した後、そのデータ単位についての管理情報（フラグは「元データ」）が管理テーブル３００に追加される。この管理テーブル３００へのデータ追加の後、（Ｎ＋１）単位目のデータ単位の圧縮が開始される。
【００５５】
（Ｎ＋１）単位目のデータ単位は、全データを圧縮する前に、データ量計数部１０４が計数する圧縮データのデータ量がデータ単位のデータ量以上（したがってデータ単位全体で見ても圧縮率は１以上）となるため、その時点でそのデータ単位の圧縮処理は中止される。したがって、（Ｎ＋１）番目のデータ単位を圧縮処理している時間は、１ライン分の所要時間である約５０００サイクルよりも短い。圧縮処理の中止の後、（Ｎ＋１）番目のデータ単位についての管理情報（フラグは「圧縮データ」）が管理テーブル３００に書き込まれ、次のデータ単位、すなわち（Ｎ＋２）番目の圧縮が開始される。
【００５６】
（Ｎ＋２）単位目のデータ単位も、途中で圧縮データのデータ量が元のデータ単位のデータ量以上となり、その時点で圧縮処理が中止され、次の（Ｎ＋３）番目のデータ単位の圧縮が開始される。
【００５７】
このように、本実施形態のデータ圧縮装置１００の処理では、圧縮率が１以上（すなわち可逆圧縮によりデータ量が削減されない）のデータ単位については、そのデータ単位の全データを圧縮処理する前に圧縮処理を中止し、次のデータ単位の圧縮処理に移行する。このため、圧縮率が１以上のデータ単位を圧縮処理している時間は、圧縮率が１未満のデータ単位についての圧縮処理の所要時間よりも短い。
【００５８】
以上に説明した例では、デジタル複合機におけるビットマップ画像の圧縮に適用されるデータ圧縮装置を代表例として説明したが、本実施形態のデータ圧縮装置は、デジタル複合機以外の装置に搭載されてもよいし、ビットマップ画像以外のデータ、例えば動画データ、音声データ、マルチメディアデータ、文書データなど、の圧縮に使用してもよい。
【００５９】
また、以上の例では、データ単位の圧縮データのデータ量が元のデータ単位のデータ量と等しい場合に圧縮結果として元のデータ単位を採用したが、圧縮データを圧縮結果として採用してもよい。
【００６０】
また、以上の例では、データ圧縮装置１００がハードウエア回路として構成される場合を例にとって説明したが、これは一例に過ぎない。データ圧縮装置１００は、ソフトウエアとして構成されてもよい。データ圧縮装置１００がソフトウエアとして構成される場合でも、データ圧縮装置１００の内部処理の中ではデータ量の比較等のためにデータ単位の元データや圧縮データを格納することはしない。したがって、データ圧縮装置１００が処理に用いるメモリ量は、データ量の比較等のためにデータ単位の元データや圧縮データを格納するタイプの装置よりも少なくて済む。
【００６１】
データ圧縮装置１００をソフトウエアとして実現する場合、当該装置１００が備える各機能モジュール１０２〜１１６の機能を記述したプログラムをコンピュータに実行させればよい。ここで、コンピュータは、例えば、ハードウエアとして、ＣＰＵ等のマイクロプロセッサ、ランダムアクセスメモリ（ＲＡＭ）およびリードオンリメモリ（ＲＯＭ）等のメモリ（一次記憶）、ＨＤＤ（ハードディスクドライブ）等の二次記憶を制御する二次記憶コントローラ、各種Ｉ／Ｏ（入出力）インタフェース、ローカルエリアネットワークなどのネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばＩ／Ｏインタフェース経由で、ＣＤやＤＶＤ、ブルーレイディスクなどの可搬型ディスク記録媒体に対する読み取り及び／又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び／又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがＣＤやＤＶＤ等の記録媒体を経由して、又はネットワーク等の通信手段経由で、ハードディスクドライブ等の二次記憶装置に保存され、コンピュータにインストールされる。二次記憶装置に記憶されたプログラムがＲＡＭに読み出されＣＰＵ等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。
【符号の説明】
【００６２】
１００  データ圧縮装置、１０２  可逆圧縮器、１０４  データ量計数部、１１０  圧縮管理部、１１２  圧縮判定部、１１４  アドレス判定部、１１６  管理テーブル生成部、１５０  圧縮プログラム、１５２  圧縮ファイル作成部、２１０  読み出しメモリ領域、２１２  元データ、２２０  書き出しメモリ領域、２２２−１，２２２−２  圧縮データ、３００  管理テーブル。
【図２】
2015088844.tif 000003
【図４】
2015088844.tif 000004
【図１】
2015088844.tif 000005
【図３】
2015088844.tif 000006
【図５】
2015088844.tif 000007