本発明では、パイプ&フィルタと呼ばれる考え方に基づくソフトウェアアーキテクチャを画像処理装置に適用することで、機能のカスタマイズ又は拡張などを簡略化する。さらに本発明では、小容量の半導体メモリを効率的に使用することで、生産性の低下を防止できる。
以下に、本発明の実施形態の説明に先立ち、本発明の画像処理装置に適用されたパイプ&フィルタの概念について説明する。図1は、パイプ&フィルタの概念を説明する図である。図1に示す「P」はパイプを示し、「F」はフィルタを示す。
フィルタとは、入力された画像データに対して所定の処理を施して、その処理結果を出力するプログラムである。そしてパイプは、フィルタとフィルタを連結する手段であり、パイプの入力側に連結されたフィルタから出力される処理結果を一時的に保持し、その後パイプの出力側へ連結されたフィルタへ画像データを伝達する。このように、パイプ&フィルタの概念によれば、パイプを介在させてフィルタにおける処理を連続したものとすることができる。
本発明では、フィルタにおいて施される所定の処理を、入力された画像データに対し、所定の変換を施す処理と考える。すなわち、本発明の画像処理装置では、画像処理装置で実現される各機能をドキュメント(入力画像データ)に対する「変換処理」の連続として捉える。画像処理装置の各機能は、ドキュメントすなわち画像データの入力、加工及び出力によって構成されるものと考える。そこで、以下の実施形態の説明では「入力処理」、「加工処理」及び「出力処理」のそれぞれを「変換処理」として捉え、一つの変換処理を実現するソフトウェア部品をフィルタとして構成した。
本発明では、画像データの入力処理を制御するフィルタを入力フィルタ、画像データの加工処理を制御するフィルタを加工フィルタ、画像データの出力処理を制御するフィルタを出力フィルタとした。これらの各フィルタはそれぞれ独立したプログラムであって、フィルタ間の依存関係は存在しない。よって、各フィルタは、画像処理装置において独立してフィルタ単位で追加(インストール)、削除(アンインストール)することが可能である。
図2は、パイプ&フィルタの概念が適用された画像処理装置の一例のハードウェア構成図である。画像処理装置100は、それぞれバスBで相互に接続されているスキャン装置11、プロッタ装置12、ドライブ装置13、補助記憶装置14、メモリ装置15、演算処理装置16、インターフェース装置17、操作装置18で構成される。
スキャン装置11はスキャナエンジンなどで構成され、原稿を読み取って画像データとするために用いられる。プロッタ装置12はプロッタエンジンなどで構成され、画像データを印刷するために用いられる。インターフェース装置17は、モデム、LANカードなどで構成されており、後述のネットワーク200に接続する為に用いられる。
本発明の画像処理プログラムは、画像処理装置100を制御する各種プログラムの少なくとも一部である。画像処理プログラムは例えば記録媒体19の配布やネットワーク200からのダウンロードなどによって提供される。画像処理プログラムを記録した記録媒体19は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
また、画像処理プログラムを記録した記録媒体19がドライブ装置13にセットされると、画像処理プログラムは記録媒体19からドライブ装置13を介して補助記憶装置14にインストールされる。ネットワーク200からダウンロードされた画像処理プログラムは、インターフェース装置17を介して補助記憶装置14にインストールされる。
画像処理装置100は、インストールされた画像処理プログラムを格納すると共に、必要なファイル、画像データ等を格納する。メモリ装置15は、コンピュータの起動時に補助記憶装置14から画像処理プログラムを読み出して格納する。そして、演算処理装置16はメモリ装置15に格納された画像処理プログラムに従って、後述するような各種処理を実現している。
(第一の実施形態)
図3は、本発明の第一の実施形態の画像処理装置100のソフトウェア構成を示す構成図である。画像処理装置100は、例えばプリンタ、コピー、スキャナ、又はFAX等の複数の機能を一台の筐体において実現する複合機である。
画像処理装置100の機能を実現するソフトウェアは階層構造となっており、ユーザインターフェイス層110、コントロール層120、アプリケーションロジック層130、デバイスサービス層140及びデバイス層150により構成されている。これらの各層における上下関係は、層間の呼び出し関係に基づいている。すなわち、図中において上位層が下位層を呼び出す。
画像処理装置100において、ユーザインターフェイス層110によりユーザから各種機能の実行指示が成されると、ユーザインターフェイス層110は、コントロール層120を呼び出しこの実行指示に基づきアプリケーションロジック層130を制御する。アプリケーションロジック層130では、コントロール層120からの指示に基づき要求された機能を実現させるアプリケーションを実行する。そして、この実行結果に基づきデバイスサービス層140、デバイス層150が画像処理装置100のハードウェア資源を制御する。画像処理装置100では、このような動作によりユーザインターフェイス層110が受け付けた機能に対応した出力結果を得る。
以下に各層について説明する。
ユーザインターフェイス層110には、例えばローカルUI(user interface)部111が実装されており、画像処理装置100の各種機能を実現するための実行指示を受け付ける機能を有する。ここで言う各種機能とは、例えばコピー機能、印刷機能、スキャン機能、FAX機能などである。ローカルUI部111は、例えば画像処理装置100の操作装置18に設けられていても良い。この操作装置18は、例えば表示領域を備えるオペレーションパネルなどにより実現されても良い。ユーザインターフェイス層110において、ローカルUI部111で受け付けられた実行指示は、コントロール層120へ伝達される。
コントロール層120では、画像処理装置100の各機能を実現する処理を制御するための機能が実装されている。具体的には、要求された機能に応じてアプリケーションロジック層130における各フィルタの実行を制御する。尚、以下の本実施形態において述べる画像処理装置100の機能とは、画像処理装置100がユーザに対して提供する一つのまとまった単位(要求が入力されて最終的な出力が得られるまで)のサービスの定義であり、ソフトウェア的には一つのまとまった単位のサービスを提供するアプリケーションと同義である。
アプリケーションロジック層130には、画像処理装置100において提供される機能の一部を実現する部品群である各種フィルタが実装されている。アプリケーションロジック層130では、コントロール層120の制御により、複数のフィルタを組み合わせて一つの機能が実現される。本実施形態におけるアプリケーションロジック層130には、入力フィルタ131、加工フィルタ132、出力フィルタ133及びアクティビティ134とが実装されている。アプリケーションロジック層130に実装された各フィルタは、各フィルタ毎に決められた定義に基づき動作するものであり、この定義に基づき制御される。これら各フィルタの詳細は後述する。アクティビティ134は、ユーザインターフェイス層110において要求された機能に応じて各フィルタを接続し、各フィルタの実行をとりまとめるコンポーネントである。
デバイスサービス層140には、アプリケーションロジック層130に実装された各フィルタが共通して利用する下位の機能が実装されている。本実施形態のデバイスサービス層140には画像パイプ141が実装されている。画像パイプ141は上で述べたパイプの機能を実現するものであり、アプリケーションロジック層130に実装されている各フィルタのうち、一のフィルタからの出力結果を、一のフィルタへ伝達する。ここで画像パイプ141は、例えば入力フィルタ131と加工フィルタ132とを接続しても良いし、加工フィルタ132と出力フィルタ133とを接続しても良い。
デバイス層150には、ハードウェアを制御するプログラムであるドライバが実装されている。本実施形態のデバイス層150には、例えばスキャナ部151、プロッタ部152等が実装されている。これらの各制御部は、それぞれの名称に付けられたデバイスを制御するものである。
以下に、アプリケーションロジック層130に実装された各フィルタについてさらに説明する。
本実施形態の入力フィルタ131は、画像処理装置100の外部より入力された画像データに対する入力処理を制御する。入力フィルタ131には、例えば読取フィルタ、メール受信フィルタ、FAX受信フィルタ、PC文書受信フィルタ等が含まれる(図示せず)。読取フィルタは、例えばスキャナによる画像データの読取を制御し、読み取られた画像データを出力する。メール受信フィルタは、画像処理装置100において電子メールを受信し、受信した電子メールに含まれる画像データを出力する。FAX受信フィルタはFAX受信を制御し、受信された画像データを出力する。PC文書受信フィルタは、図示しないクライアントPCなどから印刷画像データを受信し、この印刷画像データを出力する。レポートフィルタ306は、画像処理装置100の設定情報や履歴情報などを例えば表形式などに整え、この整えられた画像データを出力する。
本実施形態の加工フィルタ132は、加工フィルタ132の入力側のフィルタより入力された画像データに所定の加工処理を施し、加工フィルタ132の出力側にあるフィルタへ処理結果を出力する。ここで言う加工処理とは、例えば入力された画像データの集約、拡大、縮小、回転処理等である。
本実施形態の出力フィルタ133は、入力された画像データ対する出力処理を制御し、画像処理装置100の外部へ出力する。出力フィルタ133には、印刷フィルタ、プレビューフィルタ等が含まれる。また図2に示す出力フィルタ133には、例えばメール送信フィルタ、FAX送信フィルタ、PC文書送信フィルタ等が含まれる。
印刷フィルタは、入力された画像データをプロッタ部152に出力(印刷)させる。プレビューフィルタは、入力された画像データを画像処理装置100の有する図示しない例えば操作部などにプレビュー表示させる。またメール送信フィルタは、画像データを電子メールに添付して送信する。またFAX送信フィルタは、入力された画像データをFAX送信する。PC文書送信フィルタは、入力された画像データを図示しないクライアントPCなどに送信する。
本実施形態のアクティビティ134には、ユーザインターフェイス層110においてローカルUI部111から入力された指示がコントロール層120を介して伝達される。アクティビティ134は、この指示にしたがって、入力フィルタ131、加工フィルタ132、出力フィルタ133におけるジョブの実行を制御する。
アプリケーションロジック層130では、上記各フィルタを組み合わせることにより、画像処理装置100の各機能を実現している。係る構成によれば、画像処理装置100では、フィルタとパイプの組み合わせにより各種の機能を実現することができる。具体的には、例えばコピー機能を実現したい場合には、入力フィルタ131に含まれる読取フィルタ、加工フィルタ132、出力フィルタ133に含まれる印刷フィルタを組み合わせれば良い。
以下に、本実施形態の画像処理装置100における印刷処理について説明する。図4は、第一の実施形態の画像処理装置100における印刷処理を説明する図である。
本実施形態の画像処理装置100においてコントロール層120は、アクティビティ134に対し、各フィルタでの処理に係る処理の実行を制御させるジョブを生成させる(S31)。本実施形態の画像処理装置100では、例えば画像処理装置100の電源が投入されたときに、このアクティビティ134に対するジョブを生成しても良い。
ローカルUI部111により印刷処理の実行要求がなされると、ローカルUI部111は、この要求をコントロール層120へ伝達する(S32)。尚図4に示す例では、印刷処理の一つであるコピー処理が選択されたものとして説明する。この場合、ローカルUI部111では、紙原稿の読取及び印刷を指示する操作がなされる。
アクティビティ134は、紙原稿の読取及び印刷指示を受けると、読取フィルタ131a、加工フィルタ132、印刷フィルタ133aとを画像パイプにより接続する。尚このとき、実際には読取フィルタ131aに含まれる読取フィルタが加工フィルタ132に接続される。次にコントロール層120は、読取フィルタ131aにより実行されるジョブ(S33)、加工フィルタ132により実行されるジョブ(S34)、印刷フィルタ133aにより実行されるジョブを生成する(S35)。
コントロール層120により各フィルタにおいて実行されるジョブが生成されると、アクティビティ134は、各フィルタに対しジョブの実行を指示する。すると、読取フィルタ131aにより、入力部であるスキャナ部151から紙原稿を読取る処理が実行され、紙原稿が画像データとして読み込まれる。この画像データが読取フィルタ131aから出力されて、画像パイプ141を介して加工フィルタ132へ伝達される。
加工フィルタ132では、この画像データに予め設定された所定の加工処理を施し、加工された画像データとして出力する。加工された画像データは、次に出力フィルタ133の一つである印刷フィルタ133aへ伝達される。印刷フィルタ133aでは、この加工された画像データを出力部であるプロッタ部152から出力させて、コピー処理を実現する。
このように本実施形態では、入力フィルタ131、加工フィルタ132、出力フィルタ133は、それぞれが独立して制御されており、各フィルタ間に依存関係が存在しない。このため本実施形態では、機能のカスタマイズ又は拡張などを行う場合には、該当するフィルタ毎にカスタマイズ等を行えば良い。よって本実施形態によれば、機能のカスタマイズ又は拡張などを簡略化させることができる。
ところで、本実施形態の画像処理装置100の画像パイプとは、フィルタから出力され画像データを一時的に保持する記憶手段であり、例えばメモリなどで実現される。
したがってパイプ&フィルタの概念を適用した画像処理装置では、画像パイプを実現する半導体メモリが必要となる。このような画像処理装置では、生産性の低下を防止するために、大容量の半導体メモリを搭載する好ましいが、コスト面の理由等により大容量の半導体メモリを搭載することはできない。
このため、パイプ&フィルタを適用した画像処理装置では、小容量の半導体メモリを効率的に使用することで、生産性の低下を防止することが望まれている。
そこで本実施形態の画像処理装置100は、小容量の半導体メモリを効率的に使用することで、生産性の低下を防止できる構成とした。
以下に本実施形態の画像処理装置100について、さらに説明する。
本実施形態の画像処理装置100は、画像パイプを実現する半導体メモリにおいて、画像データが記憶される領域を管理する記憶領域割当部を有する。本実施形態の画像処理装置100では、この記憶領域割当部により、画像パイプの前段のフィルタから出力される画像データに対し、画像パイプの後段のフィルタに対する画像データの出力完了が予測されるメモリ領域の順に、メモリ領域を割り当てる。
図5は、第一の実施形態の画像処理装置100の機能構成を説明する図である。
本実施形態の画像処理装置100において、スキャナ装置11は、セットされた原稿を読み取り、読み取った原稿の画像を画像形成装置100に供給する。プロッタ装置12は、スキャナ装置11やネットワーク200から供給された画像データの入力を受けて、この画像データに対して画像処理を施して出力する。また画像処理装置100は、ネットワーク200を介してFAX21やPC22に接続されていても良い。
また本実施形態の画像形成装置100は、システム制御部210、要求受付部220、画像入力部230、画像処理部240、画像記憶部250、記憶領域割当部260、画像出力部270を有する。
システム制御部210は、画像形成装置100の有する各部を制御する。要求受付部220は、テンキー、スタートキー、ファンクションキー、ワンタッチキー等の各種操作キー等を有する操作装置18と接続され、操作装置18を介して入力されたユーザからの指示入力を受け付ける。
画像入力部230は、スキャナ装置11、ネットワーク200と接続され、画像の入力を受け付ける。尚画像入力部230は、入力フィルタの機能を実現するものである。
画像処理部240は、画像入力部230が入力を受け付けた画像データに対し、画像処理を施して出力用の画像データを生成する。ここで行なう画像処理とは、例えば、濃度変換や変倍等のユーザの要求に応じた画像処理や、画像データのフォーマット変換や色空間変換、画像回転等の出力装置に依存する画像処理である。尚画像処理部240は、加工フィルタの機能を実現するものである。
画像記憶部250は、メモリ、HDD(ハードディスク)から構成されており、画像パイプの機能を実現するものである。メモリは、画像入力部230が受け付けた画像データや画像処理部240が画像処理を行なって生成した画像データを記憶したり、画像処理部240が画像処理を行なう際の中間画像データを一時的に記憶したりする際に使用される。HDDは、画像データを永続的に記憶する場合や、画像データのバックアップを記憶する場合に使用される。
記憶領域割当部260は、メモリの使用状況を管理し、後述する入力画像データ及び出力画像データのための記憶領域を割り当てる。また記憶領域割当部260は、同期信号発生部261、処理時間計算部262を有する。記憶領域割当部260において、処理時間計算部262は、画像出力と画像処理の処理時間を計算する。同期信号発生部262は、最適な画像処理実行タイミングを決定して、同期を取るための信号を発生する。
画像出力部270は、画像処理部240によって生成された出力用の画像データをプロッタ装置12やネットワーク200に出力する。尚画像出力部270は、出力フィルタの機能を実現するものである。
ここで本実施形態における記憶領域割当部260の動作の概略について説明する。図6は、記憶領域割当部260の動作の概略を説明する図である。
本実施形態の画像処理装置100において、記憶領域割当部260は、画像パイプ50、51における画像データの記憶領域の割当を行うことで、画像パイプ50、51における画像データの記憶領域を管理する。
ここでは、画像パイプ51が、加工フィルタ132から書き込まれ画像データを印刷フィルタ133aに書き出す場合について説明する。尚以下の説明において、画像パイプの前段のフィルタから画像パイプ(画像記憶部250)に書き込まれる画像データを入力画像データと呼び、画像パイプ(画像記憶部250)から、画像パイプの後段のフィルタに読み出される画像データを出力画像データと呼ぶ。よって図6に示す例では、加工フィルタ132から画像パイプ51に書き込まれる画像データが入力画像データであり、画像パイプ51から印刷フィルタ133aへ書き出される画像データが出力画像データである。
画像処理装置100において加工フィルタ132は、画像処理された画像データ(入力画像データ)を画像パイプ51へ書き込む際に、記憶領域割当部260へ入力画像データに割り当てる記憶領域の確保指示がなされる。
記憶領域割当部260は、記憶領域の確保指示を受けると、画像パイプ51の使用状況を参照する。記憶領域割当部260は、画像パイプ51の使用状況から、画像パイプ51に保持されており、印刷フィルタ133aへ出力される出力画像データの出力状況を把握する。そして記憶領域割当部260は、出力画像データの出力状況に基づき、入力画像データに対する記憶領域の割り当てを行う。
本実施形態の記憶領域割当部260は、以上のように、画像パイプ51に保持された出力画像データの出力状況に応じて入力画像データへの記憶領域の割当の管理を行う。尚図6では、画像パイプ51における記憶領域の割当について説明したが、記憶領域割当部260は画像パイプ50においても同様の処理を行うことができる。すなわち記憶領域割当部260は、読取フィルタ131aから書き出される画像データを入力画像データとし、加工フィルタ132により読み出される画像データを出力画像データとして、画像パイプ50における記憶領域の割当を管理することができる。
以下に、本実施形態の画像パイプにおける画像データの入出力についてさらに詳細に説明する。
図7は、第一の実施形態の画像パイプにおける画像データの入出力を説明するシーケンス図である。
まず、ユーザが操作装置18において、画像データの入力を指示する操作入力と、カラーモード、濃度等の出力条件を設定して画像データの出力を指示する操作入力を行なうと、要求受付部220は、操作装置18からの操作入力を受け付けてシステム制御部210に画像データ入力と画像データ出力を要求する(ステップS701)。システム制御部210は、要求受付部220からの要求に従って、画像入力部230に画像データの入力を要求する(ステップS702)。
画像入力部230は、記憶領域割当部260に画像データを記憶するための記憶領域の割り当てを要求する(ステップS703)。記憶領域割当部260は、要求された画像データを後述するようにして複数の区間に分割し、分割された区間毎に記憶領域の割当を行い、画像データに割り当てた記憶領域の情報を画像入力部220に通知する(ステップS704)。
画像入力部220は、画像データの入力を受け付けて(ステップS705)、割り当てられた記憶領域の情報に従い、画像データを画像記憶部250に書き込む(ステップS706)。続いてシステム制御部210は、画像処理部240に画像処理を要求する(ステップS707)。尚S706において画像記憶部250に書き込まれた画像データは、画像処理部240の入力画像データである。
画像処理部240は、記憶領域割当部260に入力画像データを記憶するための記憶領域の割り当てを要求する(ステップS708)。記憶領域割当部260は、要求された入力画像データに割り当てた記憶領域の情報を画像処理部240に通知する(ステップS709)。
さらに記憶領域割当部260は、画像処理部240が画像処理を開始してよいタイミングで実行開始指示を画像処理部240に通知する(ステップS710)。画像処理部240は、画像記憶部250から入力画像データを読み出し(ステップS711)、出力に係る画像処理を行う(ステップS712)。尚S712において画像記憶部250から読み出された画像データが出力画像データである。
画像処理部240は、出力画像データを割り当てられた記憶領域の情報に従い、画像記憶部250に画像処理後の画像データを書き込む(ステップS713)。
システム制御部210は、画像出力部270に画像データの出力を要求する(ステップS714)。画像出力部270は、画像記憶部250から出力用の画像データを読み出し(ステップS715)、画像データを出力する(ステップS716)。
本実施形態の画像処理装置100では、以上のようにして画像パイプを実現する画像記憶部250への画像データの入出力を行う。
以下に、本実施形態における画像記憶部250への画像データの入出力について、より詳細に説明する。図8は、画像処理部240による画像記憶部250への画像データの入出力を説明する図である。
画像処理部240は、画像記憶部250から画像データを読み出すDMA(Direct Memory Access)コントローラ(以下、RDMAC)241、画像記憶部250に画像データを書き込むDMAコントローラ(以下、WDMAC)242を有する。画像処理部240は、RDMAC241により画像記憶部250から読み出した画像データに対して画像処理を施し、WDMAC242により画像処理を施した画像データを再び画像記憶部250に書き込む。
次に本実施形態の画像処理装置100において、画像出力部270が画像記憶部250から画像データを読み出して出力する場合について説明する。
本実施形態の画像出力部270は、画像処理部240により画像処理が施された画像データが画像記憶部250に書き込まれると、画像記憶部250に書き込まれた画像データを読み出して画像データの出力を行なう。
このとき、画像処理部240が画像処理を施した画像データ1フレーム分を全て画像記憶部250に書き込んでから、画像出力部270がこの画像データを読み出して出力を行なっていたのでは、画像形成に多大な時間を要することになる。そこで本実施形態の画像処理装置100では、1フレームの画像データを複数に分割し、分割された区間毎に処理を行えるようにした。
本実施形態において記憶領域割当部260は、画像記憶部250に画像データを記憶する際に、1フレームの画像データを複数の区間に分割して記憶する。本実施形態の記憶領域割当部260は、画像データを分割する際に、例えば画像データの副走査方向に沿って画像データを分割しても良い。また記憶領域割当部260は、画像データを所定のライン数毎に分割しても良い。所定のライン数は、画像処理装置100において予め設定されていても良い。
このように本実施形態では、画像記憶部250に記憶する画像データを複数の区間に分割するため、1フレームの画像データにおいて分割された区間毎に画像処理を施すことができる。また1フレームの画像データを分割された区間毎に画像記憶部250から出力することができる。
本実施形態の画像処理装置100では、画像データを分割することにより、以下のようにして画像処理速度を向上させることができる。
本実施形態の画像処理装置100では、画像処理部240がある一定量の画像データ、すなわち複数個の区間分の画像データを画像記憶部250に書き込んだ時点で、画像出力部270は画像記憶部250に保持された画像データを読み出すことにより、高速な画像処理を可能にする。尚画像出力部270が画像記憶部250から画像データを読み出すタイミングは、画像処理部240と画像出力部270の処理速度によって決定される。
本実施形態の画像記憶部250では、出力の完了した画像データが展開されている記憶領域は解放可能となる。よって本実施形態では、展開されている画像データを削除したり、別の画像データに記憶領域を割り当てることができる。本実施形態では、1フレーム分の画像データを複数の区間毎に処理できるようにしているので、記憶領域も区間毎に解放することができる。
図9は、画像出力部270が画像記憶部250から分割された画像データを読み出して出力する場合を説明する図である。
図9では、本実施形態の画像処理装置100において画像データA1(出力画像データ)と画像データA2(入力画像データ)の入出力処理の指示をうけた場合を示している。
本実施形態の画像出力部270は、画像記憶部250から画像データを読み出すRDMAC271を有する。画像出力部270において、RDMAC271により画像記憶部250からの画像データA1の読み出しが実行されている途中に(S91)、画像記憶部250への画像データA2の書き込みが要求された場合、画像記憶部250では、画像データA1の読み出し完了前に画像データA2の書き込みが開始される(S92)。
より具体的には、出力対象の画像データA1の1フレーム分の出力が完了しておらず、出力途中であったとしても、画像データA1において分割された1区間分以上の画像データの出力が完了していれば、その画像データが展開されていた記憶領域に画像データA2の1区間を展開することができる。
尚本実施形態における画像処理部240の実行開始のタイミングは、後述するように、画像処理部240と画像出力部270の処理速度から画像処理部240の処理が画像出力部270の処理を追い越さないタイミングで決定される。よって本実施形態の記憶領域では、現在出力中の画像データA1が展開されている記憶領域であっても、その記憶領域からの画像データA1の出力完了を予測し、その記憶領域を次の出力対象の画像データA2に割り当てて画像処理部240の実行を開始することができる。
ここで画像処理部240による画像処理の実行開始のタイミングについて説明する。図10は、画像処理部240による画像処理の実行開始のタイミングを説明するフローチャートである。
本実施形態の画像処理装置100において、記憶領域割当部260は、記憶領域割当要求を受けると、画像記憶部250に入力画像データに割り当てるだけの空き領域があるかどうかを判定する(S1001)。
画像記憶部250に空き領域がない場合、記憶領域割当部260は、入力画像データに対し、入力画像データよりも前に生成されて保持されている出力画像データに割り当て済みの記憶領域の中から、出力完了が予測される順に記憶領域を割り当てる(S1002)。
S1002において、記憶領域割当部260が出力画像データに割り当て済みの記憶領域の中から入力画像データに記憶領域を割り当てると、画像処理装置100は、画像処理部240が処理を開始しても画像出力部270の処理を追い越さない実行開始タイミングを判断する。
このとき画像処理装置100は、画像処理部240と画像出力部270の処理速度から画像処理の実行開始のタイミングを判断する。
より具体的には、記憶領域割当部260において、処理時間計算部262は各区間毎の画像データにおいて、画像データの出力処理に係る時間と画像処理に係る時間とを計算する。そして画像処理装置100は、計算された時間に基づき、画像出力部270が所定の個数以上の区間分の出力画像データの出力を完了しているかどうかを判断する(S1003)。
記憶領域割当部260は、画像出力部270が、指定個数以上の区間分の画像データの出力を完了している場合、同期信号発生部261により、画像処理開始タイミングを示す同期信号を発生する(S1004)。尚ここでの指定個数は、予め設定された個数であっても良い。
また同期信号発生部261は、画像出力部270が指定個数以上の区間分の出力画像データの出力を完了していない場合、画像出力部270が指定個数以上の区間分の出力画像データの出力を終えるまで待つ。そして同期信号発生部261は、指定個数以上の区間の出力画像データが出力された時点で画像処理開始タイミングを表す同期信号を発生する。
尚S1001において、画像記憶部250に記憶領域に入力画像データに割り当てるだけの空き領域がある場合は、空き領域から記憶領域を割り当てる(S1005)。その場合、入力画像データは、出力画像データと記憶領域を共有しないので、すぐに画像処理開始タイミングを表す同期信号を発生することができる。
ここで図11を参照して、入力画像データ及び出力画像データによる記憶領域の共有について具体的に説明する。図11は、入力画像データ及び出力画像データによる記憶領域の共有を説明する図である。
図11では、1フレームの画像データが5つの区間に分けられた例について説明する。尚1フレームの画像データを区間は5つに限定されるものではなく、任意に値に分割することができる。また図11では、画像処理部240において、2フレーム分の画像データを扱う場合を説明する。
図11(A)は、画像記憶部250に1フレーム目の画像データ(出力画像データ)が展開されていることを示す図である。画像記憶部250には、画像出力部270に出力される出力画像データ11Aが5つの区間に分けられて記憶されている。
画像記憶部250において、図11(A)に示す状態であるときに、画像入力部230から2フレーム目の画像データ(入力画像データ)に記憶領域を割り当てる要求があった場合、入力画像データには出力画像データ11Aが展開されている記憶領域が割り当てられる。
図11(B)では、出力画像データ11Aのうち、2つの区間分の画像データの出力が完了し、入力画像データ11Bのうち、1つの区間分の画像データが展開された状態を示す図である。また図11(C)は、出力画像データ11Aのうち、4つの区間分の画像データの出力が完了し、入力画像データ11Bのうち、3つの区間分の画像データが展開されている。図11(D)では、出力画像データ11Aは全て出力が完了し、入力画像データ11Bが全て展開されている。
このように、画像処理部240が処理を開始しても画像出力部270の処理を追い越さないタイミングで画像処理部240の処理を開始すれば、入力画像データ11Bを記憶する領域に出力完了していない出力画像データ11Aの画像が展開されている記憶領域を割り当てても、出力画像データ11A全てが出力完了する前に入力画像データ11Bの画像処理を開始することができる。
尚画像処理部240は、出力画像データ11Aが出力されていく順序を予め把握しているものとした。本実施形態では、例えば記憶領域割当部260が出力画像データ11Aを区間に分ける際に、各区間毎の画像データに、出力される順を示す識別子などを付与しても良い。これにより記憶領域割当部260は、入力画像データ11Bに記憶領域を割り当てる際に、出力画像データ11Aにおいて出力される順序が早い画像データが記憶されている記憶領域から順に割り当てることができる。
次に図12を参照して、入力画像データ及び出力画像データによる記憶領域の共有の別の例について説明する。図12は、入力画像データ及び出力画像データによる記憶領域の共有の別の一例を説明する図である。
図12は、1フレームの出力画像データ12AがCMYK4プレーンの画像から構成される場合の例を示している。ここでは、画像処理部240によりRGB空間(第一の色空間)からCMYK空間(第二の色空間)に色空間変換するときに、CMYK各プレーンの画像データが同時に展開される場合について説明する。また、画像出力部270がCMYK4プレーンの画像データを出力する出力先としてプロッタ装置12を考える。画像出力部270は、プロッタ装置12に対しては、その作像機構からCMYK各プレーンを同時に出力するのではなく、プレーン毎にある時間差をおいて出力する。つまり、同じフレームを構成するプレーン画像でも、出力開始および出力完了のタイミングが異なる。その様子を図13に示す。図13は、同一フレームを構成するプレーン画像の出力開始および出力完了のタイミングを示す図である。
図13に示すように、出力画像データ12AがCMYK4プレーンの画像から構成される場合、まず始めにYプレーンの画像データが出力され、次にCプレーンの画像データが出力される。次にMプレーンの画像データ、Yプレーンの画像データという順に出力される。
図12に戻って、図12(A)は、1フレーム目のCMYKプレーン画像である出力画像データ12Aが画像記憶部250の記憶領域上に展開されていることを表している。図12(A)に示す例でも、各プレーンの画像データは、5つの区間に分けられている。この時点で、2フレーム目の画像データである入力画像データ12Bに記憶領域を割り当てる要求があった場合、入力画像データ12Bには、出力画像データ12Aが展開されている記憶領域が割り当てられる。
図12(B)は、出力画像データ12Aのうち、YプレーンとCプレーンは画像データの出力が全て完了し、Mプレーンは3つの区間分の画像データの出力が完了し、Kプレーンは1つの区間分の画像データの出力が完了している場合を示している。また図12(B)に示す例では、入力画像データ12Bは、各プレーンの2つの区間分の画像データが展開されている。図12(C)では、出力画像データ12Aは全て出力が完了し、入力画像データ12Bが全て展開されている。
図12に示す例では、入力画像データに対し、画像記憶部250に記憶されている出力画像データの出力完了が予測される順に記憶領域を割り当てていくので、ある記憶領域に着目すると、出力画像データと入力画像データとで異なるプレーンの画像データが展開されていくことになり得る。
以上に説明したように、本実施形態の画像処理装置100によれば、記憶領域上に入力画像データが展開されているときに、入力画像データを生成する要求を受けた場合、生成する入力画像データ用の記憶領域として、既に出力画像データが展開されている記憶領域の中から、出力完了が予測される順に割り当てる。また、画像処理部240の処理速度と画像出力部270の処理速度とから、画像処理部240による画像処理の実行開始タイミングを決定する。さらに、記憶領域上に展開する画像データは、フレームを複数の分割単位に分けて展開する。これにより、同じ記憶領域を使用する入力画像データ及び出力画像データの画像処理を並行して実行できるようになり、小容量のメモリ構成であっても、画像形成の生産性低下を防止できる。
以上、各実施形態に基づき本発明の説明を行ってきたが、上記実施形態に示した要件に本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することができ、その応用形態に応じて適切に定めることができる。