사진/360 파노라마

HDR 구면 파노라마 제작방법

하늘이푸른오늘 2009. 10. 22. 22:35
구면 파노라마(Spherical Panorama)는 전후좌우 상하를 모두 촬영해야 하므로, 아주 밝은 부분과 아주 어두운 부분이 모두 촬영되는 것이 일반적입니다. 특히 맑은 날에 그럴 확률이 높습니다.

이런 상황에서 아무리 노출을 잘 측정하여 촬영을 하더라도 밝은 부분에 노출을 맞추면 어두운 부분의 디테일이 사라지고, 어두운 부분에 노출을 맞추면 밝은 부분이 번아웃(Burn out)되어 하얗게 되어버리고 맙니다.

이러한 경우에 대처하는 가장 좋은 방법은 자동노출 브라케팅(AEB : Auto Exposure Bracketting)으로 촬영을 하여 이를 HDR(High Dynamic Range)기법으로 합성하는 것입니다.

일단 제가 만든 HDR 구면파노라마 하나를 보여드리죠. 아래 구면파노라마는 제주도 송악산 인근에 있는 인공동굴입니다. 일본군들이 패망하기 직전 가미가제 하려고 주민 동원해서 팠다고 합니다. 가운데 부분은 바깥이고, 나머지는 동굴 내부라서 일반적으로 촬영하면 두군데중 하나는 안보이지만, HDR 기법으로 처리했기 때문에 모두 보이는 겁니다. 클릭해서 직접 보시면 굴 제일 안쪽까지 모두 확인하실 수 있습니다.

사용자 삽입 이미지

일단 기본적인 방법은 예전에 쓴 PTGui에서 브라케팅영상 처리하기에서 설명했었는데, 요즘 계속 같은 방법으로 촬영을 하면서 안정적으로 촬영하고 처리할 수 있게 되었고, 몇가지를 추가했는데 이를 정리하고자 합니다. 참고로, PTGui Pro 버전에서만 HDR 처리가 가능합니다. (박제성님 감사합니다)

HDR 구면 파노라마 촬영


우선, HDR 구면 파노라마를 촬영하려면 수동(M)으로 설정하고 촬영하되, 자동 노출 브라케팅(AE Bracketting)을 사용하여 과다노출/정상노출/부족노출 되도록 여러장의 사진을 촬영해야 합니다.

제가 현재 촬영하는 방법은 우선 조리개를 8로 고정하고, 어두운 곳과 밝은 곳이 고루 섞여 전체적으로 평균쯤 되는 곳을 기준으로하여 측광을 하여 노출시간을 결정한 후, -3부터 +3까지 총 7장을 브라케팅 촬영하고 있습니다.

아래는 촬영한 결과입니다. 자동노출 브라케팅을 사용하여 촬영한 사진들을 PTGui Pro에 모두 넣고 돌리면, 각 노출별로 처리된 결과와 전체를 HDR로 합성한 것 모두 만들 수 있습니다. 아래는 노출별로 처리된 7세트입니다.


위 사진에서 노출이 부족한 (가장 어두운) 사진일수록 하늘의 질감이 살아나 있으며, 과다노출(가장 밝은) 사진일수록 그림자부분이 잘 구분됨을 알 수 있습니다. 이처럼 밝은 부분과 어두운 부분이 섞여 있는 장면에서는 자동 노출 브라케팅을 촬영하여야 그나마 부분적으로나마 디테일이 기록됩니다.

HDR 구면 파노라마 제작을 위한 PTGui 설정


우선, PTGui에서 스티칭을 할 때는 바닥부분을 제외하고 모든 세트를 한꺼번에 불러들입니다. 그 다음 Align images...를 누르면 아래와 같은 창이 뜨는데 그림과 같이 설정합니다.


윗부분에 있는 세가지 옵션중 첫번째는 삼각대를 사용하여 오토브라케팅했을 때, 두번째는 삼각대 없이 오토브라케팅했을 때에 선택하라고 되어 있습니다. (이 두가지를 모두 사용해 봤는데, 그다지 차이가 느껴지지 않았습니다.)

