図1は本発明に係る画像処理システムの一実施形態を示す構成図である。
画像処理システム10は、通信網100、画像処理装置1000、入力装置9010、及び出力装置9020で構成されている。
通信網は、例えば、LAN(Local Area Network )、WAN(Wide Area Network)、MAN(Metropolitan Area Network)、又は公衆回線網で構成され、画像処理装置1000、入力装置9010、及び出力装置9020をそれぞれ通信可能に接続する。
画像処理装置1000は、通信網100を介して入力装置9010及び出力装置9020に接続している。画像処理装置1000は、入力装置9010が入力した画像を表す画像情報を取得する。
尚、入力装置9010が入力する画像情報が表す画像を構成する色は、入力装置9010が取り扱う色信号に対応した色空間を用いて表される。つまり、入力装置9010が入力する画像情報を構成する色は、入力装置9010に依存した形式で表される。
本実施例では、入力装置9010に依存した形式として、7チャネル(色)入力であるRGBCMYK方式(赤(R)、緑(G)、青(B)、シアン(C)、マゼンダ(M)、黄(Y)、黒(K))で1つの色を表す形式を採用する。
次に、画像処理装置1000は、取得した画像情報を構成する色の形式を、入力装置9010に依存した形式から出力装置9020に依存した形式へと変換する。
本実施例では、出力装置9020に依存した形式として、4チャネル出力であるCMYK方式(シアン(C)、マゼンダ(M)、黄(Y)、黒(K))で1つの色を表す形式を採用する。つまり、画像処理装置1000が変換した画像情報が表す画像を構成する色は、出力装置9020が取り扱う色信号に対応した色空間(CMYK)を用いて表される。
ここで、入力装置9010又は出力装置9020に依存した形式で色を表す情報を依存色情報といい、入力装置9010及び出力装置9020から独立した形式で色を表す情報を独立色情報という。
本実施例では、独立色情報は、入力装置9010及び出力装置9020が取り扱う色信号に対応していない色空間を用いて色を表す。具体例としては、CIE L*a*b*方式(明度(L*)、緑から赤の範囲の要素(a*)、青から黄の範囲の要素(b*))で1つの色を表す形式を採用する。
ここで図2を参照して、画像処理装置1000の構成について説明する。図2は、画像処理装置1000の一実施形態を示す構成図である。
画像処理装置1000は、通信部1010、二次記憶部1020、変換部1030、一次記憶部1040、及びスクリーン処理部1050で構成される。
通信部1010、変換部1030、及びスクリーン処理部1050が有する各機能は、画像処理装置1000が実行するソフトウェア制御により実現される。
ここで、図3を参照して、ソフトウェア制御を実行するための画像処理装置1000のハードウェア構成について説明する。図3は、このソフトウェア制御を実現するための画像処理装置1000のハードウェアの一構成例を表す図である。
画像処理装置1000は、例えば、CPU(Central Processing Unit)等の演算部1001、EPROM(Erasable Programmable Read-Only Memory)又はEEPROM(Electrically Erasable Programmable Read-Only Memory)等の読み出し専用メモリであるROM1002(Read-Only Memory )、DRAM(Dynamic RAM)又はSRAM(Static RAM)等の揮発性メモリ及びNVRAM(Non Volatile RAM)等の不揮発性メモリで構成されるRAM1003(Random Access Memory)、並びにハードディスク等の外部記憶装置で構成される外部記憶部1004で構成され、演算部1001、ROM1002、RAM1003、及び外部記憶部1004は互いにバス1005によって接続している。
ソフトウェア制御は、ROM1002又は外部記憶部1004に格納したプログラムを演算部1001が読み、読込んだプログラムに従って演算部1001が演算を行うことにより上記各部の機能を実現する。なお、RAM1003には、演算結果のデータが書き込まれ、特にNVRAMには、電源オフ時にバックアップが必要なデータが保存される。
ここで、図1に戻り、画像処理装置1000の構成について引き続き説明する。
通信部1010は、例えば、ネットワークアダプタで構成され、通信網100、二次記憶部1020、変換部1030、及びスクリーン処理部1050に接続している。
通信部1010は、通信網100を通じて、入力装置9010又は出力装置9020に依存した依存形式で表された画像情報、若しくは独立形式で表された画像情報と、画像情報を入力した入力装置9010の特性を表す情報及び画像情報が表す画像を出力する出力装置9020の特性を表す情報の少なくとも1つを受信する。
以下主に、入力装置9010に依存した依存形式で表された画像情報と画像情報を入力した入力装置9010及び画像情報が表す画像を出力する出力装置9020の特性を表す情報とを受信する場合について説明する。
尚、入力装置9010又は出力装置9020の特性を表す情報(以下単に、特性情報という)は、入力装置9010又は出力装置9020の特性を表すICC(International Color Consortium)プロファイルを含む。
ここで図4を参照して、ICCプロファイルのファイルフォーマットについて説明する。図4は、ICCプロファイルのファイルフォーマットの一例を説明するための図である。
図4に示すICCプロファイルは、プロファイルヘッダー部PH、タグカウント部TC、1又は複数のレコード部TTR、及び要素部TEDで構成される。
プロファイルヘッダー部PHは、ICCプロファイルの検索やソートをするために必要な情報を保存する128byteの領域である。具体的には、プロファイルヘッダー部PHは、特性を表す装置を特定するための情報やICCプロファイルのファイルサイズ等を保存する。タグカウント部TCは、レコード部TTRの数を保存する4byteの領域である。
ここで図5を参照して、レコード部TTRの構成について説明する。図5は、レコード部TTRの一構成例を説明するための図である。
レコード部TTRは、タグ種類部TS、オフセット部TO、及びサイズ部TZで構成される。タグ種類部TSは、オフセット部TOが所在を表す要素部TEDに保存した情報の種類を表す情報を保存する4byteの領域である。
具体的には、要素部TEDに保存した情報がAToB情報であることを表すAToBタグ、BToA情報であることを表すBToAタグ、及びGamut情報であることを表すGamutタグを含む。
AToB情報及びBToA情報は、入力装置9010又は出力装置9020に依存した形式で色を表す依存色情報と、入力装置9010又は出力装置9020から独立した形式で色を表す独立色情報とをそれぞれが表す色で関連付けた情報である。
特に、AToB情報は、関連付けた独立色情報を依存色情報に基づいて検索する場合に用いられる情報であり、BToA情報は、関連付けた依存色情報を独立色情報に基づいて検索する場合に用いられる情報である。
Gamut情報は、ICCプロファイルが特性を表す入力装置9010が入力できる色領域、又は出力装置9020が出力できる色領域を表す情報である。
尚、ICCプロファイルが記述するAToB情報又はBToA情報を、以下単に、主DLUT(Direct Look Up Table)という。
オフセット部TOは、要素部TEDの所在を表すオフセット情報を保存する4byteの領域である。サイズ部TZは、オフセット部TOが所在を表す要素部TEDサイズを表す情報を保存する4byteの領域である。
尚、上記の主DLUTの所在を表す情報は、AToBタグ又はBToAタグに関連付けられたオフセット情報を含み、上記のGamut情報の所在を表す情報は、Gamutタグに関連付けられたオフセット情報を含む。
尚、第n番目(nは自然数であってタグカウント部が保存する数よりも小さい)のレコード部TTRを構成するタグ種類部TS、オフセット部TO、及びサイズ部TZが保存する情報は、第n番目の要素部TEDに関する情報である。
ここで、図4に戻り、ICCプロファイルの構成について引き続き説明する。
要素部TEDは、対応するレコード部TTRのタグ種類部TSが保存する情報で表される種類の情報を保存する。具体的には、AToB情報、BToA情報(つまり主DLUT)、及びGamut情報を含む。
ここで図6を参照して、主DLUTについて説明する。図6は、主DLUTの一例を表す図である。
尚、本実施例では、入力装置9010に依存した形式はRGBCMYK空間を用いて色を表す形式であるとして説明しているが、図6、後述する表2、表3、表5においては、説明の便宜上RGB空間を用いて色を表す場合を例に挙げて説明する。
図6に示す主DLUTは、入力装置9010に依存した形式であるRGB形式で表される色を、入力装置9010及び出力装置9020から独立した形式であるL*a*b*形式に変換するために使用されるルック・アップ・テーブルである。
図6に示す主DLUTは、R座標、G座標、及びB座標の全てが0以上かつ255以下となるRGB空間を、原点からR軸方向に座標値16刻みでR軸に垂直に分割し、原点からG軸方向に座標値16刻みでG軸に垂直に分割し、かつ原点からB軸方向に座標値16刻みでB軸に垂直に分割したそれぞれの部分空間(以下単に、副DLUTという)の各頂点座標で表される色と、L*a*b*形式で表される色とをそれぞれが表す色で関連付ける。
ここで表1を参照して、主DLUTを表す情報について説明する。表1は、主DLUTを表す情報の一例を説明するための表である。
表1は、番号フィールド、Bフィールド、Gフィールド、Rフィールド、Lフィールド、aフィールド、及びbフィールドを有している。番号フィールド、Bフィールド、Gフィールド、及びRフィールドは、レコード番号、B座標値、G座標値、及びR座標値を保存する。
Lフィールド、aフィールド、及びbフィールドは、同一レコードのRフィールド、Gフィールド、及びBフィールドに保存する座標値で表される色を、L*a*b*空間を用いた形式で表した場合の座標値である明度を表す数値(L*)、緑から赤の範囲の要素を表す数値(a*)、青から黄の範囲の要素を表す数値(b*)を保存する。
つまり、RGB空間において、座標(0,0,0)で表される黒色は、L*a*b*形式で表すと(0, 127,127)という座標値で表される色に変換することを表す。
尚、表1は、番号フィールドの値が互いに重複するレコード、並びにBフィールド、Gフィールド、及びRフィールドの値がすべて重複するレコードを有することはない。
ここで、表1は、B座標軸、G座標軸、B座標軸の順に、各レコードに副DLUTの頂点座標を格納する。また、同じ座標軸同士では、当該座標軸の値が少ない色から順に、副DLUTの頂点座標を格納する。
よって、あるRGB座標値(Rt,Gt,Bt)に関連付けられたL*a*b*座標値を取得するためには、後述する基底アドレスを算出しさえすれば、座標値(Rt,Gt,Bt)と一致するR,G,Bフィールドの値を有するDLUTを特定できる。
ここで、基底アドレスは、以下に示す数式1で表され、RGB座標値(Rt,Gt,Bt)を保存したレコードのレコード番号に一致する。
ここで、Aは基底アドレスを、int(x)は、変数 x の整数部分を返す関数を、Rt、Gt、Btは、それぞれR軸、G軸、B軸の座標値を表す。
ここで、図2に戻り、画像処理装置1000の構成について引き続き説明する。
通信部1010は、受信した画像情報を変換部1030へ出力し、受信した特性情報を二次記憶部1020へ保存する。
また、通信部1010は、スクリーン処理部1050から二値化処理を受けた画像情報を取得し、取得した画像情報を出力装置9020へ通信網100を介して送信する。
二次記憶部1020は、例えば、ハードディスク等の外部記憶装置で構成される二次記憶装置であり、図3で説明した外部記憶部1004と同一である。二次記憶部1020は、通信部1010及び変換部1030に接続する。
二次記憶部1020は、通信部1010が取得した特性情報を記憶し、記憶した情報を変換部1030により参照される。
変換部1030は、通信部1010、二次記憶部1020、一次記憶部1040、及びスクリーン処理部1050に接続している。変換部1030は、通信部1010から画像情報を、二次記憶部1020からは特性情報を取得し、取得した特性情報の一部を一次記憶部1040に読出す。
次に、変換部1030は、一次記憶部1040に読出した特性情報を用いて画像情報の表現形式を変換し、変換した画像情報をスクリーン処理部1050へ出力する。
ここで図7を参照して、変換部1030の一構成例について説明する。図7は、変換部1030の一構成例について説明するための図である。
変換部1030は、情報取得部1031、色取得部1032、読出部1034、及び画像変換部1035で構成されている。
情報取得部1031は、二次記憶部1020が記憶した入力装置9010又は出力装置9020の特性を表す特性情報から主DLUTの所在を表す情報及びGamut情報の所在表す情報を取得する情報取得処理を実行する。その後、情報取得部1031は、取得した情報を読出部1034へ出力する。
色取得部1032は、通信部1010から画像情報を取得し、画像情報が表す画像を構成する色を取得する色取得処理を実行する。
ここで図8を参照して、色取得部1032が実行する色取得処理について説明する。図8は、色取得部1032が実行する色取得処理の一例を表すフローチャートである。
先ず、色取得部1032は、通信部1010から画像情報を取得する(ステップST0001)。次に、色取得部1032は、取得した画像情報が表す画像の全ての画素についてステップST0003から0005の処理を実行したか否かを判断する(ステップST0002)。
色取得部1032は、全ての画素について処理を実行したと判断する場合には色取得処理の実行を終了し、そうでない場合にはステップST0003の処理を実行する。
色取得部1032は、全ての画素について処理を実行していないと判断した場合には、未処理の画素の1つを処理対象画素とする(ステップST0003)。次に、色取得部1032は、未処理画素の色を色リストに既に登録したか否かを判断する(ステップST0004)。
色取得部1032は、既に登録したと判断する場合にはステップST0002に戻り上記処理を繰り返す、そうでない場合にはステップST0005の処理を実行する。
尚、色リストは、色取得部1032が検出した色をリスト形式で保存するリスト変数であって、色取得処理の実行時に保存する情報を削除して初期化される。よって表1を参照して、色リストについて説明する。表2は、色取得部1032が検出した色を登録する色リストの一例を示す表である。
表2に示す色リストは、番号フィールド、Bフィールド、Gフィールド、Rフィールド、及び基底アドレスフィールドを有している。番号フィールドは、表2が有する要素を識別するための番号を保存し、Bフィールド、Gフィールド及びRフィールドは、色取得部1032が検出した色を、RGB空間を用いて表した場合のB座標値、G座標値、及びR座標値を保存する。
また、基底アドレスフィールドは、同一レコードに保存されたR座標値、G座標値、及びB座標値に基づいて算出される基底アドレスを保存する。尚、色取得部1032が色取得処理を実行する際には、基底アドレスを保存しない。
尚、表2は、番号フィールドの値が互いに重複するレコード、並びにBフィールド、Gフィールド、及びRフィールドの値がすべて重複するレコードを有することはない。
ここで図8に戻り、引き続き色取得部1032が実行する色取得処理について説明する。
ステップST0004において、色取得部1032は、未処理画素の色を色リストに既に登録していないと判断した場合には、未処理画素の色を色リストに追加登録する(ステップST0005)。その後、色取得部1032は、ステップST0002に戻り上記処理を繰り返す。
ここで図7に戻り、変換部1030の構成について引き続き説明する。
読出部1034は、情報取得部1031が取得した情報で所在が特定される主DLUTから、色取得部1032が取得した色の形式を変換するための副DLUTを抽出して一次記憶部1040へ読出す読出処理を実行する。
ここで図9を参照して、読出部1034が実行する読出処理について説明する。図9は、読出部1034が実行する読出処理の一例を表すフローチャートである。
先ず、読出部1034は、色取得部1032等をから色リスト等の読出処理の実行に必要な情報を取得する読出前処理を実行する(ステップST0101)。尚、読出前処理については後述する。
次に、読出部1034は、読出前処理の実行により取得した色リストに含まれる色に基づいて基底アドレスを算出し、算出したアドレスを後述するアドレスリストに格納するアドレス算出処理を実行する(ステップST0102)。尚、アドレス算出処理については後述する。
その後、読出部1034は、アドレス算出処理の実行により取得したアドレスリストに含まれる全てのアドレスについてステップST0104の処理を実行したか否かを判断する(ステップST0103)。読出部1034は、アドレスリストに含まれる全アドレスについて処理を実行したと判断する場合にはステップST0105の処理を、そうでない場合にはステップST0104の処理を実行する。
ステップST0103において、読出部1034は、アドレスリストに含まれる全てのアドレスについて処理を実行していないと判断した場合には、アドレス毎に個別に、基底アドレスで特定される副DLUTを二次記憶部1030が記憶する主DLUTから抽出して一次記憶部1040へ読出す個別読出処理を実行する(ステップST0104)。その後、読出部1034は、ステップST0103に戻り上記処理を繰り返す。
ステップST0103において、読出部1034は、アドレスリストに含まれる全てのアドレスについて処理を実行したと判断した場合には、変換部1030へ終了通知を通知する(ステップST0105)。その後、読出部1034は、読出処理の実行を終了する。
次に図10を参照して、読出部1034が実行する読出前処理について説明する。図10は、読出部1034が実行する読出前処理の一例を表すフローチャートである。
先ず、読出部1034は、色取得部1032から色リストを取得する(ステップST0201)。次に、読出部1034は、情報取得部1031からAToBタグ及びBToAタグに関連付けたオフセット情報を取得する(ステップST0202)。
その後、読出部1034は、取得したオフセット情報により二次記憶上の主DLUTの位置を特定する(ステップST0203)。次に、読出部1034は、読出前処理の実行を終了する。
次に図11を参照して、読出部1034が実行するアドレス算出処理について説明する。図11は、読出部1034が実行するアドレス算出処理の一例を表すフローチャートである。
先ず、読出部1034は、読出前処理で取得した色リストの全ての色について、ステップST0302からST0307の処理を実行したか否かを判断する(ステップST0301)。読出部1034は、全ての色について処理を実行したと判断する場合にはアドレス算出処理を終了し、そうでない場合にはステップST0302の処理を実行する。
ステップST0301において、読出部1034は、色リストの全色を処理していないと判断した場合には、色リスト内の未処理の色の1つを処理対象色とする(ステップST0302)。次に、処理対象色に基づいて、上記数式1を用いて基底アドレスを算出する(ステップST0303)。
その後、読出部1034は、ステップST0303で算出した基底アドレスと処理対象色とを色リスト上で関連付けて登録する(ステップST0304)。
ここで表3を参照して、色リストを構成する色と色リストを構成する色に基づいて算出された基底アドレスとの関係を説明する。表3は、表2に示した色リストであって、色リストを構成する色に基づいて算出された基底アドレスが登録された表の一例である。
表3の構成は、表2の構成と同様であるので説明を省略する。尚、基底アドレスフィールドには、同一レコードに保存されたR座標、G座標、B座標から算出された基底アドレスを保存する点で表2と異なる。尚、第1から第3レコードが表す色は、RGB空間上は異なる点として表されるが、算出される基底アドレスは同じ値となる。また、第5から第7レコードが表す色についても同様である。
ここで図11に戻り引続きアドレス算出処理について説明する。
読出部1034は、ステップST0303で算出した基底アドレスが、アドレスリストに既に追加済みであるか否かを判断する(ステップST0305)。
尚、アドレスリストは、読出部1034が算出した基底アドレスを登録するリストであり、読出部1034がアドレス算出処理を実行開始する際に全要素を削除して初期化されるリストである。
読出部1034は、算出した基底アドレスがアドレスリストに追加済みであると判断する場合にはステップST0307の処理を、そうでない場合にはステップST0306の処理を実行する。
ステップST0305において、読出部1034は、算出した基底アドレスをアドレスリストに追加していないと判断した場合には、算出した基底アドレスと初期値0を有するカウンタと関連付けてアドレスリストに追加する(ステップST0306)。
ステップST0305において、読出部1034は、算出した基底アドレスをアドレスリストに既に追加していると判断した場合、又はステップST0306を実行した後には、算出した基底アドレスと関連付けてアドレスリストに登録したカウンタを1だけ増加させる(ステップST0307)。その後、読出部1034は、ステップST0301に戻り上記処理を繰り返す。
ここで表4を参照して、読出部1034が使用するアドレスリストについて説明する。表4は、読出部1034が使用するアドレスリストの一例を説明するための表である。
表4は、基底アドレスフィールド及びカウンタフィールドを有し、基底アドレスフィールドは基底アドレスを保存し、カウンタフィールドはカウンタを保存する。尚、表4は、基底アドレスフィールドの値が互いに重複するレコードを有することはない。
また、表4は、表3に示す色リストを用いて読出部1034がアドレス算出処理を実行することで得られる。
次に図12を参照して、読出部1034が実行する個別読出処理について説明する。図12は、読出部1034が実行する個別読出処理の一例を表すフローチャートである。
先ず、読出部1034は、アドレスリスト内の未処理のアドレスの1つを処理対象アドレスとする(ステップST0401)。次に、処理対象アドレスに基づいて二次記憶部1020上の副DLUTを特定する(ステップST0402)。
より詳細に説明すると、読出部1034は、処理対象アドレスのみならず、AToBタグに関連付けたオフセット情報をも用いて、二次記憶部1020が記憶するICCプロファイルから抽出すべき副DLUTの頂点座標を特定する。
ここで表5を参照して、処理対象アドレスと処理対象アドレスに基づいて抽出する副DLUTの頂点座標と頂点座標により算出される基底アドレスとの関係について説明する。表5は、処理対象アドレスと処理対象アドレスに基づいて抽出する副DLUTの頂点座標と頂点座標により算出される基底アドレスとの関係について説明するための表である。
表5は、番号フィールド、Rフィールド、Gフィールド、Bフィールド、及び基底アドレスフィールドを有している。番号フィールドは副DLUTの頂点を識別する番号を、Rフィールドは副DLUTの頂点のR座標を、Gフィールドは副DLUTの頂点のG座標を、Bフィールドは副DLUTの頂点のB座標を、基底アドレスフィールドは副DLUTの頂点座標から算出される基底アドレスを保存する。
int(x)を x の整数部分を返す関数であるとし、かつRT=int(Rt/16)*16, GT=int(Gt/16)*16, BT=int(Bt/16)*16とすると、RGB空間上の座標(Rt, Gt, Bt)で表される色点を包含する副DLUTの頂点座標は、表5が有するレコードに保存されたR座標、G座標、B座標で表される。
また、A を座標(Rt, Gt, Bt)に基づいて算出された基底アドレス(つまり、A = int(Rt/16)*17^0, int(Gt/16)*17^1, int(Bt/16)*17^0)とすると、表5に保存されたレコードが保存する副DLUTの頂点座標に基づいて算出される基底アドレスは、それぞれ基底アドレスフィールドに保存された数式を計算することで得られる。
ここで図12に戻り引続き読出部1034が実行する個別読出処理について説明する。
ステップST0402を実行した後に、読出部1034は、読出部1034は、処理対象アドレスと関連付けたカウンタが所定の閾値よりも大きいか否かを判断する(ステップST0403)。読出部1034は、カウンタが所定の閾値よりも大きいと判断する場合にはステップST0404の処理を、そうでない場合にはステップST0407の処理を実行する。尚、処理対象カウンタの値と比較する所定の閾値については後述する。
ステップST0403において、読出部1034は、カウンタが所定の閾値よりも大きいと判断した場合には、読出部1034は、特定した副DLUTの頂点座標を一次記憶部1040へ読出す(ステップST0404)。
次に、読出部1034は、読出した副DLUTの頂点座標と基底アドレスとを後述する補間テーブルに登録する(ステップST0405)。その後、読出部1034は、個別読出処理の実行を終了する。
ここで表6を参照して補間テーブルについて説明する。表6は、補間テーブルの一例を示す表である。
表6は、基底アドレスフィールド、Lフィールド、aフィールド、及びbフィールドを有する。基底アドレスフィールドは基底アドレスを保存する。Lフィールド、aフィールド、及びbフィールドは、RGB形式で表される副DLUTの頂点座標で表す色をL*a*b*形式で表した場合のL*座標、a*座標、b*座標を保存する。
尚、Lフィールド、aフィールド、及びbフィールドは、副DLUTが有する頂点毎にL*座標、a*座標、b*座標を保存するため、3次元空間における副DLUTについては、8個(つまり、2^3個)のLフィールド、aフィールド、及びbフィールドを有する。
また表6は、表4のアドレステーブルが保存する基底アドレスの内で、カウンタの値が2より大きいアドレスに基づいて特定される副DLUTの頂点に関するL*a*b*座標を保存する。
ここで図12に戻り、引続き個別読出処理について説明する。
ステップST0403において、読出部1034は、カウンタが所定の閾値よりも大きくないと判断した場合には、読出部1034は、特定した副DLUTの頂点座標を一次記憶部1040へ読出す(ステップST0406)。次に、読出部1034は、色リストから処理対象アドレスに関連付けた色を取得する(ステップST0407)。
次に、読出部1034は、取得した全ての色についてステップST0409からST0411の処理を実行したか否かを判断する(ステップST0408)。読出部1034は、全ての色について処理を実行したと判断する場合には個別読出処理の実行を終了し、そうでない場合にはステップST0409の処理を実行する。
ステップST0409において、読出部1034は、取得した全ての色について処理を実行していないと判断した場合には、未処理の色の1つを処理対象色とする(ステップST0409)。次に、読出部1034は、副DLUTの頂点座標を用いた補間により処理対象色の表現形式を変換する(ステップST0410)。
より補間について詳細に説明すると、処理対象色が副DLUTの頂点座標のいずれか1つに一致する場合には、読出部1034は、副DLUTが処理対象色に関係付ける変換後の色形式に直接変換する。
しかし、処理対象色が副DLUTの頂点座標のいずれにも一致しない場合には、読出部1034は、例えば、四面体補間等の副DLUTの頂点座標の一部の点、又は全部の点を用いて補間する補間方法を実行することで処理対象色の表現形式を変換する。
尚、副DLUTの頂点座標の一部の点のみを用いて補間する場合には、補間に用いられる副DLUTの一部の頂点座標のみを補間テーブルに保存する構成を採用できる。
次に、読出部1034は、表現形式を変換する前の処理対象色の座標値と変換した後の処理対象色の座標値とを関連付けて後述する即値テーブルに登録する(ステップST0411)。その後、読出部1034は、ステップST0409に戻り上記処理を繰り返す。
ここで表7を参照して、即値テーブルについて説明する。表7は、即値テーブルの一例を示す表である。
表7は、番号フィールド、Bフィールド、Gフィールド、Rフィールド、Lフィールド、aフィールド、及びbフィールドを有する。番号フィールドはレコードを識別する番号を、Bフィールド、Gフィールド、及びRフィールドは処理対象色のR座標、G座標、及びR座標を保存する。また、Lフィールド、aフィールド、及びbフィールドは、補間された変換後の処理対象色のL*座標、a*座標、及びb*座標を保存する。
尚、ステップST0407で用いる所定の閾値が以下の数式2を満足する場合には、所定の個数の色を変換するために使用するn個の頂点座標を補間テーブルに保存することで使用する記憶領域よりも、変換前後の座標を関連付けた情報を所定の個数だけ保存することで使用する記憶領域の方が少なくなる。
ここで、Thは所定の閾値を、nは補間テーブルが保存する副DLUTの頂点数を、Naは変換後の座標の次元数を、Nbは変換前の座標の次元数を表し、基底アドレスの値はA Byteの記憶領域を、基底アドレスを除く値は1Byteの記憶領域を使用するものとする。
次に図13を参照して、個別読出処理の他例について説明する。図13は、読出部1034が実行する個別読出処理の他例を表すフローチャートである。
尚、図13に示す個別読出処理は、補間テーブルに既に登録した副DLUTの近傍に位置する副DLUTを登録しない場合がある点で、図12に示す個別読出処理と異なる。
先ず、読出部1034は、ステップST0501及びST0502の処理を実行する(ステップST0501及びST0502)。ステップST0501及びST0501の処理は、図12を参照して説明したステップST0401及びST0402の処理と同様であるので説明を省略する。
次に、読出部1034は、処理対象アドレスと関連付けたカウンタが所定の閾値を超えるか否かを判断する(ステップST0503)。読出部1034は、カウンタが所定の閾値を超えると判断する場合にはステップST0504及びST0505の処理を実行した後に、個別読出処理の実行を終了する(ステップST0504及びST0505)。尚、ステップST0503及びST0504の処理は、図12を参照して説明したステップST0404及びST0405の処理と同様であるので説明を省略する。
ステップST0503において、読出部1034は、カウンタが所定の閾値を超えないと判断した場合には、特定した副DLUTの近傍の副DLUTの頂点座標が既に補間テーブルに登録されているか否かを判断する(ステップST0506)。読出部1034は、近傍の副DLUTが既に登録されていると判断する場合にはステップST0507の処理を、そうでない場合にはステップST0508の処理を実行する。
尚、近傍の副DLUTは、特定した副DLUTに隣接する副DLUTを含む。隣接する副DLUTが補間テーブルに登録されているか否かは、特定した副DLUTの頂点座標に基づいて算出される基底アドレスが補間テーブルに登録されているか否かによって知ることが出来る。
ステップST0506において、読出部1034は、近傍の副DLUTが未だ登録されていないと判断した場合には、ステップST0508からST0513の処理を実行した後に、個別読出処理の実行を終了する(ステップST0508からST0513)。尚、ステップST0508からST0513の処理は、図12を参照して説明したステップST0406からST0411の処理と同様であるので説明を省略する。
ステップST0506において、読出部1034は、近傍の副DLUTが既に登録されていると判断した場合には、既に登録された副DLUTの頂点座標と既に登録された基底アドレスと、処理対象アドレスとを関連付けて補間テーブルを更新登録する(ステップST0507)。
ここで表8を参照して、補間テーブルの他例について説明する。表8は、補間テーブルの他例を示す表である。
表8は、基底アドレスフィールド、Lフィールド、aフィールド、及びbフィールドを有する点で、表6と同様であるが、近傍アドレスフィールドを有する点で異なる。
基底アドレスフィールド、Lフィールド、aフィールド、及びbフィールドが保存する情報は、表6の基底アドレスフィールド、Lフィールド、aフィールド、及びbフィールドが保存する情報と同様であるので説明を省略する。
近傍フィールドは、基底アドレスフィールドに保存された基底アドレスによって特定される副DLUTの近傍に位置する副DLUTを特定する基底アドレスを保存する。
ステップ0507においては、近傍の副DLUTを特定する登録済みの基底アドレスが基底アドレスフィールドに、近傍の副DLUTの登録済みの頂点座標がLフィールド、aフィールド、及びbフィールドに、処理対象アドレスが近傍フィールドにそれぞれ登録される。
次に、図14を参照して、読出部1034が実行する読出処理の他例について説明する。図14は、読出部1034が実行する読出処理の他例を表すフローチャートである。
尚、図14に示す読出処理は、所定の場合には入力装置9010が入力可能な色の表現形式を変換するために用いる副DLUTを一括して読出す点で図9に示す読出処理と異なる。
先ず、読出部1034は、ステップST0601及びST0602の処理を実行する(ステップST0601及びST0602)。尚、ステップST0601及びST0602の処理は、図9を参照して説明したステップST0101及びST0102の処理と同様であるので説明を省略する。
次に、読出部1034は、ステップST0602において、アドレス算出処理の実行で求めた基底アドレス数から判断される読出し対象とする副DLUTの数が、所定の閾値を超えるか否かを判断する(ステップST0603)。読出部1034は、基底アドレス数が所定の閾値を超えると判断する場合にはステップST0606の処理を、そうでない場合にはステップST0604の処理を実行する。
ステップST0603において、読出部1034は、基底アドレス数が所定の閾値を超えないと判断した場合には、ステップST0604、ST0605、及びST0607の処理を実行する(ステップST0604、ST0605、及びST0607)。その後、読出部1034は、読出処理の実行を終了する。尚、ステップST0604、ST0605、及びST0607の処理は、図9を参照して説明したステップST0103、ST0104、及びST0105の処理と同様であるので説明を省略する。
ステップST0603において、読出部1034は、基底アドレス数が所定の閾値を超えると判断した場合には、入力装置9010が入力可能な色の表現形式を変換するために用いる副DLUTを一括して読出す一括読出処理を実行する(ステップST0606)。その後、読出部1034は、ステップST0607の処理を実行した後に、読出処理の実行を終了する。
ここで図15を参照して、読出部1034が実行する一括読出処理について説明する。図15は、読出部1034が実行する一括読出処理の一例を表すフローチャートである。
先ず、読出部1034は、情報取得部1031からGamutタグに関連付けたオフセット情報を取得する(ステップST0701)。次に、読出部1034は、取得したオフセット情報に基づいて、二次記憶部1020から Gamut 情報を取得する(ステップST0702)。その後、読出部1034は、取得した Gamut 情報に基づいて色変換に用いる副DLUTを特定する。(ステップST0703)。
より詳細に説明すると、入力装置9010の特性を表すICCプロファイルから取得したGamut 情報は、入力装置9010が入力可能な色の範囲を表すため、読出部1034は、Gamut 情報が表す範囲の色を変換するために用いる全ての副DLUTの二次記憶部1020上の位置を特定する。
次に、読出部1034は、取得した Gamut 情報に基づいて特定した副DLUTを一括して、二次記憶部1020から一次記憶部1040へと読出す(ステップST0704)。
その後、読出部1034は、読出した全ての副DLUTについてステップST0706から0708の処理を実行したか否かを判断する(ステップST0705)。読出部1034は、読出した全ての副DLUTについて処理を実行したと判断する場合には一括読出処理の実行を終了する、そうでない場合にはステップST0706の処理を実行する。
ステップST0705において、読出部1034は、読出した全ての副DLUTについて処理を実行していないと判断した場合には、未処理の副DLUTの1つを処理対象DLUTとする(ステップST0706)。
次に、読出部1034は、処理対象DLUTを特定する基底アドレスを計算する(ステップST0707)。その後、読出部1034は、処理対象DLUTと算出した基底アドレスとを関連付けて補間テーブルに登録する(ステップST0708)。次に、読出部1034は、ステップST0705に戻り上記処理を繰り返す。
ここで、読出部1034は、図9及び図14を参照して説明した読出処理を実行することで、入力装置9010に依存した依存色情報であるRGBCMYK形式の情報から入力装置9010及び出力装置9020から独立した独立色情報であるL*a*b*形式の情報に変換するための副DLUTを読出するとして説明した。
しかし、読出部1034は、ほぼ同様の処理を実行することによって、出力装置9020に依存した依存色情報から独立色情報に変換するための副DLUTを読出せる。尚、この場合には、読出部1034は、副DLUTを出力装置9020の特徴を表すICCプロファイルのAToB情報から取得する構成を採用する。
また、読出部1034は、ほぼ同様の処理を実行することによって、独立色情報から入力装置9010又は出力装置9020に依存した依存色情報へ変換するための副DLUTを読出すことができる。尚、この場合には、読出部1034は、副DLUTを入力装置9010又は出力装置9020の特徴を表すICCプロファイルのBToA情報から取得する構成を採用する。
更にまた、読出部1034は、ほぼ同様の処理を繰り返し実行することによって、入力装置9010(又は出力装置9020)に依存した依存色情報から、独立色情報へ変換するための副DLUTを読出し、かつ変換した独立色情報から出力装置9020(又は入力装置9010)に依存した依存色情報へと変換するための副DLUTを読出すことができる。尚、この場合には、読出部1034は、副DLUTを入力装置9010(又は出力装置9020)の特徴を表すICCプロファイルのAToB情報から取得し、かつ出力装置9020(又は入力装置9010)の特徴を表すICCプロファイルのBToA情報から取得する構成を採用する。
つまり、読出部1034は、同様の処理を実行することによって、入力装置9010(又は出力装置9020)に依存した依存色情報から、出力装置9020(又は入力装置9010)に依存した依存色情報へ変換するための副DLUTを読出すことができる。
更に、読出部1034は、ほぼ同様の処理を実行することで、入力装置9010(又は出力装置9020)に依存した依存色情報から、出力装置9020(又は入力装置9010)に依存した依存色情報へ変換するための主DLUTを記述する電子ファイルから副DLUTを読出す構成を採用できる。
また、本実施例では、主DLUTを記述する電子ファイルの例として、ICCプロファイルを挙げて説明したが、これに限定される訳ではなく、国際カラーコンソーシアム(ICC:International Color Consortium)が策定したカラーマネージメント規格以外の規格に従って記述された電子ファイルから副DLUTを抽出する構成を採用できる。
尚、読出部1034は、同様の処理を実行することで、入力装置9010(又は出力装置9020)に依存した依存色情報から、出力装置9020(又は入力装置9010)に依存した依存色情報へ変換するための副DLUTを読出すことができる。尚、この場合には、読出部1034は、副DLUTを入力装置9010及び出力装置9020の特徴を表す特性情報から、入力装置9010(又は出力装置9020)に依存した依存色情報と、出力装置9020(又は入力装置9010)に依存した依存色情報とをそれぞれが表す色で関連付けた主DLUTを取得する構成を採用する。
ここで図7に戻り変換部1030の構成について引続き説明を行う。
画像変換部1035は、通信部1010、読出部1034及び一次記憶部1040に接続している。画像変換部1035は、通信部1010から画像情報を取得し、読出部1034は読出処理の実行終了通知を受領し、読出部1034が一次記憶部1040に読出した副DLUTを参照する。
画像変換部1035は、取得した画像情報の色の表現形式を副DLUTを用いて変換する画像変換処理を実行する。
ここで図16を参照して、画像変換部1035が実行する画像変換処理について説明する。図16は、画像変換部1035が実行する画像変換処理の一例を表すフローチャートである。
先ず、画像変換部1035は、通信部1010から画像情報を取得する(ステップST0801)。次に、画像変換部1035は、画像情報が表す画像を構成する全画素についてステップST0803からST0809の処理を実行したか否かを判断する(ステップST0802)。画像変換部1035は、全画素について処理をしたと判断する場合にはステップST0810の処理を、そうでない場合にはステップST0803の処理を実行する。
ステップST0802において、画像変換部1035は、全画素について処理を実行していない判断する場合には、未処理の画素の1つを処理対象画素とする(ステップST0803)。次に、画像変換部1035は、処理対象画素が表す色から基底アドレスを算出する(ステップST0804)。
その後、画像変換部1035は、表6及び8で示した補間テーブルの基底アドレスフィールド又は近傍アドレスフィールドに、基底アドレスが登録されているか否かを判断する(ステップST0805)。画像変換部1035は、補間テーブルに基底アドレスが登録されていると判断する場合にはステップST0806の処理を、そうでない場合にはステップST0808の処理を実行する。
ステップST0805において、画像変換部1035は、補間テーブルに基底アドレスが登録されていると判断した場合には、補間テーブルから算出した基底アドレスに関連付けた副DLUTの頂点座標を取得する(ステップST0806)。その後、画像変換部1035は、取得した頂点座標を用いて補間処理を実行して変換後の色を表す座標値を取得する(ステップST0807)。
ステップST0805において、画像変換部1035は、補間テーブルに基底アドレスが登録されていないと判断した場合には、算出した基底アドレスに関連付けた補間後の座標値を即値テーブルから取得する(ステップST0808)。
ステップST0807及びST0808を実行した後に、画像変換部1035は、補間後の座標値で処理対象画素の色の表現形式を変換する(ステップST0809)。その後、画像変換部1035は、ステップST0802に戻り上記処理を繰り返す。
ステップST0802において、画像変換部1035は、全画素について処理を実行したと判断する場合には、色の表現形式を変換した画像情報を通信部1010へ出力する(ステップST0810)。その後、画像変換部1035は、画像変換処理の実行を終了する。
つまり、読出部1034が入力装置9010(又は出力装置9020)に依存した依存色情報から独立色情報へ変換するための副DLUTを読出した場合には、画像変換部1035は画像変換処理を実行することで、入力装置9010(又は出力装置9020)に依存した依存色情報で表される画像を、読出部が一次記憶部1040に読出した副DLUTの座標値を補間して算出される独立色情報によって表される画像に変換する。
また、読出部1034が独立色情報からへ入力装置9010(又は出力装置9020)に依存した依存色情報変換するための副DLUTを読出した場合には、画像変換部1035は画像変換処理を実行することで、独立色情報で表される画像を、読出部1034が一次記憶部1040に読出した副DLUTの座標値を補間して算出される入力装置9010(又は出力装置9020)に依存した依存色情報によって表される画像に変換する。
更に、読出部1034が入力装置9010(又は出力装置9020)に依存した依存色情報から独立色情報へ変換するための副DLUT、及び変換された独立色情報を出力装置9020(又は入力装置9010)に依存した依存色情報へ変換するための副DLUTの2種類の副DLUTを読出した場合には、画像変換部1035は画像変換処理を繰り返し実行することで、入力装置9010(又は出力装置9020)に依存した依存色情報で表される画像を、出力装置9020(又は入力装置9010)に依存した依存色情報で表される画像へと変換する。
更にまた、読出部1034が入力装置9010(又は出力装置9020)に依存した依存色情報から出力装置9020(又は入力装置9010)に依存した依存色情報へ変換するための副DLUTを読出した場合には、入力装置9010(又は出力装置9020)に依存した依存色情報で表される画像を、出力装置9020(又は入力装置9010)に依存した依存色情報で表される画像へと変換する。
尚、本実施例では、入力装置9010に依存した依存色情報で表される画像情報を通信部1010が受信し、受信した画像情報を出力装置9020に依存した依存色情報で表される画像情報へと変換する場合について主に説明している。
次に、図17を参照して、変換部1030が画像の表現形式を変換するために実行する変換処理について説明する。図17は、変換部1030が実行する変換処理の一例を表すフローチャートである。
先ず、変換部1030を構成する情報取得部1031は、上述の情報取得処理を実行する(ステップST0901)。次に、変換部1030を構成する色取得部1032は、図8を参照して説明した色取得処理を実行する(ステップST0902)。
その後、変換部1030を構成する読出部1034は、図9及び14を参照して説明した読出処理を実行する(ステップST0903)。次に、変換部1030を構成する画像変換部1030は、図16を参照して説明した画像変換処理を実行する(ステップST0904)。その後、変換部1030は、変換処理の実行を終了する。
ここで図2に戻り画像処理装置1000の構成について引続き説明する。
スクリーン処理部1050は、変換部1030に接続する。スクリーン処理部1050は、変換部1030が変換した画像情報に対して、画像の階調表現をするためのスクリーン処理を実行する。その後、処理を施した画像情報を通信部1010へ出力する。
ここで図1に戻り画像処理システム10の構成について引続き説明する。
入力装置9010は、通信網100を介して画像処理装置1000に接続している。入力装置9010は、例えば、スキャナ又はFAX装置で構成され、画像処理装置1000に制御されて、又は入力装置9010を操作するユーザの指示に従って画像を入力し、入力した画像を表す画像情報を画像処理装置1000へ出力する。
出力装置9020は、通信網100を介して画像処理装置1000に接続している。出力装置9020は、例えば、プリンタ、ディスプレイ、FAX装置、又はパーソナル・コンピュータで構成される。
出力装置9020は、画像処理装置1000制御されて、又は出力装置9020を操作するユーザの指示に従って画像処理装置1000から画像情報を取得し、取得した画像情報が表す画像を印刷出力、表示出力、又は、特定のアプリケーションに対応したファイルフォーマットを有する電子ファイルへ出力する。
上記実施例1では、画像処理装置1000は通信部1010を有し、通信部1010が画像情報、並びに入力装置9010又は出力装置9020の特性を表す情報を受信するとして説明した。
しかし、これに限定される訳ではなく、画像処理装置1000は通信部1010を有さずに、例えば、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disk Read Only Memory)、DVD−RAM(Digital Versatile Disk Random Access Memory)、MO(magneto-optic)、及び、フラッシュメモリ(flash memory)で構成される外部記憶装置を有し、フレキシブルディスク等の外部記憶装置から画像情報、並びに入力装置9010又は出力装置9020の特性を表す情報を取得する構成を採用できる。
また、上記実施例1では、画像処理装置1000は通信部1010を有し、通信部1010が色の表現形式を変換した画像情報を出力装置9020へ送信するとして説明した。
しかし、これに限定される訳ではなく、画像処理装置1000は通信部1010を有さずに、例えば、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disk Read Only Memory)、DVD−RAM(Digital Versatile Disk Random Access Memory)、MO(magneto-optic)、及び、フラッシュメモリ(flash memory)で構成される外部記憶装置を有し、フレキシブルディスク等の外部記憶装置へ、変換された画像情報を出力する構成を採用できる。
本実施例においては、通信部1010が受信手段に相当し、色取得部1032が色取得手段に相当し、読出部1034が読出手段に相当し、画像変換部1035が画像変換手段に相当する。
以下、本発明の第2の実施形態について説明する。
第2の実施例における情報処理システムは、出力装置を有しない点で実施例1における情報処理システムと異なる。