사진/360 파노라마

기어360 파노라마를 PTGui로 편집하기

하늘이푸른오늘 2018. 3. 11. 00:16

요즘 기어360을 잘 사용하고 있습니다. 아직까지 셀카봉이 도착하지 않아서 손으로 들고만 촬영하기 때문에 손이 이상하게 나온다는 것, 화질이 약간 안좋다는 것 빼놓고는 대체로 만족스럽습니다.

그냥 버튼 하나만 누르면 파노라마 촬영이 끝나고, 약간 번거롭기는 하지만, 쉽게 공유할 수 있기 때문입니다.

하지만, 촬영한 파노라마가 꼭 마음에 드는 건 아닙니다. 원래 기어360의 경우 자이로스코프가 내장되어 있어서 촬영 자세에 관계 없이 수평을 유지시켜준다고는 하지만, 아래와 같이 엉뚱하게 스트칭되는 경우가 있습니다. 360 파노라마 사진에서도 수직선은 유지되어야 하는데, 아래처럼 기울어져 나오면 보기가 부담스러워지거든요.

또한 스티칭과정에서 약간 어긋난다던지 색감이 마음에 안든다던지 하는 경우도 있습니다. 이럴 경우, 어쩔 수 없이 수동으로 스티칭해야 합니다. 

아래는 기어360으로 촬영한 사진 원본입니다. 이 사진을 그대로 PTGui에서 입력해서 자동으로 스티칭해주면 좋겠지만, 아직까지는 그런 방법은 없습니다. 

(추가 :: PTGui 11 beta 판을 테스트해 보니, 이 사진만 읽어들여도 직접 스티칭이 가능해졌습니다. 그러면 아래와 같이 이미지를 두개로 분리하는 번거러운 작업이 필요 없습니다. 나중에 정식판이 나오면 새로 테스트해봐야겠습니다.)

그래서 이 사진을 두장으로 분할해야 합니다. 일단 포토샵으로 이 파일을 읽어들인 후, 좌측과 우측 사진을 별도로 저장합니다. 

참고로 이때 Rectangular Marquee Tool을 사용하되, 고정크기(Fixed Size)로 3888x3888로 만들어 둔 뒤 클릭만 하면 쉽게 범위를 선택할 수 있습니다.

좌우측 사진을 별도로 저장한 뒤에는 PTGui로 이 두장의 사진을 불러들입니다. 그러면 사진에 대한 정보가 없다면서 아래와 같은 화면이 뜹니다. 여기에 아래와 같이 설정하고 OK를 누릅니다.

Focal Length -> 1.2
Crop factor   -> 1

다음은 File -> Apply Template -> Other를 선택하고, 나타나는 폴더에 아래의 파일을 복사해서 넣어줍니다. 참고로 이 template 파일은 구글에서 검색해서 찾았습니다. 

360_template.pts

이렇게 복사해 넣어주면 다음부터 File -> Apply Template -> 360_template으로 선택할 수 있습니다.

그 다음부터는 일반적인 스티칭 방법과 마찬가지로 작업해 주면 됩니다.

===

흠... 그런데... 이 방식으로 Align을 해보면 Matching Point를 제대로 찾아주지 못하네요. 스티칭이 오히려 나쁜 경우도 발생하는 것 같습니다. 

기본적으로 이 방식은 두 개의 이미지의 회전량을 미리 계산하여, template  파일에 저장해 둔 겁니다. 그래서 Align을 시키면 기준점이 없는데도 불구하고 적절한 위치로 찾아가는 거죠. 그런데 기어 360 하드웨어는 기기마다 렌즈의 배치가 조금씩 달라질 수 밖에 없습니다. 따라서 적절한 방식으로 최적의 이미지 회전량을 계산해서 적용해야 하는데, 그냥 다른 사람들이 만들어 둔 값으로는 에러가 발생할 수 밖에 없을 것 같습니다.

일단 방법은... 기준점을 적절히 배치할 수 있는 넓은 장소에서 (가까운 곳에는 아무 것도 없을 수록 좋고, 가능하면 하늘 쪽까지 채워지는 곳) 촬영을 하여 PTGui로 스티칭을 하고, 그 결과를 template 파일로 저장하면 될 것 같습니다. 나중에 한번 시도해 봐야겠네요.

