색인 된 색상

컴퓨팅에서 인덱싱 된 색은 컴퓨터 메모리 및 파일 저장소를 절약하고 디스플레이 새로 고침 및 파일 전송 속도를 높이기 위해 제한된 방식으로 디지털 이미지의 색을 관리하는 기술입니다. 이것은 벡터 양자화 압축의 한 형태입니다.

이 방법으로 이미지를 인코딩하면 색상 정보가 이미지 픽셀 데이터에 직접 전달되지 않지만 팔레트라고하는 별도의 데이터 조각, 즉 색상 요소의 배열에 저장됩니다. 배열의 모든 요소는 배열 내의 위치에 따라 색인화 된 색상을 나타냅니다. 개별 항목은 때때로 색상 레지스터라고도합니다. 이미지 픽셀은 색상의 전체 사양을 포함하지 않지만 팔레트의 색인 만 포함합니다. 이 기술은 종종 색상이 간접적으로 처리되기 때문에 의사 색 또는 간접 색이라고도합니다.

아마도 팔레트 색상을 지원하는 최초의 장치는 Kajiya, Sutherland 및 Cheadle에 의해 1975 년에 설명 된 랜덤 액세스 프레임 버퍼 였을 것입니다. 이는 256 개의 36 비트 RGB 색상 팔레트를 지원했습니다.

팔레트 크기
팔레트 자체에는 제한된 수의 고유 색상이 저장됩니다. 4, 16 또는 256이 가장 일반적인 경우입니다. 이러한 제한은 대상 아키텍처의 디스플레이 어댑터 하드웨어에 의해 부과되는 경우가 많으므로이 숫자가 22 = 4, 24 = 16 및 28 = 256 인 2의 정확한 제곱 수가되는 것은 아닙니다. 256 값은 하나의 8 비트 바이트에 맞춰진 다음 (단일 색인 된 색상 픽셀도 단일 바이트를 차지함) 16 비트 (4 비트, 1 비트) 또는 더 적은 색상의 픽셀 인덱스를 함께 단일 바이트로 패킹 할 수 있습니다 16 색을 사용하는 경우는 1 바이트, 4 색을 사용하는 경우는 1 바이트 당 4 비트의 2 비트 픽셀). 경우에 따라 1 비트 (2 색) 값을 사용할 수 있으며 최대 8 픽셀을 단일 바이트로 패킹 할 수 있습니다. 이러한 이미지는 색인 된 컬러 이미지가 아닌 2 진 이미지 (비트 맵 또는 2 레벨 이미지라고도 함)로 간주됩니다.

단순한 비디오 오버레이가 투명 색상을 통해 의도 된 경우,이 목적을 위해 하나의 팔레트 항목이 특별히 예약되어 있으며 사용 가능한 색상으로 할인됩니다. MSX 시리즈와 같은 일부 컴퓨터는 하드웨어로 투명 색상을 예약했습니다.

256 개 항목을 초과하는 팔레트 크기의 색인 된 컬러 이미지는 드뭅니다. 실제적인 한계는 픽셀 당 약 12 ​​비트, 4,096 개의 서로 다른 인덱스입니다. 색인 된 16 bpp 또는 그 이상을 사용하는 것은 원시 이미지 데이터 그 자체보다 큰 색상 팔레트 크기 (바이트)로 인해 색인 된 색상 이미지의 장점을 제공하지 않습니다. 또한 유용한 직접 RGB Highcolor 모드는 15 bpp 이상에서 사용할 수 있습니다.

이미지에 미묘한 색조가 많이있는 경우 색상 양자화를 사용하여 이미지를 근사치 화하려면 색상의 제한된 레퍼토리를 선택해야합니다. 이러한 팔레트는 종종 이미지를 정확하게 표현하기에는 불충분합니다. 그래디언트와 같이 재현하기 어려운 피쳐는 뭉툭하거나 스트립으로 나타납니다 (컬러 밴딩). 이 경우 패턴에서 다른 색상의 픽셀을 혼합하고 주변의 픽셀을 함께 흐리게 처리하여 원래의 시각에 가까운 시각을 얻는 경향이있는 디더링을 사용하는 것이 일반적입니다.

색상 및 팔레트
주어진 색인 된 색상 이미지의 색상 표 맵에서 색상이 인코딩되는 방식은 대상 플랫폼에 따라 다릅니다.

