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