===

(추가 : 새로운 template를 만들어 테스트)

어떤 장소가 좋을지... 많이 고민을 했습니다만, 일단 코스트코 매장에서 촬영한 사진으로 테스트해보기로 했습니다. 매장의 층고가 매우 높아서 어느 정도 시차(parallax) 문제에서 자유로울 것 같아서입니다.

이번에 사용한 영상입니다. 360도 전체가 촬영되니 일단은 만족스럽습니다.

원본 파일을 위에서 설명한 것과 동일한 방식으로 일단 원본파일을 읽어들였습니다. 그 다음 Align을 한번 돌려준 후, 사방을 돌아가며 기준점을 새로 추가했습니다. 아래는 그리고 나서 Align을 돌린 결과입니다.

이 기준점 중에서 반구 위쪽은 제가 입력한 것이고, 아래쪽은 PTGui에서 자동 연결시켜준 기준점입니다. 사실 아래쪽에 있는 기준점들은 카메라와의 거리가 상대적으로 가까운 편이라서 일부러 기준점을 잡지 않았는데, PTGui에서 자동으로 매칭시켜줬습니다.

아래는 기준점 테이블에서 거리를 기준으로 정렬해본 결과입니다. 0-15 까지는 제가 입력한 것이고, 16부터 34까지는 자동으로 생성된 기준점입니다. 따라서 아래에서 아래쪽에는 모두 16번 이상이 나타나리라 생각했는데, 제가 입력한 것과, 자동 생성된 것들이 섞여 나오네요. ㅠㅠ


그래서 이 기준점들을 모두 사용하는 방법과, 제가 입력한 것들만 사용하는 방법 두가지로 나누어 테스트해보기로 했습니다. 

이제 이렇게 기준점을 잡아둔 상태에서 File -> Save As Template를 누르고 적당한 이름으로 저장해줍니다. (기준점을 일부 편집 또는 삭제했다면 반드시 F5를 눌러 Optimize를 수행해야 합니다.) 위에 올려져 있는 360_template.pts이런 방식으로 저장한 것입니다. 

아래는 이 두가지 방식의 Template 파일을 저장한 후, Apply Template을 살펴본 것입니다. gear360_all은 모든 기준점을 사용한 경우, gear360_man은 수작업으로 입력한 기준점만 사용한 경우입니다. 맨위에 있는 360_template는 물론 인터넷에서 입수한 것이고요.

아래는 360_template (인터넷에서 구한 것)으로 테스트한 결과입니다. 1/4쯤과 3/4쯤 되는 곳을 보시면 스티칭 에러가 많이 발생한 것을 보실 수 있습니다. 특히 3/4쪽이 에러가 많네요.

두번째는 gear360_all(제가 입력한 기준점과 자동생성 기준점을 모두 사용)로 테스트한 결과입니다. 위와 비교를 해보면, 확실하게 스티칭 오류가 줄어들었습니다.

세번쨰는 gear360_man(제가 입력한 기준점만 사용)로 테스트한 결과 머... 바로 위와 비교를 했을 때 좋아진건지 아닌지 구분하기 힘들 정도네요. 자세히 확대를 해보셔도 비슷하다는 걸 아실 수 있을 겁니다.

마지막으로... 아래는 Gear360 ActionDirector를 사용해 스티칭한 결과입니다. 다소 충격적인데, PTGui로 열심히 작업한 것보다, 기어360 자체적으로 스티칭한 게 가장 성능이 좋네요. ㅠㅠ

===

결론적으로... 현재까지는... 좀더 좋은 방법을 알게되기까지는 그냥 스마트폰에서 스티칭하거나, ActionDirector를 사용해서 스티칭하는 게 가장 좋은 것 같습니다. (단, ActionDirector를 사용해서 스티칭을 하면 뭔가 알수없는 에러... 라는 게 발생하면서 제대로 360VR로 처리해주지 못하는 것 같습니다. 적어도 구글 포토에서는 지원이 안되네요. ㅠㅠ)

결국... 돌아돌아서 아무 소득도 거두지 못한 셈이네요.. ㅠㅠ

민, 푸른하늘