1. 50% 회색을 컴퓨터 상의 RGB값 (0~255) 로 표시하면 얼마일까? (참고로 128, 128, 128 이 아님)
2. 컴퓨터 그래픽에서 말하는 HDR 과 사진에서 말하는 HDR이 반대인 이유가 뭘까?
3. 디카에서 사진을 찍을 때 화이트 밸런스는 왜 하는 걸까? 디카의 센서가 빛을 잘못 잡는걸까?
4. DSLR과 필터를 이용해서 물체의 재질에서 스페큘러 맵을 분리하는 방법은?
5. 흰색의 정의가 뭘까?
imcgames 의 김학규입니다
2번 CG에서 HDR은 카메라는 고정, 광원을 조절하지만 / 사진에서 HDR은 당연히 광원이 고정이고 카메라를 조절하기 때문
5번 가시광선 영역의 모든 파장을 반사해내는 표면이 우리눈에 보이는 색깔. 반대로 검은색은 모든파장을 흡수하는 색깔.
나머지는 신중하게 고민좀 해야할듯.
1. 127.127.127
2. 지석님 답변이 맞는거 같은뎅...
3. 이건 상황에 따라 다르니깐 애매하군요..고객이 하얀 도화지 사진을 원하는데 사진을 촬영하는 광원이 백열전구라면 이런경우 화이트 밸런스를 안하면 노란 도화지가 나온잔음요...
4. 난 그냥 실사 사진을 흑백으로 변환 시키고 걍 내 감으로 반사될 부분을 리터칭하는데..뭔가 방법이 있나 보군염..
5. 고온의 에너지 방출체에서 발생하는 광 전자기파 연속 스펙트럼의 총합을 인간의 가시대역에 감지하는 파장을 모두 더한 값.
3.풍뎅님 의견에 동의 카메라 센서가 빛을 잘못 잡는것이 아니라 광원의 문제로 광원의 색온도에 따라 같은 흰색을 찍어도 누리끼리 하다던가 푸르딩딩 하다던가 할수있는데 이것을 유저가 원하는대로 보정 할수있도록하는 기능.
5.흰색의 정의는 모든 가시광영역의 파장을 반사되었을때 보이는 색. 이라고 정의 되지만 실제로 사람이 눈으로 느끼는 흰색은 좀 다를수 있다고도 생각되네요. 일단 색온도는 6500K(?)에서 보는 흰색이 기준이 였던것 같고. 실제로 RGB 조합 만으로도
사람에게 흰색을 볼수있도록 하니 사람이보는 흰색의 정의는 경우에 따라 차이가 날수도 있지 않을까 생각되네요.
2번의 답 : 카메라의 HDR은 표현영역의 DR 은 그대로 두고, 대상영역의 DR 을 늘리는걸 의미하고, 컴퓨터 그래픽의 HDR은 대상영역의 DR은 그대로 두고, 표현영역의 DR 을 늘리는 것을 의미함. 대상영역 -> 표현영역을 대응시키는 것을 Tone Mapping 이라고 하는데, 표현영역의 넘친 부분을 Bloom 필터로 표현함.
3번의 답 : 카메라의 센서는 절대적인 색정보를 인식하지만, 사람의 시신경은 상대적인 색정보에 더 집중하게 되어 있음. 예를 들어 주변이 온통 붉은 환경 안에 있으면 우리 눈은 상대적으로 덜 빨갛게 사물을 인식하게 됨. 보통의 사진은 작은 화면이나 필름을 통해 보게 되기 때문에 적응이 된 것까지 감안해서 나타내는게 더 편안해보임
4번의 답 : 편광필터를 이용해서 사진을 찍고, 편광필터 없이 사진을 찍은 다음에 포토샵에서 차이를 계산해서 추출. 예제는 filmic games 의 Everything is shiny 참고
5번의 답 : 가시광선 스펙트럼의 모든 부분을 담고 있는 것이 백색. 참고로 형광등의 백색은 분광기(프리즘과 비슷한 원리의 색파장 분리도구)로 색을 나눠봤을 때 스펙트럼 사이가 띄엄띄엄 끊어져 있지만, 태양광은 스펙트럼 속이 꽉 차 있음. 구름없는 날 정오의 태양광이 가장 사람이 객관적으로 느끼는 백색에 가까움.
채이도훈아빠// 좋은 글 감사드립니다. ^^;
그런데, 제가 1번 문제의 답이 이해가 잘 안가서요. 그림판으로 한번 이미지 파일을 만들어봤거든요.
여기서 병치혼합한 부분이 128로 칠한 부분보다 187로 칠한 부분과 더 흡사하다는 말씀이신 거지요?
제 육안으로는 확실하게 잘 모르겠어서요. ㅡ.,ㅡ;;;
혹시 픽셀쉐이더 안에서 그려서 봐보라는 말씀이신 건가요?
모니터 감마설정을 바꿔가면서 봐보기도 했고 아이폰4 가지고 있는 걸로도 봐보고 그랬는데요. 아무리 봐도 128쪽에 더 가까워 보여서요. ㅡ.,ㅡ;;;
PS에서 50과 50을 더해서 화면에 출력했을 때 이게 100보다 더 밝은 지는 어떻게 확인할 수 있나요? 눈으로 감으로 확인할 수 밖에 없나요?
출력된 화면에서 컬러값 찍어서 확인해봐도 아마 100일 것 같고, 포토샵이나 그림판에서 100인 컬러와 비교해봐도 그냥 같아 보일 것 같은데요. ㅡ.,ㅡ;;;;
전 혹시 PS에서 컬러값을 읽어올 때, 50인 이미지가 감마보정(감마인코딩?) 때문에 50보다 큰 값으로 들어와서 그냥 그 입력값으로 픽셀프로세싱을 해주면 안되고
선형공간으로 감마디코딩해서 픽셀프로세싱하고 나서 다시 감마인코딩해서 PS로 출력해줘야 감마보정으로 인한 픽셀프로세싱 오류가 발생하지 않는 게 아닐까?
하고 생각하고 있었거든요. 제가 관련 작업을 제대로 담당해본 적이 없고 심도있게 공부해 본 적도 없어서 순전히 추측이긴 한데요. ㅡ.,ㅡ;;;
요 며칠 좀 바빠서 테스트나 확인을 못하고 있고요. 월요일 즈음에 한번 해볼려고 생각 중입니다. 김학규님의 이 글을 시작으로 최근 트위터에서 관련 내용으로
난리(?)가 나서 저도 되게 궁금해 하고 있는 중이거든요. ㅋ
제가 궁금한 건, 128로 이미지를 저장하면 감마보정이 되어서 더 큰 값으로 저장이 된다고 해도 화면에 출력하면 모니터의 컬러 왜곡으로 상쇄되어 정상적인 50% 회색이
나오지 않을까 싶어서요. 그런 결과를 얻으려고 감마보정을 하는 게 아닌가 싶거든요.
김학규님께서 하신 말씀은 PS에서 128로 출력하면 안되고 187로 출력해야 50%의 회색이 나온다 라는 말씀이신 것 같아요. 제가 지금 테스트/확인을 할 수 없는 상황이라
그냥 상상만 하고 있는 중이지만요. ㅡ.,ㅡ;;;;
윽... 되게 궁금한데 확인해볼 수도 없고 달리 물어볼 데도 별로 없으니 환장하겠네요. ㅡ.,ㅡ;;;
PS 내에서 뿐 아니라 그냥 텍셀정보 읽어올 때도 감마보정된 결과값이 넘어오는 지 그것도 궁금하고 그러네요.
Unity3D에서 텍스쳐 import할 때, 밉맵체인 생성해주면서 감마보정을 할 지 안할 지 결정하는 옵션이 있는 것 같던데,
텍스쳐의 감마보정 여부와 관계없이 밉맵체인만 감마보정을 따로 할 수도 있고 안할 수도 있는 건 지도 궁금하고요.
만약 그렇다고 하면 PS 내에서의 처리가 골때려질 것 같아서 좀 뭔가 이상하긴 한 거 같은데요. ㅡ.,ㅡ;;;;
혹시 누구 아시는 분 있으시면 답변 주시면 감사하겠습니다.
제가 테스트로 알아 볼 수 있는 것도 있고 아닌 것도 있는 것 같아서요. ^^;
랩하는좀비//
답변 대단히 감사드립니다!!!
굉장히 성의있게 답변해주시네요. 복 받으실 꺼예요.^o^
거의 대부분의 궁금증들을 해결해주시네요. ㅋ
지금까지 참여했던 프로젝트의 픽셀프로세싱은 다들 콘트라스트 문제가 발생했었겠네요. ㅡ.,ㅡ;;;; 덴장 ㅋ
이제 다음의 의문점들(?)만 남았는데요.
1) PS안에서가 아닌 텍셀로 이미지 프로세싱할 때도 감마보정으로 인한 컬러값 왜곡 현상이 발생하는 지 (아마 그럴 것 같고요.)
2) Unity3D의 밉맵체인 생성시의 감마보정 옵션의 의미하는 건 대체 무엇인지,
텍스쳐 원본(?)과 밉맵체인 감마보정 처리가 다를 경우 PS 등에서 구분해서 감마재보정(?) 처리를 해줘야 하는 건지 어떤 건지 ㅡ.,ㅡ;;;
구분해서 처리해야 한다면 그 구분 방법은 무엇인지.
3) 알파값은 감마보정 대상이 아니라던데, 그럼 감마재보정(?) 처리를 해줄 필요가 없는 게 맞는지 (이것도 아마 그럴 것 같네요.)
4) 이미지 편집 프로그램에서 이미지 저장할 때 노멀맵이나 그레이이미지 같은, 컬러 처리를 위한 이미지가 아닌 경우 감마보정을 안해준다는 글을 인터넷에서 봤는데요.
이게 사실인지, 만일 사실이라면 PS 등에서 구분해서 처리를 해줘야 하는 건지 어떤 건지.
5) 이미지 편집 프로그램에서 텍스쳐를 만들고 저장할 때 감마보정을 안하게 해줄 수가 있는 지, 만일 가능하다면 쓸데없는 부하 낭비를 피할 수 있는 경우도 있을 것 같아서요.
물론 경우에 따라서 관리 측면에서의 어려움이 발생할 수도 있겠지만요. ㅡ.,ㅡ;;;
김학규님과 '랩하는좀비'님 덕에 좋은 걸 배워가네요. ㅋ
다시 한번 두 분께 감사드립니다. ^o^
저도 위에서의 의문점들을 해결하고 나면 여기에다가 마저 정리해서 올려놓도록 하겠습니다.
혹시나 저처럼 궁금해 하시는 분들이 계실까봐서요. ㅋ
테스트를 해보았는데요. 예상 외의 결과가 나왔네요. 당혹스럽습니다. ㅡ.,ㅡ;;;
포토샵에서 128의 50% 회색 이미지를 만들어서 저장해서 Unity3D로 테스트 해보았습니다.
1) PS안에서가 아닌 이미지 정보를 읽어와서 텍셀의 컬러값을 확인해봤는데요.
187에 해당하는 값일 꺼라고 생각했는데 그냥 0.5네요. ㅡ.,ㅡ;;;
2) 그래서, 쉐이더 코드 내에서는 달라지겟거니 하고 Unity3D의 쉐이더 언어인 ShaderLab으로 확인해봤는데,
그것도 0.5인 것 같습니다. 0.5로 출력했을 때 128값의 회색이 그려지고요. ㅡ.,ㅡ;;;
3) ShaderLab이라서 그런가 보다 하고, Cg로 작업해봤는데요.
이것도 결과는 마찬가지입니다. ㅡ.,ㅡ;;;;
Unity3D로 테스트해본 거라 다이렉트X 등에서는 결과가 다를 수도 있겠지만요.
아마도 마찬가지이지 않을까 싶거든요.
그래서 제가 내린 결론은 이렇습니다.
감마보정 문제는 엔진 선에서 혹은 API 선에서 알아서 처리해주는 게 아닐까,
실무 프로그래머는 픽셀프로세싱할 때 그냥 신경안쓰고 작업해도 되는 게 아닐까, 싶습니다.
소프트웨어 렌더러 같은 걸 따로 만들거나 할 때나 신경써야 하는 부분이 아닌가 싶어요.
혼란스럽네요. ㅠ ㅠ 윽
http://filmicgames.com/