팔레트(컴퓨팅)

Palette (computing)
샘플 이미지
RGB공간을 중심으로 회전하는 이미지에서 사용되는 팔레트입니다.

컴퓨터 그래픽스에서 팔레트(color lookup table, CLUT)는 특정 공간의 색 재현 범위에서 선택한 색상에 참조할 수 있는 인덱스를 할당하는 대응 테이블입니다.이 기술은 인덱스를 통해 색상을 참조함으로써 해당 색 공간의 실제 색상을 기술하는 데 필요한 정보보다 적은 정보를 사용하는 것으로 처리 페이로드, 전송 대역폭, RAM 사용률 또는 영속 스토리지 등 데이터 사용량을 줄이는 것을 목적으로 한다.CLUT에 대한 참조로 색상이 표시되는 이미지를 인덱스된 색상 이미지라고 합니다.

묘사

2019년 현재 컴퓨팅에서 가장 일반적인 이미지 색공간은 픽셀당 8비트의 색심도를 가진 RGB 색상 모델입니다.이 기술을 사용하면 각 RGB 채널휘도 수준을 나타내기 위해 픽셀당 8비트가 사용되므로 각 픽셀의 색상을 완전히 나타내기 위해서는 24비트의 스토리지가 필요합니다.팔레트 사용의 목적은 가능한 각 색상이 색인에 할당되어 색상을 완전히 기술하는 데 필요한 정보보다 적은 정보를 사용하여 각 색상을 참조할 수 있다고 가정할 때 한 번에 처리할 수 있는 가능한 색상 집합을 줄임으로써(종종 적응적 방법을 사용하여) 이 저장 요건을 낮추는 것이다.일반적인 예는 GIF 파일 형식에서 일반적으로 사용되는 256색 팔레트로, 24비트 색공간 전체에서 이미지를 나타내기 위해 사용되는 256색을 선택하고 각각 8비트 색인이 할당됩니다.이렇게 하면 시스템이 RGB 색 공간에서 어떤 색도 재현할 수 있지만(256 색상의 제한이 있는 한), 픽셀당 스토리지 요건은 픽셀당 24비트에서8비트로 낮아집니다.

마스터 팔레트

2가지 색상에서 256가지 색상으로 확대되는 적응형 색상 팔레트입니다(애니메이션 보려면 클릭).

화면상의 모자이크내의 많은 다른 화상 섬네일을 나타내는 애플리케이션에서는, 표시되는 화상 섬네일의 모든 적응 팔레트를 동시에 하드웨어 컬러 레지스터에 로드할 수 없는 경우가 있습니다.해결책은 고유한 공통 마스터 팔레트 또는 유니버설 팔레트를 사용하는 것입니다.이러한 팔레트를 사용하면, 모든 종류의 화상을 적절한 정확도로 표시할 수 있습니다.

이는 마스터 팔레트가 "미니어로" 완전한 RGB공간을 구성하도록 색상을 선택하여 빨간색, 녹색 및 파란색 구성요소가 가질 수 있는 수준을 제한합니다.이러한 배열을 균일[1]팔레트라고 부르기도 합니다.보통 사람의 눈은 녹색이 많을수록 파란색이 적을수록 세 가지 원색에 대한 감성이 다르다.따라서 RGB 배열에서는 녹색 구성 요소에 더 많은 레벨을 할당하고 파란색 구성 요소에 더 적은 레벨을 할당함으로써 이 이점을 활용할 수 있습니다.

이렇게 구축된 마스터 팔레트는 최대 8R×8G×4B = 256가지 색상으로 채울 수 있지만, 프로그램이 특별한 용도로 사용할 수 있는 예약된 색상, 색 인덱스를 위한 공간을 팔레트에 남기지 않습니다.일반적으로 6R×6G×6B = 216( 컬러 케이스와 같이), 6R×8G×5B = 240 또는 6R×7G×6B = 252만 사용하는 것이 일반적이며, 이 경우 일부 색상이 예약될 여지가 있습니다.

그런 다음 이미지 썸네일(또는 다른 이종 이미지)의 모자이크를 로드할 때 프로그램은 모든 원래 인덱스된 색 픽셀을 마스터 팔레트에서 가장 근사한 색 픽셀로 매핑하고(이것을 하드웨어 컬러 레지스터에 덤프한 후), 비디오 버퍼에 결과를 기록합니다.다음은 240 RGB 배열된 마스터 팔레트와 16가지 중간 색조의 그레이를 사용하여 4개의 이미지 섬네일의 간단한 모자이크를 나타낸 예입니다.모든 이미지는 색 정밀도를 크게 저하시키지 않고 조합됩니다.

IndexedColorSample (Mosaic).png

