WCS 색 영역 맵 모델 프로필 스키마 및 알고리즘
- 개요
- Gamut 맵 모델 프로필 아키텍처
- 영역 경계 생성
- GMMP 스키마
- GMMP 스키마 요소
- GamutMapModel
- GMMP 기준 알고리즘
- 중립 축 맞춤
- 영역 경계 설명 및 Gamut Shell 알고리즘
- 관련 항목
개요
이 스키마는 GMMP(영역 맵 모델 프로필)의 콘텐츠를 지정하는 데 사용됩니다. 연결된 기준 알고리즘은 다음 항목에서 설명합니다.
기본 GMMP 스키마는 일반적인 헤더 정보, 기본 설정 Gamut 맵 모델 플러그 인에 대한 선택적 참조 및 확장 태그로 구성됩니다.
또한 GMMP는 대상 영역 맵 모델에 대한 명시적 정보를 제공하고 대상 모델을 사용할 수 없는 경우 사용할 기준 대체 영역 맵 모델에 대한 정책을 제공합니다. 스키마에는 개인 확장 정보가 포함될 수 있지만 다른 불필요한 정보는 포함되지 않습니다.
Gamut 맵 모델 프로필 아키텍처
출력 디바이스 색인 공간의 샘플링은 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, &XYZ);
pCAM->ColorimetricToAppearanceColors(1, &XYZ, &JCh);
}
}
}
영역 경계 생성
영역 경계에는 주 복제본, 중립 샘플 및 셸의 세 가지 구성 요소가 있습니다. 주 복제본은 디바이스 주 복제본을 사용하고 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
이 요소는 다음 하위 요소의 시퀀스입니다.
- ProfileName 문자열,
- DefaultBaselineGamutMapModel,
- 선택적 설명 문자열,
- 선택적 작성자 문자열,
- 선택적 PlugInGamutMap 및
- 선택적 ExtensionType입니다.
유효성 검사 조건 : 각 하위 요소는 자체 형식으로 유효성을 검사합니다.
네임스페이스
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 맵 모델 프로필 스키마입니다.
Copyright (C) Microsoft. All rights reserved.
유효성 검사 조건 : 각 하위 요소는 자체 형식으로 유효성을 검사합니다.
DefaultBaselineGamutMapModel 형식
UINT 형식
열거형 값:
- "MinCD\_Absolute" "MinCD\_Relative" "SIG\_KNEE" "HueMap"
유효성 검사 조건 : 값은 위의 열거형 중 하나와 일치해야 합니다.
PlugInGamutMapType
이 요소는 GUID GUIDType 및 모든 하위 요소의 시퀀스입니다.
유효성 검사 조건 : GUID는 GMM PlugIn DLL GUID와 일치하는 데 사용됩니다. 최대 100,000개의 사용자 지정 하위 요소가 있습니다.
ExtensionType
이 요소는 모든 하위 요소의 선택적 시퀀스입니다.
유효성 검사 조건 : 최대 100,000개의 하위 요소가 있을 수 있습니다.
GMMP 기준 알고리즘
중립 축 맞춤
대부분의 영역 매핑 알고리즘은 원본 디바이스의 중립 축을 대상 디바이스의 중립 축에 매핑하는 것을 목표로 합니다. 즉, 흰색은 흰색으로, 검은색은 검은색으로, 회색은 회색으로 바꿉니다. 이는 대상 디바이스의 가벼움 범위와 일치하도록 원본 색의 가벼움을 조정하여 부분적으로 해결됩니다. 그러나 이것이 문제를 완전히 해결하지는 못합니다.
화이트 디바이스의 색이 디바이스 검정의 색과 정확히 일치하지 않는 대부분의 이미징 디바이스의 물리적 속성입니다. 예를 들어 모니터 흰색은 세 가지 주 복제본의 색과 상대 광도의 합계에 따라 달라지지만, 모니터 검정은 디스플레이 표면의 반사에 따라 달라집니다. 프린터 흰색은 용지의 색에 따라 달라지지만 프린터 검정은 사용되는 잉크 또는 토너에 따라 달라집니다. 디바이스 흰색을 모양 공간의 중립 축(0과 정확히 같음)에 정확하게 매핑하는 모양 모델은 디바이스 검은색을 중립 축에 매핑하지 않습니다. 눈은 가벼움이 증가함에 따라 크로마 차이에 더 민감하기 때문에 중간 회색은 장치 검은 색보다 훨씬 더 크로매틱으로 표현됩니다. (그림 1은 중립 축의 곡률을 2차원으로 보여 줍니다. 실제로 중립 축은 3차원으로 더 복잡한 곡선을 형성합니다.)
CAM은 이러한 디바이스 중립 색이 색으로 나타날 것이라고 예측하지만 실제 관찰자는 이를 보완하는 것처럼 보입니다. 대부분의 사람들은 이러한 디바이스 중립 값을 색으로 간주하지 않습니다. 따라서 대부분의 영역 매핑 모델의 경우 원본 중립을 디바이스 중립에 계속 매핑해야 합니다.
원본 중립을 디바이스 중립에 매핑하려면 영역 매핑 알고리즘을 적용할 때 원본 및 대상 영역 경계와 각 픽셀을 조정합니다. 먼저 원본 색의 밝기에서 원본 디바이스의 중립 축이 모양 공간의 중립 축에 직접 떨어지도록 원본 색의 각 값을 조정합니다. (그림 1의 왼쪽 참조) 그런 다음 대상 장치 영역 경계 색의 밝기에서 대상 디바이스의 중립 축에 있는 각 색이 모양 공간의 중립 축에 직접 떨어지도록 대상 디바이스의 영역 경계 설명을 조정합니다. (그림 1의 오른쪽을 참조하세요.)
그림 1 : 그림에 표시된 중립 축의 맞춤입니다. 왼쪽: 원본 디바이스 중립 축을 기준으로 원본 지점을 조정합니다. 오른쪽: 대상 영역 경계 설명을 기준으로 대상 영역 경계 설명을 조정합니다.
각 원본 픽셀 값은 해당 밝기 값에서 중립 축을 기준으로 조정합니다. 이렇게 하면 원본 디바이스 중립이 모양 모델의 중립 축에 해당합니다. 또한 원본 영역의 표현에 불연속성이 없도록 해당 가벼움의 다른 모든 색을 동일한 양으로 이동합니다. 원본 디바이스 중립이 다른 가벼움 수준에서 동일하게 색채로 표현되지 않기 때문에 가벼움 수준에서 서로 다른 양으로 이동해야 합니다. 분명히 이것은 사소한 변환이 아닙니다.
대상 디바이스 값을 처리하는 것이 좀 더 까다롭습니다. 처음에는 대상 디바이스 중립 축을 기준으로 전체 대상 영역 경계를 비슷한 방식으로 조정합니다. 오른쪽 그림 1에 나와 있습니다. 이러한 조정을 통해 원본 회색 값이 대상 회색 값에 매핑됩니다. 영역 매핑 알고리즘이 작동하는 공간입니다.
그러나 이 공간은 대상 디바이스의 실제 동작을 정확하게 설명하지는 않습니다. 영역 매핑된 색이 모양 모델 및 대상 디바이스 모델에 전달되기 전에 매핑을 반전해야 합니다. 매핑된 모든 값을 대상 디바이스 중립 축에 이전에 적용된 오프셋과 반대로 오프셋합니다. 이렇게 하면 대상 중립 축이 CAM에서 원래 나타내는 값에 다시 매핑됩니다. 영역 경계 및 모든 중간 값에 대해 동일하게 수행됩니다.
그림 2 : 대상 디바이스 중립 축의 맞춤 취소
최소 색 차이(MinCD)
MinCD(최소 색 차이) 상대 및 절대 버전 - ICC 색 인식 의도에 해당합니다.
참고 항목
MinCD GMM은 "로고" 색(별색), 로고 색 그라데이션이 포함된 그래픽 및 선 아트를 매핑하고, 영역 외부 색을 사용하여 로고 색 그라데이션을 매핑하고, 교정 변환의 최종 단계에 적합합니다. MinCD GMM은 대상 영역 내에 있는 사진 이미지에 사용할 수 있지만 사진 이미지의 일반 렌더링에는 권장되지 않습니다. 영역 외부 색을 대상 영역 표면의 색에 매핑하면 영역 경계를 가로지르는 부드러운 그라데이션의 톤 또는 크로마 불규칙성과 같은 원치 않는 아티팩트가 발생할 수 있습니다. 사진 이미지에는 BasicPhoto를 사용하는 것이 좋습니다. 사진 또는 콘톤 이미지에 BasicPhoto 이외의 영역 매핑이 필요한 경우 대안은 MinCD를 사용하는 대신 해당 매핑을 구현하는 플러그 인 GMM을 만드는 것입니다.
영역 내 색은 변경되지 않은 상태로 유지됩니다. 범위를 벗어난 색의 경우 영역 외부 입력 지점에서 최소 색 거리를 가지는 대상 영역에서 점을 찾아 가벼움과 크로마를 조정합니다. 색 거리는 JCh 공간에서 계산됩니다. 그러나 가벼움(J)의 거리와 크로마(C) 또는 색조(h)의 거리는 다르게 가중치를 적용합니다. 크로마 종속 가중치 함수는 가벼움의 거리에 사용되므로 임계값 크로마에 도달할 때까지 작은 크로마의 경우 무게가 더 작고 큰 크로마의 경우 더 커지며, 그 후에는 체중이 1, 즉 크로마 또는 색조의 거리와 동일한 무게로 유지됩니다. 이는 CMC 및 CIEDE2000 권장 사용량을 따릅니다. 상대 색과 절대 색의 두 가지 변형이 있습니다.
상대 색인: 먼저 앞에서 설명한 대로 원본 축과 대상 중립 축을 맞춥니다. 그런 다음 조정된 원본 색을 조정된 대상 영역 경계로 클리핑합니다. (그림 4를 참조하세요. 일정한 가벼움을 따라 크로마 매핑.) 앞에서 설명한 대로 대상 디바이스 값을 다시 조정합니다. 단색 대상 영역 경계의 경우, 크로마 클리핑은 크로마 값(C)이 0(0.0)으로 설정됨을 의미합니다.
절대 색 인식: 상대 색과 비슷하지만 원본 축과 대상 중립 축의 맞춤이 없습니다. 원본 값은 대상 중립 축에 직접 잘립니다. 원본 및 대상 영역 경계가 모두 단색인 경우 동작은 상대 색인 변형과 동일합니다. 즉, 중립 축 맞춤이 수행된 다음, 크로마가 0으로 잘립니다. 이렇게 하면 미디어와 색이 크게 달라도 적절한 출력을 얻을 수 있습니다.
그림 3 : 조정된 영역으로 MinCD 클리핑
BasicPhoto
개요
BasicPhoto - ICC 선호, 그림 또는 지각 의도에 해당합니다.
이 알고리즘은 CIE156:2004에서 CIE TC8-03에 의해 설명된 크로마 종속 시그모이드 가벼움 매핑 및 커프 무릎 크기 조정(SGCK)의 변형입니다. 이 변형 알고리즘은 이중 영역 셸을 사용하여 GBD(영역 경계 설명자)를 지원합니다. 즉, 참조 셸과 그럴듯한 셸이 있는 GBD입니다. 원래 GBD에서 하나의 영역 셸만 가정하는 SGCK 알고리즘은 GCUSP(Morovic, 1998)의 크로마 종속성과 결합된 브라운과 페어차일드(1999)가 제안한 시그모이드 가벼움 매핑 및 무릎 기능 크기 조정을 통합하는 SIG_KNEE 알고리즘(Braun 1999)을 기반으로 합니다. 그것은 인식된 색조 상수, 예를 들면, 색조 수정된 Jab에 있는 색조 각도를 유지하고, 크로마 종속적인 쪽 및 90% 무릎 기능 크로마에 적용되는 제네릭 (이미지 독립적) 시그모이드 가벼움 배율을 사용합니다. 변형은 일정한 가벼움의 선을 따라 배율을 조정합니다.
단일 영역 셸의 경우
원본 및 대상 GBD에 하나의 영역 셸만 있는 경우 알고리즘을 검토하는 것이 유용합니다. 이 경우 알고리즘은 다음 계산으로 구성됩니다.
먼저 다음 수식을 사용하여 초기 밝기 매핑을 수행합니다.
(1)
여기서 J 는 원래의 가벼움이고 JR 은 재현 가벼움입니다.
(2)
원본 영역 경계가 단색인 경우 중립 축 맞춤으로 인해 모노크롬 경계의 경우 크로마 값이 0이 됩니다. 이로 인해 C가 0과 같은 퇴행성 사례가 발생합니다. 이 경우 pC 는 1로 설정됩니다.
pC 는 원래 색의 크로마에 의존하는 크로마 종속 가중치(Morovic, 1998)이며, C 및 JS 는 시그모이드 함수를 사용하여 매핑되는 원래의 가벼움의 결과이다.
JS(Braun 및 Fairchild, 1999)를 계산하기 위해 원래 및 재현 가벼움 값 사이의 1차원 조회 테이블(LUT)은 먼저 불연속 누적 정규 함수(S)를 기반으로 설정됩니다.
(3)
여기서 x와 S는 각각 정규 분포의 평균 및 표준 편차이고 i = 0,1,2... m,m은 LUT에 사용되는 포인트 수입니다. Si는 i /%에 대한 누적 정규 함수의 값입니다. 매개 변수는 재생 영역의 검정점의 가벼움에 따라 달라지고 표 1에서 보간할 수 있습니다. 이러한 매개 변수를 계산하는 자세한 내용은 브라운과 페어차일드(1999, p. 391)를 참조하세요.
J minOut
5.0
10.0
15.0
20.0
x 1
53.7
56.8
58.2
60.6
S
43.0
40.0
35.0
34.5
표 1 : BasicPhoto 가벼움 압축 매개 변수 계산
S를 가벼움 매핑 LUT(S LUT )로 사용하려면 먼저 [0,100]의 가벼움 범위로 정규화되어야 합니다. 정규화된 데이터는 수식 4에 표시된 것처럼 대상 디바이스의 동적 범위로 크기가 조정됩니다. 여기서 Jmin\ Out 및 Jmax\ Out은 각각 검정점의 가벼움 값과 재현 매체의 흰색 점입니다.
(4)
이 시점에서 J S 값은 S LUT에서 해당 J O'와 포함된 J S 값의 m 지점 간을 보간하고 다음 수식을 입력으로 사용하여 가져올 수 있습니다.
(5)
J minIn 은 원래 매체의 검정점의 가벼움 값이고, J maxIn 은 원래 매체의 흰색 점의 가벼움 값이며, J O 는 원래의 가벼움입니다. 이후 참조의 경우 다음 그림 4에 설명된 대로 S에서 방금 설명한 방식으로 정의된 시그모이드 함수를 나타낼 수 있습니다.
그림 4 : 일정한 가벼움을 따라 크로마 매핑
둘째, 대상 영역 경계가 크로매틱이면 일정한 가벼움(l) 줄을 따라 크로마를 압축하고 다음과 같이 압축을 수행합니다.
(6)
여기서 d는 l에서 E와의 거리를 나타냅니다.g는 중간 영역 경계 를 나타냅니다.r은 재현을 나타내고 원래 그림 5를 나타냅니다.
그림 5 : BasicPhoto의 크로마 및 가벼움 압축
대상 영역 경계가 단색이면 크로마 값이 0으로 잘립니다.
셋째, MinCD 클립(앞에서 설명)을 사용하여 잔차 오류를 제거합니다.
블랙 기능 향상
대상이 프린터 디바이스인 경우 검은색을 개선하기 위해 이전 알고리즘을 수정할 수 있습니다. 이 문제는 일반적으로 프린터에서 생성할 수 있는 가장 어두운 색에 해당하지 않는 JminOut의 선택과 관련이 있습니다.
더 구체적으로 말하자면, 100% 잉크(또는 GCR/잉크 제한이 적용되는 경우 가능한 최대 적용 범위)를 배치하여 얻은 밀도가 가장 높은 색은 일반적으로 색 모양 공간에서 "중립"이 아닙니다. 그림 6을 참조하세요. 즉, 대상 장치에 중립 최소 가벼움을 사용하는 경우 생성된 가벼움 배율기는 프린터에서 달성할 수 있는 가장 높은 밀도가 아닌 최소 가벼움에 매핑됩니다. 프린터에 모니터의 추가 사용 사례를 고려합니다. 그러면 모니터 검정 R=G=B=0이 고밀도로 인쇄되지 않습니다. 이미지 품질에 미치는 영향은 깊이와 대비가 부족하다는 것입니다.
그림 6 : 디바이스 검은색 점이 중립 최소 가벼움보다 더 어둡게 표시될 수 있습니다.
대상 "디바이스 블랙 포인트"가 Jkakbk/JkCkh k라고 가정합니다. C k가 0이 아니면 디바이스 검정점이 CAM02를 기준으로 중립이 아닙니다. 가벼움 배율의 생성에서 대상 "중립 최소 가벼움"에 J k를 사용하는 경우; 즉, 설정
JminOut = Jk
원본 영역 셸에 적용하고 그림 7에 표시된 구성을 가져옵니다. 그림에서 색조 평면은 h k에 해당합니다.
그림 7 : 대상 디바이스 블랙 포인트와 함께 수정된 가벼움 배율을 사용하는 기하 도형
후속 크로마 압축 알고리즘이 계속 진행되도록 하려면 원본 및 대상 셸의 최대 및 최소 밝기를 맞추려고 합니다. 이 작업은 점을 왼쪽으로 이동하여 J neutralMin과 J k 간에 대상 셸을 조정하여 수행할 수 있습니다. 또한 이 변환은 h k에 해당하는 색조 평면뿐만 아니라 전체 Jab 공간에 적용되어야 합니다.
변환은 다음과 입니다.
그림 8은 변환의 효과를 보여 줍니다.
그림 8 : 대상 디바이스 블랙 포인트와 함께 수정된 가벼움 배율을 사용하는 기하 도형
일반적인 크로마 압축 알고리즘을 적용한 후에는 점이 "뒤로 이동"되어야 합니다. 즉, 최종 매핑된 색을 얻으려면 역 변환을 적용해야 합니다.
이중 영역 셸의 경우
목표는 원본 디바이스 GBD 또는 대상 디바이스 GBD에 2 셸 구조가 있는 경우 단일 영역 셸에 대한 SIG_KNEE 일반화하는 것입니다. 내부 셸을 참조 셸이라고 하는 반면 외부 셸은 그럴듯한 셸이라고 합니다. 다음과 같은 경우를 고려해야 합니다.
(a) 원본 GBD와 대상 GBD 모두 2셸 구조가 있습니다.
(b) 원본 GBD에는 2셸 구조가 있습니다. 대상 GBD에는 셸이 하나만 있습니다.
(c) 원본 GBD에는 하나의 셸만 있습니다. 대상 GBD에는 2개의 셸 구조가 있습니다.
(d) 원본 GBD와 대상 GBD 모두 셸이 하나뿐입니다.
Case(d)는 이전에 설명한 단일 영역 셸의 경우입니다. 사례(a), (b) 및 (c)의 경우 가벼움 크기 조정을 일반화하여 이중 셸 구조의 추가 정보를 사용할 수 있습니다. 원본 또는 대상에 셸이 하나만 있는 경우 (b) 및 (c)에서는 후속 섹션인 "유도 참조 셸"에서 설명될 "유도된 참조 셸"을 소개합니다. 두 셸에 대한 일반 알고리즘은 대/소문자(a)에 대해 설명됩니다. 유도된 참조 셸 생성을 설명한 후에는 대/소문자(b) 및 (c)에도 알고리즘을 적용할 수 있습니다. 크로마 압축에 관해서는, 압축 비율은 사용 가능한 가장 큰 셸에 의해 결정됩니다. 즉, 그럴듯한 셸과 참조 셸을 모두 사용할 수 있는 경우 그럴듯한 셸이 사용됩니다. 그렇지 않으면 참조 셸이 사용됩니다.
일반화된 가벼움 크기 조정
원본 및 대상 GBD에 대해 두 개의 셸이 존재한다는 것은 원본 GBD의 4개 지점 집합을 대상 GBD의 해당 집합에 매핑해야 한다는 것을 의미합니다.
아래 첨자는 다음과 같은 의미를 갖습니다.
o 또는 r: "original"(source) 또는 "reproduction"(대상)
최소 또는 최대: 최소 중립 가벼움 또는 최대 중립 가벼움
pla 또는 ref: 그럴듯한 셸 또는 참조 셸
각 4중의 순서도 이러한 점의 예상 상대적 크기입니다.
가벼움 크기 조정 맵은 단일 셸과 동일한 처음 두 수식을 사용하지만 J S 는 다음과 같이 조각 방식으로 정의됩니다.
(7)
즉, 참조 셸 내의 시그모이드이고 외부 선형입니다. 그림 9를 참조하세요.
그림 9 : 셸 2GBD에 대한 가벼움 다시 크기 조정 함수
유도된 참조 셸
한 GBD에는 셸이 하나 있고 다른 GBD에는 두 개의 셸이 있는 경우 셸이 하나만 있는 GBD에 대한 "참조 셸"을 만들어야 합니다. 참조 셸이라고 하는 기존 셸은 "그럴듯한 셸"로 변경됩니다. 실제로 전체 Jab 공간에 셸을 만들 필요가 없습니다. 가벼움 다시 크기 조정은 J max 및 J min만 사용하므로 유도된 참조 셸에 대해 이러한 값만 구성하면 됩니다. 두 개의 셸이 있는 GBD에 따라 두 가지 경우가 있습니다.
사례 1: 원본 GBD에는 두 개의 셸이 있습니다. 대상 GBD에는 하나의 셸이 있습니다.
중립 축에서 대상 유도 참조 셸을 확인합니다. 즉, 셸의 J r,\ min,\ ref 및 J r,\ max,\ ref 입니다. 이 작업은 다음 알고리즘을 사용하여 수행됩니다.
요인 ? 낮 음 및 ? 는 그럴듯한 셸과 참조 셸 간의 분리를 제어합니다. 값이 1이면 J min 값 또는 J m 값이 일치합니다. 해당 값은 원본 참조 셸 및 Source Plausible Shell에서 "유도"됩니다.
"fudge factors" F low 및 F high는 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 입니다. 이 작업은 다음 알고리즘을 사용하여 수행됩니다.
다시, 요인 ? 낮 음 및 ? 는 그럴듯한 셸과 참조 셸 간의 분리를 제어 합니다. 값이 1이면 J min 값 또는 J m 값이 일치합니다. 해당 값은 원본 참조 셸 및 Source Plausible Shell에서 "유도"됩니다.
CIE TC8-03 권장 사항의 변경 이유
BasicPhoto는 다음과 같은 방법으로 CIE TC8-03 권장 사항과 다릅니다.
- 크로마는 커프스쪽으로 압축되지 않고 일정한 가벼움의 선을 따라 압축됩니다.
- 가벼움 범위는 영역 경계가 중립 축을 교차하는 지점이 아닌 영역에서 가장 어두운 색의 가벼움을 사용합니다.
- BasicPhoto는 변환의 영역 경계에 두 개의 셸이 있는 경우 참조 영역 셸과 그럴듯한 영역 셸을 모두 지원합니다.
- BasicPhoto는 CIECAM02; 를 사용합니다. 대신 CIECAM97s를 사용하여 400 cd/m2에서 D65로 변환한 다음 RIT IPT 색 공간을 사용합니다.
첫 번째 변경은 cusp로 압축을 사용할 때 발생할 수 있는 톤 반전 문제를 방지하기 위해 수행되었습니다. 그림 10에 표시된 것처럼 커프 압축은 톤 반전을 일으킬 수 있습니다. 이것은 높은 크로마의 색이 낮은 크로마의 색보다 가벼우면 발생할 수 있습니다. SGCK는 각 픽셀을 가벼움과 크로마 모두에서 독립적으로 압축하므로 압축 후 픽셀 값 간의 가벼움 관계를 유지하지는 않습니다. 일정한 가벼움의 라인에 압축하는이 결정에 잘 알려진 단점은 밝은 노란색으로 발생하는 것처럼, 대상 영역 경계가 매우 평평한 지역에서 특히, 크로마의 손실을 겪을 수 있다는 것입니다.
그림 10 : SGCK로 인한 톤 반전
그림 11 : 원본 이미지, SGCK 결과 및 BasicPhoto 결과
그림 11에서는 이 음색 반전을 보여 줍니다. 왼쪽에는 디지털 카메라로 캡처한 원본 이미지가 있습니다. 중앙에서 SGCK에서 재현한 이미지 오른쪽에는 BasicPhoto에서 재현된 이미지가 있습니다. 왼쪽의 이미지는 디지털 카메라의 색 공간에 있고 가운데 및 오른쪽 이미지는 LCD 비디오 디스플레이의 색 공간에 있습니다. 원본 이미지에서 찻주전자의 위쪽 부분은 아래쪽보다 어둡습니다. 바닥은 앉아 있는 테이블보를 반영하기 때문입니다. SGCK 이미지에서 위쪽 부분은 톤 반전으로 인해 실제로 아래쪽보다 가볍습니다. 또한, 찻주전자의 하부에 반사된 아이템을 보기가 어렵다. 오른쪽에서 BasicPhoto는 톤 반전을 수정했으며 반사된 아티클은 더 명확하게 구별할 수 있습니다.
두 번째 변경은 가장 검은 색이 CIECAM02 중립 축에 직접 떨어지지 않는 프린터에서 거의 검은 색의 재현을 개선하기 위해 만들어졌습니다. 다음 그림 12는 sRGB로 변환된 이미지를 보여줍니다. SGCK를 사용하여 RGB 잉크젯 프린터에 대해 재현됨; BasicPhoto를 사용하여 동일한 프린터에 대해 재현됩니다. 중앙의 이미지는 전체 디바이스 검은색을 사용하지 않으므로 원본에서 볼 수 있는 대비가 부족합니다. 대비는 BasicPhoto를 사용하여 복원됩니다.
그림 12 : 고급 검정
세 번째 변경은 디지털 카메라의 색상 재현을 개선하기 위해 이루어졌습니다. 특히 디지털 카메라가 참조 대상을 사용하여 프로파일된 경우 측정된 색으로 작성된 영역 경계 설명에 실제 장면에서 캡처할 수 있는 모든 색이 포함되지 않을 수 있습니다. 모든 색을 측정된 색 대상의 영역으로 클리핑하는 대신 추론을 통해 그럴듯한 영역 경계를 생성할 수 있습니다. BasicPhoto 알고리즘은 이러한 추정된 영역 경계를 지원하도록 설계되었습니다.
네 번째 변경은 CIECAM02 영역 매핑에 잘 작동하기 때문에 이루어졌습니다. 400 cd/m2에서 디바이스 색을 D65로 변환한 다음 RIT IPT 색 공간을 사용하는 TC8-03에서 권장하는 프로세스는 계산 집약적이고 시간이 많이 걸립니다.
Hue 매핑
HueMap은 ICC 포화 의도와 동일합니다.
원본 영역 경계 또는 대상 영역 경계에 주 복제본이 포함되어 있지 않은 경우 이 모델은 이전 섹션에서 설명한 MinCD(상대) 모델(예: 4개 이상의 채널이 있는 ICC 프로필)을 확인할 수 없는 디바이스 또는 단색 ICC 프로필로 되돌리기.
이 알고리즘은 먼저 입력 색 값의 색조를 조정합니다. 그런 다음 전단 매핑을 사용하여 가벼움과 크로마를 동시에 조정합니다. 마지막으로 색 값을 클립하여 영역 내에 있는지 확인합니다.
첫 번째 단계는 "Hue Wheels"를 결정하는 것입니다. 원본 및 대상 디바이스 모두에 대한 기본 및 보조 색에 대한 JCh 값을 찾습니다. 색조 구성 요소만 고려하고 있습니다. 이로 인해 각 디바이스에 대해 6개의 색점이 있는 기본 또는 보조 색조 휠이 생성됩니다. (그림 13 참조)
그림 13 : Hue 휠
원본 파란색 주 복제본이 대상 파란색 주 복제본으로 회전되지 않은 경우 더 나은 결과를 얻을 수 있습니다. 대신 원본 파란색 기본 색조 각도가 대상 파란색 기본 색조 각도로 사용됩니다.
그런 다음 원본 이미지에서 각 입력 색에 대한 색조 회전을 수행합니다.
a)입력 색의 색조 각도를 사용하여 인접한 두 개의 기본 또는 보조 색을 기준으로 원본 색상 휠에서 색의 위치를 결정합니다. 위치는 주 데이터베이스 간 거리의 백분율로 간주할 수 있습니다. 예를 들어 입력 색 색조는 Magenta의 색조 값에서 Red의 색조 값까지의 40%입니다.
b)대상 색상 휠에서 연결된 색조 각도(예: Magenta에서 Red까지 40%)를 찾습니다. 이 값은 대상 색조 각도입니다.
일반적으로 원본 주 복제본과 보조 복제본은 대상 주 복제본 및 보조 복제본과 동일한 색조 각도가 아닙니다. 즉, 대상 색조 각도는 일반적으로 원본 색조 각도와 다릅니다.
예를 들어 색조 휠이 다음 값을 생성한다고 가정합니다.
원본 M = 295도, 원본 R = 355도.
대상 M = 290도, 대상 R = 346도.
입력 색의 색조 각도가 319도이면 원본 M에서 원본 R까지 각도(24도)의 40%입니다. M에서 R까지의 각도는 60도이고 M에서 입력 색조까지의 각도는 24도입니다. 대상 M에서 대상 R(22도)까지 40%인 대상의 각도를 계산하므로 대상 색의 색조 각도는 312도입니다.
그런 다음 원본 색조 및 대상 색상에 대한 색조 참조 지점을 계산합니다. 특정 h(색조) 값에 대한 색조 참조 지점을 계산하려면 J(가벼움) 값과 C(chroma) 값을 찾으려고 합니다.
- 색조의 상대 위치를 사용하여 인접한 기본 또는 보조 지점에 대한 J 값 사이를 보간하여 색조 참조점의 J 값을 찾습니다. 예를 들어 이 예제에서는 40%입니다.
- 이 J 값 및 h 값에서 최대 C 값을 찾습니다. 이제 해당 색조에 대한 색조 참조 지점의 JCh가 있습니다.
그림 14 : 색조 리프(특정 색조의 영역 경계 조각 시각화)
다음 단계는 각 픽셀에 대한 전단 매핑을 계산하는 것입니다. 먼저 원본 색 색조 각도의 원본 영역에서 색조 리프를 시각화하고, 색조 회전 중에 계산된 대상 색조 각도의 대상 영역에서 색조 리프를 시각화합니다. 색조 잎은 JCh 영역 경계 표면에서 특정 색조 각도로 "조각"을 가져와 생성됩니다(그림 14 참조).
참고: 성능 최적화를 위해 색조 잎은 실제로 만들어지지 않습니다. 시각화 목적으로만 설명되고 여기에 표시됩니다. 작업은 지정된 색조의 영역 경계 표면에서 직접 수행됩니다. 그런 다음, 색조 참조 지점을 계산하여 전단 매핑을 확인합니다.
- 가벼움 크기 조정을 수행하여 원본 리프의 흑백 점을 대상 리프에 매핑합니다(그림 15 참조). 원본 색조 리프의 흑백 점은 원본 경계의 모든 J 좌표를 크기 조정하여 대상 색조 리프의 흑백 지점에 선형으로 매핑됩니다. 색조 매핑된 입력 색 값은 동일한 방식으로 크기 조정됩니다.
그림 15 : 가벼움 매핑
- 각 색조 리프에 대한 색조 참조 지점을 결정합니다. 원본 및 대상 참조 지점이 일치하도록 원본 리프에 전단 매핑을 적용합니다(그림 16 참조). 특정 색상에서 영역의 참조 지점은 인접한 주 복제본 간의 보간된 색조 참조 지점입니다. 원본 색조 리프의 참조 지점은 J축을 잠그는 "전단" 연산을 사용하여 대상 색조 리프의 참조 지점에 선형으로 매핑되어 검은색 점과 흰색 점이 고정된 상태로 유지됩니다. 원본 및 대상 색조 잎의 검은색 점, 흰색 점 및 참조점이 일치해야 합니다.
- 가벼움 조정 입력 색 값에 전단 매핑을 적용합니다. 원본 색 값의 J 및 C 좌표는 J 축과의 거리를 기준으로 비례적으로 배율 조정됩니다.
- 다음으로, 색조 참조점의 J 값에 대한 미묘한 크로마 종속 가벼움 압축이 전단 매핑된 색점에서 수행됩니다. 색상 참조 J에 대한 압축은 흰색, 검은색, 회색 및 색상 참조 J의 점이 영향을 받지 않는 감마와 같은 방식으로 수행됩니다. 다른 모든 포인트는 부드러운 방식으로 색조 참조 J를 향해 경향이, 약간 chroma re기본 상수와 함께, 색조 참조 J 근처에 묶는. 크로마 종속성은 중립 색이 영향을 받지 않도록 보장하고, 그 효과는 더 높은 크로마를 가진 색에 증가합니다.
다음은 색조 참조 J에 대한 가벼움 압축 또는 대상 지점의 J 값을 조정하는 수학 설명입니다. 대상 영역으로 매핑된 전단이므로 대상 지점이라고 합니다.
먼저 대상 지점에 대한 "factorC"(크로마 종속성 요소)를 계산하여 가벼움 압축에 미치는 영향을 결정합니다. J축 근처 또는 J축에 있는 점의 압축은 거의 또는 전혀 없습니다. J축(높은 chroma)에서 멀리 떨어진 지점은 더 많은 압축을 적용합니다. 0.5를 곱하여 factorC가 1보다 작도록 합니다. sourceC가 referenceC보다 약간 크지만 두 배는 크지 않을 수 있기 때문입니다.
factorC = (destinationC / referenceC) ? 0.5
여기서
destinationC는 대상 지점의 C 값입니다.
referenceC는 Hue 참조 지점의 C 값입니다.
다음으로, 대상 지점 J가 색조 참조 J 이상인지 또는 아래에 있는지 확인합니다. 위의 경우 다음을 수행합니다.
referenceJ를 기준으로 대상 지점에 대해 "factorJ"를 계산합니다. 이 factorJ 값은 0에서 1 사이입니다(referenceJ의 경우 0, maxJ의 경우 1).
factorJ = (destinationJ - referenceJ) / (maxJ - referenceJ)
여기서
destinationJ는 대상 지점의 J 값입니다.
referenceJ는 색조 참조 지점의 J 값입니다.
maxJ는 영역의 최대 J 값입니다.
factorJ에 감마와 유사한 파워 함수를 적용하여 factorJ를 일정량 줄입니다. 이 예제에서는 2의 힘(정사각형)을 사용합니다. 원래 factorJ에서 축소된 factorJ를 빼고 결과를 기본 참조J 위의 총 J 범위로 곱하여 가벼움 압축 후 J의 변화를 나타내는 "deltaJ"를 찾지만 크로마 종속성은 포함하지 않습니다.
deltaJ = (factorJ - (factorJ ? factorJ)) ? (maxJ - referenceJ)
deltaJ에 factorC를 적용하고(크로마가 높을수록 효과가 커지음) 대상 지점에 대한 새 J-값을 계산합니다.
destinationJ = destinationJ - (deltaJ ? factorC)
대상 지점의 J 값이 referenceJ보다 낮으면 maxJ 대신 minJ를 사용하여 factorJ에서 범위를 찾고 referenceJ "아래" 작업의 극성을 고려하여 이전 단계 A-C와 유사한 계산이 수행됩니다.
factorJ = (referenceJ - destinationJ) / (referenceJ - minJ)
deltaJ = (factorJ - (factorJ ? factorJ)) ? (referenceJ - minJ)
destinationJ = destinationJ + (deltaJ ? factorC)
여기서
minJ는 영역의 최소 J 값입니다.
입력 색점의 크로마는 원본 및 대상 영역의 최대 크로마 값에 비례하는 일정한 가벼움을 따라 선형으로 확장됩니다(가능한 경우). 이전의 크로마 종속 가벼움 압축과 결합하면 참조 지점을 사용하는 전단 매핑으로 인해 소스 지점이 크로마에서 과도하게 압축되기 때문에 채도를 유지하는 데 도움이 됩니다(그림 16 참조).
그림 16 : 전단 매핑, 색조 참조 J로의 가벼움 압축 및 크로마 확장
다음은 크로마 확장 프로세스 또는 대상 지점의 C 값을 조정하는 수학 설명입니다. 전단 매핑되고 가벼움이 대상 영역으로 압축되었기 때문에 대상 지점이라고 합니다.
전단 매핑 전에 sourceExtentC(소스 지점의 가벼움과 색조의 크로마 익스텐트)를 결정합니다.
원본 지점을 대상 지점으로 변환하는 전단 매핑 및 가벼움 압축 후 destExtentC(대상 지점의 가벼움과 색조의 크로마 익스텐트)를 결정합니다.
sourceExtentC가 destExtentC보다 크면 대상 지점에 대한 크로마 조정이 필요하지 않으며 다음 단계를 건너뛸 수 있습니다.
destinationC(대상 지점의 크로마)를 이 가벼움과 색조의 대상 크로마 익스텐트 내에 맞도록 조정합니다.
destinationC = destinationC ? (destExtentC / sourceExtentC)
여기서
destinationC는 대상 지점 C-값입니다.
sourceExtentC는 원본 지점의 가벼움과 색조에서 원본 영역의 최대 C 값입니다.
destExtentC는 대상 지점의 가벼움과 색조에서 대상 영역의 최대 C 값입니다.
마지막으로, mimimum 거리 클리핑을 수행합니다. 색조 회전, 가벼움 조정 및 전단 매핑된 입력 색이 대상 영역 외부에 있는 경우 대상 영역 경계에서 가장 가까운 지점으로 클립(이동)합니다(그림 17 참조).
그림 17 : 최소 거리 클리핑
영역 경계 설명 및 Gamut Shell 알고리즘
디바이스 영역 경계 함수는 디바이스 모델 엔진 및 분석 매개 변수를 사용하여 디바이스 영역의 헐에 대한 인덱싱된 꼭짓점 목록으로 설명된 색상 디바이스 영역 경계를 파생합니다. 헐은 모니터 및 프로젝터와 같은 추가 디바이스 또는 빼기 디바이스로 작업하는지 여부에 따라 다르게 계산됩니다. 인덱싱된 꼭짓점 목록은 CIEJab에 저장됩니다. 인덱싱된 꼭짓점 목록의 구조는 DirectX의 하드웨어 가속에 최적화되어 있습니다.
이 접근 방식에는 잘 알려진 많은 솔루션이 있습니다. 웹에서 "볼록 선체 DirectX"를 검색하면 100개 이상의 적중이 발생합니다. 예를 들어 이 특정 항목(컴퓨터 그래픽 이론 및 응용 프로그램, "Shiphulls, b-spline surfaces, cadcam", pp. 34-49)에 대한 1983년의 참조와 1970년부터 1982년까지 이 항목에 대한 참조가 있습니다.
점의 컬렉션은 다음과 같이 외부에서 사용할 수 있는 정보에서 확인할 수 있습니다.
- 모니터에 대한 참조 셸의 포인트는 디바이스 색 지정 공간에서 색 큐브의 샘플링을 사용하여 생성됩니다.
- 프린터 및 캡처 디바이스에 대한 참조 셸의 포인트는 모델을 초기화하는 데 사용되는 샘플 데이터에서 가져옵니다.
- scRGB 및 sRGB에 대한 참조 셸에 대한 포인트는 sRGB에 대한 색 큐브의 샘플링을 사용하여 생성됩니다.
- 캡처 디바이스에 대한 그럴듯한 셸의 포인트는 디바이스 색 지정 공간에서 색 큐브의 샘플링을 사용하여 생성됩니다.
- 프로젝터에 대한 참조 셸의 포인트는 디바이스 색 지정 공간의 색 큐브에 있는 폴리헤드론의 샘플링을 사용하여 생성됩니다.
- 넓은 동적 범위 색 공간에 사용할 수 있는 셸에 대한 포인트는 공간 자체에서 색 큐브의 샘플링을 사용하여 생성됩니다.
디바이스 프로필 및 시스템 지원 서비스가 제공되면 색 디바이스 영역을 효율적으로 설명하는 꼭짓점 목록을 만들 수 있습니다.
출력 디바이스의 경우 영역 경계는 디바이스에서 표시할 수 있는 색 범위를 설명합니다. 영역 경계는 디바이스의 동작을 모델링하는 데 사용되는 동일한 데이터에서 생성됩니다. 개념적으로 디바이스에서 생성할 수 있는 색 범위의 샘플링을 출력하고, 색을 측정하고, 측정값을 모양 공간으로 변환한 다음, 결과를 사용하여 영역 경계를 만듭니다.
입력 디바이스는 더 까다롭습니다. 입력 이미지의 각 픽셀에는 일부 값이 있어야 합니다. 각 픽셀은 어떤 식으로든 실제 세계에서 찾은 모든 색을 나타낼 수 있어야 합니다. 이러한 의미에서 입력 디바이스의 색은 항상 표시될 수 있으므로 "범위를 벗어난" 색은 없습니다.
모든 디지털 이미지 형식에는 고정된 동적 범위가 있습니다. 이러한 제한으로 인해 항상 동일한 디지털 값에 매핑되는 몇 가지 고유한 자극이 있습니다. 따라서 실제 색상과 디지털 카메라 값 간에 일대일 매핑을 설정할 수 없습니다. 대신, 영역 경계는 카메라의 디지털 응답을 생성할 수 있는 실제 색의 범위를 예측하여 형성됩니다. 해당 예상 범위를 입력 디바이스의 영역으로 사용합니다.
비즈니스 그래픽 의도 유형 영역 매핑을 제공하기 위해 주 복제본이 포함됩니다.
실제 개체 지향 스타일에서는 영역 경계의 기본 표현을 추상화합니다. 이렇게 하면 나중에 표현을 유연하게 변경할 수 있습니다. 새 CTE에서 사용되는 GBD(영역 경계 설명자)를 이해하려면 먼저 GMA(영역 매핑 알고리즘)의 작동 방식을 이해해야 합니다. 전통적으로 GMA는 그래픽 아트 커뮤니티의 요구 사항을 충족하도록 설계되었습니다. 즉, 입력 이미지가 만들어진 디바이스에 대해 이미 제대로 렌더링된 이미지를 재현합니다. 그래픽 아트 GMA의 목표는 출력 디바이스에서 입력 이미지를 최대한 재현하는 것입니다. 새로운 CTE GBD는 네 가지 주요 문제를 해결하도록 설계되었습니다.
입력 이미지가 입력 디바이스에 대해 렌더링되므로 모든 색은 중간의 흰색 점과 검은색 점 사이의 범위에 맞습니다. 이미지가 흰색 티셔츠에 있는 사람과 같은 확산 흰색이 있는 장면의 사진이며, 창이나 크롬 범퍼에서 반사되는 빛과 같은 반사 하이라이트라고 가정합니다. 반사 강조 표시가 매체의 흰색 점에 매핑되고 확산 흰색이 중간의 흰색 점보다 어두운 일부 중립 색에 매핑되도록 장면이 입력 매체에 렌더링됩니다. 장면의 색을 입력 매체에 매핑하는 방법은 장면에 종속된 결정과 미적 결정입니다. 원래 장면에서 반사 하이라이트가 누락된 경우 확산 흰색은 아마도 매체의 흰색 점에 매핑될 것입니다. 하이라이트 디테일이 많은 장면에서는 반사 흰색과 확산 흰색 사이에 더 많은 범위가 남습니다. 강조 표시가 중요하지 않은 장면에서는 범위가 거의 남지 않을 수 있습니다.
미리 렌더링된 이미지의 경우 영역 매핑은 비교적 간단합니다. 기본적으로 원래 매체의 흰색 점이 재생 매체의 흰색 점에 매핑되고, 원본 검정 점이 대상 블랙 포인트에 매핑되고, 대부분의 매핑이 완료됩니다. 존재하는 다른 GMA는 원본 매체의 톤 배율에 다른 점을 매핑하고 영역 외 크로마 값을 처리하는 다양한 방법을 매핑하기위한 변형을 제공합니다. 그러나 흰색과 흰색, 검은색과 검은색의 매핑은 이러한 변형 전반에 걸쳐 일관됩니다. 이 구현을 수행하려면 흰색이 50의 J* 위에 있고 J*가 50보다 낮아야 합니다.
모든 색 인코딩이 입력 이미지의 색 범위를 제한하는 것은 아닙니다. IEC 표준 색 인코딩 scRGB(IEC 61966-2-2)는 빨강, 녹색 및 파랑(RGB)의 세 가지 색상 채널 각각에 대해 16비트입니다. 이 인코딩에서 참조 검정은 RGB 트리플(0, 0, 0)로 인코딩되지 않고 (4096, 4096, 4096)으로 인코딩됩니다. 참조 흰색은 (12288, 12288, 12288)로 인코딩됩니다. scRGB 인코딩을 사용하여 반사 강조 표시 및 그림자 세부 정보를 나타낼 수 있습니다. 여기에는 음수 양의 빛이 필요하기 때문에 물리적으로 가능하지 않은 RGB 트리플과 CIE 스펙트럼 궤적 외부에 있는 인코딩이 포함됩니다. 분명히 어떤 장치도 scRGB 영역에서 모든 색을 생성할 수 없습니다. 사실, 어떤 장치도 인간이 볼 수 있는 모든 색을 생성할 수 없습니다. 따라서 디바이스는 scRGB 영역을 채울 수 없으며 채우는 영역의 일부를 나타낼 수 있으면 유용합니다. 각 디바이스에는 생성할 수 있는 scRGB 공간의 값 범위가 있습니다. 디바이스에 대한 "예상" 색입니다. 디바이스가 이 영역 외부의 색을 생성하는 것은 놀라운 일입니다. scRGB 공간에서 외관 공간으로 정의된 변환이 있으므로 각 디바이스에는 재현할 것으로 예상되는 모양 값의 범위도 있습니다.
고정 대상을 특징으로 하는 캡처 디바이스의 scRGB 및 입력 모두에서 예상 값 범위를 벗어난 값을 가져올 수 있습니다. 누군가가 테스트 대상에 카메라를 보정하는 경우; 그런 다음 반사 강조 표시가 있는 장면을 캡처합니다. 대상의 흰색 점보다 밝은 픽셀이 있을 수 있습니다. 자연적으로 발생하는 빨간색이 대상 빨간색보다 색이 더 많은 경우 동일한 일이 발생할 수 있습니다. 누군가가 디바이스에서 scRGB 이미지를 가져와 이미지의 색을 수동으로 편집하는 경우 전체 scRGB 영역 내에 있더라도 디바이스 영역의 예상 범위를 벗어나는 픽셀을 만들 수 있습니다.
두 번째 문제는 처음에는 이와 관련이 있는 것 같지 않을 수 있습니다. 색상 대상을 사용하여 카메라 또는 스캐너와 같은 입력 장치의 특징을 지정할 때 발생합니다. 반사 대상은 일반적으로 종이에 생성되며 여러 가지 색 패치를 포함합니다. Manufaturers는 각 색 패치에 대해 고정된 보기 조건에서 수행되는 색 측정값을 데이터 파일에 제공합니다. 색 프로파일링 도구는 이러한 측정 값과 디바이스의 색상 센서에서 반환하는 값 간에 매핑을 만듭니다. 문제는 이러한 색 대상이 디바이스 값의 전체 범위를 다루지 않는 경우가 많다는 것입니다. 예를 들어 스캐너 또는 카메라는 참조 흰색 점의 값(253, 253, 253)을 반환할 수 있으며 참조 빨간색 패치의 RGB 값은 (254, 12, 4)일 수 있습니다. 이러한 값은 대상 값에 따라 입력 디바이스에 대해 예상되는 값의 범위를 나타냅니다. 대상에 대한 응답을 기반으로 입력 디바이스의 특징을 지정하는 경우 이 좁은 범위 내의 색만 예상합니다. 이 범위는 인간이 볼 수 있는 색 범위보다 작을 뿐만 아니라 디바이스에서 생성할 수 있는 색 범위보다 작습니다.
두 경우 모두 참조 영역 또는 측정값이 있음에도 불구하고 입력 장치 또는 이미지의 영역을 추정하기가 어렵습니다. 첫 번째 문제에서 입력 디바이스의 그럴듯한 영역은 scRGB의 전체 영역보다 작습니다. 두 번째 문제에서 대상의 참조 영역은 입력 디바이스의 가능한 전체 영역보다 작습니다.
세 번째 문제는 톤 매핑과 관련이 있습니다. 그래픽 아트에 사용되는 미리 렌더링된 이미지를 적절하게 나타낼 수 있는 영역 경계의 많은 모델(예: 브라운 및 페어차일드 산악 범위 GBD(브라운[97]) 및 모로빅의 세그먼트 막시마 경계 설명자(Morovic[98])가 제안되었습니다. 그러나 이러한 모델은 디바이스 영역의 극단에 대한 정보만 제공합니다. 색조 매핑의 다른 지점에 대한 정보가 누락되었습니다. 이러한 정보가 없으면 GMA는 최적의 톤 매핑에 대한 대략적인 추정만 할 수 있습니다. 설상가상으로 이러한 모델은 scRGB 및 디지털 카메라 이미지의 확장된 동적 범위에 아무런 도움이 되지 않습니다.
사진 및 비디오 산업에서 이 문제는 어떻게 해결되는가? 카메라는 이미지를 캡처합니다. 전문가들은 캡처 디바이스에서 렌더링이 얼마나 발생하는지 토론할 수 있습니다. 그러나 그들은 그것이 상당한 금액이 아니라는 데 동의합니다. 두 기술 모두 캡처된 장면의 확산 흰색을 매체의 흰색 점에 매핑하지 않습니다. 마찬가지로, 장면에서 검은색 점을 매체의 검은색 점으로 매핑하지 않습니다. 사진 필름의 동작은 종종 허터와 드리필드 또는 H&D 곡선이라고 하는 특징적인 곡선을 사용하여 밀도 공간에서 설명됩니다. 곡선은 원래 장면의 밀도와 필름의 결과 밀도를 보여줍니다. 그림 18은 일반적인 H&D 곡선을 보여줍니다. x축은 로그 노출 증가를 나타냅니다. y축은 슬라이드의 밀도를 나타냅니다. 곡선에 5개의 참조 지점이 표시됩니다. 세부 정보가 없는 검은색은 음수의 최소 밀도를 나타냅니다. 검은색과 세부 정보; 참조 중간 회색 카드; 흰색과 세부 정보 없이 흰색입니다. 세부 정보가 없는 검은색(디바이스 검정을 나타낸)과 검은색(섀도 블랙) 사이에는 공백이 있습니다. 마찬가지로 세부 정보가 있는 흰색(확산 흰색)과 세부 정보가 없는 흰색(디바이스 흰색을 나타낸)사이에는 공백이 있습니다.
그림 18 : 슬라이드 필름의 H&D 곡선
비디오 산업은 이미지에 "헤드룸"과 "풋룸"을 제공합니다. ITU 709 사양에서 광도(Y라고 함)는 0~255의 범위로 8비트로 인코딩됩니다. 그러나 참조 검정은 15로 인코딩되고 참조 흰색은 235로 인코딩됩니다. 그러면 인코딩 범위가 236에서 255 사이로 남아 반사 하이라이트를 나타냅니다.
비디오 업계는 본질적으로 폐쇄된 루프 시스템을 제공합니다. 다양한 장비 공급업체가 있지만 비디오 시스템은 참조 디바이스를 기반으로 합니다. 비디오 이미지에 대한 표준 인코딩이 있습니다. 모든 이미지가 동일한 참조 디바이스에서 복제를 위해 인코딩되므로 비디오 이미지와 영역 경계를 통신할 필요가 없습니다. 또한 필름은 서로 다른 구성 요소 간에 중간 데이터를 전달할 필요가 없기 때문에 닫힌 루프입니다. 다양한 영역을 가진 디바이스의 이미지를 사용하고 미리 렌더링된 장면과 렌더링되지 않은 장면을 모두 다양한 영역으로 출력에서 재현할 수 있는 솔루션을 원합니다.
새 CTE가 해결해야 하는 네 번째 문제는 디바이스에서 생성된 시각적으로 회색 색(예: 모니터의 빨간색=녹색=파란색)이 CAM의 중립 축(chroma = 0.0인 경우)에 자주 빠지지 않는다는 것입니다. 이로 인해 GMA에 큰 어려움이 발생합니다. GMA가 제대로 작동하려면 디바이스의 중립 축이 외관 공간의 중립 축에 떨어지도록 디바이스의 영역 및 입력 지점에 대한 설명을 조정해야 합니다. 중립 축의 점을 비슷한 양으로 조정해야 합니다. 그렇지 않으면 이미지를 통해 부드러운 그라데이션을 만들 수 없습니다. GMA를 벗어나는 동안 출력 디바이스의 중립 축을 기준으로 이 매핑을 실행 취소합니다. 이를 축의 "척추지압" 직선이라고 합니다. 척추 지압사처럼 골격(중립 축)을 곧게 펴는 것뿐만 아니라 나머지 신체를 조정하여 골격과 함께 이동합니다. 척추 지압사처럼 전체 공간을 통해 동일한 양으로 골격을 조정하지 않습니다. 대신 다른 섹션을 다르게 조정합니다.
그림 19: CIECAM 중립 축을 기준으로 하는 디바이스 중립 축의 곡률
새 CTE에 필요한 것은 렌더링된 원본 이미지와 렌더링되지 않은 원본 이미지를 모두 나타내고, 디바이스 중립의 모양에 대한 정보를 제공하고, 넓은 광도 범위의 톤 매핑 이미지에 대한 정보를 제공하는 데 사용할 수 있는 영역 경계의 모델입니다.
그림 20 : 3개의 영역 셸
영역 경계는 세 개의 영역을 정의하는 세 개의 셸로 구성됩니다.
새 CTE에서 영역의 외부 셸은 디바이스 영역의 샘플 포인트로 만든 공록 선체로 형성됩니다. 선체는 샘플 점 집합을 가져와서 표면으로 둘러 세워서 형성됩니다. 공록 선체에는 모든 곳에서 배추가 되는 추가 속성이 있습니다. 따라서 데이터에 적합할 수 있는 가장 작은 헐이 아닙니다. 그러나 실험에 따르면 샘플 지점을 너무 단단히 맞추면 부드러운 음영 부족과 같은 이미지의 매력적인 아티팩트가 발생합니다. 공록 선체는 이러한 문제를 해결하는 것 같습니다.
알고리즘에서 디바이스에서 샘플링된 점 집합에 대한 색 모양 값을 가져옵니다. 모니터 및 프린터의 경우 샘플을 출력한 다음 측정하여 색 모양 값을 가져옵니다. 디바이스 모델을 만든 다음 디바이스 모델을 통해 가상 데이터를 실행하여 측정된 값을 예측할 수도 있습니다. 그런 다음 측정된 값은 XYZ(색인 공간)에서 모양 공간(Jab)으로 변환되고 헐은 점 주위에 래핑됩니다.
이 알고리즘의 핵심은 색상 메트릭에서 모양 공간으로 변환하는 데 사용되는 채택된 흰색 점이 매체의 흰색 점일 필요가 없다는 것입니다. 대신 영역 내부와 중립 축에 더 멀리 또는 가까운 지점을 선택할 수 있습니다. 그런 다음 해당 지점의 J 값은 100입니다. 측정된 Y 값이 채택된 화이트포인트보다 높은 샘플은 J-값이 100보다 큰 것으로 끝납니다.
장면의 확산 흰색 점을 색 공간 변환에 채택된 흰색 포인트로 배치하면 장면의 반사 강조 표시가 J 값이 100보다 큰 것으로 쉽게 감지됩니다.
CIECAM02 색 모델은 인간의 시각 시스템을 기반으로 하므로 채택된 흰색을 선택한 후 검정점의 광도 수준(J = 0)은 모델에 의해 자동으로 결정됩니다. 입력 이미지에 넓은 동적 범위가 있는 경우 0보다 작은 J 값에 매핑되는 값이 있을 수 있습니다.
다음 그림 21은 그럴듯한 영역과 참조 영역의 중심을 통해 실행되는 디바이스 중립을 보여 줍니다.
그림 21 : 영역 경계에 추가된 디바이스 중립 축
모든 영역 매핑에는 입력 범위를 출력 영역으로 클리핑하거나 입력 영역을 출력 영역에 맞게 압축하는 작업이 포함됩니다. 더 복잡한 알고리즘은 다른 방향으로 압축 및 클리핑하거나 영역을 다른 영역으로 나눈 다음 다른 지역에서 클리핑 또는 압축을 수행하여 구성됩니다.
새로운 CTE는 가능한 영역, 그럴듯한 영역 및 참조 영역의 영역을 지원하도록 이 개념을 확장하며, GMA가 다양한 방식으로 매핑할 수 있도록 합니다. 또한 GMA에는 디바이스 중립 축에 대한 정보가 있습니다. 다음 설명에서는 그럴듯한 영역과 참조 영역이 서로 축소된 상황을 처리하는 방법을 설명합니다.
그림 22 : 축소되지 않은 두 가지 영역 설명자가 있는 GMA
반사 대상이 특징인 카메라 또는 스캐너와 같은 입력 디바이스에서 scRGB 공간에 매핑하는 경우 이 예제가 표시될 수 있습니다. 여기서 참조 흰색보다 밝은 그럴듯한 색은 반사 하이라이트입니다. 실제로 카메라를 대상으로 특성화하면 카메라에서 가능한 전체 값 범위가 생성되지 않을 수 있습니다. 그러나 반사 하이라이트와 자연에서 발견되는 매우 색채는 것입니다. (일반적으로 허용 대상에는 매체에서 가능한 최소 밀도인 패치가 있습니다. 이러한 대상을 사용하면 반사 강조 표시가 대상 범위 내에 포함됩니다.) 반사 대상에 대한 참조 검정은 그림자 검정 영역의 시작입니다. 즉, 대상의 검은색보다 어두운 그림자에 색이 있을 수 있습니다. 이미지에 해당 지역에 흥미로운 콘텐츠가 많이 포함되어 있으면 해당 색조 변형을 보존하는 것이 좋습니다.
그림 23 : 대상 영역이 축소된 GMA
그림 23은 대상 영역이 디바이스 흰색에서 검은색까지의 범위만 제공하고 이 영역 외부에 가능한 색이 없는 경우 가능한 한 가지 영역 매핑 알고리즘을 보여 줍니다. 이는 프린터와 같은 일반적인 출력 디바이스에서 발생할 수 있습니다. 가능한 색은 대상 영역의 가장자리에 매핑됩니다. 그러나 출력 디바이스에 대한 톤 곡선이 부족합니다. GMA는 참조 흰색의 매핑 대상으로 사용하려면 낮은 광도의 중립 지점을 선택해야 합니다. 정교한 알고리즘은 원본 이미지의 가벼움을 히스토그램하고 예상 범위에서 얼마나 많은 낙하가 참조 흰색보다 더 가벼워지는지 확인하여 이 작업을 수행할 수 있습니다. 가벼움이 많을수록 반사 강조 표시와 참조 흰색에 대한 매핑된 점 사이에 대상 디바이스에 더 많은 공간이 필요합니다. 더 간단한 알고리즘은 5%와 같이 디바이스 흰색에서 가벼움 눈금 아래로 임의의 거리를 선택할 수 있습니다. 최대 검정 및 섀도 블랙의 매핑에 유사한 접근 방식이 적용됩니다.
대상 톤 곡선을 생성한 후 이전 그림 23에서 사용한 것과 유사한 메서드로 매핑할 수 있습니다. 대상 톤 곡선의 모든 지점은 디바이스 영역 내에 속하며 매핑의 모든 지점은 디바이스 영역 내에 있어야 합니다.
그림 23에서 왼쪽 그림과 오른쪽 그림 및 화살표의 방향을 반대로 하는 경우 원본 이미지에 참조 영역만 있고 출력 디바이스의 세 가지 영역이 서로 축소되지 않은 경우를 설명할 수 있습니다. 예를 들어 모니터에서 scRGB로 매핑할 수 있습니다. 다시 말하지만, GMA는 원본 이미지의 톤 곡선에서 5포인트에 대한 제어점을 합성해야 합니다. 일부 매핑은 scRGB 디바이스 영역 내에서 톤 곡선의 모든 지점을 배치할 수 있으며, 다른 매핑은 확산 흰색을 참조 흰색에 매핑하고 반사 흰색이 더 밝은 값에 매핑되도록 허용하여 scRGB 영역을 더 많이 사용할 수 있습니다.
마지막으로, 두 디바이스 모두 참조 영역만 있는 경우가 있습니다. 이는 대부분의 영역 매핑 알고리즘이 작동하는 방식입니다. 따라서 현재 알고리즘으로 되돌아가서 이 문제를 해결할 수 있습니다. 또는 원본 및 대상 디바이스에 대한 5개의 참조 지점을 결정하는 합리적인 방법이 있는 경우 참조 지점을 매핑하도록 정렬할 수 있습니다.
디바이스 영역은 중립 축에 5개 이상의 참조 지점을 포함합니다. 이미지의 잠재적 영역 간 경계만 나타냅니다. 각 참조 지점 간에 기존 영역 매핑 기술을 사용할 수 있습니다. 따라서 예기치 않은 색 범위를 클리핑하고 예상된 흰색과 검은색 사이의 모든 색을 압축하거나 참조 범위 밖의 모든 색을 클리핑하고 해당 범위 내에서 압축할 수 있습니다. 다양한 GMA에서 구현할 수 있는 많은 가능성이 있습니다. 또한 GMA는 다양한 방법으로 압축하고 클립할 수 있습니다. 이러한 모든 조합은 본 발명에서 다룹니다.
지금까지 이 논의에서 영역은 이미지가 생성, 캡처 또는 표시된 디바이스의 기능인 것처럼 처리되었습니다. 그러나 디바이스의 모든 이미지가 동일한 영역을 가져야 하는 이유는 없습니다. GMA는 GBD의 데이터에 따라 달라집니다. 이미지 간에 설명자가 변경되면 GMA가 알 수 있는 방법이 없습니다. 특히 이미지에 반사 강조 표시가 없는 경우 영역 설명자가 확산 흰색보다 밝은 색이 있음을 표시하지 않으면 GMA가 더 잘 수행됩니다.
새 CTE 아키텍처에서는 둘 이상의 GMA를 사용할 수 있습니다. 여러 GMA를 사용하는 것은 본질적으로 잘못 정의됩니다. 예를 들어 캡처 디바이스가 GMA를 "모양과 느낌"과 연결하는 경우 "대상 지정" 대상 영역으로 연결하는 경향이 있습니다. 출력 디바이스 및 "대상" 원본 영역도 마찬가지입니다. sRGB 영역은 일반적으로 타겟팅된 암시적 영역 중 하나입니다. 따라서 예측 가능성이 우선 순위인 경우 단일 GMA를 사용하는 것이 좋습니다. 단일 GMA 워크플로는 모든 워크플로, 특히 소비자 및 프로서머 워크플로의 기본값이어야 합니다. 기본 복제를 위한 영역 매핑은 한 번 수행해야 하지만 여러 매핑 프로세스가 포함된 인스턴스가 있습니다. 먼저 언어 교정을 위해 최종 대상 디바이스의 영역으로 기본 매핑한 다음 언어 교정 디바이스의 영역으로 색인 렌더링을 수행합니다. 둘째, 일부 유형의 매핑은 이미지의 특성을 변경하는 데 사용되지만, 음색 곡선 또는 색을 조정하는 등 디바이스 영역으로 매핑하는 데는 포함되지 않습니다. 여러 GMA를 사용하는 경우 변환 인터페이스는 경계 경계 설명 쌍으로 초기화된 영역 맵과 같은 경계 영역 맵의 배열을 사용합니다. 둘 이상의 영역 맵이 있는 경우 성공하는 영역 맵의 입력 영역 경계는 선행 작업의 출력 영역 경계와 동일해야 합니다.
디바이스 영역 경계 함수는 디바이스 모델 엔진 및 분석 매개 변수를 사용하고 디바이스 영역의 공록 헐의 정렬된 꼭짓점 목록으로 설명된 색상 디바이스 영역 경계를 파생합니다. 정렬된 꼭짓점 목록은 CIEJab에 저장됩니다. 정렬된 꼭짓점 목록의 구조는 DirectX의 하드웨어 가속에 최적화되어 있습니다. 이 방법은 잘 알려진 많은 솔루션을 가지고 있습니다 (웹에서 "볼록 선체 DirectX"를 검색하면 100 회 이상의 적중을 얻을 수 있습니다). 이 항목에는 1983년의 참조(컴퓨터 그래픽 이론 및 응용 프로그램, "Shiphulls, b-spline surfaces and cadcam" pp. 34-49)가 있으며, 이 항목에 대한 참조는 1970년부터 1982년까지 거슬러 올라간다.
두 가지 기술을 사용하여 영역 셸의 삼각형을 계산할 수 있습니다. 추가 RGB 디바이스 이외의 다른 디바이스의 경우 볼록 선체를 계산합니다. 이러한 디바이스에 직접 액세스하여 알고리즘의 견고성, 성능 및 충실도의 유효성을 검사할 수 있는 경우 다른 디바이스에 대한 비 볼록 헐 지원을 조사할 수 있습니다. 이 프로세스는 추가 설명이 필요하지 않은 잘 알려진 프로세스입니다. 가산 RGB 디바이스에 사용되는 기술은 다음과 같이 설명됩니다.
GBD가 다르면 장점과 단점이 있습니다. 볼록 선체 표현은 중립 축의 지점에서 광선이 방출되는 고유한 교차점을 제공하는 볼록 색조 조각과 같은 멋진 기하학적 속성을 보장합니다. 공록 선체 표현의 단점도 공진입니다. 많은 디바이스, 특히 디스플레이 디바이스에는 접두사와는 거리가 먼 영역이 있는 것으로 알려져 있습니다. 실제 영역이 공록 가정에서 크게 벗어나면, 공록 선체 표현은 정확하지 않을 수 있으며, 이는 현실을 나타내지 않을 수 있습니다.
실제 영역을 합리적으로 정확하게 표현하는 GBD를 채택한 후에는 색조 조각의 개념으로 인해 다른 문제가 발생합니다. 적어도 두 가지 병리학적 상황이 있습니다. 다음 그림 24에서 CRT 영역은 "islands"가 있는 색조 조각을 발생합니다. 그림 25에서 프린터 영역은 중립 축의 일부가 누락된 색조 조각을 발생합니다. 병적 색조 조각은 이러한 경우 특히 병리학적 영역 경계로 인해 발생하지 않습니다. (a) 상수 색조를 따라 촬영되고 (b) 색조 각도에 해당하는 평면의 절반만 걸리기 때문에 색조 조각의 개념에 의해 발생합니다.
그림 24 : 일반적인 CRT 모니터에는 파란색 색조의 특이한 "곡선"을 보여 주는 영역이 있습니다. 색조 조각을 이 색조 범위 내에서 사용하는 경우 격리된 섬이 색조 조각에 나타날 수 있습니다.
그림 25 : 프린터의 중립 축에 "간격"이 있는 영역이 있을 수 있습니다. 색조 조각을 만들 때(평면의 절반에 불과함) 중립 축인 경계 부분에 "덴트"가 있습니다. 알고리즘으로는 이 문제를 해결하기 어려울 수 있습니다.
이러한 경로를 해결하기 위해 시작점으로 사용된 색조 조각의 개념을 중단하는 새로운 프레임워크가 제안됩니다. 대신 프레임워크는 "경계선 요소" 또는 영역 경계에 있는 선 집합을 사용합니다. 색조 조각과 같은 일관된 기하학적 시각화를 반드시 제공하는 것은 아니지만 모든 일반적인 영역 작업을 지원합니다. 이전에 멘션 문제를 해결하는 것 외에도 이 방법은 가능한 경우에도 색조 조각을 생성하는 것이 계산적으로 낭비된다는 것을 시사합니다.
영역 경계의 삼각측정
시작점은 영역 경계의 삼각측정으로 구성된 GBD입니다. GBD를 생성하는 알려진 메서드는 일반적으로 삼각측정을 제공합니다. 구체적으로, 추가 디바이스에 대한 GBD를 생성하는 한 가지 방법은 여기에 설명되어 있습니다. 이러한 디바이스에는 모니터(CRT 기반 및 LCD 기반) 및 프로젝터가 포함됩니다. 큐브의 간단한 기하 도형을 사용하면 큐브에 일반 격자를 도입할 수 있습니다. 큐브의 경계 면은 그림 26에 표시된 것과 같은 다양한 방식으로 삼각측정할 수 있습니다. 아키텍처는 래티 포인트의 색인 값을 알고리즘적으로 얻을 수 있도록 디바이스에 대한 디바이스 모델을 제공하거나 해당 지점에 대한 측정을 직접 만들었습니다. 아키텍처는 CIECAM02 제공하므로 시작 데이터가 이미 CIECAM02 Jab 공간에 매핑되었다고 가정할 수 있습니다. 그런 다음 RGB 큐브의 경계 면에 있는 각 격자 지점에는 Jab 공간에 해당 지점이 있습니다. RGB 공간에서 삼각형 집합을 형성하는 점의 연결은 Jab 공간에서 삼각형 집합을 유도합니다. 이 삼각형 집합은 (a) RGB 큐브의 격자가 충분히 좋으면 영역 경계의 합리적인 삼각측정을 형성하며, (b) 장치 공간에서 균일한 색 공간으로의 변환은 토폴로지적으로 잘 동작합니다. 즉, 경계를 경계에 매핑하고 내부 점이 경계 지점이 되도록 영역을 안쪽으로 전환하지 않습니다.
그림 26 : RGB를 디바이스 공간으로 사용하여 디바이스의 영역 경계를 삼각측정하는 간단한 방법
경계선 요소
이 프레임워크의 핵심은 경계선 요소의 개념입니다. (a) 영역 경계에 있고 (b) 평면에 있는 선 세그먼트 집합입니다. 이 경우 평면은 색조 평면입니다. 각 선 세그먼트는 평면을 영역 경계 삼각형과 교차한 결과입니다. 많은 연구원들이 경계 삼각형과 평면을 교차하는 구조를 사용했지만, 일반적으로 이러한 선 세그먼트 간의 관계를 분석하고 선 세그먼트에서 일관된 기하학적 개체를 생성하려고 시도합니다. 전체 색조 조각을 얻을 때까지 이러한 선 세그먼트를 하나씩 따르도록 여러 알고리즘이 고안되었으며 검색 프로세스를 가속화하기 위해 많은 시도가 이루어졌습니다.
이 방법은 다릅니다. 평면을 삼각형과 교차하여 선 세그먼트를 가져옵니다. 그런 다음 이러한 선 세그먼트를 기본 개념 개체로 간주합니다. 선 세그먼트 간의 관계를 분석해야 합니다. 서로 상호 연결하는 방법을 알 필요가 없습니다. 이 관점은 섬으로 색조 조각의 문제를 해결합니다. 색조 조각을 생성하려고 하는 알려진 접근 방식은 한 줄 세그먼트로 시작하여 다음 줄 세그먼트로 이어지는 경우 결국 시작점으로 돌아가서 전체 색조 조각이 생성됩니다. 불행하게도,이 방법은 섬을 놓칠 것입니다 (그리고 최악의 시나리오에서, 대륙). 일관된 기하학적 그림을 얻는 것을 고집하지 않음으로써; 즉, 색조 조각, 당신은 쉽게 섬 문제를 처리 할 수 있습니다. 이 방법의 또 다른 중요한 차이점은 선 세그먼트의 생성 속도를 높이기 위해 "삼각형 필터"를 사용한다는 것입니다. 삼각형 필터는 현재 영역 작업에 유용한 선 세그먼트를 생성하지 않는 특정 삼각형을 throw합니다. 삼각형과 평면을 교차하는 것은 계산 비용이 많이 들기 때문에 속도가 향상됩니다. 삼각형 필터링으로 인해 일부 선 세그먼트가 누락되므로 색조 조각을 생성할 수 없다는 부작용이 있습니다.
영역 작업: CheckGamut
다음 예제에서는 프레임워크의 작동 방식과 CheckGamut이 수행되는 방법, 즉 색이 영역 내인 경우 검사 작업을 설명합니다.
일반 프레임워크는 다음 그림 27에 설명되어 있습니다. 다양한 구성 요소가 있습니다. 기울임을 나타내는 구성 요소는 해당 영역 작업에 따라 구현에서 다를 수 있는 구성 요소입니다. 다른 구성 요소는 모든 영역에서 고정됩니다. 먼저 입력은 색 특성 집합입니다. CheckGamut의 경우 쿼리 색입니다. 그림 27 및 다음 설명에서는 색조 각도가 입력 색 특성 중 하나이거나 이러한 특성에서 가져올 수 있다고 가정합니다. 입력이 Jab 또는 JCh에서 전체 색 점인 경우 색상 각도를 계산할 수 있는 경우는 분명합니다. 색조 평면을 사용 중이므로 색조 각도만 필요합니다. 문제의 영역 연산에 따라 색조 평면을 사용할 필요가 없을 수 있습니다. 예를 들어 CheckGamut 루틴을 생성할 때 상수 J의 평면을 사용할 수 있습니다. 이는 더 이상 사용되거나 논의되지 않는 일반성입니다. 그러나 색조 평면이 최선의 선택이 아닐 수 있는 경우 다른 영역 작업을 지원하는 방법론의 유연성을 기억하는 것이 도움이 될 수 있습니다.
그림 27 : 영역 작업을 지원하는 프레임워크
입력에서 직접 가져오거나 입력에서 계산되는 색조 각도는 그림에서 전체 색조 평면이라는 레이블이 지정된 색조 평면을 초기화하는 데 사용됩니다. "Full"은 색조를 포함하는 반면뿐만 아니라 전체 평면이기 때문에 강조됩니다. 전체 평면에는 입력 색조 각도와 반대 180도 각도가 모두 포함됩니다. 색조 평면의 주요 기능은 다음 하위 섹션인 전체 색조 평면: 교차에 설명된 교차 함수입니다. GBD가 이미 생성되었으며 Gamut 경계 삼각형 집합 을 사용할 수 있다고 가정합니다 . 삼각형 필터에서 살아남은 삼각형을 교차를 사용하여 색조 평면과 교차합니다. 삼각형 필터 구성 요소의 레이블은 기울임을 의미합니다. 즉, 구성 요소는 다양한 영역 작업에 대한 구현에 따라 달라집니다. CheckGamut에 대한 삼각형 필터는 Gamut 작업: CheckGamut(계속됨) 섹션에 설명되어 있습니다. 삼각형을 색조 평면과 교차한 결과는 비어 있거나 경계선 요소 ( 즉, 별개의 점 쌍)입니다. 결과가 비어 있지 않으면 선 요소 프로세서로 전달되며 영역 작업에 따라 다른 작업을 다시 수행합니다. Line 요소 프로세서는 콘텐츠 또는 레이아웃이 영역 작업에 따라 달라지는 내부 데이터 구조인 내부 처리된 데이터를 업데이트합니다. 일반적으로 내부 처리된 데이터에 는 문제에 대한 "답변"이 포함되어 있으며, 새로운 경계선 요소마다 지속적으로 업데이트됩니다. 모든 경계선 요소가 처리되면 답이 발견되었습니다. 다시 기본 출력 어댑터를 통해 액세스합니다. 내부 처리된 데이터는 영역별 작업이므로 출력 어댑터도 영역별 작업입니다.
전체 색조 평면: 교차
교차 함수는 색조 평면과 삼각형의 교집합을 계산합니다. 이 함수는 소리만큼 간단하기 때문에 두 가지 이유로 중요합니다.
첫째, 삼각형의 각 가장자리를 평면과 교차하면 3개의 교집합 지점이 생성될 수 있으며, 기하학적으로 불가능한 상황입니다. 계산에서 이런 일이 발생할 수 있는 이유는 계산이 부동 소수점(예: IEEE 형식)에서 수행될 때 가장자리가 평면과 교차하는지 여부에 영향을 주는 각 단계에서 불확실성 또는 "숫자 노이즈"가 있기 때문입니다. 평면이 거의 누락된 상황에서 가장자리를 교차하는 경우 교차점은 서로 가깝고 가장자리 내에 교차점이 있는지 여부를 결정합니다. 점의 숫자 값에서 노이즈는 작지만 두 개 이상의 교차점이 있다는 정성적 결론은 기하학적으로 불가능하며 알고리즘에서 올바르게 처리하기가 어렵습니다.
둘째, 이 함수는 필터링된 각 삼각형의 각 가장자리에 대해 중요한 루프에 있으므로 가능한 한 효율성을 최적화하는 것이 중요합니다.
첫 번째 숫자 노이즈 문제를 해결하려면 정수로 계산을 수행합니다. 효율성을 최적화하는 두 번째 문제를 해결하려면 각 꼭짓점의 가장 많이 사용되는 특성 또는 각 꼭짓점과 연결된 "점 제품"을 캐시합니다. 정수로 전달하는 것은 기하학적 일관성을 보장하는 일반적인 방법입니다. 기본 아이디어는 정량화해야 하는 경우 처음에 수행한다는 것입니다. 그런 다음 정수로 후속 계산을 수행할 수 있으며, 정수가 충분히 넓어서 오버플로의 위험이 없도록 계산을 무한 정밀도로 수행할 수 있습니다. 이 용도에 유용한 다음 양자화 함수입니다.
ScaleAndTruncate(x) = x*10000의 정수 부분
배율 인수 10000은 입력 부동 소수점 수에 4개의 소수점 위치가 있다는 것을 의미하며, 이는 이 애플리케이션에 대해 충분히 정확합니다. 색 모양 공간의 값 범위에 따라 중간 계산을 저장할 수 있을 만큼 넓은 비트가 있는 정수 형식을 선택하려고 합니다. 대부분의 색 모양 공간에서 각 좌표의 범위는 -1,000~1,000 범위 내에 있습니다. 정량화된 좌표의 최대 절대값은 1,000*10,000 = 10,000,000입니다. 보듯이 중간 수량은 좌표의 두 가지 곱의 합계인 점 제품이므로 가능한 최대 절대값은 2*(10,000,000) σ = 2?10입니다. 필요한 비트 수는 log 1(2?10) = 47.51입니다. 따라서 정수 형식에 대한 편리한 선택은 64비트 정수입니다.
삼각형이 있는 평면을 교차하면 항상 빈 집합 또는 두 점 집합이 제공되도록 하려면 삼각형을 삼각형의 개별 가장자리가 아니라 전체적으로 고려해야 합니다. 기하학적 상황을 이해하려면 색조 평면에서 삼각형의 꼭짓점의 "서명된 거리"를 고려합니다. 이러한 서명된 거리를 직접 계산하지 마세요. 대신 평면에 정량화된 정규 벡터를 사용하여 꼭짓점의 위치 벡터의 점 곱을 계산합니다. 더 구체적으로, 색조 평면을 초기화하는 동안 수량화된 일반 벡터는 다음과 같이 계산됩니다.
NormalVector = (ScaleAndTruncate(-sin(hue)), ScaleAndTruncate(cos(hue)))
이 벡터는 2차원 벡터입니다. 색조 평면이 세로이므로 2차원 벡터를 사용할 수 있으므로 일반 벡터의 세 번째 구성 요소는 항상 0입니다. 또한 점 제품의 조회 테이블은 Gamut 경계 삼각형의 각 꼭짓점에 대한 항목과 해당 점 제품이 잘못된 값으로 설정되도록 초기화됩니다.
색조 평면을 삼각형과 교차하는 한 번의 작업 동안 삼각형의 각 꼭짓점의 점 곱이 조회됩니다. 조회 테이블의 값이 잘못된 값이면 점 제품은 다음 식을 사용하여 계산됩니다.
NormalVector.a*ScaleAndTruncate(vertex.a) + NormalVector.b*ScaleAndTruncate(vertex.b)
다시 말하지만, 일반 벡터가 가로이므로 꼭짓점의 J 구성 요소는 사용되지 않습니다. 그런 다음 이 점 제품은 나중에 꼭짓점의 점 곱을 쿼리하는 경우 다시 계산할 필요가 없도록 조회 테이블에 저장됩니다.
캐싱을 사용하면 꼭짓점이 처리될 때 점진적으로 빌드되는 조회 테이블에 점 제품이 표로 표시된 후 가장자리가 평면과 교차하는지 여부를 빠르게 결정할 수 있습니다.
그림 28 : 색조 평면과 삼각형 교차
그림 28의 삼각형이 퇴화되지 않은 선 세그먼트의 색조 평면과 교차하려면 꼭짓점의 점 곱이 오름차순으로 정렬될 때 다음 패턴 중 하나에 있어야 합니다.
0,0,+; -,0,0; -,0,+; -,-,+; -,+,+
선 세그먼트의 끝점은 점 제품에 다른 기호가 있는 꼭짓점이 있는 가장자리와 평면이 교차할 때 발생합니다. 부호가 0이면 꼭짓점은 평면에 있고 가장자리와 평면의 교집합은 꼭짓점 자체입니다. 또한 사례 0,0,0; -,-,0; 0,+,+는 보고되지 않습니다. 첫 번째 사례(0,0,0)는 전체 삼각형이 평면에 있는 것을 의미합니다. 삼각형의 각 가장자리는 평면에 완전히 있지 않은 인접한 삼각형에 속해야 하기 때문에 보고되지 않습니다. 해당 삼각형을 고려할 때 가장자리가 보고됩니다. 다른 두 경우(-,-,0 및 0,+,+)는 삼각형이 하나의 꼭짓점에서 평면에 닿는 기하학적 구성에 해당합니다. 이러한 경우는 퇴화되지 않는 선 세그먼트를 초래하지 않으므로 보고되지 않습니다.
앞의 알고리즘은 삼각형 가장자리와 색조 평면 간의 교집합을 계산하는 시기를 결정합니다. 가장자리가 결정되면 교차점은 매개 변수 수식을 사용하여 계산됩니다. 점 제품 중 하나가 0이면 교집합이 꼭짓점 자체이므로 계산이 필요하지 않습니다. 가장자리의 꼭짓점의 두 점 제품이 모두 0이 아닌 경우 vertex1은 음의 점 제품 dotProduct1이 있는 꼭짓점이고 꼭짓점2는 양수 점 제품 dotProduct2가 있는 꼭짓점입니다. 이 순서는 계산된 교차점이 가장자리의 표현에서 꼭짓점의 순서가 표시되는 방식에 따라 달라지지 않도록 하는 데 중요합니다. 에지의 기하학적 개념은 꼭짓점과 관련하여 대칭입니다. 에지의 매개 변수 수식을 사용하는 계산 측면은 비대칭(시작 꼭짓점 선택)을 도입하며, 이는 해결할 선형 수식의 숫자 노이즈 및 컨디셔닝으로 인해 약간 다른 교집합점을 제공할 수 있습니다. 이 경우 교집합 지점인 교집합이 다음과 같이 지정됩니다.
t = dotProduct1/(dotProduct1 - dotProduct2)
교차로. J = vertex1. J + t * (vertex2. J - vertex1. J)
intersection.a = vertex1.a + t * (vertex2.a - vertex1.a)
intersection.b = vertex1.b + t * (vertex2.b - vertex1.b)
영역 작업: CheckGamut(계속됨)
영역 검사 데 사용되는 기본 기하학적 알고리즘은 광선 교차 횟수를 계산하는 것입니다. 지정된 쿼리 지점의 경우 쿼리 지점으로 시작하여 위쪽(J 방향)을 가리키는 광선을 고려합니다. 이 광선이 영역 경계를 넘은 횟수를 계산합니다. 이 숫자가 짝수이면 쿼리 지점은 범위를 벗어났습니다. 이 숫자가 홀수이면 점이 내부에 있습니다. 원칙적으로, 이 알고리즘은 3차원으로 구현될 수 있으며, 일반적으로 경계 삼각형에 있는 광선(부분적으로) 또는 경계 삼각형 가장자리에 있는 광선(부분적으로)과 같은 낮은 차원 퇴행성 등의 퇴행성 상황으로 인한 어려움에 시달리게 됩니다. 2차원에서도 이러한 퇴행성 상황을 처리해야 합니다. 그러나 문제는 더 간단하고 만족스러운 방식으로 해결되었습니다. [오루크]를 참조하세요.
지정된 입력 지점 Jab의 경우 다음과 같이 색조 각도 h를 결정합니다.
h = atan(b/a),
색조 평면을 초기화한 다음 이 색조 평면에 해당하는 경계선 요소를 결정합니다. 경계선 요소는 위쪽 광선과 교차하는 경우에만 관련이 있으므로 삼각형 필터를 설정하여 위쪽 광선과 교차하지 않는 선 요소를 제공하는 삼각형을 제거합니다. 이 경우 삼각형의 경계 상자를 고려합니다. 광원이 바로 위에 있는 경우 쿼리 지점이 경계 상자에서 캐스팅한 "그림자" 외부에 있으면 위쪽 광선이 삼각형과 교차하지 않습니다. 숫자 노이즈를 허용하도록 미리 고정된 허용 오차로 약간 확장하여 유용한 선 요소를 제공할 수 있는 삼각형을 실수로 버리지 않도록 합니다. 결과는 그림 29에 표시된 반 무한 사각형 실린더입니다. 쿼리 지점이 이 실린더 내부 또는 외부에 있는지 여부를 확인하는 것은 단순한 불평등을 사용하여 효율적으로 구현될 수 있습니다.
그림 29 : CheckGamut에 대한 삼각형 필터
CheckGamut에는 내부 처리된 데이터, 라인 요소 프로세서 및 출력 어댑터의 세 가지 영역 작업 관련 구성 요소가 있습니다. 내부 처리된 데이터는 Line 요소 프로세서에서 처리된 선 요소 목록입니다. 이 경우 Line 요소 프로세서는 단순히 선 요소를 목록에 추가합니다. 내부 처리된 데이터에 대한 내부 데이터 구조는 연결된 목록 또는 크기가 증가할 수 있는 배열일 수 있습니다.
출력 어댑터는 선 요소 목록에 액세스하는 모듈로, 선 요소가 위쪽 광선(개수 1)과 교차하는지 여부(개수 0)를 결정합니다. 이러한 모든 개수를 합산하면 총 개수가 제공됩니다. 출력 어댑터에서는 총 수가 홀수인지 짝수인지에 따라 궁극적으로 "예"(영역 내) 또는 "아니요"(외부 영역)의 대답을 출력합니다. 선 요소가 위쪽 광선을 교차하는지 여부를 결정하는 단계는 퇴행성 문제가 발생하고 오버 카운팅 문제가 발생하는 곳이기 때문에 어느 정도 주의를 기울여야 합니다. [O'Rourke]에 따라 선 요소가 광선을 교차하려면 오른쪽 끝점(크로마가 큰 끝점)은 광선의 오른쪽에 엄격하게 있어야 합니다. 이렇게 하면 끝점이 광선에 정확히 놓이면 한 번만 계산됩니다. 또한 동일한 규칙은 선 요소가 광선에 정확히 있는 퇴행성 상황을 해결합니다. 이 줄 요소의 개수는 증가하지 않습니다.
그림 30은 쿼리 지점이 다양한 위치에 있는 샘플 영역의 결과 선 요소를 보여 줍니다.
그림 30 : CheckGamut 작동 방식
최소 색 차이 영역 매핑
최소 색 차이 영역 매핑인 MinDEMap에는 간단한 사양이 있습니다. 색이 영역 내이면 아무 작업도 수행하지 않습니다. 색이 범위를 벗어난 경우 영역 경계의 "가장 가까운" 지점에 프로젝션합니다. 사용할 색 차이 수식을 지정하기 전까지는 "가장 가까운" 키워드(keyword) 잘 정의되지 않습니다. 실제로 계산을 더 쉽고 빠르게 만들기 위해 선택한 색 모양 공간 또는 변형의 유클리드 거리를 색 차이 메트릭으로 사용합니다. 유클리드 메트릭의 장점은 공간의 점 곱과 호환되므로 선형 대수를 사용할 수 있다는 것입니다. 세부 정보에서 공간에 "점 제품"이 정의되면 거리 자체를 사용하여 차이 벡터의 점 곱의 제곱근으로 정의할 수 있습니다. 점 제품은 일반적으로 양의 명확한 3x3 행렬 A로 정의할 수 있습니다.
u?v = u T Av
여기서 오른쪽은 일반적인 행렬 곱셈입니다. A가 ID 매트릭스인 경우 표준 점 제품이 복구됩니다. 실제로 Jab이 색 공간인 경우 구성 요소를 혼합하고 싶지 않으므로 ID 행렬 이외의 대각선 매트릭스를 사용할 수 있습니다. 또한 색조 측정값이 유지되도록 a 및 b의 배율을 변경하지 않고 유지할 수 있습니다. 따라서 표준 유클리드 점 제품의 유용한 변형은 다음과 같은 것입니다.
w J (J component of you)(j component of v) + (a component of you)(a component of v) + (b component of you)(b component of v)
여기서 w J 는 양수입니다. 한 가지 추가 변형은 w J 가 입력 쿼리 지점에 따라 달라지도록 하는 것입니다.
w J\ = w J (queryPoint)
최종 결과는 두 점과 관련하여 비대칭 거리 측정값이며, 입력 쿼리 지점이 다르기 때문에 가벼움과 크로마 또는 색조에 대한 상대 가중치가 다릅니다. 이것은 색 차이가 모든 차원에서 동일하게 가중되지 않는다는 인간의 색 인식에 대한 몇 가지 관찰에 따른 것입니다. 그것은 사람들이 색조와 크로마에 있는 다름에 보다는 가벼움에 있는 다름에 보다 적게 민감하다는 것을 것을을 발견되었습니다.
다음 가중치 함수가 유용합니다.
w J = k 오 - k (C - C m) n
여기서 k 1 = 1, k = 0.75/(C m) n, C m = 100, n = 2 및 C는 쿼리 지점 및 C m의 크로마 중 더 작습니다.
따라서 0.25의 중량은 크로마가 0일 때 J 용어에 배치되고, 크로마가 100이면 1의 무게가 됩니다. 크로마가 작을 때 J에 더 적은 무게를 두는 추세이고, 크로마가 클 때 J에 더 많은 무게는 CMC 및 CIEDE2000 대한 권장 사용을 따릅니다.
그림 31 : 메트릭의 J 구성 요소에 대한 가중치 함수
다음 예제에서는 Jab 공간을 사용합니다. 유클리드 메트릭에서 가장 가까운 지점을 확인하기 위해 모든 경계 삼각형을 검색하는 것은 계산적으로 요구됩니다. 다음은 프로세스 속도를 높일 수 있지만 대략적인 답변으로 끝날 수 있는 추가 가정을 도입하지 않고 이 프로세스를 최대한 효율적으로 만드는 간단한 방법입니다. 먼저 지정된 삼각형에 점을 투사하는 기하학적 프로시저를 이해해야 합니다. 여기에 설명이 제공됩니다.
삼각형을 포함하는 무한 평면에 대한 직교 프로젝션이 먼저 수행됩니다. 평면에서 쿼리 지점의 가장 짧은 거리는 두 단계로 확인할 수 있습니다.
(a) 삼각형에 대한 단위 일반 벡터를 계산합니다.
(b) 단위 일반 벡터의 점 곱과 쿼리 지점에서 형성된 벡터와 삼각형의 점, 즉 꼭짓점 중 하나를 계산합니다. 일반 벡터의 단위 길이가 있으므로 이 점 제품의 절대값은 평면에서 쿼리 지점의 거리입니다.
투영된 지점은 삼각형 바깥쪽에 있을 수 있으므로 답이 아닐 수 있습니다. 따라서 먼저 검사 수행해야 합니다. 계산은 삼각형을 기준으로 프로젝팅된 점의 바리센트릭 좌표를 계산하는 것과 같습니다. 프로젝션된 점이 삼각형 안에 있는 것으로 확인되면 답입니다. 그렇지 않은 경우 삼각형의 가장자리 중 하나에서 가장 가까운 점이 획득됩니다. 세 가장자리 각각에 대해 검색을 수행합니다. 쿼리 지점을 가장자리로 프로젝션하는 것은 삼각형에 대한 프로젝션과 비슷하지만 1차원은 더 적은 프로세스입니다. 직교 프로젝션이 먼저 계산됩니다. 투영된 점이 가장자리에 있으면 답입니다. 그렇지 않은 경우 가장 가까운 지점은 두 끝점 중 하나에서 획득됩니다. 두 끝점에서 검색을 수행합니다. 즉, 각 쿼리 지점의 거리를 계산하고 더 작은 쿼리 지점의 거리를 비교합니다.
주의 깊게 살펴보면 가장자리가 항상 두 개의 삼각형으로 공유되고 세 개 이상의 가장자리가 공유하는 꼭짓점이 있기 때문에 모든 삼각형을 통과할 때 반복되는 검색이 많이 있음을 알 수 있습니다. 또한 특정 삼각형에 가장 가까운 지점을 찾는 데는 별로 관심이 없습니다. 대신 전체 영역 경계에 가장 가까운 지점을 찾는 데 관심이 있습니다. 그러나 하나의 특정 삼각형이 달성되는 삼각형이 될 것입니다. 검색 속도를 높이기 위해 사용할 수 있는 두 가지 전략이 있습니다.
전략 I. 각 꼭짓점은 최대 한 번 처리됩니다. 각 에지는 최대 한 번 처리됩니다.
전략 II. 검색의 어느 시점에서든 해당 최적 거리를 가진 최상의 후보가 있습니다. 빠른 검사 삼각형이 더 나은 거리를 제공할 수 없다는 것을 확인할 수 있는 경우 계산을 더 계속할 필요가 없습니다. 이 삼각형에 가장 가까운 점과 거리가 필요하지 않습니다.
그림 32 : 최소 DE 매핑 도형
그림 32는 영역 맵 MinDEMap에 대한 논리의 일반적인 흐름을 보여줍니다. 쿼리 지점의 경우 CheckGamut 함수가 먼저 호출됩니다. 점이 영역 내이면 맵은 no-op입니다. 지점이 범위를 벗어나면 ProjectPointToBoundary를 호출합니다. 이제 그림 33으로 이동합니다. 이 시점에서 다음 값이 계산되었다고 가정합니다.
(a) 표준 점 제품과 관련하여 각 영역 경계 삼각형에 대한 단위 일반 벡터입니다.
(b) 삼각형 목록 외에 꼭짓점 목록 및 에지 목록입니다.
그림 33 : ProjectPointToBoundary 루틴
이러한 모든 오버헤드는 일정한 오버헤드이며, 이 영역 경계에 대한 충분한 쿼리가 수행되면 비용이 감소합니다. 일반적으로 고정 영역이 두 개뿐인 한 디바이스에서 다른 디바이스로 변환 LUT를 빌드하고 균일하게 샘플링된 그리드의 점을 통해 변환 LUT가 실행되는 경우입니다. 표준 점 제품과 관련하여 일반 벡터를 미리 계산합니다. 그러나 수직성 개념은 앞에서 설명한 대로 쿼리 지점에 따라 달라지는 가중치 있는 점 제품을 기반으로 합니다. 그 이유는 표준 점 제품과 관련하여 일반 벡터에서 가중치 도트 제품에 대한 일반 벡터를 쉽게 얻을 수 있기 때문입니다. n 은 표준 점 제품과 관련하여 일반 벡터인 경우
n = (n /w J의 J 구성 요소, n의 a-구성 요소, n의 b-구성 요소 )
는 가중된 점 제품과 관련하여 삼각형에 대해 정상입니다. 이러한 관계 때문에 쿼리 지점에 따라 조정해야 하더라도 n을 미리 계산하는 것이 여전히 유용합니다.
ProjectPointToBoundary 루틴은 꼭짓점 및 가장자리의 "처리된 기록"을 다시 설정하여 시작합니다. 꼭짓점 또는 에지가 이전에 방문했는지 여부를 추적하는 BOOLEAN 플래그의 테이블입니다. 또한 ShortestDistance 변수를 사용되는 부동 소수점 숫자 시스템의 최대 인코딩 값인 "INFINITY"로 다시 설정합니다. 그런 다음 루프를 통해 실행되며 ProcessTriangle 호출을 사용하여 각 삼각형에서 가장 가까운 지점을 검색합니다. ProcessTriangle은 ShortestDistance 변수를 업데이트하는 루틴이며 중요한 루프에 명확하게 있습니다. 한 가지 최적화는 결과가 충분할 때 중지하는 것입니다. ProcessTriangle을 호출할 때마다 ShortestDistance 변수가 검사됩니다. 미리 정의된 임계값을 충족하는 경우 중지할 수 있습니다. 미리 정의된 임계값은 사용되는 색 공간과 색 이미징 시스템의 필수 정확도에 따라 달라집니다. 일반적인 응용 프로그램의 경우 색 차이가 인간의 시각으로 식별할 수 있는 것보다 작으면 불필요한 작업을 수행하지 않으려는 것입니다. CIECAM02 경우 이 색 차이는 1입니다. 그러나 변환 체인의 중간 단계일 수 있으므로 구현에서 임계값 0.005를 사용하여 계산의 정밀도를 유지합니다.
ProcessTriangle은 이전 전략 II를 구현합니다. 표준 점 제품과 관련하여 미리 계산된 단위 일반 벡터에서 삼각형으로의 일반 벡터를 가져오면, 삼각형의 꼭짓점 중 하나에서 벡터인 queryVector 및 queryVector의 점 곱을 형성하여 삼각형을 포함하는 무한 평면까지의 쿼리 지점 거리를 계산합니다. vertex1, 쿼리 지점, queryPoint.
queryVector = queryPoint - vertex1
distance = | normalVector * queryVector |/||normalVector||
이는 상대적으로 저렴한 계산이며, 추가 계산을 수행하려면 거리가 필요합니다. 이 거리가 현재 최적 거리인 ShortestDistance보다 작지 않은 경우 이 삼각형은 이 거리를 포함하는 평면보다 더 나은 거리를 제공하지 않으므로 더 나은 거리를 생성하지 않습니다. 이 경우 컨트롤을 삼각형 루프로 반환합니다. 거리가 ShortestDistance보다 작은 경우 이 점이 삼각형 내부에 있는 경우 더 가까운 지점이 있을 수 있습니다. 이를 확인하려면 몇 가지 "하드" 계산(선형 대수 이외의 것은 없음)을 수행해야 합니다. 삼각형의 다른 두 꼭짓점이 꼭짓점2 및 꼭짓점3이면 기본 벡터 firstBasisVector 및 secondBasisVector를 형성합니다.
firstBasisVector = vertex2 - vertex1
secondBasisVector = vertex3 - vertex1
다음 수식의 선형 시스템을 사용하여 미지의 사용자와 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 루틴을 호출할 수 있습니다.
그림 34 : ProcessEdge 및 ProcessVertex 루틴
ProcessEdge 루틴은 그림 34에 설명된 전략 I를 구현합니다. ProcessEdge는 에지가 이전에 처리되었는지 여부를 검사 시작합니다. 그렇다면 추가 작업이 수행되지 않습니다. 그렇지 않은 경우 가장자리가 포함된 무한선에 대한 쿼리 지점의 직교 프로젝션을 계산합니다. 계산에 포함된 선형 대수는 이전 삼각형 수식과 유사합니다. 그러나 계산은 더 간단하며 여기에 설명되어 있지 않습니다. 프로젝션된 점이 에지 내에 있는 경우 쿼리 지점에서 프로젝션된 지점의 거리를 찾습니다. 이 거리가 ShortestDistance보다 작으면 가장 가까운 새 지점을 찾았습니다. ShortestDistance와 ClosestPoint를 모두 업데이트합니다. 프로젝터된 점이 에지 외부에 있는 경우 두 끝점에서 ProcessVertex를 호출합니다. 컨트롤을 반환하기 전에 이 에지가 "PROCESSED"로 표시되도록 에지 기록을 업데이트합니다.
마지막으로 ProcessVertex에 대한 설명을 제공합니다. 또한 ProjectVertex 루틴은 전략 I를 구현하고 꼭짓점 기록 테이블을 기본. 그림 34에 설명된 것처럼 먼저 꼭짓점이 이전에 처리되었는지 여부를 검사. 그렇다면 추가 작업이 수행되지 않습니다. 그렇지 않은 경우 쿼리 지점에서 꼭짓점의 거리를 계산합니다. 거리가 ShortestDistance보다 작은 경우 ShortestDistance와 ClosestPoint를 모두 업데이트합니다. 마지막에 이 꼭짓점이 "PROCESSED"로 표시되도록 꼭짓점 기록을 업데이트합니다.
외부 제어 루프가 모든 삼각형을 모두 사용하거나 색 차이 임계값을 충족하기 전에 종료되면 ClosestPoint 변수에 액세스합니다. MinDEMap의 결과입니다. 매핑된 색이 쿼리 색에서 얼마나 멀리 떨어져 있는지에 관심이 있는 경우 호출자는 ShortestDistance를 검색할 수도 있습니다.
Hue Smoothing
그림 35 : 색조 다듬기
색조가 제한된 작업에서 문제가 발생합니다. 즉, 작업은 색조 평면 내의 변수만 고려합니다. 그림 35는 파란색 색조의 "불연속" 색조 조각을 나타내는 영역의 예를 보여 줍니다. 이 색조 범위 내에서 특정 색조 각도의 경우 영역 경계는 색조 평면에 대한 탄젠트입니다. 실제로 이로 인해 색조 조각의 토폴로지 구조가 변경됩니다. 표시된 예제에서 색조 평면이 이 색조 범위를 휩쓸면 "섬"이 나타나고 잠깁니다. 토폴로지의 이러한 변경으로 인해 색조별 작업이 불연속화됩니다. 예를 들어 이 범위에서 색조 각도가 변경되면 고정된 색조의 커프가 갑자기 변경됩니다.
특정 작업에서 색조를 유지하는 것이 바람직한 이유는 색상 과학이 있습니다. 앞의 문제를 해결하려면 원래 영역 경계 삼각형이 "색조를 부드럽게" 해야 합니다. 일반적으로 Gamut 경계 삼각형 집합의 색조는 (a) 실제 디바이스 영역과 일치하지 않을 수 있는 새 "영역"의 경계를 형성하고 원래 삼각형 집합에 정의된 영역을 포함하는 삼각형 집합입니다. 및 (b) 새 집합의 삼각형은 색조 평면과 평행하지 않도록 제한됩니다.
색조가 부드러운 삼각형 집합을 얻는 한 가지 실용적인 방법은 원래 꼭짓점의 공록 선체를 사용하는 것입니다. 그림 35에 설명된 것처럼, 공록 선체의 색조 조각은 토폴로지의 갑작스런 변화 없이 문제가 있는 색조 범위에서 원활하게 변화합니다.
영역 경계 설명에서 주 복제본 및 보조 항목 설정
HueMap과 같은 특정 영역 매핑 메서드는 디바이스 주 복제본 및 보조 복제본의 위치에 따라 달라집니다. 가산 디바이스의 경우 주 복제본은 빨간색, 녹색 및 파랑(R, G 및 B)입니다. 보조 항목은 cyan, magenta 및 yellow(C, M 및 Y)입니다. 빼기 디바이스의 경우 주 복제본은 C, M 및 Y입니다. 보조 항목은 R, G 및 B입니다. GBD는 Jab 색 값 배열에서 이러한 값 6개와 흰색 및 검은색(W 및 K)을 모두 추적합니다. 이러한 값은 생성 시 영역 경계 설명으로 설정됩니다. 출력 디바이스의 경우 디바이스 모델을 통해 디바이스 제어 값의 조합을 실행하여 주 복제본을 결정할 수 있습니다. 캡처 디바이스의 경우 이 방법은 (0.0, 0.0, 1.0)과 같이 완전히 포화된 순수 디바이스 값을 생성하는 이미지를 캡처하는 것이 거의 불가능하기 때문에 참조 GBD를 만드는 데 적합하지 않습니다. WCS 디바이스 프로필은 캡처 대상에 있는 주 복제본의 인덱스를 포함합니다. 이러한 값은 ICC 프로필에 포함되지 않으므로 ICC 보기 조건을 기준으로 Jab으로 변환한 후 일반적인 스캐너 대상에서 측정된 값을 사용합니다.
영역 경계 설명에서 중립 축 설정
HueMap 및 상대 MinCD 영역 매핑 메서드는 곧게 펴기 위해 디바이스 중립 축을 사용합니다. 기준 출력 디바이스의 경우 DeviceToColorimetric 메서드를 통해 디바이스 중립 값(R=G=B 또는 C=M=Y)을 실행한 다음 CIECAM02 개체의 ColorimetricToAppearance 메서드를 통해 중립 축을 결정할 수 있습니다. 그러나 캡처 디바이스가 중립 샘플과 함께 제공되는 경우 항상 디바이스 중립 값을 반환하지는 않습니다. 주변 조명이 완벽하게 중립적이지 않은 경우 특히 그렇습니다. WCS 디바이스 프로필은 대상에 있는 중립 샘플의 인덱스를 포함합니다. 이러한 샘플을 사용하여 중립 축을 설정합니다. 이 정보는 ICC 프로필에 사용할 수 없으므로 출력 디바이스에 사용되는 것과 동일한 방법을 사용해야 합니다. DeviceToColorimetric 메서드를 통해 디바이스 중립 샘플을 실행한 다음 입력 값과 색인 결과를 결합합니다.
관련 항목