以下,本発明に係る色変換処理装置,動的にリンク可能なプログラムモジュールの拡張方法およびそれを適用した色変換処理方法並びにそれらの方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態について,添付の図面を参照しつつ詳細に説明する。
〔実施の形態1〕
実施の形態1に係る色変換処理装置および方法は,アプリケーションが描画命令を使ってカラー・マッチングのONおよびOFFを制御するシステムにおいて,カラー・マッチングがOFFの場合であっても,カラー・マッチングをONにした場合と同様な描画命令に書き換えることを可能にしたものである。なお,実施の形態1においては,モニタに描画されたカラー・イメージをプリンタに出力する場合を例として説明する。
図1は,実施の形態1に係る色変換処理装置の概略構成を示すブロック図である。図1に示す色変換処理装置は,アプリケーション12から描画命令を入力し,モニタおよびプリンタに対する描画処理を管理する描画モジュール11と,描画モジュール11から描画命令を入力し,カラー・マッチング処理を実行して,プリンタ14に対して出力する出力データに変換するプリンタ・ドライバ13とから構成されている。
図2は,図1に示すプリンタ・ドライバ13の概略構成を示すブロック図である。プリンタ・ドライバ13は,カラー・マッチングがOFFの場合に割込処理モジュールとして起動され,描画モジュール11から出力された描画命令を入力し,カラー・マッチング用色空間の設定を行ってカラー・マッチングがONの場合と同様な描画命令に再構築する描画命令変換部21と,描画命令変換部21で再構築された描画命令を入力し,カラー・マッチング処理を実行して,カラー画像出力装置に対して出力する出力データに変換するプリンタ出力用データ生成部22とを備えている。
描画命令変換部21は,割込処理により,カラー・マッチング用色空間の設定を行い,カラー・マッチングがOFFの場合の描画命令をカラー・マッチングがONの場合の描画命令に再構築する。加えて,描画命令変換部21は,描画されるオブジェクトの種類を判定し,判定したオブジェクトの種類に対応したカラー・マッチング方法を選択し,描画命令の再構築を行う際,選択したカラー・マッチング方法のパラメータを描画命令中に設定する。
プリンタ出力用データ生成部22は,カラー・マッチングモジュール23を備えている。カラー・マッチングモジュール23は,デバイスの特性を記述したデバイス・プロファイル27と,デバイス・プロファイル27を用いてカラー・マッチング処理を実行する複数の色変換エンジン24〜26とを備えている。プリンタ出力用データ生成部22は,描画命令変換部21で描画命令中に設定されたカラー・マッチング方法のパラメータに基づいて,図3に示すように複数の色変換エンジン24〜26の中から例えば色変換エンジン24を起動させ,デバイス・プロファイル27を用いてカラー・マッチング処理を実行させる。
なお,上述した実施の形態1に係る色変換処理装置の構成においては,描画命令変換部21が本発明の判定手段,種類判定手段および選択手段に,プリンタ出力用データ生成部22が本発明の色変換手段に対応する(請求項1)。
次に,実施の形態1に係る色変換処理装置の動作を説明する。なお,以下では,説明をより明確にするため,アプリケーションが描画命令を使ってカラー・マッチングを制御する方法を説明した後,実施の形態1に係る色変換処理装置の動作説明を行うことにする。
(アプリケーションによるカラー・マッチングの制御)
(1)イメージの印刷プロセス,(2)オブジェクトの色指定方法,(3)カラー・マッチング処理の順でアプリケーションが描画命令を使ってカラー・マッチングを制御する方法を説明する。
(1)イメージ印刷プロセス
図4は,種々のオブジェクトが含まれたカラー・イメージを示す説明図である。図4に示すカラー・イメージ41は,自然画像(ビットマップ画像)42,フォント43,線画44,単色の塗りつぶしパターン45を含んでいる。このような複合文書は,一般的な文書作成アプリケーションで容易に作成可能であり,また,高画質なプリントに対する需要も高まっている。以下,このカラー・イメージを印刷する場合を例にとり,一般的な印刷プロセスについて説明する。
オペレータは,アプリケーション12に用意されたツールを用いて画面上に図4に示すカラー・イメージ41を描いた後,印刷メニューから印刷を指示する。この際,文書作成アプリケーションは描画データを記憶しておき,印刷が指示されると記憶している描画データに従ってプリンタ・ドライバ13にデータを送信して印刷を実行させる。
通常オペレーティング・システムは,図1に示す描画モジュール11を備えており,前述したように,描画モジュール11がモニタやプリンタに対する描画処理を管理している。
・モニタへの出力
例えば,図4に示すカラー・イメージ41をモニタ上に描画する場合,オペレータによるアプリケーション12のツールを用いた描画操作は,アプリケーション12内で描画モジュール11が解釈可能な描画命令に変換されて描画モジュール11に送られる。そして,描画モジュール11は,対象モニタ用のドライバへ描画命令を伝え,モニタのデバイス・ドライバによってモニタ上にイメージが描かれる。
・カラープリンタへの出力
印刷の場合も,モニタ上への描画と同様のプロセスがとられる。オペレータがアプリケーション12を使ってモニタ上で編集したイメージをプリンタに出力する場合,アプリケーション12から印刷ジョブを始めるという命令が描画モジュール11に送信される。描画モジュール11は,印刷開始のメッセージを受け取ると,モニタに描画する場合と同様の手順でプリンタ・ドライバ13へ描画命令の送信を始める。プリンタ・ドライバ13では,描画モジュール11からの描画命令を解釈してプリンタが解釈可能な出力データに変換し,ローカル接続あるいはネットワーク接続されたプリンタ14にデータを送信する。印刷が終了すると,アプリケーション12は,描画モジュール11に印刷終了命令を送信し,オペレータが再び編集可能な状態になる。
例えば,ポストスクリプト・プリンタに出力する場合,プリンタ・ドライバ13は,ポストスクリプト・コードに描画命令を変換する役割を果たすことになる。
(2)オブジェクトの色指定方法
次に,種々のオブジェクトに対する主な色の指定方法について説明する。描画は,描画モジュール11がサポートするオブジェクト単位で行われる。ここでいうオブジェクトとは,描画される個々の図形を意味し,例えばビットマップ,フォント,ライン,パターン等がある。これらのオブジェクトに対する色指定の方法は,大きく以下の3通りに分けることができる。
・ビットマップ・データの色指定方法
自然画等は,ビットマップ形式のデータ構造をとる。すなわち,各画素毎にRGBの値を持っており,その画素値をモニタやプリンタのデバイス・ドライバへ送る。描画は,まずビットマップを書き込むメモリ領域を確保した後,そのメモリへ画素値を転送することによって行われる。
・フォント,ラインの色指定方法
フォントやラインは,単色で描画されることが多い。すなわち,単色のフォントでテキストを表示したり,ラインを書いたりする。また,所定の領域を単色で塗りつぶすような場合も,フォントやラインに色指定を行う場合と同様な方法で色指定を行う。フォントやラインについては,一般に,まず色を指定した後,所定のオブジェクトでの描画を開始する。例えば,赤色でタイトル文を描いた後,緑の線を引く場合,
1.ペンを赤色に設定
2.フォントの描画
3.ペンを緑色に設定
4.ラインの描画
というようにペンというオブジェクトが描画の色情報を記憶し,常にペンの色情報を使って描画を行うという方法がとられる場合が多い。
・特定パターンの色指定方法
特定パターンとは,所定の領域にグラデーションをつけたものや,フォントに模様をつけたりしたものである。この場合は複数の色を用いて描画が行われる。自然画等のビットマップ形式と異なるのは,ビットマップが全画素に対して色情報を持つのに対し,特定パターンの場合は,小さなビットマップ・パターンを拡大したり,変形したり,クリッピングしたりして所定の領域に色付けする点である。
ここで,緑から白に変化するグラデーションで200×1000画素の矩型領域を塗りつぶす場合を例にして,特定パターンでの描画を説明する。特定パターンでの描画の場合,まず,パターンと呼ばれるオブジェクトを作成する。パターンは,例えば64×64画素程度の小さなビットマップである。アプリケーション上で,予め緑から白に変化する64×64画素のビットマップ・パターンを生成しておき,このビットマップ・パターンを200×1000画素に拡大して矩型領域を塗りつぶす。この拡大や塗りつぶし等は,通常,描画モジュール31が自動的に行うものである。このようなパターンによる描画は,塗りつぶし領域の変形が行われた場合等に便利である。
(3)カラー・マッチング処理
上述した3通りの色指定方法において用いられる色信号は,通常RGB信号である。RGB信号は,デバイスに依存した色信号であるため,そのままではカラー・マッチング処理を実現することができない。そこで,RGBで色指定された場合の処理方法を説明する。
カラー・マッチングが可能なオペレーティング・システムでは,RGB信号の他にデバイス独立な色信号を扱うことができるように構成されている。そのアーキテクチャ自体は,オペレーティング・システムによって種々異なっている。例えば,アプリケーション側でカラー・マッチング専用の描画命令を使って描画を行う場合や,アプリケーション側ではなく,ドライバ側でカラー・マッチング用のコードを生成する場合等がある。前述したように,実施の形態1に係る色変換処理装置では,アプリケーション側でカラー・マッチング専用の描画命令を使って描画を行うシステムを前提としている。
カラー・マッチングは,図3に示すような,デバイスの特性を記述したデバイス・プロファイル27と,デバイス・プロファイル27を用いて色変換を実行する色変換エンジン24とを用いて実行される。
デバイス・プロファイル27には,通常CIE XYZやCIE LAB等のデバイス独立信号とモニタRGBやプリンタCMYK等のデバイス信号との物理的な関係が記述されている。例えば,モニタのRGB信号をプリンタのCMYK信号に変換する場合には,色変換エンジン24がモニタのプロファイルに基づいてRGB信号をXYZ信号に変換した後,XYZ信号をプリンタのプロファイルに基づいてCMYK信号に変換する。このように,中間的にデバイス独立な色信号を用いることにより,測色的に一致した色再現が可能となる。
ところが,モニタとプリンタとは,色再現可能な範囲が異なり,一般にモニタよりもプリンタの方が色再現範囲が狭い。そのため,モニタで再現可能な色をプリンタに出力する場合には,プリンタで再現不可能な色を再現可能な色にマッピング(ガマット・マッピング)することが必要になる。ガマット・マッピングには種々の方式があるが,一般には自然画像,グラフ,フォント等のような画像の種類に応じて異なった方式を用いることが望ましい。そのため,色変換エンジン24は,各種ガマット・マッピングに対応した複数の色変換方式を実行できるように構成されることが多い。
上述したカラー・マッチングを容易に実現できるようにするため,オペレーティング・システムには通常カラー・マッチング用のモジュールが用意されている。このモジュールには,色変換エンジンやデバイス・プロファイルのアクセス制御のためのインターフェースが提供される。
次に,カラー・マッチングを行う場合の描画モジュール11の動作を説明する。カラー・マッチングを行う場合には,全てカラー・マッチング用の色空間を用いてオブジェクトの色指定を行う。そのため描画モジュール11は,まずカラー・マッチングの開始コマンドを呼び出す。すなわち,このカラー・マッチングの開始コマンドを呼び出すことにより,プリンタ・ドライバ13において,カラー・マッチング処理を実行することができるようにする。
描画モジュール11は,続いて,カラー・マッチング用色空間の設定を行う。カラー・マッチング用の色空間には,RGB空間,XYZ空間,CMYK空間等,種々の色空間がある。この色空間には,XYZ信号等のデバイス独立な色信号との関係を記述するための属性情報が記述される。したがって,カラー・マッチング用色空間の設定の前に,この属性情報を設定しておく必要がある。属性情報の設定には,一般に,使用しているモニタのプロファイル情報が用いられる。例えば,RGB色空間を設定する場合には,モニタのR・G・B純色のXYZ三刺激値やガンマ等が設定される。
色空間が設定されると,続いてオブジェクトの描画が開始される。オブジェクトの色指定は,作成した色空間の種類に従う。例えば,XYZ空間が設定された場合には,XYZ値を用いてオブジェクトが描画される。
最後に,カラー・マッチングを終了する場合には,終了コマンドを呼び出す。この終了コマンドを呼び出すことにより,カラー・マッチングの終了を指定することができる。
以上の描画命令は,描画モジュール11からプリンタ・ドライバ13へ送られ,プリンタのコード情報に変換される。例えば,ポストスクリプト・プリンタの場合,RGB指定された色信号は,プリンタ・ドライバ13側でCIE BasedColor(キャリブレートされた色信号)として解釈され,プリンタに送られる。CIE BasedColorではRGB色空間の属性情報も一緒に送信されるため,ポストスクリプト・インタープリタにおいて,プリンタの特性に合わせてRGBからCMYKへの色変換を行うことが可能となり,モニタに表示された通りの色再現が可能となる。
一方,カラー・マッチングOFF状態の描画命令は,ポストスクリプト・プリンタ・ドライバでデバイス信号として解釈される。デバイス信号として色信号が送られた場合はプリンタ特性が考慮されないため,モニタ出力とプリンタ出力との色は一致しない。
上記ではポストスクリプト・プリンタについて説明したが,インクジェット・プリンタのようなラスタ・イメージ・プリンタの場合であっても,プリンタ・ドライバが生成するコードのフォーマットが異なるのみで,基本的には同様に,描画モジュール11から送信される描画命令に従ってカラー・マッチングを使用したり,中止したりすることになる。
このように,上述したアプリケーション側でカラー・マッチングを制御するシステムでは,カラー・マッチングをONにしていない場合,RGBで直接描画された図形についてはカラー・マッチングが行われないことになる。その結果,カラー・マッチングをサポートしていないアプリケーションからイメージを出力する場合には,たとえプリンタ・ドライバがカラー・マッチングに対応していてもカラー・マッチングを実行することができない。
(実施の形態1に係る色変換処理装置の動作)
上述したカラー・マッチングのアーキテクチャでは,カラー・マッチングがOFFの状態で描画されたオブジェクトは,デバイス信号としてそのままプリンタに送られてしまう。そこで,実施の形態1に係る色変換処理装置では,カラー・マッチングがOFFの状態で描画されたオブジェクトも,カラー・マッチングがONの状態と同じように扱うことができるようにプリンタ・ドライバ13を拡張するものである。また,実施の形態1に係る色変換処理装置は,プリンタへの出力コードに描画命令を変換する際,描画オブジェクトの属性を考慮しながら最適なカラー・マッチング処理を実行するようにするものである。
以下に,実施の形態1に係るカラー画像変換装置の動作を説明する。図5は,実施の形態1に係るカラー画像変換装置の動作手順を示すフローチャートである。
ステップS501において,描画モジュール11は,アプリケーション12から受け取った描画命令をプリンタ・ドライバ13に出力し,プリンタ・ドライバ13は,出力された描画命令を入力する。
プリンタ・ドライバ13は,入力した描画命令がカラー・マッチングONであるか否かを判定する(S502)。カラー・マッチングがONの場合は,ステップS507に進み,プリンタ出力用データ生成部22が色変換エンジン24〜26の何れかを起動させ,予め指定されたカラー・マッチング方法を用いてカラー・マッチング処理を実行する(S508)。
一方,カラー・マッチングがOFFの場合,RGB色で指定された描画命令がそのまま描画モジュール11からプリンタ・ドライバ13に送信されたことになる。したがって,この場合はカラー・マッチング処理を実行することができない。そこで,プリンタ・ドライバ13は,描画命令変換部21を起動させ(S503),割込処理により,前述したカラー・マッチング用色空間の設定処理を実行させる。
描画命令変換部21は,まず,入力した描画命令がいかなる種類のオブジェクトに対応するものかを判定する(S504)。
オブジェクトの種類を判定した後,描画命令変換部21は,予め用意したオブジェクトの種類とカラー・マッチング方法との対応関係情報から,オブジェクトの種類に対応したカラー・マッチング方法を選択し(S505),カラー・マッチング用色空間を設定すると共に,描画命令中のカラー・マッチング方法のパラメータを,選択したカラー・マッチング方法に対応したパラメータに設定する(S506)。
すなわち,描画命令変換部21は,前述したように,カラー・マッチングの開始コマンドを呼び出し,カラー・マッチング用色空間の設定を行う。色空間には,XYZ信号等のデバイス独立の色信号との関係を記述するための属性情報を記述する。そして,例えば,ビットマップ画像の描画命令を入力した場合には,描画命令中のカラー・マッチング方法のパラメータを自然画モードに設定する。また,フォントの描画命令を入力した場合には,描画命令中のカラー・マッチング方法のパラメータを単色べたモードに設定する。ただし,オブジェクトの種類に基づくカラー・マッチング方法の選択は,カラー・マッチングモジュール23中にいかなる種類のオブジェクトに対応する色変換エンジンが用意されているのかに依存する。実施の形態1においては,自然画用色変換エンジン24,単色べた用色変換エンジン25およびパターン用色変換エンジン26が用意されている。
描画命令変換部21は,このようにしてRGB値で指定された描画命令をカラー・マッチングをONにしたときと同じ描画命令に再構築し,再構築した描画命令をプリンタ出力用データ生成部22に対して出力する。
プリンタ出力用データ生成部22は,描画命令変換部21で再構築した描画命令を入力して解析し,描画命令中に設定されたカラー・マッチング方法のパラメータに対応した色変換エンジンをカラー・マッチングモジュール23から選択して起動させる(S507)。例えば,カラー・マッチング方法のパラメータが自然画モードに設定されている場合は,自然画用色変換エンジン24を選択して起動させる。また,単色べたモードに設定されている場合は,単色べた用色変換エンジン25を選択して起動させる。
その後,例えば自然画用色変換エンジン24を起動させた場合,自然画用色変換エンジン24は,図3に示すようにデバイス・プロファイル27を参照しつつ,ビットマップ画像のRGBをプリンタのCMYKに変換する(S508)。すなわち,自然画用色変換エンジン24は,デバイス・プロファイル27中のモニタのプロファイルに基づいて,RGB信号をXYZ信号等のデバイス独立の色信号に変換した後,プリンタ・プロファイルに基づいて,XYZ信号をCMYK信号に変換する。加えて,一般にモニタよりプリンタの方が色再現範囲が狭いため,自然画に適した方法を用いてプリンタが再現不可能な色を再現可能な色にマッピングする。
このようにしてプリンタ出力データ生成部22でカラー・マッチング処理が実行され,生成されたプリンタ出力データは,描画モジュール11に対して出力される。なお,他のオブジェクトに対しても同様の処理が行われ,描画モジュール11へ出力データが送信される。描画モジュール11は,プリンタ・ドライバ13からの出力データを入力し,プリンタ14との間での描画ルーチンに入り(S509),カラー・マッチング処理を終了する。
上述した描画命令変換部21による描画命令の再構築方法では,オブジェクト毎に最適なカラー・マッチング処理を実現することができる。その際,オブジェクト毎にどのようなカラー・マッチング方法が適しているのかということが重要となってくる。
本発明においては,カラー・マッチング方法の選択方法について何ら制約を設けるわけではないが,基本的には,描画オブジェクトの階調性に応じて色変換のモードを切り替えることが望ましい。
すなわち,ビットマップ画像のように,各画素毎に色が指定されているようなオブジェクトについては階調性が最も重視されるため,階調性を重視したような色再現を行うようにする。階調性重視の色再現方式としては,例えば図6に示すような,プリンタが再現できない色を色相と明度一定で圧縮する方法等がある。
一方,単色のフォントや線画等では,階調性は関係ないが目立つような色再現が必要となる。特に,黄色やマゼンダのべた画像は,プリンタでも単色で再現した方がざらつき感がなく,色の区別がはっきりする。そこで,単色べたのオブジェクトに対しては,彩度を重視したような色再現を行う。彩度を重視した色再現方法としては,例えば図7に示すような,最も色差の小さい色にマッピングするような方式がある。
また,べた画像に対してはカラー・マッチングを行わず,そのままデバイス信号とみなして以下のような色変換を行っても良い。
Cyan=R−min(r,g,b)
Magenta=G−min(r,g,b)
Yellow=B−min(r,g,b)
Black=min(r,g,b)
更に,グラデーション・パターンやデザイン・フォントのように,特定のパターンを用いて描画されるオブジェクトに対しては,彩度と階調性の両方が重視されるため,上述した2種類の色再現方法の中間的な色再現を行う。特に,グラデーション・パターン等は,べた画像と隣接する領域に描画されることが多いため,その境界ひずみが目立たないようにしなければならない。そこで,高彩度の色は単色の場合と同様な変換結果となるようにしながら,低彩度の色に対してはビットマップと同様な色再現となるようにする。このような色再現方式の調整は,補間演算により容易に行うことができる。
このように,実施の形態1に係る色変換処理方法および装置によれば,カラー・マッチングOFFの場合のRGB値で指定された描画命令を,カラー・マッチングをONにしたときと同じ描画命令に変換するため,カラー・マッチングに対応していないアプリケーションの場合であっても,プリンタ・ドライバ13上でカラー・マッチング処理を実行可能とすることができる。また,オブジェクトの種類に応じてカラー・マッチングの方法を切り替えるため,オブジェクト毎に最適なカラー・マッチング処理を実現することができる。
なお,実施の形態1に係る色変換処理装置においては,カラー・マッチングOFFの場合に割込処理を実行する描画命令変換部21をプリンタ・ドライバ13に設けることにしたが,この構成に限定するものではなく,図8に示すように,描画モジュール11とプリンタ・ドライバ13との間に設けることもできる。図8に示すような構成とした場合は,描画モジュール11の制御により描画命令変換部21を起動させてカラー・マッチング用色空間の設定を行った後,プリンタ・ドライバ13に描画命令を送信することになる。
また,実施の形態1においては,モニタに描画されたカラー・イメージをプリンタに出力する場合を例として用いたが,この場合に限定するものではなく,本発明に係る色変換処理方法および装置は,カラー・マッチング処理が必要な如何なる場面にも適用可能なことはいうまでもない。
〔実施の形態2〕
実施の形態2に係る色変換処理方法および装置は,プリンタ・ドライバ側でカラー・マッチングのONおよびOFFの制御が可能であるが,カラー・イメージ中に存在する個々のオブジェクトに対するカラー・マッチング方法はアプリケーション側が制御すると共に,カラー・マッチング方法はオブジェクトの属性に指定するというシステムに適用される。すなわち,実施の形態2に係る色変換処理方法および装置は,カラー・マッチングの属性の指定のない描画オブジェクトを受け取った場合,オブジェクトの種類に応じてカラー・マッチングの属性情報を付加した後,この属性情報に従って,カラー出力装置へ送信する送信データを生成するというものである。なお,実施の形態2においても実施の形態1と同様に,モニタに描画されたカラー・イメージをプリンタに出力する場合を例として説明する。また,実施の形態2の説明において,実施の形態1に係る色変換処理装置と同一の構成については詳細な説明を省略する。
図9は,実施の形態2に係る色変換処理装置の構成を示すブロック図である。図9に示す色変換処理装置は,モニタおよびプリンタ(図示せず)に対する描画処理を管理する描画モジュール11と,描画モジュール11からイメージ・データを入力し,カラー・マッチング処理を実行して,プリンタ14に対して出力する出力データに変換するプリンタ・ドライバ91とから構成されている。
図10は,図9に示すプリンタ・ドライバ91の概略構成を示すブロック図である。プリンタ・ドライバ91は,カラー・マッチングのONおよびOFFの制御が可能なものである。このプリンタ・ドライバ91は,描画対象となるオブジェクトにカラー・マッチング方法の属性が指定されていない場合,割込処理によりそのオブジェクトにカラー・マッチング方法の属性情報を付加するCMM(カラー・マッチング・モジュール)属性設定部92と,CMM属性設定部92で付加されたカラー・マッチング方法の属性情報に従って,オブジェクト毎にカラー・マッチング処理を実行し,カラー画像出力装置に対して出力する出力データに変換するプリンタ出力用データ生成部93とを備えている。
CMM属性設定部92は,描画対象となるオブジェクトにカラー・マッチング方法の属性が指定されていない場合に,割込モジュールとして起動されるものである。このCMM属性設定部92による割込処理により,描画対象となるオブジェクトの種類を判定し,判定したオブジェクトの種類に対応したカラー・マッチング方法を選択し,オブジェクトに選択したカラー・マッチング方法の属性情報を付加する。
プリンタ出力用データ生成部93は,カラー・マッチングモジュール94を備えている。カラー・マッチングモジュール94は,デバイスの特性を記述したデバイス・プロファイル98と,デバイス・プロファイル98を用いてカラー・マッチング処理を実行する複数の色変換エンジン95〜97とを備えている。プリンタ出力用データ生成部93は,CMM属性設定部92で付加されたカラー・マッチング方法の属性情報に従って,カラー・マッチングモジュール94の色変換エンジン95〜97から対応する色変換エンジンを起動させ,デバイス・プロファイル98を用いてカラー・マッチング処理を実行させる。
なお,上記実施の形態2に係る色変換処理装置の構成においては,CMM属性設定部92が本発明の判定手段,種類判定手段および属性情報付加手段に対応し,プリンタ出力用データ生成部93が本発明の色変換手段に対応する(請求項7)。
以下に,実施の形態2に係る色変換処理装置の動作を説明する。図11は,実施の形態2に係る色変換処理装置の動作手順を示すフローチャートである。
オペレーティング・システムによっては,始めからデバイス・ドライバがカラー・マッチングをONにしたり,OFFにしたりできるようにしたものがある。ところが,このようなオペレーティング・システムにおいても,各オブジェクトに対する色変換モードはアプリケーション側での制御を前提としている場合がある。
上記オペレーティング・システムでは,カラー・マッチングに関する情報はオブジェクトの属性に記述されることが多い。そして,ドライバ側ではそのオブジェクト属性に従って,カラー・マッチングを切り換える。ところが,オブジェクトにカラー・マッチング方法の属性が指定されていない場合には,デフォルトの色変換方式を用いることになってしまう。
実施の形態2に係る色変換処理装置においては,まず,ステップS1101において,描画モジュール11がアプリケーション12から受け取ったイメージ・データをプリンタ・ドライバ91に出力し,プリンタ・ドライバ91は,出力されたイメージ・データを入力する。
プリンタ・ドライバ91は,入力したイメージ・データ中に存在する個々のオブジェクトにカラー・マッチング方法の属性の指定があるか否かを判定する(S1102)。オブジェクトにカラー・マッチング方法の属性の指定がある場合には,ステップS1107に進み,プリンタ出力用データ生成部93が色変換エンジン95〜97の何れかを起動させ,予め指定されたカラー・マッチング方法を用いてカラー・マッチング処理を実行する(S1108)。
オブジェクトにカラー・マッチング方法の属性の指定がない場合,プリンタ・ドライバ91は,割込処理としてCMM属性設定部92を起動させる(S1103)。
CMM属性設定部92は,描画対象のオブジェクトがいかなる種類であるかを判定する(S1104)。
オブジェクトの種類を判定した後,CMM属性設定部92は,予め用意したオブジェクトの種類とカラー・マッチング方法との対応関係情報から,オブジェクトの種類に対応したカラー・マッチング方法を選択し(S1105),オブジェクトに選択したカラー・マッチング方法の属性情報を付加する(S1106)。
プリンタ出力用データ生成部93は,CMM属性設定部92で付加されたカラー・マッチング方法の属性情報に従って,対応する色変換エンジンをカラー・マッチングモジュール94から選択して起動させ(S1107),カラー・マッチング処理を実行する(S1108)。
このようにしてプリンタ出力データ生成部93でカラー・マッチング処理が実行され,生成されたプリンタ出力データは,描画モジュール11に対して出力される。なお,他のオブジェクトに対しても同様の処理が行われ,描画モジュール11へ出力データが送信される。描画モジュール11は,プリンタ・ドライバ13からの出力データを入力し,プリンタ14との間での描画ルーチンに入り(S1109),カラー・マッチング処理を終了する。
なお,オブジェクトの種類と色変換方式の対応関係は前述した実施の形態1の場合と同様であるため,その詳細な説明は省略する。
このように,実施の形態2に係る色変換処理方法および装置によれば,オブジェクトにカラー・マッチングの属性が指定されていない場合であっても,個々のオブジェクトに対し,そのオブジェクトの種類に対応したカラー・マッチング方法の属性情報を付加することにより,イメージ・データ中に存在する個々のオブジェクト毎に最適なカラー・マッチング処理を実行することができる。
なお,実施の形態2に係る色変換処理装置においては,個々のオブジェクトにカラー・マッチング方法の属性の指定がない場合に割込処理を実行するCMM属性設定部92をプリンタ・ドライバ91に設けることにしたが,この構成に限定するものではなく,図12に示すように,描画モジュール11とプリンタ・ドライバ91との間にCMM属性設定部92を設けることもできる。図12に示すような構成とした場合は,描画モジュール11の制御によりCMM属性設定部92を起動させて個々のオブジェクトにカラー・マッチング方法の属性情報を付加した後,プリンタ・ドライバ91にイメージ・データを送信することになる。
また,実施の形態2においては,モニタに描画されたカラー・イメージをプリンタに出力する場合を例として用いたが,この場合に限定するものではなく,本発明に係る色変換処理方法および装置は,カラー・マッチング処理が必要な如何なる場面にも適用可能なことはいうまでもない。
〔実施の形態3〕
実施の形態3は,新たなプリンタ・ドライバを作成するのではなく,現存するプリンタ・ドライバの機能を拡張することによって,プリンタ・ドライバ側でオブジェクトの種類に応じたカラー・マッチング処理を施すことができるようにするための方法を説明するものである。
今日のパーソナルコンピュータ環境にあって,プリンタ・ドライバは,動的にリンク可能なプログラムモジュール(後述するDLL等)という形態で提供される。そこで,実施の形態3では,この動的にリンク可能なプログラムモジュールの機能を拡張するための方法を提案することにより,この方法を現存するプリンタ・ドライバに適用して,オブジェクト毎に異なるカラー・マッチング方法を適用できるようにする。ただし,この方法は,プリンタ・ドライバの機能拡張のためにのみならず,他の動的にリンク可能なプログラムモジュールの機能拡張のために使用できることはいうまでもない。
図13に示すように,ソフトウェアにおいては,上位モジュール130が下位のモジュール131(例えばライブラリ)をコールし,コールされた下位モジュール131が所定の処理を行って,その処理の結果(戻り値)を上位モジュール130に返すという処理が行われる。
そして,マルチタスク環境,即ち,複数のプログラムが同時に稼働する環境においては,各アプリケーション間(上位モジュール130間)で共通に使用するライブラリを重複してメモリにロードするという無駄を避けるため,ライブラリを動的にリンク可能なプログラムモジュールとして,複数のアプリケーション間で共有することが一般的である。ここで,動的にリンク可能なプログラムモジュールとは,例えばWindows(R)やUNIX(R)においてDLL(Dynamic Link Library)と,Macintoshではコンポーネントと呼ばれているものである(Windows(R)はマイクロソフト社の登録商標,UNIX(R)はX/OPENカンパニーリミテッドがライセンスしている登録商標,Macintoshはアップル・コンピュータ社の登録商標である)。なお,以下に説明する実施の形態3〜5においては,動的にリンク可能なプログラムモジュールをDLLとして説明することにする。
DLLとは,他のモジュールから動的にリンクされ,コールされることが可能なルーチンの集合であり,一般にDLLファイルのヘッダには,他のモジュールからコールされることが可能なルーチン名の一覧が記載されている。ここで,他のモジュールからコールされることが可能ということは,「エキスポートされている」と呼ばれる。その結果,上位モジュールは,DLLファイルのファイル名およびルーチン名(またはルーチン番号)を指定することにより,エキスポートされているルーチンをコールすることができる。
従来,上記DLLの機能を拡張するには,図14に示すように,そのソースプログラムを編集し直し,コンパイルして新たなDLLを作成し,古いDLLと置き換える処理を行う必要があった。ところが,古いDLLが他人の作成した既成のものであり,そのソースプログラムが手元にない場合(例えば,オペレーティング・システムの一部として提供されたものの場合)には,このDLLを1から作るか,または拡張をあきらめるしかなかった。ただし,DLLを1から作る場合には,上位モジュールとDLLとのインターフェイス,即ち,エキスポートされているルーチンの引数および戻り値の型がわかっていなければならない。
以下では,上位モジュールとDLLとのインターフェイス,即ち,エキスポートされているルーチンの引数および戻り値の型が既知であることを前提にして,実施の形態3の動的にリンク可能なプログラムモジュールの拡張方法を説明する。
図15は,実施の形態3に係る動的にリンク可能なプログラムモジュールの拡張方法の第1の例を説明する説明図である。図15において,130は上述した上位モジュールを,150は機能が拡張される対象であるDLLを,151はDLL150の機能拡張のための拡張DLLをそれぞれ示している。
また,図15においては,DLL150のファイル名を他のファイル名に変更し,拡張DLL151にDLL150の元のファイル名をつけることにしている。そして,拡張DLL151は,DLL150がエキスポートしているルーチンの全てをエキスポートしており,上位モジュール130からDLL150に含まれるルーチンに対して発行されるコールの全てを受け付けることができるようになっている。したがって,上位モジュール130がDLL150のファイル名を指定してコールすると,結果的に拡張DLL151内の同名のルーチンがコールされることになる。そして,拡張DLL151は,DLL150の機能を拡張することができるように,そのコールの任意の引数を必要に応じて変更し,DLL150をコールする。
次に,拡張DLL151の動作を図16の概略フローチャートを用いて説明する。まず,上位モジュール130がDLL150のファイル名およびルーチン名を指定してコールAを出力すると,拡張DLL151がそのコールAを入力する(S1601)。
そして,拡張DLL151は,予め設定された条件に基づいて,入力したコールA中の引数の変更が必要か否かを判定する(S1602)。引数の変更が不要な場合はステップS1604に進み,引数を変更することなくコールAをコールBとしてDLL150に出力する。
一方,引数の変更が必要な場合は,所定の手順に基づいて,コールA中の引数の一部を変更して新たなコールBを生成し(S1603),生成したコールBをDLL150に出力する(S1604)。変更される引数は,DLL150の機能の拡張に必要なものであり,この引数は,予め拡張DLL151に設定されている。
その後,DLL150がコールBに基づいて所定の処理を実行し,処理の結果である戻り値Aを拡張DLL151に出力する。拡張DLL151は,DLL150から戻り値Aを入力し,入力した戻り値Aをそのまま上位モジュール130に出力して処理を終了する(S1605)。なお,この戻り値Aは,拡張DLL151が出力したコールBに対するものであるため,上位モジュール130が出力したコールAに対する戻り値とは異なったものとなる。ただし,拡張DLL151は,入力した戻り値Aを別の戻り値Bとして上位モジュール130に出力することにしても良い。また,拡張DLL151から上位モジュール130に返す戻り値は,DLL150がコールBに対して返した戻り値Aをそのまま戻り値Aとして返しても良いし,前述したように別の戻り値Bを返しても良い。この際,戻り値Bが,上位モジュール130のコールAに対する本来の値でも良い。また,図16のステップS1602およびS1604において,引数の変更が不要であると判定してコールBをDLL150に出力した場合の戻り値は,コールAに対する戻り値となる。
このように,拡張DLL151が,上位モジュール130からDLL150へのコールAを途中で変更した結果,上位モジュール130には異なる戻り値が戻されるため,上位モジュール130とっては結果的にDLL150が新たなDLLに置き換えられたことと同様な処理結果を得ることができる。
また,図17は,実施の形態3の動的にリンク可能なプログラムモジュールの拡張方法の第2の例を説明する説明図である。図17に示す拡張DLL170は,DLL150のルーチンRと同一名の新たなルーチンR’を実装しており,上位モジュール130からDLL150に出力されたルーチンRを指定するコールを入力すると,ルーチンR’に基づく処理を実行して,DLL150のルーチンRに基づく戻り値と異なる戻り値を上位モジュール130に出力するというものである。
次に,拡張DLL170の動作を図18の概略フローチャートを用いて説明する。まず,上位モジュール130がDLL150のファイル名およびルーチンRを指定してコールを出力すると,拡張DLL151がそのコールを入力する(S1801)。
そして,拡張DLL170は,コールで指定されたルーチンRに対応するルーチンR’に基づく処理を実行する(S1802)。なお,ルーチンR’中に,DLL150をコールして,所定の処理を実行させる工程を含めることもできる(図17中の波線矢印171参照)。
その後,拡張DLL170は,ルーチンR’に基づく処理の結果である戻り値を上位モジュール130に出力して処理を終了する(S1803)。なお,DLL150に所定の処理を実行させた場合は,その戻り値を入力し(図17中の波線矢印172参照),入力した戻り値を用いて上位モジュール130に出力する戻り値を生成する。
このように,拡張DLL170にDLL150と同一の名のルーチンを実装させることにより,より直接かつ自由にDLL150の機能を拡張することができる。
さらに,図19は,実施の形態3の動的にリンク可能なプログラムモジュールの拡張方法の第3の例を説明する説明図である。図19に示す拡張DLL190は,上位モジュール130とDLL150とのインターフェイス以外のインターフェイス,即ち,DLL150にはないが上位モジュール130がコールすることが可能な新たなルーチンを実装しており,このルーチンがエキスポートされているものである。
次に,拡張DLL190の動作を図20の概略フローチャートを用いて説明する。まず,拡張DLL190は,上位モジュール130から新たに実装されたルーチン(拡張DLL190独自なルーチン)を指定したコールを入力すると(S2001),指定されたルーチンに基づく処理を実行する(S2002)。なお,ルーチン中に,DLL150をコールして,所定の処理を実行させる工程を含めることもできる(図19中の波線矢印191参照)。
その後,拡張DLL190は,ルーチンに基づく処理の結果である戻り値を上位モジュール130に出力して処理を終了する(S2003)。なお,DLL150に所定の処理を実行させた場合は,その戻り値を入力し(図19中の波線矢印192参照),入力した戻り値を用いて上位モジュール130に出力する戻り値を生成する。
このように,拡張DLL190にDLL150にはないルーチンを実装することにより,そのルーチンに基づく処理を実行できる分,DLL150の機能を拡張することができる。
なお,上記第1〜第3の例の説明において,「戻り値」は,当然「出力引数(コールされたDLLによって書き込まれる引数)」であっても良く,また,第1〜第3の例を組み合わせた拡張DLLを構成することも可能である。また,拡張DLLには,DLLがエキスポートしている全てのルーチンがエキスポートされていると説明したが,DLLの機能中に不要なものが生じた場合等には,必要なルーチンのみを拡張DLLにエキスポートすれば良い。
以下の実施の形態4および5では,上述した動的にリンク可能なプログラムモジュールの拡張方法を適用した色変換処理装置およびその方法について説明する。
〔実施の形態4〕
実施の形態4では,カラー・マッチングには対応しているが,オブジェクト単位でカラー・マッチング方法の指定をすることが不可能な現存するプリンタ・ドライバの機能を拡張することを例として,実施の形態3で説明した動的にリンク可能なプログラムモジュールの拡張方法を適用した色変換処理装置およびその方法を説明する。
図21は,実施の形態4の色変換処理装置およびその方法で使用されるプリンタ・ドライバにおいて,カラー・マッチングの有無を指定するための設定画面の一例を示す説明図であり(一般的なオペレーティングシステムにおいて標準で使用されるポストスクリプトプリンタ・ドライバの設定画面に基づいている),図22は,カラー・マッチングの方法(図22においてはレンダリングと表記されている)を指定するための設定画面の一例を示す説明図である。図21および図22に示す設定画面を用いることにより,カラー・マッチングをする/しないという設定と,彩度保存やコントラスト保存等のカラー・マッチングの方法(色変換パラメータ)の設定を行うことができる。ところが,図21および図22を見ると,描画対象の指定欄がないことがわかる。これは,現状のプリンタ・ドライバにおいては,カラー・マッチングの指定を行う際に,描画対象毎にカラー・マッチング方法を設定(色変換パラメータの設定)することはできず,画面全体に対して1つのカラー・マッチング方法が指定できるのみであるということを表している。そこで,実施の形態4の色変換処理装置およびその方法では,カラー・マッチングには対応しているが,オブジェクト単位でのカラー・マッチングには対応していないプリンタ・ドライバの機能を拡張することにより,描画対象となる文字やビットマップ画像(オブジェクト)毎に最適なカラー・マッチング処理を行うことができるようにするものである。
図23は,実施の形態4に係る色変換処理装置のブロック構成図である。図23において,210はアプリケーションを,211は実施の形態3で説明した上位モジュール130に該当する描画モジュールを,212は実施の形態3で説明した拡張DLL151,170,190に該当する拡張プリンタ・ドライバを,213は実施の形態3で説明したDLL150に該当するプリンタ・ドライバを,214はモニタプロファイル215とプリンタプロファイル216とに基づいてカラー・マッチング処理を実行する色変換エンジンを,217はプリンタを示している。
描画モジュール211は,アプリケーション210から任意のオブジェクトの描画命令(プリント命令)およびそのオブジェクトの描画色を示す描画色情報を入力し,後述する初期化処理で生成したカラー・マッチング方法に対応したパラメータ(以下「色変換パラメータ」という)を入力した描画命令に付加し,その描画命令と描画色情報とを拡張プリンタ・ドライバ212に出力する。なお,この描画モジュール211で描画命令に付加される色変換パラメータは,描画対象である各オブジェクトに共通のものである。
また,拡張プリンタ・ドライバ212は,描画モジュール211とプリンタ・ドライバ213との間に設けられており,描画モジュール211によってコールされるものである。なお,実施の形態3ではDLL150のファイル名を拡張DLL151等のファイル名とすることにして上位モジュール130からコールできるようにしたが,プリンタ・ドライバをコンピュータにインストールする場合には,描画モジュール211からコールされるDLLファイル名を指定できることが通常であるため,指定するファイル名を拡張プリンタ・ドライバ212のファイル名とすることで,描画モジュール211から拡張プリンタ・ドライバ212をコールできるようにすることができる。
この拡張プリンタ・ドライバ212は,描画モジュール211から描画命令および描画色情報を入力し,入力した描画命令に基づいて,描画命令がいかなる種類のオブジェクトの描画命令であるかを判定し,判定結果に基づいて,後述する初期化処理で生成したオブジェクトの種類に応じて用意された複数の色変換パラメータから該当する種類の色変換パラメータを選択し,描画命令に付加されている属色変換パラメータを選択した色変換パラメータに置き換えて,描画色情報と共にプリンタ・ドライバ213に出力する。
また,プリンタ・ドライバ213は,上述したようにカラー・マッチングに対応したものである。すなわち,色変換パラメータが付加された描画命令を受け取ることができるものである(パラメータ用の引数を有している)。図21および図22で説明したように,ユーザは,このプリンタ・ドライバ213を用いてカラー・マッチングの有無および方法(オブジェクト単位ではない)を指定することができる。
プリンタ・ドライバ213は,拡張プリンタ・ドライバ212から描画命令および描画色情報を入力すると,色変換パラメータを付加した色変換命令と描画色情報とを色変換エンジン214に出力する。そして,描画命令をプリンタ217固有の描画命令に変換すると共に,色変換エンジン214からカラー・マッチング処理が施された描画色情報を入力し,描画命令および描画色情報をプリンタ217に出力する。
さらに,色変換エンジン214は,プリンタ・ドライバ213から色変換パラメータが付加された色変換命令と描画色情報とを入力し,入力デバイスの色特性情報であるモニタプロファイル215と出力デバイスの色特性情報であるプリンタプロファイル216に基づいて,描画色情報にカラー・マッチング処理を施す。なお,色変換エンジン214によるカラー・マッチング処理の詳細については,実施の形態1で説明した通りであるため,ここではその説明を省略する。
なお,上述した実施の形態4に係る色変換処理装置の構成において,拡張プリンタ・ドライバ212が本発明の種類判定手段および属性情報置換手段に,プリンタ・ドライバ213および色変換エンジン214が色変換手段にそれぞれ該当する(請求項12)。
次に,実施の形態4の色変換処理方法について,(1)ドライバ初期化時の処理,(2)拡張プリンタ・ドライバによる描画命令発行処理の順でフローチャートを参照しつつ説明する。
(1)ドライバ初期化時の処理
図24は,実施の形態4の色変換処理方法におけるドライバ初期化時の処理手順を示すフローチャートである。
描画モジュール211は,プリンタ・ドライバ213に対してカラー・マッチングの有無等に関するプリンタ情報・ドライバ情報の問い合わせを行い,プリンタ情報・ドライバ情報を取得する(S2401)。具体的には,まず,拡張プリンタ・ドライバ212が描画モジュール211からの問い合わせを受け取り,受け取った問い合わせをそのままプリンタ・ドライバ213に渡す。そして,拡張プリンタ・ドライバ212は,プリンタ・ドライバ213からプリンタ情報・ドライバ情報に関する戻り値を受け取り,受け取った戻り値をそのまま描画モジュール211に渡す。その結果,描画モジュール211は,通常と同様にプリンタ・ドライバ213からプリンタ情報・ドライバ情報を取得することができる。
そして,描画モジュール211は,取得したプリンタ情報・ドライバ情報に基づいて,プリンタ・ドライバ213がカラー・マッチングに対応しており,かつ,カラー・マッチングありの指定を受けているかを判定する(S2402)。プリンタ・ドライバ213は上述した通りカラー・マッチングに対応しており,一方,カラー・マッチングありの指定は,上述した図21および図22に示す設定画面で指定される。
ステップS2402において,プリンタ・ドライバ213がカラー・マッチングに対応していないと判定した場合,またはカラー・マッチングに対応しているがカラー・マッチングありの指定がないと判定した場合には,そのまま初期化処理を終了する。
一方,ステップS2402において,プリンタ・ドライバ213がカラー・マッチングに対応しており,かつ,カラー・マッチングありの指定があると判定した場合,描画モジュール211は,プリンタ・ドライバ213へ色変換パラメータ生成命令を発行する(S2403)。
拡張プリンタ・ドライバ212は,描画モジュール211から色変換パラメータ生成命令を入力し,予め設定された条件に基づいて,プリンタ・ドライバ213に描画対象となる3種類のオブジェクト毎に色変換パラメータを生成する色変換パラメータ生成命令を発行する(S2404)。ここで,3種類のオブジェクトとは,ビットマップ画像,文字およびその他のグラフィック画像のことである。このように3種類のオブジェクトとしたのは,一般的なコンピュータの環境で使用される描画命令の名称が,ビットマップ画像,文字およびその他のグラフィックの場合でそれぞれ異なっていることに基づくものである。また,ここでいうビットマップ画像およびその他のグラフィック画像は,図22に示すレンダリングの欄の「プレゼンテーションなどのグラフィックス」および「グラフィックイメージ」にそれぞれ相当する。
そして,プリンタ・ドライバ213は,拡張プリンタ・ドライバ212から色変換パラメータ生成命令を入力し,入力した色変換パラメータ生成命令を色変換エンジン214に出力する(S2405)。
色変換エンジン214は,プリンタ・ドライバ213から色変換パラメータ生成命令を入力すると,ビットマップ画像の色変換パラメータ,文字の色変換パラメータおよびその他のグラフィック画像の色変換パラメータをそれぞれ生成し,生成した3種類の色変換パラメータをプリンタ・ドライバ213に出力する(S2406)。
プリンタ・ドライバ213は,色変換エンジン214から3種類の色変換パラメータを入力すると,入力した3種類の色変換パラメータをそのまま拡張プリンタ・ドライバ212に出力する(S2407)。
続いて,拡張プリンタ・ドライバ212は,プリンタ・ドライバ213から3種類の色変換パラメータを入力し,入力した3種類の色変換パラメータを保持すると共に,そのうちの1つの色変換パラメータを描画モジュール211に出力する(S2408,S2409)。ここで,1つの色変換パラメータのみを描画モジュール211に出力する理由は,一般的なコンピュータ環境における描画モジュール211では,描画対象となる複数種類のオブジェクトに共通のカラー・マッチング方法の指定のみを行え,オブジェクト毎にカラー・マッチング方法の指定をすることができないからである。なお,出力する1つの色変換パラメータは,例えば,図23に示す設定画面の設定に従って決定されるようにすることができる。
そして,描画モジュール211は,拡張プリンタ・ドライバ212から1つの色変換パラメータを入力して保持し,初期化処理を終了する(S2410)。描画モジュール211は,実際に描画命令を出力する際に,保持した色変換パラメータを付加する。
なお,上述した説明においては,説明の便宜上,拡張プリンタ・ドライバ212から色変換エンジン214の間における3種類の色変換パラメータの生成処理を同時に行うように説明したが,実際には,色変換パラメータ生成命令の出力と色変換パラメータの生成をオブジェクトの種類毎に行うことになる。すなわち,上述した3種類のオブジェクトについて色変換パラメータを生成する場合には,図24に示すステップS2404〜S2408の処理を3回繰り返すことになる。
このように,実施の形態3で説明した動的にリンク可能なプログラムモジュールの拡張方法を適用した拡張プリンタ・ドライバ212を設けたことにより,通常は1つの色変換パラメータ生成命令に応じて1つの色変換パラメータのみしか生成されないところを,3つの色変換パラメータを生成することができるように,プリンタ・ドライバ213の機能を拡張することができる。
(2)拡張プリンタ・ドライバによる描画命令発行処理
続いて,拡張プリンタ・ドライバ212による描画命令発行処理について説明する。図25は,実施の形態4の色変換処理方法において,拡張プリンタ・ドライバ212による描画命令発行手順を示すフローチャートである。
描画モジュール211は,アプリケーション210から描画命令(印刷命令)と描画色情報を入力すると,描画命令に上記初期化処理で生成した色変換パラメータを付加し,色変換パラメータが付加された描画命令および描画色情報を出力する。拡張プリンタ・ドライバ212は,描画モジュール211から描画命令および描画色情報を入力すると,入力した描画命令がいかなる種類のオブジェクトの描画命令であるかを判定する(S2501,S2503,S2505)。
ここで,拡張プリンタ・ドライバ212によるオブジェクトの種類の判定処理について説明する。拡張プリンタ・ドライバ212は,描画命令に基づいて,描画対象のオブジェクトがビットマップ画像か,グラフィック画像か,または文字であるかを判定する。このように3種類としたのは,上述したように,一般的なコンピュータ環境において用いられる描画命令の名称がビットマップ画像,グラフィック画像およびテキストで異なるため,上記3種類のオブジェクトに区別することが便利であるからである。
一般に,描画モジュールからプリンタ・ドライバに対して発行される描画命令を含む一連の命令には,例えばDDI(Device Driver Interface)関数と呼ばれるものがあり,この関数を機能別に分類すると図26のように分類することができる。そして,拡張プリンタ・ドライバ212にこれらのDDI関数をエキスポートし,かつ所望の分類,即ち,ビットマップの描画,テキストの描画およびグラフィックスの描画に相当するDDIを見つけ出してオブジェクトの種類を判定させる。ここで,オブジェクトの種類を判定ためには,描画命令の名称を用いる。オブジェクトの種類の判定後には,後述するように,初期化処理で生成した3種類の色変換パラメータのうち,該当する種類のものを描画命令に付加することができるようにすれば,後段のプリンタ・ドライバ212および色変換エンジン214において,オブジェクト単位のカラー・マッチング処理が可能となる。
再び図25の説明に戻る。拡張プリンタ・ドライバ212は,描画モジュールから描画命令および描画色情報を入力し,入力した描画命令に基づいて,描画命令がビットマップ画像の描画命令であるか否かを判定する(S2501)。
ステップS2501において,ビットマップ画像の描画命令であると判定した場合,拡張プリンタ・ドライバ212は,初期化処理で生成して保持している3種類の色変換パラメータからビットマップ画像用の色変換パラメータを選択し,描画モジュール211が付加した色変換パラメータを選択した色変換パラメータに置換して,ビットマップ画像用の色変換パラメータ付き描画命令を生成し,描画色情報と共にプリンタ・ドライバ213に出力して処理を終了する(S2502)。
一方,ステップS2501において,ビットマップ画像の描画命令ではないと判定した場合,拡張プリンタ・ドライバ212は,入力した描画命令がグラフィック画像の描画命令であるか否かを判定する(S2503)。
ステップS2503において,グラフィック画像の描画命令であると判定した場合,拡張プリンタ・ドライバ212は,初期化処理で生成して保持している3種類の色変換パラメータからグラフィック画像用の色変換パラメータを選択し,描画モジュール211が付加した色変換パラメータを選択した色変換パラメータに置換して,グラフィック画像用の色変換パラメータ付き描画命令を生成し,描画色情報と共にプリンタ・ドライバ213に出力して処理を終了する(S2504)。
また,ステップS2503において,グラフィック画像の描画命令ではないと判定した場合,拡張プリンタ・ドライバ212は,入力した描画命令が文字の描画命令であるか否かを判定する(S2505)。
ステップS2505において,文字の描画命令であると判定した場合,拡張プリンタ・ドライバ212は,初期化処理で生成して保持している3種類の色変換パラメータから文字用の色変換パラメータを選択し,描画モジュール211が付加した色変換パラメータを選択した色変換パラメータに置換して,文字用の色変換パラメータ付き描画命令を生成し,描画色情報と共にプリンタ・ドライバ213に出力して処理を終了する(S2504)。
一方,ステップ2505において,文字の描画命令ではないと判定した場合,拡張プリンタ・ドライバ212は,その引数に何ら変更を加えることなく,そのままプリンタ・ドライバ213に出力して処理を終了する。すなわち,拡張プリンタ・ドライバ212は,オブジェクトの種類の判定および色変換パラメータの置換以外には,プリンタ・ドライバ213と互換性を有しているのである。
その後,プリンタ・ドライバ213は,拡張プリンタ・ドライバ212から描画命令および描画色情報を入力し,描画命令に付加された色変換パラメータを色変換命令に付加して色変換エンジン214に出力する。色変換エンジン214は,付加された色変換パラメータに基づいて,描画色情報にカラー・マッチング処理を施し,カラー・マッチング処理後の描画色情報をプリンタ・ドライバ213に出力する。プリンタ・ドライバ213は,描画命令をプリンタ217に対応した描画命令に変換すると共に,色変換エンジン214から描画色情報を入力し,変換した描画命令と共にプリンタ217に出力する。
このように,実施の形態4の色変換処理装置およびその方法によれば,オブジェクトの種類に応じた色変換パラメータを描画命令に付加する拡張プリンタ・ドライバ212を設けたため,拡張プリンタ・ドライバ212を設けるのみで,カラー・マッチングに対応してはいるが,描画対象の種類を判別する機能を有しないプリンタ・ドライバの機能の拡張を図ることができ,オブジェクトの種類に応じて適切なカラー・マッチング処理を実行することができる。
なお,実施の形態4では,拡張プリンタ・ドライバ212が保持する3種類の色変換パラメータをドライバの初期化時に生成することにしたが,これを描画命令が発行され,その描画命令がいかなる種類のオブジェクトの描画命令であるかを判定した後,判定した種類に応じて生成することもできる。
また,拡張プリンタ・ドライバ212は,描画命令がビットマップ画像,グラフィック画像または文字のいずれの描画命令であるかを判定することにしたが,これら3種類に限らず,さらに細分化または再分類化して判定処理を行うことにしても良い。
さらに,ここで実施の形態4の色変換処理方法およびその装置の第1および第2の変形例を説明する。
(第1の変形例)
上記拡張プリンタ・ドライバ212は,描画命令がビットマップ画像,グラフィック画像,文字のいずれの描画命令かを判定し,判定結果に応じて,描画命令に付加されていた色変換パラメータをオブジェクトの種類に応じた色変換パラメータに置換することにしている。ところで,特定のオブジェクト,例えば,プレゼンテーション用のグラフィックス内の文字については,モニタ画面に近い色よりも,プレゼンテーション用として訴求力のある色が求められることがある。一般に,色変換しない場合のプリント出力は,モニタ画面よりも濃く鮮やか目に出力されることが多いことから,第1の変形例では,文字の描画命令であると判定した場合には,色変換パラメータを置換することなく,元々付加されていた色変換パラメータをクリアし,カラー・マッチング処理が施されることのないようにする。
図27は,第1の変形例の処理手順を示すフローチャートである。なお,図27において,図25と同一のステップについては同一のステップ番号を付し,その説明を省略する。
上述した色変換パラメータをクリアする処理は,ステップS2701で実行される。その結果,拡張プリンタ・ドライバ212からプリンタ・ドライバ213へ色変換パラメータのない描画命令が出力されることになり,描画色情報にカラー・マッチング処理を施すことなくそのままプリンタ・ドライバ213を介してプリンタ217に出力される。なお,色変換パラメータをクリアする処理は,描画対象のオブジェクトの種類を判定する際に行うことができる。
(第2の変形例)
次に,第2の変形例について説明する。第2の変形例においても第1の変形例と同様に,特定の場合に色変換パラメータをクリアすることについて説明する。
シアン,マゼンタ,イエロー,ブラック,レッド,グリーン,ブルー,ホワイト(ベタおよび低濃度色を含む)といった原色またはそれに準ずる色(以下,これらを「特色」という)は,カラー・マッチングの誤差が大きくなる傾向があるため,積極的に誤差を回避するという意味で,カラー・マッチングを行わない方が良い場合がある。そこで,第2の変形例では,文字の色が上記各色のいずれかである場合に,その文字の描画色情報についてはカラー・マッチング処理を施さないようにするものである。ただし,グラデーション部でカラー・マッチングを行わないことによる弊害の発生を防止するため,グラデーションがほとんど適用されない文字部に上記特色が使用されている場合に限定して,カラー・マッチングを行わないようにすることが望ましい。
図28は,第2の変形例の処理手順を示すフローチャートである。なお,図28において,図25と同一のステップについては同一のステップ番号を付し,その説明を省略する。
拡張プリンタ・ドライバ212が,図28のステップS2505において文字の描画命令であると判定した場合,さらに,描画色情報に基づいて,その文字の色が上記特色であるか否かを判定する(S2801)。ステップS2801において,文字が特色ではないと判定した場合は,上述したように,描画命令に付加されている色変換パラメータを文字用の色変換パラメータに置換する(S2802)。一方,文字が特色であると判定した場合は,描画命令に付加されている色変換パラメータをクリアする。その結果,拡張プリンタ・ドライバ212からプリンタ・ドライバ213へ色変換パラメータのない描画命令が出力されることになり,描画色情報にカラー・マッチング処理を施すことなくそのままプリンタ・ドライバ213を介してプリンタ217に出力される。
〔実施の形態5〕
実施の形態5の色変換処理装置およびその方法は,実施の形態3の動的にリンク可能なプログラムモジュールの機能拡張方法を適用することにより,カラー・マッチングに対応していないプリンタ・ドライバの機能を拡張して,カラー・マッチングに対応させるというものである。
プリンタ・ドライバがカラー・マッチングに対応している場合は,実施の形態4で説明したように,色変換エンジンをコールすることができるが,プリンタ・ドライバがカラー・マッチングに対応していない場合は,色変換エンジンをコールすることができず,その結果,カラー・マッチング処理を行うことができない。そこで,実施の形態5では,色変換エンジンをコールすることができる拡張プリンタ・ドライバをカラー・マッチングに対応していないプリンタ・ドライバに加えることにして,本来不可能であったカラー・マッチング処理を行うことができるようにする。
図29は,実施の形態5の色変換処理装置のブロック構成図である。図29において,290はアプリケーションを,291は実施の形態3で説明した上位モジュール130に該当する描画モジュールを,292は実施の形態3で説明した拡張DLL151,170,190に該当する拡張プリンタ・ドライバを,293はモニタプロファイル294とプリンタプロファイル295とに基づいてカラー・マッチング処理を実行する色変換エンジンを,296は実施の形態3で説明したDLL150に該当するプリンタ・ドライバを,297はプリンタを示している。
描画モジュール291は,アプリケーション290から描画命令(プリント命令)および描画色情報を入力し,後述する初期化処理で生成したカラー・マッチング方法に対応したパラメータ(以下「色変換パラメータ」という)を入力した描画命令に付加し,その描画命令と描画色情報とを拡張プリンタ・ドライバ292に出力する。
また,拡張プリンタ・ドライバ292は,描画モジュール291とプリンタ・ドライバ296との間に設けられており,描画モジュール291によってコールされる。この拡張プリンタ・ドライバ292は,描画モジュール291から描画命令および描画色情報を入力し,入力した描画命令に基づいて,描画命令がいかなる種類のオブジェクトの描画命令であるかを判定し,判定結果に基づいて,後述する初期化処理で生成したオブジェクトの種類に応じて用意された複数の色変換パラメータから該当する種類の色変換パラメータを選択し,選択した色変換パラメータを付加した色変換命令を生成して,入力した描画色情報と共に色変換エンジン293へ出力する。その後,色変換エンジン293からカラー・マッチング処理が施された描画色情報を入力し,描画命令と描画色情報とをプリンタ・ドライバ296に出力する。
また,色変換エンジン293は,拡張プリンタ・ドライバ292から色変換パラメータが付加された色変換命令と描画色情報とを入力し,入力デバイスの色特性情報であるモニタプロファイル294と出力デバイスの色特性情報であるプリンタプロファイル295に基づいて,描画色情報にカラー・マッチング処理を施すものである。なお,色変換エンジン293によるカラー・マッチング処理の詳細については,実施の形態1で説明した通りであるため,ここではその説明を省略する。
さらに,プリンタ・ドライバ296は,上述したように,カラー・マッチングに対応していないものである。このプリンタ・ドライバ296は,拡張プリンタ・ドライバ292から描画命令およびカラー・マッチング処理が施された描画色情報を入力すると,描画命令をプリンタ297固有の描画命令に変換し,描画色情報と共にプリンタ297に出力する。
なお,プリンタ・ドライバ296は,カラー・マッチングに対応していないため,実施の形態4で説明した図21および図22に示すような設定画面を有していない。そこで,実施の形態5では,上記設定画面を拡張プリンタ・ドライバ292に持たせることにし,ユーザが拡張プリンタ・ドライバ292を介してカラー・マッチングの有無およびカラー・マッチングの方法を指定することができるようにしている。
また,上述した実施の形態4に係る色変換処理装置の構成において,拡張プリンタ・ドライバ292が本発明の種類判定手段,選択手段および出力手段に,色変換エンジン293が色変換手段に,プリンタ・ドライバ296が描画命令変換手段にそれぞれ該当する(請求項13)。
次に,実施の形態5の色変換処理方法について,(1)ドライバ初期化時の処理,(2)オブジェクトの種類の判定処理,色変換処理および描画命令発行処理の順でフローチャートを参照しつつ説明する。
(1)ドライバ初期化時の処理
図30は,実施の形態5の色変換処理方法におけるドライバ初期化時の処理手順を示すフローチャートである。
描画モジュール291は,プリンタ・ドライバ296に対してプリンタ情報・ドライバ情報の問い合わせを行い,プリンタ情報・ドライバ情報を取得する(S3001)。具体的には,まず,拡張プリンタ・ドライバ292が描画モジュール291からの問い合わせを受け取り,受け取った問い合わせをプリンタ・ドライバ296に渡す。そして,拡張プリンタ・ドライバ292は,プリンタ・ドライバ296からプリンタ情報・ドライバ情報に関する戻り値を受け取り,受け取った戻り値にカラー・マッチングに関する情報を付け加えた上で,戻り値を描画モジュール291に渡す。その結果,描画モジュール291からは,プリンタ・ドライバ296がカラー・マッチングに対応しているように見えることになる。
そして,描画モジュール291は,取得したプリンタ情報・ドライバ情報に基づいて,プリンタ・ドライバ296がカラー・マッチングに対応しており,かつ,カラー・マッチングありの指定を受けているかを判定する(S3002)。プリンタ・ドライバ296はカラー・マッチングに対応していないが,拡張プリンタ・ドライバがカラー・マッチングに対応している。また,カラー・マッチングありの指定は,拡張プリンタ・ドライバ292において,上述した図21および図22に示す設定画面に基づきユーザが行う。
ステップS3002において,プリンタ・ドライバ296がカラー・マッチングに対応していないと判定した場合,またはカラー・マッチングに対応しているがカラー・マッチングありの指定がないと判定した場合には,そのまま初期化処理を終了する。
一方,ステップS3002において,プリンタ・ドライバ296がカラー・マッチングに対応しており,かつ,カラー・マッチングありの指定があると判定した場合,描画モジュール291は,色変換パラメータ生成命令を発行する(S3003)。
拡張プリンタ・ドライバ292は,カラー・マッチングに対応している,即ち色変換パラメータに対する引数を有し,色変換命令をエキスポートしているため,描画モジュール291から色変換パラメータ生成命令を入力すると,予め設定された条件に基づいて,色変換エンジン293に描画対象となる3種類のオブジェクト毎に色変換パラメータを生成する色変換パラメータ生成命令を発行する(S3004)。ここで,3種類のオブジェクトとは,実施の形態4で説明したように,ビットマップ画像,文字およびその他のグラフィック画像のことである。
色変換エンジン293は,拡張プリンタ・ドライバ292から3種類の色変換パラメータ生成命令を入力すると,ビットマップ画像の色変換パラメータ,文字の色変換パラメータおよびその他のグラフィックの色変換パラメータをそれぞれ生成し,生成した3種類の色変換パラメータを拡張プリンタ・ドライバ292に出力する(S3005)。
拡張プリンタ・ドライバ292は,色変換エンジン293から3種類の色変換パラメータを入力し,入力した3種類の色変換パラメータを保持すると共に,そのうちの1つの色変換パラメータを描画モジュール291に出力する(S3006,S3007)。
そして,描画モジュール291は,拡張プリンタ・ドライバ292から1つの色変換パラメータを入力して保持し,初期化処理を終了する(S3008)。描画モジュール291は,実際に描画命令を出力する際に,保持している色変換パラメータを付加する。
なお,上述した説明においては,説明の便宜上,拡張プリンタ・ドライバ292から色変換エンジン293の間における3種類の色変換パラメータの生成処理を同時に行うように説明したが,実際には,色変換パラメータ生成命令の出力と色変換パラメータの生成とをオブジェクトの種類毎に行うことになる。すなわち,図30に示すステップS3004〜S3006の処理を3回繰り返すことになる。
(2)オブジェクトの種類の判定処理,色変換処理および描画命令発行処理
続いて,オブジェクトの種類の判定処理,色変換処理および描画命令発行処理について説明する。図31は,実施の形態5の色変換処理方法において,オブジェクトの種類の判定処理,色変換処理および描画命令発行処理の手順を示すフローチャートである。
描画モジュール291は,アプリケーション290から描画命令(印刷命令)と描画色情報を入力すると,描画命令に上述した初期化処理で生成した色変換パラメータを付加し,色変換パラメータが付加された描画命令および描画色情報を出力する。拡張プリンタ・ドライバ292は,実施の形態4で説明したように,描画命令の名称に基づいて,いかなる種類のオブジェクトの描画命令であるかを判定するすることができる機能を有している。したがって,拡張プリンタ・ドライバ292は,描画モジュール291から描画命令および描画色情報を入力すると,入力した描画命令がいかなる種類のオブジェクトの描画命令であるか否かを判定する(S3101,S3103,S3105)。
すなわち,拡張プリンタ・ドライバ292は,描画モジュール291から描画命令および描画色情報を入力し,入力した描画命令の名称に基づいて,描画命令がビットマップ画像の描画命令であるか否かを判定する(S3101)。
ステップS3101において,ビットマップ画像の描画命令であると判定した場合,拡張プリンタ・ドライバ292は,初期化処理で生成して保持している3種類の色変換パラメータからビットマップ画像用の色変換パラメータを選択し,選択した色変換パラメータを付加した色変換命令と描画色情報とを色変換エンジン293に出力する(S3102)。
色変換エンジン293は,拡張プリンタ・ドライバ292から色変換命令および描画色情報を入力し,入力した色変換命令に付加されたビットマップ画像用の色変換パラメータに基づいて,描画色情報にカラー・マッチング処理を施し,カラー・マッチング処理を施した描画色情報を拡張プリンタ・ドライバ292に出力する(S3103)。
そして,拡張プリンタ・ドライバ292は,色変換エンジンからカラー・マッチング処理後の描画色情報を入力し,描画命令と描画色情報とをプリンタ・ドライバ296に出力して処理を終了する(S3104)。なお,ここで,色変換パラメータが付加された描画命令は,カラー・マッチングに未対応のプリンタ・ドライバに出力するために新たな描画命令に再生成される。
一方,ステップS3101において,ビットマップ画像の描画命令ではないと判定した場合,拡張プリンタ・ドライバ292は,入力した描画命令がグラフィック画像の描画命令であるか否かを判定する(S3105)。
ステップS3105において,グラフィック画像の描画命令であると判定した場合,拡張プリンタ・ドライバ292は,初期化処理で生成して保持している3種類の色変換パラメータからグラフィック画像用の色変換パラメータを選択し,選択した色変換パラメータを付加した色変換命令と描画色情報とを色変換エンジン293に出力する(S3106)。
色変換エンジン293は,拡張プリンタ・ドライバ292から色変換命令および描画色情報を入力し,入力した色変換命令に付加されたグラフィック画像用の色変換パラメータに基づいて,描画色情報にカラー・マッチング処理を施し,カラー・マッチング処理を施した描画色情報を拡張プリンタ・ドライバ292に出力する(S3107)。
そして,拡張プリンタ・ドライバ292は,色変換エンジンからカラー・マッチング処理後の描画色情報を入力し,描画命令と描画色情報とをプリンタ・ドライバ296に出力して処理を終了する(S3108)。
また,ステップS3105において,グラフィック画像の描画命令ではないと判定した場合,拡張プリンタ・ドライバ292は,入力した描画命令が文字の描画命令であるか否かを判定する(S3109)。
ステップS3109において,文字の描画命令であると判定した場合,拡張プリンタ・ドライバ292は,初期化処理で生成して保持している3種類の色変換パラメータから文字用の色変換パラメータを選択し,選択した色変換パラメータを付加した色変換命令と描画色情報とを色変換エンジン293に出力する(S3110)。
色変換エンジン293は,拡張プリンタ・ドライバ292から色変換命令および描画色情報を入力し,入力した色変換命令に付加された文字用の色変換パラメータに基づいて,描画色情報にカラー・マッチング処理を施し,カラー・マッチング処理を施した描画色情報を拡張プリンタ・ドライバ292に出力する(S3111)。
そして,拡張プリンタ・ドライバ292は,色変換エンジンからカラー・マッチング処理後の描画色情報を入力し,描画命令と描画色情報とをプリンタ・ドライバ296に出力して処理を終了する(S3112)。
さらに,ステップS3109において,文字の描画命令ではないと判定した場合,拡張プリンタ・ドライバ292は,その引数に何ら変更を加えることなく,そのままプリンタ・ドライバ296に出力して処理を終了する。
その後,プリンタ・ドライバ296は,拡張プリンタ・ドライバ292から描画命令および描画色情報を入力し,入力した描画命令をプリンタ297固有の描画命令に変換し,描画色情報と共にプリンタ297に出力する。すなわち,プリンタ・ドライバ296は,拡張プリンタ・ドライバ292の存在に拘わらず,描画命令とカラー・マッチング処理後の描画色情報とを受け取って,通常の処理を実行するのみで良い。
このように,実施の形態5の色変換処理方法およびその装置によれば,カラー・マッチングに対応し,かつオブジェクトの種類を判定することができる拡張プリンタ・ドライバ292を設けたため,カラー・マッチングに対応していないプリンタ・ドライバをカラー・マッチングに対応しているように拡張することができ,かつ,オブジェクトの種類に応じて適切なカラー・マッチング処理を実行することができる。
なお,実施の形態5では,拡張プリンタ・ドライバ292が保持する3種類の色変換パラメータをドライバの初期化時に生成することにしたが,これを描画命令が発行され,その描画命令がいかなる種類のオブジェクトの描画命令であるかを判定した後,判定した種類に応じて生成することもできる。
また,拡張プリンタ・ドライバ292は,描画命令がビットマップ画像,グラフィック画像または文字のいずれの描画命令であるかを判定することにしたが,これら3種類に限らず,さらに細分化または再分類化して判定処理を行うことにしても良い。
さらに,ここでは詳細な説明を省略するが,実施の形態4で説明した第1および第2の変形例を実施の形態5の色変換処理装置およびその方法に適用することもできる。
最後に,図32に前述した実施の形態1〜5を実現するハード構成の一例を示す。図において,101はCPU,102はROM,103はRAM,104はハードディスク,105はフロッピー(R)ディスクドライブ装置,106は操作部,107はCD−ROMドライブ装置,108は通信部,109はネットワーク拡張ボード,110はプリンタをそれぞれ示す。
以上の構成において,本発明の色変換処理装置は,プログラムとして実現され,ハードディスク104に格納されている。そして,CPU101によってRAM103中に読み出され,実行されることによって本発明の色変換処理装置が実現される。
また,本発明の色変換処理方法,動的にリンク可能なプログラムモジュールの拡張方法およびそれを適用した色変換処理方法をそれぞれプログラム化し,これらをフロッピー(R)ディスク,ハードディスク,CD−ROM,DVD等のコンピュータが読取可能な記録媒体に記録することができる。そして,フロッピー(R)ディスク装置105やCD−ROM装置107等を介し,CPU101がこれらの記録媒体からプログラムを読み出して実行することにより,上述した処理を行うことができる。また,CPU101は,通信部108,ネットワーク拡張ボード109等を介して,上記プログラムを送信または受信することもできる。