Today I Learned
색을 표현하는 방법 본문
숫자를 사용하는 일반적인 경우 중에는 색 표현이 있다. 그래프의 좌표를 표현하기 위해 숫자 쌍을 사용할 수 있음을 알 것이다. 컴퓨터 그래픽스는 전자 모눈종이에 해당하는 것에 색을 표현하는 점(blob)을 찍어서 그림을 만드는 과정이다.
이때 모눈의 각 격자에 찍는 점을 그림 원소(picture element)라고 부르고, 줄여서 픽셀(pixel)이라고 부른다.
컴퓨터 모니터는 빨간색, 녹색, 파란색 광선을 섞어서 색을 만들어내며, 이런 색 표현법을 RGB색 모델(RGB color model)이라고 부른다. 색은 컬러 큐브(color cube, 정육면체)라는 것으로 표현할 수 있다.
컬러 큐브에서 각 축은 주(primary)색을 표현하며 위 그림과 같다. 값이 0이면 그에 해당하는 주 색의 빛을 끈다는 뜻이며('빛이 없다'와 같은 뜻), 값이 1이면 해당하는 주 색의 빛을 가능한 한 최대 밝기로 켠다(빛이 가장 세다)는 뜻이다.
투명도
각 픽셀에 알파(α)라는 투명도 값을 추가했다.
α는 수학적으로 0 이상 1 이하인 값이다. 0은 해당 값이 완전히 투명하다는 뜻이고, 1은 완전히 불투명하다는 뜻이다.
1부터 255까지의 값을 α 값으로 사용했다.
사용하지 않는 8비트를 활용하여 빨간색, 녹색, 파란색의 값을 그대로 저장하는 대신, 각각의 색값에 α를 곱한 값을 저장했다. 예를 들어 색이 중간 정도 밝기의 빨간색이라면, RGB로는 빨간색이 200이고 녹색과 파랑은 0이다.
이 색이 완전히 불투명하면 α는 1(이 α 값은 255로 표현한다)이고 빨간색 값은 200이다. 하지만 이 빨간색의 α가 절반 정도 투명도인 0.5라면, 저장된 빨간색 값은 200 * 0.5 = 100이고, 저장된 α는 127(255*0.5=127)이다.
따라서 이미지 합성은 색값을 α로 곱하는 과정을 통해 이뤄진다. (α 값을) 미리 곱한 값을 저장한다는 말은 픽셀을 사용할 때마다 α를 곱하는 계산을 반복할 필요가 없다는 뜻이다.
색 인코딩
웹 페이지는 주로 사람이 읽을 수 있는 UTF-8 문자의 시퀀스로 이뤄지는 텍스트(text)를 표현하기 때문에, 텍스트를 사용해 색을 표현할 방법이 필요하다.
URL 인코딩과 비슷한 방법으로 색을 인코딩한다. 웹에서는 색을 16진 트리플렛(hex triplet)으로 표현한다. 16진 트리플렛은 # 뒤에 여섯 자리 16진 숫자를 추가해 #rrggbb처럼 표현하는 방식이다. 여기서 rr은 빨간색의 값, gg는 녹색의 값, bb는 파란색의 값이다. 예를 들어 #ffff00은 노란색, #0000000은 검은색, #ffffff는 흰색이다. 각각의 8비트 색값을 두 자리 문자로 된 16진 표기로 바꾼다.
웹 페이지에서도 α를 사용할 수 있지만 α를 표현할 수 있는 간결한 형식은 없다. α를 사용할 때는 전혀 다른 방식을 사용한다.
'컴퓨터 구조' 카테고리의 다른 글
유니코드 변환 형식 8비트(UTF-8) (0) | 2022.08.29 |
---|---|
URL 인코딩 (0) | 2022.08.25 |
베이스64 인코딩 (0) | 2022.08.25 |