(57)【要約】【課題】  画像処理ソフトウェアの開発効率の向上と画像処理アルゴリズム部品のライブラリ化を同時に実現する画像処理装置等を提供する。【解決手段】  画像データの画像処理を行う画像処理ユニットを有し、部品化した画像処理アルゴリズムにより前記画像処理ユニットを制御し、前記画像データの画像処理を行う画像処理装置において、前記画像処理アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、単独で画像処理を実行可能とする単体アルゴリズム２０００と、当該画像処理アルゴリズムを木構造の親とし、複数の単体アルゴリズムが連続して構成される複合アルゴリズムを有するフレームワークにより前記画像処理ユニットを制御し、前記フレームワークは、前記単体アルゴリズム２０００を木構造の親とし、画像データの中継処理を実行可能とする画像中継処理アルゴリズム４０００を有し、前記画像処理を行う。【選択図】  図９
2007079779.tif 000002
【特許請求の範囲】
【請求項１】
画像データの画像処理を行う画像処理ユニットを有し、
部品化した画像処理アルゴリズムにより前記画像処理ユニットを制御し、前記画像データの画像処理を行う画像処理装置において、
前記画像処理アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、単独で画像処理を実行可能とする単体アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、複数の単体アルゴリズムが連続して構成される複合アルゴリズムを有するフレームワークにより前記画像処理ユニットを制御し、
前記フレームワークは、前記単体アルゴリズムを木構造の親とし、画像データの中継処理を実行可能とする画像中継処理アルゴリズムを有し、前記画像処理を行うことを特徴とする画像処理装置。
【請求項２】
前記画像中継処理アルゴリズムは、画像データの中継先の画像処理アルゴリズムを選択するアルゴリズムであることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
画像データの中継先の画像処理アルゴリズムを同時に複数選択することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記画像中継処理アルゴリズムは、画像データの中継元の画像処理アルゴリズムを選択するアルゴリズムであることを特徴とする請求項１に記載の画像処理装置。
【請求項５】
画像データの画像処理を行う画像処理ユニットがあって、
部品化した画像処理アルゴリズムにより前記画像処理ユニットを制御し、前記画像データの画像処理を行う画像処理方法において、
前記画像処理アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、単独で画像処理を実行可能とする単体アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、複数の単体アルゴリズムが連続して構成される複合アルゴリズムを有するフレームワークにより前記画像処理ユニットを制御し、
前記フレームワークは、前記単体アルゴリズムを木構造の親とし、画像データの中継処理を実行可能とする画像中継処理アルゴリズムを有し、前記画像処理を行うことを特徴とする画像処理方法。
【請求項６】
コンピュータに、
請求項５に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項７】
請求項６に記載のプログラムを格納する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置等で使用される画像処理ソフトウェアの開発・設計に関するものである。
【背景技術】
【０００２】
近年、コンピュータハードウェアのパフォーマンスアップと低コスト化を受けて、ソフトウェアの規模の増大と複雑化は年々増している。一方、それらソフトウェア商品またはソフトウェアを組み込んだ機器の商品の開発サイクルは年々短縮される傾向にある。このような環境に立たされているソフトウェア業界においては、開発効率の向上が必然的に要求されている。
【０００３】
そして、このようなソフトウェアの傾向は、当然、画像処理ソフトウェアにも現れてきている。画像処理ソフトウェアは、デジタルコピー機やMFP(Multifunctional Peripheral)、デジタルカメラ、DV(Digital Video)などのデジタル画像を扱う機器の普及により、昨今は次々と新規開発が行われている。これらは、扱う画像データの大容量化や求められる画像処理の複雑化に伴って、ソフトウェアの複雑化をもたらしている。
【０００４】
一方、画像処理ソフトウェアの開発現場には、開発効率の向上の要求に加えて、企業の知的財産である自社開発の画像処理アルゴリズムを管理したいという要求も存在する。この要求における管理対象としては、ガンマ処理、ディザ処理といった単体のアルゴリズムや、他のアルゴリズムの組み合わせで構成されるアルゴリズムである複合のアルゴリズム（フーリエ変換やハフマン符号化からなるJPEG(Joint Photographic Coding Experts Group)画像圧縮や、OCR(Optical Character Reader)の文字認識などが代表的）がある。つまり、開発効率の向上とアルゴリズムの管理を共に満たすことができるような環境が望まれている。
【０００５】
開発効率を向上させるためのひとつの解決策として、ソフトウェアの部品化が挙げられる。ソフトウェアを再利用しやすい形で構成することにより、一度作ったものを何度も使い回すことによって開発効率を向上させようという考えである。
【０００６】
ソフトウェア部品は大きく２つに分けられる。一つ目はフレームワーク部品である。これは、ソフトウェアで解決しようとしている問題領域（ドメイン）の骨格となる抽象モデルである。システム開発においては、フレームワーク部品にシステム特有の機能を肉付けするだけで済む。従って、フレームワーク部品は、システムの骨格部分すべてを再利用できるため再利用の効果が大きいものといえる。
【０００７】
画像処理ソフトウェアの開発効率の向上は、画像処理ドメインを分析し、再利用性の高いフレームワークを構築することで達成することができる。特許文献１の「画像処理アプリケーションを開発するための方法およびシステム」はフレームワーク部品の１つと見なすことができる。これを用いて画像処理ソフトウェアを開発することにより、開発効率を向上させることができる。ただし、この発明は画像処理の機能単位で部品化したものであり、アルゴリズム単位で部品化したものではないため、まだ開発効率の向上の余地がある。また、この発明には画像処理アルゴリズムの管理についての手段が含まれていない。そのため、この発明を用いた開発で、同時に画像処理アルゴリズムの管理も行うことは困難である。
【０００８】
ソフトウェア部品の二つ目は、ライブラリ部品である。これは、複数のシステムで使用する共通機能を実装したソフトウェア部品である。ライブラリ部品は再利用の利用度が小さく、再利用の効果は小さい。しかし、管理や使用が容易に行えるという利点がある。
【０００９】
画像処理アルゴリズムの管理は、画像処理アルゴリズム部品をライブラリ化し、それを管理することで達成することができる。様々な種類の画像処理アルゴリズム部品を再利用できれば、画像処理ソフトウェアの開発効率の向上も達成できる。そのためには、画像処理アルゴリズム部品で動作させることができる画像処理ソフトウェアフレームワークが必要となる。そのようなフレームワークが構築できれば、そこで動作するアルゴリズム部品を開発していくことにより、ライブラリ部品が構築できるためである。なお、この場合、画像処理アルゴリズムの管理自体はライブラリ化の後の問題になってくる。
【特許文献１】特表２００３−５２６１６８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記事情を鑑みて、本発明では、画像処理ソフトウェアの開発効率の向上と画像処理アルゴリズム部品のライブラリ化を同時に実現する画像処理装置等を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成する本発明の態様は、画像データの画像処理を行う画像処理ユニットを有し、部品化した画像処理アルゴリズムにより前記画像処理ユニットを制御し、前記画像データの画像処理を行う画像処理装置において、前記画像処理アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、単独で画像処理を実行可能とする単体アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、複数の単体アルゴリズムが連続して構成される複合アルゴリズムを有するフレームワークにより前記画像処理ユニットを制御し、前記フレームワークは、前記単体アルゴリズムを木構造の親とし、画像データの中継処理を実行可能とする画像中継処理アルゴリズムを有し、前記画像処理を行うことを特徴とする。
【００１２】
ここで、前記画像中継処理アルゴリズムは、画像データの中継先の画像処理アルゴリズムを選択するアルゴリズムであると良く、さらに、画像データの中継先の画像処理アルゴリズムを同時に複数選択すると良い。
【００１３】
また、前記画像中継処理アルゴリズムは、画像データの中継元の画像処理アルゴリズムを選択するアルゴリズムであると良い。
【００１４】
本発明の他の態様は、画像データの画像処理を行う画像処理ユニットがあって、部品化した画像処理アルゴリズムにより前記画像処理ユニットを制御し、前記画像データの画像処理を行う画像処理方法において、前記画像処理アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、単独で画像処理を実行可能とする単体アルゴリズムと、当該画像処理アルゴリズムを木構造の親とし、複数の単体アルゴリズムが連続して構成される複合アルゴリズムを有するフレームワークにより前記画像処理ユニットを制御し、前記フレームワークは、前記単体アルゴリズムを木構造の親とし、画像データの中継処理を実行可能とする画像中継処理アルゴリズムを有し、前記画像処理を行うことを特徴とする。
【００１５】
また、本発明の他の態様は、コンピュータに、上記画像処理方法を実行させることを特徴とするプログラムに関するものであり、若しくは、そのプログラムを格納する記録媒体に関するものである。
【発明の効果】
【００１６】
本発明の画像処理装置等は、画像処理アルゴリズム単位のライブラリ部品を使用した画像処理ソフトウェアフレームワークを開発することにより、画像処理ソフトウェアの開発効率の向上と画像処理アルゴリズム部品のライブラリ化を同時に実現することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の画像処理装置を実施するための最良の形態について説明する。説明する際には、本明細書と同時に提出する図面を適宜参照することにする。
【００１８】
図１は、画像処理装置であるＰＣ(Personal Computer)のハードウェアの構成を図示したものである。このＰＣは、コントローラ１０とエンジン部６０とをＰＣＩ（Peripheral Component Interconnect）バスで接続した構成となる。コントローラ１０は、ＰＣ全体の制御と描画、通信、操作部２０からの入力を制御するコントローラである。エンジン部６０は、ＰＣＩバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタなどである。なお、このエンジン部６０には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【００１９】
コントローラ１０は、ＣＰＵ１１と、ノースブリッジ（ＮＢ）１３と、システムメモリ（ＭＥＭ−Ｐ）１２と、サウスブリッジ（ＳＢ）１４と、ローカルメモリ（ＭＥＭ−Ｃ）１７と、ＡＳＩＣ（Application Specific Integrated Circuit）１６と、ハードディスクドライブ（ＨＤＤ）１８とを有し、ノースブリッジ（ＮＢ）１３とＡＳＩＣ１６との間をＡＧＰ（Accelerated Graphics Port）バス１５で接続した構成となる。また、ＭＥＭ−Ｐ１２は、ＲＯＭ（Read Only Memory）１２ａと、ＲＡＭ(Random Access Memory)１２ｂをさらに有する。
【００２０】
ＣＰＵ１１は、ＰＣの全体制御をおこなうものであり、ＮＢ１３、ＭＥＭ−Ｐ１２およびＳＢ１４からなるチップセットを有し、このチップセットを介して他の機器と接続される。
【００２１】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２、ＳＢ１４、ＡＧＰ１５とを接続するためのブリッジであり、ＭＥＭ−Ｐ１２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩマスタおよびＡＧＰターゲットとを有する。
【００２２】
ＭＥＭ−Ｐ１２は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ＲＯＭ１２ａとＲＡＭ１２ｂとからなる。ＲＯＭ１２ａは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、ＲＡＭ１２ｂは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
【００２３】
ＳＢ１４は、ＮＢ１３とＰＣＩデバイス、ＢＩＯＳ(Basic Input/Output System)とを接続するためのブリッジである。このＳＢ１４は、ＰＣＩバスを介してＮＢ１３と接続されている。
【００２４】
ＡＳＩＣ１６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Integrated Circuit）であり、ＡＧＰ１５、ＰＣＩバス、ＨＤＤ１８およびＭＥＭ−Ｃ１７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ１６は、ＰＣＩターゲットおよびＡＧＰマスタと、ＡＳＩＣ１６の中核をなすアービタ（ＡＲＢ）と、ＭＥＭ−Ｃ１７を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などをおこなう複数のＤＭＡＣ（Direct Memory Access Controller）と、エンジン部６０との間でＰＣＩバスを介したデータ転送をおこなうＰＣＩユニットとからなり、画像処理ユニットとして機能する。このＡＳＩＣ１６には、ＰＣＩバスを介してＵＳＢ（Universal Serial Bus）４０、ネットワークインターフェース（Ｉ／Ｆ）部５０が接続される。
【００２５】
ＭＥＭ−Ｃ１７は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ＨＤＤ（Hard Disk Drive）１８は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
【００２６】
ＡＧＰ１５は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、ＭＥＭ−Ｐ１２に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
【００２７】
図２は、かかるＰＣのハードウェアおよびソフトウェアの構成を示した概念図であり、具体的には、後述する本形態の特徴部分である画像処理アルゴリズムを含む画像処理アプリケーション１１０と、ソフトウェア１００およびハードウェア２００の階層関係を示している。同図に示すように、ハードウェア２００は、ハードウェアリソース２０１を有し、このハードウェアリソース２０１は、ＲＡＭ１２ｂ、ＨＤＤ１８、Ｉ／Ｆ部５０、表示部３０およびその他のリソース７０を有する。なお、その他のリソース７０は、たとえば、操作部２０の入力デバイスなどを示す。
【００２８】
また、かかるハードウェア２００に搭載されるソフトウェア１００は階層化されており、オペレーティングシステム１０３の上層にはサービス層１０２が構築され、このサービス層１０２の上層にはアプリケーション層１０１が構築されている。そして、サービス層１０２は、ドライバーに相当する、蓄積制御部１０２ａ、通信制御部１０２ｂ、表示制御部１０２ｃ、およびその他の制御部１０２ｄを有する。蓄積制御部１０２ａはＲＡＭ１２ｂ、ＨＤＤ１８を制御する。通信制御部１０２ｂはＩ／Ｆ部５０を制御する。表示制御部１０２ｃは表示部３０を制御する。その他の制御部１０２ｄはその他のリソース７０を制御する。
【００２９】
画像処理アプリケーション１１０として機能するプログラムはＲＯＭ１２ａに格納されている。この画像処理アプリケーション１１０による画像処理の一般的手順は図３に図示したものになる。つまり、ＨＤＤ１８などに記憶された画像データに係る画像を処理対象画像として選択し、処理Ａ、処理Ｂ、処理Ｃの順に画像処理を行う。画像処理を行った画像データを再度ＨＤＤ１８などに保存する。
【００３０】
図４には画像処理の具体的な手順を一例として図示してある。つまり、対象となる犬の画像データに対し、ガンマ処理、ディザ処理、フィルタ処理を順に画像処理を行う。画像処理を行った画像データはＨＤＤ１８などに保存される。
【００３１】
かかる画像処理を行う画像処理アプリケーション１１０を構成するフレームワークの一例を図５に図示する。本形態ではこのフレームワークをＵＭＬ（Unified Modeling Language）のクラス図（ＵＭＬクラス図）で図示する。ここで、「ＵＭＬ」とは、ＯＭＧ（Object Management Group）という団体がまとめたシステムモデリング言語であり、システムモデリングの成果を記述する記法を定義したものである。そして、このＵＭＬは、オブジェクト指向によるソフトウェア開発において、一般的に用いられている。また、「クラス」とは、オブジェクト指向システムを構成するオブジェクトの設計図に相当する概念である。このクラスは、データと処理を一体化（カプセル化）して内部に有するとともに、継承関係や集約関係といった、他のクラスとの静的な関係を有する。そして、クラス図においては、各クラスが内部に有するデータおよび処理、複数のクラス間の静的な関係が表される。
【００３２】
各クラスを示す矩形は３段の区画を有し、上から、クラス名を示す名前区画、クラスが有するデータ（属性）を示す属性区画およびクラスが有する処理（操作）を示す操作区画と呼ばれる。たとえば、画像処理アルゴリズムクラス１０００を示す矩形の名前区画は、かかるクラスのクラス名が「画像処理アルゴリズム」であることを示し、属性区画は、かかるクラスが有する属性は無く、操作区画は、かかるクラスが有する操作が、「処理（）」であることを示している。
【００３３】
このように、各クラスは、データ（属性）を所持するための属性区画と、かかる属性の書き込みおよび読み出しをおこなう処理（操作）を所持するための操作区画とを有している。これらのクラスは、プログラム（画像処理アプリケーション１１０）の一部として含まれるので、あらかじめＲＯＭ１２ａに格納されたこのプログラムが実行されると、各クラスはＲＡＭ１２ｂの所定領域に実体化され、属性区画に含まれる各データ（属性）がＲＡＭ１２ｂ上に展開される。したがって、クラスを実体化したオブジェクトは、ＲＡＭ１２ｂ上の各データ（属性）の書き込みおよび読み出しをすることが可能となる。
【００３４】
なお、属性や操作といったクラスの要素の左側に「−」、「＋」記号を付する場合がある。「−」記号を付した場合は、かかる要素は外部のクラスには非公開であることを示し、「＋」記号を付した場合は、かかる要素は外部のクラスに公開されていることを示す。また、操作については「処理（）」のように「（）」記号を付することが通例であり、「（引数１、引数２）」のように、かかる操作に引き渡す引数を記述する場合もある。
【００３５】
また、画像処理アルゴリズムクラス１０００の側に記載されている「１．.＊」はこのクラスの多重度であり、「−メンバー」はこのクラスの役割である。ここで、「役割」とは、かかる直線の両端における、一方のクラスからみた、もう一方のクラスの役割や立場のことであり、「多重度」とは、かかる直線の両端のクラスから生成されるオブジェクト数の対応関係のことである。
【００３６】
たとえば、画像処理アルゴリズムクラス１０００からみた複合アルゴリズムクラス３０００の役割は「メンバー」であり、画像処理アルゴリズムクラス１０００の多重度は「１．.＊」である。ここで、「１．.＊」は、かかる画像処理アルゴリズムクラス１０００の多重度が、１から上限数なしの範囲であることを示している。また、たとえば、「１．．３」の記載をした場合には、かかるクラスの多重度が、１〜３の範囲であることを示す。
【００３７】
このフレームワークは画像処理アルゴリズムクラス１０００を抽象クラスとして、その子クラスとして単体アルゴリズムクラス２０００と複合アルゴリズムクラス３０００の２つを定義したものである。
【００３８】
単体アルゴリズムクラス２０００は、単独で存在する画像処理アルゴリズムの概念に対応するクラスである。例えば、ガンマ処理、ディザ処理といった画像処理アルゴリズムが挙げられる。単体アルゴリズムクラス２０００の“処理”メソッドは抽象メソッドであり、その子クラスにおいて特定のアルゴリズムに実装されている。単体アルゴリズムクラス２０００の子クラスのインスタンスは、単独で画像処理が可能である。
【００３９】
複合アルゴリズムクラス３０００は、複数の画像処理アルゴリズムのシーケンスで構成される画像処理アルゴリズムの概念に対応するクラスである。複合アルゴリズムの例としては、フーリエ変換やハフマン符号化からなるJPEG画像圧縮や、OCRの文字認識が挙げられる。
【００４０】
複合アルゴリズムクラス３０００は複数の単体アルゴリズムクラスを所有する。この構造は一般的にコンポジットパターンと呼ばれるものであり、「複合アルゴリズム」インスタンスが「複合アルゴリズム」インスタンスを持つ入れ子構造が可能になる。これにより、単体アルゴリズムの木構造で構成される複合アルゴリズムを表現できる。
【００４１】
複合アルゴリズムクラス３０００の“処理”メソッドは、所有する「単体アルゴリズム」インスタンスの“処理”メソッドを順番に実行するように実装されている。各「単体アルゴリズム」インスタンスの処理対象の画像は、その１つ前の「単体アルゴリズム」インスタンスの処理結果画像となる。特殊な順序で実行したい場合は、複合アルゴリズムクラスの子クラスで“処理”メソッドをオーバーライドする。複合アルゴリズムクラス、もしくはその子クラスのインスタンスは、単独では画像処理を行うことはできない。
【００４２】
以上な構造で、上記フレームワークは任意の画像処理を実現する。画像処理時におけるイベント遷移の様子を、図４を基にして図６に示す。また「複合アルゴリズム」インスタンスの入れ子構造を含んだ画像処理時におけるイベント遷移の様子を、図７に示す。
【００４３】
このイベント遷移の図は四角の中に記載されたオブジェクトがあって、それらの間のメッセージの流れを表示している。ここで、「メッセージ」とは、オブジェクトが内部に有する操作の呼び出しのことであり、たとえば、オブジェクトＡがオブジェクトＢの操作Ｂ１を呼び出したときに、オブジェクトＡはオブジェクトＢにメッセージを送信した、ということができる。
【００４４】
そして、あるオブジェクトが別のオブジェクトにメッセージを送信することにより、このメッセージを受信したオブジェクトは、内部の属性（データ）を変化させたり、かかるメッセージに対する応答を返信したり、他のメッセージを送信したりする。このようにして、各オブジェクトは協調して処理を進めていく。
【００４５】
図６においては処理手順が「１：処理（）」、「１．１：処理（）」、「１．２：処理（）」、「１．３：処理（）」の順番で進む。つまり、複合アルゴリズムとしての処理を行うときは、ガンマ補正、ディザ補正、フィルタ処理の順番で処理される。また、図７においては処理手順が「１：処理（）」、「１．１：処理（）」、「１．２：処理（）」、「１．３：処理（）」、「１．３．１：処理（）」、「１．３．２：処理（）」の順番で進む。つまり、ガンマ補正、ディザ補正フーリエ変換、ハフマン符号化の順番で処理される。
【００４６】
以上の説明より、上記フレームワークは、任意の画像処理を画像処理アルゴリズム部品の連結処理で実現しているので、このフレームワークに沿った画像処理アルゴリズム部品のライブラリ開発と、画像処理アルゴリズム部品とフレームワークの再利用による画像処理ソフトウェア開発効率向上を実現できる。
【００４７】
ただし、上記フレームワーク（以下、「既存フレームワーク」という。）は、実現不可能な画像処理アルゴリズムが存在する。これにより、このフレームワークが使用できる画像処理アプリケーションが制限される。例えば、既存フレームワークでは、図８のような画像処理は実現できない。つまり、図８のうち、処理前にアルゴリズムを決定する「分岐」の画像処理、処理結果からどちらのアルゴリズムを採用するかを決定する「選択」の画像処理は実現できない。これは既存フレームワークが事前に定めた画像処理アルゴリズムのシーケンスしか実行できず、処理時に実行するアルゴリズムを選択できないためである。処理時に実行するアルゴリズムを選択するためには、図８に記載した「分岐」、「選択」といった、画像の流れを制御する仕組みが必要である。
【００４８】
より実用的なフレームワークとしていくためには、事前に定めた画像処理アルゴリズムのシーケンスしか実行できないという制限を緩めていく必要がある。即ち、既存フレームワークで実現不可能な画像処理アルゴリズムを実現可能になるように、フレームワークを修正していく必要がある。そこで、実際の画像処理ではない補助的な処理を行う部品をフレームワークが持てるようにする方法が考えられる。
【００４９】
その方法の一つとして、入力画像の中継手段の実装を可能にするアルゴリズムを既存フレームワークの単体アルゴリズムクラス２０００のサブクラスとして定義するものがある。その定義したサブクラスを「画像中継処理アルゴリズムクラス」と呼ぶことにする。図９に単体アルゴリズムクラス２０００と画像中継処理アルゴリズムクラス４０００の関係を示すクラス構造を図示する。画像中継処理アルゴリズムクラス４０００は前後の単体アルゴリズムクラス間の画像を中継する手段として制御する。
【００５０】
この画像中継処理アルゴリズムクラス４０００の特徴として以下の２点が挙げられる。まず、画像が入ってくるインタフェースを他の単体アルゴリズムと同一になるので、既存フレームワークにおける完全な動作を実現できることである。もう一つは、中継用の条件（例えば、分岐においてどちらに分岐するかという条件）を受け付けるインタフェース（「中継条件用インタフェース」という。）を持つことになるので、画像処理実行時に入力された条件に応じて中継手段を変化させることができることである。
【００５１】
中継条件用インタフェースのシグニチャは、そのクラスが対応する中継処理に合わせて決められる。中継条件用インタフェースは、外部から使用することも、他の単体アルゴリズムクラスから使用することも可能である。
【００５２】
このような方法を採ることにより、既存フレームワークでは不可能であった画像処理まで、画像処理アルゴリズム部品の連結処理で実現できる。よってより実用性の高いこのフレームワークに沿った画像処理アルゴリズム部品のライブラリ開発と、画像処理アルゴリズム部品とフレームワークの再利用による画像処理ソフトウェア開発効率向上を実現できる。
【００５３】
上記中継手段が図８の「分岐」として機能するとき、図１０のようなクラス構造が考えられる。図１０は単体アルゴリズムクラス２０００と分岐中継クラス５０００の関係を示すクラス構造を図示したものである。分岐中継クラス５０００は、中継条件用インタフェースから入力された条件に応じて、次に画像を渡す単体アルゴリズムを選択する。中継条件用インタフェースが受け取る情報は、直に中継先の単体アルゴリズムを設定する情報、何らかの計算や処理に基づいて中継先の単体アルゴリズムを決定するための基情報などである。
【００５４】
このように、動的に中継先の画像処理アルゴリズムを選択するため、既存フレームワークでは不可能であった画像処理を、図９に図示したフレームワークで実現できる。これによりフレームワークの実用性を高め、よって画像処理アルゴリズム部品のライブラリ開発と、画像処理アルゴリズム部品とフレームワークの再利用による画像処理ソフトウェア開発効率向上を実現できる。
【００５５】
分岐として機能する中継手段は同時に複数の単体アルゴリズムに画像を中継するものであっても良い。そのときのクラス構造は図１０に図示したものと同様であるが、分岐中継クラス５０００は中継条件用インタフェースから入力された条件に応じて、１つ以上（場合によっては０個も有り得る）の単体アルゴリズムに画像を中継するクラスとなる。
【００５６】
この分岐中継クラス５０００は動的に中継するときの動作バリエーションを提供するため、フレームワークの実用性をより高める。よって画像処理アルゴリズム部品のライブラリ開発と、画像処理アルゴリズム部品とフレームワークの再利用による画像処理ソフトウェア開発効率向上を実現できる。
【００５７】
また、上記中継手段が図８の「選択」として機能するとき、図１１のようなクラス構造が考えられる。図１１は単体アルゴリズムクラス２０００と選択中継クラス６０００の関係を示すクラス構造を図示したものである。選択中継クラス６０００は、中継条件用インタフェースから入力された条件に応じて、次に画像を受け取る単体アルゴリズムを選択する。中継条件用インタフェースが受け取る情報は、直に中継元の単体アルゴリズムを設定する情報、何らかの計算や処理に基づいて中継元の単体アルゴリズムを決定するための基情報などである。
【００５８】
このように、複数の画像処理アルゴリズムの出力画像から中継する画像を選択するため、既存フレームワークでは不可能であった画像処理を、図９に図示したフレームワークで実現することを可能とする。これによりフレームワークの実用性を高め、よって画像処理アルゴリズム部品のライブラリ開発と、画像処理アルゴリズム部品とフレームワークの再利用による画像処理ソフトウェア開発効率向上を実現できる。
【００５９】
上記画像中継処理アルゴリズムクラス４０００をサブクラスとするクラス構造を用いて、画像処理アルゴリズム部品の連結で画像処理を行うソフトウェアを実際に開発した。つまり、上記フレームワークを使用して作成され、図１のＰＣ上で動作する画像処理プログラムのことである。このソフトウェアは図１２のようなGUI(Graphic User Interface)を有し、表示部３０を用いて視覚的に画像処理アルゴリズムの連結を確認しながら処理を行うことができる。
【００６０】
なお、上述した形態は本発明を実施するための最良のものであるが、これに限定する趣旨ではない。したがって、本発明の要旨を変更しない範囲において種々変形することが可能である。
【００６１】
例えば、画像中継処理アルゴリズムクラスは、入力画像の中継手段の実装を可能にするアルゴリズムを既存フレームワークの単体アルゴリズムクラスのサブクラスとして定義したが、複数アルゴリズムクラスのサブクラス、その他画像処理アルゴリズムのサブクラスとして定義しても良い。
【図面の簡単な説明】
【００６２】
【図１】本形態のＰＣのハードウェアの構成を図示したものである。
【図２】本形態のＰＣのハードウェア２００およびソフトウェア１００の構成を示した概念図である。
【図３】画像処理の一般的手順を図示したものである。
【図４】画像処理の具体的手順を図示したものである。
【図５】フレームワークの一例を図示したものである。
【図６】図５のフレームワークによる画像処理時におけるイベント遷移の様子を図示したものである。
【図７】図５のフレームワークによる「複合アルゴリズム」インスタンスの入れ子構造を含んだ画像処理時におけるイベント遷移の様子を図示したものである。
【図８】ある画像処理の手順を図示したものである。
【図９】単体アルゴリズムクラス２０００と画像中継処理アルゴリズムクラス４０００の関係を示すクラス構造を図示したものである。
【図１０】単体アルゴリズムクラス２０００と分岐中継クラス５０００の関係を示すクラス構造を図示したものである。
【図１１】単体アルゴリズムクラス２０００と選択中継クラス６０００の関係を示すクラス構造を図示したものである。
【図１２】表示部３０より、画像処理アルゴリズム部品の連結で画像処理を行う様子を図示したものである。
【符号の説明】
【００６３】
１０    コントローラ
１１    ＣＰＵ
１２    ＭＥＭ−Ｐ
１２ａ    ＲＯＭ
１２ｂ    ＲＡＭ
１３    ＮＢ
１４    ＳＢ
１５    ＡＧＰバス
１６    ＡＳＩＣ
１７    ＭＥＭ−Ｃ
１８    ＨＤＤ
２０    操作部
３０    表示部
４０    ＵＳＢ
５０    Ｉ／Ｆ
６０    エンジン部
１００    ソフトウェア
１０１    アプリケーション層
１１０    画像処理アプリケーション
１０２    サービス層
１０２ａ    蓄積制御部
１０２ｂ    通信制御部
１０２ｃ    表示制御部
１０２ｄ    その他の制御部
１０３    オペレーティングシステム
２００    ハードウェア
２０１    ハードウェアリソース
７０    その他のリソース
１０００    画像処理アルゴリズムクラス
２０００    単体アルゴリズムクラス
３０００    複合アルゴリズムクラス
４０００    画像中継処理アルゴリズムクラス
５０００    分岐中継クラス
６０００    選択中継クラス
【図１】
2007079779.tif 000003
【図２】
2007079779.tif 000004
【図３】
2007079779.tif 000005
【図４】
2007079779.tif 000006
【図５】
2007079779.tif 000007
【図６】
2007079779.tif 000008
【図７】
2007079779.tif 000009
【図８】
2007079779.tif 000010
【図９】
2007079779.tif 000011
【図１０】
2007079779.tif 000012
【図１１】
2007079779.tif 000013
【図１２】
2007079779.tif 000014