(57)【要約】【課題】多様な処理モードに対応できる柔軟なデータ処理装置を提供することを目的とする。【解決手段】データに対して実行すべき一連の処理を複数の処理部分に分割し、各処理部分を実行する複数のサブモジュール１１と、コンフィグレーションレジスタ１０１に設定されたパラメータに従って複数のサブモジュールの間の接続を変更するスイッチマトリクス１７を有する。コンフィグレーションレジスタ１０１へのパラメータ設定により、サブモジュール間の接続を変更し、複数種類の処理モードを実行可能にする。【選択図】  図２
2006178546.tif 000002
【特許請求の範囲】
【請求項１】
データに対して実行すべき一連の処理を複数の処理部分に分割し、各処理部分を実行する複数の処理ユニットと、
設定されたパラメータに従って前記複数の処理ユニット間の接続を変更し、複数種類の処理モードを実行可能にする変更手段とを備えることを特徴とするデータ処理装置。
【請求項２】
設定されたパラメータに応じてリードアドレスを生成する第１アドレス生成部を有し、該リードアドレスに従って外部メモリよりデータを読み出して第１バッファに保持する読込手段と、
設定されたパラメータに応じてライトアドレスを生成する第２アドレス生成部を有し、第２バッファに格納されたデータを該ライトアドレスに従って外部メモリへ書き込む書込手段とを備え、
前記複数の処理ユニットによるデータ処理では、前記第１バッファに保持されたデータに対して前記一連の処理が施され、その処理結果が前記第２バッファに書き込まれることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記第１バッファ、第２バッファおよび複数の処理ユニットの各々の間のデータの受け渡しにおいて、出力データが有効であることを示す有効信号と、データの保持を依頼する保持信号を用いてハンドシェークが行われることを特徴とする請求項１または２に記載のデータ処理装置。
【請求項４】
前記外部メモリに格納されたデータは画像データであり、前記第１アドレス生成部は、設定されたパラメータに応じて、点順次、線順次或いは面順次で外部メモリに格納された画像データを点順次で読み出すようにリードアドレスを生成することを特徴とする請求項２に記載のデータ処理装置。
【請求項５】
前記読込手段において、設定されたパラメータにより指定されたアドレス範囲のデータの読み込を完了したとき、および／または、設定されたパラメータにより指定されたアドレス範囲のデータの書き込みを完了したとき、その旨の信号を出力する出力手段を更に備えることを特徴とする請求項２に記載のデータ処理装置。
【請求項６】
前記変更手段により、複数の処理ユニットにより複数のデータを並列処理する第１モードと、該複数の処理ユニットにより１つのデータを上位ビットと下位ビットに分割して処理する第２モードとの切り替えが可能であることを特徴とする請求項１に記載のデータ処理装置。
【請求項７】
前記複数の処理ユニットは、ガンマ変換部、色変換部、補間部を含み、
前記変更手段により、前記補間部が前記ガンマ変換部からの出力データの補間と、前記色変換部からの出力データの補間に利用されることを特徴とする請求項１に記載のデータ処理装置。
【請求項８】
設定パラメータに従って、前記複数の処理ユニットのうちの任意の処理ユニットへの動作クロックの供給を停止することを特徴とする請求項１に記載のデータ処理装置。
【請求項９】
設定パラメータに従って、前記複数の処理ユニットのうちの任意の処理ユニットへの電源の供給を停止することを特徴とする請求項１に記載のデータ処理装置。
【請求項１０】
前記変更手段により、色変換処理におけるカラーマッチング処理を実行するデータ処理装置と、色変換処理におけるデバイスカラー変換を実行するデータ処理装置のいずれかを選択的に構成可能であることを特徴とする請求項１に記載のデータ処理装置。
【請求項１１】
前記処理により生成された出力データを複数画素単位で３２ビットにパッキングして出力することを特徴とする請求項１に記載のデータ処理装置。
【請求項１２】
前記出力データが、１１ビット×２画素＋１０ビット×１画素でパッキングされることを特徴とする請求項１１に記載のデータ処理装置。
【請求項１３】
前記パッキングにおいて、１０ビットの画素位置が各出力色間で異なることを特徴とする請求項１２に記載のデータ処理装置。
【請求項１４】
前記パッキングにおいて、３２ビットを２つの１１ビット領域と１つの１０ビット領域に分けて各領域の位置を固定し、１１ビットの画素が１０ビット領域に配置される場合は当該画素のＬＳＢのビットを１０ビットの画素が配置された１１ビット領域のＬＳＢ位置へ配置することを特徴とする請求項１２に記載のデータ処理装置。
【請求項１５】
前記パッキングにおいて、データを３つの１１ビットデータにアンパックする際、１０ビットデータの１１ビット目を隣接する画素の画素値に基づいて生成することを特徴とする請求項１２に記載のデータ処理装置。
【請求項１６】
前記パッキングにおいて、ライン終端部分において３２ビットのパックが完結しない場合は、残りのビットに０をパックすることを特徴とする請求項１１に記載のデータ処理装置。
【請求項１７】
上記サブモジュールの一部をプロセッサにて処理することを特徴とする請求項１４に記載の画像処理装置。
【請求項１８】
１つまたはデータ処理モジュールと外部メモリと制御ユニットを備えたデータ処理装置であって、
前記データ処理モジュールの各々は、
データに対して実行すべき一連の処理を複数の処理部分に分割し、各処理部分を実行する複数の処理ユニットと、
設定されたパラメータに従って前記複数の処理ユニット間の接続を変更し、複数種類の処理モードを実行可能にする変更手段と、
設定されたパラメータに応じてリードアドレスを生成する第１アドレス生成部を有し、該リードアドレスに従って前記外部メモリよりデータを読み出して第１バッファに保持する読込手段と、
設定されたパラメータに応じてライトアドレスを生成する第２アドレス生成部を有し、第２バッファに格納されたデータを該ライトアドレスに従って前記外部メモリへ書き込む書込手段とを備え、
前記複数の処理ユニットは、前記第１バッファに保持されたデータに対して前記一連の処理を加え、その処理結果を前記第２バッファに書き込むものであり、
前記制御ユニットは、前記読込手段によるデータの読出しの完了或いは前記書込手段によるデータの書き込みの完了を検出して、前記パラメータを設定することにより、前記データ処理モジュールによるデータ処理を制御することを特徴とするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置に関し、特に、カラー画像データの記録或いは表示に用いられる画像処理に好適なものである。
【背景技術】
【０００２】
自然画（写真）データをプリンタにて出力する際、良好な画像出力を得るためには、各種の画像処理が必要となる。図１８は自然画データをプリンタにて出力する際の一般的な画像処理部を示すブロック図である。
【０００３】
フレームバッファ２００に格納された画像データは入力γ変換部２０１にて濃度リニアな信号に変換され、色変換部２０２にてプリンタの色材データ（出力デバイスカラー）に変換される。さらに、出力γ変換部２０３にて出力γが補正され、中間調処理部２０４にてビットマップデータ（ドットバターン）に変換される。ここで、画像データの中間調処理に誤差拡散法を用いた場合、量子化誤差を周囲の画素に拡散させるためにラインバッファ２０５が用いられる。得られたビットマップデータはページバッファ２０６に一旦格納される。通常、フレームバッファ２００及びページバッファ２０６のメモリ容量を節約するため、ページ（フレーム）の１部をバンド上に順次切り出して処理する（バンド処理）方式が用いられる。なお、以降ではバンド処理を前提とし、上記２つのバッファを特に区別せずにバンドバッファと記す。
【０００４】
次に、不図示のプリントエンジンが起動されると、エンジンに同期してバンドバッファより上記ビットマップデータが読み出されて、画像が印刷される。
【０００５】
これら一連の処理の内容は、入力画像の種類やプリントエンジンの種類によって異なる。例えば、入力画像がモノクロであれば色変換は省略される。また、入力画像が自然画であれば中間調処理に誤差拡散が用いられるが、入力画像がグラフィックの場合は中間調処理にディザが用いられる（例えば特許文献１参照）。また、出力デバイスカラーが３色（Ｃ，Ｍ，Ｙ）の場合は３色分の色変換が、４色以上ではその色数分の色変換が必要である。更に、４色以上の場合には前段（カラーマッチング）と後段（デバイスカラー変換）に分割して処理される。このように多様な入力データやプリントエンジンの種類に対応するために、ＣＰＵ等のプロセッサによってソフト的に画像データを処理するのが一般的である。
【特許文献１】特開平５−１８３７３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記ソフトウエアによる方法では、高解像度化に伴い処理スピード（パフォーマンス）が不足するという欠点があった。一方、ハード化した場合は、各処理モード毎にハードウエアを用意しなければならず、回路が巨大になるという問題があった。また、仕様変更等があった場合はそのハードウエアの全体を作り変えなければならないという問題があった。
【０００７】
本発明は上述した課題を解決するものであり、多様な処理モードに対応できる柔軟なデータ処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を達成するための本発明によるデータ処理装置は以下の構成を備える。すなわち、
データに対して実行すべき一連の処理を複数の処理部分に分割し、各処理部分を実行する複数の処理ユニットと、
設定されたパラメータに従って前記複数の処理ユニット間の接続を変更し、複数種類の処理モードを実行可能にする変更手段とを備える。
【発明の効果】
【０００９】
本発明によれば、多様な処理モードに対応できる柔軟なデータ処理装置を提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、添付の図面を参照して本願発明の一実施形態を説明する。尚、以下の実施形態は、本願発明の技術分野における当業者による実施を容易にするために開示を提供するものであり、特許請求の範囲によって確定される本願発明の技術的範囲に含まれる一部の実施形態にすぎない。従って、本願明細書に直接的に記載されていない実施形態であっても、技術思想が共通する限り本願発明の技術的範囲に包含されることは当業者にとって自明であろう。
【００１１】
なお、便宜上複数の実施形態を記載するが、これらは個別に発明として成立するだけでなく、もちろん、複数の実施形態を適宜組み合わせることでも発明が成立することは、当業者であれば容易に理解できよう。
【００１２】
図１は本実施形態に係る画像処理装置の一構成例を示すブロック図である。図１において、１は画像処理装置を制御するＣＰＵ、２はプログラム等を格納するＲＯＭ、３はバスブリッジ、４−１〜４−ｍはｍ個（ｍは１以上の整数）の画像処理モジュール（以下、これらを総称する場合に画像処理モジュール４と記載する）、５はＤＲＡＭ７へのアクセスを調停するアービタ、６はＤＲＡＭインターフェース部、７はＤＲＡＭ、８はヘッドインターフェース、９はＩ／Ｏポートである。本実施形態においてはＤＲＡＭ７は、ＣＰＵ１、各画像処理モジュール４−１〜４−ｍによって共有されているが、パフォーマンス維持のため、ＣＰＵ１が画像処理モジュール４とは共有しない別のＲＡＭを持つ構成としても良い。
【００１３】
次に、上述した構成による画像処理装置の処理動作について説明する。  
まず、ＣＰＵ１はＲＯＭ２に格納されているプログラムに従って、Ｉ／Ｏポート９より処理すべき画像データを受け取り、バスブリッジ３、アービタ５、ＤＲＡＭインターフェース部６を経てＤＲＡＭ７へ格納する。次に、ＣＰＵ１は画像処理モジュール４−１のコンフィグレーションレジスタにパラメータを設定し、画像処理モジュール４−１を動作させる。コンフィグレーションレジスタは各画像処理モジュール毎に設けられ、当該画像処理モジュールの動作を決定するパラメータを保持する。たとえば、画像処理モジュール４−１が処理すべきデータが格納されたＲＡＭ７のアドレス範囲や、画像処理モジュール４−１の処理の結果として得られたデータを格納すべきＲＡＭ７のアドレス範囲をパラメータとして保持する。画像処理モジュール４−１は、コンフィグレーションレジスタに設定されたアドレス範囲についてＲＡＭ７からデータの読み出しが終了したとき、或いは、コンフィグレーションレジスタに設定されたアドレス範囲についてＲＡＭ７への書き込みが終了したときに割り込みを発生し、その旨をＣＰＵ１へ通知する。
【００１４】
ＣＰＵ１は、割り込みを受付けると、割り込み要因を解析する。画像処理モジュール４−１の処理すべきデータの読み出し終了の場合は、次の処理すべきデータの読出しアドレス範囲を画像処理モジュール４−１のコンフィグレーションレジスタに設定し、画像処理モジュール４−１の処理を続行させる。画像処理モジュール４−１の処理したデータの書き込み終了の場合は、次の処理データの格納先となるアドレス範囲を画像処理モジュール４−１のコンフィグレーションレジスタに設定し、画像処理モジュール４−１の処理を続行させると共に次の画像処理モジュール４−２のコンフィグレーションレジスタを設定し、画像処理モジュール４−２を動作させる。
【００１５】
画像処理モジュール４−２は所定の処理を実行し、コンフィグレーションレジスタに設定されたアドレス範囲のデータの読み出しが終了するか、コンフィグレーションレジスタに設定されたアドレス範囲への処理済みデータの書き込みが終了すると割り込みを発生し、ＣＰＵ１へ通知する。ＣＰＵ１は、割り込みを受付けると、割り込み要因を解析する。画像処理モジュール４−２の処理すべきデータの読み出し終了の場合は、次の処理すべきデータの読出しアドレス範囲を画像処理モジュール４−２のコンフィグレーションレジスタに設定し、画像処理モジュール４−２の処理を続行させる。画像処理モジュール４−２の処理したデータの書き込み終了の場合は、次の処理データの格納先となるアドレス範囲を画像処理モジュール４−２のコンフィグレーションレジスタに設定し、画像処理モジュール４−２の処理を続行させると共に次の画像処理モジュール４−３のコンフィグレーションレジスタを設定し、画像処理モジュール４−３を動作させる。
【００１６】
このように、前の処理が終わった直後に次の画像処理モジュールを起動し、処理データを次々と画像処理モジュールに受け渡しすることで、画像処理モジュール単位のパイプラインを構成することができる。
【００１７】
以上のようにして画像処理モジュール４−ｍ−１までの処理が進み、所定以上のビットマップデータが生成されると、図示しないプリントエンジンが起動される。画像処理モジュール４−ｍは、プリントエンジンの同期信号に合せて、ヘッドＩ／Ｆ８を経てビットマップデータをプリントエンジンへ送る。こうして、画像がプリントされる。
【００１８】
図２は、本実施形態に係わる画像処理装置の画像処理モジュール４の内部の詳細な構成を説明するためのブロック図である。図２において、１０はリードバッファ、１１−１〜１１−ｎはサブモジュール（以下、これらを総称する場合にサブモジュール１１と記載する）、１２はライトバッファ、１３はアービタ、１４はリードアドレス生成部、１５は割り込み制御部、１６はライトアドレス生成部、１７はスイッチマトリクスである。
【００１９】
１０１はコンフィグレーションレジスタであり、スイッチマトリクス１７やリードアドレス生成部１４、ライトアドレス生成部１６等の動作パラメータを設定する。１０２はクロック分配部であり、装置のクロックパルスclkを当該モジュール内の各部へ分配する。なお、クロック分配部１０２は、コンフィグレーションレジスタ１０１の設定により、任意のサブモジュールへのクロックclkの供給を停止することができる。また、１０３は電源供給部であり、当該モジュール内の各部への電源供給を制御する。コンフィグレーションレジスタ１０１の設定により、任意のサブモジュールへの電源供給を停止することができる。
【００２０】
上述したようにＣＰＵ１は画像処理モジュール４のコンフィグレーションレジスタ１０１に動作パラメータを設定する。この設定により、リードアドレス生成部１４に対してリード開始アドレスとリード終了アドレスが設定され、リードイネーブル信号Renがセットされる。また、コンフィグレーションレジスタ１０１へのパラメータの設定により、ライトアドレス生成部１６に対してライト開始アドレスとライト終了アドレスが設定され、ライトイネーブル信号Wenがセットされる。
【００２１】
アービタ１３はリードバッファ１０のバッファの空き容量Rp及びリードアドレス生成部１４のイネーブル信号Renを検出し、リードアドレスが有効（Ren＝１）でリードバッファ１０にデータが格納可能（Rp≧Rn（Rn：ＤＲＡＭ７からのリードアクセス単位(後述)））であれば、アービタ５へリードリクエスト（PREQ＝１、PNRW＝０、PNUM＝Rn、PADD＝Rad）を発行する。一方、ライトバッファ１２のデータ蓄積量Wpが所定のワード数以上（Wp≧Wn（Wn：ＤＲＡＭ７へのライトアクセス単位(後述)））になると、アービタ１３はライトアドレス生成部１６のイネーブル信号Wenを検出してアービタ５へライトリクエストを発行する。すなわち、ライトアドレスが有効（Wen＝１）でライトバッファ１２よりデータが出力可能（Wp≧Wn）であれば、アービタ５へライトリクエスト（PREQ＝１、PNRW＝１、PNUM＝Wnum、PADD＝Wad）を発行する。
【００２２】
アービタ５は、画像処理モジュール４からのリクエスト信号PREQを受け取ると、PNRWによりリード／ライトの判別（０：リード、１：ライト）を行い、PNUMにより転送ワード数を、PADDでアドレスを検知する。ＣＰＵ１及び他の画像処理モジュールからのリクエストがなければ、アービタ５は、ＤＲＡＭインターフェース部６を通じてＤＲＡＭ７の該当データのアクセスを開始する。リクエストが受付けられると、アービタ５は受領信号PACKをリクエスト元の画像処理モジュールに返す。一方、ＣＰＵ１及び他のモジュールからのリクエストがある場合は、優先順位に従ってリクエストを受付ける。
【００２３】
アービタ１３は、アービタ５から受領信号PACKを受け取ると、リードリクエストの場合は受領信号Rackをリクエスト元のリードアドレス生成部１４に返す。リードアドレス生成部１４は、上記受領信号Rackを受け取ると、ＲＡＭ７からのデータ読出し他のための次のアドレスを生成する。なお、リクエストしたアドレスがコンフィグレーションレジスタに設定されたリード終了アドレスであった場合は、リードイネーブル信号Renをリセットし、リード終了信号Rendを割り込み制御部１５に出力する。
【００２４】
一方、ライトリクエストに対して受領信号PACKを受け取った場合は、アービタ１３は受領信号Wackをリクエスト元のライトアドレス生成部１６に返す。ライトアドレス生成部１６は、受領信号Wackを受け取ると、ＲＡＭ７へのデータ書き込みのための次のアドレスを生成する。なお、リクエストしたアドレスがコンフィグレーションレジスタに設定されたライト終了アドレスであった場合は、ライトイネーブル信号Wenをリセットし、ライト終了信号Wendを割り込み制御部１５に出力する。
【００２５】
割り込み制御部１５は、コンフィグレーションレジスタによってリード終了割り込みマスク及びライト終了割り込みマスクの設定が可能になっている。各割り込みマスクの設定が割り込みイネーブルとなっている場合は、上記リード終了信号Rendまたはライト終了信号Wendによって割り込み信号INTを生成し、ＣＰＵ１へ通知する。ＣＰＵ１は、割り込み信号INTを受付けると、割り込み制御部１５のステータスを読み取る。割り込み要因がリード終了の場合は、ＣＰＵ１は上記リード終了割り込みマスクをリセットして割り込みを解除する。さらに処理を続行する場合は、コンフィグレーションレジスタ１０１へのリード開始アドレスとリード終了アドレスの再設定、リードイネーブル信号のセット等の処置を行った後、リード終了割り込みマスクをセットする。同様に、割り込み要因がライト終了の場合は、ライト終了割り込みマスクをリセットして割り込みを解除する。さらに処理を続行する場合は、コンフィグレーションレジスタ１０１へのライト開始アドレスとライト終了アドレスの再設定、ライトイネーブル信号のセット等の処置を行った後、ライト終了割り込みマスクをセットする。
【００２６】
次に、ＤＲＡＭ７よりデータが読み出されるとアービタ５はＤＲＡＭデータ有効信号PVALIDをリクエスト元のモジュールに返す。リクエスト元のモジュールでは、アービタ１３よりリードバッファ１０へデータ有効信号Rvalidを返す。リードバッファ１０はデータ有効信号Rvalidがセットされている期間、ＤＲＡＭデータ出力信号PDIN上のデータを格納する。この操作により、ＤＲＡＭ７のPADD（＝Rad）で示されるアドレス（リードアドレス生成部１４が生成したアドレス）からデータが読み出され、リードバッファ１０へ格納される。
【００２７】
一方、ＤＲＡＭ７にデータを書き込む場合は、ＤＲＡＭ７の書き込みタイミングに合せてアービタ５はＤＲＡＭデータ有効信号PVALIDをリクエスト元のモジュールに返す。リクエスト元のモジュールでは、アービタ１３よりライトバッファ１２へデータ有効信号Wvalidを返す。ライトバッファ１２はデータ有効信号Wvalidがセットされている期間、ＤＲＡＭデータ入力信号PDOUT上に書き込むデータを出力する。この操作により、ライトバッファ１２のデータがＤＲＡＭ７のPADD（＝Wad）で示されるアドレス（ライトアドレス生成部１６が生成したアドレス）へ格納される。
【００２８】
リードバッファ１０は、サブモジュール１１の処理に必要なデータが揃った時に有効信号valid_outをセットし、サブモジュール１１の処理に必要なデータが揃っていない場合は有効信号valid_outをリセットする。また、サブモジュール１１からの保持要求信号stall_inがセットされていなければ、リードバッファ１０は格納されたデータをクロックに同期して順次出力する。サブモジュール１１からの保持要求信号stall_inがセットされている場合はデータを更新しない。サブモジュール１１は有効信号valid_outがセットされているデータのみを受け取る。なお、データの受け取りが不可能の場合は、保持要求信号stall_inをセットし、リードバッファ１０の出力をホールドする。なお、入力データの並び替えが不要な場合は、リードバッファ１０はＦＩＦＯで構成できる。同様に、出力データの並び替えが不要な場合は、ライトバッファ１２はＦＩＦＯで構成できる。
【００２９】
画像処理モジュール４の内部は１つ以上の画像処理サブモジュール１１によって構成されており、各サブモジュール間では、上記と同様の動作（有効信号validと保持要求信号stallによるハンドシェーク（あるモジュールの_inは他のモジュールの_outに接続される））によってデータの受け渡しが行われる。
【００３０】
図３はリードバッファ、ライトバッファを含むサブモジュール間の信号のやり取り（上述のハンドシェークの様子）を示すタイミングチャートである。データ送信側のサブモジュール１１は、データが出力可能であればクロックclkの立ち上がりに同期してデータ信号d1及び有効信号validをセットする（Ｔ１）。次のクロックの立ち上がりで受信側からの保持要求信号stallがセットされていなければデータが受信されたとみなし、次のデータが出力可能であればデータ信号data及び有効信号validをセットする（Ｔ２）。次のデータが出力可能でなければ有効信号validをリセットする（Ｔ３）。次のクロックの立ち上がりで受信側からの保持要求信号stallがセットされていたら、データが受信されなかったとみなし、データ信号data及び有効信号validをホールドする（Ｔ７）。なお、受信側からの保持要求信号stallがセットされていても有効信号validがセットされていなければ（Ｔ８）、無効データであるので、データ信号data及び有効信号validはホールドされずに次の有効データが出力される（Ｔ９）。即ち、有効信号validがセットされていない時の保持要求信号stallは無視される。
【００３１】
データ受信側のサブモジュールは、受信可能であれば有効信号validがセットされているデータ信号d1をクロックclkの立ち上がりに同期して受け取る（Ｔ１，Ｔ２，Ｔ４，Ｔ５）。受信不可能であれば保持要求信号stallをセットし、送信側のデータ出力ｄ５及びvalidを保持させる（Ｔ６）。受信可能となったら保持要求信号stallをリセットし、送信側のデータ出力d5を受け取る（Ｔ７）。
【００３２】
ライトバッファ１２は、バッファに空きがあれば、サブモジュール１１からの有効信号valid_outがセットされた時のデータ信号data_outをバッファに格納する。バッファに空きがなければ、保持要求信号stall_outをセットし、サブモジュール１１の出力をホールドさせる。
【００３３】
スイッチマトリクス１７は各サブモジュール１１及びリードバッファ１０、ライトバッファ１２との接続を行う。即ちリードバッファ１０あるいはサブモジュール１１の所定サブモジュールのdata_outとvalid_out，stall_inをライトバッファ１２あるいは別の所定サブモジュールのdata_inとvalid_in，stall_outに各々接続する。この接続はコンフィグレーションレジスタ１０１の設定によって行われる。従って、ＣＰＵ１によるコンフィグレーションレジスタのパラメータ設定によりスイッチマトリクス１７の接続状態を変更することで、処理内容に応じて動的に各モジュール間の接続を変更することが可能となる。
【００３４】
なお、スイッチマトリクス１７は公知のクロスバースイッチまたはセレクタ群によって構成される。通常、接続の組み合わせが限定される場合にはセレクタを、接続の組み合わせに制限がない場合はクロスバースイッチが適している。なお、送信側のdata_outと受信側のdata_inのビット数は、接続情報に応じて有効ビットが判定できれば必ずしも一致させる必要はない。即ち、有効なビットのみ接続されていれば良い。これにより不要な接続回路を削減できる。また、コンフィグレーションレジスタ１０１の設定により、クロック分配部１０２や電源供給部１０３を制御し、データパスに接続されていないサブモジュール（即ち未使用モジュール）へのクロックや電源の少なくとも何れかの供給を止めることで、消費電力の無駄を省くことができる。
【００３５】
図４は、本実施形態に係わる画像処理装置の各モジュールにおけるアドレス生成部（１４，１６）の具体的な構成を説明するためのブロック図である。リードアドレス生成部１４、ライトアドレス生成部１６は同一の構成であり、ともに図４を用いて説明する。図４において、１８はセレクタ、１９は加算部、２０はレジスタ、２１は比較部、２２はシーケンサである。
【００３６】
まず、ＣＰＵ１によって開始アドレスがレジスタ２０にセットされる。シーケンサ２２はリクエスト受領信号ack（Rack、Wack）によって状態遷移し、状態に応じてセレクタ１８のアドレス差分値を選択する。例えば、シーケンサ２２は内部に１つ以上のカウンタを持ち、受領信号ackによって該当カウンタがカウントアップ（またはカウントダウン）し、各カウンタのキャリー（またはボロー）によって、セレクタ１８を制御する。従って、所定回数のアクセス毎に、セレクタより出力されるアドレス差分値が切り替わる。なお、本実施形態においてはＤＲＡＭ７への転送効率アップのため、複数ワード数単位でアクセスする。従って、アクセス単位内に不要なデータが存在する場合（即ちアクセス単位内でアドレスが不連続となる場合）、アクセス単位のワード数n（Rn、Wn）を変更し、不要なアクセスを防止する。
【００３７】
選択されたアドレス差分値は加算部１９にて直前のアドレスに加算され、受領信号ackによってレジスタ２０に保持される。レジスタ２０の出力は比較部２１において終了アドレスと比較され、レジスタ２０の出力（即ちアドレス生成部のアドレス出力）が終了アドレスに一致した場合は受領信号ackによって終了信号がセットされる。
【００３８】
セレクタ１８に入力されるアドレス差分値D1〜Dk及びシーケンサのパラメータ（カウンタの進数等）は、コンフィグレーションレジスタ１０１に設定される。アドレス差分値のＭＳＢと出力アドレスのＭＳＢの重みを一致させることにより、負の差分値を表現することができる。なお、バーストモードのように複数ワードをまとめてアクセスする場合もあるため、アドレス差分値と出力アドレスのビット数は必ずしも一致するとは限らない。なお、通常、アドレス差分値の数は、シーケンサ２２内のカウンタの数＋１となる。
【００３９】
図５は、本実施形態に係わる上記アドレス生成部のパラメータを説明する図である。例えば、図５に示すようなブロック状にデータのアクセス（２次元アドレッシング）を行う場合、レジスタ２０にはまず、開始アドレスAsがロードされる。シーケンサ２２はアドレス差分値D1を選択するようにセレクタ１８を制御する。セレクタ１８はアドレス差分値D1を選択しているので、加算部１９の出力はAs＋D1となる。受領信号ackが返ってくると、レジスタ２０は次のアドレスであるAs＋D1を出力する。ここで、水平方向のアクセス数をｗとすると、上記操作をｗ−１回繰り返す。
【００４０】
ｗ回目のアドレス生成になると、シーケンサ２２はアドレス差分値D2を選択するようにセレクタ１８を制御する。従って、ｗ回目のアドレスはAs＋（ｗ−１）・D1＋D2となって、次のラインの先頭データP1,0がアクセスされる。次に受領信号ackが返ってくると、シーケンサ２２はアドレス差分値D1を選択するようにセレクタ１８を制御する。このように、シーケンサ２２はｗ回のアクセス毎に１回アドレス差分値D2を選択し、それ以外ではアドレス差分値D1を選択するようにセレクタ１８を制御する。よって、シーケンサ２２では、ｗ−１をロードし、受領信号ackによって、カウンタを−１し、カウンタが０になった時に次の受領信号ackによってｗ−１をリロードするｗ進カウンタを構成し、ｗ進カウンタが０になった時にアドレス差分値D2を選択する信号を生成すればよい。従って、この場合（２次元アドレッシング）のアドレス生成部のパラメータは、開始アドレスAs、終了アドレスAe、水平方向のアクセス数ｗ（設定値はｗ−１）、２つのアドレス差分値D1、D2の合計５つとなり、これらはコンフィグレーションレジスタ１０１に保持される。
【００４１】
例えば、図５に示すように、アドレスが隣接している場合、D1＝１となる。また、右から左へアクセスする場合は、D1＝−１とすれば良い。同様に、９０°回転や、飛び飛びにアクセスするような場合においても、上記パラメータを適切に設定することにより可能となる。但し、９０°回転の場合は、水平方向のアクセス数ｗの代わりに垂直方向のアクセス数ｈを用いる。
【００４２】
図６は、本実施形態に係わる上記アドレス生成部の別のシーケンスを説明する図である。例えば、図６に示すようなＲＧＢ線順次データを点順次データに変換するような場合（３次元アドレッシング）、シーケンサ２２はアドレス差分値D1を２回選択した後、アドレス差分値D2を１回選択するようにセレクタ１８を制御する。そして、このシーケンスをｗ−１回繰り返すと、シーケンサ２２はアドレス差分値D3を選択するようにセレクタ１８を制御する。このようなアドレスの生成を実現するために、シーケンサ２２は、
(1)ｃ−１（この例ではプレーン数ｃ＝３）をロードし、受領信号ackによってカウンタを−１し、カウンタが０になった時に次の受領信号ackによってｃ−１をリロードするｃ進カウンタと、
(2)ｗ−１をロードし、ｃ進カウンタが０の時の受領信号ackによってカウンタを−１し、カウンタが０かつｃ進カウンタが０の時の受領信号ackによってｗ−１をリロードするｗ進カウンタとを構成し、
(3)ｃ進カウンタとｗ進カウンタが共に０の時はアドレス差分値D3を、ｃ進カウンタのみ０の時はアドレス差分値D2を、それ以外ではアドレス差分値D1を選択する信号を生成する。
【００４３】
従って、この場合（３次元アドレッシング）のアドレス生成部のパラメータは、開始アドレスAs、終了アドレスAe、プレーン数ｃ（設定値はｃ−１）、水平方向のアクセス数ｗ（設定値はｗ−１）、３つのアドレス差分値D1、D2、D3の合計７つとなり、これらはコンフィグレーションレジスタ１０１に保持される。同様に、アドレス差分値D1を色プレーン間のアドレス差分にセットすれば面順次データの点順次化も可能である。また、D2（図５の場合はD1）を逆スキャン時に２の補数に変換することで、双方向スキャンに対応させることもできる。この場合、スキャン方向判定部、２の補数変換入力セレクタ、２の補数変換部、２の補数変換出力セレクタが新たに必要になるが、逆スキャン用差分レジスタを追加して次元数を１つ追加する構成でも対応可能である。
【００４４】
次に、具体的な処理を例に、各接続状態における処理の流れを説明する。
【００４５】
［第１の処理モード（高精度及び高速処理）］
図７は、本実施形態に係わる画像処理モジュール４の第１の処理モードを説明するためのブロック図である。図７において、２３は入力部、２４は入力γ変換部、２５は色変換部、２６は出力γ変換部、２７は中間調処理部、２８は出力部である。このモジュールでは、ＲＧＢ点順次データよりＣＭＹ面（バンド）順次のビットマップ生成を行うものとする。
【００４６】
入力部２３より読み出されたＲＧＢ点順次データは、入力γ変換部２４にて濃度リニアな信号に変換される。濃度リニアな信号に変換された印刷データは、色変換部２５にてプリンタの色材の濃度データ（出力デバイスカラー）に変換される。つづいて、出力γ変換２６にて出力γ補正され、中間調処理部２７にてビットマップデータ（ドットバターン）に変換され、出力部２８より出力される。画像データの中間調処理に誤差拡散法を用いた場合、前ラインの量子化誤差が入力部２３より中間調処理部２７に入力される。また、量子化誤差を周囲の画素に拡散させるために出力部２８より量子化誤差をＤＲＡＭ７へ格納する。誤差バッファをＤＲＡＭ７上に構成するので、水平方向画素数の制限が解消される。
【００４７】
なお、ハード量の削減及び色材の色数制限解除のため、色変換部２５では通常１つの色材データのみが出力される。従って、例えば、プリンタの色材がＣ，Ｍ，Ｙの３色であったとすると、３色のビットマップを生成するのに、このモジュールは３回起動されることになる。
【００４８】
図８は、図７に示した機能を実現するためのサブモジュールの接続関係を示すブロック図である。図８において、２９は画像データの入力バッファ、３０は入力画像データのアドレス生成回路、３１は入力誤差データのアドレス生成回路、３２は誤差データの入力バッファ、３３はＲ信号用入力γ変換ＬＵＴ、３４はＧ信号用入力γ変換ＬＵＴ、３５はＢ信号用入力γ変換ＬＵＴ、３６は上位ビット用色変換３Ｄ−ＬＵＴ、３７は下位ビット用色変換３Ｄ−ＬＵＴ、３８は上位ビット用３Ｄ−ＬＵＴの補間回路、３９は下位ビット用３Ｄ−ＬＵＴの補間回路、４０は補間出力合成用加算器、４１は上位ビット用誤差拡散回路、４２は下位ビット用誤差拡散回路、４３は画像データの出力バッファ、４４は出力画像データのアドレス生成回路、４５は出力誤差データのアドレス生成回路、４６は誤差データの出力バッファである。
【００４９】
なお、図２では、リードバッファおよびリードアドレス生成部の組と、ライトバッファおよびライトアドレス生成部モジュールの組が１組ずつ設けられた構成を示したが、以下に説明するモジュール４では、リードバッファおよびリードアドレス生成部の組を２組、ライトバッファおよびライトアドレス生成部の組を２組設けている。これは、誤差データ用と画像データ用のリードおよびライトバッファを設けたためである。
【００５０】
入力画像データのためのアドレス生成回路３０は、画像データ入力バッファ２９に所定以上の空きがある場合、アービタ５へリクエストを出すと同時にデータの処理順序に合わせてＤＲＡＭ７のアドレスを生成し出力する。ＤＲＡＭ７より読み出された画像データは画像データ入力バッファ２９に格納され、ＲＧＢの色毎に入力γ変換ＬＵＴ３３、３４、３５に各々入力される。入力γ変換ＬＵＴ３３、３４、３５は入力γ補正のためのテーブルで、本実施形態では２５６エントリ１６ビット出力構成である。この場合、入力画像データ８ビットが入力され、γ補正されたデータが１６ビットで出力される。なお、後述するように後段の３Ｄ−ＬＵＴの容量削減及び補間回路の簡素化のため、テーブルに格納するデータは所定のスケーリングが施されている。
【００５１】
γ補正されたＲＧＢデータ（１６ビット）の上位８ビットは、上位ビット用色変換３Ｄ−ＬＵＴ３６で格子点データに変換され、補間回路３８による線形補間を経て出力色データとなる。なお、ここでは色変換３Ｄ−ＬＵＴ３６に格納する格子点データに予め出力γ補正されたデータを格納しておくことにより、上記出力γ補正２６も同時に行っている。本実施形態では、色変換３Ｄ−ＬＵＴ３６は入力されたＲＧＢデータ（γ補正されたＲＧＢデータの上位８ビット）のうちの上位４ビットより該当する小色空間の格子点の上位ビットを出力するＬＵＴである。本実施形態では、４０９６エントリ８ビット出力構成となっており、ＲＧＢデータの各上位４ビットの入力から該当する格子点の上位８ビットを出力する。一方、γ補正されたＲＧＢデータの上位８ビットのうちの残りの下位４ビットはそのまま補間回路３８に入力される。補間回路３８は、３Ｄ−ＬＵＴ３６より出力された格子点データを下位４ビットのデータに基づいて線形補間して出力色データを生成する。ここで、上記小色空間を三角錐とすれば、格子点数は４となり、補間回路３８における補間演算は４項積和演算となる。
【００５２】
同様に、下位ビット用色変換３Ｄ−ＬＵＴ３７は入力ＲＧＢデータ（γ補正されたＲＧＢデータ１６ビットのうちの下位８ビット）のうちの上位４ビットより該当する小色空間の格子点の下位ビットを出力するＬＵＴで、例えば４０９６エントリ８ビット出力構成の場合、ＲＧＢデータの各上位４ビットの入力から該当する格子点の下位８ビットを出力する。一方、ＲＧＢデータ残りの下位４ビットは補間回路３９に入力される。補間回路３９は、３Ｄ−ＬＵＴ３７より出力された格子点データをＲＧＢデータ残りの下位４ビットに基づいて線形補間して出力色データを生成する。
【００５３】
ところで、ＲＧＢデータの各上位４ビットの入力から該当する格子点データを出力する場合、スケーリングなしで格子点データの割当を行うと、ＲＧＢ各座標軸は１６区間に分割されるので必要な格子点数は各軸１６＋１＝１７個となる。つまり、各軸の分割数をＮとすると、(Ｎ＋１)3個の格子点が必要になる。上記例では１７×１７×１７＝４９１３となり、容量が半端となるだけでなく、アクセスも複雑になる。そこで、上述したように、予め入力γ変換時に１５／１６倍にスケーリングしておくことにより、格子点数を１６×１６×１６＝４０９６個に削減する。なお、線形補間後のデータを元のスケールに戻すため１６／１５倍のスケーリングが必要になるが、３Ｄ−ＬＵＴに格納する格子点データを予め１６／１５倍して格納しておくことにより、上記元のスケールに戻す操作は不要となる。
【００５４】
上位の補間データ及び下位の補間データは加算器４０にて小数点の位置を合わせて加算され、１６ビットの色変換データが得られる。このとき、小数点以下は丸められ、入力範囲を超える値は最大値（または最小値）にリミットされる。
【００５５】
一方、入力誤差データアドレス生成回路３１は、誤差データ入力バッファ３２に所定以上の空きがある場合、アービタ５へリクエストを出すと同時にデータの処理順序に合わせてＤＲＡＭ７のアドレスを生成する。ＤＲＡＭ７より読み出された誤差データは誤差データ入力バッファ３２に格納される。そして、誤差データの上位ビットは誤差拡散回路４１に、誤差データの下位ビットは誤差拡散回路４２に各々入力される。誤差拡散回路４２は上記補間データの下位ビット及び誤差拡散における量子化誤差の下位ビットより入力データに加算する補正値の下位ビットを生成し、誤差拡散回路４１に入力する。誤差拡散回路４１は上記補間データの上位ビット及び誤差拡散における量子化誤差の上位ビットより入力データに加算する補正値の上位ビットを生成し、誤差拡散回路４２より入力される補正値の下位ビットと合わせて入力画像データに加算する。
【００５６】
補正値が加算された入力画像データは量子化され、量子化誤差が出力バッファ４６に、量子化コード（２値の場合は１ビットデータ）が出力バッファ４３に入力される。出力バッファ４３に所定数のデータが蓄積されるとアドレス生成回路４４はアービタ５へリクエストを出すと同時にＤＲＡＭ７への書込みアドレスを生成し出力する。一方、出力バッファ４６に所定数の誤差データが蓄積されるとアドレス生成回路４５はアービタ５へリクエストを出すと同時にＤＲＡＭ７への書込みアドレスを生成し出力する。なお、説明を容易にするため、量子化誤差は上位・下位で分離して格納する構成となっているが、上位・下位で分離せず同一アドレスに格納するようにしても良い。
【００５７】
なお、ＹＭＣ等の各色毎に上記処理を繰り返す場合、３Ｄ−ＬＵＴ３６，３７のテーブルをＹ用、Ｍ用、Ｃ用に切り替える必要がある。本実施形態では、コンフィグレーションレジスタ１０１におけるパラメータ設定により、３Ｄ−ＬＵＴ３６，３７が参照するテーブルを切り替えるものとする。
【００５８】
本構成では、内部演算精度及び高速処理に重点を置いており、パイプライン処理により内部演算精度１６ビットで１クロックサイクルに１画像データを処理できる。
【００５９】
［第２の処理モード（高速性重視）］ 
図９は、本実施形態に係わる画像処理モジュール４の第２の処理モードを説明するためのブロック図である。図９において、４７は色変換部、４８は出力γ変換部、４９は中間調処理部、５０は出力部である。図９において図７と同一の機能ブロックには同一の番号を付し、説明を省略する。
【００６０】
このモジュールでは、ＲＧＢ点順次データよりＣＭＹＫ面（バンド）順次のビットマップ生成を２色同時に行う。
【００６１】
入力部２３より読み出されたＲＧＢ点順次データは、入力γ変換部２４にて濃度リニアな信号に変換される。濃度リニアな信号に変換された印刷データは、色変換部２５、４７にて各々異なる色材の濃度データ（出力デバイスカラー）に変換される。つづいて、出力γ変換２６、４８にて各色材データが出力γ補正され、中間調処理部２７、４９にてビットマップデータ（ドットバターン）に変換され、出力部５０より各々色材データのバッファ領域（バンドバッファ）に出力される。同様に、量子化誤差データも各々色材データのバッファ領域（ラインバッファ）に出力される。
【００６２】
図１０は、図９の機能ブロック図を実現するためのサブモジュールの接続関係を示すブロック図である。図１０において図８と同一のサブモジュールには同一の番号を付してある。以下、図８と異なる部分についてのみ説明する。
【００６３】
色変換用３Ｄ−ＬＵＴ３６、３７には異なる出力色に対応する格子点データが格納されており、各々補間回路３８、３９にて線形補間されて、誤差拡散回路４１、４２に入力される。誤差拡散回路４１、４２にて擬似階調化されたデータは出力バッファ４３にて分離して格納される。３Ｄ−ＬＵＴ３６および３７には、それぞれＬＵＴ３３〜３５から出力された入力γ変換後の１６ビットデータのうちの上位８ビットが入力される。３Ｄ−ＬＵＴ３６，３７は入力された８ビットデータのうちの上位４ビットを用いて格子点データを取得し、これを残りの下位４ビットデータとともに補間回路３８，３９へ供給する。補間回路３８，３９は、格子点データを下位４ビットデータに基づいて補間する。また、誤差拡散回路４１，４２は、各色毎に誤差拡散処理を施す。
【００６４】
出力バッファ４３に所定数のデータが蓄積されるとアドレス生成回路４４はアービタ５へリクエストを出すと同時にＤＲＡＭ７への書込みアドレスを生成し出力する。このとき、２つのバンドバッファのアドレスを生成するため、アドレス差分値を１つ追加し、所定バイト数毎に上記アドレス差分値を選択することで上記２つのバンドバッファにデータを格納する。一方、出力バッファ４６に所定数の誤差データが蓄積されるとアドレス生成回路４５はアービタ５へリクエストを出すと同時にＤＲＡＭ７への書込みアドレスを生成し出力する。なお、説明を容易にするため、量子化誤差は各色分離して格納する構成となっているが、分離せずに同一アドレスに格納するようにしても良い。この場合は、上記アドレス生成回路４５はアドレス差分値を追加する必要はない。また、出力バッファ４６で分離して格納する必要もない。
【００６５】
この処理モードでは２色を同時に処理するので約２倍の処理速度が得られるが、１色当りの格子点データのビット数が半分になってしまう。従って、高精度な色変換を要求されるものには向いていないが、高速性を要求される用途には有効である。
【００６６】
［第３の処理モード］ 
図１１は、本実施形態に係わる画像処理モジュール４の第３の処理モードを説明するためのブロック図である。図１１において図９と同一の機能ブロックには同一の番号を付し、説明を省略する。
【００６７】
このモジュールでは、ＲＧＢ点順次データよりＣＭＹＫ面（バンド）順次のビットマップ生成を２色同時に行う点は第２の処理モードと同じであるが、入力画像データとして拡張色空間データに対応する。このため、内部演算精度をあげている。具体的には、入力γ変換の入力精度をあげるため、補間演算を導入し、出力γ変換を色変換部より分離して処理する構成となっている。図９との違いは色変換部と出力γ変換部の一括処理を示す破線がないだけであるので、その説明は省略する。
【００６８】
図１２は、図１１の機能ブロック図を実現するためのサブモジュールの接続関係を示すブロック図である。図８において、５１及び５２はセレクタである。図１２において図１０と同一のサブモジュールには同一の番号を付してある。以下、図１０と異なる部分についてのみ説明する。
【００６９】
入力γ変換ＬＵＴ３３は入力γ補正のためのテーブルで、例えば２５６エントリ１６ビット出力構成の場合、入力画像データの上位８ビットが入力され、γ補正されたデータが１６ビットで出力される。ここで、入力画像データとして８ビットを超えるデータ（例えば１６ビットデータ）が入力された場合は、入力画像データの上位８ビットより２つの代表値をＬＵＴ３３より読出し、補間回路３８において残りの下位ビットに基づいて上記２つの代表値を補間して１６ビットの入力γ補正データを得る。なお、ここでは０は０に変換されるものとして、代表値の格納を省略する。よって、０以外の全ての代表値がＬＵＴ３３に格納される。なお、前述したように、ここではスケーリングを行うので、最大値を省略する代表値とする場合は、スケーリング後の最大値に置き換える必要がある。また、ここでは補間回路３８、３９を上記代表値の補間演算に用いている。従って、上記ＬＵＴ３３の出力はセレクタ５１、５２を経て補間回路３８、３９に入力される。補間回路３８、３９では１次補間（２項積和演算）により補間データを生成し、各々色変換３Ｄ−ＬＵＴ３６、３７に入力する。
【００７０】
なお、補間回路３８，３９は、ＬＵＴ３６からの出力を補間する場合には２項積和演算を行い、３Ｄ−ＬＵＴ３６からの出力を補間する場合には４項積和演算を行う用に動作を切り替える。
【００７１】
ＲＧＢ３色の入力γ変換後のデータが入力されると、色変換３Ｄ−ＬＵＴ３６、３７は各々対応する格子点データをセレクタ５１、５２を経て補間回路３８、３９に入力する。補間回路３８、３９は線形補間（４項積和演算）により各出力色データを生成し、各々出力γ変換ＬＵＴ３４、３５にて出力γ補正した後、誤差拡散回路４１、４２に入力する。
【００７２】
なお、ここでは（色変換３Ｄ−ＬＵＴの出力ビット数）≦（出力γ変換ＬＵＴの入力ビット数）であるため、出力γ変換ＬＵＴ３４、３５の出力を直接誤差拡散回路４１、４２に入力しているが、出力γ変換の精度が要求される場合は、破線で示したように更に補間回路３８，３９にて線形補間したデータを誤差拡散回路４１、４２に入力するようにしても良い（すなわち、経路ａ，ｃのようにＬＵＴ３４，３５の出力をセレクタ５１、５２を経由して補間回路３８、３９へ入力し、補間出力を経路ｂ、ｄに示すように誤差拡散回路４１，４２へ入力する）。この場合は、処理に必要なサイクル数が増加するが、ＤＲＡＭ７のバスの使用効率を考慮すると、サイクル数の増加に対する処理時間の増加は比較的少ない。
【００７３】
本構成では入力γ変換を１つのＬＵＴにて実行しているため、入力γ変換に６サイクルかかってしまう。さらに補間回路を共用しているので、色変換３Ｄ−ＬＵＴの補間に２サイクルかかるとすると、１画素の処理に合計８サイクルかかってしまう。しかし、線形補間（４項積和演算）及び誤差拡散をマルチサイクル処理とすることで２倍のクロックの使用が可能となれば、実質４倍以下（バスのアービトレーションの効率アップが見込めるため）に抑えることが可能である。また、１次補間回路（２項積和演算）をＬＵＴ３３の後段に追加すれば処理時間は３倍以下となる。さらに、ＬＵＴを追加し、同時に２つの代表値を得られるように構成すれば処理時間は１．５倍以下となる。
【００７４】
［第４の処理モード］ 
図１３は、本実施形態に係わる画像処理モジュール４の第４の処理モードを説明するためのブロック図である。図１３において図１１と同一の機能ブロックには同一の番号を付し、説明を省略する。
【００７５】
前述したように、出力デバイスカラーが４色以上では、色変換部を前段（カラーマッチング）と後段（デバイスカラー変換）に分割処理する。これは、３Ｄ−ＬＵＴの生成を容易にすること、無彩色の連続性を向上させること等を目的としている。第４の処理モードでは、上記前段処理モードを実現する。従って、色変換部２５及び４７で変換された色データは、出力部５０より各々の色データのバッファ領域（バンドバッファ）に出力される。
【００７６】
図１４は、図１３の機能ブロック図を実現するためのサブモジュールの接続関係を示すブロック図である。図１４において図１０と同一のサブモジュールには同一の番号を付してある。以下、図１０と異なる部分についてのみ説明する。
【００７７】
第４の処理モードでは色変換（前段）処理までを行い、誤差拡散処理は行わない。従って、入力誤差データアドレス生成回路３１、誤差データ入力バッファ３２、加算器４０、誤差拡散回路４１及び４２、出力誤差データアドレス生成回路４５、誤差データ出力バッファ４６は休止状態となっている。
【００７８】
入力γ変換ＬＵＴ３３、３４、３５は入力γ補正のためのテーブルで、例えば２５６エントリ１６ビット出力構成の場合、入力画像データの上位８ビットが入力され、γ補正されたデータが１６ビットで出力される。ここで、入力画像データとして８ビットを超えるデータ（例えば１６ビットデータ）が入力された場合は、入力画像データの上位８ビットより２つの代表値を上記ＬＵＴより読出し、残りの下位８ビットに基づいて上記２つの代表値を補間して１６ビットの入力γ補正データを得る。なお、ここでは０入力は０に変換されるものとして、代表値の格納を省略する。よって、０以外の全ての代表値がＬＵＴ３３、３４、３５に格納される。前述したように、ここではスケーリングを行うので、最大値を省略する代表値に設定する場合は、スケーリング後の最大値に置き換える必要がある。また、入力画像データが８ビットを超える場合について、本実施形態では補間回路３８、３９を上記代表値の補間演算に用いている。従って、上記ＬＵＴ３３、３４の出力はセレクタ５１を経て補間回路３８に入力され、上記ＬＵＴ３５の出力はセレクタ５２を経て補間回路３９に入力される。補間回路３８、３９では１次補間（２項積和演算）により補間データを生成し、各々色変換３Ｄ−ＬＵＴ３６、３７に入力する。なお、補間回路３８では４項積和演算を２つ２項積和演算に分解することにより、２色同時に補間処理を行う。
【００７９】
ＲＧＢ３色の入力γ変換後のデータが入力されると、色変換３Ｄ−ＬＵＴ３６、３７は各々対応する格子点データをセレクタ５１、５２を経て補間回路３８、３９に入力する。補間回路３８、３９は線形補間（４項積和演算）によりカラーマッチングされた各色データを生成し、出力バッファ４３に格納する。この時、３２ビットにパッキングする方法として下記の３つのモードのいずれかを設定する。
【００８０】
バッファ節約モードでは、各色８ビットに丸めた後、４画素を３２ビットにパッキングして格納する。
【００８１】
高精度モードでは、各色３画素を３２ビットにパッキングして格納する。３画素へのビット割当は１１、１１、１０のシーケンスとなるが、ＲＧＢの３色間で１０ビットの画素が一致しないようにシーケンスの位相をずらす。例えば、Ｒのデータは１１・１１・１０（位相０）の順序で、Ｇのデータは１１・１０・１１（位相１）の順序、Ｂのデータは１０・１１・１１（位相２）の順序でパッキングする。また、パッキングの際は各画素のＭＳＢの位置を一致させることにより、データの切出し部を簡略化するだけでなく、上記位相のミスマッチ（パッカとアンパッカとの１０ビットデータの位置のミスマッチ）が生じても破綻しないようにする。具体的には位相０〜２のいずれの場合もＭＳＢの位置はビット３１、ビット２０、ビット９とし、ビット９〜０に格納するデータが１１ビットの場合（位相１または２）は、ＬＳＢを１０ビットデータのＬＢＳ側に結合してパックする。即ち、ＭＳＢから１０ビットは上記位相にかかわらず常に同じ位置になる。なお、１０ビットデータの１１ビット目（ＬＳＢ）は、(1)前値補間（直前の画素のＬＳＢを使用）、(2)相関の強い画素で補間（隣接する画素の内、差分の小さい方の画素のＬＳＢを使用）等により生成し１１ビット化する。
【００８２】
倍精度モードでは、各色１６ビットに丸めた後、２画素で３２ビットにパッキングして格納する。
【００８３】
いずれのモードにおいても、ライン終端（画像の右端）のデータの処理が終了したら、３２ビットに満たない場合は残りに０をパックして出力バッファ４３に格納する。そして、バッファの占有状態にかかわらず、バッファに格納されているデータを全てＤＲＡＭ７へ書出す（フラッシィング）。この操作により、出力バッファ４３に最終データが残ってしまう現象を回避し、かつ、ライン単位のアクセスを容易にする。特に、ライン毎に処理方向（スキャン方向）を変更する場合に有効である。
【００８４】
なお、このモジュールではＲＧＢ点順次データよりＲＧＢ面（バンド）順次データの内の２色を同時に生成しているが、出力色空間がＲＧＢの３色の場合は、ＲＢの２色処理を同時に行い、その後、Ｇのみの１色処理を行う。１色処理のときは色変換部３７を高精度化に用いるようにしてもよい。即ち、３Ｄ−ＬＵＴ３７に格子点データの下位ビットを格納し、補間回路３９の出力を加算器４０にて合成した後、所定ビットに丸めて出力バッファを経てＤＲＡＭ７へ格納する。視感度の高いＧ信号を高精度処理することにより、効率的に画像品位を向上させることができる。
【００８５】
［第５の処理モード］ 
図１５は、本実施形態に係わる画像処理モジュール４の第５の処理モードを説明するためのブロック図である。図１５において、図１１と同一の機能ブロックには同一の番号を付し、説明を省略する。
【００８６】
第５の処理モードでは、色変換部を前段（カラーマッチング）と後段（デバイスカラー変換）に分割処理する際の後段処理モードを実現する。従って、上記第４の処理モードによる前段処理後のデータを入力部２３より読み出す。読み出されたデータは色変換部２５，４７にて各々異なる色材データ（デバイスカラー）に変換される。つづいて、出力γ変換２６、４８にて各色材データが出力γ補正され、中間調処理部２７、４９にてビットマップデータ（ドットバターン）に変換され、出力部５０より各々色材データのバッファ領域（バンドバッファ）に出力される。同様に、量子化誤差データも各々色材データのバッファ領域（ラインバッファ）に出力される。
【００８７】
図１６は、図１５の機能ブロック図を実現するためのサブモジュールの接続関係を示すブロック図である。図１６において、図１２と同一のサブモジュールには同一の番号を付してある。以下、図１２と異なる部分についてのみ説明する。
【００８８】
本処理モードでは色変換（後段）処理以降を行う。従って、ＬＵＴ３３、加算器４０は休止状態となっている。また、前段処理後のデータを入力するので、入力データ形式はＲＧＢ面（バンド）順次データとなる。
【００８９】
入力画像データアドレス生成回路３０は、画像データ入力バッファ２９に所定以上の空きがある場合、アービタ５へリクエストを出すと同時にデータの処理順序に合わせてＤＲＡＭ７のアドレスを生成し出力する。この時、面（バンド）順次データを点順次データに変換するため、図６に示すようなアドレス生成を行う（アドレス差分Ｄ１を各バッファ間のアドレス差分に設定する）。ＤＲＡＭ７より読み出された画像データは画像データ入力バッファ２９に格納され、ＲＧＢの各色データが同時に色変換用３Ｄ−ＬＵＴ３６及び３７に入力される。色変換３Ｄ−ＬＵＴ３６、３７は各々対応する格子点データをセレクタ５１、５２を経て補間回路３８、３９に入力する。補間回路３８、３９は線形補間（４項積和演算）により各出力色データを生成し、各々出力γ変換ＬＵＴ３４、３５にて出力γ補正した後、誤差拡散回路４１、４２に入力する。
【００９０】
なお、ここでは（色変換３Ｄ−ＬＵＴの出力ビット数）≦（出力γ変換ＬＵＴの入力ビット数）であるため、出力γ変換ＬＵＴ３４、３５の出力を直接誤差拡散回路４１、４２に入力しているが、出力γ変換の精度が要求される場合は、破線で示したように補間回路３８，３９にて線形補間したデータを誤差拡散回路４１、４２に入力するようにしても良い。すなわち、ＬＵＴ３４，３５の出力を経路ａ，ｃによりセレクタへ戻し、これを補間回路３８，３９で補間したデータは経路ｂ、ｃにより誤差拡散回路４１，４２へ供給されるようにする。
【００９１】
本第５の処理モードでは、ＲＧＢ面（バンド）順次データよりＣＭＹＫ面（バンド）順次のビットマップ生成を２色同時に行う。例えば、出力色がＣＭＹＫの４色の場合は、ＣＭの２色処理を行った後、ＹＫの２色処理を行う。この時、誤差拡散回路４１、４２を連携動作させることにより、２色間のドットの分散性を向上させることが可能である。
【００９２】
なお、出力色が奇数の場合は、１色のみの処理が発生する。この場合は、後述するように色変換部４７を高精度化（１６ビット処理）に用いるようにしても良い。
【００９３】
図１７は、１色処理（高精度モード）のときのサブモジュールの接続関係を示すブロック図である。図中、図１６と同一のサブモジュールには同一の番号を付してある。以下、図１６と異なる部分についてのみ説明する。
【００９４】
色変換３Ｄ−ＬＵＴ３６は入力ＲＧＢデータの上位ビットより該当する小色空間の格子点の上位ビットを出力し、色変換３Ｄ−ＬＵＴ３７は入力ＲＧＢデータの上位ビットより該当する小色空間の格子点の下位ビットを出力する。色変換３Ｄ−ＬＵＴ３６の出力である小色空間の格子点の上位ビットはセレクタ５１を経て補間回路３８にて線形補間され、加算器４０に入力される。一方、色変換３Ｄ−ＬＵＴ３７の出力である小色空間の格子点の下位ビットは、補間回路３９にて線形補間され、加算器４０に入力される。加算器４０は上記上位の補間データ及び上記下位の補間データを小数点の位置を合わせて加算する。この時、小数点以下は丸められ、入力範囲を超える値は最大値（または最小値）にリミットされる。
【００９５】
合成された補間データは出力γ変換ＬＵＴ３４、３５に入力される。２つのＬＵＴを用いることで１クロック（サイクル）で前記２つの代表値を生成し、セレクタ５１を経て補間回路３８にて線形補間されて誤差拡散回路４１に入力される。本構成ではマルチサイクルで動作する部分がないので、全サブモジュールをパイプライン動作させることができる。従って、高速かつ高精度な処理が可能である。
【００９６】
以上、説明したように上記実施形態によれば、各種画像処理に必要なハードリソースに着目してサブモジュールを構成し、各サブモジュールの接続関係や処理シーケンス、演算精度等を変更可能とすることで、多様な処理モードに対応できるコンパクトで柔軟な画像処理装置を構成できる。特に、未使用サブモジュールのクロックを停止する、或いは未使用サブモジュールの電源を停止することにより、処理速度や処理精度のみならず、消費電力等のトレードオフも可能となるため、処理内容に応じて最適な構成をとることが可能である。
【００９７】
また、画像入力部を多様なフォーマットに対応できるように構成することで、分割処理（マルチシーケンス処理）が可能となり、上記ハードリソースで処理できない部分を別モジュールやＣＰＵ等のプロセッサで置き換えることも可能である。
【図面の簡単な説明】
【００９８】
【図１】実施形態に係わる画像処理装置の一構成例を示すブロック図である。
【図２】実施形態に係わる画像処理装置のモジュール内部の構成を説明するためのブロック図である。
【図３】サブモジュール間Ｉ／Ｆの動作を示すタイミングチャートである。
【図４】実施形態に係わる画像処理装置の各モジュールにおけるアドレス生成部の具体的な構成を説明するためのブロック図である。
【図５】実施形態に係わるアドレス生成部のパラメータを説明する図である。
【図６】実施形態に係わるアドレス生成部の別のシーケンスを説明する図である。
【図７】実施形態に係わる画像処理モジュール４の第１の処理モードを説明するためのブロック図である。
【図８】第１の処理モードにおけるサブモジュールの接続関係を示すブロック図である。
【図９】実施形態に係わる画像処理モジュール４の第２の処理モードを説明するためのブロック図である。
【図１０】第２の処理モードにおけるサブモジュールの接続関係を示すブロック図である。
【図１１】実施形態に係わる画像処理モジュール４の第３の処理モードを説明するためのブロック図である。
【図１２】第３の処理モードにおけるサブモジュールの接続関係を示すブロック図である。
【図１３】実施形態に係わる画像処理モジュール４の第４の処理モードを説明するためのブロック図である。
【図１４】第４の処理モードにおけるサブモジュールの接続関係を示すブロック図である。
【図１５】実施形態に係わる画像処理モジュール４の第５の処理モードを説明するためのブロック図である。
【図１６】第５の処理モードにおけるサブモジュールの接続関係を示すブロック図である。
【図１７】第５の処理モードにおけるサブモジュールの別の接続関係を示すブロック図である。
【図１８】従来の画像処理部を示すブロック図である。
【図１】
2006178546.tif 000003
【図２】
2006178546.tif 000004
【図３】
2006178546.tif 000005
【図４】
2006178546.tif 000006
【図５】
2006178546.tif 000007
【図６】
2006178546.tif 000008
【図７】
2006178546.tif 000009
【図８】
2006178546.tif 000010
【図９】
2006178546.tif 000011
【図１０】
2006178546.tif 000012
【図１１】
2006178546.tif 000013
【図１２】
2006178546.tif 000014
【図１３】
2006178546.tif 000015
【図１４】
2006178546.tif 000016
【図１５】
2006178546.tif 000017
【図１６】
2006178546.tif 000018
【図１７】
2006178546.tif 000019
【図１８】
2006178546.tif 000020