초기 컬러 기술
많은 초기 개인용 컴퓨터 및 가정용 컴퓨터에는 아주 작은 색상 세트를 생성 할 수있는 하드웨어 팔레트가 매우 제한적이었습니다. 이러한 경우 각 픽셀의 값은 이러한 색상 중 하나에 직접 매핑됩니다. 잘 알려진 예로는 Apple II, Commodore 64 및 IBM PC CGA가 있으며, 모두 16 색 고정 세트를 생성 할 수있는 하드웨어가 포함되어 있습니다. 이러한 경우 이미지는 4 비트의 각 픽셀을 인코딩하여 사용할 색상을 직접 선택할 수 있습니다. 그러나 대부분의 경우 디스플레이 하드웨어는 단일 이미지에서 해당 색상의 하위 집합 만 사용할 수있는 추가 모드를 지원합니다. 이는 메모리를 절약하는 유용한 기술입니다. 예를 들어 CGA의 320×200 해상도 모드는 한 번에 16 가지 색상 중 4 가지 모드 만 표시 할 수 있습니다. 팔레트는 전적으로 독점적이므로 한 플랫폼에서 생성 된 이미지를 다른 플랫폼에서 제대로 볼 수 없습니다.

이 시대의 다른 기계는 더 많은 색상 세트를 생성 할 수 있었지만 일반적으로 한 세트의 하위 세트 만 하나의 이미지에 사용할 수있었습니다. 예를 들어 Atari 8 비트 시스템의 256 색 팔레트 또는 ReGIS 그래픽 모드의 VT241 터미널의 4,096 색이 있습니다. 이러한 경우 이미지의 전체 하위 수는 한 번에 한 번에 표시되기 때문에 Atari 및 VT241에서는 한 번에 최대 16 개까지만 표시됩니다. 일반적으로 이러한 시스템은 그다지 색이 다른 형제들과 동일하게 작동했지만 중요한 차이점은 팔레트에 너무 많은 색상이있어 제한된 양의 비디오 메모리가 주어진다면 픽셀 데이터를 직접 인코딩 할 수 없었습니다. 대신, 그들은 각 픽셀의 데이터가 CLUT의 엔트리를 가리키고 CLUT은 프로그램 제어하에 설정되는 컬러 룩업 테이블 (CLUT)을 사용했다. 이는 이미지를 올바르게 재사용 할 수 있도록 이미지 CLUT 데이터를 원시 이미지 데이터와 함께 저장해야한다는 것을 의미했습니다.

RGB
YPbPr 등과 같은 컴포넌트 비디오 컬러를 기반으로 한 하드웨어 팔레트는 일반적으로 1980 년대 중반에보다 유연한 RGB 컬러 모델로 대체되었습니다.이 모델에서는 적색, 녹색 및 청색의 3 가지 기본 색상의 서로 다른 양을 혼합하여 주어진 색상을 얻을 수 있습니다 푸른. 서로 다른 색상의 총 수는 기본 및 하드웨어 구현 (9 비트 RGB는 512 가지 조합을 제공하고 12 비트 RGB는 4,096 등을 제공)의 수준 수에 따라 다르지만이 모델에서는 Digital- DAC는 색상을 생성 할 수있어 하드웨어 설계를 간소화 할 수 있으며 소프트웨어는 추상적으로 사용되는 레벨 당 수를 처리하고 RGB 색상을 장치 독립적 인 방식으로 관리 할 수 ​​있습니다. 색인 된 이미지 파일의 팔레트 내에 RGB 형식으로 저장된 색상을 사용하면 하드웨어 구현에 사용 된 색상 깊이에 관계없이 모든 이미지를 해당 시스템에서 (적절한 변환을 통해) 표시 할 수 있습니다.

