共用方式為


WCS Gamut 對應模型配置檔架構和演算法

概觀

此架構可用來指定遊戲地圖模型配置檔的內容(GMMP)。 下列主題說明相關聯的基準演算法。

基本 GMMP 架構包含通用標頭資訊、慣用 Gamut Map Model 外掛程式的選擇性參考,以及延伸標籤。

此外,GMMP 提供目標 Gamut 地圖模型的明確資訊,並提供基準後援 Gamut 對應模型的原則,以在目標模型無法使用時使用。 架構可以包含私人延伸模組資訊,但不會包含其他無關的資訊。

Gamut Map 模型配置文件架構

Diagram that shows the Gamut Map Model Profile.

輸出裝置著色器空間的取樣是透過使用小數步驟逐一查看 0.0 到 1.0 的著色器,在每個步驟累積每個著色器的所有組合,然後使用 DM::D eviceToColorimetricColors 方法,從裝置著色器空間轉換成色彩外觀空間,然後再使用 CAM::ColorimetricToAppearanceColors 方法。 以下是 RGB 如何完成此作業的範例。

For (red= 0.0; red <= 1.0; red += redStep) {

     For (green = 0.0; green <= 1.0; green += greenStep) {

          For (blue = 0.0; blue <= 1.0; blue += blueStep) {

               Colorants[0] = red; colorants[1] = green; colorants[2] = blue;

               pRGBDM->DeviceToColorimetricColors(1, colorants, &amp;XYZ);

               pCAM->ColorimetricToAppearanceColors(1, &amp;XYZ, &amp;JCh);

          }

     }

}

產生 Gamut 界限

遊戲界限有三個元件:初選、中性樣本和殼層。 主要複本是藉由取得裝置初選並套用DeviceToColorimetric/ColorimetricToAppearance轉換來產生。 中性樣本的產生方式是取樣中性區域中的裝置色彩空間,並套用相同的轉換。 對於三個著色劑裝置(RGB 或 CMY),中性樣本會定義為所有著色劑都相等,例如 R == G == B。針對 CMYK,中性範例定義為具有 C == M == Y == 0。

影響用來建立遊戲界限之數據的因素包括數據樣本(僅限基準裝置)和檢視條件。 用來執行色板空間完整取樣的步驟大小(適用於監視器和合理的殼層)是內部常數,不適用於外部操作。 變更檢視條件會變更色彩外觀模型的行為(CAM),並改變色域界限的形狀,因此您必須產生系結至檢視條件配置檔的色域界限。 如果使用範例數據,如同基準印表機和擷取裝置的情況,則範例會對參考範圍的形狀產生很大影響,並影響模型本身的行為。

對於相機和掃描儀等輸入裝置,會使用不同的取樣來產生參考殼層和合理的殼層。 參考殼層是從用來初始化裝置模型的度量產生。 合理的殼層會產生類似先前的輸出裝置圖例。 當您輸入一般目標時,不會得到完全飽和的值(其中 R、G 或 B = 255)。 您必須使用裝置模型推斷這些值。

GMMP 架構

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
  xmlns:gmm="http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"
  xmlns:wcs="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes"
  targetNamespace="http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  blockDefault="#all"
  version="1.0">

  <xs:annotation>
    <xs:documentation>
      Gamut Map Model profile schema.
      Copyright (C) Microsoft. All rights reserved.
    </xs:documentation>
  </xs:annotation>

  <xs:import namespace="http://schemas.microsoft.com/windows/2005/02/color/WcsCommonProfileTypes" />

  <xs:element name="GamutMapModel">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ProfileName" type="wcs:MultiLocalizedTextType"/>
        <xs:element name="Description" type="wcs:MultiLocalizedTextType" minOccurs="0"/>
        <xs:element name="Author" type="wcs:MultiLocalizedTextType" minOccurs="0"/>
        <xs:element name="DefaultBaselineGamutMapModel">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="HPMinCD_Absolute"/>
              <xs:enumeration value="HPMinCD_Relative"/>
              <xs:enumeration value="SGCK"/>
              <xs:enumeration value="HueMap"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="PlugInGamutMapModel" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:any namespace="##other" processContents="skip"
                minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute name="GUID" type="wcs:GUIDType" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="ID" type="xs:string" use="optional" />
    </xs:complexType>
  </xs:element>
</xs:schema>

GMMP 架構元素

GamutMapModel

這個項目是下列子元素的序列:

  1. ProfileName 字串,
  2. DefaultBaselineGamutMapModel,
  3. 選擇性描述字串,
  4. 選擇性作者字串,
  5. 選擇性的 PlugInGamutMap 和
  6. 選擇性 ExtensionType。

驗證條件 :每個子元素都會由它自己的類型進行驗證。

Namespace

xmlns:gmm=“http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"

targetNamespace=“http://schemas.microsoft.com/windows/2005/02/color/GamutMapModel"

版本

第一版 Windows Vista 的版本為 “1.0”。

驗證條件 :Windows Vista 中的 1.0。 2.0 版 <也有效,以支援格式的非中斷性變更。

文件

Gamut Map Model Profile 架構。

著作權 (C) Microsoft。 著作權所有,並保留一切權利。

驗證條件 :每個子元素都會由它自己的類型進行驗證。

DefaultBaselineGamutMapModel 類型

UINT 類型

列舉值:

“MinCD\_Absolute” “MinCD\_Relative” “SIG\_KNEE” “HueMap”

驗證條件 :值必須符合上述其中一個列舉。

PlugInGamutMapType

這個專案是 GUID GUIDType 和任何子元素的序列。

驗證條件 :GUID 是用來比對 GMM 外掛程式 DLL GUID。 最多有 100,000 個自定義子元素。

ExtensionType

這個專案是任何子元素的選擇性序列。

驗證條件 :最多可以有100,000個子元素。

GMMP 基準演算法

對齊中性軸

大多數遊戲對應演算法的目標是將來源裝置的中性軸對應至目的地裝置的中性軸:也就是白色移至白色、黑色到黑色,並將灰色對應至灰色。 藉由調整來源色彩的光度,以符合目的地裝置的光度範圍,來解決此問題。 但這並不能完全解決問題。

