0. 두 가지 알파 형식 - Alpha compositing[각주:1]


디지털 이미지의 각 화소(픽셀)는 기본적으로 RGB라는 3개 채널로 구성됩니다.


(관련 공학의 전공자라면, RGB를 디지털 데이터를 저장하는 형식; 포맷; 구조체라고 합시다.)


그리고 항상 불투명한 색만 표현할 수 있는 이 RGB 형식에, 알파 채널이라는 투명도(matte)의 개념을 더한 것이 RGBA입니다.


중요한 것은, RGBA라고 해서 모두 다 같은 RGBA가 아니라는 점입니다.


왜냐하면 이 RGBA는 서로 전혀 다른 두 가지 형식(포맷)으로 분류(해석)할 수 있는 여지가 있기 때문입니다.[각주:2]


그 두 가지는 다음과 같습니다.

1) straight alpha (unassociated alpha; unmatted RGB + alpha)

2) premultiplied alpha (associated alpha; matted RGB + alpha)


1. Non-premultiplied alpha


[각주:3]


"non-premultiplied alpha"는 "straight alpha" 또는 "unassociated alpha"라고도 부르며, 우리가 가장 익히, 편하게, 친숙하게 알고 쓰는 알파 형식입니다.


이를 테면, HTML/CSS에서 색상을 표현할 때 쓰는 RGBA 포맷이 straight alpha를 적용하고 있습니다.


straight alpha 방식의 RGBA는, 알파 값만이 화소의 투명한 정도를 나타내며, RGB 각각의 값은 투명도와 관계 없이 빨강, 초록, 파랑의 강도를 표현합니다.


가령, 아래처럼 RGBA 형식으로 표현되는 화소가 있다고 할 때,


rgba(255, 200, 0, 0.4) // RGB는 0~255 사이 정수


상기한 RGBA는 대략 이런 뜻입니다.


R: 100% 강도의 붉은 빛을 내며, (255는 최대)

G: 78% 강도의 초록 빛을 내며, (200은 중간 78% 지점)

B: 0% 강도의 푸른 빛을 내며, (0은 최소)

A: RGB 세 가지 각각의 빛의 세기를 그 40% 만큼으로 줄여서, 불투명도를 40%로 떨어뜨린다. (60% 투명해 보이게 한다.)


2. Premultiplied alpha


[각주:4]


"premultiplied alpha"는 "associated alpha"라고도 부르며, 이미지의 필터링과 혼합에 적합한 표현 방식입니다.


premultiplied alpha 방식의 RGBA 인코딩은, 그 이름이 암시하듯이 알파 값을 RGB에 미리 곱해 둡니다.


RGB에 (불)투명도를 미리 곱해 두면, 알파 값 없이 RGB만 가지고도 투명도가 적용된 색상을 얻을 수 있을 뿐만 아니라, 그래픽 처리시에 필요한 연산이 줄어드는 장점이 있죠.


다시 말해 premultiplied alpha 방식의 RGBA에서 RGB의 값은 그 자체만으로도 색상과 더불어 이미 투명도를 반영하고 있으며, 알파 값은 복잡한 그래픽 처리를 위해서 덤으로 딸려 들어오는 것에 불과합니다.


그리고 이 방식의 또 한 가지 특징은 RGB 각각의 값이 덤으로 얹어 주는 알파의 값보다 항상 작거나 같다는 점입니다.


예를 들어, 위에서 사용했던 예시와 같은 straight (non-premultiplied) RGBA가 있다고 합시다.


rgba(255, 200, 0, 0.4) // RGB는 0~255 사이 정수


이를 premultiplied RGBA로 표현하면 다음과 같습니다.


rgba(102, 80, 0, 0.4) // RGB는 0~255 사이 정수
rgba(0.4, 0.31, 0, 0.4) // RGB가 0~1 사이 실수인 경우


이 premultiplied RGBA는 해석하자면 이런 뜻입니다.


R: 40% 강도의 붉은 빛을 내며, (100% 강도의 붉은 빛의 세기를 그 40% 만큼으로 줄여서)

G: 31% 강도의 초록 빛을 내며, (78% 강도의 초록 빛의 세기를 그 40% 만큼으로 줄여서)

B: 0% 강도의 푸른 빛을 낸다. (0% 강도의 푸른 빛의 세기를 그 40% 만큼으로 줄여서)

A: 덤으로 정보를 주자면, RGB 세 가지 각각의 빛의 세기를 그 40% 만큼으로 미리 줄여 놓았다. 미리 이 알파 값을 곱해 두었다.


(본문의 끝입니다.)



  1. 용어 출처: https://en.wikipedia.org/wiki/Alpha_compositing [본문으로]
  2. 현재 널리 쓰이는 알파 채널이라는 개념의 정의는, Thomas Porter와 Tom Duff가 1984년 저술한 논문에서 정립된 것입니다. 구글 학술 검색에 의하면 해당 논문은 이 글을 작성하는 현재 1753회 인용되었습니다. 논문 링크: https://keithp.com/~keithp/porterduff/p253-porter.pdf [본문으로]
  3. 이미지 출처: https://www.cgdirector.com/premultiplied-alpha-vs-straight-alpha/ [본문으로]
  4. 이미지 출처: https://www.cgdirector.com/premultiplied-alpha-vs-straight-alpha/ [본문으로]
Top