레이블이 기타인 게시물을 표시합니다. 모든 게시물 표시
레이블이 기타인 게시물을 표시합니다. 모든 게시물 표시

2009년 8월 25일 화요일

컴퓨터를 바꿨습니다.

요즘 구면 파노라마를 촬영하는 일이 늘어나다 보니까, 컴퓨터의 성능이 점점 문제가 되었습니다.

특히, 3컷 또는 5컷씩 자동노출브라케팅(AEB : Auto Exposure Bracketting) 촬영을 하게 되면 적어도 한 곳에서 30-40장씩 촬영을 하게 되고, 이를 처리하는 속도가 거의 6시간씩 걸리다보니까 너무 답답해서 못견디겠더군요.

게다가... 하드디스크도 문제입니다. 보통 촬영을 나가면 아무리 몇 컷 촬영하지 않아도 4GB 짜리 메모리는 기본으로 채워오는데 이걸 포토샵으로 처리하다보면 한번 촬영에 20-30GB씩 소모되고 있습니다.

슬쩍... 계산을 해 볼까요... 최대한 많이 촬영할 때를 기준으로 삼아서 한 지점 촬영에 용량이 얼마나 필요한지 계산해 보겠습니다.
  • 1장 촬영시 약 10MB - RAW 포맷 + 중간급 JPEG 동시 촬영
  • 5컷 자동노출
  • 한지점 10장 촬영( -15도로 6장, +45도 3장)
이렇게 계산하면 한 지점을 촬영하는데 딱 500MB 가 소요됩니다. 8GB 짜리 메모리카드를 사용하면 겨우 16지점 촬영하면 끝입니다. ㅠㅠ

500MB 짜리 한 지점을 PTGui에서 한꺼번에 돌리면 약 4-5GB 짜리 파일이 생기게 됩니다. 결국엔 한 지점당 5GB 정도를 표준으로 보면 되겠다 싶습니다. 그러면 1 TB 짜리 디스크를 산다고 해도 겨우 200지점 촬영하면 디스크가 꽉 찬다는...

물론 포토샵 파일은 지워야겠지만... 아무튼 RAW 파일은 꼭 필요한건지 하는 생각도 들고... 중간에 만들어 지는 파일은 어디까지 보관해야 할지... 고민해 봐야 할 것 같습니다.

아... 컴퓨터 바꾼 이야기 하다가 여기까지 왔네요. 암튼, 이제 새로 컴퓨터를 마련했으니 좀 쾌적한 환경에서 구면 파노라마를 만들 수 있을 것 같습니다.

민, 푸른하늘

2009년 8월 16일 일요일

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

