(57)【要約】【課題】各画像処理モジュールのＩ／Ｆを汎用化し、画像処理モジュール単位の追加変更を容易にするだけでなく、無駄なバッファやメモリ及び処理の削減を図ることができる画像処理装置を提供する。【解決手段】画像処理モジュール４−１〜４−ｍのそれぞれにリードアドレス生成部１４、リードバッファ１０、ライトアドレス生成部１６、ライトバッファ１２及びアービタ１３を設け、１チャンネル分のポートで上位のアービタ５に接続する。一方、リードアドレス生成部１４及びライトアドレス生成部１６において、最終アクセス要求受付け後に割り込みを生成し、割り込み処理時の各データ処理モジュール１１−１〜１１−ｎの状態に応じて各データ処理モジュールの起動を制御する。尚、各データ処理モジュール間のデータの受け渡しはＲＡＭ７上において行う。また、画像サイズに依存するバッファをＲＡＭ７上に設ける。【選択図】  図１
2004222069.tif 000002
【特許請求の範囲】
【請求項１】
画像データを格納する格納手段と、
前記格納手段から前記画像データを読み出して、所定の画像処理を行い、処理後の画像データを前記格納手段に書き込む一連の処理を行う複数の画像処理手段と、
前記複数の画像処理手段のうち、所定の画像処理手段を起動させる起動制御手段と、
起動した前記所定の画像処理手段による前記格納手段へのアクセスを制御するアクセス制御手段とを備える画像処理装置であって、
それぞれの前記画像処理手段が、
前記格納手段より前記画像データを読み出すためのアドレスを生成する第１のアドレス生成手段と、
前記格納手段から前記アドレスに対応させて読み出された前記画像データを格納する第１のデータ保持手段と、
前記画像データを処理する少なくとも１つ以上の第２の画像処理手段と、
最終段の前記第２の画像処理手段で処理された出力データを格納する第２のデータ保持手段と、
前記出力データを前記格納手段に書き込むためのアドレスを生成する第２のアドレス生成手段と、
前記第１のデータ保持手段に画像データが格納可能、又は前記第２のデータ保持手段から出力データが出力可能な場合、前記アクセス制御手段に対して前記格納手段へのアクセスを要求する第２のアクセス制御手段と
を備えることを特徴とする画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メモリを介した画像データの受け渡しによって画像処理を行う画像処理装置に関する。
【０００２】
【従来の技術】
デジタルカメラ等を用いて撮影された画像データをプリンタで出力する際に良好な画像出力を得るためには、通常、各種の画像処理が必要である。図１４は、デジタルカメラを用いて撮影された画像データをプリンタで出力する際に画像処理を行う従来の画像処理部の構成を示すブロック図である。
【０００３】
まず、入力部２００より入力されたＪＰＥＧ画像データ（デジタルカメラで撮影された撮影データ）をＪＰＥＧ復号化部２０１において解凍する。解凍されたデータはＹＣｒＣｂのブロック順に出力されるので、ＭＣＵバッファ２０３に一旦格納し、点順次化部２０２においてＹＣｒＣｂの点順次データとして読み出す。この時、色差データＣｒＣｂがサブサンプルされている場合は、読み出し時に補間して出力する。点順次化された画像データはＭＣＵ順に出力されるので、ＭＣＵラインバッファ２０５に一旦格納し、ラスタ化部２０４によってＹＣｒＣｂのラスタデータとして読み出す。ラスタ化された画像データは、色調整部２０６によりホワイトバランス等の色調整や、コントラスト調整部２０７によりコントラストが調整され、ＲＧＢ変換部２０８においてＲＧＢデータに変換される。
【０００４】
そして、印刷の向きと画像の向きが異なる場合は、フレームバッファ２１０を用いて回転部２０９によって向きが合わされる。また、ノイズが目立つ画像においては、ノイズ除去部２１１においてノイズの低減処理が施される。この時、周囲の画素データを参照するためラインバッファ２３３が使用される。
【０００５】
次に、リサイズ部２１２において、印刷解像度に合わせたサイズにリサイズされる。この時、周囲の画素データを参照するためラインバッファ２１３が使用される。リサイズされた画像データは、クリッピング部２１４において出力不要な部分を除去（トリミング）される。また、ページメモリの容量削減のため、ページの一部をバンド上に順次切り出して処理するバンド処理における有効バンド領域のデータが抽出される。
【０００６】
クリッピングされた画像データは、背景データが背景合成部２１５において合成され、フレームデータがフレーム合成部２１７において合成され、バンドバッファ２１９に格納される。ここで、背景データとして、小さな画像をタイル状に並べた画像を使用する場合は、タイリング部２１６を用いて、背景データを横及び縦方向に繰り返して読み出して使用する。また、各種の用紙サイズ及びレイアウトに対応させるためにフレームデータのリサイズが必要な場合は、リサイズ部２１８によってフレームデータをリサイズしてから合成する。この時、周囲の画素データを参照するためラインバッファ２２０が使用される。
【０００７】
バンドバッファ２１９に格納された印刷画像データは、入力γ変換部２２１において濃度リニアな信号に変換され、色変換部２２２においてプリンタの色材データ（出力デバイスカラー）に変換される。さらに、出力γ変換部２２３において出力γ補正され、中間調処理部２２４においてビットマップデータ（ドットバターン）に変換される。ここで、画像データの中間調処理に誤差拡散法を用いた場合、量子化誤差を周囲の画素に拡散させるためにラインバッファ２２５が用いられる。そして、ビットマップデータはバンドバッファ２２６に一旦格納される。
【０００８】
次に、不図示のプリントエンジンが起動されると、Ｈ−Ｖ変換部２２８はプリントエンジンの同期信号に合わせて、ビットマップデータをヘッドのドット構成要素（例えば、インクジェット方式においてはノズル）の並びに合わせてバンドバッファ２２６より読み出し、ブロックバッファ２３０に格納する。通常、ビットマップデータは、ヘッドのスキャン方向の複数ドットを１ワードとしてバンドバッファ２２６に格納されるので、ブロックバッファ２３０を用いて、ヘッドのドット構成要素列（ノズル列）方向のデータを抽出するようにしている。また、レジ調整部２２９によって、同時に読み出すビット位置をヘッドのドット構成要素列（ノズル列）毎にずらすことによってレジ調整を行う。
【０００９】
さらに、プリント出力時のスジやムラを低減するため、複数回のパス（ヘッドのスキャン）に分割してプリント画像を形成する場合は、マスク生成部２３２によって生成されたマスク信号に従って、パス分割部２３１においてビットマップデータの出力ドットを複数のパスに分散させる。分割されたドットデータは、ヘッドインタフェース部２３３においてヘッドへの伝送フォーマットに変換され、出力部２３４よりヘッドへ出力される。
【００１０】
尚、上述したような複雑な処理を行う場合、開発やメンテナンス性を容易にするため、上記各種の処理をモジュール化している。例えば、各画像処理をモジュール化し、各モジュール間にバッファメモリ設けて接続することにより、容易にバージョンアップを図ることができる画像処理方法が開示されている（例えば、特許文献１参照）。
【００１１】
【特許文献１】
特開平９−１１６６６０号公報
【００１２】
【発明が解決しようとする課題】
しかしながら、上記特許文献１に開示された方法では、画像処理モジュールの数に比例して多数のバッファメモリが必要になるという欠点があった。また、任意の画像サイズに対応させるには、巨大なローカルメモリが必要になるという欠点もあった。例えば、図１４に示したラインバッファ２０５、２１３及びフレームバッファ２１０は入力画像サイズに依存しており、バンドバッファ２１９、２２６及びラインバッファ２２５は出力サイズ（例えば、用紙サイズ、出力解像度及びバンドの高さ）に依存している。従って、これらのバッファを各種サイズの画像データに対応させるためには、想定する最大サイズのバッファメモリ容量を見積もる必要がある。
【００１３】
一方、出力画像によって、必要な画像処理内容が異なってくる。例えば、印刷方向と入力画像の向きが一致している場合は、回転処理は不要である。また、背景、フレーム等が必要なければ、合成処理は不要である。このような場合、従来は０°の回転を行う、ブレンドのためのα値を不透明に設定して合成する等、結果的に何もしないためのパラメータ設定を行い、無駄な処理を施していた。
【００１４】
また、上記特許文献１に開示された方法では、ハードウェアが完成してから一部の機能を置き換えることは不可能であった。例えば、ＲＧＢ変換モジュールに仕様変更が発生した場合、上記一連の処理モジュールをハードウェア化した場合、ＲＧＢ変換モジュールだけ別処理（ソフトウェア処理）で置き換えるようなことは不可能であったので、ＲＧＢ変換モジュールを含む一連の処理モジュールが無駄になってしまっていた。特に、一部のモジュールに致命的な欠陥が生じた場合は、関連する全ての処理モジュールが使用不可になっていた。
【００１５】
本発明は、このような事情を考慮してなされたものであり、入力画像に対する各種画像処理を複数の処理ブロックに分割して処理ブロック単位にモジュール化し、各モジュール間のデータの受け渡しを、共有メモリを通じて行う構成とすることで、各画像処理モジュールのＩ／Ｆを汎用化し、画像処理モジュール単位の追加変更を容易にするだけでなく、無駄なバッファやメモリ及び処理の削減を図ることができる画像処理装置を提供することを目的とする。
【００１６】
【課題を解決するための手段】
上記課題を解決するため、本発明による画像処理装置は、画像データを格納する格納手段と、
前記格納手段から前記画像データを読み出して、所定の画像処理を行い、処理後の画像データを前記格納手段に書き込む一連の処理を行う複数の画像処理手段と、
前記複数の画像処理手段のうち、所定の画像処理手段を起動させる起動制御手段と、
起動した前記所定の画像処理手段による前記格納手段へのアクセスを制御するアクセス制御手段とを備える画像処理装置であって、
それぞれの前記画像処理手段が、
前記格納手段より前記画像データを読み出すためのアドレスを生成する第１のアドレス生成手段と、
前記格納手段から前記アドレスに対応させて読み出された前記画像データを格納する第１のデータ保持手段と、
前記画像データを処理する少なくとも１つ以上の第２の画像処理手段と、
最終段の前記第２の画像処理手段で処理された出力データを格納する第２のデータ保持手段と、
前記出力データを前記格納手段に書き込むためのアドレスを生成する第２のアドレス生成手段と、
前記第１のデータ保持手段に画像データが格納可能、又は前記第２のデータ保持手段から出力データが出力可能な場合、前記アクセス制御手段に対して前記格納手段へのアクセスを要求する第２のアクセス制御手段と
を備えることを特徴とする。
【００１７】
さらに、本発明による画像処理装置は、画像サイズに依存するバッファを前記格納手段上に設けることを特徴とする。
【００１８】
【発明の実施の形態】
以下、本願発明の一実施形態について示す。もちろん以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲によって確定される本願発明の技術的範囲に含まれるほんの一部の実施形態にすぎない。従って、本願明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明であろう。
【００１９】
尚、以下には便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。
【００２０】
＜第１の実施形態＞
以下、図面を参照して、本発明の第１の実施形態について詳細に説明する。図１は、本発明の第１の実施形態に係る画像処理装置の一構成例を示すブロック図である。
【００２１】
図１において、１は画像処理装置を制御するＣＰＵ、２はプログラム等を格納するＲＯＭ、３はバスブリッジ、４はｍ個（但し、ｍは１以上の整数とする。）の画像処理モジュール（プロセッサ）、５はＲＡＭ７へのアクセスを調停するアービタ、６はＲＡＭインタフェース部（Ｉ／Ｆ）、７はＲＡＭ、８はヘッドインタフェース（Ｉ／Ｆ）、９はＩ／Ｏポートである。尚、本実施形態においては上記ＲＡＭ７は、ＣＰＵ１、各画像処理モジュール４−１〜４−ｍによって共有されているが、ＣＰＵ１は別のＲＡＭを持つような構成であっても良い。
【００２２】
次に、上述した構成を有する画像処理装置の処理動作について説明する。
【００２３】
ＣＰＵ１は、ＲＯＭ２に格納されているプログラムに従って、Ｉ／Ｏポート９より処理すべき画像データを受け取り、バスブリッジ３、アービタ５、ＲＡＭインタフェース部６を経てＲＡＭ７へ格納する。次に、ＣＰＵは画像処理モジュール４−１のコンフィギュレーションレジスタ（Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ｒｅｇｉｓｔｅｒ）を設定し、画像処理モジュール４−１を動作させる。
【００２４】
画像処理モジュール４−１は所定の処理を実行し、上記コンフィギュレーションレジスタにて設定された処理すべきデータの読み出しが終了するか、上記コンフィギュレーションレジスタにて設定された処理したデータの書き込みが終了すると割り込みを発生し、ＣＰＵ１へ通知する。ＣＰＵ１は、割り込みを受付けると、割り込み要因を解析し、上記画像処理モジュール４−１の処理すべきデータの読み出し終了の場合は、次の処理すべきデータの設定を行い、画像処理モジュール４−１の処理を続行させる。上記画像処理モジュール４−１の処理したデータの書き込み終了の場合は、次の処理データの格納先の設定を行い、画像処理モジュール４−１の処理を続行させると共に、次の画像処理モジュール４−２のコンフィギュレーションレジスタを設定し、画像処理モジュール４−２を動作させる。
【００２５】
そして、画像処理モジュール４−２は所定の処理を実行し、上記コンフィギュレーションレジスタにて設定された処理すべきデータの読み出しが終了するか、上記コンフィギュレーションレジスタにて設定された処理したデータの書き込みが終了すると割り込みを発生し、ＣＰＵ１へ通知する。ＣＰＵ１は、割り込みを受け付けると、割り込み要因を解析し、上記画像処理モジュール４−２の処理すべきデータの読み出し終了の場合は、次の処理すべきデータの設定を行い、画像処理モジュール４−２の処理を続行させる。一方、上記画像処理モジュール４−２の処理したデータの書き込み終了の場合は、次の処理データの格納先設定を行い、画像処理モジュール４−２の処理を続行させると共に次の画像処理モジュール４−３のコンフィギュレーションレジスタを設定し、画像処理モジュール４−３を動作させる。
【００２６】
上述したように、本画像処理装置では、前の画像処理モジュールでの処理が終わった直後に次の画像処理モジュールを起動し、処理データを次々と画像処理モジュールに受け渡しすることで、画像処理モジュール単位のパイプラインを構成することができる。
【００２７】
そして、画像処理モジュール４−ｍ−１までの処理が進み、所定以上のビットマップデータが生成されると、図示しないプリントエンジンが起動され、プリントエンジンの同期信号に合わせて画像処理モジュール４−ｍの処理が開始され、ヘッドＩ／Ｆ８を経てビットマップデータをプリントする。
【００２８】
図２は、本発明の第１の実施形態に係る画像処理装置のモジュール４−１〜４−ｍ（以下、「画像処理モジュール４」と称す。）の詳細な内部構成を説明するためのブロック図である。図２において、７はリードバッファ（Ｒｅａｄ  Ｂｕｆｆｅｒ）、１１−１〜１１−ｎ（但し、ｎは１以上の整数とする。）はサブモジュール（Ｓｕｂ−ｍｏｄｕｌｅ）、１２はライトバッファ（Ｗｒｉｔｅ  Ｂｕｆｆｅｒ）、１３はアービタ（Ａｒｂｉｔｅｒ）、１４はリードアドレス生成部（Ｒｅａｄ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）、１５は割り込み制御部（Ｉｎｔｅｒｒｕｐｔ  Ｃｏｎｔｒｏｌｌｅｒ）、１６はライトアドレス生成部（Ｗｒｉｔｅ  Ａｄｄｒｅｓｓ  Ｇｅｎｅｒａｔｏｒ）である。
【００２９】
ＣＰＵ１は、画像処理モジュール４のコンフィギュレーションレジスタの設定により、リードアドレス生成部１４にリード開始アドレスとリード終了アドレスを設定し、リードイネーブル（ｒｅａｄ  ｅｎａｂｌｅ）信号Ｒｅｎをセットする。また、ライトアドレス生成部１６にライト開始アドレスとライト終了アドレスを設定し、ライトイネーブル（ｗｒｉｔｅ  ｅｎａｂｌｅ）信号Ｗｅｎをセットする。
【００３０】
画像処理モジュール４におけるアービタ１３は、リードバッファ１０のバッファの空き容量Ｒｐ及びリードアドレス生成部１４のイネーブル信号Ｒｅｎを検出し、リードアドレスが有効（Ｒｅｎ＝１）であって、リードバッファ１０にデータが格納可能（Ｒｐ≧Ｒｎ）であれば、アービタ５へリードリクエスト（ＰＲＥＱ＝１、ＰＮＲＷ＝０、ＰＮＵＭ＝Ｒｎ、ＰＡＤＤ＝Ｒａｄ）を発行する。
【００３１】
一方、ライトバッファ１２のデータ蓄積数Ｗｐが所定のワード数以上（Ｗｐ≧Ｗｎ）になると、アービタ１３はライトアドレス生成部１６のイネーブル信号Ｗｅｎを検出し、ライトアドレスが有効（Ｗｅｎ＝１）であって、ライトバッファ１２よりデータが出力可能（Ｗｐ≧Ｗｎ）であれば、アービタ５へライトリクエスト（ＰＲＥＱ＝１、ＰＮＲＷ＝１、ＰＮＵＭ＝Ｗｎｕｍ、ＰＡＤＤ＝Ｗａｄ）を発行する。
【００３２】
そして、画像処理装置におけるアービタ５は、画像処理モジュール４からのリクエスト信号ＰＲＥＱを受け取ると、ＰＮＲＷでリード／ライトの判別を行い、ＰＮＵＭでワード数を、ＰＡＤＤでアドレスを検知する。ここで、ＣＰＵ１及び他の画像処理モジュールからのリクエストがなければ、アービタ５は、ＲＡＭインタフェース部６を通じてＲＡＭ７の該当データのアクセスを開始する。また、リクエストが受け付けられると、アービタ５は受領信号ＰＡＣＫをリクエスト元の画像処理モジュールに返す。一方、ＣＰＵ１及び他のモジュールからのリクエストがある場合は、優先順位に従ってリクエストを受け付ける。
【００３３】
アービタ１３は、アービタ５から受領信号ＰＡＣＫを受け取ると、リードリクエストの場合は受領信号Ｒａｃｋをリクエスト元のリードアドレス生成部１４に返す。リードアドレス生成部１４は、上記受領信号Ｒａｃｋを受け取ると次のアドレスを生成する。尚、リクエストしたアドレスが前記リード終了アドレスの場合は、リードイネーブル信号Ｒｅｎをリセットし、リード終了信号Ｒｅｎｄを割り込み制御部１５に出力する。
【００３４】
一方、アービタ１３は、ライトリクエストの場合は受領信号Ｗａｃｋをリクエスト元のライトアドレス生成部１６に返す。ライトアドレス生成部１６は、上記受領信号Ｗａｃｋを受け取ると次のアドレスを生成する。尚、リクエストしたアドレスが前記ライト終了アドレスの場合は、ライトイネーブル信号Ｗｅｎをリセットし、ライト終了信号Ｗｅｎｄを割り込み制御部１５に出力する。
【００３５】
割り込み制御部１５は、前記コンフィギュレーションレジスタによってリード終了割り込みマスク及びライト終了割り込みマスクの設定が可能になっている。そして、割り込み制御部１５は、各割り込みマスクの設定が割り込みイネーブルとなっている場合は、上記リード終了信号Ｒｅｎｄまたはライト終了信号Ｗｅｎｄによって割り込み信号ＩＮＴを生成し、ＣＰＵ１へ通知する。ＣＰＵ１は、上記割り込みを受け付けると、割り込み制御部１５のステータスを読み取り、割り込み要因がリード終了の場合は、上記リード終了割り込みマスクをリセットして割り込みを解除する。さらに処理を続行する場合は、リード開始アドレスとリード終了アドレスの再設定、リードイネーブル信号のセット等の処置を行った後、上記リード終了割り込みマスクをセットする。
【００３６】
同様に、割り込み要因がライト終了の場合、ＣＰＵ１は、上記ライト終了割り込みマスクをリセットして割り込みを解除する。さらに処理を続行する場合、ＣＰＵ１は、ライト開始アドレスとライト終了アドレスの再設定、ライトイネーブル信号のセット等の処置を行った後、上記ライト終了割り込みマスクをセットする。
【００３７】
次に、ＲＡＭ７よりデータが読み出されるとアービタ５はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュールに返す。リクエスト元のモジュールでは、アービタ１３よりリードバッファ１０へデータ有効信号Ｒｖａｌｉｄを返す。リードバッファ１０はデータ有効信号Ｒｖａｌｉｄがセットされている期間、ＲＡＭデータ出力信号ＰＤＩＮ上のデータを格納する。この操作により、ＲＡＭ７のデータがリードバッファ１０へ格納される。
【００３８】
一方、ＲＡＭ７にデータを書き込む場合は、ＲＡＭ７の書き込みタイミングに合わせてアービタ５はＲＡＭデータ有効信号ＰＶＡＬＩＤをリクエスト元のモジュールに返す。リクエスト元のモジュールでは、アービタ１３よりライトバッファ１２へデータ有効信号Ｗｖａｌｉｄを返す。ライトバッファ１２はデータ有効信号Ｗｖａｌｉｄがセットされている期間、ＲＡＭデータ入力信号ＰＤＯＵＴ上に書き込むデータを出力する。この操作により、ライトバッファ１２のデータがＲＡＭ７へ格納される。
【００３９】
リードバッファ１０は、サブモジュール１１−１の処理に必要なデータが揃った時に有効信号ｖａｌｉｄ＿０をセットし、サブモジュール１１−１の処理に必要なデータが揃っていないは有効信号ｖａｌｉｄ＿０をリセットする。また、サブモジュール１１−１からの保持要求信号ｓｔａｌｌ＿０がセットされていなければ、リードバッファ１０は格納されたデータをクロックに同期して出力する。サブモジュール１１−１からの保持要求信号ｓｔａｌｌ＿０がセットされている場合は、データを更新しない。そして、サブモジュール１１−１は、上記有効信号ｖａｌｉｄ＿０がセットされているデータのみを受け取る。また、データの受け取りが不可能の場合は、保持要求信号ｓｔａｌｌ＿０をセットし、リードバッファ７の出力をホールドする。
【００４０】
尚、サブモジュール１１−１は、入力データの並び替えが不要な場合は、上記リードバッファ１０はＦＩＦＯでよい。同様に、出力データの並び替えが不要な場合は、上記ライトバッファ１２はＦＩＦＯでよい。
【００４１】
図２に示すように、本実施形態では、画像処理モジュール４の内部は１つ以上の画像処理サブモジュール１１−１〜１１−ｎによって構成されており、各サブモジュール間では、上記と同様の動作（すなわち、有効信号ｖａｌｉｄと保持要求信号ｓｔａｌｌによるハンドシェーク）によってデータの受け渡しが行われる。
【００４２】
すなわち、本実施形態に係る画像処理装置は、画像データを格納する格納手段（例えば、ＲＡＭ７）と、格納手段から画像データを読み出して、所定の画像処理を行い、処理後の画像データを格納手段に書き込む一連の処理を行う複数の画像処理手段（例えば、画像処理モジュール４−１〜４−ｍ）と、複数の画像処理手段のうち、所定の画像処理手段を起動させる起動制御手段（例えば、ＣＰＵ１）と、起動した所定の画像処理手段による格納手段へのアクセスを制御するアクセス制御手段（例えば、アービタ５）とを備える画像処理装置であって、それぞれの画像処理手段（画像処理モジュール４）が、格納手段より画像データを読み出すためのアドレスを生成する第１のアドレス生成手段（例えば、リードアドレス生成部１４）と、格納手段から当該アドレスに対応させて読み出された画像データを格納する第１のデータ保持手段（例えば、リードバッファ１０）と、画像データを処理する少なくとも１つ以上の第２の画像処理手段（例えば、サブモジュール１１−１〜１１−ｎ）と、最終段の第２の画像処理手段で処理された出力データを格納する第２のデータ保持手段（例えば、ライトバッファ１２）と、出力データを格納手段に書き込むためのアドレスを生成する第２のアドレス生成手段（例えば、ライトアドレス生成部１６）と、上記第１のデータ保持手段に画像データが格納可能、又は上記第２のデータ保持手段から出力データが出力可能な場合、上記アクセス制御手段に対して格納手段へのアクセスを要求する第２のアクセス制御手段（アービタ１３）とを備えることを特徴とする。
【００４３】
また、本実施形態では、上記画像処理手段が、上記格納手段からの画像データ読み出し終了時、又は、前記格納手段へのデータ書き込み終了時に割り込み要求信号を出力し、上記起動制御手段が、前記割り込み要求信号に基づいて、次の画像処理手段を起動することを特徴とする。
【００４４】
さらに、本実施形態では、上記画像処理手段が、上記格納手段からの最終データの読み出し終了時、又は格納手段への最終データの書き込み終了時に割り込み要求信号を出力する要求手段（割り込み制御部１５）をさらに備えることを特徴とする。
【００４５】
さらにまた、本実施形態に係る画像処理装置では、上記第１のデータ保持手段は、データ出力が可能な場合に有効信号をセットし、上記第２のデータ処理手段は、有効信号がセットされているデータのみを受け取り、上記第２のデータ保持手段は、データ入力が不可能な場合に保持要求信号をセットし、上記第２のデータ処理手段は、保持要求信号がセットされている第２の保持手段へのデータ出力をホールドすることを特徴とする。
【００４６】
さらにまた、本実施形態に係る画像処理装置では、上記画像処理手段が複数の第２の画像処理手段を備えている場合、それぞれの第２の画像処理手段間のデータ入出力は、前述した有効信号及び保持要求信号を用いて行われることを特徴とする。
【００４７】
図３は、本発明の第１の実施形態における画像処理サブモジュール間Ｉ／Ｆの動作を示すタイミングチャートである。
【００４８】
図３に示すように、データ送信側の画像処理サブモジュールは、データが出力可能であればクロックｃｌｋの立ち上がりに同期して、データ信号ｄ１及び有効信号ｖａｌｉｄをセットする（Ｔ１）。そして、当該画像処理サブモジュールは、次のクロックの立ち上がりで受信側からの保持要求信号ｓｔａｌｌがセットされていなければデータが受信されたとみなし、次のデータが出力可能であればデータ信号ｄａｔａ及び有効信号ｖａｌｉｄをセットする（Ｔ２）。
【００４９】
また、データ送信側の画像処理サブモジュールは、次のデータが出力可能でなければ有効信号ｖａｌｉｄをリセットする（Ｔ３）。一方、当該画像処理サブモジュールは、次のクロックの立ち上がりで受信側からの保持要求信号ｓｔａｌｌがセットされていたら、データが受信されなかったとみなし、データ信号ｄａｔａ及び有効信号ｖａｌｉｄをホールドする（Ｔ７）。
【００５０】
尚、受信側からの保持要求信号ｓｔａｌｌがセットされていても有効信号ｖａｌｉｄがセットされていなければ（Ｔ８）、それは無効データであるので、データ送信側の画像処理サブモジュールでは、データ信号ｄａｔａ及び有効信号ｖａｌｉｄはホールドされずに次の有効データが出力される（Ｔ９）。即ち、有効信号ｖａｌｉｄがセットされていない時の保持要求信号ｓｔａｌｌは無視される。
【００５１】
ライトバッファ１２は、バッファに空きがあれば、サブモジュール１１−ｎからの有効信号ｖａｌｉｄ＿ｎがセットされた時のデータ信号ｄａｔａ＿ｎをバッファに格納する。一方、バッファに空きがなければ、保持要求信号ｓｔａｌｌ＿ｎをセットし、サブモジュール８−ｎの出力をホールドさせる。
【００５２】
図４は、本発明の第１の実施形態に係る画像処理装置の各画像処理モジュールにおけるアドレス生成部（すなわち、リードアドレス生成部１４やライトアドレス生成部１６）の詳細な構成を説明するためのブロック図である。尚、図４において、１７はセレクタ、１８はシーケンサ、１９は加算部、２０はレジスタ、２１は比較部である。
【００５３】
まず、ＣＰＵ１によって開始アドレスがレジスタ２０にセットされる。シーケンサ１８は、リクエスト受領信号ａｃｋによって状態遷移し、状態に応じてセレクタ１７のアドレス差分値を選択する。例えば、シーケンサ１８は、内部に１つ以上のカウンタを持ち、受領信号ａｃｋによって該当カウンタがカウントアップ又はカウントダウンし、各カウンタのキャリー（ｃａｒｒｙ）又はボロー（ｂｏｒｒｏｗ）によってセレクタ１７を制御する。従って、所定回数のアクセス毎に、セレクタより出力されるアドレス差分値が切り替わる。
【００５４】
尚、本実施形態においてはＲＡＭ７への転送効率アップのため、複数ワード数単位でアクセスする。従って、アクセス単位内に不要なデータが存在する場合（即ち、アクセス単位内でアドレスが不連続となる場合）は、アクセス単位のワード数ｎｕｍを変更して、不要なアクセスを防止するようにする。
【００５５】
選択されたアドレス差分値は加算部１９において直前のアドレスに加算され、受領信号ａｃｋによってレジスタ２０に保持される。レジスタ２０の出力（即ち、アドレス生成部のアドレス出力）は比較部２１において終了アドレスと比較され、レジスタ２０の出力と終了アドレスとが一致した場合、受領信号ａｃｋによって終了信号がセットされる。
【００５６】
セレクタ１７に入力されるアドレス差分値Ｄ１〜Ｄｋ（但し、ｋは１以上の整数とする。）及びシーケンサ１８のパラメータ（例えば、カウンタの進数等）は、前記コンフィギュレーションレジスタによって設定される。アドレス差分値のＭＳＢ（最上位ビット）と出力アドレスのＭＳＢの重みを一致させることにより、負の差分値を表現することができる。尚、バーストモードのように複数ワードをまとめてアクセスする場合もあるため、アドレス差分値と出力アドレスのビット数は必ずしも一致するとは限らない。また、通常、アドレス差分値の数は、シーケンサ１８内のカウンタ数＋１である。
【００５７】
すなわち、本実施形態では、前述した第１又は第２のアドレス生成手段（例えば、リードアドレス生成部１４やライトアドレス生成部１６）が、アクセス要求アドレス（開始アドレス）を設定する設定手段（例えば、レジスタ２０）と、複数のアドレス差分値から１つのアドレス差分値を選択する選択手段（例えば、セレクタ１７）と、選択されたアドレス差分値とアクセス要求アドレスとを用いて新たなアクセス要求アドレスを生成する生成手段（例えば、加算部１９）と、選択手段によるアドレス差分値の選択を制御する制御手段（例えば、シーケンサ１８）とを備えることを特徴とする。
【００５８】
図５は、本発明の第１の実施形態に係るアドレス生成部におけるパラメータを説明する図である。
【００５９】
例えば、図５に示すように、ブロック状にデータのアクセスを行う２次元アドレッシングの場合、レジスタ２０には、まず、開始アドレスＡｓがロードされる。そして、シーケンサ１８は、アドレス差分値Ｄ１を選択するようにセレクタ１７を制御する。セレクタ１７は、アドレス差分値Ｄ１を選択しているので、加算部１９の出力はＡｓ＋Ｄ１となり、次のアドレスが生成される。レジスタ２０は、受領信号ａｃｋが返ってくると、次のアドレスであるＡｓ＋Ｄ１を出力する。ここで、水平方向のアクセス数をｗとすると、アドレス生成部は、上記操作をｗ−１回繰り返す。そして、ｗ回目のアドレス生成において、シーケンサ１８は、アドレス差分値Ｄ２を選択するようにセレクタ１７を制御する。従って、ｗ回目のアドレスはＡｓ＋（ｗ−１）・Ｄ１＋Ｄ２となって、次のラインの先頭データＰ１，０がアクセスされる。
【００６０】
次に受領信号ａｃｋが返ってくると、シーケンサ１８はアドレス差分値Ｄ１を選択するようにセレクタ１７を制御する。このように、シーケンサ１８はｗ回のアクセス毎に１回ずつアドレス差分値Ｄ２を選択し、それ以外ではアドレス差分値Ｄ１を選択するようにセレクタ１７を制御する。従って、シーケンサ１８では、ｗ−１をロードして受領信号ａｃｋによってカウンタをデクリメント（−１）し、カウンタが０になった時に次の受領信号ａｃｋによってｗ−１をリロードするｗ進カウンタを構成し、ｗ進カウンタが０になった時にアドレス差分値Ｄ２を選択する信号を生成すればよい。
【００６１】
従って、この２次元アドレッシングの場合のアドレス生成部のパラメータは、開始アドレスＡｓ、終了アドレスＡｅ、水平方向のアクセス数ｗ（設定値はｗ−１）、２つのアドレス差分値Ｄ１、Ｄ２の合計５つとなる。
【００６２】
例えば、図５に示すように、アドレスが隣接している場合は、Ｄ１＝１となる。また、右から左へアクセスする場合は、Ｄ１＝−１とすれば良い。同様に、９０°回転や、飛び飛びにアクセスするような場合においても、上記パラメータを適切に設定することにより可能となる。但し、９０°回転の場合は、水平方向のアクセス数ｗの代わりに垂直方向のアクセス数ｈを用いる。
【００６３】
図６は、本発明の第１の実施形態に係る上記アドレス生成部の別のシーケンスを説明する図である。
【００６４】
例えば、図６に示すようなＲＧＢ線順次データを点順次データに変換するような３次元アドレッシングの場合、シーケンサ１８はアドレス差分値Ｄ１を２回選択した後、アドレス差分値Ｄ２を１回選択するようにセレクタ１７を制御する。このシーケンスをｗ−１回繰り返すと、シーケンサ１８はアドレス差分値Ｄ３を選択するようにセレクタ１７を制御する。よって、シーケンサ１８は内部に、ｃ−１（本実施形態では、プレーン数ｃ＝３）をロードし、受領信号ａｃｋによって、カウンタを−１し、カウンタが０になった時に次の受領信号ａｃｋによってｃ−１をリロードするｃ進カウンタと、ｗ−１をロードし、ｃ進カウンタが０の時の受領信号ａｃｋによって、カウンタを−１し、カウンタが０かつｃ進カウンタが０の時の受領信号ａｃｋによってｗ−１をリロードするｗ進カウンタを構成し、ｃ進カウンタとｗ進カウンタが共に０の時はアドレス差分値Ｄ３を、ｃ進カウンタのみ０の時はアドレス差分値Ｄ２を、それ以外ではアドレス差分値Ｄ１を選択する信号を生成すればよい。
【００６５】
従って、この３次元アドレッシングの場合のアドレス生成部のパラメータは、開始アドレスＡｓ、終了アドレスＡｅ、プレーン数ｃ（設定値はｃ−１）、水平方向のアクセス数ｗ（設定値はｗ−１）、３つのアドレス差分値Ｄ１、Ｄ２、Ｄ３の合計７つとなる。
【００６６】
尚、各画像処理モジュールのインタフェースを共通化するため、リードバッファのデータ入力、ライトバッファのデータ出力はＲＡＭインタフェース部６に合わせておく。また、画像処理モジュール内部のサブモジュールとのデータ線のビット数が合わない場合はサブモジュール１１−１及びサブモジュール１１−ｎにて変換する。尚、サブモジュールに入力データをそのまま出力するバイパスモードを設けることで、不要な処理をバイパスできる。この時、バイパスしたサブモジュールのクロックの供給を止めることで、消費電力の無駄も省くことができる。
【００６７】
さらに、あるサブモジュール以降の全てのサブモジュールをバイパスモードとすることで、途中経過のデータ出力も可能となり、他の画像処理モジュールやサブモジュールの処理を任意のサブモジュール間に追加できる。従来は、サブモジュールの追加や変更が必要になった場合、画像処理モジュール全体が使用不可になってしまったが、バイパスモードにて処理を分断することで、画像処理モジュールを有効利用することができる。
【００６８】
例えば、画像処理モジュール内に３つのサブモジュール、サブモジュール１、サブモジュール２及びサブモジュール３があり、サブモジュール２をサブモジュール４で置き換える場合、まず、最初にサブモジュール２以降をバイパスモードにして画像処理モジュールを起動し、次にサブモジュール４の処理を行った後、サブモジュール２までをバイパスモードにして画像処理モジュールを起動する。即ち、最初のステップでサブモジュール１を実行し、次のステップでサブモジュール４を実行し、最後のステップでサブモジュール３を実行するのである。このように、サブモジュール間の任意の位置に別の画像処理モジュールのサブモジュールによる処理を追加することが可能となる。ここで、上記各ステップでの処理結果は共有メモリ上に存在するので、追加する処理はＣＰＵによってソフトウェア処理で行っても良い。
【００６９】
次に、それぞれの画像処理モジュールへの画像処理の分割方法について説明する。
【００７０】
本発明においては、画像処理モジュール間のデータの受け渡しは共有メモリ（例えば、ＲＡＭ７）を介して行うので、画像処理モジュールの数が増加すると、メモリのバス占有率が上昇し、メモリアクセス待ち状態が増えて処理効率が低下する。一方、１つの画像処理モジュールに多くの処理を統合すると、データの抽出（並び替え）等のために多くのローカルメモリが必要になってしまう。また、それぞれの画像処理モジュールの使い勝手も悪化してしまう。
【００７１】
そこで、本実施形態では、データの抽出（並び替え）が必要となる部分において画像処理モジュールの分割を行う。具体的には、（１）ＪＰＥＧ復号化からラスタ化までの処理、（２）ノイズ除去処理、（３）バンドデータ作成処理、（４）ビットマップデータ作成処理、（５）ヘッドデータ作成処理、の５つの処理モジュールに分割する。そして、上記５つの処理をパイプライン化することで、バンドバッファのコヒーレンシ（ｃｏｈｅｒｅｎｃｙ）を保ちつつ、処理効率の向上を図る。
【００７２】
また、本実施形態では、データを削減する処理については可能な限り上流工程において行い、共有メモリへのアクセス量の最小化を図る。具体的には、バンドの抽出のためのクリッピングや、リサイズにおける縮小処理を、上記（１）ＪＰＥＧ復号化からラスタ化までの処理において前処理として実施する。さらに、ＭＣＵバッファを用いて回転処理を前処理として行うことにより、共有メモリへのアクセスの連続性を増加させ、バス使用効率を向上させる。さらに、容量の確定しないバッファ（例えば、上述した図１４におけるラインバッファ２０５、２３３、２１３、２２０、２２５、フレームバッファ２１０、バンドバッファ２１９、２２６）を共有メモリ上に構成し、処理内容に応じてバッファ容量の最適化を図ることとする。
【００７３】
以下、上記各画像処理モジュール毎の画像データ処理の流れについて説明する。
【００７４】
図７は、本発明の第１の実施形態に係る画像処理モジュール４−１の構成を説明するためのブロック図である。図７において、２２は入力部、２３はＪＰＥＧ復号化部、２４はＭＣＵクリッピング部、２５はＭＣＵ縮小部、２６はブロック内回転部、２７はＭＣＵバッファ、２８は点順次化部、２９は色調整部、３０はコントラスト調整部、３１はＲＧＢ変換部、３２はラスタ化部、３３は出力部である。尚、上記構成の画像処理モジュール４−１では、メモリの容量削減のために、ページの一部をバンド上に順次切り出して処理するバンド処理を行うものとする。
【００７５】
まず、入力部２２よりＪＰＥＧ圧縮画像データがＪＰＥＧ復号化部２３に入力され、そこで復号化されてＭＣＵ単位で出力される。次いで、ＭＣＵクリッピング部２４は、画像のトリミング領域及びバンド処理領域に基づいて、ＭＣＵ単位にデータの有効又は無効を判定し、有効領域のＭＣＵデータのみを出力する。有効ＭＣＵデータはＭＣＵ縮小部２５において所望のＭＣＵサイズに縮小される。即ち、ＭＣＵ縮小部２５では、１／８単位または１／１６単位（４：２：０サンプリングの場合）の縮小が行われる。
【００７６】
縮小されたＭＣＵデータはブロック内回転部２６のアドレス生成によりＭＣＵバッファ２７の回転（鏡像）後のアドレスに格納される。そして、ＭＣＵ内の全データがＭＣＵバッファ２７に格納されると、点順次化部２８はＭＣＵバッファ２７よりＹ、Ｃｒ、Ｃｂのデータを同時に読み出す。ここで、Ｃｒ、Ｃｂデータがサブサンプリングされている場合は、点順次化時に補間される。同時化されたＹＣｒＣｂデータは、色調整部２９においてホワイトバランス調整等の色調整が行われ、コントラスト調整部３０においてコントラスト調整が行われる。さらに、ＲＧＢ変換部３１においてＲＧＢデータに変換される。変換されたＲＧＢデータは、ラスタ化部３２のアドレス操作後出力部３３から出力され、ＲＡＭ７上にラスタ状に格納される。
【００７７】
尚、上述したように、ＭＣＵブロック内の並び替えは、上記ＭＣＵバッファ２７において行われているので、ラスタ化部３２ではブロック単位の並び替えを行うことで、ラスタ化を行う。このブロック単位の並び替えは、上記ライトアドレス生成部１６によって実現されるので、ラスタ化部３２の実体はライトアドレス生成部となる。また、上記ブロック内回転、点順次化はＭＣＵバッファのアドレッシングにて実行するので、ブロック内回転部２６、ＭＣＵバッファ２７、点順次化部２８は同一のサブモジュールとした方が良い。尚、ブロックバッファの読み出し時にブロック内回転処理を行う場合は、ブロック内回転部２６の位置はＭＣＵバッファ２７の後になる。
【００７８】
また、色差Ｃｒ、Ｃｂデータがサブサンプリングされている場合は、ＭＣＵ縮小部２５における倍率を輝度Ｙの２倍とすることで、点順次化時の補間を削除できる。この場合、ＭＣＵ縮小部２５での処理は、縮小だけでなく拡大となる場合もあるが、色差Ｃｒ、Ｃｂデータの解像度は最大限保存される（縮小による劣化は最小になる）。
【００７９】
尚、ＭＣＵ縮小部２５は、色調整のためのプリスキャンデータ作成、インデックス画像生成、リサイズ画像生成のために用いられる。特に、インデックス用画像のように、倍率の小さい画像を生成する場合は、このＭＣＵ縮小部２５において１／８または１／１６単位の縮小を行うことにより、メモリの使用量を大幅に削減することができる。尚、インデックス画像生成やリサイズ画像生成の場合は、ＭＣＵ縮小部２５において大まかな縮小を行い、細かな調整については後述するリサイズ部３８において実行することにより、メモリの使用量を削減しつつ所望のサイズに合わせることができる。
【００８０】
図８は、本発明の第１の実施形態に係る画像処理モジュール４−２の構成を説明するためのブロック図である。図８において、３４は入力部、３５はノイズ除去部、３６は出力部である。
【００８１】
入力部３４より入力された画像データ（例えば、画像処理モジュール４−１による処理後の画像データ）は、ノイズ除去部３５において、画像に重畳されているノイズ成分が低減された後、出力部３６よりメモリへ出力される。
【００８２】
ここで、ノイズ除去アルゴリズムとしては、エッジ保存型ＬＰＦ（Ｌｏｗ  Ｐａｓｓ  Ｆｉｌｔｅｒ）を用いたものや、メディアンフィルタを用いたものなどの各種方式が提案されているが、いずれも注目画素近傍（処理ウインドウ）の画素を使用するものである。従って、入力部３４より上記注目画素近傍を読み出す操作、即ち、入力部３４のアドレス操作によって、ラインバッファを用いずにノイズ除去を行うことができる。
【００８３】
尚、ノイズ除去処理は１画素ごとに行われる逐次処理であるので、複数ラインのデータを必要とするリサイズ処理には直結することができない。従って、この画像処理モジュールはノイズ除去処理のみとなる。また、ノイズ除去処理が不要な場合は、この画像処理モジュールを起動する必要がないので、処理時間及び消費電力をさらに削減することが可能となる。
【００８４】
図９は、本発明の第１の実施形態に係る画像処理モジュール４−３の構成を説明するためのブロック図である。図９において、３７は入力部、３８はリサイズ部、３９はタイリング部、４０は背景合成部、４１はフレーム合成部、４２は出力部である。上記構成を有する本画像処理モジュールでは、背景やフレームの合成を行う。
【００８５】
入力部３７より注目画素データ及びリサイズ処理に必要な近傍画素データがリサイズ部３８に入力される。リサイズ部３８では、入力画像データをページ上のレイアウトサイズに合わせてリサイズする。一方、入力部３７より背景データがタイリング部３９に入力され、背景データがタイル状に敷き詰められる。そして、背景合成部４０は、リサイズ処理後の画像データと背景データとを合成する。さらに、入力部３７よりフレームデータがフレーム合成部４１に入力されてフレームが合成され、出力部４０よりメモリへ出力される。また、バンドの切り出し（クリッピング）は入力部３７において、処理に必要な画素のみ読み出すことによって実現することが可能である。
【００８６】
図１０は、本発明の第１の実施形態に係わる画像処理モジュール４−３におけるタイリング処理及びクリッピング処理の動作例を説明するための図である。
【００８７】
背景データ１０１は、用紙１００上のクリッピング有効領域１０２（図１０中の太線で囲まれたバンド処理領域）に敷き詰められる。これらの操作は、全て共有メモリからの読み出し操作によって実行される。ここで、背景データ１０１のｘ方向のサイズをＢｗ、ｙ方向のサイズをＢｈ、背景データのスタートアドレスをＡｓとすると、読み出しアドレスＡｒは、Ｂｗ進カウンタＣｘとＢｈ進カウンタＣｙの２つのカウンタ値を用いて、
Ａｒ＝Ａｓ＋Ｃｙ×ｗ＋Ｃｘ    …  （１）
となる。
【００８８】
ここで、２つのカウンタに初期値を与えれば、図１０に示すように繰り返りのスタート位置にオフセットを付けることができる。また、クリッピング有効領域１０２を超えた時に上記Ｂｗ進カウンタに初期値をリロードし、上記Ｂｈ進カウンタをインクリメントすることで、クリッピング処理を実現できる。
【００８９】
図１１は、本発明の第１の実施形態に係る画像処理モジュール４−４の構成を説明するためのブロック図である。図１１において、４３は入力部、４４は入力γ変換部、４５は色変換部、４６は出力γ変換部、４７は中間調処理部、４８は出力部である。この画像処理モジュール４−４では、ビットマップ生成処理を行う。
【００９０】
入力部４３より印刷データが読み出され、入力γ変換部４４において濃度リニアな信号に変換される。濃度リニアな信号に変換された印刷データは、色変換部４５によってプリンタの色材の濃度データ（出力デバイスカラー）に変換される。次いで、出力γ変換４６において出力γ補正され、中間調処理部４７においてビットマップデータ（ドットバターン）に変換され、出力部４８より出力される。ここで、画像データの中間調処理に誤差拡散法を用いた場合、前ラインの量子化誤差が入力部４３より中間調処理部４７に入力される。また、量子化誤差を周囲の画素に拡散させるために、出力部４８より量子化誤差を共有メモリへ格納する。これにより、共有メモリ上に誤差バッファが構成される。
処理量（ハード量）の削減のため、色変換部４５では１つの色材データのみが出力される。従って、例えば、プリンタの色材がＣ，Ｍ，Ｙ，Ｋの４色であったとすると、４色のビットマップを生成するために当該画像処理モジュール４−４は４回起動されることになる。
【００９１】
図１２は、本発明の第１の実施形態に係る画像処理モジュール４−５の構成を説明するためのブロック図である。図１２において、４９は入力部、５０はブロックバッファ、５１はレジ調整部、５２はパス分割部、５３はヘッドＩ／Ｆ、５４は出力部である。この画像処理モジュール４−５では、プリントエンジンに出力するためのデータ処理を行う。
【００９２】
まず、不図示のプリントエンジンが起動されると、入力部４９よりビットマップデータがヘッドのドット構成要素（例えば、インクジェット方式においてはノズル）の並びに合わせて読み出され、ブロックバッファ５０に格納される。レジ調整部５１はプリントエンジンの同期信号に合わせて、ヘッドのドット構成要素列（ノズル列）に対応するドットデータを抽出する。通常、ビットマップデータは、ヘッドのスキャン方向の複数ドットを１ワードとして格納されるので、ブロックバッファ５０の所定ビットのみを選択して取り出す。この時、同時に読み出すビット位置をヘッドのドット構成要素列（ノズル列）毎にずらすことによってレジ調整を行う。
【００９３】
抽出されたドットデータは、パス分割部５２において、入力部４９より読み出されたマスクデータに従って複数のパス（スキャン）に分割される。分割されたドットデータは、ヘッドＩ／Ｆ５３においてヘッドへの伝送フォーマットに変換され、出力部５４よりヘッドへ出力される。このように、複数のパス（スキャン）にて出力画像を形成することにより、ドットのヨレやメカ精度によるドットの位置ずれを知覚され難い高周波領域に変調（拡散）し、プリント出力時のスジやムラを低減することが可能となる。
【００９４】
以上説明したように、第１の実施形態によれば、上記一連の画像処理を入力画像データへのアクセスに着目して少数の処理ブロックに分割し、処理ブロック単位にモジュール化し、各モジュール間のデータの受け渡しを、共有メモリを通じて行う構成とすることで、各画像処理モジュールのＩ／Ｆを汎用化し、画像処理モジュール単位の追加変更を容易にするだけでなく、無駄なバッファやメモリ及び処理の削減が可能となる。
【００９５】
また、容量を確定できないバッファを共有メモリ上に構成することにより、バッファ容量の最適化が可能となる。さらに、必要なバッファ容量が増加しても、共有メモリの容量変更のみで対応することが可能となる。
【００９６】
さらに、画像処理モジュール内を複数のサブモジュールにて構成し、サブモジュールにバイパスモードを設けることで、一部のサブモジュールの置き換えや新たな処理の追加を容易にすることができる。
【００９７】
さらにまた、データが削減される処理を上流工程で行う構成により、共有メモリへのアクセス量が大幅に削減される。さらにまた、アドレスの連続性が向上するように処理することにより、共有メモリのバス使用効率が向上する。
【００９８】
＜第２の実施形態＞
図１３は、本発明の第２の実施形態に係る画像処理装置における画像処理モジュール４−６の構成を説明するためのブロック図である。図１３において、５５は入力部、５６は積和演算部、５７はαブレンド部、５８は出力部である。本実施形態では、前述した第１の実施形態に係る画像処理装置における画像処理モジュール４−２及び画像処理モジュール４−３における画像処理を１つの画像処理モジュール４−６を用いて実現するものである。従って、図１におけるモジュール数ｍは４となる。
【００９９】
まず、画像処理モジュール４−２で実現されたノイズ除去機能を画像処理モジュール４−６で実現する方法について説明する。
【０１００】
まず、入力部５５よりＬＰＦ（ローパスフィルタ）のタップ（Ｔａｐ）に対応する画素データが抽出され、積和演算部５６において上記タップ上の画素データとタップ係数の積和演算が行われる。αブレンド部５７では、上記積和演算部５６の出力（積和演算出力）と注目画素データとの差分よりα値を決定し、積和演算出力と注目画素データとをブレンドし、出力部５８より共有メモリへ出力する。
【０１０１】
ここで、前述した前記ノイズ除去部３５において、ＬＰＦ出力データと元データとの差分を比較し、差分が小さければ平坦部とみなしてＬＰＦの出力を選択し、一方、差分が小さければエッジ部とみなして元データを選択する方法を用いるものとすると、上記ＬＰＦは入力データの積和演算によって実現することができ、上記データの選択はαブレンディングによって実現することができる。
【０１０２】
例えば、入力データとＬＰＦ出力データとの差分絶対値と所定の閾値とを比較し、差分絶対値が閾値以上の場合、入力データの係数を１、ＬＰＦ出力の係数を０としてブレンドする。一方、差分絶対値が閾値未満の場合、入力データの係数を０、ＬＰＦ出力の係数を１としてブレンドする。或いは、入力データとＬＰＦ出力データとの差分絶対値が小さくなるにつれて、ＬＰＦ出力の割合が大きくなるようにブレンドするようにしても良い。
【０１０３】
次に、第１の実施形態の画像処理モジュール４−３による背景合成機能を画像処理モジュール４−６で実現する方法について説明する。
【０１０４】
まず、入力部５５よりリサイズ処理に必要な近傍の画素データが抽出され、積和演算部５６において近傍画素データと補間係数の積和演算が行われる。即ち、積和演算部５６は補間フィルタとして動作する。一方、背景画素データが入力部５５よりαブレンド部５７に入力され、αブレンド部５７では、上記積和演算部５６の出力と上記背景画素データとを上記背景画素データのα値を用いてブレンドし、出力部５８より共有メモリへ出力する。尚、第１の実施形態と同様に、本実施形態においてもタイリング処理及びクリッピング処理は、入力部５５におけるメモリアクセスによって実現するものとする。
【０１０５】
次に、第１の実施形態の画像処理モジュール４−３によるフレーム合成機能を画像処理モジュール４−６で実現する方法について説明する。
【０１０６】
まず、入力部５５よりフレームのリサイズ処理に必要な近傍のフレーム画素データが抽出され、積和演算部５６において近傍フレーム画素データと補間係数の積和演算が行われる。即ち、積和演算部５６は補間フィルタとして動作する。尚、ここでフレーム画素データに付随しているα値も補間される。一方、画素データが入力部５５よりαブレンド部５７に入力され、αブレンド部５７では、上記積和演算部５６の出力と上記画素データとを上記積和演算出力のα値を用いてブレンドし、出力部５８より共有メモリへ出力する。尚、第１の実施形態と同様に、本実施形態においてもクリッピング処理は入力部５５におけるメモリアクセスによって実現するものとする。これにより、フレームデータをリサイズしつつ合成することが可能になる。
【０１０７】
従って、本実施形態では、１バンドの処理について、ノイズ除去のみ、又は背景との合成のみ、又はフレームとの合成のみの場合は１回画像モジュール４−６を起動する。また、背景とフレームを合成する、又はノイズ除去して背景と合成する、又はノイズ除去してフレームと合成する場合は２回画像モジュール４−６を起動する。さらに、ノイズ除去して背景とフレームを合成する場合は３回画像モジュール４−６を起動することとなる。そして、合成後にさらに１回当該画像処理モジュール４−６を起動することにより、合成結果をタイリングすることもできる。即ち、図１３に示した本実施形態に係る画像処理モジュール４−６の起動シーケンスによって多様なパターンの合成が可能となる。
【０１０８】
以上説明したように、複数の機能を１つの画像処理モジュールの設定により実現することで、画像処理モジュールの起動シーケンスによって多様な処理を実現でき、コスト、パフォーマンス、消費電力の最適化が容易になる。
【０１０９】
＜他の実施形態＞
前述した第１及び第２の実施形態において、それぞれのサブモジュールを関数（スレッド（Ｔｈｒｅａｄ））、モジュールをオブジェクト（クラス（Ｃｌａｓｓ））として実装すれば、ソフトウェアによって同様の機能を実現することも可能である。この場合、各サブモジュール間のデータの受け渡しはポインタで行い、アドレス生成部では、当該ポインタによって示される配列の配列要素を生成すればよい。
【０１１０】
従って、前述した第１及び第２の実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、本願発明の目的が達成されることは容易に理解できよう。
【０１１１】
この場合、記憶媒体から読み出されたプログラムコード自体が本願発明の新規な機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本願発明を構成することになる。
【０１１２】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ，ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１１３】
また、コンピュータが読み出したプログラムコードを実行することによって、前述した実施形態の機能が実現される他、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１４】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１１５】
なお、本願発明は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体から、そのプログラムを、パソコン通信など通信ラインを介して要求者にそのプログラムを配信する場合にも適用できることは言うまでもない。
【０１１６】
【発明の効果】
入力画像に対する各種画像処理を複数の処理ブロックに分割して処理ブロック単位にモジュール化し、各モジュール間のデータの受け渡しを、共有メモリを通じて行う構成とすることで、各画像処理モジュールのＩ／Ｆを汎用化し、画像処理モジュール単位の追加変更を容易にするだけでなく、無駄なバッファやメモリ及び処理の削減を図ることができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る画像処理装置の一構成例を示すブロック図である。
【図２】本発明の第１の実施形態に係る画像処理装置のモジュール４−１〜４−ｍの詳細な内部構成を説明するためのブロック図である。
【図３】本発明の第１の実施形態における画像処理サブモジュール間Ｉ／Ｆの動作を示すタイミングチャートである。
【図４】本発明の第１の実施形態に係る画像処理装置の各画像処理モジュールにおけるアドレス生成部の詳細な構成を説明するためのブロック図である。
【図５】本発明の第１の実施形態に係るアドレス生成部におけるパラメータを説明する図である。
【図６】本発明の第１の実施形態に係る上記アドレス生成部の別のシーケンスを説明する図である。
【図７】本発明の第１の実施形態に係る画像処理モジュール４−１の構成を説明するためのブロック図である。
【図８】本発明の第１の実施形態に係る画像処理モジュール４−２の構成を説明するためのブロック図である。
【図９】本発明の第１の実施形態に係る画像処理モジュール４−３の構成を説明するためのブロック図である。
【図１０】本発明の第１の実施形態に係わる画像処理モジュール４−３におけるタイリング処理及びクリッピング処理の動作例を説明するための図である。
【図１１】本発明の第１の実施形態に係る画像処理モジュール４−４の構成を説明するためのブロック図である。
【図１２】本発明の第１の実施形態に係る画像処理モジュール４−５の構成を説明するためのブロック図である。
【図１３】本発明の第２の実施形態に係る画像処理装置における画像処理モジュール４−６の構成を説明するためのブロック図である。
【図１４】デジタルカメラを用いて撮影された画像データをプリンタで出力する際に画像処理を行う従来の画像処理部の構成を示すブロック図である。
【符号の説明】
１  ＣＰＵ
２  ＲＯＭ
３  バスブリッジ
４−１〜４−ｍ  画像処理モジュール
５、１３  アービタ
６  ＲＡＭインタフェース部
７  ＲＡＭ
８  ヘッドインタフェース部
９  Ｉ／Ｏポート
１０  リードバッファ
１１−１〜１１−ｎ  サブモジュール
１２  ライトバッファ
１４  リードアドレス生成部
１５  割り込み制御部
１６  ライトアドレス生成部
１７  セレクタ
１８  シーケンサ
１９  加算部
２０  レジスタ
２１  比較部
【図１】
2004222069.tif 000003
【図２】
2004222069.tif 000004
【図３】
2004222069.tif 000005
【図４】
2004222069.tif 000006
【図５】
2004222069.tif 000007
【図６】
2004222069.tif 000008
【図７】
2004222069.tif 000009
【図８】
2004222069.tif 000010
【図９】
2004222069.tif 000011
【図１０】
2004222069.tif 000012
【図１１】
2004222069.tif 000013
【図１２】
2004222069.tif 000014
【図１３】
2004222069.tif 000015
【図１４】
2004222069.tif 000016