READ_EXIF를 이용한 jpeg의 Meta정보 읽기

IDL 8.4.1 (IDL 8.4의 Service Pack 1)이 공개되었습니다.

관련링크 : IDL 8.4, ENVI 5.2 Service Pack 1

개발자로서가 아닌, 개인으로서 저의 관심은 READ_EXIF() 함수에 있었습니다. 요즘 디지털 카메라로 사진을 촬영하면, 카메라에 있는 GPS로 촬영장소의 위경도부터, 카메라는 어떤 것을 사용했는지, 렌즈 정보와 셔터속도, 조리개 등등 다양한 정보가 함께 저장됩니다. 이러한 메타정보의 포맷을 EXIF(Exchangeable image file format)라고 하는데,  그동안 IDL의 READ_JPEG은 이런 정보를 읽을 수가 없었습니다. 물론, EXIF 규약은 공개된 것이므로 바이너리 파일을 맞추어 읽을 수는 있었는데 귀찮죠. (READ_EXIF 함수는 JPEG와 TIFF, BigTIFF의 메타정보를 읽을 수 있습니다).

이제, READ_EXIF() 함수가 제공되었고, 저는 이것을 이용해서, 그동안 제가 촬영한 사진들을 보통 어떤 초점거리로 촬영하고 있는지 조사해 보기로 하였습니다. 제게는 마이크로포서드 카메라(초점거리 2배를 해 주어야 35mm 판형의 초점거리로 환산됩니다)와 APS-C 카메라(초점거리를 1.5배 해 주어야 35mm 판형의 초점거리로 환산됩니다)가 있는데, 마이크로포서드 카메라의 줌렌즈 14-42mm(환산 초점거리 28-84 mm)와 45-175mm(환산초점거리 90~350mm)를 요즘 많이 씁니다. 제가 사진을 촬영할 때  몇 mm 에 맞추어 촬영한 것이 많은지 한번 확인해 보고 싶어졌습니다. 중요한 정보는 아닌데, READ_EXIF가 있다니 간단히 조사해 볼 수 있게 되었잖아요. 어려운 일 아니니 그냥 한번 해 보는 거죠.

read_exif() 함수의 사용은 간단합니다.

이제 EXIF 정보가 어떻게 들어왔는지 확인해 보면,

내용이 많이 있습니다. 많다고 다 쓰는 건 아니구요, 제가 사용하려고 하는 정보들만 보면, Exif_Image_Model 에 카메라 이름이 보이고, Exif_Image_DateTime 에 촬영 시간 Exif_Photo_focallengthIn35mmFilm 에 35mm 판형 환산 초점거리, 그리고 exif_image_focallength에 실제 초점거리가 들어 있네요. READ_EXIF의 리턴값은 Dictionary라고 하는 데이터형인데, 그냥 구조체 처럼 쓰는 것도 무방합니다. Dictionary가 좀 더 유연한 기능을 제공하는 고급 자료형입니다만 익숙한 형식으로 쓰면 되는 거예요.

위와 같이 쓰면 사실 구조체를 사용할 때와 똑같은 문법이죠. 원래 그래도 되는 겁니다.

제가 최근 수년간 촬영한 수만 장 사진들의 35mm 환산 초점거리 분포를 공개합니다.

렌즈 초점거리 사용빈도

렌즈 초점거리 사용빈도

예상대로 망원렌즈는 잘 사용하지 않아요. 없으면 아쉽지만 있어도 잘 사용하지 않는 것 같습니다. 28mm~100mm 정도가 압도적으로 많네요. 좋은 24-85mm 정도의 줌렌즈 하나 있으면 끝난다는 얘기가 괜한 얘기는 아니었네요. 부드러운 분포도가 아닌 드문드문 피크형으로 나오는 이유는 제가 전동 줌 스텝 설정을 사용하기 때문입니다. 많은 사진가들의 조언 대로 35mm 초점이 얼마나 유용한지 잘 보여지고 있습니다. 75mm 피크는 니콘 1.5배 크롭바디에서 50mm 렌즈를 애용하다 보니 나타나는 것입니다. 역시 유용한 준망원 초점거리네요. 차트상으로는 28mm가 가장 많이 사용되었는데, 이는 제가 가진 줌 렌즈가 이보다 더 광각으로 내려가지 않기 때문이라고 생각합니다. 이를 이성적으로 해석하자면 보다 더 넓은 화각의 렌즈가 필요하다는 거죠. 문과출신의 부인님께 이 차트를 설명하며, 왜 우리가 광각렌즈를 사야되는지 설득해 볼 작정입니다. ^^.

아래 링크는, ExelisVIS의 블로그에 올라온 글인데, JPEG 사진의 위경도 정보를 이용해 Google Earth에 위치를 잡아 사진을 올리는 방법을 소개하고 있습니다. 재미있게 읽으실 수 있을 것 같아 소개합니다.

Using EXIF Metadata to Show Photo Locations in Google Earth, via IDL