WCS 변환 생성 알고리즘
변환 만들기
색 변환이 작동하는 방식을 제대로 설명하려면 ICM 2.0과 CTE 내부를 통해 전체 처리 경로를 설명하는 것이 유용합니다. ICM 2.0 CreateColorTransformW 함수는 애플리케이션이 색 관리를 수행하는 데 사용할 수 있는 색 변환을 만듭니다. 이 함수는 LOGCOLORSPACE 및 의도 입력에서 색 컨텍스트를 만듭니다. 의도는 기준 ICC 영역 매핑 알고리즘 상관 관계에 매핑됩니다. 그런 다음, 함수는 일관된 색 처리를 위해 ICM 2.0 함수 CreateMultiProfileTransform 을 호출합니다. 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 프린터의 인쇄를 에뮬레이트하는 교정 메커니즘을 가능하게 합니다. 마찬가지로, 하이파이 프린터에도 동일하게 적용됩니다. CMYKOG에서 RGB로 변환하면 모니터에서 CMYKOG 프린터를 교정할 수 있습니다.
이러한 색 변환을 구현하는 기존의 방법은 균일한 LUT를 사용하는 것입니다. 예를 들어 CMYKOG 프린터에 대한 ICC 프로필에서 ICC 사양은 CMYKOG에서 ICC 프로필 연결 공간(CIELAB 또는 CIEXYZ)으로 가는 정방향 모델의 CMYKOG 디바이스 공간에서 균일 샘플링을 나타내는 균일한 LUT를 저장하는 A2B1 태그를 의무화합니다. ICC 디바이스 링크 프로필을 사용하면 CMYKOG 디바이스 공간에서 CMYKOG 공간에서 균일하게 샘플링된 LUT 형식으로 CMYKOG 디바이스 공간에서 디바이스 공간을 포함한 모든 색 공간으로 직접 변환할 수 있습니다. 단색 디바이스(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:
모든 xjs 가 [0, 1] 범위에 있어야 하는 경우 는 1 이상이어야 하는 i 번째 채널 샘플링의 단계 수이며 는 1이어야 합니다. 반면에 0일 필요는 없습니다.
다음 두 가지 특수한 LUT 사례만 정의됩니다.
닫힌 LUT: 각 Samp*i*에 대해 고 위 추가 요구 사항이 있는 LUT입니다. 균일하게 닫힌 LUT는 각 채널에 대해 동일한 하며 노드의 간격은 0에서 1 사이로 균일하게 지정되는 닫힌 LUT입니다.
LUT 열기: 각 Samp i에 대해 추가 요구 사항이 있는 LUT입니다.
목표는 단위 큐브 [0, 1] n 을 닫힌 LUT 컬렉션으로 계층화하고 LUT를 열면 전체 컬렉션이 단위 큐브를 포함하도록 하는 것입니다. 개념적으로 이러한 "LUT 계층"을 차원별로 구성하여 최상위 수준에서 구성하는 것이 더 간단합니다.
여기서 는 "k 차원 지층 컬렉션"입니다. 지층 차원은 0이 아닌 3부터 시작합니다. 즉, 3색 조합의 보간은 너무 많은 메모리 요구 사항 없이 처리할 수 있기 때문입니다.
LUT 계층에 대한 설명
이 구현에서는 다음을 수행합니다.
는 3개의 입력이 있는 닫힌 LUT로 구성되며, n 색으로 선택한 3가지 색의 가능한 모든 조합에서 하나씩 구성됩니다.
는 CMYK 조합(또는 처음 4가지 색인)에 대해 하나의 닫힌 LUT로 구성되며 값으로 구성됩니다. 다른 모든 4색 조합에 대해 열린 LUT입니다. CMYK 조합을 노래함으로써 중요한 조합임을 인정합니다.
, 표시는 로 구성됩니다. 열려 있는 LUT는 n 색의 합계에서 k 색을 선택할 수 있는 각 조합에 대해 하나씩 구성됩니다.
LUT의 크기를 지정하는 데 남아 있습니다. 열린 LUT와 닫힌 LUT의 주요 차이점은 열린 LUT가 겹치지 않고 닫힌 LUT가 경계 면에서 겹칠 수 있다는 것입니다. 개방형 LUT의 1차원 샘플링에 0이 포함되어 있지 않다는 사실은 기본적으로 열린 LUT에 경계 면의 절반이 누락되어 이름이 "열기"인 것을 의미합니다. 두 LUT가 겹치지 않으면 각 채널에서 다른 수의 단계 또는 노드 위치를 사용할 수 있습니다. 두 LUT가 겹치는 경우에도 마찬가지입니다. 이 경우 단계 수 또는 노드 위치가 다른 경우 두 LUT의 교집합에 있는 지점은 보간에 사용되는 LUT에 따라 다른 보간 값을 받습니다. 이 문제에 대한 간단한 해결 방법은 두 LUT가 겹칠 때마다 동일한 수의 단계로 균일한 샘플링을 사용하는 것입니다. 다시 말하면,
모든 닫힌 LUT(이 구현의 모든 3색 LUT 및 CMYK LUT)는 균일해야 하며 동일한 수의 단계가 있어야 합니다.
다음 두 알고리즘을 사용하여 닫힌 LUT에 대한 d 단계 수와 열린 LUT에 대한 단계 수를 결정할 수 있습니다.
알고리즘 #1
이 알고리즘에는 외부 입력이 필요하지 않습니다.
닫힌 모든 LUT는 d 개수의 단계로 균일합니다.
k 차원의 열려 있는 모든 LUT는 각 입력 채널에서 단계 수가 동일하며 노드 간격이 동일하게 지정됩니다. 즉, 각 경우 입니다.
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 i 에는 1.0이어야 하는 1점만 있습니다. 다음 i로 이동합니다. 그렇지 않으면 3단계로 계속 진행합니다.
3단계: 채널에서 필터링된 샘플을 오름차순으로 정렬합니다.
4단계: 노드를 사용하여 "미정" 샘플링 그리드 정의
여기서
5단계: 미정 그리드를 정규화하여 엄격한 단조도를 준수하고 1.0으로 끝나는지 확인합니다. 배열이 이미 정렬되어 있기 때문에 미정 눈금의 노드는 이미 음조가 감소하지 않습니다. 그러나 인접 노드는 동일할 수 있습니다. 필요한 경우 동일한 노드를 제거하여 이 문제를 해결할 수 있습니다. 마지막으로, 이 프로시저 후에 끝점이 1.0보다 작은 경우 1.0으로 바꿉다.
5단계는 LUT 계층이 각 채널에서 다른 수의 단계를 가질 수 있는 이유입니다. 정규화 후에 채널의 단계 수가 보다 적을 수 있습니다.
보간
LUT 계층을 열고 닫힌 LUT 계층을 사용하여 단위 큐브의 계층화를 생성할 수 있습니다. 이 "스파스 LUT 구조체"를 사용하여 보간을 수행하려면 다음 단계를 수행합니다. 지정된 입력 디바이스 값
1단계: "활성" 채널 수를 결정합니다. 0이 아닌 채널의 수입니다. 그러면 포함하는 계층을 검색할 strata 차원 k 가 결정됩니다. 더 정확하게 말하자면, 활성 채널 수가 3 경우 strata 차원은 3입니다. 그렇지 않으면 strata 차원은 활성 채널 수와 동일합니다.
2단계: 내에서 포함하는 계층을 검색합니다. 계층에 해당하는 모든 채널에 0이 아닌 값이 있고 다른 모든 채널이 0이면 디바이스 값이 열린 계층에 포함됩니다. 계층으로 표현되지 않는 모든 채널이 0이면 디바이스 값이 닫힌 계층에 포함됩니다. 포함된 계층을 찾을 수 없는 경우 오류 조건이 있습니다. 취소하고 실패를 보고합니다. 포함된 계층이 발견되면 다음 단계로 진행합니다.
3단계: 포함된 계층이 닫힌 경우 알려진 보간 알고리즘을 통해 계층 내의 보간을 수행할 수 있습니다. 이 구현에서 알고리즘의 선택은 테트라드랄 보간입니다. 포함된 계층이 열려 있고 디바이스 값이 계층 내에 엄격하게 있는 경우, 즉,
i 번째 채널의 첫 번째 노드
여기서 i 는 계층에 대한 채널 인덱스인 다음, 테트라에드랄 보간과 같은 표준 보간 알고리즘이 작동합니다.
일부 i에 대해 i번째 채널의 첫 번째 노드하면 디바이스 값은 계층과 하위 차원 하위 영역 사이의 "간격"에 속합니다. 이 MOI는 보간 알고리즘과 관련이 없으므로 기본 설정 알고리즘은 다음과 같은 transfinite 보간이지만 모든 보간 알고리즘을 사용하여 이 "간격" 내에서 보간할 수 있습니다.
보간 모듈의 아키텍처는 그림 1의 두 부분에 설명되어 있습니다.
그림 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으로 표시될 수 있는 보간은 S의 모든 x에 대해 Interp(x) = BC(x)를 충족해야 합니다.
단위 큐브의 보간 표준 시나리오에서 S는 큐브의 2n 꼭짓점인 불연속 지점 집합입니다.
이제 경계 조건을 일반화하여 앞에서 설명한 문제를 해결하고 단위 큐브 내에서 새 보간 알고리즘을 제공할 수 있습니다. 개별 경계 지점만 허용하는 대신 큐브의 전체 경계 면에 경계 조건을 적용할 수 있습니다. 정확한 가정은 다음과 같습니다.
(a) 점 vn =(1,1,...,1)은 특별하며 불연속 경계 조건만 허용됩니다. 즉, n 경계 면 xi=1(i=1,...,n)에 연속 경계 조건을 적용할 수 없습니다.
(b) 나머지 n개의 경계 면 각각 xi=0(i=1,...,n)에 대해 두 얼굴이 교차하는 경우 얼굴의 경계 조건이 교차하는 경우 경계 조건이 교차하는 호환성 조건과 함께 전체 얼굴에 경계 조건을 적용할 수 있습니다.
(c) 경계 조건이 있는 얼굴에 포함되지 않은 모든 꼭짓점은 개별(불연속) 경계 조건을 갖습니다.
불연속 경계 조건을 유한 데이터로 참조하고 연속 경계 조건을 유한 데이터 및 트랜스파인트 데이터에 대한 보간을 논의하는 데 있는 transfinite 데이터로 참조할 수 있습니다.
먼저, 문제의 이 특정 제형에 대한 표기법을 설정하는 데 도움이 되는 표준 테트라데랄 보간(예: 사카모토 특허에 사용됨)을 검토합니다. 단위 큐브 [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)에 대해 유한 지점을 보간하는 표준 시나리오에서는 먼저 해당 순열이 σ 있는 테트라데드론을 결정합니다.
여기서 i=1, ..., n 및 e1의 경우 en은 표준 기본 벡터입니다. 일반화로 이동하기 전에 v0, v1, ..., vn은 테트라에드론의 꼭짓점이고 는 "barycentric 좌표"입니다.
경계 면에 있는 BC의 일반적인 경우 바리센트릭 프로젝션의 개념을 사용할 수 있습니다. 이전과 마찬가지로 지정된 입력 지점(x1, ..., xn)의 경우 먼저 해당 순열이 σ 있는 테트라데론을 결정합니다. 그런 다음, 다음과 같이 일련의 바리센트릭 프로젝션을 수행합니다. 첫 번째 프로젝션 을 표시합니다. 를 평면에 보냅니다. X가 않으면 이 경우 변경되지 않습니다. 지도 BProj의 정확한 정의는 다음과 같이 정의됩니다.
with = 1, 2, ..., n에 대한 수식을 표시합니다.
경우 BC가 vn에서 가정(a)으로 정의되므로 중지할 수 있습니다. 경우 σ(1)th 구성 요소가 전멸된 것이 분명합니다. 즉, 경계 면 중 하나에 있습니다. BC가 정의된 얼굴에 있거나, 이 경우 중지할 수 있는 얼굴에 있거나, 다른 바리센트릭 프로젝션을 수행하면 여기서 X이 표시되면 BC가 정의된 얼굴에 있으면 중지할 수 있습니다. 그렇지 않으면 다른 프로젝션 모든 프로젝션이 하나의 구성 요소를 전멸하기 때문에 유효 차원이 감소하므로 프로세스가 결국 중지되어야 한다는 것을 알 수 있습니다. 최악의 경우 큐브의 꼭짓점인 차원 0까지 n 프로젝션을 수행합니다. 즉, 가정(c)에 따라 BC가 정의됨을 알 수 있습니다.
를 사용하여 K 프로젝션이 수행되었다고 가정합니다.
x(0)= x, 입력 지점 및 BC는 x(k)로 정의됩니다. 그런 다음, 일련의 출력 벡터를 정의하여 프로젝션을 해제합니다.
여기서 마지막으로 답을 얻습니다.
작업 예제
그림 2: 작업 예제
그림 2에 표시된 상황을 고려합니다. 여기서 n = 3, m = 1, 다음 NIC가 있습니다.
(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>과 연결됩니다.
첫 번째 프로젝션:
2차 프로젝션:
세 번째 프로젝션: x3=0 얼굴에 있는 합니다. 역방향 대체는 다음을 제공합니다
마지막 대답합니다.
애플리케이션
(a) 순차 테트라에드랄 보간
그림 3: 순차 테트라에드랄 보간
그림 3을 참조하세요. 호환되지 않는 그리드가 적용된 두 평면을 보간하려면 그림에 표시된 지정된 지점 P를 묶는 셀을 고려합니다. 셀의 "위쪽" 꼭짓점은 위쪽 평면의 그리드에서 직접 가져옵니다. 아래쪽 면의 꼭짓점은 아래쪽 평면의 그리드와 호환되지 않으므로 전체 얼굴은 아래쪽 평면의 그리드에서 보간으로 얻은 값이 있는 BC를 갖는 것으로 처리됩니다. 그런 다음 이 설정이 위의 가정(a), (b) 및 (c)를 충족하고 보간 알고리즘을 적용할 수 있음이 분명합니다.
또한 알고리즘이 보간 문제의 차원을 1로 줄인 것도 분명합니다. 결과는 위쪽 눈금의 꼭짓점에서 값의 선형 조합이고 차원이 1보다 작은 아래쪽 평면의 보간이기 때문입니다. 하위 평면에 유사한 샌드위치 평면 구성이 있는 경우 해당 평면에 프로시저를 적용하여 차원을 1로 줄일 수 있습니다. 이 절차는 차원 0에 도달할 때까지 계속할 수 있습니다. 이 투영 및 보간 계단식은 "순차 테트라에드랄 보간"이라고 할 수 있습니다.
(b) 간격 보간
그림 4: 간격 보간
이것은 양수 사분면 안에 엄격하게 앉아있는 큐브에 부과되는 그리드입니다. 큐브 자체에는 그리드가 있으며 각 좌표 평면에는 반드시 호환되지 않는 그리드가 있습니다. 큐브와 좌표 평면 사이의 "간격"에는 "L자형"이고 표준 기술에 따라 적용할 수 없는 단면이 있습니다. 그러나 여기에 도입된 기술을 사용하면 이 간격을 커버하는 셀을 쉽게 소개할 수 있습니다. 그림 4에서는 이러한 중 하나를 보여 줍니다. 좌표 평면의 그리드는 셀의 모든 아래쪽 면에 필요한 BC를 제공하는 보간을 지원하며, 나머지 꼭짓점은 큐브의 아래쪽 모서리에서 BC를 제공합니다.
구현에 대한 최종 참고 사항
실제 애플리케이션에서는 알고리즘의 기본 설정인 "단위 큐브"가 더 큰 위도에서 추출되고 꼭짓점의 값에 비용이 많이 드는 계산이 필요할 수 있습니다. 반면에 테트라에드랄 보간에는 단위 큐브의 모든 꼭짓점의 하위 집합인 tetrahedron의 꼭짓점에서 값만 필요하다는 것도 분명합니다. 따라서 "지연된 평가"라고 할 수 있는 것을 구현하는 것이 더 효율적입니다. 이전 알고리즘의 소프트웨어 구현에서는 일반적으로 단위 큐브와 해당 꼭짓점의 값을 입력으로 사용하는 서브루틴을 사용하는 것이 일반적입니다. 지연된 평가는 꼭짓점에서 값을 전달하는 대신 실제로 평가를 수행하지 않고 꼭짓점 값을 평가하는 데 필요한 정보가 전달됨을 의미합니다. 서브루틴 내에서 이러한 값의 실제 평가는 묶는 테트라에드론이 결정된 후에 묶는 테트라에드론에 속하는 꼭짓점에서만 수행됩니다.
높은 동적 범위 가상 RGB 원본 디바이스에서 사용할 조회 테이블
가상 RGB 디바이스로 모델링된 원본 디바이스를 사용하여 변환을 생성하는 경우 원본 색 지정 값이 음수이거나 unity(1.0)보다 클 수 있습니다. 이 경우 원본 디바이스를 HDR(높은 동적 범위)이라고 합니다. 이 경우 특별히 고려됩니다.
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에서 사용되는 색 관리 프로세스를 활용할 수 있습니다. colorimetry에서 PCS 인코딩으로 디바이스 모델을 만드는 것은 간단합니다. 실제 색 인식 값과 PCS로 인코딩된 값 간에 매핑하기만 하면 됩니다. 디바이스 모델에 대한 CMS 인터페이스는 XYZ 값만 지원하므로 XYZ와 LAB 간에 매핑해야 할 수도 있습니다. 이것은 잘 알려진 변환입니다. 이 모델은 7.9 및 7.10 섹션의 문서 2.2.02 "기준 디바이스 모델"에 설명되어 있습니다.
디바이스의 영역이 PCS의 영역보다 큰 경우 일부 영역 매핑을 수행해야 할 수 있습니다. 이 용도로 기준 GMM을 사용할 수 있습니다. 제대로 만들어진 ICC 프로필에는 상대 색, 지각 및 채도 의도에 대한 조회 테이블이 있지만 모두 내부적으로 동일한 LUT를 가리킬 수 있습니다.
그림 5: AToB LUT 만들기
이 프로세스는 그림 5에 나와 있습니다. 먼저 디바이스 모델은 DM 프로필의 데이터에서 초기화됩니다. 그런 다음 다음과 같이 디바이스 영역 경계를 생성합니다. 디바이스 모델에서 데이터 샘플링은 디바이스 모델을 통해 실행되어 색상 메트릭 데이터를 가져옵니다. 색 메트릭 데이터는 CAM을 통해 실행되어 모양 데이터를 만듭니다. 모양 데이터는 디바이스 영역 경계를 만드는 데 사용됩니다.
다음으로 참조 PCS 측정 프로필의 데이터를 사용하여 PCS에 대한 영역 경계를 만듭니다.
방금 만든 두 영역 경계를 사용하여 GMM을 초기화합니다. 그런 다음, 디바이스 모델, GMM 및 PCS 디바이스 모델을 사용하여 변환을 만듭니다. 변환을 통해 디바이스 공간 샘플링을 실행하여 AToB LUT를 만듭니다.
그림 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 범위로 오프셋됩니다. 1 WCS 프로필의 최소 및 최대 색인 값을 사용합니다.
HDR 디바이스의 색 공간은 완전히 채워지지 않을 수 있으므로 태그에 대한 3차원 LUT에도 특별 지원이 제공됩니다. 채우기가 드문 지역에서 색을 처리하기 위해 색인은 0.0 및 1.0을 초과하는 추정을 달성할 수 있도록 다시 코딩됩니다. 사용되는 범위는 -1입니다. +4.
3D LUT에 적용된 크기 조정으로 인해 결과를 0 범위에 다시 매핑하도록 1D 출력 LUT 집합이 빌드됩니다. 1.
둘 이상의 PCS
ICC는 하나의 PCS가 CMS의 의도한 모든 사용을 충족하기에 충분히 유연하지 않다는 것을 발견했습니다. 프로필 사양 버전 4에서 ICC는 실제로 두 개의 PCS 인코딩이 있음을 분명히 했습니다. 하나는 색 인식 의도에 사용됩니다. 다른 가 지각 의도에 사용됩니다. (채도 의도에 대해 PCS가 지정되지 않았습니다. ICC는 이 부분을 모호하게 남겼습니다.) 색 인식 PCS에는 최소 및 최대 밝기가 지정되어 있지만, 크로마 및 색조 값 범위는 약 ± 127입니다. 이 PCS는 사각형 프리즘처럼 보입니다. 앞서 언급했듯이 지각 PCS 볼륨은 잉크젯 프린터의 영역과 유사합니다.
두 ICC PCS에는 두 개의 서로 다른 디지털 인코딩도 있습니다. 지각 PCS에서 값 0은 가벼움을 0으로 나타냅니다. 색 인식 PCS에서 0 값은 PCS의 최소 가벼움을 나타내며 0보다 큽니다. 각 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 프로필의 주 데이터베이스에서 직접 얻을 수 있습니다. 마지막이지만 중요한 것은 이 트리스티큘러스 매트릭스가 PCS의 ICC 사양을 준수하도록 D50에 색으로 조정되어야 한다는 것입니다. 즉, ICC 프로필에서 인코딩할 행렬의 각 행에 있는 항목은 각각 96.42, 100 및 82.49로 합산되어야 합니다. 현재 구현에서, 색 적응은 CAT02에 의해 수행됩니다, 이는 또한 CAM02에 사용되는 색 적응 변환입니다.
흑인 보존 및 흑인 세대
검은 색 보존의 구현은 검은 색 채널을 지원하는 장치에서 검은 색 채널의 생성과 함께 연결됩니다. 이를 위해 각 원본 색에 대한 정보를 수집하여 검은색 채널을 지원하는 디바이스 모델이 출력에서 검은색 채널을 설정하는 가장 좋은 방법을 결정할 수 있도록 합니다. 검은색 유지는 한 검은색 채널 디바이스를 다른 검은색 채널 장치로 변환하는 색 변환과 관련이 있지만, 검은색 채널 대상 디바이스와 관련된 모든 변환에 대해 검은색 생성이 구현됩니다.
검은색 채널 정보는 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에서 빼기"(1.0에서 빼기)여야 합니다. 따라서 CMY 프린터의 경우 R = 1.0 – C, G = 1.0 – M 및 B = 1.0 – Y입니다.
색 변환에서 처리되는 각 색에 대한 검은색 정보는 색 변환 프로세스 중에 결정됩니다. 검은색 전용 정보는 검은색 보존이 지정된 경우에만 결정됩니다. 대상 디바이스 모델이 검은색 색을 지원하는지 흑중량은 항상 결정됩니다. 검은색 정보는 결과 LUT를 사용하는 ColorimetricToDeviceColorsWithBlack 메서드를 통해 대상 디바이스 모델에 전달됩니다.
색 변환 최적화로 인해 위의 프로세스는 TranslateColors 메서드를 실행하는 동안이 아니라 최적화된 변환 LUT를 만드는 동안에만 발생합니다.
3개 이상의 원본 채널이 있는 변환에 대한 최적화
최적화된 변환의 크기는 원본 디바이스의 색 채널 수, 각 원본 색 채널에 대한 테이블의 단계 수 및 출력 디바이스의 색 채널 수와 같은 여러 요인에 따라 결정됩니다. 변환 테이블 크기를 결정하는 수식은 다음과 같습니다.
크기 = 채널 원본\ device(Number\ of\ channels\ in\ source\ device) x 출력 디바이스의 채널 수
보듯이 테이블의 크기는 원본 디바이스의 채널 수에 따라 기하급수적으로 증가합니다. 많은 원본 디바이스는 세 가지 색 채널(예: 빨강, 녹색 및 파랑)을 지원합니다. 그러나 원본 디바이스가 CMYK와 같은 4개의 채널을 지원하는 경우 테이블의 크기와 테이블을 구성하는 데 필요한 시간은 단계 수에 따라 증가합니다. 변환이 "즉석에서" 생성되는 측정 기반 CMS에서는 이번에는 허용되지 않을 수 있습니다.
색 변환 테이블을 생성하는 데 필요한 시간을 줄이기 위해 두 가지 팩트를 활용할 수 있습니다. 먼저 원본 디바이스가 세 개 이상의 색 채널을 지원할 수 있지만 중간 디바이스 독립적 색 공간(CIECAM02 Ja C b C )에는 세 개의 색 채널만 있습니다. 둘째, 처리에서 가장 시간이 많이 걸리는 부분은 디바이스 모델링(디바이스 색 좌표에서 tristimulus 값으로 변환)이 아니라 영역 매핑입니다. 이러한 팩트를 사용하여 영역 매핑 단계를 통해 디바이스 독립적 색 공간의 색을 변환하고 마지막으로 출력 디바이스 색 모델을 통해 색을 변환하는 예비 색 변환 테이블을 생성할 수 있습니다. 이 테이블의 생성은 3차원입니다. 그런 다음 원본 색 조합을 중간 디바이스 독립적 공간으로 변환하여 차원 4 최종 색 변환 테이블을 구성한 다음, 예비 색 변환 테이블을 사용하여 출력 디바이스 색 공간으로의 변환을 완료합니다. 따라서 컴퓨팅(조회 테이블의 단계 수) 개수\ \ 채널 영역 매핑 계산을 중간 테이블 영역 매핑 계산의 단계 수로 줄입니다. 디바이스 모델링 및 3차원 테이블 조회의 (조회 테이블) number\ of\ 채널 계산에서 여러 단계를 수행해야 하지만 여전히 원래 계산보다 훨씬 빠릅니다.
원본 디바이스 모델과 색 변환의 다른 구성 요소 간에 전달할 정보가 필요하지 않은 경우 이전 프로세스가 제대로 작동합니다. 그러나 출력 디바이스와 원본 디바이스가 모두 검은색 색을 지원하고 원본 검정 색이 출력 검정 색을 결정하는 데 사용되는 경우 프로세스는 원본 검은색 정보를 제대로 전달하지 못합니다. 또 다른 프로세스는 영역 매핑 단계를 통해서만 디바이스 독립적 색 공간의 색을 변환하는 예비 색 변환 테이블을 생성하는 것입니다. 그런 다음, 다음 단계를 사용하여 차원 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을 제외한 모든 색이 대상 디바이스의 영역에 속하는지 여부를 보고합니다.
관련 항목