(57)【要約】【課題】画像処理の処理効率を向上させる。【解決手段】前段のモジュールから単位データ量ずつ画像データを取得して画像処理を行い、画像処理後の画像データ又は画像処理結果を後段のモジュールへ出力する機能を備え、実行する画像処理の種類又は内容が互いに異なる複数の画像処理モジュールと、前段のモジュールからの画像データをバッファに書き込ませ、バッファに記憶されている画像データを後段のモジュールによって読み出させるバッファモジュールが、個々の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールが連結されるように連結されて構築された画像処理部に対し、個々の画像処理モジュールに処理要求を繰り返し入力して処理対象の画像全体を処理させ、かつ個々の画像処理モジュールに対応するスレッドの実行優先度を画像処理の進行度合に応じて選択図(A)→(B)→(C)又は(A)→(D)→(E)のように変更する。【選択図】図１６
2007287085.tif 000002
【特許請求の範囲】
【請求項１】
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、
個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
個々の画像処理モジュールのプログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段を更に備えたことを特徴とする画像処理装置。
【請求項２】
自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、
個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴とする画像処理装置。
【請求項３】
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、
個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
個々のバッファモジュールの後段の画像処理モジュールが前記個々のバッファモジュールから画像データを取得する際の単位データ量に対する、前記個々のバッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴とする画像処理装置。
【請求項４】
前記優先度制御手段は、個々の画像処理モジュールのプログラムの実行優先度の初期設定も行うことを特徴とする請求項２又は請求項３記載の画像処理装置。
【請求項５】
前記画像処理装置には前記プログラム実行リソースが複数設けられており、前記個々の画像処理モジュールのプログラムは複数のプログラム実行リソースによって並列に実行され、
前記優先度制御手段は、画像処理が完了していない画像処理モジュールの数が前記画像処理装置に設けられているプログラム実行リソースの数以下となった場合に、前記実行優先度の変更を終了することを特徴とする請求項１乃至請求項３の何れか１項記載の画像処理装置。
【請求項６】
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、
個々の画像処理モジュールには、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、
個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段を更に備えたことを特徴とする画像処理装置。
【請求項７】
自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、
個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、
個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴とする画像処理装置。
【請求項８】
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、
個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、
個々のバッファモジュールの後段の画像処理モジュールが前記個々のバッファモジュールから画像データを取得する際の単位データ量に対する、前記個々のバッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴とする画像処理装置。
【請求項９】
前記優先度制御手段は、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定も行うことを特徴とする請求項７又は請求項８記載の画像処理装置。
【請求項１０】
コンピュータを、
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、
個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
前記コンピュータを、更に、
個々の画像処理モジュールのプログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段として機能させることを特徴とする画像処理プログラム。
【請求項１１】
コンピュータを、
自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、
個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
前記コンピュータを、更に、
個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段として機能させることを特徴とする画像処理プログラム。
【請求項１２】
コンピュータを、
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、
個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
前記コンピュータを、更に、
個々のバッファモジュールの後段の画像処理モジュールが前記個々のバッファモジュールから画像データを取得する際の単位データ量に対する、前記個々のバッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段として機能させることを特徴とする画像処理プログラム。
【請求項１３】
コンピュータを、
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、
個々の画像処理モジュールには、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、
前記コンピュータを、更に、
個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、
個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段として機能させることを特徴とする画像処理プログラム。
【請求項１４】
コンピュータを、
自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、
個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、
前記コンピュータを、更に、
個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段として機能させることを特徴とする画像処理プログラム。
【請求項１５】
コンピュータを、
自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、
バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、
が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、
個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、
前記コンピュータを、更に、
個々のバッファモジュールの後段の画像処理モジュールが前記個々のバッファモジュールから画像データを取得する際の単位データ量に対する、前記個々のバッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段として機能させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理装置及びプログラムに係り、特に、画像処理モジュール及びバッファモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置、及び、コンピュータを前記画像処理装置として機能させるための画像処理プログラムに関する。
【背景技術】
【０００２】
入力された画像データに対して画像処理を行う画像処理装置や、画像を取扱可能なＤＴＰ（デスクトップ・パブリッシング）システム、入力された画像データが表す画像を記録材料に記録するプリントシステム等では、入力された画像データに対して拡大・縮小、回転、アフィン変換、色変換、フィルタ処理、画像合成等の各種の画像処理が行われる。これらの装置やシステムにおいて、入力される画像データの属性や画像データに対する画像処理の内容・手順・パラメータ等が固定されている場合には、専用に設計したハードウエアによって画像処理を行わせる場合もあるが、例えば色空間や１画素当たりのビット数が異なる様々な画像データが入力されたり、画像処理の内容や手順・パラメータ等が様々に変更される場合には、実行する画像処理をより柔軟に変更可能な構成が必要となる。
【０００３】
このような要求を満たすために、例えば特許文献１には、プログラマブルな処理モジュールをパイプライン形態やＤＡＧ(Directed Acyclic Graph：有向非循環グラフ)形態に接続して、所望の画像処理を行うことを可能とする技術が提案されている。特許文献１に記載の技術では、複数のプログラマブル演算処理部の各々における演算処理の内容と、ネットワーク部による各プログラマブル演算処理部の接続形態を、ホストコントロール手段を通じて外部から自在に設定できるように構成することで、高速かつ高度な演算処理が可能で、機能変更や系統変更に対する自由度が高いデジタル映像信号処理装置を実現している。
【０００４】
また、画像処理にも適用可能な技術として、特許文献２には、複数の記憶手段と、時分割された処理の一つである実行単位について、複数の記憶手段のうちの入力用の単一の記憶手段から入力データを受け取り、出力用の単一の記憶手段に処理結果を記憶するデータ処理手段と、記憶手段のデータ記憶量の情報から実行単位の実行状況を求め、実行単位の起動優先度を決定する起動優先度決定手段を備えたプロセッサが開示されている。
【特許文献１】特開平５−２６０３７３号公報
【特許文献２】特開２００４−２８７８８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術のように、複数種の画像処理モジュールを任意に組み合わせて所望の画像処理を行う画像処理装置を構成する場合、以下に述べるような問題がある。すなわち、各画像処理モジュールには、実行する画像処理の種類や内容に応じて処理し易い単位（例えば画素単位、１ライン単位、複数ライン単位、面単位等）がある。しかし、各画像処理モジュールを任意の順番で連結し協調して処理することを可能とするためには、全ての画像処理モジュールの出力単位を揃えるか、或いは各画像処理モジュールが任意の入力単位に対応可能に構成する必要があり、各画像処理モジュールの構成が複雑になる。また、各画像処理モジュールは他の画像処理モジュールと連携して動作するため、各画像処理モジュールには、入力された画像データに対して実際に画像処理を行う部分以外に、自モジュールと連結された他の画像処理モジュールとの間で画像データを受け渡す処理を制御する部分も必要となり、各画像処理モジュールの構成は一層複雑になる。
【０００６】
上記の問題は、特許文献２に記載の技術のようにデータ処理手段の前後に記憶手段を設けた構成を用い、個々のデータ処理手段で各種の画像処理を行わせると共に、個々のデータ処理手段を、実行する画像処理の種類や内容に応じた処理し易い単位ずつ記憶手段から画像データを取得するように構成することで解決可能である。
【０００７】
但しこの場合、データ処理手段が画像処理を実行可能な状態にするために前段の記憶手段に蓄積すべき画像データのデータ量が、個々のデータ処理手段の個々の記憶手段毎に相違することになるのに対し、特許文献２に記載の技術では、或る記憶手段のデータ記憶量が多くなるに従って、該記憶手段の前段に配置されたデータ処理手段の優先度を低くし、かつ前記記憶手段の後段に配置されたデータ処理手段の優先度を高くしている。これにより、単位データ量が比較的多いデータ処理手段は、前段の記憶手段のデータ記憶量が単位データ量に近づくにつれて、画像データを取得できない状態であるにも拘わらず優先度が高くされる一方、上記記憶手段の前段に位置しているデータ処理手段は、後段の記憶手段に記憶されている画像データが後段のデータ処理手段の単位データ量に達していないにも拘わらず優先度が低くされることになる。このように、特許文献２に記載の技術を適用して画像処理を行ったとするとＣＰＵ等のリソースを有効に利用することができず、画像処理の処理効率が低下するという問題があった。
【０００８】
本発明は上記事実を考慮して成されたもので、画像処理の処理効率を向上させることが可能な画像処理装置及び画像処理プログラムを得ることが目的である。
【課題を解決するための手段】
【０００９】
上記目的を達成するために請求項１記載の発明に係る画像処理装置は、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、個々の画像処理モジュールのプログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段を更に備えたことを特徴としている。
【００１０】
本発明に係る画像処理モジュールは、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、所定の画像処理を経た画像データ又は所定の画像処理の処理結果を自モジュールの後段へ出力する機能を備えている。本発明では、画像処理モジュールが実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールが用意されており、複数種の画像処理モジュールの中から選択された複数の画像処理モジュールを用いて画像処理部が構築される。なお、画像処理部の構築のために選択される画像処理モジュールは、互いに異なる画像処理モジュールであってもよいし、画像処理モジュールの一部又は全部が重複して選択されてもよい。
【００１１】
また本発明に係る画像処理部は、選択された個々の画像処理モジュールの前段及び後段の少なくとも一方に、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、前段の画像処理モジュールから出力される画像データをバッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、バッファに記憶されている画像データを、後段の画像処理モジュールによって読み出させるバッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築される。このように、個々の画像処理モジュールの前段及び後段の少なくとも一方にバッファモジュールを連結することで、画像処理モジュールが前段から取得する画像データのサイズ（単位データ量）及び画像処理モジュールが後段へ出力する画像データのサイズを、個々の画像処理モジュールが実行する画像処理の種類や内容に応じて最適化することができ、画像処理モジュールの構成も簡単にすることができる。
【００１２】
なお、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズは、画像の１ライン分、画像の複数ライン分、画像１面分、画像の１画素分等を含む任意のバイト数の何れであってもよく、単一の画像処理モジュールが前段から取得する画像データのサイズ及び後段へ出力する画像データのサイズは同一であっても相違していてもよい。また、個々の画像処理モジュールが後段へ出力する画像データは未圧縮の画像データであってもよいし、何らかの符号化方法により符号化されて圧縮された画像データであってもよい。
【００１３】
ところで、本発明において、個々の画像処理モジュールは、対応するプログラムが画像処理装置に設けられたプログラム実行リソース（例えばＣＰＵ、或いはＭＭＸ(MultiMedia eXtention)用の演算器やＳＳＥ (Streaming SIMD Extension)用の演算器、或いはＣＰＵと別に設けられたＤＳＰ(Digital Signal Processor)等の高速演算器等）によって並列に実行されるように構成することで実現できる。しかし、本発明に係る画像処理部は、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築されているので、画像処理部における画像処理の実行開始時やその付近の期間は、パイプライン形態又は有向非循環グラフ形態の連結形態において後段側に位置している画像処理モジュールが、前段から画像データを取得できないために画像処理を実行できない状態となっている。また、画像処理部における画像処理の実行終了時やその付近の期間は、パイプライン形態又は有向非循環グラフ形態の連結形態において前段側に位置している画像処理モジュールが既に画像処理を完了しているか完了寸前の状態となっている。
【００１４】
このため、画像処理部が画像処理を行っている間、個々の画像処理モジュールに対応するプログラムの実行優先度を一定にしたとすると、画像処理部における画像処理の実行開始時やその付近の期間に、前段から画像データを取得できないために画像処理を実行できない状態となっている画像処理部の後段側の画像処理モジュールに対応するプログラムにもプログラム実行リソースが一定の頻度で割り当てられると共に、画像処理部における画像処理の実行終了時やその付近の期間に、既に画像処理を完了しているか完了寸前の状態となっている画像処理部の前段側の画像処理モジュールに対応するプログラムにもプログラム実行リソースが一定の頻度で割り当てられることで、プログラム実行リソースの実質的な利用効率が低下し、画像処理の処理効率が低下するという問題が生ずる。
【００１５】
また、特許文献２に記載の技術のように、或るバッファモジュールに記憶されている画像データのデータ量が多くなるに従って、該バッファモジュールの前段に連結された画像処理モジュールに対応するプログラムの実行優先度を低くし、前記バッファモジュールの後段に連結された画像処理モジュールに対応するプログラムの実行優先度を高くする場合にも、前述のように画像処理の処理効率が低下するという問題が生ずる。
【００１６】
これに対して請求項１記載の発明では、優先度制御手段により、個々の画像処理モジュールのプログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行っている。なお、画像処理の進行度合は、例えば個々の画像処理モジュールから処理済みの画像データのデータ量を取得し、処理対象の画像データの総データ量に対する取得したデータ量の比率を求めることで検知することができる。優先度制御手段が上記のように個々の画像処理モジュールのプログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行うことで、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることが可能となり、画像処理の処理効率を向上させることが可能となる。
【００１７】
なお、請求項１記載の発明に係る優先度制御手段による、個々の画像処理モジュールのプログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更は、より具体的には、例えば画像処理部における画像処理の開始時には、パイプライン形態又は有向非循環グラフ形態の連結形態において前段側に位置している画像処理モジュールのプログラムの実行優先度が、前記連結形態において後段側に位置している画像処理モジュールのプログラムの実行優先度よりも高くなり、画像処理部における画像処理の進行に伴い、前段側に位置している画像処理モジュールのプログラムの実行優先度が低下し、かつ後段側に位置している画像処理モジュールのプログラムの実行優先度が増大するように行うことができる。これにより、画像処理部における画像処理の実行開始時やその付近の期間には、前段から画像データを取得できないために画像処理を実行できない状態となっている画像処理部の後段側の画像処理モジュールに対応するプログラムの実行優先度が相対的に低下され、画像処理部における画像処理の実行終了時やその付近の期間には、既に画像処理を完了しているか完了寸前の状態となっている画像処理部の前段側の画像処理モジュールに対応するプログラムの実行優先度が相対的に低下されるので、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることができ、画像処理の処理効率を向上させることができる。
【００１８】
請求項２記載の発明に係る画像処理装置は、自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴としている。
【００１９】
請求項２記載の発明に係る画像処理装置は、少なくとも、請求項１記載の発明と同様の構成の複数の画像処理モジュールの間に、請求項１記載の発明と同様の構成のバッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えている。また、個々の画像処理モジュールは、対応するプログラムが画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、請求項２記載の発明に係る優先度制御手段は、個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する。これにより、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることが可能となり、画像処理の処理効率を向上させることが可能となる。
【００２０】
なお、請求項２記載の発明に係る優先度制御手段が、個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更することは、より具体的には、例えばバッファモジュールを介して後段に接続された画像処理モジュールにおける画像データの取得失敗回数が多い画像処理モジュールに対応するプログラムの実行優先度が、前記後段に接続された画像処理モジュールにおける画像データの取得失敗回数が少ない画像処理モジュールに対応するプログラムの実行優先度に対して相対的に増大するように行うことができる。これにより、例えば、或るバッファモジュールの後段に連結されている画像処理モジュールが、前段から取得する画像データのサイズ（単位データ量）が比較的大きいために、前記後段の画像処理モジュールにおける画像データの取得失敗回数が多くなった場合には、前記バッファモジュールに記憶されている画像データのデータ量が比較的多かったとしても、前記バッファモジュールの前段に連結されている画像処理モジュールに対応するプログラムの実行優先度が画像データの取得失敗回数に基づいて相対的に増大されることで、前記後段の画像処理モジュールにおける画像データの取得失敗が抑制されるように、前段の画像処理モジュールからの画像データの出力速度（バッファモジュールに記憶されている画像データのデータ量の増加速度）が増大されることになるので、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることができ、画像処理の処理効率を向上させることができる。
【００２１】
また、上記態様において、個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更するにあたり、画像データの取得失敗回数が多い画像処理モジュールに対応するプログラムの実行優先度を、画像データの取得失敗回数が少ない画像処理モジュールに対応するプログラムの実行優先度に対して相対的に低下させることも同時に行うようにしてもよい。これにより、プログラム実行リソースの実質的な利用効率及び画像処理の処理効率を更に向上させることができる。
【００２２】
請求項３記載の発明に係る画像処理装置は、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、バッファモジュールの後段の画像処理モジュールが前記バッファモジュールから画像データを取得する際の単位データ量に対する、前記バッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴としている。
【００２３】
請求項３記載の発明に係る画像処理装置は、請求項１記載の発明と同様の構成の画像処理部を備えており、個々の画像処理モジュールは、対応するプログラムが画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現される。そして請求項３記載の発明に係る優先度制御手段は、バッファモジュールの後段の画像処理モジュールが前記バッファモジュールから画像データを取得する際の単位データ量に対する、前記バッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する。これにより、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることが可能となり、画像処理の処理効率を向上させることが可能となる。
【００２４】
なお、請求項３記載の発明に係る優先度制御手段が、バッファモジュールの後段の画像処理モジュールが前記バッファモジュールから画像データを取得する際の単位データ量に対する、前記バッファモジュールに記憶されている画像データのデータ量の比率に応じて個々の画像処理モジュールのプログラムの実行優先度を変更することは、より具体的には、例えば前記比率が低くなるに従って、バッファモジュールの前段の画像処理モジュールのプログラムの実行優先度が増大するように行うことができる。これにより、例えば、或るバッファモジュールに記憶されている画像データのデータ量は比較的多いものの、後段に連結されている画像処理モジュールにおける単位データ量が比較的大きいために、上記バッファモジュールにおける上記比率が低い場合には、前記バッファモジュールの前段に連結されている画像処理モジュールに対応するプログラムの実行優先度が増大されることで、前記後段の画像処理モジュールにおいて画像データを取得できないことによる処理遅延が抑制されるように、前段の画像処理モジュールからの画像データの出力速度（バッファモジュールに記憶されている画像データのデータ量の増加速度）が増大されることになるので、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることができ、画像処理の処理効率を向上させることができる。
【００２５】
なお、請求項２又は請求項３記載の発明では、個々の画像処理モジュールにおける画像データの取得失敗回数又は個々のバッファモジュールにおける画像データのデータ量の比率に応じて、個々の画像処理モジュールのプログラムの実行優先度が変更されるので、これに伴って個々の画像処理モジュールのプログラムの実行優先度が最適化されることで、画像処理部における画像処理の開始時の個々の画像処理モジュールのプログラムの実行優先度は一定であってもよいが、例えば請求項４に記載したように、優先度制御手段を、個々の画像処理モジュールのプログラムの実行優先度の初期設定も行う構成とすることが好ましい。これにより、画像処理の処理効率を更に向上させることが可能となる。
【００２６】
なお、請求項４に記載の優先度制御手段による個々の画像処理モジュールのプログラムの実行優先度の初期設定は、より具体的には、例えば画像処理部における画像処理の開始時には、パイプライン形態又は有向非循環グラフ形態の連結形態において前段側に位置している画像処理モジュールのプログラムの実行優先度が、前記連結形態において後段側に位置している画像処理モジュールのプログラムの実行優先度よりも高くなるように行うことができる。これにより、画像処理部における画像処理の開始直後の時点でのプログラム実行リソースの実質的な利用効率を更に向上させることができ、画像処理の処理効率を更に向上させることができる。
【００２７】
また、本発明に係る優先度制御手段を、対応するプログラムがプログラム実行リソースによって他のプログラム（画像処理モジュールに対応するプログラム等）と並列に実行されることで実現する場合、優先度制御手段に相当する処理が、画像処理部における画像処理に対する若干のオーバヘッドとなる。これを考慮すると、請求項１乃至請求項３の何れかに記載の発明において、画像処理装置にプログラム実行リソースが複数設けられ、個々の画像処理モジュールのプログラムが複数のプログラム実行リソースによって並列に実行される場合、優先度制御手段を、例えば請求項５に記載したように、画像処理が完了していない画像処理モジュールの数が画像処理装置に設けられているプログラム実行リソースの数以下となった場合に、実行優先度の変更を終了するように構成することが好ましい。
【００２８】
上記のように、画像処理が完了していない画像処理モジュールの数が画像処理装置に設けられているプログラム実行リソースの数以下となった場合は、画像処理が完了していない画像処理モジュールに対応する個々のプログラムが、互いに異なるプログラム実行リソースを占有できる状況となっており、個々の画像処理モジュールに対応するプログラムによるプログラム実行リソースの奪い合いは生じない。上記の場合に優先度制御手段による実行優先度の変更を終了することで、以降の期間に優先度制御手段に相当する処理が画像処理部における画像処理に対するオーバヘッドとなることを防止することができ、画像処理の処理効率を更に向上させることができる。
【００２９】
請求項６記載の発明に係る画像処理装置は、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、個々の画像処理モジュールには、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段を更に備えたことを特徴としている。
【００３０】
請求項６記載の発明は、請求項１記載の発明と同様の構成の画像処理部を備えている。また個々の画像処理モジュールには、対応するプログラムとして、画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、ＣＰＵによる第１プログラムの実行と高速演算器による第２プログラムの実行が排他的に行われることによって実現される。なお、高速演算器は特定の演算を高速に行う目的で設けられる演算器であるので、ＣＰＵが第１プログラムを実行した場合よりも、該第１プログラムと同一の画像処理モジュールに対応する第２プログラムを高速演算器が実行した場合の方が処理速度が速い（処理時間が短い）。
【００３１】
上記に基づき請求項６記載の発明に係る優先度制御手段は、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う。これにより、請求項１記載の発明と同様に、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることが可能となり、画像処理の処理効率を向上させることが可能となる。
【００３２】
なお、請求項６記載の発明に係る優先度制御手段が、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行うことは、より具体的には、例えば画像処理部における画像処理の開始時には、第１プログラムの実行優先度に対する第２プログラムの実行優先度の比率が、前記パイプライン形態又は有向非循環グラフ形態の連結形態において後段側に位置している画像処理モジュールよりも、前記連結形態において前段側に位置している画像処理モジュールの方が高くなり、画像処理部における画像処理の進行に伴い、前記前段側に位置している画像処理モジュールの前記実行優先度の比率が低下し、かつ前記後段側に位置している画像処理モジュールの前記実行優先度の比率が増大するように行うことができる。これにより、画像処理部における画像処理の実行開始時やその付近の期間には、画像処理部の前段側の画像処理モジュールは第１プログラムが高速演算器で実行される比率が高くなる（前段から画像データを取得できないために画像処理を実行できない状態となっている画像処理部の後段側の画像処理モジュールは第２プログラムがＣＰＵで実行される比率が高くなる）一方、画像処理部における画像処理の実行終了時やその付近の期間には、画像処理部の後段側の画像処理モジュールは第１プログラムが高速演算器で実行される比率が増大する既に画像処理を完了するか完了寸前の状態となっている画像処理部の前段側の画像処理モジュールは第２プログラムがＣＰＵで実行される比率が増大する）ので、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることができ、画像処理の処理効率を向上させることができる。
【００３３】
請求項７記載の発明に係る画像処理装置は、自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴としている。
【００３４】
請求項７記載の発明は、請求項２記載の発明と同様の構成の画像処理部を備えている。また個々の画像処理モジュールには、対応するプログラムとして、画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、ＣＰＵによる第１プログラムの実行と高速演算器による第２プログラムの実行が排他的に行われることによって実現される。そして請求項７記載の発明に係る優先度制御手段は、個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する。これにより、請求項２記載の発明と同様に、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソース、特に高速演算器を有効に利用することが可能となり、画像処理の処理効率を向上させることが可能となる。
【００３５】
なお、請求項７記載の発明に係る優先度制御手段が、個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更することは、より具体的には、例えばバッファモジュールを介して後段に接続された画像処理モジュールにおける画像データの取得失敗回数が多い画像処理モジュールの前記第１プログラムの実行優先度に対する前記第２プログラムの実行優先度の比率が、前記後段に接続された画像処理モジュールにおける画像データの取得失敗回数が少ない画像処理モジュールの前記実行優先度の比率に対して相対的に増大するように行うことができる。これにより、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソースの実質的な利用効率を向上させることができ、画像処理の処理効率を向上させることができる。
【００３６】
請求項８記載の発明に係る画像処理装置は、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置であって、個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、バッファモジュールの後段の画像処理モジュールが前記バッファモジュールから画像データを取得する際の単位データ量に対する、前記バッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段を更に備えたことを特徴としている。
【００３７】
請求項８記載の発明は、請求項１記載の発明と同様の構成の画像処理部を備えている。また個々の画像処理モジュールには、対応するプログラムとして、画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、ＣＰＵによる第１プログラムの実行と高速演算器による第２プログラムの実行が排他的に行われることによって実現される。そして請求項８記載の発明に係る優先度制御手段は、バッファモジュールの後段の画像処理モジュールがバッファモジュールから画像データを取得する際の単位データ量に対する、バッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する。これにより、請求項３記載の発明と同様に、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソース、特に高速演算器を有効に利用することが可能となり、画像処理の処理効率を向上させることが可能となる。
【００３８】
なお、請求項８記載の発明に係る優先度制御手段が、バッファモジュールの後段の画像処理モジュールが前記バッファモジュールから画像データを取得する際の単位データ量に対する、前記バッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更することは、より詳しくは、例えば前記比率が低くなるに従って、バッファモジュールの前段の画像処理モジュールの第１プログラムの実行優先度に対する第２プログラムの実行優先度の比率が増大するように行うことができる。これにより、個々の画像処理モジュールが前段から取得する画像データのサイズ及び画像処理モジュールが後段へ出力する画像データのサイズが互いに相違していたとしても、プログラム実行リソース、特に高速演算器を有効に利用することができ、画像処理の処理効率を向上させることができる。
【００３９】
なお、請求項７又は請求項８記載の発明において、優先度制御手段は、例えば請求項９に記載したように、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定も行う構成とすることが好ましい。これにより、請求項４記載の発明と同様に、画像処理の処理効率を更に向上させることが可能となる。なお、請求項９記載の発明に係る優先度制御手段による個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定は、画像処理部における画像処理の開始時には、パイプライン形態又は有向非循環グラフ形態の連結形態において前段側に位置している画像処理モジュールの第１プログラムの実行優先度に対する第２プログラムの実行優先度の比率が、前記連結形態において後段側に位置している画像処理モジュールの前記実行優先度の比率よりも高くなるように行うことができる。これにより、画像処理部における画像処理の開始直後の時点において、プログラム実行リソース、特に高速演算器をより有効に利用することができ、画像処理の処理効率を更に向上させることができる。
【００４０】
請求項１０記載の発明に係る画像処理プログラムは、コンピュータを、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、前記コンピュータを、更に、個々の画像処理モジュールのプログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段として機能させることを特徴としている。
【００４１】
請求項１０記載の発明に係る画像処理プログラムは、コンピュータを上記の画像処理装置として機能させると共に、上記の優先度制御手段として機能させるためのプログラムであるので、コンピュータが請求項１０記載の発明に係る画像処理プログラムを実行することにより、コンピュータが請求項１に記載の画像処理装置として機能することになり、請求項１記載の発明と同様に、画像処理の処理効率を向上させることが可能となる。
【００４２】
請求項１１記載の発明に係る画像処理プログラムは、コンピュータを、自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、前記コンピュータを、更に、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段として機能させることを特徴としている。
【００４３】
請求項１１記載の発明に係る画像処理プログラムは、コンピュータを上記の画像処理装置として機能させると共に、上記の優先度制御手段として機能させるためのプログラムであるので、コンピュータが請求項１１記載の発明に係る画像処理プログラムを実行することにより、コンピュータが請求項２に記載の画像処理装置として機能することになり、請求項２記載の発明と同様に、画像処理の処理効率を向上させることが可能となる。
【００４４】
請求項１２記載の発明に係る画像処理プログラムは、コンピュータを、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、個々の画像処理モジュールは、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、前記コンピュータを、更に、バッファモジュールの後段の画像処理モジュールが前記バッファモジュールから画像データを取得する際の単位データ量に対する、前記バッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールのプログラムの実行優先度を変更する優先度制御手段として機能させることを特徴としている。
【００４５】
請求項１２記載の発明に係る画像処理プログラムは、コンピュータを上記の画像処理装置として機能させると共に、上記の優先度制御手段として機能させるためのプログラムであるので、コンピュータが請求項１２記載の発明に係る画像処理プログラムを実行することにより、コンピュータが請求項３に記載の画像処理装置として機能することになり、請求項３記載の発明と同様に、画像処理の処理効率を向上させることが可能となる。
【００４６】
請求項１３記載の発明に係る画像処理プログラムは、コンピュータを、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、個々の画像処理モジュールには、対応するプログラムが前記画像処理装置に設けられたプログラム実行リソースによって並列に実行されることによって実現され、前記コンピュータを、更に、個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度の初期設定及び画像処理の進行度合に応じた変更を行う優先度制御手段として機能させることを特徴としている。
【００４７】
請求項１３記載の発明に係る画像処理プログラムは、コンピュータを上記の画像処理装置として機能させると共に、上記の優先度制御手段として機能させるためのプログラムであるので、コンピュータが請求項１３記載の発明に係る画像処理プログラムを実行することにより、コンピュータが請求項６に記載の画像処理装置として機能することになり、請求項６記載の発明と同様に、画像処理の処理効率を向上させることが可能となる。
【００４８】
請求項１４記載の発明に係る画像処理プログラムは、コンピュータを、自モジュールの前段から単位データ量の画像データの取得を試行することを繰り返し、画像データの取得に失敗している間は画像処理の実行を停止すると共に、画像データの取得に成功した場合は、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、少なくとも個々の画像処理モジュールの間に前記バッファモジュールが各々存在するように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、前記コンピュータを、更に、個々の画像処理モジュールにおける画像データの取得失敗回数に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段として機能させることを特徴としている。
【００４９】
請求項１４記載の発明に係る画像処理プログラムは、コンピュータを上記の画像処理装置として機能させると共に、上記の優先度制御手段として機能させるためのプログラムであるので、コンピュータが請求項１４記載の発明に係る画像処理プログラムを実行することにより、コンピュータが請求項７に記載の画像処理装置として機能することになり、請求項７記載の発明と同様に、画像処理の処理効率を向上させることが可能となる。
【００５０】
請求項１５記載の発明に係る画像処理プログラムは、コンピュータを、自モジュールの前段から単位データ量ずつ画像データを取得し、取得した画像データに対して所定の画像処理を行い、前記所定の画像処理を経た画像データ又は前記所定の画像処理の処理結果を自モジュールの後段へ出力する機能を各々備え、実行する画像処理の種類又は内容が互いに異なる複数種の画像処理モジュールの中から選択された複数の画像処理モジュールと、バッファを備え、自モジュールの前段に画像処理モジュールが連結されている場合に、該前段の画像処理モジュールから出力される画像データを前記バッファに書き込ませると共に、自モジュールの後段に画像処理モジュールが連結されている場合に、前記バッファに記憶されている画像データを、前記後段の画像処理モジュールによって読み出させるバッファモジュールと、が、個々の画像処理モジュールの前段及び後段の少なくとも一方に前記バッファモジュールが連結されるように、個々のモジュールがパイプライン形態又は有向非循環グラフ形態で連結されて構築された画像処理部を備えた画像処理装置として機能させるための画像処理プログラムであって、個々の画像処理モジュールには、対応するプログラムとして、前記画像処理装置に設けられたＣＰＵによって実行するための第１プログラムと、前記画像処理装置に設けられた高速演算器によって実行するための第２プログラムが各々設けられており、個々の画像処理モジュールは、前記ＣＰＵによる前記第１プログラムの実行と前記高速演算器による前記第２プログラムの実行が排他的に行われることによって実現され、前記コンピュータを、更に、バッファモジュールの後段の画像処理モジュールが前記バッファモジュールから画像データを取得する際の単位データ量に対する、前記バッファモジュールに記憶されている画像データのデータ量の比率に応じて、個々の画像処理モジュールの第１プログラム及び第２プログラムの実行優先度を変更する優先度制御手段として機能させることを特徴としている。
【００５１】
請求項１５記載の発明に係る画像処理プログラムは、コンピュータを上記の画像処理装置として機能させると共に、上記の優先度制御手段として機能させるためのプログラムであるので、コンピュータが請求項１５記載の発明に係る画像処理プログラムを実行することにより、コンピュータが請求項８に記載の画像処理装置として機能することになり、請求項８記載の発明と同様に、画像処理の処理効率を向上させることが可能となる。
【発明の効果】
【００５２】
以上説明したように本発明は、画像処理の進行度合、個々の画像処理モジュールにおける画像データの取得失敗回数、及び、後段の画像処理モジュールの単位データ量に対する個々のバッファモジュールに記憶されている画像データのデータ量の比率の何れかに応じて、個々の画像処理モジュールのプログラムの実行優先度を変更するので、画像処理の処理効率を向上させることが可能となる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００５３】
以下、図面を参照して本発明の実施形態の一例を詳細に説明する。
【００５４】
〔第１実施形態〕
図１には、本発明に係る画像処理装置として機能することが可能なコンピュータ１０が示されている。なお、このコンピュータ１０は、複写機、プリンタ、ファクシミリ装置、これらの機能を兼ね備えた複合機、スキャナ、写真プリンタ等のように内部で画像処理を行う必要のある任意の画像取扱機器に組み込まれていてもよいし、パーソナル・コンピュータ（ＰＣ）等の独立したコンピュータであってもよく、更にＰＤＡ（Personal Digital Assistant）や携帯電話機等の携帯機器に組み込まれたコンピュータであってもよい。
【００５５】
コンピュータ１０はＣＰＵ１２、メモリ１４、表示部１６、操作部１８、記憶部２０、画像データ供給部２２及び画像出力部２４を備えており、これらはバス２６を介して互いに接続されている。コンピュータ１０が上述したような画像取扱機器に組み込まれている場合、表示部１６や操作部１８としては、画像取扱機器に設けられたＬＣＤ等から成る表示パネルやテンキー等を適用することができる。また、コンピュータ１０が独立したコンピュータである場合、表示部１６や操作部１８としては、当該コンピュータに接続されたディスプレイやキーボード、マウス等を適用することができる。また、記憶部２０としてはＨＤＤ(Hard Disk Drive)が好適であるが、これに代えてフラッシュメモリ等の他の不揮発性記憶手段を用いることも可能である。
【００５６】
また、画像データ供給部２２は処理対象の画像データを供給できるものであればよく、例えば紙や写真フィルム等の記録材料に記録されている画像を読み取って画像データを出力する画像読取部、通信回線を介して外部から画像データを受信する受信部、画像データを記憶する画像記憶部（メモリ１４又は記憶部２０）等を適用することができる。また、画像出力部２４は画像処理を経た画像データ又は該画像データが表す画像を出力するものであればよく、例えば画像データが表す画像を紙や感光材料等の記録材料に記録する画像記録部、画像データが表す画像をディスプレイ等に表示する表示部、画像データを記録メディアに書き込む書込装置、画像データを通信回線を介して送信する送信部を適用することができる。また、画像出力部２４は画像処理を経た画像データを単に記憶する画像記憶部（メモリ１４又は記憶部２０）であっても構わない。
【００５７】
図１に示すように、記憶部２０には、ＣＰＵ１２によって実行される各種のプログラムとして、メモリ１４等のリソースの管理やＣＰＵ１２によるプログラムの実行の管理、コンピュータ１０と外部との通信等を司るオペレーティングシステム３０のプログラム、コンピュータ１０を本発明に係る画像処理装置として機能させるための画像処理プログラム群３４、ＣＰＵ１２が上記画像処理プログラム群を実行することで実現される画像処理装置に対して所望の画像処理を行わせる各種のアプリケーション３２のプログラム（図１ではアプリケーションプログラム群３２と表記）が各々記憶されている。
【００５８】
画像処理プログラム群３４は、前述した各種の画像取扱機器や携帯機器を開発する際の開発負荷を軽減したり、ＰＣ等で利用可能な画像処理プログラムを開発する際の開発負荷を軽減することを目的として、各種の画像取扱機器や携帯機器、ＰＣ等の各種機器（プラットフォーム）で共通に使用可能に開発されたプログラムであり、本発明に係る画像処理プログラムに対応している。画像処理プログラム群３４によって実現される画像処理装置は、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理部を構築し、アプリケーション３２からの実行指示に従い、前記画像処理部によって画像処理を行うが（詳細は後述）、画像処理プログラム群３４は、所望の画像処理を行う画像処理部（所望の構成の画像処理部）の構築を指示したり、構築された画像処理部による画像処理の実行を指示するためのインタフェースをアプリケーション３２に提供している。このため、内部で画像処理を行う必要のある任意の機器を新規開発する等の場合にも、前記画像処理を行うプログラムの開発に関しては、当該機器で必要とされる画像処理を上記のインタフェースを利用して画像処理プログラム群３４に行わせるアプリケーション３２を開発するのみで済み、実際に画像処理を行うプログラムを新たに開発する必要が無くなるので、開発負荷を軽減することができる。
【００５９】
また、画像処理プログラム群３４によって実現される画像処理装置は、前述のように、アプリケーション３２からの構築指示に従い、アプリケーション３２が指示した画像処理を行う画像処理部を構築し、構築した画像処理部によって画像処理を行うので、例えば画像処理対象の画像データの色空間や１画素当たりのビット数が不定であったり、実行すべき画像処理の内容や手順・パラメータ等が不定である場合にも、アプリケーション３２が画像処理部の再構築を指示することで、画像処理装置（画像処理部）によって実行される画像処理を、処理対象の画像データ等に応じて柔軟に変更することができる。
【００６０】
以下、画像処理プログラム群３４について説明する。図１に示すように、画像処理プログラム群３４はモジュールライブラリ３６と、処理構築部４２のプログラムと、処理管理部４６のプログラムに大別される。詳細は後述するが、本実施形態に係る処理構築部４２は、アプリケーションからの指示により、例として図４に示すように、予め定められた画像処理を行う１つ以上の画像処理モジュール３８と、個々の画像処理モジュール３８の前段及び後段の少なくとも一方に配置され画像データを記憶するためのバッファを備えたバッファモジュール４０と、がパイプライン形態又はＤＡＧ(Directed Acyclic Graph：有向非循環グラフ)形態で連結されて成る画像処理部５０を構築する。画像処理部５０を構成する個々の画像処理モジュールの実体はＣＰＵ１２によって実行されＣＰＵ１２で所定の画像処理を行わせるためのプログラムであり、上述したモジュールライブラリ３６には、予め定められた互いに異なる画像処理（例えば入力処理やフィルタ処理、色変換処理、拡大・縮小処理、スキュー角検知処理、画像回転処理、画像合成処理、出力処理等）を行う複数種の画像処理モジュール３８のプログラムが各々登録されている。
【００６１】
個々の画像処理モジュール３８は、例として図１３(Ａ)にも示すように、画像データに対する画像処理を所定の単位処理データ量ずつ行う画像処理エンジン３８Ａと、画像処理モジュール３８の前段及び後段のモジュールとの画像データの入出力及び画像処理エンジン３８Ａの制御を行う制御部３８Ｂから構成されている。個々の画像処理モジュール３８における単位処理データ量は、画像の１ライン分、画像の複数ライン分、画像の１画素分、画像１面分等を含む任意のバイト数の中から、画像処理エンジン３８Ａが行う画像処理の種類等に応じて予め選択・設定されており、例えば色変換処理やフィルタ処理を行う画像処理モジュール３８では単位処理データ量が１画素分とされ、拡大・縮小処理を行う画像処理モジュール３８では単位処理データ量が画像の１ライン分又は画像の複数ライン分とされ、画像回転処理を行う画像処理モジュール３８では単位処理データ量が画像１面分とされ、画像圧縮伸長処理を行う画像処理モジュール３８では単位処理データ量が実行環境に依存するＮバイトとされている。
【００６２】
また、モジュールライブラリ３６には、画像処理エンジン３８Ａが実行する画像処理の種類が同一でかつ実行する画像処理の内容が異なる画像処理モジュール３８も登録されている（図１では、この種の画像処理モジュールを「モジュール１」「モジュール２」と表記して示している）。例えば拡大・縮小処理を行う画像処理モジュール３８については、入力された画像データを１画素おきに間引くことで50％に縮小する縮小処理を行う画像処理モジュール３８、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８等の複数の画像処理モジュール３８が各々用意されている。また、例えば色変換処理を行う画像処理モジュール３８については、ＲＧＢ色空間をＣＭＹ色空間へ変換する画像処理モジュール３８やその逆へ変換する画像処理モジュール３８、Ｌ*ａ*ｂ*色空間等の他の色空間変換を行う画像処理モジュール３８が各々用意されている。
【００６３】
また、画像処理モジュール３８の制御部３８Ｂは、画像処理エンジン３８Ａが単位処理データ量ずつ処理するために必要な画像データを入力するために、自モジュールの前段のモジュール（例えばバッファモジュール４０）から画像データを単位読出データ量ずつ取得し、画像処理エンジン３８Ａから出力される画像データを単位書込データずつ後段のモジュール（例えばバッファモジュール４０）へ出力する（画像処理エンジン３８Ａで圧縮等のデータ量の増減を伴う画像処理が行われなければ単位書込データ量＝単位処理データ量となる）か、画像処理エンジン３８Ａによる画像処理の結果を自モジュールの外部へ出力する（例えば画像処理エンジン３８Ａがスキュー角検知処理等の画像解析処理を行う場合、画像データに代えてスキュー角検知結果等の画像解析処理結果が出力されることがある）処理を行うが、モジュールライブラリ３６には、画像処理エンジン３８Ａが実行する画像処理の種類及び内容が同一で、上記の単位処理データ量や単位読出データ量、単位書込データ量が異なる画像処理モジュール３８も登録されている。例えば、先程は画像回転処理を行う画像処理モジュール３８における単位処理データ量を画像１面分と説明したが、同じ画像回転処理を行う画像処理モジュール３８で単位処理データ量が画像の１ライン分又は画像の複数ライン分であるものがモジュールライブラリ３６に含まれていても良い。
【００６４】
また、モジュールライブラリ３６に登録されている個々の画像処理モジュール３８のプログラムは、画像処理エンジン３８Ａに相当するプログラムと制御部３８Ｂに相当するプログラムから構成されているが、制御部３８Ｂに相当するプログラムは部品化されており、個々の画像処理モジュール３８のうち単位読出データ量及び単位書込データ量が同一の画像処理モジュール３８は、画像処理エンジン３８Ａで実行される画像処理の種類や内容に拘わらず、制御部３８Ｂに相当するプログラムが共通化されている（制御部３８Ｂに相当するプログラムとして同一のプログラムが用いられている）。これにより、画像処理モジュール３８のプログラムの開発にあたっての開発負荷が軽減される。
【００６５】
なお、画像処理モジュール３８の中には、入力される画像の属性が未知の状態では単位読出データ量及び単位書込データ量が確定しておらず、入力画像データの属性を取得し、取得した属性を所定の演算式に代入して演算することで単位読出データ量や単位書込データ量が確定するモジュールが存在しているが、この種の画像処理モジュール３８については、単位読出データ量と単位書込データ量が互いに同一の演算式を用いて導出される画像処理モジュール３８について、制御部３８Ｂに相当するプログラムを共通化するようにすればよい。また、本実施形態に係る画像処理プログラム群３４は、前述のように各種機器に実装可能であるが、画像処理プログラム群３４のうちモジュールライブラリ３６に登録する画像処理モジュール３８の数や種類等については、画像処理プログラム群３４を実装する各種機器で必要とされる画像処理に応じて、適宜追加・削除・入替等が可能であることは言うまでもない。
【００６６】
また、画像処理部５０を構成する個々のバッファモジュール４０は、例として図１３(Ｂ)にも示すように、コンピュータ１０に設けられたメモリ１４からオペレーティングシステム３０を通じて確保されたメモリ領域で構成されるバッファ４０Ａと、バッファモジュール４０の前段及び後段のモジュールとの画像データの入出力及びバッファ４０Ａの管理を行うバッファ制御部４０Ｂから構成されている。個々のバッファモジュール４０のバッファ制御部４０Ｂもその実体はＣＰＵ１２によって実行されるプログラムであり、モジュールライブラリ３６にはバッファ制御部４０Ｂのプログラムも登録されている（図１ではバッファ制御部４０Ｂのプログラムを「バッファモジュール」と表記して示している）。
【００６７】
また、アプリケーション３２からの指示に従って画像処理部５０を構築する処理構築部４２は、図１に示すように複数種のモジュール生成部４４から構成されている。複数種のモジュール生成部４４は互いに異なる画像処理に対応しており、アプリケーション３２によって起動されることで、対応する画像処理を実現するための画像処理モジュール３８及びバッファモジュール４０から成るモジュール群を生成する処理を行う。なお、図１ではモジュール生成部４４の一例として、モジュールライブラリ３６に登録されている個々の画像処理モジュール３８が実行する画像処理の種類に対応するモジュール生成部４４を示しているが、個々のモジュール生成部４４に対応する画像処理は、複数種の画像処理モジュール３８によって実現される画像処理（例えばスキュー角検知処理と画像回転処理から成るスキュー補正処理）であってもよい。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション３２は複数種の画像処理の何れかに対応するモジュール生成部４４を順次起動する。これにより、アプリケーション３２によって順次起動されたモジュール生成部４４により、必要とされる画像処理を行う画像処理部５０が構築されることになる。
【００６８】
また図１に示すように、処理管理部４６は、画像処理部５０における画像処理の実行を制御するワークフロー管理部４６Ａ、画像処理部５０の各モジュールによるメモリ１４や各種のファイル等のコンピュータ１０のリソースの使用を管理するリソース管理部４６Ｂ、及び、画像処理部５０で発生したエラーを管理するエラー管理部４６Ｃを含んで構成されている。なお、本実施形態において、処理構築部４２によって構築される画像処理部５０は、画像処理部５０を構成する個々の画像処理モジュール３８が、画像１面分よりも小さいデータ量を単位として後段へ画像データを引き渡しながら並列に画像処理を行うように動作する（ブロック単位処理と称する）。
【００６９】
なお、リソース管理部４６Ｂによるメモリ管理の方式としては、例えば、画像処理部５０の個々のモジュールからの要求の都度、メモリ１４から要求元のモジュールに割り当てるメモリ領域をオペレーティングシステム３０を通じて確保する第１管理方式、メモリ１４から一定サイズのメモリ領域をオペレーティングシステム３０を通じて事前に（例えばコンピュータ１０の電源投入時に）確保し、個々のモジュールからの要求があると、事前に確保したメモリ領域のうちの一部領域を要求元のモジュールに割り当てる第２管理方式、及び、メモリ１４から一定サイズのメモリ領域をオペレーティングシステム３０を通じて事前に確保し、個々のモジュールからの要求があると、要求されたメモリ領域のサイズが閾値未満であれば事前に確保したメモリ領域のうちの一部領域を要求元のモジュールに割り当て、要求されたメモリ領域のサイズが閾値以上であれば要求元のモジュールに割り当てるメモリ領域をオペレーティングシステム３０を通じて確保する第３管理方式の何れかを採用することができる。また、何れの管理方式でメモリ管理を行うかを選択・設定可能としてもよい。
【００７０】
またエラー管理部４６Ｃは、画像処理部５０が画像処理を実行している途中でエラーが発生した場合に、発生したエラーの種別・発生箇所等のエラー情報を取得し、画像処理プログラム群３４がインストールされたコンピュータ１０が組み込まれている機器の種別や構成等を表す装置環境情報を記憶部２０等から取得し、取得した装置環境情報が表す装置環境に応じたエラー通知方法を判断し、判断したエラー通知方法でエラーの発生を通知する処理を行う。
【００７１】
次に本第１実施形態の作用を説明する。画像処理プログラム群３４が実装されている機器において、何らかの画像処理を行う必要のある状況になると、この状況が特定のアプリケーション３２によって検知され、当該アプリケーション３２によって図２に示す処理が行われる。なお、画像処理を行う必要のある状況としては、例えば画像データ供給部２２としての画像読取部によって画像を読み取り、画像出力部２４としての画像記録部により記録材料に画像として記録するか、画像出力部２４としての表示部に画像として表示させるか、画像出力部２４としての書込装置により画像データを記録メディアに書き込むか、画像出力部２４としての送信部により画像データを送信するか、画像出力部２４としての画像記憶部に記憶させるジョブの実行がユーザによって指示された場合、或いは、画像データ供給部２２としての受信部によって受信されるか、画像データ供給部２２としての画像記憶部に記憶されている画像データに対して、上記の記録材料への記録、表示部への表示、記録メディアへの書き込み、送信、画像記憶部への記憶の何れかを行うジョブの実行がユーザによって指示された場合が挙げられる。また、画像処理を行う必要のある状況は上記に限られるものではなく、例えばユーザからの指示に応じてアプリケーション３２が実行可能な処理の名称等を表示部１６に一覧表示している状態で、実行対象の処理がユーザによって選択された等の場合であってもよい。
【００７２】
上記のように、何らかの画像処理を行う必要のある状況になったことを検知すると、アプリケーション３２は、まず画像処理対象の画像データを供給する画像データ供給部２２の種別を認識し（図２のステップ１５０も参照）、認識した種別がバッファ領域（メモリ１４の一部領域）であった場合（図２のステップ１５２の判定が肯定された場合）には、画像データ供給部２２として指定されたバッファ領域を含むバッファモジュール４０を生成する（図２のステップ１５４も参照）。後述するバッファモジュール４０の新規生成では、バッファモジュール４０のバッファ制御部４０Ｂのプログラムを実行するスレッド（又はプロセス又はオブジェクト）を生成することでバッファ制御部４０Ｂを生成し、生成されたバッファ制御部４０Ｂによりバッファ４０Ａとして使用するメモリ領域が確保されることによって成されるが、このステップ１５４におけるバッファモジュール４０の生成は、指定されたバッファ領域を既に確保されたバッファ４０Ａとして（バッファ制御部４０Ｂに）認識させるパラメータを設定してバッファ制御部４０Ｂを生成する処理を行うことによって成される。ここで生成されたバッファモジュール４０は画像データ供給部２２として機能する。
【００７３】
続いてアプリケーション３２は、上記と同様に、画像処理を行った画像データの出力先としての画像出力部２４の種別を認識し（図２のステップ１５６も参照）、認識した種別がバッファ領域（メモリ１４の一部領域）であった場合（図２のステップ１５８の判定が肯定された場合）は、画像出力部２４として指定されたバッファ領域を含むバッファモジュール４０を上記と同様にして生成する（図２のステップ１６０も参照）。ここで生成されたバッファモジュール４０は画像出力部２４として機能する。また、アプリケーション３２は実行すべき画像処理の内容を認識し、実行すべき画像処理を、個々のモジュール生成部４４に対応するレベルの画像処理の組み合わせに分解し、実行すべき画像処理を実現するために必要な画像処理の種類及び個々の画像処理の実行順序を判定する（図２のステップ１６２も参照）。なお、この判定は、例えば上記の画像処理の種類及び個々の画像処理の実行順序を、ユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、アプリケーション３２は、実行が指示されたジョブの種類に対応する情報を読み出すことによって実現することができる。
【００７４】
そしてアプリケーション３２は、上記で判定した画像処理の種類及び実行順序に基づいて、まず実行順序が１番の画像処理に対応するモジュール生成部４４を起動（モジュール生成部４４のプログラムを実行するスレッド（又はプロセス又はオブジェクト）を生成）した後に（図２のステップ１６４も参照）、起動したモジュール生成部４４に対し、当該モジュール生成部４４によるモジュール群の生成に必要な情報として、前記モジュール群に画像データを入力する入力モジュールを識別するための入力モジュール識別情報、前記モジュール群が画像データを出力する出力モジュールを識別するための出力モジュール識別情報、前記モジュール群に入力される入力画像データの属性を表す入力画像属性情報、実行すべき画像処理のパラメータを通知し、対応するモジュール群の生成を指示する（図２のステップ１６６も参照）。
【００７５】
なお、上記の入力モジュールは、実行順序が１番目のモジュール群については画像データ供給部２２が入力モジュールとなり、実行順序が２番目以降のモジュール群については前段のモジュール群の最終モジュール（通常はバッファモジュール４０）が入力モジュールとなる。また、上記の出力モジュールについては、実行順序が最後のモジュール群では画像出力部２４が出力モジュールとなるので、画像出力部２４が出力モジュールとして指定されるが、その他のモジュール群では出力モジュールは未確定のためにアプリケーション３２による指定は行われず、必要な場合はモジュール生成部４４によって生成・設定される。また、入力画像属性や画像処理のパラメータについては、例えばユーザが実行を指示可能なジョブの種類と対応付けて予め情報として登録しておき、実行が指示されたジョブの種類に対応する情報を読み出すことでアプリケーション３２が認識するようにしてもよいし、ユーザに指定させるようにしてもよい。
【００７６】
一方、モジュール生成部４４は、アプリケーション３２によって起動されると図３(Ａ)に示すモジュール生成処理を行う（図２のステップ１６８も参照）。モジュール生成処理では、まずステップ２００において、このモジュール生成部４４で次に生成すべき画像処理モジュール３８が有るか否かを判定する。判定が否定された場合はモジュール生成処理を終了する。生成すべき画像処理モジュール３８が有る場合には、ステップ２０２で生成すべき画像処理モジュール３８に入力される入力画像データの属性を表す入力画像属性情報を取得し、次のステップ２０４では、ステップ２０２で取得した情報が表す入力画像データの属性に照らしても先のステップ２００で生成すべきと判定した画像処理モジュール３８の生成が必要か否かを判定する。
【００７７】
具体的には、例えば実行中のモジュール生成処理に対応するモジュール生成部４４が色変換処理を行うモジュール群を生成するモジュール生成部であり、画像処理のパラメータにより出力画像データの色空間としてＣＭＹ色空間がアプリケーション３２から指定された場合、ステップ２０２で取得した入力画像属性情報に基づいて入力画像データがＲＧＢ色空間のデータであることが判明した場合には、色空間処理を行う画像処理モジュール３８としてＲＧＢ→ＣＭＹの色空間変換を行う画像処理モジュール３８を生成する必要があるが、入力画像データがＣＭＹ色空間のデータであった場合には、入力画像データの属性と出力画像データの属性が色空間に関して一致しているので、色空間変換処理を行う画像処理モジュール３８は生成不要と判断することができる。不要と判断された場合はステップ２００に戻る。
【００７８】
なお、入力画像データの属性を取得する処理は、生成する画像処理モジュール３８の前段にバッファモジュール４０が存在している場合、当該バッファモジュール４０に画像データの書き込みを行う更に前段の画像処理モジュール３８から出力画像データの属性を取得することによって実現できる。
【００７９】
次のステップ２０６では、生成する画像処理モジュール３８の後段にバッファモジュール４０が必要が否かを判定する。この判定は、画像処理モジュールの後段が出力モジュール（画像出力部２４）である場合（例えば図４(Ａ)〜(Ｃ)に示す画像処理部５０における最後段の画像処理モジュール３８を参照）や、例として図４(Ｂ)に示す画像処理部５０においてスキュー角検知処理を行う画像処理モジュール３８のように、画像処理モジュールが、画像データに対して解析等の画像処理を行いその結果を他の画像処理モジュール３８へ出力するモジュールである場合は否定され、バッファモジュール４０の生成を行うことなくステップ２１０へ移行するが、上記以外の場合は判定が肯定されてステップ２０８へ移行し、バッファ制御部４０Ｂを起動する（バッファ制御部４０Ｂのプログラムを実行するスレッド（又はプロセス又はオブジェクトを生成する）ことで、画像処理モジュールの後段に連結するバッファモジュール４０を生成する。バッファ制御部４０Ｂは、モジュール生成部４４（或いは前述したアプリケーション３２）によって起動されると図５に示すバッファ制御処理を行う。このバッファ制御処理については後述する。
【００８０】
次のステップ２１０では、前段のモジュール（例えばバッファモジュール４０）の情報と後段のバッファモジュール４０の情報、画像処理モジュール３８に入力される入力画像データの属性、処理パラメータを与えて、画像処理モジュール３８を生成する。なお、ステップ２０６で後段のバッファモジュール４０が不要と判断された画像処理モジュール３８に対しては後段のバッファモジュール４０の情報は与えられず、また例えば50％縮小処理のように処理内容が固定的で特別な画像処理パラメータが必要ない場合には処理パラメータは与えられない。
【００８１】
モジュール生成処理（ステップ２１０）では、モジュールライブラリ３６に登録されており、画像処理モジュール３８として利用可能な複数の候補モジュールの中から、ステップ２０２で取得した入力画像データの属性、及び、画像処理モジュール３８で実行すべき処理パラメータに合致する画像処理モジュール３８を選択する。例えば実行中のモジュール生成処理に対応するモジュール生成部４４が色変換処理を行うモジュール群を生成するモジュール生成部であり、処理パラメータにより出力画像データの色空間としてＣＭＹ色空間がアプリケーション３２から指定され、更に入力画像データがＲＧＢ色空間のデータであった場合には、モジュールライブラリ３６に登録されている各種の色空間処理を行う複数種の画像処理モジュール３８の中から、ＲＧＢ→ＣＭＹの色空間変換を行う画像処理モジュール３８が選択される。
【００８２】
また、画像処理モジュールが拡大・縮小処理を行う画像処理モジュール３８であり、指定された拡大縮小率が50％以外であれば、入力された画像データに対して指定された拡大・縮小率で拡大・縮小処理を行う画像処理モジュール３８が選択され、指定された拡大縮小率が50％であれば、拡大縮小率50％に特化した拡大縮小処理、すなわち入力された画像データを１画素おきに間引くことで50％に縮小する縮小処理を行う画像処理モジュール３８が選択される。なお、画像処理モジュール３８の選択は上記に限られるものではなく、例えば画像処理エンジン３８Ａによる画像処理における単位処理データ量が異なる画像処理モジュール３８をモジュールライブラリ３６に複数登録しておき、画像処理部５０へ割当可能なメモリ領域のサイズ等の動作環境に応じて、適切な単位処理データ量の画像処理モジュール３８を選択する（例えば上記サイズが小さくなるに従って単位処理データ量の小さい画像処理モジュール３８を選択する等）ようにしてもよいし、アプリケーション３２或いはユーザに選択させるようにしてもよい。
【００８３】
次のステップ２１２では、後段のバッファモジュール４０のＩＤと生成した画像処理モジュール３８のＩＤの組をワークフロー管理部４６Ａに通知する。このＩＤは、個々のモジュールを一意に判別できる情報であればよく、例えば個々のモジュールの生成順に付与した番号や、バッファモジュール４０や画像処理モジュール３８のオブジェクトのメモリ上でのアドレス等でも良い。ワークフロー管理部４６Ａに通知された情報は、例えば図３(Ｂ)に示すようなテーブル形式やリスト形式、連想配列形式等でワークフロー管理部４６Ａの内部に保持され、後の処理で使われる。ここではテーブル形式で保持するものとして説明を続ける。
【００８４】
なお、先程述べた後段のバッファモジュール４０を持たない画像処理モジュール３８の場合には、例えば下記の方法で処理を行う。図４(Ａ)において出力処理を行う画像処理モジュール３８のように、生成する画像処理モジュール３８がパイプラインの終点又は有向非循環グラフの終点の一つである場合には、当該画像処理モジュール３８をモジュール生成部４４の出力として呼び出し元のアプリケーション３２に戻す。また、図４(Ｂ)においてスキュー角検知処理を行う画像処理モジュール３８のように、生成した画像処理モジュール３８における画像処理の結果が他の画像処理モジュール（図４(Ｂ)では画像回転処理を行う画像処理モジュール３８）で使われる場合、モジュール生成部４４は、当該画像処理モジュール３８に対して処理が終了するまで繰り返し処理実行を指示して、処理結果を取得する。
【００８５】
ステップ２１２の処理が終了すると、モジュール生成部４４は制御をステップ２００に戻して次に生成すべき画像処理モジュールがあるか否かを判定する。なお、個々のモジュール生成部４４は、対応する一定の画像処理を行うモジュール群を生成するので、この判定は、個々のモジュール生成部４４毎にどのような画像処理モジュールをどのような接続関係で生成するかに関する情報を予め登録して読み出すか、またはモジュール生成部４４を動作させるプログラム中に記述しておくことでも実現できる。例えば実行中のモジュール生成処理に対応するモジュール生成部４４が、複数種の画像処理モジュール３８によって実現される画像処理（例えばスキュー角検知処理を行う画像処理モジュール３８と画像回転処理を行う画像処理モジュール３８によって実現されるスキュー補正処理）を行うモジュール群を生成する場合には、２個以上の画像処理モジュール３８を含むモジュール群が生成される。
【００８６】
アプリケーション３２は、モジュール群の生成を指示したモジュール生成部４４から、上記のようにしてモジュール群の生成完了が通知されると、図２のステップ１６２における判定の結果に基づいて、必要とされる画像処理を実現するために他の画像処理を行うモジュール群も生成する必要があるか否か判断する。必要とされる画像処理が複数種の画像処理を組み合わせた処理である場合、アプリケーション３２は、個々の画像処理に対応する他のモジュール生成部４４を起動してモジュール群の生成に必要な情報を通知する処理を順次行う（図２のステップ１７０，１７２も参照）。そして、順次起動されたモジュール生成部４４によって上述したモジュール生成処理（図３）が順次行われる（図２のステップ１７４も参照）ことで、例として図４(Ａ)〜(Ｃ)に示すように、必要とされる画像処理を行う画像処理部５０が構築されることになる。
【００８７】
なお、本実施形態では、特定の画像処理の実行頻度が高い等の場合に、アプリケーション３２が、特定の画像処理を行う画像処理部５０を生成するための複数種のモジュール生成部４４に対し、特定の画像処理を行う画像処理部５０を生成させた後も処理終了を指示しないことでスレッド（又はプロセス又はオブジェクト）として残しておき、特定の画像処理を行う必要が生ずる毎に、スレッド（又はプロセス又はオブジェクト）として残しておいた各モジュール生成部４４に対してモジュール群の生成を順次指示することで、特定の画像処理を行う画像処理部５０を再生成させることも可能とされている。これにより、特定の画像処理を行う必要が生ずる毎に対応する各モジュール生成部４４を各々起動する処理が不要となり、特定の画像処理を行う画像処理部５０を再生成するのに要する時間を短縮することができる。
【００８８】
ところで、画像処理モジュール３８の制御部３８Ｂは、モジュール生成部４４によって起動されると図１１に示す画像処理モジュール初期化処理を行う。この画像処理モジュール初期化処理では、まずステップ２５０において、モジュール生成部４４がモジュール生成処理（図３）のステップ２１０の処理を行うことでモジュール生成部４４から与えられた自モジュールの前段及び後段のモジュールの情報を記憶する。また、次のステップ２５２では、自モジュールの画像処理エンジン３８Ａが行う画像処理の種類や内容等に基づき、自モジュールが使用するメモリのサイズ及び自モジュールが使用する他のリソースを認識する。なお、自モジュールが使用するメモリは、画像処理エンジン３８Ａが画像処理を行うために必要なメモリが主であるが、前段のモジュールが画像データ供給部２２である場合や後段のモジュールが画像出力部２４である場合には、前段又は後段のモジュールとの画像データの送受に際して画像データを一時記憶するためのバッファ用のメモリが必要となることもある。また、処理パラメータにテーブル等の情報が含まれている場合には、それを保持するためのメモリ領域が必要となることもある。そしてステップ２５４では、ステップ２５２で認識したサイズをリソース管理部４６Ｂへ通知すると共に、通知したサイズのメモリ領域の確保をリソース管理部４６Ｂへ要求し、リソース管理部４６Ｂによって確保されたメモリ領域をリソース管理部４６Ｂから受け取る。
【００８９】
図１１に示す画像処理モジュール初期化処理（画像処理モジュール３８の制御部３８Ｂ）では、上記の処理を経てリソース管理部４６Ｂ経由で必要なメモリ領域を確保すると、次のステップ２５６において、先のステップ２５２の処理結果に基づき、メモリ以外の他のリソースを自モジュール（の画像処理エンジン３８Ａ）が必要としているか否か判定する。判定が否定された場合は何ら処理を行うことなくステップ２６２へ移行するが、判定が肯定された場合はステップ２５８へ移行し、自モジュールが必要としているメモリ以外の他のリソースの種類等をリソース管理部４６Ｂへ通知すると共に、通知した他のリソースの確保をリソース管理部４６Ｂへ要求して確保する。
【００９０】
次に、ステップ２６２では自モジュールの前段のモジュールを判定し、自モジュールの前段にモジュールが存在していない場合にはステップ２７２へ移行し、前段のモジュールがバッファモジュール４０以外、例えば画像データ供給部２２や特定のファイル等である場合には、必要に応じてステップ２７０でその初期化処理を行ってステップ２７２に移る。また、自モジュールの前段にモジュールが存在しており、当該前段のモジュールがバッファモジュール４０であった場合には、ステップ２６２からステップ２６４へ移行し、前段のバッファモジュール４０からの１回の画像データの読み出しによって取得する画像データのデータ量（単位読出データ量）を認識する。この単位読出データ量は、自モジュールの前段のバッファモジュール４０の数が１個であれば１個だけであるが、例えば図４(Ｃ)に示す画像処理部５０において画像合成処理を行う画像処理モジュール３８のように、前段のバッファモジュール４０の数が複数で、複数のバッファモジュール４０から各々取得した画像データを用いて画像処理エンジン３８Ａが画像処理を行う等の場合、前段の個々のバッファモジュール４０に対応する単位読出データ量は、自モジュールの画像処理エンジン３８Ａが行う画像処理の種類や内容、前段のバッファモジュール４０の数等に応じて定まる。
【００９１】
ステップ２６６では、ステップ２６４で認識した単位読出データ量を前段の単一のバッファモジュール４０へ通知することで、当該バッファモジュール４０に対して単位読出データ量を設定する（図１３(Ａ)の(1)も参照）。次のステップ２６８では、自モジュールの前段の全てのバッファモジュール４０に単位読出データ量を設定したか否か判定する。自モジュールの前段のバッファモジュール４０の数が１個であれば当該判定は肯定されてステップ２７２へ移行するが、前段のバッファモジュール４０の数が複数であればステップ２６８の判定が否定されてステップ２６６に戻り、ステップ２６８の判定が肯定される迄、ステップ２６６，２６８を繰り返す。これにより、前段の全てのバッファモジュール４０に対して単位読出データ量が各々設定されることになる。
【００９２】
ステップ２７２では、自モジュールの後段のモジュールを判定し、自モジュールの後段のモジュールがバッファモジュール４０以外、例えば画像出力部２４や特定のファイル等の場合には、必要に応じてステップ２７８でその初期化処理を行ってステップ２８０に移る。例えば後段のモジュールが、画像記録部や表示部、書込装置、送信部の何れかから成る画像出力部２４であれば、この画像出力部２４に対し、上記の初期化処理として、単位書込データ量に相当するデータ量ずつ画像データを出力することを通知する処理等を行う。また、後段のモジュールがバッファモジュール４０である場合には、ステップ２７４で１回の画像データの書き込みにおける画像データのデータ量（単位書込データ量）を認識し、ステップ２７６で後段のバッファモジュールに当該単位書込データ量を設定（図１３(Ａ)の(2)も参照）した後に、ステップ２８０に移る。ステップ２８０では、当該画像処理モジュール初期化処理の完了をモジュール生成部４４に通知して、画像処理モジュール初期化処理を終了する。
【００９３】
一方、画像処理部５０を構成する個々のバッファモジュール４０のバッファ制御部４０Ｂは、モジュール生成部４４又はアプリケーション３２によって起動されると図５に示すバッファ制御処理を行う。このバッファ制御処理では、モジュール生成部４４又はアプリケーション３２によって起動されてバッファモジュール４０の生成が指示されると、ステップ３５６で待ち要求数を０に初期化する。また、次のステップ３５８では、自モジュールの前段の画像処理モジュール３８から単位書込データ量が通知されるか又は自モジュールの後段の画像処理モジュール３８から単位読出データ量が通知されたか否か判定する。判定が否定された場合はステップ３６２へ移行し、自モジュールと連結されている全ての画像処理モジュール３８から単位書込データ量又は単位読出データ量が通知されたか否か判定する。判定が否定された場合はステップ３５８に戻り、ステップ３５８又はステップ３６２の判定が肯定される迄ステップ３５８，３６２を繰り返す。
【００９４】
自モジュールと連結されている特定の画像処理モジュール３８から単位書込データ量又は単位読出データ量が通知されると、ステップ３５８の判定が肯定されてステップ３６０へ移行し、通知された単位書込データ量又は単位読出データ量を記憶した後にステップ３５８に戻る。従って、自モジュールと連結されている個々の画像処理モジュール３８の制御部３８Ｂによって画像処理モジュール初期化処理（図１１）のステップ２６６又はステップ２７６の処理が行われることで、前記個々の画像処理モジュール３８から単位書込データ量又は単位読出データ量が通知される毎に、通知された単位書込データ量又は単位読出データ量が記憶されることで、通知された単位書込データ量又は単位読出データ量がバッファモジュール４０に設定される（図１３(Ｂ)の(1),(2)も参照）。
【００９５】
自モジュールと連結されている全ての画像処理モジュール３８から単位書込データ量又は単位読出データ量が通知され、通知された単位書込データ量及び単位読出データ量が各々設定されると、ステップ３６２の判定が肯定されてステップ３６４へ移行し、自モジュールと連結されている個々の画像処理モジュール３８によって各々設定された単位書込データ量及び単位読出データ量に基づいて、自モジュールのバッファ４０Ａの管理単位である単位バッファ領域のサイズを決定し、決定した単位バッファ領域のサイズを記憶する。単位バッファ領域のサイズとしては、自モジュールに設定された単位書込データ量及び単位読出データ量のうちの最大値が好適であるが、単位書込データ量を設定してもよいし、単位読出データ量（自モジュールの後段に複数の画像処理モジュール３８が連結されている場合は、個々の画像処理モジュール３８によって各々設定された単位読出データ量の最大値）を設定してもよいし、単位書込データ量と単位読出データ量（の最大値）の最小公倍数を設定してもよいし、この最小公倍数が所定値未満であれば最小公倍数を、最小公倍数が所定値以上であれば別の値（例えば上述した単位書込データ量及び単位読出データ量のうちの最大値、単位書込データ量、単位読出データ量（の最大値）の何れか）を設定するようにしてもよい。
【００９６】
次のステップ３６６では、自モジュールのバッファ４０Ａとして用いるメモリ領域が既に設けられているか否か判定する。この判定は、自モジュールがモジュール生成部４４によって生成された場合には否定され、ステップ３６８でバッファフラグに０を設定した後にステップ３７４へ移行する。また、自モジュールがアプリケーション３２によって生成され、画像データ供給部２２又は画像出力部２４として機能するバッファモジュール４０であった場合には、自モジュールのバッファ４０Ａとして用いるメモリ領域が既に存在しているので、ステップ３６６の判定が肯定されてステップ３７０へ移行し、先程ステップ３６４で決定した単位バッファ領域のサイズを、自モジュールのバッファ４０Ａとして用いる既設のメモリ領域のサイズに変更する。また、次のステップ３７２でバッファフラグに１を設定した後にステップ３７４へ移行する。
【００９７】
更に、ステップ３７４では自モジュールの後段の個々の画像処理モジュール３８に対応する有効データポインタを各々生成し、生成した有効データポインタを各々初期化する。この有効データポインタは、自モジュールの前段の画像処理モジュールによって自モジュールのバッファ４０Ａに書き込まれた画像データのうち、対応する後段の画像処理モジュール３８によって読み出されていない画像データ（有効データ）について、その先頭位置（次の読出開始位置）と末尾位置を各々指し示すポインタであり、ステップ３７４の初期化処理では通常、有効データが存在していないことを意味する特定の情報が設定されるが、自モジュールが自モジュールがアプリケーション３２によって生成され、画像データ供給部２２として機能するバッファモジュール４０であれば、自モジュールのバッファ４０Ａとして用いるメモリ領域には既に画像処理対象の画像データが書き込まれている場合があり、この場合には当該画像データの先頭位置及び末尾位置が後段の個々の画像処理モジュール３８に対応する有効データポインタに各々設定される。
【００９８】
以上の処理によりバッファモジュール４０における初期化処理が完了し、次のステップ３７６では初期化処理の完了をワークフロー管理部４６Ａへ通知する。また、ステップ３７８では、先のステップ３５６で初期設定を行った待ち要求数に０よりも大きい値が設定されているか否か判定する。判定が否定された場合はステップ３８０へ移行し、自モジュールの前段又は後段に連結されている画像処理モジュール３８から、当該画像処理モジュール３８を消去する処理を行うことを通知する消去通知を受信したか否か判定する。この判定も否定された場合はステップ３７８に戻り、何れかの判定が肯定される迄ステップ３７８，３８０を繰り返す。
【００９９】
一方、アプリケーション３２は、順次起動したモジュール生成部４４によって前述のモジュール生成処理（図３）が順次行われることで、必要とされる画像処理を行う画像処理部５０の構築が完了すると、ワークフロー管理部４６Ａのプログラムを実行するスレッド（又はプロセス又はオブジェクト）を起動することで、ワークフロー管理部４６Ａに対して画像処理部５０による画像処理の実行を指示する（図２のステップ１７６も参照）。
【０１００】
処理管理部４６のワークフロー管理部４６Ａは、プログラムが起動されることで図１４に示すブロック単位制御処理を行う。なお、このブロック単位処理は、図２のステップ１７８に示す画像処理部制御処理に対応している。ワークフロー管理部４６Ａはブロック単位処理において、画像処理部５０を構成する画像処理モジュール３８のうちの所定の画像処理モジュール３８に処理要求を入力することで、画像処理部５０による画像処理をブロック単位の実行形態で行わせるが、以下では画像処理部５０全体の動作説明に先立ち、個々のバッファモジュール４０のバッファ制御部４０Ｂによって行われる初期化処理完了以降の処理、個々の画像処理モジュール３８の制御部３８Ｂによって行われる画像処理モジュール制御処理について順に説明する。
【０１０１】
本実施形態では、画像処理モジュール３８が後段のバッファモジュール４０に画像データを書き込む場合には、画像処理モジュール３８からバッファモジュール４０へ書込要求が入力され、画像処理モジュール３８が前段のバッファモジュール４０から画像データを読み出す場合には、画像処理モジュール３８からバッファモジュール４０へ読出要求が入力される。このため、バッファモジュール４０のバッファ制御部４０Ｂは、自モジュールの前段の画像処理モジュール３８から書込要求が入力されるか、又は自モジュールの後段の画像処理モジュール３８からデータ要求が入力されると、割込が発生することで図６に示す要求受信割込処理を行う。なお、以下では割込発生を前提に説明するが、通常のプログラムのように関数やメソッドの呼び出しで処理が始まっても良い。その場合には、以下で説明するように要求を待ち行列にキューイングするのではなく、要求毎に処理が行われるよう構成しても良い。
【０１０２】
この要求受信割込処理では、まずステップ４００において、自モジュールに書込要求又はデータ要求を入力した要求元を識別する要求元識別情報と要求の種別（書込か読出か）を表す要求種別情報を要求情報として待ち行列の末尾に登録する。この待ち行列は、個々のバッファモジュール４０に割り当てられたメモリ上に各々形成される。また、次のステップ４０２では待ち要求数を１だけインクリメントし、要求受信割込処理を終了する。この要求受信割込処理により、特定のバッファモジュール４０の前段又は後段の画像処理モジュールから特定のバッファモジュール４０に書込要求又は読出要求が入力される毎に、入力された書込要求又は読出要求に対応する要求情報が特定のバッファモジュール４０に対応する待ち行列に順次登録されると共に、待ち要求数が１ずつインクリメントされることになる。
【０１０３】
また、上記の要求受信割込処理が実行されることで待ち要求数が１以上の値になると、バッファ制御処理（図５）のステップ３７８の判定が肯定されてステップ３８２へ移行し、待ち行列の先頭から要求情報を取り出す。次のステップ３８４では、ステップ３８２で取り出した要求情報に含まれる要求種別情報に基づいて、取り出した要求情報に対応する要求の種別（書込か読出か）を判定し、判定結果に応じて分岐する。要求の種別が読出であった場合には、ステップ３８４からステップ３８６へ移行し、図７に示すデータ書込処理を行う。
【０１０４】
データ書込処理では、まずステップ４１０において、バッファフラグに１が設定されているか否か、すなわち自モジュールがアプリケーション３２によって生成されたバッファモジュール４０か否か判定する。この判定が肯定された場合は、バッファ４０Ａとして用いるメモリ領域が既に確保されているので、何ら処理を行うことなくステップ４２２へ移行する。また、ステップ４１０の判定が否定された場合、すなわち自モジュールがモジュール生成部４４によって生成されたバッファモジュール４０であった場合にはステップ４１２へ移行し、自モジュールのバッファ４０Ａを構成する単位バッファ領域の中に、空き領域が有る単位バッファ領域（画像データが末尾まで書き込まれていない単位バッファ領域）が存在しているか否か判定する。
【０１０５】
モジュール生成部４４によって生成されたバッファモジュール４０は、当初はバッファ４０Ａとして用いるメモリ領域（単位バッファ領域）が確保されておらず、メモリ領域の不足が生ずる度に単位バッファ領域を単位として確保されるので、バッファモジュール４０に最初に書込要求が入力されたときにはバッファ４０Ａとして用いるメモリ領域（単位バッファ領域）が存在しておらず、この判定は否定される。また、後述する処理を経てバッファ４０Ａとして用いる単位バッファ領域が確保された後も、当該単位バッファ領域への画像データの書込に伴って当該単位バッファ領域が丁度満杯になった場合には上記判定は否定される。
【０１０６】
ステップ４１２の判定が否定された場合はステップ４１４へ移行し、待ち行列から取り出した要求情報に含まれる要求元識別情報に基づいて書込要求元の画像処理モジュール３８を認識し、書込要求元の画像処理モジュール３８によって設定された単位書込データ量を認識した後に、認識した単位書込データ量が、先のステップ３６４（図５）で決定した単位バッファ領域のサイズよりも大きいか否か判定する。この判定は、単位バッファ領域のサイズとして、自モジュールに設定された単位書込データ量及び単位読出データ量のうちの最大値、或いは自モジュールに設定された単位書込データ量を採用した場合には常に否定されてステップ４２０へ移行し、確保すべきメモリ領域のサイズ（単位バッファ領域のサイズ）をリソース管理部４６Ｂに通知すると共に、自モジュールのバッファ４０Ａとして用いるメモリ領域（画像データの保管に用いる単位バッファ領域）の確保をリソース管理部４６Ｂに要求する。これにより、リソース管理部４６Ｂによって単位バッファ領域が確保される。
【０１０７】
また、自モジュールのバッファ４０Ａを構成する単位バッファ領域の中に、空き領域有りの単位バッファ領域が存在していた場合には、ステップ４１２の判定が肯定されてステップ４１６へ移行し、前述したステップ４１４と同様にして書込要求元の画像処理モジュール３８によって設定された単位書込データ量を認識した後に、空き領域有りの単位バッファ領域における空き領域のサイズが認識した単位書込データ量以上か否か判定する。判定が肯定された場合は、自モジュールのバッファ４０Ａとして用いる単位バッファ領域を新たに確保する必要は無いので、何ら処理を行うことなくステップ４２２へ移行する。
【０１０８】
単位バッファ領域のサイズが単位書込データ量の整数倍である場合には、自モジュールの前段の画像処理モジュール３８から書込要求が入力される毎に、上記のようにステップ４１２，４１４の判定が各々否定されるか又はステップ４１２，４１６の判定が各々肯定され、バッファ４０Ａとして用いる単位バッファ領域のみが必要に応じて確保される。
【０１０９】
一方、単位バッファ領域のサイズが単位書込データ量の整数倍でない場合には、バッファ４０Ａ（単位バッファ領域）への単位書込データ量の画像データの書込が繰り返されることで、例として図８(Ａ)にも示すように、空き領域有りの単位バッファ領域における空き領域のサイズが単位書込データ量よりも小さい状態が生ずる（ステップ４１６の判定が肯定される）。また本実施形態では、単位バッファ領域のサイズとして、自モジュールに設定された単位読出データ量（又はその最大値）を採用することも可能であるが、そのサイズが単位書込データ量よりも小さい場合（ステップ４１４の判定が肯定される場合）には、書込要求が入力されたときに常に上記の状態が生じていることになる。
【０１１０】
上記のように、空き領域有りの単位バッファ領域における空き領域のサイズが単位書込データ量よりも小さい場合、単位書込データ量の画像データが書き込まれる領域が複数の単位バッファ領域に跨ることになるが、本実施形態では、バッファ４０Ａとして用いるメモリ領域を単位バッファ領域を単位として確保するので、異なるタイミングで確保した単位バッファ領域が実メモリ（メモリ１４）上で連続する領域であることは保証されない。このため、画像データが書き込まれる領域が複数の単位バッファ領域に跨る場合、すなわち、ステップ４１６の判定が否定されるかステップ４１４の判定が肯定された場合にはステップ４１８へ移行し、確保すべきメモリ領域のサイズとして単位書込データ量をリソース管理部４６Ｂに通知すると共に、書込用に用いるメモリ領域（書込用バッファ領域：図８(Ｂ)も参照）の確保をリソース管理部４６Ｂに要求する。そして、書込用バッファ領域を確保すると、次のステップ４２０でバッファ４０Ａとして用いる単位バッファ領域の確保を行う。
【０１１１】
ステップ４２２では、空き領域有りの単位バッファ領域における空き領域のサイズが単位書込データ量以上の場合は当該空き領域を書込領域とする一方、空き領域有りの単位バッファ領域における空き領域のサイズが単位書込データ量よりも小さい場合には、新たに確保した書込用バッファ領域を書込領域として、当該書込領域の先頭アドレスを書込要求元の画像処理モジュール３８へ通知すると共に、書込対象の画像データを通知した先頭アドレスから順に書き込むよう要請する。これにより、書込要求元の画像処理モジュール３８は、先頭アドレスが通知された書込領域（単位バッファ領域又は書込用バッファ領域）に画像データを書き込む（図８（Ｂ）も参照）。前述したように、画像データが書き込まれる領域が複数の単位バッファ領域に跨る場合は書込用バッファ領域を別途確保するので、画像データが書き込まれる領域が複数の単位バッファ領域に跨るか否かに拘わらず、書込要求元の画像処理モジュール３８への書込領域の通知は、上記のようにその先頭アドレスを通知するのみで済み、画像処理モジュール３８とのインタフェースが簡単になる。
【０１１２】
次のステップ４２４では、前段の画像処理モジュール３８による書込領域への画像データの書き込みが完了したか否か判定し、判定が肯定される迄ステップ４２４を繰り返す。前段の画像処理モジュール３８から書込完了が通知されると、ステップ４２４の判定が肯定されてステップ４２６へ移行し、上記の書込処理における書込領域が、先のステップ４１６で確保した書込用バッファ領域か否か判定する。判定が否定された場合は何ら処理を行うことなくステップ４３２へ移行するが、ステップ４２６の判定が肯定された場合はステップ４２８へ移行し、例として図８(Ｃ)に示すように、書込用バッファ領域に書き込まれた画像データを、空き領域有りの単位バッファ領域と、先のステップ４２２で確保した新たな単位バッファ領域に分けて複写する。またステップ４３０では、先のステップ４１８で書込用バッファ領域として確保したメモリ領域の先頭アドレスをリソース管理部４６Ｂへ通知して、当該メモリ領域の解放をリソース管理部４６Ｂに要求し、リソース管理部４６Ｂによって前記メモリ領域を開放させる。
【０１１３】
なお、ここでは必要な時に書込用バッファ領域を確保して、不要になったら直ぐに解放する態様を説明したが、保管用単位バッファ領域のサイズが単位書込データ量の整数倍になっていない場合には、書込用バッファ領域は必ず必要となるので、初期化時に確保しておき、バッファモジュール４０が消去される時に解放するよう構成しても良い。
【０１１４】
データ書込処理（図７）において、ステップ４２６の判定が否定されるか、又はステップ４３０でメモリ領域の解放を要求した後にリソース管理部４６Ｂから解放完了が通知されるとステップ４３２へ移行し、自モジュールの後段の個々の画像処理モジュール３８に対応する有効データポインタのうち、有効データの末尾位置を表すポインタを各々更新する（図８(Ｃ)も参照）。なお、上記のポインタ更新は、ポインタが指し示す有効データの末尾位置を単位書込データ量分だけ後へ移動させることによって成されるが、自モジュールの前段の画像処理モジュール３８によって今回書き込まれた画像データが処理対象の画像データの末尾に相当するデータであった場合には、前段の画像処理モジュール３８による書込処理完了時に、処理対象の画像データが終了したことを表す全体処理終了通知と共に、書き込んだ画像データのサイズが前段の画像処理モジュール３８から入力されるので、書込処理完了時に前段の画像処理モジュール３８から全体処理終了通知が入力された場合には、同時に通知されたサイズ分だけ有効データの末尾位置を後へ移動させることでポインタ更新が行われる。
【０１１５】
次のステップ４３４では、書込処理完了時に全体処理終了通知が入力されたか否かに基づいて、バッファ４０Ａへの処理対象の画像データの書込が終了したか否か判定する。判定が否定された場合は何ら処理を行うことなくステップ４３８へ移行するが、判定が肯定された場合はステップ４３６へ移行し、ステップ４３２で更新したポインタ（自モジュールの後段の個々の画像処理モジュール３８に対応する有効データポインタのうち有効データの末尾位置を表すポインタ）に対し、処理対象の画像データの末尾であることを表すデータ最終位置情報を付加した後にステップ４３８へ移行する。そしてステップ４３８では待ち要求数を１だけデクリメントし、データ書込処理を終了してバッファ制御処理（図５）のステップ３７８に戻る。
【０１１６】
またバッファ制御処理（図５）において、ステップ３８２で取り出した要求情報に対応する要求の種別が読出であった場合には、ステップ３８４からステップ３８８へ移行し、図９に示すデータ読込処理を行う。データ読出処理では、まずステップ４５０において、待ち行列から取り出した要求情報に含まれる要求元識別情報に基づいて読出要求元の画像処理モジュール３８を認識し、読出要求元の画像処理モジュール３８によって設定された単位読出データ量を認識すると共に、読出要求元の画像処理モジュール３８に対応する有効データポインタに基づいて、読出要求元の画像処理モジュール３８に対応する有効データのバッファ４０Ａ上での先頭位置及び末尾位置を認識する。次のステップ４５２では、ステップ４５０で認識した有効データの先頭位置及び末尾位置に基づいて、読出要求元の画像処理モジュール３８に対応する有効データ（読出要求元の画像処理モジュール３８が読出可能な画像データ）が単位読出データ量以上有るか否か判定する。
【０１１７】
判定が否定された場合はステップ４５４へ移行し、バッファ４０Ａに記憶されており読出要求元の画像処理モジュール３８が読出可能な有効データの末尾が処理対象の画像データの末尾か否か判定する。読出要求元の画像処理モジュール３８に対応する有効データがバッファ４０Ａに単位読出データ量以上記憶されているか、又は、バッファ４０Ａに記憶されている読出要求元の画像処理モジュール３８に対応する有効データが単位読出データ量未満であるものの、当該有効データの末尾が処理対象の画像データの末尾であった場合には、ステップ４５２又はステップ４５４の判定が肯定されてステップ４５６へ移行する。ステップ４５６では、先のステップ４５０で認識した有効データの先頭位置に基づいて、有効データの先頭部分の画像データを記憶している単位バッファ領域を認識し、認識した単位バッファ領域に記憶されている有効データのデータ量がステップ４５０で認識した単位読出データ量以上か否かを判断することで、今回の読出対象の有効データが複数の単位バッファ領域に跨っているか否か判定する。
【０１１８】
ステップ４５６の判定が否定された場合は何ら処理を行うことなくステップ４６０へ移行するが、例として図１０(Ａ)に示すように、有効データの先頭部分の画像データを記憶している単位バッファ領域に記憶されている有効データのデータ量が単位読出データ量未満であり、今回の読出対象の有効データが複数の単位バッファ領域に跨っている場合、今回の読出対象の有効データが実メモリ（メモリ１４）上で連続する領域に記憶されているとは限らない。このため、ステップ４５６の判定が肯定された場合はステップ４６０へ移行し、確保すべきメモリ領域のサイズとして読出要求元の画像処理モジュール３８に対応する単位読出データ量をリソース管理部４６Ｂに通知すると共に、読出に用いるメモリ領域（読出用バッファ領域：図８(Ｂ)も参照）の確保をリソース管理部４６Ｂに要求する。また、読出用バッファ領域を確保すると、次のステップ４６０で複数の単位バッファ領域に跨って記憶されている読出対象の有効データを、ステップ４５８で確保した読出用バッファ領域に複写する（図１０(Ｂ)も参照）。
【０１１９】
ステップ４６２では、読出対象の有効データが単一の単位バッファ領域に記憶されている場合は、当該単位バッファ領域のうち読出対象の有効データが記憶されている領域を読出領域とする一方、読出対象の有効データが複数の単位バッファ領域に跨って記憶されている場合には読出用バッファ領域を読出領域とし、当該読出領域の先頭アドレスを読出要求元の画像処理モジュール３８へ通知すると共に、通知した先頭アドレスから画像データを順に読み出すよう要請する。これにより、読出要求元の画像処理モジュール３８は、先頭アドレスが通知された読出領域（単位バッファ領域又は読出用バッファ領域）からの画像データの読み出しを行う（図１０（Ｃ）も参照）。なお、読出対象の有効データが処理対象の画像データの末尾に相当するデータであった場合（読出対象の有効データの末尾位置が、読出要求元の画像処理モジュール３８に対応する有効データポインタが指し示す有効データの末尾位置に一致しており、かつ前記ポインタにデータ最終位置情報が付加されていた場合）には、画像データの読出要請に際し、読出対象の有効データのサイズと共に、処理対象の画像データの末尾であることも読出要求元の画像処理モジュール３８に通知する。
【０１２０】
前述したように、読出対象の有効データが複数の単位バッファ領域に跨って記憶されている場合は、別途確保した読出用バッファ領域に読出対象の有効データを複写するので、読出対象の有効データが複数の単位バッファ領域に跨って記憶されているか否かに拘わらず、読出要求元の画像処理モジュール３８への読出領域の通知は、上記のようにその先頭アドレスを通知するのみで済み、画像処理モジュール３８とのインタフェースが簡単になる。なお、自モジュールがアプリケーション３２によって生成されたバッファモジュール４０である場合は、バッファ４０Ａとして用いているメモリ領域（単位バッファ領域の集合体）は連続領域であるので、ステップ４５６の判定を行う前にバッファフラグが１か否か判定し、判定が肯定された場合は読出対象の有効データが複数の単位バッファ領域に跨って記憶されているか否かに拘わらずステップ４６２へ移行するようにしてもよい。
【０１２１】
次のステップ４６４では、読出要求元の画像処理モジュール３８による読出領域からの画像データの読み出しが完了したか否か判定し、判定が肯定される迄ステップ４６４を繰り返す。読出要求元の画像処理モジュール３８から読出完了が通知されると、ステップ４６４の判定が肯定されてステップ４６６へ移行し、上記の読出処理における読出領域が、先のステップ４５８で確保した読出用バッファ領域か否か判定する。判定が否定された場合は何ら処理を行うことなくステップ４７０へ移行するが、ステップ４６６の判定が肯定された場合はステップ４６８へ移行し、先のステップ４５８で読出用バッファ領域として確保したメモリ領域の先頭アドレス及びサイズをリソース管理部４６Ｂへ通知して、当該メモリ領域の解放をリソース管理部４６Ｂに要求する。この読出用バッファ領域についても書込用バッファ領域と同様に、保管用単位バッファ領域のサイズが単位読出データ量の整数倍になっていない場合には、読出用バッファ領域は必ず必要となるので、初期化時に確保しておき、バッファモジュール４０が消去される時に解放するよう構成しても良い。
【０１２２】
次のステップ４７０では、読出要求元の画像処理モジュール３８に対応する有効データポインタのうち、有効データの先頭位置を表すポインタを更新する（図１０(Ｃ)も参照）。なお、上記のポインタ更新は、ポインタが指し示す有効データの先頭位置を単位読出データ量分だけ後へ移動させることによって成されるが、今回の読出対象の有効データが処理対象の画像データの末尾に相当するデータであった場合には、読出要求元の画像処理モジュール３８へも通知した今回の読出対象の有効データのサイズ分だけ有効データの先頭位置を後へ移動させることでポインタ更新が行われる。
【０１２３】
ステップ４７２では、後段の個々の画像処理モジュール３８に対応する有効データポインタを各々参照し、ステップ４７０のポインタ更新により、バッファ４０Ａを構成する単位バッファ領域の中に、記憶している画像データの後段の各画像処理モジュール３８による読み出しが全て完了した単位バッファ領域、すなわち有効データを記憶していない単位バッファ領域が出現したか否か判定する。判定が否定された場合は何ら処理を行うことなくステップ４７８へ移行するが、判定が肯定された場合はステップ４７４へ移行し、バッファフラグが１か否か判定する。自モジュールがモジュール生成部４４によって生成されたバッファモジュール４０である場合は判定が否定されてステップ４７６へ移行し、有効データを記憶していない単位バッファ領域の解放をリソース管理部４６Ｂに要求する。
【０１２４】
なお、自モジュールがアプリケーション３２によって生成されたバッファモジュール４０である場合にはステップ４７４の判定が肯定され、何ら処理を行うことなくステップ４７８へ移行する。従って、ユーザによって指定されたバッファ領域（メモリ領域）をバッファ４０Ａとして用いている場合には、前記バッファ領域は解放されることなく保存されることになる。そしてステップ４７８では待ち要求数を１だけデクリメントし、データ読み出し処理を終了してバッファ制御処理（図５）のステップ３７８に戻る。
【０１２５】
一方、バッファ４０Ａに記憶されており読出要求元の画像処理モジュール３８が読出可能な有効データのデータ量が単位読出データ量未満であり、かつ読出可能な有効データの末尾が処理対象の画像データの末尾でない場合（図１３(Ｂ)の(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の制御部３８Ｂは後段のバッファモジュール４０1のバッファ４０Ａへの画像データの書き込みを完了すると、ワークフロー管理部４６Ａへ処理完了通知を入力する。
【０１４２】
ワークフロー管理部４６Ａは、画像処理モジュール３８から処理完了通知が入力される毎に、図１４(Ｃ)に示すブロック単位制御処理３を行う。このブロック単位制御処理３では、ステップ５２０において、処理完了通知元が画像処理部５０の最後段の画像処理モジュール３８か否か判定する。この場合は判定が否定されてステップ５２４へ移行し、ステップ５２４〜ステップ５２８の処理を行った後にブロック単位制御処理３を終了する（画像処理モジュール３８2，３８3から処理完了通知が入力された場合についても同様）。なお、ブロック単位制御処理３のステップ５２４〜ステップ５２８の処理については後述する。
【０１４３】
また、バッファモジュール４０1のバッファ制御部４０Ｂは、後段の画像処理モジュール３８2が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール３８2に対して読出を要請し、これに伴い画像処理モジュール３８2の制御部３８Ｂは、バッファモジュール４０1のバッファ４０Ａから単位読出データ量の画像データを読み出し（図１５の(13)参照）、取得した画像データに対して画像処理エンジン３８Ａが画像処理を行うことで得られた画像データを、後段のバッファモジュール４０2のバッファ４０Ａに書き込む（図１５の(14)参照）。バッファモジュール４０2のバッファ制御部４０Ｂは、後段の画像処理モジュール３８3が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール３８3へ読出を要請し、画像処理モジュール３８3の制御部３８Ｂは、バッファモジュール４０2のバッファ４０Ａから単位読出データ量の画像データを読み出し（図１５の(15)参照）、取得した画像データに対して画像処理エンジン３８Ａが画像処理を行うことで得られた画像データを、後段のバッファモジュール４０3のバッファ４０Ａに書き込む（図１５の(16)参照）。
【０１４４】
更に、バッファモジュール４０3のバッファ制御部４０Ｂは、後段の画像処理モジュール３８4が読出可能な単位読出データ量以上の有効データが書き込まれると画像処理モジュール３８4に対して読出を要請し、これに伴い画像処理モジュール３８4の制御部３８Ｂは、バッファモジュール４０3のバッファ４０Ａから単位読出データ量の画像データを読み出し（図１５の(17)参照）、取得した画像データに対して画像処理エンジン３８Ａが画像処理を行うことで得られた画像データを、後段のモジュールである画像出力部２４へ出力する（図１５の(18)参照）。また、画像処理モジュール３８4の制御部３８Ｂは後段の画像出力部２４への画像データの書き込みを完了すると、ワークフロー管理部４６Ａへ処理完了通知を入力する（図１５の(19)参照）が、この場合は前述のブロック単位制御処理３のステップ５２０の判定が肯定されてステップ５２２へ移行し、最後段の画像処理モジュール３８である画像処理モジュール３８4に処理要求を再度入力した後に処理を終了する。
【０１４５】
この最後段の画像処理モジュール３８4への処理要求の再入力により、上述した処理シーケンスが再度繰り返され、処理対象の画像データに対し、ブロック単位の実行形態での画像処理が順次行われることになる。画像データ供給部２２から供給される画像データが処理対象の画像データの末尾に達すると、個々の画像処理モジュール３８からワークフロー管理部４６Ａへの全体処理終了通知の入力が、前段側の画像処理モジュール３８から順次行われる。
【０１４６】
ワークフロー管理部４６Ａは、画像処理モジュール３８から全体処理終了通知が入力される毎に、図１４(Ｄ)に示すブロック単位制御処理４を行う。このブロック単位制御処理４では、ステップ５４０において、全体処理終了通知入力元の画像処理モジュール３８が最後段の画像処理モジュール３８か否か判定する。判定が否定された場合は何ら処理を行うことなく処理を終了するが、処理対象の画像データに対して必要な画像処理が行われた画像データが画像出力部２４へ全て出力されることで、最後段の画像処理モジュール３８から全体処理終了通知が入力された場合には、ステップ５４０の判定が肯定されてステップ５４２へ移行し、アプリケーション３２に対して画像処理の完了を通知し（図２のステップ１８０も参照）、ブロック単位制御処理を終了する。そして、画像処理の完了が通知されたアプリケーション３２は、ユーザに対して画像処理の完了を通知する（図２のステップ１８２も参照）。
【０１４７】
このように、ブロック単位処理では、最後段の画像処理モジュール３８に入力された処理要求がより前段の画像処理モジュール３８へ遡り、最前段の画像処理モジュール３８に到達すると、最前段の画像処理モジュール３８で画像処理が行われて後段のバッファモジュール４０にデータが書き込まれ、それでデータが足りるようならば処理が後段のモジュールへ進んで行くという流れで一連の画像処理が行われる。
【０１４８】
なお、ブロック単位処理における処理シーケンスは上記に限られるものではなく、バッファモジュール４０からデータ要求が入力される毎に、データ要求入力元のバッファモジュール４０に処理要求を入力することに代えて、まずブロック単位制御処理１で全ての画像処理モジュール３８に処理要求を各々入力し、特定の画像処理モジュールから全体処理完了通知が入力される迄の間、特定の画像処理モジュール３８から処理完了通知が入力される毎に、処理完了通知入力元の特定の画像処理モジュール３８に処理要求を再入力する処理を、全ての画像処理モジュールに対して各々行うようにしてもよい。
【０１４９】
ところで、本実施形態に係る画像処理部は、画像処理モジュール３８及びバッファモジュール４０がパイプライン形態又は有向非循環グラフ形態で連結されて構築されており、個々の画像処理モジュール３８は、前段に連結されたバッファモジュール４０に単位読出データ量以上の画像データが蓄積されないと自モジュールにおける画像処理を開始できない（但し、画像データ供給部２２に連結された最前段の画像処理モジュール３８を除く）ので、個々の画像処理モジュール３８における画像処理の進行は、より前段に位置している画像処理モジュール３８における画像処理の進行状況に依存し、特に画像処理部における一連の画像処理の実行開始時やその付近の期間には、各画像処理モジュールのうち、パイプライン形態又は有向非循環グラフ形態において前段側に位置している画像処理モジュールにおける画像処理を優先的に実行した方が処理効率が向上する。
【０１５０】
また、画像処理モジュール３８及びバッファモジュール４０がパイプライン形態又は有向非循環グラフ形態で連結された構成では、前段側の画像処理モジュール３８よりも後段側の画像処理モジュール３８の方が画像処理の進行が常に後になり、処理対象の画像データの残量も後段側の画像処理モジュール３８の方が常に多くなるので、画像処理部における一連の画像処理の進行に伴って、後段側に位置している画像処理モジュールにおける画像処理の実行優先度を高くしていった方が処理効率が向上し、特に画像処理部における一連の画像処理の実行終了時やその付近の期間には、全体処理が終了した画像処理モジュール３８が前段側から徐々に増えてくることに伴い、後段側に位置している画像処理モジュールにおける画像処理の実行優先度をより高くすることが処理効率の点から望ましい。
【０１５１】
上記に基づき、本第１実施形態に係るワークフロー管理部４６Ａは、アプリケーション３２によって起動された際に実行するブロック単位制御処理１（図１４(Ａ)参照）のステップ５０２において、個々の画像処理モジュール３８のプログラムを実行する個々のスレッドの実行優先度が、例として図１６(Ａ)に示すように、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール３８の位置が前段側になるに従って高くなるように、前記個々のスレッドの実行優先度の初期設定を行う。
【０１５２】
なお、上記の「画像処理モジュール３８の位置」は、例えば画像処理部がパイプライン形態であれば、図１７(Ａ)に示すように先頭（最前段）の画像処理モジュール３８から昇順に付した位置値（或いは最後尾（最後段）の画像処理モジュール３８から降順に付した位置値）に基づいて判断することができ、画像処理部が有向非循環グラフ形態であれば、図１７(Ｂ)に示すように先頭（最前段）の画像処理モジュール３８から昇順に（或いは最後尾（最後段）の画像処理モジュール３８から降順に）位置値を付すと共に、バッファモジュールを介して複数の画像処理モジュールから画像データを取得する画像処理モジュール３８（図１７(Ｂ)の例では画像処理モジュールＥ）については、前段の複数の画像処理モジュールに付した位置値の最大値（又は最小値）に基づいて位置値を付し、この位置値に基づいて判断することができる。
【０１５３】
また、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール３８の位置が前段側になるに従って、対応するスレッドの実行優先度を高くすることは、例えば画像処理モジュールに対応するスレッドに設定可能な実行優先度が１〜９の９段階であり、個々の画像処理モジュール３８に対して位置値を前段側から初期値＝１で昇順に付したとすると、個々の画像処理モジュール３８に対応するスレッドに対し、
実行優先度＝１０−（位置値）    但し、実行優先度＜１の場合は実行優先度＝１
に設定してもよいし、位置値が最小値のときには実行優先度が「９」となり、位置値が最大値のときには実行優先度が「１」となるような特定の単調減少関数（例えば位置値の増大に対して実行優先度が線形に減少する関数）を用いて実行優先度を設定するようにしてもよい。これにより、画像処理部で一連の画像処理が開始される時点で、パイプライン形態又は有向非循環グラフ形態の連結形態における対応する画像処理モジュール３８の位置が前段側のスレッド程、高い実行優先度でＣＰＵ１２によって実行されることになり、ＣＰＵ１２を有効に利用して高い処理効率で画像処理を行うことができる。
【０１５４】
また、本第１実施形態に係るワークフロー管理部４６Ａは、画像処理モジュール３８から処理完了通知が入力される毎に実行するブロック単位制御処理３（図１４(Ｃ)参照）において、ステップ５２４で画像処理部全体としての画像処理の進行度合を判定する。この判定は、例えば個々の画像処理モジュール３８からワークフロー管理部４６Ａへ処理完了通知が送信される際に、個々の画像処理モジュール３８における画像処理の進行度合を判断可能な進行度合情報も併せて送信されるように個々の画像処理モジュール３８を構成すると共に、ワークフロー管理部４６Ａは、個々の画像処理モジュール３８から処理完了通知を受信する毎に、同時に受信した進行度合情報を保持し（同一の画像処理モジュール３８から以前に受信した進行度合情報を既に保持している場合は、既に保持している進行度合情報を新たに受信した進行度合情報で上書きし）た後に、個々の画像処理モジュール３８に対応する進行度合情報から画像処理部全体としての画像処理の進行度合を集計することによって行うことができる。
【０１５５】
上記の進行度合情報は、導出にあたって画像処理モジュール３８（に対応するスレッドを実行するＣＰＵ１２）に加わる負荷がなるべく小さい情報であることが好ましく、例えば処理対象の画像データ全体に対する個々の画像処理モジュール３８の処理済み画像データの割合（詳しくはデータ量の割合やライン数の割合等）を表す情報を用いることができる。また、個々の画像処理モジュール３８からは進行度合情報として処理済み画像データのデータ量やライン数を表す情報を送信させ、個々の画像処理モジュール３８における画像処理の進行度合（上記の割合等）はワークフロー管理部４６Ａで演算するようにしてもよい。
【０１５６】
次のステップ５２６では、ステップ５２４で判定した画像処理部全体としての画像処理の進行度合が、個々の画像処理モジュール３８に対応するスレッドの実行優先度を変更すべき値になったか否か判定する。なお、スレッドの実行優先度の変更は頻繁に行う必要はなく、実行優先度の変更は頻繁に行うことでＣＰＵ１２に余分な負荷が加わることを回避するために、ステップ５２６の判定における判定条件としては、例えばスレッドの実行優先度の変更（又は初期設定）を前回行ってから画像処理の進行度合が１０％増加する毎に上記判定が肯定される等のように、余分な負荷にならない程度に疎な間隔でスレッドの実行優先度が変更される判定条件を用いればよい。
【０１５７】
上記判定が否定された場合は何ら処理を行うことなくブロック単位制御処理３を終了するが、上記判定が肯定された場合は、ステップ５２８において、初期設定時に各スレッドに設定した実行優先度の中央値（又は平均値）を基準として、初期設定時に高い実行優先度を設定したスレッドについては画像処理の進行に伴って実行優先度が徐々に低下し、初期設定時に低い実行優先度を設定したスレッドについては画像処理の進行に伴って実行優先度が徐々に増大するように、個々の画像処理モジュール３８に対応するスレッドの実行優先度を変更設定した後にブロック単位制御処理３を終了する。
【０１５８】
なお、このステップ５２８における実行優先度の変更は、画像処理モジュール３８の位置が最前段又は最後段に近づくに従って対応するスレッドの実行優先度の変更量を多くし、例として図１６(Ｂ),(Ｃ)に示すように、画像処理部全体としての画像処理の終盤には前段側の画像処理モジュール３８に対応するスレッドの実行優先度と後段側の画像処理モジュール３８に対応するスレッドの実行優先度の大小関係が逆転するように行ってもよいし、例として図１６(Ｄ),(Ｅ)に示すように、画像処理部全体としての画像処理の終盤には各画像処理モジュール３８に対応するスレッドの実行優先度が一定となるように行ってもよい。画像処理部における一連の画像処理の進行に伴って、個々の画像処理モジュール３８に対応するスレッドの実行優先度を上記のように変更することで、ＣＰＵ１２を有効に利用して高い処理効率で画像処理を行うことができる。
【０１５９】
なお、個々の画像処理モジュール３８に対応するスレッドの実行優先度を上記のように初期設定及び変更することは、請求項１に記載の優先度制御手段に相当する処理であり、本第１実施形態において、ワークフロー管理部４６Ａ（のプログラムを実行するＣＰＵ１２）は請求項１に記載の優先度制御手段としても機能する。
【０１６０】
なお、上記では最後段の画像処理モジュール３８への処理要求の入力はワークフロー管理部４６Ａが行うものとして説明したが、本発明はこれに限定されるものではなく、パイプラインの最後段又は有向非循環グラフの複数の終点に位置するモジュールをワークフロー管理部４６Ａが保持して処理要求を行っても、またはアプリケーション３２が保持して処理要求を行っても良い。或いは、前述した図４(Ｂ)の例のように、モジュール生成部４４の内部で、スキュー角検知処理を行う画像処理モジュールと、画像回転処理を行う画像処理モジュールとを組み合わせて、スキュー補正処理モジュールとするような場合には、画像回転処理モジュールの生成時に処理パラメータとしてスキュー角情報が必要なので、スキュー補正モジュール生成部の内部で、スキュー角検知処理モジュールに処理要求を繰り返し行って画像全体を処理し、その結果得られるスキュー角情報を画像回転処理モジュールに処理パラメータとして与えるといった方式も存在する。
【０１６１】
続いて、処理対象の画像データに対する画像処理を完了した後に行われる画像処理部５０の消去について説明する。個々の画像処理モジュール３８の制御部３８Ｂは、画像処理モジュール制御処理（図１２）のステップ３０８で、ワークフロー管理部４６Ａ及び後段のモジュールへ全体処理終了通知を出力した後に、次のステップ３１０において自モジュール消去処理を行う。この自モジュール消去処理では、先のステップ２５４（図１１）で確保したメモリ領域をリソース管理部４６Ｂによって解放させると共に、リソース管理部４６Ｂを通じて自モジュールが確保したメモリ以外のリソースが有れば、当該リソースをリソース管理部４６Ｂによって解放させ、自モジュールの前段のモジュール、後段のモジュール及びワークフロー管理部４６Ａに対し、自モジュールを消去する処理を行うことを通知するための消去通知を入力した後に、自モジュールを消去する処理が行われる。なお、自モジュールを消去することは、自モジュールに対応するスレッド（又はプロセス）を終了するか、又はオブジェクトを削除することで実現することができる。
【０１６２】
なお、バッファモジュール４０のバッファ制御部４０Ｂによって行われるバッファ制御処理（図５）では、自モジュールの前段又は後段の画像処理モジュール３８から消去通知が入力されると、ステップ３８０の判定が肯定されてステップ３９０へ移行し、消去通知入力元のモジュールを記憶した後に、自モジュールの前段及び後段の全てのモジュールから消去通知が入力されたか否か判定する。判定が否定された場合はステップ３７８へ戻り、先にも説明したようにステップ３７８，３８０を繰り返す。また、自モジュールの前段及び後段の全てのモジュールから消去通知が入力されると、ステップ３９０の判定が肯定されてステップ３９２へ移行し、ワークフロー管理部４６Ａに対して消去通知を入力することで、自モジュールを消去する処理を行うことを通知する。そして次のステップ３９４で自モジュールを消去する処理を行ってバッファ制御処理（図５）を終了する。
【０１６３】
なお、上記の第１実施形態では、画像処理モジュール３８から処理完了通知を受信する毎に、画像処理部全体としての画像処理の進行度合を判定していたが、これに限定されるものではなく、画像処理モジュールからの処理完了通知の受信とは無関係に、一定時間が経過する毎に画像処理の進行度合を判定し、必要に応じて各画像処理モジュール３８に対応するスレッドの実行優先度の変更設定を行うようにしてもよい。
【０１６４】
〔第２実施形態〕
次に本発明の第２実施形態について説明する。なお、本第２実施形態は第１実施形態と同一の構成であるので各部分に同一の符号を付して構成の説明を省略し、以下、第２実施形態の作用として、ワークフロー管理部４６Ａによるブロック単位制御処理（各画像処理モジュール３８に対応するスレッドの実行優先度の初期設定及び変更）について、第１実施形態と異なる部分についてのみ説明する。
【０１６５】
本第２実施形態に係るワークフロー管理部４６Ａは、アプリケーション３２によって起動された際に実行するブロック単位制御処理１（図１８(Ａ)参照）のステップ５０２において、第１実施形態と同様に個々の画像処理モジュール３８のプログラムを実行する個々のスレッドの実行優先度が、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール３８の位置が前段側になるに従って高くなるように、前記個々のスレッドの実行優先度の初期設定を行う。
【０１６６】
また、第２実施形態に係るワークフロー管理部４６Ａは、個々の画像処理モジュール３８について、後段のバッファモジュール４０を介して後段に連結された画像処理モジュール３８（位置値＝自モジュールの位置値＋１の画像処理モジュール３８）から前記後段のバッファモジュール４０に読出要求が入力されたものの、前記後段のバッファモジュール４０に記憶されている有効データが単位読出データ量未満であったために、前記後段のバッファモジュール４０からデータ要求が入力されると共に、前記後段の画像処理モジュールに「待ち」（バッファモジュール４０の有効データが単位読出データ量以上となる迄待機する状況）を発生させた回数（この回数は請求項２に記載の「画像データの取得失敗回数」に相当する）を待ち発生回数として各々保持しており（各画像処理モジュール３８の待ち発生回数の初期値＝０）。そして、任意のバッファモジュール４０からデータ要求が入力される毎に実行するブロック単位制御処理２（図１８(Ｂ)参照）において、ステップ５１０でデータ要求入力元のバッファモジュール４０の前段の画像処理モジュール３８に処理要求を入力した後に、次のステップ５１２において、データ要求入力元のバッファモジュール４０の前段の画像処理モジュール３８についての待ち発生回数を１だけインクリメントして処理を終了する。
【０１６７】
また、第２実施形態に係るワークフロー管理部４６Ａは、画像処理モジュール３８から処理完了通知を受信する毎に実行するブロック単位制御処理３において、第１実施形態で説明した画像処理の進行度合の判定及び各画像処理モジュール３８に対応するスレッドの実行優先度の変更（ステップ５２４〜ステップ５２８：図１４(Ｃ)参照）を行わない一方で、図１８(Ｅ)に示すブロック単位制御処理５を一定の時間周期で実行する。
【０１６８】
このブロック単位制御処理５では、まずステップ５５０において、各画像処理モジュール３８について各々保持している待ち発生回数を取り込み、取り込んだ各画像処理モジュール３８の待ち発生回数の平均値を演算する。そしてステップ５５２では、ステップ５５０で演算した待ち発生回数の平均値と、個々の画像処理モジュール３８の待ち発生回数の偏差に応じて、各画像処理モジュール３８に対応するスレッドの実行優先度を変更する。ステップ５５２における実行優先度の変更は、待ち発生回数が平均値よりも多い画像処理モジュール３８に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って増大し、待ち発生回数が平均値よりも少ない画像処理モジュール３８に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って低下するように行うことができ、具体的には、例えば以下の式に従って行うことができる。
【０１６９】
実行優先度の変更率(％)＝(待ち発生回数−待ち発生回数の平均値)／平均値×100
変更後の実行優先度＝実行優先度＋(実行優先度×変更率)／100
なお、上記演算に際し、待ち発生回数の平均値に代えて待ち発生回数の中央値を用いてもよい。
【０１７０】
待ち発生回数が平均値よりも多い画像処理モジュール３８は、後段のバッファモジュール４０を介して後段に連結された画像処理モジュール３８に比較的多数回の「待ち」を発生させており、当該画像処理モジュール３８における画像処理が画像処理部全体としての画像処理のボトルネックになっていると判断できるが、ステップ５５２では、このような画像処理モジュール３８に対応するスレッドの実行優先度が増大される。また、待ち発生回数が平均値よりも少ない画像処理モジュール３８は、後段のバッファモジュール４０を介して後段に連結された画像処理モジュール３８における「待ち」の発生回数が比較的少ないので、当該画像処理モジュール３８よりも待ち発生回数が比較的多い他の画像処理モジュール３８における画像処理を優先させた方が画像処理部全体としての画像処理を効率化できるが、ステップ５５２では、このような画像処理モジュール３８に対応するスレッドの実行優先度が低下される。
【０１７１】
本第２実施形態では、上記のブロック単位制御処理５が一定の時間周期で実行されることで、個々の画像処理モジュール３８に対応するスレッドの実行優先度が、例として図１９にも示すように、後段の画像処理モジュール３８における待ち発生回数（と待ち発生回数の平均値との偏差）に応じて最適化されることになり、ＣＰＵ１２を有効に利用して高い処理効率で画像処理を行うことができる。なお、個々の画像処理モジュール３８に対応するスレッドの実行優先度を上記のように初期設定及び変更することは、請求項２，４記載の優先度制御手段に相当する処理であり、本第２実施形態において、ワークフロー管理部４６Ａ（のプログラムを実行するＣＰＵ１２）は請求項２，４に記載の優先度制御手段としても機能する。
【０１７２】
なお、第２実施形態では個々の画像処理モジュール３８における待ち発生回数として、後段のバッファモジュール４０からデータ要求が入力された回数、すなわち後段のバッファモジュール４０を介して後段に連結された画像処理モジュール３８で「待ち」が発生した回数を用いていたが、当該回数に、個々の画像処理モジュール３８が後段のバッファモジュール４０へ画像データを書き込んだものの後段のバッファモジュール４０の有効データが、後段の画像処理モジュール３８の単位読出データ量に達しなかった回数を加算した回数を待ち発生回数として用いるようにしてもよい。この場合、待ち発生回数が、後段の画像処理モジュール３８における「待ち」の度合いをより正確に反映した値となるので好ましい。
【０１７３】
また、本第２実施形態では、上記のように「待ち発生回数」に基づいて各画像処理モジュール３８に対応するスレッドの実行優先度を変更するので、ブロック単位制御処理１（図１８(Ａ)参照）のステップ５０２における実行優先度の初期設定を省略したとしても、ブロック単位制御処理５が数回繰り返されることで、画像処理部における画像処理の開始当初の期間の各画像処理モジュール３８に対応するスレッドの実行優先度は、図１６(Ａ)に示すように、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール３８の位置が前段側になるに従って高くなるように最適化されることになる。従って、本第２実施形態において、ブロック単位制御処理１（図１８(Ａ)参照）のステップ５０２における実行優先度の初期設定は省略してもよい。但し、この実行優先度の初期設定を行った場合、画像処理部における画像処理の開始時点で個々の画像処理モジュール３８に対応するスレッドの実行優先度が既に最適化されていることになるので、実行優先度の初期設定を省略した場合よりも処理効率を向上させることができる。
【０１７４】
また、本第２実施形態では、後段のバッファモジュール４０を介して連結された後段の画像処理モジュール３８における「待ち」の発生回数に応じて、個々の画像処理モジュール３８に対応するスレッドの実行優先度を変更していたが、これに加え、自モジュールのおける「待ち」の発生回数に応じてスレッドの実行優先度を変更する（詳しくは、待ち発生回数が比較的多い画像処理モジュール３８に対応するスレッドは実行優先度を低下させ、待ち発生回数が比較的少ない画像処理モジュール３８に対応するスレッドは実行優先度を増大させる）ようにしてもよい。
【０１７５】
〔第３実施形態〕
次に本発明の第３実施形態について説明する。なお、本第３実施形態は第１実施形態と同一の構成であるので各部分に同一の符号を付して構成の説明を省略し、以下、第３実施形態の作用として、ワークフロー管理部４６Ａによるブロック単位制御処理（各画像処理モジュール３８に対応するスレッドの実行優先度の初期設定及び変更）について、第２実施形態と異なる部分についてのみ説明する。
【０１７６】
本第３実施形態に係るワークフロー管理部４６Ａは、第２実施形態で説明したブロック単位制御処理５（図１８(Ｅ)参照）に代えて、図２０に示すブロック単位制御処理５を一定の時間周期で行う。このブロック単位制御処理５では、まずステップ５６０において、各バッファモジュール４０に対して現在の蓄積データ量（有効データのデータ量）を問い合わせることで、各バッファモジュール４０の現在の蓄積データ量を取得する。なお、蓄積データ量はバイト数で表される値であってもよいし、画像のライン数で表される値であってもよい。ステップ５６２では、個々のバッファモジュール４０について、後段の画像処理モジュール３８の単位読出データ量に対する各バッファモジュール４０の現在の蓄積データ量の比率を演算する。例えば蓄積データ量が画像のライン数で表される値であり、或るバッファモジュール４０における蓄積データ量が「１０ライン」、当該バッファモジュール４０の後段の画像処理モジュール３８の単位読出データ量が「１ライン」であるとすると蓄積データ量の比率は10/1＝10となり、後段の画像処理モジュール３８の単位読出データ量が「８ライン」であるとすると蓄積データ量の比率は10/8＝1.25となる。
【０１７７】
次のステップ５６４では、ステップ５７２で各バッファモジュール４０毎に演算した蓄積データ量の比率の平均値を演算する。そしてステップ５６６では、ステップ５６４で演算した蓄積データ量の比率の平均値と、個々のバッファモジュール４０の蓄積データ量の比率の偏差に応じて、個々のバッファモジュール４０の前段の各画像処理モジュール３８に対応するスレッドの実行優先度を変更する。ステップ５６６における実行優先度の変更は、蓄積データ量の比率が平均値よりも少ないバッファモジュール４０の前段の画像処理モジュール３８に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って増大し、蓄積データ量の比率が平均値よりも少ないバッファモジュールの前段の画像処理モジュール３８に対しては、対応するスレッドの実行優先度が上記偏差が大きくなるに従って増大するように行うことができ、具体的には、例えば以下の式に従って行うことができる。
【０１７８】
実行優先度の変更率(％)＝(平均値−蓄積データ量の比率)／平均値×100
変更後の実行優先度＝元の実行優先度＋(実行優先度×変更率)／100
なお、上記演算に際し、蓄積データ量の比率の平均値に代えて蓄積データ量の比率の中央値を用いてもよい。
【０１７９】
蓄積データ量の比率が平均値よりも小さいバッファモジュール４０は、後段の画像処理モジュール３８における単位読出データ量に比して有効データのデータ量が乏しく、後段の画像処理モジュール３８で比較的多数回の「待ち」が発生している可能性が高く、また当該バッファモジュール４０の前段の画像処理モジュール３８における画像処理が画像処理部全体としての画像処理のボトルネックになっている可能性が高いが、ステップ５６６ではこのような画像処理モジュール３８に対応するスレッドの実行優先度が増大される。また、蓄積データ量の比率が平均値よりも大きいバッファモジュール４０には、後段の画像処理モジュール３８における単位読出データ量に比して十分なデータ量の有効データが記憶されているので、当該バッファモジュールの前段の画像処理モジュール３８よりも、蓄積データ量の比率が比較的小さい他のバッファモジュール４０の前段の画像処理モジュール３８における画像処理を優先させた方が画像処理部全体としての画像処理を効率化できるが、ステップ５６６ではこのような画像処理モジュール３８に対応するスレッドの実行優先度が低下される。
【０１８０】
本第３実施形態では、上記のブロック単位制御処理５が一定の時間周期で実行されることで、個々の画像処理モジュール３８に対応するスレッドの実行優先度が、例として図１９にも示すように、後段のバッファモジュール４０における蓄積データ量の比率（と蓄積データ量の比率の平均値との偏差）に応じて最適化されることになり、ＣＰＵ１２を有効に利用して高い処理効率で画像処理を行うことができる。なお、個々の画像処理モジュール３８に対応するスレッドの実行優先度を上記のように初期設定及び変更することは、請求項３，４記載の優先度制御手段に相当する処理であり、本第３実施形態において、ワークフロー管理部４６Ａ（のプログラムを実行するＣＰＵ１２）は請求項３，４に記載の優先度制御手段としても機能する。
【０１８１】
また、本第３実施形態においても、第２実施形態と同様に実行優先度の初期設定は省略してもよいが、実行優先度の初期設定を行った方が処理効率を向上させることができるので好ましい。
【０１８２】
〔第４実施形態〕
次に本発明の第４実施形態について説明する。なお、本第４実施形態において、第１実施形態と同一の部分には同一の符号を付してて説明を省略する。図２１に示すように、本第４実施形態に係るコンピュータ１０のＣＰＵ１２には、ＭＭＸ用の演算器やＳＳＥ用の演算器等から成る高速演算器１２Ａが設けられている。高速演算器１２Ａは本発明に係る高速演算器に対応している。なお、本発明に係る高速演算器は上記のようにＣＰＵに設けられた高速演算器に限られるものではなく、例えばＣＰＵ１２と別に設けられたＤＳＰ等の他の演算器を本発明に係る高速演算器として用いることも可能である。
【０１８３】
また、第１〜第３実施形態では、記憶部２０に記憶されているモジュールライブラリ３６に、個々の画像処理モジュールを実現するためのプログラムとして、ＣＰＵ１２で実行するためのプログラムのみが記憶されていたが、本第４実施形態に係る記憶部２０に記憶されているモジュールライブラリ３６には、個々の画像処理モジュールを実現するためのプログラムとして、ＣＰＵ１２で実行するための第１のプログラムと、高速演算器１２Ａで実行するための第２のプログラムが各々記憶されており、モジュール生成部４４は、対応する画像処理モジュール３８の生成時に、対応する画像処理モジュール３８の第１のプログラムをＣＰＵ１２によって実行するＣＰＵスレッドと、対応する画像処理モジュール３８の第２のプログラムを高速演算器１２Ａによって実行する高速演算器スレッドを各々生成する。なお、同一の画像処理モジュール３８に対応するＣＰＵスレッドと高速演算器スレッドは、排他制御に利用可能な公知のmutex(MUTualEXclusionservice)等の技術を利用して、排他的に実行される（同時に実行されない）ように構成されている。
【０１８４】
以下、第４実施形態の作用として、ワークフロー管理部４６Ａによるブロック単位制御処理について、第１実施形態と異なる部分についてのみ説明する。
【０１８５】
本第４実施形態に係るワークフロー管理部４６Ａは、アプリケーション３２によって起動された際に実行するブロック単位制御処理１において、第１実施形態で説明したステップ５０２（図１４(Ａ)参照）に代えて、図２２(Ａ)に示すように、ステップ５０３で個々の画像処理モジュール３８に対応するＣＰＵスレッド及び高速演算器スレッドの実行優先度の初期設定を行う。ステップ５０３における実行優先度の初期設定は、例として図２３(Ａ)に示すように、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール３８の位置が前段側になるに従って、ＣＰＵスレッドの実行優先度が低くなる一方、高速演算器スレッドの実行優先度が高くなるように（請求項６等に記載の「第１プログラムの実行優先度に対する第２プログラムの実行優先度の比率」が高くなるように）、個々の画像処理モジュール３８のＣＰＵスレッド及び高速演算器スレッドの実行優先度が設定される。
【０１８６】
なお、前述のように、ＣＰＵスレッドと高速演算器スレッドは排他的に実行されるので、ステップ５０３では、高速演算器スレッドの実行優先度を中央値に対して所定レベル高く設定した画像処理モジュール３８は、ＣＰＵスレッドの実行優先度が中央値に対して所定レベル低くなり、ＣＰＵスレッドの実行優先度を中央値に対して所定レベル高く設定した画像処理モジュール３８は、高速演算器スレッドの実行優先度が中央値に対して所定レベル低くなるように設定される。これにより、画像処理部で一連の画像処理が開始される時点で、パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュール３８の位置が前段側になるに従って、対応するスレッドのうち高速演算器スレッドが高速演算器１２Ａで実行される確率が高くなり、ＣＰＵ１２よりも高速な高速演算器１２Ａを有効に利用して高い処理効率で画像処理を行うことができる。
【０１８７】
また、本第４実施形態に係るワークフロー管理部４６Ａは、画像処理モジュール３８から処理完了通知が入力される毎に実行するブロック単位制御処理３において、実行優先度を変更すべきタイミングが到来したと判断した場合（ステップ５２６の判定が肯定された場合）に、第１実施形態で説明したステップ５２８（図１４(Ｃ)参照）に代えて、図２２(Ｃ)に示すように、ステップ５２９で個々の画像処理モジュール３８に対応するＣＰＵスレッド及び高速演算器スレッドの実行優先度を変更する。ステップ５２８における実行優先度の変更は、図２３(Ｂ),(Ｃ)に示すように、初期設定時に各スレッドに設定した実行優先度の中央値（又は平均値）を基準として、初期設定時に高速演算器スレッドに高い実行優先度を設定した画像処理モジュール３８については、画像処理の進行に伴って高速演算器スレッドの実行優先度が徐々に低下し、かつＣＰＵスレッドの実行優先度が徐々に増大し、初期設定時に高速演算器スレッドに低い実行優先度を設定した画像処理モジュール３８については、画像処理の進行に伴って高速演算器スレッドの実行優先度が徐々に増大し、かつＣＰＵスレッドの実行優先度が徐々に低下するように行うことができる。
【０１８８】
画像処理部における一連の画像処理の進行に伴って、個々の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を上記のように変更することで、高速演算器１２Ａ（及びＣＰＵ１２）を有効に利用して高い処理効率で画像処理を行うことができる。なお、個々の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を上記のように初期設定及び変更することは、請求項６に記載の優先度制御手段に相当する処理であり、本第１実施形態において、ワークフロー管理部４６Ａ（のプログラムを実行するＣＰＵ１２）は請求項６に記載の優先度制御手段としても機能する。
【０１８９】
なお、本第４実施形態において、高速演算器スレッド及びＣＰＵスレッドの実行優先度の変更は、図２３(Ｂ),(Ｃ)に示すように、画像処理部全体としての画像処理の終盤には、個々の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度の大小関係が初期設定時と逆転するように行うことに限られるものではなく、先に説明した図１６(Ｄ),(Ｅ)と同様に、画像処理部全体としての画像処理の終盤には個々の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度が一定となるように行ってもよい。
【０１９０】
また、本第４実施形態では画像処理部全体としての画像処理の進行度合に応じて、個々の画像処理モジュールに対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を変更していたが、これに限定されるものではなく、第２実施形態と同様に、一定の時間周期で実行されるブロック単位制御処理５（図２４参照）において、個々の画像処理モジュール３８の待ち発生回数（後段のバッファモジュール４０を介して連結された後段の画像処理モジュール３８における「待ち」の発生回数：請求項７に記載の取得失敗回数に相当）に応じて、個々の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を変更するようにしてもよい（図２４のステップ５５３を参照）。なお、この態様は請求項７，９記載の発明に対応しており、この態様においてワークフロー管理部４６Ａ（のプログラムを実行するＣＰＵ１２）は請求項７，９に記載の優先度制御手段としても機能する。
【０１９１】
この態様における高速演算器スレッド及びＣＰＵスレッドの実行優先度の変更は、具体的には、待ち発生回数がステップ５５０（図２４参照）で演算した平均値よりも多い画像処理モジュール３８に対しては、待ち発生回数と平均値との偏差が大きくなるに従って、対応する高速演算器スレッドの実行優先度が増大する一方で対応するＣＰＵスレッドの実行優先度が低下し、待ち発生回数が平均値よりも少ない画像処理モジュール３８に対しては、待ち発生回数と平均値との偏差が大きくなるに従って、対応するＣＰＵスレッドの実行優先度が増大する一方で対応する高速演算器スレッドの実行優先度が低下するように行うことができる。この場合も高速演算器１２Ａ（及びＣＰＵ１２）を有効に利用して高い処理効率で画像処理を行うことができる。
【０１９２】
また、画像処理部全体としての画像処理の進行度合に応じて、個々の画像処理モジュールに対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を変更することに代えて、第３実施形態と同様に、一定の時間周期で実行されるブロック単位制御処理５（図２５参照）において、個々のバッファモジュール４０の蓄積データ量の比率の平均値と個々のバッファモジュール４０の蓄積データ量の比率との偏差に応じて、個々のバッファモジュール４０の前段の各画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を変更するようにしてもよい（図２５のステップ５６７を参照）。この態様は請求項８，９記載の発明に対応しており、この態様においてワークフロー管理部４６Ａ（のプログラムを実行するＣＰＵ１２）は請求項８，９に記載の優先度制御手段としても機能する。
【０１９３】
この態様における高速演算器スレッド及びＣＰＵスレッドの実行優先度の変更は、具体的には、蓄積データ量の比率がステップ５６４（図２５参照）で演算した蓄積データ量の比率の平均値よりも多いバッファモジュール４０の前段の画像処理モジュール３８に対しては、蓄積データ量の比率と平均値との偏差が大きくなるに従って、対応する高速演算器スレッドの実行優先度が増大する一方で対応するＣＰＵスレッドの実行優先度が低下し、蓄積データ量の比率が平均値よりも少ないバッファモジュール４０の前段の画像処理モジュール３８に対しては、蓄積データ量の比率と平均値との偏差が大きくなるに従って、対応するＣＰＵスレッドの実行優先度が増大する一方で対応する高速演算器スレッドの実行優先度が低下するように行うことができる。この場合も高速演算器１２Ａ（及びＣＰＵ１２）を有効に利用して高い処理効率で画像処理を行うことができる。
【０１９４】
更に、上記のように個々の画像処理モジュール３８の待ち発生回数に応じて画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を変更する態様（図２４の態様）や、バッファモジュール４０の蓄積データ量の比率に応じて前段の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度を変更する態様（図２５の態様）においても、ブロック単位制御処理５（図２４又は図２５）が繰り返し実行されることで個々の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度が最適化されるので、第２及び第３実施形態でも説明したように、個々の画像処理モジュール３８に対応する高速演算器スレッド及びＣＰＵスレッドの実行優先度の初期設定（図２２のステップ５０３）を省略することも可能である。
【０１９５】
また、第１〜第３実施形態ではプログラム実行リソースとしてＣＰＵ１２が１個のみ設けられ、第４実施形態ではプログラム実行リソースとしてＣＰＵ１２及び高速演算器１２Ａが各々１個ずつ設けられた構成を説明したが、これに限定されるものではなく、同一種のプログラム実行リソースが複数設けられた構成に適用することも可能である。
【０１９６】
また、この態様において、画像処理部における画像処理が進行し、画像処理が完了していない画像処理モジュール３８の数がＣＰＵ１２の総数以下となった場合（個々の画像処理モジュール３８に対応するプログラムとしてＣＰＵで実行するためのプログラムのみが各々用意されている場合）、或いは、画像処理が完了していない画像処理モジュール３８の数がプログラム実行リソースの総数（例えばＣＰＵ１２の数と高速演算器１２Ａの数の合計値）以下となった場合（個々の画像処理モジュール３８に対応するプログラムとしてＣＰＵで実行するためのプログラム及び高速演算器で実行するためのプログラムが各々用意されている場合）には、画像処理が完了していない個々の画像処理モジュールに対応する個々のスレッドが、互いに異なるプログラム実行リソースを占有できる状況となり、個々の画像処理モジュールに対応するスレッドによるプログラム実行リソースの奪い合いは生じないので、上記の場合に個々の画像処理モジュール３８に対応する各スレッドの実行優先度を変更する処理を終了するようにしてもよい。これにより、以降の期間におけるスレッドの実行優先度を変更する処理が画像処理部における画像処理に対するオーバヘッドとなることを防止することができ、画像処理の処理効率を更に向上させることができる。
【０１９７】
更に、上記では個々の画像処理モジュール３８に対応するスレッドの実行優先度の変更をワークフロー管理部４６Ａで行う態様を説明したが、これに限定されるものではなく、個々の画像処理モジュール３８に対応するスレッドが自スレッド（自プログラム）の実行優先度の変更を行うようにしてもよい。この態様において、画像処理モジュール３８の待ち発生回数又はバッファモジュール４０の蓄積データ量の比率に応じて実行優先度を変更する場合には、待ち発生回数又は蓄積データ量の比率の平均値（又は中央値）の演算はワークフロー管理部４６Ａ又はそれに類する処理部で一括して行い、個々のスレッドは、待ち発生回数又は蓄積データ量の比率の平均値（又は中央値）の演算結果を参照し、自スレッド（自プログラム）の実行優先度を判断・変更する構成とした方が、画像処理の処理効率を向上できるので好ましい。また、スレッドの実行優先度の変更することは、例えばスレッドを消去して再生成及びプログラム実行リソースの割り付けを行う際に異なる実行優先度を設定ことで行うことも可能である。
【０１９８】
また、上記では画像処理モジュール３８に対応するスレッドに対してのみ実行優先度を変更する態様を説明したが、これに限定されるものではなく、例えばバッファモジュール４０のバッファ制御部４０Ｂが実行するバッファ制御処理において、データ書込処理（図７）とデータ読出処理（図９）が別スレッドとして実行される構成であれば、例えばデータ書込処理に対応するスレッドの実行優先度は、バッファモジュール４０の前段の画像処理モジュール３８に対応するスレッドの実行優先度（或いはＣＰＵスレッドの実行優先度に対する高速演算器スレッドの実行優先度の比率）に連動させて変化させ、データ読出処理に対応するスレッドの実行優先度は、バッファモジュール４０の後段の画像処理モジュール３８に対応するスレッドの実行優先度（或いはＣＰＵスレッドの実行優先度に対する高速演算器スレッドの実行優先度の比率）に連動させて変化させる等のように、個々のバッファモジュール４０のバッファ制御部４０Ｂに対応するスレッドの実行優先度についても併せて変更するようにしてもよい。
【０１９９】
また、上記では、後段の画像処理モジュール３８からバッファモジュール４０に読出要求が入力されたものの、読出要求元の画像処理モジュール３８が読出可能な有効データのデータ量が単位読出データ量未満であり、かつ読出可能な有効データの末尾が処理対象の画像データの末尾でない場合に、読出可能な有効データのデータ量が単位読出データ量以上になるか、読出可能な有効データの末尾が処理対象の画像データの末尾であることが検知される迄、バッファモジュール４０からワークフロー管理部４６Ａへデータ要求が繰り返し入力される例を説明したが、これに限定されるものではなく、上記場合にバッファモジュール４０はワークフロー管理部４６Ａへデータ要求を１回のみ入力すると共に、読出可能な有効データのデータ量が単位読出データ量以上になるか、読出可能な有効データの末尾が処理対象の画像データの末尾であることが検知されるとワークフロー管理部４６Ａへ蓄積完了通知を入力し、ワークフロー管理部４６Ａはバッファモジュール４０からデータ要求が入力されてから蓄積完了通知が入力される迄の間、前記バッファモジュール４０の前段の画像処理モジュール３８へ処理要求を繰り返し入力するようにしてもよい。
【０２００】
更に、上記ではバッファモジュール４０において、後段の画像処理モジュール３８から読出要求が入力され、読出要求元の画像処理モジュール３８が読出可能な有効データが自モジュールのバッファ４０Ａに記憶されていなかった場合に、バッファ制御部４０Ｂがワークフロー管理部４６Ａへデータ要求を入力する態様を例に説明したが、これに限定されるものではなく、上記場合にバッファ制御部４０Ｂが前段の画像処理モジュール３８へデータ要求を直接入力するようにしてもよい。この態様の処理シーケンスを図２６に示す。図２６からも明らかなように、この態様において、ワークフロー管理部４６Ａは画像処理部５０のうち最後段の画像処理モジュール３８についてのみ処理要求を入力すれば済むので、ワークフロー管理部４６Ａにおける処理が簡単になる。
【０２０１】
また、上記ではブロック単位の画像処理の一例として、まずワークフロー管理部４６Ａが画像処理部５０の最後段の画像処理モジュール３８へ処理要求を入力し、この処理要求がデータ要求又は処理要求として順次前段のモジュールへ伝達される態様を説明したが、これに限定されるものではなく、処理要求又はデータ要求を前段のモジュールから後段のモジュールへ順次伝達させてブロック単位の画像処理を行わせることも可能である。これは、例えばバッファモジュール４０のバッファ制御部４０Ｂを、自モジュールの前段の画像処理モジュール３８によってバッファ４０Ａに画像データが書き込まれる毎に、後段の画像処理モジュール３８が読出可能な有効データのデータ量が単位読出データ量未満で、かつ読出可能な有効データの末尾が処理対象の画像データの末尾でなければワークフロー管理部４６Ａへデータ要求を入力する一方、読出可能な有効データのデータ量が単位読出データ量以上になるか、読出可能な有効データの末尾が処理対象の画像データの末尾であることが検知されるとワークフロー管理部４６Ａへ蓄積完了通知を入力するように構成すると共に、ワークフロー管理部４６Ａを、画像処理部５０の最後段の画像処理モジュール３８へ処理要求を入力した後に、任意のバッファモジュール４０からデータ要求が入力される毎に、データ要求元のバッファモジュール４０の前段の画像処理モジュール３８に処理要求を入力し、任意のバッファモジュール４０から蓄積完了通知が入力される毎に、当該バッファモジュール４０の後段の画像処理モジュール３８に処理要求を入力するように構成することで実現することができる。また、上記において、バッファモジュール４０からのデータ要求を当該バッファモジュール４０の前段の画像処理モジュール３８へ処理要求として直接入力させると共に、バッファモジュール４０からの蓄積完了通知を当該バッファモジュール４０の後段の画像処理モジュール３８へ処理要求として直接入力させるようにしてもよい。
【０２０２】
また、上記ではバッファモジュール４０に対し、前段の画像処理モジュール３８からは単位書込データ量が、後段の画像処理モジュールからは単位読出データ量が事前に設定される態様を説明したが、これに限定されるものではなく、バッファモジュール４０へのデータの書込やバッファモジュール４０からのデータの読出の都度、書込又は読出のデータ量が画像処理モジュール３８から通知されるようにしてもよい。
【０２０３】
更に、上記では、バッファモジュール４０に書込要求又は読出要求が入力される毎に、入力された要求を要求情報として待ち行列に登録し、待ち行列から要求情報を１つづつ取り出して処理することで、書込要求入力時にバッファ４０Ａからのデータの読出を実行中であれば、このデータ読出が完了した後に前記書込要求に対応するデータ書込処理を行うと共に、読出要求入力時にバッファ４０Ａへのデータの書込を実行中であれば、このデータ書込が完了した後に前記読出要求に対応するデータ読出処理を行う排他制御を実現していたが、これに限定されるものではなく、例えば単位バッファ領域を単位とする排他制御、すなわち書込要求入力時に、バッファ４０Ａのうち当該書込要求における書込対象の単位バッファ領域に対してデータの読出を実行中であれば、このデータ読出が完了した後に前記書込要求に対応するデータ書込処理を行うと共に、読出要求入力時に、バッファ４０Ａのうち当該読出要求における読出対象の単位バッファ領域に対してデータの書込を実行中であれば、このデータ書込が完了した後に前記読出要求に対応するデータ読出処理を行うようにしてもよい。単位バッファ領域を単位とする排他制御は、例えば個々の単位バッファ領域毎に待ち行列を設けて排他制御を行うことや、前述のmutex等の技術を利用する等によって実現することができる。
【０２０４】
また、上記では、モジュールライブラリ３６にプログラムが登録されている個々の画像処理モジュール３８のうち、単位読出データ量及び単位書込データ量が同一の画像処理モジュール３８の制御部３８Ｂに相当するプログラムを共通化した例を説明したが、これに限定されるものではなく、例えば制御部３８Ｂに相当するプログラムを、前段のモジュールから画像データを取得して画像処理エンジン３８Ａに入力する第１制御部に相当するプログラム、画像処理エンジン３８Ａから出力されたデータを前段のモジュールへ出力する第２制御部に相当するプログラム、単位読出データ量や単位処理データ量、単位書込データ量に依存しない制御（例えばワークフロー管理部４６Ａとの通信等）を行う共通制御部に相当するプログラムに分割し、全ての画像処理モジュールについて、共通制御部に相当するプログラムを共通化し、更に、単位読出データ量が同一の画像処理モジュール３８については第１制御部に相当するプログラムを共通化し、単位書込データ量が同一の画像処理モジュール３８については第２制御部に相当するプログラムを共通化するようにしてもよい。
【０２０５】
また、画像処理部５０を構成する個々のモジュールの実体はプログラムであるので、画像処理部５０による画像処理は実際にはＣＰＵ１２によって実行されるが、ここで、画像処理部５０を構成する個々の画像処理モジュール３８に相当するプログラムを、ＣＰＵ１２による実行対象のスレッド（又はプロセス又はオブジェクト）として待ち行列に登録し、当該待ち行列に登録した特定の画像処理モジュールに相当するプログラムがＣＰＵ１２によって前記待ち行列から取り出される毎に、特定の画像処理モジュール３８の前段のモジュールから単位処理データ量の画像データを取得可能か否かを判断し、単位処理データ量の画像データを取得可能と判断した場合にのみ、前記特定の画像処理モジュール３８の前段の前段のモジュールから単位処理データ量の画像データを取得し、取得した単位処理データ量の画像データに対して所定の画像処理（特定の画像処理モジュール３８の画像処理エンジン３８Ａに相当する処理）を行い、所定の画像処理を経た画像データ又は所定の画像処理の処理結果を自モジュールの後段のモジュールへ出力する処理を行った後に、処理対象の画像全体に対する処理が終了していなれば、取り出した特定の画像処理モジュールに相当するプログラムを実行対象のスレッド（又はプロセス又はオブジェクト）として前記待ち行列に再登録する単位画像処理をＣＰＵ１２によって繰り返させることで、画像処理部５０によって処理対象の画像全体を処理させるようにしてもよい（ラウンドロビン方式）。
【０２０６】
更に、上記では画像処理部の個々の画像処理モジュール３８が、画像１面分よりも小さいデータ量を単位として後段へ画像データを引き渡しながら並列に画像処理を行うように動作させることで、画像処理部が全体としてブロック単位処理を行うようにワークフロー管理部４６Ａが制御する態様を説明したが、これに限定されるものではなく、画像処理部の個々の画像処理モジュール３８が、前段の画像処理モジュール３８が画像１面分の画像データに対する画像処理を完了した後に、後段の画像処理モジュール３８が画像１面分の画像データに対する画像処理を行うように動作させることで、画像処理部が全体として面単位処理を行うことも可能なように、ワークフロー管理部４６Ａを構成してもよい。
【図面の簡単な説明】
【０２０７】
【図１】本実施形態に係るコンピュータ（画像処理装置）の概略構成を示すブロック図である。
【図２】アプリケーションによる処理を説明するためのシーケンス図である。
【図３】(Ａ)はモジュール生成部によって実行されるモジュール生成処理の内容を示すフローチャート、(Ｂ)はワークフロー管理部のテーブルを説明する概略図である。
【図４】画像処理部の構成例を示すブロック図である。
【図５】バッファモジュールのバッファ制御部によって実行されるバッファ制御処理の内容を示すフローチャートである。
【図６】バッファモジュールのバッファ制御部によって実行される要求受信割込処理の内容を示すフローチャートである。
【図７】バッファモジュールのバッファ制御部によって実行されるデータ書込処理の内容を示すフローチャートである。
【図８】書込対象の画像データが複数の保管用単位バッファ領域に跨る場合の処理を説明する概略図である。
【図９】バッファモジュールのバッファ制御部によって実行されるデータ読出処理の内容を示すフローチャートである。
【図１０】読出対象の画像データが複数の保管用単位バッファ領域に跨っていた場合の処理を説明する概略図である。
【図１１】画像処理モジュールの制御部によって実行される画像処理モジュール初期化処理の内容を示すフローチャートである。
【図１２】画像処理モジュールの制御部によって実行される画像処理モジュール制御処理の内容を示すフローチャートである。
【図１３】(Ａ)は画像処理モジュール、(Ｂ)はバッファモジュールの概略構成及び実行される処理を各々示すブロック図である。
【図１４】第１実施形態に係る処理管理部によって実行されるブロック単位制御処理の内容を示すフローチャートである。
【図１５】画像処理部における画像処理の流れを説明する概略図である。
【図１６】第１実施形態において、画像処理部における一連の画像処理の進行に伴う、個々の画像処理モジュールに対応するスレッドの実行優先度の推移の一例を示す概略図である。
【図１７】パイプライン形態又は有向非循環グラフ形態の連結形態における画像処理モジュールの位置の定義を説明するためのブロック図である。
【図１８】第２実施形態に係る処理管理部によって実行されるブロック単位制御処理の内容を示すフローチャートである。
【図１９】第２実施形態における個々の画像処理モジュールに対応するスレッドの実行優先度の推移の一例を示す概略図である。
【図２０】第３実施形態に係る処理管理部によって実行されるブロック単位制御処理の内容を示すフローチャートである。
【図２１】第４実施形態に係るコンピュータ（画像処理装置）の概略構成を示すブロック図である。
【図２２】第４実施形態に係る処理管理部によって実行されるブロック単位制御処理の内容を示すフローチャートである。
【図２３】第４実施形態において、画像処理部における一連の画像処理の進行に伴う、個々の画像処理モジュールに対応するＣＰＵスレッド及び高速演算器スレッドの実行優先度の推移の一例を示す概略図である。
【図２４】ブロック単位制御処理の内容の他の例を示すフローチャートである。
【図２５】ブロック単位制御処理の内容の他の例を示すフローチャートである。
【図２６】バッファモジュールが前段の画像処理モジュールに画像データを直接要求する態様におけるブロック単位処理の流れを説明する概略図である。
【符号の説明】
【０２０８】
１０  コンピュータ
１４  メモリ
２０  記憶部
２２  画像データ供給部
２４  画像出力部
３２  アプリケーション
３４  画像処理プログラム群
３８  画像処理モジュール
３８Ａ  画像処理エンジン
３８Ｂ  制御部
４０  バッファモジュール
４０Ａ  バッファ
４０Ｂ  バッファ制御部
４６  処理管理部
４６Ａ  ワークフロー管理部
５０  画像処理部
【図１】
2007287085.tif 000003
【図２】
2007287085.tif 000004
【図３】
2007287085.tif 000005
【図４】
2007287085.tif 000006
【図５】
2007287085.tif 000007
【図６】
2007287085.tif 000008
【図７】
2007287085.tif 000009
【図８】
2007287085.tif 000010
【図９】
2007287085.tif 000011
【図１０】
2007287085.tif 000012
【図１１】
2007287085.tif 000013
【図１２】
2007287085.tif 000014
【図１３】
2007287085.tif 000015
【図１４】
2007287085.tif 000016
【図１５】
2007287085.tif 000017
【図１６】
2007287085.tif 000018
【図１７】
2007287085.tif 000019
【図１８】
2007287085.tif 000020
【図１９】
2007287085.tif 000021
【図２０】
2007287085.tif 000022
【図２１】
2007287085.tif 000023
【図２２】
2007287085.tif 000024
【図２３】
2007287085.tif 000025
【図２４】
2007287085.tif 000026
【図２５】
2007287085.tif 000027
【図２６】
2007287085.tif 000028