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, 2014, Oracle and/or its affiliates. All rights reserved.