Gamma(감마) 발표일 : 2010-09-27 발표자 : 임정환
우선 레퍼런스를 밝힙니다. 여기서 딥따 카피해옴;; http://blog.naver.com/psy2993?Redirect=Log&logNo=90081371916 DX도움말 기타 웹(위키피디아)에서…긁어옴..
Gamma의 정의 입력값에 대한 출력값의 비선형적 특성을 보일 때 그 비선형성의 정도 서로 다른 감마 값의 이미지
Gamma를 주제로 정한 이유 디자이너가 실제로 의도한 색감과 게임에서 표현된 색감이 다른 경우가 많다. 심층 분석해보자…(많이는 못함; 꾸준히 발표할 예정)
Gamma Correction(감마 보정) 감마 보정 정의 비디오 카메라, 컴퓨터 그래픽 등에서 비선형 전달 함수(nonlinear transfer function)를 사용하여 빛의 강도(intensity) 신호를 비선형적으로 변형하는 것을 말함 일반적으로 감마 보정(gamma correction)이란 용어가 널리 쓰이나, 대부분의 경우 감마 부호화(gamma encoding)란 표현이 더 적절하다. 감마 보정 단계
감마 보정의 이유 약간의 오해 CRT의 감마값이 1.0이 아니다. 위와 같은 이유라면 역감마 회로를 전자총앞에 두면 될터인데…
감마 보정의 이유 진짜 이유는. 영상 신호의 효율성을 높이기 위함임. 사람의 눈은 어두운 계조간의 차이는 잘 감지하는데 비해 밝은 계조간의 차이는 덜 민감한 특성을 가짐(베버의 법칙) 이러한 특성을 활용하면 같은 데이터 용량으로 더 부드러운 계조를 표현할 수 있음. 그러한 이유로 감마가 사용됨
베버의 법칙(Weber’s law) 예시 정의 자극을 받고 있는 감각기에서 자극의 크기가 변화된 것을 느끼려면 처음에 약한 자극을 주면 자극의 변화가 적어도 그 변화를 쉽게 감지할 수 있으나 처음에 강한 자극을 주면 자극의 변화를 감지하는 능력이 약해져서 작은 자극에는 느낄 수 없으며 더 큰 자극에서만 변화를 느낄 수 있다는 법칙 예시 조용한 곳에서 이야기할때보다 시끄러운 지하철 안에서는 더 큰소리로 이야기해야 알아들을 수 있음 환한 낮에는 네온사인이 밝게 느껴지지 않지만 밤에는 휘황찬란하게 느껴지는 것 등이 그 예이다.
베버의 법칙 수식 특징 K = (R2 - R1)/R1= △R/R1: 일정 (K : 베버상수 R1: 처음자극 R2: 나중자극) 베버상수(K)는 감각기마다 일정한 값을 가지며 K값이 작을수록 예민한 감각기 시각의 K값은 1/120~1/100이고, 미각은 1/6, 청각은 1/7 등으로 일정하다 빛의 세기를 100럭스(Lux)주었을 경우 자극의 변화량이 1럭스이상 변화되어야 그 밝기의 변화를 느낄수있고 먄약 처음 빛의 세기를 1000럭스를 주게 되면 자극의 변화량이 10럭스 이상이 되어야먄 밝기의 변화를 느낄수 있다는 의미이다
베버-페히너의 법칙 [Weber-Fechner's law] 페히너가 베버의 법칙을 확장하여 감각량과 자극량과의 사이에 로그로 비례하는 것을 밝힘 정의 감각의 세기는 자극의 로그[對數]에 비례한다는, 즉 S=k log I (S 는 감각의 세기, I 는 자극의 세기, k 는 상수)가 되는 정신물리학상의 법칙. 예시 예를 들면 30g의 무게와 31g의 무게를 손바닥에 놓고 겨우 구별할 수 있는 경우에 60g과 61g의 차를 구별하기는 어렵고, 60g과 62g의 차이라면 겨우 구별할 수 있다. 이렇게 감각으로 구별할 수 있는 한계는 물리적 양의 차가 아니고 그 비율관계에 의하여 결정된다는 사실은 19세기의 생리학자 E.H.베버에 의하여 발견되었으므로 베버의 법칙이라고 한다. 감각의 양은 그 감각이 일어나게 한 자극의 물리적인 양의 로그[對數]에 비례한다
감마 보정의 이유 정리 어두운 영역에 민감한 눈을 위해 어두운 부분에 최대한 많은 데이터로 표현하고 밝은 부분은 상대적으로 적은 데이터로 표현을 함 적은 데이터로 인간의 눈에 양자화의 부작용을 최대한 줄이기 위해 감마 보정을 함 감마 보정(Gamma Correction)이란 용어보다 감마 인코딩(Gamma Encoding)이란 용어가 맞음
게임에서의 감마 보정 색감 조정용으로 사용 게임에서는 감마 보정을 전체적인 밝기,색감 조정에 사용을 한다.
게임에서의 감마 보정 내부적으로 Texture의 비선형을 없애기 위해 사용 텍스쳐는 sRGB format에 저장됨 pixel pipeline들은 linear한 공간에서 blending operation이 수행된다고 가정함 하지만 sRGB는 gamma 보정된 conetent이다. blending operation이 제대로 수행되지 않을거다. 비디오 카드는 이러한 문제를 sRGB format을 읽을때 gamma correction을 undoing시킴으로서 문제를 해결함
게임에서의 감마 보정 DX9에서는 Texture가 기본적으로 2.2 gamma correction됬다고 가정하고 driver가 blending operation이 제대로 동작 하도록 settexture할때 linear gamma로 convert함 또는 sampler가 linear data로 lookup table에서 참조하여 변경함 linearization은 RGB에만 적용되야하고 alpha channel에는 적용되면 안됨
밝기값 조절에 감마가 사용 밝기에 대한 공식 f(x) = gain * x^gamma + offset gain=contrast, offset = brightness 게임화면의 밝기 조절을 위해 Contrast(대조), brightness(밝기), Gamma 세 가지 값을 바꿨을 때 각각 어떻게 변화할 것인가?
밝기 조절 우리는 채널당 8bit값을 사용하고 있다. 밝기를 10을 올려보자(덧셈) 밝은 부분은 하얗게 날아가 버리는 현상 발생
밝기 조절 밝기를 10을 내려보자(뺄셈) 어두운 부분은 모두 검게되어 머리카락의 결이 제대로 보이지 않음
명암 조절 명암조정은 곱셈 어두운 부분에서는 별로 차이가 없으나 밝은 부분으로 갈수록 반응이 커짐 모니터나 TV가 너무 밝을 경우 밝기보다는 명암을 내리는 것이 좋은 이유임
감마 조절 0~255 는 계산시 0 ~ 1사이의 밝기값이 될 것임 감마값이 1보다 작을 경우 위로 볼록 감마값이 1보다 클 경우 아래로 볼록
결론 메모리를 아끼고 인간의 미개한 감각기관에 맞추기 위해 Gamma Correction(감마 보정을 사용) 전체적인 색감,밝기 조절에는 밝기, 명암 보다는 감마 값 조절을 하는 것이 맞다. 앞으로 각종 색공간, HDR 등을 꾸준히 정리하여 발표하겠음..