モジュール java.desktop
パッケージ 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を持ちます。 ほとんどの場合、このプロファイルは、可逆変換を持つか、両方向の変換を明示的に指定します。 PCSからプロファイルのネイティブ領域への変換を要求する方法でICC_ColorSpaceオブジェクトが使われなければならず、その変換を正しく実行するのに不適切なデータがある場合、ICC_ColorSpaceオブジェクトは指定された型のカラー・スペース(TYPE_RGB、TYPE_CMYKなど)で出力を生成しますが、出力データの特定のカラー値は定義されません。

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

    関連項目:
    ColorSpace, ICC_Profile, 直列化された形式
    • コンストラクタの詳細

      • ICC_ColorSpace

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

      • getProfile

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

        public float[] toRGB​(float[] colorvalue)
        このColorSpaceにあると考えられるカラー値をデフォルトのCS_sRGBカラー・スペースの値に変換します。

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

        定義:
        toRGB、クラス: ColorSpace
        パラメータ:
        colorvalue - 少なくともこのColorSpace内の成分の数の長さを持つfloat配列。
        戻り値:
        長さが3のfloat配列。
        例外:
        ArrayIndexOutOfBoundsException - 配列の長さがこのColorSpace内の成分の数に満たない場合。
      • fromRGB

        public float[] fromRGB​(float[] rgbvalue)
        デフォルトのCS_sRGBカラー・スペースにあると考えられるカラー値をこのColorSpaceに変換します。

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

        定義:
        fromRGB、クラス: ColorSpace
        パラメータ:
        rgbvalue - 少なくとも3の長さを持つfloat配列。
        戻り値:
        このColorSpaceの成分数と同じ長さのfloat配列。
        例外:
        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プロファイル形式仕様が定義する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配列。
        戻り値:
        長さが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プロファイル形式仕様が定義する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の成分数と同じ長さのfloat配列。
        例外:
        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という最大値を返します。 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