적응 팔레트

색인화된 색상 기법을 사용할 경우, 실제 이미지는 적응 팔레트(때로는 적응 팔레트)를 사용하여 실제 이미지와 더 잘 일치하도록 표현됩니다. 이 팔레트에서는 색상이 원본 이미지에서 직접 선택되거나 양자화됩니다(가장 빈번한 색상을 선택하여).이렇게 하면, 한층 더 디더링을 실시하면, 색인이 들어간 칼라 이미지가 거의 원래의 것과 일치할 수 있습니다.

그러나 이로 인해 이미지 픽셀과 적응 팔레트 사이에 큰 의존성이 생깁니다.8비트 깊이 그래픽 디스플레이가 제한된 경우 이미지 표면 자체를 프레임 버퍼에 로드하기 전에 특정 이미지의 적응 팔레트를 컬러 하드웨어 레지스터에 로드해야 합니다.다른 적응형 팔레트를 사용하여 다른 이미지를 표시하려면 슬라이드 쇼에서처럼 하나씩 로드해야 합니다.다음은 4가지 인덱스 컬러 이미지의 샘플과 컬러 패치를 사용하여 각각의 적응 팔레트(대부분 호환되지 않음)를 표시합니다.

IndexedColorSample (Strawberries picked).png IndexedColorSample (Caerulea3 crop).png IndexedColorSample (Lapis.elephant.800pix.060203).png IndexedColorSample (Lemon).png

팔레트의 투명성

인덱스 컬러 화상의 단일 팔레트 엔트리를 투명한 색상으로 지정할 수 있어 간단한 비디오 오버레이를 실행할 수 있다.즉, 중복 화상의 일부가 배경을 가리고 나머지 부분은 그렇지 않도록 소정의 화상을 배경 위에 중첩한다.필름/TV 제목과 크레딧을 겹치는 것은 비디오 오버레이의 일반적인 응용 프로그램입니다.

중첩되는 화상에서(색인된 색상이 가정됨) 소정의 팔레트 엔트리가 투명한 색상의 역할을 한다.일반적으로 인덱스 번호 0이지만, 소프트웨어에 의해 오버레이가 실행되는 경우 다른 인덱스를 선택할 수 있습니다.설계 시 투명 색상 팔레트 항목은 임의(일반적으로 고유한) 색상에 할당됩니다.다음 예에서는 포인팅 디바이스의 일반적인 화살표 포인터가 주황색 배경 위에 설계되어 있기 때문에 주황색 영역은 투명 영역(왼쪽)을 나타냅니다.실행 시 중첩된 화상은 배경 화상 위에 배치되며, 화소 색인이 투명한 색이면 배경 화소가 유지되고 그렇지 않으면 대체되도록 혼합된다.

이 기술은 캐릭터, 글머리 기호 등의 일반적인 2-D 비디오 게임, 비디오 제목 지정 및 기타 이미지 믹싱 애플리케이션에 사용됩니다.

Commodore 64, MSXAmiga같은 일부 초기 컴퓨터는 하드웨어에 의한 스프라이트 및/또는 전체 화면 비디오 오버레이를 지원합니다.이 경우 트랜스페어런트 팔레트엔트리 번호는 하드웨어에 의해 정의되며 이전에는 0이었습니다.

GIF로 인덱싱된 일부 컬러 이미지 파일 형식은 기본적으로 특정 이미지에 사용되는 팔레트 항목 중 자유롭게 선택할 수 있는 투명 팔레트 항목 지정을 지원합니다.
BMP 파일 형식은 컬러 [2]테이블의 알파 채널 값 공간을 예약하지만 현재 이 공간은 투과성 데이터를 저장하기 위해 사용되지 않고 0으로 설정되어 있습니다.반면 PNG는 팔레트 엔트리에서 알파 채널을 지원하므로 팔레트 이미지에서 반투명성이 가능합니다.

트루컬러 이미지를 취급할 때 일부 비디오 믹싱 기기에서는 투명 색상으로 RGB 트리플렛(0,0,0,0)을 사용할 수 있습니다(빨간색, 녹색, 파란색 없음: 가장 어두운 검은 색조, 이 컨텍스트에서는 슈퍼블랙이라고도 함).디자인 시 매직핑크라고 불리는 것으로 대체됩니다.마찬가지로 일반적인 데스크톱 퍼블리싱 소프트웨어에서는 텍스트 단락이 이미지의 피사체 주위에 불규칙한 텍스트 배열을 위해 이미지의 경계 상자에 침입하도록 하기 위해 사진 및 일러스트에서 순수 흰색 RGB 트리플렛(255,255,255)을 제외한다고 가정할 수 있습니다.

