以下、図に基づいて本発明の実施の形態を説明する。
図1は、本発明の実施の形態に係る画像読取装置の構成を示すブロック図である。図1に示す画像読取装置は、互いに接続された、スキャナー部1、画像処理部2、メモリー3、主制御部4、および出力部5を有する。
スキャナー部1は、原稿のページ画像を光学的に読み取り、そのページ画像の画像データを生成し出力する。
また、画像処理部2は、画像データに対して所定の処理を施す。画像処理部2は、スキャナー部1により出力された画像データ、またはスキャナー部1により出力された画像データに対して前段の処理が施された画像データに対して所定の処理を施す。画像処理部2は、その所定の処理後の画像データをメモリー3内の所定のメモリー領域に書き込んでいく。例えば、画像処理部2は、1または複数のASIC(Application Specific Integrated Circuit)で構成される。
また、メモリー3は、DRAM(Dynamic Random Access Memory)などの揮発性メモリーである。メモリー3において、画像処理部2による処理に要求されるメモリー領域が適宜確保される。
図2は、図1に示す画像読取装置における各種メモリー領域およびデータフローについて説明するブロック図である。
図2において、CCD(Charge Coupled Device)11は、光学的に得られたページ画像を電気信号として出力する撮像素子である。読込用ASIC12は、CCD11からの電気信号を画像データに変換し出力する回路である。CCD11および読込用ASIC12は、スキャナー部1に含まれる。
ワークメモリー領域13は、メモリー3において確保され、読込用ASIC12の出力バッファーおよびコーデック用ASIC14の入力バッファーとして使用される。
コーデック用ASIC14,20は、画像データの圧縮を行う回路である。コーデック用ASIC14,20は、例えばJPEG(Joint Photographic Experts Group)などの圧縮方式で画像データの圧縮を行う。
一次ページメモリー領域15は、メモリー3において確保され、読込用ASIC12により変換された画像データ(圧縮済み画像データ)、すなわち、画像処理用ASIC18による画像処理前の画像データ(圧縮済み画像データ)を、記憶するためのメモリー領域である。つまり、一次ページメモリー領域15は、ワークメモリー領域13より後段(下流側)の領域であって、コーデック用ASIC14が処理後の画像データを書き込む領域である。
コーデック用ASIC16は、コーデック用ASIC14の圧縮方式に対応した伸張方式で、圧縮された画像データの伸張を行う回路である。
ワークメモリー領域17は、メモリー3において確保され、コーデック用ASIC16の出力バッファーおよび画像処理用ASIC18の入力バッファーとして使用される。
画像処理用ASIC18は、画像データに所定の画像処理(解像度変換、回転、データ形式の変換など)を施す回路である。
ワークメモリー領域19は、メモリー3において確保され、画像処理用ASIC18の出力バッファーおよびコーデック用ASIC20の入力バッファーとして使用される。
二次ページメモリー領域21は、メモリー3において確保され、画像処理用ASIC18による画像処理後の画像データ(圧縮済み画像データ)を記憶するためのメモリー領域である。つまり、二次ページメモリー領域21は、ワークメモリー領域19より後段(下流側)の領域であって、コーデック用ASIC20が処理後の画像データを書き込む領域である。
なお、コーデック用ASIC14,16,20および画像処理用ASIC18は、画像処理部2に含まれる。
図2に示すように、読込用ASIC12から出力された画像データは、ワークメモリー領域13を介してコーデック用ASIC14に渡され、コーデック用ASIC14により圧縮された画像データが1バンド(所定数のライン)ずつ順番に一次ページメモリー領域15に記憶されていく。そして、コーデック用ASIC16は、一次ページメモリー領域15に蓄積された圧縮済み画像データを順番に読み出して伸張し、伸張した画像データをワークメモリー領域17を介して画像処理用ASIC18に渡す。画像処理用ASIC18により画像処理を施された画像データは、ワークメモリー領域19を介してコーデック用ASIC20に渡され、コーデック用ASIC20により圧縮された画像データが順番に二次ページメモリー領域21に記憶されていく。
図1に戻り、主制御部4は、スキャナー部1、画像処理部2、メモリー3、および出力部5を制御する。また、主制御部4は、メモリー3において画像処理部2に要求されるメモリー領域(ワークメモリー領域13,17,19、一次ページメモリー領域15、二次ページメモリー領域21など)を確保する。
図3は、図2におけるワークメモリー領域13,19の一例を示す図である。
図3に示すように、ワークメモリー領域13,19は、複数のバッファー領域13a〜13d,19a〜19dを有する。ワークメモリー領域13のバッファー領域13a〜13dは、スキャナー部1により出力された画像データをASIC12,14間で受け渡す際に順番に繰り返し使用される。ワークメモリー領域19のバッファー領域19a〜19dは、スキャナー部1により出力された画像データに対して所定の処理が施された画像データをASIC18,20間で受け渡す際に順番に繰り返し使用される。
ワークメモリー領域13,19の複数のバッファー領域は、ダブルバッファーまたはリングバッファーとして使用される。図3に示す場合では、ワークメモリー領域13,19の複数のバッファー領域は、リングバッファーとして使用される。
したがって、複数のバッファー領域13a〜13dにおける、先頭のバッファー領域13a,19aから最後のバッファー領域13d,19dまで順番にデータが書き込まれ、最後のバッファー領域13d,19dの次に先頭のバッファー領域13a,19aにデータが書き込まれる。1つのバッファー領域は、1バンド分の画像データ(圧縮されておらずサイズが固定の画像データ)を記憶可能なサイズを有する。
ワークメモリー領域13,19内の複数のバッファー領域13a〜13d,19a〜19dは、それぞれ、先頭のバッファー領域13a,19aから最後のバッファー領域13d,19dまで連続して確保され、1ページ内のバンドの数が複数のバッファー領域13a〜13d,19a〜19dの数(図3の場合は4)の倍数ではない場合において、1ページ内の最後のバンドの受け渡しに最後のバッファー領域13d,19dが使用されるように、先頭のバッファー領域13a,19a以外のバッファー領域13b〜13d,19b〜19dから順番に、複数のバッファー領域13a〜13d,19a〜19dが使用される。
複数のバッファー領域13a〜13d,19a〜19dのうち、最初に使用されるバッファー領域は、1ページ内のバンドの数を複数のバッファー領域13a〜13d,19a〜19dの数で除算した場合の剰余から特定される。(バッファー領域の数−剰余+1)番目のバッファー領域が、最初に使用されるバッファー領域(つまり、先頭のバンドが記憶されるバッファー領域)とされる。
例えば図3(B)に示すように、1ページのバンド数が75であり、バッファー領域の数が4である場合、剰余が3となり、2番目(=4−3+1)のバッファー領域であるバッファー領域13b,19bが、最初に使用されるバッファー領域とされる。
この実施の形態では、ワークメモリー領域13,19は、それぞれ、メモリー3において先頭のバッファー領域13a,19aがページメモリー領域15,21に連続するように確保されている。
また、主制御部4は、1ページ分の画像データが一次ページメモリー領域15に書き込まれる前にコーデック用ASIC14による画像データの書込位置が一次ページメモリー領域15の終端に到達した場合、1ページ分の画像データについて、ワークメモリー領域13の複数のバッファー領域13a〜13dのうちの少なくとも1つが使用終了しているときには、一次ページメモリー領域15および使用終了しているバッファー領域を使用してコーデック用ASIC14による処理を継続させ、1ページ分の画像データについて複数のバッファー領域13a〜13dのいずれも使用終了していないときには、メモリー3において別の用途に確保されている領域の一部または全部から確保した追加領域および一次ページメモリー領域15を使用してコーデック用ASIC14による処理を実行させる。
同様に、主制御部4は、1ページ分の画像データが二次ページメモリー領域21に書き込まれる前にコーデック用ASIC20による画像データの書込位置が二次ページメモリー領域21の終端に到達した場合、1ページ分の画像データについて、ワークメモリー領域19の複数のバッファー領域19a〜19dのうちの少なくとも1つが使用終了しているときには、二次ページメモリー領域21および使用終了しているバッファー領域を使用してコーデック用ASIC20による処理を継続させ、1ページ分の画像データについて複数のバッファー領域19a〜19dのいずれも使用終了していないときには、メモリー3において別の用途に確保されている領域の一部または全部から確保した追加領域および二次ページメモリー領域21を使用してコーデック用ASIC20による処理を実行させる。
例えば、主制御部4は、1ページ分の画像データについて複数のバッファー領域13a〜13dのいずれも使用終了していないときには、複数ページの画像データのソートに使用されるソートメモリー領域のサイズを減少させ、ソートメモリー領域の減少分を上述の追加領域とする。
また、例えば、主制御部4は、1ページ分の画像データについて複数のバッファー領域19a〜19dのいずれも使用終了していないときには、マルチジョブ用の予備メモリー領域(複数のジョブを並行して実行する際に使用されるメモリー領域)のサイズを減少させ、マルチジョブ用の予備メモリー領域の減少分を、上述の追加領域とする。
なお、主制御部4は、上述の追加領域を確保した場合、画像読取のジョブの終了時に追加領域を解放し、解放した領域を、上述の別の用途に確保されている領域に戻す。
また、出力部5は、画像処理部2による画像処理後の画像データを出力する。
次に、上記画像読取装置の動作(主に画像処理部2および主制御部4)について説明する。
ここでは、コーデック用ASIC14,20による圧縮処理、およびページメモリー領域15,21への圧縮済み画像データの書き込みについて説明する。図4は、図1に示す画像読取装置における圧縮処理について説明するフローチャートである。図5は、図1に示す画像読取装置におけるページメモリー領域15,21が不足した場合にワークメモリー領域13,19を使用して圧縮処理を続行する際の処理について説明する図である。
主制御部4は、一次ページメモリー領域15を確保し、そのアドレス情報(先頭アドレスおよびサイズ、あるいは先頭アドレスおよび終端アドレス)をコーデック用ASIC14,16にセットし、さらに、図3(A)に示すように、一次ページメモリー領域15に連続させてワークメモリー領域13を確保し、そのアドレス情報(先頭アドレスおよびサイズ、あるいは先頭アドレスおよび終端アドレス)を読込用ASIC12およびコーデック用ASIC14にセットする。同様に、主制御部4は、二次ページメモリー領域21を確保し、そのアドレス情報(先頭アドレスおよびサイズ、あるいは先頭アドレスおよび終端アドレス)を画像処理用ASIC18にセットし、さらに、図3(A)に示すように、二次ページメモリー領域21に連続させてワークメモリー領域19を確保し、そのアドレス情報(先頭アドレスおよびサイズ、あるいは先頭アドレスおよび終端アドレス)を画像処理用ASIC18およびコーデック用ASIC20にセットする。また、主制御部4は、ワークメモリー領域17を確保し、そのアドレス情報(先頭アドレスおよびサイズ、あるいは先頭アドレスおよび終端アドレス)をコーデック用ASIC16および画像処理用ASIC18にセットする。
図3(A)の場合、読込用ASIC12は、ワークメモリー領域13における4つのバッファー領域13a〜13dを順番に出力バッファーとして使用し、コーデック用ASIC14は、そのバッファー領域13a〜13dを順番に入力バッファーとして使用する。つまり、読込用ASIC12は、バッファー領域13aに1バンド分の画像データを書き込んだ後、次のバンドの画像データをバッファー領域13bに書き込み、その次のバンドの画像データをバッファー領域13cに書き込み、さらにその次のバンドの画像データをバッファー領域13dに書き込む。そして、読込用ASIC12は、その次のバンドの画像データをバッファー領域13aに書き込む。一方、コーデック用ASIC14は、バッファー領域13aから1バンド分の画像データを読み込んだ後、次のバンドの画像データをバッファー領域13bから読み込み、その次のバンドの画像データをバッファー領域13cから読み込み、さらにその次のバンドの画像データをバッファー領域13dから読み込む。そして、コーデック用ASIC14は、その次のバンドの画像データをバッファー領域13aから読み込む。このように、ワークメモリー領域13は、読込用ASIC12およびコーデック用ASIC14によりリングバッファーとして使用される。ただし、1ページのバンド数が4(バッファー領域13a〜13dの数)の倍数ではない場合、1ページ内の先頭バンドの画像データの記憶に使用されるバッファー領域(各ページについて、最初に使用されるバッファー領域)は、先頭のバッファー領域13a以外のバッファー領域13b〜13dのいずれかとされる。このとき、ページの最終バンドの画像データが最後のバッファー領域13dに記憶されるように、最初に使用されるバッファー領域が選択される。なお、ワークメモリー領域19も、同様に、画像処理用ASIC18およびコーデック用ASIC20によりリングバッファーとして使用される。
次に、コーデック用ASIC14による圧縮処理について説明する。
コーデック用ASIC14は、1バンド分の画像データをワークメモリー領域13から読み出して圧縮し、1バンド分の圧縮済みの画像データを一次ページメモリー領域15に書き込んでいく(ステップS1)。その際、主制御部4は、各ページについて、コーデック用ASIC14による処理済みのバンドの数をカウントする。なお、このとき、1バンド分の圧縮前の画像データのサイズは一定であるが、1バンド分の圧縮済みの画像データのサイズは一定ではない。各バンドの圧縮済み画像データは、1つ前のバンドの圧縮済み画像データに隙間なく連続して書き込まれる。各バンドの圧縮済み画像データの先頭記憶位置および終端記憶位置(またはサイズ)は、主制御部4により管理されて、一次ページメモリー領域15から各バンドの圧縮済み画像データを読み出すときには、主制御部4により管理されている先頭記憶位置および終端記憶位置(またはサイズ)から、各バンドの圧縮済み画像データの読出位置が特定される。
コーデック用ASIC14は、その画像データの書込位置が一次ページメモリー領域15の終端アドレスに到達したか否かを監視している(ステップS2)。
1バンド分の圧縮済みの画像データの書き込みが完了すると、コーデック用ASIC14は、1ページ分のバンドの処理が完了したか否かを判定し(ステップS3)、1ページ分のバンドの処理が完了していなければ、ステップS1に戻り、次のバンドの処理を同様に行う。
コーデック用ASIC14が、画像データの書込位置が一次ページメモリー領域15の終端アドレスに到達したことを検出すると、主制御部4は、コーデック用ASIC14による処理済みバンド数のカウント値から、1ページにおける未処理の残りバンド数を特定する(ステップS4)。例えば、1ページのバンド数が75であり、カウント値が72である場合、残りバンド数は3である。なお、1ページのバンド数は既知でありかつ一定である。
次に、主制御部4は、その残りバンド数がバッファー領域13a〜13dの数以下であるか否かを判定する(ステップS5)。
残りバンド数がバッファー領域13a〜13dの数より大きい場合、主制御部4は、エラー通知を行い(ステップS6)、この圧縮処理を中止する。主制御部4は、エラー通知として、例えば図示せぬ操作パネルにエラーメッセージを表示させる。
一方、残りバンド数がバッファー領域13a〜13dの数以下である場合、主制御部4は、その残りバンド数およびワークメモリー領域13におけるバッファー領域13a〜13dの数から、使用終了したバッファー領域がワークメモリー領域13にあるか否かを判定する(ステップS7)。つまり、残りバンド数が、バッファー領域13a〜13dの数より小さいか否かが判定される。
残りバンド数がワークメモリー領域13におけるバッファー領域の数より小さい場合には、使用終了したバッファー領域がワークメモリー領域13にあると判定される。また、ワークメモリー領域13におけるバッファー領域の数から残りバンド数を減算して得られる値が、使用終了したバッファー領域の数となる。
例えば、図3(A)および図5(A)に示すように、ワークメモリー領域13におけるバッファー領域13a〜13dの数が4であり、残りバンド数が3である場合、先頭のバッファー領域13aが、使用終了している、つまり、「空き」となっている。
使用終了したバッファー領域がワークメモリー領域13にあると判定した場合、主制御部4は、コーデック用ASIC14に、ワークメモリー領域13を使用して圧縮処理を続行させる(ステップS8)。つまり、コーデック用ASIC14は、画像データの書込位置が一次ページメモリー領域15の終端アドレスに到達したことを検出したときのバンドについての圧縮処理後の画像データの一部または全部、並びにそれ以降のバンドを、連続して、ページメモリー領域15とそれに隣接するバッファー領域13aに、未処理のバンドの画像データを上書きしないように書き込む。
ステップS8の処理の後、ステップS2では、コーデック用ASIC14は、画像データの書込位置が、上述の「空き」となったバッファー領域の終端に到達したか否かを監視し、画像データの書込位置が、未処理のバンドの画像データが存在しないバッファー領域の終端に到達した場合、ステップS4以降の処理が再度実行される。ただし、ステップS5,S7の処理は、ワークメモリー領域13内のバッファー領域の数は、前回、「空き」となったバッファー領域の数を減らして行われる。
例えば、図3(A)に示すように、ワークメモリー領域13におけるバッファー領域13a〜13dの数が4であり、残りバンド数が3である場合、図5(A)に示すように、先頭のバッファー領域13aが「空き」となり、その後、図5(B)に示すように処理が続行される。その後、図5(C)に示すように画像データの書込位置がバッファー領域13aの終端に到達すると、そのときのバッファー領域の数が3(=4−1)であり、残りバンド数が2であれば、図5(D)に示すように処理が続行される。
一方、使用終了したバッファー領域がワークメモリー領域13にない場合(つまり、残りバンド数がバッファー領域13a〜13dの数と同一である場合)、主制御部4は、残りバンド数分の圧縮処理後の画像データのためのメモリー領域を、上述のような別の用途に確保している領域から調達可能か否かを判定する(ステップS9)。なお、1バンド分の圧縮処理後の画像データのために確保するメモリー領域のサイズは予め決められている。
残りバンド数分の圧縮処理後の画像データのためのメモリー領域を、上述のような別の用途に確保している領域から調達可能ではない場合、主制御部4は、エラー通知を行い(ステップS10)、この圧縮処理を中止する。主制御部4は、エラー通知として、例えば図示せぬ操作パネルにエラーメッセージを表示させる。
残りバンド数分の圧縮処理後の画像データのためのメモリー領域を、上述のような別の用途に確保している領域から調達可能である場合、主制御部4は、上述のようにして、特定した不足量の領域を確保し、確保した領域を一次ページメモリー領域15に追加する(ステップS11)。
そして、コーデック用ASIC14の場合、主制御部4は、コーデック用ASIC14の前段(上流側)にページメモリー領域がないため、圧縮処理前の1ページ分の画像データが残っていないと判断し(ステップS12)、主制御部4は、リトライ通知を行い(ステップS13)、この圧縮処理を中止する。主制御部4は、リトライ通知として、例えば図示せぬ操作パネルに、再度の画像スキャン操作をユーザーに促すメッセージを表示させる。これにより、ユーザーは、画像スキャン操作を再度行い、スキャナー部1は、再度、画像読取を実行する。
次に、コーデック用ASIC20による圧縮処理について説明する。
コーデック用ASIC20は、1バンド分の画像データをワークメモリー領域19から読み出して圧縮し、1バンド分の圧縮済みの画像データを二次ページメモリー領域21に書き込んでいく(ステップS1)。その際、主制御部4は、各ページについて、コーデック用ASIC20による処理済みのバンドの数をカウントする。なお、このとき、1バンド分の圧縮前の画像データのサイズは一定であるが、1バンド分の圧縮済みの画像データのサイズは一定ではない。各バンドの圧縮済み画像データは、1つ前のバンドの圧縮済み画像データに隙間なく連続して書き込まれる。各バンドの圧縮済み画像データの先頭記憶位置および終端記憶位置(またはサイズ)は、主制御部4により管理されて、二次ページメモリー領域21から各バンドの圧縮済み画像データを読み出すときには、主制御部4により管理されている先頭記憶位置および終端記憶位置(またはサイズ)から、各バンドの圧縮済み画像データの読出位置が特定される。
コーデック用ASIC20は、その画像データの書込位置が二次ページメモリー領域21の終端アドレスに到達したか否かを監視している(ステップS2)。
1バンド分の圧縮済みの画像データの書き込みが完了すると、コーデック用ASIC20は、1ページ分のバンドの処理が完了したか否かを判定し(ステップS3)、1ページ分のバンドの処理が完了していなければ、ステップS1に戻り、次のバンドの処理を同様に行う。
コーデック用ASIC20が、画像データの書込位置が二次ページメモリー領域21の終端アドレスに到達したことを検出すると、主制御部4は、コーデック用ASIC20による処理済みバンド数のカウント値から、1ページにおける未処理の残りバンド数を特定する(ステップS4)。
次に、主制御部4は、その残りバンド数がバッファー領域19a〜19dの数以下であるか否かを判定する(ステップS5)。
残りバンド数がバッファー領域19a〜19dの数より大きい場合、主制御部4は、エラー通知を行い(ステップS6)、この圧縮処理を中止する。主制御部4は、エラー通知として、例えば図示せぬ操作パネルにエラーメッセージを表示させる。
一方、残りバンド数がバッファー領域19a〜19dの数以下である場合、主制御部4は、その残りバンド数およびバッファー領域19a〜19dの数から、使用終了したバッファー領域がワークメモリー領域19にあるか否かを判定する(ステップS7)。つまり、残りバンド数が、バッファー領域19a〜19dの数より小さいか否かが判定される。
この残りバンド数がバッファー領域19a〜19dの数より小さい場合には、使用終了したバッファー領域がワークメモリー領域19にあると判定される。また、ワークメモリー領域19におけるバッファー領域19a〜19dの数から残りバンド数を減算して得られる値が、使用終了したバッファー領域の数となる。
使用終了したバッファー領域がワークメモリー領域19にあると判定した場合、主制御部4は、コーデック用ASIC20に、ワークメモリー領域19を使用して圧縮処理を続行させる(ステップS8)。つまり、コーデック用ASIC20は、画像データの書込位置が二次ページメモリー領域21の終端アドレスに到達したことを検出したときのバンドについての圧縮処理後の画像データの一部または全部、並びにそれ以降のバンドを、連続して、ページメモリー領域21とそれに隣接するバッファー領域19aに、未処理のバンドの画像データを上書きしないように書き込む。
ステップS8の処理の後、ステップS2では、コーデック用ASIC20は、画像データの書込位置が、上述の「空き」となったバッファー領域の終端に到達したか否かを監視し、画像データの書込位置が、未処理のバンドの画像データが存在しないバッファー領域の終端に到達した場合、ステップS4以降の処理が再度実行される。ただし、ステップS5,S7の処理は、ワークメモリー領域19内のバッファー領域の数は、前回、「空き」となったバッファー領域の数を減らして行われる。
一方、使用終了したバッファー領域がワークメモリー領域19にない場合(つまり、残りバンド数がバッファー領域19a〜19dの数と同一である場合)、主制御部4は、残りバンド数分の圧縮処理後の画像データのためのメモリー領域を、上述のような別の用途に確保している領域から調達可能か否かを判定する(ステップS9)。なお、1バンド分の圧縮処理後の画像データのために確保するメモリー領域のサイズは予め決められている。
残りバンド数分の圧縮処理後の画像データのためのメモリー領域を、上述のような別の用途に確保している領域から調達可能ではない場合、主制御部4は、エラー通知を行い(ステップS10)、この圧縮処理を中止する。主制御部4は、エラー通知として、例えば図示せぬ操作パネルにエラーメッセージを表示させる。
残りバンド数分の圧縮処理後の画像データのためのメモリー領域を、上述のような別の用途に確保している領域から調達可能である場合、主制御部4は、上述のようにして、特定した不足量の領域を確保し、確保した領域を二次ページメモリー領域21に追加する(ステップS11)。
そして、コーデック用ASIC20の場合、主制御部4は、コーデック用ASIC20の前段(上流側)に一次ページメモリー領域15が存在するため、圧縮処理前の1ページ分の画像データが残っていると判断し(ステップS12)、主制御部4は、内部リトライを行い(ステップS14)、1ページ分の圧縮処理を再実行する。主制御部4は、内部リトライの際、コーデック用ASIC16および画像処理用ASIC18を再度動作させて、コーデック用ASIC20に画像データを再度供給し、ステップS1から同様の処理をコーデック用ASIC20に実行させる。
以上のように、上記実施の形態によれば、主制御部4は、1ページ分の画像データがページメモリー領域15,21に書き込まれる前にコーデック用ASIC14,20による画像データの書込位置がページメモリー領域15,21の終端に到達した場合、1ページ分の画像データについて複数のバッファー領域13a〜13d,19a〜19dのうちの少なくとも1つが使用終了しているときには、ページメモリー領域15,21および使用終了しているバッファー領域を使用してコーデック用ASIC14,20の処理を継続させる。
そのバッファー領域13a〜13d,19a〜19dは、それぞれ、先頭のバッファー領域13a,19aから最後のバッファー領域13d,19dまで連続して確保される。そして、1ページ内のバンドの数が各ワークメモリー領域13,19における複数のバッファー領域13a〜13d,19a〜19dの数の倍数ではない場合において、1ページ内の最後のバンドの受け渡しに最後のバッファー領域13d,19dが使用されるように、先頭のバッファー領域13a,19d以外のバッファー領域(バッファー領域13b〜13dのいずれか、およびバッファー領域19b〜19dのいずれか)から順番に繰り返し、バッファー領域13a〜13d,19a〜19dが使用される。
これにより、画像データのサイズがページメモリー領域15,21のサイズより大きい場合、ページメモリー領域15,21に加えてワークメモリー領域13,19が使用されるため、画像データのサイズがページメモリー領域15,21のサイズより大きい場合に、画質を低下させずに処理を実行することができる。また、先頭のバッファー領域13a,19aから順番に使用終了していくため、ワークメモリー領域13,19内の既存の画像データを移動させずに、ページメモリー領域15,21に対する追加領域として、先頭のバッファー領域13a,19aから順番に画像データを書き込んでいくことができる。
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
例えば、上記実施の形態では、ページメモリー領域15,21の前段の処理が圧縮処理であるが、別の種別の処理であってもよい。
また、上記実施の形態では、ステップS7においてワークメモリー領域13,19に「空き」のバッファー領域がない場合には、別の用途のメモリー領域を確保しているが、その代わりに、ページメモリー領域15,21に少なくとも1バンド分の「空き」領域が発生するまで圧縮処理を中断して待機し、その「空き」領域を使用して圧縮処理を再開するようにしてもよい。例えば、後段の処理回路によりページメモリー領域15,21から画像データが読み出されると、その画像データが記憶されている領域が「空き」となる。