2

나는 색 관리 코드를 쓰고 있는데, 나는 LUT (look up tables)을 다루고있다.LUT (룩업 테이블)을 뒤집기

필자는 색상 프로파일 LUT을 읽고 값을 변환 할 수 있지만 어떻게 역 연산을 수행 할 수 있습니까? 어쩌면 LUT의 'inverse'를 생성하는 좋은 알고리즘이 있습니까?

답변

0

예, 보통이라는 기능을 가정하여 조회 테이블을 효율적으로 (선형 시간) 으로 반전 할 수 있습니다. 조회 테이블이 두 개의 다른 키를 동일한 값으로 매핑하면 두 개의 다른 키에 매핑되는 값이 필요하기 때문에 테이블을 반전 할 직접적인 방법은 없습니다. 이걸로 괜찮 으면 괜찮아요. 왜 역방향지도를 만들려고하는지 의심 스러울 지 모르지만.

모든 값이 고유하다는 것을 알고 있으면 다음과 같이 역 참조 테이블을 작성할 수 있습니다. 먼저 값에서 키 (값이 작은 정수인 경우 해시 테이블 또는 균형 이진 트리 또는 원시 배열) 로의 매핑을 유지하는 데이터 구조를 만듭니다. 다음으로 조회 테이블에서 각 키/값 쌍을 반복 한 다음 매핑 값 → 키를 새 조회 테이블에 삽입합니다. 이는 선형 시간과 새 컨테이너에 값을 삽입하는 데 필요한 시간을 더한 시간에 수행 할 수 있습니다.

+0

입력 LUT는 1 대 1이므로 동일한 출력 값에 대한 여러 가지 솔루션이 있다는 것을 알고 있습니다. 하지만 어쩌면 내가 그들을 prefiltering 제거 할 수 있습니다. –

1

LUT가 주어진 경우 가장 간단한 방법은 지정된 색상 값에 가장 가까운 항목을 찾는 것입니다. 다양한 방법으로 계산을 가속화 할 수 있습니다. 예를 들어, LUT 항목에서 k-d 트리를 작성하여이를 사용하여 철저한 검사에 필요한 대부분의 비교를 제거 할 수 있습니다.

그러나 이미지의 매끄러운 영역이 한 항목에서 다음 항목으로 갑자기 이동하기 때문에 이렇게하면 "posterized"이미지가됩니다. 픽셀을 (준) 무작위 순서로 가져 와서 LUT에서 가장 잘 맞는 것을 선택하고 픽셀 값과 선택된 항목의 차이를 아직 선택되지 않은 근처의 픽셀로 밀어 넣으면이 문제를 피할 수 있습니다.

마지막으로 여러 가지 방법을 사용할 수 있지만 픽셀 단위의 간단한 작업보다 사용 가능한 LUT 항목을 일반적으로 더 잘 사용하는 디더링 효과가 발생합니다.