Microsoft Paint나 Deluxe Paint와 같은 2-D 페인팅 프로그램 잘라내기, 복사, 붙여넣기 작업을 수행할 때 사용자가 지정한 배경색을 투명색으로 사용할 수 있습니다.

이미지 비트 마스크알파 채널은 (같은 목적으로 사용되기 때문에) 관련되지만 팔레트나 투명 색상을 전혀 사용하지 않는 기술이지만 오프 이미지에서는 바이너리 데이터 레이어가 추가되었습니다.

소프트웨어 팔레트

Microsoft Windows

Microsoft Windows 애플리케이션은 Win32 API의 특수 기능을 통해 4비트 또는8비트 인덱스 컬러 디스플레이 디바이스 팔레트를 관리합니다.Highcolor 디스플레이 모드와 Truecolor 디스플레이 모드에서의 팔레트 적용 여부는 의문입니다.이러한 API는 이른바 "시스템 팔레트"와 많은 "논리 팔레트"를 다룹니다.

"시스템 팔레트"는 컬러 디스플레이의 하드웨어 레지스터(주로 물리적 팔레트)의 RAM 복사본으로, 시스템의 고유한 공유 공통 리소스입니다.부팅 시 기본 시스템 팔레트(주로 대부분의 프로그램에서 충분히 작동하는 "마스터 팔레트")로 로드됩니다.

특정 응용 프로그램이 색칠된 그래픽 및/또는 이미지를 출력하려는 경우, 고유한 "논리 팔레트" 즉, 자체 색상 선택(최대 256개)을 설정할 수 있습니다.응용 프로그램이 화면에 표시하려고 하는 모든 그래픽 요소는 논리 팔레트의 색상을 사용한다고 가정합니다.모든 프로그램은 추가적인 간섭 없이 하나 이상의 논리 팔레트를 자유롭게 관리할 수 있습니다(미리).

출력이 효과적으로 이루어지기 전에 프로그램은 논리 팔레트를 인식해야 합니다.이 시스템은 "논리적인" 색상과 "물리적" 색상을 일치시키려고 합니다.원하는 색상이 시스템 팔레트에 이미 존재하는 경우 로직이 시스템 팔레트 인덱스에 내부적으로 매핑됩니다(거의 일치하지 않기 때문입니다).의도한 색상이 아직 존재하지 않는 경우 시스템은 내부 알고리즘을 적용하여 시스템 팔레트에서 가장 적게 사용되는 색상(일반적으로 배경의 다른 창에서 사용되는 색상)을 폐기하고 새로운 색으로 대체합니다.시스템 팔레트에는 색상을 사용할 수 있는 공간이 한정되어 있기 때문에 알고리즘은 유사한 색상을 함께 재매핑하려고 시도하며 항상 중복되는 색상을 생성하지 않습니다.

최종 결과는 동시에 화면에 색상을 표시하는 응용 프로그램의 수에 따라 달라집니다.포그라운드 창은 항상 선호되기 때문에 백그라운드 창은 손상에서 빠르게 다시 그릴 때까지 다양한 방식으로 작동할 수 있습니다.시스템 팔레트가 변경되면 시스템은 특정 이벤트를 트리거하여 모든 응용 프로그램에 알립니다.Win32 API 기능을 하나 사용하여 창을 빠르게 다시 그릴 수 있습니다.그러나 이는 프로그램 코드에서 명시적으로 수행되어야 합니다. 따라서 많은 프로그램이 이 이벤트를 처리하지 못하고 이러한 상황에서는 창이 손상됩니다.

응용 프로그램은 시스템 팔레트에 특정 색상(특정 순서에서도)을 로드하도록 강제하여 애니메이션용 색상 항목(특정 항목에서 물리적 팔레트의 빠른 색상 변경)을 표시함으로써 시스템을 "꼼수"로 만들 수 있습니다.그 후 시스템은 이러한 하드웨어 팔레트엔트리가 팔레트컬러 관리 알고리즘에 사용할 수 없게 된 것으로 간주합니다.최종 결과는 컬러 포싱 프로그램의 스킬과 다른 프로그램의 동작(이 문제는 일반적인 경우와 동일하지만) 및 운영 체제 자체의 동작에 따라 달라집니다.

「 」를 참조해 주세요.

메모들

레퍼런스

  • 훌리오 산체스와 마리아 P.광둥(2003년).PC 그래픽 핸드북CRC 프레스 ISBN0-8493-1678-2.
  • Microsoft 개발자 네트워크(MSDN)의 컬러 팔레트
  • MSDN(Microsoft Developer Network)의 비트맵 정보 구조에서 RGBQUAD 컬러 테이블 엔트리