以下、本発明の一実施の形態について、図面を用いて説明する。
まず、本実施の形態に係る色変換テーブル生成装置の構成について説明する。
図1は、本実施の形態に係る色変換テーブル生成装置10のブロック図である。図2は、色変換テーブル生成装置10によって生成された色変換テーブルを記憶しているMFP(Multifunction Peripheral)20のブロック図である。
図1に示すように、色変換テーブル生成装置10は、種々の操作が入力されるマウスやキーボードなどの入力デバイスである操作部11と、種々の情報を表示するLCD(Liquid Crystal Display)などの表示デバイスである表示部12と、LAN(Local Area Network)、インターネットなどのネットワーク経由で外部の装置と通信を行う通信デバイスである通信部13と、プログラムおよび各種のデータを記憶しているHDD(Hard Disk Drive)などの記憶デバイスである記憶部14と、色変換テーブル生成装置10全体を制御する制御部15とを備えている。色変換テーブル生成装置10は、例えばPC(Personal Computer)などのコンピューターによって構成されている。
記憶部14は、RGB色空間の色をCMYK色空間の色に変換するためのMFP20(図2参照。)用の色変換テーブル14aを記憶することができる。
記憶部14は、色変換テーブル14aにおける色変換前の格子点の群を生成するための格子点群生成プログラム14bを記憶している。格子点群生成プログラム14bは、色変換テーブル生成装置10の製造段階で色変換テーブル生成装置10にインストールされていても良いし、CD(Compact Disk)、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリーなどの外部の記憶媒体から色変換テーブル生成装置10に追加でインストールされても良いし、ネットワーク上から色変換テーブル生成装置10に追加でインストールされても良い。
制御部15は、例えば、CPU(Central Processing Unit)と、プログラムおよび各種のデータを予め記憶しているROM(Read Only Memory)と、制御部15のCPUの作業領域として用いられるRAM(Random Access Memory)とを備えている。制御部15のCPUは、制御部15のROMまたは記憶部14に記憶されているプログラムを実行するようになっている。
制御部15は、記憶部14に記憶されている格子点群生成プログラム14bを実行することによって、van der Corput列を生成する数列生成手段15aと、格子点も生成する格子点生成手段15bとを実現する。
次に、図2に示すMFP20の構成について説明する。
図2は、本実施の形態に係るMFP20のブロック図である。
図2に示すように、MFP20は、種々の操作が入力されるボタンなどの入力デバイスである操作部21と、種々の情報を表示するLCDなどの表示デバイスである表示部22と、画像を読み取る読取デバイスであるスキャナー23と、用紙などの記録媒体に印刷を実行する印刷デバイスであるプリンター24と、図示していない外部のファクシミリ装置と公衆電話回線などの通信回線経由でファックス通信を行うファックスデバイスであるファックス通信部25と、LAN、インターネットなどのネットワーク経由で外部の装置と通信を行う通信デバイスである通信部26と、各種のデータを記憶している半導体メモリー、HDDなどの記憶デバイスである記憶部27と、MFP20全体を制御する制御部28とを備えている。
記憶部27は、RGB色空間の色をCMYK色空間の色に変換するための色変換テーブル27aを記憶することができる。
制御部28は、例えば、CPUと、プログラムおよび各種のデータを記憶しているROMと、制御部28のCPUの作業領域として用いられるRAMとを備えている。制御部28のCPUは、制御部28のROMまたは記憶部27に記憶されているプログラムを実行する。
次に、色変換テーブル生成装置10の動作について説明する。
図3は、色変換テーブル14aを生成する場合の色変換テーブル生成装置10の動作のフローチャートである。
図3に示すように、制御部15は、色変換テーブル14aにおける色変換前の格子点の群を生成する格子点群生成処理を実行する(S101)。
図4は、図3に示す格子点群生成処理のフローチャートである。
図4に示すように、制御部15の数列生成手段15aは、MFP20の記憶部27の容量的に色変換テーブル14a用に割り当て可能な格子点の最大数Smaxを得る(S111)。
次いで、数列生成手段15aは、次の式のように、S111において得たSmaxから特定の数pを引いた数を12で割った商nおよび余りlを算出する(S112)。
n = Floor[(Smax - p) / 12]
l = Smax - 12n
ここで、特定の数pは、色変換テーブル14aによる色変換前の色空間としてのRGB色空間の8つの角、すなわち、赤(red)、緑(green)、青(blue)、シアン(cyan)、マゼンタ(magenta)、イエロー(yellow)、黒(black)および白(white)を格子点とするための8と、RGB色空間においてグレー軸上に存在し白および黒のいずれでもない格子点としてのグレー軸上格子点の必要数と、RGB色空間において最外殻上に存在し8つの角のいずれでもない格子点としての最外殻上格子点の必要数との合計である。
最外殻上格子点には、RGB色空間において8つの角のいずれか2つの角の間の線分上に存在する格子点としての角間線分上格子点と、RGB色空間において最外殻の面、すなわち、r=0の面、r=1の面、g=0の面、g=1の面、b=0の面、および、b=1の面の上に存在する格子点としての最外殻面上格子点とが存在する。
角間線分上格子点には、最大彩度の線分、すなわち、red−yellowの間の線分、yellow−greenの間の線分、green−cyanの間の線分、cyan−blueの間の線分、blue−magentaの間の線分、および、magenta−redの間の線分の上の格子点が存在する。また、角間線分上格子点には、白(white)および1次色の間の線分、すなわち、white−redの間の線分、white−greenの間の線分、および、white−blueの間の線分の上の格子点と、白および2次色の間の線分、すなわち、white−cyanの間の線分、white−magentaの間の線分、および、white−yellowの間の線分の上の格子点とが存在する。また、角間線分上格子点には、黒(black)および1次色の間の線分、すなわち、black−redの間の線分、black−greenの間の線分、および、black−blueの間の線分の上の格子点と、黒および2次色の間の線分、すなわち、black−cyanの間の線分、black−magentaの間の線分、および、black−yellowの間の線分の上の格子点が存在する。
グレー軸上格子点の必要数と、最大彩度の線分上の格子点の必要数と、白および1次色の間の線分上の格子点の必要数と、白および2次色の間の線分上の格子点の必要数と、黒および1次色の間の線分上の格子点の必要数と、黒および2次色の間の線分上の格子点の必要数と、最外殻面上格子点の必要数とは、色変換テーブル14aの設計者が決定する。
制御部15は、S112の処理の後、RGB色空間の8つの角に対応する格子点と、グレー軸上格子点と、最外殻上格子点とのいずれでもない格子点(以下「普通格子点」という。)を色変換テーブル14aの格子点群の一部として生成する普通格子点生成処理を実行する(S113)。
図5は、図4に示す普通格子点生成処理のフローチャートである。
図5に示すように、数列生成手段15aは、S112において算出したnと項数が同数であって、基底が2以上の正の整数であるvan der Corput列を3種類生成する(S131)。なお、van der Corput列は、各項の数が0より大きく1より小さくなる数列である。
制御部15の格子点生成手段15bは、S131の処理の後、S131において生成された3種類のvan der Corput列をネストし行列変換をして『n行3列』の配列を得ることによって、商nと同数の3次元点群を生成する(S132)。
次いで、格子点生成手段15bは、S132において生成した3次元点群に関し、RGB色空間の各チャンネルを交換して組み合わせた写像点群を、色変換テーブル14aの格子点群の一部として生成する(S133)。
次いで、格子点生成手段15bは、S133において生成した格子点群の補色の格子点群を、色変換テーブル14aの格子点群の一部として生成する(S134)。例えば、格子点生成手段15bは、S133において生成した格子点が{r,g,b}であるとすると、その補色の格子点群として、{1-r,1-g,1-b}を生成する。
なお、S131において数列生成手段15aによって生成されるvan der Corput列としては、例えば、以下のいずれかのvan der Corput列が採用されることができる。
基底が2の場合のvan der Corput列
基底が3の場合のvan der Corput列
基底が5の場合のvan der Corput列
基底が7の場合のvan der Corput列
基底が9の場合のvan der Corput列
例えば、基底がそれぞれ2、3、5である3種類のvan der Corput列が数列生成手段15aによってS131において生成された場合、格子点生成手段15bは、S132において数6に示す3次元点群を生成する。ここで、RGB色空間は、R値、G値、B値の3つのチャンネルが存在し、3つのチャンネルの組み合わせ(交換)パターンは、{r,g,b}、{r,b,g}、{g,r,b}、{g,b,r}、{b,r,g}、{b,g,r}という6パターンが存在する。したがって、格子点生成手段15bは、S133において{r,g,b}のパターンを数6に示す3次元点群に対応付ける場合、数6に示す写像点群{r,g,b}を、色変換テーブル14aの格子点群の一部として生成する。また、格子点生成手段15bは、S133において{r,b,g}のパターンを数6に示す3次元点群に対応付ける場合、数7に示す写像点群{r,g,b}を、色変換テーブル14aの格子点群の一部として生成する。また、格子点生成手段15bは、S133において{g,r,b}のパターンを数6に示す3次元点群に対応付ける場合、数8に示す写像点群{r,g,b}を、色変換テーブル14aの格子点群の一部として生成する。また、格子点生成手段15bは、S133において{g,b,r}のパターンを数6に示す3次元点群に対応付ける場合、数9に示す写像点群{r,g,b}を、色変換テーブル14aの格子点群の一部として生成する。また、格子点生成手段15bは、S133において{b,r,g}のパターンを数6に示す3次元点群に対応付ける場合、数10に示す写像点群{r,g,b}を、色変換テーブル14aの格子点群の一部として生成する。また、格子点生成手段15bは、S133において{b,g,r}のパターンを数6に示す3次元点群に対応付ける場合、数11に示す写像点群{r,g,b}を、色変換テーブル14aの格子点群の一部として生成する。すなわち、格子点生成手段15bは、数列生成手段15aによってS131において生成された3種類のvan der Corput列のそれぞれをR値、G値およびB値からなる3つのチャンネルのそれぞれに対応付けた6パターンのそれぞれにおいて、3種類のvan der Corput列同士の同一の順番の項を座標とする格子点を生成する。
ここで、van der Corput列を多次元に素数で展開したものをHalton列と言う。したがって、基底がそれぞれ素数である3種類のvan der Corput列に基づいてS132において生成された3次元点群など、基底がそれぞれ素数である3種類のvan der Corput列に基づいてS132において生成された3次元点群は、Halton列である。Halton列は、乱数性が高く、格子点の配置の均一性を向上することができるので、好ましい。しかしながら、乱数性が落ちて格子点の配置に結晶構造性が現れたとしても、格子点生成手段15bは、S133の処理において格子点の座標のチャンネル情報を交換することによって、基本6色相の各色相面に対して対称になるように格子点群を配置し、更に、S133の処理において配置した格子点群の補色の格子点群もS134の処理において配置するので、格子点の配置の均一性を確保することができる。そのため、S131において生成される3種類のvan der Corput列は、基底が素数でなくても良い。例えば、S131において生成される3種類のvan der Corput列は、基底がそれぞれ2、3、9であっても良い。
制御部15は、S134の処理の後、図5に示す普通格子点生成処理を終了する。
図4に示すように、格子点生成手段15bは、S113の普通格子点生成処理が終了すると、RGB色空間の8つの角、すなわち、{r,g,b}がそれぞれ数12に示す値である格子点を、色変換テーブル14aの格子点群の一部として生成する(S114)。
次いで、制御部15は、グレー軸上格子点を色変換テーブル14aの格子点群の一部として生成するグレー軸上格子点生成処理を実行する(S115)。
図6は、図4に示すグレー軸上格子点生成処理において格子点が生成されるグレー軸を示す図である。
図4に示すグレー軸上格子点生成処理においては、図6において太線で示すグレー軸上の格子点、すなわち、グレー軸上格子点が生成される。
グレー軸上格子点の生成方法としては、例えば、グレー軸上において等間隔に、すなわち、線形な位置に格子点を生成する方法、グレー軸上において非線形な位置に格子点を生成する方法、van der Corput列の項を座標とする格子点を生成する方法など、様々な方法が採用されることが可能である。
図7は、グレー軸上において等間隔に格子点を生成する場合の図4に示すグレー軸上格子点生成処理のフローチャートである。
図7に示すように、格子点生成手段15bは、グレー軸上格子点の数Caを決定する(S141)。ここで、グレー軸上格子点の数Caは、S112において使用した、グレー軸上格子点の必要数が基本となる。しかしながら、グレー軸上格子点の数Caは、S112において算出した余りlの少なくとも一部を追加しても良い。例えば、格子点生成手段15bは、グレー軸上格子点の必要数に余りlの少なくとも一部を追加してグレー軸上格子点の数Caを決定する場合、余りlが6以上である場合に余りlから6を引いた数をグレー軸上格子点の必要数に追加しても良いし、余りlが6未満である場合に余りlの全てをグレー軸上格子点の必要数に追加しても良い。また、グレー軸上格子点の数Caは、S113の普通格子点生成処理において実際に生成された格子点が予定の格子点数より少ない場合には、S113の普通格子点生成処理において生成されることが予定されていた格子点の数と、S113の普通格子点生成処理において実際に生成された格子点の数との差分の少なくとも一部を追加しても良い。
格子点生成手段15bは、S141の処理の後、0から1までの範囲を(Ca+1)で等分する数値の列を求め(S142)、S142において求めた列から0および1を除外した列を求める(S143)。
次いで、格子点生成手段15bは、S143において求めた列の同一の項の数値をRGB色空間の各チャンネルに代入することによって、グレー軸上格子点を求める(S144)。
例えば、格子点生成手段15bは、グレー軸上格子点の数Caが3である場合、0から1までの範囲を(Ca+1)、すなわち、4で等分する数値の列として0、1/4、2/4、3/4、1をS142において求め、1/4、2/4、3/4をS143において求める。したがって、格子点生成手段15bは、{r,g,b}がそれぞれ数13に示す値である格子点をS144において求める。
格子点生成手段15bは、S144の処理の後、S144において求めたグレー軸上格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S145)、図7に示すグレー軸上格子点生成処理を終了する。
図8は、van der Corput列の項を座標とする格子点を生成する場合の図4に示すグレー軸上格子点生成処理のフローチャートである。
図8に示すように、格子点生成手段15bは、S141の処理と同様に、グレー軸上格子点の数Caを決定する(S151)。
次いで、数列生成手段15aは、S151において決定した数Caと項数が同数であって、基底が2以上の正の整数であるvan der Corput列を生成する(S152)。
次いで、格子点生成手段15bは、S151において生成されたvan der Corput列の同一の項の数値をRGB色空間の各チャンネルに代入することによって、グレー軸上格子点を求める(S153)。
例えば、S151において決定した数Caが16である場合、基底が2のとき、S152において生成されるvan der Corput列は、数14に示すようになり、S153において求められるグレー軸上格子点は、数15に示すようになる。また、S151において決定した数Caが16である場合、基底が3のとき、S152において生成されるvan der Corput列は、数16に示すようになり、S153において求められるグレー軸上格子点は、数17に示すようになる。
格子点生成手段15bは、S153の処理の後、S153において求めたグレー軸上格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S154)、図8に示すグレー軸上格子点生成処理を終了する。
図4に示すように、制御部15は、S115のグレー軸上格子点生成処理が終了すると、最外殻上格子点を色変換テーブル14aの格子点群の一部として生成する最外殻上格子点生成処理を実行する(S116)。
図9は、図4に示す最外殻上格子点生成処理のフローチャートである。
図9に示すように、制御部15は、最外殻上格子点のうち角間線分上格子点を色変換テーブル14aの格子点群の一部として生成する角間線分上格子点生成処理を実行する(S161)。
図10は、図9に示す角間線分上格子点生成処理のフローチャートである。
図10に示すように、制御部15は、角間線分上格子点のうち、最大彩度の線分上の格子点を色変換テーブル14aの格子点群の一部として生成する最大彩度線分上格子点生成処理を実行する(S171)。
図11は、図10に示す最大彩度線分上格子点生成処理において格子点が生成される最大彩度の線分を示す図である。
図10に示す最大彩度線分上格子点生成処理においては、図11において太線で示す最大彩度の線分上の格子点が生成される。
最大彩度の線分上の格子点の生成方法としては、例えば、最大彩度の線分上において等間隔に、すなわち、線形な位置に格子点を生成する方法、最大彩度の線分上において非線形な位置に格子点を生成する方法、van der Corput列の項を一部の座標とする格子点を生成する方法など、様々な方法が採用されることが可能である。
図12は、最大彩度の線分上において等間隔に格子点を生成する場合の図10に示す最大彩度線分上格子点生成処理のフローチャートである。
図12に示すように、格子点生成手段15bは、最大彩度の線分上の格子点の数Cbを決定する(S181)。ここで、最大彩度の線分上の格子点の数Cbは、S112において使用した、最大彩度の線分上の格子点の必要数が基本となる。しかしながら、最大彩度の線分上の格子点の数Cbは、S112において算出した余りlのうち、S115のグレー軸上格子点生成処理において使用されていない数の少なくとも一部を追加しても良い。例えば、格子点生成手段15bは、最大彩度の線分上の格子点の必要数に余りlの少なくとも一部を追加して数Cbを決定する場合、余りlのうち、S115のグレー軸上格子点生成処理において使用されていない数が6以上である場合に余りlのうち6を最大彩度の線分上の格子点の必要数に追加しても良い。また、最大彩度の線分上の格子点の数Cbは、S113の普通格子点生成処理において実際に生成された格子点が予定の格子点数より少ない場合には、S113の普通格子点生成処理において生成されることが予定されていた格子点の数と、S113の普通格子点生成処理において実際に生成された格子点の数との差分のうち、S115のグレー軸上格子点生成処理において使用されていない数の少なくとも一部を追加しても良い。
格子点生成手段15bは、S181の処理の後、0から1までの範囲を(Cb/6+1)で等分する数値の列を求め(S182)、S182において求めた列から0および1を除外した列を求める(S183)。
次いで、格子点生成手段15bは、S183において求めた列を使用して、最大彩度の各線分上において等間隔に配置される格子点を求める(S184)。
例えば、格子点生成手段15bは、数Cbが18である場合、0から1までの範囲を(Cb/6+1)、すなわち、4で等分する数値の列として0、1/4、2/4、3/4、1をS182において求め、1/4、2/4、3/4をS183において求める。そして、格子点生成手段15bは、red:{1,0,0}と、yellow:{1,1,0}とを結ぶred−yellowの間の線分上において等間隔に配置される格子点として、{r,g,b}がそれぞれ数18に示す値である格子点をS184において求める。格子点生成手段15bは、yellow−greenの間の線分、green−cyanの間の線分、cyan−blueの間の線分、blue−magentaの間の線分、および、magenta−redの間の線分の上の格子点についても、red−yellowの間の線分上の格子点と同様にS184において求める。
格子点生成手段15bは、S184の処理の後、S184において求めた、最大彩度の線分上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S185)、図12に示す最大彩度線分上格子点生成処理を終了する。
図13は、van der Corput列の項を一部の座標とする格子点を生成する場合の図10に示す最大彩度線分上格子点生成処理のフローチャートである。
図13に示すように、格子点生成手段15bは、S181の処理と同様に、最大彩度の線分上の格子点の数Cbを決定する(S191)。
次いで、数列生成手段15aは、S191において決定した数Cbを6で割った商と項数が同数であって、基底が2以上の正の整数であるvan der Corput列を生成する(S192)。
次いで、格子点生成手段15bは、S192において生成されたvan der Corput列を使用して、最大彩度の各線分上の格子点を求める(S193)。
例えば、S191において決定した数Cbが24である場合、基底が2のとき、S192において生成されるvan der Corput列は、数19に示すようになり、S193において求められる、red−yellowの間の線分上の格子点は、数20に示すようになる。格子点生成手段15bは、yellow−greenの間の線分、green−cyanの間の線分、cyan−blueの間の線分、blue−magentaの間の線分、および、magenta−redの間の線分の上の格子点についても、red−yellowの間の線分上の格子点と同様にS193において求める。
格子点生成手段15bは、S193の処理の後、S193において求めた、最大彩度の線分上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S194)、図13に示す最大彩度線分上格子点生成処理を終了する。
図10に示すように、制御部15は、S171の最大彩度線分上格子点生成処理が終了すると、角間線分上格子点のうち、白と、1次色および2次色との間の線分(以下「スカイライン(skyline)」という。)上の格子点を色変換テーブル14aの格子点群の一部として生成するスカイライン上格子点生成処理を実行する(S172)。
図14は、図10に示すスカイライン上格子点生成処理において格子点が生成されるスカイラインを示す図である。
図10に示すスカイライン上格子点生成処理においては、図14において太線で示すスカイライン上の格子点が生成される。
スカイライン上の格子点の生成方法としては、例えば、スカイライン上において等間隔に、すなわち、線形な位置に格子点を生成する方法、スカイライン上において非線形な位置に格子点を生成する方法、van der Corput列の項を一部の座標とする格子点を生成する方法など、様々な方法が採用されることが可能である。
図15は、スカイライン上において等間隔に格子点を生成する場合の図10に示すスカイライン上格子点生成処理のフローチャートである。
図15に示すように、格子点生成手段15bは、スカイライン上の格子点の数Ccを決定する(S201)。ここで、スカイライン上の格子点の数Ccは、S112において使用した、スカイライン上の格子点の必要数が基本となる。しかしながら、スカイライン上の格子点の数Ccは、S112において算出した余りlのうち、S115のグレー軸上格子点生成処理およびS171の最大彩度線分上格子点生成処理のいずれにおいても使用されていない数の少なくとも一部を追加しても良い。例えば、格子点生成手段15bは、スカイライン上の格子点の必要数に余りlの少なくとも一部を追加して数Ccを決定する場合、余りlのうち、S115のグレー軸上格子点生成処理およびS171の最大彩度線分上格子点生成処理のいずれにおいても使用されていない数が6以上である場合に余りlのうち6をスカイライン上の格子点の必要数に追加しても良い。また、スカイライン上の格子点の数Ccは、S113の普通格子点生成処理において実際に生成された格子点が予定の格子点数より少ない場合には、S113の普通格子点生成処理において生成されることが予定されていた格子点の数と、S113の普通格子点生成処理において実際に生成された格子点の数との差分のうち、S115のグレー軸上格子点生成処理およびS171の最大彩度線分上格子点生成処理のいずれにおいても使用されていない数の少なくとも一部を追加しても良い。
格子点生成手段15bは、S201の処理の後、0から1までの範囲を(Cc/6+1)で等分する数値の列を求め(S202)、S202において求めた列から0および1を除外した列を求める(S203)。
次いで、格子点生成手段15bは、S203において求めた列を使用して、各スカイライン上において等間隔に配置される格子点を求める(S204)。
例えば、格子点生成手段15bは、数Ccが12である場合、0から1までの範囲を(Cc/6+1)、すなわち、3で等分する数値の列として0、1/3、2/3、1をS202において求め、1/3、2/3をS203において求める。そして、格子点生成手段15bは、white:{1,1,1}と、red:{1,0,0}とを結ぶwhite−redの間の線分上において等間隔に配置される格子点として、{r,g,b}がそれぞれ数21に示す値である格子点をS204において求める。格子点生成手段15bは、white−greenの間の線分、white−blueの間の線分、white−cyanの間の線分、white−magentaの間の線分、および、white−yellowの間の線分の上の格子点についても、white−redの間の線分上の格子点と同様にS204において求める。
格子点生成手段15bは、S204の処理の後、S204において求めた、スカイライン上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S205)、図15に示すスカイライン上格子点生成処理を終了する。
図16は、van der Corput列の項を一部の座標とする格子点を生成する場合の図10に示すスカイライン上格子点生成処理のフローチャートである。
図16に示すように、格子点生成手段15bは、S201の処理と同様に、スカイライン上の格子点の数Ccを決定する(S211)。
次いで、数列生成手段15aは、S211において決定した数Ccを6で割った商と項数が同数であって、基底が2以上の正の整数であるvan der Corput列を生成する(S212)。
次いで、格子点生成手段15bは、S212において生成されたvan der Corput列を使用して、各スカイライン上の格子点を求める(S213)。
例えば、S211において決定した数Ccが18である場合、基底が2のとき、S212において生成されるvan der Corput列は、数22に示すようになり、S213において求められる、white−redの間の線分上の格子点は、数23に示すようになる。格子点生成手段15bは、white−greenの間の線分、white−blueの間の線分、white−cyanの間の線分、white−magentaの間の線分、および、white−yellowの間の線分の上の格子点についても、white−redの間の線分上の格子点と同様にS213において求める。
格子点生成手段15bは、S213の処理の後、S213において求めた、スカイライン上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S214)、図16に示すスカイライン上格子点生成処理を終了する。
図10に示すように、制御部15は、S172のスカイライン上格子点生成処理が終了すると、角間線分上格子点のうち、黒と、1次色および2次色との間の線分(以下「ボトムライン(bottomline)」という。)上の格子点を色変換テーブル14aの格子点群の一部として生成するボトムライン上格子点生成処理を実行する(S173)。
図17は、図10に示すボトムライン上格子点生成処理において格子点が生成されるボトムラインを示す図である。
図10に示すボトムライン上格子点生成処理においては、図17において太線で示すボトムライン上の格子点が生成される。
ボトムライン上の格子点の生成方法としては、例えば、ボトムライン上において等間隔に、すなわち、線形な位置に格子点を生成する方法、ボトムライン上において非線形な位置に格子点を生成する方法、van der Corput列の項を一部の座標とする格子点を生成する方法など、様々な方法が採用されることが可能である。
図18は、ボトムライン上において等間隔に格子点を生成する場合の図10に示すボトムライン上格子点生成処理のフローチャートである。
図18に示すように、格子点生成手段15bは、ボトムライン上の格子点の数Cdを決定する(S221)。ここで、ボトムライン上の格子点の数Cdは、S112において使用した、ボトムライン上の格子点の必要数が基本となる。しかしながら、ボトムライン上の格子点の数Cdは、S112において算出した余りlのうち、S115のグレー軸上格子点生成処理、S171の最大彩度線分上格子点生成処理およびS172のスカイライン上格子点生成処理のいずれにおいても使用されていない数の少なくとも一部を追加しても良い。例えば、格子点生成手段15bは、ボトムライン上の格子点の必要数に余りlの少なくとも一部を追加して数Cdを決定する場合、余りlのうち、S115のグレー軸上格子点生成処理、S171の最大彩度線分上格子点生成処理およびS172のスカイライン上格子点生成処理のいずれにおいても使用されていない数が6以上である場合に余りlのうち6をボトムライン上の格子点の必要数に追加しても良い。また、ボトムライン上の格子点の数Cdは、S113の普通格子点生成処理において実際に生成された格子点が予定の格子点数より少ない場合には、S113の普通格子点生成処理において生成されることが予定されていた格子点の数と、S113の普通格子点生成処理において実際に生成された格子点の数との差分のうち、S115のグレー軸上格子点生成処理、S171の最大彩度線分上格子点生成処理およびS172のスカイライン上格子点生成処理のいずれにおいても使用されていない数の少なくとも一部を追加しても良い。
格子点生成手段15bは、S221の処理の後、0から1までの範囲を(Cd/6+1)で等分する数値の列を求め(S222)、S222において求めた列から0および1を除外した列を求める(S223)。
次いで、格子点生成手段15bは、S223において求めた列を使用して、各ボトムライン上において等間隔に配置される格子点を求める(S224)。
例えば、格子点生成手段15bは、数Cdが12である場合、0から1までの範囲を(Cd/6+1)、すなわち、3で等分する数値の列として0、1/3、2/3、1をS222において求め、1/3、2/3をS223において求める。そして、格子点生成手段15bは、black:{0,0,0}と、red:{1,0,0}とを結ぶblack−redの間の線分上において等間隔に配置される格子点として、{r,g,b}がそれぞれ数24に示す値である格子点をS224において求める。格子点生成手段15bは、black−greenの間の線分、black−blueの間の線分、black−cyanの間の線分、black−magentaの間の線分、および、black−yellowの間の線分の上の格子点についても、black−redの間の線分上の格子点と同様にS224において求める。
格子点生成手段15bは、S224の処理の後、S224において求めた、ボトムライン上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S225)、図18に示すボトムライン上格子点生成処理を終了する。
図19は、van der Corput列の項を一部の座標とする格子点を生成する場合の図10に示すボトムライン上格子点生成処理のフローチャートである。
図19に示すように、格子点生成手段15bは、S221の処理と同様に、ボトムライン上の格子点の数Cdを決定する(S231)。
次いで、数列生成手段15aは、S231において決定した数Cdを6で割った商と項数が同数であって、基底が2以上の正の整数であるvan der Corput列を生成する(S232)。
次いで、格子点生成手段15bは、S232において生成されたvan der Corput列を使用して、各ボトムライン上の格子点を求める(S233)。
例えば、S231において決定した数Cdが18である場合、基底が2のとき、S232において生成されるvan der Corput列は、数22に示すようになり、S233において求められる、black−redの間の線分上の格子点は、数25に示すようになる。格子点生成手段15bは、black−greenの間の線分、black−blueの間の線分、black−cyanの間の線分、black−magentaの間の線分、および、black−yellowの間の線分の上の格子点についても、black−redの間の線分上の格子点と同様にS233において求める。
格子点生成手段15bは、S233の処理の後、S233において求めた、ボトムライン上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S234)、図19に示すボトムライン上格子点生成処理を終了する。
図10に示すように、制御部15は、S173のボトムライン上格子点生成処理が終了すると、図10に示す角間線分上格子点生成処理を終了する。
図9に示すように、制御部15は、S161の角間線分上格子点生成処理が終了すると、最外殻上格子点のうち最外殻面上格子点を色変換テーブル14aの格子点群の一部として生成する最外殻面上格子点生成処理を実行する(S162)。
最外殻面上格子点の生成方法としては、例えば、最外殻面上において等間隔に、すなわち、線形な位置に格子点を生成する方法、最外殻面上において非線形な位置に格子点を生成する方法、2種類のvan der Corput列同士の同一の順番の項を一部の座標とする格子点を生成する方法など、様々な方法が採用されることが可能である。
図20は、最外殻面上において等間隔に格子点を生成する場合の図9に示す最外殻面上格子点生成処理のフローチャートである。
図20に示すように、格子点生成手段15bは、最外殻面上の格子点の数Ceを決定する(S241)。ここで、最外殻面上の格子点の数Ceは、S112において使用した、最外殻面上の格子点の必要数が基本となる。しかしながら、最外殻面上の格子点の数Ceは、S112において算出した余りlのうち、S115のグレー軸上格子点生成処理およびS161の角間線分上格子点生成処理のいずれにおいても使用されていない数の少なくとも一部を追加しても良い。例えば、格子点生成手段15bは、最外殻面上の格子点の必要数に余りlの少なくとも一部を追加して数Ceを決定する場合、余りlのうち、S115のグレー軸上格子点生成処理およびS161の角間線分上格子点生成処理のいずれにおいても使用されていない数が6以上である場合に余りlのうち6を最外殻面上の格子点の必要数に追加しても良い。また、最外殻面上の格子点の数Ceは、S113の普通格子点生成処理において実際に生成された格子点が予定の格子点数より少ない場合には、S113の普通格子点生成処理において生成されることが予定されていた格子点の数と、S113の普通格子点生成処理において実際に生成された格子点の数との差分のうち、S115のグレー軸上格子点生成処理およびS161の角間線分上格子点生成処理のいずれにおいても使用されていない数の少なくとも一部を追加しても良い。
格子点生成手段15bは、S241の処理の後、0から1までの範囲を((Ce/6)^(1/2)+1)で等分する数値の列を求め(S242)、S242において求めた列から0および1を除外した列を求める(S243)。
次いで、格子点生成手段15bは、S243において求めた列を使用して、各最外殻面上において等間隔に配置される格子点を求める(S244)。
例えば、格子点生成手段15bは、数Ceが54である場合、0から1までの範囲を((Ce/6)^(1/2)+1)、すなわち、4で等分する数値の列として0、1/4、1/2、3/4、1をS242において求め、1/4、1/2、3/4をS243において求める。そして、格子点生成手段15bは、r=0の面上において等間隔に配置される格子点として、{r,g,b}がそれぞれ数26に示す値である格子点をS244において求める。格子点生成手段15bは、r=1の面、g=0の面、g=1の面、b=0の面、および、b=1の面の上の格子点についても、r=0の面上の格子点と同様にS244において求める。
なお、白および1次色の間の線分上の格子点、黒および2次色の間の線分上の格子点については、それぞれ、S172のスカイライン上格子点生成処理、S173のボトムライン上格子点生成処理において生成するので、S244において求める格子点から除外しても良い。そして、格子点生成手段15bは、除外した格子点の数の少なくとも一部の数分の格子点をグレー軸上格子点、最大彩度の線分上の格子点、スカイライン上の格子点、ボトムライン上の格子点、および、最外殻面上格子点の少なくとも1つに追加しても良い。
格子点生成手段15bは、S244の処理の後、S244において求めた、最外殻面上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S245)、図20に示す最外殻面上格子点生成処理を終了する。
図21は、2種類のvan der Corput列同士の同一の順番の項を一部の座標とする格子点を生成する場合の図9に示す最外殻面上格子点生成処理のフローチャートである。
図21に示すように、格子点生成手段15bは、S241の処理と同様に、最外殻面上の格子点の数Ceを決定する(S251)。
次いで、数列生成手段15aは、S251において決定した数Ceを6で割った商の平方根と項数が同数であって、基底が2以上の正の整数であるvan der Corput列を2種類生成する(S252)。
次いで、格子点生成手段15bは、S252において生成された2種類のvan der Corput列を使用して、各最外殻面上の格子点を求める(S253)。
例えば、S251において決定した数Ceが150である場合に、基底が2のvan der Corput列と、基底が3のvan der Corput列とを生成するとき、S252において生成される基底が2のvan der Corput列、基底が3のvan der Corput列は、それぞれ、数27、数28に示すようになり、S253において求められる、r=0の面上の格子点は、数29に示すようになる。格子点生成手段15bは、r=1の面、g=0の面、g=1の面、b=0の面、および、b=1の面の上の格子点についても、r=0の面上の格子点と同様にS253において求める。
なお、白および1次色の間の線分上の格子点、黒および2次色の間の線分上の格子点については、それぞれ、S172のスカイライン上格子点生成処理、S173のボトムライン上格子点生成処理において生成するので、S253において求める格子点から除外しても良い。そして、格子点生成手段15bは、除外した格子点の数の少なくとも一部の数分の格子点をグレー軸上格子点、最大彩度の線分上の格子点、スカイライン上の格子点、ボトムライン上の格子点、および、最外殻面上格子点の少なくとも1つに追加しても良い。
格子点生成手段15bは、S253の処理の後、S253において求めた、最外殻面上の格子点の群を、色変換テーブル14aの格子点群の一部として生成して(S254)、図21に示す最外殻面上格子点生成処理を終了する。
図21に示す最外殻面上格子点生成処理においては、補色の格子点群を配置する処理が含まれていないが、制御部15は、数Ceを6で割った商の平方根の1/2と項数が同数であって、基底が2以上の正の整数であるvan der Corput列をS252において2種類生成することによって、S253において補色の格子点群を加えても良い。
図9に示すように、制御部15は、S162の最外殻面上格子点生成処理が終了すると、図9に示す最外殻上格子点生成処理を終了する。
図4に示すように、制御部15は、S116の最外殻上格子点生成処理が終了すると、図4に示す格子点群生成処理を終了する。
なお、基底がそれぞれ2、3、5である3種類のvan der Corput列が数列生成手段15aによってS131において生成された場合、S101の格子点群生成処理において格子点生成手段15bによって生成される格子点群は、例えば図22に示す格子点群になる。同様に、基底がそれぞれ2、3、7である3種類のvan der Corput列が数列生成手段15aによってS131において生成された場合、S101の格子点群生成処理において格子点生成手段15bによって生成される格子点群は、例えば図23に示す格子点群になる。
図22(a)は、基底がそれぞれ2、3、5である3種類のvan der Corput列が生成された場合に生成される格子点群31の斜視図である。図22(b)は、白(white){1,1,1}の点から黒(black){0,0,0}の点に向かう方向に観察した場合の図22(a)に示す格子点群31の斜視図である。
図23(a)は、基底がそれぞれ2、3、7である3種類のvan der Corput列が生成された場合に生成される格子点群31の斜視図である。図23(b)は、白(white){1,1,1}の点から黒(black){0,0,0}の点に向かう方向に観察した場合の図23(a)に示す格子点群31の斜視図である。
S133の処理において格子点の座標のチャンネル情報を交換したことによって、格子点群31は、図22(b)または図23(b)に示すように、赤(red)、緑(green)、青(blue)、シアン(cyan)、マゼンタ(magenta)、イエロー(yellow)からなる基本6色相の各色相面に対して対称に形成される。
図3に示すように、制御部15は、S101の格子点群生成処理が終了すると、格子点群生成処理によって生成された格子点群の各格子点が対応する出力値(CMYK値)を算出する(S102)。
格子点群生成処理によって生成された格子点群の各格子点が対応する出力値(CMYK値)は、『事前に測定された色値と測色値の関係を記録したLUT(Lookup Table)』からの逆算、ないし、『事前に作成される細かなメッシュで構成された色変換LUT』から算出される。
まず、格子点群生成処理によって生成された格子点群の各格子点が対応する出力値(CMYK値)を、『事前に測定された色値と測色値の関係を記録したLUT』からの逆算によって求める方法について説明する。
『事前に測定された色値と測色値の関係を記録したLUT』は、様々な色値のCMYK値を設定したカラーパッチ(所定間隔でも良いしランダムでも良いが、大抵はBkで層別できる形でCMYK値を所定の離散間隔で設定したカラーパッチ)をMFP20によって印刷した後、印刷したカラーパッチの色を計測してXYZ値に変換して得られるLUTである(CMYK to XYZ変換)。『事前に測定された色値と測色値の関係を記録したLUT』は、色変換テーブル14aの開発に使用されるLUTであり、MFP20に搭載されるLUTではない。そのため、『事前に測定された色値と測色値の関係を記録したLUT』は、色変換テーブル14aと異なり、自身が記憶されるメモリーの容量に制限が特に無いので、非常に多数のCMYK値に対して、XYZ値との対応関係を含んでいる。
『事前に測定された色値と測色値の関係を記録したLUT』を逆算したLUTは、XYZ値からCMYK値に変換するLUTである(XYZ to CMYK変換)。
ここで、格子点群生成処理によって生成された格子点群の各格子点(RGB値)が対応するXYZ値は、LUTによって認識することが可能である(RGB to XYZ変換)。したがって、『事前に測定された色値と測色値の関係を記録したLUT』を逆算したLUT(XYZ to CMYK変換)と組み合わせることによって、格子点群生成処理によって生成された格子点群の各格子点が対応する出力値(CMYK値)を求めることができる(RGB to CMYK変換)。
次に、格子点群生成処理によって生成された格子点群の各格子点が対応する出力値(CMYK値)を、『事前に作成される細かなメッシュで構成された色変換LUT』によって求める方法について説明する。
『事前に作成される細かなメッシュで構成された色変換LUT』は、MFP20における入力値(RGB値)に対応する出力値(CMYK値)を示すLUTである(RGB to CMYK変換)。『事前に作成される細かなメッシュで構成された色変換LUT』は、色変換テーブル14aの開発に使用されるLUTであり、MFP20に搭載されるLUTではない。そのため、『事前に作成される細かなメッシュで構成された色変換LUT』は、色変換テーブル14aと異なり、自身が記憶されるメモリーの容量に制限が特に無いので、非常に多数のRGB値に対して、CMYK値との対応関係を含んでいる。
『事前に作成される細かなメッシュで構成された色変換LUT』は、図24に示すような複数多段のLUT処理を行うか、これらの中間工程の一部ないし全部をまとめた図25に示すようなLUT処理を行う。
ここで、図24に示すLUT処理について説明する。
図24は、色変換工程の一般的な変換ステップのフローチャートである。
図24に示す色変換工程において、入力される色の色空間は、MFPなどのオフィス機の用途において、稀にCMYK形式であることもあるが、基本的にはRGB形式である。
S261は、F−DM(フォーワード・デバイスモデル)変換工程であり、RGB形式データをCIE−XYZ空間へ変換する工程である。例えば、RGB形式としてsRGB空間が想定されているのであれば、その定義に従って変換すれば良い。
(sRGB to XYZ変換)
S262は、F−CAM(カラーアピアレンスモデル)変換工程であり、例えば、CIE−XYZ空間からCIE−CAM02空間へ変換する工程である。(環境条件を得て)CIE−CAM02の定義に従って変換する。
(XYZ to JCH変換)
S263は、GMA(ガマットマッピングアルゴリズム)変換工程である。既に多くの企業ないし研究者から様々な方法が提案されており、その中から、目的や条件、あるいは好み、出力デバイスの特性などから適したものを選択して適用すれば良い。
(JCH to J’C’H’変換)
S264は、墨量生成工程であり、S263におけるGMA変換後のJCH値に則して墨量が定義されており、演算により決定される。これも既に多くの企業ないし研究者から様々な先例が提案されているので、その中から、目的や条件、あるいは好み、出力デバイスの特性などから適したものを選択して適用すれば良い。
(J’C’H’ to (J’C’H’+K)変換)
S265は、B(バックワード)−CAM変換工程であり、出力あるいは観察環境に応じてパラメーターを設定して変換する。カラーアピアレンス・モデルの定義式に従って変換すれば良い。
((J’C’H’+K) to (XYZ+K)変換)
なお、S264と、S265とは、順番が前後することがあり、そうした変換タイプもある。本発明は、S264と、S265との順番が前後する影響を殆ど受けないので、S264と、S265との順番は何れでも構わない。
S266は、B−DM(バックワード・デバイスモデル)変換工程であり、デバイス非依存値(XYZ)を出力デバイス値へ戻す。
((XYZ+K) to (CMY+K)変換)
S266は、予めCMYKの各チャンネルを例えばm分割することによってm×m×m×m分割したパッチを計測し、K層別した状態のK−CMY to XYZ変換データを得て、これをK層別の状態にて逆算してBK層別 K−XYZ to K−CMY LUTを生成しておけば良い。
図24に示す色変換工程において、出力される色の色空間は、CMYK形式である。
図24には、多段ステップで各工程の変換を行う様子を模式的に示している。しかしながら、図24に示すS261〜S266の各工程の一部を合成あるいは分離することもあるし、S261〜S266の全工程を合成することによって図25に示すように単段ステップ(S271)によって一気にRGB形式からCMYK形式へ変換するLUTとしても良い。
図24に示す色変換工程の生成方法について説明する。
図26に示す色変換工程は、図24に示す色変換工程のS261〜S262と同じ工程によって、「入力デバイスの色空間JCH in」を出力する。
図27に示す色変換工程は、様々な色値のCMYK値を設定したカラーパッチ(所定間隔でも良いしランダムでも良いが、大抵はBkで層別できる形でCMYK値を所定の離散間隔で設定したカラーパッチ)をMFP20によって印刷した後、印刷したカラーパッチの色を計測してXYZ値に変換し(S291)、このXYZ値を環境条件に合わせたカラーアピアランスモデルにて明度・彩度・色相の情報に変換して(S292)、「出力デバイスの色空間JCH out」を出力する。
そして、図26に示す色変換工程を経て得られる「入力デバイスの色空間JCH in」と、図27に示す色変換工程を経て得られる「出力デバイスの色空間JCH out」とを突き合わせて、その対応点を設定しその変換工程を行うLUT(図24のS263)と、その対応点を再現する際のBk値を設定するLUT(図24のS264)とを求める。
一般に、「入力デバイスの色空間JCH in」と、「出力デバイスの色空間JCH out」とは、その大きさや形が異なる。そのため、入力デバイスの色空間内の各点を如何にして出力デバイスの色空間内の点に対応付けるかという点に対しては、過去に多くの方法(GMA:ガマット・マッピング・アルゴリズム)が提案されている。したがって、入力デバイスの色空間内の各点を出力デバイスの色空間内の点に対応付ける場合には、過去に提案されている多くの方法の中から、目的や用途あるいは条件に合わせて適正なものを選択して採用すれば良い(図24のS263)。
墨量生成に関しても、過去、さまざまな方法が提案されているので、目的や用途、あるいは条件に合わせてその中から適正なものを選択して採用すれば良い(図24のS264)。
図26に示す色変換工程(S261およびS262)と、上述のようにして求めたS263およびS264と、図27に示す色変換工程の逆算(逆検索)による逆変換LUT(S265およびS266)とを、入力から出力まで通して図にすれば、図24に示すようになる。
図3に示すように、制御部15は、S102の処理が終了すると、色変換テーブル14aによる色変換前の色域の全体を四面体群に分割する(S103)。
S103において、四面体群の四面体は、格子点群の格子点のうち、隣接する4つの格子点で形成される。特に、選択された4つの格子点の外接球を考えた場合に、その外接球の内部に他の格子点が入らないように、四面体の組を生成して四面体群が形成されると良い。例えば、S103において生成される四面体群は、3次元ドロネー網により構成される四面体群である。ここで、3次元ドロネー網の生成は、既知の生成法の中から適当な方法を利用すれば良い。すなわち、2次元面上でドロネー図を描くのと同様の考え方で、それを3次元空間に展開して四面体群を得れば良い。
例えば、図22に示す格子点群31に対して四面体群をプロットすると、図28に示すようになる。図28(a)、(b)は、それぞれ、図22(a)、(b)における視点と同一の視点から観察した場合の四面体群41の斜視図である。
また、図23に示す格子点群32に対して四面体群をプロットすると、図29に示すようになる。図29(a)、(b)は、それぞれ、図23(a)、(b)における視点と同一の視点から観察した場合の四面体群42の斜視図である。
図3に示すように、制御部15は、S103の処理が終了すると、S101の格子点群生成処理において生成した格子点群と、S102において算出した出力値と、S103において分割した四面体群とを含めた色変換テーブル14aを生成して(S104)、図3に示す動作を終了する。
図3に示す動作において生成された色変換テーブル14aは、例えばネットワークを介した通信など、何らかの方法によって色変換テーブル生成装置10から読み出されてMFP20に色変換テーブル27aとして記憶される。
なお、以上においては、色変換テーブル14aに四面体群が含まれているが、色変換テーブル14aに四面体群を含めなくても良い。色変換テーブル14aに四面体群を含めない場合、色変換テーブル14aに含まれる格子点群に基づいてMFP20がS103と同様の処理によって四面体群を生成しても良い。
次に、MFP20の動作について説明する。
図30は、印刷を実行する場合のMFP20の動作のフローチャートである。
図30に示すように、MFP20の制御部28は、RGB形式の入力画像を、出力デバイスとしてのプリンター24aが対応しているCMYK形式の出力画像に変換する色変換処理を実行する(S301)。
図31は、S301における色変換処理のフローチャートである。
図31に示すように、制御部28は、RGB形式の入力画像を形成する色値(RGB値)のうち、未だ対象としていないRGB値を対象にする(S331)。
次いで、制御部28は、S331において対象にしたRGB値と、CMYK値との対応関係を検索する対応関係検索処理を実行する。(S332)。
図32は、S332における対応関係検索処理のフローチャートである。
図32に示すように、制御部28は、対象のRGB値が色変換テーブル27aにおける色変換前の格子点であるか否かを判断する(S361)。
制御部28は、対象のRGB値が色変換テーブル27aにおける色変換前の格子点であるとS361において判断すると、色変換テーブル27aにおける色変換前の格子点のうち、対象のRGB値に対応する格子点に対応付けられた変換値(CMYK値)を、対象のRGB値に対応するCMYK値として特定して(S362)、図32に示す対応関係検索処理を終了する。
制御部28は、対象のRGB値が色変換テーブル27aにおける色変換前の格子点ではない、すなわち、格子点間の点であるとS361において判断すると、対象のRGB値に対応する変換値(CMYK値)を換算する内挿補間処理を実行する(S363)。
図33は、S363における内挿補間処理のフローチャートである。
図33に示すように、制御部28は、色変換テーブル27aに含まれる四面体群の中から、対象のRGB値を包含する四面体を検索する包含四面体検索処理を実行する(S401)。
図34は、S401における包含四面体検索処理のフローチャートである。
図34に示すように、制御部28は、色変換テーブル27aに含まれる四面体群のうち、未だ対象にしていない四面体を対象にする(S431)。
次いで、制御部28は、対象の四面体を構成する4点(以下「点A、点B、点C、点D」とする。)のうち、任意の2点(以下、点Aおよび点Bとする。)を選択する(S432)。
次いで、制御部28は、S432において選択した2点(点Aおよび点B)によって形成される線分を底辺とし、対象のRGB値の点(以下、点Xとする。)、対象の四面体を構成する4点のうちS432において選択した2点以外の1点(以下、点Cとする。)、対象の四面体を構成する4点のうちS432において選択した2点以外の残りの1点(以下、点Dとする。)をそれぞれ頂点とする三角形をそれぞれ含む3つの平面の法線ベクトルを算出する(S433)。ここで、三角形を含む平面の法線ベクトルは、この平面を構成する3点(例えば三角形の3つの頂点)のうち、1点を始点して残り2点を終点にした2つのベクトルの外積を計算することによって算出することができる。
次いで、制御部28は、S433において算出した3つの角度のうち、対象のRGB値の点を頂点とした三角形を含む平面の角度が、残りの2つの平面の角度の間にあるか否かを判定する(S434)。
次いで、制御部28は、対象の四面体を構成する4点(点A、点B、点C、点D)のうち、S432において選択しなかった2点(点Cおよび点D)を選択する(S435)。
次いで、制御部28は、S435において選択した2点(点Cおよび点D)によって形成される線分を底辺とし、対象のRGB値の点(点X)、対象の四面体を構成する4点のうちS435において選択した2点以外の1点(以下、点Aとする。)、対象の四面体を構成する4点のうちS435において選択した2点以外の残りの1点(以下、点Bとする。)をそれぞれ頂点とする三角形をそれぞれ含む3つの平面の法線ベクトルを算出する(S436)。
次いで、制御部28は、S436において算出した3つの角度のうち、対象のRGB値の点を頂点とした三角形を含む平面の角度が、残りの2つの平面の角度の間にあるか否かを判定する(S437)。
次いで、制御部28は、S434における判定と、S437における判定との両方の判定において間にあると判定されたか否かを判断する(S438)。
制御部28は、両方の判定の少なくともいずれかにおいて間にないと判定されたとS438において判断すると、S431の処理を実行する。
制御部28は、両方の判定において間にあると判定されたとS438において判断すると、対象のRGB値を包含する四面体として、対象の四面体を特定して(S439)、図34に示す包含四面体検索処理を終了する。
なお、図34に示す包含四面体検索処理は、本実施の形態において、対象のRGB値を包含する四面体を平面同士の角度に基づいて検索する方式を採用している。しかしながら、S401の包含四面体検索処理として、図34に示す方式以外の方式が採用されても良い。例えば、四面体を構成する4つの平面に対して、外積を用いることによって、対象のRGB値の点が各平面の手前側にあるか否かを判定し、全ての平面において手前側にあることを条件にして、対象のRGB値を包含する四面体を特定する方式が採用されても良い。
図33に示すように、制御部28は、S401の包含四面体検索処理の後、S401において検索した四面体を対象のRGB値の点が体積的に分割する比率に基づいて、対象のRGB値に対応する変換値(CMYK値)を算出する(S402)。
例えば、制御部28は、S401において検索した四面体(以下、点E、点F、点Gおよび点Hによって構成されているとする。)を、S401において検索した四面体を構成する4つの三角形の面(△FGH、△EGH、△EFHおよび△EFG)を底面とし、対象のRGB値の点(点X)を頂点とする4つの四面体(三角錐)、すなわち、四面体X‐FGH、X‐EGH、X‐EFHおよびX‐EFGに分割する。四面体X‐FGH、X‐EGH、X‐EFH、X‐EFGの体積をそれぞれVe、Vf、Vg、Vhとし、それらの和、即ち、四面体EFGHの体積をVsとすると、制御部28は、数30によって、対象のRGB値に対応する変換値(CMYK値)を算出することができる。数30において、Xcmykは、対象のRGB値に対応する変換値(CMYK値)である。Ecmyk、Fcmyk、Gcmyk、Hcmyk、は、それぞれ点E、点F、点G、点Hに対応する変換値(CMYK値)である。
なお、Ve、Vf、Vg、Vhは、例えば、それぞれ、数31、数32、数33、数34に示すように求めても良い。また、Vsは、Ve、Vf、VgおよびVhの総和として求めても良いし、例えば、数35に示すように求めても良い。
図33に示すように、制御部28は、S402の処理の後、図33に示す内挿補間処理を終了する。
なお、図33に示す内挿補間処理は、本実施の形態において四面体補間方式であるが、四面体補間方式以外の方式であっても良い。例えば、内挿補間処理は、六面体補間方式であっても良いし、三角柱補間方式であっても良い。
図32に示すように、制御部28は、S363の内挿補間処理の後、図32に示す対応関係検索処理を終了する。
図31に示すように、制御部28は、S332の対応関係検索処理の後、RGB形式の入力画像を形成するRGB値のうち、未だ対象としていないRGB値が存在するか否かを判断する(S333)。
制御部28は、RGB形式の入力画像を形成するRGB値のうち、未だ対象としていないRGB値が存在するとS333において判断すると、S331の処理を実行する。
制御部28は、RGB形式の入力画像を形成するRGB値のうち、未だ対象としていないRGB値が存在しないとS333において判断すると、S332の対応関係検索処理によって検索されたRGB値およびCMYK値の対応関係に基づいて、RGB形式の入力画像をCMYK形式の出力画像に変換して(S334)、図31に示す色変換処理を終了する。
図30に示すように、制御部28は、S301の色変換処理の後、S301において生成したCMYK形式の出力画像に基づいてプリンター24によって記録媒体に印刷を実行して(S302)、図30に示す動作を終了する。
以上に説明したように、色変換テーブル生成装置10は、色変換テーブル14aにおける色変換前の格子点として最外殻上格子点を積極的に確保する(S116)ので、色変換テーブル14aを介した出力画像における高彩度色の再現性を向上することができる。色変換テーブル生成装置10は、高彩度色の再現性を向上することによって、図形などの抽象画像、文字の画像など、自然画像ではない画像における色の再現性を向上することができる。
色変換テーブル生成装置10は、最外殻上格子点の少なくとも1つとして角間線分上格子点を積極的に確保する(S161)ので、色変換テーブル14aの格子点間の中間データを内挿補間によって算出する(S363)場合に、色変換前のRGB色空間における隣接する2つの角の間の線分上、または、この線分の近傍の中間データの算出の精度を向上することができる。
色変換テーブル生成装置10は、色変換前のRGB色空間における8つの角のいずれか2つの角の間の線分上に角間線分上格子点を等間隔に生成する(S181〜S185、S201〜S205、および、S221〜S225)場合、角間線分上格子点を簡単な計算で生成することができるので、角間線分上格子点を容易に生成することができる。
色変換テーブル生成装置10は、van der Corput列の項を一部の座標とする角間線分上格子点を生成する(S191〜S194、S211〜S214、および、S231〜S234)場合、新たな角間線分上格子点を追加するときに、既に存在する角間線分上格子点が変更される必要がないので、角間線分上格子点を容易に生成することができる。
なお、色変換テーブル生成装置10は、最大彩度の線分上の格子点と、スカイライン上の格子点と、ボトムライン上の格子点との少なくとも1つを色変換テーブル14aに含めなくても良い。
色変換テーブル生成装置10は、最外殻上格子点の少なくとも1つとして最外殻面上格子点を積極的に確保する(S162)ので、色変換テーブル14aの格子点間の中間データを内挿補間によって算出する(S363)場合に、色変換前のRGB色空間における最外殻の面上、または、この面の近傍の中間データの算出の精度を向上することができる。
色変換テーブル生成装置10は、色変換前のRGB色空間における最外殻の面上に最外殻面上格子点を等間隔に生成する(S241〜S245)場合、最外殻面上格子点を簡単な計算で生成することができるので、最外殻面上格子点を容易に生成することができる。
色変換テーブル生成装置10は、2つのvan der Corput列同士の同一の順番の項を一部の座標とする最外殻面上格子点を生成する(S251〜S254)場合、新たな最外殻面上格子点を追加するときに、既に存在する最外殻面上格子点が変更される必要がないので、最外殻面上格子点を容易に生成することができる。ここで、色変換テーブル生成装置10は、最外殻面上格子点を生成するための2つのvan der Corput列として、互いに基底が異なる2つのvan der Corput列を生成する(S252)ので、2つのvan der Corput列同士の同一の順番の項を一部の座標とする最外殻面上格子点の配置の均一性を向上するので、色変換テーブル14aを介した出力画像の品質の精度の均一性を向上することができる。なお、色変換テーブル生成装置10は、互いに基底が同じ2つのvan der Corput列をS252において生成しても良い。
なお、色変換テーブル生成装置10は、最外殻面上格子点を色変換テーブル14aに含めなくても良い。
色変換テーブル生成装置10は、色変換テーブル14aにおける色変換前の格子点としてグレー軸上格子点、すなわち、無彩色の格子点を積極的に確保する(S115)ので、色変換テーブル14aを介した出力画像における色の再現性への影響が大きい、無彩色と、無彩色に近い色との再現性を向上することができる。したがって、色変換テーブル生成装置10は、色変換テーブル14aを介した出力画像における色の再現性を向上することができる。色変換テーブル生成装置10は、無彩色と、無彩色に近い色との再現性を向上することによって、自然画像における色の再現性を向上することができる。
なお、色変換テーブル生成装置10は、グレー軸上格子点を色変換テーブル14aに含めなくても良い。
最外殻上格子点およびグレー軸上格子点については、色変換テーブル14aを介した出力画像における色の再現性が確認されるなどして、格子点数が増減されても良い。すなわち、グレー軸上格子点生成処理および最外殻上格子点生成処理は、複数回、実行し直されても良い。
色変換テーブル生成装置10は、色変換前のRGB色空間の8つの角に対応する格子点を生成する(S114)ので、色変換テーブル14aの格子点間の中間データを内挿補間によって算出する(S363)場合に、色変換前の色空間の角の近傍の中間データの算出の精度を向上することができる。
なお、色変換テーブル生成装置10は、色変換前のRGB色空間の8つの角に対応する格子点を色変換テーブル14aに含めなくても良い。
色変換テーブル生成装置10は、色変換テーブル14aにおける色変換前の格子点の群を立方格子状に配置せずにvan der Corput列を使用して生成する(S112〜S113)ので、格子点の情報を記憶するメモリーの容量が制限されている条件下において、色変換テーブル14aにおける格子点の数を増やすことができる。したがって、色変換テーブル生成装置10は、色変換テーブル14aを介した出力画像の品質の精度を向上することができる。
色変換テーブル生成装置10は、互いに基底が異なる3つのvan der Corput列を生成する(S131)ので、3つのvan der Corput列同士の同一の順番の項を座標とする格子点の配置の均一性を向上することができる。したがって、色変換テーブル生成装置10は、色変換テーブル14aを介した出力画像の品質の精度の均一性を向上することができる。なお、色変換テーブル生成装置10は、少なくとも2つの基底が同じ3つのvan der Corput列をS131において生成しても良い。少なくとも2つの基底が同じ3つのvan der Corput列を生成する場合、互いに基底が異なる3つのvan der Corput列を生成する構成と比較して、乱数性が落ちて格子点の配置に結晶構造性が現れ易い。しかしながら、乱数性が落ちて格子点の配置に結晶構造性が現れたとしても、色変換テーブル生成装置10は、S133の処理において格子点の座標のチャンネル情報を交換することによって、基本6色相の各色相面に対して対称になるように格子点群を配置し、更に、S133の処理において配置した格子点群の補色の格子点群もS134の処理において配置するので、格子点の配置の均一性を確保することができる。
色変換テーブル生成装置10は、3つのvan der Corput列のそれぞれをRGB色空間の3つのチャンネルのそれぞれに対応付けた6パターンのそれぞれにおいて、3つのvan der Corput列同士の同一の順番の項を座標とする格子点を生成した(S133)後、この格子点の補色の格子点も生成する(S134)ので、格子点の配置の均一性を向上することができる。したがって、色変換テーブル生成装置10は、色変換テーブル14aを介した出力画像の品質の精度の均一性を向上することができる。なお、色変換テーブル生成装置10は、S134の処理を実行しなくても良い。色変換テーブル生成装置10は、S134の処理を実行しない場合、S112においてSmaxから特定の数pを引いた数を6で割った商nを算出すれば良い。
色変換テーブル生成装置10によって生成された色変換テーブルを使用する画像形成装置は、本実施の形態においてMFPであるが、プリンター専用機など、MFP以外の画像形成装置であっても良い。