오늘날, 색인 된 컬러 이미지를 처리하는 디스플레이 하드웨어 및 이미지 파일 형식은 RGB 형식의 색상을 거의 독점적으로 관리합니다. 사실상의 표준 인코딩은 트루 컬러 또는 24 비트 RGB이며 16,777,216 가지 색상을 사용할 수 있습니다. 그러나 색인 된 색상 이미지는 진정한 24 비트 RGB 색상 인코딩으로 제한되지 않습니다. 이미지 팔레트는 모든 유형의 색상 인코딩을 보유 할 수 있습니다. 예를 들어, PDF 파일 형식은 다른 색상 공간, 특히 CMYK에서 색인 된 색상을 지원하며 이미지의 총 색상 수가 256 이하일 때 Adobe Distiller는 기본적으로 이미지를 색인 된 색상으로 변환합니다. RGB를 사용하는 경우, TIFF 및 PNG 파일 형식은 픽셀 당 총 48 비트를 산출하는 16 비트 (구성 요소 당 65,536 수준)의 정밀도로 RGB 세 쌍을 선택적으로 저장할 수 있습니다. TIFF 표준의 제안 된 확장은 비 RGB 색상 팔레트를 허용하지만, 기술적 인 이유로 소프트웨어에서는 구현되지 않습니다. BMP 파일 형식 색인화 된 색상 모드의 색상 맵 테이블은 해당 항목을 RGB가 아닌 BGR 순서로 저장하고 처리 중에 32 비트 단어 맞춤을 따르도록 추가 미사용 바이트를 (현재 버전에서) 추가합니다 기본적으로 여전히 24 비트 RGB 색상 인코딩입니다. BMP 형식의 이전 버전은 24 비트 컬러 맵 테이블 항목 당 3 바이트를 사용했으며이 형식의 많은 파일이 계속 유통되기 때문에 BMP 파일을 읽는 많은 최신 프로그램이 두 가지 변형을 모두 지원합니다.

픽셀 비트 배열
초저 해상도 그래픽 모드를 제외하고 초기 가정 및 개인용 컴퓨터는 단일 픽셀을 사용 가능한 색상으로 독립적으로 변경할 수있는 “모든 픽셀 주소 지정 가능”디자인을 거의 구현하지 않았습니다. 그들의 한계는 별개의 컬러 속성 또는 컬러 RAM 영역을 사용하여 발생했으며, 속성 충돌 효과를 이끌어 냈습니다. 또한 비디오 메모리의 픽셀 비트 및 / 또는 스캔 라인은 일반적으로 비디오 생성기 하드웨어에 편리한 이상한 방식으로 배열되므로 (따라서 비용 경쟁력있는 시장에서 하드웨어 비용을 절감 할 수 있음), 때로는 그래픽 프로그램을 작성하는 사람들에게 어려움이 발생합니다 . 색인 된 색상의 모든 픽셀 주소 지정이 가능한 이미지의 픽셀 비트는 항상 비디오 메모리 또는 이미지 파일에서 연속적이지는 않습니다 (즉, 청크색 조직이 항상 사용되는 것은 아닙니다). 일부 향상된 비디오 하드웨어 (예 : Enhanced IBM PC 호환 또는 Amiga 비디오 버퍼 용 그래픽 어댑터 (EGA) 및 비디오 그래픽 어레이 (VGA)는 일련의 비트 평면 (평면이라고하는 구성에서)으로 배열됩니다.이 비트 평면에서 단일 픽셀의 관련 비트가 여러 독립적 인 비트 맵. 따라서 픽셀 비트는 개념적으로 3D Z 축을 따라 정렬됩니다. (여기서 “깊이”개념은 픽셀 깊이와 개념이 다릅니다.)

PIC와 같은 초기 이미지 파일 형식은 주어진 컴퓨터의 비디오 버퍼의 메모리 덤프보다 조금 더 저장했습니다.

GIF (Graphics Interchange Format)와 같은 일부 색인 컬러 이미지 파일 형식을 사용하면 이미지의 스캔 라인을 인터리빙 방식 (선형 순서가 아님)으로 정렬 할 수 있으므로 이미지를 저해상도 버전으로 다운로드하는 동안 화면에 표시 할 수 있습니다 따라서 컴퓨터 사용자는 전체 이미지가 도착하기 몇 초 안에 내용을 알 수 있습니다.

이 그림에서 보듯이 이미지는 네 줄의 그룹으로 나뉘어집니다. 그룹 A는 네 번째 줄마다, 그룹 B는 그룹 A의 줄 바로 다음 줄을 포함하고, 그룹 C는 그룹 B의 줄 바로 다음 줄을 포함하고 그룹 D는 그룹 C 라인 (바로 위)과 그룹 A 라인 (바로 아래) 사이에있는 나머지 라인들. 이들은 A, C, B, D의 순서로 파일에 저장되므로, 파일이 전송 될 때 두 번째로 수신 된 그룹 (C)의 그룹이 첫 번째 그룹의 라인 사이에 집중되어 가장 공간적으로 균일하고 인식 가능한 이미지는 가능한 두 개의 라인 그룹으로 구성됩니다. 더 많은 그룹 (예 : 8)에서 동일한 기술을 적용 할 수 있습니다.이 경우 각 단계에서 보내질 다음 그룹에는 아직 이미지 데이터로 채워지지 않은 나머지 밴드 중심에 또는 그 근처에있는 선이 포함됩니다. 4 개 또는 8 개의 라인 그룹을 가진이 방법은 1990 년대 후반의 초기 World Wide Web에서 일반적으로 사용되었습니다. 위의 그림과 같이 배경 (검정색)을 표시하는 대신 부분 이미지는 각 라인을 복제하여 그 아래 공간을 다음 수신 된 이미지 라인까지 채우는 방식으로 화면에 표시되는 경우가 많습니다. 최종 결과는 이미지 데이터의 이후 부분이 도착할 때 몇 초 동안 최대 해상도로 증가하는 수직 해상도가 감소 된 연속 이미지였습니다.

장점
색인 된 색상은 많은 메모리, 저장 공간 및 전송 시간을 절약합니다. 트루 컬러를 사용하면 각 픽셀마다 24 비트 또는 3 바이트가 필요합니다. 일반적인 640 × 480 VGA 해상도의 트루 컬러 비 압축 이미지는 640 × 480 × 3 = 921,600 바이트 (900 KiB)가 필요합니다. 이미지 색상을 256으로 제한하면 모든 픽셀은 8 비트 또는 각각 1 바이트 만 필요하므로 예제 이미지는 이제 640 × 480 × 1 = 307,200 바이트 (300KB), 256 × 3 = 768 바이트 팔레트지도 자체 (RGB로 가정), 원래 크기의 약 1/3. 작은 팔레트 (4 비트 16 색, 2 비트 4 색)는 분명히 색 정확도의 비용으로 픽셀을 훨씬 더 (6 분의 1 또는 12 분의 1까지) 압축 할 수 있습니다.

색인 된 색상은 초기 개인용 컴퓨터 및 디스플레이 어댑터의 하드웨어에서 주로 비용이 많이 드는 RAM 칩을 적게 사용하여 비용을 절감 할뿐만 아니라 제한된 전력의 CPU (4 ~ 8MHz 정도)를 사용하여 편리하게 이미지를 관리하는 데 널리 사용되었습니다 ), 파일 저장 장치 (카세트 테이프 및 저밀도 플로피 디스크). 주목할만한 컴퓨터 그래픽 시스템은 1980 년대에 pseudocolor 팔레트를 광범위하게 (또는 심지어 독점적으로) 사용하여 CGA, EGA 및 VGA (IBM PC 호환 제품), Atari ST 및 Amiga의 OCS 및 AGA를 포함합니다.

