hwi's laboratory  
Front Page
Tag | Location | Media | Guestbook | Admin   
 
HDR, OpenEXR, Tonemapping, Gamma Correction

-HDR
인간의 눈은 10^-4 ~ 10^8 정도의 Luminance를 감지할 수 있다고합니다. Luminance는 눈으로 들어오는 빛의 자극세기 정도로 이해하시면 됩니다.

그런데 일반적인 픽셀값은 0~1(또는 정수로 0~255)사이의 값으로 제한됩니다. 떄문에 인간의 눈이 인식할 수 있는 자극을 모두 수용할 수 없습니다.

그래서 한 픽셀의 채널의 값이 8비트의 부호없는 정수형이 아니라 floating point로 표현한 것을 HDR(high dynamic range)이라고 합니다.

floating point로 연산의 범위가 매우 넓기 떄문에 자유로운 연산이 가능합니다.

예를들어 픽셀값을 5배한 후 다시 1/5배로 하는 연산을 수행하면
LDR의 경우 1.0을 넘는값은 1.0으로 고정되기 때문에 1/5배 했을 때 원래의 색상이 될 수 없습니다.
그러나 HDR의 경우 그대로 복원이 가능합니다.

참고 : http://en.wikipedia.org/wiki/High_dynamic_range_imaging

-OpenEXR
이런 HDR의 이미지를 저장하는 포맷중에 openEXR 포맷이 많이 쓰입니다.
ILM에서 만든 포맷으로, 16비트 부동소수, 32비트 부동소수, 32비트 정수를 지원합니다.
www.openexr.com 이곳에 샘플 exr파일과 소스코드까지 공개하고 있습니다.

-Tone Mapping
HDR을 모니터에 표현할 때, 막무가내로 불러서 출력을 하면 1.0이상의 값은 1.0으로 고정되기 떄문에 자연스럽지 못한 이미지로 보이게 됩니다.

HDR범위를 Device에서 지원하는 범위로 맞추는 것을 tone mapping이라고 합니다.

directx의 sample에서 HDR Lighting에 쓰인 tonemapping 연산을 살펴보겠습니다.

Luminance 값은

luminance = 0.212671f * r + 0.715160f * g + 0.072169f * b;

이 공식을 사용합니다.

사용자 삽입 이미지


픽셀의 Luminance 값의 Log 평균(기하평균)을 구하고 이것을 기준으로 합니다.

사용자 삽입 이미지

alpha값은 노출값으로 보통 0.18을 씁니다.

사용자 삽입 이미지

[0,1] 사이의 값으로 맞춤니다. a / (1 + a) 연산은 0이면 0이되고 값이 클수록 1에 가깝게 됩니다.

-Gamma Correction
픽셀 데이터의 밝기가 2배가 차이가 나더라도 실제로 모니터로 보면 밝기가 2배차이가 나지 않습니다. 실제 눈으로 볼 때도 선형적으로 밝기차이가 나도록 픽셀 데이터값을 수정하는 것을 Gamma Correction이라고 합니다.

CRT모니터에서 밝기는 아래의 공식을 따릅니다.
d = v^r (r값은 CRT에서는 보통 2.2)

d는 실제 밝기, v는 전압(픽셀값), r은 감마값입니다.

이것을 선형적으로 만들려면

d = {v^{1/r}}^r 과 같이 픽셀값을 그대로 넣어주는 것이 아니라 pow(v, 1 / r) 값을 넣어주면 됩니다.

사용자 삽입 이미지

위 이미지는 www.openexr.com 에서 제공하는 desk.exr파일을 출력한 이미지입니다.

왼쪽은 1.0이상의 값은 1.0으로 고정시켜서 출력했습니다.
오른쪽은 노출을 0.18로 해서 tone mapping을 적용시킨 다음, 감마값 2.2로 gamma correction을 적용시켰습니다.



BLOG main image
 Notice
 Category
분류 전체보기 (27)
life (0)
project (0)
works (24)
misc (0)
study (1)
scrap (1)
review (0)
... (0)
study_cg (0)
 TAGS
CEDEC
 Calendar
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 Recent Entries
 Recent Comments
 Recent Trackbacks
 Archive
 Link Site
바보가 아닌 Mr
V i n t e r s o r g
 Visitor Statistics
Total :
Today :
Yesterday :
rss