(57)【要約】【課題】  キャッシュを利用して高速化を実現する色変換処理は、圧縮画像データに対しては効果がなかった。【解決手段】  圧縮された画像データ３１６を伸長処理部３２０で伸長する際に、該画像データの処理単位ブロック毎のＤＣ成分３４１に応じて、色変換用のキャッシュデータをマルチスレッド３４４〜３４７で作成し、グローバル領域３４８内に格納しておく。そして、伸長された画像データ３３１を色変換処理部３５１で処理する際に、グローバル領域３４８内のキャッシュデータを参照する。これにより、圧縮画像データに対する高速な色変換処理が実現される。【選択図】  図２
2008141502.tif 000002
【特許請求の範囲】
【請求項１】
圧縮された画像データを伸長する伸長ステップと、
前記画像データの処理単位ブロック毎の周波数成分に基づいて色変換用のキャッシュデータを生成するキャッシュ生成ステップと、
前記伸長された画像データに対して、前記キャッシュデータに基づく色変換処理を行う色変換ステップと、
を有することを特徴とする画像処理方法。
【請求項２】
前記キャッシュ生成ステップにおいては、前記キャッシュデータをマルチスレッドにより生成することを特徴とする請求項１記載の画像処理方法。
【請求項３】
前記キャッシュ生成ステップは、前記伸長ステップの実行中に実行されることを特徴とする請求項１または２記載の画像処理方法。
【請求項４】
前記キャッシュ生成ステップにおいては、前記ブロック毎のＤＣ成分に基づいて前記キャッシュデータを生成することを特徴とする請求項１乃至３のいずれか１項に記載の画像処理方法。
【請求項５】
前記キャッシュ生成ステップにおいては、前記ＤＣ成分が予め定められた値よりも大きいブロックについて、前記キャッシュデータを生成することを特徴とする請求項４記載の画像処理方法。
【請求項６】
前記キャッシュ生成ステップにおいては、前記キャッシュデータをグローバル領域に格納することを特徴とする請求項１乃至５のいずれか１項に記載の画像処理方法。
【請求項７】
画像データに対する色変換処理を行う画像処理方法であって、
前記画像データに対して、複数のブロックサイズによる色変換処理を試験的に実行する試験ステップと、
前記試験ステップにおける試験結果に基づき、色変換処理を最短時間で実行したブロックサイズを特定するブロックサイズ特定ステップと、
該ブロックサイズを示すサイズ情報を、前記画像データに付与するサイズ情報付与ステップと、を有し、
前記画像データに対する色変換処理を、前記サイズ情報で示されるブロックサイズにて行うことを特徴とする画像処理方法。
【請求項８】
前記サイズ情報付与ステップにおいては、前記サイズ情報を前記画像データのタグ部に付与することを特徴とする請求項７記載の画像処理方法。
【請求項９】
色変換処理の対象色について色変換用の補間演算を実行する補間演算ステップと、
前記補間演算ステップにおける演算結果をファイルに格納しておく結果保持ステップと、をさらに有し、
前記画像データに対する色変換処理を、前記ファイルに基づいて行うことを特徴とする請求項７または請求項８に記載の画像処理方法。
【請求項１０】
前記ファイルはルックアップテーブルであることを特徴とする請求項９記載の画像処理方法。
【請求項１１】
前記ルックアップテーブルは、色変換処理を実行するプログラムが起動される際に、該プログラムを実行するＣＰＵによる高速アクセスを可能とする内部メモリにロードされることを特徴とする請求項１０記載の画像処理方法。
【請求項１２】
複数スレッドによる並列処理を可能とするホストコンピュータにおいて画像データに対する色変換処理を行う画像処理方法であって、
スレッド数を可変として前記色変換処理を試験的に実行する試験ステップと、
前記試験ステップにおける試験結果に基づき、色変換処理を最短時間で実行したスレッド数を特定するスレッド数特定ステップと、
該スレッド数を示すスレッド数情報を、前記ホストコンピュータ内のシステムファイルに保持するスレッド数情報保持ステップと、を有し、
前記画像データに対する色変換処理を、前記スレッド数情報で示されるスレッド数による並列処理として行うことを特徴とする画像処理方法。
【請求項１３】
圧縮された画像データを伸長する伸長手段と、
前記画像データの処理単位ブロック毎の周波数成分に基づいて色変換用のキャッシュデータを生成するキャッシュ生成手段と、
前記伸長された画像データに対して、前記キャッシュデータに基づく色変換処理を行う色変換手段と、
を有することを特徴とした画像処理装置。
【請求項１４】
画像データに対して、複数のブロックサイズによる色変換処理を試験的に実行する試験手段と、
前記試験手段による試験結果に基づき、最短時間で色変換処理を実行したブロックサイズを特定するブロックサイズ特定手段と、
該ブロックサイズを示すサイズ情報を、前記画像データに付与するサイズ情報付与手段と、
前記画像データに対して、前記サイズ情報で示されるブロックサイズによる色変換処理を行う色変換手段と、
を有することを特徴とする画像処理装置。
【請求項１５】
さらに、
色変換対象となる全ての色について色変換用の補間演算を実行する補間演算手段と、
前記補間演算手段による演算結果をファイルに格納しておく結果保持手段と、を有し、
前記色変換手段は、前記画像データに対して前記ファイルに基づく色変換処理を行うことを特徴とする請求項１４記載の画像処理装置。
【請求項１６】
複数スレッドによる並列処理を可能とするホストコンピュータにおいて画像データに対する色変換処理を行う画像処理システムであって、
スレッド数を可変として前記色変換処理を試験的に実行する試験手段と、
前記試験ステップにおける試験結果として、色変換処理を最短時間で実行可能なスレッド数を特定するスレッド数特定手段と、
該スレッド数を示すスレッド数情報を、前記ホストコンピュータ内のシステムファイルに保持するスレッド数情報保持手段と、を有し、
前記画像データに対する色変換処理を、前記スレッド数情報で示されるスレッド数による並列処理として、請求項１乃至１２のいずれか１項に記載の画像処理方法によって行うことを特徴とする画像処理システム。
【請求項１７】
コンピュータ上で実行されることによって、該コンピュータに請求項１乃至１２のいずれか１項に記載の画像処理方法を実行させることを特徴とするプログラム。
【請求項１８】
請求項１７記載のプログラムを記録したことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像処理方法および画像処理装置、およびそのシステムに関し、特に、画像データに対するカラーマッチングを行う画像処理方法および画像処理装置、およびそのシステムに関する。
【背景技術】
【０００２】
画像を周波数領域に写像し、各周波数成分に適合する量子化および符号化を施して効率的な画像圧縮を実現する方法が数多く提案されている。中でも、離散コサイン変換（ＤＣＴ）およびハフマン符号を組み合わせた画像適合型の画像圧縮方法は、国際規格に採用されるなど幅広く用いられている。これら画像圧縮技術は、近年のカラー画像システムの普及に伴い、高精細（高解像度）のカラー画像の圧縮に利用される場合が多い。
【０００３】
一般にカラー画像システムとして、特にカラーインクジェットプリンタによるカラープリンティングシステムが普及している。このようなカラー画像システムにおいては、高精細なカラー画像を圧縮してディスク装置（ファイルシステム）へ保存し、この圧縮データを必要に応じて展開し、カラー印刷を行うことが頻繁に行われている。
【０００４】
ここで、画像圧縮技術を利用した一般的な画像処理システムの一例について、図１１を用いて以下に概説する。図１１において、カラー画像データである原画像データ１１１は、圧縮処理部１１０で圧縮される。圧縮処理部１１０において、入力された原画像データ１１１はまずＤＣＴ変換処理部１１２で色成分プレーンごとに８×８ピクセルのブロック単位で周波数データへ変換され、量子化処理部１１３で周波数成分ごとに適宜量子化される。次に、周波数データの直流成分であるＤＣ係数は、ＤＣ係数処理部１１４により前後ブロックとの差分が算出され、周波数データの交流成分であるＡＣ係数は、ＡＣ係数処理部１１５によりエントロピ符号化される。これら符号化されたデータ群により、圧縮データ１１６が構成される。
【０００５】
圧縮処理部１１０より得られた圧縮データ１１６は、伸長処理部１２０において必要に応じて伸長され出力される。伸長処理部１２０ではまず、逆ＡＣ係数処理部１２１によりエントロピ復号を行って量子化ＡＣ係数を求め、逆ＤＣ係数処理部１２２により前後のブロックから注目ブロックのＤＣ係数を求める。このようにして得た量子化データ群から、逆量子化処理部１２３および逆ＤＣＴ変換処理部１２４により、カラー画像データである伸長データ１３１を得る。
【０００６】
得られた伸長データ１３１は、色変換処理部１４１により印刷に適した色空間に写像（カラーマッチング：例えばＲＧＢ→ＹＭＣＫ）される。色変換後の画像データはさらに、解像度変換部１５１により拡大（または縮小）されて印刷解像度に適合され、画像出力信号１６１を形成する。
【０００７】
このような図１１に示した画像処理システムにおいては、伸長データ１３１のデータサイズが大きくなるため、色変換処理部１４１におけるカラーマッチング処理時間が長くなってしまうという課題がある。ここでのカラーマッチング処理を高速に行うために、一旦変換したカラー変換結果を一時的に保持しておく「キャッシング処理」等が提案されている（例えば、特許文献１参照）。
【０００８】
上述したカラープリンティングシステムにおける処理速度は、その処理対象となる画像データのサイズにも大きく左右され、例えば高解像度の写真画像等を処理する場合には、処理速度は低下しがちである。
【０００９】
近年のデジタルカメラの高解像度化は目覚しく、ハイエンドの一眼レフタイプのデジタルカメラであれば、画素数が１０メガピクセルを超えるものも珍しくない。これらハイエンド機は大型ＣＭＯＳセンサを搭載することによって、優れた解像度の画像生成を可能とし、例えば有効画素数が約１６７０万画素（１６メガピクセル）もの画像を生成する機種も登場している。
【００１０】
１６メガピクセルのデジタルカメラで撮影された画像は、４９９２×３３２８ピクセル（１６６１万画素）からなる。一般に、撮影された写真画像データはＲＧＢ画像であるため、これをホストＰＣ上で展開するには、４７．５３ＭＢのメモリが必要となる。
【００１１】
さらに、デジタルカメラで撮影されたＲＧＢ画像を印刷する場合、これをＣＭＹＫ等の色空間に変換する必要がある。そのため、撮影画像を印刷出力するプリンティングシステムにおいては、カラーマネージメントシステム（ＣＭＳ）を搭載することが必須であり、例えばカラーＬＵＴを用いて、出力デバイスの特性に合わせたカラーマッチング処理を行った上で、印刷される。
【００１２】
ここで図１２に、撮影画像を印刷する従来のカラープリンティングシステムの概略構成を示す。同図において、ホストＰＣ１００とプリンタコントローラ２００は、シリアルケーブル、または、ネットワークケーブル等で接続されている。このシステムにおいては、そのコネクティビティ（伝送路）におけるデータ転送用の帯域が狭いため、データサイズを小さくしてプリントジョブを流すように構成している。したがって圧縮画像を印刷する場合、ホストＰＣ１００側では圧縮画像の展開処理は行わず、圧縮したままの状態でプリンタコントローラ２００側にデータを転送する。そしてプリンタコントローラ２００側において、受け取った圧縮画像をＲＩＰマネージャが伸長し、カラーマッチングを行った後に印刷出力する。
【特許文献１】特開2000-113172号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上記従来のカラー画像システムにおいて、カラーマッチング処理の高速化を目的としたキャッシング処理が行われる旨を説明した。しかしながらこのキャッシング処理は、特にベクターグラフィックス等に関しては有効であるが、圧縮されたイメージ画像等を処理する場合においては、特に効果は得られなかった。
【００１４】
また、現在の通信技術の発達に伴い、図１２に示すような構成においてもホストＰＣと周辺装置とのコネクティビティにおける帯域を十分に広くとることも可能となってきている。このようなプリンティング環境においては、必ずしも印刷データの伝送時サイズを小さくする必要は無い。また、ホストＰＣ側での処理速度も飛躍的に向上しているため、ホストＰＣ側で伸長等のデータ処理を行った方が、総合的に処理速度が向上する場合が多いことが考えられる。
【００１５】
例えば、出願人が一般的な高性能ホストＰＣにおいて、４９９２×３３２８ピクセル（約４８ＭＢ）の８ビット画像について、線形８点補間を伴うカラーマッチング処理を実験的に行った場合、約６．５秒で処理が完了するという結果が得られた。
【００１６】
しかしながら、現在の業務用プリンタにおいては、１分間に３０〜６０枚以上の高速印刷を可能とするため、１枚の画像につき２秒〜１秒以内に処理を完了する必要がある。したがって、たとえ図１２に示すようなカラープリンティングシステムにおけるカラーマッチング処理をホストＰＣ側で実現できたとしても、その処理時間が未だ上記程度であれば、このような高速印刷には対応できなかった。
【００１７】
本発明は上述した問題を個々にまたはまとめて解決するためになされたものであり、高速なカラーマッチング処理を実現する画像処理方法および画像処理装置、およびそのシステムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するための一手法として、本発明の画像処理方法は以下の工程を備える。
【００１９】
すなわち、圧縮された画像データを伸長する伸長ステップと、前記画像データの処理単位ブロック毎の周波数成分に基づいて色変換用のキャッシュデータを生成するキャッシュ生成ステップと、前記伸長された画像データに対して、前記キャッシュデータに基づく色変換処理を行う色変換ステップと、を有することを特徴とする。
【００２０】
また、画像データに対する色変換処理を行う画像処理方法であって、前記画像データに対して、複数のブロックサイズによる色変換処理を試験的に実行する試験ステップと、前記試験ステップにおける試験結果に基づき、色変換処理を最短時間で実行したブロックサイズを特定するブロックサイズ特定ステップと、該ブロックサイズを示すサイズ情報を、前記画像データに付与するサイズ情報付与ステップと、を有し、前記画像データに対する色変換処理を、前記サイズ情報で示されるブロックサイズにて行うことを特徴とする。
【００２１】
さらに、色変換処理の対象色について色変換用の補間演算を実行する補間演算ステップと、前記補間演算ステップにおける演算結果をファイルに格納しておく結果保持ステップと、をさらに有し、前記画像データに対する色変換処理を、前記ファイルに基づいて行うことを特徴とする。
【００２２】
また、複数スレッドによる並列処理を可能とするホストコンピュータにおいて画像データに対する色変換処理を行う画像処理方法であって、スレッド数を可変として前記色変換処理を試験的に実行する試験ステップと、前記試験ステップにおける試験結果に基づき、色変換処理を最短時間で実行したスレッド数を特定するスレッド数特定ステップと、該スレッド数を示すスレッド数情報を、前記ホストコンピュータ内のシステムファイルに保持するスレッド数情報保持ステップと、を有し、前記画像データに対する色変換処理を、前記スレッド数情報で示されるスレッド数による並列処理として行うことを特徴とする。
【発明の効果】
【００２３】
以上の構成により本発明によれば、高速なカラーマッチング処理が実現される。
【発明を実施するための最良の形態】
【００２４】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００２５】
＜第１実施形態＞
まず、本実施形態のプリンティングシステムにおける画像処理の概要について説明する。
【００２６】
図１に、本実施形態のカラープリンタ２０１０における画像形成部の概略構成例を示す。同図において、２２００〜２２３０はカラーインクカートリッジであり、それぞれイエロー（Ｙ）カラーインク，マゼンタ（Ｍ）カラーインク，シアン（Ｃ）カラーインク，ブラック（Ｋ）カラーインクが充填されている。各インクカートリッジ２２００〜２２３０と圧力ポンプ２１６０とは、インクを供給するためのそれぞれ独立したパイプで接続され、圧力ポンプ２１６０からプリントヘッド２１２０までは一定の圧力で各色のインクが圧送されるようになっている。
【００２７】
記録紙は、カラープリンタ２０１０の後面より供給され、プラテン２１１０とフロントガイドローラ２１５０により固定される。また、カラープリンタ２０１０の操作は、コントロールパネル２１８０上のキーを押下することで行われ、コントロールボード２１９０がカラープリンタ２０１０のすべての動作を制御する。
【００２８】
このカラープリンタ２０１０により印刷を行うには、不図示のインタフェースを介してコントロールボード２１９０へ、印刷制御命令および印刷データを送ればよい。印刷制御命令および印刷データを受信したコントロールボード２１９０は、例えば色指定命令にＲＧＢが指定されている場合、その内部の色処理部によりＲＧＢデータをＣＭＹＫデータへ変換した後、プリントヘッド２１２０を駆動して印刷を行う。
【００２９】
本実施形態のプリンティングシステムにおいては、圧縮されたカラーの画像データ（以下、単に圧縮データと称する）は、その伸長処理によって、元のカラー画像データに復元されると同時に周波数成分データが抽出される。圧縮データは複数のデータブロック（通常は矩形の領域)に分割されているので、一枚の画像データに対して、ブロック領域毎に、例えばＤＣ成分だけを抜き出して、その色についてのみ先行してカラーマッチング処理を行うことができる。そして、該カラーマッチング結果を後段処理で再利用するために、一時的に保持（キャッシング）することによって、全体としてのデータ処理速度の向上を可能とする。
【００３０】
図２は、本実施形態のプリンティングシステムにおける画像処理の概要を示す図である。同図において、例えば各色成分が８ビットの原画像データ３１１は、圧縮処理部３１０で圧縮される。圧縮処理部３１０において、入力された原画像データ３１１はまずＤＣＴ変換処理部３１２で各色成分プレーンごとに例えば８×８ピクセルのブロック単位で周波数データに変換される。ここで、原画像を示す関数をi(x,y)、これに対応するＤＣＴ関数をI(u,v)とすると、変換式が以下のように定義される。
I(u,v) = 2c(u)/N・2c(v)/N
・ΣΣi(x,y)・cos{(2x+1)uπ/2N}・cos{(2y+1)vπ/2N} ...(1)
ただし、0≦u，v≦N-1
u,v = 0          のとき、c(u) = c(v) = 1/√2
u,v = 1,2,...,N-1 のとき、c(u) = c(v) = 1
なお、(1)式における一つ目のΣ演算の範囲はx=0〜N、
二つ目のΣ演算の範囲はy=0〜N、である。
【００３１】
そして量子化処理部３１３により、上記変換データは周波数成分毎に量子化される。なお、この量子化には、ビット数のスケーリング等の処理が含まれる。そして、周波数データの直流成分であるＤＣ係数はＤＣ係数処理部３１４により前後ブロックとの差分が算出され、交流成分であるＡＣ係数はＡＣ係数処理部３１５によりエントロピ符号化され、これらのデータ群により圧縮データ３１９が構成される。
【００３２】
圧縮処理部３１０より得られた圧縮データ３１６は、一時的に不図示の記憶装置へ格納され、必要に応じて伸長され出力される。以下に、本実施形態における伸長処理について具体的に説明する。
【００３３】
伸長処理部３２０へ入力された圧縮データ３１６は、まず、逆ＡＣ係数処理部３２１によりエントロピ復号されて量子化ＡＣ係数が求められ、逆ＤＣ係数処理部３２２により前後のブロックから注目ブロックのＤＣ係数が求められる。これら量子化データ群を、逆量子化処理部３２３により逆量子化（および逆スケーリング）する。この際に得られた領域毎の周波数成分を、画像周波数成分（ＤＣＴ係数データ）３４１として不図示の記憶装置に格納するか、または一時的にメモリへ出力する。
【００３４】
画像周波数成分（ＤＣＴ係数データ）３４１は、候補色選択部３４２において、該ブロックのＤＣ成分を構成する色がキャッシング処理をすべき色か否かについて、判断される。具体的には、候補色選択部３４２において画像周波数成分３４１を調べ、低周波成分が予め設定された閾値より大きい場合にのみ、キャシュスレッドを起動するように構成している。ここでキャッシュスレッドとは、カラーマッチング処理を行うことであり、該カラーマッチング結果は後段処理で再利用可能となるように、一時的にグローバル領域（キャッシュテーブル）３４８へ保持される。
【００３５】
３４３は、キャッシュスレッドを起動するキャッシュスレッド起動部である。本実施形態では、最大で４つまでの色変換スレッド処理３４４〜３４７を起動できる。各スレッドへのエントリーは待ち行列キューを経由するため、４つの全スレッドが起動済みの場合は適宜キューに入り、いずれかの処理が空くまで待機する。上述したようにこれらスレッド処理としてカラーマッチング処理（例えば、ｓＲＧＢ→プリンタＣＭＹＫ）が行わた結果は、グローバル領域３４８へ格納される。
【００３６】
ここで図３に、本実施形態において処理される画像データの構成例を示す。同図に示されるように本実施形態における画像データは、８×８ピクセルの矩形領域すなわちブロックで構成されている。本実施形態によれば、画像データのブロックごとに、その周波数成分（ＤＣＴ係数データ）３４１を候補色選択部３４２において判定し、キャッシュ処理すべき色であれば、キャッシュスレッド起動部３４３でマルチキャッシュスレッドを起動する。
【００３７】
このように本実施形態によれば、複数ブロック（Block0〜n）で構成される１枚の画像データについて、マルチスレッドによるキャッシュ処理が行われるため、キャシュデータを高速に作成することが可能である。
【００３８】
図２の説明に戻り、上述した逆量子化処理部３２３により得られた周波数データ群は、続いて、逆ＤＣT変換処理部３２４により空間領域へ写像される。この処理は各ブロック単位で独立して実行することができるために、複数のスレッドを起動して、同時並行で処理を進めるよう構成する。上述した一連の処理により、カラー画像データである伸長データ３３１が得られる。
【００３９】
このようにして得られた伸長データ３３１は、色変換処理部３５１により、デバイス色空間へ変換される。本実施形態ではこの色変換処理の際に、グローバル領域３４８に格納されたキャッシュデータを適宜参照しながらカラーマッチング処理を行うことにより、処理速度の向上が望める。
【００４０】
上述した色変換処理部３５１における色変換後には、解像度変換処理部３６１により、例えば印刷解像度に適合するように拡大（または縮小）処理が施され、出力画像データ３７１が得られる。
【００４１】
なお、本実施形態において画像ブロックは矩形に限定されない。例えば画像ブロックが略六角形で構成されていても、それぞれのブロックが不規則な大きさ・形状を有していても、隣接するブロック間にオーバラップがあってもよい。
【００４２】
また、色変換処理部３５１における色変換処理の方法については、画像の周波数成分に応じて高画質画像を形成することができるものであれば、特に限定されない。
【００４３】
さらに、符号化された画像データを伸長する伸長処理部３２０においては、必ずしも原画像の再生を伴う必要はなく、単に、符号化されたデータから必要な情報だけを取得する等、必要最小限の処理を行うように構成してもよい。例えば、画像データを再生せずに中間符号に復号してもよい。すなわち、本実施形態における伸長処理部３２０は、原画像の生成を部分的または一時的に行うものであっても良い。
【００４４】
以上説明したように本実施形態によれば、圧縮された画像データを伸長して出力する際に、キャッシュデータがマルチスレッドにより効率的に生成されるため、これを参照した色変換処理を行うことによって、カラーマッチング処理全体の処理時間が短縮される。
【００４５】
＜第２実施形態＞
以下、本発明に係る第２実施形態について説明する。第２実施形態では、ハイエンドなデジタルカメラで撮影された高解像度画像を印刷出力するプリンティングシステムにおける、カラーマッチングの高速化を実現する。
【００４６】
図４は、第２実施形態におけるプリンティングシステムの概略構成を示す図である。本システムでは、ホストＰＣ１００からプリンタコントローラ２００へのデータ転送のコネクティビティ（伝送路）が細い場合、例えば、ホスト−プリンタ間の接続がリモートネットワーク等で接続され、高帯域な伝送路の確保が困難な場合を想定している。
【００４７】
図４に示すシステムにおけるカラーマッチング処理は、プリンタコントローラ２００内部のＣＰＵを用いたソフトウェア処理によって実現される。プリンタコントローラ２００内部で利用されるＣＰＵはシングルスレッドでしか動作しないが、データのロード時間を短縮して高速化処理を実現するためのキャッシュを搭載している。
【００４８】
図５は、第２実施形態のプリンタコントローラ２００内のＣＰＵに内蔵されているキャッシュの概略を示す図である。同図に示すＣＰＵ２２０は、その内部にキャッシュメモリとして高速なＳＲＡＭ２２２を備えている。キャッシュに対する内部ラインの選択方法としては、フルアソシアティブ、ダイレクトマップ、４ウェイセットアソシアティブなどの方式等、高速化のための工夫が多数、提案されている。
【００４９】
また、外部メモリであるメインメモリ２３１はＤＤＲ等の大容量メモリであり、第２実施形態におけるカラー画像処理を実現するために、約８０ＭＢ以上の領域が割り当てられる。
【００５０】
以下、第２実施形態におけるカラーマッチング処理の高速化について詳細に説明する。第２実施形態においては、ＣＰＵ２２０でソフトウェアプログラム（以下、単にプログラムと称する）を実行することによってカラーマッチング処理を実現するが、この実行速度を向上させるために、以下の（１），（２）に示す制御を行うことを特徴とする。
【００５１】
（１）カラーマッチングに伴う補間演算にかかる処理時間を削減するために、該演算を予め行って演算結果をＬＵＴ（ルックアップテーブル）として、メインメモリ２３１に格納しておく。
【００５２】
このＬＵＴは、ｓＲＧＢとプリンタＣＭＹＫ値をダイレクトに対応させたものであり、カラーマッチング処理がスタートする内部メモリであるＤＲＡＭ２２４にロードされる。なお、該ＬＵＴが全ての演算結果を備えるためには、８ビットで表現可能な２５６色の３乗の個数の色ｘ４色分、すなわち６４ＭＢの記憶領域が必要となる。ＬＵＴの容量が大きくて、ＤＲＡＭ２２４にＬＵＴ全体が格納できない場合には、ＬＵＴのうちカラーマッチング処理で使用する部分が適応的にロードされる。
【００５３】
（２）キャッシュが有効に利くように、画像をブロック化する。この際に有効なブロックサイズは、ホストＰＣ側で先行して調査しておく。
【００５４】
上記（１），（２）に示す制御について、さらに詳細に説明する。
【００５５】
まず、（１）のＬＵＴを用いた補間演算時間の削減について説明する。カラーマッチングに伴う補間演算を実行するような通常のプログラムについて、パフォーマンスアナライザ等で実行時間を解析すると、補間演算に必要な乗減算のオペレーションにかなりのクロック数を消費していることが分かる。これは、補間演算の計算式について、その処理順を切り換えても同様である。そこで第２実施形態においては、補間演算の基本的な計算式はそのままとし、予め作成したＬＵＴを利用することによって処理時間の削減を図っている。
【００５６】
すなわち、ジョブが投入されてからカラーマッチングに伴う補間演算を開始するのではなく、入力色空間色における全ての色について、予め該補間演算を行っておいて、該演算結果をプリンタコントローラ２００内のＬＵＴファイル等に格納しておく。なお、このＬＵＴファイルの作成は必ずしもプリンタコントローラ２００にて行う必要はなく、作成されたＬＵＴがプリンタコントローラ２００内で高速アクセスを可能な場所に保持されるのであれば、例えばホストＰＣ１００側にて作成しても良い。ここで該ＬＵＴのサイズとしては、入力色空間色がＲＧＢ８ビットである場合は、全１６６７万色分で合計６４ＭＢとなる。
【００５７】
そして、カラーマッチング時に、該ＬＵＴファイルを内部メモリ（ＤＲＡＭ２２４）にロードし、投入されたジョブを処理すべく、該メモリへのアクセスを行って該ＬＵＴを利用することにより、カラーマッチング値を高速行なう。
【００５８】
第２実施形態では、上記（１）の補間演算ＬＵＴの利用に加えて、さらに（２）のキャッシュを有効に利かせること、すなわちキャッシュヒット率を向上させることにより、さらなる高速化を実現する。
【００５９】
以下、（２）のブロック化によるキャッシュヒット率の向上について説明する。第２実施形態では、以下に示すようにＣＭＳにおけるループ単位を切り替えることによって、キャッシュのヒット率向上を実現する。
【００６０】
一般に、画像内における画素値の分布について、その特徴を捉えることは困難であると考えられている。しかしながら、画像内のブロックという局所領域については、その構成画素の類似性がある程度（確率的に）強く、それはキャッシュを有効活用して処理の高速化を実現させるに十分である。さらに、ＣＭＳのループ単位となるブロックサイズを適切に設定することにより、ＣＰＵ内部におけるデータキャッシュのヒット率を向上させることができる。ここで、キャッシュヒット率を向上させるために最適なブロックサイズは画像によって異なるため、実際に有効なブロックサイズは、原画像ごとに検査する必要がある。
【００６１】
そこで第２実施形態では、図４のブロックサイズ検査部１３０において例えば、ブロック１６×１６，３２×３２，６４×６４，１２８×１２８、という４種類のブロックサイズについて、ホストＰＣ１００側でそれぞれの処理速度を検査する。もちろん、ここで検査対象となるブロックサイズはこの４種類に限定されるものではなく、例えば８×８を含めた５種類としても良い。そして、該検査により得られた最適なブロックサイズを、処理対象となる画像ファイルのタグ部に貼り付ける。図４の１４０に、タグとして最適ブロックサイズ情報１４０１が貼り付けられた画像ファイル例を示す。
【００６２】
ここで、図６に示すフローチャートを用いて、ブロックサイズ検査部１３０における検査手順について説明する。
【００６３】
ホストＰＣ１００においてカラーマッチングを実行するためのプログラムが起動されると、まずステップＳ３１０において、カラーマッチングの初期化処理として、上述した（１）に示したように作成されたＬＵＴがメモリにロードされる。このＬＵＴのサイズは上述したように、２５６色の３乗の個数の色ｘ４色分である６４ＭＢであるから、このロードのためにメモリ領域（スタティック領域）を確保する必要がある。またこのとき、処理対象となる画像データについてもメモリにロードする。
【００６４】
そしてステップＳ３２０において、該メモリ領域が確保されてＬＵＴおよび画像データのロードが成功すると、次にステップＳ３３０において、第２実施形態におけるブロックテスト処理（詳細は後述する）を実行する。このブロックテスト処理により、上述したように最適なブロックサイズが画像のタグ部に書き込まれる。その後、ステップＳ３４０で該ブロックサイズに基づくＣＭＭ初期化処理を行い、高速なカラーマッチング処理に備える。
【００６５】
以下、ステップＳ３３０におけるブロックテスト処理について詳細に説明する。まずステップＳ３３１でにおいて、処理対象画像データが既にブロックテスト済みであるか否かを判断し、ブロックテスト未実施の場合はステップＳ３３２のブロックテスト初期化処理に進み、テスト済みであればそのまま処理を終了する。
【００６６】
ステップＳ３３２のブロックテスト初期化処理においては、検査するブロックの種類、およびそれぞれのブロックサイズを決定しておく。ここでは４種類のブロック検査を行うため、それぞれをＡ，Ｂ，Ｃ，Ｄに分類して該当するブロックサイズをセットする。この場合すなわち、Ａ＝１６×１６、Ｂ＝３２×３２、Ｃ＝６４×６４、Ｄ＝１２８×１２８としてセットされる。
【００６７】
そして、それぞれのブロックサイズによるテストを順次行う。まず、ステップＳ３３３でブロックテストＡとして、ブロックサイズを１６×１６に設定した状態でカラーマッチング処理を行い、処理にかかった時間を計測して記録する。その後に順次、ステップＳ３３４でブロックテストＢ、ステップＳ３３５でブロックテストＣ、ステップＳ３３６でブロックテストＤを行う。全てのブロックテストを行った後、ステップＳ３３７でテスト結果を集計し、最も高速な処理を可能とするブロックサイズを決定して、該ブロックサイズを画像のタグ部に書き込む。
【００６８】
なお、図６に示したブロックサイズ検査処理は、イメージ画像を扱うアプリケーションソフトウェアとして実行しても良いし、デジタルカメラ等における内部処理として実行されても良い。いずれにせよ、上述したようなブロックテストの結果が、予め画像データにタグ情報としてに埋め込まれるように構成すれば良い。
【００６９】
以上のようにブロックテスト結果がタグ情報として付加されたＪＰＥＧ等の画像データがプリンタコントローラ２００に入力されると、レンダリング部にて画像が展開される。このとき、ＪＰＥＧが展開された後にＣＭＳ処理が行われるが、該ＣＭＳ処理の際に上述したブロックサイズの情報に基づいて、ループの方法、すなわち処理単位ブロックのサイズが切り替えられる。
【００７０】
ここで、第２実施形態によるＣＭＳ処理の高速化についての具体例を示す。４９９２×３３２８画素からなる画像（約４８ＭＢ）について、図１２で示した従来のカラープリンティングシステムにおけるＣＭＳ処理と、図４で示した第２実施形態のプリンティングシステムにおけるＣＭＳ処理との処理時間を比較する。その結果、第２実施形態によれば、まず上記（１）に示した画像データのＬＵＴを用いたメモリ展開を行うことによって、約８倍（６．５６秒→０．８２５秒）の高速化が達成された。そしてさらに、上記（２）に示したブロックサイズ制御を行うことによって、さらに約１．２５倍（０．８２５秒→０．６６０秒）の高速化が達成された。すなわち、ＣＭＳ処理において上記（１），（２）の制御を行うことによって、全体としての処理時間は６．５６秒→０．６６０秒に短縮され、約１０倍の高速処理が達成されたことになる。
【００７１】
以上説明したように第２実施形態によれば、上記（１）のＬＵＴ処理、および（２）のブロックサイズ制御を行うことによって、ＣＭＳ処理の飛躍的な高速化が実現される。したがって、例えば業務用の高速印刷にも対応することが可能となる。
【００７２】
なお、上記（１）,（２）の処理はそれぞれ単体で実行してもそれなりの高速化が実現されるが、両方を併せて実行することによる相乗的な効果の方が大きい。
【００７３】
また、上述した第１実施形態を、第２実施形態に組み合わせることももちろん可能である。すなわち、第２実施形態における処理対象が圧縮画像データであった場合に、使用するキャッシュデータを第１実施形態で説明したように、周波数成分に応じてマルチスレッドで作成することによって、さらなる処理速度の向上が望める。
【００７４】
また、第２実施形態においてはＣＭＳ処理をプリンタコントローラ２００側にて行う例を示したが、これをホストＰＣ１００側にて実行することも可能であり、同様に処理速度が向上する。
【００７５】
＜第３実施形態＞
以下、本発明に係る第３実施形態について説明する。
【００７６】
上述した第２実施形態のプリンティングシステムにおいては、ホストＰＣ１００からプリンタコントローラ２００へのデータ転送のコネクティビティが細い場合が想定されていたが、第３実施形態では、このコネクティビティが十分に太い場合を想定する。
【００７７】
図７は、第３実施形態におけるプリンティングシステムの概略構成を示す図である。図７においては、太いコネクティビティの利点を活かして、ホストＰＣ１００側において全てのカラーマッチング処理を行い、さらにホストＰＣ１００とプリンタコントローラ２００とで、レンダリング処理を分散して行う構成例を示している。図７に示すホストＰＣ１００は、高速かつ並列に複数のスレッドを同時実行可能なマルチコアを有するＣＰＵと、大容量のメインメモリ（ＤＤＲ，ＸＤＲ等）を搭載している。なお、このＣＰＵがキャッシュも具備していることはもちろんである。
【００７８】
図７においてはすなわち４１０に示すように、処理対象となる印刷ジョブデータ内のオブジェクトとして、以下の３つが例示されている。
【００７９】
・フラットフィルを表すコマンド（Ｃ１）、およびその色値（ｒｇｂ１)
・透過オブジェクトを表すコマンド（Ｃ２）、およびその色値（ｒｇｂ２)
・イメージ画像を表すコマンド（Ｃ３）、およびその色値（ｒｇｂ３)
そして、このジョブデータは４２０に示すように、ホストＰＣ１００側においてＣ１，Ｃ２，Ｃ３の全てに対するＣＭＳ処理を行い、Ｃ２，Ｃ３についてはレンダリングまで行う。ホストＰＣ１００でこのように処理されたジョブデータは、広帯域のコネクティビティによってプリンタコントローラ２００へ伝送され、そこで４３０に示すようにＣ１のみについてレンダリングが行われる。
【００８０】
以下、第３実施形態におけるカラーマッチング処理の高速化について詳細に説明する。第３実施形態においてはホストＰＣ１００内のＣＰＵでプログラムを実行することによってカラーマッチング処理を実現するが、この実行速度を向上させるために、第２実施形態と同様の制御を行う。すなわち、ホストＰＣ１００内のＣＰＵで（１）補間演算結果のＬＵＴ化、および（２）ブロックサイズ制御を行うが、これらの処理については第２実施形態で説明済みであるため、ここでは省略する。そして第３実施形態ではホストＰＣ１００内のＣＰＵにおいてさらに、以下の（３）に示す制御を行うことを特徴とする。
【００８１】
（３）複数スレッドを立ち上げて処理を並列化する。
【００８２】
以下、（３）の制御についてさらに詳細に説明する。
【００８３】
上述したように、本システムを構成するホストＰＣ１００はマルチスレッド処理を実行可能とし、２つのＣＰＵコアが使用でき、スレッドとしては４つを同時に処理することができる。なお、１コアでの２スレッド処理は疑似並行処理である。
【００８４】
一般に、２つのコアを使って４つのスレッドを実行する場合は、内部キャッシュメモリやバスの利用時間等の重なりから、必ずしも処理が高速になるとは限らない。いくつの処理を走らせると高速処理が得られるかは、実際に実行させてみないと分からない。
【００８５】
また、１つのＣＰＵを搭載しているようにみえるホストＰＣにおいても、実際には、１チップ内に２つのコアが存在している場合もある。この場合、ソフトウェア側からみると、いずれも４つのＣＰＵが搭載されているように見えることもあり、ＣＰＵで完全、並列実行を可能とするスレッドがいくつあるかは分からない。
【００８６】
そこで第３実施形態では、ホストＰＣ１００側にて実際に複数のスレッドを立ち上げてカラーマッチング処理を動作させてみて、スレッド数がいくつの時に最も高速に処理が完了するかを予備的に検査することを特徴とする。
【００８７】
図８のフローチャートを用いて、第３実施形態におけるスレッドテストについて詳細に説明する。まずステップＳ５１０においてシステムの設定ファイルをロードする。次にステップＳ５２０において、システムとして既にスレッドテストが完了しているか否かを判断し、完了していない場合はステップＳ５３０のスレッドテスト初期化処理に進み、完了していればそのまま処理を終了する。
【００８８】
ステップＳ５３０のスレッドテスト初期化処理が終了すると、次にステップＳ５４０において、テストすべきスレッド数の候補を選択してスレッドテストを順次開始する（Ｓ５５１，Ｓ５５２，Ｓ５５３，Ｓ５５４）。ここではスレッド数として、１スレッド、２スレッド、４スレッド、８スレッドの４種類を選択するとする。
【００８９】
ここで、スレッドテストの対象画像としては、所定のテスト画像に対し、上述した第２実施形態で説明したようなブロックテストを行った画像を用いることが好適である。すなわち、画像データに付与されたタグ情報から読み込んだ最適ブロックサイズの単位により、各スレッドテスト処理を並列実行する。
【００９０】
ステップＳ５６０では、ステップＳ５５１〜Ｓ５５４の処理結果に基づき、最も高速処理を実現したスレッド数をホストＰＣ１００における最適なスレッド数として決定する。そしてステップＳ５７０において、該最適スレッド数をホストＰＣ１００内のシステム設定ファイルに書き出ことによって、スレッドテスト処理を終了する。なお、ステップＳ５５１〜Ｓ５５４として並列実行されるスレッドテストは、ホストＰＣ１００に設けられた不図示のスレッド監視制御部によって制御される。
【００９１】
以下、図９のフローチャートを用いて、第３実施形態におけるカラーマッチング処理について、詳細に説明する。
【００９２】
ホストＰＣ１００においてカラーマッチングを実行するためのプログラムが起動されると、まずステップＳ６１０において、カラーマッチングの初期化処理として、上述した第２実施形態で（１）に示したように作成されたＬＵＴがメモリにロードされる。このＬＵＴのサイズは上述したように、２５６色の３乗の個数の色ｘ４色分である６４ＭＢであるから、このロードのためにメモリ領域（スタティック領域）を確保する必要がある。
【００９３】
該メモリ領域が確保され、ＬＵＴのロードが終了すると、次にステップＳ６３０において、第２実施形態で（２）に示したブロックサイズテストを実行する。なお、上記（１），（２）の処理は、第２実施形態ではプリンタコントローラ２００側にて行うとして説明したが、第３実施形態ではホストＰＣ１００側にて行うとする。
【００９４】
その後、ステップＳ６４０において、上述した（３）に示すスレッドテストを実行する。このステップＳ６３０，Ｓ６４０の処理により、最適なスレッド値およびブロックサイズが確定する。
【００９５】
そしてステップＳ６５０においてカラーマッチング処理を行うが、このカラーマッチング処理では、ステップＳ６４０で確定されたスレッド数に応じた分散処理を実行する。また、それぞれのスレッドで画像処理（カラーマッチング処理）を行う際に、その最小処理単位として、ステップＳ６３０で確定されたブロックサイズが採用される。
【００９６】
以上説明したように第３実施形態によれば、マルチスレッド処理を可能とするホストＰＣ１００において、ＣＭＳ処理に最適なスレッド数を予め検査しておく。そして、ホストＰＣ１００側においてＣＭＳ処理を行う際に、上述した第２実施形態と同様の（１）ＬＵＴ処理、および（２）ブロックサイズ制御に加えて、（３）マルチスレッド処理を行うことによって、より高速なＣＭＳ処理が実現される。
【００９７】
なお、上述した第１実施形態で示した圧縮画像データに対するカラーマッチング処理を、第３実施形態の最適スレッド数によって実行することも効果的である。
【００９８】
＜変形例＞
上述した各実施形態においては、ＣＭＳの処理単位である画像ブロックを正方形として構成する例を示したが、必ずしもそれが最適であるとは限らず、画像に応じて、ブロック形状が非常に複雑になる可能性もある。また、８×８，１６×１６，３２×３２，６４×６４等、４種類の構成を組み合わせるように構成してもよい。
【００９９】
例えば、図１０の左部に示すように、ＤＣＴの情報に基づいて、画像のグループを構成するようにしてもよい。同図によれば、ブロックが２領域に分割されていることが分かる。これにより、ＣＰＵのデータキャッシュがより有効にアクセスされ、更なる処理速度の向上が期待できる。
【０１００】
また、図１０の右部は、一つのイメージ画像を２つのスレッドで処理する場合に、類似のカラー値をもつようにブロックをグループ化した例である。同図は、図１０の左部に示すＤＣＴ情報による分類について、２スレッドによる処理を行うことを示している。このように類似色を集めてグループ化することによって、キャッシュヒット率が高くなり、より高速な処理が期待できる。
【０１０１】
＜他の実施形態＞
以上、実施形態例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記憶媒体(記録媒体)等としての実施態様をとることが可能である。具体的には、複数の機器（例えば、ホストコンピュータ、インタフェース機器、印刷装置、webアプリケーション等）から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１０２】
尚本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。なお、この場合のプログラムとは、実施形態において図に示したフローチャートに対応したプログラムである。
【０１０３】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１０４】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であっても良い。
【０１０５】
プログラムを供給するための記録媒体としては、以下に示す媒体がある。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD-ROM，DVD-R)などである。
【０１０６】
プログラムの供給方法としては、以下に示す方法も可能である。すなわち、クライアントコンピュータのブラウザからインターネットのホームページに接続し、そこから本発明のコンピュータプログラムそのもの(又は圧縮され自動インストール機能を含むファイル)をハードディスク等の記録媒体にダウンロードする。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【０１０７】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせることも可能である。すなわち該ユーザは、その鍵情報を使用することによって暗号化されたプログラムを実行し、コンピュータにインストールさせることができる。
【０１０８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。さらに、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【０１０９】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、実行されることによっても、前述した実施形態の機能が実現される。すなわち、該プログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行うことが可能である。
【図面の簡単な説明】
【０１１０】
【図１】本発明に係る一実施形態における画像形成部の概略構成を示す図である。
【図２】本実施形態における画像処理システムの概略構成を示す図である。
【図３】本実施形態において処理される画像データ例を示す図である。
【図４】第２実施形態におけるプリンティングシステムの概略構成を示す図である。
【図５】第２実施形態におけるプリンタコントローラ内のＣＰＵに内蔵されているキャッシュ概略を示す図である。
【図６】第２実施形態におけるブロックテストを示すフローチャートである。
【図７】第３実施形態におけるカラープリンティングシステムの概略構成例を示す図である。
【図８】第３実施形態におけるスレッドテストを示すフローチャートである。
【図９】第３実施形態におけるカラーマッチング処理を示すフローチャートである。
【図１０】本発明の変形例を説明するための図である。
【図１１】画像圧縮技術を利用した一般的な画像処理システムの概略構成例を示す図である。
【図１２】一般的なカラープリンティングシステムの概略構成例を示す図である。
【図１】
2008141502.tif 000003
【図２】
2008141502.tif 000004
【図３】
2008141502.tif 000005
【図４】
2008141502.tif 000006
【図５】
2008141502.tif 000007
【図６】
2008141502.tif 000008
【図７】
2008141502.tif 000009
【図８】
2008141502.tif 000010
【図９】
2008141502.tif 000011
【図１０】
2008141502.tif 000012
【図１１】
2008141502.tif 000013
【図１２】
2008141502.tif 000014