まず、本発明の実施形態にかかる画像処理システムの構成例について概要を説明する。
この画像処理システムは、複数の画像データが次々と送られてくる状況下で、各画像データに対し複数の画像処理を施すシステムである。画像処理においては、複数の画像処理からなるパイプライン的な処理が行われる。つまり、入力した複数の画像データが、このパイプラインにおいて、入力順に処理されることになる。なお、ここでは、パイプラインの語を、ある画像データに複数の画像処理を次々と施すという意味で用いており、必ずしも、並列処理の一態様として知られるパイプライン方式(複数のデータを若干の時間差を付けて次々と投入する方式)のような複雑な機構を含む必要はない。また、パイプラインには、分岐や合流などがあってもよい。
この画像処理システムでは、画像処理の順番を変更し、画像入力を優先させる制御が行われる。制御は様々に行うことが可能であり、例えば、画像入力を少しだけ待たせて、進行中の画像処理を優先させてもよいし、進行中の画像処理を停止(強制的中止あるいは一時的な凍結)して、画像入力を優先させてもよい。また、この二つを選ぶ基準を、アダプティブ(解適合的)に決定してもよい。
また、この画像処理システムでは、画像処理において、少なくとも一部に、再構成可能(リコンフィギャラブル)なハードウエア(プロセッサやASICなどのデバイス)を用いている。再構成可能なハードウエアにおいて、次に再構成すべき画像処理を動的に変更することは、いうなれば、擬似的マルチタスクを実現するものと言える。これは、OS(オペレーティングシステム)やMMU(メモリマネージメントユニット)によるマルチタスクとはやや異なる処理態様といえる。
次に、図1乃至図3を用いて、画像処理システムの構成例の概略を説明する。
図1は、画像処理システム10の概略的な構成例を示すブロック図である。画像処理システム10には、入力装置12、出力装置14、及び画像処理装置16が含まれており、入力装置12と出力装置14はともに画像処理装置16と通信可能に接続されている。ここでは、入力装置12は、スキャナであることを想定しているが、例えば、ネットワーク接続された画像送信装置であってもよい。また、出力装置14は、プリンタや画像表示装置であることを想定しているが、例えば、ファイルサーバであってもよい。
画像処理装置16は、汎用的集積回路やASIC(特定用途向け集積回路)を含む各種のコンピュータを用いて構築され得る。具体的には、コンピュータは、演算機能と記憶機能を備えたコンピュータハードウエアを、プログラム(ソフトウエア)制御することで実現される。すなわち、プログラムに基づく制御信号によって、コンピュータハードウエアの動作が規定され、演算処理や、入出力処理、記憶処理などの各種処理が行われる。また、こうした処理は、外部装置やユーザ入力装置からの受け付けた制御信号に依存して行われてもよい。なお、プログラムは、一般に、記憶媒体あるいは通信を通じて画像処理装置16にインストールされる。
画像処理装置16は、メモリ18と、メモリ制御部20と、画像処理部22と、処理実行制御部30と、処理順制御部32とを備える。メモリ18は、半導体メモリなどで作られた記憶装置であり、入力装置12から入力される画像データの記憶、出力装置14へ出力される画像データの記憶、画像処理部22が読み出しや書き込みを行う画像データの記憶などを行う。また、メモリ制御部20は、メモリ18の入力アドレスや出力アドレスの管理などを行う。
画像処理部22は、ソフトウエア制御によって再構成可能なハードウエアによって作られている。具体的には、処理実行制御部30からの制御信号に基づいて、処理A、処理B、処理Cの三つの画像処理のいずれかを実行するようにハードウエアが再構成される。そして、メモリ18との間で画像データの入出力を行って、画像処理を実行する。画像処理部22に対し処理実行制御部30がどの画像処理を行わせるかは、処理順制御部32によって決定される。
処理順制御部32には、タスク順管理部34、現タスク判断部36、次タスク判断部38が設けられている。現タスク判断部36は、設定された条件に基づいて、次のタスクを実行するために現在実行中のタスクを停止してよいか否かを判断する。このため、現タスク判断部36は、メモリ制御部20が管理する情報を基に、画像処理部22でどのタスクが実行されているかを調べることができ、また、必要に応じてその進捗状況を算出することもできる。なお、ここでは、タスクとは、ある画像データに対するある画像処理を指す。次タスク判断部38は、メモリ制御部20が管理する情報を参照した上で、次に実行可能なタスクが何であるかを判断する。すなわち、次にどの画像データに対してどの画像処理を行うことができるかを判断する。そして、タスク順管理部34は、現タスク判断部36と次タスク判断部38の判断結果を参照し、必要ならば現在のタスクを停止させた上で、次のタスクを処理実行制御部30に実行させる。
続いて、図2を用いて、図1に示した画像処理システム10についてさらに説明する。図2においては、図1と同一の構成要素には同一の番号を付している。
メモリ18は、入出力に用いられるタイミング調整バッファ40,42と、画像処理に用いられるバッファS、バッファA、バッファB及びバッファCとを含んでいる。タイミング調整バッファ40,42は、入出力と画像処理との実行速度差を調整する目的で設けられている。タイミング調整バッファ40に対しては、スキャナたる入力装置12から、複数のライン(例えば256本や512本)からなる画像データが、ほぼ一定間隔で次々と入力される。タイミング調整バッファ40は、この画像データを、適当なタイミングでバッファSに出力する。バッファSは、こうして入力された画像データを一時的に記憶するための領域である。バッファSに入力された画像データは画像処理部22で行われる処理Aでの処理に直接的に使用され、その結果得られる画像データはバッファAに記憶される。同様にして、画像処理部22で行われる処理Bでは、バッファAに記憶された画像データを取得して処理を行い、その結果をバッファBに記憶させる。つまり、バッファBでは、入力装置12から入力された画像データを間接的に使用している。そして、処理Cでは、バッファBに記憶された画像データを取得して処理し、その結果をバッファCに記憶させる。また、タイミング調整バッファ42では、バッファCに記憶された画像データを出力装置14に出力するためのタイミングを調整している。
メモリ18には、ある画像データに対する画像処理に必要な記憶量の他に、その前あるいは後に入力される画像データやその画像処理で生成された画像データを一時的に保存するための記憶量が確保されている。これにより、画像処理部22における画像処理が終了する前に、次の画像データが入力されても、次の画像データや、前の画像データ(あるいはその画像処理で得られた画像データ)を一時的に記憶しておくことが可能となり、次の画像データの入力が妨げられなくなる。また、メモリ18内の各バッファの領域は、可変としても固定としてもよい。可変の場合には、例えば、記憶量の融通性を高めることが可能となり、固定の場合には、例えば、迅速なアクセスを優先することが可能となる。
メモリ制御部20は、バッファアドレス生成部50を備える。バッファアドレス生成部50は、リード(read)アドレスカウンタと、ライト(write)アドレスカウンタを備えている。リードアドレスカウンタは、メモリ18の各バッファにおける現在の読み取り位置(これをリードポインタという)を生成し、ライトアドレスカウンタは、メモリ18の各バッファにおける現在の書き込み位置(これをライトポインタという)を生成する。
処理順制御部32は、入力バッファ完了割込部52、次タスク判断部54、処理実行判定部56、現タスク判断部58、及びタスク順管理部60を備える。入力バッファ完了割込部52は、メモリ18のメモリSに対する入力画像データの書き込みが完了した時点で、書き込みが完了した旨の割り込み信号を、次タスク判断部54及び現タスク判断部58に出力する。
次タスク判断部54は、入力バッファ完了割込部52から割り込みをかけられると、処理実行判定部56から実行可能フラグ、すなわちこの時点で実行可能な画像処理は何かという情報を取得し、その結果をタスク順管理部60に送信する。
処理実行判定部56は、バッファアドレス生成部50から、バッファS、バッファA、バッファB、バッファCのリードポインタ・ライトポインタ信号51を取得する。そして、各バッファにおけるリードポインタとライトポインタを比較し、「ライトポインタ > リードポインタ」の関係を満たす場合には、差分値「ライトポインタ − リードポインタ」を計算する。この差分値が、次の処理を実行可能な記憶容量よりも大きいものである場合には、対応する画像処理における画像データの書き込みが可能であると判定する。さらに、この画像処理における画像データの読み込みが可能であるかも判定し、両方可能である場合には、対応する画像処理についての実行可能フラグ信号を生成して、次タスク判断部54に送信する。例えば、バッファSに所定の画像データが書き込み済みであり、バッファAに処理Aで出力される画像データを格納する余裕がある場合には、処理Aについての実行可能フラグ信号が送信される。同様に、処理B、処理Cの実行可能フラグは、それぞれ、バッファAからの読み込みが可能かつバッファBへの書き込みが可能な場合と、バッファBからの読み込みが可能かつバッファCへの書き込みが可能な場合に生成され送信される。
現タスク判断部58は、入力バッファ完了割込部52から割り込みをかけられると、メモリ制御部20にアクセスして、メモリの状態を基に、現在どの処理(タスク)がどの程度実行されているかを調べる。そして、基準値と比較して、このタスクを停止してよいか否かを判断する。判断結果は、タスク順管理部60に送信される。
タスク順管理部60は、次タスク判断部54と現タスク判断部58からの入力を参照して、現タスクの実施を継続するか、それとも現タスクを停止して新しいタスクを実行するか決定し、必要に応じて処理実行制御部30に新た強いタスクの実行制御を指示する。なお、タスク順管理部60は、図3に示したタスク順管理テーブルを内蔵して、タスク順を管理している。
タスク順管理テーブルには、「プライオリティ」、「処理名」、「実行許可」、「実行中」、「実行可能タスク数」の各欄が設けられている。プライオリティは、各処理の実行優先順位の高さを自然数で表したものであり、プライオリティの高いものほど小さな数が与えられている。また、処理名は、処理A、処理B、処理Cの各画像処理を表しており、各処理名にはコンピュータ内部で使用する識別記号(TAG)として2進法3桁の数値が割り当てられている。実行許可の欄は、タスク順管理部60の下した判断が入力される欄であり、次に実行すべきタスクに「1」、それ以外のタスクに「0」が与えられる。そして、実行中の欄には、現在実行中のタスクに「1」、それ以外のタスクに「0」が与えられている。実行可能タスク数は、次タスク判断部54の判断結果に基づいて設定されるものであり、画像処理毎に実行可能なタスク(実行を待っている画像データ)がいくつあるかを表している。
図3に示したタスク順管理テーブルの例では、プライオリティ1(最も高い)として、処理Aが設定されている。図示した例では、処理Aに対しては、現在、実行許可が出されている。これは、最もプライオリティの高い処理Aに、実行可能なタスクが1個(1画像データ)あることによる。これに対し、処理Bには、実行可能タスクが1個あるものの、プライオリティが処理Aよりも低いため、実行許可は与えられていない。処理Bに対する実行許可は、処理Aの実行可能タスク数が0個の場合に与えられるのである。また、処理Cは、現在実行中のタスクが1個あり、さらに現在実行可能なタスクが1個ある。しかし、処理Cよりもプライオリティが高い処理Aと処理Bに実行可能なタスクがあるため、処理Cには次のタスクの実行許可は与えられていない。
画像処理が画像データの入力に追いつかずに、実行可能タスク数が2個以上になる場合もある。この場合には、図3のタスク順管理テーブルに従えば、プライオリティ1である処理Aのタスクが実行可能である限り、処理Aのタスクに実行許可が与えられ続ける。そして、処理Aについての実行可能タスク数が0になった場合に、プライオリティ2である処理Bのタスクが実行されるという態様が取られる。この態様は、処理Aの対象となる画像データが記憶されたバッファSに、新たに入力される画像データの記憶領域を確保するために有効である。もちろん、この結果として、バッファAやバッファBには、次々と画像データが蓄積され、記憶領域が飽和してしまう可能性もある。しかし、その場合には、当面使用しない画像データを、別途設けられた記憶領域に待避させればよい。この結果、入力装置12からの入力を滞らせることなく、処理を実行できるようになる。
また、実行可能タスク数が2個以上になる場合の別の例として、処理Bと処理Cについては、新しいデータの処理を優先する態様も挙げられる。この例においても、まず、処理Aを行ってバッファSに空き領域を確保することを最優先とすることは変わらない。しかし、処理Aよりも下流側の処理である処理Bと処理Cについては、最も新しく入力した画像データに対する処理Bと処理Cを行った後に、その前に入力した画像データに対する処理Bと処理Cを行うというようにタスク順を管理することができる。この管理が行われる場合には、バッファAやバッファBに記憶されている古い(先に入力された)画像データを別途設けられた記憶領域に待避させておくことで、待避先とメモリ18との間で頻繁に画像データを入れ替える作業を行うことなく、バッファAやバッファBに空き容量を確保することができる。
なお、プライオリティは、原則的には、処理毎に固定される。しかし、プライオリティを固定することで、一部の画像処理だけが実行せずにたまってしまうことも考えられる。そこで、定期的にプライオリティ順を変更することも可能である。
再び図2に戻って、処理実行制御部30について説明する。処理実行制御部30は、タスク順管理部60から、いずれの処理を画像処理部22に実行させるか指示される。そして、この指示に従って、画像処理部22の再構成可能なハードウエアである処理Xを、処理A、処理B、処理Cのいずれかに特化したハードウエアとして構成する。
画像処理部22は、処理A、処理B、処理Cのいずれかの画像処理を行う。処理Aでは、バッファSから入力した画像データを読み込み、処理結果をバッファAに出力する。また、処理Bでは、バッファAから入力した画像データを読み込み、処理結果をバッファBに出力する。そして、処理Cでは、バッファBから入力した画像データを読み込み、処理結果をバッファCに出力する。処理の例としては、様々なものを挙げることができる。例えば、圧縮、伸張、ラベリング、特徴検知(ノイズ特徴検出、マーキング検出)などは、画像データが表現する画像の特性に応じて処理時間が変わる処理の例である。また、二値化処理や、画素フィルタによるフィルタ処理などは、画像データが表現する画像の特性にかかわらず処理時間が変わらない処理の例である。なお、バッファCに記憶されたデータは、タイミング調整バッファ42に出力される。そして、タイミング調整バッファ42からは、適当なタイミングで出力装置14に画像データの出力が行われる。
ここで、画像処理システム10の動作について、簡単に説明する。
入力装置12がスキャンにより生成した画像データは、メモリ18に送信され、タイミング調整バッファ40を経て、バッファSに記憶される。そして、処理Aを受けることで、処理後の画像データがバッファAに記憶されるとともに、バッファSに記憶されていた画像データが削除される(積極的に消し去る必要はなく、上書き可能な状態となれば十分である)。同様にして、処理Bは、バッファAに記憶された画像データを対象として処理を行い、処理結果の画像データをバッファBに書き込むとともに、バッファAに記憶された画像データを削除する。また、処理Cは、バッファBに記憶された画像データを対象として処理を行い、処理結果の画像データをバッファCに書き込むとともに、バッファBに記憶された画像データを削除する。そして、バッファCに記憶された画像データは、タイミング調整バッファ42を経由して、出力装置14に出力される。
このように、処理A、処理B、処理Cは、パイプラインを形成し、画像データに対して一連の処理を行う。パイプラインは、画像処理部22の再構成可能なハードウエアである処理X上に構築される。つまり、処理実行制御部30からの指示信号により、処理Xは、処理A、処理B、処理Cのいずれかを行うハードウエアへと再構成される。このため、パイプラインは、処理A、処理B、処理Cの各ハードウエアを備える必要はなく、ハードウエア量を比較的少なくすることが可能となる。
パイプライン処理の後に、あるいは、パイプライン処理の間に、入力装置12からは、次の画像データがメモリ18に送信される。入力装置12は、入力装置12の処理能力、あるいは入力装置12とメモリ18の間の通信帯域により規定される時間間隔で、次々と画像データをメモリ18に送信するのである。
次の画像データの入力が、前の画像データのパイプライン処理の後に行われる場合には、前の画像データに対して処理A、処理B、処理Cが連続的に行われる。画像処理の処理順は、処理順制御部32において決定されるが、一つの画像データのみが入力されている状態では、各処理間に競合が発生しない。このため、実行可能な処理は必然的にひとつに決定され、処理順制御部32は、処理A、処理B、処理Cの実行を、順次処理実行制御部30に指示するのである。
他方、画像データの入力が、パイプライン処理の間に行われる場合には、先に入力された画像データに対する画像処理と、後に入力された画像データに対する画像処理とが競合する。このため、いずれの処理を実施するかは、処理順制御部32の制御態様に委ねられる。
図4は、処理順制御部32によって、処理が決定される過程を簡単にまとめたフローチャートである。新しい画像データがバッファSへ入力された場合には、メモリ18から、入力バッファ完了割込部52を通じて、次タスク判断部54に割り込みが行われる(S10)。また、次タスク判断部54は、ある処理の実行が終了した場合にも、処理実行判定部56からの実行可能フラグ信号57を通じて、その情報を知ることができる(S10)。具体的には、処理実行判定部56は、バッファアドレス生成部50から送信されるリードポインタ・ライトポインタ信号51をもとに、どの処理を次に行うことができるか判定する。
このステップS10のイベントが発生すると、次タスク判断部54では、処理実行判定部56からの実行可能フラグ信号57に基づいて、次に実行可能な処理の種類を判断し、タスク順管理部60に送信する。そして、タスク順管理部60では、受信した結果を基に、図3に示したタスク順管理テーブルの「実行可能タスク数」の欄を更新する(S12)。また、タスク順管理部60では、現タスク判断部58から、現タスクを停止してよいか否かの情報も取得する。
現タスク判定部58から、現タスクを停止してもよいとの判断結果を受信した場合、タスク順管理部60では、タスク順管理テーブルを参照し、最もプライオリティが高く、かつ、実行可能なタスクが存在する処理を選択する(S14)。そして、選択した処理に対応するTAGの値を処理実行制御部30に送信する。処理実行制御部30では、TAGの値を受信すると、現在のタスクを停止した後に、TAGの値に対応した画像処理で画像処理部22を再構成し、新たなタスクを開始する(S16)。
ここで、図5と図6を用いて、画像処理の切り替えの例を説明する。図5と図6は、横軸を時間軸として、3枚の画像データの入力タイミングと、入力した画像データに対する処理A、処理B、処理Cのタイミングについて示すタイムチャートである。図5は、参考例として、処理順の入れ替え制御が行われない場合を示しており、図6は、図1乃至図4を用いて説明した処理順の入れ替え制御が行われる場合を示している。両図においては、共通する箇所には同一の符号を付している。
図5において、符号80で示した上部領域は、入力装置12の能力が十分に発揮された場合に、画像データがメモリ18に記憶されるタイミングを示している。この例では、期間90,92,94に、3枚の用紙がスキャンされている。スキャン結果は多数のライン状の画像からなるが、ここでは、複数のラインがまとめられて、用紙1枚につき4個の画像データが生成される。1枚目の用紙における1個目の画像データは、期間100に入力装置12からメモリ18に送信される。つまり、この期間100が終了する時刻102に、1個目の画像データのバッファSへの入力が完了する。続いて、期間104には、1枚目の用紙における2個目の画像データがメモリ18に入力され、時刻106にバッファSへの入力が完了する。こうした画像データに対して行われる画像処理は、入力間隔よりも速く行われるため、入力装置12からメモリ18への入力待ちは発生していない。
図5において、符号82で示した中央部の領域には、この例における画像データの実際の入力タイミングを示している。そして、符号84で示した下部領域には、処理A、処理B、処理Cが行われるタイミングが記されている。
1枚目の用紙における1個目の画像データの入力は期間110に行われ、そのバッファSへの入力は時刻112に完了する。期間110及び時刻112は、上で説明した期間100及び時刻102と同じタイミングである。バッファSへの入力が終了した時刻112には、入力バッファ完了割込部52による割り込み処理が行われる。そして、入力された画像データに対する処理Aが、期間120に行われる。続く期間122には処理Bが行われ、さらに、期間124には処理Cが行われる。
メモリ18においては、期間120に処理Aが行われた後の期間114に、1枚目の用紙における2個目の画像データの入力が行われる。期間120の処理Aは、特別な遅延を伴うこともなく終了するため、2個目の画像データの入力期間114は、期間104と同期間である。そして、バッファSへの入力が完了する時刻116には、期間124に行われる処理Cが既に完了しているため、1個目の画像データの場合と同様に、即座に、2個目の画像データに対する処理が開始される。すなわち、処理A、処理B、処理Cが、時刻116に続く期間126,128,130に順次行われる。
2枚目の用紙における1個目の画像データ及び2個目の画像データも、滞ることなく、期間140,144に行われる。そして、2枚目の用紙における1個目の画像データの入力が時刻142に完了すると、続く期間160,162,164には処理A、処理B、処理Cの各処理が順次行われる。ただし、処理Bが行われる期間162は、1枚目の各画像データに対する処理Bの所要時間よりも3倍程度長くなっている。これは、処理Bの所要時間が、画像データの画像特性に依存しているためである。例えば、処理Bが画像特徴抽出処理であり、画像データ中に抽出の候補となる画像が多い場合には、検索および絞込み量が多くなり、このように所要時間が長くなる。
したがって、2枚目の用紙における2個目の画像データに対する処理A(期間166)は、期間164に行われる処理Cが終了した直後から開始されるが、このタイミングは、1枚目の用紙における2個目の画像データに対するタイミングよりも遅くなっている。また、2枚目の用紙における3個目の画像データの入力の期間148も、処理Aが期間166に行われた後に開始されるため、1枚目の用紙における3個目の画像データの入力期間よりも遅くなっている。
このようなタイミングずれの結果、2枚目の用紙における4個目の画像データに対する処理A(期間180)、処理B(期間182)、処理C(期間184)にも遅れが生じている。そして、3枚目の用紙における1個目の画像データの入力は、処理A(期間180)が終了した後の期間190に行われ、3枚目の用紙における2個目の画像データの入力は、3枚目の用紙における1個目の画像データに対する処理A(期間200)が行われたあとで開始される。
このように、画像処理の処理時間が画像の特性のために長くなってしまうと、入力装置12からメモリ18への画像データ入力が遅延することになる。図5に示した例では、3枚目の用紙における画像データの画像処理は1枚目と同様に速やかに行われるため、遅延の拡大は発生していない。しかし、仮に、3枚目の用紙における画像データについても画像処理の所要時間が長くなったり、2枚目の用紙の画像データに対する複数の画像処理で処理時間が長くなったりすると、さらに大きな遅延が発生することになる。
なお、図5に示した例では、処理Aが行われないと、新たな画像データの入力ができないものとして説明を行った。この代わりに、バッファSを大きく確保し、処理Aが行われる前に、1個または複数個の画像データを入力するようにしてもよい。しかし、この場合には、ハードウエア量が増大することになる。また、当然ながら、記憶容量を上回る大量の画像データの入力には対応できない。
図6に示した例では、入力される画像データの画像特性は図5の例と同じであるが、図5の例とは異なり、前後する画像データへの処理順が変更されている。具体的には、図3に示したタスク順管理テーブルのプライオリティに従って、処理の優先度が定められている。すなわち、複数の画像データに対する処理が実行可能な状態では、処理A、処理B、処理Cの順に優先的に処理が行われる。
図6では、2枚目の用紙における1番目の画像データに対し処理B(期間162)を行うまでは、図5と同様に進行する。この時点までは、複数の画像データに対する処理が競合しないからである。しかし、期間162の間には、2枚目の用紙における2番目の画像データの入力が行われる(期間144)。このため、処理B(期間162)が終了した時点では、2枚目の用紙における1番目の画像データに対し処理Cを行うか、2枚目の用紙における2番目の画像データに対し処理Aを行うかの選択が可能である。そこで、優先順位に従ってまず、2番目の画像データに対する処理A(期間220)が行われ、次に、1番目の画像データに対する処理C(期間222)が行われる。
同様にして、2番目の画像データに対する処理B(期間224)の完了後にも、3番目の画像データに対する処理A(期間226)が優先的に行われ、続いて、2番目の画像データに対する処理C(期間228)が行われる。また、3番目の画像データに対する処理B(期間230)の完了後にも、4番目の画像データに対する処理A(期間232)が優先的に行われ、続いて、3番目の画像データに対する処理C(期間234)が行われる。しかし、続く4番目の画像データに対する処理B(期間236)は途中で停止され、先に3枚目の用紙における1番目の画像データに対し処理A(期間238)が行われている。停止が行われたのは、処理Bの進捗率が基準値よりも低く、再計算を行っても時間があまり無駄にならないとの判断されたためである。そして、期間238の終了後に、2枚目の用紙における4番目の画像データに対し、再度はじめから処理B(期間240)が行われ、続いて処理C(期間240)が行われている。
処理順の制御は、3枚目の用紙に対しても行われる。例えば、3枚目の用紙における2番目の画像データに対する処理A(期間244)は、3枚目の用紙における1番目の画像データに対する処理B(期間246)と処理C(期間248)に先だって行われている。
この処理順制御の結果、符号210で示した画像データの入力タイミングは、図5の場合とは異なるものとなっている。すなわち、2枚目の用紙の3個目の画像データの入力期間260は、図5における期間148に比べてほとんど遅れておらず、4個目の画像データの入力期間262の遅れも比較的小さい。同様に、3枚目の用紙の1個目の画像データの入力期間264や、2個目の画像データの入力期間266でも遅れはほとんど発生していない。
このことは、入力装置12におけるスキャンと、メモリ18への画像データの転送には、入力待ちに伴う時間的なロスがほとんど発生していないことを示している。したがって、入力装置12では、画像データの画質によって画像処理の所要時間が延長される場合であっても、あまり影響されることなくスキャン及び画像データ転送を終了することができる。したがって、例えば、入力装置12をその後に別の用途(他の画像処理装置への入力など)に使用する場合にも、長時間待たされるような事態が回避される。
図6に示した例では、処理Bを実施している期間162,224,230の最中に、処理Aの開始が可能となったが、処理Bを停止しなかった。他方、期間236では処理Bを停止して、処理A(期間238)を開始した。以下では、この制御について、図7乃至図12を用いて説明する。
図7は、処理A、処理B、処理Cの設定例を示す表である。表には、「処理名」、「処理」、「画質に依存」、「T値」の欄が設けられている。「処理名」としては、処理A、処理B、処理Cが記されている。そして、これらの各処理について、いかなる「処理」が設定されるか、その「処理」が「画質に依存」するか否か、処理停止の基準値となる「T値」を何パーセントに設定するかについて例示されている。具体的には、処理Aについては、例えばRGB系をLab系に変換する色変換処理が設定されている。この色変換処理は画像データの画質に依存するものではない。また、T値は100%に設定されている。処理Bについては、ノイズ特徴検出やマーキング特徴検出などの特徴検出処理が設定されている。特徴検出処理は画質に依存する処理である。そしてT値は90%に設定されている。また、処理Cには、画質に依存するjpegなどの圧縮処理が設定されており、T値としては90%が設定されている。各処理のT値は、現タスク判断部58内に設定されて、現タスクの停止の判断に用いられる。
ここで、T値の利用について、図8を用いて説明する。図8は、画像処理を実行中に、入力バッファ完了割り込みが行われた場合の制御の流れを説明するフローチャートである。入力バッファ完了割り込みが発生すると、タスク順管理部60では、タスク順管理テーブルを参照し、現在画像処理が行われているか否かを確認する。そして、画像処理が行われていない場合には処理Aが実行される。また、画像処理が行われている場合には、現タスク判断部58が、処理実行中の画像処理が書き込んでいるバッファのライトポインタをモニタする(S26)。これにより、現在の進捗率が何パーセントかを知ることができる。次に、現タスク判断部58は、この進捗率がT値よりも大きいか否かを判定する(S28)。そして、T値よりも大きい場合には、現在の処理を継続する旨の判断を下す(S30)。これに対し、T値よりも小さい場合には、実行中の処理を停止する旨の判断を下す(S32)。この結果、タスク順管理部60によって、実施中の処理の終了と、処理Aの実行が決定される(S34)。図7の例で言えば、T値が100%である処理Aは途中で停止させられることはない。しかし、処理Bと処理Cは、90%以上の進捗率に達していない限り、処理を停止されることになる。
図9の表は、画像データの処理モードに応じて異なるT値を設定する例を示している。図9の表においては、「ノーマルモード」、「写真モード」、「文字モード」、「高画質モード」の別にT値が設定されている。各モードは、入力装置12においてスキャンを実行する際に、ユーザ設定されるものであり、どのような画質に適した画像処理が行われるかを示している。また、T値は、これらの各モードにおける処理の所要時間の違いを考慮して、向上出荷時等に適当な値に設定されている。例えば、高品質な画像処理を行う「高画質モード」では、画像処理に要する時間も長くなるため、再実行の無駄を避けて、処理Bと処理CのT値が低めの値(80%)に設定されている。他方、「文字モード」では、比較的大雑把な画像処理が行われるため、実行速度が速く再実行も容易であることから、処理Bと処理CのT値が高めの値(95%)に設定されている。
次に、図10と図11を用いて、履歴に応じてT値を設定しなおす例を説明する。図10は、この場合の処理の流れを示すフローチャートであり、図8と同一のステップには、同一の番号を付して説明を省略する。また、図11は、処理Bや処理Cが停止された場合の履歴の例を示す表である。
図10のステップS28で進捗率がT%に満たない場合には、現タスク判断部58は、履歴として進捗率を記録しておく(S40)。そして、今回を含め、これまでに進捗率が70%以上であったことが2度以上あるかを判定する(S42)。図11に示した履歴の例では、1回目は進捗率が60%(70%未満)であり、当然過去に70%以上であったこともないため、実行中の処理を停止して(S48)、処理Aを実行することになる(S50)。また、2回目は進捗率が75%(70%以上)であるが、70%以上は1度目であるため、実行中の処理の停止と(S48)、処理Aの実行が行われる(S50)。そして、3回目は進捗率が65%(70%未満)であり、過去に70%以上であったことは1度しかないため、同様にして、実行中の処理の停止と(S48)、処理Aの実行が行われる(S50)。これに対し、4回目は、進捗率が75%(70%以上)であり、過去に70%以上であったことが2度目となる。そこで、現タスク判断部58は、T値を100%に変更した上で(S44)、現タスクを継続する旨の判断を行う(S46)。一般に、T値に近い高進捗率での処理停止が複数回繰り返されると、停止後の再実行に多くの時間が必要となる。そこで、ここでは、進捗率70%以上が2度繰り返される場合には、T値を100%に変更し処理の停止を行わないようにしているのである。
最後に、図12乃至図14を用いて、図1に示した画像処理部22を実現するための構成例について説明する。図12乃至図14においては、図1と同一の構成には同一の番号を付し、その説明を省略乃至は簡略化する。
図12に示した画像処理システム300では、画像処理装置302に、画像処理部304、機能格納部306、及び機能ロード部308が設けられている。画像処理部304は、典型的には、論理要素、入出力要素、接続要素などを含んだハードウエアである。また、機能格納部306には、画像処理部304に制御信号を送信して、ハードウエアの信号処理動作を変更させ、画像処理部304に複数の画像処理(処理A、処理B、処理C)のいずれかの機能を実現させるための制御プログラムが格納されている。機能ロード部308は、処理実行制御部30からの指示に従って、機能格納部306から対応する処理機能を画像処理部304にロードする。これにより、画像処理部304は、処理A、処理B、処理Cのいずれかの機能に特化したプロセッサとして動作する。
図13に示した画像処理システム400では、画像処理装置402に、画像処理部404が設けられており、画像処理部404には、SEL406、処理A部408、処理B部410、処理C部412が設けられている。処理A部408、処理B部410、処理C部412は、それぞれ処理A、処理B、処理Cを行うASIC等の専用回路である。そして、SEL406は、処理A部408、処理B部410、処理C部412のいずれかを選択して、対応する処理が実行できるように設定するセレクタである。これにより、画像処理部404は、あたかも、処理A、処理B、処理Cのいずれかを行う専用回路のみが搭載されたデバイスとして機能する。
図14に示した画像処理システム500では、二つの画像処理部504,506が設けられている。画像処理部504は、処理実行制御部508によって直接的に制御されている。また、画像処理部506は、DMAC510を通じて、処理実行制御部508による機能選択の制御と、メモリ18へのアクセス制御とを受けている。画像処理部504と画像処理部506は、ソフトウエア制御によって再構成可能なハードウエアであり、例えば、図12や図13に示した態様で作られていてもよい。図示した例では、画像処理部504は、処理A、処理B、処理Eを択一的に行う機能を備え、画像処理部506は、処理C、処理D、処理Fを択一的に行う機能を備える。そして、画像処理部506は、画像処理部504とは別にDMAC510を通じてメモリ18にアクセスすることができる。したがって、画像処理部504,506は、連携して異なる種類の画像処理を行うこともできる。なお、この例とは異なり、画像処理部504,506に共通な処理機能を設けることも有効である。この場合には、画像処理部504,506とで互いに補完しあって一つの画像処理を実現することが可能となる。また、別の態様として、画像処理部506を再構成不可能な画像処理部として構成する例を挙げることもできる。
10 画像処理システム、12 入力装置、14 出力装置、16 画像処理装置、18 メモリ、20 メモリ制御部、22 画像処理部、30 処理実行制御部、32 処理順制御部、34 タスク順管理部、36,58 現タスク判断部、38,54 次タスク判断部、40,42 タイミング調整バッファ、50 バッファアドレス生成部、51 リードポインタ・ライトポインタ信号、52 入力バッファ完了割込部、56 処理実行判定部、57 実行可能フラグ信号、60 タスク順管理部。