색 공간
색 공간(color space)는 색의 3속성인 색상(hue), 명도(lightness), 채도(chroma)를 표현하는 공간 개념이다.
사람의 눈이 색으로 인식하는 빛의 파장은 다양하지만, 색이 실제로 그 빛의 속성은 아니기 때문에 색을 직관적으로 이해하는 것은 때로 혼란스럽다. 색은 우리의 지각 현상일 뿐이다. 특히 디지털 환경에서 색 공간은 빛과 지각의 복잡한 상호작용을 컴퓨터가 이해하고 디스플레이에 표시할 수 있는 형식으로 모델링하는 것이다.
역사
최초의 컬러 디스플레이는 1970년대에 개발되었지만, 가격이 비싸 상용화되지 못했다. 컬러 디스플레이가 보편화된 것은 1980년대 IBM PC와 애플 매킨토시가 출시되면서부터이다. 초기 색상 지원 컴퓨터는 메모리가 제한적이었기 때문에 각 픽셀의 빨강, 초록, 파랑 값을 저장하는 대신, 미리 정의된 색상 팔레트를 사용했다. 인덱스 색상(index color)라고 알려진 이 접근 방식은 각 픽셀에 대해 작은 인덱스 값(e.g., 1비트, 2비트, 4비트, 8비트)을 저장했는데, 이 값은 실제 RGB 색상 정의가 정의된 색상 조회 테이블(CLUT, Color Look-Up Table)을 참조하는 인덱스였다.
하드웨어가 발전함에 따라 각 픽셀에 대한 RGB 값을 저장할 수 있게 되었고, 그 결과 수백만 가지의 색상을 표현할 수 있는 트루 컬러 디스플레이가 개발되었다. 문제는 기기마다 색 재현 성능이 다르다는 것이었다. 즉, 동일한 RGB 값이 다른 모니터, 프린터, 또는 카메라에서 동일하게 보이지 않는다는 것이다. 1993년, 일부 대기업이 모여 국제색상협회(ICC, International Color Consortium)을 설립했고, 기기의 색 재현을 설명하는 색상 프로파일 시스템을 개발했다. 이 프로파일은 서로 다른 기기 간의 색상 변환에 사용할 수 있었다. 하지만 ICC 프로파일은 디지털 형식으로 색상이 어떻게 표현되는지는 정의하지 않았다. 웹이 등장할 무렵, 다양한 기기와 애플리케이션에서 색상을 일관된 방식으로 표현할 방법이 필요했다.
1996년 마이크로소프트와 HP는 이 문제를 해결하기 위해 sRGB(Standard Red Green Blue) 색 공간을 공동 개발했다. sRGB는 당시 일반적인 CRT 모니터의 형광체 색상을 기반으로 색 공간을 모델링했기 때문에 보정이 필요하지 않았다. sRGB는 대부분의 소비자 기기에서 사실상 표준 색 공간으로 자리잡았다. 컴퓨터에서 어떤 색 공간을 사용해야 할지 모르는 경우, 기본적으로 sRGB로 설정된다. JPEG나 PNG 같은 대부분의 이미지 형식도 sRGB를 사용한다.
색역 정의
1930년대 초, 국제조명위원회(CIE, Commission Internationale de l’Éclairage)는 사람의 눈이 지각할 수 있는 모든 색상 범위를 정의하는 CIE XYZ 색 공간을 개발했다. 하지만 디스플레이는 CIE XYZ 색 공간의 모든 색상을 표현할 수는 없기 때문에 그 하위 집합인 특정 색 공간을 만들어야 한다. 색 공간을 만들 때는 몇 가지 사항을 정의한다.
- 원색의 색도(chromaticities) 또는 좌표.
- 백색점(white point)의 좌표.
- 감마(gamma) 또는 톤 응답 곡선.
원색의 색도를 설정하려면 CIE XYZ 색 공간에서 x, y, z 좌표를 지정해야 한다. 이렇게 하면 색 공간에 경계가 생기고, 이를 바탕으로 색 공간의 색역을 어느정도 정의할 수 있다. 여기에서 순수한 녹색(0, 255, 0)은 이 색 공간에서 설정한 색도 값에 의해 정의된 특정 녹색을 나타낸다.
이어서 백색점으로 사용할 색상의 좌표를 설정한다. 백색점은 색 공간의 색온도를 정의하는 데 사용된다. 순수한 흰색이란 실제로 존재하지 않기 대문에 일반적인 자연광이나 실내 조명을 모방하는 흰색을 선택해야 한다. 백색점은 다른 모든 색상을 인식하는 방식에 영향을 미치기 때문에 중요하다.
마지막으로 감마 또는 전달 함수를 정의한다. 이는 색상의 밝기를 조절해 색의 밝기 변화를 더욱 자연스럽게 보이도록 한다. 사람의 눈은 밝기를 비선형적으로 인식하기 대문에 색상을 사람의 인식에 맞게 조정하는 것이 중요하다.
이 과정을 통해 색역(gamut)을 정의할 수 있다. 색역이란 주어진 색 공간이나 특정 장치에서 재현 가능한 특정 색상의 집합이다. 다시 말해서, 색역의 한계는 원색과 백색점으로 정의된다. 원색과 백색점에 대한 좌표를 CIE XYZ 색 공간 안에 표시하고, 선으로 연결해 삼각형 형태로 시각화할 수 있다. 색역 안에 있는 색상은 해당 색 공간에서 재현이 가능하고, 그 밖에 있는 색상은 재현이 불가능하다. 원색 간의 간격이 넓을수록 색역이 넓어진다. 다만, 2차원 평면에 색역을 시각화하는 것이 전체 색상 번위를 실제로 보여주지는 못한다. 실제로 색역은 감마 곡선을 반영해 부피를 가진 3차원 형태로 시각화할 수도 있다.
색역의 종류
기술이 발전함에 따라 디스플레이는 점점 더 다양한 색상을 정확하게 재현할 수 있게 되었다. 산업 분야와 애플리케이션마다 색 재현에 대한 요구 사항은 다르다. 옐르 들어, 영화 산업에서는 DCI-P3 색 공간을 사용하지만, 디지털 애플리케이션에서는 Display P3 색 공간을 사용한다. 두 색 공간은 동일하지만 백색점과 감마가 다르다. DCI-P3는 디지털 영화 프로젝터의 특성에 맞게 더 따뜻한 백색점을 사용한다.
포토샵과 같은 애플리케이션은 ProJPhoto RGB처럼 화면이 실제로 처리할 수 있는 것보다 더 넓은 색역을 사용할 수 있다. 이를 통해 디자이너가 넓은 범위의 색상으로 작업한 후, 최종 출력할 준비가 되면 더 좁은 색 공간으로 쉽게 변환할 수 있다.
Display P3 색 공간은 sRGB보다 약 25% 더 넓은 색역을 가지고 있다. 이는 빨간색과 초록색 원색의 간격이 더 넓기 때문이다. 2차원에서는 크게 차이가 나지 않는 것처럼 보이지만, 3차원에서는 부피 차이를 확인할 수 있다.
OkLab과 같은 일부 색 공간은 CIE XYZ 색 공간과 동일한 색역을 가지고 있어 사람의 눈으로 볼 수 잇는 모든 색상을 표현할 수 있다. 이러한 색 공간을 특정 기기나 디스플레이 기술에 얽매이지 않기 때문에 기기 독립적 색 공간이라고 한다.
색상 모델
색 공간의 색역을 RGB 형식으로 표현하면 3개 축을 가진 데카르트 좌표계에 정육면체로 시각화할 수 있다. 이를 색상 모델이라고 한다. 색상 모델은 색 공간과는 다르다. 색상 모델은 색 공간에서 정의된 원색과 백색점은 변하지 않으며, 따라서 색역도 변하지 않는다. 단지 색의 기하학적 표현 방식이 다를 뿐이다. 같은 색 공간을 색도(hue), 채도(saturation), 명도(lightness)로 표현해 원통 형태로 시각화하는 HSL 색상 모델도 있다. HSV 색상 모델은 HSL에서 밝기 대신 명도(value)를 사용하는 모델이다.