1990 년대 초 Compuserve 네트워크를 통해 교환 된 이미지 파일은 GIF 형식으로 캡슐화되었습니다. 나중에 HTML 웹 페이지는 제한된 컬러 이미지를 신속하게 교환하고 제한된 저장 공간에 저장하기 위해 PNG와 같은 색인 된 색상 지원 파일 형식과 함께 GIF를 사용했습니다.

색인 된 컬러 이미지를 지원하는 대부분의 이미지 파일 형식은 일반적으로 일부 압축 구성표를 지원하므로 이미지를 작은 파일에 저장하는 기능이 향상됩니다.

색상이 지정된 세피아 톤 이미지를 생성하는 것과 같이 색인이 붙은 컬러 이미지의 색상 표를 변경하면 재미있는 색상 효과와 예술적 효과를 쉽게 얻을 수 있습니다. 색인 된 색상 이미지의 관련 팔레트 요소의 분리 된 특성으로 인해 잘못된 색상 팔레트를 사용하여 그레이 스케일 이미지를 잘못된 색상 이미지로 다시 매핑하는 것이 이상적입니다.

간단한 비디오 오버레이는 투명 색상 기술을 통해 쉽게 얻을 수 있습니다.

인덱싱 된 컬러 그래픽 모드에서 디스플레이 어댑터의 컬러 하드웨어 레지스터 (색 룩업 테이블 또는 CLUT)를 조작하면 이미지를 다시 그리지 않고도 전체 화면 컬러 애니메이션 효과를 얻을 수 있습니다 (즉, CPU 시간 비용이 적음). 레지스터 값을 한 번 변경하면 전체 화면이 한 번에 영향을받습니다. 컬러 사이클링이라고도하는 컬러 맵 애니메이션은 데모 현상에 광범위하게 사용됩니다. Windows 95, 98, ME 및 2000 Professional (모든 PC에서 가장 큰 공통 분모이기 때문에 VGA 320x200x256 컬러 디스플레이 모드 사용)의 Microsoft Windows 부팅 로고 화면은 화면 아래쪽에있는 스크롤 그라디언트 막대에이 기술을 사용합니다 ; 이 그림은 처음에 표시된 후에 다시 쓰여지는 픽셀이없는 정적 이미지입니다. 사용자 정의 부팅 화면 이미지는 순환 된 색상을 탭하여 이미지의 다른 부분을 움직일 수 있습니다.

