(57)【特許請求の範囲】
【請求項１】
入力画像データを所定画素サイズのデータブロックに分割し、
前記データブロックの少なくとも一つに対してブロック圧縮が有効か否かを判定し、
前記ブロック圧縮が有効と判定されたデータブロックに前記ブロック圧縮を施し、
前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す各ステップを有し、
前記判定は、複数のデータブロックを所定の順番に行い、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックをスキップすることを特徴とする画像処理方法。
【請求項２】
前記判定は、前記ブロック圧縮後の前記データブロックがデータバッファに格納可能か否かによって行うことを特徴とする請求項１に記載された画像処理方法。
【請求項３】
前記非ブロック圧縮処理はラン長符号化(RLE)または非圧縮処理であることを特徴とする請求項１または請求項２に記載された画像処理方法。
【請求項４】
前記非ブロック圧縮処理はPackBitsを用いる圧縮処理であることを特徴とする請求項１または請求項２に記載された画像処理方法。
【請求項５】
前記非ブロック圧縮処理はDeltaRawを用いる圧縮処理であることを特徴とする請求項１または請求項２に記載された画像処理方法。
【請求項６】
情報処理装置を制御してデータを処理する情報処理方法であって、
メモリから所定データ単位にデータを読み出し、
前記データを所定データサイズの一連のデータブロックに分割し、
前記一連のデータブロック内の、有意のデータを有するデータブロック列の左端および右端のデータブロックを検出し、
前記左端および右端のデータブロックの間に存在するデータブロックに対してブロック圧縮が有効か否かを判定し、
前記ブロック圧縮が有効と判定されたデータブロックは前記ブロック圧縮を施し、
前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す各ステップを有し、
前記判定は、複数のデータブロックを所定の順番に行い、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックをスキップすることを特徴とする情報処理方法。
【請求項７】
前記判定は、前記ブロック圧縮後の前記データブロックがデータバッファに格納可能か否かによって行うことを特徴とする請求項６に記載された情報処理方法。
【請求項８】
前記非ブロック圧縮処理はラン長符号化(RLE)または非圧縮処理であることを特徴とする請求項６または請求項７に記載された情報処理方法。
【請求項９】
前記非ブロック圧縮処理はPackBitsを用いる圧縮処理であることを特徴とする請求項６または請求項７に記載された情報処理方法。
【請求項１０】
前記非ブロック圧縮処理はDeltaRawを用いる圧縮処理であることを特徴とする請求項６または請求項７に記載された情報処理方法。
【請求項１１】
前記データは画像データであることを特徴とする請求項６から請求項１０の何れかに記載された情報処理方法。
【請求項１２】
前記検出は、前記一連のデータブロックの一端のデータブロックから第一の有意のデータを探索し、前記第一の有意データを検出すると、前記第一のデータブロックの他端のデータブロックから第二の有意データを探索することを特徴とする請求項６から請求項１１の何れかに記載された情報処理方法。
【請求項１３】
情報処理装置を制御して、請求項１から請求項５の何れかに記載された画像処理を実現することを特徴とするプログラム。
【請求項１４】
情報処理装置を制御して、請求項６から請求項１２の何れかに記載された情報処理を実現することを特徴とするプログラム。
【請求項１５】
請求項１３または請求項１４に記載されたプログラムが記録されたことを特徴とする記録媒体。
【請求項１６】
入力画像データを所定画素サイズのデータブロックに分割する分割手段と、
前記データブロックの少なくとも一つに対してブロック圧縮が有効か否かを判定する判定手段と、
前記ブロック圧縮が有効と判定されたデータブロックに前記ブロック圧縮を施し、前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す処理手段とを有し、
前記判定手段は、複数のデータブロックを所定の順番に判定し、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックの判定をスキップすることを特徴とする画像処理装置。
【請求項１７】
メモリから所定データ単位にデータを読み出し、前記データを所定データサイズの一連のデータブロックに分割する分割手段と、
前記一連のデータブロック内の、有意のデータを有するデータブロック列の左端および右端のデータブロックを検出する検出手段と、
前記左端および右端のデータブロックの間に存在するデータブロックに対してブロック圧縮が有効か否かを判定する判定手段と、
前記ブロック圧縮が有効と判定されたデータブロックは前記ブロック圧縮を施し、前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す処理手段とを有し、
前記判定手段は、複数のデータブロックを所定の順番に判定し、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックの判定をスキップすることを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置、画像処理装置およびそれらの方法に関し、例えば、画像などのデータの高速圧縮処理に関する。
【０００２】
【従来の技術】
JPEG(Joint Photographic Experts Group)などの圧縮方法は、複数画素からなる矩形のブロックを単位として圧縮処理を行う。このような圧縮方法を以下では「ブロック圧縮」と呼ぶ。ブロック圧縮によっては、ブロックのサイズや圧縮後のデータサイズに条件や制限がある場合がある。また、ブロック圧縮自体には論理的な条件や制限がなくても、デコーダの仕様により制限される場合もある。従って、ブロック圧縮を優先する場合、規定のブロックサイズで原データを読み込み、ブロック圧縮をテストし、条件および制限内であればブロック圧縮し、条件または制限から外れてブロック圧縮できない場合は、他の方法でブロック圧縮するか非圧縮にして次ブロックの処理に移る、あるいは、ブロック圧縮を使用せずに圧縮することになる。
【０００３】
【発明が解決しようとする課題】
上記のブロック圧縮を優先し、ブロックによっては他の圧縮方法や非圧縮で処理する方法は、ブロック圧縮される以外の部分の圧縮率が低下する特性のほか、次の問題がある。
(1) ブロック圧縮が可能か否かの判定に多くの時間が必要になる。
(2) ブロック圧縮できないケースが続くと、それらの判定時間が無駄になる。  (3) ブロック圧縮を優先するため、ブロック圧縮される以外の部分の処理も同じ単位（規定のブロックサイズ）で行わざるを得ない。
【０００４】
本発明は、上述の問題を解決するためのものであり、できるだけ圧縮効率を低下させずに、高速に圧縮処理を実行することを目的とする。
【０００５】
【課題を解決するための手段】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００６】
本発明にかかる画像処理方法は、入力画像データを所定画素サイズのデータブロックに分割し、前記データブロックの少なくとも一つに対してブロック圧縮が有効か否かを判定し、前記ブロック圧縮が有効と判定されたデータブロックに前記ブロック圧縮を施し、前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す各ステップを有し、前記判定は、複数のデータブロックを所定の順番に行い、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックをスキップすることを特徴とする。
【０００７】
本発明にかかる情報処理方法は、情報処理装置を制御してデータを処理する情報処理方法であって、メモリから所定データ単位にデータを読み出し、前記データを所定データサイズの一連のデータブロックに分割し、前記一連のデータブロック内の、有意のデータを有するデータブロック列の左端および右端のデータブロックを検出し、前記左端および右端のデータブロックの間に存在するデータブロックに対してブロック圧縮が有効か否かを判定し、前記ブロック圧縮が有効と判定されたデータブロックは前記ブロック圧縮を施し、前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す各ステップを有し、前記判定は、複数のデータブロックを所定の順番に行い、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックをスキップすることを特徴とする。
【０００８】
本発明にかかる画像処理装置は、入力画像データを所定画素サイズのデータブロックに分割する分割手段と、前記データブロックの少なくとも一つに対してブロック圧縮が有効か否かを判定する判定手段と、前記ブロック圧縮が有効と判定されたデータブロックに前記ブロック圧縮を施し、前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す処理手段とを有し、前記判定手段は、複数のデータブロックを所定の順番に判定し、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックの判定をスキップすることを特徴とする。
【０００９】
本発明にかかる情報処理装置は、メモリから所定データ単位にデータを読み出し、前記データを所定データサイズの一連のデータブロックに分割する分割手段と、前記一連のデータブロック内の、有意のデータを有するデータブロック列の左端および右端のデータブロックを検出する検出手段と、前記左端および右端のデータブロックの間に存在するデータブロックに対してブロック圧縮が有効か否かを判定する判定手段と、前記ブロック圧縮が有効と判定されたデータブロックは前記ブロック圧縮を施し、前記ブロック圧縮が無効と判定されたデータブロック、および、そのデータブロックに続く所定数のデータブロックに非ブロック圧縮処理を施す処理手段とを有し、前記判定手段は、複数のデータブロックを所定の順番に判定し、前記ブロック圧縮が無効と判定したデータブロックに続く前記所定数のデータブロックの判定をスキップすることを特徴とする。
【００１０】
【発明の実施の形態】
以下、本発明にかかる一実施形態の情報処理装置を図面を参照して詳細に説明する。
【００１１】
［構成］
図1は本実施形態の情報処理装置の概観図である。
【００１２】
例えばパーソナルコンピュータのような情報処理装置3000は、連長判定を高速に処理するのに好適な情報機器である。情報処理装置3000は、ユーザから入力を受け付けるためのキーボード9、ユーザに対して情報を表示するためのCRTディスプレイ10を備える。また、データやプログラムを記憶する磁気ディスク(FDやHD)、光磁気ディスク(MO)、光ディスク(CD-ROM、CD-RやCD-RW)およびディジタルビデオディスク(DVD-ROMやDVD-RAM)などのリムーバブル記憶メディアをドライブするための外部メモリドライブ11を有する。
【００１３】
図2は情報処理装置3000の構成例を示すブロック図である。
【００１４】
マイクロプロセッサであるCPU1は、ROM3のプログラムROM領域302、ハードディスク(HD)12、および/または、外部メモリドライブ11にセットされた記憶メディアに記憶されたプログラムやデータなどに基づき、RAM2をワークメモリに使用して、図形、イメージ、文字および表（表計算などを含む）などが混在する文書の処理を実行するとともに、システムデバイス4を介して後述するブロックを統括的に制御する。
【００１５】
プログラムROM領域302または外部メモリドライブ11にセットされた記憶メディアには、後述するフローチャートに示されるような、CPU1により実行されるプログラムなどが記憶されている。また、フォントROM領域301には、上記の文書処理の際に作成および編集される文書データに含まれる文字や記号をCRT10に表示するための文字パターンを発生するためのフォントデータなどが記憶されている。
【００１６】
さらに、データROM領域303には、上記の文書処理や表示処理などを行う際に使用される各種データ、例えばROM3のディレクトリ情報や、アプリケーションテーブルなどが記憶されている。
【００１７】
5はキーボードコントローラ(KBC)で、キーボード(KB)9や図示しないマウスなどのポインティングデバイスからの入力を制御する。6はCRTコントローラ(CRTC)で、CRTディスプレイ10の表示を制御する。7はディスクコントローラ(DKC)で、HD12および外部メモリドライブ11のアクセスを制御し、それらの記憶メディアに対して各種プログラム、並びに、フォントデータ、ユーザファイルおよび編集ファイルなどの各種データを読み書きする。8はプリンタコントローラ(PRTC)で、所定の双方向性インタフェイス21を介してプリンタ22に接続され、プリンタ22との間の通信制御を実行する。
【００１８】
なお、CPU1は、例えばRAM2上に割り当てられた表示情報領域あるいは専用のビデオメモリ(VRAM)へのアウトラインフォントの展開（ラスタライズ）処理を実行し、CRTディスプレイ10上でのWYSIWYG(what you see is what you get)を可能にする。また、CPU1は、CRTディスプレイ10上のマウスカーソルなどにより指示されるコマンドに基づいて、登録された種々のウィンドウを開き、種々のデータ処理を実行する。
【００１９】
［一般的な圧縮処理］
次に、上記の構成を有する情報処理装置を用いた圧縮処理を詳細に説明するが、その前に、一般的な圧縮処理を説明する。
【００２０】
図3Aは圧縮対象の原データを示す図である。図3Aのデータは、便宜上、画像データとみなし、ブロックに相当するRAM2上の矩形領域に00から番号を付けている。また、以下では、RAM2に書き込まれた画像データをブロック圧縮優先で圧縮する例を説明する。なお、圧縮対象のデータは、例えばRAM2に割り当てられたバッファ領域に格納されているビットマップイメージあるいはベクタポイントリストのような連続したディジタルデータである。
【００２１】
以下の説明において「ブロック圧縮」とは、画像を画素ブロック単位で処理する必要がある圧縮方法を意味し、JPEGやFPX(Flash Pix)のように論理的にブロック単位で処理するもの、FBE(Fast Boundary Encoding)のようにデコーダの仕様に応じて小領域単位で行うものなどが含まれる。
【００２２】
また、以下の説明において「非ブロック圧縮」とは、ブロック圧縮以外の圧縮方法を意味し、RLE(Run Length Encoding)の例えばPackBitsやDeltaRow、並びに、ハフマン符号化(Huffman coding)などのエントロピ符号化(entropy coding)、さらに、算術符号化(arithmetic coding)などの圧縮方法がある。なお、非圧縮の場合も非ブロック圧縮と呼ぶ。
【００２３】
また、以下では、ブロック圧縮されたブロックまたはその連続を「ブロック圧縮部」と呼び、非ブロック圧縮されたブロックまたはその連続を「非ブロック圧縮部」と呼ぶことにする。
【００２４】
図3Bは一般的な圧縮処理における圧縮方法の切り替え、および、その結果の一例を示す図である。
【００２５】
まず、番号00の原データが読み込まれるが、同ブロックは有意のデータをもたないのでスキップされ、同様に番号01および04のブロックもスキップされる。番号02および03のブロックには有意のデータがあるので、ブロック圧縮がテストされ、条件を満たすのでブロック圧縮される。一方、番号05のブロックには有意のデータがあるので、ブロック圧縮がテストされるが、条件を満たさないのでブロック圧縮されない。つまり、番号05のブロックは例えば連長圧縮されるか、圧縮されない。続く、番号06、07および08も、有意なデータをもつが、条件を満たさないのでブロック圧縮されない。従って、各ブロックの処理方法は図3Bに示すようになる。
【００２６】
なお、有意のデータをもつブロックだけを符号化するので、復号側の処理の都合上、ブロックごとに有意か否かを示すフラグが符号化データの一部として発生するが、本実施形態の説明には直接関係しないので、詳細な説明は省略する。
【００２７】
また、上記のブロック圧縮のテストとは、例えば、所定の圧縮率が得られるように処理対象のブロックをブロック圧縮した場合に、その圧縮データを伸長した画像の原画像に対する画質劣化が許容範囲内であるか否かをテストするものである。また、ブロック圧縮によっては、後述するように、処理対象のブロックをデコーダのデータバッファに格納できるデータサイズに圧縮可能か否かをテストする場合もある。このようなテストの結果、画質劣化が許容範囲内またはデータバッファに格納可能と判定される場合、「ブロック圧縮が可能」または「ブロック圧縮の効果がある」などと表現する。
【００２８】
図4は図3Bに示す圧縮処理のフローチャートである。
【００２９】
Y方向に一行分のブロックのデータをRAM2の所定領域に格納し(S1)、その中から注目ブロックのデータを読み出し(S2)、注目ブロックが有意のデータを有するか否かを調べる(S3)。その後、ステップS4で、有意のデータがある場合はステップS5へ進む。また、注目ブロックに有意のデータがなければステップS2へ戻り、次のブロックのデータを読み出すので、注目ブロックの圧縮処理はスキップされる。
【００３０】
注目ブロックが有意のデータを有する場合、ブロック圧縮をテストし(S5)、ブロック圧縮の効果があると判定されれば(S6)、ブロック圧縮し(S7)、効果がなければ非ブロック圧縮で処理する(S8)。
【００３１】
以上の処理が終わると、ステップS9で一行分のブロックの処理が終了したか否かを判定し、未了であればステップS2へ戻り次のブロックのデータを読み出し、ステップS3からS8の処理を繰り返す。一行分のブロックの処理が終了した場合は、例えばRAM2のブロック一行分のメモリを初期化し(S10)、圧縮されたデータを書き込む(S11)。
【００３２】
上記の処理は、データのすべてのブロックの処理が終了するまで、ブロック一行ごとに行われる。
【００３３】
このように、図3Bおよび図4に示す圧縮処理においては、ブロック一行ごとにステップS1からS11の処理が繰り返され、一ブロックごとにステップS2からS4の処理が繰り返される。
【００３４】
［本実施形態の圧縮処理］
図5Aは本実施形態の圧縮処理の概要を示す図で、非ブロック圧縮部を2ブロックサイズ固定でまとめたものであり、図3Bに示す一般的な圧縮方法とは番号05から08の非ブロック圧縮部の扱いが異なる。
【００３５】
つまり、図3Bおよび図4に示す圧縮処理によれば、番号05のブロックは、有意のデータが有るのでブロック圧縮をテストするが、条件を満たさないためブロック圧縮されずにRLEや非圧縮で処理され、処理は次の番号06のブロックへ進む。
【００３６】
これに対して、図5Aに示す本実施形態の圧縮処理によれば、番号05のブロックが非ブロック圧縮で処理すると判定された場合、番号05のブロックおよび番号06のブロックをまとめて一つのブロックとみなし、番号05および06のブロックからなる矩形領域を非ブロック圧縮で処理した後、次の番号07のブロックの処理へ進む。
【００３７】
従って、図5Aに示す圧縮処理によれば、あるブロックを非ブロック圧縮する場合、続く1ブロックの処理に関して、ステップS3およびS4に対応する有意のデータの有無判定、並びに、ステップS5およびS6に対応するブロック圧縮の効果の判定が省略できるので、圧縮処理全体を高速にすることができる。
【００３８】
なお、続く1ブロックに有意のデータがなかったとしても、それはRLEなどにより圧縮されてしまうので圧縮効率が極端に低下することはない。また、画像データを圧縮する場合、注目ブロックの近傍のデータは、注目ブロックのデータに類似する可能性が高いから、注目ブロックを非ブロック圧縮すべきであれば、続く1ブロックも非ブロック圧縮すべきである可能性が高く、この面からも圧縮効率が極端に低下することはない。
【００３９】
さて、非ブロック圧縮部にまとめるブロックサイズは2に限定されず、例えば3や4でもよい。また、非ブロック圧縮部にまとめるブロックサイズは固定である必要はない。図5Bは本実施形態の圧縮処理の概要を示す図で、非ブロック圧縮部を可変のブロックサイズでまとめるものである。
【００４０】
図5Bに示す本実施形態の圧縮処理によれば、番号05のブロックが非ブロック圧縮すると判定された場合、所定のブロック単位Nでスキップしてブロックの判定を継続する。ここでスキップされるブロック単位Nは任意であり、例えば2、3または4ブロックなどでよい。そして、詳細は後述するが、番号05と異なるブロック、つまり、有意のデータがないブロック、または、ブロック圧縮すべきブロックが検出されるまで、所定のブロック単位Nでスキップするブロックの判定を継続する。図5Bの例では、番号05から08の4ブロックがまとまった例が示されている。
【００４１】
なお、スキップされるブロック単位Nは、非ブロック圧縮の特性および判定速度に依存する。例えば、1ビット/画素のデータを入力し、X方向の1ブロックサイズが128画素である場合、1ブロックのX方向のバイト数は16バイトである。従って、非ブロック圧縮として最大圧縮ランレングスが128バイトのバイト単位のPackBitsを利用するならば、128/16=8であるから、8ブロックでまとめるのが効率的であり、これがスキップされるブロック単位Nの目安になる。
【００４２】
従って、図5Bに示す圧縮処理によれば、スキップされるブロックにおける有意のデータの有無判定、並びに、ブロック圧縮の効果の判定が省略できるので、図5Aに示す圧縮処理よりも、さらに圧縮処理全体を高速にすることができる。ただし、図5Aの圧縮処理と比較すると、判定時間が短縮される代わりに、圧縮効率が低下する可能性がある。
【００４３】
図5Cは一般的な圧縮処理と、本実施形態の圧縮処理との違いを説明するための図で、符号510で示すのが一般的な圧縮処理、符号511で示すのが図5Bの圧縮処理である。
【００４４】
さらに、符号512は、X方向だけでなくY方向にも上記の所定のブロック単位Mでスキップしてブロックの判定を継続する処理を示している。符号512で示すような処理は、例えば、少なくともスキップされるブロック単位Mに対応する行分のデータをRAM2の所定領域にコピーし、そのデータをY方向にアクセスすることで容易に実現される。
【００４５】
上記で説明した本実施形態の圧縮処理の具体例、ある1ビット/画素の画像データをブロック圧縮のFBE、並びに、非ブロック圧縮のPackBitsおよび非圧縮の混合で処理する例を説明する。
【００４６】
なお、FBEのデコーダには二つの制限があり、128×128画素のブロック単位で復号（伸長）、かつ、デコードバッファサイズは非圧縮サイズで128/8×128=2Kバイトである。また、PackBitsは一般的なもので、128バイトのランレングスまで圧縮可能である。また、非ブロック圧縮におけるスキップ単位Nは8ブロックにする。何故かといえば、FBEのブロックサイズのX方向が128画素（=16バイト）であり、PackBitsのランレングスが128バイトまでであるから、スキップ単位を128/16=8ブロックにすれば効率がよいからである。
【００４７】
1ビット/画素の画像データの圧縮が開始されると、128×128画素のブロック単位でFBEがテストされる。圧縮後のデータサイズが2Kバイト以内であれば、そのブロックはFBEされる。一方、ブロック番号Aのブロックの圧縮後のデータサイズが2Kバイト以上の場合、ブロック番号AからA+7までの8ブロックはまとめて1ブロックとみなされPackBitsされた後、処理はブロック番号A+8のブロックへ進む。つまり、7ブロック分の、ステップS3およびS4に対応する有意のデータの有無判定、並びに、ステップS5およびS6に対応するブロック圧縮の効果の判定が省略できるので、圧縮処理を高速化することができる。
【００４８】
先にも述べたが、ブロック番号A+1からA+7のブロックに有意のデータがなかったとしても、PackBitsによりランレングスが圧縮されるので、極端な圧縮効率低下は発生しない。また、通常、あるブロックの近傍のデータは、そのブロックのデータとの類似性が高いので、そのブロックはPackBitsで圧縮すべきであれば、そのブロックの近傍のデータをPackBitsで圧縮しても圧縮効率が極端に低下することはない。
【００４９】
ところで、スキップ単位N、言い換えればPackBitsのブロックのサイズを8にしたが、4や2でもよく、スキップ単位Nを可変にすることも可能である。ただし、PackBitsは主走査方向Xの圧縮効果が高い特性をもつので、副走査方向Yにスキップすることは有用とはいえない。もし、DeltaRowのような副走査方向Yの圧縮効率が高い方法を使用するならば、副走査方向Yのスキップも行うべきである。
【００５０】
上記のような圧縮処理を行えば、ブロック圧縮を優先する圧縮においても、複数の圧縮方法を高速に切り替えながら画像データなどを圧縮することができる。
【００５１】
［圧縮処理手順］
図6Aおよび6Bは図5Aに示す圧縮処理のフローチャートである。
【００５２】
Y方向に一行分のブロックのデータをRAM2の所定領域に格納し(S21)、X方向の左端のブロックからブロック単位に有意のデータを有するか否かを調べる(S22およびS23)。そして、右端のブロックまで有意のデータを有するブロックが見付からない場合はステップS21へ戻り、次行のブロックのデータを読み出す。
【００５３】
一方、有意のデータを有するブロックが見付かった場合はそのブロック（有意ブロックと呼ぶ）をX1とし(S24)、今度は右端のブロックからブロック単位に有意のデータを有するか否かを調べ(S25、見付かった有意ブロックをX2とする(S26)。
【００５４】
次に、X1とX2との間のブロックから注目ブロックのデータを読み出し(S27)、注目ブロックが有意のデータを有するか否かを調べる(S28)。その後、ステップS29で、有意のデータがある場合はステップS30へ進む。また、注目ブロックに有意のデータがなければステップS27へ戻り、次のブロックのデータを読み出すので、注目ブロックの圧縮処理はスキップされる。
【００５５】
注目ブロックが有意のデータを有する場合、ブロック圧縮をテストし(S30)、ブロック圧縮が可能であると判定されれば(S31)、ブロック圧縮し(S32)、不可能であれば次のブロックがあるか否かを調べ(S33)、次ブロックがあれば注目ブロックおよび次ブロックの2ブロックを非ブロック圧縮する(S34)。また、次のブロックがなければ注目ブロックだけを非ブロック圧縮する(S35)。
【００５６】
以上の処理が終わると、ステップS36で一行分のブロックの処理が終了したか否かを判定し、未了であればステップS27へ戻り、次のブロックのデータを読み出し、ステップS28からS35の処理を繰り返す。一行分のブロックの処理が終了した場合は、例えばRAM2のブロック一行分のメモリを初期化し(S37)、圧縮されたデータを書き込む(S38)。
【００５７】
上記の処理は、データのすべてのブロックの処理が終了するまで、ブロック一行ごとに行われる。
【００５８】
図7Aから7Cは図5Bに示す圧縮処理のフローチャートである。なお、図6Aおよび6Bに示す処理と同様のステップには同じ符号を付してその詳細説明を省略する。
【００５９】
上述したステップS21からS26の処理が終了した後、非ブロック圧縮の継続数iを零に初期化する(S41)。X1とX2との間のブロックから注目ブロックのデータを読み出し(S42)、注目ブロックが有意のデータを有するか否かを調べ(S43)、有意のデータがある場合はステップS47へ進む。
【００６０】
注目ブロックに有意のデータがない場合はステップS45へ進み、継続数iが零か否かを判定する。i＞0であれば非ブロック圧縮するブロックが溜まっているので、これらのブロックをステップS46で非ブロック圧縮する。その後、処理はステップS42へ戻り、次のブロックのデータを読み出すので、注目ブロックの圧縮処理はスキップされる。
【００６１】
注目ブロックが有意のデータを有する場合、ブロック圧縮をテストし(S47)、ブロック圧縮が可能であると判定されれば(S48)、ステップS49で継続数iが零か否かを判定する。i＞0であれば非ブロック圧縮するブロックが溜まっているので、これらのブロックをステップS50で非ブロック圧縮する。その後、注目ブロックをブロック圧縮する(S51)。
【００６２】
一方、ブロック圧縮が不可能であれば次のブロックがあるか否かを調べ(S52)、あれば継続数iをインクリメントし(S53)、継続数iにスキップ数Eを加えた値が継続制限数N未満であるか否かを判定し(S54)、i+E＜Nであれば継続数iにスキップ数Eを加える(S55)。また、次ブロックがない場合、または、i+E≧Nの場合はステップS56で溜まっているブロックを非ブロック圧縮する。
【００６３】
図7Cは非ブロック圧縮処理を示すフローチャートで、ステップS61で継続数i分のブロックをまとめて処理し、ステップS62で継続数iを零に初期化し、メインのルーチンに復帰する。
【００６４】
上記の実施形態において、サブユニットの処理単位を並列におく、サブユニットの処理単位がユニットの中でループする、上位のサブユニットの処理単位の中で下位のサブユニット処理単位がループする、などなど各ユニットの配置を変えたとしても、本実施形態を適用したとみなせる。
【００６５】
さらに、ブロック圧縮、非圧縮以外の非ブロック圧縮、および、非圧縮の組み合わせだけでなく、内容が不明な原データを領域条件の異なる複数の圧縮方法を切り替えながら処理していく場合にも、つまり複数のブロック圧縮を使用する場合でも、または、複数の非ブロック圧縮を使用する場合でも、本実施形態を適用することができる。
【００６６】
図8は図1に示す情報処理装置3000であるホストコンピュータに装填される記憶メディアであるFDに記憶されているプログラムをホストコンピュータにロードする様子を示している。また、図9は記憶メディアの一例であるFDのメモリマップを示す図である。
【００６７】
図9に示す符号999は、ディレクトリ情報などを記憶する領域で、アプリケーションプログラムテーブル998の記憶場所などが記録されている。さらに、図9には、各動作環境に対応して、例えば図4、図6Aおよび図6B、あるいは、図7Aから図7Cに示した制御プログラムなどの記憶領域997や、処理用の構成情報などの記憶領域996などが示されている。
【００６８】
ホストコンピュータのオペレータは、FDの記憶内容からインストールしたい例えばアプリケーション名をKB9により指示することにより、前述のテーブル998を参照してアプリケーションがホストコンピュータへロードされる。例えば動作環境XXXを指示すると、領域997および996に記憶された対応するアプリケーションおよび構成情報がホストコンピュータにロードされる。
【００６９】
以上説明したように、本実施形態によれば、ブロック圧縮を優先する圧縮処理において次の効果を得ることができる。
(1)ブロック圧縮が可能か否かの判定を短縮できる。
(2)ブロック圧縮できないケースが続く率が低減されるので、その分の判定時間を短縮できる。
(3)非ブロック圧縮される部分の処理単位を可変にできる。
【００７０】
すなわち、ブロック圧縮が可能かの条件判定の回数を減らせる。また、ブロック圧縮できないケースが続くとその間の判定を省略することができる。また、非ブロック圧縮部の処理のサイズを変動させることができる。また、非ブロック圧縮部の効率を向上することができる。従って、本実施形態によれば、ブロック圧縮優先の処理においても、処理の高速化／効率化が達成でき、データ圧縮やイメージ加工処理を短時間で効率よく実行することができる。
【００７１】
【他の実施形態】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【００７２】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることはいうまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることはいうまでもない。
【００７３】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることはいうまでもない。
【００７４】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、図6Aおよび図6B、または、図7Aから図7Cに示したフローチャートに対応するプログラムコードを格納することになる。
【００７５】
【発明の効果】
以上説明したように、本発明によれば、できるだけ圧縮効率を低下させずに、高速に圧縮処理を実行することができる。
【図面の簡単な説明】
【図１】本実施形態の情報処理装置の概観図、
【図２】図1に示す情報処理装置の構成例を示すブロック図、
【図３Ａ】圧縮対象の原データを示す図、
【図３Ｂ】一般的な圧縮処理における圧縮方法の切り替え、および、その結果の一例を示す図、
【図４】図3Bに示す圧縮処理のフローチャート、
【図５Ａ】本実施形態の圧縮処理の概要を示す図、
【図５Ｂ】本実施形態の圧縮処理の概要を示す図、
【図５Ｃ】一般的な圧縮処理と、本実施形態の圧縮処理との違いを説明するための図、
【図６Ａ】図5Aに示す圧縮処理のフローチャート、
【図６Ｂ】図5Aに示す圧縮処理のフローチャート、
【図７Ａ】図5Bに示す圧縮処理のフローチャート、
【図７Ｂ】図5Bに示す圧縮処理のフローチャート、
【図７Ｃ】図5Bに示す圧縮処理のフローチャート、
【図８】図1に示す情報処理装置に装填される記憶メディアに記憶されているプログラムをホストコンピュータにロードする様子を示すための図、
【図９】記憶メディアの一例であるFDのメモリマップを示す図である。
【図１】
0003869992.tif 000002
【図２】
0003869992.tif 000003
【図３Ａ】
0003869992.tif 000004
【図３Ｂ】
0003869992.tif 000005
【図４】
0003869992.tif 000006
【図５Ａ】
0003869992.tif 000007
【図５Ｂ】
0003869992.tif 000008
【図５Ｃ】
0003869992.tif 000009
【図６Ａ】
0003869992.tif 000010
【図６Ｂ】
0003869992.tif 000011
【図７Ａ】
0003869992.tif 000012
【図７Ｂ】
0003869992.tif 000013
【図７Ｃ】
0003869992.tif 000014
【図８】
0003869992.tif 000015
【図９】
0003869992.tif 000016