它是大多數成像裝置的實體屬性,裝置白色的色度與裝置黑色的色度不完全相符。 例如,監視白色取決於三個初選的色度和相對亮度的總和,而監視黑色則取決於顯示表面的反射。 印表機白色取決於紙張的色度,而印表機黑色則取決於使用的墨水或碳粉。 將裝置白色對應到外觀空間中性軸(色度完全等於零)的外觀模型,不會將裝置黑色對應至中性軸。 因為隨著光度增加,眼睛對色度差異更敏感,中灰色將代表比裝置黑色更色度。 (圖 1 說明兩個維度中性軸的曲度。事實上,中性軸在三個維度中形成更複雜的曲線。

雖然 CAM 預測這些裝置中性色彩會出現色度,但實際的觀察家似乎彌補了這一點。 大多數人不會將這些裝置中性值視為色度。 因此,針對大部分的遊戲對應模型,您應該繼續將來源中性對應至裝置中性。

若要將來源中性對應至裝置中性,請在套用 gamut 對應演算法時,調整來源和目的地範圍界限和每個圖元。 首先調整來源色彩中的每個值,讓來源裝置在來源色彩光線的中性軸直接落在外觀空間的中性軸上。 (請參閱圖 1 的左側。然後調整目的地裝置的 gamut 界限描述,讓目的地裝置中性軸上的每一個色彩都直接落在外觀空間的中性軸上。 (請參閱圖 1 的右側。

Diagram that shows the Source Gamut Boundary graph on the left, and the Destination Gamut Boundary on the right.

圖 1 :說明中性座標軸的對齊方式。 左:調整相對於來源裝置中性軸的來源點。 右方:調整目的地範圍界限描述,相對於目的地 gamut 界限描述。

請注意,您可以調整每個來源圖元值,相對於該光線值的中性座標軸。 這可確保來源裝置中性會落在外觀模型的中性軸上。 您也會以相同的量將所有其他色彩移位,使來源遊戲的表示沒有不連續。 您必須在不同的光度層級依不同的量變化,因為來源裝置中性不會以不同光度層級的等色度表示。 顯然,這不是一個微不足道的轉換。

處理目的地裝置值有點棘手。 一開始,您會以類似的方式調整整個目的地範圍界限,但相對於目的地裝置中性軸。 這在右側的圖 1 中說明。 該調整可確保來源灰色值會對應至目的地灰色值。 這是遊戲對應演算法運作的空間。

不過,此空間無法準確地描述目的地裝置的真實行為。 您必須先反轉對應,才能將遊戲對應色彩交給外觀模型和目的地裝置型號。 您會將先前套用到目的地裝置中性座標軸的位移相反,將所有對應的值位移。 這會將目的地中性軸對應回 CAM 原本代表的值。 它針對 gamut 界限和所有中繼值執行相同的動作。

Diagram that shows a graph for undoing the alignment of the destination device neutral axis.

圖 2 :復原目的地裝置中性座標軸的對齊方式

最小色彩差異 (MinCD)

最小色彩差異(MinCD) 相對和絕對版本 - 相當於 ICC 色度意圖。

注意

MinCD GMM 適用於對應圖形和線條藝術,包含「標誌」色彩(現成色彩)、標誌色彩漸層與一些色外色彩,以及校訂轉換的最後階段。 雖然 MinCD GMM 可用於完全在目的地範圍內的攝影影像,但不建議用於攝影影像的一般轉譯。 對目的地遊戲表面色彩與色彩的對應,可能會導致不必要的成品,例如跨越遊戲界限的平滑漸層中的音調或色度不規則。 建議將 BasicPhoto 用於攝影影像。 如果攝影或contone影像需要 BasicPhoto 以外的遊戲對應,則替代方式應該是建立實作該對應的外掛程式 GMM,而不是使用 MinCD。

 

遊戲內色彩維持不變。 針對跨色色彩,光線和色度會藉由尋找目的地色域中的點來調整,該點的色彩距離距離距離不足的輸入點。 色彩距離會在 JCh 空間中計算。 不過,您會以光線 (J) 和色度 (C) 或色調 (h) 的距離來加權距離。 色度相依權數函式用於光度距離,使色度較小,而大色度則較小,直到達到臨界值色度,之後權數會維持在 1,也就是與色度或色調中的距離相同。 遵循 CMC 和CIEDE2000的建議使用方式。 有兩個變體:相對色度和絕對色度。

相對色度: 首先,對齊來源和目的地中性軸,如先前所述。 然後將調整的來源色彩裁剪至調整后的目的地範圍界限。 (請參閱圖 4。沿著常數光線的色度對應。如先前所述重新調整目的地裝置值。 在單色目的範圍界限的情況下,色度裁剪表示色度值 (C) 設定為零 (0.0)。

絕對色度: 這類似於相對色度,但沒有來源和目的中性座標軸的對齊方式。 來源值會直接裁剪到目的地中性座標軸。 請注意,如果來源和目的地 gamut 界限都是單色,則行為會與相對色度變異相同;也就是說,會執行中性軸對齊,然後將色度裁剪為零。 這可確保即使媒體和著色器明顯不同,也能達到合理的輸出。

Diagram that shows a graph for MinCD clipping to the adjusted gamut.

圖 3 :MinCD 裁剪至調整后的 gamut

BasicPhoto

概觀

BasicPhoto - 相當於 ICC 慣用、圖片或感知意圖。

此演算法是 CIE CIE TC8-03 在 CIE156:2004 中描述的色度相依 sigmoidal 光度對應和小腿膝蓋縮放 (SGCK) 的變異。 此變體演演算法支援具有雙遊戲殼層的 gamut 界限描述元 (GBDs) ;也就是說,具有參考殼層和合理殼層的 GBD。 SGCK 演算法原本只假設 GBD 中只有一個遊戲殼層,以SIG_KNEE演算法(Braun 1999)為基礎,該演算法結合了 Braun 和 Fairchild (1999 年)提議的 sigmoid 光度對應和膝蓋函數縮放(1999 年),加上 GCUSP (Morovic, 1998 年) 的色度相依性。 它保持感知的色調常數,例如色調更正的 Jab 中的色調角度,並使用泛型(與影像無關)的 sigmoidal 光度縮放比例,以色度相依的方式套用,以及 90% 的膝蓋函數色度。 變化會沿著固定光線的線條縮放。

單一遊戲殼層的案例

在來源和目的地 GBD 只有一個遊戲殼層的情況下,檢閱演算法很有説明。 在此情況下,演算法是由下列計算所組成。

首先,使用下列公式執行初始光度對應:

Shows the formula for initial lightness mapping. (1)

其中 Jₒ 是原始光度, JR 是複製光線。

Shows the second lightness mapping formula. (2)

當來源 gamut 界限為單色時,由於中性座標軸對齊,色度值會是單色界限的零。 這會導致 C 等於零的變質案例。 在此情況下, pC 會設定為 1。

pC 是相依的色度加權因數(Morovic,1998年),取決於原始色彩的色度,C 和 JS 是使用 sigmoidal 函式對應原始光度的結果。

 

為了計算 JS (Braun和 Fairchild,1999年),原始和複製光性值之間的一維查閱表(LUT)是先根據離散累計法函數(S)來設定的。

Shows a formula to calculate J s. (3)

其中 x ₀ 和 S 分別是常態分佈的平均值和標準偏差,而 i = 0,1,2... m,m 是 LUT 中使用的點數。 Si 是 i /m 百分比累計法函數的值。 參數取決於複製遊戲黑點的光度,而且可以從表 1 插入。 如需計算這些參數的詳細資訊,請參閱 Braun 和 Fairchild (1999, p. 391)。

J minOut

5.0

10.0

15.0

20.0

x ₀

53.7

56.8

58.2

60.6

S

43.0

40.0

35.0

34.5

表 1 :基本Photo 光度壓縮參數計算

若要使用 S 作為光度對應 LUT (S LUT ),它必須先正規化為 [0,100] 的光度範圍。 正規化數據接著會縮放至目的裝置的動態範圍,如方程式 4 所示,其中 J min\ OutJmax\ Out 分別是黑點和複製媒體的白色點的光度值。

Shows the formula for S as a lightness mapping LUT. (4)

此時,J S 值可以從 S LUT 取得,方法是在它所包含的對應 J O 和J S 值的 m 點之間插補,並使用下列方程式做為輸入。

Shows the formula to obtain the J S values. (5)

J minIn 是原始中黑點的光度值,J maxIn 是原始中白點的光度值,而 J O 則是原始光線。 如需稍後的參考,您可以以剛才概述的方式定義 sigmoidal 函式來表示,如圖 4 所示。

Diagram that shows the graph for chroma mapping along constant lightness.

圖 4 :沿著常數光線的色度對應

其次,如果目的地 gamut 界限是色度,請沿著常數光線壓縮色度 (l),然後如下所示執行壓縮。

Shows the formula to perform the chroma compression. (6)

其中 d 代表 l 上 E距離;g 代表中等範圍界限; r 代表複製;而 o 原始圖 5。

Diagram that shows the graph for chroma and lightness compression in BasicPhoto.

圖 5 :BasicPhoto 中的色度和光度壓縮

如果目的地 gamut 界限為單色,則色度值會裁剪為零。

第三,使用 MinCD 剪輯(稍早所述)來消除任何剩餘錯誤。

黑色增強功能

當目的地是印表機裝置時,可以修改上述演算法來改善黑色。 此問題與 JminOut 的選擇有關係,這通常不會對應到印表機可以產生的最深色彩。

更具體來說,透過放置 100% 筆跡取得的最高密度色彩(如果 GCR/筆跡限制有效,則最大可能涵蓋範圍)通常不是色彩外觀空間中的「中性」。 請參閱圖 6。 換句話說,如果目的地裝置使用中性最小光度,則所建構的光度縮放器會對應到最小光度,而不是印表機所能達到的最高密度。 請考慮對印表機進行監視的進一步使用案例。 接著會將監視器黑色 R=G=B=0 列印為非最高密度。 對影像質量的影響在於缺乏深度和對比。

Diagram that shows how the device black point might be darker than the neutral minimum lightness.

圖 6 :裝置黑色點可能比中性最小光線暗。

假設目的地「裝置黑點」是 Jkakbk/JkCkh k。 如果 C k 不是零,則裝置黑色點與 CAM02 無關。 如果您在建構光度縮放器時,將 J k 用於目的「中性最小光度」;也就是說,設定

JminOut = Jk

並將它套用至來源 gamut Shell,您會取得圖 7 中所述的組態。 在圖中,色調平面會對應至 h k。

Diagram that shows the modified lightness scaler with destination device black point.

圖 7 :使用修改的光度縮放器與目的地裝置黑點的幾何

若要允許後續的色度壓縮演算法繼續,您想要在來源和目的地殼層上對齊最大和最小光度。 藉由將點向左移位,藉以調整 J neutralMin 與 J k 之間的目的地殼層,即可達成此目的。 此外,此轉換必須套用至整個 Jab 空間,而不只是對應至 h k 的色調平面。

轉換為

Shows the formula for the transformation.

圖 8 顯示轉換的效果。

Diagram that shows the effect of the modified lightness scaler with destination device black point.

圖 8 :使用修改的光度縮放器與目的地裝置黑點的幾何

套用一般色度壓縮演算法之後,必須接著將點「移回」;也就是說,必須套用反向轉換,才能取得最終的對應色彩。

Shows the formula for the inverse transformation to obtain the final mapped color.

雙遊戲殼層的案例

目標是將單一遊戲殼層的SIG_KNEE一般化為來源裝置 GBD 或目的地裝置 GBD 具有雙殼層結構的情況。 內部殼層將稱為「參考殼層」,而外部殼層則稱為「合理殼層」。 您想要考慮下列情況。

(a) 來源 GBD 和目的地 GBD 都有兩個殼層結構。

(b) 來源 GBD 具有雙殼結構:目的地 GBD 只有一個殼層。

(c) 來源 GBD 只有一個殼層:目的地 GBD 具有雙殼層結構。

(d) 來源 GBD 和目的地 GBD 只有一個殼層。

案例 (d) 是先前討論的單一遊戲殼層案例。 對於案例(a)、(b)和(c),您可以將光度調整一般化,以使用雙殼層結構的額外資訊。 在來源或目的地只有一個殼層的情況下(b) 和 (c) 中,您引進了一個「引動參考殼層」,將在後續的「引動參考殼層」一節中討論。兩個殼層的一般演算法將說明案例 (a) 。 在說明引發的參考殼層建構之後,演算法也可以套用至案例 (b) 和 (c)。 至於色度壓縮,壓縮比例將由可用的最大殼層決定。 換句話說,如果有可用的可能殼層和參考殼層,則會使用可辨識殼層:否則,將會使用參考殼層。

一般化光度調整

來源和目的地 GBD 兩個殼層的存在表示您必須將來源 GBD 中的一組四個點對應至目的地 GBD 中的對應集合。

Shows how to map a set of four points to a corresponding set.

註標具有下列意義。

o 或 r: “original” (source) 或 “複製” (目的地)

min 或 max: minimum neutral lightness or maximum neutral lightness or maximum neutral lightness

pla 或 ref:合理的殼層或參考殼層

每四個四倍的排序也是這些點的預期相對程度。

Lightness Rescaling 地圖使用與單一殼層相同的前兩個方程式,但 J S 會以分次方式定義,如下所示。

Shows the formula for J S in a piecewise manner. (7)

換句話說,它是參考殼層內的 sigmoidal,以及外部的線性。 請參閱圖 9。

Diagram that shows a graph for the Lightness Rescaling function for two-shell GBDs.

圖 9 :雙殼層 GBD 的光度調整函式

引發的參考殼層

其中一個 GBD 有一個殼層,另一個 GBD 有兩個殼層,您必須為只有一個殼層的 GBD 建立「參考殼層」。 現有的殼層,稱為參考殼層,將變更為「合理的殼層」。。事實上,您實際上不需要在完整的 Jab 空間中建立殼層。 由於光度重新調整只會使用 J maxJ min,因此您只需要為引發的參考殼層組成這些值。 有兩種情況,視 GBD 有兩個殼層而定。

案例 1:來源 GBD 有兩個殼層:目的地 GBD 有一個殼層。

判斷中性軸上的目的地引發參考殼層;也就是說,殼層的 J r、\ min、\ ref 和 J r、\ max、\ ref 。 這是使用下列演算法完成的。

Shows the algorithm to determine the destination induced Reference Shell.

因素? 和 ? 控制合理殼層與參考殼層之間的分隔。 值為 1 表示 J min 值或 J mₐₓ 值相吻合。 其值是從來源參考殼層和來源合理殼層「引發」。

Shows the formula for the values of the source Reference Shell and the source Plausible Shell.

「模糊因素」F 和 F 必須介於 0 到 1 之間的無法調整參數 。 如果值為 0,則直接從來源殼層推斷 J min 或 J mₐₓ。 在此情況下,請選擇 F low = 0.95,而 F high = 0.1。

案例 2:來源 GBD 有一個殼層;目的地 GBD 有兩個殼層。

判斷中性軸上來源引發的參考殼層;也就是說,殼層的 J o、\ min、\ ref 和 J o、\ max、\ ref 。 這是使用下列演算法完成的。

Shows the algorithm to determine the destination induced Reference Shell on the neutral axis.

同樣地,因素是什麼? 和 ? 控制合理殼層與參考殼層之間的分隔。 值為 1 表示 J min 值或 J mₐₓ 值相吻合。 其值是從來源參考殼層和來源合理殼層「引發」:

Shows the algorithm to control the separation between the Reference Shell and source Plausible Shell.

CIE TC8-03 建議變更的原因

BasicPhoto 與 CIE TC8-03 建議有下列不同之處。

  1. 色度不會壓縮到尖尖,而是沿著固定光線的線條。
  2. 光度範圍會使用色域中最深色彩的光線,而不是範圍界限跨越中性座標軸的點。
  3. 如果轉換中的任一個 gamut 界限有兩個殼層,BasicPhoto 同時支持參考 gamut 殼層和合理的 gamut 殼層。
  4. BasicPhoto 使用 CIECAM02;而不是使用 CIECAM97s 在 400 cd/m2 轉換為 D65,然後使用 RIT IPT 色彩空間。

第一個變更是為了避免使用壓縮至小便士時可能發生的音調反轉問題。 如圖 10 所示,提示壓縮可能會導致音調反轉。 當高色度色彩比色度較低的色彩更輕時,就會發生這種情況。 由於 SGCK 會在光度和色度中獨立壓縮每個圖元,因此不保證在壓縮之後保留圖元值之間的光度關聯性。 這個決定壓縮固定光線的已知缺點是,你可以遭受色度損失,特別是在目的地遊戲界限非常平坦的地區,就像與明亮的黃色一樣。

Diagram that shows the tone inversion caused by SGCK.

圖 10 :SGCK 造成的音調反轉

Shows an original image of a teapot.Shows the SGCK result of the teapot image.Shows the BasicPhoto result of the teapot image.

圖 11 :原始影像、SGCK 結果和 BasicPhoto 結果

圖 11 說明這種語氣反轉。 左邊是數位相機所擷取的原始影像;在中央,由 SGCK 重現的影像;在右側,由 BasicPhoto 重現的影像。 左邊的影像位於數位相機的色彩空間中,中央和右側影像位於 LCD 視訊顯示器的色彩空間中。 在原始影像中,茶壺的上部比底部暗,因為底部反映了它所坐的桌布。 在 SGCK 影像中,上層部分實際上比底部更輕,因為音調反轉。 此外,很難看到反映在茶壺下部的專案。 在右側,BasicPhoto 已修正語氣反轉,反映的文章更清楚地區別。

第二項變更是在印表機上改善近黑色色彩的複製,其中最黑色不會直接落在CIECAM02中性軸上。 下圖 12 顯示轉換成 sRGB 的影像;使用 SGCK 為 RGB 噴墨印表機重現;並使用 BasicPhoto 為同一部印表機重現。 中央的影像未使用完整的設備黑色,因此它缺乏原始畫面中所見的對比。 對比會還原為 BasicPhoto。

Shows the original image of a playset.Shows the image of the playset reproduced for an R G B inkjet printer using SGCK.Shows the image of the playset reproduced for an R G B inkjet printer using BasicPhoto.

圖 12 :增強黑色

第三次變更是為了改善數位相機的色彩複製。 特別是在使用參考目標分析數位相機的情況下,從測量色彩建立的色域界限描述可能不會包含可能擷取到真實世界場景中的所有色彩。 您不必將所有色彩裁剪到測量色彩目標的範圍,而是允許推斷產生合理的遊戲範圍。 BasicPhoto 演算法的設計訴求是支援這類推斷的遊戲界限。

第四次變更是因為CIECAM02適用於遊戲對應。 TC8-03 在 400 cd/m2 上將裝置色彩轉換成 D65 所建議的程式,然後使用 RIT IPT 色彩空間既需要計算,又耗時。

Hue 對應

HueMap 相當於 ICC 飽和度意圖。

如果來源 gamut 界限或目的地 gamut 界限不包含初選,則此模型會還原為上一節所述的 MinCD (relative) 模型;例如,無法判斷初選的裝置(具有四個以上的通道的 ICC 配置檔)或單色 ICC 配置檔。

此演算法會先調整輸入色彩值的色調。 然後,它會使用剪貼圖同時調整光線和色度。 最後,它會裁剪色彩值,以確保其位於 gamut 內。

第一個步驟是判斷「Hue Wheel」。針對來源和目的地裝置尋找主要和次要色彩的 JCh 值。 您只會考慮色調元件。 這會導致每個裝置有六個色彩點的主要或次要色調方向盤。 (請參閱圖 13。

Diagram that shows the hue wheels with six color points.

圖 13 :Hue 方向盤

如果來源藍色主要複本未旋轉至目的地藍色主要複本,則可以取得更好的結果。 相反地,來源藍色主要色調角度會作為目的地藍色主要色調角度。

接下來,針對來源影像中的每個輸入色彩執行色調旋轉,

a)使用輸入色彩的色調角度,判斷來源色調方向盤上相對於兩個相鄰主要或次要色彩的色彩位置。 位置可以視為主要之間的距離百分比。 例如,輸入色彩色調是從 Magenta 的色調值到紅色色調值的 40%。

b)在目的地色調方向盤上,尋找相關聯的色調角度,例如,40% 從 Magenta 到 Red。 此值將會是目的色調角度。

一般而言,來源初選和次要複本不會與目的地初選和次要相同色調角度:也就是說,目的地色調角度通常與來源色調角度不同。

例如,假設色調輪會產生下列值:

來源 M = 295 度,來源 R = 355 度。

目的地 M = 290 度,目的地 R = 346 度。

如果輸入色彩的色調角度為 319 度,則會是來源 M 到來源 R 的 40% 角度 (24 度)。從 M 到 R 的角度為 60 度,而從 M 到輸入色調的角度為 24 度。 計算從目的地 M 到目的地 R 22 度 40% 的角度,因此目的地色彩的色調角度為 312 度。

接下來,計算來源色調和目的地色調的色調參考點。 若要計算特定 h (hue) 值的色調參考點,您想要尋找 J (光度) 值和 C (色度) 值。

  • 使用色調的相對位置,在連續的主要或次要點的 J 值之間插補,以尋找色調參考點的 J 值;例如,在此範例中為40%。
  • 在此 J 值和 h 值尋找 C 值上限。 您現在有該色調的色調參考點 JCh。

Diagram that shows a hue leaf.

圖 14 :色調分葉(特定色調的色域界限配量視覺效果)

下一個步驟是計算每個圖元的剪下對應。 首先,針對來源色彩色調角度,將來源色域的色調分葉可視化,以及從目的地色域呈現的色調分葉,以取得在色調旋轉期間計算的目的色調角度。 色調葉是由從 JCh 色域界限表面以特定色調角度的「配量」來建立的(請參閱圖 14)。

注意:基於效能優化的原因,不會實際建立色調葉;僅供視覺效果之用,此處會加以描述和顯示。 作業會直接在指定色調的 gamut 界限介面上執行。 然後,您可以計算色調參考點,以判斷剪差對應。

  • 執行光度調整,將來源分葉的黑白點對應至目的地分葉(請參閱圖 15)。 來源色調葉的黑白點會藉由縮放來源界限的所有 J 座標,以線性方式對應至目的地色調葉的黑白點。 色調對應的輸入色彩值會以相同方式縮放。

Diagram that shows the lightness mapping.

圖 15 :光度對應

  • 判斷每個色調分葉的色調參考點。 將剪差對應套用至來源分葉,讓來源和目的地參考點重合(請參閱圖 16)。 特定色調之 gamut 的參考點是相鄰初選之間的插補色調參考點。 來源色調葉的參考點會以線性方式對應至目的地色調葉的參考點,使用鎖定 J 軸的「剪力」作業,讓黑色點和白色點保持靜止。 來源和目的地色調葉的黑色點、白色點和參考點應該相吻合。
  • 將剪下對應套用至光線調整的輸入色彩值。 來源色彩值的 J 和 C 座標會按比例縮放,相對於其與 J 軸的距離。
  • 接下來,對色調參考點的 J 值進行細微的色度相依光度壓縮,會在剪下對應的色彩點上執行。 對色調參考 J 的壓縮是以類似伽瑪的方式完成,其中色調參考 J 上的白色、黑色、灰色和點不會受到影響。 所有其他點都傾向於以平滑的方式指向色調參考 J,稍微堆在色調參考 J 附近,色度剩餘常數。 色度相依性可確保中性色彩不會受到影響,而且在色度較高的色彩上會增加效果。

以下是對色調參考 J 的光度壓縮的數學描述,或調整目的點的 J 值。 它稱為目的地點,因為它已經切入目的地範圍。

首先,計算目的地點的 「factorC」 (色度相依性因數),以決定光度壓縮會有多少影響。 接近或位於 J 軸上的點將幾乎沒有壓縮或沒有壓縮;距離 J 軸(高色度)更遠的點將套用更多的壓縮。 乘以 0.5 以確保 factorC 小於 1,因為 sourceC 可能會稍微大於 referenceC,但不能大於兩倍。

factorC = (destinationC / referenceC) ? 0.5

其中:

destinationC 是目的地點的 C 值。

referenceC 是 Hue 參考點的 C 值。

接下來,判斷目的點 J 在色調參考 J 上方或下方。如果上面有,請執行下列動作:

  1. 計算相對於 referenceJ 之目的點的 「factorJ」。。 這個 FactorJ 值會介於 0 到 1 之間(如果位於 referenceJ 上則為 0;如果位於 maxJ 則為 1)。

  2. factorJ = (destinationJ - referenceJ) / (maxJ - referenceJ)

    其中:

    destinationJ 是目的地點的 J 值。

    referenceJ 是 hue 參考點的 J 值。

    maxJ 是 gamut 的最大 J 值。

  3. 將類似伽瑪的電源函式套用至 factorJ,這會將 factorJ 減少一定數量。 此範例使用 2 的乘冪(正方形)。 從原始 factorJ 減去縮減的 factorJ,並將結果乘以主要參考J 上方的總 J 範圍來尋找 “deltaJ”,這代表在光度壓縮之後 J 中的變更,但不包括色度相依性。

  4. deltaJ = (factorJ - (factorJ ? factorJ)) ? (maxJ - referenceJ)

  5. 將 factorC 套用至 deltaJ (色度越高,效果就越大),並計算目的地點的新 J 值。

  6. destinationJ = destinationJ - (deltaJ ? factorC)

如果目的地點的 J 值低於 referenceJ,則會執行與上述步驟 A-C 類似的計算,使用 minJ 而不是 maxJ 來尋找 J 中的範圍來計算 factorJ,並考慮參考 J 下方作業的極性。

factorJ = (referenceJ - destinationJ) / (referenceJ - minJ)

deltaJ = (factorJ - (factorJ ? factorJ)) ? (referenceJ - minJ)

destinationJ = destinationJ + (deltaJ ? factorC)

其中:

minJ 是 gamut 的最小 J 值。

輸入色點的色度會以線性方式展開(可能的話),並沿著與該色調和光度之來源和目的地色度的最大色度值成正比的常光度。 結合上述色度相依光度壓縮,這有助於保留飽和度,因為使用參考點的剪貼圖有時會使來源點在色度中過度壓縮(請參閱圖 16)。

Diagram that shows shear mapping to match hue reference points, before the shear on the left, after shear on the right.

圖 16 :剪貼圖、對色調參考 J 的光度壓縮和色度擴充

以下是色度擴充程式的數學描述,或調整目的點的 C 值。 它稱為目的點,因為它已經剪下對應,且光度壓縮到目的地範圍。

  1. 在切變對應之前,請判斷sourceExtentC (來源點光線和色調的色度範圍)。

  2. 在將來源點轉換成目的點的剪下對應和光度壓縮之後,判斷 destExtentC (目的地點光線和色調的色度範圍)。

  3. 如果 sourceExtentC 大於 destExtentC,則不需要調整目的地點的色度,而且您可以略過下一個步驟。

  4. 調整 destinationC (目的點的色度)以符合這個光度和色調的目的地色度。

  5. destinationC = destinationC ? (destExtentC / sourceExtentC)

    其中:

    destinationC是 C 值的目的點。

    sourceExtentC 是來源點光線和色調來源範圍的最大 C 值。

    destExtentC 是目的點光度和色調之目的範圍的最大 C 值。

最後,執行 Mimimum 距離裁剪。 如果色調旋轉、調整光線和剪貼圖輸入色彩仍然略超出目的範圍,請裁剪到目的地遊戲界限上最接近的點(請參閱圖 17)。

Diagram that shows the minimum distance clipping.

圖 17 :最小距離裁剪

Gamut 界限描述和 Gamut Shell 演算法

裝置遊戲界限函式會使用裝置模型引擎和分析參數來衍生色彩裝置遊戲界限,其描述為裝置遊戲機殼的索引頂點清單。 船體的計算方式不同,取決於您使用的是添加劑裝置,例如監視器和投影機,或減數裝置。 索引頂點清單會儲存在 CIEJab 中。 索引頂點清單的結構已針對 DirectX 的硬體加速進行優化。

這種方法有許多已知的解決方案。 如果您在網路上搜尋「凸殼 DirectX」,您會收到超過 100 次點擊。 例如,此特定主題有 1983 年的參考(計算機圖形理論與應用、“Shiphulls、b-spline 表面和 cadcam”,pp. 34-49),該主題的參考可追溯到 1970 年到 1982 年。

您可以從外部可用的資訊判斷點集合,如下所示:

  • 監視器參考殼層的點是使用裝置著色器空間中色彩 Cube 的取樣來產生。
  • 從用來初始化模型的範例數據取得印表機和擷取裝置參考殼層的點。
  • scRGB 和 sRGB 參考殼層的點是使用 sRGB 色彩 Cube 的取樣來產生。
  • 擷取裝置的合理殼層點是使用裝置色彩空間中色彩 Cube 的取樣來產生。
  • 投影機參考殼層的點是使用裝置著色器空間中色彩立方體中多hedron 的取樣來產生。
  • 使用空間本身色彩立方體取樣,產生寬範圍色彩空間可能殼層的點。

您可以根據裝置設定檔和系統支援服務,建立有效描述色彩裝置遊戲的頂點清單。

針對輸出裝置,gamut 界限描述裝置可以顯示的色彩範圍。 遊戲界限是從用來建立裝置行為的模型相同的數據產生。 在概念上,您會輸出裝置可以產生之色彩範圍的取樣、測量色彩、將度量轉換成外觀空間,然後使用結果來建立遊戲界限。

輸入設備較棘手。 輸入影像中的每個像素都必須有一些值。 每個像素都必須能夠以某種方式代表在真實世界中找到的任何色彩。 從這個意義上說,輸入設備沒有色彩「失色」,因為它們一律可以表示。

所有數位影像格式都有一些固定的動態範圍。 由於這項限制,總會有一些不同的刺激對應到相同的數位值。 因此,您無法建立真實世界色彩與數位相機值之間的一對一對應。 相反地,遊戲界限是藉由估計一系列真實世界色彩來形成,這些色彩可以產生相機的數字回應。 您可以使用該估計範圍作為輸入設備的範圍。

主要包含以提供商務圖形意圖類型 gamut 對應。

在真正的面向物件樣式中,您會抽象化遊戲界限的基礎表示法。 這可讓您彈性地在未來變更表示法。 若要瞭解新 CTE 中使用的 gamut 界限描述元 (GBD),您必須先瞭解 gamut 對應演算法 (GMA) 的運作方式。 傳統上,GMA 的設計是為了符合圖形藝術界的需求:也就是說,重現已針對建立輸入影像的裝置正確轉譯的影像。 圖形藝術 GMA 的目標是讓輸出裝置上輸入影像的最佳重現。 新的 CTE GBD 旨在解決四個關鍵問題。

由於輸入影像會針對輸入裝置轉譯,因此所有色彩都符合媒體的白色點與黑色點之間的範圍。 假設影像是場景的照片,其中有擴散白色,例如白色發球衫的人,以及反射的醒目提示,例如從窗戶或 Chrome 保險杠反射的光線。 場景會轉譯為輸入媒體,讓反射醒目提示對應到媒體的白色點,而擴散白色則對應到比中白點更深的中性色彩。 如何將場景色彩對應至輸入媒體的選擇,既是場景相依的決策,也是審美決策。 如果原始場景遺漏反射醒目提示,則擴散白色可能會對應到媒體的白色點。 在具有許多醒目提示細節的場景中,反射白色與擴散白色之間會留下更多範圍。 在醒目提示不重要的場景中,可能會留下很少的範圍。

針對預先轉譯的影像,遊戲對應相對簡單。 基本上,原始媒體的白色點會對應到複製媒體的白色點,來源黑色點會對應到目的地黑點,而且大部分的對應都已完成。 存在的不同 GMA 提供在來源媒體音階上對應其他點的變化,以及處理跨色色值的不同方式。 但是,在這些變化中,白色與白色和黑色的對應是一致的。 此實作要求白色在 50 的 J* 以上,且低於 50 的 J* 黑色。

並非所有色彩編碼都會限制輸入影像的色彩範圍。 IEC 標準色彩編碼 scRGB (IEC 61966-2-2) 針對三個色彩通道中的每一個提供 16 位紅色、綠色和藍色 (RGB)。 在該編碼中,參考黑色不會編碼為 RGB 三重 (0, 0, 0), 但編碼為 (4096, 4096, 4096)。 參考白色編碼為 (12288, 12288, 12288)。 scRGB 編碼可用來代表反射醒目提示和陰影詳細數據。 它包含無法實際執行的 RGB 三倍,因為它們需要負量的光線,以及位於 CIE 光譜定位以外的編碼方式。 顯然,沒有裝置可能會產生 scRGB 遊戲中的所有色彩。 事實上,沒有裝置可以產生人類可以看到的所有色彩。 因此,裝置無法填滿 scRGB gamut,而且能夠代表其填滿的色域部分會很有用。 每個裝置在 scRGB 空間中都有一系列值,可產生這些值。 這些是裝置的「預期」色彩;裝置在這部遊戲之外生產色彩會出人意料。 有從 scRGB 空間到外觀空間的已定義轉換,因此每個裝置也有預期重現的外觀值範圍。

在 scRGB 和擷取具有固定目標特徵的擷取裝置輸入中,可以取得超出預期值範圍的值。 如果有人將相機校正到測試目標;然後擷取具有反射醒目提示的場景,可能有比目標白點更亮的圖元。 如果自然發生的紅色比目標紅色更色度,則會發生同樣的事情。 如果有人從裝置擷取 scRGB 影像,然後手動編輯影像中的色彩,則即使這些圖元位於完整的 scRGB gamut 內,還是可以建立落在裝置遊戲範圍之外的圖元。

第二個問題起初似乎與這個問題無關。 當您使用色彩目標來描述輸入設備的特性,例如相機或掃描儀時,就會發生此情況。 反思 ive 目標通常是在紙張上產生,並包含一些彩色修補程式。 Manufaturers 會針對每個色彩修補程式,提供以固定檢視條件拍攝的色彩測量數據檔。 色彩分析工具會在這些測量值與裝置中色彩感測器所傳回的值之間建立對應。 問題在於,這些色彩目標通常未涵蓋裝置值的完整範圍。 例如,掃描儀或相機可能會傳回參考白點的值(253、253、253),而參考紅色修補程式可能會有 RGB 值(254、12、4)。 這些代表輸入設備的預期值範圍,以目標值為基礎。 如果您根據目標的回應來描述輸入設備的特性,則您只會預期此窄範圍內的色彩。 這個範圍不僅小於人類可以看到的色彩範圍,而且比裝置所能產生的色彩範圍小。

在這兩種情況下,儘管有參考範圍或測量,但很難估計輸入設備或影像的色域。 在第一個問題中,輸入裝置的合理 gamut 小於 scRGB 的完整範圍。 在第二個問題中,目標的參考範圍小於輸入設備的完整可能範圍。

第三個問題涉及音調對應。 許多可以充分代表圖形藝術中使用的預先轉譯影像的甘圖界限模型,例如,布勞恩和費爾奇爾德山脈 GBD(Braun[97]),以及莫羅維奇的 Segment Maxima 界限描述元(Morovic[98])。 但這些型號只提供有關裝置遊戲極端狀況的資訊;它們遺漏了圖調對應中其他點的相關信息。 如果沒有這類資訊,GMA 只能對最佳音調對應進行粗略的估計。 更糟的是,這些模型無法協助 scRGB 和數位相機影像中的擴充動態範圍。

在攝影和錄像業中,這個問題是如何解決的? 相機會擷取影像。 專家可能會討論擷取裝置中發生的轉譯量;但他們同意,這不是一個重大數額。 這兩種技術不會將所擷取場景中的擴散白色對應到媒體的白色點。 同樣地,它們不會將場景的黑色點對應到媒體的黑色點。 攝影電影的行為是在密度空間中使用特性曲線描述的,通常稱為 Hurter 和 Driffield 或 H&D 曲線。 曲線會顯示原始場景的密度和電影上產生的密度。 圖 18 顯示典型的 H&D 曲線。 X 軸代表增加記錄曝光。 Y 軸代表投影片上的密度。 曲線上標示五個參考點:黑色無詳細數據,代表負數的最小密度:黑色與詳細數據;參考中灰色卡片;具有詳細數據的白色;和白色沒有細節。 請注意,黑色之間沒有細節的空間(代表裝置黑色)和黑色與細節(陰影黑色)。 同樣地,白色之間有一個空間,細節(擴散白色)和白色沒有細節(代表裝置白色)。

Diagram that shows the H and D curve for slide film.

圖 18 :投影片的 H&D 曲線

視頻產業在圖像中提供「頭室」和「足部」。 在ITU 709規格中,亮度(稱為 Y)以 8 位編碼,範圍為 0 到 255。 不過,參考黑色編碼為 15,參考白色編碼為 235。 這會讓編碼範圍介於 236 到 255 之間,以代表反射醒目提示。

視頻產業提供了一個基本上封閉的循環系統。 雖然有許多不同的設備廠商,但視訊系統是以參考裝置為基礎。 視訊影像有標準編碼方式。 不需要與視訊影像通訊遊戲界限,因為所有影像都會編碼為在相同的參考裝置上進行重現。 電影也是封閉式循環,因為不需要在不同的元件之間傳遞元數據。 您想要一個解決方案,讓來自具有不同遊戲範圍的裝置影像,並代表預先轉譯和未回復的場景,以不同的色板在輸出上重現。

新 CTE 必須解決的第四個問題是,裝置所產生的視覺灰色色彩,例如,當監視器上的 red=green=blue 時,通常不會落在 CAM 的中性軸上(當色度 = 0.0 時)。 這給 GMA 造成了很大的困難。 若要讓 GMA 運作良好,您必須調整裝置範圍和輸入點的描述,讓裝置的中性軸落在外觀空間的中性軸上。 您必須以類似的數量調整中性軸的點。 否則,您無法透過影像進行順暢的分級。 在離開 GMA 的途中,您會復原此對應,相對於輸出裝置的中性軸。 這稱為軸的「脊椎」拉直。 就像脊椎醫生一樣,你不僅理順了骨骼(中性軸),而且調整了身體的其餘部分,以隨著骨骼一起移動。 就像脊椎醫生一樣,您無法在整個空間中以相同數量調整基本架構。 相反地,您會以不同的方式調整不同的區段。

Diagram that shows the curvature of the device neutral axis relative to the CIECAM neutral axis.

圖 19: 相對於 CIECAM 中性軸的裝置中性軸曲率

新的 CTE 需要的是一種遊戲界限模型,可用來表示轉譯和未回復的來源影像、提供有關裝置中性外觀的資訊,以及提供具有廣泛亮度範圍的音調對應影像資訊。

Diagram that shows the three gamut shells.

圖 20 :三個遊戲殼層

gamut 界限是由三個殼層所組成,可定義三個區域。

在新 CTE 中,遊戲板的外殼是由裝置遊戲中的樣本點製成的凸殼所形成。 船體是由採取一組樣本點並圍繞它們表面而形成的。 凸殼有額外的屬性,在任何地方凸起。 因此,這不是可以容納數據的最小可能船體。 但實驗顯示,將樣本點調整得太緊會導致影像中未密封的成品,例如缺乏平滑底紋。 凸殼似乎解決了這些問題。

在演算法中,會針對從裝置取樣的一組點取得色彩外觀值。 針對監視器和印表機,色彩外觀值是透過輸出樣本取得,然後加以測量。 您也可以建立裝置模型,然後透過裝置模型執行綜合數據來預測測量值。 然後,測量值會從色度空間(XYZ)轉換成外觀空間(Jab),而船體會包裹在點周圍。

此演算法的重點在於,從色度轉換為外觀空間時所使用的採用白色點不一定是媒體的白色點。 相反地,您可以選取距離中性座標軸更遠的距離和中性軸上(或接近)的點。 該點接著會有 100 的 J 值。 測量的 Y 值高於採用白色點的樣本,最終會得到大於 100 的 J 值。

如果您將場景的擴散白點放置為色彩空間轉換採用的白色點,則場景中的反射醒目提示將很容易偵測為具有大於 100 的 J 值。

由於CIECAM02色彩模型是以人類視覺系統為基礎,因此選取採用的白色之後,黑色點的亮度等級會自動由模型決定。 如果輸入影像具有廣泛的動態範圍,則可能有值對應至小於零的 J 值。

下圖 21 顯示透過合理和參考遊戲中心執行的裝置中性。

Diagram that shows the device neutral axis added to gamut boundary.

圖 21 :新增至 gamut 界限的裝置中性軸

所有 gamut 對應都牽涉到將輸入範圍裁剪至輸出範圍,或壓縮輸入範圍以符合輸出範圍。 更複雜的演算法是由以不同方向壓縮和裁剪,或將遊戲分割成不同的區域,然後在不同區域中執行裁剪或壓縮來形成。

新的 CTE 會擴充此概念,以支援可能遊戲區域、合理的 gamut 和參考 gamut 的區域,並讓 GMA 以不同的方式對應它們。 此外,GMA 也有裝置中性軸的相關信息。 下列討論說明如何處理可能的遊戲和參考遊戲彼此折疊的情況。

Diagram that shows the G M A with two un-collapsed gamut descriptors.

圖 22 :具有兩個未折迭遊戲描述元的 GMA

如果您從輸入設備,例如以反射目標特徵的相機或掃描器對應至 scRGB 空間,您可能會看到此範例。 在這裡,比參考白色更輕的合理色彩是反射醒目提示。 在實務上,以目標描述相機的特性可能不會產生相機中可能的完整值範圍;然而,在自然界發現的反射亮點和非常色度的顏色會。 (變性目標通常有一個修補程式,這是媒體上可能的最低密度。有了這樣的目標,反射的亮點就會落在目標的範圍內。反光目標的參考黑色將是陰影黑色區域的開頭。 也就是說,陰影中可能會有比目標上黑色更暗的色彩。 如果影像在該區域中包含許多有趣的內容,則可能值得保留該色調變化。

Diagram that shows the G M A with a collapsed destination gamut.

圖 23 :具有折疊目的地 gamut 的 GMA

圖 23 顯示一種可能的 gamut 對應演算法,當目的地 gamut 只提供從裝置白色到黑色的範圍,而且此範圍之外沒有可能的色彩。 一般輸出裝置可能會發生這種情況,例如印表機。 可能的色彩會對應至目的地遊戲的邊緣。 但它缺少輸出裝置的音調曲線。 GMA 必須選取一些低亮度的中性點,才能做為參考白色的對應目的地。 複雜的演算法可以藉由直方圖來表示來源影像中的光線,並查看預期但比參考白色更輕的落差數目。 在反射醒目提示和參考白色的對應點之間,目的地裝置中所需的空間越多。 較簡單的演算法可能會從裝置白色挑選任意距離,例如5%。 類似的方法適用於最大黑色和陰影黑色的對應。

產生目的地音調曲線之後,您可以在類似上圖 23 中使用的方法中對應。 目的地音調曲線中的所有點都會落在裝置範圍中,而對應中的所有點都必須落在裝置範圍內。

如果您反轉左圖和右圖,以及圖 23 中箭號的方向,您可以描述來源影像只有參考範圍的情況,而輸出裝置的三個範圍則尚未折疊在彼此上。 其中一個範例可能是從監視器對應至 scRGB。 同樣地,GMA 必須合成來源影像之音調曲線上五點的控制點。 有些對應可能會將所有音調曲線的點放在 scRGB 裝置範圍內,而其他對應可能會藉由將擴散白色對應到參照白色,並允許反射白色對應到較輕的值,來使用更多 scRGB gamut。

最後,您有兩個裝置只有參考 gamut 的情況,也就是大部分的 gamut 對應演算法的運作方式。 因此,您可以只回到目前的演算法來解決此問題。 或者,如果您有合理的方法來判斷來源和目的地裝置的五個參考點,則可以排列來對應參考點。

裝置遊戲包含中性座標軸上的五個參考點以上。 這些只是代表影像中潛在區域之間的界限。 在每個參考點之間,您可以使用任何現有的遊戲對應技術。 因此,您可以裁剪非預期的色彩範圍,並在預期的白色和黑色之間壓縮所有色彩,或者您可以裁剪參考範圍以外的所有色彩,並在該範圍內壓縮。 有許多可能性,可以在不同的 GMA 中實作。 此外,GMA 可以透過不同的方式壓縮和裁剪。 所有這些組合都涵蓋在這個發明中。

到目前為止,在討論中,遊戲已被視為只是建立、擷取或顯示影像的裝置功能。 不過,裝置的所有映像都必須有相同的遊戲,沒有理由。 GMA 取決於 GBD 中的數據。 如果描述項在影像之間變更,則 GMA 無法知道。 特別是,如果影像沒有反射醒目提示,如果 gamut 描述元沒有顯示色彩比擴散白色更輕,GMA 的表現會更好。

在新 CTE 架構中,可以使用多個 GMA。 使用多個 GMA 原本就定義不明確。 例如,如果擷取裝置將 GMA 與其「外觀和風格」產生關聯,它通常會使用「目標」目的地遊戲來執行此動作。 輸出裝置和「目標」來源遊戲也是如此。 sRGB gamut 是一個常用的目標隱含 gamut。 因此,如果可預測性是優先順序,強烈建議您使用單一 GMA。 單一 GMA 工作流程應該是所有工作流程的預設值,尤其是取用者和 Prosumer 工作流程。 雖然慣用複製的遊戲對應應該一次完成,但有一個實例包含多個對應程式。 首先,若要進行校訂,您可以對最終目標裝置的甘圖執行慣用對應,然後將彩色轉譯轉譯為校訂裝置的色域。 其次,某些類型的對應是用來改變影像的特性,但不包括來對應到裝置遊戲,例如調整音調曲線或色度。 如果使用多個 GMA,轉換介面會採用系結的 gamut 對應陣列,也就是已使用一對 gamut 界限描述初始化的 gamut 對應。 當有多個 gamut 對應時,成功 gamut map 的輸入 gamut 界限必須與其前置專案的輸出範圍界限相同。

裝置遊戲界限函式會採用裝置模型引擎和分析參數,並衍生色彩裝置遊戲界限,其描述為裝置遊戲殼層的已排序頂點清單。 已排序的頂點清單會儲存在 CIEJab 中。 已排序頂點清單的結構已針對 DirectX 的硬體加速進行優化。 這種方法有許多已知的解決方案(在網路上搜尋“凸殼 DirectX”,您獲得超過 100 次點擊)。 本主題也參考了1983年(計算機圖形理論與應用,“Shiphulls,b-spline 表面和 cadcam”pp. 34-49),參考可追溯到1970年到1982年的主題。

兩種不同的技術可用來計算遊戲殼層中的三角形。 對於加法 RGB 裝置以外的其他裝置,您可以計算凸殼。 如果您有直接存取這類裝置來驗證演算法的健全性、效能和精確度,您可以考慮調查其他裝置的非凸殼支援。 這是不需要進一步描述的已知程式。 用於加法 RGB 裝置的技術如下所述。

不同的 GBD 有優點和缺點。 凸殼表示法保證良好的幾何屬性,例如凸色配量,可提供唯一的交集點,以及從中性軸上點發出的光線。 凸殼表示的缺點也是凸面。 眾所周知,許多裝置,特別是顯示裝置,有遠非凸起的遊戲。 如果實際遊戲明顯偏離凸起假設,凸殼表示法會不準確,可能就不代表現實的程度。

採用 GBD 後,會提供相當精確的實際色域表示法,因此會發生其他問題,有些是因為色調配量的概念。 至少有兩種病理狀況。 在下圖 24 中,CRT 遊戲會產生具有「島嶼」的色調配量。在圖 25 中,印表機遊戲會產生色調配量,其中缺少中性軸的一部分。 在這些情況下,病理色調配量不是由特定的病理範圍所造成。 它們是由色調配量的概念所造成,因為 (a) 它沿著固定色調採用,而 (b) 它只需要對應色調角度的平面的一半。

Diagram that shows a top view and side view of the 'curving in' in the blue hues.

圖 24 :典型的 CRT 監視器有一個遊戲,以藍色色調顯示奇特的「彎曲」。 如果色調配量位於這個色調範圍內,隔離的島嶼可能會出現在色調配量中。

Diagram of a gamut with a 'gap' in its neutral axis.

圖 25 :印表機可能有在中性軸中有「間距」的色板。 取下色調配量時(只有平面的一半),在邊界部分有「縮排」,也就是中性軸。 這很難以演算法方式解析。

為了解決這些病理學問題,建議建立一個新的框架,放棄作為起點的色調配量概念。 相反地,架構會使用一組「界限線元素」,或位於遊戲界限上的線條。 它們不一定提供一致的幾何視覺效果,例如色調配量,但它們支援所有常見的遊戲作業。 除了解決先前提到的問題,這種方法還建議,即使有可能,色調配量的建構也是浪費運算的。

甘特界限的三角

起點是 GBD,其中包含三角範圍界限。 建構 GBD 的已知方法通常會提供該三角。 針對具體性,此處將說明一種建構加總裝置 GBD 的方法,其裝置空間。 這些裝置包括監視器(CRT 型和 LCD 型)和投影機。 Cube 的簡單幾何可讓您在 Cube 上引入一般格子。 Cube 的界限面可以以數種方式進行三角形,例如圖 26 所示的界限面。 此架構會為裝置提供裝置型號,以便以演算法方式取得格子點的色度值,或直接針對這些點進行測量。 此架構也提供CIECAM02,因此您可以假設起始數據已對應至 CIECAM02 Jab 空間。 然後,RGB Cube 界限面上的每個格子點在 Jab 空間中都有對應的點。 在 RGB 空間中形成三角形集合的點連接也會引發 Jab 空間中的一組三角形。 如果 RGB 立方體上的格子足夠精細,這組三角形會形成合理的三角界限三角,而且 (b) 從裝置空間到統一色彩空間的轉換在拓撲上表現良好:也就是說,它會將界限對應至界限,而且不會將範圍變成內部範圍,讓內部點變成界限點。

Diagram that shows a simple method to triangluate the gamut boundary of a device with R G B as its device space.

圖 26 :以 RGB 作為裝置空間三角的簡單方法

界限線元素

此架構的核心是界限線元素的概念;一組線段,即 (a) 躺在甘特邊界上,而 (b) 則躺在飛機上。 在此情況下,平面是色調平面。 每一條線段都是與平面交集與遊戲界限三角形相交的結果。 雖然許多研究人員已經使用與界限三角形交集平面的建構,但它們通常會分析這些線段之間的關聯性,並嘗試從線段中建構一致的幾何物件。 已設計不同的演算法,以一個接一個地跟著這些線段,直到取得整個色調配量為止,而且已嘗試加快搜尋程式。

這種方法不同。 您會將平面與三角形交集,以取得線條線段。 接著,您會將這些行區段視為 基本 概念物件。 必須分析線段之間的關聯性;您不必知道它們如何彼此互連。 這一觀點解決了與島嶼的色調配量問題。 嘗試建構色調配量的已知方法假設,如果一個以一條線段開頭,並遵循它到下一行線段,依此假設;它最終會回到起點,此時會建構整個色調配量。 不幸的是,這種方法會錯過這個島(在最壞的情況下,大陸)。 不堅持獲得連貫的幾何圖片:也就是說,色調配量,你可以毫不費力地處理島內的問題。 這種方法的另一個重要差異是,為了加快線段的建構,它會使用“三角形篩選”。三角形篩選會擲回某些三角形,這些三角形絕對不會產生在目前遊戲運算中很有用的線條線段。 因為與平面交集的三角形在計算上相當昂貴,因此這可提升速度。 副作用是,您無法建構色調配量,因為因為三角形篩選而遺漏某些線條區段。

Gamut 作業:CheckGamut

下列範例將說明架構的運作方式,以及 CheckGamut 如何執行,也就是檢查色彩是否為遊戲範圍中的作業。

下圖說明一般架構。 有各種元件。 以斜體標示的元件是實作中可能不同的元件,視問題中的遊戲作業而定。 其他元件在所有遊戲作業中都是不變的。 首先, Input 是一組色彩屬性。 在 CheckGamut 的情況下,它是查詢色彩。 在圖 27 和下列討論中,假設色調角度是在輸入色彩屬性之間,也可以從中取得。 如果輸入是 Jab 或 JCh 中的整個色彩點,您便可以從中計算色調角度,這顯然是這種情況。 請注意,只有使用色調平面,才需要色調角度。 視有問題的遊戲作業而定,可能不需要使用色調平面。 例如,在建構例程 CheckGamut 時,您可能想要使用常數 J 的平面。這是不會進一步使用或討論的一般性;但是,記住當色調平面可能不是最佳選擇時,支援其他遊戲作業的方法彈性可能很有説明。

Diagram that shows the flow to support gamut operations.

圖 27 :支援遊戲作業的架構

直接從輸入取得的色調角度,或從輸入計算,用來初始化圖中標示 為 Full Hue 平面的色調平面 。 “Full” 是強調的,因為這是完整的平面,而不僅僅是包含色調的半平面。 完整平面同時包含輸入色調角度和與其相反的角度 180 度。 色調平面的主要功能是 Intersect 函式,如下列小節:全色調平面:交集中所述。 假設已建構 GBD,而且可以使用一組 Gamut 界限三角形 。 使用交集,將三角形篩選與色調平面交集。 三角形篩選元件會以斜體標示,這表示元件在實作中會因不同的遊戲作業而有所不同。 CheckGamut 的 三角形篩選 會在 Gamut 作業:CheckGamut 一節中說明(繼續)。 與色調平面交集三角形的結果是空的或 界限線元素 ,也就是一對相異點。 如果結果為非空白,則會傳遞至 Line元素處理器 ,這再次會根據遊戲作業執行不同的動作。 Line 元素處理器會更新內部數據結構內部處理的數據,其內容或版面配置也相依於遊戲作業。 一般而言, 內部處理的數據 會包含問題的「答案」,這會隨著每個找到的新界限線元素持續更新。 處理所有界限線元素時,找到答案。 它仍可透過 輸出配接器加以存取。 由於內部處理的數據是特定遊戲作業,因此輸出配接器也是特定遊戲作業。

全色調平面:交集

Intersect 函式會計算色調平面和三角形的交集。 如同聽起來一樣簡單,此函式有兩個原因很重要。

首先,與平面交集三角形的每個邊緣可能會產生三個交點,這是幾何上不可能的情況。 計算中可能發生這種情況的原因是,在浮點中完成計算時,例如 IEEE 格式、不確定因素或「數值雜訊」,在每個影響邊緣是否交集平面的結論。 當平面在接近遺漏的情況下交集邊緣時,交點彼此接近,而判斷交點是否位於邊緣是隨機的。 雖然點數值中的雜訊很小,但有兩個以上的交集點的質化結論在幾何上是不可能的,而且很難在演算法中正確處理。

其次,此函式在每個篩選三角形的每個邊緣都處於關鍵迴圈中,因此請務必儘可能優化其效率。

若要解決數值雜訊的第一個問題,請以整數執行計算。 若要解決優化其效率的第二個問題,請快取每個頂點的最常使用屬性,或與每個頂點相關聯的「點產品」。 傳入整數是保證幾何一致性的典型方式。 基本概念是,如果您必須量化,請從頭開始進行。 然後,後續的計算可以在整數中執行,如果整數夠寬,因此沒有溢位的危險,則可以使用無限精確度來完成計算。 下列量化函式適用於此目的。

ScaleAndTruncate(x) = x*10000 的整數部分

縮放比例 10000 表示輸入浮點數有四個小數位數,這足以讓此應用程式精確。 根據色彩外觀空間的值範圍,您想要選擇寬度足以容納中繼計算的整數類型。 在大部分的色彩外觀空間中,每個座標的範圍在 -1,000 到 1,000 之間。 量化座標的最大可能絕對值為 1,000*10,000 = 10,000,000。 如您所見,中繼數量是點乘積,這是兩個座標乘積的總和,因此其絕對值為 2*(10,000,000) ー = 2?10 ₁₄。 所需的位數目是 log ー (2?10 ₁₄ ) = 47.51。 因此,整數類型的便利選擇是64位整數。

若要保證與三角形交集的平面一律會提供空集或兩個點的集合,您必須將三角形視為整體,而不是個別三角形的個別邊緣。 若要瞭解幾何情況,請考慮三角形頂點從色調平面的「帶正負號距離」。 請勿直接計算這些帶正負號的距離;而是使用量化法向量計算頂點位置向量的點乘積到平面。 更具體地說,在色調平面初始化期間,量化法向量會計算如下。

NormalVector = (ScaleAndTruncate(-sin(hue)), ScaleAndTruncate(cos(hue)))

請注意,這個向量是二維向量。 您可以使用二維向量,因為色調平面是垂直的,因此一般向量的第三個元件一律為零。 此外,點產品的查閱表格會初始化為具有來自 Gamut 界限三角形的每個頂點專案,並將對應的點產品設定為無效值。

在與三角形交集色調平面的一項作業中,會查閱三角形每個頂點的點乘積。 如果查閱表中的值是無效的值,則會使用下列表達式來計算點產品。

NormalVector.a*ScaleAndTruncate(頂點.a) + NormalVector.b*ScaleAndTruncate(vertex.b)

同樣地,永遠不會使用頂點的 J 元件,因為一般向量為水準。 然後,這個點產品會儲存在查閱表格中,如此一來,如果稍後查詢頂點的點乘積,就不需要再計算它。

快取可讓您在查閱表格中以漸進方式建置點產品之後,快速判斷邊緣是否與平面交集。

Diagram that shows the intersection of the hue plane with a triangle.

圖 28 :與三角形交集色調平面

若要讓圖 28 中的三角形在非變質線段中交集色調平面,頂點的點產品必須在下列其中一種模式中,以遞增順序排序。

0,0,+;-,0,0;-,0,+;-,-,+;-,+,+

當平面與點產品中具有不同標誌的頂點交集時,線段的終點就會發生。 如果正負號為零,則頂點位於平面上,而邊緣與平面的交集則是頂點本身。 另請注意,案例為0,0,0;-,-,0;不會回報 0、+、+ 。 第一個案例(0,0,0)意味著整個三角形位於飛機上。 這不會報告,因為三角形的每個邊緣都應該屬於不完全躺在飛機上的鄰近三角形。 當考慮該三角形時,將會報告邊緣。 另外兩個案例 (-,-,0 和 0,+,+) 會對應到三角形在一個頂點觸及平面的幾何組態。 這些案例不會報告,因為它們不會引發非變質線段。

上述演算法會決定何時計算三角形邊緣與色調平面之間的交集。 判斷邊緣之後,會使用參數方程式來計算交集。 如果其中一個點產品為零,交集就是頂點本身,因此不需要任何計算。 假設邊緣頂點的兩個點產品都是非零,頂點1 是具有負點產品 dotProduct1 的頂點;而頂點2 則是具有正點產品 dotProduct2 的頂點 這個順序很重要,以確保計算的交集點不取決於頂點在邊緣表示中的排序方式。 邊緣的幾何概念與其頂點是對稱的。 使用邊緣參數方程式的計算層面引進了不對稱(起始頂點的選擇),這可能會因為要解決線性方程式的數值雜訊和調理而提供稍微不同的交集點。 如此一來,交集點、交集點由下列專案提供。

t = dotProduct1/(dotProduct1 - dotProduct2)

交叉口。J = 頂點1。J + t * (頂點2.J - 頂點1。J)

intersection.a = vertex1.a + t * (vertex2.a - vertex1.a)

交集.b = 頂點1.b + t * (頂點2.b - 頂點1.b)

甘特作業:CheckGamut (繼續)

用於遊戲檢查的基本幾何演算法是計算光線交叉數目。 針對指定的查詢點,請考慮從查詢點開始的光線,並向上指向 (J 方向)。 計算此光線跨越範圍界限的次數。 如果這個數位是偶數,則查詢點會不足。 如果這個數位是奇數,則點位於 內部。 原則上,此演算法可以在 3D 中實作,通常受到因退化情況所造成的困難所困擾,例如邊界三角形上的光線(部分地)或低維變質,例如邊界三角形邊緣的光線平移(部分部分)。 即使在 2D 中,您也必須處理這些變質的情況:但問題更簡單,並以令人滿意的方式得到解決。 請參閱 [O'Rourke]。

針對指定的輸入點 Jab,判斷其色調角度 h,如下所示。

h = atan(b/a),

初始化色調平面,然後判斷對應至這個色調平面的界限線元素。 因為界限線元素只有在它們與向上光線交集時才相關,所以請設定三角形篩選條件來移除三角形,以提供絕對不會與向上光線交集的線條元素。 在此情況下,請考慮三角形的周框方塊。 如果查詢點位於周框方塊正上方,則向上光線不會交集三角形。 稍微擴大這個與預先固定的容錯,以允許數值雜訊,這樣您就不會不小心捨棄可能會提供有用線條元素的三角形。 結果是圖 29 中顯示的半無限矩形圓柱圖。 檢查查詢點是否在此圓柱體內部或外部,可以使用簡單的不平等有效率地實作。

Shows the triangle filter for CheckGamut.

圖 29 :CheckGamut 的三角形篩選

CheckGamut 有三個特定遊戲作業特定元件: 內部處理的數據Line 元素處理器輸出配接器。 內部處理的數據是Line元素處理器處理的線條專案清單。 在此情況下, Line 元素處理器 只會將線條元素新增至清單。 內部處理數據的內部數據結構可以是連結清單或可成長大小的數位。

輸出配接器是一個模組,可存取線條元素清單,判斷線條專案是否越過向上光線(計數 1)或否(計數 0)。 加總所有這些計數會提供總計計數。 輸出 配接器 最終會根據總計數是否奇怪,輸出「是」或「不」(不」的答案。 您判斷線條元素是否越過向上光線的步驟值得一些注意,因為這是發生變性問題的地方,也出現了過度計算的問題。 在 [O'Rourke] 之後,若要讓線條元素越過光線,右終點(具有較大色度的終點)必須嚴格地位於光線的右側。 這可確保,如果終點完全位於光線上,則只會計算一次。 相同的規則也會解決線條元素完全位於光線上的變質情況。 您不會遞增此行專案的計數。

圖 30 顯示範例遊戲的結果線條元素,且查詢點位於各種位置。

Diagram that shows the resulting line elements of a sample gamut with the query point in various positions.

圖 30 :CheckGamut 的運作方式

最小色彩差異 Gamut 對應

MinDEMap 的最小色彩差異 Gamut 對應具有簡單的規格:如果色彩在色域內,則不執行任何動作。 如果色彩不在範圍中,請將它投影到 gamut 界限上的「最接近」點。 在您指定要使用的色彩差異方程式之前,「最接近」關鍵詞並未妥善定義。 在實務上,為了讓計算更容易且更快速,所選色彩外觀空間的 Euclidean 距離或它的變體會作為色彩差異計量。 Euclidean 計量的優點是它與空間的點乘積相容,這可讓您使用線性代數。 具體地說,如果空間中定義了「點乘積」,則可以將距離定義為差異向量本身之點乘積的平方根。 點乘積通常可由正肯定的 3x3 矩陣 A 來定義。

u?v = u T Av

右側是一般矩陣乘法。 如果 A 是識別矩陣,則會復原標準點產品。 實際上,如果 Jab 是色彩空間,您不想混合元件,因此可以使用標識矩陣以外的對角矩陣。 此外,您可能想要將縮放比例維持在 和 b 上不變,以便保留色調的量值。 因此,標準 Euclidean 點產品的實用變化如下。

w J (您的 J 元件) (v 的 J 元件) + (您的元件) (v 的元件) + (您的元件) + (您的元件) + (b 元件的 v)

其中 w J 是正數。 其中一個進一步的變化是讓 w J 隨著輸入查詢點而有所不同:

w J\ = w J (queryPoint)

最終結果是距離的量值,與兩個點不對稱,而且隨著輸入查詢點的不同,在光線和色度或色調上有不同的相對權數。 這是根據一些關於人類顏色感知的觀察,即色彩差異在所有維度中都不平均加權。 研究發現,人們對光度差異的敏感度比色調和色度的差異更不敏感。

下列權數函式很有用。

w J = k ー - k ₁ (C - C mₐₓ ) n

其中 k ー = 1, k ₁ = 0.75/(C mₐₓ ) n, C mₐₓ = 100, n = 2 , C 是查詢點的色度較小,C mₐₓ.

因此,當色度為零時,會將 0.25 的權數放在 J 詞彙上,而當色度為 100 時,則權數為 1。 當色度較小時,將重量降低至 J 的趨勢,而當色度較大時,J 的重量會遵循 CMC 和CIEDE2000的建議使用方式。

Graph that shows the weight function on the J component of the metric.

圖 31 :計量 J 元件上的權數函式

針對下列範例使用 Jab 空間。 在計算上需要搜尋所有界限三角形,以判斷 Euclidean 計量中最接近的點。 以下是讓此程式盡可能有效率的簡單方法,而不需要引入其他假設,這些假設可能會加速此程式,但最終也只會得到近似答案。 首先,必須瞭解將點投射到指定三角形的幾何程式。 這裡會提供描述。

會先對包含三角形的無限平面進行正交投影。 查詢點與平面之間的最短距離可以透過兩個步驟來決定。

(a) 計算三角形的單位法向量。

(b) 計算單位法向量的點乘積,以及從查詢點和三角形上的一個點形成的向量,也就是其頂點之一。 由於一般向量具有單位長度,因此這個點乘積的絕對值是查詢點與平面的距離。

投影點可能不是答案,因為它可能位於三角形之外。 因此,您必須先執行檢查。 計算相當於計算投影點相對於三角形的巴里中心座標。 如果預測點決定在三角形內,則為答案。 如果沒有,則會在三角形的其中一個邊緣上取得最接近的點。 在三個邊緣中執行搜尋。 判斷查詢點對邊緣的投影,是類似於投影到三角形的程式,但一個維度較少。 會先計算正交投影。 如果投影點位於邊緣,則為答案。 如果沒有,則會在兩個端點的其中一個取得最接近的點。 在兩個端點上執行搜尋;也就是說,計算每個查詢點的距離,並比較哪一個較小。

仔細檢查顯示,當您流覽所有三角形時,有許多重複搜尋,因為邊緣一律由兩個三角形共用,而且頂點至少由三個邊緣共用。 此外,您不太有興趣尋找最接近一個特定三角形的點:相反地,您有興趣尋找最接近整個範圍界限的點。 不過,其中一個特定的三角形就是達成此目的。 有兩種策略可用來加速搜尋。

策略 I.每個頂點最多會處理一次。 每個邊緣最多會處理一次。

策略 II. 在搜尋的任何時間點,您都有對應的最佳距離候選專案。 如果您可以透過快速檢查來判斷三角形無法提供更好的距離,就不需要進一步繼續計算。 您不需要這個三角形最接近的點和距離。

Diagram that shows the flow of the Minimum DE Mapping.

圖 32 :最小 DE 對應圖解

圖 32 顯示 gamut map MinDEMap 的邏輯一般流程。 針對查詢點,會先叫用 CheckGamut 函式。 如果點處於遊戲內部,則地圖是無作業。 如果點處於範圍不足,請呼叫 ProjectPointToBoundary。 現在移至圖 33。 此時,假設已計算下列值。

(a) 針對標準點產品,將一般向量單位單位至每個 Gamut 界限三角形。

(b) 頂點清單和邊緣清單,除了三角形清單。

Diagram that shows the 'ProjectPointToBoundary' routine.

圖 33 :P rojectPointToBoundary 例程

所有這些都是固定的額外負荷,如果對這個範圍界限進行足夠的查詢,成本會降低。 通常,當您從一個裝置到另一個裝置建置轉換 LUT 時,只有兩個固定遊戲,而轉換 LUT 會透過統一取樣網格線上的點執行。 您預先計算標準點乘積的一般向量,即使垂直的概念會以加權點乘積為基礎,這相依於先前所述的查詢點。 原因是,相對於加權點乘積的一般向量,可以從標準點乘積的一般向量輕鬆取得。 如果 n ₀ 是標準點乘積的一般向量,則

n = (n ₀ /w J 的 J-component, n ₀ 的 a-component, n ₀ 的 b-component of n ₀ )

相對於加權點產品,三角形是正常的。 由於這種關聯性,即使必須根據查詢點進行調整,預先計算 n ₀ 仍然很有説明。

ProjectPointToBoundary 例程會從重設頂點和邊緣的「已處理歷程記錄」開始。 這些是 BOOLEAN 旗標的資料表,可追蹤先前是否已瀏覽頂點或邊緣。 它也會將變數 ShortestDistance 重設為 “INFINITY”,這是所使用浮點數系統中的最大編碼值。 然後它會執行迴圈,使用 ProcessTriangle 呼叫搜尋每個三角形的最接近點。 ProcessTriangle 是更新 ShortestDistance 變數的例程,而且顯然位於關鍵迴圈中。 其中一個優化是在結果足夠好時停止。 每次呼叫 ProcessTriangle 之後,會檢查變數 ShortestDistance。 如果滿足預先定義的閾值,您可以停止。 預先定義的臨界值取決於所使用的色彩空間,以及色彩成像系統所需的正確性。 對於一般應用程式,如果色彩差異小於人類視覺所能辨識的內容,您就不想執行不必要的工作。 對於CIECAM02,此色彩差異為 1。 不過,在實作中使用0.005的臨界值來保留計算的有效位數,因為這可能只是轉換鏈結中的中繼步驟。

ProcessTriangle 會實作上述策略 II。 從預先計算單位法向量取得標準點乘積至三角形的一般向量,它會藉由形成單位法向量的點乘積和 queryVector,從三角形的其中一個頂點,計算查詢點與包含三角形的無限平面距離。 頂點1,至查詢點 queryPoint。

queryVector = queryPoint - 頂點1

distance = |normalVector * queryVector |/||normalVector||

這是相對便宜的計算,而且需要距離才能進行進一步的計算。 如果這個距離不小於目前的最佳距離,最短距離,這個三角形不會產生更好的距離,因為它不會提供比包含它的平面更好的距離。 在此情況下,您會將控制權傳回三角形迴圈。 如果距離小於 ShortestDistance,您可能會有更近的點,如果這個點位於三角形內。 您必須執行一些「硬式」計算(雖然沒有超越線性代數),才能判斷這一點。 如果三角形的其他兩個頂點是頂點2 和頂點3,則形成基礎向量 firstBasisVector 和 secondBasisVector。

firstBasisVector = 頂點2 - 頂點1

secondBasisVector = 頂點3 - 頂點1

使用下列線性方程式系統來解決未知的您和 v。

firstBasisVector * queryVector = (firstBasisVector * firstBasisVector)u + (firstBasisVector * secondBasisVector)v

secondBasisVector * queryVector = (secondBasisVector * firstBasisVector)u + (secondBasisVector * secondBasisVector)v

和投影點位於三角形內的條件如下:

0 ≤ u ≤ 1, 0 ≤ v ≤ 1,而您 + v ≤ 1

在此計算之後,如果判斷投影點位於三角形內,則您已找到新的最接近點:您在開頭計算的距離是最新的最短距離。 在此情況下,請更新變數 ShortestDistance 和 ClosestPoint。 如果投影點位於三角形之外,您可能會在其其中一個邊緣上找到更近的點。 因此,您可以在三個邊緣上呼叫 ProcessEdge 例程。

Diagram that shows the flow of the ProcessEdge and ProcessVertex routines.

圖 34 :P rocessEdge 和 ProcessVertex 例程

ProcessEdge 例程會實作策略 I,如圖 34 所示。 ProcessEdge 一開始先檢查邊緣是否已經處理過。 如果是,則不會採取任何進一步的動作。 如果沒有,它會繼續計算查詢點的正交投影到包含邊緣的無限行。 計算中涉及的線性代數類似於先前的三角形方程式。 不過,計算比較簡單,這裡不會說明。 如果投影點位於邊緣內,您會從查詢點找到投影點的距離。 如果這個距離小於 ShortestDistance,您就會找到一個新的最接近點。 同時更新 ShortestDistance 和 ClosestPoint。 如果投影點位於邊緣之外,請在兩個端點上呼叫 ProcessVertex。 傳回控件之前,請更新邊緣歷程記錄,讓此邊緣標示為「已處理」。

最後,您會提供 ProcessVertex 的描述。 ProjectVertex 例程也會實作策略 I 並維護頂點歷程記錄數據表。 如圖 34 所示,它會先檢查頂點之前是否已處理。 如果是,則不會採取任何進一步的動作。 如果沒有,它會繼續計算頂點與查詢點的距離。 如果距離小於 ShortestDistance,請同時更新 ShortestDistance 和 ClosestPoint。 最後,它會更新頂點歷程記錄,讓這個頂點標示為「已處理」。

當外部控件迴圈已耗盡所有三角形,或在符合色彩差異閾值之前結束時,就會存取變數 ClosestPoint。 這是 MinDEMap 的結果。 如果對對應色彩與查詢色彩的距離感興趣,呼叫端也可以擷取 ShortestDistance。

Hue Smoothing

Diagram that shows two top views of hue smoothing, the original on top and the hue smoothed on the bottom.

圖 35 :Hue Smoothing

色調限制的作業發生問題;也就是說,作業只會考慮色調平面內的變數。 圖 35 顯示以藍色色調呈現「不連續」色調配量之遊戲的範例。 在這個色調範圍中,對於某些色調角度,色度界限與色調平面是正切的。 實際上,這會導致色調配量的拓撲結構發生變更。 在顯示的範例中,當色調平面橫掃此色調範圍時,會出現「島」並淹沒。 拓撲中的這項變更會導致色調特定作業中斷。 例如,固定色調的提示會突然變更,因為色調角度會在此範圍內變更。

有一個顏色科學的理由,為什麼它想要保留色調在特定作業。 若要解決上述問題,原始的 Gamut 界限三角形必須「色調平滑」。一般來說,一組 Gamut 界限三角形的色調平滑化是一組三角形,因此(a)它形成新“gamut”的界限,它可能不會對應到實際的裝置遊戲,而且包含原始三角形集合所定義的遊戲:和 (b) 新集合中的三角形與色調平面平行。

取得色調平滑三角形集的一個實用方法是採用原始頂點的凸體。 如圖 35 所示,凸殼的色調配量在有問題的色調範圍中會順暢地變化,而不會突然變更拓撲。

在 Gamut 界限描述中設定主要和次要

某些遊戲對應方法,例如 HueMap,取決於裝置主要和次要位置。 對於加法裝置,主要裝置為紅色、綠色和藍色(R、G 和 B):和次要是青色、洋紅和黃色(C、M 和 Y)。 對於減法裝置,主要專案為 C、M 和 Y;和次要是 R、G 和 B。GBD 會追蹤這六個值,加上白色和黑色(W 和 K),在 Jab 色彩值的陣列中。 這些值會在建立時設定為 gamut 界限描述。 針對輸出裝置,主要專案可以透過裝置型號執行裝置控制值的組合來決定。 針對擷取裝置,這種方法不適合建立參考 GBD,因為幾乎無法擷取產生完全飽和純裝置值的映像,例如 (0.0、0.0、1.0)。 WCS 裝置配置檔包含擷取目標中初選的索引。 由於這些值未包含在 ICC 配置檔中,因此在轉換成 Jab 之後,使用從一般掃描器目標測量的值,相對於 ICC 檢視條件。

在 Gamut 界限描述中設定中性軸

HueMap 和相對 MinCD gamut 對應方法會使用裝置中性座標軸來拉直。 針對基準輸出裝置,中性座標軸可以透過DeviceToColorimetric方法執行裝置中性值(R=G=B 或 C=M=Y),然後透過 CIECAM02 物件的 ColorimetricToAppearance 方法來判斷。 不過,擷取裝置在呈現中性範例時不一定會傳回裝置中性值。 當環境光源不完全中性時,這特別正確。 WCS 裝置配置檔包含目標中性樣本的索引。 使用這些範例來設定中性座標軸。 由於這項資訊不適用於 ICC 配置檔,因此您必須使用用於輸出裝置的相同方法;透過 DeviceToColorimetric 方法執行裝置中性範例,然後結合輸入值和色度結果。

基本色彩管理概念

Windows 色彩系統架構和演算法