아주 신기한 사진 보정 프로그램을 소개해 드리겠습니다. (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 모델이 구축되고 이것이 모두 공개된다면, 이처럼 생각하지도 못한 응용분야가 많이 생길 수 있습니다. 빨리 구축되어 민간 기업에서 쉽게 사용할 수 있게되길... 기대해봅니다.

민, 푸른하늘

2009년 8월 11일 화요일

HDR(하이 다이내믹 레인지) 사진 제작 방법

HDR(High Dynamic Range) 사진이란, 어두운 부분과 밝은 부분의 디테일을 최대한 살린 사진을 말합니다.

일반적으로 자동 노출 브라케팅(AEB : Auto Exposure Bracketing) 촬영, 즉 노출을 정상, 과도 , 부족 하게 사진을 촬영 한후 합성해서 만듭니다.

우선 제가 맨처음 본 HDR 사진을 보여드리겠습니다. Flickr의 Stuck in Customs님이 촬영한 Kolorful Korea라는 서울 사진입니다.

사용자 삽입 이미지

우측 하단의 길을 보면, 차량의 빛이 연결되어 있는 것으로 보아, 해질 무렵이나 좀 어두울 때 촬영한 것을 알 수 있습니다. 그런데, 일반적으로 이러한 상태에서 촬영을 할 경우, 밝은 부분이 선명하게 보이면 어두운 부분이 구분되지 않고, 어두운 부분을 잘 보이도록 촬영하면 밝은 부분이 과다 노출되어 구분되지 않게 됩니다.

HDR 사진은 노출이 과다/정상/부족한 사진을 합성해서, 위의 그림과 같이 어두운 부분이나 밝은 부분 모두 디테일을 살리는 사진입니다. 또한 위 사진에서 볼 수 있는 것처럼, 현실과는 다른 몽환적인 분위기의 사진이 나옵니다.

또 하나를 더 보여드리죠. 아래 사진도 동일한 분이 촬영한 Fourth on Lake Austin이라는 사진입니다. 제가 정말 좋아하는 사진중의 하나입니다.

사용자 삽입 이미지

====
지금부터는 이와 같은 HDR 사진을 촬영하고, 합성하는 방법을 설명드리겠습니다. 아래는 WikiHow의 문서를 정리한 것입니다.

HDR 사진 촬영

1. 촬영장면 선택
어떤 장면이든 괜찮습니다. Flikr 에서 HDR로 검색해 보면 멋진 예제를 보실 수 있습니다. 아니면, 구름이 많은 장면을 촬영하면 구름의 모습이 생생하게 드러납니다.

2. 카메라 설치
반드시 삼각대를 사용해야 합니다. 3장의 사진이 완전히 동일한 장면을 촬영해야 하기 때문입니다. 릴리즈나 타이머를 사용하면 더 좋습니다. 자동노출 브라케팅(AEB : Automatic Exposure Bracketing)촬영을 하되 -2/+2 EV 정도로 설정합니다.

3. 사진 촬영
AEB 모드가 있는 사진기는 그냥 3장의 사진을 촬영하면 됩니다. AEB가 없다면 정상촬영후, 노출을 2단계 빠르게 (예 : 1/250 초라면 1/500 이나 1/1000) 촬영한 후, 노출을 2단계 느리게 (예 : 1/250 라면 1/125 이나 1/60)촬영합니다.

4. 사진 저장
사진을 컴퓨터에 복사합니다.

**** 아래는 제가 촬영한 사진을 사용해서 설명드리겠습니다. 사진이 없으시다면, 아래의 파일을 저장해서 직접 테스트해 보시면 됩니다. (일부러 크기를 줄였습니다.)

사용자 삽입 이미지사용자 삽입 이미지사용자 삽입 이미지

노출시간은 각각 좌측 1/3초, 중앙 1.1초, 우측 4.5초 입니다. 10.5mm 어안렌즈로 촬영한 사진이라서 왜곡이 심합니다. 잘 찍은 사진이 아니니 그냥 실험용으로만 사용하시길~

HDR 사진 합성

1. qtpfsgui 설치
HDR을 합성할 수 있는 프로그램은 많지만, qtpfsgui는 오픈소스로 만들어진 무료 프로그램이며, Windows, Mac, Linux 등 다양한 O.S.를 지원합니다.

2. 다른 프로그램 닫기
HDR 프로그램은 매우 CPU를 많이 사용하므로, 다른 프로그램은 종료하는 게 좋습니다.

3. qtpfsgui를 실행하고 New HDR 선택
"Load Images"를 누르시고, 3개의 파일을 읽어 들입니다. 사진에 들어있는 EXIF 정보로부터 노출값 등을 자동으로 읽어 들이게 됩니다. (위에 있는 사진을 사용하면 뭐가 잘못됐는지 EV값을 입력하라고 나오는데, 모두 0으로 설정하시면 됩니다.)

4. 다음에 뜨는 창은 무시합니다.
세밀한 조정을 위한 것인데, 잘 모르면 그냥 "Next"를 누르시면 됩니다.

5. 그 다음 창도 무시합니다.
그냥 "Finish"를 누릅니다. 그러면, HDR 영상이 뜹니다. 그러나 이것을 직접 저장할 수는 없습니다.

6. Tone Making
툴바에 있는 "Tonemap the HDR" 버튼을 누릅니다. 좌측에 여러가지 복잡한 옵션이 들어 있는 창이 뜹니다. 그 상태대로 "Apply" 버튼을 누르면, 작은 크기로 먼저 적용한 결과가 뜹니다. 대충 이 알고리듬(Mantiuk)만 사용해도 충분하지만, 여러가지 바꿔가면서 테스트해 보실 수 있습니다.

이 과정은 매우 컴퓨터 자원을 많이 소모하므로, 원본 크기에 적용하려면 시간이 많이 걸립니다. 그래서 작은 크기로 실험해 보는 것입니다.

**** 저는 그냥 "Saturation factcor"만 1.4로 올려줬습니다.

7. 파일 저장
왼쪽 부분 맨 위에 있는 "Result Size"에서 원하는 크기를 선택하고, Appy를 눌러준 뒤, 영상이 생성되면 "Save As" 버튼을 누른 후, 파일명을 지정해 주면 됩니다.

8. 후처리
필요하다면, 포토샵 등을 이용해 사진을 좀 더 예쁘게 다듬을 수 있습니다.

아래는 제가 생성한 최종 사진입니다.

사용자 삽입 이미지

아래는 중간 부분만 추출해서 GIF로 만들어 본 것입니다. 일단 사진의 품질은... 제가 봐도 정말 마음에 안드는 게 뭔가 잘못한 게 아닐까... 싶은 생각이지만, 그래도 어두운 부분이나 밝은 부분이 모두 디테일이 살아있음을 확인하실 수 있을 것입니다.

사용자 삽입 이미지

====
이상입니다. 저도 처음 해 보는 것이라서, 촬영할 때부터 여러가지 시행 착오를 겪었습니다. 아무래도 사진에 대해 잘 아시는 분께 좀더 배우고, 프로그램 특성도 이해한 후 다시 도전해 봐야 하지 않을까... 싶네요.

민, 푸른하늘

2009년 8월 7일 금요일

이 블로그는 왜??

요즘 구면 파노라마(Spherical Panorama) 사진에 빠져들다보니, 사진에 관한 글을 자주 올리고 있습니다. 그런데, 제가 운영하고 있는 Web2.0과 인터넷지도와는 거리가 약간 있는 주제이다 보니, 새로운 블로그를 만드는 게 좋겠다고 생각했습니다.

티스토리에 새로 계정을 만드는 게 어떨까 했는데(실제로 만들기도 했습니다), 티스토리에 계정이 2개 있으면 자동 로그인 등의 문제로 번거로운 점이 많다군요. 그래서 구글에서 운영하는 텍스트큐브에 "파노라마 사진과 입체사진"이라는 이름으로 개설을 했습니다.

주소는 http://sphoto.textcube.com/ 입니다. 특수사진(Special Photo), 입체사진(Stereo Photo), 구면 파노라마(Spherical Panoramas) 모두 S 로 시작되어서 sphoto라고 이름을 지었습니다.

현재는 그냥 예전에 블로그에 들어 있던 글들을 옮기는 중입니다. 일부만 공개한 상태인데, 약간씩 수정할 내용이 있는지 검토하여 하루에 몇개씩 오픈하려고 합니다.

원래 블로그에 들어 있는 글들을 모두 백업 받은 후, 텍스트큐브 쪽에서 복원을 하고, 관계없는 글들은 삭제하는 방식을 사용하려고 했었습니다. 근데, 이 블로그를 첨부파일까지 모두 백업받아보니 900 메가바이타 되어서 텍스트큐브로 바로 올려지지 않더군요. 그래서 고민하고 있었는데, 상오기님이 댓글로 좋은 방법을 말씀해 주셔서, 그동안 작업했던 것까지 모두 없애버리고 깨끗하게 다시 정리했습니다.

아무튼... 이렇게 블로그를 정리하고 보니 훨씬 기분이 상큼합니다. 두개의 블로그에 꾸준하게 글을 올릴 수 있을지는 잘 모르곘지만... 그래도 끝까지 해보렵니다~ ㅎㅎ

민, 푸른하늘

내 사진을 구글어스와 맞춰보는 방법 - 사진중첩

창가쪽 좌석을 좋아하시는 분들이 많습니다. 창가를 통해 내려다 보면서 신기해하고, 사진을 찍기도 하죠. 저도 아주 오래 전 사진을 둘러보면 그런 사진을 많이 찾을 수 있습니다.

그런데, 어제 초보자용 에린 입문서에서 재미있는 걸 발견했습니다. 비행기에서 촬영한 사진을 구글어스에서 View Point를 조정하여 동일한 모습이 보이도록 한 것입니다.

아래는 먼저 비행기에서 촬영한 사진입니다. 한겨울인 것 같군요~

사용자 삽입 이미지

아래는 위 사진과 최대한 비슷한 모습으로 구글어스에서 조정한 모습입니다. 이렇게 맞추려면... 사실 상당히 까다롭습니다. 해보시면 압니다. ^^

사용자 삽입 이미지

그런데... 이 사진을 보면서 더 좋은 생각이 떠올랐습니다. 구글어스 4.2에서 추가된 사진중첩(PhotoOverlay) 방법을 이용해서 함께 보면 훨씬 쉽고 실감나게 비교할 수 있거든요.

먼저 사진을 촬영한 지점으로 이동해야 합니다. 여기에서는 원문에 올라온 그림 밑에 있는 좌표(40 36' 15.33"N, 140 27' 31.85"E)를 이용했습니다. 어차피 똑같은 상태로 맞추기는 불가능하니까, 최대한 비슷하게만 맞췄습니다.

그 다음에 추가(Add)->이미지(Photo)를 누르면, 다음과 같은 대화박스가 뜨는데, 이름과 그림파일만 지정하고 확인 버튼을 누릅니다.

사용자 삽입 이미지

이렇게만 해도 비행기에서 촬영한 사진과 구글어스가 비슷한 위치에 맞춰집니다. 아래는 새로 삽입된 사진중첩의 투명도를 조절해서 구글어스와 사진이 얼마나 비슷한지 보여준 것입니다.

아래는 사진 투명도가 60%

사용자 삽입 이미지

아래는 사진 투명도 40% - 비행기가 보이기 시작하네요.

사용자 삽입 이미지

아래는 사진 투명도 20% - 지형과 사진이 비교가 됩니다.

사용자 삽입 이미지

다음은 투명도 0% 입니다. 사진만 보이는 상태죠.

사용자 삽입 이미지

대충 보면... 아직도 위치가 정확하지는 않지만, 그런대로 비교할 만한 정도는 된 것 같죠? 더 정확하게 맞추려면 약간 까다로워서 이 정도로 마치겠습니다. 더 상세한 방법은 PhotoOverlay 등록 방법 또는 헬기를 타고 남산타워를 구경하기를 참고하세요.

만들어진 결과를 직접 보시려면, hirosaki.kml을 눌러보시면 됩니다. 눌러보시면... 사진 뜨는 방식이 아주 재미있으니 꼭 한번 해보세요. 아... 마칠 때는 오른쪽 위에 있는 "사진 종료"누르는 것 잊지 마시구요~~

민, 푸른하늘

미친 사진찍기!

로스엔젤레스 시내에서 바닷가까지 총 16마일(약 26km)를 10 발자욱마다 사진을 찍어 유튜브에 올리신 분이 계시네요. tobaiswac이라는 분인데, 6개월 전에 올라간 영상입니다. 보폭을 70cm 정도라고 한다면 총 36,000매의 사진을 찍은 셈입니다.

아래 비디오는 대략 10분 분량이고, 1초에 2.5장정도씩 보이니까, 비디오에 나타난 사진만 1500장 정도가 됩니다.


시작한 곳은 LA의 Wilshire Blvd이고 Santa Monica Blvd를 거쳐 바닷가까지 갔습니다. 지도를 보려면 여기를 누르시면 됩니다.

이 비디오를 보면 로스엔젤레스의 거리 풍경을 잘 감상할 수 있습니다. 이런 사진을 확장한 것이 스트릿뷰(Street View)라고 할 수 있겠네요. (스트릿뷰와 같은 지점을 비교해 보려고 했는데... 위치를 잡기가 너무 힘들어 포기했습니다)

개인이 스트릿뷰 촬영시스템을 구입할 수야 없겠지만, 사진에 GPS 위치태그를 붙이는 정도는 마음만 먹으면 쉽게 할 수 있을 것입니다. 예전에 Web 2.0 개념의 인터넷지도라는 글에서 공동으로 지도를 제작하는OpenStreetMap이란 사이트를 소개시켜드렸는데요, 사진과 GPS로그를 함께 올린다면 단순한 도로의 형상보다 더 다양한 정보를 취득할 수도 있겠다... 하는 생각이 들었습니다. (물론, 상업용 도로지도의 경우, 이러한 기법을 이미 사용하고 있는 회사도 있다고 들었습니다.)

민, 푸른하늘
(via Digital Urban)