공간정보/3D City

Deep Photo - 3D 모델 기반의 사진보정

하늘이푸른오늘 2009. 6. 12. 16:19
아주 신기한 사진 보정 프로그램을 소개해 드리겠습니다. (via Digital Urban)

Deep Photo는 2차원인 사진에 3D 모델을 연결하면, 이를 기반으로 뿌연 안개(haze)를 제거하고, 조명상태를 바꿀 수 있는 프로그램입니다. 심지어 사진에 촬영된 사물이 어떤 것인지 표시해 줄 수도 있습니다.

먼저 뿌연 안개를 제거한 결과를 보여드리겠습니다. 원본과 다른 예는 여기에서 보실 수 있습니다. 뿌연 사진이 원본, 깨끗한 사진은 Deep Photo로 보정한 사진입니다. 아래는 뉴욕시를 촬영한 사진입니다.

사용자 삽입 이미지

기본적인 원리는 사진에 나타나 있는 점을 3D 모델과 연결시키면, 사진에 나타난 모든 점들의 거리를 알 수 있고, 이 거리를 기준으로 뿌연 안개(haze)의 양을 추정하여 제거하는 것입니다. 포토샵 등을 이용해 수작업으로 처리한 게 아니라, 완전 자동으로 처리하는 거죠.

정확한 3D 모델이 존재한다면, 사진과 3D 모델을 연결하는 것은 어렵지 않습니다. 아래 그림처럼 사진과 3D 모델에서 4점 이상 공통점을 찍어주기만 하면 됩니다.


이렇게 3D 모델과 사진이 연결되면, 모든 점들의 깊이(거리)를 알 수 있으므로, 이를 기반으로 Haze 모델을 계산하여 적용시키면 되는 것입니다.


두번째 예는 요세미티 공원의 하프돔(Harf Dome)을 처리한 사진입니다. 다만, 이 사진에서 전경(사람 등)은 마스크처리한 후 처리했는데, 마스킹 작업은 수작업으로 선택해야 합니다. 그런데... 배경이 너무 깨끗하게 처리되는 바람에 사진같이 보이지 않는다는 문제가 있네요~^^

사용자 삽입 이미지

두번째는 조명 상태를 바꾸는 예입니다. 원본은 여기를 들어가 보시면 됩니다. 아래는 뉴욕시인데, 그림자를 잘 보시면 태양의 방향이 다른 곳에 있는 상태로 조정한 것임을 알 수 있습니다. 이것도 너무 잘 처리되는 바람에 사진이 아니라 구글어스나 빙맵(Bing Map)에서 캡처한 기분이 들 정도네요.

사용자 삽입 이미지

기본적인 원리는 먼저 위의 방법으로 헤이즈를 제거한 후, 일단 원하는 시간대에 맞는 하늘 사진을 생성하여 3D 모델에 맞는 LightMap을 제작한 후, 이를 사진에 더한 후 다시 헤이즈를 입히는 방식입니다. 아래그림에서 오른쪽 위에 있는 작은 그림이 모델을 기반으로 LightMap을 생성한 예입니다.


또다른 예입니다. 다시 요세미티입니다. 하늘의 상태에 따라 사진 전체의 색이 달라짐을 보실 수 있습니다. 저는 이게 정말 자동으로 처리된다는 게 너무너무 신기합니다.

사용자 삽입 이미지

====
그런데, 제가 정말 관심을 갖는 것은 이러한 사진처리가 아니고, 사진과 공간정보를 결합하는 것입니다. 사실 생각해보면 간단합니다. 사진에 촬영된 모든 점의 위치를 알고 있으므로, 다른 공간정보를 겹쳐서 보여주는 건 아주 쉬운 일이죠.

아래 그림은 사진상의 선을 지도에 매칭시킨 모습입니다. 오른쪽 아래에 있는 빨간 점이 촬영지점이고요.


아래는 사진에 도로망을 겹쳐서 표시한 모습입니다. 왼쪽 사진을 잘 보시면 건물로 가려진 도로선은 흐릿하게 처리하였음을 알 수 있습니다.


마지막으로 아래는 아우스를 가져가면 그 인근에 있는 건물명을 보여주는 예입니다. 머... 이것도 3D 모델과 사진이 연결되기만 하면 당연히 구현되는 기능이죠.


다만, 아쉽게도 이 프로그램은 현재 연구중인 프로젝트일 뿐입니다. 샘플로 테스트해볼 수 있는 프로그램도 없습니다. 대신 Deep Photo에 관한 자세한 내용은 이 사이트에 들어가시면 보실 수 있고, 이 논문을 읽어보시면 자세한 알고리듬을 알 수 있습니다. University of Konstanz와 마이크로소프트에서 함께 개발중이 모양이네요.

아래는 이 DeepPhoto를 소개하는 비디오입니다. 위에 있는 그림중 상당부분은 이 비디오를 캡처한 것입니다. 제가 설명드린 것외에 다른 기능도 소개되어 있으니 꼭 보시길... 비디오 원본 파일을 다운로드 받아서 보셔도 됩니다.


====
어쨌든... 이 기술을 적용한다면, 길을 가다가 멋진 건물을 찾았을 때, 사진을 촬영하여 서버로 전송하면 이 건물이 어떤 건물인지 정보를 보여주는 기능이나, 아예 사진위에 건물명을 오버랩해서 보여주는 증강현실 기능 등도 구현이 가능합니다.

이렇게 멀리 생각하지 않아도, 얼마전에 네이버에서 새로 발표한 파노라마 사진 서비스에서도 건물등의 지형지물과 지도를 완벽하게 결합할 수 있을 겁니다. 바로 위에 있는 사진처럼 마우스를 올리면 건물명과 링크를 제공하여 준다면 정말 환상적일테고요.

이 Deep Photo 시스템의 가장 핵심은 3D 모델이 얼마나 정확하게 구현되어 있느냐 하는 것입니다. 헤이즈제거 기술이나 조명상태를 바꾸는 기술의 경우에도 3D 모델이 사진과 정확하게 매칭되지 않아서 잘 들여다보면 이상한 부분을 볼 수 있다고 합니다.

우리나라에서도 국토해양부에서 전략적으로 전국 3D 모델을 구축할 계획을 갖고 있습니다. 현재 약 3년간 2500억원 정도를 투자할 계획이죠. 이렇게 3D 모델이 구축되고 이것이 모두 공개된다면, 이처럼 생각하지도 못한 응용분야가 많이 생길 수 있습니다. 빨리 구축되어 민간 기업에서 쉽게 사용할 수 있게되길... 기대해봅니다.

민, 푸른하늘