사진/360 파노라마

구면(360*180) 파노라마 - PanoTools로 바닥 처리하기 완결편

하늘이푸른오늘 2010. 3. 26. 08:47
구면 파노라마를 제작할 때, 가장 까다로운 부분 중의 하나가 바닥을 처리하는 것입니다. 360*180 VR 파노라마 촬영방법에서 설명한 것처럼, 삼각대와 로테이터만 있으면 모든 방향을 빠짐 없이, 정확하게 촬영할 수 있습니다.

하지만, 바닥은 삼각대를 치우고 손으로 촬영하여야 하기 때문에 카메라의 가상 렌즈초점(노달 포인트)를 맞출 수 없습니다. 따라서 합성(스티칭)을 하면 뒤틀어지거나 촬영자가 남게 되는데, 이를 편집하기가 까다롭기 때문입니다.

그러다보니 지금까지 제가 바닥을 처리하는 방법에 관해 쓴 글이 아래와 같이 5개나 됩니다.
현재 제가 사용하는 방법은 맨 아래에 있는 글, 즉 포토샵에서 Panotools 플러그인을 이용해 바닥을 처리하는 방법을 사용하고 있습니다. 그런데, 이 글을 쓴 뒤 계속 적용해 보면서 약간씩 방법을 개선해 왔기 때문에 다시 정리하기로 했습니다.

PanoTools Plugin 설치방법


먼저 Panotools 최신버전(2007년 4월 버전)은 여기에서 다운로드 받을 수 있습니다. 읽어보기 귀찮으시면 PanoTools12_2007Apr25.zip 파일을 다운로드 받으신 후 압축을 풀고, setup.exe를 실행시키기만 하면 됩니다. 이 프로그램을 실행시키면 Windows/system32 에 pano12.dll이라는 파일이 복사되고, 포토샵 프로그램에도 아래와 같은 디렉토리가 자동 생성됩니다. (기타 여러가지 도구도 설치됩니다.)

C:\Program Files\Adobe\Adobe Photoshop CS2\Plug-Ins\Panorama Tools

참고로, 구버전 사용법(예 : cubicpan.co.kr의 매뉴얼)을 보면 PanCntrl.zip 이라는 파일을 별도로 받아 위에서 생성된 디렉토리에 복사해서 넣어주라고 되어 있지만, 전혀 그럴 필요가 없습니다.

또 가끔 pano12.dll이 잘못되었다는 에러가 발생하기도 하는데, 이 경우엔 2005년 버전의 pano12.dll 을 다운로드 받아서, 윈도즈 system32 폴더(예 :
C:\Windows\system32) 에 설치하면 됩니다.

이런 준비를 마친 후, 포토샵을 실행시키면 Filters 메뉴  하단에 아래와 같이 "Panorama Tools"라는 메뉴가 추가됩니다.

사용자 삽입 이미지

PanoTools Plugin 사용방법


PanoTools에 들어 있는 4가지 필터중, 바닥처리에 사용되는 필터는 PTAdjust과 PTRemap 두가지입니다. 그중에서도 가장 핵심은 PTAdjust로서, 이 필터를 실행시키면 아래와 같은 다이얼로그 박스가 뜨는데, 먼저 Prefs 단추를 눌러줍니다.

사용자 삽입 이미지

이 버튼을 누르고 들어가면 아래와 같은 화면이 뜨는데, 결과 파일을 처리하는 방식을 설정할 수 있습니다. 대략 아래 화면에서 보이는대로 설정하면 문제없이 사용하실 수 있습니다. 특히, 기존 나와있는 방식에서는 (a)를 체크하라고 되어 있지만, 그럴 필요가 없습니다. (a)를 체크하면 원본 영상이 변환된 영상으로 대체되는데 이 영상은 필요가 없기 때문입니다. (a)를 클릭하지 않으면 원본 영상이 계속 남아 있게 됩니다.

사용자 삽입 이미지

이렇게 설정한 후 OK 단추를 누르고, 다시 "Set" 단추를 누르면 다음과 같은 화면이 나옵니다. 왼쪽 밑에 있는 Width, Height 는 원본 파노라마의 크기를 입력하시면 되고, 그 바로 위에 있는 Width, Height는 1/4로 설정하면 됩니다. 저는 요즘 파노라마를 8000*4000 크기로 제작하기 때문에 아래와 같이 설정을 했습니다.

사용자 삽입 이미지

