モジュール java.desktop
パッケージ java.awt.color

クラスICC_ColorSpace

java.lang.Object
java.awt.color.ColorSpace
java.awt.color.ICC_ColorSpace
すべての実装されたインタフェース:
Serializable

public class ICC_ColorSpace extends ColorSpace
ICC_ColorSpaceクラスは、抽象ColorSpaceクラスの実装です。 デバイス非依存およびデバイス依存のカラー・スペースのこの表現は、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を持ちます。 ほとんどの場合、このプロファイルは、可逆変換を持つか、両方向の変換を明示的に指定します。 ICC_ColorSpaceオブジェクトをPCSからプロファイルのネイティブ・スペースへ変換する必要があり、変換を正しく実行するためにデータが不十分な場合、ICC_ColorSpaceオブジェクトは指定されたタイプのカラー・スペース(e.g. TYPE_RGB, TYPE_CMYK, etc.)で出力を生成しますが、出力データの特定の色値は定義されません。

このクラスの詳細は、デフォルトのカラー・スペースで描画するか、既知のカラー・スペースを持つインポートされたイメージを操作および表示する単純なアプレットでは重要ではありません。 このようなアプレットは、通常、ColorSpace.getInstance(int)を通してデフォルトのカラー・スペースの1つを取得する必要があります。

関連項目:
  • コンストラクタの詳細

    • ICC_ColorSpace

      public ICC_ColorSpace(ICC_Profile profile)
      ICC_Profileオブジェクトから新規ICC_ColorSpaceを構築します。
      パラメータ:
      profile - 指定されたICC_Profileオブジェクト
      例外:
      IllegalArgumentException - プロファイルがColorSpace表現に不適切な場合
  • メソッドの詳細

    • getProfile

      public ICC_Profile getProfile()
      このICC_ColorSpaceICC_Profileを返します。
      戻り値:
      このICC_ColorSpaceICC_Profile
    • toRGB

      public float[] toRGB(float[] colorvalue)
      ColorSpaceで想定された色の値をデフォルトのCS_sRGBカラー・スペースの値に変換します。

      このメソッドでは、入力と出力の色がもっとも知覚的に近い色を作成できるように設計されたアルゴリズムを使って、カラー値を変換します。 色値をcolorimetricに変換するには、このカラー・スペースのtoCIEXYZメソッドを使用して、最初に入力カラー・スペースからCS_CIEXYZカラー・スペースに変換し、次にCS_sRGBカラー・スペースのfromCIEXYZメソッドを使用してCS_CIEXYZから出力カラー・スペースに変換する必要があります。 詳細は、toCIEXYZおよびfromCIEXYZを参照してください。

      定義:
      toRGB、クラスColorSpace
      パラメータ:
      colorvalue - 長さが少なくともこのColorSpaceのコンポーネント数である浮動小数配列
      戻り値:
      長さが3のfloat配列
      例外:
      ArrayIndexOutOfBoundsException - 配列の長さがこのColorSpace内のコンポーネントの数以上でない場合
    • fromRGB

      public float[] fromRGB(float[] rgbvalue)
      色の値をデフォルトのCS_sRGBカラー・スペースとみなし、このColorSpaceに変換します。

      このメソッドでは、入力と出力の色がもっとも知覚的に近い色を作成できるように設計されたアルゴリズムを使って、カラー値を変換します。 色値をcolorimetricに変換するには、CS_sRGBカラー・スペースのtoCIEXYZメソッドを使用して、最初に入力カラー・スペースからCS_CIEXYZカラー・スペースに変換し、次にこのカラー・スペースのfromCIEXYZメソッドを使用してCS_CIEXYZから出力カラー・スペースに変換する必要があります。 詳細は、toCIEXYZおよびfromCIEXYZを参照してください。

      定義:
      fromRGB、クラスColorSpace
      パラメータ:
      rgbvalue - 少なくとも3の長さを持つfloat配列
      戻り値:
      このColorSpaceのコンポーネント数と長さが等しい浮動小数配列
      例外:
      ArrayIndexOutOfBoundsException - 配列の長さが3に満たない場合
    • toCIEXYZ

      public float[] toCIEXYZ(float[] colorvalue)
      ColorSpace内にあるとみなされる色値をCS_CIEXYZ変換のカラー・スペースに変換します。

      このメソッドは、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 Specificationによって定義されている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のコンポーネント数である浮動小数配列
      戻り値:
      長さが3のfloat配列
      例外:
      ArrayIndexOutOfBoundsException - 配列の長さがこのColorSpace内のコンポーネントの数以上でない場合
    • fromCIEXYZ

      public float[] fromCIEXYZ(float[] colorvalue)
      CS_CIEXYZ変換カラー・スペース内にあるとみなされる色値をこのColorSpaceに変換します。

      このメソッドは、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 Specificationによって定義されている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配列
      戻り値:
      このColorSpaceのコンポーネント数と長さが等しい浮動小数配列
      例外:
      ArrayIndexOutOfBoundsException - 配列の長さが3に満たない場合
    • getMinValue

      public float getMinValue(int component)
      指定された成分について、標準化された成分値の最小値を返します。 TYPE_XYZスペースの場合、このメソッドはすべてのコンポーネントに0.0の最小値を返します。 TYPE_Labスペースの場合、このメソッドは、Lに0.0、および、aとbコンポーネントに-128.0を返します。 これは、ICC仕様のXYZおよびLabプロファイル接続領域の符号化と一致しています。 ほかのすべての型については、すべての成分に対して0.0を返します。 ICC_ColorSpaceを、異なる最小コンポーネント値を必要とするプロファイルで使用する場合は、このクラスをサブクラス化してこのメソッドをオーバーライドする必要があります。
      オーバーライド:
      getMinValue、クラスColorSpace
      パラメータ:
      component - 成分インデックス
      戻り値:
      標準化された成分値の最小値
      例外:
      IllegalArgumentException - コンポーネントが0より小さいか、numComponents - 1より大きい場合
      導入されたバージョン:
      1.4
    • getMaxValue

      public float getMaxValue(int component)
      指定された成分について、標準化された成分値の最大値を返します。 TYPE_XYZスペースの場合、このメソッドはすべてのコンポーネントの最大値1.0 + (32767.0 / 32768.0)を返します。 TYPE_Labスペースの場合、このメソッドは、Lに100.0、および、aとbコンポーネントに127.0を返します。 これは、ICC仕様のXYZおよびLabプロファイル接続領域の符号化と一致しています。 ほかのすべての型については、すべての成分に対して1.0を返します。 ICC_ColorSpaceを、異なる最大コンポーネント値を必要とするプロファイルで使用する場合は、このクラスをサブクラス化してこのメソッドをオーバーライドする必要があります。
      オーバーライド:
      getMaxValue、クラスColorSpace
      パラメータ:
      component - 成分インデックス
      戻り値:
      標準化された成分値の最大値
      例外:
      IllegalArgumentException - コンポーネントが0より小さいか、numComponents - 1より大きい場合
      導入されたバージョン:
      1.4