public class ICC_ColorSpace extends ColorSpace
通常、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
, 直列化された形式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 カラースペースの値に変換します。
|
getInstance, getName, getNumComponents, getType, isCS_sRGB
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
を参照してください。
toRGB
、クラス: ColorSpace
colorvalue
- 少なくともこの ColorSpace 内の成分の数の長さを持つ float 配列。ArrayIndexOutOfBoundsException
- 配列の長さがこの ColorSpace 内の成分の数に満たない場合。public float[] fromRGB(float[] rgbvalue)
このメソッドでは、入力と出力の色がもっとも知覚的に近い色を作成できるように設計されたアルゴリズムを使って、カラー値を変換します。カラー値の比色変換を実行するには、最初に CS_sRGB カラースペースの toCIEXYZ
メソッドを使用して入力カラースペースから CS_CIEXYZ カラースペースに変換し、次にこのカラースペースの fromCIEXYZ
メソッドを使用して CS_CIEXYZ から出力カラースペースに変換するようにしてください。詳細は、toCIEXYZ
および fromCIEXYZ
を参照してください。
fromRGB
、クラス: ColorSpace
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 are the device XYZ values Xdw, Ydw, Zdw are the device XYZ white point values Xp, Yp, Zp are the PCS XYZ values Xd50, Yd50, Zd50 are the PCS XYZ white point values 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 値と同じではありません。
toCIEXYZ
、クラス: ColorSpace
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 are the device XYZ values Xdw, Ydw, Zdw are the device XYZ white point values Xp, Yp, Zp are the PCS XYZ values Xd50, Yd50, Zd50 are the PCS XYZ white point values 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 値と同じではありません。
fromCIEXYZ
、クラス: ColorSpace
colorvalue
- 少なくとも 3 の長さを持つ float 配列。ArrayIndexOutOfBoundsException
- 配列の長さが 3 に満たない場合。public float getMinValue(int component)
getMinValue
、クラス: ColorSpace
component
- 成分インデックス。IllegalArgumentException
- 成分が 0 より小さいか、または numComponents - 1 より大きい場合。public float getMaxValue(int component)
getMaxValue
、クラス: ColorSpace
component
- 成分インデックス。IllegalArgumentException
- 成分が 0 より小さいか、または numComponents - 1 より大きい場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.