감마 보정(gamma correction), 감마 인코딩(gamma encoding)의 이해

1. 감마 부호화(gamma encoding)의 목적은 무엇인가?

감마 부호화를 수행하는 이유는 주어진 대역폭 혹은 정보양 내에서 최대한의 '화질'을 보여주기 위해서입니다.

인간의 시각은 베버의 법칙(Weber's law)에 따라 밝기에 대해 비선형적으로 반응합니다. 청각과 같은 다른 감각들도 자극에 대해 비선형적으로 반응합니다. 베버의 법칙은 감각기에서 자극의 변화를 느끼기 위해서는 처음 자극에 대해 일정 비율 이상으로 자극을 받아야 된다는 법칙입니다. 즉 처음에 약한 자극을 받으면 자극의 변화가 적어도 그 변화를 인지할 수 있습니다. 하지만 처음에 강한 자극을 받으면 자극의 변화가 커야지 그 변화를 인지할 수 있습니다. 즉, 자극 사이의 절대적인 차이가 아닌, 자극 사이의 비율이 중요합니다.

이에 따라, 인간의 시각은 어두운 부분에서의 밝기 변화에 민감하고, 밝은 부분에서의 밝기 변화에는 둔감합니다. 인간의 청력이 작은 소리의 크기 변화에는 민감하지만, 큰 소리의 크기 변화에는 둔감한 것과 마찬가지입니다.

다음 예를 보시지요.


출처: http://www.poynton.com/notes/Timo/Gamma_excerpt.html

위는 검정에서 흰색까지의 밝기(luminance)를 선형적으로 256개로 나눈 것입니다. 0이 검정, 255가 흰색입니다. 여기서는 0과 1이 나타내는 밝기 차이는 254와 255이 나타내는 밝기 차이와 같습니다. (1-0=255-254) 즉, 선형 부호화를 한 예입니다. 이때, 어두운 부분의 25, 26 차이는 사람이 매우 크게 느끼게 되지만, 밝은 부분의 200, 201 차이는 느끼기 힘듭니다. 25, 26의 밝기 차이 비율은 4% ( (26/255 - 25/255)/ (25/255) *100 )인데 반해, 200, 201의 밝기 차이 비율은 0.5% ( (201/255 - 200/255)/ (200/255) *100 ) 밖에 되지 않기 때문입니다. 앞에서 이야기했듯이, 사람 시각이 두 개의 밝기를 구분하기 위해서는 밝기 차이의 비율이 중요합니다. 이러한 식으로 빛의 밝기를 선형적으로 나누어 부호화하면 어두운 부분은 사람이 보기에 밝기 변화가 매우 큰 현상(posterization, contouring, banding)이 나타납니다. 이러한 현상의 예는 다음과 같습니다.

 


출처: http://en.wikipedia.org/wiki/File:Posterization_example.jpg

이렇게 선형으로 부호화를 하게 되면, 밝은 부분에서는 시각이 지각할 수 없는 쓸모 없는 데이터가 많아지고, 어두운 부분에서는 데이터가 부족해서 화질이 떨어지게 됩니다.

이렇게 채널 당 8 bit와 같이 한정된 정보양 안에서 선형적으로 빛의 밝기를 기록하면, 사람의 눈이 민감하게 반응하는 '어두운 부분'의 경우 밝기가 변할 때 부드럽게 느껴지지 않고 단절되어 보이는 현상(posterization, contouring, banding)이 발생합니다. 따라서, 주어진 정보양의 한계 안에서 최적의 화질을 보여주기 위해선 비선형적으로 부호화하여 '어두운 부분'의 차이를 세밀하게 기록할 필요가 있습니다. 이때 보통 Rec. 709 transfer function과 같은 비선형 함수를 사용합니다.

다음은 Rec. 709 transfer function 입니다.

 


출처: http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html

여기서 비선형적으로 부호화한다는 게 어떤 것인지 살펴보죠. 다음 그래프의 파란색 부분을 보면 입력값(tristimulus value) 0~0.018은 이 함수를 거치면 0~0.081 사이의 값이 됩니다. 즉, 어두운 부분의 경우 세밀하게 나누어 기록합니다. 이에 반해 입력값 0.92~1는 이 함수를 거치면 0.96~1 사이의 값이 됩니다. 즉, 밝은 부분은 큰 차이가 나야만 서로 다른 값으로 기록되게 됩니다.

 

디지털 카메라의 경우 내부에 저장되어 있는 RAW 데이터를 JPEG, TIFF 형식으로 저장하는 과정에서 감마 보정이 이루어집니다. 디지털 카메라에서 지원하는 대부분의 RAW 그래픽 파일 포맷은 감마 보정이 적용되지 않은 데이터입니다. 예외적으로 니콘의 압축형 NEF (compressed NEF)의 경우 색 깊이를 12비트에서 9.4 비트로 줄이는 양자화(quantization)과정에서 위 Rec. 709 transfer function과 유사한 transfer function을 사용합니다.

이렇게 비선형적으로 기록한 데이터를 사람에게 보여주기 위해서는 보여주는 기기(보통 컴퓨터)에서 다음 그림의 녹색 함수와 유사한 함수를 사용하여 원래의 밝기대로 보여주어야 합니다.

 


출처: http://www.astrogeeks.com/Bliss/OccultVideo/videogamma.html


2. 감마 부호화에 대한 오해

보통 감마 부호화(gamma encoding)라는 용어보다는 감마 보정(gamma correction)이라는 표현을 많이 사용하고, 감마 보정을 하는 이유는 모니터의 출력 특성 때문이라는 잘못된 속설이 많이 퍼져 있습니다. 하지만, 이는 잘못된 정보입니다.

사실 요즘 LCD 모니터들은 CRT가 아니기 때문에 감마 특성과 별 관련이 없습니다. 만약 인간 시각이 선형적으로 반응한다면 모니터의 특성과 상관없이 선형적으로 부호화해야 합니다. 인간 시각이 밝기에 대해 선형적으로 반응한다면, 현재와 같이 비선형적으로 부호화할 경우 밝은 부분에서 계단현상(posterization, contouring, banding)이 일어나기 때문입니다.

거듭 말하지만, 감마 부호화, 감마 보정의 이유는 주어진 대역폭 내에서 최대한의 화질을 보여주기 위해서입니다.

즉, 선형적으로 표현하면 8 bit로는 8 stop 의 dynamic range 밖에 표현하지 못하고, 인간 시각의 특성에 따라 어두운 부분에 계단현상이 두드러집니다. 인간 시각은 어두분 부분의 밝기 변화에 민감하기 때문입니다. 하지만, 8 bit로 감마 부호화를 하면 약 12 stop의 dynamic range를 표현하면서 bit depth의 많은 부분을 인간이 민감한 어두운 부분에 할당하기 때문에 계단현상이 잘 안보이게 됩니다. 즉, 선형 부호화를 했을 때는 적절한 화질을 얻기 위해서는 12bit가 필요하지만, 비선형 부호화를 했을 때는 8bit로 충분한 것입니다.

 

참고 문헌
http://www.w3.org/TR/PNG-GammaAppendix.html
http://www.poynton.com/PDFs/Rehabilitation_of_gamma.pdf
http://www.poynton.com/notes/Timo/index.html
위키백과 감마 보정
http://ko.wikipedia.org/wiki/%EA%B0%90%EB%A7%88_%EB%B3%B4%EC%A0%95
위키백과 베버의 법칙
http://ko.wikipedia.org/wiki/%EB%B2%A0%EB%B2%84%EC%9D%98_%EB%B2%95%EC%B9%99

by shotgunlee | 2010/11/07 16:05 | 디지털카메라의 기술적인 면 | 트랙백(1) | 덧글(7)

트랙백 주소 : http://shotgunlee.egloos.com/tb/10607756
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Tracked from at 2014/03/11 00:34

제목 : http://helenmccrory.org/
line4...more

Commented by GS at 2010/12/31 23:16
잘봤습니다.
수식에 잘못된 점이 있네요.
(26/255 - 25/255)/ 25/255 가 아니라
(26/255 - 25/255)/ (25/255) 이겠죠?

좋은 정보 잘보고 갑니다..
Commented by shotgunlee at 2011/02/06 11:12
지적 감사합니다.
Commented by jb at 2011/01/26 16:48
좋은 내용이라서 찬찬히 잘 읽어 보았습니다. 기술적인 베이스 설명은 아주 좋았는데 적용시키는 부분에서 TV와 디지털 카메라를 혼용해 설명하다보니 설명이 잘되지 않네요. 그리고 TV부분에서 쓰는 REC709관련은 디지털 카메라의 RGB와 구분해서 다시 잘 보길 바라겠습니다. 특히 TV감마 보정 부분은 LCD의 기술과 상관없이 CRT기준으로 표준이 변하지 않아서 계속 이렇게 코렉션을 보는것일 겁니다. 프로그레시브가 가능하지만 아직도 인터레이스 방송하는 것과 마찬가지이지요. TV감마 보정은 모니터가 감마 2.2고 카메라가 감마 0.45로 정반대방향 감마가되어서 직선형태로 코렉션이 되는 겁니다. 그래서 위에 그래프에서 빠진 Line이 직선 라인입니다. 그리고 RAW로 촬영된 디지털 카메라의 감마는 촬상자가 가지고 있는 성능의 원초적 특성이고 코렉션은 DSP칩에서 관할하는 요소들을 사용자가 조절하는거지요. 즉 RAW포맷에서 다이나믹레인지는 가장 넓은 원본을 가지고 있게되는거고 코렉션하면서 수정 범위를 가지게 되는 거지요. 코렉션을 하는이유는 넓은 영역의 플레트한 이미지를(이때가 다이나믹레인지가 가장 넓습니다.) 작가의 의도 (사람이 잘 보수있는 정도의 역역)의 영역으로 보정을 하고 이때는 RAW파일에는 있으나 코렉션했을때 보이지 않는 영역이 발생합니다. 특히 봉정 할때 특정 Color Space의 영역에서 코렉션이 되는데 이게 방송에서는 HD는 REC709 / SD는 601이고 디지털 카메라영역에서는 여러 RGB값들입니다.
감마 보정이유가 모니터 출력특성 때문이라는 잘못된 속설이라는 부분에대해서 더 자세한 설명 부탁드립니다.
Commented by shotgunlee at 2011/02/06 11:18
jb 님께서 혼동하고 계십니다. TV, 디지털 카메라의 감마 인코딩 목적은 동일합니다. TV에서 감마 보정하는 이유에 대해 혼동하고 계십니다. 디지털 카메라 RAW는 감마가 적용되지 않은 데이터입니다. 디지털 카메라에서 감마 보정을 하는 이유에 대해서도 혼동하고 계십니다.
Commented by 지나가는 이 at 2011/07/11 10:22
좋은 정보 보고 갑니다!^^
Commented by 엠군 at 2012/02/27 17:24
잘 읽고 갑니다 ^^
Commented by 신당기 at 2013/04/25 23:34
아주 멋진 글이네요.....잘 읽고 갑니다.
살짝 혼란스럽긴한데 설득력이 있습니다. 프로젝트때문에 색에 대해서 공부하고 있는데.......색 정말 어렵군요......색공간.....색공간 변환.....????
좋은 글 감사합니다....

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