우리 인간의 눈은 눈으로 들어오는 빛을 그 강도 그대로 받아들이지 않는다고 합니다. 우리 눈은 밝은 빛을 더욱 세분화하여 감지할 수 있도록 되어 있기 때문에 같은 강도의 밝기 변화라 할지라도 어두운 곳 보다는 밝은 곳에서 감지가 수월합니다. 다음의 그림은 검정색과 흰색으로 이루어진 그라데이션인데 이를 통해 우리 눈이 실제 어떻게 빛을 감지하는지 알 수 있습니다.

위의 그림에서 a는 검정색과 흰색으로 이루어진 그라데이션을 만들어 본 것이고 그 밑에 웨이브폼에서 흰색 직선은 그라데이션의 실제 밝기 강도를 나타냅니다(훠닐 스타일픽스에서 직접 그라데이션을 만드신 후 웨이브폼을 눌러 확인해 보세요). 직선이 나타났다는 것은 검정색에서 흰색으로 변화하는 각 단계의 밝기 변화가 동일하다는 것을 말합니다. 그러나 실제 우리 눈으로 보기엔 왠지 밝은 쪽이 더 많아 보입니다. 즉 실제 우리의 눈은 a의 녹색선처럼 직선이 아니라 곡선의 형태로 빛의 강도를 받아들입니다.
따라서 눈으로 보기에 동일한 빛의 밝기 변화를 나타내는 그라데이션을 만들기 위해선 b의 흰색 곡선처럼 각 단계의 빛을 원래 값보다 적당히 감소시켜 실제 눈으로 보이는 a의 녹색 곡선이 b의 녹색 직선처럼 보이게 만들어 줘야 합니다.
어떻게 하면 쉽게 a의 녹색 곡선이 b의 녹색 직선처럼 보이게 만들 수 있을까요? 이것은 정확히 그 곡선을 수학적 공식으로 나타내면 쉽게 해결이 가능하다. 정확하게는 아니더라도 비슷한 모양새를 나타낼 수 있다면 그 값만큼 보정을 해주면 해결이 될 것입니다.
다음에 나오게 될 지수함수를 통해 그 곡선의 형태를 유사하게 만들어 낼 수 있습니다. 디지털 영상 처리에선 특정 지수함수를 이용해 이미지를 보정하는 과정을 감마 보정이라 하는데 감마 보정이라 하는 이유는 지수함수의 지수로 쓰이는 문자가 감마(ɣ)이고 실제 함수에서 감마 값의 변화만으로 곡선을 변화시킬 수 있기 때문입니다.
실제 그 공식은 아래와 같습니다.
- A: 처리 전 값, B: 처리 후 값, R: 밝기 단계
- F(x, y): x를 밑으로, y를 지수로 하는 지수함수 (c 함수로는 pow()가 있다.)
그럼 이러한 감마 보정이 실생활에서 어떻게 쓰일까요? 아직도 많이 쓰이고 있는 음극선관(CRT) TV는 입력 전압에 따라 대략 1.8에서 2.5 정도의 감마 값을 가집니다.
원본 이미지 주소:
http://www.olympusmicro.com/primer/java/digitalimaging/processing/gamma/index.html
즉 실제 선형입력되는 빛의 강도를 제대로 표현하지 못하기 때문에 촬영된 영상의 감마값을 1/2.5 (0.4)정도로 후보정을 하여야 실제 밝기 값으로 보여지게 됩니다.
훠닐 스타일픽스에서 감마 보정을 하시려면 필터 목록(F9) > 색조절 > 감마 보정을 하시거나 레벨 필터의 입력수준 중간값을 변경하여 하실 수 있습니다.
어두운 곳에서 라이터를 켜면 어둡다가 밝아지니 그 차이가 크게 날 테고
밝은 곳에서 라이터를 켜면 이미 밝은데 좀 더 밝아지니 그 차이는 조금일 것이에요.
그래서 두 차이는 같은 차이의 밝기 변화라고 할 수 없겠지요.