컴퓨팅 팔레트

컴퓨터 그래픽에서 팔레트는 유한 색상 집합입니다. 팔레트는 소프트웨어 또는 하드웨어 제약 조건이있는 경우 이미지 정확도를 높이기 위해 최적화 할 수 있습니다.

술어
2 색에서 256 색으로 확장되는 적응 형 색상 표, 이미지 변경 방법을 보여줍니다 (클릭하여 애니메이션보기).
컨텍스트에 따라 팔레트라는 용어와 웹 팔레트 및 RGB 팔레트와 같은 관련 용어는 다소 다른 의미를 가질 수 있습니다. 다음은 컴퓨터 그래픽에서 팔레트에 대해 널리 사용되는 의미 중 일부입니다.

주어진 시스템이 생성하거나 관리 할 수있는 총 색상 수 (비디오 메모리 제한으로 인해 동시에 모두 표시 할 수 없음) :
풀 팔레트 : 예를 들어, 하이 컬러 디스플레이에는 16 비트 RGB 팔레트가 있다고합니다.

동시에 표시 할 수있는 색상의 제한된 선택 :
전체 화면 :
고정 팔레트 선택 : 하드웨어 어댑터가 적절하게 설정되면 주어진 디스플레이 어댑터가 고정 된 색상 선택을 제공 할 수 있습니다. 예를 들어, 표준 그래픽 모드 중 하나 인 CGA (Color Graphics Adapter)는 소위 팔레트 # 1 또는 팔레트 # 2를 표시하도록 설정할 수 있습니다 : 3 개의 고정 된 색상과 하나의 사용자 정의 배경색의 두 가지 조합 마다.
선택된 색상 또는 선택된 색상 :이 경우 일반적으로보다 넓은 범위의 명시 적으로 사용할 수있는 전체 팔레트의 색상 선택은 항상 소프트웨어에 의해 사용자 또는 프로그램에 의해 선택됩니다. 예를 들어, 표준 VGA 디스플레이 어댑터는 총 262,144 가지 색상 중에서 256 가지 색상의 팔레트를 제공한다고합니다.
기본 팔레트 또는 시스템 팔레트 : 주어진 선택한 색상이 일부 본문 또는 회사에서 공식적으로 표준화되었습니다. 예를 들어 인터넷 브라우저 또는 Microsoft Windows 기본 팔레트와 함께 사용할 수있는 잘 알려진 웹 안전 색상입니다.

개별 이미지 :
색상 맵 또는 색상 표 : 제한된 색상 선택은 지정된 색인 된 색상 이미지 파일 내에 저장됩니다. 예 : GIF.
이미지 팔레트 또는 이미지 색상 : 제한된 색상 선택은 이미지 파일이 색인 된 색상 픽셀 인코딩을 사용하지 않는 경우에도 주어진 디지털 이미지의 전체 색상 목록으로 간주됩니다.
이러한 동시 색상을 유지하는 데 사용할 수있는 기본 하드웨어 :
하드웨어 팔레트 또는 색상 표 (CLUT) : 색상 표를 표시하려면 선택한 색상 값을 디스플레이 하위 시스템의 색상 하드웨어 레지스터에로드해야합니다. 예를 들어 Commodore Amiga의 하드웨어 레지스터는 소스에 따라 색상 표와 CLUT로 알려져 있습니다.

GUI 팔레트
선택할 수있는 제한된 사용자 또는 시스템 색상 세트의 배열. 이 경우 표현 색상 팔레트 또는 사용자 색상 팔레트는 공통으로 사용됩니다. 이 사용법은 진정한 아티스트의 팔레트와 유사합니다.
도구 팔레트, 빠른 명령 또는 기호 액세스에 사용할 수있는 단추, 아이콘 또는 다른 GUI 컨트롤이있는 응용 프로그램 화면의 팔레트 창이라고하는 직사각형 영역. 사용자가 마우스 또는 이와 유사한 포인팅 장치를 통해 아무 곳이나 움직일 수 있다면이를 부동 팔레트라고합니다. 색상을 선택하는 팔레트도 부동 팔레트가 될 수 있습니다.

마스터 팔레트
응용 프로그램은 화면의 모자이크에 다양한 이미지 축소판을 표시 할 수 있습니다. 프로그램이 하드웨어 색상 레지스터에 동시에 표시되는 모든 이미지 축소판의 모든 적응 형 팔레트를로드 할 수 없음이 분명합니다. 해결책은 고유 한 공통 마스터 팔레트 또는 범용 팔레트를 사용하는 것인데, 모든 종류의 이미지를 적당한 정확도로 표시하는 데 사용할 수 있습니다.

