(57)【特許請求の範囲】
【請求項１】
自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と、
前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した１つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段と、
第１コンピュータ上で動作し、前記構築手段によって構築された画像処理部を前記第１コンピュータ上で動作させるための管理処理を行う第１の処理管理部と、
前記画像処理部の処理負荷の予測値が第１の閾値以上の場合、又は、前記第１コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第２の閾値以下の場合に、前記構築手段によって構築された画像処理部を第１の画像処理部と第２の画像処理部に分割し、前記第１の画像処理部を前記第１コンピュータ上で動作させるための管理処理を前記第１の処理管理部によって行わせると共に、前記第１コンピュータと通信回線を介して接続された第２コンピュータ上で前記第２の画像処理部を動作させるための管理処理を行う第２の処理管理部を前記第２コンピュータ上に生成し、前記第２コンピュータ上で前記第２の画像処理部を動作させる分割手段と、
を含む画像処理装置。
【請求項２】
前記第１の処理管理部及び前記第２の処理管理手段は、前記管理処理として、前記管理処理の対象の画像処理部を構成する個々のモジュールからの要求に応じてメモリを確保して割り当てると共に、不要となったメモリを解放するメモリ管理処理、自モジュールの前段から画像データを取得し、所定の画像処理を行って画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する処理を、前記管理処理の対象の画像処理部の個々の画像処理モジュールで繰り返させるワークフロー管理処理、及び、前記管理処理の対象の画像処理部で発生したエラーを所定の通知方法で通知するエラー管理処理の少なくとも１つを行うことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記記憶手段には前記第２の処理管理部のプログラムも記憶されており、
前記分割手段は、前記第２の処理管理部のプログラムを前記通信回線を介して前記第２コンピュータへ転送し、転送したプログラムの実行を前記第２コンピュータへ指示することで、前記第２の処理管理部を前記第２コンピュータ上に生成することを特徴とする請求項１記載の画像処理装置。
【請求項４】
自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と接続されると共に、第２コンピュータと通信回線を介して接続された第１コンピュータを、
前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した１つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段、
前記構築手段によって構築された画像処理部を前記第１コンピュータ上で動作させるための管理処理を行う第１の処理管理部、
及び、前記画像処理部の処理負荷の予測値が第１の閾値以上の場合、又は、前記第１コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第２の閾値以下の場合に、前記構築手段によって構築された画像処理部を第１の画像処理部と第２の画像処理部に分割し、前記第１の画像処理部を前記第１コンピュータ上で動作させるための管理処理を前記第１の処理管理部によって行わせると共に、前記第２コンピュータ上で前記第２の画像処理部を動作させるための管理処理を行う第２の処理管理部を前記第２コンピュータ上に生成し、前記第２コンピュータ上で前記第２の画像処理部を動作させる分割手段
として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置及びプログラムに係り、特に、画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されるように、個々のモジュールをパイプライン形態又は有向非循環グラフ形態で連結して成る画像処理部を構築して画像処理を行う画像処理装置、及び、コンピュータを前記画像処理装置として機能させるための画像処理プログラムに関する。
【背景技術】
【０００２】
入力された画像データに対して画像処理を行う画像処理装置や、画像を取扱可能なＤＴＰ（デスクトップ・パブリッシング）システム、入力された画像データが表す画像を記録材料に記録するプリントシステム等では、入力された画像データに対して拡大・縮小、回転、アフィン変換、色変換、フィルタ処理、画像合成等の各種の画像処理が行われる。これらの装置やシステムにおいて、例えば色空間や１画素当たりのビット数が異なる様々な画像データが入力されたり、画像処理の内容や手順・パラメータ等が様々に変更される場合には、実行する画像処理を柔軟に変更可能な構成が必要となる。このような要求を満たすために、特許文献１には、画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されるように、個々のモジュールをパイプライン形態又はＤＡＧ(Directed Acyclic Graph：有向非循環グラフ)形態で連結して成る画像処理部を構築して画像処理を行う技術が提案されている。
【０００３】
また、上記に関連して特許文献２には、複数の情報処理装置同士が処理データを分担して処理するシステムにおいて、処理に参加する情報処理装置同士の接続状態を変えずに連続して行う処理全体（一連処理）内において、  処理を行った各回において、各情報処理装置が分担した割合である分担率と、各情報処理装置がその分担分の処理を終えるのにかかった時間である分担時間とを記憶しておき、上記の分担時間を読み出して比較することで、前回の処理で、自分の分担する処理を終えるのに他の情報処理装置より時間がかかった情報処理装置Ａを特定し、次回の処理では、処理データのうちで情報処理装置Ａの分担率を、前回の値よりも小さい値に設定する技術が開示されている。
【特許文献１】特開２００６−３３８４９８号公報
【特許文献２】特開２００６−４３８２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の技術により画像処理部を構築して画像処理を行う場合、実現すべき画像処理の内容や入力される画像データのサイズによっては、画像処理を行うコンピュータに多大な処理負荷が掛り、当該コンピュータの能力等によっては処理時間が大幅に増大することがある。これに対して近年、通信回線を介して複数台のコンピュータを接続しコンピュータ・ネットワークを構築することが一般的となってきていることを考慮すると、上記のように処理時間が大幅に増大することが見込まれる等の場合には、特許文献２に記載の技術のように、画像処理を複数のコンピュータに分担させ、個々のコンピュータで並列に画像処理を行わせることが考えられる。
【０００５】
しかし、特許文献１に記載の技術のように、画像処理モジュール及びバッファモジュールを連結して成る画像処理部を構築して画像処理を行う場合、画像処理の実行時には、画像処理部の各モジュールの間や、画像処理部の動作を管理する処理管理部と各モジュールの間で頻繁に情報が送受される。モジュール間や処理管理部とモジュールの間の情報の送受は、画像処理部を単一のコンピュータ上で動作させる場合（画像処理部のプログラムを単一のコンピュータで実行させる場合）には、メモリ等を利用することでごく簡単な処理（例えば、情報の送信側がメモリの所定領域に情報を書き込み、情報の受信側が所定領域に書き込まれている情報を参照する等の処理）で実現できるが、画像処理部を複数個に分割し、分割した各々を互いに異なるコンピュータ上で動作させる場合（分割した各々のプログラムを互いに異なるコンピュータで実行させる場合）は、通信回線を介して情報を送受する必要があるので、通信回線を介して情報を送受するための通信処理が比較的大きなオーバヘッドとして個々のコンピュータに加わると共に、コンピュータ間で頻繁に情報の送受が行われることで、コンピュータ間のトラフィックも大幅に増大する。
【０００６】
従って、単に画像処理部を分割し、分割した各々を互いに異なるコンピュータ上で動作させたとすると処理効率が低下し、個々のコンピュータの処理能力を有効に利用することができない、という問題が生ずることになる。
【０００７】
本発明は上記事実を考慮して成されたもので、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現できる画像処理装置及び画像処理プログラムを得ることが目的である。
【課題を解決するための手段】
【０００８】
上記目的を達成するために請求項１記載の発明に係る画像処理装置は、自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と、前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した１つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段と、第１コンピュータ上で動作し、前記構築手段によって構築された画像処理部を前記第１コンピュータ上で動作させるための管理処理を行う第１の処理管理部と、前記画像処理部の処理負荷の予測値が第１の閾値以上の場合、又は、前記第１コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第２の閾値以下の場合に、前記構築手段によって構築された画像処理部を第１の画像処理部と第２の画像処理部に分割し、前記第１の画像処理部を前記第１コンピュータ上で動作させるための管理処理を前記第１の処理管理部によって行わせると共に、前記第１コンピュータと通信回線を介して接続された第２コンピュータ上で前記第２の画像処理部を動作させるための管理処理を行う第２の処理管理部を前記第２コンピュータ上に生成し、前記第２コンピュータ上で前記第２の画像処理部を動作させる分割手段と、を含んで構成されている。
【０００９】
請求項１記載の発明では、自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムが記憶手段に各々記憶されている。また、請求項１記載の発明に係る構築手段は、記憶手段に記憶されているプログラムにより、複数種の画像処理モジュールの中から選択した１つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方にバッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する。また、第１コンピュータ上で動作する第１の処理管理部は、構築手段によって構築された画像処理部を第１コンピュータ上で動作させるための管理処理を行う。従って、構築手段によって構築された画像処理部は通常、第１の処理管理部によって管理処理が行われることで、第１コンピュータ上で動作する（画像処理部のプログラムが第１コンピュータによって実行される）。
【００１０】
また、請求項１記載の発明に係る分割手段は、画像処理部の処理負荷の予測値が第１の閾値以上の場合、又は、第１コンピュータに設けられ画像処理部の動作に利用可能なプログラム実行リソースの数が第２の閾値以下の場合に、構築手段によって構築された画像処理部を第１の画像処理部と第２の画像処理部に分割し、第１の画像処理部を第１コンピュータ上で動作させるための管理処理を第１の処理管理部によって行わせると共に、第１コンピュータと通信回線を介して接続された第２コンピュータ上で第２の画像処理部を動作させるための管理処理を行う第２の処理管理部を第２コンピュータ上に生成し、第２コンピュータ上で第２の画像処理部を動作させる。このように、画像処理部の一部である第２の画像処理部を第２コンピュータ上で動作させるにあたり、第２コンピュータ上で第２の画像処理部を動作させるための管理処理を行う第２の処理管理部を第２コンピュータ上に生成することで、第２の画像処理部の個々のモジュールの間の情報の送受、及び、第２の画像処理部の個々のモジュールと処理管理部（第２の処理管理部）との間の情報の送受が、第２コンピュータに設けられたメモリ等を用いて第２コンピュータ内で行われ、上記情報の送受のために第１コンピュータと第２コンピュータとの間で通信を行う必要が無くなるので、当該通信を行うことで個々のコンピュータに加わるオーバヘッドを削減できると共に、第１コンピュータと第２コンピュータの間のトラフィックも削減できる。従って、請求項１記載の発明によれば、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現することができる。
なお、画像処理部の処理負荷の予測値が第１の閾値以上の場合に画像処理部の分割及び第２の処理管理部の生成を行うように分割手段を構成したときには、第１コンピュータに比較的大きな処理負荷が掛ることで、処理時間が増大することが予測できる場合に、画像処理部の分割等が自動的に行われることになり、画像処理部の分割等を行うか否かを選択する手間を省くことができる。また、第１コンピュータに設けられ画像処理部の動作に利用可能なプログラム実行リソースの数が第２の閾値以下の場合に画像処理部の分割及び第２の処理管理部の生成を行うように分割手段を構成したときには、画像処理部の動作に利用可能なプログラム実行リソースの数が不足していることで、処理時間が増大することが予測できる場合に、画像処理部の分割等が自動的に行われることになり、画像処理部の分割等を行うか否かを選択する手間を省くことができる。
【００１１】
なお、請求項１記載の発明において、第１の処理管理部及び第２の処理管理手段は、管理処理として、例えば請求項２に記載したように、管理処理の対象の画像処理部を構成する個々のモジュールからの要求に応じてメモリを確保して割り当てると共に、不要となったメモリを解放するメモリ管理処理、自モジュールの前段から画像データを取得し、所定の画像処理を行って画像データ又は所定の画像処理の処理結果を自モジュールの後段へ出力する処理を、管理処理の対象の画像処理部の個々の画像処理モジュールで繰り返させるワークフロー管理処理、及び、管理処理の対象の画像処理部で発生したエラーを所定の通知方法で通知するエラー管理処理の少なくとも１つを行うように構成することができる。第１の処理管理部及び第２の処理管理手段が、管理処理として上記各処理の少なくとも１つを行うことで、第１の画像処理部を第１コンピュータ上で、第２の画像処理部を第２コンピュータ上で各々動作させることができる。
【００１４】
また、請求項１記載の発明において、第２の処理管理部を第２コンピュータ上に生成することは、例えば請求項３に記載したように、第２の処理管理部のプログラムも記憶手段に記憶しておき、分割手段を、第２の処理管理部のプログラムを通信回線を介して第２コンピュータへ転送し、転送したプログラムの実行を第２コンピュータへ指示するように構成することで実現することができる。
【００１５】
請求項４記載の発明に係る画像処理プログラムは、自モジュールの前段から取得した画像データに対して互いに異なる画像処理を行い、当該画像処理を経た画像データ又は前記画像処理の処理結果を自モジュールの後段へ出力する複数種の画像処理モジュール、及び、前段のモジュールから出力される画像データをバッファに書き込ませると共に前記バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールのプログラムを各々記憶する記憶手段と接続されると共に、第２コンピュータと通信回線を介して接続された第１コンピュータを、前記記憶手段に記憶されているプログラムにより、前記複数種の画像処理モジュールの中から選択した１つ以上の画像処理モジュールの各々の前段及び後段の少なくとも一方に前記バッファモジュールを連結し、各モジュールをパイプライン形態又は有向非循環グラフ形態で連結した画像処理部を構築する構築手段、前記構築手段によって構築された画像処理部を前記第１コンピュータ上で動作させるための管理処理を行う第１の処理管理部、及び、前記画像処理部の処理負荷の予測値が第１の閾値以上の場合、又は、前記第１コンピュータに設けられ前記画像処理部の動作に利用可能なプログラム実行リソースの数が第２の閾値以下の場合に、前記構築手段によって構築された画像処理部を第１の画像処理部と第２の画像処理部に分割し、前記第１の画像処理部を前記第１コンピュータ上で動作させるための管理処理を前記第１の処理管理部によって行わせると共に、前記第２コンピュータ上で前記第２の画像処理部を動作させるための管理処理を行う第２の処理管理部を前記第２コンピュータ上に生成し、前記第２コンピュータ上で前記第２の画像処理部を動作させる分割手段として機能させる。
【００１６】
請求項４記載の発明に係る画像処理プログラムは、上記記憶手段と接続されると共に、第２コンピュータと通信回線を介して接続された第１コンピュータを、上記の構築手段、第１の処理管理部及び分割手段として機能させるためのプログラムであるので、上記の第１コンピュータが請求項４記載の発明に係る画像処理プログラムを実行することで、上記の第１コンピュータが請求項１に記載の画像処理装置として機能することになり、請求項１記載の発明と同様に、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現することができる。
【発明の効果】
【００１７】
以上説明したように本発明は、所定の条件を満たした場合に、構築手段によって構築された画像処理部を第１の画像処理部と第２の画像処理部に分割し、第１の画像処理部を第１コンピュータ上で動作させるための管理処理を第１の処理管理部によって行わせると共に、第１コンピュータと通信回線を介して接続された第２コンピュータ上で第２の画像処理部を動作させるための管理処理を行う第２の処理管理部を第２コンピュータ上に生成し、第２コンピュータ上で第２の画像処理部を動作させるようにしたので、画像処理を複数のコンピュータに分担させる場合の処理効率の向上を実現できる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。図１には、本発明に係る画像処理装置として機能することが可能なコンピュータ１０が示されている。なお、このコンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの機能を兼ね備えた複合機、スキャナ、写真プリンタ等のように内部で画像処理を行う必要のある任意の画像取扱機器に組み込まれていてもよいし、パーソナル・コンピュータ（ＰＣ）等の独立したコンピュータであってもよく、更にＰＤＡ（Personal Digital Assistant）や携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
【００１９】
コンピュータ１０はＣＰＵ１２、ＤＲＡＭ又はＳＲＡＭ等から成るメモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２及び画像出力部２４を備えており、これらはバス２６を介して互いに接続されている。コンピュータ１０が上述したような画像取扱機器に組み込まれている場合、表示部１６や操作部１８としては、画像取扱機器に設けられたＬＣＤ等から成る表示パネルやテンキー等を適用することができる。また、コンピュータ１０が独立したコンピュータである場合、表示部１６や操作部１８としては、当該コンピュータに接続されたディスプレイやキーボード、マウス等を適用することができる。また、記憶部２０としてはＨＤＤ(Hard Disk Drive)が好適であるが、これに代えてフラッシュメモリ等の他の不揮発性記憶手段を用いることも可能である。
【００２０】
また、画像データ供給部２２は処理対象の画像データを供給できるものであればよく、例えば紙や写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部、通信回線を介して外部から画像データを受信する受信部、画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）等を適用することができる。また、画像出力部２４は画像処理を経た画像データ又は該画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙や感光材料等の記録材料に記録する画像記録部、画像データが表す画像をディスプレイ等に表示する表示部、画像データを記録メディアに書き込む書込装置、画像データを通信回線を介して送信する送信部を適用することができる。また、画像出力部２４は画像処理を経た画像データを単に記憶する画像記憶部（メモリ１４又は記憶部２０）であっても構わない。
【００２１】
また、通信制御部２５は通信回線を介してコンピュータ・ネットワーク２６に接続されており、コンピュータ・ネットワーク２６には、サーバ・コンピュータ２７を含む複数台のコンピュータが各々接続されている（図１ではサーバ・コンピュータ２７以外のコンピュータの図示を省略している）。通信制御部２５はコンピュータ・ネットワーク２６経由での他のコンピュータとの通信を司る。また、サーバ・コンピュータ２７はＣＰＵ２７Ａ、メモリ２７Ｂ、ＨＤＤ２７Ｃ及び通信制御部２７Ｄを備えており、通信制御部２７Ｄが通信回線を介してコンピュータ・ネットワーク２６に接続されている。なお、コンピュータ１０は本発明に係る第１コンピュータに、サーバ・コンピュータ２７は本発明に係る第２コンピュータに各々対応している。
【００２２】
記憶部２０は本発明に係る記憶手段に対応しており、この記憶部２０には、図１に示すように、ＣＰＵ１２によって実行される各種のプログラムとして、メモリ１４等のリソースの管理やＣＰＵ１２によるプログラムの実行の管理、コンピュータ１０と外部との通信等を司るオペレーティングシステム３０のプログラム、コンピュータ１０を本発明に係る画像処理装置として機能させるための画像処理プログラム群３４、ＣＰＵ１２が上記画像処理プログラム群を実行することで実現される画像処理装置に対して所望の画像処理を行わせる各種のアプリケーション３２のプログラム（図１ではアプリケーションプログラム群３２と表記）が各々記憶されている。
【００２３】
画像処理プログラム群３４は、前述した各種の画像取扱機器や携帯機器を開発する際の開発負荷を軽減したり、ＰＣ等で利用可能な画像処理プログラムを開発する際の開発負荷を軽減することを目的として、各種の画像取扱機器や携帯機器、ＰＣ等の各種機器（プラットフォーム）で共通に使用可能に開発されたプログラムであり、本発明に係る画像処理プログラムに対応している。画像処理プログラム群３４によって実現される画像処理装置は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理部を構築し、アプリケーション３２からの実行指示に従い、前記画像処理部によって画像処理を行うが（詳細は後述）、画像処理プログラム群３４は、所望の画像処理を行う画像処理部（所望の構成の画像処理部）の構築を指示したり、構築された画像処理部による画像処理の実行を指示するためのインタフェースをアプリケーション３２に提供している。このため、内部で画像処理を行う必要のある任意の機器を新規開発する等の場合にも、前記画像処理を行うプログラムの開発に関しては、当該機器で必要とされる画像処理を上記のインタフェースを利用して画像処理プログラム群３４に行わせるアプリケーション３２を開発するのみで済み、実際に画像処理を行うプログラムを新たに開発する必要が無くなるので、開発負荷を軽減することができる。
【００２４】
また、画像処理プログラム群３４によって実現される画像処理装置は、前述のように、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理部を構築し、構築した画像処理部によって画像処理を行うので、例えば画像処理対象の画像データの色空間や１画素当たりのビット数が不定であったり、実行すべき画像処理の内容や手順・パラメータ等が不定である場合にも、アプリケーション３２が画像処理部の再構築を指示することで、画像処理装置（画像処理部）によって実行される画像処理を、処理対象の画像データ等に応じて柔軟に変更することができる。
【００２５】
以下、画像処理プログラム群３４について説明する。図１に示すように、画像処理プログラム群３４はモジュールライブラリ３６と、処理構築部４２のプログラムと、処理管理部４６のプログラムに大別される。詳細は後述するが、本実施形態に係る処理構築部４２は、アプリケーションからの指示により、例として図２に示すように、予め定められた画像処理を行う１つ以上の画像処理モジュール３８と、個々の画像処理モジュール３８の前段及び後段の少なくとも一方に配置され画像データを記憶するためのバッファを備えたバッファモジュール４０と、がパイプライン形態又はＤＡＧ(Directed Acyclic Graph：有向非循環グラフ)形態で連結されて成る画像処理部５０を構築する。画像処理部５０を構成する個々の画像処理モジュールの実体はＣＰＵ１２によって実行されＣＰＵ１２で所定の画像処理を行わせるための第１プログラム、又は、ＣＰＵ１２によって実行されＣＰＵ１２により図１に図示されていない外部の画像処理装置（例えば専用画像処理ボード等）に対する処理の実行を指示するための第２プログラムであり、上述したモジュールライブラリ３６には、予め定められた互いに異なる画像処理（例えば入力処理やフィルタ処理、色変換処理、拡大・縮小処理、スキュー角検知処理、画像回転処理、画像合成処理、出力処理等）を行う複数種の画像処理モジュール３８のプログラムが各々登録されている。以下では、説明を簡単にするために、画像処理部５０を構成する個々の画像処理モジュールの実体が上記の第１プログラムであるものとして説明する。
【００２６】
個々の画像処理モジュール３８は、例として図３(Ａ)にも示すように、画像データに対する画像処理を所定の単位処理データ量ずつ行う画像処理エンジン３８Ａと、画像処理モジュール３８の前段及び後段のモジュールとの画像データの入出力及び画像処理エンジン３８Ａの制御を行う制御部３８Ｂから構成されている。個々の画像処理モジュール３８における単位処理データ量は、画像の１ライン分、画像の複数ライン分、画像の１画素分、画像１面分等を含む任意のバイト数の中から、画像処理エンジン３８Ａが行う画像処理の種類等に応じて予め選択・設定されており、例えば色変換処理やフィルタ処理を行う画像処理モジュール３８では単位処理データ量が１画素分とされ、拡大・縮小処理を行う画像処理モジュール３８では単位処理データ量が画像の１ライン分又は画像の複数ライン分とされ、画像回転処理を行う画像処理モジュール３８では単位処理データ量が画像１面分とされ、画像圧縮伸長処理を行う画像処理モジュール３８では単位処理データ量が実行環境に依存するＮバイトとされている。
【００２７】
また、モジュールライブラリ３６には、画像処理エンジン３８Ａが実行する画像処理の種類が同一でかつ実行する画像処理の内容が異なる画像処理モジュール３８も登録されている（図１では、この種の画像処理モジュールを「モジュール１」「モジュール２」と表記して示している）。例えば拡大・縮小処理を行う画像処理モジュール３８については、入力された画像データを１画素おきに間引くことで50％に縮小する縮小処理を行う画像処理モジュール３８、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８等の複数の画像処理モジュール３８が各々用意されている。また、例えば色変換処理を行う画像処理モジュール３８については、ＲＧＢ色空間をＣＭＹ色空間へ変換する画像処理モジュール３８やその逆へ変換する画像処理モジュール３８、Ｌ*ａ*ｂ*色空間等の他の色空間変換を行う画像処理モジュール３８が各々用意されている。
【００２８】
また、画像処理モジュール３８の制御部３８Ｂは、画像処理エンジン３８Ａが単位処理データ量ずつ処理するために必要な画像データを入力するために、自モジュールの前段のモジュール（例えばバッファモジュール４０）から画像データを単位読出データ量ずつ取得し、画像処理エンジン３８Ａから出力される画像データを単位書込データ量ずつ後段のモジュール（例えばバッファモジュール４０）へ出力する（画像処理エンジン３８Ａで圧縮等のデータ量の増減を伴う画像処理が行われなければ単位書込データ量＝単位処理データ量となる）か、画像処理エンジン３８Ａによる画像処理の結果を自モジュールの外部へ出力する（例えば画像処理エンジン３８Ａがスキュー角検知処理等の画像解析処理を行う場合、画像データに代えてスキュー角検知結果等の画像解析処理結果が出力されることがある）処理を行うが、モジュールライブラリ３６には、画像処理エンジン３８Ａが実行する画像処理の種類及び内容が同一で、上記の単位処理データ量や単位読出データ量、単位書込データ量が異なる画像処理モジュール３８も登録されている。例えば画像回転処理を行う画像処理モジュール３８における単位処理データ量についても、前述した画像１面分に限られるものではなく、同じ画像回転処理を行いかつ単位処理データ量が互いに異なる（例えば画像の１ライン分や複数ライン分等の）複数の画像処理モジュール３８がモジュールライブラリ３６に含まれていても良い。
【００２９】
また、モジュールライブラリ３６に登録されている個々の画像処理モジュール３８のプログラムは、画像処理エンジン３８Ａに相当するプログラムと制御部３８Ｂに相当するプログラムから構成されているが、制御部３８Ｂに相当するプログラムは部品化されており、個々の画像処理モジュール３８のうち単位読出データ量及び単位書込データ量が同一の画像処理モジュール３８は、画像処理エンジン３８Ａで実行される画像処理の種類や内容に拘わらず、制御部３８Ｂに相当するプログラムが共通化されている（制御部３８Ｂに相当するプログラムとして同一のプログラムが用いられている）。これにより、画像処理モジュール３８のプログラムの開発にあたっての開発負荷が軽減される。
【００３０】
なお、画像処理モジュール３８の中には、入力される画像の属性が未知の状態では単位読出データ量及び単位書込データ量が確定しておらず、入力画像データの属性を取得し、取得した属性を所定の演算式に代入して演算することで単位読出データ量や単位書込データ量が確定するモジュールが存在しているが、この種の画像処理モジュール３８については、単位読出データ量と単位書込データ量が互いに同一の演算式を用いて導出される画像処理モジュール３８について、制御部３８Ｂに相当するプログラムを共通化するようにすればよい。また、本実施形態に係る画像処理プログラム群３４は、前述のように各種機器に実装可能であるが、画像処理プログラム群３４のうちモジュールライブラリ３６に登録する画像処理モジュール３８の数や種類等については、画像処理プログラム群３４を実装する各種機器で必要とされる画像処理に応じて、適宜追加・削除・入替等が可能であることは言うまでもない。
【００３１】
また、画像処理部５０を構成する個々のバッファモジュール４０は、例として図３(Ｂ)にも示すように、バッファ４０Ａと、バッファモジュール４０の前段及び後段のモジュールとの画像データの入出力及びバッファ４０Ａの管理を行うバッファ制御部４０Ｂから構成されている。なお、バッファ４０Ａはコンピュータ１０に設けられたメモリ１４からオペレーティングシステム３０及びリソース管理部４６Ｂを通じて確保されたメモリ領域で構成される。個々のバッファモジュール４０のバッファ制御部４０Ｂもその実体はＣＰＵ１２によって実行されるプログラムであり、モジュールライブラリ３６にはバッファ制御部４０Ｂのプログラムも登録されている（図１ではバッファ制御部４０Ｂのプログラムを「バッファモジュール」と表記して示している）。
【００３２】
また本実施形態では、バッファモジュール４０のバッファ４０Ａに対して複数の画像処理モジュール３８が同時にアクセスする可能性があることを考慮し、バッファ４０Ａへのアクセスに対して排他制御を行う、排他制御機能付きのバッファモジュール４０と、排他制御機能無しのバッファモジュール４０が各々用意され、モジュールライブラリ３６にはそれぞれのバッファモジュール４０のプログラムが各々登録されている。
【００３３】
また、アプリケーション３２からの指示に従って画像処理部５０を構築する処理構築部４２は、図１に示すように複数種のモジュール生成部４４から構成されている。複数種のモジュール生成部４４は互いに異なる画像処理に対応しており、アプリケーション３２によって起動されることで、対応する画像処理を実現するための画像処理モジュール３８及びバッファモジュール４０から成るモジュール群を生成する処理を行う。なお、図１ではモジュール生成部４４の一例として、モジュールライブラリ３６に登録されている個々の画像処理モジュール３８が実行する画像処理の種類に対応するモジュール生成部４４を示しているが、個々のモジュール生成部４４に対応する画像処理は、複数種の画像処理モジュール３８によって実現される画像処理（例えばスキュー角検知処理と画像回転処理から成るスキュー補正処理）であってもよい。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション３２は複数種の画像処理の何れかに対応するモジュール生成部４４を順次起動する。これにより、アプリケーション３２によって順次起動されたモジュール生成部４４により、必要とされる画像処理を行う画像処理部５０が構築されることになる。
【００３４】
また、本実施形態に係る記憶部２０には、処理管理部４６のプログラムとして、処理管理部４６をコンピュータ１０（クライアント）上で動作させるためのクライアント用の処理管理部４６のプログラムと、処理管理部４６をサーバ・コンピュータ２７上で動作させるためのサーバ用の処理管理部４６のプログラムが各々記憶されている。なお、サーバ用の処理管理部４６のプログラムは、後述するように、画像処理部５０を分割しその一部をサーバ・コンピュータ２７上で動作させる際に、処理管理部４６をコンピュータ１０上及びサーバ・コンピュータ２７上で各々動作させるために用いられる。図１に示すように、個々の処理管理部４６は、画像処理部５０における画像処理の実行を制御するワークフロー管理部４６Ａ、画像処理部５０の各モジュールによるメモリ１４や各種のファイル等のコンピュータ１０又はサーバ・コンピュータ２７のリソースの使用を管理するリソース管理部４６Ｂ、及び、画像処理部５０で発生したエラーを管理するエラー管理部４６Ｃを含んで構成されている。
【００３５】
次に本実施形態の作用を説明する。画像処理プログラム群３４が実装されている機器において、何らかの画像処理を行う必要のある状況になると、この状況が特定のアプリケーション３２によって検知される。なお、画像処理を行う必要のある状況としては、例えば画像データ供給部２２としての画像読取部によって画像を読み取り、画像出力部２４としての画像記録部により記録材料に画像として記録するか、画像出力部２４としての表示部に画像として表示させるか、画像出力部２４としての書込装置により画像データを記録メディアに書き込むか、画像出力部２４としての送信部により画像データを送信するか、画像出力部２４としての画像記憶部に記憶させるジョブの実行がユーザによって指示された場合、或いは、画像データ供給部２２としての受信部によって受信されるか、画像データ供給部２２としての画像記憶部に記憶されている画像データに対して、上記の記録材料への記録、表示部への表示、記録メディアへの書き込み、送信、画像記憶部への記憶の何れかを行うジョブの実行がユーザによって指示された場合が挙げられる。また、画像処理を行う必要のある状況は上記に限られるものではなく、例えばユーザからの指示に応じてアプリケーション３２が実行可能な処理の名称等を表示部１６に一覧表示している状態で、実行対象の処理がユーザによって選択された等の場合であってもよい。
【００３６】
上記のように、何らかの画像処理を行う必要のある状況になったことを検知すると、アプリケーション３２は、まずクライアント用の処理管理部４６のプログラムを実行するスレッド（プロセス又はオブジェクトでもよい：以下同様）を生成することで、コンピュータ１０上で動作する処理管理部４６のワークフロー管理部４６Ａ、リソース管理部４６Ｂ及びエラー管理部４６Ｃを各々生成する。次に、アプリケーション３２は画像処理対象の画像データを供給する画像データ供給部２２の種別を認識し、認識した種別がバッファ領域（メモリ１４の一部領域）であった場合には、画像データ供給部２２として指定されたバッファ領域を既に確保されたバッファ４０Ａとしてバッファ制御部４０Ｂに認識させるパラメータを設定し、バッファ制御部４０Ｂのプログラムを実行するスレッドを生成する（バッファ制御部４０Ｂを生成する）ことで、指定されたバッファ領域を含むバッファモジュール４０（画像データ供給部２２として機能するバッファモジュール４０）を生成する。
【００３７】
続いてアプリケーション３２は、上記と同様に、画像処理を行った画像データの出力先としての画像出力部２４の種別を認識し、認識した種別がバッファ領域（メモリ１４の一部領域）であった場合は、画像出力部２４として指定されたバッファ領域を含むバッファモジュール４０を上記と同様にして生成する。ここで生成されたバッファモジュール４０は画像出力部２４として機能する。また、アプリケーション３２は実行すべき画像処理の内容を認識し、実行すべき画像処理を、個々のモジュール生成部４４に対応するレベルの画像処理の組み合わせに分解し、実行すべき画像処理を実現するために必要な画像処理の種類及び個々の画像処理の実行順序を判定する。なお、この判定は、例えば上記の画像処理の種類及び個々の画像処理の実行順序を、ユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、アプリケーション３２は、実行が指示されたジョブの種類に対応する情報を読み出すことによって実現することができる。
【００３８】
そしてアプリケーション３２は、上記で判定した画像処理の種類及び実行順序に基づいて、特定の画像処理に対応するモジュール生成部４４を起動（モジュール生成部４４のプログラムを実行するスレッドを生成）した後に、起動したモジュール生成部４４に対し、当該モジュール生成部４４によるモジュール群の生成に必要な情報として、前記モジュール群に画像データを入力する入力モジュールを識別するための入力モジュール識別情報、前記モジュール群が画像データを出力する出力モジュールを識別するための出力モジュール識別情報、前記モジュール群に入力される入力画像データの属性を表す入力画像属性情報、実行すべき画像処理のパラメータを通知して対応するモジュール群の生成を指示する。また、必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション３２は、指示したモジュール生成部４４からモジュール群の生成完了が通知されると、個々の画像処理に対応する他のモジュール生成部４４を起動してモジュール群の生成に必要な情報を通知する処理を個々の画像処理の実行順序の昇順に繰り返す。
【００３９】
なお、上記の入力モジュールは、実行順序が１番目のモジュール群については画像データ供給部２２が入力モジュールとなり、実行順序が２番目以降のモジュール群については前段のモジュール群の最終モジュール（通常はバッファモジュール４０）が入力モジュールとなる。また、上記の出力モジュールについては、実行順序が最後のモジュール群では画像出力部２４が出力モジュールとなるので、画像出力部２４が出力モジュールとして指定されるが、その他のモジュール群では出力モジュールは未確定のためにアプリケーション３２による指定は行われず、必要な場合はモジュール生成部４４によって生成・設定される。また、入力画像属性や画像処理のパラメータについては、例えばユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、実行が指示されたジョブの種類に対応する情報を読み出すことでアプリケーション３２が認識するようにしてもよいし、ユーザに指定させるようにしてもよい。
【００４０】
一方、モジュール生成部４４は、アプリケーション３２によって起動されるとモジュール生成処理を行う。モジュール生成処理では、まず生成対象の画像処理モジュール３８に入力される入力画像データの属性を表す入力画像属性情報を取得する。なお、入力画像データの属性を取得する処理は、生成対象の画像処理モジュール３８の前段にバッファモジュール４０が存在している場合、当該バッファモジュール４０に画像データの書き込みを行う更に前段の画像処理モジュール３８から出力画像データの属性を取得することによって実現できる。
【００４１】
そして、取得した情報が表す入力画像データの属性に基づいて、生成対象の画像処理モジュール３８の生成が必要か否か判定する。例えばモジュール生成部４４が色変換処理を行うモジュール群を生成するモジュール生成部であり、画像処理のパラメータにより出力画像データの色空間としてＣＭＹ色空間がアプリケーション３２から指定された場合、取得した入力画像属性情報に基づいて入力画像データがＲＧＢ色空間のデータであることが判明したときには、色空間処理を行う画像処理モジュール３８としてＲＧＢ→ＣＭＹの色空間変換を行う画像処理モジュール３８を生成する必要があるが、入力画像データがＣＭＹ色空間のデータであったときには、入力画像データの属性と出力画像データの属性が色空間に関して一致しているので、色空間変換処理を行う画像処理モジュール３８は生成不要と判断する。
【００４２】
生成対象の画像処理モジュール３８の生成が必要と判断した場合には、生成対象の画像処理モジュール３８の後段にバッファモジュール４０が必要が否かを判定する。この判定は、画像処理モジュールの後段が出力モジュール（画像出力部２４）である場合（例えば図２(Ａ)〜(Ｃ)に示す画像処理部５０における最後段の画像処理モジュール３８を参照）や、例として図２(Ｂ)に示す画像処理部５０においてスキュー角検知処理を行う画像処理モジュール３８のように、画像処理モジュールが、画像データに対して解析等の画像処理を行いその結果を他の画像処理モジュール３８へ出力するモジュールである場合は否定されるが、上記以外の場合は判定が肯定されてバッファ制御部４０Ｂを起動することで、画像処理モジュール３８の後段に連結するバッファモジュール４０を生成する。
【００４３】
続いて、前段のモジュール（例えばバッファモジュール４０）の情報、後段のバッファモジュール４０の情報（後段にバッファモジュール４０を生成した画像処理モジュール３８のみ）、画像処理モジュール３８に入力される入力画像データの属性、処理パラメータを与えて、モジュールライブラリ３６に登録されており、画像処理モジュール３８として利用可能な複数の候補モジュールの中から、先に取得した入力画像データの属性、及び、画像処理モジュール３８で実行すべき処理パラメータに合致する画像処理モジュール３８を選択・生成する。
【００４４】
例えばモジュール生成部４４が色変換処理を行うモジュール群を生成するモジュール生成部であり、処理パラメータにより出力画像データの色空間としてＣＭＹ色空間が指定され、更に入力画像データがＲＧＢ色空間のデータであった場合には、モジュールライブラリ３６に登録されている各種の色空間処理を行う複数種の画像処理モジュール３８の中から、ＲＧＢ→ＣＭＹの色空間変換を行う画像処理モジュール３８が選択・生成される。また、画像処理モジュールが拡大・縮小処理を行う画像処理モジュール３８であり、指定された拡大縮小率が50％以外であれば、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８が選択・生成され、指定された拡大縮小率が50％であれば、拡大縮小率50％に特化した拡大縮小処理、すなわち入力された画像データを１画素おきに間引くことで50％に縮小する縮小処理を行う画像処理モジュール３８が選択・生成される。
【００４５】
なお、画像処理モジュール３８の選択は上記に限られるものではなく、例えば画像処理エンジン３８Ａによる画像処理における単位処理データ量が異なる画像処理モジュール３８をモジュールライブラリ３６に複数登録しておき、画像処理部５０へ割当可能なメモリ領域のサイズ等の動作環境に応じて、適切な単位処理データ量の画像処理モジュール３８を選択する（例えば上記サイズが小さくなるに従って単位処理データ量の小さい画像処理モジュール３８を選択する等）ようにしてもよいし、アプリケーション３２或いはユーザに選択させるようにしてもよい。また、生成された画像処理モジュール３８及びバッファモジュール４０には、自モジュールの前段及び後段が何れのモジュールかを識別する識別情報が設定される。
【００４６】
画像処理モジュール３８の生成が完了すると、後段のバッファモジュール４０のＩＤと生成した画像処理モジュール３８のＩＤの組をワークフロー管理部４６Ａに通知する。このＩＤは、個々のモジュールを一意に判別できる情報であればよく、例えば個々のモジュールの生成順に付与した番号や、バッファモジュール４０や画像処理モジュール３８のオブジェクトのメモリ上でのアドレス等でも良い。またモジュール生成部４４が、複数種の画像処理モジュール３８によって実現される画像処理（例えばスキュー角検知処理を行う画像処理モジュール３８と画像回転処理を行う画像処理モジュール３８によって実現されるスキュー補正処理）を行うモジュール群を生成する場合には、上記処理が繰り返されて２個以上の画像処理モジュール３８を含むモジュール群が生成される。アプリケーション３２によって順次起動された個々のモジュール生成部４４により、以上のモジュール生成処理が順次行われることで、例として図２(Ａ)〜(Ｃ)に示すように、必要とされる画像処理を行う画像処理部５０が構築される。なお、上記処理は本発明に係る構築手段に対応している。
【００４７】
次に、画像処理部５０を構築した後に処理構築部４２で行われる画像処理部分割処理の説明に先立ち、上記の処理で構築された画像処理部５０で画像処理が行われる際の個々の画像処理モジュール３８及びバッファモジュール４０の動作を順に説明する。
【００４８】
画像処理の実行時には、ワークフロー管理部４６Ａから個々の画像処理モジュール３８に処理要求が入力される(図３(Ａ)の(1)も参照)。画像処理モジュール３８は、処理要求が入力されると、予め設定された識別情報で規定されている自モジュールの前段のモジュール（通常はバッファモジュール４０）に対して画像データを要求する(図３(Ａ)の(2)も参照)。読出可能な有効データがバッファモジュール４０のバッファ４０Ａに単位読出データ量以上記憶されていれば、バッファモジュール４０から読出領域の先頭アドレスが通知されて画像データの読出が要請される。これにより、画像処理モジュール３８は先頭アドレスが通知された前段のモジュールの読出領域から単位読出データ量の画像データを読み出す(図３(Ａ)の(3)も参照）。
【００４９】
次に、画像処理モジュール３８は自モジュールの後段のモジュールに対してデータ出力用の領域を要求し、データ出力領域（後段のモジュールがバッファモジュール４０であれば当該バッファモジュール４０から先頭アドレスが通知された書込領域）が取得できたら(図３(Ａ)の(4)も参照)、先に前段のモジュールから取得した画像データ、後段のモジュールから取得したデータ出力領域（の先頭アドレス）を画像処理エンジン３８Ａに入力し、入力したデータに対して所定の画像処理を行わせる(図３(Ａ)の(5)も参照)と共に、処理後のデータをデータ出力領域に書き込ませる(図３(Ａ)の(6)も参照)。そして、画像処理エンジン３８Ａへの単位読出データ量のデータの入力が完了し、画像処理エンジン３８Ａから出力されたデータがデータ出力領域に全て書き込まれると、出力完了を後段のモジュールに通知すると共に、先に入力された処理要求に対応する処理を完了したことをワークフロー管理部４６Ａへ通知する(図３(Ａ)の(7)も参照)。個々の画像処理モジュール３８で上記処理が繰り返されることで、画像処理部５０における画像処理が実現される。
【００５０】
また、バッファモジュール４０のバッファ制御部４０Ｂは、予め設定された識別情報で規定されている自モジュールの後段のモジュール（通常は画像処理モジュール３８）から画像データが要求されると(図３(Ｂ)の(1)も参照)、要求された画像データがバッファ４０Ａに記憶されているか否かチェックする(図３(Ｂ)の(2)も参照)が、読出可能な有効データがバッファ４０Ａに単位読出データ量以上記憶されていない場合は、ワークフロー管理部４６Ａに対して画像データを要求する(図３(Ｂ)の(3)も参照)。この場合、ワークフロー管理部４６Ａは、画像データ要求元のバッファモジュール４０の前段に位置しているモジュール（通常は画像処理モジュール３８）を認識し、認識したモジュールに処理要求を入力する(図３(Ｂ)の(4)も参照)。
【００５１】
そして、図３(Ａ)に示したシーケンスを経て、前段の画像処理モジュール３８によってバッファ４０Ａに画像データが書き込まれ(図３(Ｂ)の(5),(6)も参照)、バッファ４０Ａから読出可能な有効データが単位読出データ量以上になると、バッファモジュール４０から後段の画像処理モジュール３８に対して読出領域の先頭アドレスが通知され、後段の画像処理モジュール３８によってバッファモジュール４０のバッファ４０Ａから画像データが読み出されることになる(図３(Ｂ)の(7)も参照)。
【００５２】
一方、処理構築部４２は、前述のようにして画像処理部５０を構築すると、構築した画像処理部５０に対して図４に示す画像処理部分割処理を行う。この画像処理部分割処理は本発明に係る分割手段に対応しており、まずステップ１００では、画像処理部５０を何個のグループに分割するかを表すグループ数Ｎを決定する。グループ数Ｎとしては、例えばコンピュータ１０に設けられている演算リソース（例えばＣＰＵコアやＤＳＰ(Digital Signal Processor)等のように演算を並列に実行可能なリソース)の数を適用することができる。演算リソースの数はＯＳが提供する関数等を用いて取得することができる。また、グループ数Ｎとして、コンピュータ１０に設けられている演算リソースの数を単に用いることに代えて、演算リソースの数を取得した後に、個々の演算リソースにおける使用率を更に取得し、使用率が閾値以下の演算リソースの数をグループ数Ｎとして用いるようにしてもよい。また、グループ数Ｎ＝１であった場合には、次のステップ１０２以降の処理をスキップし画像処理部分割処理を終了することが望ましい。
【００５３】
次のステップ１０２では、ステップ１００で決定したグループ数Ｎに基づき、先に構築した画像処理部５０をＮ個のグループへ分割する。画像処理部５０の分割には幾つかの方法がある。第１の分割方法は、画像処理部５０における画像処理モジュールの数Ｍとして画像処理部５０における画像処理モジュール３８の総数を用い、上記の画像処理モジュールの数Ｍをグループ数Ｎで除算し、剰余が生ずる場合は商に対して切り捨て等の端数処理を行うことで、１グループ当りの画像処理モジュール３８の数Ｌを求め、画像処理部５０を先頭から順にスキャンし、画像処理モジュール３８がＬ個出現する毎にＬ個目の画像処理モジュール３８までを１個のグループとしてグループ化すると共に、画像処理モジュール３８の数の計数値を０に戻すことで、画像処理部５０をＮ個のグループに分割する方法である。なお、画像処理部５０を構成する画像処理モジュール３８のうち、１面分の画像データが揃わないと画像処理を開始できない画像処理モジュール３８（画像の回転等の画像処理を行う画像処理モジュール３８）の数を認識し、画像処理モジュールの数Ｍとして、画像処理部５０における画像処理モジュール３８の総数から上記で認識した画像処理モジュール３８の数を減算した値を用いてもよい。第１の分割方法は処理が簡単になるという利点を有する。
【００５４】
また、第２の分割方法は、各グループの処理負荷（ここでは処理負荷の一例としてＣＰＵ処理時間を用いる）が均等となるように分割する方法である。すなわち、まず画像処理部５０を構成する個々の画像処理モジュール３８の処理負荷（ＣＰＵ処理時間）を各々予測する。ここで、各種の画像処理モジュール３８のうち、画像サイズや処理パラメータの変化に拘わらずＣＰＵ処理時間が大きく変化しない画像処理を行う画像処理モジュール３８については、予め固定的に設定したＣＰＵ処理時間を取得することで、ＣＰＵ処理時間を予測することができる。また、画像サイズや処理パラメータの変化に対してＣＰＵ処理時間が大きく変化する画像処理を行う画像処理モジュール３８については、画像サイズや処理パラメータの変化とＣＰＵ処理時間との関係を予測式等の形態で予め設定しておき、当該予測式を取得し画像サイズや処理パラメータに応じたＣＰＵ処理時間を演算することで、ＣＰＵ処理時間の予測を行うことができる。
【００５５】
次に、画像処理部５０を構成する個々の画像処理モジュール３８のＣＰＵ処理時間の総和を演算し、演算したＣＰＵ処理時間の総和をグループ数Ｎで除算し、演算結果（１グループ当りのＣＰＵ処理時間の平均値）を閾値Ｔｈに設定する。そして、画像処理モジュール３８のＣＰＵ処理時間を画像処理部５０の先頭から順に積算しながらＣＰＵ処理時間の積算値を閾値Ｔｈと比較し、ＣＰＵ処理時間の積算値が閾値Ｔｈ以上となる毎に、積算値が閾値Ｔｈ以上となった画像処理モジュール３８までを１個のグループとしてグループ化すると共に、ＣＰＵ処理時間の積算値を０に戻すことで、画像処理部５０をＮ個のグループに分割する。第２の分割方法は、第１の分割方法と比較して処理は若干複雑になるものの、各グループの処理負荷をなるべく均等にすることができるので、より好ましい。
【００５６】
なお、画像処理部５０をＮ個のグループに分割する際の分割方法は上記方法に限られるものではなく、他の分割方法（例えば第２の分割方法において、ｊ個目の画像処理モジュールのＣＰＵ処理時間を積算値に加算した段階で積算値が閾値Ｔｈ以上となった場合に、当該積算値と閾値Ｔｈの偏差Ａを、ｊ個目の画像処理モジュールのＣＰＵ処理時間を加算する前の積算値と閾値Ｔｈの偏差Ｂと比較し、偏差Ａが小さければｊ個目の画像処理モジュールの後段をグループの境界とし、偏差Ｂが小さければｊ個目の画像処理モジュールの前段をグループの境界とする等の分割方法）を用いてもよい。
【００５７】
以上のようにして画像処理部５０をＮ個のグループに分割すると、次のステップ１０４では、各グループの境界に位置しているバッファモジュール４０を排他制御機能付きのバッファモジュール４０に置き換える。これにより、当初構築された画像処理部５０が、例として図５(Ａ)に示すように、画像処理モジュールＭ1,Ｍ2,Ｍ3,Ｍ6とバッファモジュールＢ1,Ｂ2,Ｂ3が交互かつ直列に連結されると共に、バッファモジュールＢ1と画像処理モジュールＭ6の間に、画像処理モジュールＭ4,Ｍ5とバッファモジュールＢ4,Ｂ5が交互かつ直列に連結された部分画像処理部が連結された構成であり、当該構成の画像処理部５０が、上述した画像処理部５０の分割により、図５(Ｂ)に示すように、モジュールＭ1,Ｂ1から成るグループＡと、モジュールＭ2,Ｂ2,Ｍ3,Ｂ3から成るグループＢと、モジュールＭ4,Ｂ4,Ｍ5,Ｂ5から成るグループＣと、モジュールＭ6から成るグループＤに分割された場合には、グループＡとグループＢ,Ｃの境界に位置しているバッファモジュールＢ1、グループＢとグループＤの境界に位置しているバッファモジュールＢ3、及び、グループＣとグループＤの境界に位置しているバッファモジュールＢ5が排他制御機能付きのバッファモジュールに各々置き換わることになる。
【００５８】
次のステップ１０６では、画像処理部５０の一部（本発明に係る第２の画像処理部に相当）を分離してサーバ・コンピュータ２７で動作させる、所謂画像処理部５０の分割が必要か否か判定する。
【００５９】
ステップ１０６の判定は、以下の何れかの判定を行うことで自動的に行うことができる。すなわち、例えば画像処理部５０を構成する個々の画像処理モジュール３８のＣＰＵ処理時間の総和が第１の閾値以上か否かを判定することで上記判定を行うようにしてもよいし、コンピュータ１０に設けられ画像処理部５０の動作に利用可能な演算リソースの数（この演算リソースの数は、コンピュータ１０に設けられた演算リソースの総数でもよいし、コンピュータ１０に設けられた演算リソースのうち現在の使用率が所定値以下の演算リソースの総数でもよい）が第２の閾値以下か否かを判定することで上記判定を行うようにしてもよいし、個々の画像処理モジュール３８のＣＰＵ処理時間の総和を個々のグループ毎に演算し、ＣＰＵ処理時間の総和が第２の閾値以上のグループが存在しているか否かを判定することで上記判定を行うようにしてもよい。
【００６０】
また、例えば図５(Ａ)に示す画像処理部５０では、グループＢにおける画像処理の結果とグループＣにおける画像処理の結果が揃わないと、グループＤで画像処理を行えない構成であるので、処理時間の長時間化を回避するためには、グループＢにおける画像処理とグループＣにおける画像処理を並列に行うことが望ましい。このため、画像処理部５０の構成に基づき並列に実行することが望ましいパスの最大数を判断し（例えば図５(Ａ)に示す構成では上記のパスの最大数は「２」となる）、当該パスの最大数が、コンピュータ１０に設けられ画像処理部５０の動作に利用可能な演算リソースの数よりも大きいか否かを判定することで、ステップ１０６の判定を行うようにしてもよい。
【００６１】
ステップ１０６の判定が否定された場合、すなわち画像処理部５０の分割が不要と判断した場合はステップ１０８へ移行し、画像処理部５０の各グループをコンピュータ１０によって実行されるスレッドとして各々割り付け（各グループのプログラムを実行するスレッドをコンピュータ１０上に各々生成し）、画像処理部分割処理を終了する。この場合、画像処理部５０はコンピュータ１０上のみで動作する（画像処理部５０に相当する処理がコンピュータ１０のみによって行われる）ことになる。
【００６２】
一方、ステップ１０６の判定が肯定された場合、すなわち画像処理部５０の分割が必要と判断した場合はステップ１１０へ移行し、画像処理部５０の各グループの中から分割対象のグループを選択する。この分割対象のグループとしては、例えば処理負荷が最大のグループ（個々のグループ毎に演算した画像処理モジュール３８のＣＰＵ処理時間の総和が最大のグループ）を適用することができる。これは、サーバ・コンピュータ２７がコンピュータ１０よりも処理能力が高い場合に特に有効である。また、図５(Ａ)に示す画像処理部５０におけるグループＢ,Ｃのように、画像処理を並列に行うことが望ましいグループが画像処理部５０に複数存在している等の場合には、画像処理を並列に行うことが望ましい複数のグループのうちの何れか（例えば、サーバ・コンピュータ２７がコンピュータ１０よりも処理能力が高い場合はそのうちの処理負荷最大のグループ、コンピュータ１０がサーバ・コンピュータ２７よりも処理能力が高い場合はそのうちの処理負荷最大のグループ）を分割対象のグループとして適用してもよい。
【００６３】
ステップ１１２では、分割対象のグループを構成する各モジュールのプログラムを、通信制御部２５によってネットワーク２６経由でサーバ・コンピュータ２７へ転送し、次のステップ１１４では、記憶部２０に記憶されているサーバ用の処理管理部４６のプログラムを、通信制御部２５によってネットワーク２６経由でサーバ・コンピュータ２７へ転送する。そしてステップ１１６では、ステップ１１２，１１４で転送した各プログラムの実行をサーバ・コンピュータ２７に依頼する。これにより、分割対象のグループ及びサーバ用の処理管理部４６が、サーバ・コンピュータ２７によって実行されるスレッドとして各々割り付され（分割対象のグループのプログラムを実行するスレッド及びサーバ用の処理管理部４６のプログラムを実行するスレッドがサーバ・コンピュータ２７上に各々生成され）、各スレッドがサーバ・コンピュータ２７によって各々実行される。
【００６４】
これにより、例えば図５(Ａ),(Ｂ)に示す画像処理部５０のうち、モジュールＭ4,Ｂ4,Ｍ5,Ｂ5から成るグループＣが分割対象のグループとして選択された場合には、例として図５(Ｃ)に示すように、画像処理部５０がグループＣとそれ以外の部分（本発明に係る第１の画像処理部に相当）とに分割され、グループＣがサーバ・コンピュータ２７によって実行される（サーバ・コンピュータ２７上で動作する）スレッドとしてサーバ・コンピュータ２７上に生成されると共に、サーバ・コンピュータ２７上で動作する処理管理部４６（ワークフロー管理部４６Ａ、リソース管理部４６Ｂ及びエラー管理部４６Ｃ）が新たに生成される。なお、サーバ・コンピュータ２７上で動作する処理管理部４６は本発明に係る第２の処理管理部に対応しており、コンピュータ１０上で動作する処理管理部４６は本発明に係る第１の処理管理部に対応している。
【００６５】
そして、サーバ・コンピュータ２７上に生成されたグループＣのバッファモジュールＢ4,Ｂ5のバッファ制御部４０Ｂからサーバ・コンピュータ２７上で動作するリソース管理部４６Ｂに対してメモリ領域の確保が要求されると、当該リソース管理部４６Ｂにより、サーバ・コンピュータ２７上で動作するオペレーティングシステムを通じてサーバ・コンピュータ２７に設けられたメモリ２７Ｂからメモリ領域が確保され、確保されたメモリ領域がリソース管理部４６ＢからバッファモジュールＢ4,Ｂ5のバッファ制御部４０Ｂへ引き渡されることで、バッファモジュールＢ4,Ｂ5を含むグループＣが画像処理を実行可能な状態となる。なお、サーバ・コンピュータ２７上で動作するリソース管理部４６Ｂによる上記のメモリ確保処理は、本発明に係る第２の処理管理部による「第２の画像処理部を動作させるための管理処理」に対応している。また、この処理と並行してコンピュータ１０では、コンピュータ１０上で動作するバッファモジュールＢ4,Ｂ5用として一旦確保されたメモリ領域を解放する処理が行われる。
【００６６】
また、次のステップ１１８では、サーバ・コンピュータ２７上で動作する処理管理部４６に対し、サーバ・コンピュータ２７上で動作するグループの構成を規定する構成情報及び当該グループがコンピュータ１０上で動作する他のグループとどのように接続されているかを規定する接続情報を送信することで、送信した情報をサーバ・コンピュータ２７上で動作する処理管理部４６に設定させる。同様にステップ１２０では、コンピュータ１０で動作する処理管理部４６に対し、当該処理管理部４６に設定されている構成情報及び接続情報を修正する。これにより、図５(Ｃ)に示す例では、サーバ・コンピュータ２７上で動作する処理管理部４６には、管理対象の画像処理部（グループＣ）がモジュールＭ4,Ｂ4,Ｍ5,Ｂ5が直列に接続された構成であること、画像処理モジュールＭ4の前段はコンピュータ１０上で動作するバッファモジュールＢ1であること、バッファモジュールＢ5の後段はコンピュータ１０上で動作する画像処理モジュールＭ6であること、を表す情報が各々設定される。また、コンピュータ１０上で動作する処理管理部４６に設定されている情報は、管理対象の画像処理部（グループＡ,Ｂ,Ｄ）がモジュールＭ1,Ｂ1,Ｍ2,Ｂ2,Ｍ3,Ｂ3,Ｍ6が直列に接続された構成であること、バッファ理モジュールＢ1の後段に、サーバ・コンピュータ２７上で動作する画像モジュールＭ4も存在していること、画像処理モジュールＭ6の前段にサーバ・コンピュータ２７上で動作するバッファモジュールＢ5も存在していること、を表す情報へ修正される。
【００６７】
また、本実施形態では、画像処理部５０の分割を行うか否かに拘わらず個々のモジュールのプログラムを共通に用いることを可能とするため、情報を送受する一対のモジュールが互いに異なるコンピュータ上で動作している場合に、当該一対のモジュールの間に処理管理部４６が介在して情報の送受が行われる（詳細は後述）。このため、個々の処理管理部４６は、画像処理部５０の分割位置の前後に存在しているモジュールに対し、前段（又は後段）のモジュールが同一のコンピュータ上で動作する処理管理部４６であることを表す情報を設定する。例えば図５(Ｃ)に示す例において、サーバ・コンピュータ２７上で動作する処理管理部４６は、画像処理モジュールＭ4に対しては前段のモジュール、バッファモジュールＢ5に対しては後段のモジュールが、サーバ・コンピュータ２７上で動作する処理管理部４６であることを表す情報を各々設定し、コンピュータ１０上で動作する処理管理部４６は、画像処理モジュールＭ6に対しては前段のモジュール、バッファモジュールＢ1に対しては後段のモジュールに、コンピュータ１０上で動作する処理管理部４６も含まれることを表す情報を各々設定する。
【００６８】
そしてステップ１２２では、分割対象のグループ（サーバ・コンピュータ２７上で動作するスレッドとしてサーバ・コンピュータ２７上に生成されたグループ）以外の各グループを、コンピュータ１０によって実行される（コンピュータ１０上で動作する）スレッドとしてコンピュータ１０上に生成し、画像処理部分割処理を終了する。
【００６９】
以上の処理によって画像処理部５０の構築が完了すると、コンピュータ１０上で動作する処理管理部４６のワークフロー管理部４６Ａは、処理構築部４２によってコンピュータ１０上に生成された複数のスレッドをコンピュータ１０のＣＰＵ１２（やその他の演算リソース）によって並列に実行させると共に、画像処理部５０の最後段に位置している画像処理モジュール３８に処理要求を入力する。また、サーバ・コンピュータ２７上で動作する処理管理部４６のワークフロー管理部４６Ａも同様に、処理構築部４２によってサーバ・コンピュータ２７上に生成されたスレッドをサーバ・コンピュータ２７のＣＰＵ２７Ａ（やその他の演算リソース）によって実行させる。
【００７０】
また、個々のワークフロー管理部４６Ａは、同一コンピュータ上で動作する任意のバッファモジュール４０又は画像処理モジュール３８からデータ要求が入力される毎に、入力されたデータ要求におけるデータ要求先が他のコンピュータ上で動作しているモジュールか否か判定し、判定が肯定された場合は他のコンピュータ上で動作しているワークフロー管理部４６Ａとの間で通信を行うことで、入力されたデータ要求に対応するデータを取得し、取得したデータをデータ要求入力元のモジュールに提供する。以下、この処理について図６を参照して説明する。
【００７１】
図６において、画像処理モジュール３８は或るコンピュータ(例えばサーバ)上で動作している一方、図６に「前段のバッファモジュール」と表記して示すバッファモジュール４０は、画像処理部５０の分割により別のコンピュータ(例えばクライアント)上で動作している。本実施形態では、このような場合、上記の画像処理モジュール３８に対しては、前段のモジュールが同一のコンピュータ上で動作するワークフロー管理部４６Ａ（図６に示す「サーバ側ワークフロー管理部」）であることを表す情報を設定し、上記のバッファモジュール４０に対しては、後段のモジュールが同一のコンピュータ上で動作するワークフロー管理部４６Ａ（図６に示す「クライアント側ワークフロー管理部」）であることを表す情報を設定している。
【００７２】
このため、上記の画像処理モジュール３８からのデータ要求はサーバ側ワークフロー管理部に入力され(図６の(2)も参照)、サーバ側ワークフロー管理部はクライアント側ワークフロー管理部に対し、サーバ上で動作している画像処理モジュール３８が画像データを要求していることを通知する(図６の(3)も参照)。これにより、クライアント側ワークフロー管理部は、サーバ上で動作しかつ画像データを要求している画像処理モジュール３８の前段のバッファモジュール４０を認識し、認識したバッファモジュール４０に対して画像データを要求し(図６の(4)も参照)、当該バッファモジュール４０のバッファ４０Ａから画像データを読み出し(図６の(5)も参照)、読み出した画像データをサーバ側ワークフロー管理部へ転送する(図６の(6)も参照)。そしてサーバ側ワークフロー管理部は、クライアント側ワークフロー管理部から画像データを受信すると、受信した画像データを一旦メモリに記憶させた後に、当該メモリの先頭アドレスをデータ要求入力元の画像処理モジュール３８へ通知することで、クライアント側ワークフロー管理部から受信した画像データを画像処理モジュール３８によって読み出させる。これにより、異なるコンピュータ上で動作するバッファモジュール４０から画像処理モジュールへの画像データの送受が実現され、個々のモジュールにおいて、自モジュールの前段や後段のモジュールが自モジュールと同一のコンピュータ上で動作しているか否かを意識することなく（自モジュールと同一のコンピュータ上で動作しているか否かに応じて処理を切り替えることなく）処理を行うことができる。
【００７３】
なお、上記のシーケンスはクライアント(コンピュータ１０)からサーバ(サーバ・コンピュータ２７)へ画像データを転送するシーケンスであるが、サーバ・コンピュータ２７からコンピュータ１０への画像データの転送も同様のシーケンスで実現される。また、上記のシーケンスは画像処理モジュール３８が前段のバッファモジュール４０から画像データを読み出す際のシーケンスであるが、画像処理モジュール３８が後段のバッファモジュール４０に画像データを書き込む際も同様のシーケンスで実現される。
【００７４】
また、個々のワークフロー管理部４６Ａは、同一コンピュータ上で動作する任意のモジュールからデータ要求が入力され、入力されたデータ要求におけるデータ要求先が同一コンピュータ上で動作しているモジュールであると判定した場合は、判定したモジュールにデータ要求を入力し、同一コンピュータ上で動作する任意の画像処理モジュールから処理完了通知が入力される毎に、通知元の画像処理モジュールに処理要求を入力することを、最後段の画像処理モジュールから全体処理の終了（１面分の画像データに対する画像処理の終了）が通知される迄繰り返す。また、サーバ・コンピュータ２７上で動作するワークフロー管理部４６Ａは、サーバ・コンピュータ２７上で動作する各モジュールによる画像処理が完了すると、コンピュータ１０上で動作するワークフロー管理部４６Ａに対して画像処理の完了を通知する。なお、個々のワークフロー管理部４６Ａによる上述した処理も、本発明に係る第１の処理管理部又は第２の処理管理部による管理処理に対応している。そして、個々のワークフロー管理部４６Ａが上述した処理を行うことで、画像処理部５０のうちの分割対象のグループを除く部分がコンピュータ１０上で動作すると共に、当該動作と並列に分割対象のグループがサーバ・コンピュータ２７上で動作することになり、画像処理部５０をコンピュータ１０上でのみ動作させる場合よりも処理時間を短縮することができる。
【００７５】
また、画像処理の実行中に何れかのモジュールでエラーが発生した場合、エラーが発生したモジュールがコンピュータ１０で動作しているモジュールであれば、同一のコンピュータ（コンピュータ１０）上で動作する処理管理部４６のエラー管理部４６Ｃにエラーの発生が通知され、エラーが発生したモジュールがサーバ・コンピュータ２７で動作しているモジュールであれば、同一のコンピュータ（サーバ・コンピュータ２７）上で動作する処理管理部４６のエラー管理部４６Ｃにエラーの発生が通知される。
【００７６】
個々のエラー管理部４６Ｃは、エラーの発生が通知されると、発生したエラーの種別・発生箇所等のエラー情報を取得し、動作しているコンピュータ（コンピュータ１０又はサーバ・コンピュータ２７）の種別や構成等を表す装置環境情報を記憶部２０又はＨＤＤ２７Ｃから取得し、取得した装置環境情報が表す装置環境に応じたエラー通知方法を判断する。そして、コンピュータ１０上で動作するエラー管理部４６Ｃは、判断したエラー通知方法でエラーの発生を通知し、サーバ・コンピュータ２７上で動作するエラー管理部４６Ｃは、判断したエラー通知方法でのエラー発生の通知をコンピュータ１０上で動作するエラー管理部４６Ｃへ依頼することで、コンピュータ１０上で動作するエラー管理部４６Ｃによってエラー発生の通知を行わせる。なお、個々のエラー管理部４６Ｃによる上述した処理も、本発明に係る第１の処理管理部又は第２の処理管理部による管理処理に対応している。
【００７７】
また、サーバ・コンピュータ２７における画像処理が完了すると、サーバ・コンピュータ２７上で動作するリソース管理部４６Ｂによって確保されたメモリ領域等のリソースは、同リソース管理部４６Ｂを通じて全て解放され、コンピュータ１０における画像処理が完了すると、コンピュータ１０上で動作するリソース管理部４６Ｂによって確保されたメモリ領域等のリソースも、同リソース管理部４６Ｂを通じて全て解放される。これらのリソース管理部４６Ｂによるリソース解放処理も本発明に係る第１の処理管理部又は第２の処理管理部による管理処理に対応している。
【００７８】
画像処理部５０の一部を分割してサーバ・コンピュータ２７上で動作させる際に、処理管理部４６をコンピュータ１０上にのみ設けた場合、サーバ・コンピュータ２７上で動作する個々のモジュールは、リソースの確保時や解放時、エラー発生時、画像処理の実行時に、コンピュータ１０上で動作する処理管理部４６と通信を行う必要があり、コンピュータ１０とサーバ・コンピュータ２７の間のトラフィックが大幅に増大すると共に、通信に要する時間分だけ処理が遅延することで、処理効率が大幅に低下する。
【００７９】
これに対して本実施形態では、画像処理部５０の一部を分割してサーバ・コンピュータ２７上で動作させる際に、コンピュータ１０上で動作する処理管理部４６に加えて、サーバ・コンピュータ２７上で動作する処理管理部４６も設けているので、コンピュータ１０とサーバ・コンピュータ２７の間の通信は、画像処理部５０の分割位置の前後に存在しているモジュール間（図５(Ｃ)の例では、バッファモジュールＢ1と画像処理モジュールＭ4の間、及び、バッファモジュールＢ5と画像処理モジュールＭ6の間）の画像データの受け渡しのための通信が大部分となる。これにより、コンピュータ１０とサーバ・コンピュータ２７の間のトラフィックの増大を抑制できると共に、サーバ・コンピュータ２７上で動作する個々のモジュールと処理管理部４６との間の通信に要する時間も短くすることができるので、処理効率を向上させることができ、コンピュータ１０及びサーバ・コンピュータ２７で並列に画像処理が行われることで処理時間を短縮することができる。
【００８０】
なお、上記では画像処理モジュールの数や処理負荷等に基づいて画像処理部５０を複数のグループに分割した後に、複数のグループの中からサーバ・コンピュータ２７上で動作させるグループを選択することで、画像処理部を、サーバ・コンピュータ２７上で動作させる部分（第２の画像処理部）とそれ以外の部分（第１の画像処理部）に分割する態様を説明したが、本発明はこれに限定されるものではなく、例えば画像処理部５０を事前に複数のグループに分割することなく、画像処理部５０のうち並列に実行することが望ましい部分を直接判断し、判断結果に基づいて画像処理部５０を第１の画像処理部と第２の画像処理部に分割するようにしてもよい。
【００８１】
また、上記では本発明に係る第２コンピュータが予め設定されている（第２コンピュータがサーバ・コンピュータ２７に固定されている）態様を説明したが、これに限定されるものではなく、第２の画像処理部を動作させるコンピュータを複数台のコンピュータの中から都度選択するようにしてもよい。第２の画像処理部を動作させるコンピュータの選択は、例えば複数台のコンピュータの各々の処理能力や構成等の情報を予め記憶しておき、当該情報に基づいて選択するようにしてもよいし、第２の画像処理部を動作させるコンピュータの選択時に複数台のコンピュータの各々に加わっている処理負荷を取得し、取得した処理負荷に基づいて選択するようにしてもよい。
【００８２】
また、上記では本発明に係る第２コンピュータが１台の場合を説明したが、本発明において第２コンピュータは複数台であってもよく、この場合、画像処理部を、１個の第１の画像処理部と、第２コンピュータと同数個の第２の画像処理部に分割すればよい。また、第２コンピュータの数を可変とし、画像処理部の構成（例えば画像処理部のうち並列に実行することが望ましい部分における並列実行数の望ましい値）に基づいて画像処理部の分割数を決定し、決定した分割数から１を減算した値と同数台の第２コンピュータを選択するようにしてもよい。
【００８３】
更に、上記では第２コンピュータ上で動作する第２の処理管理部として、ワークフロー管理部４６Ａ、リソース管理部４６Ｂ及びエラー管理部４６Ｃを含む処理管理部４６を第２コンピュータ（サーバ・コンピュータ２７）上で動作させる態様を説明したが、本発明はこれに限定されるものではなく、第２コンピュータ上で動作させる第２の処理管理部はワークフロー管理部４６Ａ、リソース管理部４６Ｂ及びエラー管理部４６Ｃの少なくとも１つに相当する機能を備えた構成であればよい。第１コンピュータと第２コンピュータの間のトラフィックの増大を抑制するためには、第２の処理管理部がワークフロー管理部に相当する機能を備えていることが特に有効であり、第２の処理管理部が少なくともワークフロー管理部に相当する機能を備えていることが望ましい。
【００８４】
また、上記では本発明に係る画像処理プログラムに対応する画像処理プログラム群３４が記憶部２０に予め記憶（インストール）されている態様を説明したが、本発明に係る画像処理プログラムは、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭ等の記録媒体に記録されている形態で提供することも可能である。
【図面の簡単な説明】
【００８５】
【図１】本実施形態に係るコンピュータ（画像処理装置）の概略構成を示すブロック図である。
【図２】画像処理部の構成例を示すブロック図である。
【図３】(Ａ)は画像処理モジュール、(Ｂ)はバッファモジュールの概略構成及び実行される処理を各々示すブロック図である。
【図４】処理構築部によって行われる画像処理部分割処理の内容を示すフローチャートである。
【図５】画像処理部分割処理による画像処理部の分割を説明するための画像処理部の一例を示すブロック図である。
【図６】画像処理モジュールの前段モジュールが別コンピュータ上で動作している場合の情報の送受シーケンスの一例を示すブロック図である。
【符号の説明】
【００８６】
１０  コンピュータ
１２  ＣＰＵ
２０  記憶部
２７  サーバ・コンピュータ
３８  画像処理モジュール
４０  バッファモジュール
４２  処理構築部
４６  処理管理部
５０  画像処理部
【図１】
0005046801.tif 000002
【図２】
0005046801.tif 000003
【図３】
0005046801.tif 000004
【図４】
0005046801.tif 000005
【図５】
0005046801.tif 000006
【図６】
0005046801.tif 000007