(57)【特許請求の範囲】
【請求項１】
スキャナと、
実施する画像処理の種類を、ソフトウエア制御により再構成できるハードウエアと、
前記ハードウエアを順次再構成して、前記スキャナから順次入力された各画像データに対し、複数の画像処理を順次実施する画像処理手段と、
処理順制御条件に従って、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データに対する少なくとも一つの画像処理を優先するように、前記画像処理手段における処理順を制御する処理順制御手段と、
を備え、
処理順制御条件は、先に入力された画像データに対する着手中の画像処理の進捗度合いが基準値以下である場合に、この着手中の画像処理を停止して、後に入力された画像データに対する画像処理を優先し、かつ、前記進捗度合いが前記基準値より大きい場合は前記先に入力された画像データに対する着手中の画像処理を継続するように設定される、
ことを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
画像処理手段が画像データに対して実施する少なくとも一つの画像処理は、画像データが表現する画像の特性に応じて処理時間が変動する処理である画像処理装置。
【請求項３】
請求項１に記載の画像処理装置において、
さらに、先に入力された画像データに対する画像処理の実施状況と、後に入力された画像データに対する画像処理の実施状況とを診断する診断手段を備え、
処理順制御条件は、診断結果に基づいて評価される条件である画像処理装置。
【請求項４】
請求項１に記載の画像処理装置において、
処理順制御条件は、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データを直接加工する画像処理が優先されるように設定される画像処理装置。
【請求項５】
請求項４に記載の画像処理装置において、
処理順制御条件は、先に入力された画像データに対する未着手の画像処理が、後に入力された画像データを間接加工する画像処理よりも優先されるように設定される画像処理装置。
【請求項６】
請求項４に記載の画像処理装置において、
処理順制御条件は、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データを間接加工する画像処理が優先されるように設定される画像処理装置。
【請求項７】
請求項１に記載の画像処理装置において、
処理順制御条件は、先に入力された画像データに対する着手中の画像処理よりも、後に入力された画像データに対する画像処理が優先されるように設定される画像処理装置。
【請求項８】
請求項１に記載の画像処理装置において、
処理順制御条件においては、前記基準値は、過去において停止された画像処理の停止時の進捗度合いに基づいて修正される画像処理装置。
【請求項９】
請求項１に記載の画像処理装置において、
処理順制御条件は、画像処理のために保持すべき画像データのデータ量を減らすように設定される画像処理装置。
【請求項１０】
実施する画像処理の種類を、ソフトウエア制御により再構成できるハードウエアを備え、スキャナに接続されたコンピュータを、
前記ハードウエアを順次再構成して、前記スキャナから順次入力された各画像データに対し、複数の画像処理を順次実施する画像処理手段と、
処理順制御条件に従って、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データに対する画像処理を優先するように、前記画像処理手段における処理順を制御する処理順制御手段と、
として機能させるための制御プログラムであって、
処理順制御条件は、先に入力された画像データに対する着手中の画像処理の進捗度合いが基準値以下である場合に、この着手中の画像処理を停止して、後に入力された画像データに対する画像処理を優先し、かつ、前記進捗度合いが前記基準値より大きい場合は前記先に入力された画像データに対する着手中の画像処理を継続するように設定される、
ことを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理システム、及び制御プログラムに関する。
【背景技術】
【０００２】
下記特許文献１には、再構成可能なデータ処理パイプラインについての技術が開示されている。この技術では、再構成可能な２個のパイプライン処理ユニットを設け、各ユニット間にＤＭＡＣ（ダイレクトメモリアクセスコントローラ）転送したり、フィードバックパスしたりすることで、柔軟に処理順を変更することができる。そして、あるデータ処理を行う場合には、そのデータ処理にふさわしいパイプラインを予め構築して、その処理を行う。
【０００３】
下記特許文献２には、２個以上の画像処理部を有し、予め定められた画像処理の順番に従って各画像処理部に機能をロードして、パイプラインを構築する技術が開示されている。
【０００４】
下記特許文献３には、複数の画像処理ハードウエアを設け、予め定められた順序で、画像処理を切り替えながら、連続的にデータを流す技術が開示されている。
【０００５】
【特許文献１】特開平１１−１７９９８４号公報
【特許文献２】特開平０８−２８７２４１号公報
【特許文献３】特開平０５−３３４４２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の目的は、順次入力される画像データに対する画像処理を、再構成可能なハードウエアを利用して、新たな態様で実現することにある。
【課題を解決するための手段】
【０００７】
本発明の画像処理装置は、スキャナと、実施する画像処理の種類を、ソフトウエア制御により再構成できるハードウエアと、前記ハードウエアを順次再構成して、前記スキャナから順次入力された各画像データに対し、複数の画像処理を順次実施する画像処理手段と、処理順制御条件に従って、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データに対する少なくとも一つの画像処理を優先するように、前記画像処理手段における処理順を制御する処理順制御手段と、を備え、処理順制御条件は、先に入力された画像データに対する着手中の画像処理の進捗度合いが基準値以下である場合に、この着手中の画像処理を停止して、後に入力された画像データに対する画像処理を優先し、かつ、前記進捗度合いが前記基準値より大きい場合は前記先に入力された画像データに対する着手中の画像処理を継続するように設定される、ことを特徴とする。
【０００８】
本発明の画像処理装置の一態様においては、画像処理手段が画像データに対して実施する少なくとも一つの画像処理は、画像データが表現する画像の特性に応じて処理時間が変動する処理である。
【０００９】
本発明の画像処理装置の一態様においては、さらに、先に入力された画像データに対する画像処理の実施状況と、後に入力された画像データに対する画像処理の実施状況とを診断する診断手段を備え、処理順制御条件は、診断結果に基づいて評価される条件である。
【００１０】
本発明の画像処理装置の一態様においては、処理順制御条件は、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データを直接加工する画像処理が優先されるように設定される。
【００１１】
本発明の画像処理装置の一態様においては、処理順制御条件は、先に入力された画像データに対する未着手の画像処理が、後に入力された画像データを間接加工する画像処理よりも優先されるように設定される。
【００１２】
本発明の画像処理装置の一態様においては、処理順制御条件は、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データを間接加工する画像処理が優先されるように設定される。
【００１３】
本発明の画像処理装置の一態様においては、処理順制御条件は、先に入力された画像データに対する着手中の画像処理よりも、後に入力された画像データに対する画像処理が優先されるように設定される。
【００１５】
本発明の画像処理装置の一態様においては、処理順制御条件においては、前記基準値は、過去において停止された画像処理の停止時の進捗度合いに基づいて修正される。
【００１６】
本発明の画像処理装置の一態様においては、処理順制御条件は、画像処理のために保持すべき画像データのデータ量を減らすように設定される。
【００１９】
本発明の制御プログラムは、実施する画像処理の種類を、ソフトウエア制御により再構成できるハードウエアを備え、スキャナに接続されたコンピュータを、前記ハードウエアを順次再構成して、前記スキャナから順次入力された各画像データに対し、複数の画像処理を順次実施する画像処理手段と、処理順制御条件に従って、先に入力された画像データに対する未着手の画像処理よりも、後に入力された画像データに対する画像処理を優先するように、前記画像処理手段における処理順を制御する処理順制御手段と、として機能させるための制御プログラムであって、処理順制御条件は、先に入力された画像データに対する着手中の画像処理の進捗度合いが基準値以下である場合に、この着手中の画像処理を停止して、後に入力された画像データに対する画像処理を優先し、かつ、前記進捗度合いが前記基準値より大きい場合は前記先に入力された画像データに対する着手中の画像処理を継続するように設定される、ことを特徴とする。
【発明の効果】
【００２０】
請求項１の本発明によれば、処理順制御条件に応じた動的な処理順制御を行い、次々と入力される画像データを弾力的に処理することが可能となる。また、画像処理には、再構成可能なハードウエアを用いるため、並列アーキテクチャなどを導入する場合に比べ、ハードウエア規模を小さくする余地が生じる。更に基準値を適当に設定することで、着手中の画像処理の優先度合いを細かく制御することができる。
【００２１】
請求項２の本発明によれば、画像特性により画像処理の時間が変動する場合でも、処理順を変更することで、処理時間が変動する影響を低減することができる。これにより、例えば、ある画像処理の所要時間が想定より長くなっても、後の画像データの入力によって処理前の前の画像データが失われることを回避したり、後の画像データの入力が滞ることを回避もしくは低減したりすることが可能となる。
【００２２】
請求項３の本発明によれば、画像処理状況を診断し、リアルタイムで処理順を制御することが可能となる。請求項４の本発明によれば、入力した画像データを直接使用する処理を優先するため、入力した画像データを作業領域に長期間保存する必要がなくなる。また、請求項５の本発明によれば、後に入力された画像データの処理を優先する制御が可能になる。他方、請求項６の本発明によれば、先に入力された画像データを間接的に加工する画像処理を優先する制御が可能となる。
【００２３】
請求項７の本発明によれば、先に入力された画像データに対する着手中（実行中）の画像処理よりも、後に入力された画像データへの少なくとも一つの画像処理が優先して実施される。
【００２４】
請求項８の本発明によれば、基準値を履歴に応じて決定することで、実際の運用に合わせた制御を行うこともできる。
【００２５】
請求項９の本発明によれば、画像処理のために保持すべき画像データのデータ量を減らすことができる。
【発明を実施するための最良の形態】
【００２６】
まず、本発明の実施形態にかかる画像処理システムの構成例について概要を説明する。
【００２７】
この画像処理システムは、複数の画像データが次々と送られてくる状況下で、各画像データに対し複数の画像処理を施すシステムである。画像処理においては、複数の画像処理からなるパイプライン的な処理が行われる。つまり、入力した複数の画像データが、このパイプラインにおいて、入力順に処理されることになる。なお、ここでは、パイプラインの語を、ある画像データに複数の画像処理を次々と施すという意味で用いており、必ずしも、並列処理の一態様として知られるパイプライン方式（複数のデータを若干の時間差を付けて次々と投入する方式）のような複雑な機構を含む必要はない。また、パイプラインには、分岐や合流などがあってもよい。
【００２８】
この画像処理システムでは、画像処理の順番を変更し、画像入力を優先させる制御が行われる。制御は様々に行うことが可能であり、例えば、画像入力を少しだけ待たせて、進行中の画像処理を優先させてもよいし、進行中の画像処理を停止（強制的中止あるいは一時的な凍結）して、画像入力を優先させてもよい。また、この二つを選ぶ基準を、アダプティブ（解適合的）に決定してもよい。
【００２９】
また、この画像処理システムでは、画像処理において、少なくとも一部に、再構成可能（リコンフィギャラブル）なハードウエア（プロセッサやＡＳＩＣなどのデバイス）を用いている。再構成可能なハードウエアにおいて、次に再構成すべき画像処理を動的に変更することは、いうなれば、擬似的マルチタスクを実現するものと言える。これは、ＯＳ（オペレーティングシステム）やＭＭＵ（メモリマネージメントユニット）によるマルチタスクとはやや異なる処理態様といえる。
【００３０】
次に、図１乃至図３を用いて、画像処理システムの構成例の概略を説明する。
【００３１】
図１は、画像処理システム１０の概略的な構成例を示すブロック図である。画像処理システム１０には、入力装置１２、出力装置１４、及び画像処理装置１６が含まれており、入力装置１２と出力装置１４はともに画像処理装置１６と通信可能に接続されている。ここでは、入力装置１２は、スキャナであることを想定しているが、例えば、ネットワーク接続された画像送信装置であってもよい。また、出力装置１４は、プリンタや画像表示装置であることを想定しているが、例えば、ファイルサーバであってもよい。
【００３２】
画像処理装置１６は、汎用的集積回路やＡＳＩＣ（特定用途向け集積回路）を含む各種のコンピュータを用いて構築され得る。具体的には、コンピュータは、演算機能と記憶機能を備えたコンピュータハードウエアを、プログラム（ソフトウエア）制御することで実現される。すなわち、プログラムに基づく制御信号によって、コンピュータハードウエアの動作が規定され、演算処理や、入出力処理、記憶処理などの各種処理が行われる。また、こうした処理は、外部装置やユーザ入力装置からの受け付けた制御信号に依存して行われてもよい。なお、プログラムは、一般に、記憶媒体あるいは通信を通じて画像処理装置１６にインストールされる。
【００３３】
画像処理装置１６は、メモリ１８と、メモリ制御部２０と、画像処理部２２と、処理実行制御部３０と、処理順制御部３２とを備える。メモリ１８は、半導体メモリなどで作られた記憶装置であり、入力装置１２から入力される画像データの記憶、出力装置１４へ出力される画像データの記憶、画像処理部２２が読み出しや書き込みを行う画像データの記憶などを行う。また、メモリ制御部２０は、メモリ１８の入力アドレスや出力アドレスの管理などを行う。
【００３４】
画像処理部２２は、ソフトウエア制御によって再構成可能なハードウエアによって作られている。具体的には、処理実行制御部３０からの制御信号に基づいて、処理Ａ、処理Ｂ、処理Ｃの三つの画像処理のいずれかを実行するようにハードウエアが再構成される。そして、メモリ１８との間で画像データの入出力を行って、画像処理を実行する。画像処理部２２に対し処理実行制御部３０がどの画像処理を行わせるかは、処理順制御部３２によって決定される。
【００３５】
処理順制御部３２には、タスク順管理部３４、現タスク判断部３６、次タスク判断部３８が設けられている。現タスク判断部３６は、設定された条件に基づいて、次のタスクを実行するために現在実行中のタスクを停止してよいか否かを判断する。このため、現タスク判断部３６は、メモリ制御部２０が管理する情報を基に、画像処理部２２でどのタスクが実行されているかを調べることができ、また、必要に応じてその進捗状況を算出することもできる。なお、ここでは、タスクとは、ある画像データに対するある画像処理を指す。次タスク判断部３８は、メモリ制御部２０が管理する情報を参照した上で、次に実行可能なタスクが何であるかを判断する。すなわち、次にどの画像データに対してどの画像処理を行うことができるかを判断する。そして、タスク順管理部３４は、現タスク判断部３６と次タスク判断部３８の判断結果を参照し、必要ならば現在のタスクを停止させた上で、次のタスクを処理実行制御部３０に実行させる。
【００３６】
続いて、図２を用いて、図１に示した画像処理システム１０についてさらに説明する。図２においては、図１と同一の構成要素には同一の番号を付している。
【００３７】
メモリ１８は、入出力に用いられるタイミング調整バッファ４０，４２と、画像処理に用いられるバッファＳ、バッファＡ、バッファＢ及びバッファＣとを含んでいる。タイミング調整バッファ４０，４２は、入出力と画像処理との実行速度差を調整する目的で設けられている。タイミング調整バッファ４０に対しては、スキャナたる入力装置１２から、複数のライン（例えば２５６本や５１２本）からなる画像データが、ほぼ一定間隔で次々と入力される。タイミング調整バッファ４０は、この画像データを、適当なタイミングでバッファＳに出力する。バッファＳは、こうして入力された画像データを一時的に記憶するための領域である。バッファＳに入力された画像データは画像処理部２２で行われる処理Ａでの処理に直接的に使用され、その結果得られる画像データはバッファＡに記憶される。同様にして、画像処理部２２で行われる処理Ｂでは、バッファＡに記憶された画像データを取得して処理を行い、その結果をバッファＢに記憶させる。つまり、バッファＢでは、入力装置１２から入力された画像データを間接的に使用している。そして、処理Ｃでは、バッファＢに記憶された画像データを取得して処理し、その結果をバッファＣに記憶させる。また、タイミング調整バッファ４２では、バッファＣに記憶された画像データを出力装置１４に出力するためのタイミングを調整している。
【００３８】
メモリ１８には、ある画像データに対する画像処理に必要な記憶量の他に、その前あるいは後に入力される画像データやその画像処理で生成された画像データを一時的に保存するための記憶量が確保されている。これにより、画像処理部２２における画像処理が終了する前に、次の画像データが入力されても、次の画像データや、前の画像データ（あるいはその画像処理で得られた画像データ）を一時的に記憶しておくことが可能となり、次の画像データの入力が妨げられなくなる。また、メモリ１８内の各バッファの領域は、可変としても固定としてもよい。可変の場合には、例えば、記憶量の融通性を高めることが可能となり、固定の場合には、例えば、迅速なアクセスを優先することが可能となる。
【００３９】
メモリ制御部２０は、バッファアドレス生成部５０を備える。バッファアドレス生成部５０は、リード（ｒｅａｄ）アドレスカウンタと、ライト（ｗｒｉｔｅ）アドレスカウンタを備えている。リードアドレスカウンタは、メモリ１８の各バッファにおける現在の読み取り位置（これをリードポインタという）を生成し、ライトアドレスカウンタは、メモリ１８の各バッファにおける現在の書き込み位置（これをライトポインタという）を生成する。
【００４０】
処理順制御部３２は、入力バッファ完了割込部５２、次タスク判断部５４、処理実行判定部５６、現タスク判断部５８、及びタスク順管理部６０を備える。入力バッファ完了割込部５２は、メモリ１８のメモリＳに対する入力画像データの書き込みが完了した時点で、書き込みが完了した旨の割り込み信号を、次タスク判断部５４及び現タスク判断部５８に出力する。
【００４１】
次タスク判断部５４は、入力バッファ完了割込部５２から割り込みをかけられると、処理実行判定部５６から実行可能フラグ、すなわちこの時点で実行可能な画像処理は何かという情報を取得し、その結果をタスク順管理部６０に送信する。
【００４２】
処理実行判定部５６は、バッファアドレス生成部５０から、バッファＳ、バッファＡ、バッファＢ、バッファＣのリードポインタ・ライトポインタ信号５１を取得する。そして、各バッファにおけるリードポインタとライトポインタを比較し、「ライトポインタ  ＞  リードポインタ」の関係を満たす場合には、差分値「ライトポインタ  −  リードポインタ」を計算する。この差分値が、次の処理を実行可能な記憶容量よりも大きいものである場合には、対応する画像処理における画像データの書き込みが可能であると判定する。さらに、この画像処理における画像データの読み込みが可能であるかも判定し、両方可能である場合には、対応する画像処理についての実行可能フラグ信号を生成して、次タスク判断部５４に送信する。例えば、バッファＳに所定の画像データが書き込み済みであり、バッファＡに処理Ａで出力される画像データを格納する余裕がある場合には、処理Ａについての実行可能フラグ信号が送信される。同様に、処理Ｂ、処理Ｃの実行可能フラグは、それぞれ、バッファＡからの読み込みが可能かつバッファＢへの書き込みが可能な場合と、バッファＢからの読み込みが可能かつバッファＣへの書き込みが可能な場合に生成され送信される。
【００４３】
現タスク判断部５８は、入力バッファ完了割込部５２から割り込みをかけられると、メモリ制御部２０にアクセスして、メモリの状態を基に、現在どの処理（タスク）がどの程度実行されているかを調べる。そして、基準値と比較して、このタスクを停止してよいか否かを判断する。判断結果は、タスク順管理部６０に送信される。
【００４４】
タスク順管理部６０は、次タスク判断部５４と現タスク判断部５８からの入力を参照して、現タスクの実施を継続するか、それとも現タスクを停止して新しいタスクを実行するか決定し、必要に応じて処理実行制御部３０に新た強いタスクの実行制御を指示する。なお、タスク順管理部６０は、図３に示したタスク順管理テーブルを内蔵して、タスク順を管理している。
【００４５】
タスク順管理テーブルには、「プライオリティ」、「処理名」、「実行許可」、「実行中」、「実行可能タスク数」の各欄が設けられている。プライオリティは、各処理の実行優先順位の高さを自然数で表したものであり、プライオリティの高いものほど小さな数が与えられている。また、処理名は、処理Ａ、処理Ｂ、処理Ｃの各画像処理を表しており、各処理名にはコンピュータ内部で使用する識別記号（ＴＡＧ）として２進法３桁の数値が割り当てられている。実行許可の欄は、タスク順管理部６０の下した判断が入力される欄であり、次に実行すべきタスクに「１」、それ以外のタスクに「０」が与えられる。そして、実行中の欄には、現在実行中のタスクに「１」、それ以外のタスクに「０」が与えられている。実行可能タスク数は、次タスク判断部５４の判断結果に基づいて設定されるものであり、画像処理毎に実行可能なタスク（実行を待っている画像データ）がいくつあるかを表している。
【００４６】
図３に示したタスク順管理テーブルの例では、プライオリティ１（最も高い）として、処理Ａが設定されている。図示した例では、処理Ａに対しては、現在、実行許可が出されている。これは、最もプライオリティの高い処理Ａに、実行可能なタスクが１個（１画像データ）あることによる。これに対し、処理Ｂには、実行可能タスクが１個あるものの、プライオリティが処理Ａよりも低いため、実行許可は与えられていない。処理Ｂに対する実行許可は、処理Ａの実行可能タスク数が０個の場合に与えられるのである。また、処理Ｃは、現在実行中のタスクが１個あり、さらに現在実行可能なタスクが１個ある。しかし、処理Ｃよりもプライオリティが高い処理Ａと処理Ｂに実行可能なタスクがあるため、処理Ｃには次のタスクの実行許可は与えられていない。
【００４７】
画像処理が画像データの入力に追いつかずに、実行可能タスク数が２個以上になる場合もある。この場合には、図３のタスク順管理テーブルに従えば、プライオリティ１である処理Ａのタスクが実行可能である限り、処理Ａのタスクに実行許可が与えられ続ける。そして、処理Ａについての実行可能タスク数が０になった場合に、プライオリティ２である処理Ｂのタスクが実行されるという態様が取られる。この態様は、処理Ａの対象となる画像データが記憶されたバッファＳに、新たに入力される画像データの記憶領域を確保するために有効である。もちろん、この結果として、バッファＡやバッファＢには、次々と画像データが蓄積され、記憶領域が飽和してしまう可能性もある。しかし、その場合には、当面使用しない画像データを、別途設けられた記憶領域に待避させればよい。この結果、入力装置１２からの入力を滞らせることなく、処理を実行できるようになる。
【００４８】
また、実行可能タスク数が２個以上になる場合の別の例として、処理Ｂと処理Ｃについては、新しいデータの処理を優先する態様も挙げられる。この例においても、まず、処理Ａを行ってバッファＳに空き領域を確保することを最優先とすることは変わらない。しかし、処理Ａよりも下流側の処理である処理Ｂと処理Ｃについては、最も新しく入力した画像データに対する処理Ｂと処理Ｃを行った後に、その前に入力した画像データに対する処理Ｂと処理Ｃを行うというようにタスク順を管理することができる。この管理が行われる場合には、バッファＡやバッファＢに記憶されている古い（先に入力された）画像データを別途設けられた記憶領域に待避させておくことで、待避先とメモリ１８との間で頻繁に画像データを入れ替える作業を行うことなく、バッファＡやバッファＢに空き容量を確保することができる。
【００４９】
なお、プライオリティは、原則的には、処理毎に固定される。しかし、プライオリティを固定することで、一部の画像処理だけが実行せずにたまってしまうことも考えられる。そこで、定期的にプライオリティ順を変更することも可能である。
【００５０】
再び図２に戻って、処理実行制御部３０について説明する。処理実行制御部３０は、タスク順管理部６０から、いずれの処理を画像処理部２２に実行させるか指示される。そして、この指示に従って、画像処理部２２の再構成可能なハードウエアである処理Ｘを、処理Ａ、処理Ｂ、処理Ｃのいずれかに特化したハードウエアとして構成する。
【００５１】
画像処理部２２は、処理Ａ、処理Ｂ、処理Ｃのいずれかの画像処理を行う。処理Ａでは、バッファＳから入力した画像データを読み込み、処理結果をバッファＡに出力する。また、処理Ｂでは、バッファＡから入力した画像データを読み込み、処理結果をバッファＢに出力する。そして、処理Ｃでは、バッファＢから入力した画像データを読み込み、処理結果をバッファＣに出力する。処理の例としては、様々なものを挙げることができる。例えば、圧縮、伸張、ラベリング、特徴検知（ノイズ特徴検出、マーキング検出）などは、画像データが表現する画像の特性に応じて処理時間が変わる処理の例である。また、二値化処理や、画素フィルタによるフィルタ処理などは、画像データが表現する画像の特性にかかわらず処理時間が変わらない処理の例である。なお、バッファＣに記憶されたデータは、タイミング調整バッファ４２に出力される。そして、タイミング調整バッファ４２からは、適当なタイミングで出力装置１４に画像データの出力が行われる。
【００５２】
ここで、画像処理システム１０の動作について、簡単に説明する。
【００５３】
入力装置１２がスキャンにより生成した画像データは、メモリ１８に送信され、タイミング調整バッファ４０を経て、バッファＳに記憶される。そして、処理Ａを受けることで、処理後の画像データがバッファＡに記憶されるとともに、バッファＳに記憶されていた画像データが削除される（積極的に消し去る必要はなく、上書き可能な状態となれば十分である）。同様にして、処理Ｂは、バッファＡに記憶された画像データを対象として処理を行い、処理結果の画像データをバッファＢに書き込むとともに、バッファＡに記憶された画像データを削除する。また、処理Ｃは、バッファＢに記憶された画像データを対象として処理を行い、処理結果の画像データをバッファＣに書き込むとともに、バッファＢに記憶された画像データを削除する。そして、バッファＣに記憶された画像データは、タイミング調整バッファ４２を経由して、出力装置１４に出力される。
【００５４】
このように、処理Ａ、処理Ｂ、処理Ｃは、パイプラインを形成し、画像データに対して一連の処理を行う。パイプラインは、画像処理部２２の再構成可能なハードウエアである処理Ｘ上に構築される。つまり、処理実行制御部３０からの指示信号により、処理Ｘは、処理Ａ、処理Ｂ、処理Ｃのいずれかを行うハードウエアへと再構成される。このため、パイプラインは、処理Ａ、処理Ｂ、処理Ｃの各ハードウエアを備える必要はなく、ハードウエア量を比較的少なくすることが可能となる。
【００５５】
パイプライン処理の後に、あるいは、パイプライン処理の間に、入力装置１２からは、次の画像データがメモリ１８に送信される。入力装置１２は、入力装置１２の処理能力、あるいは入力装置１２とメモリ１８の間の通信帯域により規定される時間間隔で、次々と画像データをメモリ１８に送信するのである。
【００５６】
次の画像データの入力が、前の画像データのパイプライン処理の後に行われる場合には、前の画像データに対して処理Ａ、処理Ｂ、処理Ｃが連続的に行われる。画像処理の処理順は、処理順制御部３２において決定されるが、一つの画像データのみが入力されている状態では、各処理間に競合が発生しない。このため、実行可能な処理は必然的にひとつに決定され、処理順制御部３２は、処理Ａ、処理Ｂ、処理Ｃの実行を、順次処理実行制御部３０に指示するのである。
【００５７】
他方、画像データの入力が、パイプライン処理の間に行われる場合には、先に入力された画像データに対する画像処理と、後に入力された画像データに対する画像処理とが競合する。このため、いずれの処理を実施するかは、処理順制御部３２の制御態様に委ねられる。
【００５８】
図４は、処理順制御部３２によって、処理が決定される過程を簡単にまとめたフローチャートである。新しい画像データがバッファＳへ入力された場合には、メモリ１８から、入力バッファ完了割込部５２を通じて、次タスク判断部５４に割り込みが行われる（Ｓ１０）。また、次タスク判断部５４は、ある処理の実行が終了した場合にも、処理実行判定部５６からの実行可能フラグ信号５７を通じて、その情報を知ることができる（Ｓ１０）。具体的には、処理実行判定部５６は、バッファアドレス生成部５０から送信されるリードポインタ・ライトポインタ信号５１をもとに、どの処理を次に行うことができるか判定する。
【００５９】
このステップＳ１０のイベントが発生すると、次タスク判断部５４では、処理実行判定部５６からの実行可能フラグ信号５７に基づいて、次に実行可能な処理の種類を判断し、タスク順管理部６０に送信する。そして、タスク順管理部６０では、受信した結果を基に、図３に示したタスク順管理テーブルの「実行可能タスク数」の欄を更新する（Ｓ１２）。また、タスク順管理部６０では、現タスク判断部５８から、現タスクを停止してよいか否かの情報も取得する。
【００６０】
現タスク判定部５８から、現タスクを停止してもよいとの判断結果を受信した場合、タスク順管理部６０では、タスク順管理テーブルを参照し、最もプライオリティが高く、かつ、実行可能なタスクが存在する処理を選択する（Ｓ１４）。そして、選択した処理に対応するＴＡＧの値を処理実行制御部３０に送信する。処理実行制御部３０では、ＴＡＧの値を受信すると、現在のタスクを停止した後に、ＴＡＧの値に対応した画像処理で画像処理部２２を再構成し、新たなタスクを開始する（Ｓ１６）。
【００６１】
ここで、図５と図６を用いて、画像処理の切り替えの例を説明する。図５と図６は、横軸を時間軸として、３枚の画像データの入力タイミングと、入力した画像データに対する処理Ａ、処理Ｂ、処理Ｃのタイミングについて示すタイムチャートである。図５は、参考例として、処理順の入れ替え制御が行われない場合を示しており、図６は、図１乃至図４を用いて説明した処理順の入れ替え制御が行われる場合を示している。両図においては、共通する箇所には同一の符号を付している。
【００６２】
図５において、符号８０で示した上部領域は、入力装置１２の能力が十分に発揮された場合に、画像データがメモリ１８に記憶されるタイミングを示している。この例では、期間９０，９２，９４に、３枚の用紙がスキャンされている。スキャン結果は多数のライン状の画像からなるが、ここでは、複数のラインがまとめられて、用紙１枚につき４個の画像データが生成される。１枚目の用紙における１個目の画像データは、期間１００に入力装置１２からメモリ１８に送信される。つまり、この期間１００が終了する時刻１０２に、１個目の画像データのバッファＳへの入力が完了する。続いて、期間１０４には、１枚目の用紙における２個目の画像データがメモリ１８に入力され、時刻１０６にバッファＳへの入力が完了する。こうした画像データに対して行われる画像処理は、入力間隔よりも速く行われるため、入力装置１２からメモリ１８への入力待ちは発生していない。
【００６３】
図５において、符号８２で示した中央部の領域には、この例における画像データの実際の入力タイミングを示している。そして、符号８４で示した下部領域には、処理Ａ、処理Ｂ、処理Ｃが行われるタイミングが記されている。
【００６４】
１枚目の用紙における１個目の画像データの入力は期間１１０に行われ、そのバッファＳへの入力は時刻１１２に完了する。期間１１０及び時刻１１２は、上で説明した期間１００及び時刻１０２と同じタイミングである。バッファＳへの入力が終了した時刻１１２には、入力バッファ完了割込部５２による割り込み処理が行われる。そして、入力された画像データに対する処理Ａが、期間１２０に行われる。続く期間１２２には処理Ｂが行われ、さらに、期間１２４には処理Ｃが行われる。
【００６５】
メモリ１８においては、期間１２０に処理Ａが行われた後の期間１１４に、１枚目の用紙における２個目の画像データの入力が行われる。期間１２０の処理Ａは、特別な遅延を伴うこともなく終了するため、２個目の画像データの入力期間１１４は、期間１０４と同期間である。そして、バッファＳへの入力が完了する時刻１１６には、期間１２４に行われる処理Ｃが既に完了しているため、１個目の画像データの場合と同様に、即座に、２個目の画像データに対する処理が開始される。すなわち、処理Ａ、処理Ｂ、処理Ｃが、時刻１１６に続く期間１２６，１２８，１３０に順次行われる。
【００６６】
２枚目の用紙における１個目の画像データ及び２個目の画像データも、滞ることなく、期間１４０，１４４に行われる。そして、２枚目の用紙における１個目の画像データの入力が時刻１４２に完了すると、続く期間１６０，１６２，１６４には処理Ａ、処理Ｂ、処理Ｃの各処理が順次行われる。ただし、処理Ｂが行われる期間１６２は、１枚目の各画像データに対する処理Ｂの所要時間よりも３倍程度長くなっている。これは、処理Ｂの所要時間が、画像データの画像特性に依存しているためである。例えば、処理Ｂが画像特徴抽出処理であり、画像データ中に抽出の候補となる画像が多い場合には、検索および絞込み量が多くなり、このように所要時間が長くなる。
【００６７】
したがって、２枚目の用紙における２個目の画像データに対する処理Ａ（期間１６６）は、期間１６４に行われる処理Ｃが終了した直後から開始されるが、このタイミングは、１枚目の用紙における２個目の画像データに対するタイミングよりも遅くなっている。また、２枚目の用紙における３個目の画像データの入力の期間１４８も、処理Ａが期間１６６に行われた後に開始されるため、１枚目の用紙における３個目の画像データの入力期間よりも遅くなっている。
【００６８】
このようなタイミングずれの結果、２枚目の用紙における４個目の画像データに対する処理Ａ（期間１８０）、処理Ｂ（期間１８２）、処理Ｃ（期間１８４）にも遅れが生じている。そして、３枚目の用紙における１個目の画像データの入力は、処理Ａ（期間１８０）が終了した後の期間１９０に行われ、３枚目の用紙における２個目の画像データの入力は、３枚目の用紙における１個目の画像データに対する処理Ａ（期間２００）が行われたあとで開始される。
【００６９】
このように、画像処理の処理時間が画像の特性のために長くなってしまうと、入力装置１２からメモリ１８への画像データ入力が遅延することになる。図５に示した例では、３枚目の用紙における画像データの画像処理は１枚目と同様に速やかに行われるため、遅延の拡大は発生していない。しかし、仮に、３枚目の用紙における画像データについても画像処理の所要時間が長くなったり、２枚目の用紙の画像データに対する複数の画像処理で処理時間が長くなったりすると、さらに大きな遅延が発生することになる。
【００７０】
なお、図５に示した例では、処理Ａが行われないと、新たな画像データの入力ができないものとして説明を行った。この代わりに、バッファＳを大きく確保し、処理Ａが行われる前に、１個または複数個の画像データを入力するようにしてもよい。しかし、この場合には、ハードウエア量が増大することになる。また、当然ながら、記憶容量を上回る大量の画像データの入力には対応できない。
【００７１】
図６に示した例では、入力される画像データの画像特性は図５の例と同じであるが、図５の例とは異なり、前後する画像データへの処理順が変更されている。具体的には、図３に示したタスク順管理テーブルのプライオリティに従って、処理の優先度が定められている。すなわち、複数の画像データに対する処理が実行可能な状態では、処理Ａ、処理Ｂ、処理Ｃの順に優先的に処理が行われる。
【００７２】
図６では、２枚目の用紙における１番目の画像データに対し処理Ｂ（期間１６２）を行うまでは、図５と同様に進行する。この時点までは、複数の画像データに対する処理が競合しないからである。しかし、期間１６２の間には、２枚目の用紙における２番目の画像データの入力が行われる（期間１４４）。このため、処理Ｂ（期間１６２）が終了した時点では、２枚目の用紙における１番目の画像データに対し処理Ｃを行うか、２枚目の用紙における２番目の画像データに対し処理Ａを行うかの選択が可能である。そこで、優先順位に従ってまず、２番目の画像データに対する処理Ａ（期間２２０）が行われ、次に、１番目の画像データに対する処理Ｃ（期間２２２）が行われる。
【００７３】
同様にして、２番目の画像データに対する処理Ｂ（期間２２４）の完了後にも、３番目の画像データに対する処理Ａ（期間２２６）が優先的に行われ、続いて、２番目の画像データに対する処理Ｃ（期間２２８）が行われる。また、３番目の画像データに対する処理Ｂ（期間２３０）の完了後にも、４番目の画像データに対する処理Ａ（期間２３２）が優先的に行われ、続いて、３番目の画像データに対する処理Ｃ（期間２３４）が行われる。しかし、続く４番目の画像データに対する処理Ｂ（期間２３６）は途中で停止され、先に３枚目の用紙における１番目の画像データに対し処理Ａ（期間２３８）が行われている。停止が行われたのは、処理Ｂの進捗率が基準値よりも低く、再計算を行っても時間があまり無駄にならないとの判断されたためである。そして、期間２３８の終了後に、２枚目の用紙における４番目の画像データに対し、再度はじめから処理Ｂ（期間２４０）が行われ、続いて処理Ｃ（期間２４０）が行われている。
【００７４】
処理順の制御は、３枚目の用紙に対しても行われる。例えば、３枚目の用紙における２番目の画像データに対する処理Ａ（期間２４４）は、３枚目の用紙における１番目の画像データに対する処理Ｂ（期間２４６）と処理Ｃ（期間２４８）に先だって行われている。
【００７５】
この処理順制御の結果、符号２１０で示した画像データの入力タイミングは、図５の場合とは異なるものとなっている。すなわち、２枚目の用紙の３個目の画像データの入力期間２６０は、図５における期間１４８に比べてほとんど遅れておらず、４個目の画像データの入力期間２６２の遅れも比較的小さい。同様に、３枚目の用紙の１個目の画像データの入力期間２６４や、２個目の画像データの入力期間２６６でも遅れはほとんど発生していない。
【００７６】
このことは、入力装置１２におけるスキャンと、メモリ１８への画像データの転送には、入力待ちに伴う時間的なロスがほとんど発生していないことを示している。したがって、入力装置１２では、画像データの画質によって画像処理の所要時間が延長される場合であっても、あまり影響されることなくスキャン及び画像データ転送を終了することができる。したがって、例えば、入力装置１２をその後に別の用途（他の画像処理装置への入力など）に使用する場合にも、長時間待たされるような事態が回避される。
【００７７】
図６に示した例では、処理Ｂを実施している期間１６２，２２４，２３０の最中に、処理Ａの開始が可能となったが、処理Ｂを停止しなかった。他方、期間２３６では処理Ｂを停止して、処理Ａ（期間２３８）を開始した。以下では、この制御について、図７乃至図１２を用いて説明する。
【００７８】
図７は、処理Ａ、処理Ｂ、処理Ｃの設定例を示す表である。表には、「処理名」、「処理」、「画質に依存」、「Ｔ値」の欄が設けられている。「処理名」としては、処理Ａ、処理Ｂ、処理Ｃが記されている。そして、これらの各処理について、いかなる「処理」が設定されるか、その「処理」が「画質に依存」するか否か、処理停止の基準値となる「Ｔ値」を何パーセントに設定するかについて例示されている。具体的には、処理Ａについては、例えばＲＧＢ系をＬａｂ系に変換する色変換処理が設定されている。この色変換処理は画像データの画質に依存するものではない。また、Ｔ値は１００％に設定されている。処理Ｂについては、ノイズ特徴検出やマーキング特徴検出などの特徴検出処理が設定されている。特徴検出処理は画質に依存する処理である。そしてＴ値は９０％に設定されている。また、処理Ｃには、画質に依存するjpegなどの圧縮処理が設定されており、Ｔ値としては９０％が設定されている。各処理のＴ値は、現タスク判断部５８内に設定されて、現タスクの停止の判断に用いられる。
【００７９】
ここで、Ｔ値の利用について、図８を用いて説明する。図８は、画像処理を実行中に、入力バッファ完了割り込みが行われた場合の制御の流れを説明するフローチャートである。入力バッファ完了割り込みが発生すると、タスク順管理部６０では、タスク順管理テーブルを参照し、現在画像処理が行われているか否かを確認する。そして、画像処理が行われていない場合には処理Ａが実行される。また、画像処理が行われている場合には、現タスク判断部５８が、処理実行中の画像処理が書き込んでいるバッファのライトポインタをモニタする（Ｓ２６）。これにより、現在の進捗率が何パーセントかを知ることができる。次に、現タスク判断部５８は、この進捗率がＴ値よりも大きいか否かを判定する（Ｓ２８）。そして、Ｔ値よりも大きい場合には、現在の処理を継続する旨の判断を下す（Ｓ３０）。これに対し、Ｔ値よりも小さい場合には、実行中の処理を停止する旨の判断を下す（Ｓ３２）。この結果、タスク順管理部６０によって、実施中の処理の終了と、処理Ａの実行が決定される（Ｓ３４）。図７の例で言えば、Ｔ値が１００％である処理Ａは途中で停止させられることはない。しかし、処理Ｂと処理Ｃは、９０％以上の進捗率に達していない限り、処理を停止されることになる。
【００８０】
図９の表は、画像データの処理モードに応じて異なるＴ値を設定する例を示している。図９の表においては、「ノーマルモード」、「写真モード」、「文字モード」、「高画質モード」の別にＴ値が設定されている。各モードは、入力装置１２においてスキャンを実行する際に、ユーザ設定されるものであり、どのような画質に適した画像処理が行われるかを示している。また、Ｔ値は、これらの各モードにおける処理の所要時間の違いを考慮して、向上出荷時等に適当な値に設定されている。例えば、高品質な画像処理を行う「高画質モード」では、画像処理に要する時間も長くなるため、再実行の無駄を避けて、処理Ｂと処理ＣのＴ値が低めの値（８０％）に設定されている。他方、「文字モード」では、比較的大雑把な画像処理が行われるため、実行速度が速く再実行も容易であることから、処理Ｂと処理ＣのＴ値が高めの値（９５％）に設定されている。
【００８１】
次に、図１０と図１１を用いて、履歴に応じてＴ値を設定しなおす例を説明する。図１０は、この場合の処理の流れを示すフローチャートであり、図８と同一のステップには、同一の番号を付して説明を省略する。また、図１１は、処理Ｂや処理Ｃが停止された場合の履歴の例を示す表である。
【００８２】
図１０のステップＳ２８で進捗率がＴ％に満たない場合には、現タスク判断部５８は、履歴として進捗率を記録しておく（Ｓ４０）。そして、今回を含め、これまでに進捗率が７０％以上であったことが２度以上あるかを判定する（Ｓ４２）。図１１に示した履歴の例では、１回目は進捗率が６０％（７０％未満）であり、当然過去に７０％以上であったこともないため、実行中の処理を停止して（Ｓ４８）、処理Ａを実行することになる（Ｓ５０）。また、２回目は進捗率が７５％（７０％以上）であるが、７０％以上は１度目であるため、実行中の処理の停止と（Ｓ４８）、処理Ａの実行が行われる（Ｓ５０）。そして、３回目は進捗率が６５％（７０％未満）であり、過去に７０％以上であったことは１度しかないため、同様にして、実行中の処理の停止と（Ｓ４８）、処理Ａの実行が行われる（Ｓ５０）。これに対し、４回目は、進捗率が７５％（７０％以上）であり、過去に７０％以上であったことが２度目となる。そこで、現タスク判断部５８は、Ｔ値を１００％に変更した上で（Ｓ４４）、現タスクを継続する旨の判断を行う（Ｓ４６）。一般に、Ｔ値に近い高進捗率での処理停止が複数回繰り返されると、停止後の再実行に多くの時間が必要となる。そこで、ここでは、進捗率７０％以上が２度繰り返される場合には、Ｔ値を１００％に変更し処理の停止を行わないようにしているのである。
【００８３】
最後に、図１２乃至図１４を用いて、図１に示した画像処理部２２を実現するための構成例について説明する。図１２乃至図１４においては、図１と同一の構成には同一の番号を付し、その説明を省略乃至は簡略化する。
【００８４】
図１２に示した画像処理システム３００では、画像処理装置３０２に、画像処理部３０４、機能格納部３０６、及び機能ロード部３０８が設けられている。画像処理部３０４は、典型的には、論理要素、入出力要素、接続要素などを含んだハードウエアである。また、機能格納部３０６には、画像処理部３０４に制御信号を送信して、ハードウエアの信号処理動作を変更させ、画像処理部３０４に複数の画像処理（処理Ａ、処理Ｂ、処理Ｃ）のいずれかの機能を実現させるための制御プログラムが格納されている。機能ロード部３０８は、処理実行制御部３０からの指示に従って、機能格納部３０６から対応する処理機能を画像処理部３０４にロードする。これにより、画像処理部３０４は、処理Ａ、処理Ｂ、処理Ｃのいずれかの機能に特化したプロセッサとして動作する。
【００８５】
図１３に示した画像処理システム４００では、画像処理装置４０２に、画像処理部４０４が設けられており、画像処理部４０４には、ＳＥＬ４０６、処理Ａ部４０８、処理Ｂ部４１０、処理Ｃ部４１２が設けられている。処理Ａ部４０８、処理Ｂ部４１０、処理Ｃ部４１２は、それぞれ処理Ａ、処理Ｂ、処理Ｃを行うＡＳＩＣ等の専用回路である。そして、ＳＥＬ４０６は、処理Ａ部４０８、処理Ｂ部４１０、処理Ｃ部４１２のいずれかを選択して、対応する処理が実行できるように設定するセレクタである。これにより、画像処理部４０４は、あたかも、処理Ａ、処理Ｂ、処理Ｃのいずれかを行う専用回路のみが搭載されたデバイスとして機能する。
【００８６】
図１４に示した画像処理システム５００では、二つの画像処理部５０４，５０６が設けられている。画像処理部５０４は、処理実行制御部５０８によって直接的に制御されている。また、画像処理部５０６は、ＤＭＡＣ５１０を通じて、処理実行制御部５０８による機能選択の制御と、メモリ１８へのアクセス制御とを受けている。画像処理部５０４と画像処理部５０６は、ソフトウエア制御によって再構成可能なハードウエアであり、例えば、図１２や図１３に示した態様で作られていてもよい。図示した例では、画像処理部５０４は、処理Ａ、処理Ｂ、処理Ｅを択一的に行う機能を備え、画像処理部５０６は、処理Ｃ、処理Ｄ、処理Ｆを択一的に行う機能を備える。そして、画像処理部５０６は、画像処理部５０４とは別にＤＭＡＣ５１０を通じてメモリ１８にアクセスすることができる。したがって、画像処理部５０４，５０６は、連携して異なる種類の画像処理を行うこともできる。なお、この例とは異なり、画像処理部５０４，５０６に共通な処理機能を設けることも有効である。この場合には、画像処理部５０４，５０６とで互いに補完しあって一つの画像処理を実現することが可能となる。また、別の態様として、画像処理部５０６を再構成不可能な画像処理部として構成する例を挙げることもできる。
【図面の簡単な説明】
【００８７】
【図１】画像処理システムの一例を示す概略的なブロック図である。
【図２】図１の画像処理システムをさらに説明するためのブロック図である。
【図３】タスク順管理に用いられるテーブルの例である。
【図４】タスク順制御の処理の流れを示すフローチャートである。
【図５】タスク順を制御しない場合の処理の流れを示す参考図である。
【図６】タスク順を制御する場合の処理の流れを示す図である。
【図７】Ｔ値の設定例を示す表である。
【図８】Ｔ値を用いたタスク順制御の流れを示すフローチャートである。
【図９】画像処理モード毎にＴ値を設定した例を示す表である。
【図１０】履歴を参照してＴ値を再設定する過程を示すフローチャートである。
【図１１】Ｔ値の設定に利用される履歴の例である。
【図１２】画像処理部の構成のバリエーションを示す図である。
【図１３】画像処理部の構成のバリエーションを示す図である。
【図１４】画像処理部の構成のバリエーションを示す図である。
【符号の説明】
【００８８】
１０  画像処理システム、１２  入力装置、１４  出力装置、１６  画像処理装置、１８  メモリ、２０  メモリ制御部、２２  画像処理部、３０  処理実行制御部、３２  処理順制御部、３４  タスク順管理部、３６，５８  現タスク判断部、３８，５４  次タスク判断部、４０，４２  タイミング調整バッファ、５０  バッファアドレス生成部、５１  リードポインタ・ライトポインタ信号、５２  入力バッファ完了割込部、５６  処理実行判定部、５７  実行可能フラグ信号、６０  タスク順管理部。
【図１】
0004816272.tif 000002
【図２】
0004816272.tif 000003
【図３】
0004816272.tif 000004
【図４】
0004816272.tif 000005
【図５】
0004816272.tif 000006
【図６】
0004816272.tif 000007
【図７】
0004816272.tif 000008
【図８】
0004816272.tif 000009
【図９】
0004816272.tif 000010
【図１０】
0004816272.tif 000011
【図１１】
0004816272.tif 000012
【図１２】
0004816272.tif 000013
【図１３】
0004816272.tif 000014
【図１４】
0004816272.tif 000015