(57)【特許請求の範囲】
【請求項１】
画像データを圧縮符号化する画像処理装置であって、
圧縮後の画像データを記憶するためのメモリと、
複数画素で構成される画素ブロックを順次入力する入力手段と、
入力した画素ブロックを圧縮符号化し、圧縮データを生成する圧縮手段と、
該圧縮手段で得られた圧縮データに、画素ブロックのヘッダ情報を付加してパケットデータを生成する生成手段と、
生成されたパケットデータを一時的に格納するためのバッファ手段と、
前記生成手段で生成された注目画素ブロックのパケットデータの圧縮データと、前記バッファ手段に格納された従前の画素ブロックのパケットデータの圧縮データとが一致するか、不一致であるか判定する判定手段と、
該判定手段の判定結果が不一致を示す場合、注目画素ブロックのパケットデータで前記バッファ手段を更新する更新手段と、
前記判定手段の判定結果が一致を示す場合、注目画素ブロックのパケットデータから圧縮データを除外し、一致することを示す情報を格納したヘッダを前記パケットデータとして前記メモリに転送し、
前記判定手段の判定結果が不一致を示す場合、不一致であることを示す情報を格納したヘッダと注目画素ブロックの圧縮データで構成される前記パケットデータを前記メモリに転送する転送手段とを備え、
前記判定手段は、注目画素ブロックのパケットデータのサイズが、予め設定された閾値以上の場合には、前記判定手段の判定は行なわず、前記転送手段は前記注目画素ブロックに対して生成されたパケットデータを前記メモリに転送することを特徴とする画像処理装置。
【請求項２】
前記メモリには、圧縮データを格納するための画像データ格納領域と、各画素ブロックの格納アドレスをパケット単位に記憶するパケットテーブル領域とを有し、
更に、
前記転送手段で転送されたパケットデータに前記不一致を示す情報が格納されている場合、当該パケットデータに含まれる圧縮データを前記画像データ格納領域に追加格納すると共に、当該画像データ格納領域における前記圧縮データの格納アドレスを前記パケットテーブルに追加格納し、
前記転送手段で転送されたパケットデータに前記一致を示す情報が格納されている場合、前記画像データ格納領域への圧縮データの格納はせず、前記パケットテーブルに直前に追加格納されたアドレスと同じアドレスを、前記パケットテーブルに追加格納する手段を備えることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記画像データ格納領域と前記パケットテーブルを１つのファイルとして格納することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
圧縮符号化後の画像データを格納するためのメモリと、一時的に格納するためのバッファメモリとを有する画像処理装置の制御方法であって、
複数画素で構成される画素ブロックを順次入力する入力工程と、
入力した画素ブロックを圧縮符号化し、圧縮データを生成する圧縮工程と、
該圧縮工程で得られた圧縮データに、画素ブロックのヘッダ情報を付加してパケットデータを生成する生成工程と、
該生成工程で生成された注目画素ブロックのパケットデータの圧縮データと、前記バッファ手段に格納された従前の画素ブロックのパケットデータの圧縮データとが一致するか、不一致であるか判定する判定工程と、
該判定工程の判定結果が不一致を示す場合、注目画素ブロックのパケットデータで前記バッファメモリを更新する更新工程と、
前記判定工程の判定結果が一致を示す場合、注目画素ブロックのパケットデータから圧縮データを除外し、一致することを示す情報を格納したヘッダを前記パケットデータとして前記メモリに転送し、
前記判定工程の判定結果が不一致を示す場合、不一致であることを示す情報を格納したヘッダと注目画素ブロックの圧縮データで構成される前記パケットデータを前記メモリに転送する転送工程とを備え、
前記判定工程は、注目画素ブロックのパケットデータのサイズが、予め設定された閾値以上の場合には、前記判定手段の判定は行なわず、前記転送工程は前記注目画素ブロックに対して生成されたパケットデータを前記メモリに転送することを特徴とする画像処理装置の制御方法。
【請求項５】
圧縮符号化後の画像データを格納するためのメモリと、一時的に格納するためのバッファメモリを有するコンピュータが読み込み実行することで、画像データを圧縮する画像処理装置として機能するコンピュータプログラムを格納したコンピュータ可読記憶媒体であって、
複数画素で構成される画素ブロックを順次入力する入力手段と、
入力した画素ブロックを圧縮符号化し、圧縮データを生成する圧縮手段と、
該圧縮手段で得られた圧縮データに、画素ブロックのヘッダ情報を付加してパケットデータを生成する生成手段と、
該生成手段で生成された注目画素ブロックのパケットデータの圧縮データと、前記バッファ手段に格納された従前の画素ブロックのパケットデータの圧縮データとが一致するか、不一致であるか判定する判定手段と、
該判定手段の判定結果が不一致を示す場合、注目画素ブロックのパケットデータで前記バッファメモリを更新する更新手段と、
前記判定手段の判定結果が一致を示す場合、注目画素ブロックのパケットデータから圧縮データを除外し、一致することを示す情報を格納したヘッダを前記パケットデータとして前記メモリに転送し、
前記判定手段の判定結果が不一致を示す場合、不一致であることを示す情報を格納したヘッダと注目画素ブロックの圧縮データで構成される前記パケットデータを前記メモリに転送する転送手段としてコンピュータに機能させ、
前記判定手段は、注目画素ブロックのパケットデータのサイズが、予め設定された閾値以上の場合には、前記判定手段の判定は行なわず、前記転送手段は前記注目画素ブロックに対して生成されたパケットデータを前記メモリに転送する
ことを特徴とするコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像データを圧縮格納する画像処理装置及び方法及び記憶媒体に関するものである。
【０００２】
【従来の技術】
従来、パケット単位で画像データを分割し、それをメモリに格納して管理する場合は、パケットにはヘッダをつけ、そこにパケットのレングスの情報を書き込んでおき、パケットデータを順番にならべる。これにより、その順番で読み書きをする限りは、ヘッダ情報により、正しくヘッダを読み書きすることができる。また、ランダムにパケットへアクセスをする場合には、それぞれのパケットが格納されているアドレスをまとめたパケットテーブルを使用する場合もある。
【０００３】
【発明が解決しようとする課題】
一般的にプリンタで印刷される画像データにおいては、文字のない部分は白地でデータがなく、そのような白地の部分は１ページで大きな割合をしめる場合が多い。１ページの画像データをパケットに分割して管理する場合、パケット内のすべての画素が白地だけであるパケットが多く存在することになり、まったく同じデータを含んだパケットの数が多くなり、メモリを使用する割合も多くなる。
【０００４】
本発明はかかる問題点に鑑みなされたものであり、画像データを効率良く圧縮し記憶管理することを可能ならしめる画像処理装置及び方法及び記憶媒体を提供しようとするものである。
【０００５】
【課題を解決するための手段】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
画像データを圧縮符号化する画像処理装置であって、
圧縮後の画像データを記憶するためのメモリと、
複数画素で構成される画素ブロックを順次入力する入力手段と、
入力した画素ブロックを圧縮符号化し、圧縮データを生成する圧縮手段と、
該圧縮手段で得られた圧縮データに、画素ブロックのヘッダ情報を付加してパケットデータを生成する生成手段と、
生成されたパケットデータを一時的に格納するためのバッファ手段と、
前記生成手段で生成された注目画素ブロックのパケットデータの圧縮データと、前記バッファ手段に格納された従前の画素ブロックのパケットデータの圧縮データとが一致するか、不一致であるか判定する判定手段と、
該判定手段の判定結果が不一致を示す場合、注目画素ブロックのパケットデータで前記バッファ手段を更新する更新手段と、
前記判定手段の判定結果が一致を示す場合、注目画素ブロックのパケットデータから圧縮データを除外し、一致することを示す情報を格納したヘッダを前記パケットデータとして前記メモリに転送し、
前記判定手段の判定結果が不一致を示す場合、不一致であることを示す情報を格納したヘッダと注目画素ブロックの圧縮データで構成される前記パケットデータを前記メモリに転送する転送手段とを備え、
前記判定手段は、注目画素ブロックのパケットデータのサイズが、予め設定された閾値以上の場合には、前記判定手段の判定は行なわず、前記転送手段は前記注目画素ブロックに対して生成されたパケットデータを前記メモリに転送することを特徴とする。
【０００６】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【０００７】
［第１の実施形態］
図１は第１の実施形態におけるパケットデータとパケットテーブルの関係を示している。
【０００８】
図中、１０は各パケットのメモリ上での開始アドレス１０１を示すパケットテーブル、１０２はリピートフラグであり、ひとつ前のパケットとデータが同じ場合にフラグがＯＮになり、異なる場合にはＯＦＦに設定される。また、１１はメモリに格納されているパケットデータ領域であり、図示の如く模式的に示した。
【０００９】
図２はパケットのフォーマットであり、各パケットは本図に示すような形式でパッキングされる。パケットは３２×３２画素の１タイル分の画像データと、その画像データに対する情報をあらわすヘッダによって構成されている。このヘッダには、パケットのシリアル番号を示すパケットＩＤ、画像データが圧縮されているかされていないかを示す圧縮フラグ、また、画像データのデータ容量を示すデータレングスとを持っている。なお、図示では、パケットＩＤとして１バイトを確保しているので、パケット数は最大２５６個となる。より大きなサイズの画像を扱うために、このパケットＩＤにそれより多くのビット数又はバイトを割り当てても構わない。
【００１０】
図３は３２×３２画素のタイルの単位に分割された１ページの画像データを示している。１ページの画像は、図示に示すようにタイル単位に分割されている。このタイルは３２×３２画素の集まりであり、この１タイルの画像データにヘッダを付加し、パケットとしている。タイルの単位は３２×３２画素でなくても良く、例えば６４×６４画素でも良いし、さらには正方形でなく、矩形などでも良い。画像データを圧縮する際は、１ページ分のデータをまとめて圧縮するのではなく、パケット毎に、そのパケット内の画像データについて独立して圧縮する。
【００１１】
今、メモリ上に１ページ分の画像データがあり、これをソフトウェアにより、３２×３２画素ずつ圧縮し、パッキングをして、別のメモリ領域へパッキングされた画像データを作成する場合を考える。パケットテーブルはさらに別のメモリ領域に作成する。
【００１２】
図４はパッキングを行なう際のフローチャートを示す。
【００１３】
まず、ステップＳ１で、対象となる画像データから、１つのタイルデータ（３２×３２画素）を取り出し、圧縮を行なう。この圧縮方法はＪＰＥＧであっても良いし、別の圧縮方法であっても良い。圧縮されたデータにヘッダを付加し（このヘッダにはデータ容量もセットする）、パッキングを行なう。
【００１４】
次いで、ステップＳ２に進み、ひとつ前のパケットデータの圧縮データを等しいか否かを判断する。最初のタイルデータの場合、すなわち、Packet ID＝１となるタイルデータについては、そのひとつ前のデータは存在しないので、ステップＳ２では否と判断し、ステップＳ３に進む。
【００１５】
ステップＳ３では、生成したパケットデータをメモリに書き込む処理を行う。そして、ステップＳ４において、パケットテーブルの該当するPacket IDのエントリに、パケットを書き込んだ領域の先頭のアドレスをセットする。このとき、リピートフラグはオフにする。
【００１６】
そして、ステップＳ６に進み、１ページの最後まで処理したかを判断し、否の場合にはステップＳ１に戻る。
【００１７】
こうして、１つ１つのタイルデータについてパッキングし、格納していくとき、ひとつ前の圧縮データと等しくなる場合がある。例えば、着目しているタイルがちょうど行間等の空白部にある場合等である。このとき、ステップＳ２での判断は、ＹＥＳとなるので、処理はステップＳ５に分岐することになる。
【００１８】
ステップＳ５に処理が進むと、注目タイルデータに対して生成したパケットデータは、メモリへ書き込まず、パケットテーブルのエントリのアドレスには比較したパケットの先頭アドレスをセット、またリピートフラグもセット（オン）する。
【００１９】
以上の処理を繰り返し行っていくと、少なくとも同じ圧縮データが２つ以上続く場合、同じと判定された２つ目以降のタイルデータのパケットデータについてはメモリへの書き込みは行われず、パケットテーブルのエントリのアドレスには、その前に同じと判断されたパケットデータのアドレスが格納され、そのリピートフラグがオンになる。
【００２０】
因に、図１では、４つ目のタイルデータ（Packet ID=4）の圧縮データが、その前（３つ目）のタイルデータの圧縮データが同じであった場合を示している（パケットテーブルに格納されたアドレスが同一位置を指し示している）。
【００２１】
以上説明したように本実施形態によれば、１つのタイルに対してパケットテーブルに１レコード分のデータ量が必要であるものの、同じ圧縮データが連続する場合には、後続するタイルのためのパケットデータは必要がなくなる。例えば、文章等の場合には、行間という空白部が存在するので、その効果は非常に大きい。
【００２２】
上記処理を行う装置としては、図５に示す構成が考えられる。
【００２３】
図中、１は装置全体の制御を司るＣＰＵ、２はブートプログラムやＢＩＯＳ等の記憶しているＲＯＭである。３はＣＰＵ１のワークエリアとして使用されるＲＡＭであり、ここにＯＳや上記の処理プログラムもロードされることになる。４はハードディスク装置であって、ＯＳや上記処理プログラムファイルの他、最終的に出来上ったデータファイル（パケットテーブルのファイル、パケットデータ）が格納される。５はネットワーク（例えば、イントラネット、インターネット）に接続する通信インターフェース、６はキーボード、７はマウスである。８は表示の制御を司る表示制御部であり、内部には表示にかかるコントローラやビデオメモリが内蔵されている。９は表示制御部８からのビデオ信号（ビデオメモリに格納されている画像）に基づいて表示する表示装置、１０はイメージスキャナである。
【００２４】
かかる構成において、装置に電源が投入されると、ハードディスク装置４よりＯＳがＲＡＭ３にロードされ、その後、上記の処理を行うアプリケーションがＲＡＭ３にロードされる。ユーザーは、このアプリケーション上で画像の入力の指示を与えると、通信インターフェース５或いはイメージスキャナ１０から画像の入力を行い、図４に示す処理を実行し、ハードディスク装置４上にファイルとして格納する。
【００２５】
なお、図示に示す如く、パケットテーブルとパケットデータそれぞれのファイルは別個に格納しても良いが、これだとファイルの管理が面倒になり、それぞれが異なる記憶装置に格納されていまうことも有り得る。そこで、これらを１つのファイルにしても良い。この場合、そのファイルの構造は、２つの部分に分けられ、先頭部分にパケットテーブル部、後半にはパケットデータ部とすれば良いであろう。ただし、パケットテーブル部には、パケットデータ部が、そのファイルの何バイト目から格納されているかを示すバイト数を格納する領域を設ける。但し、パケットテーブル部に、パケットテーブルのサイズに相当するデータ（例えばＮ×Ｍタイルの画像）を格納し、パケットデータ部の先頭アドレスが導きだされば無くても構わない。このように１つのファイルとして扱うことで、それらのデータが常に一体となっているので管理を簡単にすることが可能になる。
【００２６】
＜第２の実施形態＞
次に第２の実施形態を説明する。図６は第２の実施形態におけるシステムのブロック図である。
【００２７】
図中、５０１はＣＰＵ、５０２はメモリコントローラ、５０３はメモリ（ＲＡＭ等）、５０６は入力されてくる画像データを圧縮してパケットに変換するパケット生成装置、５０８は画像データが入力されてくる入力ポートであって、この先には、イメージスキャナ等の画像入力装置、或いは画像データを格納した記憶装置等が接続される。５０７はパケットデータを比較のために格納しておくバッファ、５０４はパケット生成装置から入力されるパケットをメモリに転送するＤＭＡＣ、５０５はＣＰＵ５０１、メモリコントローラ５０２、ＤＭＡＣ５０４を接続するシステムバスである。
【００２８】
基本的なデータの流れを説明すると、次の通りである。
【００２９】
画像入力ポート５０８から３２×３２の単位で画像が入力され、パケット生成装置５０６は画像を圧縮し、ヘッダを付加し、パケットのフォーマットにし、ＤＭＡＣ５０４に送る。パケットを受け取ったＤＭＡＣ５０４はメモリ５０３にパケットをライトし、同時にパケットテーブルをＲＡＭ５０３上に作成（最初のパケットの書き込み時で、２つめ以降は追加となる）する。
【００３０】
図７はパケット生成装置５０６のブロック図である。６０１は画像入力ポート５０８から入力された画像データを３２×３２のタイル単位で圧縮を行なう圧縮装置、６０３はパケットのヘッダーを作成するヘッダ作成装置、６０２はヘッダと圧縮された画像データをマージし、パケットを作成するパケットマージ装置、６０４はパケットをバッファに格納したり、バッファのパケットデータとパケットマージ装置６０３から送られてくるパケットを比較したりするバッファコントローラである。
まず、画像入力ポート５０８から画像データが３２×３２画素のタイルで送られてくる。圧縮装置６０１はその画像の圧縮を行ない、圧縮データをパケットマージ装置６０２に送り、また、圧縮データのデータ容量をヘッダー作成装置６０３に通知する。ヘッダー作成装置６０３はパケットＩＤをシリアルにナンバリングし、イメージデータビット長にデータ長を格納する。パケットマージ装置６０２は圧縮装置６０１からの画像データと、ヘッダー作成装置６０３からのヘッダーデータをマージしてパケットを作成する。パケットはバッファコントローラ６０４に送られる。バッファコントローラ内には、現在バッファにパケットデータが入っているかどうかを示すバッファフラグがある。バッファフラグがオンであれば、それ以前のパケットがバッファ５０７に存在していることを示し、かつそのパケットがある容量以下であることを示す。ここではバッファ５０７の容量は２５６Ｂｙｔｅであるとし、それ以上の容量のパケットはバッファ５０７には格納されず、バッファフラグはオフにセットされる。ここでバッファ５０７の容量とバッファフラグをオンにするしきい値は圧縮前のパケットの画像データよりも小さい値にしておけばよい。このように、ある程度の容量以上のパケットはバッファに格納せず、比較対象から外すという理由は、同じデータのパケットが続くという場合は、バックグラウンドなど、白地のようなデータめ場合が多いと考えられる。このようなデータの場合は圧縮率が非常によいことが予想される。すなわち、容量の大きいパケットは比較しても一致する可能性が低いと考えることができる。本発明ではこの考え方を用いて、容量の大きなパケットはデータの比較を行なわないことにしている。
【００３１】
バッファコントローラ６０４はパケットマージ装置６０２からパケットデータを受け取ると、そのパケットの容量が２５６Ｂｙｔｅ以下で、バッファフラグがオンの場合、パケットマージ装置６０２からのパケットデータの圧縮データと、バッファ５０７に格納されているパケットデータの圧縮データとを先頭から比較していく、パケット容量分すべてのデータが一致した場合には、ＤＭＡＣ５０４に対して、パケットのヘッダのリピートフラグをオンにセットして、さらにパケットから画像データを取り除き、ヘッダーのみを送る。また、比較の途中でデータが一致しなかった時には、そこから新たなパケットのデータをバッファ５０７に格納していく。パケットすべてを格納し終えると、バッファコントローラ６０４はバッファ５０７の先頭からパケットを読み出し、ＤＭＡＣ５０４にそのパケットを送り出す。バッファコントローラ６０４はパケットマージ装置６０２からパケットデータを受け取り、そのパケットの容量が２５６Ｂｙｔｅ以上であった場合には、バッファフラグをオフにして、バッファ５０７にはパケットを格納しないで、直接ＤＭＡＣ５０４にパケットを送信する。ＤＭＡＣ５０４は受け取ったパケットをメモリに書き込む作業を行なう。ＤＭＡＣ５０４にはパケットデータを格納するアドレスを示すレジスタであるパケットアドレスレジスタと、パケットテーブルを格納するアドレスを示すレジスタであるパケットテーブルアドレスレジスタが存在する。このパケットテーブルはメモリ上に格納する必要はなく、レジスタで構成されていても良い。受け取ったパケットのリピートフラグがオフの場合、パケットアドレスレジスタで示されたアドレスへパケットデータを書き込む。また、パケットテーブルアドレスレジスタで示ざれるアドレスへ、パケットアドレスレジスタで示されたアドレスを書き込む。そして、パケットアドレスレジスタはパケット容量分だけ加算し、パケットテーブルアドレスレジスタはパケットテーブルの１エントリ分である４Ｂｙｔｅだけ加算する。それが終了すると次のパケットを受け取る。
【００３２】
次に受け取ったパケットのリピートフラグがオンの場合は、パケットデータはメモリには書き込まず、パケットテーブルアドレスレジスタで示されるアドレスへ、パケットテーブルの一つ前のエントリをコピーし、そのエントリのリピートフラグをオンにする。パケットアドレスレジスタは変更せず、パケットテーブルアドレスレジスタはパケットテーブルの１エントリ分である４Ｂｙｔｅだけ加算する。それが終了すると次のパケットを受け取る。
【００３３】
なお、上記第２の実施形態でも、パケットテーブルとパケットデータとを１つのファイルとして格納しても良いのは勿論である。
【００３４】
また、本発明は、複数の機器から構成されるシステムに適用しても、一つの機器からなる装置に適用してもよい。
【００３５】
また、本発明の目的は、前述した第１、第２の実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００３６】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００３７】
以上説明したように、本実施形態によれば、同じデータのパケットが連続した場合には、パケットデータをメモリに格納する必要がなく、メモリ使用量が削減される。同じデータのパケットが連続することは、バックグラウンドが白地などの場合のページデータではかなりの大きい確率で起こることで、現実的に大きなメモリ使用量削減効果が期待できる。
【００３８】
また、本発明の第２の実施形態によれば、容量の大きなパケットはデータ内容の比較は行なわず、容量の小さいパケットのみを比較の対象としている。これにより、比較のための時間が節約でき、かつ比較のためにパケット格納しておくバッファの容量をちいさくすることができる。さらに、パケットデータが一致した場合には、ＤＭＡＣに対してデータの転送は行なわず、ヘッダのみの転送を行なう。これにより、データ転送量を減らすことができ、実質的にデータ転送速度が向上する。
【００３９】
【発明の効果】
以上説明したように本発明によれば、画像データを複数の画素ブロックに分割して記憶する場合において、等しい画素ブロックが複数ある場合に記憶容量を削減することができる。
【図面の簡単な説明】
【図１】第１の実施形態のパケットテーブルを示す図である。
【図２】パケットのフォーマットを示す図である。
【図３】３２×３２画素のタイルの単位に分割された１ページの画像データの一例を示す図である。
【図４】パッキングを行なう際のフローチャートである。
【図５】第１の実施形態における装置のブロック構成図である。
【図６】本発明の第２の実施形態におけるシステムのブロック図である。
【図７】パケット生成装置５０６のブロック図である。
【図１】
0003854790.tif 000002
【図２】
0003854790.tif 000003
【図３】
0003854790.tif 000004
【図４】
0003854790.tif 000005
【図５】
0003854790.tif 000006
【図６】
0003854790.tif 000007
【図７】
0003854790.tif 000008