이것은 마스터 팔레트가 “미니어처로”전체 RGB 색상 공간을 구성하여 적색, 녹색 및 청색 구성 요소가 가질 수있는 가능한 수준을 제한하는 방식으로 색상을 선택하여 수행됩니다. 이러한 종류의 배치는 때로는 균일 한 팔레트라고도합니다. 정상적인 사람의 눈은 세 가지 기본 색상에 대해 서로 다른 정도의 감도를 가지고 있습니다. 녹색에 가까울수록 파란색에 더 적습니다. 따라서 RGB 배열은 녹색 구성 요소에 대해 더 많은 레벨을 할당하고 청색에 덜 할당함으로써이를 활용할 수 있습니다.

이 방법으로 제작 된 마스터 팔레트는 최대 8R × 8G × 4B = 256 색으로 채워질 수 있지만이 색상 표는 프로그램에서 특수한 용도로 사용할 수있는 색 예약을 위해 팔레트에 공간을 남기지 않습니다. 6R × 6G × 6B = 216 (웹 색상의 경우), 6R × 8G × 5B = 240 또는 6R × 7G × 6B = 252 만 사용하는 것이 일반적이며 일부 예약 색상의 여유가 있습니다.

그런 다음 이미지 축소판 (또는 다른 이종 이미지)의 모자이크를로드 할 때 프로그램은 모든 원본 색인 된 색상 픽셀을 마스터 팔레트에서 가장 근사치로 매핑하고 (하드웨어 색상 레지스터에 덤핑 한 후) 결과를 비디오 버퍼. 다음은 240 RGB 배열 색상과 16 개의 중간 중간 회색 음영의 마스터 팔레트를 사용하는 4 개의 이미지 축소판 그림의 간단한 모자이크 샘플입니다. 모든 이미지는 색 정확도를 크게 떨어 뜨리지 않고 함께 표시됩니다.

적응 형 팔레트
색인 된 색상 기법을 사용할 때 실제 이미지는 원본 이미지에서 직접 알고리즘을 통해 색상이 선택되거나 양자화되는 적응 형 팔레트 (때로는 철자가있는 적응 형 팔레트)를 사용하여 트루 컬러 원본에 더 충실하게 표시됩니다 ( 가장 빈번한 색상). 이 방법과 추가 디더링을 사용하면 색인 된 색상 이미지가 원본과 거의 일치 할 수 있습니다.

그러나 이것은 이미지 픽셀과 그 적응 형 팔레트 사이에 큰 의존을 만듭니다. 제한된 8 비트 깊이 그래픽 디스플레이를 가정하면, 이미지 표면 자체를 프레임 버퍼에 로딩하기 전에 주어진 이미지의 적응 형 팔레트를 컬러 하드웨어 레지스터에로드 할 필요가있다. 다른 적용 가능한 팔레트와 함께 다른 이미지를 표시하려면 슬라이드 쇼처럼 하나씩로드해야합니다. 다음은 색상 패치가있는 4 가지 서로 다른 색인 된 색상 이미지의 샘플로, 해당 (거의 호환되지 않는) 적응 형 팔레트를 보여줍니다.

팔레트의 투명도
인덱스 된 컬러 이미지의 단일 팔레트 엔트리는 투명한 색으로 지정되어 간단한 비디오 오버레이를 수행 할 수 있습니다. 즉, 오버랩 된 이미지의 일부가 배경을 흐리게하고 나머지는 그렇지 않은 것처럼 오버랩합니다. . 영화 / TV 타이틀과 크레디트를 중첩하는 것은 비디오 오버레이의 일반적인 응용 프로그램입니다.

슈퍼 임 포즈 될 이미지 (색인 된 색상이 가정 됨)에서, 주어진 팔레트 항목이 투명한 색상의 역할을합니다. 일반적으로 색인 번호는 0이지만 오버레이가 소프트웨어에 의해 수행되는 경우 다른 색인 번호가 선택 될 수 있습니다. 디자인 타임에 투명한 색상 표 항목은 임의 색상 (대개 고유 색상)에 지정됩니다. 아래 예에서 포인팅 장치의 일반적인 화살표 포인터는 주황색 배경 위에 설계되었으므로 여기에서 주황색 영역은 투명 영역을 나타냅니다 (왼쪽). 런타임에는 겹쳐진 이미지가 배경 이미지의 아무 곳에 나 배치되며 픽셀 색상 인덱스가 투명 색상이면 배경 픽셀이 유지되고 그렇지 않으면 대체됩니다.

이 기술은 문자, 글 머리 기호 등 (스프라이트), 비디오 타이틀 및 기타 이미지 믹싱 응용 프로그램의 일반적인 2-D 비디오 게임에서 포인터에 사용됩니다.

