최적화된 변환 만들기
영역 확인
변환 만들기
색 변환의 작동 방식을 제대로 설명하려면 ICM 2.0 및 CTE 내부를 통해 전체 처리 경로를 설명하는 것이 좋습니다. ICM 2.0 CreateColorTransformW 함수는 애플리케이션이 색 관리를 수행하는 데 사용할 수 있는 색 변환을 만듭니다. 이 함수는 LOGCOLORSPACE 및 의도 입력에서 색 컨텍스트를 만듭니다. 의도는 기준 ICC 영역 매핑 알고리즘 상관 관계에 매핑됩니다. 그런 다음 이 함수는 일관된 색 처리를 위해 CreateMultiProfileTransformICM 2.0 함수를 호출합니다. CreateColorTransform 함수는 일반적으로 내부 최적화 변환 구조로 데이터를 복사합니다.
ICM 2.0 CreateMultiProfileTransform 함수는 프로필 배열과 의도 배열 또는 단일 디바이스 링크 프로필을 허용하고 애플리케이션이 색 매핑을 수행하는 데 사용할 수 있는 색 변환을 만듭니다. 이러한 입력 프로필 및 의도를 처리하여 디바이스 모델, 색 모양 모델, 영역 경계 설명 및 영역 매핑 모델을 만듭니다. 이 작업은 다음과 같습니다.
- 디바이스 모델은 DM 프로필에서 직접 초기화됩니다. CreateMultiProfileTransform호출 시 각 프로필에 대해 하나의 디바이스 모델이 만들어집니다.
- 색 모양 모델은 CAM 프로필에서 직접 초기화됩니다. CreateMultiProfileTransform호출에는 각 프로필에 대해 하나의 CAM 프로필이 있습니다. 그러나 둘 이상의 프로필에 대해 동일한 CAM 프로필을 지정할 수 있습니다.
- 영역 경계 설명은 디바이스 모델 개체 및 CAM 개체에서 초기화됩니다. CreateMultiProfileTransform호출에서 각 프로필에 대해 하나의 영역 경계 설명이 있습니다.
- 영역 매핑 모델은 두 가지 영역 경계와 의도에서 초기화됩니다. CreateMultiProfileTransform호출에서 만든 각 디바이스 모델 쌍 간에 영역 매핑 모델을 만들어야 합니다. 이는 디바이스 모델보다 더 적은 영역 맵 모델을 사용한다는 것을 의미합니다. 의도 수가 디바이스 모델 수와 일치하므로 필요 이상으로 의도가 하나 더 있습니다. 목록의 첫 번째 의도는 건너뜁습니다. 디바이스 모델 및 의도 목록을 살펴보고 영역 매핑 모델을 만듭니다. 첫 번째 및 두 번째 디바이스 모델과 두 번째 의도를 선택하고 첫 번째 영역 매핑 모델을 초기화합니다. 두 번째 및 세 번째 디바이스 모델과 세 번째 의도를 선택하고 두 번째 영역 매핑 모델을 초기화합니다. 모든 영역 매핑 모델을 만들 때까지 이 방식으로 계속합니다.
프로필이 제대로 처리되고 모든 중간 개체가 만들어지고 초기화되면 다음 호출을 사용하여 CITE 변환을 만들 수 있습니다. pDestCAM 및 pDestDM createMultiProfileTransform호출의 마지막 프로필과 연결된 프로필입니다.
HRESULT CreateCITEColorTransform(
__inout IDeviceModel *pSourceDM,
__inout IColorAppearanceModel *pSourceCAM,
__in GamutMapArray *pGamutMapArray,
__inout IColorAppearanceModel *pDestCAM,
__inout IDeviceModel *pDestDM,
EColorTransformMode eTransformMode,
__deref_out IColorTransform **ppCTS
);
플러그 인 지원
변환 목록 설정과 관련된 한 가지 문제는 필요한 플러그 인을 사용할 수 있는지 여부를 확인하는 것입니다. 다음 모델 스위치는 이 동작을 제어하는 이 정책을 제공합니다. 이 변환 목록의 관리는 내부 최적화된 변환 구조의 메서드이지만 각 모델 메서드는 자체 및 자체 매개 변수 값 집합에 대한 포인터를 제공합니다.
모드는 다음 중 하나여야 합니다.
- TfmRobust: 측정 프로필이 기본 플러그 인을 지정하고 플러그 인을 사용할 수 없는 경우 새 CTE 시스템에서 기준 플러그 인을 사용합니다. 플러그 인을 사용할 수 없는 경우 변환에서 오류를 보고합니다.
- TfmStrict: ColorContext에서 기본 플러그 인을 지정하는 경우 플러그 인을 사용할 수 있어야 합니다. 기본 플러그 인이 없으면 기준 플러그 인이 사용됩니다. 플러그 인을 사용할 수 없는 경우 변환에서 오류를 보고합니다.
- TfmBaseline: AddMeasurementStep에서 기준 플러그 인만 사용할 수 있습니다. ColorContext에서 기본 플러그 인을 지정하면 플러그 인이 무시됩니다. 기준 플러그 인을 사용할 수 없는 경우 변환에서 오류를 보고합니다.
변환 실행
ICM 2.0 API TranslateColors 함수는 색 변환에 정의된 대로 원본 색 공간 대상 색 공간으로 색 배열을 변환합니다. 이 함수는 캐시된 색 배열을 내부적으로 확인하여 일반적으로 변환된 색을 즉시 일치시킬 수 있도록 합니다. 이 변환은 채널당 8비트 바이트 배열과 채널 부동 소수점 배열당 32비트를 지원합니다. 다른 모든 형식은 새 CTE로 전달하기 전에 변환됩니다.
ICM 2.0 API TranslateBitmapBits 함수는 정의된 형식을 가진 비트맵의 색을 변환하여 요청된 형식으로 다른 비트맵을 생성합니다. 이 함수는 캐시된 색 배열을 내부적으로 확인하여 일반적으로 변환된 색을 즉시 일치시킬 수 있도록 합니다. 너무 많은 코드 경로, 지원 및 테스트 복잡성을 방지하기 위해 변환 및 보간 엔진에서 실제로 제한된 수의 비트맵 형식만 지원됩니다. 이 함수는 네이티브가 아닌 들어오는 비트맵 및 나가는 비트맵 형식을 처리를 위해 기본적으로 지원되는 형식으로 변환해야 합니다. 이 변환은 채널당 8비트 바이트 비트맵과 채널당 32비트 비트맵만 지원합니다. 다른 모든 형식은 새 CTE로 전달하기 전에 변환됩니다.
순차적 변환 실행
ICM 함수가 CreateColorTransformW또는 CreateMultiProfileTransform 호출될 때dwFlags 매개 변수에 SEQUENTIAL_TRANSFORM 비트 집합이 있는 경우 변환 단계가 순차적으로 실행됩니다. 즉, 코드는 CreateColorTransform 또는 CreateMultiProfileTransform 호출에 지정된 대로 각 디바이스 모델, 색 모양 모델 및 영역 매핑 모델을 개별적으로 단계별로. 이는 플러그 인 모듈을 디버깅하는 데 유용할 수 있지만 최적화된 변환을 통해 실행하는 것보다 훨씬 느립니다. 따라서 순차 모드에서 실행하는 것은 프로덕션 소프트웨어에는 권장되지 않습니다. 또한 순차 모드 및 최적화 모드에서 얻은 결과에 약간의 차이가 있을 수 있습니다. 이는 함수가 함께 연결될 때 발생하는 변형 때문입니다.
최적화된 변환 만들기
최적화된 변환은 다차원 조회 테이블입니다. 테이블은 변환에 입력 색을 적용하는 테트라데랄 보간과 같은 다차원 보간 엔진에서 처리할 수 있습니다. 다음 섹션에서는 최적화된 조회 테이블을 만드는 방법을 설명합니다. 그 뒤의 섹션에서는 최적화된 조회 테이블 내에서 보간하는 방법을 설명합니다.
스파스 조회 테이블
기존 프린터에는 CMYK 잉크가 있습니다. 영역을 확장하기 위해 한 가지 방법은 시스템에 새 잉크를 추가하는 것입니다. 일반적으로 추가되는 잉크는 CMYK 잉크에서 재현하기 어려운 색입니다. 일반적인 선택은 주황색, 녹색, 빨간색, 파란색 등입니다. "명백한 해상도"를 높이기 위해 연한 시안, 밝은 마젠타 등 다양한 색조의 잉크를 사용할 수 있습니다. 실제로 프린터 장치에는 4개 이상의 채널이 있습니다.
프린터는 출력 디바이스이지만 디바이스 공간에서 다른 색 공간으로의 색 변환도 수행합니다. CMYK 프린터의 경우 CMYK에서 XYZ로 변환되거나 프린터의 "정방향 모델"이 됩니다. 전달 모델을 다른 변환과 결합하여 다른 디바이스에서 CMYK 인쇄를 에뮬레이트할 수 있습니다. 예를 들어 모니터 RGB에 대한 프린터 CMYK는 모니터에서 해당 CMYK 프린터의 인쇄를 에뮬레이트하는 교정 메커니즘을 가능하게 합니다. 마찬가지로 hi-fi 프린터에도 마찬가지입니다. CMYKOG에서 RGB로 변환하면 모니터에서 CMYKOG 프린터를 교정할 수 있습니다.
이러한 색 변환을 구현하는 기존의 방법은 균일한 LUT를 사용하는 것입니다. 예를 들어 CMYKOG 프린터에 대한 ICC 프로필에서 ICC 사양은 CMYKOG에서 ICC 프로필 연결 공간(CIELAB 또는 CIEXYZ)으로 가는 정방향 모델의 CMYKOG 디바이스 공간에 균일한 샘플링을 나타내는 균일한 LUT를 저장하는 A2B1 태그를 요구합니다. ICC 디바이스 링크 프로필을 사용하면 CMYKOG 디바이스 공간에서 디바이스 공간을 포함한 모든 색 공간으로 직접 변환할 수 있으며 CMYKOG 공간에서 균일하게 샘플링된 LUT의 형태로도 가능합니다. 단색 디바이스(1개 채널)의 경우를 제외하고 엄청난 LUT 결과로 인해 샘플링은 256개 수준(비트 깊이 8)으로 수행되지 않습니다. 대신 낮은 비트 깊이의 샘플링이 사용됩니다. 몇 가지 일반적인 선택은 9(비트 깊이 3), 17(비트 깊이 4), 33(비트 깊이 5)입니다. 각 채널의 수준 수가 256보다 작은 경우 LUT는 보간 알고리즘과 함께 사용하여 수준이 샘플링된 두 수준 사이에 있는 경우 결과를 생성합니다.
균일한 LUT는 개념적으로 구현하기 쉽고 균일한 LUT의 보간은 일반적으로 효율적이지만 LUT 크기는 입력 차원에 따라 기하급수적으로 증가합니다. 실제로 d 균일한 LUT에 사용되는 단계 수이고 n 원본 색 공간의 채널 수인 경우 LUT의 노드 수는 . 분명히 노드 수는 메모리에 너무 많은 스토리지를 빠르게 요구하므로 최상위 컴퓨팅 시스템조차도 수요를 처리하는 데 어려움을 겪습니다. 6~8개의 채널이 있는 디바이스의 경우 디바이스 프로필의 ICC 구현을 사용하려면 LUT에서 몇 가지 단계를 사용해야 하며, 때로는 A2B1 테이블에서 5단계까지 내려와 프로필을 기가바이트 대신 메가바이트 이내로 유지해야 합니다. 이제 샘플이 적기 때문에 더 적은 수의 단계를 사용하면 보간 오류가 증가합니다. LUT는 균일해야 하므로 디바이스 값의 작은 변경으로 인해 상당한 색 차이가 발생할 수 있는 공간의 영역에서도 전체 색 공간에 대한 정확도가 저하됩니다.
4개 이상의 색이 있는 디바이스에서는 전체 디바이스 공간의 특정 하위 영역이 다른 장치보다 더 중요합니다. 예를 들어 CMYKOG 공간에서는 색상이 서로 겹치기 때문에 시안 잉크와 녹색 잉크를 함께 사용하는 경우는 거의 없습니다. 마찬가지로 노란색과 주황색 잉크는 대부분 서로 겹칩니다. 단계 수의 균일한 감소는 전체 색 공간에서 품질이 전반적으로 저하된 것으로 볼 수 있습니다. 이는 불가능한 잉크 조합에 대해 감당할 수 있지만 가능성이 있거나 중요한 조합에는 적합하지 않습니다.
균일하게 샘플링된 LUT는 보간에 간단하고 효율적이지만 차원이 증가함에 따라 엄청난 메모리 요구 사항을 적용합니다. 실제로 디바이스에는 6~8개의 채널이 있을 수 있지만 동시에 사용되는 경우는 거의 없습니다. 대부분의 경우 색 변환에 대한 입력 색에는 "활성" 색이 몇 가지만 있으므로 더 낮은 차원 색 공간에 상주합니다. 이는 또한 차원이 낮을 때 보간이 더 빠르기 때문에 더 낮은 차원 공간에서 보간을 보다 효율적으로 수행할 수 있음을 의미합니다.
따라서 이 방법은 전체 디바이스 공간을 다양한 차원의 하위 영역으로 계층화하는 것입니다. 또한 더 낮은 차원(3~4개의 색을 결합하는 치수)이 더 중요하기 때문에 공간을 계층화하여 다른 샘플링 속도를 적용할 수도 있습니다. 즉, 조각에 대한 단계 수가 다릅니다. 더 낮은 차원에 대한 샘플링 속도를 증가시켜 더 높은 차원에 대한 샘플링 속도를 줄입니다.
표기법을 수정하기 위해 n 샘플링하려는 색 변환의 원본 색 공간에 있는 채널 수입니다.
n 입력 차원으로 참조하고 .
기본 구성 요소는 입력 차원이 n단일 LUT 대신 다양한 입력 차원 및 크기의 LUT입니다. 더 정확하게 말하자면,LUT 단위 큐브에 적용되는 사각형 격자입니다. 즉, 모든 디바이스 좌표가 [0, 1] 범위로 정규화됩니다. lut의 입력 차원이면(n같을 필요는 없지만 필요함) σ 1차원 샘플링 그리드로 구성됩니다.
Samp i:
여기서 모든 xj [0, 1] 범위에 있어야 1 이상이어야 하는 i 채널 샘플링에 대한 단계 수이며,
1이어야 합니다. 반면에
0일 필요는 없습니다.
다음 두 가지 특수한 LUT 사례만 정의됩니다.
닫힌 LUT: 각 Samp*대해 *를 및
. 균일하게 닫힌 LUT는 동일한
노드 간격은 0에서 1 사이로 균일하게 지정됩니다.
OPEN LUT: 각 Samp i대해 위 첨자 X(아래 첨자 1)가 0보다 큰 것을 .
.
목표는 단위 큐브 [0, 1] n 닫힌 LUT의 컬렉션으로 계층화하고 전체 컬렉션이 단위 큐브를 포함하도록 LUT를 여는 것입니다. 이러한 "LUT 지층"을 차원별로 구성하여 최상위 수준에서 구성하는 것이 개념적으로 더 간단합니다.
여기서 "k -dimensional strata 컬렉션"입니다. 지층 차원은 0이 아닌 3부터 시작합니다. 즉, 3색 조합의 보간은 너무 많은 메모리 요구 사항 없이 처리할 수 있기 때문입니다.
LUT 계층에 대한 설명
이 구현에서는 다음을 수행합니다.
3개의 입력이 있는 닫힌 LUT로 구성되며, 하나는 n개 색인 중에서 선택된 세 가지 색인의 가능한 조합 중 하나입니다.
CMYK(또는 처음 네 가지 색인)의 닫힌 LUT 하나와
. CMYK 조합을 사용하면 CMYK 조합이 중요한 조합임을 인정합니다.
,
열려 있는 LUT는 n 색인의 합계에서 k 색인을 선택하는 각 가능한 조합에 대해 하나씩입니다.
LUT의 크기를 지정하는 데 남아 있습니다. 열린 LUT와 닫힌 LUT의 주요 차이점은 열린 LUT가 겹치지 않고 닫힌 LUT가 경계 면에서 겹칠 수 있다는 것입니다. 개방형 LUT의 1차원 샘플링에 0이 포함되지 않는다는 사실은 기본적으로 열린 LUT에 경계 면의 절반이 누락되었으므로 이름이 "open"임을 의미합니다. 두 LUT가 겹치지 않으면 각 채널에서 다른 수의 단계 또는 노드 위치를 사용할 수 있습니다. 두 LUT가 겹치는 경우에도 마찬가지입니다. 이 경우 단계 수 또는 노드 위치가 다른 경우 두 LUT의 교차점에 있는 지점은 보간에 사용되는 LUT에 따라 다른 보간 값을 받습니다. 이 문제에 대한 간단한 해결 방법은 두 LUT가 겹칠 때마다 동일한 수의 단계로 균일한 샘플링을 사용하는 것입니다. 즉, 다음을 수행합니다.
모든 닫힌 LUT(이 구현의 모든 3색 LUT 및 CMYK LUT)는 균일해야 하며 표시된 단계 수가 같아야 합니다.
다음 두 알고리즘을 사용하여 닫힌 LUT에 대해 단계 수와 열린 LUT에 대한 단계 수를 확인할 수 있습니다.
알고리즘 #1
이 알고리즘에는 외부 입력이 필요하지 않습니다.
모든 닫힌 LUT는 d 단계 수로 균일합니다.
k 차원의 열려 있는 모든 LUT에는 d(k)를 표시할 노드의 간격이 동일하게 지정됩니다. 즉, 각
같습니다.
Samp i:
마지막으로 다음 표 1에서 d 및 d(k)를 지정합니다. "proof", "normal" 및 "best"의 세 가지 모드는 ICM 2.0 품질 설정입니다. 이 구현에서 증명 모드는 메모리 공간이 가장 적고 최적 모드에는 메모리 공간이 가장 큽니다.
이 알고리즘을 구현하려면 다음 알고리즘 #2를 호출해야 합니다. 사용자는 테이블을 가이드로 사용하여 자신의 샘플링 위치를 지정할 수 있습니다.
알고리즘 #2
이 알고리즘은 "중요한" 샘플링 위치 목록 형식의 외부 입력이 필요하지만 적응성이 더 높고 잠재적으로 메모리 공간을 절약할 수 있습니다.
필수 입력은 사용자가 제공하는 디바이스 값의 배열입니다. 이러한 디바이스 값은 디바이스 색 공간의 어느 영역이 중요한지 나타냅니다. 즉, 더 많이 샘플링해야 하는 지역입니다.
닫힌 모든 LUT는 알고리즘 #1에 설명된 대로 d 단계 수와 균일합니다. d 값은 표 1에 제공됩니다.
(a) Uniform Closed LUT
증명 모드 | 기본 모드 | 최적 모드 | |
---|---|---|---|
d | 9 | 17 | 33 |
(b) LUT 열기
입력 차원 | 증명 모드 | 기본 모드 | 최적 모드 |
---|---|---|---|
4 | 5 | 7 | 9 |
5 | 2 | 3 | 3 |
6 | 2 | 3 | 3 |
7 | 2 | 2 | 2 |
8개 이상 | 2 | 2 | 2 |
표 1: 알고리즘에 사용되는 LUT 크기
열려 있는 각 LUT는 각 입력 채널에 서로 다른 수의 단계를 가질 수 있으며 샘플링 위치의 간격을 균등하게 지정할 필요가 없습니다. 지정된 열린 LUT 계층의 경우 연결된 색인 조합이 있습니다(예: 표시). 여기서
s는 1에서 n사이의 고유 정수입니다. 이 계층의 "활성" 색인에 해당하는 채널 인덱스입니다.
1단계: 이 계층에 포함되지 않은 입력된 디바이스 값 배열을 필터링합니다. 디바이스 값 다른 모든 채널은 0입니다. 필터링된 집합에 N 항목이 있는 경우
각 같음 표시에 대해 다음 단계 2-5를 반복합니다.
2단계: Samp 1.0이어야 하는 1점만.
다음이동합니다. 그렇지 않으면 3단계로 계속 진행합니다.
3단계: C 첨자 표시 i.Shows C subscript i.채널필터링된 샘플을 오름차순으로 정렬합니다.
4단계: 노드를 사용하여 "미정" 샘플링 그리드 정의
여기서 .
5단계: 미정 그리드를 정규화하여 엄격한 단조도를 준수하고 1.0으로 끝나는지 확인합니다. 배열이 이미 정렬되어 있으므로 미정 눈금의 노드는 이미 음조가 감소하지 않습니다. 그러나 인접 노드는 동일할 수 있습니다. 필요한 경우 동일한 노드를 제거하여 이 문제를 해결할 수 있습니다. 마지막으로, 이 프로시저 후에 끝점이 1.0보다 작은 경우 1.0으로 바꿉다.
5단계는 LUT 지층이 각 채널에서 다른 수의 단계를 가질 수 있는 이유입니다. 정규화 후에는 채널의 단계 수가 d 첨자 미정(k)을 표시하기 .
보간법
LUT 지층을 열고 LUT 계층을 닫아 단위 큐브의 계층화를 생성할 수 있습니다. 이 "스파스 LUT 구조체"를 사용하여 보간을 수행하려면 다음 단계를 수행합니다. 표시된 .
1단계: "활성" 채널 수를 결정합니다. 0이 아닌 채널의 수입니다. 그러면 포함하는 계층을 검색할 지층 차원 k 결정됩니다. 더 정확하게 말하면 활성 채널 수가 , 그렇지 않으면 지층 차원은 활성 채널의 수와 동일합니다.
2단계: 내에서 포함하는 계층을 검색합니다. 계층에 해당하는 모든 채널에 0이 아닌 값이 있고 다른 모든 채널이 0이면 디바이스 값이 열린 계층에 포함됩니다. 계층으로 표현되지 않는 모든 채널이 0이면 디바이스 값이 닫힌 계층에 포함됩니다. 포함된 계층을 찾을 수 없으면 오류 조건이 있습니다. 취소하고 실패를 보고합니다. 포함하는 계층이 있으면 다음 단계를 진행합니다.
3단계: 포함하는 계층이 닫힌 경우 알려진 보간 알고리즘을 통해 지층 내의 보간을 수행할 수 있습니다. 이 구현에서 알고리즘의 선택은 테트라드랄 보간입니다. 포함하는 계층이 열려 있고 디바이스 값이 계층 내에 엄격하게 있는 경우, 즉,
.
여기서 계층에 대한 채널 인덱스인 경우 tetrahedral 보간과 같은 표준 보간 알고리즘이 작동합니다.
X 아래 첨자를 표시하면 디바이스 값은 계층과 하위 차원 하위 영역 사이의 "간격"에 속합니다. 이 MOI는 보간 알고리즘과 관련이 없으므로 기본 설정 알고리즘은 다음과 같은 transfinite 보간이지만 모든 보간 알고리즘을 사용하여 이 "간격" 내에서 보간할 수 있습니다.
보간 모듈의 아키텍처는 그림 1의 두 부분에 설명되어 있습니다.
보간 모듈 아키텍처의 1부를 보여 주는
보간 모듈 아키텍처의 2부를 보여 주는
그림 1: 보간 모듈 아키텍처
앞에서 설명한 것처럼 이 알고리즘은 중요한 색인 조합을 포함하는 디바이스 공간 영역에서 합리적으로 조밀한 샘플링을 수행하는 동시에 필요한 LUT의 총 크기를 최소화할 수 있습니다. 다음 표에서는 스파스 LUT 구현(알고리즘 #1 및 일반 모드 사용)에 필요한 노드 수와 해당 균일한 LUT 구현을 비교합니다.
입력 채널 수 | 스파스 LUT | Uniform LUT |
---|---|---|
5 | 142498 | 1419857 |
6 | 217582 | 24137567 |
7 | 347444 | 410338673 |
8 (여덟) | 559618 | 6975757441 |
단위 큐브 내 보간
사각형 눈금의 경우 기본 단계는 바깥쪽 셀 내의 보간입니다. 입력 지점의 경우 바깥쪽 셀을 쉽게 확인할 수 있습니다. 사각형 눈금에서 바깥쪽 셀의 각 꼭짓점(모퉁이점)에 출력 값이 지정됩니다. 보간이 충족해야 하는 유일한 경계 조건(BC)이기도 합니다. 보간은 이러한 모든 지점을 통과해야 합니다. 이러한 경계 조건은 "불연속" 지점에 있으며, 이 경우 셀의 2n 모퉁이점이며 여기서 n은 색 공간의 차원입니다.
계속 진행하기 전에 경계 조건의 개념을 공식화하는 것이 유용합니다. 바깥쪽 셀 경계의 하위 집합 S(n차원의 단위 큐브)의 경우 S의 경계 조건은 BC: S → Rm 함수의 사양입니다. 여기서 m은 출력 차원입니다. 즉, Interp: [0,1]n→ Rm으로 표시될 수 있는 보간은 충족해야 합니다. Interp(x) = BC(x)는 S의 모든 x에 대해 필요합니다.
단위 큐브의 보간 표준 시나리오에서 S는 큐브의 2n 꼭짓점인 불연속 점 집합입니다.
이제 경계 조건을 일반화하여 앞에서 설명한 문제를 해결하고 단위 큐브 내에 새 보간 알고리즘을 제공할 수 있습니다. 개별 경계 지점만 허용하는 대신 큐브의 전체 경계 면에 경계 조건을 적용할 수 있습니다. 정확한 가정은 다음과 같습니다.
(a) 점 vn =(1,1,...,1)는 특수하며 불연속 경계 조건만 허용됩니다. 즉, n 경계 면 xi=1(i=1,...,n)에 연속 경계 조건을 적용할 수 없습니다.
(b) 나머지 N 경계 면 각각 xi=0(i=1,...,n)에 대해 두 얼굴이 교차하는 경우 얼굴의 경계 조건이 교집합에 동의해야 하는 호환성 조건으로 얼굴 전체에 경계 조건을 적용할 수 있습니다.
(c) 경계 조건이 있는 얼굴에 포함되지 않은 꼭짓점은 개별(불연속) 경계 조건을 갖습니다.
불연속 경계 조건을 유한 데이터로 참조할 수 있으며, 연속 경계 조건은 유한 데이터 및 트랜스피니티 데이터에 대한 보간을 논의할 때 트랜스피니트 데이터로 참조할 수 있습니다.
첫째, 문제의 이 특정 제형에 대한 표기법을 설정하는 데 도움이 되는 표준 테트라데랄 보간(예: 사카모토의 특허에 사용됨)을 검토합니다. 단위 큐브 [0,1]n을 n!으로 세분화할 수 있는 것으로 알려져 있습니다. tetrahedra, n 기호의 순열 집합에 의해 매개 변수화됩니다. 더 구체적으로 말하자면, 이러한 각 테트라데론은 불평등에 의해 정의됩니다.
여기서 σ:{1,2,..,n}→{1,2,...,n}은 "기호" 1, 2, ..., n의 순열입니다. 즉, n 기호 집합의 양전성 매핑입니다. 예를 들어 n = 3 및 σ = (3, 2, 1)이면 σ(1)=3, σ(2)=2, σ(3)=1을 의미하며, 해당 테트라에드론은 z≥y≥x로 정의됩니다. 여기서 일반적인 표기법 x, y, z는 x1, x2, x3에 사용됩니다. 이러한 테트라에드론은 서로 분리되지 않습니다. 보간을 위해 두 개의 뚜렷한 테트라에드론의 공통 면에 있는 점들은 보간에 사용되는 테트라데론에 관계없이 동일한 보간 값을 갖습니다. 그러나 지정된 입력 지점(x1, ..., xn)에 대해 유한 지점을 보간하는 표준 시나리오에서는 먼저 해당 순열 σ 있는 테트라데론을 결정합니다.
여기서 표준 기본 벡터입니다. 일반화로 이동하기 전에 v0, v1, ..., vn은 tetrahedron의 꼭짓점이며
"바리센트릭 좌표"입니다.
경계 면에 있는 BC의 일반적인 경우, 바리센트릭 프로젝션의 개념을 사용할 수 있습니다. 이전과 마찬가지로 지정된 입력 지점(x1, ..., xn)의 경우 먼저 해당 순열이 σ 있는 tetrahedron을 결정합니다. 그런 다음 다음과 같이 일련의 바리센트릭 프로젝션을 수행합니다. 첫 번째 프로젝션 0과 같은 X 첨자 델타(1)
. 이 경우 변경되지 않습니다. 지도 BProj의 정확한 정의는 다음과 같이 정의됩니다.
와 및 k = 1, 2, ..., n에 대한 수식을 표시합니다.
동일한 경우 BC는 가정(a)에 의해 vn에서 정의되므로 중지할 수 있습니다.
같지 않은 경우
σ(1)번째 구성 요소가 전멸되었습니다. 즉, 경계 면 중 하나에 있습니다. BC가 정의된 얼굴에 있거나, 이 경우 중지할 수 있거나, BProj 아래 첨자 2(X')를 표시하기
.
중지할 수 있습니다. 그렇지 않으면 BProj 아래 첨자 3(X'')
. 모든 프로젝션은 하나의 구성 요소를 전멸하므로 유효 차원이 감소하므로 프로세스가 결국 중지되어야 한다는 것을 알 수 있습니다. 최악의 시나리오에서는 차원 0까지 n 프로젝션을 수행합니다. 즉, 큐브의 꼭짓점(가정(c)에 따라 BC가 정의됨을 알 수 있습니다.
를 사용하여 K 프로젝션이 수행되었다고 가정합니다.
x(0)= x, 입력 지점 및 BC는 x(k)에서 정의됩니다. 그런 다음 일련의 출력 벡터를 정의하여 프로젝션을 해제합니다.
여기서 마침내 답을 얻습니다.
작업된 예제
단위 큐브를 사용한 보간의 작업 예제를 보여 주는
그림 2: Worked 예제
그림 2에서 n = 3, m = 1이 있고 다음 BC가 있는 상황을 고려합니다.
(a) 꼭짓점의 4개의 불연속 BC
(0, 0, 1): β001
(0, 1, 1): β011
(1, 0, 1): β101
(1, 1, 1): β111
(b) 얼굴 x3=0의 연속 BC: F(x1, x2)
계산 #1: 입력 지점 x = (0.8, 0.5, 0.2). 바깥쪽 테트라에드론은 순열 <1, 2, 3>연결됩니다.
첫 번째 프로젝션:
이 작업은 이미 얼굴 x3=0에 있으므로 중지할 수 있습니다. 역방향 대체는 다음을 제공합니다
이것이 답입니다.
계산 #2: 입력 지점 x = (0.2, 0.5, 0.8). 바깥쪽 테트라에드론은 순열 <3, 2, 1>연결됩니다.
첫 번째 프로젝션:
두 번째 프로젝션:
세 번째 프로젝션: - 얼굴 x3=0에 있습니다. 역방향 대체는 다음을 제공합니다
, 최종 대답입니다.
응용 프로그램
(a) 순차 테트라에드랄 보간
순차 테트라데랄 보간을 보여 주는
그림 3: 순차 테트라데랄 보간
그림 3을 참조하세요. 호환되지 않는 그리드가 적용된 두 평면을 보간하려면 그림에 표시된 지정된 지점 P를 묶는 셀을 고려합니다. 셀의 "위쪽" 꼭짓점은 위쪽 평면의 그리드에서 직접 가져옵니다. 아래쪽 면의 꼭짓점은 아래쪽 평면의 그리드와 호환되지 않으므로 전체 얼굴은 아래쪽 평면의 그리드에서 보간을 통해 얻은 값이 있는 BC를 갖는 것으로 처리됩니다. 그런 다음 이 설정이 위의 가정(a), (b) 및 (c)를 충족하고 보간 알고리즘을 적용할 수 있습니다.
또한 알고리즘은 보간 문제의 차원을 1로 줄인 것이 분명합니다. 그 결과는 위쪽 눈금의 꼭짓점에서 값의 선형 조합이고 차원이 1보다 작은 하부 평면의 보간이기 때문입니다. 하위 평면에 유사한 샌드위치 평면 구성이 있는 경우 해당 평면에 프로시저를 적용하여 차원을 1로 줄일 수 있습니다. 이 절차는 차원 0에 도달할 때까지 계속할 수 있습니다. 이러한 투영 및 보간을 "순차적 테트라데랄 보간"이라고 할 수 있습니다.
(b) 간격 보간
간격 보간을 보여 주는
그림 4: 간격 보간
이것은 양수 사분면 안에 엄격하게 앉아 있는 큐브에 적용되는 그리드입니다. 큐브 자체에는 그리드가 있으며 각 좌표 평면에는 반드시 호환되지 않는 그리드가 있습니다. 큐브와 좌표 평면 사이의 "간격"에는 "L자형"이며 표준 기술에 적용할 수 없는 단면이 있습니다. 그러나 여기에 도입된 기술을 사용하면 이 간격을 커버하는 셀을 쉽게 소개할 수 있습니다. 그림 4에서는 이 중 하나를 보여 줍니다. 좌표면의 그리드는 셀의 모든 아래쪽 면에 필요한 BC를 제공하는 보간을 지원하며, 나머지 꼭짓점은 큐브의 아래쪽 모서리에서 제공됩니다.
구현에 대한 최종 참고 사항
실제 애플리케이션에서 알고리즘의 기본 설정인 "단위 큐브"는 큰 위도에서 추출되며 꼭짓점의 값에는 비용이 많이 드는 계산이 필요할 수 있습니다. 반면에, 테트라데랄 보간에는 단위 큐브의 모든 꼭짓점의 하위 집합인 tetrahedron의 꼭짓점에서 값만 필요하다는 것도 분명합니다. 따라서 "지연된 평가"라고 할 수 있는 것을 구현하는 것이 더 효율적입니다. 이전 알고리즘의 소프트웨어 구현에서는 단위 큐브와 해당 꼭짓점의 값을 입력으로 사용하는 서브루틴을 사용하는 것이 일반적입니다. 지연된 평가는 꼭짓점에서 값을 전달하는 대신 실제로 평가를 수행하지 않고 꼭짓점 값을 평가하는 데 필요한 정보가 전달됨을 의미합니다. 서브루틴 내부에서 이러한 값의 실제 평가는 바깥쪽 테트라에드론에 속하는 꼭짓점에서만 수행됩니다.
높은 동적 범위 가상 RGB 원본 디바이스에서 사용할 조회 테이블
가상 RGB 디바이스로 모델링된 원본 디바이스를 사용하여 변환을 생성하는 경우 원본 색인 값이 음수이거나 unity(1.0)보다 클 수 있습니다. 이 경우 원본 디바이스를 HDR(High Dynamic Range)이라고 합니다. 이 경우 특별히 고려해야 합니다.
HDR 변환의 경우 각 색채 채널의 최소값과 최대값은 디바이스의 영역 경계에서 확인할 수 있습니다. 이러한 값을 사용하면 각 색채 채널에 대한 간단한 크기 조정이 적용되므로 최소 색인과 동일한 색인 값이 0.0으로 변환되고 최대 색인과 동일한 색인 값이 1.0으로 변환되고 값이 선형으로 0.0에서 1.0 사이로 매핑됩니다.
ICCProfileFromWCSProfile
이 기능의 주요 목적은 Windows의 비스타 이전 버전을 지원하는 것이므로 ICC 사양 ICC.1:1998-09에 정의된 대로 버전 2.2 ICC 프로필을 생성해야 합니다. 특정 경우(다음 표 "ICC 프로필에 대한 기준 디바이스 클래스 매핑" 참조) WCS 프로필에서 행렬 또는 TRC 기반 ICC 프로필을 만들 수 있습니다. 다른 경우에는 ICC 프로필이 LUT로 구성됩니다. 다음 프로세스에서는 AToB 및 BToA LUT를 만드는 방법을 설명합니다. 물론 ICC 프로필에는 다른 필드도 있습니다. 일부 데이터는 WCS 프로필에서 파생될 수 있습니다. 다른 데이터의 경우 지능형 기본값을 개발해야 합니다. 저작권은 Microsoft에 할당됩니다. LUT를 만드는 데 사용되는 Microsoft 기술이므로
이 디자인은 플러그 인을 포함한 모든 유형의 디바이스 모델에서 작동합니다. 플러그 인에 연결된 기준 디바이스 모델이 있는 한 기본 디바이스 유형을 확인할 수 있습니다.
ICC 프로필을 만드는 어려운 부분은 AToB 및 BToA 조회 테이블을 만드는 것입니다. 이러한 테이블은 디바이스 공간(예: RGB 또는 CMYK)과 CIELAB의 변형인 PCS(프로필 연결 공간) 간에 매핑됩니다. 이것은 기본적으로 디바이스 공간에서 디바이스 공간으로 매핑하기 위해 CITE 변환에 사용되는 색 관리 프로세스와 동일합니다. 그러나 변환을 수행하려면 다음 정보가 있어야 합니다.
PCS에 대한 참조 보기 조건입니다.
참조 PCS 영역입니다.
PCS 값과 색시도 간에 변환하는 디바이스 모델입니다.
WCS 프로필 및 연결된 CAM은 매개 변수로 제공됩니다. colorimetry와 PCS 인코딩 간에 변환되는 두 가지 기준 디바이스 모델이 있습니다. 두 가지가 필요한 이유는 아래에 설명되어 있습니다.
ICC 프로필 형식 사양에서 PCS에 대한 참조 보기 조건을 가져올 수 있습니다. ICC 프로필 형식 사양에 제공된 정보는 CMS에서 사용하는 CAM을 초기화하는 데 필요한 모든 데이터를 계산하기에 충분합니다. 일관성과 유연성을 위해 이 정보는 WCS 색 프로필에 저장됩니다.
WCS 프로필을 사용하여 PCS의 참조 영역을 정의하는 샘플을 저장할 수도 있습니다. CITE CMS(색 관리 시스템)에는 영역 경계를 만드는 두 가지 방법이 있습니다. 하나는 전체 디바이스 공간을 샘플링하고 디바이스 모델을 사용하여 측정값을 만드는 것입니다. 두 번째 방법은 프로필에서 측정된 샘플을 사용하여 참조 영역 경계를 만드는 것입니다. ICC PCS의 영역이 너무 커서 유용한 참조 영역을 만들 수 있으므로 첫 번째 방법은 부적절합니다. 그러나 두 번째 방법은 유연한 프로필 기반 접근 방식입니다. 참조 PCS 영역을 다시 정의하려면 PCS 디바이스 프로필에서 측정 데이터를 변경할 수 있습니다.
ICC PCS는 이상적인 장치의 모델링입니다. PCS의 모델을 실제 디바이스로 만들면 Smart CMM에서 사용되는 색 관리 프로세스를 활용할 수 있습니다. 색상 측정에서 PCS 인코딩으로 디바이스 모델을 만드는 것은 간단합니다. 실제 색 인식 값과 PCS로 인코딩된 값 간에 매핑하기만 하면 됩니다. 디바이스 모델에 대한 CMS 인터페이스는 XYZ 값만 지원하므로 XYZ와 LAB 간에 매핑해야 할 수도 있습니다. 이것은 잘 알려진 변환입니다. 이 모델은 7.9 및 7.10 섹션의 문서 2.2.02 "기준 디바이스 모델"에 설명되어 있습니다.
디바이스의 영역이 PCS의 영역보다 큰 경우 일부 영역 매핑을 수행해야 할 수 있습니다. 이 목적을 위해 기준 GMM을 사용할 수 있습니다. 제대로 만들어진 ICC 프로필에는 상대 색, 지각 및 채도 의도에 대한 조회 테이블이 있지만 모두 내부적으로 동일한 LUT를 가리킬 수 있습니다.
A T o B L U T.Diagram that shows the creation of an A T o B L U T.만들기를 보여 주는다이어그램
그림 5: AToB LUT 만들기
이 프로세스는 그림 5에 설명되어 있습니다. 먼저 디바이스 모델은 DM 프로필의 데이터에서 초기화됩니다. 그런 다음 다음과 같이 디바이스 영역 경계를 생성합니다. 디바이스 모델에서 데이터 샘플링은 디바이스 모델을 통해 실행되어 색인 데이터를 가져옵니다. 색상 메트릭 데이터는 CAM을 통해 실행되어 모양 데이터를 만듭니다. 모양 데이터는 디바이스 영역 경계를 만드는 데 사용됩니다.
다음으로 참조 PCS 측정 프로필의 데이터를 사용하여 PCS에 대한 영역 경계를 만듭니다.
방금 만든 두 가지 영역 경계를 사용하여 GMM을 초기화합니다. 그런 다음, 디바이스 모델, GMM 및 PCS 디바이스 모델을 사용하여 변환을 만듭니다. 변환을 통해 디바이스 공간 샘플링을 실행하여 AToB LUT를 만듭니다.
P C S 공간의 샘플링을 사용하여 A T o B L U T를 만드는 방법을 보여 주는
그림 6: BToA LUT 만들기
그림 6에서는 BToA LUT를 만드는 방법을 보여 줍니다. 이는 원본 및 대상의 역할이 교환된 AToB LUT를 만드는 것과 거의 동일합니다. 또한 LUT를 만들려면 전체 PCS 영역을 샘플링해야 합니다.
CAM (WCS의 CIECAM02)이 프로세스에 관여하기 때문에 미디어 화이트 포인트와 PCS 화이트 포인트 (ICC가 D50로 위임) 사이의 색 적응은 CAM에 의해 투명하게 적용됩니다.
HDR 가상 RGB 디바이스
HDR 가상 RGB 디바이스에 대한 프로필을 생성할 때는 특별히 고려해야 합니다. 즉, 색인 값이 0.0보다 작거나 1.0보다 클 수 있는 디바이스입니다. ATOB LUT 생성 시 더 큰 1D 입력 LUT 집합이 빌드됩니다. 색인 값은 0 범위로 조정되고 오프셋됩니다. WCS 프로필의 최소 및 최대 색인 값을 사용하는 1입니다.
HDR 디바이스의 색인 공간은 완전히 채워질 가능성이 없으므로 태그에 대한 3차원 LUT에도 특별 지원이 제공됩니다. 채우기가 드문 지역에서 색을 처리하기 위해 색을 다시 코딩하여 0.0 및 1.0을 초과하는 추정을 달성할 수 있습니다. 사용되는 범위는 -1.입니다. +4.
3차원 LUT에 적용된 크기 조정으로 인해 1D 출력 LUT 집합이 빌드되어 결과를 다시 범위 0에 매핑합니다. 1.
둘 이상의 PCS
ICC는 하나의 PCS가 CMS의 의도 된 모든 사용을 충족하기에 충분히 유연하지 않은 것으로 나타났습니다. 프로필 사양의 버전 4에서 ICC는 실제로 두 개의 PCS 인코딩이 있음을 명확히했습니다. 하나는 색인 의도에 사용됩니다. 다른 하나는 지각 의도에 사용됩니다. (채도 의도에 대해 PCS가 지정되지 않았습니다. ICC는 이 부분을 모호하게 남겼습니다.) 색 인식 PCS에는 최소 및 최대 가벼움이 지정되어 있지만 크로마 및 색조 값의 범위는 약 ± 127입니다. 이 PCS는 사각형 프리즘처럼 보입니다. 앞에서 설명한 것처럼 지각 PCS 볼륨은 잉크젯 프린터의 영역과 유사합니다.
두 ICC PCS에는 두 개의 서로 다른 디지털 인코딩도 있습니다. 지각 PCS에서 0 값은 0의 가벼움을 나타냅니다. 색 인식 PCS에서 값 0은 0보다 큰 PCS의 최소 가벼움을 나타냅니다. 각 PCS 인코딩에 대해 다른 디바이스 모델을 사용하여 이 문제를 해결할 수 있습니다.
영역 매핑
ICC 프로필에서 AToB LUT를 만들려면 디바이스 영역에서 적절한 PCS 공간에 매핑합니다. BToA LUT를 만들려면 PCS 공간에서 디바이스 영역으로 매핑합니다. AToB LUT에 대한 매핑은 측정 기반 CMS에서 사용되는 것과 매우 유사합니다. 지각 PCS의 경우 각기 다른 색에 대해 클리핑 또는 압축을 사용하여 디바이스의 타당한 영역을 지각 PCS 영역 경계에 매핑합니다. 색 인식 의도의 경우 가벼움을 잘라내야 할 수도 있지만 크로마 및 색조 값은 모두 색인 PCS 영역과 맞습니다.
BToA LUT에 대한 매핑은 약간 다릅니다. 색인 의도는 여전히 쉽습니다. PCS 값을 디바이스 영역으로 클립하기만 하면 됩니다. 그러나 ICC는 가능한 모든 PCS 값이 지각 PCS의 참조 영역 내에 있는 것이 아니라 일부 장치 값에 매핑되어야 합니다. 따라서 GMM이 참조 영역 외부에 있는 원본 색을 처리할 수 있는지 확인해야 합니다. 이러한 색상은 디바이스 영역 경계에 클리핑하여 처리할 수 있습니다.
ICC 프로필 클래스 매핑에 대한 기준 디바이스
기준 디바이스 유형 | ICC 프로필 클래스 | 말 |
---|---|---|
RGB 캡처 디바이스 | 입력 디바이스("scnr") | PCS는 CIELAB입니다. AToB0Tag는 상대적인 색인 의도를 가진 디바이스-PCS입니다. |
CRT, LCD 모니터 | 디스플레이 디바이스("mntr") | PCS는 CIEXYZ입니다. 모델 변환은 다음을 참조하세요. |
RGB 프로젝터 | 색 공간("spac") | PCS는 CIELAB입니다. |
RGB 및 CMYK 프린터 | 출력 디바이스("prtr") | PCS는 CIELAB입니다. |
RGB 가상 디바이스(비 HDR 사례) | 디스플레이 디바이스("mntr") | PCS는 CIEXYZ입니다. |
RGB 가상 디바이스(HDR 사례) | 색 공간("spac") | PCS는 CIELAB입니다. |
모니터 프로필의 변환에는 LUT 빌드가 포함되지 않고 행렬 또는 TRC 모델 빌드로 구성됩니다. ICC에서 사용되는 모델은 "검정 보정" 용어가 누락되었다는 점에서 WCS CRT 또는 LCD 모델링에 사용된 모델과 약간 다릅니다. 특히
WCS 모델:
ICC 모델:
WCS 모델에서 ICC 모델로의 변환은 다음과 같이 수행됩니다.
새 곡선 정의:
이러한 곡선은 1에서 1로 매핑되지 않으므로 톤 재현 곡선이 아닙니다. 정규화는 이를 달성합니다. ICC 모델의 최종 정의는 다음과 같습니다.
비 HDR RGB 가상 디바이스의 경우 공간 효율성을 위해 디스플레이 ICC 프로필도 생성합니다. 이 경우, 삼중자 행렬 M ICC 위의 모델 변환 없이 WCS 프로필의 주체에서 직접 얻을 수 있다. 하나의 최종, 하지만 중요 한, 참고는이 tristimulus 매트릭스는 PCS의 ICC 사양을 준수 하기 위해 D50에 색으로 조정 해야 합니다. 즉, ICC 프로필에서 인코딩할 행렬의 각 행에 있는 항목은 각각 96.42, 100 및 82.49로 합산되어야 합니다. 현재 구현에서, 색채 적응은 CAM02에서 사용되는 색채 적응 변환이기도 한 CAT02에 의해 수행됩니다.
흑인 보존 및 흑인 세대
검은 색 보존의 구현은 검은 색 채널을 지원하는 장치에서 검은 색 채널의 생성과 함께 연결됩니다. 이를 위해 각 원본 색에 대한 정보를 수집하여 검정 채널을 지원하는 디바이스 모델이 출력에서 검은색 채널을 설정하는 가장 좋은 방법을 결정할 수 있도록 합니다. 검은색 유지는 한 검은색 채널 디바이스를 다른 디바이스로 변환하는 색 변환과 관련이 있지만, 검은색 세대는 검은색 채널 대상 디바이스와 관련된 모든 변환에 대해 구현됩니다.
검은색 채널 정보는 BlackInformation라는 데이터 구조에 기록됩니다. BlackInformation 구조체에는 색에 검은색 색인만 포함되는지 여부를 나타내는 부울과 검정 두께라고 하는 "검정"의 정도를 나타내는 숫자 값이 포함되어 있습니다. 검은색 채널을 지원하는 원본 디바이스의 경우 검정 두께는 원본 색에서 검은색 색의 백분율입니다. 검은색 채널이 포함되지 않은 원본 디바이스의 경우 검정 두께는 다른 색과 모양 값을 사용하여 계산됩니다. "색 순도"라는 값은 최대 색인 값과 최소 색인 값의 차이를 최대 색인 값으로 나누어 계산합니다. "상대 가벼움"이라는 값은 대상 디바이스에 대한 색의 가벼움과 최소 가벼움 사이의 차이를 대상 디바이스의 최소 및 최대 가벼움 차이로 나누어 계산합니다. 원본 디바이스가 가산 디바이스(모니터 또는 프로젝터)인 경우 검정 두께는 상대적 가벼움을 곱한 색 순도를 뺀 1.0으로 결정됩니다. 예를 들어 원본 디바이스가 RGB 모니터인 경우 각 색에 대한 R, G 및 B의 최대값과 최소값이 계산되고 검정 두께는 수식에 의해 결정됩니다.
BW = (1.0 – (max(R,G,B) – min(R,G,B)) / max(R, G, B)) * 상대 가벼움
원본 디바이스가 CMY 프린터와 같은 빼기 착색을 지원하는 경우 이전 수식에서 사용하기 전에 개별 색인은 "보수"(1.0에서 빼기)여야 합니다. 따라서 CMY 프린터의 경우 R = 1.0 – C, G = 1.0 – M 및 B = 1.0 – Y입니다.
색 변환에서 처리되는 각 색에 대한 검은색 정보는 색 변환 프로세스 중에 결정됩니다. 검은색 전용 정보는 검은색 보존이 지정된 경우에만 결정됩니다. 대상 디바이스 모델이 검은색 색을 지원하는지 흑중량은 항상 결정됩니다. 검은색 정보는 결과 LUT를 사용하는 ColorimetricToDeviceColorsWithBlack 메서드를 통해 대상 디바이스 모델에 전달됩니다.
색 변환 최적화로 인해 위의 프로세스는 TranslateColors 메서드를 실행하는 동안이 아니라 최적화된 변환 LUT를 만드는 동안에만 발생합니다.
3개 이상의 원본 채널이 있는 변환에 대한 최적화
최적화된 변환의 크기는 원본 디바이스의 색 채널 수, 각 원본 색 채널에 대한 테이블의 단계 수 및 출력 디바이스의 색 채널 수와 같은 여러 요인에 따라 결정됩니다. 변환 테이블 크기를 결정하는 수식은 다음과 같습니다.
크기 = 채널당 단계 수 source\ device(Number\ of\ channels\ in\ source\ device) 출력 디바이스의 채널 수 x
보듯이 테이블의 크기는 원본 디바이스의 채널 수에 따라 기하급수적으로 증가합니다. 많은 원본 디바이스는 세 가지 색 채널(예: 빨강, 녹색 및 파랑)을 지원합니다. 그러나 원본 디바이스가 CMYK와 같은 4개의 채널을 지원하는 경우 테이블의 크기와 테이블을 생성하는 데 필요한 시간은 단계 수의 요소만큼 증가합니다. 변환이 "즉석에서" 생성되는 측정 기반 CMS에서는 이번에는 허용되지 않을 수 있습니다.
색 변환 테이블을 생성하는 데 필요한 시간을 줄이기 위해 두 가지 사실을 활용할 수 있습니다. 먼저 원본 디바이스가 세 개 이상의 색 채널을 지원할 수 있지만 중간 디바이스 독립적 색 공간(CIECAM02 Ja C b C)에는 세 개의 색 채널만 있습니다. 둘째, 처리에서 가장 시간이 많이 걸리는 부분은 디바이스 모델링(디바이스 색 좌표에서 tristimulus 값으로 변환)이 아니라 영역 매핑입니다. 이러한 사실을 사용하여 영역 매핑 단계를 통해 디바이스 독립적 색 공간의 색을 변환하고 마지막으로 출력 디바이스 색 모델을 통해 색을 변환하는 예비 색 변환 테이블을 생성할 수 있습니다. 이 테이블의 생성은 3차원입니다. 그런 다음 원본 색 조합을 중간 디바이스 독립적 공간으로 변환하여 4차원 최종 색 변환 테이블을 구성한 다음, 예비 색 변환 테이블을 사용하여 출력 디바이스 색 공간으로 변환을 완료합니다. 따라서 컴퓨팅(조회 테이블의 단계 수) 개수\\ 채널 영역 매핑 계산을 중간 테이블 영역 매핑 계산의 단계 수로 줄입니다. 디바이스 모델링 및 3차원 테이블 조회의 계산을 (조회 테이블) 개수\ 채널의 단계 수를 수행해야 하지만 이는 여전히 원래 계산보다 훨씬 빠릅니다.
원본 디바이스 모델과 색 변환의 다른 구성 요소 간에 전달할 정보가 필요 없는 경우 이전 프로세스가 제대로 작동합니다. 그러나 출력 디바이스와 원본 디바이스가 모두 검은색 색을 지원하고 원본 검정 색이 출력 검정 색을 결정하는 데 사용되는 경우 프로세스는 원본 검정 정보를 제대로 전달하지 못합니다. 다른 프로세스는 영역 매핑 단계를 통해서만 디바이스 독립적 색 공간의 색을 변환하는 예비 색 변환 테이블을 생성하는 것입니다. 그런 다음, 다음 단계를 사용하여 차원 4개의 최종 색 변환 테이블을 생성합니다. a) 원본 색 조합을 중간 디바이스 독립적 공간으로 변환하고, b) 실제 영역 매핑 프로세스를 적용하는 대신 예비 색 테이블에서 보간하여 영역 매핑 단계를 수행하고, c) 영역 매핑 단계의 결과 값과 원본 블랙 채널 정보를 사용하여 출력 디바이스 모델을 사용하여 출력 디바이스 색인을 계산합니다. 이 프로세스는 검은색 채널이 없더라도 원본 및 출력 디바이스 모델 간에 전송되는 정보가 있는 경우에도 사용할 수 있습니다. 예를 들어 두 모듈이 모듈 간의 데이터 교환을 허용하는 플러그 인 아키텍처로 구현되는 경우입니다.
위의 두 프로세스를 사용하여 4차원 색 변환 테이블을 생성하는 데 필요한 시간을 효과적으로 개선할 수 있습니다.
CheckGamut
ICM은 CreateTransform을 호출하고 createMultiProfileTransform을 플래그 값의 단어를, 그 중 하나는 ENABLE_GAMUT_CHECKING. 이 플래그가 설정되면 CITE는 변환을 다르게 만들어야 합니다. 초기 단계는 동일합니다. 원본 및 대상 CAM을 초기화한 다음 원본 및 대상 영역 경계 설명자를 초기화해야 합니다. 지정된 의도에 관계없이 CheckGamut GMM을 사용해야 합니다. CheckGamut GMM은 원본 및 대상 디바이스 모델 및 영역 경계 설명자를 사용하여 초기화해야 합니다. 그러나 변환은 원본 디바이스 모델, 원본 CAM, 중간 GMM 및 CheckGamut GMM으로 구성된 잘린 변환을 만들어야 합니다. 이렇게 하면 CheckGamut CMM에서 출력되는 델타 J, 델타 C 및 델타 h 값이 최종 결과 값이 됩니다.
CheckGamut의 의미는 변환에 디바이스 프로필이 두 개뿐인 경우 분명합니다. 두 개 이상의 디바이스 프로필과 두 개 이상의 GMM이 있는 경우 CheckGamut은 첫 번째 디바이스 모델을 통해 변환된 색과 마지막 GMM을 제외한 모든 색이 대상 디바이스의 영역에 속하는지 여부를 보고합니다.
관련 항목