이렇게 설정을 한 뒤 OK 버튼, 또다시 OK 버튼을 누르면 다음과 같은 화면이 나오면서 처리가 진행됩니다.

사용자 삽입 이미지

아래는 제가 얼마전 올림픽공원에 들렀다가 촬영한 영상입니다.

사용자 삽입 이미지

아래는 이렇게 실행한 (PTAdjust 플러그인에서 extract를 선택하고 실행한 상태) 결과입니다. 보시는 것처럼, 삼각대와 로테이터를 수직으로 내려보는 상태로 변환되었습니다.

사용자 삽입 이미지

이처럼 바닥이 특징이 없는 사진들의 경우엔 그냥 포토샵에서 스탬프(Clone Stamp) 도구로 비슷한 부분을 복사해서 붙이는 것이 가장 좋습니다. 아래가 그 결과입니다.

사용자 삽입 이미지

이렇게 바닥처리가 완료되면 이것을 원래 파일에 다시 붙여줍니다. 이때, 필터(Filter) -> Panorama Tools -> PTAdjust 를 누른 후, 아래와 같이 Insert를 선택하고 OK를 눌러주면 됩니다.

사용자 삽입 이미지

아래가 그 결과입니다.  그림자가 길 경우 아래처럼 사진기의 모습이 남아 있는데, 이 상태에서 스탬프(Clone Stamp) 도구를 써서 조금만 더 편집을 해주면 됩니다.

사용자 삽입 이미지

아래는 모두 완성된 360도 구면 파노라마를 삽입시켜 본 것입니다. 가운데 있는 삼각형을 누르신 후, 좌측위의 Full Screen을 누르고 마우스로 드래그 하시면 전체를 둘러볼 수 있습니다.


바닥을 다른 사진으로 교체할 때


위의 사진은 바닥이 잔디밭이라서 대충 비슷한 것을 복사해 넣기만 하면 그럴 듯하게 땜빵할 수 있습니다. 그래서 가능한한 구면 파노라마는 바닥이 무늬가 없이 단순한 곳에서 촬영하는 것이 좋습니다. 그렇지 않은 경우에는 바닥면을 별도로 촬영하고 이 사진을 이용해 땜빵 해야 합니다. 사실 이 작업은 적잖이 귀찮기도 하고 초보자들은 매우 어렵습니다. 저도 한 200장 정도 처리하고 나니까 어느정도 자신이 생겼을 정도입니다. 어쨌든 이런 경우를 처리하는 방법에 대해 설명드리겠습니다.

이번엔 아래 파노라마 사진을 사용해서 처리해 보겠습니다. 이 사진도 올림픽 공원에서 촬영한 것입니다.

사용자 삽입 이미지

이 사진에 PTAdjust 필터를 걸면 아래와 같은 바닥이 만들어집니다. 이런 경우를 스탬프 툴로 복사해서 그럴듯하게 때우는 건 거의 불가능에 가깝습니다.

사용자 삽입 이미지

아래는 제가 촬영한 바닥사진입니다. 그런데, 이 사진을 그냥 사용할 수는 없습니다. 10.5mm 어안렌즈를 사용하여 촬영했기 때문에 아래에서 보시는 것처럼 바닥선이 왜곡되어 있거든요.

사용자 삽입 이미지

Filter -> Pano Tools -> PTRemap을 실행시키면 아래와 같은 화면이 뜨는데, 좌측에서 Fisheye Hor. 우측에서 Normal을 선택하면 어안렌즈로 촬영한 사진의 왜곡을 바로잡아 줄 수 있습니다. 아래에 있는 HFOV와 VFOV 값은 렌즈의 종류에 따라 달라지는 값으로서, 박제성님이 운영하시는 HDVR Panorama 사이트의 파노라마 렌즈 데이터베이스를 참고하시면 됩니다. 제가 가지고 있는 니코르 10.5mm 어안렌즈는 아래와 같이 설정하면 되고요.

사용자 삽입 이미지

이 상태에서 OK를 눌러주면 아래와 같이 왜곡이 사라집니다. 이런 과정이 불편하시면 바닥사진만 일반렌즈로 갈아끼우고 촬영할 수도 있습니다만, 아무래도 번거럽겠죠.

사용자 삽입 이미지

이 파일에서 삼각대/그림자가 차지하고 있는 부분을 적당히 잘라내고, PTAdjust로 만들진 바닥사진에 붙여넣어줍니다. 그리고 투명도를 50%정도로 설정하면 아래와 같게 됩니다.

