|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.awt.color.ColorSpace java.awt.color.ICC_ColorSpace
public class ICC_ColorSpace
ICC_ColorSpace クラスは、ColorSpace abstract クラスの実装です。デバイス非依存およびデバイス依存のカラースペースのこの表現は、International Color Consortium Specification ICC.1:2001-12、File Format for Color Profiles の仕様に基づいています (http://www.color.org を参照)。
通常、Color または ColorModel は、入力、表示、または出力プロファイルのどれかである ICC プロファイルに関連しています (ICC 仕様を参照)。ほかの種類の ICC プロファイルには、たとえば抽象プロファイル、デバイスリンクプロファイル、および名前付きカラープロファイルなどがあり、それらはカラー、イメージ、デバイスなどの、カラースペースを表すのに適切な情報を格納しません (ICC_Profile を参照)。不適切な ICC プロファイルから ICC_ColorSpace オブジェクトを作成しようとするとエラーになります。
ICC プロファイルは、プロファイル (モニターなど) のカラースペースからプロファイル接続領域 (PCS) への変換を表します。イメージまたはカラーにタグ付けするこのプロファイルは、ICC プロファイル形式仕様で定義されている 2 つの特定のデバイス非依存領域 (1 つの CIEXYZ 領域および 2 つの CIELab 領域) のどちらかである PCS を持ちます。ほとんどの場合、このプロファイルは、可逆変換を持つか、両方向の変換を明示的に指定します。PCS からプロファイルのネイティブ領域への変換を要求する方法で ICC_ColorSpace オブジェクトが使われなければならず、その変換を正しく実行するのに不適切なデータがある場合、ICC_ColorSpace オブジェクトは指定された型のカラースペース (TYPE_RGB、TYPE_CMYK など) で出力を生成しますが、出力データの特定のカラー値は定義されません。
このクラスの詳細は、デフォルトのカラースペースで描画するか、既知のカラースペースを持つインポートされたイメージを操作および表示する単純なアプレットでは重要ではありません。そのようなアプレットは、ColorSpace.getInstance() を使ってデフォルトカラースペースの 1 つを取得する必要がある程度です。
ColorSpace
,
ICC_Profile
,
直列化された形式フィールドの概要 |
---|
クラス java.awt.color.ColorSpace から継承されたフィールド |
---|
CS_CIEXYZ, CS_GRAY, CS_LINEAR_RGB, CS_PYCC, CS_sRGB, TYPE_2CLR, TYPE_3CLR, TYPE_4CLR, TYPE_5CLR, TYPE_6CLR, TYPE_7CLR, TYPE_8CLR, TYPE_9CLR, TYPE_ACLR, TYPE_BCLR, TYPE_CCLR, TYPE_CMY, TYPE_CMYK, TYPE_DCLR, TYPE_ECLR, TYPE_FCLR, TYPE_GRAY, TYPE_HLS, TYPE_HSV, TYPE_Lab, TYPE_Luv, TYPE_RGB, TYPE_XYZ, TYPE_YCbCr, TYPE_Yxy |
コンストラクタの概要 | |
---|---|
ICC_ColorSpace(ICC_Profile profile)
ICC_Profile オブジェクトから新しい ICC_ColorSpace を構築します。 |
メソッドの概要 | |
---|---|
float[] |
fromCIEXYZ(float[] colorvalue)
CS_CIEXYZ 変換カラースペースにあると考えられるカラー値をこの ColorSpace に変換します。 |
float[] |
fromRGB(float[] rgbvalue)
デフォルトの CS_sRGB カラースペースにあると考えられるカラー値をこの ColorSpace に変換します。 |
float |
getMaxValue(int component)
指定された成分について、標準化された成分値の最大値を返します。 |
float |
getMinValue(int component)
指定された成分について、標準化された成分値の最小値を返します。 |
ICC_Profile |
getProfile()
この ICC_ColorSpace の ICC_Profile を返します。 |
float[] |
toCIEXYZ(float[] colorvalue)
この ColorSpace にあると考えられるカラー値を CS_CIEXYZ 変換カラースペースに変換します。 |
float[] |
toRGB(float[] colorvalue)
この ColorSpace にあると考えられるカラー値をデフォルトの CS_sRGB カラースペースの値に変換します。 |
クラス java.awt.color.ColorSpace から継承されたメソッド |
---|
getInstance, getName, getNumComponents, getType, isCS_sRGB |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
コンストラクタの詳細 |
---|
public ICC_ColorSpace(ICC_Profile profile)
profile
- 指定された ICC_Profile オブジェクト
IllegalArgumentException
- プロファイルが ColorSpace を表現するのに
不適切な場合メソッドの詳細 |
---|
public ICC_Profile getProfile()
public float[] toRGB(float[] colorvalue)
このメソッドでは、入力と出力の色がもっとも知覚的に近い色を作成できるように設計されたアルゴリズムを使って、カラー値を変換します。カラー値を比色変換するには、このカラースペースの toCIEXYZ
メソッドを使って、最初に入力カラースペースから CS_CIEXYZ カラースペースに変換して、次に CS_sRGB カラースペースの fromCIEXYZ
メソッドを使い、CS_CIEXYZ を出力カラースペースに変換します。詳細については toCIEXYZ
と fromCIEXYZ
を参照してください。
ColorSpace
内の toRGB
colorvalue
- この ColorSpace の成分数と少なくとも同じ長さの
float 配列
ArrayIndexOutOfBoundsException
- 配列の長さが、
この ColorSpace の成分数より小さい場合public float[] fromRGB(float[] rgbvalue)
このメソッドでは、入力と出力の色がもっとも知覚的に近い色を作成できるように設計されたアルゴリズムを使って、カラー値を変換します。カラー値を比色変換するには、CS_sRGB カラースペースの toCIEXYZ
メソッドを使って、最初に入力カラースペースを CS_CIEXYZ カラースペースに変換して、次にこのカラースペースの fromCIEXYZ
メソッドを使い、CS_CIEXYZ を出力カラースペースに変換します。詳細については toCIEXYZ
と fromCIEXYZ
を参照してください。
ColorSpace
内の fromRGB
rgbvalue
- 少なくとも 3 の長さを持つ float 配列
ArrayIndexOutOfBoundsException
- 配列の長さが
3 より小さい場合public float[] toCIEXYZ(float[] colorvalue)
このメソッドは、ICC 仕様で定義されている相対色度測定を使ってカラー値を変換します。すなわち、このメソッドが返す XYZ の値は CS_CIEXYZ カラースペースの D50 白点を基準にして表示されます。この表現は、入力カラースペースから CS_CIEXYZ 領域へ、次に出力カラースペースに変換される、2 ステップのカラー変換処理において便利です。この表現は、指定されたカラー値から色度計を使って測定する XYZ 値と同じではありません。現在 CIE 推奨の計算方法を使って測定されている XYZ 値を計算するには、さらに詳細な変換が必要です。以下のパラグラフでこの内容について詳しく説明します。
ICC 基準では、1 つのデバイスから別のデバイスへ色を変換するための機構として、デバイスに依存しないカラースペース (DICS) を使用します。このアーキテクチャーでの色の変換は、転送元デバイスのカラースペースから ICC DICS へ、次にこの ICC DICS から出力先のカラースペースへと行われます。ICC 基準は、デバイスのカラースペースと ICC DICS の間で行われる変換を含むデバイスプロファイルを定義します。転送元デバイスのデバイス対 DICS 変形プロファイルを、出力先デバイスの DICS 対デバイス変形プロファイルに接続して、ソースデバイスの色から出力先デバイスの色へ全体的に変換します。したがって、ICC DICS は共通してプロファイル接続領域 (PCS) と見なされます。toCIEXYZ メソッドと fromCIEXYZ メソッドで使用されるカラースペースは、ICC プロファイル形式仕様が定義する CIEXYZ PCS のことです。これはまた、ColorSpace.CS_CIEXYZ が表現するカラースペースと同じです。
色の XYZ 値は、ある白点を基準にしてよく表現されます。 XYZ 値の実際の意味は、その値を保持する白点を知らないと理解できません。このことは、相対色度測定として知られています。PCS は D50 の白点を使っているので、PCS の XYZ 値は D50 を基準にしています。たとえば、PCS の白点が D50 を基準にした XYZ 値を持つとすると、X=.9642、Y=1.000、Z=0.8249 になるように定義されます。この白点は、グラフィックアートのアプリケーションで共通して使用されますが、ほかのアプリケーションでは、この白点以外のものがしばしば使用されます。
プリンタやモニタなどのデバイスの色の特性を定量化するために、特定のデバイスの色に XYZ 値の測定値を一般化しています。つまり、デバイス XYZ の値という用語は、現在の CIE 推奨計算を使用しているデバイスを測定した XYZ 値を示すのに使用されているということです。
デバイス XYZ 値と PCS XYZ 値との間で変換すると、CIE 比色値によって表現されている、デバイスのカラースペースと PCS 間での変換に対応したこのメソッドで返されます。 この処理にはさまざまな要因がありますが、その中にはあまり重要でないものもあります。もっとも重要なものは、デバイスの白点と PCS の白点との違いを処理するのに行われる調整です。 これを行う数多くの技術があり、現在の研究のテーマとして論争が行われています。共通して使用されるメソッドには、XYZ スケーリング、von Kries 変換、および Bradford 変換などがあります。適切なメソッドはアプリケーションごとに異なります。
もっとも簡単なメソッドは、XYZ スケーリングです。このメソッドでは、すべての XYZ デバイス値は PCS XYZ 値に変換されます。 PCS 白点 (D50) の該当デバイスの白点に対する比率を XYZ デバイス値に乗算して変換します。
Xd、Yd、Zd は、デバイス XYZ の値 Xdw、Ydw、Zdw は、デバイス XYZ の白点の値 Xp、Yp、Zp は、PCS XYZ の値 Xd50、Yd50、Zd50 は、PCS XYZ の白点の値 Xp = Xd * (Xd50 / Xdw) Yp = Yd * (Yd50 / Ydw) Zp = Zd * (Zd50 / Zdw)
PCS からデバイスへの変換はこれらの式を逆転して行います。
Xd = Xp * (Xdw / Xd50) Yd = Yp * (Ydw / Yd50) Zd = Zp * (Zdw / Zd50)
ICC プロファイル形式使用のメディア白点タグは、デバイス白点と同じではありません。メディア白点タグは、PCS 値で表示され、光源の下で測定される場合に、デバイス光源の XYZ とデバイスメディアの XYZ の違いを表示するのに使用されます。デバイス白点は、そのデバイスで表示される白点に対応するデバイス XYZ 値として表示されます。たとえば、RGB カラー (1.0, 1.0, 1.0) を sRGB デバイスで表示すると、デバイス XYZ の測定値は D65 となります。これは、sRGB デバイスの ICC プロファイル形式で表すメディア白点タグの XYZ 値と同じではありません。
ColorSpace
内の toCIEXYZ
colorvalue
- この ColorSpace の成分数と少なくとも同じ長さの
float 配列
ArrayIndexOutOfBoundsException
- 配列の長さが、
この ColorSpace の成分数より小さい場合public float[] fromCIEXYZ(float[] colorvalue)
このメソッドは、ICC 仕様で定義されている相対色度測定を使ってカラー値を変換します。すなわち、このメソッドがとる XYZ の引数値は CS_CIEXYZ カラースペースの D50 白点を基準にして表示されます。この表現は、入力カラースペースから CS_CIEXYZ 領域へ、次に出力カラースペースに変換される、2 ステップのカラー変換処理において便利です。このメソッドが返すカラー値は、色度計で測定するときにメソッドに渡される XYZ 値を生成するカラー値ではありません。現在 CIE 推奨の計算方法を使った測定値に対応する XYZ 値を計算済みの場合は、その値がこのメソッドに渡される前に D50 相対値に変換する必要があります。以下のパラグラフでこの内容について詳しく説明します。
ICC 基準では、1 つのデバイスから別のデバイスへ色を変換するための機構として、デバイスに依存しないカラースペース (DICS) を使用します。このアーキテクチャーでの色の変換は、転送元デバイスのカラースペースから ICC DICS へ、次にこの ICC DICS から出力先のカラースペースへと行われます。ICC 基準は、デバイスのカラースペースと ICC DICS の間で行われる変換を含むデバイスプロファイルを定義します。転送元デバイスのデバイス対 DICS 変形プロファイルを、出力先デバイスの DICS 対デバイス変形プロファイルに接続して、ソースデバイスの色から出力先デバイスの色へ全体的に変換します。したがって、ICC DICS は共通してプロファイル接続領域 (PCS) と見なされます。toCIEXYZ メソッドと fromCIEXYZ メソッドで使用されるカラースペースは、ICC プロファイル形式仕様が定義する CIEXYZ PCS のことです。これはまた、ColorSpace.CS_CIEXYZ が表現するカラースペースと同じです。
色の XYZ 値は、ある白点を基準にしてよく表現されます。 XYZ 値の実際の意味は、その値を保持する白点を知らないと理解できません。このことは、相対色度測定として知られています。PCS は D50 の白点を使っているので、PCS の XYZ 値は D50 を基準にしています。たとえば、PCS の白点が D50 を基準にした XYZ 値を持つとすると、X=.9642、Y=1.000、Z=0.8249 になるように定義されます。この白点は、グラフィックアートのアプリケーションで共通して使用されますが、ほかのアプリケーションでは、この白点以外のものがしばしば使用されます。
プリンタやモニタなどのデバイスの色の特性を定量化するために、特定のデバイスの色に XYZ 値の測定値を一般化しています。つまり、デバイス XYZ の値という用語は、現在の CIE 推奨計算を使用しているデバイスを測定した XYZ 値を示すのに使用されているということです。
デバイス XYZ 値と、このメソッドが引数としてとる PCS XYZ 値との間で変換すると、CIE 比色値によって表現されている、デバイスのカラースペースと PCS 間での変換に対応します。 この処理にはさまざまな要因がありますが、その中にはあまり重要でないものもあります。もっとも重要なものは、デバイスの白点と PCS の白点との違いを処理するのに行われる調整です。 これを行う数多くの技術があり、現在の研究のテーマとして論争が行われています。共通して使用されるメソッドには、XYZ スケーリング、von Kries 変換、および Bradford 変換などがあります。適切なメソッドはアプリケーションごとに異なります。
もっとも簡単なメソッドは、XYZ スケーリングです。このメソッドでは、すべての XYZ デバイス値は PCS XYZ 値に変換されます。 PCS 白点 (D50) の該当デバイスの白点に対する比率を XYZ デバイス値に乗算して変換します。
Xd、Yd、Zd は、デバイス XYZ の値 Xdw、Ydw、Zdw は、デバイス XYZ の白点の値 Xp、Yp、Zp は、PCS XYZ の値 Xd50、Yd50、Zd50 は、PCS XYZ の白点の値 Xp = Xd * (Xd50 / Xdw) Yp = Yd * (Yd50 / Ydw) Zp = Zd * (Zd50 / Zdw)
PCS からデバイスへの変換はこれらの式を逆転して行います。
Xd = Xp * (Xdw / Xd50) Yd = Yp * (Ydw / Yd50) Zd = Zp * (Zdw / Zd50)
ICC プロファイル形式使用のメディア白点タグは、デバイス白点と同じではありません。メディア白点タグは、PCS 値で表示され、光源の下で測定される場合に、デバイス光源の XYZ とデバイスメディアの XYZ の違いを表示するのに使用されます。デバイス白点は、そのデバイスで表示される白点に対応するデバイス XYZ 値として表示されます。たとえば、RGB カラー (1.0, 1.0, 1.0) を sRGB デバイスで表示すると、デバイス XYZ の測定値は D65 となります。これは、sRGB デバイスの ICC プロファイル形式で表すメディア白点タグの XYZ 値と同じではありません。
ColorSpace
内の fromCIEXYZ
colorvalue
- 少なくとも 3 の長さを持つ float 配列
ArrayIndexOutOfBoundsException
- 配列の長さが
3 より小さい場合public float getMinValue(int component)
ColorSpace
内の getMinValue
component
- 成分インデックス
IllegalArgumentException
- 成分が 0 より小さいか、
numComponents - 1 より大きい場合public float getMaxValue(int component)
ColorSpace
内の getMaxValue
component
- 成分インデックス
IllegalArgumentException
- 成分が 0 より小さいか、
numComponents - 1 より大きい場合
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。