本発明の実施形態に係る画像処理装置としてMFP(Multi-functional Peripheral)を挙げる。MFPはオフィスワークに有用な複数の機能を集約した複合型の情報機器であり、投入されるジョブに応じて、コピー機、プリンター、ネットワークスキャナー、ファクシミリ機、ドキュメントサーバーなどとして動作する。
図1に示されるように、MFP1は、メインコントローラー10、画像処理部13、ストレージ14、通信インタフェース15、操作パネル16、2つのイメージスキャナー17A,17B、プリンターエンジン19、および電源回路20を備える。
メインコントローラー10は、MFP1を制御するためのプログラムを実行するCPU(Central Processing Unit)、プログラムを記憶するROM(Read Only Memory)、およびプログラム実行のワークアリアとして用いられるRAM(Random Access Memory)を有している。
画像処理部13は、イメージスキャナー17A,17Bのそれぞれから入力される画像データ(スキャンデータ)を圧縮する処理、および圧縮された画像データを伸張する処理を行なう。画像処理部13では、圧縮と伸張とに用いるメモリの使用方法として、後述するように第1のメモリ使用方法と第2のメモリ使用方法とが画像データの入出力の状況に応じて設定される。
ストレージ14は例えば数百ギガバイト以上の記憶容量をもつハードディスクドライブである。ストレージ14は、アプリケーションプログラムの保存、設定データの保存、画像処理部13で圧縮された画像データの一時的な記憶などに用いられる。また、ストレージ14には、文書(ドキュメント)の保存用のボックス群が設けられる。ボックス群は、個々のユーザーに割り当てられる個人ボックスおよび複数のユーザーが共有する共有ボックスといった複数のボックスから構成される。
通信インタフェース15は、MFP1と外部装置との通信を可能にする。通信インタフェース15は、MFP1をLAN(Local Area Network)に通信可能に接続するネットワーク・インタフェース・カード(NIC)、および公衆電話回線によるファクシミリ通信のためのモデムを含んでいる。
操作パネル16は、タッチパネルディスプレイとハードキーパネルとを有している。タッチパネルディスプレイは、ソフトウェアキーであるボタンの配置された操作用の画面を表示し、画面に対するタッチ操作を検出する入出力デバイスである。タッチパネルディスプレイは、液晶パネルとその表面に密着する透光性のタッチ面部を有したタッチパネルとから構成される。ハードキーパネルには、処理の開始を指示するスタートキーを含む複数のハードキーが配置されている。
2つのイメージスキャナー17A,17Bはそれぞれ、プラテンガラス上に置かれた原稿シートからそれに記録されている画像を線順次走査によって光学的に読み取る。本実施形態では、これらイメージスキャナー17A,17Bが同型であり、カラー画像およびモノクロ画像の読取りが可能であり、最大読取りサイズがA3サイズであり、かつ共にADF(Auto Document Feeder)を備えているものとする。イメージスキャナー17A,17Bは、原稿シートのサイズを公知の手法によって検知するためのシート検出信号を出力するセンサーを有している。
なお、以下においてイメージスキャナー17A,17Bを総称してイメージスキャナー17ということがある。
プリンターエンジン19は、コピー、プリントおよびファクシミリ受信において、例えば電子写真法によって画像を用紙に印刷する。印刷方法はインクジェット法または他の方法であってもよい。
電源回路20は、商用交流電源から供給される電力を、駆動系および制御系にそれらに適した電圧の電力に変換して供給する。
このようなMFP1は、操作パネル16を用いてユーザーが指定するジョブ、および外部装置からのアクセスによって指定されるジョブを実行する。MFP1が実行可能な様々なジョブの中に、原稿シートからの画像の読取りを伴うジョブ(これを“画像読取りジョブ”と呼称する)が含まれる。1つの画像読取りジョブでは、イメージスキャナー17A,17Bのいずれか片方が用いられる。
画像読取りジョブとして、コピー、スキャン・トゥー・ボックス、およびデータ送信がある。コピーは読み取った原稿画像を用紙に印刷するジョブである。スキャン・トゥー・ボックスは、読取りで得られた画像データをストレージ14のボックスに保存データとして格納するジョブである。データ送信は、読取りで得られた画像データに基づいて送信用の画像データを生成し、生成した画像データを指定された相手先へ送るジョブである。データ送信で指定される相手先は、パーソナルコンピューターに代表されるユーザー端末、ファイルサーバー、電子メールサーバー、ファクシミリ機などである。MFP1の内部にサーバーが設けられている場合、そのサーバーを相手先とすることができる。
MFP1は、イメージスキャナー17Aによる画像の読取りと、イメージスキャナー17Bによる画像の読取りとを並行して行なうことができる。MFP1では、ユーザーが投入した画像読取りジョブ(J)によってイメージスキャナー17A,17Bの一方が使用されているときに、当該ユーザーまたは他のユーザーはイメージスキャナー17A,17Bの他方を使用する画像読取りジョブ(K)の実行開始を指示することができる。
図2は画像読取りジョブに関係する画像処理部13の構成を示している。図示のように画像処理部13はASIC(Application Specific Integrated Circuit)30と符合メモリ35とを有する。ASIC30は、ビットマップメモリ31、圧縮・伸張回路32、DMA転送回路33、およびコントローラー34を備える。
ビットマップメモリ31は、ラスター形式の画像データの一時記憶に用いられる。ビットマップメモリ31は、2つのイメージスキャナー17A,17Bの両方を用いて複数の原稿の読取りを並行して行ないながら画像を印刷するのを可能にするメモリ容量を有している。
圧縮・伸張回路32は、画像データの圧縮および圧縮した画像データの伸張を受け持つ。圧縮・伸張回路32は、イメージスキャナー17A,17Bのそれぞれによって得られた画像データを並行して圧縮することが可能に構成されている。並行して圧縮するための構成は、同時に圧縮を行なうことが可能な複数の圧縮器を備えるものでもよいし、複数の画像データを時分割で圧縮するものであってもよい。
DMA転送回路33は、画像処理部13の内部のデータ転送および画像処理部13と外部とのデータの入出力をDMA(Direct Memory Access)によって行なうための回路である。
コントローラー34は、ビットマップメモリ31および符合メモリ35のそれぞれのメモリ領域を管理する。コントローラー34は、DMA転送回路33に対して、ビットマップメモリ31および符合メモリ35のそれぞれにおけるデータの格納または読出しのためにアクセスすべきメモリ領域を指定する。このような処理を実現するための制御プログラムを実行するプロセッサー340をコントローラー34は備えている。プロセッサー340が実行する制御プログラムはASIC30内のROMによって記憶されている。
図3は画像処理部内のデータの流れを示している。画像処理部13では次の[1]〜[8]のようにデータが転送される。
[1] 画像読取りジョブの実行が開始されると、使用される一方のイメージスキャナー17(例えばイメージスキャナー17A)から原稿シートの走査で得られた画像データD1が逐次に画像処理部13に入力される。入力された画像データD1はDMA転送されてビットマップメモリ31にいったん格納される。
[2] 原稿の1ページ分またはそれより少ないデータ量の画像データD1がビットマップメモリ31に格納されると、ビットマップメモリ31から圧縮・伸張回路32へ画像データD1がDMA転送される。このとき、イメージスキャナー17Aからの画像データD1の入力が続いている場合、ビットマップメモリ31からの格納されている画像データD1の読出しと並行して、イメージスキャナー17Aから新たに入力された画像データD1のビットマップメモリ31への格納が行なわれる。
[3] 画像データD1を圧縮した画像データD2が、圧縮・伸張回路32から符合メモリ35へDMA転送される。
[4] 符合メモリ35からストレージ14へ画像データD2がDMA転送される。
以上の[1]〜[4]の転送は並行して行なわれる。すなわち、画像データD1をビットマップメモリ31に格納しつつ先に格納された画像データD1を読み出して圧縮し、得られた画像データD2を直ちに符合メモリ35に一時記憶させながら、適宜に画像データD2をストレージ14に蓄積する、という処理が行なわれる。
なお、ストレージ14への転送に先立って画像データD1を圧縮することにより、転送対象のデータ量を低減して転送の所要時間を短縮することができる。
画像読取りジョブがスキャン・トゥー・ボックスである場合には、1枚または複数枚の原稿シートから得られる画像データD1に対応する画像データD2が全てストレージ14に格納されることでジョブが完了する。
これに対して、画像読取りジョブがコピーまたはデータ送信である場合、[1]〜[4]の転送と並行して、次の[5]〜[8]の転送が行なわれる。図3ではコピーの場合が例示されている。
[5] ストレージ14から符合メモリ35へ1ページ分の画像データD2がDMA転送される。
[6] 符合メモリ35から圧縮・伸張回路32へ1ページ分の画像データD2がDMA転送される。画像データD2は圧縮・伸張回路32によって伸張される。
[7] 画像データD2を伸張した画像データD3が、圧縮・伸張回路32からビットマップメモリ31へDMA転送される。
[8] ビットマップメモリ31からプリンターエンジン19へ画像データD3がDMA転送される。この後、プリンターエンジン19内で画像データD3に基づいて印刷用のラスター画像データが生成される。
[1]〜[4]の転送と[5]〜[8]の転送とが並行して行なわれるとき、符合メモリ35には、圧縮・伸張回路32からの画像データD2を記憶する入力用のメモリ領域と、ストレージ14から読み出される1ページ分の画像データD2を記憶する出力用のメモリ領域とが割り当てられる。
このような[1]〜[8]の転送が行なわれる画像処理部13におけるビットマップメモリ31および符合メモリ35の使用に関して、第1のメモリ使用方法および第2のメモリ使用方法がある。画像処理部13では、これら2つのメモリ使用方法が画像読取りジョブの実行開始後の符合メモリ35の空きメモリ容量の増減に応じて動的に使い分けられる。
図4(A)は第1のメモリ使用方法を示し、図4(B)は第2のメモリ使用方法を示している。図4(A)、(B)では、複数枚の原稿シートで構成されるドキュメント(これを原稿という)40の画像をイメージスキャナー17Aが読み取る場合が想定されている。ただし、原稿40は1枚の原稿シートであってもよいし、イメージスキャナー17Bが原稿40の画像を読み取ってもよい。図中、メモリ領域60,70に付された斜線は1ページ分のメモリ容量(メモリサイズ)を有することを表わしている。斜線の付されていないメモリ領域50,80のメモリ容量は1ページ分未満である。
本明細書において、「ページ」という用語は、原稿シートの片面を意味する。「1ページ分」とは、原稿シートの片面から読み取られる画像の全体に対応する分量であることを意味する。
図4(A)に示される第1のメモリ使用方法は、各画像読取りジョブについて、ビットマップメモリ31に原稿40の1ページ分よりも少ない分量(例えば1ぺージ分の半分)の画像データD1の格納が可能なメモリ領域50を確保し、符合メモリ35に1ページ分の圧縮された画像データD2の格納が可能なメモリ領域60を確保する方法である。この方法は、符合メモリ35内の解放されたメモリ領域の容量である空きメモリ容量がメモリ領域60の確保に必要な容量以上である場合に適用される。
第1のメモリ使用方法を適用した場合、例えば2分の1ぺージ分の画像データD1がメモリ領域50に格納された段階(つまり、1ぺージ分の画像データD1が格納される段階よりも早い段階)で、画像データD1の圧縮が開始される。そして、圧縮された画像データD2がメモリ領域60に1ページ分貯められ、ページ単位でストレージ14に転送される。
図4(B)に示される第2のメモリ使用方法は、各画像読取りジョブについて、ビットマップメモリ31に原稿40の1ページ分の画像データD1の格納が可能なメモリ領域70を確保し、符合メモリ35に1ページ分よりも少ない量の画像データD2の格納が可能なメモリ領域80を確保する方法である。この方法は、符合メモリ35に1ページ分のメモリ領域60を確保することができない場合に適用される。メモリ領域80のメモリ容量は、符合メモリ35の空きメモリ容量を超えない範囲内の分量に設定される。
第2のメモリ使用方法を適用した場合、1ぺージ分の画像データD1がメモリ領域70に格納され始めた後、圧縮してメモリ領域80に格納し切れる量の画像データD1が格納されるごとに、画像データD1の圧縮が行なわれる。そして、圧縮されてメモリ80に一時記憶された画像データD2が、逐次にストレージ14に転送される。1ページ分の画像データD2の保持はストレージ14によって行なわれる。
第2のメモリ使用方法には、符合メモリ35の空きメモリ容量が1ページ分に満たない場合に、メモリ割当てを行なおうとしている画像読取りジョブではない他の画像読取りジョブが終了して空きメモリ容量が1ページ分以上に増えるのを待たずに、原稿40の読取りを始めることができるという利点がある。ただし、第1のメモリ使用方法と比べて1ページ当たりの圧縮処理の回数が多くなって転送の効率が低下し、原稿40を走査してデータをストレージ14に貯める一連の動作のパフォーマンス(処理速度)が第1のメモリ使用方法を適用した場合よりも低くなることがある。
図5は画像処理部のコントローラーの機能構成を示している。コントローラー34は、入力モード判別部341、必要メモリ容量算出部342、空きメモリ容量算出部343、およびメモリ領域割当て部344を有している。これら構成要素は、プロセッサー340が制御プログラムを実行することによって実現される機能要素である。
入力モード判別部341は、MFP1に投入された画像読取りジョブに関してメインコントローラー10から与えられる情報に基づいて、画像処理部13におけるメモリ割当てに関わる入力モードを判別する。入力モードは、投入された画像読取りジョブの種別、使用するイメージスキャナー17A,17Bの個数、および読取り条件(読取り対象ページのサイズ、解像度、カラーモードなど)によって分類される。
必要メモリ容量算出部342は、1ページ分の圧縮された画像データD2を格納する場合に符合メモリ35に割り当てるべきメモリ領域のメモリ容量である必要メモリ領域(X)を算出する。必要メモリ領域(X)は、読取り条件に依存する。
空きメモリ容量算出部343は、符合メモリ35における入力に利用可能なメモリ領域のメモリ容量(Y)を算出する。メモリ容量(Y)は、画像読取りジョブの種別(出力用のメモリ領域の必要なジョブかどうか)に依存する。
メモリ割当て部344は、必要メモリ容量算出部342および空きメモリ容量算出部343によって得られた必要メモリ領域(X)とメモリ容量(Y)とに応じて、ページの読取りに適用するメモリ使用方法を決める。そして、メモリ割当て部344は、ビットマップメモリ31および符合メモリ35のそれぞれに、メモリ使用方法に応じたメモリ容量をもつメモリ領域を割り当て、割り当てたメモリ領域のアドレスをDMA転送回路33に通知する。
図6は、画像処理部のコントローラーが実行するメモリ使用方法の設定処理の流れを示している。コントローラー34は、メインコントローラー10から画像読取りジョブがMFP1に投入されたことが通知されたときに、図6の処理(これをメインルーチンという)を実行する。
ここでの説明では、原稿40の画像を読み取る画像読取りジョブ(J1)の投入を契機としてメインルーチンの実行が開始され、この画像読取りジョブ(J1)の投入に際してユーザーがイメージスキャナー17Aを選択したものとする。画像読取りジョブ(J1)が完了する以前に、他の画像読取りジョブ(J2)が投入される場合があり得る。この場合、画像読取りジョブ(J2)にイメージスキャナー17Bが用いられ、2つのイメージスキャナー17A,17Bのそれぞれから画像データD1が画像処理部13に入力されることになる。
コントローラー34は、イメージスキャナー17Aが原稿40から1ページずつ順に連続的に画像を読み取る過程で、各ページの読取りが開始されるとき(S01でYES)、原稿40の態様が“混載”であるかどうかをチェックする(S02)。“混載”とは、原稿40を構成する複数の原稿シートのサイズが同一ではない態様、すなわち少なくとも1枚の原稿シートのサイズが他の原稿シートのサイズと異なる態様である。
本実施形態では、ステップS02のチェックは、画像読取りジョブ(J1)の投入の際にユーザーによって混載モードが選択されているかどうかのチェックとされている。コントローラー34は、メインコントローラー10から取得した画像読取りジョブ(J1)の設定に関する情報に基づいて、混載モードが選択されているかどうかをチェックする。コントローラー34は、混載モードが選択されている場合、原稿40の態様が混載であると判断し、混載モードが選択されていない場合、原稿40の態様が混載ではないと判断する。
原稿40の態様が混載ではない場合(S02でNO)、コントローラー34は、現在の画像入力数を取得し(S03)、前回取得した画像入力数と比べることによって画像入力数が変化したかどうかをチェックする(S04)。画像入力数は、イメージスキャナー17A,17Bのうち、使用されている状態のものの個数である。使用されている状態とは、原稿40がADFの給紙トレイにセッティングされてから最後のページの走査が終了するまでの状態である。
メインルーチンの実行が開始された後に初めて取得される画像入力数は「1」である。初めて画像入力数が取得されるとき、前回の画像入力数は「0」とされる。そして、ステップS04のチェックでは、画像入力数が「0」から「1」へ変化したと判断され、チェック結果はYESとなる。
画像読取りジョブ(J1)の実行中に画像読取りジョブ(J2)の実行が開始された場合、画像読取りジョブ(J2)の実行が開始された後に初めて取得される画像入力数は「2」である。このとき前回の画像入力数は「1」であるので、ステップS04のチェックでは、画像入力数が「1」から「2」へ変化したと判断され、チェック結果はYESとなる。
また、画像読取りジョブ(J1)の実行中に画像読取りジョブ(J2)の実行が開始され、その後にいずれか一方の画像読取りジョブによるイメージスキャナー17の使用が終了した場合、イメージスキャナー17の使用が終了した後に初めて取得される画像入力数は「1」である。このとき前回の画像入力数は「2」であるので、ステップS04のチェックでは画像入力数が「2」から「1」へ変化したと判断され、チェック結果はYESとなる。
一方、画像読取りジョブ(J1)および画像読取りジョブ(J2)のいずれか1つのみが実行されている状態での2回目以降のステップS03の実行で取得される画像入力数は「1」である。このとき前回の画像入力数は「1」であるので、ステップS04のチェックでは画像入力数が変化していないと判断され、チェック結果はNOとなる。ステップS04のチェック結果がNOである場合、フローはステップS08へ進む。
画像読取りジョブ(J1)および画像読取りジョブ(J2)によって2つのイメージスキャナー17A,17Bの両方が使用されている状態での2回目以降のステップS03の実行で取得される画像入力数は「2」である。このとき前回の画像入力数は「2」であるので、ステップS04のチェックでは画像入力数が変化していないと判断され、チェック結果はNOとなる。
ステップS04のチェック結果がYESである場合、フローはステップS05へ進み、コントローラー34は、必要メモリ容量の算出ルーチン(S05)、空きメモリ容量の算出ルーチン(S06)、およびメモリ割当てルーチン(S07)を実行する。これら3つのルーチンが実行されることによって、ビットマップメモリ31および符合メモリ35のメモリ割当てが必要に応じて変更される。
ステップS07のルーチンを実行した後、コントローラー34は、イメージスキャナー17Aからの画像入力(画像データD1の入力)が終了したかどうかをチェックする(S08)。イメージスキャナー17Bも使用された場合は、イメージスキャナー17Bからの画像入力が終了したかどうかもチェックする。すなわち、イメージスキャナー17A,17Bの一方または両方が使用されている状態から両方が共に使用されていない状態になったかどうかをチェックする。
ステップS08のチェック結果がYESである場合、コントローラー34はメインルーチンの実行を終える。その際、コントローラー34は、ビットマップメモリ31および符合メモリ35のそれぞれに確保されている入力用のメモリ領域を解放して空きメモリ領域とするメモリ管理処理を行なう。
図7は図6の必要メモリ容量の算出ルーチンのフローチャートである。
コントローラー34は、イメージスキャナー17による読取りの解像度、同じく読取りのカラーモード、およびイメージスキャナー17による走査が開始されまたは開始されようとしているページの画像サイズを、メインコントローラー10から取得する(S51、S52、S53)。解像度は、200dpi、300dpi、400dpi、600dpiといった選択肢のうちのユーザーによって選択されたいずれかである。カラーモードは、フルカラー、グレースケール、モノクロ2階調といった選択肢のうちのユーザーによって選択されたいずれかであり、1画素あたりのビット数を特定する情報として取得される。画像サイズは、イメージスキャナー17のプラテンガラス上に置かれまたは置かれようとしている原稿シートのサイズである。
コントローラー34は、取得した解像度、カラーモードおよび画像サイズに基づいて、必要メモリ容量(X)を算出する(S54)。この必要メモリ容量(X)とは、1ページ分の画像データD1を圧縮した画像データD2を符合メモリ35に記憶させるのに必要なメモリ容量である。例えば、読取り条件が、最大読取りサイズであるA3サイズ(297mm×420mm)の原稿シートの画像を600dpiでフルカラー(1画素あたり24ビット)で読み取るという条件(これを「最大条件」と呼称する)である場合、画像データD1のデータ量は、おおよそ200メガバイトになる。このデータ量と圧縮率との積が必要メモリ容量(X)である。圧縮率は画像の内容に依存し、圧縮を行なわない段階では真の圧縮率は不明である。そこで、ステップS54では、あらかじめ想定される最も低い圧縮率よりもマイジンを見込んで低く定められた圧縮率(例えば70%)を用いて必要メモリ容量(X)が算出される。ここでの例のように画像データD1のデータ量が200メガバイトである場合、必要メモリ容量(X)は140メガバイトとなる。
図8は図6の空きメモリ容量の算出ルーチンのフローチャートである。
コントローラー34は、符合メモリ35の現在の空きメモリ容量(Z)を取得する(S61)。空きメモリ容量(Z)は、入力用または出力用に既に割り当てられてるメモリ領域のメモリ容量に依存する。すなわち、符合メモリ35のメモリ容量から解放されていないメモリ領域のメモリ容量を差し引いた容量が空きメモリ容量(Z)である。なお、必ずしも空きメモリ容量(Z)の取得を当該ルーチンの最初の処理として行なう必要はなく、後述のステップS70を実行する以前に空きメモリ容量(Z)を取得すればよい。
コントローラー34は、注目する原稿読取りジョブが出力用のメモリ領域を必要とするジョブであるかどうかをチェックする。注目する原稿読取りジョブとは、実行中の1つまたは2つの原稿読取りジョブのうち、メモリ割当てを行ないたい原稿読取りジョブ、すなわち本ルーチンの実行の契機となった1ページの読取りの開始(図6のステップS01)に対応する原稿読取りジョブである。
注目する原稿読取りジョブがスキャン・トゥー・ボックスである場合、ストレージ14から画像データD2を読み出さないので、出力用のメモリ領域は不要である。これに対して、注目する原稿読取りジョブがコピーまたはデータ送信である場合、圧縮されている画像データD2を伸張してプリンターエンジン19または通信インタフェース15へ送るために、出力用のメモリ領域が必要である。
ジョブの種別ごとの出力用のメモリ領域の要否を示す情報を参照することによって、注目する原稿読取りジョブが出力用のメモリ領域を必要としないジョブであるとコントローラー34が判断した場合(S62でNO)、フローはステップS63へ進む。
ステップS63において、コントローラー34は出力ページ数(Q)を「0」とする。出力ページ数(Q)は、何ページ分の出力用のメモリ領域が必要であるかを示す変数である。伸張がページ単位で行なわれることから、必要なメモリ容量を1ページ分の画像データ量を基準に計算するために出力ページ数(Q)が定められる。出力ページ数(Q)が「0」であることは、必要なメモリ容量が0ページ分であること、すなわち出力用のメモリ領域が不要であることを意味する。
一方、注目する原稿読取りジョブが出力用のメモリ領域を必要とするジョブであるとコントローラー34が判断した場合(S62でYES)、フローはステップS62からステップS64へ進み、次のように出力モードに応じて出力ページ数(Q)が定められる。
まず、ステップS64でコントローラー34は、少なくとも1ページ分のメモリ領域が必要であることから、出力ページ数(Q)を「1」とする。
次に、コントローラー34は、出力モードが、90度単位の指定された角度だけ回転させて画像の向きを変える「回転」、または画像のサイズを変える「拡大/縮小」を行なうモードであるかどうかをチェックする(S65)。「回転」および「拡大/縮小」のそれぞれは、処理前のデータの記憶と処理後のデータの記憶とに1ページ分ずつ計2ページ分のメモリ領域を必要とする。したがって、出力モードが「回転」または「拡大/縮小」を行なうモードであると判断した場合(S65でYES)、コントローラー34は出力ページ数(Q)を「2」とする(S66)。ステップS65のチェック結果がNOである場合、フローはステップS66をジャンプしてステップS67へ進む。
なお、「回転」および「拡大/縮小」の両方の処理を行なう出力モードである場合、計2ページ分メモリ領域を用いて一方の処理と他方の処理とが順に行なわれる。すなわち、この場合も出力ページ数(Q)は「2」とされる。
ステップS67において、コントローラー34は、出力モードが複数のページの画像を1ページに配置する「集約」(N in 1ともいう)を行なうモードであるかどうかをチェックする。Nは記録シートの1つの面に集約するページの数(2、4、6、9など)である。「集約」では、Nページ分の画像データD2を符合メモリ35に記憶させるので、Nページ分のメモリ領域が必要である。そして、「回転」または「拡大/縮小」と「集約」とを行なう場合、2Nページ分のメモリ領域が必要である。
ステップS67のチェック結果がYESである場合、コントローラー34は、出力ページ数(Q)をそのN倍の値「N*Q」に置き換える(S68)。つまり、ステップS68で、出力ページ数(Q)は「N」または「2N」となる。
フローはステップS68からステップS69へ進む。また、ステップS67のチェック結果がNOである場合、フローはステップS67をジャンプしてステップS69へ進む。
ステップS69において、コントローラー34は、符合メモリ35に割り当てるべき出力用のメモリ領域のメモリ容量(V)を算出する。ここで行なう演算は、1ページ分の画像データD2のデータ量に相当する図7のステップS54で算出した必要メモリ容量(X)とステップS62からステップS68までの処理で得られた出力ページ数(Q)との乗算である。すなわち、必要メモリ容量(X)と出力ページ数(Q)との積がメモリ容量(V)として算出される。出力ページ数(Q)が「0」の場合、メモリ容量(V)は「0」となる。
続いて、コントローラー34は、符合メモリ35の空きメモリ領域(Z)のうちの入力に利用可能なメモリ領域のメモリ容量(Y)を算出する(S70)。メモリ容量(Y)は、ステップS61で取得した空きメモリ容量(Z)からステップS69で算出した出力用のメモリ容量(V)を差し引いた値である。メモリ容量(Y)を算出したコントローラー34はメインルーチンへ戻ってメモリ割当てルーチンを実行する。
図9は図6のメモリ割当てルーチンのフローチャートである。
コントローラー34は、圧縮・伸張回路32で圧縮された画像データD2の1ページ分を符合メモリ35に格納することが可能であるかどうかを判定する(S71)。この判定に際して、コントローラー34は、既に算出されている必要メモリ容量(X)とメモリ容量(Y)とを比較する。メモリ容量(Y)が必要メモリ容量(X)以上である場合、コントローラー34は1ページ分の格納が可能であると判定し、判定結果を「可能」とする。メモリ容量(Y)が必要メモリ容量(X)未満である場合、コントローラー34は1ページ分の格納が可能ではないと判定し、判定結果を「不可能」とする。
判定結果が「可能」である場合、コントローラー34は、符合メモリ35およびビットマップメモリ31について、第1のメモリ使用方法を適用したメモリ割当てを行なう。すなわち、図4(A)のように、符合メモリ35内に1ページ分の画像データD2の記憶が可能なメモリ容量をもつメモリ領域60を確保する。このとき、メモリ領域60のメモリ容量は必要メモリ容量(X)とされる。また、ビットマップメモリ31内に1ページ分未満の画像データD1の記憶が可能なメモリ容量をもつメモリ領域50を確保する。
一方、判定結果が「不可能」である場合、コントローラー34は、バンドサイズ(R)を設定するバンドサイズ設定サブルーチンを実行し(S74)、その後に第2のメモリ使用方法を適用したメモリ割当てを行なう(S75)。バンドサイズ(R)とは、1ページ分の画像データD1を複数回に分けて圧縮する過程において、各回の圧縮に際してビットマップメモリ31から読み出して符合メモリ35へ転送する画像データD1のデータ量である。なお、ステップS75の処理を実行した後にステップS74のサブルーチンを実行するようにしてもよい。
図10は図9のバンドサイズ設定サブルーチンのフローチャートである。このサブルーチンでは、入力に利用可能な空きメモリ領域のメモリ容量(Y)に応じて、できるだけ大きいバンドサイズ(R)が設定される。それは、バンドサイズ(R)を大きくすることによって、ビットマップメモリ31から圧縮・伸張回路32への転送の回数が少なくなってパフォーマンスが高くなるからである。
コントローラー34は、上述の必要メモリ容量(X)およびメモリ容量(Y)を取得し(S701、S702)、必要メモリ容量(X)に対するメモリ容量(Y)の比率(Y/X)を算出する(S703)。そして、コントローラー34は、あらかじめ定められた複数の閾値(50%、34%、25%、20%、17%)と比率(Y/X)との大小関係に応じて、次のようにバンドサイズ(R)を設定する。なお、各閾値および閾値の個数は例示に限るものではなく、適宜選定することができる。
比率(Y/X)が50%以上100%未満である場合(S704でYES)、コントローラー34は、必要メモリ容量(X)の0.5倍をバンドサイズ(R)に設定する(S705)。この場合、1ページ分の画像データD1が2回に分けて圧縮されることになる。
比率(Y/X)が34%以上50%未満である場合(S706でYES)、コントローラー34は、必要メモリ容量(X)の0.34倍をバンドサイズ(R)に設定する(S707)。この場合、1ページ分の画像データD1が3回に分けて圧縮されることになる。
比率(Y/X)が25%以上34%未満である場合(S708でYES)、コントローラー34は、必要メモリ容量(X)の0.25倍をバンドサイズ(R)に設定する(S709)。この場合、1ページ分の画像データD1が4回に分けて圧縮されることになる。
比率(Y/X)が20%以上25%未満である場合(S710でYES)、コントローラー34は、必要メモリ容量(X)の0.2倍をバンドサイズ(R)に設定する(S711)。この場合、1ページ分の画像データD1が5回に分けて圧縮されることになる。
比率(Y/X)が17%以上20%未満である場合(S712でYES)、コントローラー34は、必要メモリ容量(X)の0.17倍をバンドサイズ(R)に設定する(S713)。この場合、1ページ分の画像データD1が6回に分けて圧縮されることになる。
比率(Y/X)が17%未満である場合(S712でNO)、コントローラー34は、あらかじめ定められた最小バンドサイズ(Rmin)をバンドサイズ(R)に設定する(S714)。最小バンドサイズ(Rmin)ではなく、メモリ容量(Y)をバンドサイズ(R)に設定してもよい。いずれにしても、この場合は1ページ分の画像データD1が7回以上に分けて圧縮されることになる。
以上のとおり、MFP1では、イメージスキャナー17Aおよびイメージスキャナー17Bのいずれかで原稿40から1つのページの読取りが開始されるごとに、画像処理部13に関するメモリ割当てが最適化される。次にメモリ割当ての複数の例を挙げる。
図11はメモリ割り当ての第1例を示している。
図11(A)では、1つの画像読取りジョブ(Ja)が実行中であり、イメージスキャナー17Aを用いて原稿43の読取りが行なわれている。イメージスキャナー17Bは使用されていない。原稿43はA3サイズ(最大読取りサイズ)の複数の原稿シートを有しており、A3サイズのページの読取りが進行中である。画像読取りジョブ(Ja)はスキャン・トゥー・ボックスである。スキャン・トゥー・ボックスでは出力用のメモリ領域を割り当てる必要がない。
図11(A)では、ページの読取りに第1のメモリ使用方法が適用されている。すなわち、ビットマップメモリ31には1ページ分未満の分量の画像データD1aの格納が可能なメモリ領域51が割り当てられ、符合メモリ35には1ページ分の圧縮された画像データD2aの格納が可能なメモリ領域61が割り当てられている。
符合メモリ35のメモリ容量は、画像処理部13の回路設計に際して、上述の最大条件での読取りに際して2ページ分の画像データD2の格納が可能となる最小限の分量に選定されている。したがって、図11(A)の状態で、符合メモリ35は、最大条件での少なくとも1ページ分の空きメモリ容量を有している。
図11(B)では図11(A)の状態から移行した状態が示されている。図11(B)では、イメージスキャナー17Aを用いる上述の画像読取りジョブ(Ja)とともに、イメージスキャナー17Bを用いて原稿44を走査する画像読取りジョブ(Jb)が実行中である。画像読取りジョブ(Jb)はスキャン・トゥー・ボックスである。原稿44はA3サイズの複数の原稿シートを有しており、イメージスキャナー17BによるA3サイズのページの読取り(SB)と、この読取り(SB)の開始時点で既に進行中であったイメージスキャナー17AによるA3サイズのページの読取り(SA)とが進行中である。
読取り(SB)の開始時点で、既に図11(A)と同様に第1のメモリ使用方法を適用して読取り(SA)が行なわれているものとする。読取り(SB)の開始に際して、図6のメインルーチンの実行によって、読取り(SB)に適用するメモリ使用方法が決まる。
読取り(SB)に適用するメモリ使用方法を決めるとき、上述のとおり符合メモリ35には、最大条件での少なくとも1ページ分の空きメモリ領域が存在する。つまり、読取り(SB)の必要メモリ容量(X)以上の空きメモリ容量(Z)を符合メモリ35が有しており、図9のステップ72の判定結果は「可能」となる。
したがって、図11(B)では読取り(SB)に第1のメモリ使用方法が適用されている。すなわち、ビットマップメモリ31には1ページ分未満の分量の画像データD1bの格納が可能なメモリ領域52が割り当てられ、符合メモリ35には1ページ分の圧縮された画像データD2bの格納が可能なメモリ領域62が割り当てられている。ビットマップメモリ31は入力用の2つのメモリ領域51,52を有し、符合メモリ35は入力用の2つのメモリ領域61,62を有している。
図12はメモリ割り当ての第2例を示している。
図12(A)では、1つの画像読取りジョブ(Jc)が実行中であり、イメージスキャナー17Aを用いて原稿45の読取りが行なわれている。イメージスキャナー17Bは使用されていない。原稿45はA3サイズの複数の原稿シートを有しており、A3サイズのページの読取りが進行中である。画像読取りジョブ(Jc)はスキャン・トゥー・ボックスである。
図12(A)では、ページの読取りに第1のメモリ使用方法が適用されている。すなわち、ビットマップメモリ31には1ページ分未満の分量の画像データD1cの格納が可能なメモリ領域53が割り当てられ、符合メモリ35には1ページ分の圧縮された画像データD2cの格納が可能なメモリ領域63が割り当てられている。図12(A)の状態において符合メモリ35は、最大条件での少なくとも1ページ分の空きメモリ容量(Z)を有している。
図12(B)では図12(A)の状態から移行した状態が示されている。図12(B)では、イメージスキャナー17Aを用いる上述の画像読取りジョブ(Jc)とともに、イメージスキャナー17Bを用いて原稿46を読み取る画像読取りジョブ(Jd)が実行中である。画像読取りジョブ(Jd)はコピーである。原稿46はA3サイズの複数の原稿シートを有しており、イメージスキャナー17BによるA3サイズのページの読取り(SD)と、この読取り(SD)の開始時点で既に進行中であったイメージスキャナー17AによるA3サイズのページの読取り(SC)とが進行中である。
読取り(SD)の開始時点で、既に図12(A)と同様に第1のメモリ使用方法を適用して読取り(SC)が行なわれているものとする。読取り(SD)の開始に際して、図6のメインルーチンの実行によって、読取り(SD)に適用するメモリ使用方法が決まる。
読取り(SD)に適用するメモリ使用方法を決めるとき、上述のとおり符合メモリ35には、最大条件での少なくとも1ページ分の空きメモリ領域(Z)が存在する。しかし、読取り(SD)を伴う画像読取りジョブ(Jd)はコピーであるので、符合メモリ35に出力用のメモリ領域91を割り当てる必要がある。このため、符合メモリ35の空きメモリ容量(Z)から出力用のメモリ領域91のメモリ容量(V)を差し引いたメモリ容量、すなわち入力に利用可能なメモリ領域81のメモリ容量(Y)は、圧縮後の画像データD2dの1ページ分よりも少ない。図9のステップ72の判定結果は「不可能」となる。
したがって、図12(B)では読取り(SD)に第2のメモリ使用方法が適用されている。すなわち、ビットマップメモリ31には1ページ分の画像データD1dの格納が可能なメモリ領域71が割り当てられ、符合メモリ35には1ページ分未満の分量の圧縮された画像データD2dの格納が可能なメモリ領域81が割り当てられている。ビットマップメモリ31は入力用の2つのメモリ領域53,71および出力用の1つのメモリ領域92を有し、符合メモリ35は入力用の2つのメモリ領域63,81および出力用の1つのメモリ領域91を有している。
メモリ領域81の割当てにあたって、図10のバンドサイズ設定サブルーチンが実行され、ビットマップメモリ31のメモリ領域71からの読出しに関わる上述のバンドサイズ(R)が設定される。メモリ領域71に格納された1ページ分の画像データD1dはバンドサイズ分ずつ読み出されて圧縮・伸張回路32へ転送され、バンドサイズ分の圧縮された画像データD2dがメモリ領域71に一時記憶された後、ストレージ14に転送される。ストレージ14では、バンドサイズ分ずつ入力される1ページ分の画像データD2dが出力用のひとかたまりのデータとして記憶される。
なお、ビットマップメモリ31のメモリ領域92には、ストレージ14から符合メモリ35のメモリ領域91へ読み出され、その後に圧縮・伸張回路32で伸張された画像データD3dが格納される。その後、メモリ領域92からプリンターエンジン19へ画像データD3dが転送される。
図13はメモリ割当ての第3例を示している。図13(A)の示す状態は上述の図12(B)の示す状態と同一である。図13(B)の示す状態は、図13(A)で実行中であった画像読取りジョブ(Jc)の実行が完了し、イメージスキャナー17Bを用いる画像読取りジョブ(Jd)の実行が続いている状態である。
図13(B)では、原稿46のA3サイズのページの読取り(SD)が進行中である。ただし、現在の読取り対象のページは図13(A)での読取り対象とは異なるページである。このような読取り(SD)の開始時点で、既にイメージスキャナー17Aを使用する画像読取りジョブ(Jc)は終了していたものとする。
読取り(SD)の開始時点で符合メモリ35における入力に利用可能なメモリ容量(Y)は、符合メモリ35の空きメモリ容量(Z)であり、最大条件での1ページ分以上の分量である。なぜなら、符合メモリ35は最大条件での2ページ分以上のメモリ領域を有し、以前に割り当てられたメモリ領域81は解放されているとみなされ、出力用に割り当てわれているメモリ領域91のメモリ容量が最大条件での1ページ分以下の分量であるからである。
したがって、図13(B)では読取り(SD)に第1のメモリ使用方法が適用されている。すなわち、ビットマップメモリ31には1ページ分未満の画像データD1dの格納が可能なメモリ領域56が割り当てられ、符合メモリ35には1ページ分の圧縮された画像データD2dの格納が可能なメモリ領域66が割り当てられている。ビットマップメモリ31は入力用の1つのメモリ領域56および出力用の1つのメモリ領域92を有し、符合メモリ35は入力用の1つのメモリ領域66および出力用の1つのメモリ領域91を有している。
このように図13の例では、イメージスキャナー17Bを使用する画像読取りジョブ(Jd)の実行の途中で画像入力数が「2」から「1」に変化したことに伴って、画像処理部13のメモリ使用方法が第2のメモリ使用方法から第1のメモリ使用方法に変更されている。
図14はメモリ割り当ての第4例を示している。
図14(A)では、1つの画像読取りジョブ(Je)が実行中であり、イメージスキャナー17Aを用いて原稿47の読取りが行なわれている。イメージスキャナー17Bは使用されていない。画像読取りジョブ(Je)はコピーである。原稿47はA4サイズの複数の原稿シートを有しており、A4サイズのページの読取りが進行中である。そして、読取りと並行してプリンターエンジン19による印刷が行なわれている。印刷のために出力用のメモリ領域93,94が図示のように符合メモリ35およびビットマップメモリ31に割り当てられている。
図14(A)では、ページの読取りに第1のメモリ使用方法が適用されている。すなわち、ビットマップメモリ31には1ページ分未満の分量の画像データD1eの格納が可能なメモリ領域54が割り当てられ、符合メモリ35には1ページ分の圧縮された画像データD2eの格納が可能なメモリ領域64が割り当てられている。符合メモリ35の空きメモリ容量(Z)は、符合メモリ35のもつメモリ容量から入力用のメモリ領域64および出力用のメモリ領域93のそれぞれのメモリ容量を差し引いた分量となっている。
図14(B)では図14(A)の状態から移行した状態が示されている。図14(B)では、イメージスキャナー17Aを用いる上述の画像読取りジョブ(Je)とともに、イメージスキャナー17Bを用いて原稿48の画像を読み取る画像読取りジョブ(Jf)が実行中である。画像読取りジョブ(Jf)はスキャン・トゥー・ボックスである。原稿48はA4サイズの複数の原稿シートを有しており、イメージスキャナー17BによるA4サイズのページの読取り(SF)と、この読取り(SF)の開始時点で既に進行中であったイメージスキャナー17AによるA4サイズのページの読取り(SE)とが進行中である。
読取り(SF)の開始時点で、既に図14(A)と同様に第1のメモリ使用方法を適用して読取り(SE)が行なわれているものとする。読取り(SF)の開始に際して、図6のメインルーチンの実行によって、読取り(SF)に適用するメモリ使用方法が決まる。
読取り(SF)に適用するメモリ使用方法を決めるとき、符合メモリ35の空きメモリ容量(Z)は読取り(SF)の必要メモリ容量(X)以上であった。
したがって、図14(B)では読取り(SF)に第1のメモリ使用方法が適用されている。すなわち、ビットマップメモリ31には1ページ分未満の分量の画像データD1fの格納が可能なメモリ領域55が割り当てられ、符合メモリ35には1ページ分の圧縮された画像データD2fの格納が可能なメモリ領域65が割り当てられている。ビットマップメモリ31は入力用の2つのメモリ領域54,55および出力用の1つのメモリ領域94を有し、符合メモリ35は入力用の2つのメモリ領域64,65および出力用の1つのメモリ領域93を有している。
図15はメモリ使用方法の設定処理の他の例を示すフローチャートである。図6のメインルーチンは、原稿の態様が混載である場合に、読取り対象のページのサイズに応じて読取りに適用するメモリ使用方法を決めるものであった。これに対して、図15の例は、原稿の態様が混載である場合に、当該原稿の全てのページのサイズが当該原稿における最大サイズであるものと見なして、読取りに適用するメモリ使用方法を決めるものである。混載モードにおいて読取り対象のページのサイズを一律に最大サイズと見なす点を除いて、図15の処理の内容は図6の処理の内容とほぼ同様である。
コントローラー34は、イメージスキャナー17が原稿40から1ページずつ順に連続的に画像を読み取る過程で、各ページの読取りが開始されるとき(S21でYES)、現在の画像入力数を取得し(S22)、前回取得した画像入力数と比べることによって画像入力数が変化したかどうかをチェックする(S23)。ステップS23のチェック結果がNOである場合、フローはステップS27へ進む。
ステップS23のチェック結果がYESである場合、フローはステップS24へ進み、コントローラー34は、必要メモリ容量の算出ルーチンを実行する(S24)。続いて、コントローラー34は、入力に利用可能なメモリ領域のメモリ容量(Y)を図8の手順で算出し(S25)、図9の手順のメモリ割当てを実行する(S26)。その後、コントローラー34は、イメージスキャナー17A,17Bの一方または両方が使用されている状態から両方共に使用されていない状態になったかどうかをチェックする(S27)。
ステップS27のチェック結果がNOである場合、フローはステップS21へ戻る。ステップS27のチェック結果がYESである場合、コントローラー34は図15の処理の実行を終える。その際、コントローラー34は、ビットマップメモリ31および符合メモリ35のそれぞれに確保されている入力用のメモリ領域を解放して空きメモリ領域とする。
図16は図15の必要メモリ容量の算出ルーチンのフローチャートである。
コントローラー34は、イメージスキャナー17による読取りの解像度、および同じく読取りのカラーモードをメインコントローラー10から取得する(S41、S42)。さらに、原稿の態様が混載ではない場合(S43でNO)、イメージスキャナー17による走査が開始されまたは開始されようとしているページの画像サイズを、メインコントローラー10から取得する(S54)。また、原稿の態様が混載である場合(S43でYES)、コントローラー34は、原稿を構成する複数の原稿シートのうちの最も大きい原稿シートのサイズ(最大サイズ)を画像サイズに定める(S46)。そして、コントローラー34は、解像度、カラーモードおよび画像サイズに基づいて、必要メモリ容量(X)を算出する(S45)。
以上の実施形態において、イメージスキャナー17A,18が同型である必要はない。イメージスキャナー17,17Bの一方または両方がカラーの読取りができないものであってもよいし、ADFを備えていないものであってもよい。
イメージスキャナー17A,17Bの個数が3以上である場合にも、本発明を適用することができる。イメージスキャナーの個数に応じて、符合メモリ35のメモリ容量を例えばメモリモジュールの増設によって増大させることができる。
画像処理部13の構成は図2の例示に限らない。例えば、ASIC30の中に符合メモリ35を形成してもよい。また、ビットマップメモリ31をASIC30の中に形成せずに、ASIC30を外付けのメモリデバイスの中に設けてもよい。
コピーとファクシミリ送信とを行なうというように、出力用のメモリ領域を用いる複数の画像読取りジョブを並行して行なうことができる。その場合、符合メモリ35に出力用の複数のメモリ領域を割り当てた残りのメモリ容量(Y)に応じて、第1のメモリ使用方法または第2のメモリ使用方法を適用して入力用のメモリ領域を割り当てればよい。
第1のメモリ使用方法を適用した読取りにおいて、符合メモリ35から画像データD2をストレージ14へ転送する際に、画像データD2を格納しているメモリ領域に加えて新たに1つのメモリ領域を確保するようにしてもよい。これにより、ストレージ14への読出しと符合メモリ35への書込みとを並行して行なってパフォーマンスを高めることができる。