단점
색인 된 색상 사용의 주요 단점은 이미지 당 제한된 동시 색상 세트입니다. 작은 4 색 또는 16 색 팔레트는 작은 이미지 (아이콘) 또는 매우 단순한 그래픽에서는 여전히 받아 들일 수 있지만 실제 이미지는 거의 쓸모 없게됩니다. 색상 양자화, 앤티 앨리어스 및 디더링과 같은 일부 기술을 사용하면 허용되는 수준까지 원본과 비교 가능한 색인 된 256 색상 이미지를 만들 수 있습니다.

색인 된 색상 이미지는 자체 색상 표에 크게 의존합니다. 컬러 그래픽 어댑터 -CGA와 같은 잘 알려진 고정 컬러 팔레트를 제외하면 원본 이미지 데이터 및 / 또는 컬러 맵 테이블은 일종의 중간 매핑없이 서로 다른 이미지 파일간에 안정적으로 교환 할 수 없습니다. 또한 주어진 색인 이미지의 원본 색상 표를 잃어 버리면 거의 복원 할 수 없습니다. 다음은 인덱싱 된 컬러 이미지 (이전 앵무새)가 잘못된 색상 표와 연결되었을 때 어떤 일이 발생하는지 보여주는 예입니다.

디스플레이 어댑터 용 색인 컬러 그래픽 모드는 하드웨어에 의해 16 색 또는 256 색 제한이 적용됩니다. 풍부하지만 호환되지 않는 색상 표가있는 색인 된 색상 이미지는 슬라이드 쇼처럼 한 번에 하나씩 정확하게 표시 할 수 있습니다. 여러 개의 이미지를 함께 표시해야하는 경우 축소판 그림과 마찬가지로 공통 색상 또는 마스터 색상 표를 자주 사용합니다.이 색상 표는 가능한 한 많은 색상을 단일 세트로 포함하므로 전반적인 정확한 색상 가용성을 제한합니다.

다음 이미지는 6-8-5 단계 RGB와 16 개의 추가 회색의 단일 공유 마스터 팔레트로 렌더링 된 4 가지 서로 다른 색인 된 색상 이미지의 모자이크입니다. 모든 이미지에 사용되는 제한된 색상 범위와 사용되지 않은 팔레트 항목 수를 확인하십시오.

인덱스 된 색상 샘플 모자이크가 전체 RGB 팔레트의 24 비트 제한에 도달하지 않습니다. 예를 들어, IBM PC 호환 VGA는 16 비트 및 256 색인 컬러 그래픽 모드에서 262,144 가지 색상의 18 비트 RGB 팔레트만을 제공합니다.
일부 이미지 편집 소프트웨어는 감마 보정을 색인 된 컬러 이미지 파일 용 팔레트에 적용 할 수 있습니다. 일반적으로 컬러 맵에 직접 감마 보정을 적용하는 것은 원본 RGB 값이 손실되기 때문에 좋지 않습니다. 디스플레이 하드웨어 (대부분의 최신 디스플레이 어댑터가이 기능을 지원함)로 감마 보정을 적용하거나 컬러 관리를 통해 렌더링 소프트웨어의 활성 중간 단계로 원래 색상 값을 보존하는 것이 좋습니다. 인덱싱 된 컬러 이미지가 어떤 종류의 색상 보정이없는 시스템을위한 것이고 크로스 플랫폼을 목표로하지 않는 경우에만 감마 보정이 색상 표 자체에 적용될 수 있습니다.