以下、本発明の実施形態について説明するが、本発明の実施形態は、以下に説明する実施形態に限定されるものではない。なお、以下の実施形態は、画像処理装置の一例として、コピー、スキャナ、プリンタ等の各種画像処理機能を備える複合機を用いて説明する。
図1は、本実施形態による複合機10のソフトウェア構成およびハードウェア構成を示す図である。図1に示す複合機10は、種々のソフトウェア・コンポーネントが含まれるソフトウェア部12と、複合機起動部14と、種々のハードウェア・リソースが含まれるハードウェア部16とを含み構成される。
ハードウェア部16は、スキャナやファクシミリなどのハードウェア・リソース30と、モノクロ・レーザプリンタ(B&WLP)32と、カラー・レーザプリンタ(ColorLP)34と、メディア・リンク・コントローラ(MLC)36とを含む。ソフトウェア部12は、複合機としての機能を提供するための各種アプリケーション40〜48が含まれるアプリケーション層18と、プラットフォーム層20とを含む。
アプリケーション層18は、プリンタ、コピー、ファックスおよびスキャナなどの画像処理に関するユーザ・サービス固有の処理を行う。図1に示した実施形態では、アプリケーション層18は、プリンタ機能を提供するプリンタ・アプリケーション40と、コピー機能を提供するコピー・アプリケーション42と、ファクシミリ機能を提供するファックス・アプリケーション46と、スキャナ機能を提供するスキャナ・アプリケーション48とを含む。
プラットフォーム層20は、図示しないオペレーティング・システム(OS)とともにアプリケーション40〜48からの処理要求を解釈して、ハードウェア資源の獲得要求を発生するコントロール・サービス層22を含む。プラットフォーム層20は、さらに、1つまたは複数のハードウェア・リソースの管理を行い、コントロール・サービス層22からの獲得要求を調停し実行制御するシステム資源管理部(SRM)24と、SRM24からの獲得要求に応じてハードウェア・リソースの管理を行うハンドラ層26とを含む。
上記OSとしては、例えば、UNIX(登録商標)を採用することができるが、WINDOWS(登録商標)やその他のいかなるOSを採用することを妨げない。ソフトウェア部12の各ソフトウェア・コンポーネントは、UNIX(登録商標)などのOS上に、プロセス単位で並列的に実現される。また、OSには、後述するASIC(Application Specific Integrated Circuit)に接続される各種デバイスを利用するためのデバイスドライバ80が含まれる。
各種コントロール・サービスとしては、図1に示した実施形態では、ネットワーク制御サービス(NCS)50と、デリバリー制御サービス(DCS)52と、オペレーションパネル制御サービス(OCS)54と、ファクシミリ制御サービス(FCS)56と、エンジン制御サービス(ECS)58と、メモリ制御サービス(MCS)60と、ユーザ情報制御サービス(UCS)62と、システム制御サービス(SCS)64とが含まれる。
SCS64は、各種アプリケーションの管理、システム画面表示、LED表示、ハードウェア資源の管理および割込みアプリケーションの制御などを行う。UCS62は、ユーザ情報を管理する。MCS60は、画像メモリの取得および解放、画像データの圧縮・伸張等のメモリ制御などを行う。ECS58は、モノクロ・レーザプリンタ32、カラー・レーザプリンタ34、スキャナなどのエンジンを制御し、画像読取処理および画像形成処理を実行する。
FCS56は、GSTNインタフェースと接続し、GSTN網を使用したファクシミリ送受信、バックアップメモリで管理されている各種ファクシミリ・データの登録/引用、ファクシミリ読み取りなどを制御する。OCS54は、オペレータと本体制御との間のインタフェースとなるオペレーションパネルの制御を行う。DCS52は、HDDなどに蓄積された蓄積文書の配信を制御を行う。
NCS50は、NIC(ネットワーク・インタフェース・カード)を制御して、複合機10をイーサネット(登録商標)と接続させ、ネットワークI/Oを必要とするアプリケーションに対して共通に利用可能なサービスを提供する。NCS50は、より具体的には、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分け、各アプリケーションからのデータをネットワーク側に送信する際の仲介を行う。例えばNCS50は、ネットワークを介して接続されるネットワーク機器とのデータ通信を、httpd(HyperText Transfer Protocol Daemon)によりHTTP(HyperText Transfer Protocol)で制御する。
プラットフォーム層20とアプリケーション層18との間には、アプリケーション・プログラム・インタフェース(API)78を有する。プラットフォーム層20は、API78に含まれる予め定義された関数により、各種アプリケーション40〜48からの処理要求を受信する。
SRM24は、SCS64とともに、システム制御およびハードウェア・リソースの管理を行う。SRM24は、獲得要求されたハードウェア・リソースが利用可能か否かを判定し、利用可能であれば獲得要求されたハードウェア・リソースが利用可能である旨を、上位層に通知する。また、SRM24は、上位層からの獲得要求に対して、ハードウェア・リソースを利用するためのスケジューリングを行い、例えばエンジン32,34による紙搬送や画像形成動作やメモリ確保やファイル生成などを直接実施している。
ハンドラ層26は、ファクシミリ・コントロール・ユニットを管理するファクシミリ・コントロール・ユニット・ハンドラ(FCUH)70と、プロセスに対するメモリ割当て、プロセスに割当てたメモリの管理を行うイメージメモリハンドラ(IMH)72と、MLC36を利用するメディア・エディット・ユーティリティ(MEU)74とを含む。SRM24およびFCUH70は、エンジン・インタフェース(I/F)76に含まれる予め定義されている関数を使用して、ハードウェア部16のハードウェア・リソースに対する処理要求を送信する。
複合機起動部14は、複合機10の電源投入時に最初に実行され、上述までのプラットフォーム層20およびアプリケーション層18のソフトウェア群(プロセス)に対応する制御プログラムを、図示しないROMやHDDなどから読出す。そして、複合機起動部14は、読み出した制御プログラムを、CPUの作業メモリ領域を提供するシステムメモリ上に展開し、各プロセスを起動することにより、上記したソフトウェア手段および後述の各処理を実現する。複合機10は、上述のソフトウェア群により、ハードウェア・リソースを制御し、ユーザ指令や外部コンピュータからの入力に応答して、コピー、ファクシミリ、カラーコピーなど、複合機としての機能をユーザに提供する。
なお、上述したアプリケーション、コントロール・サービスおよびハードウェアは、種々の組み合わせにより構成することができ、特定の用途、機種に対応して追加・削除することができる。また、図1に示した実施形態では、複合機としての各アプリケーションや制御サービスにおける共通部分を抽出して、プラットフォーム化した構成として参照したが、複合機10のハードウェア構成およびソフトフェアの構成は、特に限定されるものではない。
図2は、本実施形態の複合機10のハードウェア構成を示す図である。複合機10は、コントローラ100と、オペレーション・パネル124と、FCU(ファクシミリ・コントロール・ユニット)126と、USBインタフェース128と、IEEE1394インタフェース130と、エンジン132とを含む。なお、図2に示すエンジン132は、図1に示したモノクロ・レーザプリンタ32およびカラー・レーザプリンタ34のプロッタ・ユニットと、ハードウェア・リソース30内のスキャナ・ユニットとを含む。
コントローラ100は、CPU(中央演算処理装置)110と、NB(ノース・ブリッジ)112と、NB112を介してCPU110と接続するASIC114と、SB(サウス・ブリッジ)120とを含む。
CPU110は、複合機10の全体制御を行う制御手段である。CPU110は、図1に示したNCS50、DCS52、OCS54、FCS56、ECS58、MCS60、UCS62、SCS64、SRM24、FCUH70、IMH72およびMEU74をOS上にそれぞれプロセスとして起動して実行させる。同時に、CPU110は、各種アプリケーション40〜48を起動して実行させる。
ASIC114は、各種画像処理を実行し、AGP(Accelerated Graphic Port)を介してNB112と接続される。SB120は、図示しないROMやPCIバス周辺デバイスなどとNB112とを接続するためのブリッジである。
ASIC114は、メモリ116と、HDD118と、NICなどの物理層(PHY)122と接続される。メモリ116は、描画用メモリ、コピー用画像バッファや符号バッファとして用いられる1次記憶装置である。HDD118は、メモリ116から退避された画像データ、文書データ、プログラム、フォントデータやフォームデータなどを蓄積する2次記憶装置である。HDD118の代わりにSSD(Solid State Drive)を設けても良い。物理層122は、複合機10をインターネットやLANなどのネットワークに接続するインタフェース機器の物理層であり、ネットワークを介した指令を受付ける。
オペレーション・パネル124は、コントローラ100のASIC114と接続され、オペレータからの各種指示の入力を受付けや画面表示を行なうためのユーザ・インタフェースを提供する。上記FCU126、USBインタフェース128、IEEE1394インタフェース130およびエンジン132は、コントローラ100のASIC114にPCIバス134を介して接続される。FCU126は、G3またはG4といったファクシミリ通信規格に準じた通信方法を実行する。USBインタフェース128およびIEEE1394インタフェース130は、それぞれの規格に準じたインタフェースであり、印刷ジョブなどを受付ける。エンジン132は、アプリケーションが発行したコピー指令、プリント指令およびスキャン指令を受け、画像形成処理および画像読取処理を実行する。
コピー処理では、画像入力動作として、エンジン132のスキャナ・ユニットが実行する画像読取処理により原稿が読み取られ、メモリ116に確保された画像メモリ領域上に画像データが入力される。入力された画像データは、随時HDD118に退避することができる。一方、コピー処理の画像出力動作では、画像メモリ領域上に準備された画像データが順次読み出されて、エンジン132のプロッタ・ユニットが実行する画像形成処理により、転写部材上に画像が転写される。上記準備される画像データは、画像入力動作で画像メモリ領域上に入力された画像データ、または事前に退避されたHDD118から画像メモリ領域上に転送された画像データである。
プリント処理では、ホスト装置から受信したPDL(Page Description Language)などのプリントデータに従って、描画処理が行われ、画像メモリ領域上に画像データが準備される。プリント処理の画像出力動作では、上記画像メモリ領域上に準備された画像データが読み出され、エンジン132のプロッタ・ユニットが実行する画像形成処理により、転写部材上に画像が転写される。
スキャン処理では、画像入力動作として、エンジン132のスキャナ・ユニットが実行する画像読取処理により、原稿が読み取られ、画像メモリ領域上に画像データが入力される。入力された画像データは、コピー処理と同様に随時HDD118に随時退避され、ホスト装置へ送信される。
以下の説明では、代表してコピー処理について、コピー処理における画像入力動作と、コピー処理における画像出力動作とに分けて、本実施形態の複合機10が実行する画像処理について、より詳細に説明する。
まず以下、図3〜図8を参照しながら、本実施形態の複合機10が実行する、画像入力動作について説明する。本実施形態の画像入力動作においては、エンジン132、IMH72およびデバイスドライバ80が主要なはたらきを担う。図3、図4および図5は、それぞれ、画像入力動作におけるエンジン132、デバイスドライバ80およびIMH72の動作を説明する図である。
コピー・アプリケーション42においてコピー要求が発生すると、プラットフォーム層20に対し、コピー指令が発行される。プラットフォーム層20では、IMH72は、SRM24を経由して上記指令を受けて、メモリ116上に画像入力を行うための画像メモリ領域202を確保する。IMH72は、本実施形態の画像メモリ管理手段を構成する。
IMH72により獲得される画像メモリ領域202は、各色毎のプレーンとして構成され、図3において矩形200は、各色毎の処理単位を表している。CMYKカラーのコピー処理であれば、シアン(C)、マゼンダ(M)、イエロー(Y)およびブラック(K)の4色のプレーンが獲得される。RGBカラーのスキャン処理であれば、レッド(R)、グリーン(G)およびブルー(B)の3色のプレーンが、黒および赤などの2色刷りでは、ブラック(K)およびレッド(R)の2色のプレーンが獲得される。なお、説明する実施形態では、CMYKの4色の処理単位200C〜200Kから構成されるものとして説明する。また、以下に行う説明では、特に各色毎に説明を行わないが、本実施形態では、各色毎に同一の構成を備えている点に留意されたい。
本実施形態では、図3に示すように、画像入力が行われる画像メモリ領域202は、複数のバンド領域204に区分されている。この複数のバンド領域204に対し全体の画像データを折り返し入力することにより、確保される画像メモリ領域よりもサイズの大きな画像データが取り扱い可能となる。図3〜図8では、特に限定されるものではないが、各色毎の画像メモリ領域202が、それぞれ、8つのバンド領域204−1〜204−8に区分されている場合を例示する。また図3等においては、画像メモリ領域202は、連続するバンド領域204として模式的に示されているが、バンド領域204は非連続な物理メモリ領域に対応していてもよい。
IMH72は、複数のバンド領域204に区分された画像メモリ領域202を確保すると、続いて、この画像メモリ領域202への画像入力の仕方を設定し、図3に示すように入力設定情報220を記載したポインタをエンジン132に渡す。上記入力設定情報220には、画像メモリ領域202を構成する各バンド領域204について、先頭位置を表すスタート・アドレス、終了位置を表すエンド・アドレス、幅や高さなどの情報が記述される。また、IMH72は、コピー設定やスキャン設定において、特定のサイズの原稿が指定されたり、原稿サイズ自動検知が指定されたりする場合は、長尺原稿で画像メモリ領域202への折り返し入力が必要であると判断する。この場合は、IMH72は、入力設定情報220として、折り返しポイントおよび折り返し入力する入力方式を示す指定値を設定する。
エンジン132は、渡されたポインタから入力設定情報220を読み出し、入力設定情報220の内容を解釈する。エンジン132は、入力設定情報220に設定された各スタート・アドレスおよび各エンド・アドレスで指定される各バンド領域204に、原稿Rから読み取った画像データを順次入力する。エンジン132は、各色毎に複数のバンド領域204に対し順次画像データの入力を行う、本実施形態の画像入出力手段を構成する。なお、本実施形態において「入出力」とは、画像の入力および出力を総称するものとする。
図3中には、エンジン132が画像データを入力したラインを指す現在の入力位置206が示されている。エンジン132により、先頭から第1のバンド領域204−1、第2のバンド領域204−2、・・・第8のバンド領域204−8の順に、画像データが順次入力される。特定のサイズの原稿または原稿サイズ自動検知が指定される場合は、長尺原稿であり折り返し入力が必要である旨の指定値が設定されているので、第8のバンド領域204−8がフルとなった折り返しポイントの後、再び第1のバンド領域204−1に折り返して入力が続けられる。なお、以下、折り返し入力が必要である旨の指定値が設定されるものとして説明を行う。
図4を参照すると、IMH72は、上記画像メモリ領域202に対し複数のチェックポイント208を設定し、すべてのチェックポイント208が記述されたポイント設定情報230をデバイスドライバ80に渡す。画像メモリ領域202への入力は、エンジン132が主導で行われるので、入力位置を検知するための手段を要する。このチェックポイント208は、画像メモリ領域202において各バンド領域204の最後まで入力が行われたことを検知するために設定されるものである。説明する実施形態では、各チェックポイント208には、各バンド領域204のエンド・アドレスが設定される。
図4の例示では、各色毎に、8つのバンド領域204−1〜204−8に対応して、各領域の末尾を表すチェックポイント208−1〜208−8が設定されている。長尺原稿または原稿サイズ自動検知の場合は、折り返し入力が行われるので、第1のチェックポイント208−1は、2巡目の第9のチェックポイント208に対応する。第2のチェックポイント208−2以降についても、3巡目以降についても、同様である。
デバイスドライバ80は、上記ポイント設定情報230を受け取り、設定されたチェックポイント208−1〜208−8のうち、先頭の方から第1および第2のチェックポイント208−1,208−2をチェックポイント・レジスタ210に設定する。このチェックポイント・レジスタ210は、ASIC114に設けられたレジスタであり、割り込みが発生させて、指定アドレスまで入力が行われたことを検知するために設定されるものである。チェックポイント・レジスタ210の数は、その実装上有限とされており、特定の実施例では、4色それぞれに対し、2つのチェックポイント・レジスタ210−1,210−2が用意される。
IMH72は、エンジン132へ入力設定情報220のポインタを渡し、デバイスドライバ80へポインタ情報を渡すと、SRM24を経由して、エンジン132に対し読取開始の指示を発行する。エンジン132は、読取開始の指示を受けて、図3に示すように各色毎の画像メモリ領域202へ、画像データの入力を開始し、順次ラインを書き込む。
エンジン132による入力位置206が、第1のチェックポイント・レジスタ210−1が保持するアドレスに到達すると、割り込みが発生する。デバイスドライバ80は、この割り込みに応答して、入力位置206が第1チェックポイント208−1、すなわち上記第1バンド領域204−1のエンド・アドレスに到達したことを検知する。この間にも入力位置206は進行することになるが、デバイスドライバ80は、チェックポイントの通過に対応して、少なくとも入力位置206が第2のチェックポイント208−2に到達するまでの間に、第1のチェックポイント・レジスタ210−1に対し、1つ飛ばしで後続する第3チェックポイント208−3に切り替える。
同様に、入力位置206が、第2のチェックポイント・レジスタ210−2が保持する第2チェックポイント208−2に到達したことを検知すると、デバイスドライバ80は、レジスタ210−2に対し、1つ飛ばしで後続する第4チェックポイント208−4を設定する。つまり、第1のレジスタ210−1には、第1チェックポイント208−1、第3チェックポイント208−3、第5チェックポイント208−5、第7チェックポイント208−7が順に再設定されて行き、折り返して、第1チェックポイント208−1から繰り返される。第2のレジスタ210−2も同様に、第2、第4、第6、第8のチェックポイント208の順に再設定され、折り返して、第2チェックポイント208−2から繰り返される。
上述のように、デバイスドライバ80は、2つのレジスタ210−1,210−2が保持するチェックポイントを入力位置206が通過する毎に、レジスタ210−1,210−2を再設定する。これにより、2つのチェックポイント・レジスタのみで複数のバンド領域204に対し交互に入力を行いつつ、入力位置が各チェックポイントを通過することを検知することが可能となる。
ここで、図5を参照すると、本実施形態のデバイスドライバ80は、各レジスタ210が保持するチェックポイント208に到達したことを検知すると、上記再設定と共に、IMH72に対し、その到達を通知する。IMH72は、チェックポイント到達通知を受けて、到達が検知されたチェックポイント208の位置に対応したバンド領域204に保持される画像データ212をHDD118へ退避する。図5に示す例では、第1のチェックポイント208−1に到達したことに応答して、第1バンド領域204−1の画像データ212が退避されている。
本実施形態では、画像メモリ領域202が各色毎に用意されているため、入力位置206がチェックポイント208に到達する毎に、各色分同時に通知が行われ、各色毎の画像データ212の退避処理が必要となる。一方、HDD118は、通常1台のみであるため、上記複数色の退避処理は、待ちキュー240にキューイングされ、順番に行われることになる。
このとき、退避すべきすべての色のバンド領域204の画像データがHDD118へ退避完了する前に、エンジン132の画像入力が折り返され、この未退避のバンド領域に対する入力が行われると、図6に示すように異常画像を発生させてしまう。図6は、入力位置206が一巡して再び第1チェックポイント208−1に達したにもかかわらず、入力済みの退避すべきバンド領域204−2の画像データがいまだ退避されていない状態を例示する。図6に示す状態では、バンド領域204−2が上書きされ異常画像214が発生している様子を例示する。画像異常214は、スキャン・データや印刷物中の繰り返されたスジなどとなって現れる。
上記異常画像の発生を抑制するため、HDD118の転送速度は、通常、エンジン132の入力速度よりも充分に速くなるように設計される。しかしながら、他のアプリケーションによるHDD118へのアクセスがあるなど、何らかの理由により遅延が発生する可能性もある。このような遅延が発生し、エンジン132が入力を折り返すまでに遅延が解消されない場合は、上述したように異常画像となってしまう。そこで、説明する実施形態では、エラーを発生させ、異常画像が発生する旨をオペレータに警告するとともに、好適にはエンジン132による画像入力の待ち制御を行う。
図7および図8は、好適な実施形態による画像入力動作における待ち制御を説明する図である。IMH72は、デバイスドライバ80からバンド領域204−1の末尾のチェックポイント208−1に到達した旨の通知を受けると、待ちキュー240内での次に入力しようとしているバンド領域204−2の退避状況を確認する。IMH72は、図7に示すように、CMYKの少なくとも1つの色について、次に入力するバンド領域204−2の画像データの退避が完了していないと判定したときは、デバイスドライバ80を用いてエンジン132の待ち制御を行う制御手段である。IMH72は、待ちキュー240での退避状況を継続して確認しており、図8に示すように次に入力するバンド領域204−2の画像データの退避が完了したと判定した場合は、デバイスドライバ80を用いてエンジン132のポーズを解除し、画像入力を再開させる。
上述した待ち制御により、異常画像の発生を好適に防止することが可能となる。エンジン132が備えるスキャナ・ユニットが完結動作できず、画像読取処理自体を停止できない実装であっても、エンジン132が備えるバッファメモリで緩衝できる範囲で、異常画像の発生を防止することができる。また、OCS54を介してオペレーション・パネル124のディスプレイ上にエラー警告を行うことによって、早期の印刷中止を促したり、異常画像の発生の注意を促したりすることができる。
以下、図9〜図11を参照しながら、本実施形態の複合機10が実行する、画像出力動作について説明する。本実施形態の画像出力動作においても、エンジン132、IMH72およびデバイスドライバ80が主要な構成要素となる。図9は、画像出力動作におけるエンジン132、デバイスドライバ80およびIMH72のはたらきを説明する図である。図10および図11は、好適な実施形態による画像出力動作における待ち制御を説明する図である。
コピー処理においては、上記画像入力動作と並列して、または上記画像入力動作に続いて、画像出力動作が実行される。画像出力動作においては、プラットフォーム層20では、IMH72が、メモリ116上に獲得された画像メモリ領域202上に画像データを準備する。上記準備される画像データは、コピー処理では、画像入力動作において画像メモリ領域上に入力された画像データ、または事前に退避されたHDD118から画像メモリ領域上に転送された画像データである。プリント処理では、ホスト装置から受信したPDLなどのプリントデータに従って、描画処理が行われ、画像メモリ領域上に画像データが準備される。
IMH72は、画像メモリ領域202からの画像出力の仕方を設定し、図9に示すように出力設定情報250が記載されたポインタをエンジン132に渡す。上記出力設定情報250には、上述した入力設定情報220と同様に、各バンド領域204のスタート・アドレス、エンド・アドレス、高さや幅などの情報が記述される。また、IMH72は、コピー設定やプリント設定において、特定サイズの原稿が指定されたり、原稿サイズ自動検知が指定されたりする場合は、画像メモリ領域202への折り返し出力が必要であると判断し、折り返しポイントおよび折り返し出力する出力方式である旨を示す指定値を設定する。
エンジン132は、渡されたポインタから出力設定情報250を読み出し、画像形成開始指示に応答して、各スタート・アドレスおよび各エンド・アドレスで指定される各バンド領域から画像データ読み出し、順次出力することになる。そして、エンジン132のプロッタ・ユニットが実行する画像形成処理により、読み出された画像データが転写部材上に転写され、印刷物Pが得られる。
図9中には、エンジン132が画像データを出力したラインを表す現在の出力位置216が示されている。エンジン132により、第1のバンド領域204−1、第2のバンド領域204−2、・・・第8のバンド領域204−8の順に、画像データが順次読み出され出力される。折り返し出力が必要である旨の指定値が設定されている場合は、第8のバンド領域204−8が読み出された後、再び第1のバンド領域204−1に折り返して出力が続けられる。
一方、上述したように、画像出力を行うためには、CMYK各プレーンの画像データ218の準備処理が必要となり、一方で、HDD118は、上述したように1台のみである。このため、上記複数色の準備処理は、待ちキュー240にキューイングされ、順番に行われることになる。このとき、すべての色についてバンド領域204に画像データの準備が完了する前に、そのバンド領域204の出力が開始されてしまうと、異常画像を発生させてしまうことになる。
そこで、IMH72は、画像入力動作と同様に、上記画像メモリ領域202に対し複数のチェックポイント208を設定し、各チェックポイント208で、画像の準備状況を確認し、遅延がある場合は画像出力の待ち制御を行う。IMH72は、上記画像メモリ領域202に対しチェックポイント208を設定すると、各チェックポイント208が記述されたポイント設定情報230をデバイスドライバ80に渡す。デバイスドライバ80は、画像入力動作と同様に、上記ポイント設定情報230に設定されたチェックポイント208−1〜208−8のうち、先頭の方から交互にチェックポイント208をチェックポイント・レジスタ210に設定して行く。また、チェックポイント・レジスタ210には、エンジン132への画像の出力を再開するためのフラグが用意される。
IMH72は、画像出力動作が開始されると、まず第1のバンド領域204−1の画像データの準備完了を待って、SRM24を経由して、エンジン132に対し画像形成開始の指示を発行する。エンジン132は、画像形成開始の指示を受けて、各色の画像メモリ領域202から順次ラインを読み出し、画像データの出力を開始する。
ここで、図10に示すように、エンジン132による出力位置216が、第1のチェックポイント・レジスタ210−1が保持するアドレスに到達したとすると、割り込みが発生する。デバイスドライバ80は、上記第1バンド領域204−1の画像データが引き取られたことを検知し、IMH72にチェックポイントへの到達を通知する。このとき、デバイスドライバ80は、上記フラグが立っていないため、コントローラ100からの画像データの出力をポーズしており、画像データがエンジン132へ流れないようになっている。エンジン132は、画像読み出しをリトライするが、画像メモリ領域202から画像データを引き取ることができず、出力位置216はチェックポイントの位置で一時停止される。
IMH72は、チェックポイント到達通知を受けて、チェックポイントの位置に対応したバンド領域204の画像データが準備済みであるか否かを判定する。このとき、図10に示すように、準備されるべきバンド領域204−2の画像データ218の準備が完了していない場合は、IMH72は、画像データ218が準備中であると判定する。この場合、IMH72は、エラー通知を行うとともに、デバイスドライバ80に上記ポーズを継続させて、エンジン132による画像出力の待ち制御を行う。
一方、IMH72は、待ちキュー240での準備状況を継続して確認しており、図11に示すように、次に出力するバンド領域204−2の画像データ218の準備が完了していると判定した場合は、デバイスドライバ80を用いて、上記フラグを立てて、ポーズを解除し、エンジン132による画像出力を再開させる。ポーズが解除されると、コントローラ100からエンジン132へ画像データが流れ始め、画像読み出しをリトライしていたエンジン132は、画像メモリ領域202から画像データを引き取れるようになる。
上述した待ち制御により、画像出力動作時の異常画像の発生を防止することができる。エンジン132のプロッタ・ユニットが完結動作できず、画像形成処理を停止できない実装でも、エンジン132が備えるバッファで緩衝できる範囲で、異常画像の発生を防止することができる。さらに、インクジェット式のように、完結動作が可能なプロッタ・ユニットの実装では、画像形成処理の動作自体を好適に一時停止させることが可能となり、より大きな遅れが発生しても、異常画像をより防止しやすくなる。
以下、図12および図13を参照しながら、上記で分けて説明した画像入力動作および画像出力動作からなる一連のコピー処理について説明する。図12は、画像入力される画像データをHDD118に順次退避しながら、画像出力するコピー処理を模式的に説明する図である。
コピー・アプリケーション42においてコピー要求が発生すると、IMH72は、画像読取指令を受けて、メモリ116上に画像入力を行うための画像メモリ領域202を獲得する。エンジン132のスキャナ・ユニットは、画像メモリ領域202に画像入力を開始する。IMH72は、入力位置206がチェックポイント208に到達するごとに、チェックポイント到達通知を受けて、通過したバンド領域204の画像データをHDD118に退避させる。一定量の画像データが退避されると、IMH72は、メモリ116上に画像出力を行うための画像メモリ領域202を獲得し、バンド領域204への画像データの準備を順次行う。なお、画像出力動作のために確保される画像メモリ領域202は、画像入力動作のために獲得されるものと異なってもよい。
上述した画像出力動作は、原稿の全体がスキャンされて、原稿全体の画像データが退避された段階で開始してもよいが、好適には原稿の一部のみの画像データが得られた段階で開始し、画像読取処理と画像形成処理とを並列に実行することができる。この場合は、上述した画像出力動作における待ち制御により、画像データの準備を待ち合わせて画像出力が進行することになる。このため、全体の入力動作が完了する前に出力が開始されても、画像出力が画像入力を追い越さないように制御し、動作が破綻することを防止しながら、コピー処理を完遂することが可能となる。
図13は、画像入力される画像データをHDD118へ退避せずに、メモリ116上から直接画像出力するコピー処理を説明する図である。図13に示す例は、複合機10がHDD118を備えていない場合に好適に適用することができる。図13に示す実施形態では、コピー要求が発生すると、IMH72は、メモリ116上に画像入力を行うための画像メモリ領域202を獲得する。エンジン132のスキャナ・ユニットは、この画像メモリ領域202に画像入力を開始する。IMH72は、チェックポイント到達通知を受けて、上記画像入力動作により入力されてバンド領域204に準備された画像データを読み出し、出力を開始する。
図13に示すコピー処理では、画像読取処理と画像形成処理とは同期的に実行されて、上記画像出力動作は、画像入力動作により画像データの準備が完了したバンド領域から順次実行される。この場合は、上述した画像出力動作における待ち制御により、画像データの入力準備が待ち合わせられるため、画像出力が画像入力を追い越さないように制御することが可能となる。
なお、図12に示した、HDD118への退避処理を含むコピー処理を実行するか、図13に示すメモリ116上の画像メモリ領域のみの確保でコピー処理を実行するかは、オペレータに選択させることができる。メモリ116およびHDD118を共に備える場合は、好適には、図13に示すメモリ116上の画像メモリ領域のみの確保でコピー処理を優先して実施することができる。また、図13に示すメモリ116のみでの処理を優先的に実行し、画像出力処理が入力及び準備に間に合わない場合、スキャンした画像データを退避させるモードに切り替える制御としてもよい。
図14は、上記画像出力動作中のキャンセル時の動作を説明する図である。図14に示すように、上記画像入出力動作中に、エラーが発生し、オペレータがオペレーション・パネル124に対し処理キャンセルの指示を行う場合がある。この場合、長尺印刷では、ロール紙等が複合機10の機構部を通紙している状態で停止してしまうので、印刷JAMとなってしまう。そこで、本実施形態では、上記指示に応答してOCS54からIMH72にキャンセル指令が発行された場合、IMH72は、バンド領域204にダミー画像252を準備し、最後まで出力を完了させることができる。
以上説明したように、本実施形態によれば、ソフトウェア側で入出力のタイミング調整することを可能とし、小さな消費メモリで、複数色かつ大規模な画像データを処理することが可能な画像処理装置およびプログラムを提供することができる。
上記カラー化に伴い、入出力のタイミング調整の条件が厳しくなるが、上述した本実施形態の構成によれば、図15に示す画像入出力動作におけるエンジンとソフトウェア(デバイスドライバおよびIMH)との協同により、入出力のタイミング調整することが容易となる。IMH72は、エンジン132に入出力設定情報を渡すと共に、デバイスドライバ80にチェックポイントを設定する。デバイスドライバ80は、エンジンの入出力の状況を監視し、IMH72にチェックポイント到達を通知する。IMH72は、チェックポイント到達の通知を受けて、検知された入出力の状況から待ち制御を要するか否かを判定する。
上述した連携により複合機10では、バンド領域各々に対する画像データの入出力の状況に応じて、画像データの退避または準備が入力または出力に間に合わないと判定した場合に待ち制御をし、入出力のタイミング調整することが容易となる。画像メモリ領域に折り返して入出力し、入力された画像データを随時退避し、または出力する画像データを随時準備する場合に、退避または準備が間に合わずに入力または出力が先行してしまうことを防止することができる。また、画像出力が画像入力を追い越してしまうことも防止される。ひいては、長尺原稿のカラー画像処理を円滑に実行すること可能となる。
上記機能部は、アセンブラ、C、C++、C#、Java(登録商標)、などのレガシープログラミング言語やオブジェクト指向プログラミング言語などで記述されたコンピュータ実行可能なプログラムにより実現でき、ROM、EEPROM、EPROM、フラッシュメモリ、フレキシブルディスク、CD−ROM、CD−RW、DVD−ROM、DVD−RAM、DVD−RW、ブルーレイディスク、SDカード、MOなど装置可読な記録媒体に格納して、あるいは電気通信回線を通じて頒布することができる。
これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではなく、他の実施形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。