사용자 삽입 이미지

대부분 PTRemap으로 만들어진 영상의 크기가 크기 때문에, 크기를 대략 맞춰주고 회전을 시켜 가면서 가능한 한 비슷한 위치에 맞춰주어야 합니다. 이때는 Edit -> Free Transform 을 사용하여 처리합니다. 크기를 줄여줄 때에는 shift를 눌린 상태에서 핸들을 조정해야만 가로세로가 동일한 비율로 줄어듭니다. 아래는 이 과정을 통해 대략 위치를 맞춰본 것입니다.

사용자 삽입 이미지

이 정도로만 맞춘 후, 아래와 같이 사용할 부분을 선택한 후 control+J를 눌러주면, 선택한 부분이 새로운 레이어로 복사됩니다. 방금전 사용했던 영상은 보이지 않게 꺼버립니다.

사용자 삽입 이미지

이 상태에서 촬영한 바닥이 평면일 경우, Edit -> Transform -> Distort를 사용하면 정확하게 맞출 수 있습니다. 평면이 아니라면 약간 오차가 발생하겠지만, 그래도 대략은 맞출 수 있습니다.

모서리에 있는 핸들을 사용하여 그 모서리에 가능한 한 가까이 있으면서 명확히 구분되는 점을 일치시켜주고, 다음 모서리에서 같은 작업을 해주고... 하는 방식으로 2-3 바퀴정도를 체크해 보면 아래와 같이 완벽하게 일치가 됩니다.

사용자 삽입 이미지

이렇게 일치 시키기만 하면 나머지 편집은 간단한 편입니다. 아래와 같이 먼저 레이어 아래에 있는 "Add Vector Mask"를 눌러 전체를 안보이게 만든 후, 마스크(Mask) 부분에 흰색을 그리면 됩니다.  (이렇게 편집하는 방법은 구면 파노라마의 고스트현상을 없애는 방법에서 설명한 것과 동일합니다.) 물론 이런 방식 말고도 편집할 수 있는 방법은 아주 많을 겁니다. 편한 방법을 사용하시면 됩니다.

사용자 삽입 이미지

이렇게 작업하다가 색이 약간 다르다 싶으면 Image -> Adjustments -> Hue/Saturation 을 사용하여 조정해 주고, 또 부족한 부분이 있다면 스탬프 도구를 사용해서 편집해 줘야 합니다. 작업이 끝난 뒤에는 Layer->Flatten Image를 눌러줘서 합쳐줘야 합니다. 아래는 편집 결과입니다.

사용자 삽입 이미지

마지막으로 이 바닥을 원본에 다시 넣는 작업은 PTAdjust -> Insert 를 선택한 뒤 OK를 눌러주면 되는데, 위에서 설명한 것과 동일합니다.

사용자 삽입 이미지

아래는 완전히 작업을 끝낸 뒤 완성된 구면 파노라마입니다. 좌측 위에 있는 Full Screen을 누르고 보시면 좋습니다.


====
이상입니다. 복잡해 보이기는 하지만, 한 두번만 연습해 보시면 다른 어떤 방법보다도 정말 확실하게 바닥을 처리할 수 있습니다.

그런데... 얼마 후 발매될 포토샵 CS5에 탑재될 예정이라는 "알아서 채워주기(Context-aware fill)" 기능이 있으면 이런 복잡한 과정없이 그냥 선택해서 지워주기만 하면 바닥처리는 완벽하게 될 것 같은 기분입니다. 무슨 뜻인지는 이 글을 읽어보시면 됩니다. 그냥 아래에 삽입한 비디오만 보셔도 이해가 되실테고요.



정말 Context-aware fill, 즉 주변상황을 고려하여 자동으로 채워주는 기능이 들어온다면... 제가 기껏 써둔 이글이 아무 소용없게 될지도 모르겠습니다. (사실은 그럴지도 모르겠다 싶어 미리 써둔 것이라는...)

그래도 저는 이 기능이 4월 12일날 발매된다는 CS5에 반드시 들어갔으면 좋겠습니다. 바닥처리 외에도 유령처리, 렌즈 플래어 처리 등... 적용할 수 있는 곳이 엄청 많을테니까요. 정말 기대됩니다. 그리고... 귀찮은 작업들이 사라진다면 훨씬 더 많은 사람들이 쉽게 360도 구면 파노라마를 만들 수 있게 되지 않을까... 하는 생각도 들고요.

민, 푸른하늘