(57)【要約】【課題】機能のカスタマイズ又は拡張などを簡略化させることのできる画像処理装置、画像処理方法及び画像処理プログラムを提供することを目的とする。【解決手段】パイプ＆フィルタと呼ばれる考え方に基づくソフトウェアアーキテクチャを画像処理装置に適用する。パイプは、出力側の要求を入力側へ反映させる。また入力フィルタに対して複数の出力フィルタが選択される多出力処理において、親パイプであるパイプに子パイプを生成させ、このパイプと子パイプを複数の出力フィルタに対応させて結合させることにより複数の出力フィルタにおける出力処理を平行して同時に実行させる。【選択図】図５
2008311872.tif 000002
【特許請求の範囲】
【請求項１】
画像処理の対象として入力されるデータの入力処理を制御する入力フィルタと、
外部に出力されるデータの出力処理を制御する出力フィルタと、
前記入力フィルタと前記出力フィルタとの間で前記データを加工する加工フィルタと、
前記入力フィルタ、前記加工フィルタ、前記出力フィルタとの間でデータを伝達するパイプとを有し、
前記入力フィルタと、前記加工フィルタと、前記出力フィルタとを前記パイプで接続することによりアプリケーションが構築される画像処理装置であって、
前記パイプは、前記パイプの出力側に接続された前記加工フィルタまたは前記出力フィルタから前記データを識別する識別子を含む前記データの読出要求を受けて、前記読出要求を前記パイプの入力側に接続された前記入力フィルタまたは前記加工フィルタへ伝達することを特徴とする画像処理装置。
【請求項２】
前記入力フィルタ及び／または前記加工フィルタは、前記識別子を含む読出要求を受けて、前記識別子が付与されたデータを生成する処理を実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記識別子は、前記入力フィルタにおける前記入力処理において前記データに付与されることを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
当該画像処理装置の処理動作を操作する操作手段と、
前記パイプを制御する制御手段と、
前記パイプに備えられた前記パイプに従属する従属パイプを生成する従属パイプ生成手段とを有し、
前記制御手段は、
前記操作手段により選択された一の前記入力フィルタに対し、複数の前記出力フィルタが選択されたとき、前記パイプに前記従属パイプ生成手段により前記従属パイプを生成させ、前記入力フィルタ、前記加工フィルタ、前記出力フィルタの入力側及び／または出力側に一の前記パイプまたは一の前記従属パイプを結合して出力処理を実行し、
前記従属パイプは、前記従属パイプに対して前記読出要求が伝達されたとき、前記従属パイプを生成した前記パイプへ前記読出要求を伝達することを特徴とする請求項１ないし３の何れか一項に記載の画像処理装置。
【請求項５】
前記パイプ及び前記従属パイプは、
前記パイプ及び前記従属パイプにおける前記データを管理するデータ管理手段をそれぞれ有し、
前記データ管理手段は、前記読出要求に含まれる前記識別子と対応するデータが、前記パイプ及び前記従属パイプに存在するか否かを判定し、前記識別子と対応するデータが前記パイプ及び前記従属パイプに存在する場合、前記読出要求を伝達しないこと特徴とする請求項４記載の画像処理装置。
【請求項６】
前記パイプは、前記読出要求が前記パイプの前段に接続された前記入力フィルタまたは前記加工フィルタに伝達されたか否かを管理する要求管理手段を有することを特徴とする請求項１ないし５の何れか一項に記載の画像処理装置。
【請求項７】
前記データ管理手段は、前記要求管理手段に基づき、前記読出要求が前記パイプの前段に接続された前記入力フィルタまたは前記加工フィルタに伝達されたか否かを判定し、
前記読出要求が前記パイプの前段に接続された前記入力フィルタまたは前記加工フィルタに伝達されていた場合、前記読出要求を前記入力フィルタまたは前記加工フィルタへ伝達しないことを特徴とする請求項６記載の画像処理装置。
【請求項８】
画像処理の対象として入力されるデータの入力処理を制御する入力フィルタと、
外部に出力されるデータの出力処理を制御する出力フィルタと、
前記入力フィルタと前記出力フィルタとの間で前記データを加工する加工フィルタと、
前記入力フィルタ、前記加工フィルタ、前記出力フィルタとの間でデータを伝達するパイプとを有し、
前記入力フィルタと、前記加工フィルタと、前記出力フィルタとを前記パイプで接続することによりアプリケーションが構築される画像処理装置における画像処理方法であって、
前記パイプが、前記パイプの出力側に接続された前記加工フィルタまたは前記出力フィルタから前記データを識別する識別子を含む前記データの読出要求を受ける手順と、
前記読出要求を前記パイプの入力側に接続された前記入力フィルタまたは前記加工フィルタへ伝達する手順とを有することを特徴とする画像処理方法。
【請求項９】
画像処理の対象として入力されるデータの入力処理を制御する入力フィルタと、
外部に出力されるデータの出力処理を制御する出力フィルタと、
前記入力フィルタと前記出力フィルタとの間で前記データを加工する加工フィルタと、
前記入力フィルタ、前記加工フィルタ、前記出力フィルタとの間でデータを伝達するパイプとを有し、
前記入力フィルタと、前記加工フィルタと、前記出力フィルタとを前記パイプで接続することによりアプリケーションが構築される画像処理装置でおける画像処理プログラムであって、
前記画像処理装置は演算処理装置と記憶装置とを有し、
前記演算処理装置に、
前記パイプの出力側に接続された前記加工フィルタまたは前記出力フィルタから前記データを識別する識別子を含む前記データの読出要求を前記パイプに伝達させるステップと、
前記読出要求を前記パイプの入力側に接続された前記入力フィルタまたは前記加工フィルタへ伝達させるステップとを実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及び画像処理プログラムに関する。
【背景技術】
【０００２】
近年において、プリンタ、コピー機、スキャナ、ファクシミリ、又はこれらの機能を一台の筐体で実現する複合機等の画像処理装置では、汎用的にコンピュータと同様にＣＰＵを備え、各機能はアプリケーションの制御によって実現されるようになっている。
【０００３】
例えば特許第３６７９３４９号公報（特許文献１）に記載された画像形成装置では、各アプリケーションから共通して利用される機能をプラットフォームとして備えており、このプラットフォームのＡＰＩ（Application Programming Interface）を利用してアプリケーションを実装することができる。係る画像形成装置によれば、共通して利用される機能がプラットフォームとして備えられていることにより、アプリケーションごとに重複した機能の実装が回避され、アプリケーション全体の開発効率を向上させることができる。
【特許文献１】特許第３６７９３４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、共通して利用されるＡＰＩを備えたプラットフォームについては、このプラットフォームによって提供される機能又はインターフェースの粒度が適切に設計されないと、アプリケーションの開発効率の向上が期待以上にはかれない場合がある。
【０００５】
例えば、この粒度が小さすぎると、単純なサービスを提供するアプリケーションであるにも関わらず、多くのＡＰＩの呼び出しが必要とされ、そのソースコードは複雑なものとなってしまう。
【０００６】
一方、粒度が大きすぎると、ある機能の一部について変更を加えたサービスを提供するアプリケーションを実装したい場合、プラットフォーム内を修正しなければならず、開発工数の増加を招きかねない。特に、プラットフォーム内における各モジュールの依存関係が強い場合は、プラットフォームに新規機能を追加するだけでなく、既存部分の修正も必要とされる場合があり、事態はより複雑となる。
【０００７】
また、既存のアプリケーションによって提供されているサービスの一部（例えば、画像の入力処理）を変更したアプリケーションを実装したい場合、変更部分以外の部分については既存のアプリケーションを呼び出すといったようなことはできない。したがって、改めてソースコードを記述して新たなアプリケーションを実装しなければならない。
【０００８】
本発明は、上記の点を鑑みてなされたものであって、機能のカスタマイズ又は拡張などを簡略化させることのできる画像処理装置、画像処理方法及び画像処理プログラムを提供することを目的とするものである。
【課題を解決するための手段】
【０００９】
本発明の画像処理装置、画像処理方法及び画像処理プログラムは、上記目的を達成するために、以下の如き構成を採用した。
【００１０】
本発明は、画像処理の対象として入力されるデータの入力処理を制御する入力フィルタと、外部に出力されるデータの出力処理を制御する出力フィルタと、前記入力フィルタと前記出力フィルタとの間で前記データを加工する加工フィルタと、前記入力フィルタ、前記加工フィルタ、前記出力フィルタとの間でデータを伝達するパイプとを有し、前記入力フィルタと、前記加工フィルタと、前記出力フィルタとを前記パイプで接続することによりアプリケーションが構築される画像処理装置であって、前記パイプは、前記パイプの出力側に接続された前記加工フィルタまたは前記出力フィルタから前記データを識別する識別子を含む前記データの読出要求を受けて、前記読出要求を前記パイプの入力側に接続された前記入力フィルタまたは前記加工フィルタへ伝達する構成とした。
【００１１】
係る構成によれば、機能のカスタマイズ又は拡張などを簡略化させることができる。
【００１２】
また前記入力フィルタ及び／または前記加工フィルタは、前記識別子を含む読出要求を受けて、前記識別子が付与されたデータを生成する処理を実行する構成とした。
【００１３】
係る構成によれば、出力側のフィルタが使用したいデータを入力側のフィルタに優先的に処理させることができ、出力側の要求を入力側へ反映させることができる。
【００１４】
また前記識別子は、前記入力フィルタにおける前記入力処理において前記データに付与される構成とした。
【００１５】
また本発明の画像処理装置は、当該画像処理装置の処理動作を操作する操作手段と、前記パイプを制御する制御手段と、前記パイプに備えられた前記パイプに従属する従属パイプを生成する従属パイプ生成手段とを有し、前記制御手段は、前記操作手段により選択された一の前記入力フィルタに対し、複数の前記出力フィルタが選択されたとき、前記パイプに前記従属パイプ生成手段により前記従属パイプを生成させ、前記入力フィルタ、前記加工フィルタ、前記出力フィルタの入力側及び／または出力側に一の前記パイプまたは一の前記従属パイプを結合して出力処理を実行し、前記従属パイプは、前記従属パイプに対して前記読出要求が伝達されたとき、前記従属パイプを生成した前記パイプへ前記読出要求を伝達する構成とした。
【００１６】
係る構成によれば、複数の出力フィルタが選択された場合の多出力においても、各フィルタは一の出力フィルタが選択された場合と同様の処理で多出力を実現できる。
【００１７】
また、前記パイプ及び前記従属パイプは、前記パイプ及び前記従属パイプにおける前記データを管理するデータ管理手段をそれぞれ有し、前記データ管理手段は、前記読出要求に含まれる前記識別子と対応するデータが、前記パイプ及び前記従属パイプに存在するか否かを判定し、前記識別子と対応するデータが前記パイプ及び前記従属パイプに存在する場合、前記読出要求を伝達しない構成とした。
【００１８】
係る構成によれば、入力側のフィルタに同じ読出要求が重複して伝達されることがない。
【００１９】
また前記パイプは、前記読出要求が前記パイプの前段に接続された前記入力フィルタまたは前記加工フィルタに伝達されたか否かを管理する要求管理手段を有する構成とした。
【００２０】
係る構成によれば、前記パイプが受けた読出要求が入力側のフィルタに伝達されているか否かを管理することができる。
【００２１】
また前記データ管理手段は、前記要求管理手段に基づき、前記読出要求が前記パイプの前段に接続された前記入力フィルタまたは前記加工フィルタに伝達されたか否かを判定し、前記読出要求が前記パイプの前段に接続された前記入力フィルタまたは前記加工フィルタに伝達されていた場合、前記読出要求を前記入力フィルタまたは前記加工フィルタへ伝達しない構成とした。
【００２２】
係る構成によれば、入力側のフィルタに同じ読出要求が重複して伝達されることがない。
【００２３】
本発明の画像処理方法は、画像処理の対象として入力されるデータの入力処理を制御する入力フィルタと、外部に出力されるデータの出力処理を制御する出力フィルタと、前記入力フィルタと前記出力フィルタとの間で前記データを加工する加工フィルタと、前記入力フィルタ、前記加工フィルタ、前記出力フィルタとの間でデータを伝達するパイプとを有し、前記入力フィルタと、前記加工フィルタと、前記出力フィルタとを前記パイプで接続することによりアプリケーションが構築される画像処理装置における画像処理方法であって、前記パイプが、前記パイプの出力側に接続された前記加工フィルタまたは前記出力フィルタから前記データを識別する識別子を含む前記データの読出要求を受ける手順と、前記読出要求を前記パイプの入力側に接続された前記入力フィルタまたは前記加工フィルタへ伝達する手順とを有する方法とした。
【００２４】
係る方法によれば、機能のカスタマイズ又は拡張などを簡略化させることができる。
【００２５】
本発明の画像処理プログラムは、画像処理の対象として入力されるデータの入力処理を制御する入力フィルタと、外部に出力されるデータの出力処理を制御する出力フィルタと、前記入力フィルタと前記出力フィルタとの間で前記データを加工する加工フィルタと、前記入力フィルタ、前記加工フィルタ、前記出力フィルタとの間でデータを伝達するパイプとを有し、前記入力フィルタと、前記加工フィルタと、前記出力フィルタとを前記パイプで接続することによりアプリケーションが構築される画像処理装置でおける画像処理プログラムであって、前記画像処理装置は演算処理装置と記憶装置とを有し、前記演算処理装置に、前記パイプの出力側に接続された前記加工フィルタまたは前記出力フィルタから前記データを識別する識別子を含む前記データの読出要求を前記パイプに伝達させるステップと、前記読出要求を前記パイプの入力側に接続された前記入力フィルタまたは前記加工フィルタへ伝達させるステップとを実行させるプログラムとした。
【００２６】
係るプログラムによれば、機能のカスタマイズ又は拡張などを簡略化させることができる。
【発明の効果】
【００２７】
本発明によれば、機能のカスタマイズ又は拡張などを簡略化させることのできる画像処理装置、画像処理方法及び画像処理プログラムを提供することができる。
【発明を実施するための最良の形態】
【００２８】
本発明は、パイプ＆フィルタと呼ばれる考え方に基づくソフトウェアアーキテクチャを画像処理装置に適用することで、画像処理装置の機能のカスタマイズ又は拡張などを簡略化する。また本発明では、データに識別子を付与し、出力側から入力側へ識別子を含む読出要求を伝達することにより、出力側の要求が反映されたデータを読み出す。さらに本発明では、一の入力フィルタに対して複数の出力フィルタが選択される多出力処理において、主パイプに従属パイプを生成させ、この主パイプと従属パイプを複数の出力フィルタに対応させて結合させることにより複数の出力フィルタにおける出力処理を平行して、同時に実行させる。
【００２９】
以下に図１を参照して上記のパイプ＆フィルタの概念について説明する。図１は、パイプ＆フィルタの概念を説明する図である。図１に示す「Ｐ」はパイプを示し、「Ｆ」はフィルタを示す。
【００３０】
フィルタとは、入力されたデータに対して所定の処理を施して、その処理結果を出力するプログラムである。そしてパイプは、フィルタとフィルタを連結する手段であり、パイプの入力側に結合されたフィルタから出力される処理結果を一時的に保持し、その後パイプの出力側へ結合されたフィルタへデータを伝達する。このように、パイプ＆フィルタの概念によれば、パイプを介在させてフィルタにおける処理を連続したものとすることができる。
【００３１】
本発明の画像処理装置では、フィルタにおいて施される所定の処理を、入力されたデータに対し、所定の変換を施す処理と考える。すなわち、本発明の画像処理装置では、画像処理装置で実現される各機能をドキュメント（入力データ）に対する「変換処理」の連続として捉える。画像処理装置の各機能は、ドキュメントすなわちデータの入力、加工及び出力によって構成されるものと考える。そこで、本発明では「入力処理」、「加工処理」及び「出力処理」のそれぞれを「変換処理」として捉え、一つの変換処理を実現するソフトウェア部品をフィルタとして構成した。
【００３２】
本発明の画像処理装置では、データの入力処理を制御するフィルタを入力フィルタ、データの加工処理を制御するフィルタを加工フィルタ、データの出力処理を制御するフィルタを出力フィルタとした。これらの各フィルタはそれぞれ独立したプログラムであって、フィルタ間の依存関係は存在しない。よって、各フィルタは、画像処理装置において独立してフィルタ単位で追加（インストール）、削除（アンインストール）することが可能である。
（第一の実施形態）
以下に、本発明の第一の実施形態の画像処理装置１００について図面を参照して説明する。図２は第一の実施形態の画像処理装置１００のハードウェア構成図である。画像処理装置１００は、それぞれバスＢで相互に接続されているスキャン装置２１、プロッタ装置２２、ドライブ装置２３、補助記憶装置２４、メモリ装置２５、演算処理装置２６、インターフェース装置２７及び操作パネル２８で構成される。
【００３３】
スキャン装置２１はスキャナエンジンとエンジン制御部などで構成され、紙原稿をスキャンして画像データとする。プロッタ装置２２はプロッタエンジンとエンジン制御部などで構成され、画像データを印刷する。インターフェース装置２７は、モデム、ＬＡＮカードなどで構成されており、ネットワークに接続する為に用いられる。操作パネル２８は、画像処理装置１００の処理に関する操作を行うために用いられる。操作パネル２８は、例えばタッチパネルなどの表示機能を有するものである。
【００３４】
本実施形態の画像処理プログラムは、画像処理装置１００を制御する各種プログラムの少なくとも一部である。画像処理プログラムは例えば記録媒体２９の配布やネットワークからのダウンロードなどによって提供される。画像処理プログラムを記録した記録媒体２９は、ＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００３５】
また、画像処理プログラムを記録した記録媒体２９がドライブ装置２３にセットされると、画像処理プログラムは記録媒体２９からドライブ装置２３を介して補助記憶装置２４にインストールされる。ネットワークからダウンロードされた画像処理プログラムは、インターフェース装置２７を介して補助記憶装置２４にインストールされる。
【００３６】
画像処理装置１００は、インストールされた画像処理プログラムを格納すると共に、必要なファイル、データ等を格納する。メモリ装置２５は、コンピュータの起動時に補助記憶装置２４から画像処理プログラムを読み出して格納する。そして、演算処理装置２６はメモリ装置２５に格納された画像処理プログラムに従って、後述するような各部の機能を実現し、各種処理を実現している。
【００３７】
画像処理装置１００では、画像処理装置１００における各種機能を実現させるソフトウェアアーキテクチャに、上記のパイプ＆フィルタの概念が適用されている。図３は、第一の実施形態の画像処理装置１００のソフトウェア構成図である。画像処理装置１００は、例えばプリンタ、コピー、スキャナ、又はＦＡＸ等の複数の機能を一台の筐体において実現する複合機である。
【００３８】
画像処理装置１００の機能を実現するソフトウェアは階層構造となっており、ユーザインターフェイス層１０、コントロール層２０、アプリケーションロジック層３０、デバイスサービス層４０及びデバイス制御層５０により構成されている。これらの各層における上下関係は、層間の呼び出し関係に基づいている。すなわち、図中において上位層が下位層を呼び出す。
【００３９】
画像処理装置１００において、ユーザインターフェイス層１０によりユーザから各種機能の実行指示が成されると、ユーザインターフェイス層１０は、コントロール層２０を呼び出しこの実行要求に基づきアプリケーションロジック層３０を制御する。アプリケーションロジック層３０では、コントロール層２０からの指示に基づき要求された機能を実現させるアプリケーションを実行する。そして、この実行結果に基づきデバイスサービス層４０、デバイス制御層５０が画像処理装置１００のハードウェア資源を制御する。画像処理装置１００では、このような動作によりユーザインターフェイス層１０が受け付けた機能に対応した出力結果を得る。
【００４０】
以下に各層について説明する。
【００４１】
ユーザインターフェイス層１０には、例えば通信サーバ部１１及びローカルＵＩ（user interface）部１２が実装されており、画像処理装置１００の各種機能を実現するための実行要求を受け付ける機能を有する。ここで言う各種機能とは、例えばコピー機能、印刷機能、スキャン機能、ＦＡＸ機能などである。ユーザインターフェイス層１０において、例えば通信サーバ部１１は、例えば図示しないクライアントＰＣ（Personal Computer）等からネットワークを介して実行要求を受け付けても良い。ローカルＵＩ部１２は、例えば画像処理装置１００に設けられた操作パネル２８などを介して実行要求を受け付けても良い。操作パネルについての詳細は後述する。ユーザインターフェイス層１０において受け付けられた実行要求は、コントロール層２０へ伝達される。
【００４２】
コントロール層２０は、画像処理装置１００の各機能を実現する処理を制御するための機能が実装されている制御手段である。具体的には、例えば、要求された機能に応じてアプリケーションロジック層３０における各フィルタをパイプ４１を用いて結合し、結合されたフィルタを用いて機能の実行を制御する。
【００４３】
また、コントロール層２０は、特許請求の範囲に記載の制御手段に該当するものであり、パイプ４１を制御する。コントロール層２０は、ユーザインターフェイス層１０において受け付けられた実行要求に基づきパイプ４１を制御する。コントロール層２０によるパイプ４１の制御については後述する。
【００４４】
尚、以下の本実施形態において述べる画像処理装置１００の機能とは、画像処理装置１００がユーザに対して提供する一つのまとまった単位（要求が入力されて最終的な出力が得られるまで）のサービスの定義であり、ソフトウェア的には一つのまとまった単位のサービスを提供するアプリケーションと同義である。
【００４５】
アプリケーションロジック層３０には、画像処理装置１００において提供される機能の一部を実現する部品群である各種フィルタが実装されている。アプリケーションロジック層３０では、コントロール層２０の制御により、複数のフィルタを組み合わせて一つの機能が実現される。本実施形態におけるアプリケーションロジック層３０には、入力フィルタ３００、加工フィルタ３１０、出力フィルタ３２０が実装されている。これら各フィルタは、同一の定義に基づき動作するものであり、この定義に基づきコントロール層２０に制御される。これら各フィルタの詳細は後述する。
【００４６】
デバイスサービス層４０には、アプリケーションロジック層３０に実装された各フィルタが共通して利用される下位の機能が実装されている。画像処理装置１００のデバイスサービス層４０にはパイプ４１、データ管理部４２等が実装されている。パイプ４１は上で述べたパイプの機能を実現するものであり、アプリケーションロジック層３０に実装されている各フィルタのうち、一のフィルタからの出力結果を、一のフィルタへ伝達する。
【００４７】
データ管理部４２は、画像処理装置１００内のデータベースであって、例えばユーザにより登録されたユーザ情報や、画像処理装置１００において各種の処理が施された文書データや画像データなどが蓄積されて保管されていても良い。
【００４８】
デバイス制御層５０には、ハードウェアを制御するプログラムであるドライバが実装されている。本実施形態の画像処理装置１００のデバイス制御層５０には、例えばスキャン制御部５１、プロッタ制御部５２、メモリ制御部５３、電話回線制御部５４及びネットワーク制御部５５等が実装されている。これらの各制御部は、それぞれの名称に付けられたデバイスを制御するものである。
【００４９】
以下に、アプリケーションロジック層３０に実装された各フィルタについてさらに説明する。
【００５０】
画像処理装置１００の入力フィルタ３００は、画像処理装置１００の外部より入力されたデータに対する入力処理を制御する。入力フィルタ３００には、読取フィルタ３０１、文書保管読出フィルタ３０２、メール受信フィルタ３０３、ＦＡＸ受信フィルタ３０４、ＰＣ文書受信フィルタ３０５、レポートフィルタ３０６等が含まれる。
【００５１】
読取フィルタ３０１は、例えばスキャナによる画像データの読取を制御し、読み取られた画像データを出力する。メール受信フィルタ３０３は、画像処理装置１００において電子メールを受信し、受信した電子メールに含まれるデータを出力する。ＦＡＸ受信フィルタ３０４はＦＡＸ受信を制御し、受信されたデータを出力する。ＰＣ文書受信フィルタ３０５は、図示しないクライアントＰＣなどから印刷データを受信し、この印刷データを出力する。レポートフィルタ３０６は、画像処理装置１００の設定情報や履歴情報などを例えば表形式などに整え、この整えられたデータを出力する。尚ここで、保管文書読出フィルタ３０２は、画像処理装置１００の外部からではなく、画像処理装置１００内の例えばデータ管理部４２や、画像処理装置１００の有する図示しない記憶装置などに蓄積されたデータを読み出し、読み出したデータを出力するものとした。
【００５２】
画像処理装置１００の加工フィルタ３１０は、加工フィルタ３１０の入力側のパイプより入力されたデータに所定の処理を施し、加工フィルタ３１０の出力側にあるフィルタへ処理結果を出力する。加工フィルタ３１０には、文書加工フィルタ３１１、文書変換フィルタ３１２等が含まれる。文書加工フィルタ３１１は、入力されたデータに所定の画像変換処理を施し出力する。この画像変換処理とは、例えば入力されたデータの集約、拡大、縮小処理等であっても良い。文書変換フィルタ３１２は、入力されたデータにレンダリング処理を施し出力する。すなわち、文書変換フィルタ３１２に入力されたＰｏｓｔＳｃｒｉｐｔデータをビットマップデータに変換して出力する。
【００５３】
画像処理装置１００の出力フィルタ３２０は、入力されたデータに対する出力処理を制御し、画像処理装置１００の外部へ出力する。出力フィルタ３２０には、印刷フィルタ３２１、保管文書登録フィルタ３２２、メール送信フィルタ３２３、ＦＡＸ送信フィルタ３２４、ＰＣ文書送信フィルタ３２５、プレビューフィルタ３２６等が含まれる。
【００５４】
印刷フィルタ３２１は、入力されたデータをプロッタに出力（印刷）させる。メール送信フィルタ３２３は、入力されたデータを電子メールに添付して送信する。ＦＡＸ送信フィルタ３２４は、入力されたデータをＦＡＸ送信する。ＰＣ文書送信フィルタ３２５は、入力されたデータを図示しないクライアントＰＣなどに送信する。プレビューフィルタ３２６は、入力されたデータを画像処理装置１００の有する操作パネルなどにプレビュー表示させる。尚ここで、文書登録フィルタ３２２から出力されるデータについては、例外的に画像処理装置１００の外部ではなく画像処理装置１００内の記憶装置やデータ管理部４２に対してデータが出力されて保存されるものとした。
【００５５】
アプリケーションロジック層３０では、上記各フィルタを組み合わせることにより、画像処理装置１００の各機能を実現している。係る構成によれば、画像処理装置１００では、フィルタとパイプの組み合わせにより各種の機能を実現することができる。具体的には、例えばコピー機能を実現したい場合には、読取フィルタ３０１、文書加工フィルタ、印刷フィルタ３２１を組み合わせれば良い。
【００５６】
以下に、本実施形態の画像処理装置１００の動作の説明に先立ち、パイプ＆フィルタの概念を適用した画像処理装置の基本的な動作を説明する。図４はパイプ＆フィルタの概念を適用した画像処理装置において一機能を実現させる動作を説明するフローチャートである。
【００５７】
まず入力フィルタは、入力デバイスよりデータを入力し（Ｓ４１１）、このデータを、出力側に接続されているパイプに出力する（Ｓ４１２）。なお、データが複数回に分けて入力される場合（複数枚の原稿がスキャンされる場合等）は、データの入力とパイプへの出力が繰り返される。全ての入力データについて処理が終了すると（Ｓ４１３でＹＥＳ）、入力フィルタの処理は終了する。
【００５８】
加工フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み（Ｓ４２１）、データに対して画像処理を施す（Ｓ４２２）。続いて、処理結果としてのデータを出力側に接続されているパイプに出力する（Ｓ４２３）。入力側のパイプに入力された全てのデータについて処理が終了すると（Ｓ４２４でＹＥＳ）、加工フィルタの処理は終了する。
【００５９】
出力フィルタは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み（Ｓ４３１）。続いて、読み込まれたデータを出力デバイスを利用して出力する（Ｓ４３２）。入力側のパイプに入力された全てのデータについて処理が終了すると（Ｓ４３３でＹＥＳ）、出力フィルタの処理は終了する。
【００６０】
このように、画像処理装置１００では、各フィルタを部品として各機能を構築するため、機能のカスタマイズ又は拡張を簡便に行うことができる。すなわち、各フィルタ間には、機能的な依存関係はなく独立性が保たれているため、フィルタの新たな追加やフィルタの組み合わせの変更によって、新たな機能（アプリケーション）を容易に開発することができる。したがって、新たなアプリケーションの実装が要求された場合、当該アプリケーションの一部の処理について実装されていない場合は、当該一部の処理を実現するフィルタのみを開発し、インストールすればよい。よって、コントロール層２０及びアプリケーションロジック層３０より下位の層について、新たなアプリケーションの実装に応じて発生する修正の頻度を低下させることができ、安定したプラットフォームを提供することができる。
【００６１】
このため、プラットフォームによって提供される機能又はインターフェイスの粒度に影響されることなくアプリケーションの開発効率を向上させることができる。また、既存のアプリケーションによって提供されるサービスの一部を変更したアプリケーションを実装したい場合にも、このサービスを提供するフィルタの一部のみを変更すれば良いので新たにソースコードを記述する必要がなく、開発効率を向上させることができる。
【００６２】
本実施形態の画像処理装置１００では、上で説明した基本動作に加え、パイプ４１が出力側から入力側へデータの識別子を含む読出要求を伝達する動作を行う。
【００６３】
以下にこの動作を実現する仕組みを説明する。
【００６４】
本実施形態の入力フィルタ３００は、入力処理において、入力されたデータにデータを識別するための識別子を付与する機能を有する。本実施形態におけるデータの識別子は、例えば入力フィルタ３００がデータを取得した順番に付与されても良い。例えばデータがスキャン装置２１により読み取られたデータであった場合には、スキャン装置２１により読み取られた順番にデータに番号を付与し、この番号を識別子としても良い。尚この識別子は上で説明したデータを取得した順番に限定されるものではなく、入力されたデータを識別できるものであれば良い。また識別子の付与の方法についても、上記説明に限定されるものではなく、例えば入力されたデータのサイズ等に基づき付与されても良い。
【００６５】
また本実施形態の出力フィルタ３２０は、操作パネル２８等において出力されるデータを特定する情報を受けると、この情報をデータの識別子として読出要求に含ませる機能を有する。そして出力フィルタ３２０は、データの識別子を含むデータの読出要求を、出力フィルタ３２０の前段に接続されたパイプ４１へ伝達する。
【００６６】
尚本実施形態の画像処理装置１００は、入力フィルタ３００においてデータに付与される識別子と、出力フィルタ３２０が取得するデータを特定する情報とが対応していることが望ましい。例えば画像処理装置１００においてコピー処理が実行される場合には、入力フィルタ３００においてデータが取得された番号が識別子とされ、出力フィルタ３２０において、操作パネル２８から取得した頁数がデータを特定する情報とされるなどである。
【００６７】
本実施形態のパイプ４１は、上記の入力フィルタ３００及び出力フィルタ３２０の機能により、パイプ４１の出力側からデータの識別子を含むデータの読出要求をパイプ４１の入力側に伝達する。
【００６８】
よって本実施形態の画像処理装置１００では、例えば入力フィルタ３００がデータを取得した順番と、実際の画像処理において出力フィルタ３２０が必要とするデータの順序とが異なる場合にも、入力フィルタ３００がデータを取得した順序とは関係なく、出力フィルタ３２０が必要とするデータを特定して取得することができる。このため本実施形態の画像処理装置１００では、出力側の読出要求を入力側へ反映し、全体の処理速度を向上させることができる。
【００６９】
以下に、図５を参照して本実施形態の画像処理装置１００の動作を説明する。図５は第一の実施形態の画像処理装置１００における各フィルタの動作を説明するフローチャートである。
【００７０】
入力フィルタ３００は、入力デバイスよりデータを入力し、入力されたデータにデータを識別する識別子を付与する（Ｓ５１１）。入力フィルタ３００は、データとデータに付与された識別子とを対応付けて、入力フィルタ３００の出力側に接続されているパイプに出力する（Ｓ５１２）。なお、データが複数回に分けて入力される場合（複数枚の原稿がスキャンされる場合等）は、データの入力とパイプへの出力が繰り返される。全ての入力データについて処理が終了すると（Ｓ５１３でＹＥＳ）、入力フィルタ３００の処理は終了する。
【００７１】
加工フィルタ３１０は、出力側に接続されているパイプからデータの識別子を含む読出要求を受けると、加工フィルタ３１０の入力側に接続されたパイプへ識別子に対応したデータの読出要求を伝達する（Ｓ５２１）。加工フィルタ３１０は、識別子に対応したデータをパイプより読み込み（Ｓ５２２）、読み込んだデータを加工する処理を行う（Ｓ５２３）。そして加工フィルタ３１０は、処理後のデータとデータの識別子とを対応付けて、出力側に接続されているパイプに書き込む（Ｓ５２４）。入力側のパイプに識別子と対応したデータがない場合（Ｓ５２５でＹＥＳ）、加工フィルタ３１０の処理は終了する。
【００７２】
出力フィルタ３２０は、出力フィルタ３２０の入力側に接続されたパイプに対し、出力されるデータとして特定されたデータを識別する識別子を含む読出要求を伝達する（Ｓ５３１）。尚本実施形態の画像処理装置１００では、例えば操作パネル２８等の操作により出力されるデータが決定されても良い。具体的には例えば、操作パネル２８において５頁目から７頁目までの印刷処理が選択された場合、出力フィルタ３２０は特定されたデータを「５頁目から７頁までの画像データ」とし、特定されたデータの識別子を「５番目から７番目まで」としても良い。
【００７３】
出力フィルタ３２０は、出力フィルタ３２０の前段に接続されたパイプから識別子と紐付けられたデータを読み出す（Ｓ５１３）。ここで読み出されるデータは、加工フィルタ３１０において加工済みのデータである。そして出力フィルタ３２０は、読み出したデータを出力する（Ｓ５３３）。出力フィルタ３２０は、入力側のパイプに識別子と対応したデータがない場合（Ｓ５３４でＹＥＳ）、出力フィルタ３２０の処理は終了する。
【００７４】
次に図６を参照して本実施形態の画像処理装置１００における読出要求の伝達の流れについて説明する。図６は、第一の実施形態の画像処理装置１００における読出要求の伝達を説明する図である。
【００７５】
図６（Ａ）では、例えば入力フィルタ３００が読取フィルタ３０１、ＦＡＸ受信フィルタ３０４などであり、データの入力順が決まっている場合を示している。図６（Ａ）に示す例では、入力フィルタ３００は、データが入力された順番を識別子としてデータに付与する。
【００７６】
画像処理装置１００において、入力フィルタ３００と加工フィルタ３１０とがパイプ４１ａにより接続され、加工フィルタ３１０と出力フィルタ３２０とがパイプ４１ｂにより接続されている。画像処理装置１００において外部からデータが入力されると、入力フィルタ３００は入力されたデータに識別子を付与し、データと識別子とを対応付けてパイプ４１ａへ書き込む（Ｓ６０１）。
【００７７】
ここで出力フィルタ３２０は、特定のデータの出力処理の実行要求を受けると（Ｓ６０２）、出力されるデータを特定する識別子を含むデータの読出要求を出力フィルタ３２０の前段に接続されたパイプ４１ｂへ伝達する（Ｓ６０３）。パイプ４１ｂは、データの識別子を含む読出要求をパイプ４１ｂの入力側に接続された加工フィルタ３１０へ伝達する（Ｓ６０４）。
【００７８】
加工フィルタ３１０は、読出要求に含まれる識別子に対応するデータに対し加工処理を行うため、この読出要求をパイプ４１ａへ伝達する（Ｓ６０５）。パイプ４１ａには、識別子と対応付けられたデータが書き込まれている。パイプ４１ａは、加工フィルタ３１０からの読出要求を受けて、読出要求に含まれる識別子に対応するデータを加工フィルタ３１０へ書き込む（Ｓ６０６）。
【００７９】
加工フィルタ３１０は、書き込まれてデータに対し加工処理を行い、加工後のデータをパイプ４１ｂへ出力する（Ｓ６０７）。出力フィルタ３２０は、データがパイプ４１ｂに各込まれたことを検知し、パイプ４１ｂに書き込まれたデータを読み出す（Ｓ６０８）。出力フィルタ３２０は、読み出したデータに対し出力処理を実行してデータを出力する。
【００８０】
図６（Ｂ）では、例えば入力フィルタ３００が文書保管読出フィルタ３０２等のように、データが予め画像形成装置１００内の記憶装置（例えばハードディスクドライブなど）に格納されているデータをパイプ４１ａへ書き込む場合を示している。図６（Ｂ）に示す例では、データには識別子が付与されて記憶装置に格納されているため、入力フィルタ３００は任意のデータをパイプ４１ａへ書き込むことができる。
【００８１】
図６（Ｂ）のＳ６１１からＳ６１４までの処理は、図６（Ａ）のＳ６０２からＳ６０５までの処理と同様である。Ｓ６１４においてパイプ４１ａが識別子を含む読出要求を受けると、パイプ４１ａはこの読出要求を入力フィルタ３００へ伝達する（Ｓ６１５）。入力フィルタ３００は、読出要求を受けて読出要求に含まれる識別子と対応したデータをパイプ４１ａへ書き込む（Ｓ６１６）。加工フィルタ３１０は、パイプ４１ａに識別子に対応したデータが書き込まれたことを検知すると、パイプ４１ａからデータを読み出す（Ｓ６１７）。Ｓ６１８とＳ６１９の処理は、図６（Ａ）のＳ６０７とＳ６０８の処理と同様である。
【００８２】
本実施形態の画像処理装置１００では、以上の構成及び動作により、出力側からの読出要求を入力側へ反映し、全体の処理速度を向上させることができる。
【００８３】
また本実施形態の画像処理装置１００によれば、フィルタとパイプの組み合わせにより各種の機能を実現することができるため、機能のカスタマイズ又は拡張などを簡略化させることができる。
（第二の実施形態）
以下に図面を参照して本発明の第二の実施形態について説明する。第二の実施形態では、第一の実施形態の画像処理装置１００を後述する多出力処理に対応させた形態である。よって第二の実施形態の説明では、多出力に対応させた処理について説明し、第一の実施形態と同様の機能構成を有するものには第一の実施形態の説明で用いた符号と同様の符号を付与し、説明を省略する。
【００８４】
以下に本実施形態の多出力処理について説明する。
【００８５】
例えば画像処理装置において、一の入力フィルタ３００から入力されたデータを、複数の出力フィルタ３２０により複数の異なる出力方法で出力させる場合がある。図７は、入力フィルタと出力フィルタとの組み合わせの例を説明する図である。図７に示す例では、入力フィルタ３００に含まれる読取フィルタ３０１により読み取られたデータを、出力フィルタ３２０に含まれる印刷フィルタ３２１、保管文書登録フィルタ３２２、メール送信フィルタ３２３、ＦＡＸ送信フィルタ３２４の４つの出力フィルタを用いて４種類の出力データとして出力する。このように、一の入力フィルタ３００から入力されたデータを複数の出力フィルタ３２０から出力することを多出力処理と呼ぶ。
【００８６】
多出力処理は、パイプ＆フィルタの概念を適用した画像処理装置においては実現は比較的容易である。しかしながら、パイプの設計によっては、例えば画像処理装置に設けられたメモリ容量の圧迫する可能性がある。また、画像処理装置における処理の開始、中断、再開、中止といった動作を出力フィルタ毎に制御できない可能性がある。また、多出力処理とすることにより、各フィルタにおける処理の独立性が保てなくなる可能性があるという問題点があった。
【００８７】
本実施形態では、この多出力処理の場合に多出力処理の場合にはパイプに親子関係を持たせることにより、第一の実施形態において奏する効果に加えてさらに、上記の問題点を解決することができる。
【００８８】
本実施形態では、予めパイプ４１Ａに親パイプの機能を持たせ、多出力処理においてこの親パイプに子パイプを生成させる。子パイプは、一の入力フィルタ３００に対して一の出力フィルタ３２０が選択される単出力処理における動作と同様の動作し、親パイプは、親パイプと子パイプの両方の状態を把握して管理する。
【００８９】
また本実施形態の画像処理装置では、この親パイプ及び子パイプと複数の出力フィルタ３２０をそれぞれ対応させて結合させる。尚ここで言う親パイプとは、特許請求の範囲に記載のパイプに該当する。また子パイプとは、特許請求の範囲に記載の従属パイプに該当する。
【００９０】
係る構成では、多出力処理の場合において、出力フィルタの前段にはそれぞれ一の親パイプまたは一の子パイプが結合される。また親パイプ及び子パイプの前段と後段には、それぞれ一のフィルタが結合される。すなわちパイプ＆フィルタの結合の状態は、単出力処理の場合と同様の状態となる。このため本実施形態は、多出力処理においてもフィルタの制御は単出力処理の場合と同様に行うことができる。
【００９１】
以下に本実施形態におけるパイプの制御について説明する。
【００９２】
本実施形態では、操作パネル２８において複数の出力フィルタ３２０が選択されて処理の実行指示がなされると、コントロール層２０がパイプの制御を開始する。図８は、コントロール層２０によるパイプ４１Ａの制御を説明する図である。
【００９３】
コントロール層２０は、親パイプとなるパイプ４１Ａの有する子パイプ生成機能により子パイプ４１ｃを生成させる。親パイプとなるパイプ４Ａの備える機能の詳細については後述する。
【００９４】
コントロール層２０は、子パイプ４１ｃが生成されると、選択された入力フィルタ３００と出力フィルタ３２０に基づき、どのフィルタとどのパイプを結合させるか判断する。コントロール層２０は、親パイプであるパイプ４１Ａの前段には入力フィルタ３００を結合させ、パイプ４１Ａ及び子パイプ４１ｃの後段には一の出力フィルタ３２０をそれぞれ結合させる。尚このとき、コントロール層２０は、フィルタやパイプの種類によって適切な結合が選択されるように予め設定されていても良い。また、コントロール層２０は、入力フィルタと出力フィルタとの間に加工フィルタが介在している場合には、この加工フィルタの前段と後段にそれぞれ一のパイプを結合させる。
【００９５】
以下に、図９を参照して本実施形態のパイプ４１Ａの機能について説明する。図９は、第二の実施形態のパイプ４１Ａの機能を説明する図である。
【００９６】
パイプ４１Ａの実体は、例えばメモリ（ＨＤＤ（Hard Disk Drive））などであり、以下に説明するパイプ４１Ａの有する各機能は、このメモリに格納されたプログラムにより実現されるものであっても良い。
【００９７】
パイプ４１Ａは、子パイプ生成部９１、パイプ管理部９２、データ管理部９３、取得状況テーブル９４、要求管理テーブル９５、参照データ格納部９６とを備える。
【００９８】
子パイプ生成部９１は、親パイプであるパイプ４１Ａが子パイプ４１ｃを生成するための手段であり、特許請求の範囲に記載の従属パイプ生成手段に該当する。パイプ管理部９２は、パイプ４１Ａがパイプ４１Ａ及び子パイプ４１ｃの状態を把握し管理するための手段である。
【００９９】
データ管理部９３は、パイプ４１Ａの前段に結合されたフィルタより出力される実データを管理する。またデータ管理部９３は、パイプ４１Ａ内に読出要求に含まれる識別子に対応するデータが存在するか否かを判定し、判定結果に応じて読出要求を管理する。データ管理部９３は、特許請求の範囲に記載のデータ管理手段に該当する。取得状況テーブル９４は、パイプ４１Ａ及び子パイプ４１ｃにおける実データの参照状況を示す情報が格納されたテーブルである。要求管理テーブル９５は、パイプ４１Ａの前段に接続されたフィルタに対するデータの読出要求を管理するテーブルである。要求管理テーブル９５は、特許請求の範囲に記載された要求管理手段に該当する。参照データ格納部９６は、実データの参照先を示す後述する参照データが格納される場所である。
【０１００】
子パイプ４１ｃは、データ管理部９７と参照データ格納部９８とを有する。
【０１０１】
データ管理部９７は、子パイプ４１ｃ内に読出要求に含まれる識別子に対応するデータが存在するか否かを判定し、判定結果に応じて読出要求を管理する手段であり、特許請求の範囲に記載のデータ管理手段に該当する。参照データ格納部９８は、パイプ４１Ａの参照データと同様の参照データが格納される。
【０１０２】
次に、本実施形態のパイプ４１Ａ及び子パイプ４１ｃによる多出力処理について説明する。図１０は、第二の実施形態においてパイプ４１Ａにデータが書き込まれる場合の基本動作を説明する図である。
【０１０３】
図１０に示す例では、多出力処理において選択された出力フィルタは２つであり、コントロール層２０により、親パイプであるパイプ４１Ａの後段と、子パイプ４１ｃの後段にそれぞれ一の出力フィルタが結合されている。ここでパイプ４１Ａの前段に結合されるフィルタは、入力フィルタではなく、加工フィルタであっても良い。また、パイプ４１及び子パイプ４１ｃの後段のフィルタは、出力フィルタではなく、加工フィルタであっても良い。
【０１０４】
パイプ４１Ａにおいてデータ管理部９３は、前段のフィルタよりデータが出力されると、出力されたデータそのものである実データをメモリ制御部５３により制御されるメモリへ書き込む。またデータ管理部９３は、パイプ４１Ａの有する参照データ格納部９６へメモリに書き込まれた実データを参照するための参照データを書き込む。参照データとは、例えば実データが書き込まれた場所などを示す情報などであり、この参照データを辿ることでメモリに書き込まれた実データにアクセスすることができる。参照データは、例えばメモリ制御部５３からパイプ４１Ａへ提供されても良い。
【０１０５】
パイプ４１Ａは、パイプ４１Ａにおいてメモリへの実データの書き込みと、参照データ格納部９６への参照データの書き込みが終了すると、次に子パイプ４１ｃの有する参照データ格納部９８へ参照データを書き込む。ここで、子パイプ４１ｃの参照データ格納部９８に書き込まれる参照データは、パイプ４１Ａの参照データ格納部９６に書き込まれた参照データと同一のデータである。
【０１０６】
このように、本実施形態ではパイプ４１Ａの前段のフィルタから出力された実データを、パイプ４１Ａの外部の記憶装置であるメモリへ一時的に保持させている。そして、親パイプであるパイプ４１Ａと子パイプ４１ｃの両方へ実データに対応した参照データを格納することで、パイプ４１Ａと子パイプ４１ｃの両方からこのメモリへアクセス可能としている。このため本実施形態では、多出力処理によりパイプの数が増加した場合でも、実際にメモリに書き込まれる実データの容量は同一となる。よって多出力処理の実行にあたりメモリが圧迫されることがない。尚多出力処理では、各パイプに書き込まれる参照データの分のみ、データの容量は増加するが、参照データのデータサイズは、実データのデータサイズと比較して十分小さいのでここでは考慮しなくても良いものとした。
【０１０７】
次に、図１０に示す状態において、パイプ４１Ａと子パイプ４１ｃの後段のフィルタが、パイプ４１Ａ、パイプ４１ｃからデータを読み出す場合の基本動作を説明する。
【０１０８】
図１１は、パイプ４１Ａと子パイプ４１ｃにおいて後段のフィルタからデータが読み出される場合の基本動作を説明する図である。
【０１０９】
まずパイプ４１Ａからデータが読み出される場合について説明する。パイプ４１Ａは、後段のフィルタからデータの読み出し指示を受けると、参照データ格納部９６に書き込まれた参照データを参照する。パイプ４１Ａはこの参照データに基づきメモリに書き込まれた実データを取得し、この取得した実データを後段のフィルタへ渡す。
【０１１０】
また子パイプ４１ｃにおいて、後段のフィルタからデータの読み出し指示を受けると、子パイプ４１ｃは参照データ格納部９８に書き込まれた参照データに基づきメモリに書き込まれた実データを取得する。そして取得した実データを後段のフィルタへ渡す。すなわち子パイプ４１ｃは、パイプ４１Ａと同様の動作をする。
【０１１１】
次に、図１１に示す状態において、フィルタによるパイプ４１Ａ及び子パイプ４１ｃからのデータの読み出しが終了した後のパイプ４１Ａ及び子パイプ４１ｃの基本動作を説明する。
【０１１２】
図１２は、パイプ４１Ａと子パイプ４１ｃにおいて後段のフィルタからデータが読み出された後の基本動作を説明する図である。
【０１１３】
子パイプ４１ｃでは、子パイプ４１ｃの後段のフィルタにデータが読み出されると、データが読み出されたことをパイプ４１Ａへ通知する。パイプ４１Ａは、この通知を受けたとき、パイプ４１Ａと子パイプ４１ｃとの両方においてメモリに書き込まれたデータが参照された後であった場合には、データ管理部９３によりこの実データをメモリから破棄する。
【０１１４】
以下に、実データの破棄について説明する。図１３は、実データの破棄する処理を説明するシーケンス図である。
【０１１５】
図１３では、パイプ４１Ａの後段のフィルタを出力１とし、子パイプ４１ｃの後段のフィルタを出力２として説明する。
【０１１６】
パイプ４１Ａにおいて、出力１からの読み出し指示により、参照データが参照されて実データが読み出されると（Ｓ１３０１）、パイプ４１Ａでは、参照データ格納部９６に書き込まれた、実データに係る参照データを破棄する（Ｓ１３０２）。
【０１１７】
次に、子パイプ４１ｃにおいて、出力２からの読み出し指示により、参照データが参照されて実データが読み出されると（Ｓ１３０３）、子パイプ４１ｃでは、参照データ格納部９８に書き込まれた、実データに係る参照データを破棄する（Ｓ１３０４）。そして子パイプ４１ｃは、パイプ４１Ａに対して実データが読み出された旨を通知する（Ｓ１３０５）。
【０１１８】
ここでパイプ４１Ａは、パイプ４１Ａと子パイプ４１ｃとの両方において、実データが参照データに基づき読み出されて取得されたことを確認すると、パイプ４１Ａのデータ管理部９３がメモリから実データを破棄する（Ｓ１３０６）。
【０１１９】
また本実施形態のパイプ４１Ａは、取得状況テーブル９４を用いてパイプ４１Ａと子パイプ４１ｃにおける実データの取得状況を管理している。
【０１２０】
パイプ４１Ａは、取得状況テーブル９４により、パイプ４１Ａと子パイプ４１ｃにおいて参照データの参照状況と実データの取得状況を管理している。パイプ４１Ａは、参照データがパイプ４１Ａと子パイプ４１ｃの両方から参照されて破棄されている場合には、実データがパイプ４１Ａと子パイプ４１ｃの両方から読み出されて取得されたものとする。パイプ４１Ａは、実データがパイプ４１Ａと子パイプ４１ｃの両方から取得されると、データ管理部９３によりメモリから実データを破棄させる。
【０１２１】
以下に取得状況テーブル９４について説明する。図１４は取得状況テーブル９４を説明する図である。パイプ４１Ａにおいて、データ管理部９３は、この取得状況テーブル９４に基づきメモリに書き込まれた実データの破棄を行う。
【０１２２】
図１４に示す取得状況テーブル９４では、実データ１は、パイプ４１Ａと子パイプ４１ｃの両者から取得されている。この場合取得状況テーブル９４には、実データ１に係る取得状況としてパイプ４１Ａと子パイプ４１ｃにおいて実データ１を取得済みであることを示す情報が格納される。よってデータ管理部９３は、この情報に基づき実データ１を破棄する。
【０１２３】
また、図１４に示す取得状況テーブル９４では、実データ３はパイプ４１Ａから取得されており、子パイプ４１ｃからはまだ取得されていない。この場合取得状況テーブル９４では、実データ３に係る取得状況として、パイプ４１Ａにおいては取得済みを示し、子パイプ４１ｃにおいては未取得を示す情報が格納される。よってデータ管理部９３は、この情報に基づき実データ３を保持する。
【０１２４】
このようにデータ管理部９３は、実データが、パイプ４１Ａと子パイプ４１ｃの両者、すなわち実データに係る参照データを有する全てのパイプに実データが取得されたときに、この実データを破棄するのである。よって本実施形態では、取得済みの実データが長期間保持されることがなく、メモリを効率的に使用することができる。
【０１２５】
また本実施形態では、パイプ４１Ａと子パイプ４１ｃとがそれぞれ参照データ格納部を有する。よってパイプ４１Ａの前段のフィルタは、任意のタイミングでパイプ４１Ａへデータ書き込むことができ、パイプ４１Ａの後段のフィルタ及び子パイプ４１ｃも任意のタイミングでパイプ４１Ａからデータを読み出すことができる。また子パイプ４１ｃの後段のフィルタも、任意のタイミングで子パイプ４１ｃからのデータの読み出しを行うことができる。
【０１２６】
次に、本実施形態において特定のデータを読み出す場合の動作について説明する。図１５は、第二の実施形態においてパイプ４１Ａに特定のデータが書き込まれる場合の基本動作を説明する図である。図１５では、パイプ４１Ａの入力側に接続されたフィルタを入力１とし、パイプ４１Ａの出力側に接続された二つのフィルタを出力１とし、子パイプ４１ｃの出力側に接続されたフィルタを出力２とした。
【０１２７】
本実施形態のパイプ４１Ａと子パイプ４１ｃは、データの識別子を含む読出要求を出力１または出力２から入力１へ伝達する。
【０１２８】
パイプ４１Ａは、出力１から例えば識別子１を含む読出要求を受けると（Ｓ１５０１）、この識別子１を含む読出要求を入力１へ伝達する（Ｓ１５０２）。入力１は、識別子１を含む読出要求を受けると識別子１に対応したデータを出力する（Ｓ１５０３）。パイプ４１Ａにおいてデータ管理部９３は、入力１から識別子１に対応したデータが出力されると、出力されたデータそのものである実データと識別子１とを、メモリ制御部５３により制御されるメモリへ書き込む（Ｓ１５０４）。
【０１２９】
またデータ管理部９３は、パイプ４１Ａの有する参照データ格納部９６へ、メモリに書き込まれた実データを参照するための参照データと識別子１とを書き込む（Ｓ１５０５）。
次にデータ管理部９３は、子パイプ４１ｃの有する参照データ格納部９８へ参照データと識別子１とを書き込む（Ｓ１５０６）。ここパイプ４１Ａでは、出力１に識別子１と参照データに基づき、識別子１に対応した実データを出力１へ書き出す（Ｓ１５０７）。
【０１３０】
次に子パイプ４１ｃが出力２から識別子１を含む読出要求を受けた場合を説明する。子パイプ４１ｃは、出力２から識別子１を含む読出要求を受けると（Ｓ１５０８）、データ管理部９７は、参照データ格納部９８から識別子１の参照データを検索する（Ｓ１５０９）。参照データ格納部９８に該当の参照データがある場合、子パイプ４１ｃは読出要求を受けたことをパイプ４１Ａに伝達せずに、データがあることを出力２へ通知し、参照データに基づき識別子１の実データを出力２へ書き出す（Ｓ１５１０）。
【０１３１】
本実施形態では、以上の処理により入力１が二度同じ読出要求を受けることがない。よって入力１は、パイプ４１Ａからの読出要求にのみ対応すればよく、単出力処理と同様の振る舞いをすれば良い。
【０１３２】
次に本実施形態において要求管理テーブル９５を用いる場合について説明する。図１６は、第二の実施形態において要求管理テーブル９５を用いて特定のデータを読み出す場合を説明する図である。
【０１３３】
図１６でも、パイプ４１Ａには入力１とし出力１が接続されており、子パイプ４１ｃには出力２が接続されている。
【０１３４】
以下に要求管理テーブル９５について説明する。
【０１３５】
要求管理テーブル９５は、読出要求がパイプ４１Ａから入力１へ伝達されたか否かを示す情報がデータの識別子毎に格納されている。図１６に示す要求管理テーブル９５では、識別子１に対応するデータの読出要求が入力１へ伝達済みであり、識別子２〜識別子４までに対応するデータの読出要求は入力１へ伝達されていないことを示している。
【０１３６】
出力１から識別子１を含むデータの読出要求がパイプ４１Ａへ伝達されると（Ｓ１６０１）、パイプ４１Ａは、データ管理部９３により要求管理テーブル９５を参照して識別子１に対応するデータの読出要求が入力１へ伝達されているか否かを判定する（Ｓ１６０２）。パイプ４１Ａは、要求管理テーブル９５において読出要求が伝達されていない場合には、読出要求を入力１へ伝達する（Ｓ１６０３）。そしてパイプ４１Ａは、データ管理部９３により、識別子１に対するデータの読出要求が入力１に伝達されたことを示すように要求管理テーブル９５を更新する。
【０１３７】
Ｓ１６０４からＳ１６０８までの処理は、入力１へ読出要求が伝達された後に出力１へ識別子１に対応するデータが書き出されるまでの処理であり、図１５のＳ１５０３からＳ１５０７までの処理と同様であるから説明を省略する。
【０１３８】
次に子パイプ４１ｃが出力２から識別子１を含む読出要求が伝達された場合を説明する。出力２から子パイプ４１ｃへ読出要求が伝達されると（Ｓ１６０９）、子パイプ４１ｃは読出要求を受けたことをパイプ４１Ａへ通知する（Ｓ１６１０）。パイプ４１Ａは、この通知を受けて要求管理テーブル９５を参照し、識別子１のデータの読出要求が入力１へ伝達されているか否かを判定する。
【０１３９】
例えば図１６に示す要求管理テーブル９５では、識別子１のデータの読出要求は入力１へ伝達済みとなっている。よってパイプ４１Ａは、入力１へ読出要求を伝達せずに、子パイプ４１ｃに対して読出要求が入力１へ伝達済みであることを通知する（Ｓ１６１１）。子パイプ４１ｃは、この通知を受けて参照データ格納部９８を参照し（Ｓ１６１２）、参照データに基づき識別子１の実データを出力２へ書き出す（Ｓ１６１３）。
【０１４０】
このように要求管理テーブル９５を用いれば、パイプ４１Ａは、パイプ４１Ａ及び子パイプ４１ｃが受けた読出要求が入力１へ伝達されているか否かを管理することができる。よってパイプ４１Ａは、入力１へ伝達されていない読出要求のみを入力１へ伝達することができる。このため入力１は、同じ要求を２度受けることがなく、パイプ４１Ａから読出要求を受けたときに要求されたデータを書き出せばよい。すなわち入力１は、単出力処理の場合と同様の振る舞いをすれば良い。また要求管理テーブル９５を用いれば、例えば入力１からパイプ４１Ａへのデータの書き出しが完了する前に、子パイプ４１ｃが同じ識別子のデータの読出要求を受けた場合でも、入力１に読出要求が伝達されているか否かを確認することができる。
【０１４１】
以上に説明したように、出力側からの読出要求を入力側へ反映し、全体の処理速度を向上させることができる。またに本実施形態によれば、パイプの入力側のフィルタに重複してデータの読出要求を行うことを防止でき、出力処理においてもフィルタの制御は単出力処理の場合と同様に行うことができる。
【０１４２】
以上、各実施形態に基づき本発明の説明を行ってきたが、上記実施形態に示した要件に本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することができ、その応用形態に応じて適切に定めることができる。
【産業上の利用可能性】
【０１４３】
本発明は、パイプ＆フィルタの概念を適用した画像処理装置に利用可能である。
【図面の簡単な説明】
【０１４４】
【図１】パイプ＆フィルタの概念を説明する図である。
【図２】第一の実施形態の画像処理装置１００のハードウェア構成図である。
【図３】第一の実施形態の画像処理装置１００のソフトウェア構成図である
【図４】パイプ＆フィルタの概念を適用した画像処理装置において一機能を実現させる動作を説明するフローチャートである。
【図５】第一の実施形態の画像処理装置１００における各フィルタの動作を説明するフローチャートである。
【図６】第一の実施形態の画像処理装置１００における読出要求の伝達を説明する図である。
【図７】入力フィルタと出力フィルタとの組み合わせの例を説明する図である。
【図８】コントロール層２０によるパイプ４１Ａの制御を説明する図である。
【図９】第二の実施形態のパイプ４１Ａの機能を説明する図である。
【図１０】第二の実施形態においてパイプ４１Ａにデータが書き込まれる場合の基本動作を説明する図である。
【図１１】パイプ４１Ａと子パイプ４１ｃにおいて後段のフィルタからデータが読み出される場合の基本動作を説明する図である。
【図１２】パイプ４１Ａと子パイプ４１ｃにおいて後段のフィルタからデータが読み出された後の基本動作を説明する図である。
【図１３】実データの破棄する処理を説明するシーケンス図である。
【図１４】取得状況テーブル９４を説明する図である。
【図１５】第二の実施形態においてパイプ４１Ａに特定のデータが書き込まれる場合の基本動作を説明する図である。
【図１６】第二の実施形態において要求管理テーブル９５を用いて特定のデータを読み出す場合を説明する図である。
【符号の説明】
【０１４５】
２０  コントロール層
４１、４１Ａ  パイプ
４１ｃ  子パイプ
２８  操作パネル
９１  子パイプ生成部
９２  パイプ管理部
９３、９７  データ管理部
９４  取得状況テーブル
９５  要求管理テーブル
９６、９８  参照データ格納部
１００  画像処理装置
３００  入力フィルタ
３１０  加工フィルタ
３２０  出力フィルタ
【図１】
2008311872.tif 000003
【図２】
2008311872.tif 000004
【図３】
2008311872.tif 000005
【図４】
2008311872.tif 000006
【図５】
2008311872.tif 000007
【図６】
2008311872.tif 000008
【図７】
2008311872.tif 000009
【図８】
2008311872.tif 000010
【図９】
2008311872.tif 000011
【図１０】
2008311872.tif 000012
【図１１】
2008311872.tif 000013
【図１２】
2008311872.tif 000014
【図１３】
2008311872.tif 000015
【図１４】
2008311872.tif 000016
【図１５】
2008311872.tif 000017
【図１６】
2008311872.tif 000018