クラスICC_ColorSpace

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

public class ICC_ColorSpace extends ColorSpace
ICC_ColorSpaceクラスは、抽象ColorSpaceクラスの実装です。 このデバイスに依存しないカラー・スペースの表現は、国際カラー・コンソーシアム仕様ICC.1:2001-12、File Format for Color Profiles (https://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オブジェクトは指定されたタイプのカラー・スペース(例、TYPE_RGB, TYPE_CMYK,など)で出力を生成しますが、出力データの特定の色値は定義されません。

このクラスの詳細は、デフォルトのカラー・スペースで描画したり、インポートしたイメージを既知のカラー・スペースで操作して表示する単純なアプリケーションには重要ではありません。 ほとんどの場合、このようなアプリケーションでは、ColorSpace.getInstance(int)を使用してデフォルトのカラー・スペースの1つを取得する必要があります。

関連項目:
  • フィールドのサマリー

    クラスで宣言されたフィールド 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
    修飾子と型
    フィールド
    説明
    static final int
    上で定義した組込みCIEXYZ変換カラー・スペース。
    static final int
    組込みリニア・グレー・スケール・カラー・スペースです。
    static final int
    ビルトインの線形RGBカラー・スペースです。
    static final int
    組み込みのフォトYCC変換カラー・スペース。
    static final int
    http://www.w3.org/pub/WWW/Graphics/Color/sRGB.htmlで定義されている組込みsRGBカラー・スペース。
    static final int
    ジェネリック2成分カラー・スペースです。
    static final int
    ジェネリック3成分カラー・スペースです。
    static final int
    ジェネリック4成分カラー・スペースです。
    static final int
    ジェネリック5成分カラー・スペースです。
    static final int
    ジェネリック6成分カラー・スペースです。
    static final int
    ジェネリック7成分カラー・スペースです。
    static final int
    ジェネリック8成分カラー・スペースです。
    static final int
    ジェネリック9成分カラー・スペースです。
    static final int
    ジェネリック10成分カラー・スペースです。
    static final int
    ジェネリック11成分カラー・スペースです。
    static final int
    ジェネリック12成分カラー・スペースです。
    static final int
    CMYカラー・スペース・ファミリのどれかです。
    static final int
    CMYKカラー・スペース・ファミリのどれかです。
    static final int
    ジェネリック13成分カラー・スペースです。
    static final int
    ジェネリック14成分カラー・スペースです。
    static final int
    ジェネリック15成分カラー・スペースです。
    static final int
    GRAYカラー・スペース・ファミリのどれかです。
    static final int
    HLSカラー・スペース・ファミリのどれかです。
    static final int
    HSVカラー・スペース・ファミリのどれかです。
    static final int
    Labカラー・スペース・ファミリのどれかです。
    static final int
    Luvカラー・スペース・ファミリのどれかです。
    static final int
    RGBカラー・スペース・ファミリのどれかです。
    static final int
    XYZカラー・スペース・ファミリのどれかです。
    static final int
    YCbCrカラー・スペース・ファミリのどれかです。
    static final int
    Yxyカラー・スペース・ファミリのどれかです。
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    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_ColorSpaceICC_Profileを返します。
    float[]
    toCIEXYZ(float[] colorvalue)
    ColorSpace内にあるとみなされる色値をCS_CIEXYZ変換のカラー・スペースに変換します。
    float[]
    toRGB(float[] colorvalue)
    ColorSpaceで想定された色の値をデフォルトのCS_sRGBカラー・スペースの値に変換します。

    クラスで宣言されたメソッド ColorSpace

    getInstance, getName, getNumComponents, getType, isCS_sRGB
    修飾子と型
    メソッド
    説明
    static ColorSpace
    getInstance(int cspace)
    特定の事前定義済のカラー・スペースの1つを表すColorSpaceを返します。
    getName(int component)
    指定された成分インデックスで、成分の名前を返します。
    int
    このColorSpaceの成分数を返します。
    int
    このColorSpace (例: TYPE_RGBTYPE_XYZ、...)のカラー・スペース・タイプを返します。
    boolean
    ColorSpaceCS_sRGBの場合はtrueを返します。

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    boolean
    このオブジェクトと他のオブジェクトが等しいかどうかを示します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    int
    このオブジェクトに対するハッシュ・コード値を返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    オブジェクトの文字列表現を返します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

    • ICC_ColorSpace

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

    • 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内のコンポーネントの数以上でない場合
      NullPointerException - colorvaluenullの場合
    • 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に満たない場合
      NullPointerException - rgbvaluenullの場合
    • 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内のコンポーネントの数以上でない場合
      NullPointerException - colorvaluenullの場合
    • 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に満たない場合
      NullPointerException - colorvaluenullの場合
    • 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