(57)【要約】【課題】画像処理モジュール及びバッファモジュールがパイプライン等の形態で連結されて成る画像処理部において、画像処理モジュールの処理時間の計測を、計測を行わない場合の負荷が増大したり、画像処理モジュールを実現するプログラムの変更を必要となったりすることなく実現する。【解決手段】前段から画像データを取得して画像処理を行い、画像処理を経た画像データを後段へ出力する画像処理モジュール38と、前段からの画像データをバッファに書き込ませ、バッファに記憶されている画像データを後段によって読み出させる処理を行うバッファモジュール40をパイプライン形態等で連結した画像処理部50の構築にあたり、動作モードとして計測モードが選択されている場合は、画像処理モジュール38とワークフロー管理部46Aの間に、情報の送受を中継すると共に処理時間の計測を行う処理時間計測モジュール48を設ける。【選択図】図５
2012043096.tif 000002
【特許請求の範囲】
【請求項１】
処理要求が入力される毎に、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、画像処理を経た画像データ又は画像処理の処理結果を自モジュールの後段へ出力し、前記処理要求の入力元へ応答を出力する一連の処理を単位処理量ずつ行う画像処理モジュールのプログラムと、自モジュールの前段から出力される画像データをバッファに書き込ませ、バッファに記憶されている画像データを自モジュールの後段によって読み出させる処理を行うバッファモジュールのプログラムと、前記画像処理モジュールに付加可能で、自モジュールが付加された前記画像処理モジュールと前記処理要求の入力元との間の前記処理要求及びその応答の送受を中継すると共に、前記処理要求の中継から前記応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムと、を各々記憶する記憶手段と、
前記記憶手段に記憶されている各モジュールのプログラムを用いて、指定された動作モードが通常モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、前記処理計測モジュールを含まず、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、前記動作モードが計測モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、画像処理部を構成する１つ以上の前記画像処理モジュールに前記処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築する構築手段と、
前記動作モードが計測モードの場合に、前記構築手段によって構築された前記画像処理部に含まれる前記処理計測モジュールによって計測された画像処理の処理時間を収集する収集手段と、
を含む画像処理装置。
【請求項２】
前記動作モードが計測モードの場合に、前記構築手段によって構築された前記画像処理部に含まれ、かつ前記画像処理モジュールに付加された前記処理計測モジュールは、処理開始前に処理時間の積算値を初期化し、自モジュールが付加された前記画像処理モジュールへの処理要求を前記処理要求の入力元から受け付ける度に、受け付けた前記処理要求を前記画像処理モジュールに転送すると共に処理時間の計測を開始し、前記画像処理モジュールから前記応答が出力される度に、前記応答を前記処理要求の入力元へ転送すると共に、処理時間の計測を終了し、当該計測によって得られた処理時間を前記積算値に加算し、前記収集手段に対し、画像処理の処理時間の計測結果として前記積算値を出力する請求項１記載の画像処理装置。
【請求項３】
前記構築手段によって構築された前記画像処理部に含まれる前記画像処理モジュールは、処理開始前に自モジュールの前段の全モジュールの情報を取得・登録しておき、登録した情報に基づき自モジュールの前段の全モジュールから画像データを各々取得する構成であり、
前記処理計測モジュールは、自モジュールが付加された画像処理モジュールの前段のモジュールの数に拘わらず同一の構成とされている請求項１又は請求項２記載の画像処理装置。
【請求項４】
前記収集手段によって収集された画像処理の処理時間を出力するか、又は、前記収集手段によって収集された画像処理の処理時間に基づいて、画像処理の処理速度を演算して出力する出力手段を更に備えた請求項１〜請求項３の何れか１項記載の画像処理装置。
【請求項５】
前記収集手段は、前記画像処理モジュールに付加された前記処理計測モジュールが前記画像処理部に複数存在している場合、複数の前記処理計測モジュールから画像処理の処理時間の計測結果を各々収集し、
前記出力手段は、第１の前記処理計測モジュールが付加された画像処理モジュールにおける画像処理の処理時間として、第１の前記処理計測モジュールより収集された処理時間から、第１の前記処理計測モジュールの前段に位置する第２の前記処理計測モジュールより収集された処理時間を減算することを、複数の前記処理計測モジュールのうち自モジュールの前段に他の前記処理計測モジュールが存在する前記処理計測モジュールついて各々行うことで、前記処理計測モジュールが付加された個々の画像処理モジュールにおける画像処理の処理時間を各々演算する請求項４記載の画像処理装置。
【請求項６】
前記画像処理部に含まれる個々のモジュールの情報が登録されたテーブルを参照することで、前記画像処理部に含まれる個々の画像処理モジュールを認識し、前記画像処理部に含まれる個々の画像処理モジュールに対し、個々の前記画像処理モジュールにおける画像処理の実行タイミングが到来したと判断する毎に前記処理要求を入力する処理管理手段を更に備えた請求項１〜請求項５の何れか１項記載の画像処理装置。
【請求項７】
前記処理管理手段は、前記構築手段によって構築された前記画像処理部に含まれる各モジュールの情報を前記テーブルに登録すると共に、前記動作モードが計測モードの場合に、前記処理計測モジュールの情報については、当該処理計測モジュールが付加された前記画像処理モジュールの情報と対応付けて前記テーブルに登録し、前記画像処理部に含まれる個々の画像処理モジュールのうち、対応する情報を処理計測モジュールの情報と対応付けて前記テーブルに登録した前記画像処理モジュールについては、前記処理要求を前記処理計測モジュールに入力する請求項６記載の画像処理装置。
【請求項８】
前記画像処理モジュールは、前記処理要求が入力されると自モジュールの前段へデータ要求を出力し、前記バッファモジュールは、自モジュールの後段から前記データ要求が入力され、自モジュールのバッファに画像データが記憶されていない場合に前記処理管理手段へデータ要求を出力し、
前記処理管理手段は、前記画像処理部に含まれるバッファモジュールから前記データ要求が入力された場合に、前記バッファモジュールの前段に位置する前記画像処理モジュールにおける画像処理の実行タイミングが到来したと判断する請求項６記載の画像処理装置。
【請求項９】
記憶手段は、処理要求が入力される毎に、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、画像処理を経た画像データ又は画像処理の処理結果を自モジュールの後段へ出力し、前記処理要求の入力元へ応答を出力する一連の処理を単位処理量ずつ行う画像処理モジュールのプログラムと、自モジュールの前段から出力される画像データをバッファに書き込ませ、バッファに記憶されている画像データを自モジュールの後段によって読み出させる処理を行うバッファモジュールのプログラムと、前記画像処理モジュールに付加可能で、自モジュールが付加された前記画像処理モジュールと前記処理要求の入力元との間の前記処理要求及びその応答の送受を中継すると共に、前記処理要求の中継から前記応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムと、を各々記憶し、
構築手段は、前記記憶手段に記憶されている各モジュールのプログラムを用いて、指定された動作モードが通常モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、前記処理計測モジュールを含まず、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、前記動作モードが計測モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、画像処理部を構成する１つ以上の前記画像処理モジュールに前記処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、
収集手段は、前記動作モードが計測モードの場合に、前記構築手段によって構築された前記画像処理部に含まれる前記処理計測モジュールによって計測された画像処理の処理時間を収集する画像処理方法。
【請求項１０】
処理要求が入力される毎に、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、画像処理を経た画像データ又は画像処理の処理結果を自モジュールの後段へ出力し、前記処理要求の入力元へ応答を出力する一連の処理を単位処理量ずつ行う画像処理モジュールのプログラムと、自モジュールの前段から出力される画像データをバッファに書き込ませ、バッファに記憶されている画像データを自モジュールの後段によって読み出させる処理を行うバッファモジュールのプログラムと、前記画像処理モジュールに付加可能で、自モジュールが付加された前記画像処理モジュールと前記処理要求の入力元との間の前記処理要求及びその応答の送受を中継すると共に、前記処理要求の中継から前記応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムと、を各々記憶する記憶手段を備えたコンピュータを、
前記記憶手段に記憶されている各モジュールのプログラムを用いて、指定された動作モードが通常モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、前記処理計測モジュールを含まず、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、前記動作モードが計測モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、画像処理部を構成する１つ以上の前記画像処理モジュールに前記処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築する構築手段、
及び、前記動作モードが計測モードの場合に、前記構築手段によって構築された前記画像処理部に含まれる前記処理計測モジュールによって計測された画像処理の処理時間を収集する収集手段
として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置及び方法ならびにプログラムに係り、特に、複数の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが各々連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を備えた画像処理装置、当該画像処理装置に適用可能な画像処理方法、及び、コンピュータを前記画像処理装置として機能させるための画像処理プログラムに関する。
【背景技術】
【０００２】
入力された画像データに対して画像処理を行う画像処理装置や、画像を取扱可能なＤＴＰ（デスクトップ・パブリッシング）システム、入力された画像データが表す画像を記録材料に記録するプリントシステム等では、入力された画像データに対して拡大・縮小、回転、アフィン変換、色変換、フィルタ処理、画像合成等の各種の画像処理が行われる。これらの装置やシステムにおいて、入力される画像データの属性や画像データに対する画像処理の内容・手順・パラメータ等が固定されている場合には、専用に設計したハードウエアによって画像処理を行わせる場合もあるが、例えば色空間や１画素当たりのビット数が異なる様々な画像データが入力されたり、画像処理の内容や手順・パラメータ等が様々に変更される場合には、実行する画像処理をより柔軟に変更可能な構成が必要となる。
【０００３】
このような要求を満たすために、例えば特許文献１には、実行する画像処理の種類や内容等が相違する複数種の画像処理モジュールのプログラムを各々用意しておき、複数種の画像処理モジュール(のプログラム)を任意に組み合わせ、所望の画像処理を行う画像処理部を構築することを可能にする技術が開示されており、更に、画像処理部全体としての画像処理の進行度合を把握するために、画像処理部の画像処理モジュールとバッファモジュールとの間に進行度合検知モジュールを挿入し、この進行度合検知モジュールによって画像処理部における画像処理の進行度合を検知する構成も開示されている。
【０００４】
また、特許文献２には、同一の画像のうちの割当部分に対して画像処理を行う複数の画像処理演算部(ＣＰＵ)が処理時間を各々計時し、処理時間に応じて各演算部への割当部分のサイズ(配分率)を更新する技術が開示されている。
【０００５】
また、特許文献３には、複数のＰＤＬ処理部に、各処理部における処理の待機時間を計測する待機状態計測部が各々設けられた構成が開示されており、計測された待機時間が所定値になるとデータを供給する処理の優先度を上げることも記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−１４００４２号公報
【特許文献２】特開２００６−１６４０００号公報
【特許文献３】特開２００６−１４６３３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のように、複数種の画像処理モジュールを任意に組み合わせて所望の画像処理を行う画像処理装置を構築する技術に対しては、例えば画像処理部で実行される一連の画像処理のボトルネックを検知したり、個々の画像処理モジュールで実行される画像処理のアルゴリズムの改良を検討したり、画像処理部を構成する画像処理モジュールの最適な組み合わせを検討する等を目的として、画像処理部の個々の画像処理モジュール単位で画像処理の処理時間を計測し、個々の画像処理モジュールで実行される画像処理の処理時間や処理速度を正確に把握したい、というニーズが存在する。
【０００８】
これに対して特許文献１に記載の技術は、画像処理モジュールによって後段のバッファモジュールに書き込まれた画像データのデータ量に基づいて画像処理の進行度合を検知するものであり、この技術を適用したとしても、個々の画像処理モジュールにおける画像処理の処理時間を把握することは不可能である。
【０００９】
また、特許文献２に記載の技術は、複数の画像処理演算部が、画像処理を行うと共に、その画像処理に要した時間を計時することを各々繰り返し、個々の画像処理演算部の計時結果に応じて個々の画像処理演算部に割り当てる部分のサイズ(配分率)を適宜変更する構成であり、特許文献２に記載の技術を利用して画像処理の処理時間の計時結果を得るようにした場合、処理時間の計測結果が不要な場合にも処理時間の計時や配分率の変更等を行うことに伴う負荷が加わり、コンピュータの処理能力を有効に利用することができないという問題が生ずる。また特許文献２には、処理時間を計時するための具体的な構成が開示されていない。
【００１０】
また、特許文献３に記載の技術は、ＰＤＬコマンド処理部のステートマシーンが動作状態を表す信号を常時入力し、当該信号が表す動作状態が待機状態の間、タイマをインクリメントすることで、待機時間を計測する構成であり、上記に代えて動作状態が画像処理実行中の間、タイマをインクリメントする構成とすれば、画像処理の処理時間を計測することは可能である。しかしながら、その場合、個々の画像処理モジュールに、自モジュールの動作状態を常に出力する機能を付加する必要があり、個々の画像処理モジュールのプログラムを各々変更する必要が生ずる。
【００１１】
本発明は上記事実を考慮して成されたもので、複数の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが各々連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部において、１つ以上の画像処理モジュールの処理時間をモジュール単位で計測することを、処理時間の計測を行わない場合の負荷が増大したり、画像処理モジュールを実現するプログラムの変更を必要となったりすることなく実現できる画像処理装置、画像処理方法及び画像処理プログラムを得ることが目的である。
【課題を解決するための手段】
【００１２】
上記目的を達成するために請求項１記載の発明に係る画像処理装置は、処理要求が入力される毎に、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、画像処理を経た画像データ又は画像処理の処理結果を自モジュールの後段へ出力し、前記処理要求の入力元へ応答を出力する一連の処理を単位処理量ずつ行う画像処理モジュールのプログラムと、自モジュールの前段から出力される画像データをバッファに書き込ませ、バッファに記憶されている画像データを自モジュールの後段によって読み出させる処理を行うバッファモジュールのプログラムと、前記画像処理モジュールに付加可能で、自モジュールが付加された前記画像処理モジュールと前記処理要求の入力元との間の前記処理要求及びその応答の送受を中継すると共に、前記処理要求の中継から前記応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムと、を各々記憶する記憶手段と、前記記憶手段に記憶されている各モジュールのプログラムを用いて、指定された動作モードが通常モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、前記処理計測モジュールを含まず、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、前記動作モードが計測モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、画像処理部を構成する１つ以上の前記画像処理モジュールに前記処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築する構築手段と、前記動作モードが計測モードの場合に、前記構築手段によって構築された前記画像処理部に含まれる前記処理計測モジュールによって計測された画像処理の処理時間を収集する収集手段と、を含んで構成されている。
【００１３】
請求項１記載の発明では、処理要求が入力される毎に、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、画像処理を経た画像データ又は画像処理の処理結果を自モジュールの後段へ出力し、処理要求の入力元へ応答を出力する一連の処理を単位処理量ずつ行う画像処理モジュールのプログラムと、自モジュールの前段から出力される画像データをバッファに書き込ませ、バッファに記憶されている画像データを自モジュールの後段によって読み出させる処理を行うバッファモジュールのプログラムと、画像処理モジュールに付加可能で、自モジュールが付加された画像処理モジュールと処理要求の入力元との間の処理要求及びその応答の送受を中継すると共に、処理要求の中継から応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムと、が記憶手段に各々記憶されている。
【００１４】
また構築手段は、記憶手段に記憶されている各モジュールのプログラムを用いて、指定された動作モードが通常モードの場合には、画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されると共に、前記処理計測モジュールを含まず、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築する。このように、動作モードが通常モードの場合、すなわち処理時間の計測を行わない場合には、処理計測モジュールを含まない画像処理部が構築されるので、処理時間の計測を行わない場合に、画像処理部を実現するプログラムを実行するコンピュータの負荷が増大することが防止される。
【００１５】
また構築手段は、指定された動作モードが計測モードの場合には、画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されると共に、画像処理部を構成する１つ以上の画像処理モジュールに処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、収集手段は、動作モードが計測モードの場合、構築手段によって構築された画像処理部に含まれる処理計測モジュールによって計測された画像処理の処理時間を収集する。
【００１６】
ここで、処理計測モジュールは、前述のように自モジュールが付加された画像処理モジュールと処理要求の入力元との間の処理要求及びその応答の送受を中継すると共に、処理要求の中継から応答の中継迄の時間を画像処理の処理時間として計測する構成であるので、画像処理部で画像処理が実行される際には、処理計測モジュールが付加された画像処理モジュールにおける画像処理の処理時間が処理計測モジュールによって計測される。また、処理計測モジュールが画像処理の処理時間を計測するにあたり、例えば画像処理モジュールが自モジュールの動作状態を表す情報を出力したりする必要はなく、画像処理モジュールを実現するプログラムの変更は不要である。
【００１７】
従って、請求項１記載の発明によれば、複数の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが各々連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部において、１つ以上の画像処理モジュールの処理時間をモジュール単位で計測することを、処理時間の計測を行わない場合の負荷が増大したり、画像処理モジュールを実現するプログラムの変更を必要となったりすることなく実現することができる。
【００１８】
なお、請求項１記載の発明において、動作モードが計測モードの場合に、構築手段によって構築された画像処理部に含まれ、かつ画像処理モジュールに付加された処理計測モジュールは、例えば請求項２に記載したように、処理開始前に処理時間の積算値を初期化し、自モジュールが付加された前記画像処理モジュールへの処理要求を処理要求の入力元から受け付ける度に、受け付けた処理要求を画像処理モジュールに転送すると共に処理時間の計測を開始し、画像処理モジュールから応答が出力される度に、応答を処理要求の入力元へ転送すると共に、処理時間の計測を終了し、当該計測によって得られた処理時間を積算値に加算し、収集手段に対し、画像処理の処理時間の計測結果として前記積算値を出力するように構成することができる。
【００１９】
請求項１記載の発明において、収集手段は、画像処理部が画像処理を行っている間、処理計測モジュールによって処理時間が計測される度に(処理計測モジュールが付加された画像処理モジュールで単位処理量の画像処理が行われる度に)、処理時間の計測結果を収集するように構成することも可能であるが、上記のように、計測した処理時間を積算値として積算するように処理計測モジュールを構成することで、画像処理部が画像処理を行っている間、収集手段が処理時間の計測結果を収集する必要が無くなり、処理時間の計測結果の収集が、画像処理部における画像処理が終了した後の１回のみで済む。これにより、動作モードが計測モードの場合に、画像処理部を実現するプログラムを実行するコンピュータの負荷を軽減することができる。
【００２０】
また、請求項１又は請求項２記載の発明において、構築手段によって構築された画像処理部に含まれる画像処理モジュールは、例えば請求項３に記載したように、処理開始前に自モジュールの前段の全モジュールの情報を取得・登録しておき、登録した情報に基づき自モジュールの前段の全モジュールから画像データを各々取得する構成であり、処理計測モジュールは、自モジュールが付加された画像処理モジュールの前段のモジュールの数に拘わらず同一の構成であることが好ましい。これにより、処理計測モジュールを付加する画像処理モジュールの前段に連結されるモジュールの数毎に、構成の異なる処理計測モジュール(のプログラム)を用意する必要が無くなり、記憶手段の記憶領域を節減できると共に、構築手段が画像処理部を構築する処理を簡単にすることができる。
【００２１】
また、請求項１〜請求項３の何れかに記載の発明において、例えば請求項４に記載したように、収集手段によって収集された画像処理の処理時間を出力するか、又は、収集手段によって収集された画像処理の処理時間に基づいて、画像処理の処理速度を演算して出力する出力手段を更に設けるようにしてもよい。
【００２２】
また、請求項４記載の発明において、例えば請求項５に記載したように、収集手段は、画像処理モジュールに付加された処理計測モジュールが画像処理部に複数存在している場合、複数の処理計測モジュールから画像処理の処理時間の計測結果を各々収集し、出力手段は、第１の処理計測モジュールが付加された画像処理モジュールにおける画像処理の処理時間として、第１の処理計測モジュールより収集された処理時間から、第１の処理計測モジュールの前段に位置する第２の処理計測モジュールより収集された処理時間を減算することを、複数の処理計測モジュールのうち自モジュールの前段に他の処理計測モジュールが存在する処理計測モジュールついて各々行うことで、処理計測モジュールが付加された個々の画像処理モジュールにおける画像処理の処理時間を各々演算するように構成することが好ましい。これにより、画像処理部に、処理計測モジュールが付加された画像処理モジュールが複数存在している場合にも、個々の画像処理モジュールにおける画像処理の正確な処理時間を各々得ることができる。
【００２３】
また、請求項１〜請求項５の何れかに記載の発明において、例えば請求項６に記載したように、画像処理部に含まれる個々のモジュールの情報が登録されたテーブルを参照することで、画像処理部に含まれる個々の画像処理モジュールを認識し、画像処理部に含まれる個々の画像処理モジュールに対し、個々の画像処理モジュールにおける画像処理の実行タイミングが到来したと判断する毎に処理要求を入力する処理管理手段を更に設けることができる。
【００２４】
また、請求項６記載の発明において、処理管理手段は、例えば請求項７に記載したように、構築手段によって構築された画像処理部に含まれる各モジュールの情報をテーブルに登録すると共に、動作モードが計測モードの場合に、処理計測モジュールの情報については、当該処理計測モジュールが付加された画像処理モジュールの情報と対応付けてテーブルに登録し、画像処理部に含まれる個々の画像処理モジュールのうち、対応する情報を処理計測モジュールの情報と対応付けてテーブルに登録した画像処理モジュールについては、処理要求を処理計測モジュールに入力するように構成することができる。
【００２５】
また、請求項６記載の発明において、例えば請求項８に記載したように、画像処理モジュールは、処理要求が入力されると自モジュールの前段へデータ要求を出力し、バッファモジュールは、自モジュールの後段からデータ要求が入力され、自モジュールのバッファに画像データが記憶されていない場合に処理管理手段へデータ要求を出力し、処理管理手段は、画像処理部に含まれるバッファモジュールからデータ要求が入力された場合に、バッファモジュールの前段に位置する画像処理モジュールにおける画像処理の実行タイミングが到来したと判断するように構成することができる。
【００２６】
請求項９記載の発明に係る画像処理方法は、記憶手段は、処理要求が入力される毎に、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、画像処理を経た画像データ又は画像処理の処理結果を自モジュールの後段へ出力し、前記処理要求の入力元へ応答を出力する一連の処理を単位処理量ずつ行う画像処理モジュールのプログラムと、自モジュールの前段から出力される画像データをバッファに書き込ませ、バッファに記憶されている画像データを自モジュールの後段によって読み出させる処理を行うバッファモジュールのプログラムと、前記画像処理モジュールに付加可能で、自モジュールが付加された前記画像処理モジュールと前記処理要求の入力元との間の前記処理要求及びその応答の送受を中継すると共に、前記処理要求の中継から前記応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムと、を各々記憶し、構築手段は、前記記憶手段に記憶されている各モジュールのプログラムを用いて、指定された動作モードが通常モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、前記処理計測モジュールを含まず、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、前記動作モードが計測モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、画像処理部を構成する１つ以上の前記画像処理モジュールに前記処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、収集手段は、前記動作モードが計測モードの場合に、前記構築手段によって構築された前記画像処理部に含まれる前記処理計測モジュールによって計測された画像処理の処理時間を収集するので、請求項１記載の発明と同様に、複数の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが各々連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部において、１つ以上の画像処理モジュールの処理時間をモジュール単位で計測することを、処理時間の計測を行わない場合の負荷が増大したり、画像処理モジュールを実現するプログラムの変更を必要となったりすることなく実現することができる。
【００２７】
請求項１０記載の発明に係る画像処理プログラムは、処理要求が入力される毎に、自モジュールの前段から画像データを取得し、取得した画像データに所定の画像処理を行い、画像処理を経た画像データ又は画像処理の処理結果を自モジュールの後段へ出力し、前記処理要求の入力元へ応答を出力する一連の処理を単位処理量ずつ行う画像処理モジュールのプログラムと、自モジュールの前段から出力される画像データをバッファに書き込ませ、バッファに記憶されている画像データを自モジュールの後段によって読み出させる処理を行うバッファモジュールのプログラムと、前記画像処理モジュールに付加可能で、自モジュールが付加された前記画像処理モジュールと前記処理要求の入力元との間の前記処理要求及びその応答の送受を中継すると共に、前記処理要求の中継から前記応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムと、を各々記憶する記憶手段を備えたコンピュータを、前記記憶手段に記憶されている各モジュールのプログラムを用いて、指定された動作モードが通常モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、前記処理計測モジュールを含まず、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、前記動作モードが計測モードの場合には、前記画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されると共に、画像処理部を構成する１つ以上の前記画像処理モジュールに前記処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築する構築手段、及び、前記動作モードが計測モードの場合に、前記構築手段によって構築された前記画像処理部に含まれる前記処理計測モジュールによって計測された画像処理の処理時間を収集する収集手段として機能させる。
【００２８】
請求項１０記載の発明に係る画像処理プログラムは、上記の記憶手段を備えたコンピュータを、上記の構築手段及び収集手段として機能させるためのプログラムであるので、コンピュータが請求項１０記載の発明に係る画像処理プログラムを実行することで、コンピュータが請求項１に記載の画像処理装置として機能することになり、請求項１記載の発明と同様に、複数の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが各々連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部において、１つ以上の画像処理モジュールの処理時間をモジュール単位で計測することを、処理時間の計測を行わない場合の負荷が増大したり、画像処理モジュールを実現するプログラムの変更を必要となったりすることなく実現することができる。
【発明の効果】
【００２９】
以上説明したように本発明は、画像処理モジュールに付加可能で、自モジュールが付加された画像処理モジュールと処理要求の入力元との間の処理要求及びその応答の送受を中継すると共に、処理要求の中継から応答の中継迄の時間を画像処理の処理時間として計測する処理計測モジュールのプログラムを記憶手段に記憶しておき、指定された動作モードが計測モードの場合に、画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されると共に、画像処理部を構成する１つ以上の画像処理モジュールに前記処理計測モジュールが付加され、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部を構築し、処理計測モジュールによって計測された画像処理の処理時間を収集するようにしたので、複数の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが各々連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて成る画像処理部において、１つ以上の画像処理モジュールの処理時間をモジュール単位で計測することを、処理時間の計測を行わない場合の負荷が増大したり、画像処理モジュールを実現するプログラムの変更を必要となったりすることなく実現できる、という優れた効果を有する。
【図面の簡単な説明】
【００３０】
【図１】本実施形態に係るコンピュータ（画像処理装置）の概略構成を示すブロック図である。
【図２】アプリケーションによる処理を説明するためのシーケンス図である。
【図３】モジュール生成部によって実行されるモジュール生成処理の内容を示すフローチャートである。
【図４】画像処理部の構成例を示すブロック図である。
【図５】処理時間計測モジュールが挿入された画像処理部の例を示すブロック図である。
【図６】(Ａ)は画像処理モジュール単独での動作、(Ｂ)は画像処理モジュールに処理時間計測モジュールが付加された構成での画像処理モジュール及び処理時間計測モジュールの動作を各々示すブロック図である。
【図７】バッファモジュールの動作を示すブロック図である。
【図８】画像処理モジュールの制御部によって実行される画像処理モジュール制御処理の内容を示すフローチャートである。
【図９】処理管理部によって実行される画像処理部制御処理の内容を示すフローチャートである。
【図１０】処理時間計測モジュールによって実行される、(Ａ)は初期化処理、(Ｂ)は処理時間計測処理、(Ｃ)は処理時間通知処理を各々示すフローチャートである。
【図１１】画像処理部における画像処理の流れを説明する概略図である。
【発明を実施するための形態】
【００３１】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図１には、本発明に係る画像処理装置として機能することが可能なコンピュータ１０が示されている。なお、このコンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの機能を兼ね備えた複合機、スキャナ、写真プリンタ等のように内部で画像処理を行う必要のある任意の画像取扱機器に組み込まれていてもよいし、パーソナル・コンピュータ（ＰＣ）等の独立したコンピュータであってもよく、更にＰＤＡ（Personal Digital Assistant）や携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
【００３２】
コンピュータ１０はＣＰＵ１２、ＤＲＡＭ又はＳＲＡＭ等から成るメモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２及び画像出力部２４を備えており、これらはバス２６を介して互いに接続されている。コンピュータ１０が上述したような画像取扱機器に組み込まれている場合、表示部１６や操作部１８としては、画像取扱機器に設けられたＬＣＤ等から成る表示パネルやテンキー等を適用することができる。また、コンピュータ１０が独立したコンピュータである場合、表示部１６や操作部１８としては、当該コンピュータに接続されたディスプレイやキーボード、マウス等を適用することができる。また、記憶部２０としてはＨＤＤ(Hard Disk Drive)が好適であるが、これに代えてフラッシュメモリ等の他の不揮発性記憶手段を用いることも可能である。
【００３３】
また、画像データ供給部２２は処理対象の画像データを供給できるものであればよく、例えば紙や写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部、通信回線を介して外部から画像データを受信する受信部、画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）等を適用することができる。また、画像出力部２４は画像処理を経た画像データ又は該画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙や感光材料等の記録材料に記録する画像記録部、画像データが表す画像をディスプレイ等に表示する表示部、画像データを記録メディアに書き込む書込装置、画像データを通信回線を介して送信する送信部を適用することができる。また、画像出力部２４は画像処理を経た画像データを単に記憶する画像記憶部（メモリ１４又は記憶部２０）であっても構わない。
【００３４】
図１に示すように、記憶部２０には、ＣＰＵ１２によって実行される各種のプログラムとして、メモリ１４等のリソースの管理やＣＰＵ１２によるプログラムの実行の管理、コンピュータ１０と外部との通信等を司るオペレーティングシステム３０のプログラム、コンピュータ１０を本発明に係る画像処理装置として機能させるための画像処理プログラム群３４、ＣＰＵ１２が上記画像処理プログラム群を実行することで実現される画像処理装置に対して所望の画像処理を行わせる各種のアプリケーション３２のプログラム（図１ではアプリケーションプログラム群３２と表記）が各々記憶されている。
【００３５】
画像処理プログラム群３４は、前述した各種の画像取扱機器や携帯機器を開発する際の開発負荷を軽減したり、ＰＣ等で利用可能な画像処理プログラムを開発する際の開発負荷を軽減することを目的として、各種の画像取扱機器や携帯機器、ＰＣ等の各種機器（プラットフォーム）で共通に使用可能に開発されたプログラムであり、本発明に係る画像処理プログラムに対応している。なお、画像処理プログラム群３４を記憶する記憶部２０は本発明に係る記憶手段に対応している。画像処理プログラム群３４によって実現される画像処理装置は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理部を構築し、アプリケーション３２からの実行指示に従い、前記画像処理部によって画像処理を行うが（詳細は後述）、画像処理プログラム群３４は、所望の画像処理を行う画像処理部（所望の構成の画像処理部）の構築を指示したり、構築された画像処理部による画像処理の実行を指示するためのインタフェースをアプリケーション３２に提供している。このため、内部で画像処理を行う必要のある任意の機器を新規開発する等の場合にも、前記画像処理を行うプログラムの開発に関しては、当該機器で必要とされる画像処理を上記のインタフェースを利用して画像処理プログラム群３４に行わせるアプリケーション３２を開発するのみで済み、実際に画像処理を行うプログラムを新たに開発する必要が無くなるので、開発負荷を軽減することができる。
【００３６】
また、画像処理プログラム群３４によって実現される画像処理装置は、前述のように、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理部を構築し、構築した画像処理部によって画像処理を行うので、例えば画像処理対象の画像データの色空間や１画素当たりのビット数が不定であったり、実行すべき画像処理の内容や手順・パラメータ等が不定である場合にも、アプリケーション３２が画像処理部の再構築を指示することで、画像処理装置（画像処理部）によって実行される画像処理を、処理対象の画像データ等に応じて柔軟に変更することができる。
【００３７】
以下、画像処理プログラム群３４について説明する。図１に示すように、画像処理プログラム群３４はモジュールライブラリ３６と、処理構築部４２のプログラムと、処理管理部４６のプログラムに大別される。詳細は後述するが、本実施形態に係る処理構築部４２は、アプリケーションからの指示により、例として図４に示すように、予め定められた画像処理を行う１つ以上の画像処理モジュール３８と、個々の画像処理モジュール３８の前段及び後段の少なくとも一方に配置され画像データを記憶するためのバッファを備えたバッファモジュール４０と、がパイプライン形態又はＤＡＧ(Directed Acyclic Graph：有向非循環グラフ)形態で連結されて成る画像処理部５０を構築する。画像処理部５０を構成する個々の画像処理モジュールの実体はＣＰＵ１２によって実行されＣＰＵ１２で所定の画像処理を行わせるための第１プログラム、又は、ＣＰＵ１２によって実行されＣＰＵ１２により図１に図示されていない外部の画像処理装置（例えば専用画像処理ボード等）に対する処理の実行を指示するための第２プログラムであり、上述したモジュールライブラリ３６には、予め定められた互いに異なる画像処理（例えば入力処理やフィルタ処理、色変換処理、拡大・縮小処理、スキュー角検知処理、画像回転処理、画像合成処理、出力処理等）を行う複数種の画像処理モジュール３８のプログラムが各々登録されている。以下では、説明を簡単にするために、画像処理部５０を構成する個々の画像処理モジュールの実体が上記の第１プログラムであるものとして説明する。
【００３８】
個々の画像処理モジュール３８は、例として図６(Ａ)にも示すように、画像データに対する画像処理を所定の単位処理データ量ずつ行う画像処理エンジン３８Ａ、画像処理モジュール３８の前段及び後段のモジュールとの画像データの入出力及び画像処理エンジン３８Ａの制御を行う制御部３８Ｂ、初期化処理を行う初期化部３８Ｃ、及び、終了処理を行う終了部３８Ｄから構成されている。個々の画像処理モジュール３８における単位処理データ量は、画像の１ライン分、画像の複数ライン分、画像の１画素分、画像１面分等を含む任意のバイト数の中から、画像処理エンジン３８Ａが行う画像処理の種類等に応じて予め選択・設定されており、例えば色変換処理やフィルタ処理を行う画像処理モジュール３８では単位処理データ量が１画素分とされ、拡大・縮小処理を行う画像処理モジュール３８では単位処理データ量が画像の１ライン分又は画像の複数ライン分とされ、画像回転処理を行う画像処理モジュール３８では単位処理データ量が画像１面分とされ、画像圧縮伸長処理を行う画像処理モジュール３８では単位処理データ量が実行環境に依存するＮバイトとされている。
【００３９】
また、モジュールライブラリ３６には、画像処理エンジン３８Ａが実行する画像処理の種類が同一でかつ実行する画像処理の内容が異なる画像処理モジュール３８も登録されている（図１では、この種の画像処理モジュールを「モジュール１」「モジュール２」と表記して示している）。例えば拡大・縮小処理を行う画像処理モジュール３８については、入力された画像データを１画素おきに間引くことで50％に縮小する縮小処理を行う画像処理モジュール３８、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８等の複数の画像処理モジュール３８が各々用意されている。また、例えば色変換処理を行う画像処理モジュール３８については、ＲＧＢ色空間をＣＭＹ色空間へ変換する画像処理モジュール３８やその逆へ変換する画像処理モジュール３８、Ｌ*ａ*ｂ*色空間等の他の色空間変換を行う画像処理モジュール３８が各々用意されている。
【００４０】
また、画像処理モジュール３８の制御部３８Ｂは、画像処理エンジン３８Ａが単位処理データ量ずつ処理するために必要な画像データを入力するために、自モジュールの前段のモジュール（例えばバッファモジュール４０）から画像データを単位読出データ量ずつ取得し、画像処理エンジン３８Ａから出力される画像データを単位書込データ量ずつ後段のモジュール（例えばバッファモジュール４０）へ出力する（画像処理エンジン３８Ａで圧縮等のデータ量の増減を伴う画像処理が行われなければ単位書込データ量＝単位処理データ量となる）か、画像処理エンジン３８Ａによる画像処理の結果を自モジュールの外部へ出力する（例えば画像処理エンジン３８Ａがスキュー角検知処理等の画像解析処理を行う場合、画像データに代えてスキュー角検知結果等の画像解析処理結果が出力されることがある）処理を行うが、モジュールライブラリ３６には、画像処理エンジン３８Ａが実行する画像処理の種類及び内容が同一で、上記の単位処理データ量や単位読出データ量、単位書込データ量が異なる画像処理モジュール３８も登録されている。例えば画像回転処理を行う画像処理モジュール３８における単位処理データ量についても、前述した画像１面分に限られるものではなく、同じ画像回転処理を行いかつ単位処理データ量が互いに異なる（例えば画像の１ライン分や複数ライン分等の）複数の画像処理モジュール３８がモジュールライブラリ３６に含まれていても良い。
【００４１】
また、モジュールライブラリ３６に登録されている個々の画像処理モジュール３８のプログラムは、画像処理エンジン３８Ａに相当するプログラムと、制御部３８Ｂ、初期化部３８Ｃ及び終了部３８Ｄに相当するプログラムから構成されているが、制御部３８Ｂ、初期化部３８Ｃ及び終了部３８Ｄに相当するプログラムは部品化されており、個々の画像処理モジュール３８のうち単位読出データ量及び単位書込データ量が同一の画像処理モジュール３８は、画像処理エンジン３８Ａで実行される画像処理の種類や内容に拘わらず、制御部３８Ｂ、初期化部３８Ｃ及び終了部３８Ｄに相当するプログラムが共通化されている(制御部３８Ｂ、初期化部３８Ｃ及び終了部３８Ｄに相当するプログラムとして同一のプログラムが用いられている)。これにより、画像処理モジュール３８のプログラムの開発にあたっての開発負荷が軽減される。
【００４２】
なお、画像処理モジュール３８の中には、入力される画像の属性が未知の状態では単位読出データ量及び単位書込データ量が確定しておらず、入力画像データの属性を取得し、取得した属性を所定の演算式に代入して演算することで単位読出データ量や単位書込データ量が確定するモジュールが存在しているが、この種の画像処理モジュール３８については、単位読出データ量と単位書込データ量が互いに同一の演算式を用いて導出される画像処理モジュール３８について、制御部３８Ｂ、初期化部３８Ｃ及び終了部３８Ｄに相当するプログラムを共通化するようにすればよい。また、本実施形態に係る画像処理プログラム群３４は、前述のように各種機器に実装可能であるが、画像処理プログラム群３４のうちモジュールライブラリ３６に登録する画像処理モジュール３８の数や種類等については、画像処理プログラム群３４を実装する各種機器で必要とされる画像処理に応じて、適宜追加・削除・入替等が可能であることは言うまでもない。
【００４３】
また、画像処理部５０を構成する個々のバッファモジュール４０は、例として図７にも示すように、バッファ４０Ａと、バッファモジュール４０の前段及び後段のモジュールとの画像データの入出力及びバッファ４０Ａの管理を行うバッファ制御部４０Ｂから構成されている。なお、バッファ４０Ａはコンピュータ１０に設けられたメモリ１４からオペレーティングシステム３０及びリソース管理部４６Ｂを通じて確保されたメモリ領域で構成される。個々のバッファモジュール４０のバッファ制御部４０Ｂもその実体はＣＰＵ１２によって実行されるプログラムであり、モジュールライブラリ３６にはバッファ制御部４０Ｂのプログラムも登録されている（図１ではバッファ制御部４０Ｂのプログラムを「バッファモジュール」と表記して示している）。
【００４４】
また本実施形態では、画像処理部５０の動作モードとして、画像処理部５０で画像処理のみを行う通常モードに加えて、画像処理部５０で画像処理と処理時間の計測を行う計測モードが設けられており、画像処理部５０の動作モードとして計測モードが指定された場合には、図４(Ａ)〜(Ｃ)に示す画像処理部５０に代えて、例として図５(Ａ)〜(Ｃ)にも示すように、画像処理部５０を構成する画像処理モジュール３８と処理管理部４６のワークフロー管理部４６Ａ(後述)との間に処理時間計測モジュール４８が設けられた画像処理部５０が構築される(詳細は後述)。処理時間計測モジュール４８もその実体はＣＰＵ１２によって実行されるプログラムであり、モジュールライブラリ３６には、処理時間計測モジュール４８のプログラムも登録されている（図１では処理時間計測モジュール４８のプログラムを「処理時間計測モジュール」と表記して示している）。
【００４５】
また、アプリケーション３２からの指示に従って画像処理部５０を構築する処理構築部４２は、図１に示すように複数種のモジュール生成部４４から構成されている。複数種のモジュール生成部４４は互いに異なる画像処理に対応しており、アプリケーション３２によって起動されることで、対応する画像処理を実現するための画像処理モジュール３８及びバッファモジュール４０から成るモジュール群を生成する処理を行う。なお、図１ではモジュール生成部４４の一例として、モジュールライブラリ３６に登録されている個々の画像処理モジュール３８が実行する画像処理の種類に対応するモジュール生成部４４を示しているが、個々のモジュール生成部４４に対応する画像処理は、複数種の画像処理モジュール３８によって実現される画像処理（例えばスキュー角検知処理と画像回転処理から成るスキュー補正処理）であってもよい。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション３２は複数種の画像処理の何れかに対応するモジュール生成部４４を順次起動する。これにより、アプリケーション３２によって順次起動されたモジュール生成部４４により、必要とされる画像処理を行う画像処理部５０が構築されることになる。なお処理構築部４２は本発明に係る構築手段に対応している。
【００４６】
また図１に示すように、処理管理部４６は、画像処理部５０における画像処理の実行を制御するワークフロー管理部４６Ａ、画像処理部５０の各モジュールによるメモリ１４や各種のファイル等のコンピュータ１０のリソースの使用を管理するリソース管理部４６Ｂ、及び、画像処理部５０で発生したエラーを管理するエラー管理部４６Ｃを含んで構成されている。エラー管理部４６Ｃは、画像処理部５０が画像処理を実行している途中でエラーが発生した場合に、発生したエラーの種別・発生箇所等のエラー情報を取得し、画像処理プログラム群３４がインストールされたコンピュータ１０が組み込まれている機器の種別や構成等を表す装置環境情報を記憶部２０等から取得し、取得した装置環境情報が表す装置環境に応じたエラー通知方法を判断し、判断したエラー通知方法でエラーの発生を通知する処理を行う。なお、ワークフロー管理部４６Ａは本発明に係る処理管理手段及び収集手段として機能する。
【００４７】
次に本実施形態の作用を説明する。画像処理プログラム群３４が実装されている機器において、何らかの画像処理を行う必要のある状況になると、この状況が特定のアプリケーション３２によって検知される。なお、画像処理を行う必要のある状況としては、例えば画像データ供給部２２としての画像読取部によって画像を読み取り、画像出力部２４としての画像記録部により記録材料に画像として記録するか、画像出力部２４としての表示部に画像として表示させるか、画像出力部２４としての書込装置により画像データを記録メディアに書き込むか、画像出力部２４としての送信部により画像データを送信するか、画像出力部２４としての画像記憶部に記憶させるジョブの実行が利用者によって指示された場合、或いは、画像データ供給部２２としての受信部によって受信されるか、画像データ供給部２２としての画像記憶部に記憶されている画像データに対して、上記の記録材料への記録、表示部への表示、記録メディアへの書き込み、送信、画像記憶部への記憶の何れかを行うジョブの実行が利用者によって指示された場合が挙げられる。また、画像処理を行う必要のある状況は上記に限られるものではなく、例えば利用者からの指示に応じてアプリケーション３２が実行可能な処理の名称等を表示部１６に一覧表示している状態で、実行対象の処理が利用者によって選択された等の場合であってもよい。
【００４８】
上記のように、何らかの画像処理を行う必要のある状況になったことを検知すると、アプリケーション３２は、まず画像処理対象の画像データを供給する画像データ供給部２２の種別を認識し（図２のステップ１５０も参照）、認識した種別がバッファ領域（メモリ１４の一部領域）であった場合（図２のステップ１５２の判定が肯定された場合）には、画像データ供給部２２として指定されたバッファ領域を含むバッファモジュール４０を生成する（図２のステップ１５４も参照）。後述するバッファモジュール４０の新規生成では、バッファモジュール４０のバッファ制御部４０Ｂのプログラムを実行するスレッド（プロセス又はオブジェクトでもよい：以下同様）を生成することでバッファ制御部４０Ｂを生成し、生成されたバッファ制御部４０Ｂによりバッファ４０Ａとして使用するメモリ領域が確保されることによって成されるが、このステップ１５４におけるバッファモジュール４０の生成は、指定されたバッファ領域を既に確保されたバッファ４０Ａとして（バッファ制御部４０Ｂに）認識させるパラメータを設定してバッファ制御部４０Ｂを生成する処理を行うことによって成される。ここで生成されたバッファモジュール４０は画像データ供給部２２として機能する。
【００４９】
続いてアプリケーション３２は、上記と同様に、画像処理を行った画像データの出力先としての画像出力部２４の種別を認識し（図２のステップ１５６も参照）、認識した種別がバッファ領域（メモリ１４の一部領域）であった場合（図２のステップ１５８の判定が肯定された場合）は、画像出力部２４として指定されたバッファ領域を含むバッファモジュール４０を上記と同様にして生成する（図２のステップ１６０も参照）。ここで生成されたバッファモジュール４０は画像出力部２４として機能する。また、アプリケーション３２は実行すべき画像処理の内容を認識し、実行すべき画像処理を、個々のモジュール生成部４４に対応するレベルの画像処理の組み合わせに分解し、実行すべき画像処理を実現するために必要な画像処理の種類及び個々の画像処理の実行順序を判定する（図２のステップ１６２も参照）。なお、この判定は、例えば上記の画像処理の種類及び個々の画像処理の実行順序を、利用者が実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、アプリケーション３２は、実行が指示されたジョブの種類に対応する情報を読み出すことによって実現することができる。
【００５０】
そしてアプリケーション３２は、上記で判定した画像処理の種類及び実行順序に基づいて、まず実行順序が１番の画像処理に対応するモジュール生成部４４を起動（モジュール生成部４４のプログラムを実行するスレッドを生成）した後に（図２のステップ１６４も参照）、起動したモジュール生成部４４に対し、当該モジュール生成部４４によるモジュール群の生成に必要な情報として、前記モジュール群に画像データを入力する入力モジュールを識別するための入力モジュール識別情報、前記モジュール群が画像データを出力する出力モジュールを識別するための出力モジュール識別情報、前記モジュール群に入力される入力画像データの属性を表す入力画像属性情報、実行すべき画像処理のパラメータ、前述の動作モード(通常モード／計測モード)を通知し、対応するモジュール群の生成を指示する（図２のステップ１６６も参照）。
【００５１】
なお、上記の入力モジュールは、実行順序が１番目のモジュール群については画像データ供給部２２が入力モジュールとなり、実行順序が２番目以降のモジュール群については前段のモジュール群の最終モジュール（通常はバッファモジュール４０）が入力モジュールとなる。また、上記の出力モジュールについては、実行順序が最後のモジュール群では画像出力部２４が出力モジュールとなるので、画像出力部２４が出力モジュールとして指定されるが、その他のモジュール群では出力モジュールは未確定のためにアプリケーション３２による指定は行われず、必要な場合はモジュール生成部４４によって生成・設定される。また、入力画像属性や画像処理のパラメータについては、例えば利用者が実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、実行が指示されたジョブの種類に対応する情報を読み出すことでアプリケーション３２が認識するようにしてもよいし、利用者に指定させるようにしてもよい。
【００５２】
また本実施形態では、画像処理部５０の動作モードとして通常モード又は計測モードを利用者が選択可能とされている。利用者による動作モードの選択結果は利用者が操作部１８を操作することで予め入力され、メモリ１４上の所定の領域に情報として保持されており、モジュール生成部４４に対して通知する動作モードは、メモリ１４上の前記所定の領域に保持されている情報を参照することで判別される。なお、上記の計測モードは、例えば画像処理部５０で実行される一連の画像処理のボトルネックを検知したい場合や、画像処理部５０を構成する画像処理モジュール３８のうち実行される画像処理のアルゴリズムを改良すべき画像処理モジュール３８を特定したい場合、或いは、画像処理部５０を構成する画像処理モジュール３８の最適な組み合わせや最適な処理パラメータを検討したい等の場合に、画像処理部５０の動作モードとして選択される。
【００５３】
一方、モジュール生成部４４は、アプリケーション３２によって起動されると図３に示すモジュール生成処理を行う（図２のステップ１６８も参照）。モジュール生成処理では、まずステップ２００において、このモジュール生成部４４で次に生成すべき画像処理モジュール３８が有るか否かを判定する。生成すべき画像処理モジュール３８が有る場合には、ステップ２０２で生成すべき画像処理モジュール３８に入力される入力画像データの属性を表す入力画像属性情報を取得し、次のステップ２０４では、ステップ２０２で取得した情報が表す入力画像データの属性に照らしても先のステップ２００で生成すべきと判定した画像処理モジュール３８の生成が必要か否かを判定する。
【００５４】
具体的には、例えば実行中のモジュール生成処理に対応するモジュール生成部４４が色変換処理を行うモジュール群を生成するモジュール生成部であり、画像処理のパラメータにより出力画像データの色空間としてＣＭＹ色空間がアプリケーション３２から指定された場合、ステップ２０２で取得した入力画像属性情報に基づいて入力画像データがＲＧＢ色空間のデータであることが判明した場合には、色空間処理を行う画像処理モジュール３８としてＲＧＢ→ＣＭＹの色空間変換を行う画像処理モジュール３８を生成する必要があるが、入力画像データがＣＭＹ色空間のデータであった場合には、入力画像データの属性と出力画像データの属性が色空間に関して一致しているので、色空間変換処理を行う画像処理モジュール３８は生成不要と判断することができる。不要と判断された場合はステップ２００に戻る。
【００５５】
なお、入力画像データの属性を取得する処理は、生成する画像処理モジュール３８の前段にバッファモジュール４０が存在している場合、当該バッファモジュール４０に画像データの書き込みを行う更に前段の画像処理モジュール３８から出力画像データの属性を取得することによって実現できる。
【００５６】
次のステップ２０６では、生成する画像処理モジュール３８の後段にバッファモジュール４０が必要が否かを判定する。この判定は、画像処理モジュールの後段が出力モジュール（画像出力部２４）である場合（例えば図４(Ａ)〜(Ｃ)に示す画像処理部５０における最後段の画像処理モジュール３８を参照）や、例として図４(Ｂ)に示す画像処理部５０においてスキュー角検知処理を行う画像処理モジュール３８のように、画像処理モジュールが、画像データに対して解析等の画像処理を行いその結果を他の画像処理モジュール３８へ出力するモジュールである場合は否定され、バッファモジュール４０の生成を行うことなくステップ２１０へ移行するが、上記以外の場合は判定が肯定されてステップ２０８へ移行し、バッファ制御部４０Ｂを起動する（バッファ制御部４０Ｂのプログラムを実行するスレッドを生成する）ことで、画像処理モジュールの後段に連結するバッファモジュール４０を生成する。
【００５７】
次のステップ２１０では、前段のモジュール（例えばバッファモジュール４０）の情報と後段のバッファモジュール４０の情報、画像処理モジュール３８に入力される入力画像データの属性、処理パラメータを与えて、画像処理モジュール３８を生成する。なお、ステップ２０６で後段のバッファモジュール４０が不要と判断された画像処理モジュール３８に対しては後段のバッファモジュール４０の情報は与えられず、また例えば50％縮小処理のように処理内容が固定的で特別な画像処理パラメータが必要ない場合には処理パラメータは与えられない。
【００５８】
モジュール生成処理（ステップ２１０）では、モジュールライブラリ３６に登録されており、画像処理モジュール３８として利用可能な複数の候補モジュールの中から、ステップ２０２で取得した入力画像データの属性、及び、画像処理モジュール３８で実行すべき処理パラメータに合致する画像処理モジュール３８を選択する。例えば実行中のモジュール生成処理に対応するモジュール生成部４４が色変換処理を行うモジュール群を生成するモジュール生成部であり、処理パラメータにより出力画像データの色空間としてＣＭＹ色空間がアプリケーション３２から指定され、更に入力画像データがＲＧＢ色空間のデータであった場合には、モジュールライブラリ３６に登録されている各種の色空間処理を行う複数種の画像処理モジュール３８の中から、ＲＧＢ→ＣＭＹの色空間変換を行う画像処理モジュール３８が選択される。
【００５９】
また、画像処理モジュールが拡大・縮小処理を行う画像処理モジュール３８であり、指定された拡大縮小率が50％以外であれば、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８が選択され、指定された拡大縮小率が50％であれば、拡大縮小率50％に特化した拡大縮小処理、すなわち入力された画像データを１画素おきに間引くことで50％に縮小する縮小処理を行う画像処理モジュール３８が選択される。なお、画像処理モジュール３８の選択は上記に限られるものではなく、例えば画像処理エンジン３８Ａによる画像処理における単位処理データ量が異なる画像処理モジュール３８をモジュールライブラリ３６に複数登録しておき、画像処理部５０へ割当可能なメモリ領域のサイズ等の動作環境に応じて、適切な単位処理データ量の画像処理モジュール３８を選択する（例えば上記サイズが小さくなるに従って単位処理データ量の小さい画像処理モジュール３８を選択する等）ようにしてもよいし、アプリケーション３２或いは利用者に選択させるようにしてもよい。
【００６０】
次のステップ２１２では、後段のバッファモジュール４０のＩＤと生成した画像処理モジュール３８のＩＤの組をワークフロー管理部４６Ａに通知する。このＩＤは、個々のモジュールを一意に判別できる情報であればよく、例えば個々のモジュールの生成順に付与した番号や、バッファモジュール４０や画像処理モジュール３８のオブジェクトのメモリ上でのアドレス等でも良い。ワークフロー管理部４６Ａに通知された情報は、ワークフロー管理部４６Ａの内部で管理している管理テーブルに登録され、後の処理で使われる。なお、各モジュールのＩＤはテーブル形式に代えてリスト形式や連想配列形式等で保持するようにしてもよい。
【００６１】
ステップ２１２の処理が終了すると、モジュール生成部４４は制御をステップ２００に戻して次に生成すべき画像処理モジュールがあるか否かを判定する。なお、個々のモジュール生成部４４は、対応する一定の画像処理を行うモジュール群を生成するので、この判定は、個々のモジュール生成部４４毎にどのような画像処理モジュールをどのような接続関係で生成するかに関する情報を予め登録して読み出すか、またはモジュール生成部４４を動作させるプログラム中に記述しておくことでも実現できる。例えば実行中のモジュール生成処理に対応するモジュール生成部４４が、複数種の画像処理モジュール３８によって実現される画像処理（例えばスキュー角検知処理を行う画像処理モジュール３８と画像回転処理を行う画像処理モジュール３８によって実現されるスキュー補正処理）を行うモジュール群を生成する場合には、２個以上の画像処理モジュール３８を含むモジュール群が生成される。
【００６２】
また、目的とする画像処理（起動されたモジュール生成部４４に対応する画像処理）を実現するモジュール群の生成が完了すると、ステップ２００の判定が否定されてステップ２１４へ移行し、指定された動作モードが計測モードか否か判定する。判定が否定された場合はモジュール生成処理を終了するが、ステップ２１４の判定が肯定された場合はステップ２１６へ移行し、処理時間計測モジュール４８を起動する（処理時間計測モジュール４８のプログラムを実行するスレッドを生成する）ことで、前述のステップ２００〜ステップ２１２で生成した画像処理モジュール３８に付加する(画像処理モジュール３８と処理管理部４６のワークフロー管理部４６Ａとの間に設ける)処理時間計測モジュール４８を生成する。また、次のステップ２１８では、ステップ２１６で挿入した処理時間計測モジュール４８のＩＤを、ステップ２００〜ステップ２１２で生成した画像処理モジュール３８のＩＤと対応付けてワークフロー管理部４６Ａに通知し、モジュール生成処理を終了する。
【００６３】
これにより、ワークフロー管理部４６Ａでは、生成された処理時間計測モジュール４８のＩＤと、当該処理時間計測モジュール４８が付加された画像処理モジュール３８のＩＤを認識し、通知された処理時間計測モジュール４８のＩＤを、既に登録されている画像処理モジュール３８のＩＤと対応付けて管理テーブルに追加登録する処理が行われる。
【００６４】
アプリケーション３２は、モジュール群の生成を指示したモジュール生成部４４から、上記のようにしてモジュール群の生成完了が通知されると、図２のステップ１６２における判定の結果に基づいて、必要とされる画像処理を実現するために他の画像処理を行うモジュール群も生成する必要があるか否か判断する。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション３２は、個々の画像処理に対応する他のモジュール生成部４４を起動してモジュール群の生成に必要な情報を通知する処理を順次行う（図２のステップ１７０，１７２も参照）。そして、順次起動されたモジュール生成部４４によって上述したモジュール生成処理（図３）が順次行われる（図２のステップ１７４も参照）ことで、例として図４(Ａ)〜(Ｃ)に示すように、必要とされる画像処理を行う画像処理部５０が構築されることになる。また、動作モードとして計測モードが選択されている場合には、例として図５(Ａ)〜(Ｃ)にも示すように、画像処理部５０を構成する個々の画像処理モジュール３８に処理時間計測モジュール４８が各々付加された(個々の画像処理モジュール３８と処理管理部４６のワークフロー管理部４６Ａとの間に処理時間計測モジュール４８が各々設けられた)画像処理部５０が構築される。
【００６５】
ところで、画像処理モジュール３８の制御部３８Ｂは、モジュール生成部４４によって起動されると画像処理モジュール３８の初期化を行う。この初期化では、まずモジュール生成部４４から与えられた自モジュールの前段及び後段のモジュールの情報を記憶する。続いて自モジュールの前段のモジュールを判定する。自モジュールの前段にモジュールが存在していない場合には何ら処理を行わないが、前段のモジュールがバッファモジュール４０以外、例えば画像データ供給部２２や特定のファイル等である場合には、必要に応じてその初期化処理を行う。また、自モジュールの前段にバッファモジュール４０が存在している場合には、前段のバッファモジュール４０からの１回の画像データの読み出しによって取得する画像データのデータ量(単位読出データ量)を認識する。この単位読出データ量は、自モジュールの前段のバッファモジュール４０の数が１個であれば１個だけであるが、例えば図４(Ｃ)に示す画像処理部５０において画像合成処理を行う画像処理モジュール３８のように、前段のバッファモジュール４０の数が複数で、複数のバッファモジュール４０から各々取得した画像データを用いて画像処理エンジン３８Ａが画像処理を行う等の場合、前段の個々のバッファモジュール４０に対応する単位読出データ量は、自モジュールの画像処理エンジン３８Ａが行う画像処理の種類や内容、前段のバッファモジュール４０の数等に応じて定まる。そして、認識した単位読出データ量を、前段に存在している全てのバッファモジュール４０へ通知することで、前段に存在している全てのバッファモジュール４０に単位読出データ量を設定する(図６(Ａ)の(1)も参照)。
【００６６】
次に、自モジュールの後段のモジュールを判定する。自モジュールの後段のモジュールがバッファモジュール４０以外、例えば画像出力部２４や特定のファイル等の場合には、必要に応じてその初期化処理(例えば後段のモジュールが画像出力部２４であれば、単位書込データ量に相当するデータ量ずつ画像データを出力することを通知する処理等)を行う。また、後段のモジュールがバッファモジュール４０であれば、１回の画像データの書き込みにおける画像データのデータ量(単位書込データ量)を認識し、後段のバッファモジュールに当該単位書込データ量を設定(図６(Ａ)の(2)も参照)する。そして、当該画像処理モジュール３８の初期化の完了をモジュール生成部４４に通知して処理を終了する。
【００６７】
一方、画像処理部５０を構成する個々のバッファモジュール４０のバッファ制御部４０Ｂは、モジュール生成部４４又はアプリケーション３２によって起動されるとバッファモジュール４０の初期化を行う。バッファモジュール４０の初期化では、まず自モジュールの前段の画像処理モジュール３８から単位書込データ量が通知されるか又は自モジュールの後段の画像処理モジュール３８から単位読出データ量が通知される毎に、通知された単位書込データ量又は単位読出データ量を記憶する(図７の(1),(2)も参照)。
【００６８】
自モジュールと連結されている全ての画像処理モジュール３８から単位書込データ量又は単位読出データ量が通知されると、自モジュールと連結されている個々の画像処理モジュール３８によって各々設定された単位書込データ量及び単位読出データ量に基づいて、自モジュールのバッファ４０Ａの管理単位である単位バッファ領域のサイズを決定し、決定した単位バッファ領域のサイズを記憶する。単位バッファ領域のサイズとしては、自モジュールに設定された単位書込データ量及び単位読出データ量のうちの最大値が好適であるが、単位書込データ量を設定してもよいし、単位読出データ量(自モジュールの後段に複数の画像処理モジュール３８が連結されている場合は、個々の画像処理モジュール３８によって各々設定された単位読出データ量の最大値)を設定してもよいし、単位書込データ量と単位読出データ量(の最大値)の最小公倍数を設定してもよいし、この最小公倍数が所定値未満であれば最小公倍数を、最小公倍数が所定値以上であれば別の値(例えば上述した単位書込データ量及び単位読出データ量のうちの最大値、単位書込データ量、単位読出データ量(の最大値)の何れか)を設定するようにしてもよい。
【００６９】
また、自モジュールがアプリケーション３２によって生成され、画像データ供給部２２又は画像出力部２４として機能するバッファモジュール４０であった場合には、自モジュールのバッファ４０Ａとして用いるメモリ領域が既に存在しているので、先に決定した単位バッファ領域のサイズを、自モジュールのバッファ４０Ａとして用いる既設のメモリ領域のサイズに変更する。更に、自モジュールの後段の個々の画像処理モジュール３８に対応する有効データポインタを各々生成し、生成した有効データポインタを初期化する。この有効データポインタは、自モジュールの前段の画像処理モジュールによって自モジュールのバッファ４０Ａに書き込まれた画像データのうち、対応する後段の画像処理モジュール３８によって読み出されていない画像データ(有効データ)の先頭位置（次の読出開始位置）と末尾位置を各々指し示すポインタであり、初期化時には通常、有効データが存在していないことを意味する特定の情報が設定されるが、自モジュールが自モジュールがアプリケーション３２によって生成され、画像データ供給部２２として機能するバッファモジュール４０であれば、自モジュールのバッファ４０Ａとして用いるメモリ領域には既に画像処理対象の画像データが書き込まれていることがあり、この場合は当該画像データの先頭位置及び末尾位置が後段の個々の画像処理モジュール３８に対応する有効データポインタに各々設定される。以上の処理によりバッファモジュール４０の初期化が完了し、バッファ制御部４０Ｂは初期化の完了をワークフロー管理部４６Ａへ通知する。
【００７０】
また、図６(Ｂ)に示すように、個々の処理時間計測モジュール４８は、画像処理モジュール３８とワークフロー管理部４６Ａとの間の情報の送受を中継すると共に、画像処理モジュール３８で実行される画像処理の処理時間を計測する中継・計測部４８Ａと、初期化処理を行う初期化部４８Ｂから構成されている。初期化部４８Ａは、自モジュールが生成されると、図１０(Ａ)に示す初期化処理を行う。この初期化処理では、ステップ５５０において、自モジュールに割り当てられたメモリ１４の領域のうち処理時間積算値を記憶するための領域を０に初期化する。また、次のステップ５５２において、自モジュールが付加された画像処理モジュール３８の情報(例えばＩＤ等)を、自モジュールに割り当てられたメモリ１４の領域のうち、各種の設定情報を記憶するための領域に記憶させ(図６(Ｂ)の(4)も参照)、処理を終了する。
【００７１】
一方、アプリケーション３２は、順次起動したモジュール生成部４４によって前述のモジュール生成処理が順次行われることで、必要とされる画像処理を行う画像処理部５０の構築が完了すると、動作モード毎に用意されたワークフロー管理部４６Ａのプログラムのうち、選択された動作モードに対応するワークフロー管理部４６Ａのプログラムを実行するスレッドを起動することで、ワークフロー管理部４６Ａに対して画像処理部５０による画像処理の実行を指示する(図２のステップ１７６)。
【００７２】
処理管理部４６のワークフロー管理部４６Ａは、プログラムが起動されることで図９に示す画像処理部制御処理を行う。ワークフロー管理部４６Ａは画像処理部制御処理において、画像処理部５０を構成する画像処理モジュール３８のうちの所定の画像処理モジュール３８(又は当該画像処理モジュール３８に付加された処理時間計測モジュール４８)に処理要求を入力することで、画像処理部５０による画像処理を並列に行わせるが、以下では画像処理部５０全体の動作説明に先立ち、個々のバッファモジュール４０のバッファ制御部４０Ｂによって行われる初期化処理完了以降の処理、個々の画像処理モジュール３８の制御部３８Ｂによって行われる画像処理モジュール制御処理について順に説明する。
【００７３】
本実施形態では、画像処理モジュール３８が後段のバッファモジュール４０に画像データを書き込む場合には、画像処理モジュール３８からバッファモジュール４０へ書込要求が入力され、画像処理モジュール３８が前段のバッファモジュール４０から画像データを読み出す場合には、画像処理モジュール３８からバッファモジュール４０へ読出要求が入力される。前段の画像処理モジュール３８からの書込要求がバッファモジュール４０に入力された場合は、以下で説明するデータ書込処理がバッファ制御部４０Ｂによって実行される。
【００７４】
データ書込処理では、まず自モジュールのバッファ４０Ａが他のスレッドによって使用中か否か判定する。バッファ４０Ａに対してデータの書き込みと非同期にデータの読み出しも行われるので、バッファ４０Ａが使用中の場合は入力された書込要求情報をワークメモリ等に保管し、タイマをスタートさせてデータ書込処理を一旦終了する。なお、上記のタイマがタイムアウトした場合は、過去に入力されてワークメモリ等に保管している書込要求情報をワークメモリ等から取り出し、取り出した書込要求情報を処理対象の情報として以降の処理が行われる。
【００７５】
続いてデータ書込処理では、確保すべきメモリ領域のサイズとして単位書込データ量をリソース管理部４６Ｂに通知し、書込用として用いるメモリ領域をリソース管理部４６Ｂを介して取得する。次に、自モジュールのバッファ４０Ａを構成する保管用の単位バッファ領域の中に、単位書込データ量以上の空き領域が有る単位バッファ領域（単位書込データ量の画像データを書き込み可能な単位バッファ領域）が存在しているか否か判定する。モジュール生成部４４によって生成されたバッファモジュール４０は、当初はバッファ４０Ａとして用いるメモリ領域（単位バッファ領域）が確保されておらず、メモリ領域の不足が生ずる度に単位バッファ領域を単位として確保されるので、バッファモジュール４０に最初に書込要求が入力されたときにはバッファ４０Ａとして用いるメモリ領域（単位バッファ領域）が存在しておらず、この判定は否定される。また、単位バッファ領域が確保された後も、当該単位バッファ領域への画像データの書込に伴って当該単位バッファ領域内の空き領域が単位書込データ量未満になった場合は上記判定が否定される。
【００７６】
単位書込データ量以上の空き領域が有る単位バッファ領域が存在していないと判定された場合は、確保すべきメモリ領域のサイズ（単位バッファ領域のサイズ）をリソース管理部４６Ｂに通知して、自モジュールのバッファ４０Ａとして用いるメモリ領域（画像データの保管に用いる単位バッファ領域）をリソース管理部４６Ｂを介して取得する。そして、先に取得した書込用バッファ領域を書込領域として、当該書込領域の先頭アドレスを書込要求元の画像処理モジュール３８へ通知すると共に、書込対象の画像データを通知した先頭アドレスから順に書き込むよう要請する。これにより、書込要求元の画像処理モジュール３８は、先頭アドレスが通知された書込用バッファ領域に画像データを書き込む。
【００７７】
このように、本実施形態では、画像処理モジュール３８による画像データの書き込みを、保管用の単位バッファ領域と別に確保した書込用バッファ領域に対して行わせ、書込用バッファ領域に一旦書き込まれた画像データを保管用の単一又は複数の単位バッファ領域へ複写する。これにより、書込要求元の画像処理モジュール３８への書込領域の通知は、その先頭アドレスを通知するのみで済み、画像処理モジュール３８とのインタフェースが簡単になる。なお、自モジュールがアプリケーション３２によって生成されたバッファモジュール４０である場合、すなわちバッファ４０Ａとして用いるメモリ領域が既に確保されている場合には、既に確保されたメモリ領域のアドレスを画像処理モジュール３８に書込領域のアドレスとして通知し、上記メモリ領域への画像データの書き込みを行わせる。
【００７８】
前段の画像処理モジュール３８による書込領域への画像データの書き込みが完了すると、書込用バッファ領域に書き込まれている画像データに属性情報を付加した後に、保管用バッファ領域にそのまま書き込む。そして、自モジュールの後段の個々の画像処理モジュール３８に対応する有効データポインタのうち有効データの末尾位置を表すポインタを更新すると共に、先に書込用バッファ領域として確保したメモリ領域をリソース管理部４６Ｂによって解放させ、データ書込処理を一旦終了する。なお、書込用バッファ領域はバッファモジュール４０の初期化時に確保し、バッファモジュール４０の消去時に解放するように構成してもよい。
【００７９】
続いて、後段の画像処理モジュール３８から読出要求がバッファモジュール４０に入力された場合に、バッファモジュール４０のバッファ制御部４０Ｂによって実行されるデータ読出処理について説明する。
【００８０】
データ読出処理では、まず今回のデータ読出処理の起動要因が、後段の画像処理モジュールからの読出要求の入力による起動か否か判定し、判定が肯定された場合は、後段の画像処理モジュールから入力された読出要求情報を読出用の待ち行列の末尾に登録する。次に、自モジュールのバッファ４０Ａが他のスレッドによって使用中か否か判定する。バッファ４０Ａが使用中であれば、読出用の待ち行列に読出要求情報が登録されているか否か判定し、読出要求情報が未登録であればそのままデータ読出処理を終了し、読出要求情報が登録されていればタイマをスタートさせた後にデータ読出処理を終了する。このタイマがタイムアウトするとデータ読出処理が再度起動され、読出用の待ち行列に登録されている未処理の読出要求（情報）が再度取り出され、当該読出要求に応じた処理が行われる。
【００８１】
一方、自モジュールのバッファ４０Ａが使用中でなければ、読出用の待ち行列から先頭に登録されている読出要求情報を取り出し、取り出した読出要求情報に含まれる要求元識別情報に基づいて読出要求元の画像処理モジュール３８を認識し、読出要求元の画像処理モジュール３８によって設定された単位読出データ量を認識すると共に、読出要求元の画像処理モジュール３８に対応する有効データポインタに基づいて、読出要求元の画像処理モジュール３８に対応する有効データのバッファ４０Ａ上での先頭位置及び末尾位置を認識する。次に、認識した有効データの先頭位置及び末尾位置に基づいて、読出要求元の画像処理モジュール３８に対応する有効データ（読出要求元の画像処理モジュール３８が読出可能な画像データ）が単位読出データ量以上有るか否か判定する。
【００８２】
読出要求元の画像処理モジュール３８に対応する有効データが単位読出データ量未満であれば、読出要求元の画像処理モジュール３８が読出可能な有効データの末尾が処理対象の画像データの末尾か否か判定する。読出要求元の画像処理モジュール３８に対応する有効データがバッファ４０Ａに単位読出データ量以上記憶されているか、又は、バッファ４０Ａに記憶されている読出要求元の画像処理モジュール３８に対応する有効データが単位読出データ量未満であるものの、当該有効データの末尾が処理対象の画像データの末尾であった場合には、確保すべきメモリ領域のサイズとして読出要求元の画像処理モジュール３８に対応する単位読出データ量をリソース管理部４６Ｂに通知すると共に、読出に用いるメモリ領域の確保をリソース管理部４６Ｂに要求し、リソース管理部４６Ｂを介して読出用バッファ領域を取得する。
【００８３】
次に、読出対象の有効データをバッファ４０Ａから単位読出データ量分だけ読み出して読出用バッファ領域に書き込み、読出用バッファ領域の先頭アドレスを読出領域の先頭アドレスとして読出要求元の画像処理モジュール３８へ通知すると共に、通知した先頭アドレスから画像データを順に読み出すよう要請する。これにより、読出要求元の画像処理モジュール３８は、先頭アドレスが通知された読出領域（読出用バッファ領域）からの画像データの読み出しを行う。なお、読出対象の有効データが処理対象の画像データの末尾に相当するデータであった場合には、画像データの読出要求に際し、読出対象の画像データのサイズと共に、処理対象の画像データの末尾であることも読出要求元の画像処理モジュール３８に通知する。また、自モジュールがアプリケーション３２によって生成されたバッファモジュール４０である場合は、読出用バッファ領域の確保、読出対象の画像データの読出用バッファ領域への書き込みを省略し、後段の画像処理モジュール３８が単位バッファ領域から直接画像データを読み出すようにしてもよい。
【００８４】
読出要求元の画像処理モジュール３８による読出領域からの画像データの読み出し完了が通知されると、読出用バッファ領域として確保したメモリ領域の先頭アドレス及びサイズをリソース管理部４６Ｂへ通知して、当該メモリ領域をリソース管理部４６Ｂによって解放させる。この読出用バッファ領域についても、バッファモジュール４０の初期化時に確保しておき、バッファモジュール４０が消去される時に解放するよう構成してもよい。また、読出要求元の画像処理モジュール３８に対応する有効データポインタのうち有効データの先頭位置を表すポインタを更新する。
【００８５】
次に、後段の個々の画像処理モジュール３８に対応する有効データポインタを各々参照し、先のポインタ更新により、バッファ４０Ａを構成する単位バッファ領域の中に、記憶している画像データの後段の各画像処理モジュール３８による読み出しが全て完了した単位バッファ領域、すなわち有効データを記憶していない単位バッファ領域が出現したか否か判定する。判定が否定された場合は、前述した読出用の待ち行列のチェック処理（読出用の待ち行列に読出要求情報が登録されているか否かの判定）を経てデータ読出処理を終了するが、有効データを記憶していない単位バッファ領域が出現した場合は、当該単位バッファ領域をリソース管理部４６Ｂによって解放させた後に読出用の待ち行列のチェック処理を経てデータ読出処理を終了する。
【００８６】
一方、バッファ４０Ａに記憶されており読出要求元の画像処理モジュール３８が読出可能な有効データのデータ量が単位読出データ量未満であり、かつ読出可能な有効データの末尾が処理対象の画像データの末尾でない場合(図７の(4)で読出可能な有効データ無が検知された場合)には、新たな画像データを要求するデータ要求をワークフロー管理部４６Ａへ出力し(図７の(5)も参照)、読出用の待ち行列から取り出した読出要求情報を元の待ち行列(の先頭又は末尾)に再度登録した後に、読出用の待ち行列のチェック処理を経てデータ読出処理を終了する。この場合、ワークフロー管理部４６Ａにより、自モジュールの前段の画像処理モジュール３８(又は当該画像処理モジュール３８に付加された処理時間計測モジュール４８)に処理要求が入力されることになる。これにより、読出可能な有効データのデータ量が単位読出データ量以上になるか、読出可能な有効データの末尾が処理対象の画像データの末尾であることが検知される迄の間、対応する読出要求情報は読出用の待ち行列に保存されると共に定期的に取り出されて要求された処理の実行が繰り返し試行されることになる。
【００８７】
詳細は後述するが、ワークフロー管理部４６Ａはバッファモジュール４０からデータ要求が入力されると、データ要求元のバッファモジュール４０の前段の画像処理モジュール３８(又は当該画像処理モジュール３８に付加された処理時間計測モジュール４８)に処理要求を入力する(図７の(6)も参照)。この処理要求の入力をトリガとして前段の画像処理モジュール３８の制御部３８Ｂで行われる処理により、前段の画像処理モジュール３８がバッファモジュール４０へ画像データを書込可能な状態になると、前段の画像処理モジュール３８から書込要求が入力されることで前述のデータ書込処理が行われ、前段の画像処理モジュール３８からバッファモジュール４０のバッファ４０Ａに画像データが書き込まれる(図７の(7),(8)も参照)。これにより、後段の画像処理モジュール３８によるバッファ４０Ａからの画像データの読出が行われることになる(図７の(9)も参照)。
【００８８】
上述したデータ書込処理及びデータ読出処理では、一方が自モジュールのバッファ４０Ａにアクセスしている間、他方がバッファ４０Ａへのアクセスを停止する排他制御が行われる。これにより、コンピュータ１０のＣＰＵ１２が画像処理部５０を構成する個々のモジュールに対応するスレッドを並列に実行しても、単一のバッファモジュール４０に複数の要求が同時又は略同時に入力されることによる不都合の発生を回避できるので、コンピュータ１０のＣＰＵ１２が個々のモジュールに対応するスレッドを並列に実行することができる。
【００８９】
続いて、画像処理部５０を構成する個々の画像処理モジュール３８に対し、ワークフロー管理部４６Ａ(又はワークフロー管理部４６Ａからの処理要求を中継する処理時間計測モジュール４８)から処理要求が入力される毎に、個々の画像処理モジュール３８の制御部３８Ｂによって各々行われる画像処理モジュール制御処理(図８)を説明する。
【００９０】
画像処理モジュール制御処理では、まずステップ２２０において、自モジュールの前段にモジュール（バッファモジュール４０や画像データ供給部２２、画像処理モジュール３８等）が存在している場合に、当該前段のモジュールに対してデータ（画像データ又は解析等の画像処理の処理結果）を要求する。次のステップ２２２では前段のモジュールからデータが取得可能であるかを判定し、ステップ２２２の判定が否定された場合はステップ２２４で全体処理終了が通知されたか否かを判定する。ステップ２２４の判定が否定された場合はステップ２２２に戻り、前段のモジュールからデータを取得可能となる迄ステップ２２２，２２４を繰り返す。
【００９１】
ここで、自モジュールの前段のモジュールがバッファモジュール４０である場合には、先のステップ２２０でデータを要求すると（読出要求）、読出可能な有効データがバッファモジュール４０のバッファ４０Ａに単位読出データ量以上記憶されているか、読出可能な有効データの末尾が処理対象の画像データの末尾に一致している状態であれば直ちに、当該状態でなければ、当該バッファモジュール４０の前段の画像処理モジュール３８が当該バッファモジュール４０のバッファ４０Ａに画像データを書き込んだことに伴って前記状態へ変化した後に、バッファモジュール４０から読出領域の先頭アドレスが通知されて画像データの読出が要請される。これにより、ステップ２２２の判定が肯定されてステップ２２６へ移行し、前段のバッファモジュール４０より先頭アドレスが通知された読出領域から単位読出データ量（又はそれ未満のデータ量）の画像データを読み出し、一時保管用のメモリ領域に書き込むデータ取得処理を行う（図６(Ａ)の(3)も参照）。
【００９２】
また、自モジュールの前段のモジュールが画像データ供給部２２であれば、先のステップ２２０でデータ要求を出力すると画像データを取得可能な状態であることが前段の画像データ供給部２２から直ちに通知されることで、ステップ２２２の判定が肯定されてステップ２２６へ移行し、前段の画像データ供給部２２から単位読出データ量の画像データを取得し、一時保管用のメモリ領域に書き込むデータ取得処理を行う。また、自モジュールの前段のモジュールが画像処理モジュール３８であれば、先のステップ２２０でデータ要求（処理要求）を出力すると、前段の画像処理モジュール３８が画像処理を実行可能な状態であれば書込要求が入力されることでデータ（画像処理結果）を取得可能な状態であることが通知されるので、ステップ２２２の判定が肯定されてステップ２２６へ移行し、前段の画像処理モジュール３８によってデータを書き込ませる一時保管用のメモリ領域のアドレスを通知して書込を要請することで、前段の画像処理モジュール３８から出力されるデータを一時保管用のメモリ領域に書き込ませるデータ取得処理を行う。
【００９３】
次のステップ２２８では、自モジュールの前段に複数のモジュールが連結されているか否か判定する。判定が否定された場合には何ら処理を行うことなくステップ２３２へ移行するが、判定が肯定された場合はステップ２３０へ移行し、前段に連結されている全てのモジュールからデータを取得したか否か判定する。ステップ２３０の判定が否定された場合はステップ２２０に戻り、ステップ２３０の判定が肯定される迄ステップ２２０〜ステップ２３０を繰り返す。前段のモジュールから取得すべきデータが全て揃うと、ステップ２２８の判定が否定されるかステップ２３０の判定が肯定されてステップ２３２へ移行する。
【００９４】
次のステップ２３２では自モジュールの後段のモジュールに対してデータ出力用の領域を要求し、ステップ２３２でデータ出力領域が取得できる迄（データ出力領域の先頭アドレスが通知される迄）繰り返し判定を行う。なお、後段のモジュールがバッファモジュール４０であれば、上記のデータ出力用領域の要求は当該バッファモジュール４０に対して書込要求を出力することによって成される。データ出力領域（後段のモジュールがバッファモジュール４０であれば当該バッファモジュール４０から先頭アドレスが通知された書込領域）が取得できたら（図６(Ａ)の(4)も参照）、次のステップ２３６において、先のデータ取得処理で取得したデータ、後段のモジュールから取得したデータ出力領域（の先頭アドレス）、画像処理用のメモリ領域（の先頭アドレス及びサイズ）を画像処理エンジン３８Ａに入力し、入力したデータに対し画像処理用のメモリ領域を使用して所定の画像処理を行わせる（図６(Ａ)の(5)も参照）と共に、処理後のデータをデータ出力領域に書き込ませる（図６(Ａ)の(6)も参照）。画像処理エンジン３８Ａへの単位読出データ量のデータの入力が完了し、画像処理エンジン３８Ａから出力されたデータがデータ出力領域に全て書き込まれると、次のステップ２３８で出力が完了したことを後段のモジュールに通知する。
【００９５】
上記のステップ２２０〜ステップ２３８により画像処理モジュール３８における単位処理データ量のデータに対する処理（単位処理）が完了し、次のステップ２４２において、ワークフロー管理部４６Ａへ処理完了通知を出力することで、入力された処理要求に対応する処理が完了したことを処理要求の入力元(ワークフロー管理部４６Ａ又は処理時間計測モジュール４８)へ通知し、画像処理モジュール制御処理を終了する。
【００９６】
また、処理要求が入力される毎に上述した処理が繰り返されることで処理対象の画像データを末尾まで処理すると、前段のモジュールから処理対象の画像データの終了が通知されることで、ステップ２２４の判定が肯定されてステップ２４４へ移行し、処理対象の画像データ（なお、処理対象の画像データは１頁分の画像データであることが多いが、複数頁分の画像データであってもよい）に対する処理が終了したことを意味する全体処理終了通知を処理要求の入力元及び後段のモジュールへ各々出力する。また、次のステップ２４６では取得していた全てのリソースの解放を要求して自モジュールを消去する処理を行い、画像処理モジュール制御処理を終了する。
【００９７】
次に、ワークフロー管理部４６Ａによる処理を説明する。なお、以下では、まず動作モードとして通常モードが選択されていることで起動された、通常モードに対応するワークフロー管理部４６Ａによる処理を説明する。ワークフロー管理部４６Ａは、アプリケーション３２によって起動されると図９(Ａ)に示す画像処理部制御処理１を行う。通常モードに対応するワークフロー管理部４６Ａは、画像処理部制御処理１のステップ５００において、画像処理部５０のうち最後段の画像処理モジュール３８に処理要求を入力し(図１１(Ａ)の(1)参照)、画像処理部制御処理１を終了する。
【００９８】
図１１(Ａ)に示す画像処理部５０において、ワークフロー管理部４６Ａから最後段の画像処理モジュール３８4に処理要求が入力されると、画像処理モジュール３８4の制御部３８Ｂは前段のバッファモジュール４０3に読出要求を入力する（図１１(Ａ)の(2)参照）。このとき、バッファモジュール４０3のバッファ４０Ａには画像処理モジュール３８4が読出可能な有効データ（画像データ）が記憶されていないので、バッファモジュール４０3のバッファ制御部４０Ｂはワークフロー管理部４６Ａにデータ要求を入力する（図１１(Ａ)の(3)参照）。
【００９９】
ワークフロー管理部４６Ａは、バッファモジュール４０からデータ要求が入力される毎に、図９(Ｂ)に示す画像処理部制御処理２を行う。通常モードに対応するワークフロー管理部４６Ａは、画像処理部制御処理２において、ステップ５１０でデータ要求入力元のバッファモジュール４０(ここではバッファモジュール４０3)の前段の画像処理モジュール３８(ここでは画像処理モジュール３８3)を認識し、認識した前段の画像処理モジュール３８に処理要求を入力(図１１(Ａ)の(4)参照)して処理を終了する。
【０１００】
画像処理モジュール３８3の制御部３８Ｂは、処理要求が入力されると前段のバッファモジュール４０2に読出要求を入力し(図１１(Ａ)の(5)参照)、バッファモジュール４０2のバッファ４０Ａにも読出可能な画像データが記憶されていないので、バッファモジュール４０2のバッファ制御部４０Ｂはワークフロー管理部４６Ａにデータ要求を入力する(図１１(Ａ)の(6)参照)。ワークフロー管理部４６Ａは、バッファモジュール４０2からデータ要求が入力された場合も、前述の画像処理部制御処理２を再度行うことで、その前段の画像処理モジュール３８2に処理要求を入力し(図１１(Ａ)の(7)参照)、画像処理モジュール３８3の制御部３８Ｂは前段のバッファモジュール４０1に読出要求を入力する(図１１(Ａ)の(8)参照）。また、バッファモジュール４０1のバッファ４０Ａにも読出可能な画像データが記憶されていないので、バッファモジュール４０1のバッファ制御部４０Ｂもワークフロー管理部４６Ａにデータ要求を入力し(図１１(Ａ)の(9)参照)。ワークフロー管理部４６Ａは、バッファモジュール４０1からデータ要求が入力された場合も、前述の画像処理部制御処理２を再度行うことで、その前段の画像処理モジュール３８1に処理要求を入力する(図１１(Ａ)の(10)参照)。
【０１０１】
ここで、画像処理モジュール３８1の前段のモジュールは画像データ供給部２２であるので、画像処理モジュール３８1の制御部３８Ｂは、画像データ供給部２２にデータ要求を入力することで画像データ供給部２２から単位読出データ量の画像データを取得し(図１１(Ａ)の(11)参照)、取得した画像データに対して画像処理エンジン３８Ａが画像処理を行うことで得られた画像データを、後段のバッファモジュール４０1のバッファ４０Ａに書き込む(図１１(Ａ)の(12)参照)。
【０１０２】
また、バッファモジュール４０1のバッファ制御部４０Ｂは、後段の画像処理モジュール３８2が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール３８2に対して読出を要請し、これに伴い画像処理モジュール３８2の制御部３８Ｂは、バッファモジュール４０1のバッファ４０Ａから単位読出データ量の画像データを読み出し(図１１(Ａ)の(13)参照)、取得した画像データに対して画像処理エンジン３８Ａが画像処理を行うことで得られた画像データを、後段のバッファモジュール４０2のバッファ４０Ａに書き込む(図１１(Ａ)の(14)参照)。
【０１０３】
以下同様に、バッファモジュール４０2のバッファ制御部４０Ｂは、後段の画像処理モジュール３８3が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール３８3へ読出を要請し、画像処理モジュール３８3の制御部３８Ｂは、バッファモジュール４０2のバッファ４０Ａから単位読出データ量の画像データを読み出し(図１１(Ａ)の(15)参照)、取得した画像データに対して画像処理エンジン３８Ａが画像処理を行うことで得られた画像データを、後段のバッファモジュール４０3のバッファ４０Ａに書き込む(図１１(Ａ)の(16)参照)。
【０１０４】
また、バッファモジュール４０3のバッファ制御部４０Ｂは、後段の画像処理モジュール３８4が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール３８4に対して読出を要請し、これに伴い画像処理モジュール３８4の制御部３８Ｂは、バッファモジュール４０3のバッファ４０Ａから単位読出データ量の画像データを読み出し(図１１(Ａ)の(17)参照)、取得した画像データに対して画像処理エンジン３８Ａが画像処理を行うことで得られた画像データを、後段のモジュールである画像出力部２４へ出力する(図１１(Ａ)の(18)参照)。
【０１０５】
また、個々の画像処理モジュール３８の制御部３８Ｂは、後段のバッファモジュール４０のバッファ４０Ａへの画像データの書き込みを完了すると、ワークフロー管理部４６Ａへ処理完了通知を入力する。ワークフロー管理部４６Ａは、画像処理モジュール３８から処理完了通知が入力される毎に、図９(Ｃ)に示す画像処理部制御処理３を行う。通常モードに対応するワークフロー管理部４６Ａは、画像処理部制御処理３において、ステップ５２０で処理完了通知元の画像処理モジュール３８に処理要求を再度入力し、処理を終了する。このように、画像処理モジュール３８から処理完了通知が入力される毎に、処理完了通知元の画像処理モジュール３８へ処理要求を再度入力することで、処理対象の画像データに対する画像処理が、個々の画像処理モジュール３８で並列に行われる。
【０１０６】
また、画像データ供給部２２から供給される画像データが処理対象の画像データの末尾に達すると、個々の画像処理モジュール３８からワークフロー管理部４６Ａへの全体処理終了通知の入力が、前段側の画像処理モジュール３８から順次行われる。ワークフロー管理部４６Ａは、画像処理モジュール３８から全体処理終了通知が入力される毎に、図９(Ｄ)に示す画像処理部制御処理４を行う。
【０１０７】
この画像処理部制御処理４では、ステップ５３０において、全体処理終了通知入力元のモジュール(画像処理モジュール３８又は処理時間計測モジュール４８)が最後段のモジュールか否か判定する。判定が否定された場合は何ら処理を行うことなく処理を終了するが、処理対象の画像データに対して必要な画像処理が行われた画像データが画像出力部２４へ全て出力されることで、最後段のモジュールから全体処理終了通知が入力された場合にはステップ５３０の判定が肯定され、ステップ５３２（後述）を経てステップ５４２へ移行し、アプリケーション３２に対して画像処理の完了を通知し(図２のステップ１８０も参照)、画像処理部制御処理４を終了する。そして、画像処理の完了が通知されたアプリケーション３２は、利用者に対して画像処理の完了を通知する(図２のステップ１８２も参照)。
【０１０８】
次に、動作モードとして計測モードが選択されている場合の処理を説明する。動作モードとして計測モードが選択されている場合、例として図５や図１１(Ｂ)に示すように、画像処理部５０の個々の画像処理モジュール３８とワークフロー管理部４６Ａとの間に処理時間計測モジュール４８が各々設けられており、計測モードに対応するワークフロー管理部４６Ａが起動されている。
【０１０９】
ワークフロー管理部４６Ａは、前述のように、アプリケーション３２によって起動されたことをトリガとして、図９(Ａ)に示す画像処理部制御処理１を行うが、計測モードに対応するワークフロー管理部４６Ａは、この画像処理部制御処理１のステップ５００において、管理テーブルを参照し、画像処理部５０のうち最後段の画像処理モジュール３８に付加されている処理時間計測モジュール４８を認識し、認識した処理時間計測モジュール４８に処理要求を入力し(図１１(Ｂ)の(1)も参照)、画像処理部制御処理１を終了する。
【０１１０】
また、計測モードに対応するワークフロー管理部４６Ａは、バッファモジュール４０からのデータ要求の入力をトリガとして行われる画像処理部制御処理２(図９(Ｂ)参照)のステップ５１０においても、管理テーブルを参照し、データ要求入力元のバッファモジュール４０の前段の画像処理モジュール３８に付加されている処理時間計測モジュール４８を認識し、認識した処理時間計測モジュール４８に処理要求を入力し(図１１(Ｂ)の(1),(4),(7),(10)も参照)、画像処理部制御処理２を終了する。更に、計測モードに対応するワークフロー管理部４６Ａは、処理完了通知が処理時間計測モジュール４８から入力されるが(後述)、この処理完了通知の入力をトリガとして行われる画像処理部制御処理３(図９(Ｃ)参照)のステップ５２０において、処理完了通知入力元の処理時間計測モジュール４８に処理要求を入力し、画像処理部制御処理３を終了する。
【０１１１】
一方、画像処理部５０に設けられた個々の処理時間計測モジュール４８(の中継・計測部４８Ａ)は、ワークフロー管理部４６Ａから処理要求が入力される度に(図６(Ｂ)の(5)も参照)、図１０(Ｂ)に示す処理時間計測処理を行う。この処理時間計測処理では、まずステップ５６０において、ワークフロー管理部４６Ａから入力された処理要求を、自モジュールが付加されている画像処理モジュール３８へ転送する(図６(Ｂ)の(6)も参照)。これにより、自モジュールが付加されている画像処理モジュール３８の制御部３８Ｂでは、前述の画像処理モジュール制御処理(図８)が行われる。また、次のステップ５６２では、一定時間周期でカウント値を１ずつインクリメントすることで経過時間を計測する計時タイマをスタートさせることで、自モジュールが付加されている画像処理モジュール３８による画像処理の処理時間の計測を開始する。
【０１１２】
次のステップ５６４では、自モジュールが付加されている画像処理モジュール３８から処理完了が通知されたか否か判定し、判定が肯定される迄ステップ５６４を繰り返す。自モジュールが付加されている画像処理モジュール３８から処理完了が通知されると(図６(Ｂ)の(11)も参照)、ステップ５６４の判定が肯定されてステップ５６６へ移行し、先のステップ５６２でスタートさせた計時タイマからカウント値、すなわち自モジュールが付加されている画像処理モジュール３８による画像処理の処理時間の計測結果を取得する。次のステップ５６８では、ステップ５６６で取得した処理時間を、メモリ１４に記憶している処理時間の積算値に積算する。そしてステップ５７０では、画像処理モジュール３８からの処理完了通知をワークフロー管理部４６Ａへ転送し(図６(Ｂ)の(12)も参照)、処理時間計測処理を終了する。
【０１１３】
ワークフロー管理部４６Ａから処理要求が入力される度に、個々の処理時間計測モジュール４８で上記の処理時間計測処理が行われることで、図６(Ｂ)の(5),(6)及び図６(Ｂ)の(11),(12)に示すように、ワークフロー管理部４６Ａと画像処理モジュール３８との間の処理要求及び処理完了通知の送受が処理時間計測モジュール４８によって中継されると共に、ワークフロー管理部４６Ａから画像処理モジュール３８への処理要求の中継を行ってから、画像処理モジュール３８からワークフロー管理部４６Ａへの処理完了通知の中継を行う迄の時間が、画像処理モジュール３８における画像処理の処理時間として計測される。このように、画像処理の処理時間を計測するか否かに拘わらず、個々の画像処理モジュール３８における処理は同じであるので、個々の画像処理モジュール３８における画像処理の処理時間を計測するにあたり、個々の画像処理モジュール３８の構成(プログラム)を変更する必要が無くなる。
【０１１４】
また、計測モードに対応するワークフロー管理部４６Ａに対し、最後段の処理時間計測モジュール４８から全体処理終了通知が入力された場合は、前述の画像処理部制御処理４(図９(Ｄ)参照)のステップ５３０,５３２が各々肯定されてステップ５３４へ移行し、画像処理部５０を構成する全ての処理時間計測モジュール４８に対し、処理時間の計測結果の転送を各々要求する。これにより、個々の処理時間計測モジュール４８では、図１０(Ｃ)に示す処理時間通知処理が行われ、当該処理のステップ５８０において、メモリ１４に記憶されている処理時間の積算値が読み出されてワークフロー管理部４６Ａへ出力する処理が行われ、個々の処理時間計測モジュール４８による処理時間の計測結果がワークフロー管理部４６Ａに各々取得される。
【０１１５】
画像処理部制御処理４(図９(Ｄ)参照)では、次のステップ５３６において、ｉ番目の処理時間計測モジュール４８から取得した処理時間の計測結果(ｔi)から、ｉ−１番目の処理時間計測モジュール４８から取得した処理時間の計測結果(ｔi-1)を減算することを、１番目の処理時間計測モジュール４８から取得した処理時間の計測結果(ｔ1)を除く全ての処理結果に対して行う。これにより、個々の画像処理モジュール３８毎に、個々の画像処理モジュール３８における画像処理の処理時間のうち、前段のモジュールの処理終了を待機している待ち時間を除外した、正確な処理時間が算出される。
【０１１６】
次のステップ５３８では、ステップ５３６で個々の画像処理モジュール３８毎に得られた処理時間と、一連の画像処理で個々の画像処理モジュール３８に入力された画像データ(又は個々の画像処理モジュール３８から出力された画像データ)のデータ量に基づいて、画像処理の処理速度を個々の画像処理モジュール３８毎に演算する。この処理速度は、処理時間を画像データのデータ量で除すことで単位データ量当りの処理時間として算出するようにしてもよいし、画像データのデータ量を処理時間で除すことで単位時間当りの処理データ量として算出するようにしてもよい。
【０１１７】
そしてステップ５４０では、先のステップ５３６で個々の画像処理モジュール３８毎に得られた処理時間と、ステップ５３８で個々の画像処理モジュール３８毎に演算した画像処理の処理速度を、例えば表示部１６に表示させる等によって出力し、先に説明したステップ５４０を経て画像処理部制御処理４(図９(Ｄ)参照)を終了する。
【０１１８】
これにより、利用者が上記処理で出力された処理時間や処理速度を参照することで、画像処理部５０で実行される一連の画像処理のボトルネックを検知したり、実行される画像処理のアルゴリズムを改良すべき画像処理モジュール３８を特定したり、画像処理部５０を構成する画像処理モジュール３８の最適な組み合わせや最適な処理パラメータを検討したりすることが可能となる。
【０１１９】
なお、上記では画像処理部５０を構成する全ての画像処理モジュール３８に対して処理時間の計測を行う態様を説明したが、本発明はこれに限定されるものではなく、画像処理部５０を構成する画像処理モジュール３８のうちの一部の画像処理モジュール３８(例えば、利用者によって指定された画像処理を行う画像処理モジュール３８や、予め設定された画像処理モジュール３８等)に対してのみ処理時間の計測を行うようにしてもよい。
【０１２０】
また、上記では個々の画像処理モジュール３８毎に得られた画像処理の処理時間及び処理速度を、表示部１６に表示させる等によって出力する態様を説明したが、本発明はこれに限定されるものではなく、個々の画像処理モジュール３８毎に得られた画像処理の処理時間及び処理速度に基づき、個々の画像処理モジュール３８に相当するプログラム（や個々のバッファモジュール４０のバッファ制御部４０Ｂに相当するプログラム）の実行優先度や、個々の画像処理モジュール３８への各種リソース（例えばメモリ１４等の記憶リソースや、ＣＰＵ、ＭＭＸ(MultiMedia eXtention)用の演算器、ＳＳＥ (Streaming SIMD Extension)用の演算器、ＣＰＵと別に設けられたＤＳＰ(Digital Signal Processor)等の高速演算器等のプログラム実行リソース）の割当を、個々の画像処理モジュール３８毎に得られた画像処理の処理時間や処理速度に応じて変更する（例えば処理速度が比較的低い画像処理モジュール３８の実行優先度を高くしたり、各種リソースを優先的に割当てる等）等の制御を行うようにしてもよい。
【０１２１】
また、上記では画像処理部５０の個々の画像処理モジュール３８における画像処理を並列に行わせる実行形態に本発明を適用した態様を説明したが、画像処理の実行形態は上記に限定されるものではない。画像処理部５０では、例えば、単一の画像処理モジュール３８でのみ画像処理（単位処理）を繰り返し行わせ、前記画像処理モジュール３８における１面分の画像データに対する画像処理が完了し、前記画像処理モジュール３８の後段のバッファモジュール４０のバッファ４０Ａに１面分の画像データが蓄積されると、画像処理（単位処理）を繰り返し行わせる画像処理モジュール３８を、バッファ４０Ａに１面分の画像データが蓄積されたバッファモジュール４０の後段の単一の画像処理モジュール３８に切り替える制御を、画像処理部５０の前段側の画像処理モジュール３８から順に適用する実行形態（所謂面単位処理）で画像処理を行わせることも可能であるが、本発明は面単位処理で画像処理を行われるように画像処理部５０を制御する場合の処理時間の計測にも適用可能である。
【０１２２】
更に、上記では本発明に係る画像処理プログラムに相当する画像処理プログラム群３４がコンピュータ１０に予め記憶（インストール）されている態様を説明したが、本発明に係る画像処理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【符号の説明】
【０１２３】
１０  コンピュータ
１６  表示部
３８  画像処理モジュール
４０  バッファモジュール
４２  処理構築部
４４  モジュール生成部
４６  処理管理部
４６Ａ  ワークフロー管理部
４８  処理時間計測モジュール
５０  画像処理部
【図１】
2012043096.tif 000003
【図２】
2012043096.tif 000004
【図３】
2012043096.tif 000005
【図４】
2012043096.tif 000006
【図５】
2012043096.tif 000007
【図６】
2012043096.tif 000008
【図７】
2012043096.tif 000009
【図８】
2012043096.tif 000010
【図９】
2012043096.tif 000011
【図１０】
2012043096.tif 000012
【図１１】
2012043096.tif 000013