아래쪽에 있는 HDR 방법은 "Exposure Fusion" 방법을 선택합니다. Exposure Fusion은 원래의 HDR 파일을 만들어주는 대신, 노출값을 판단하여 적정한 노출이 되는 부분을 판단하여 바로 합성된 영상을 만드는 방법입니다. 머... 간이형 HDR이라고 할 수 있는데, PTGui에서는 LDR로 표현되어 있습니다. "True HDR"을 선택하면 HDR 전용 파일이 만들어지고, 이 파일을 Tone Mapping 이라는 방법을 통해 조정해야 하는데, 저는 아직까지 해보지 않았습니다.

어쨌든... 이렇게 설정을 한 뒤 "OK" 버튼을 누르면 자기가 알아서 세트별로 동일한 위치가 되도록 정렬해 줍니다. Align이 완료된 후 오른쪽 위에 있는 "Advanced>>" 버튼을 누르고 "3. Create panorama..." 버튼을 누르면 아래와 같은 화면이 뜹니다.


여기에서 LDR 파일포맷은 .psb로 저장합니다. 여러세트를 촬영하고 중간결과까지 모두 저장하므로 파일의 크기가 무척 큽니다. 그래서 .psb가 가장 안정적입니다. 바로 오른쪽에 16bit 파일로 저장하도록 설정해 두었는데, 중간에 영상을 편집하게 되면 16비트로 저장하는 것이 좋을 것 같아서 일단 이렇게 처리하고 있습니다.

그 바로 밑에는 LDR 옵션에서 각각의 원본 영상을 변환한 것, 세트별로 합성한 파노라마, 세트 전체를 모아 Exposure fusion을 적용한 파노라마 등을 모두 저장하도록 설정했습니다. 맨 아래에 있는 옵션인 "Enblend plugin"은 구면 파노라마의 고스트현상을 없애는 방법이라는 글을 참고하세요.

HDR 파노라마 처리 결과 비교


아래는 세트별로 합성한 파노라마와, Exposure Fusion 방식으로 합성된 사진을 보인 것입니다. 아래위로 비교를 해보면 Exposure Fusion이 꽤 쓸만하다는 걸 아실 수 있을 것입니다.



특히 윗 그림에서 오른쪽 윗부분을 비교해 보도록 하겠습니다. 빨간 테두리를 쳐둔 것이 Exposure Fusion으로 합성된 것이고, 나머지는 그냥 스티칭만 된 것들입니다. 최고의 품질 같지는 않아도 80점 이상은 줄 수 있을 것 같지 않습니까?


그런데... 특히 그늘 부분을 살펴보면, Exposure Fusion으로 합성한 것이 훨씬 품질이 좋은 것을 알 수 있습니다. 아래는 Exposure Fusion 한 것을 정중앙 부분만 100%로 저장한 것입니다.

사용자 삽입 이미지

아래는 명도가 노출이 중앙 정도인 스티칭 사진입니다. 위의 사진과 비교를 해보면 전체적으로 콘트라스트가 떨어진다는 것을 느끼실 것입니다.

사용자 삽입 이미지

제가 요즘 용량도 7배 이상이고, 처리시간도 상당히 걸림에도 불구하고 자동노출 브라케팅 + HDR를 찍는 것은 이처럼 품질의 차이가 너무 눈에 띄게 드러나기 때문입니다. 한번 맛을 보고 나니... 다시 되돌아 갈 수 없다는... 그래서 사진 처리가 너무 시간이 많이 걸린다는... ㅠㅠ

HDR 파노라마에서 고스트 현상 제거하기


그런데, 모든 사진을 합성한 결과를 확대해 보면 상태가 별로 안좋습니다. 특히 사람처럼 움직이는 물체가 있으면 자동 노출 브라케팅 촬영 과정에서 약간씩 다른 위치에서 촬영되므로,  아래처럼 무조건 고스트 현상이 발생하게 됩니다. (위 사진에는 고스트현상이 별로 없어서, 다른 사진을 사용하겠습니다.)

사용자 삽입 이미지

이런 현상은 바람이 전혀 없고, 사람이 전혀 없다면 모를까 어쩔 수 없이 발생할 수 밖에 없습니다. 머... 할 수 없죠. 포토샵에서 편집을 해야죠. 원래 고스트 현상이 발생한 사진을 포토샵으로 처리하는 방법은 예전에 써둔 글을 참고하시면 되는데, 그런데, 구면 파노라마에서는 한가지를 더 고려해야 합니다. HDR로 합성된 사진과 완전히 동일한 상태를 가진 스티칭 사진이 없다는 뜻입니다.