Commodore 64, MSX 및 Amiga 같은 초기 컴퓨터는 하드웨어로 스프라이트 및 / 또는 전체 화면 비디오 오버레이를 지원합니다. 이 경우 투명 팔레트 항목 번호는 하드웨어에 의해 정의되며 숫자 0이었습니다.

GIF 및 PNG와 같은 일부 인덱싱 된 컬러 이미지 파일 형식은 주어진 이미지에 사용 된 팔레트 항목 중 자유롭게 선택 가능한 특정 팔레트 항목의 지정을 투명하게 지원합니다.
BMP 파일 형식은 색상 표에서 알파 채널 값의 공간을 예약하지만 현재이 공간은 반투명 데이터를 저장하는 데 사용되지 않고 0으로 설정됩니다.

트루 컬러 이미지를 처리 ​​할 때 일부 비디오 믹싱 장비는 투명한 색상으로 RGB 삼중 항 (0,0,0)을 사용할 수 있습니다 (빨간색이 없거나 녹색이 없으며 파란색이 없습니다 : 검은 색이 가장 어두운 음영이며이 경우에는 수퍼 검은 색이라고도 함) . 디자인 타임에는 마술 핑크 (magic pink)로 대체됩니다. 같은 방식으로, 일반적인 데스크탑 출판 소프트웨어는 텍스트 단락이 이미지의 주제 주위에 불규칙한 텍스트 배열을 위해 이미지의 경계 상자를 침범하도록하기 위해 사진과 일러스트레이션에서 순수한 흰색의 RGB 삼자 (255,255,255)를 제외 할 수 있습니다.

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

관련성이 있기 때문에 (같은 용도로 사용되기 때문에) 이미지 비트 마스크와 알파 채널은 팔레트 나 투명 색상을 사용하지 않고 오프 이미지에 추가 바이너리 데이터 레이어를 사용하는 기술입니다.

소프트웨어 팔레트

Microsoft Windows
Microsoft Windows 응용 프로그램은 Win32 API의 특수 기능을 통해 4 비트 또는 8 비트 색인 컬러 디스플레이 장치의 팔레트를 관리합니다 (Highcolor 및 Truecolor 디스플레이 모드의 경우 이러한 기능에는 흥미로운 기능이 없습니다). 이러한 API는 소위 시스템 팔레트와 많은 논리 팔레트를 처리합니다.

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

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

출력이 효율적으로 이루어지기 전에 프로그램은 논리 팔레트를 인식해야합니다. 시스템은 논리 색상을 실제 색상과 일치 시키려고합니다. 의도 한 색상이 시스템 팔레트에 이미있는 경우, 시스템은 논리적 색상 표와 시스템 색상 표 색인을 거의 일치시키기 때문에 내부적으로 모두 내부적으로 매핑합니다. 의도 한 색상이 아직 없으면 시스템은 시스템 팔레트에서 가장 사용되지 않는 색상 (일반적으로 백그라운드의 다른 윈도우에서 사용되는 색상)을 버리고 내부 색상을 새 색상으로 대체하는 내부 알고리즘을 적용합니다. 시스템 팔레트의 색상에 대한 공간이 제한적이기 때문에 알고리즘은 유사한 색상을 함께 다시 매핑하고 항상 중복 색상을 피하여 시도합니다.

최종 결과는 얼마나 많은 응용 프로그램이 화면 색상에서 작동하는지에 따라 다릅니다. 전경 창이 항상 선호되므로 백그라운드의 창은 다른 방식으로 작동 할 수 있습니다. 즉, 손상된 상태에서 빠르게 다시 그려지는 상태입니다. 시스템 팔레트가 변경되면 시스템은 특정 이벤트를 트리거하여 모든 응용 프로그램에 알립니다. 창을 받으면 단일 Win32 API 함수를 사용하여 창을 신속하게 다시 그릴 수 있습니다. 그러나 이것은 프로그램 코드에서 명시 적으로 수행해야합니다. 따라서 많은 프로그램이이 이벤트를 관리하지 못하고이 상황에서 윈도우가 손상됩니다.

응용 프로그램은 특정 색상으로 시스템 팔레트를 강제로로드 할 수 있습니다. 특정 순서로도 시스템을 팔로우 할 수 있습니다. 특정 항목에서 물리적 팔레트의 색상이 빠르게 변경됩니다. 시스템은 모든 하드웨어 팔레트 엔트리가 팔레트 컬러 관리를 위해 자유롭다고 가정 할 수 없으며, 그 엔트리는 알고리즘에서 제외됩니다. 최종 결과는 색상 강제 프로그램의 기술과 다른 프로그램의 동작 (일반 경우와 동일) 및 운영 체제 자체의 동작에 따라 다릅니다.