아래 그림에서 배경... 그러니까 계단 부분을 잘 보시면 왼쪽과 오른쪽이 약간 명도 혹은 채도 차이가 납니다. 사실 이정도는 거의 차이가 없다고 볼 수 있을 정도고요, 엄청나게 차이가 심한 경우도 꽤 발생합니다.


어쨌든... 이런 현상이 발생하면 저는 오른쪽과 같이 원본이 있는 곳을 찾아서 이 부분만 복사해서 새로운 레이어로 만들고, 이 새로 생긴 레이어를 배경의 색조가 비슷하도록 맞춰 준뒤 마스크를 덧쓰운 다음 처리하는 방식을 사용합니다. 아래에 자세히 설명드리겠습니다.

우선... 살리고 싶은 영상이 있는 레이어를 찾은 후, 필요한 부분만 복사>붙여넣기를 합니다. 그러면 아래 그림처럼 약간의 차이가 느껴지겠죠.


다음으로 이 레이어를 선택하여 Image > Adjustment > Brightness/Contrast, 혹은 Image > Adjustment > Hue/Saturation을 사용하여 배경의 색조와 맞춰줍니다. (아래 그림에서 상체는 비슷해졌지만, 다리쪽을 보면 더 차이가 심해졌습니다. 이럴 경우엔 두부분으로 나누어 작업을 해야 합니다.)


그 다음 이렇게 생성한 레이어에 레이어 마스크를 추가한 뒤, 까만색을 채워버립니다. 아래는 레이어 상태인데, 화면은 처음 상태로 돌아가겠죠.


이 상태에서 마스크를 선택한 상태에서 하얀색 브러시로 살살 칠해주면 고스트 현상을 말끔히 처리할 수 있습니다. 아래는 다리쪽 부분에서 약간 잘못된 부분(halation)이 보입니다.


아래는 마스크중의 상태를 보인 것입니다. 하얀 부분만 보이고, 까만 부분은 보이지 않습니다. 이런 방법을 반복 사용하여 군데군데 있는 고스트 현상을 처리해 주면 됩니다.


아래는 최종 처리를 완료하고 360cities.net에 올린 것입니다. FullScreen을 누르면 전체화면에서 감상하실 수 있습니다.


이상입니다. 요즘 이렇게 몇 번 촬영하다보니까 나름 익숙해져서 매번 촬영을 나갈 때마다 자동노출브라케팅 촬영을 하고, 모든 사진을 HDR 기법으로 처리하고 있습니다. 다만 이렇게 하다 보니까 몇 가지 문제가 있습니다.

먼저 사진기 메모리가 턱없이 부족합니다. 현재 8GB 메모리를 사용하는데, 이런 방식으로 촬영하면 FINE모드 JPEG으로 기껏해야 15노드 정도 촬영하면 메모리가 꽉 차버립니다. 그래서 사진 품질을 조금 낮춰서 저장하는 것이 어떨까... 심각히 고민 중입니다. 아니면 이미지 저장장치를 따로 구입해야 할 듯 싶고요.

그 다음엔... 처리시간이 좀 많이 걸립니다. 구면 파노라마때문에 두달전쯤 PC를 새로 구입했지만, HDR 처리까지 하려니 시간이 상당히 걸립니다. 한 노드를 합성하는데 대략 1시간 반 정도 걸리는데... 머... 이건 Batch 처리를 하니까 괜찮지만, 합성된 포토샵파일을 읽어들이는데만 30분 이상 소요됩니다. 이해가 안되실지 모르지만... 8,000*4,000, 16bit로 저장하면 한 노드당 약 4.5GB 정도씩 차지를 해서 읽어들이는 게 장난이 아닙니다. ㅠㅠ

그래도 삼각대까지 완전하게 준비를 해 나가면 당연히 HDR로 촬영할 예정입니다. 위에서도 말씀드렸지만, 한번 해보면 품질 때문에 예전처럼은 작업하지 못하겠네요~~

민, 푸른하늘