Ⅰ. 서론
오늘날, 인스타그램, 링크드, 텀블러 등 사진이나 이미지를 기반으로 하는 다양한 SNS가 폭발적으로 사용되고 있으며 SNS의 활동은 이미 PC에서 스마트폰으로 이동한 상태이다[1]. 이런 추세와 더불어 언제 어디서나 쉽게 사진을 촬영할 수 있는 장점을 지닌 스마트폰 카메라의 활용이 높아지고, 스마트폰 카메라로부터 더 좋은 사진을 얻으려는 사용자들의 욕구가 커짐에 따라 잇따라 높은 카메라 성능을 내세우는 스마트폰을 출시하는 등 스마트폰 제조업체들은 스마트폰 카메라의 성능을 높이는데 사활을 걸고 있다[2].
스마트폰 카메라로 사진을 촬영하는 경향도 최근 들어 많이 변하고 있다[3]. 사용자들은 스마트폰 카메라 앱의 연속 촬영 기능을 활용하여, 마음에 드는 한 장의 사진을 얻기 위해 짧은 시간에 수십 장의 사진을 연속 촬영하는 경향이 두드러진다. 또한 사진 촬영 순간의 앞 뒤 몇 초의 시간을 동영상으로 담아 사진이 가지는 부족한 전달력을 높이는 카메라 기능의 사용도 늘어나고 있다[4,5].
한편, JPEG는 디지털 사진을 저장하기 위해 가장 널리 사용되는 파일 형식으로 대부분의 카메라 앱들에 의해 사용되고 있다[6]. JPEG 파일은 1장의 사진만 담을 수 있기 때문에, 연속 촬영은 수십 장의 JPEG 파일을 만들어낸다. 여러 번 연속 촬영하였다면 JPEG 파일 수는 수백 장에 이르게 되며, 이 속에서 사용자가 원하는 사진을 찾아내는 것은 번거롭고, 수십 수백 장의 JPEG 파일을 관리하는 것도 힘들며, 연속 촬영된 사진을 다른 사람에게 전달하는 것 또한 불편하다.
본 논문은 이러한 불편함을 해소하기 위해 JPEG 포맷을 확장하여 여러 장의 사진뿐 아니라 오디오, 텍스트 등 다양한 미디어를 담을 수 있는 새로운 JPEG 포맷, All-in-JPEG를 제안한다. All-in-JPEG 포맷의 특징은 다음과 같다.
첫째, All-in-JPEG는 이미지 파일 포맷이 아니라 멀티 콘텐츠를 담는 컨테이너 포맷이다. 둘째, All-in-JPEG는 표준 JPEG와 호환성을 유지한다. All-in-JPEG 파일은 기존의 JPEG 파일을 출력하는 뷰어에 의해 오류 파일로 인식되지 않는다. All-in-JPEG에 들어 있는 여러 이미지 중 하나를 기존 JPEG 뷰어가 인식하는 대표 이미지로 선정한다. 셋째, All-in-JPEG는 연속 촬영 방식으로 촬영한 여러 장의 JPEG를 하나의 파일로 저장할 때, 헤더 부분은 한 번만 저장되므로 크기 면에서 유리하다. 넷째, All-in-JPEG는 여러 장의 JPEG를 보내기 위해 압축하는 불편한 과정을 줄여 사진 공유를 편리하게 한다. 다섯째, All-in-JPEG 파일에 사진과 함께 텍스트, 오디오 등을 삽입할 수 있어 정보 전달력을 높인다. 여섯째, All-in-JPEG는 사진이나 이미지를 이용한 다양한 응용에 활용될 수 있다. 예를 들어 사진 일기 앱을 만드는 경우, 한 장의 All-in-JPEG 파일 속에 이미지와 음성, 그리고 텍스트를 모두 저장함으로써, 일기 앱은 All-in-JPEG 파일들만 관리하면 된다. 또한 사진 촬영 당시의 짧은 오디오(1~2초)를 All-in-JPEG 파일 속에 함께 저장하거나 사진의 일부분에 변화를 주는 움직이는 사진 등 생동감 있는 사진을 만들 수 있다.
본 논문은 All-in-JPEG를 설계 구현하고 이를 활용한 앱들을 구현하여 All-in-JPEG의 실현 가능성을 검증하였다.
Ⅱ. 관련 연구
1. JPEG 파일과 APP 세그먼트
JPEG(Joint Photographic Experts Group)는 디지털 이미지, 주로 디지털 사진을 저장하기 위한 손실 압축 방법이다. JPEG 방식으로 저장되는 이미지 파일 포맷을 단순화하면 그림 1과 같다. JPEG 파일은 SOI 마커로부터 시작하여 EOI 마커로 종료된다. 실제 압축된 디지털 이미지는 헤더부분 뒤에 저장된다. SOI 마커 뒤의 헤더부분에서 APP0~APP15의 16개 세그먼트들은 이미지를 다루는 응용프로그램들이 자신만의 메타데이터를 저장하기 위해 사용된다. 현재 스마트폰 카메라를 비롯하여 디지털 카메라들은 촬영한 사진의 메타데이터 Exif를 APP1에 저장하고, 포토삽의 경우 APP13에, Adobe는 APP14를 활용한다. 응용프로그램이 메타데이터를 저장하려면 APP 세그먼트 중 하나를 선택하고 세그먼트 내에 다른 응용프로그램과 구분되는 헤더 스트링을 저장하고 세그먼트를 사용하면 된다.
그림 1. JPEG 파일 포맷
Fig. 1. JPEG file format
2. MP
JPEG 파일은 1개의 손실 압축 이미지만 저장하도록 사용되어 왔다. JPEG 파일에 여러 개의 이미지를 저장하는 시도는 본 논문에서 제안한 All-in-JPEG가 처음이 아니다. MP(Multi-Picture Format)는 JPEG 파일에 여러 개의 이미지를 저장하도록 만든 저장 포맷으로, 입체 영상이나 큰 섬네일 이미지를 저장하기 위해 사용된다[7]. MP는 Camera & Imaging Products Association에 의해 2009년도에 출시되어, Fujifilm FinePix Real 3D W1, HTC Evo 3D, Nintendo 3DS 등 많은 장치들에서 3D 입체 영상을 담기 위해 사용되고, TV에 재생되는 미리보기 이미지 저장 포맷으로도 활용하고 있다[8].
MP 파일은 APP2 세그먼트("MPF" 헤더 스트링) 내에 파일 내에 저장된 여러 이미지들의 위치 정보 등을 저장한다. MP 포맷은 JPEG 파일의 EOI 마커 뒤에 추가할 JPEG 파일들을 바이너리 그대로 덧붙이는 식으로 구성된다.
본 논문에서 제안하는 All-in-JPEG는 기존 JPEG나 MP와는 달리 JPEG 파일에 여러 개의 이미지뿐 아니라 오디오와 텍스트도 저장할 수 있도록 확장한다.
III. All-in-JPEG
1. All-in-JPEG 파일 포맷
본 논문에서 제안하는 All-in-JPEG 파일 구조는 그림 2와 같다. 기존 JPEG 이미지가 끝나는 EOI 마커 뒤에 추가 이미지, 텍스트, 오디오를 삽입한다. 이미지 앞에는 XOI(Extension of Image) 마커를 사용하고, 텍스트 앞에는 XOT(Extension of Text), 오디오 앞에는 XOA(Extension of Audio) 마커를 사용하여, 각 콘텐츠를 구분한다.
그림 2. All-in-JPEG 파일 포맷
Fig. 2. All-in-JPEG file format
추가 저장된 이미지, 텍스트, 오디오에 관한 메타 정보는 헤더 스트링을 “All-in-JPEG”로 하여 APP3 세그먼트에 저장한다. APP3 세그먼트에는 추가 저장된 이미지와 텍스트의 개수 및 시작 위치, 오디오 크기 및 시작 위치 정보를 저장하여 파일 내에서 콘텐츠를 쉽게 찾을 수 있게 한다. 추가되는 오디오는 1개만 가능하다. 추가되는 콘텐츠는 EOI 마커 뒤에 저장되므로, 기존의 JPEG 뷰어들은 헤더 뒤에 따라오는 기본 이미지만 해석하며 추가된 콘텐츠는 무시한다. 본 논문에서는 #1 Image Data 대표 이미지라고 부른다.
APP1 세그먼트(“Exif”)는 디지털 카메라에서 사진의 메타데이터를 저장할 때 보편적으로 사용하는 영역이므로, 각 사진의 APP1 세그먼트를 유지하도록 설계하였다.
2. All-in-JPEG 구현
본 논문에서는 안드로이드에서 All-in-JPEG 파일을 생성하고 All-in-JPEG 파일을 읽어 이미지와 텍스트, 오디오를 재생하는 앱 OnePIC을 구현하였다. 또한 All-in-JPEG 파일에 저장된 각 미디어를 사용자의 요구에 따라 출력하는 데스크톱 전용 뷰어도 작성하였다. 데스크톱 뷰어도 Kotlin으로 작성되었기 때문에, 윈도우, 맥 등 운영체제에 상관없이 실행된다.
가. All-in-JPEG 소프트웨어 구조
그림 3은 OnePIC 앱의 일부로서 All-in-JPEG을 다루는 소프트웨어의 구조를 보여준다.
그림 3. All-in-JPEG 소프트웨어의 구조
Fig. 3. Software architecture for All-in-JPEG
소프트웨어는 크게 Load 모듈, Save 모듈, All-in-Header 모듈, All-in-Date 모듈 등 4개의 모듈로 구성된다. Load 모듈은 All-in-JPEG 파일을 읽고 파싱하는 모듈이며, Save 모듈은 All-in-JPEG 파일을 생성하거나 수정하는 모듈이다. 이 두 모듈은 각각 기존 JPEG 파일을 읽는 기능과 All-in-JPEG 내 이미지를 기존의 JPEG 파일로 저장하는 기능을 포함한다. All-in-Header 모듈은 All-in-JPEG 파일에서 APP3 세그먼트를 분석하여 이미지와 텍스트, 오디오 부분의 크기와 위치를 확인한다. All-in-Data 모듈은 파일에서 이미지와 텍스트, 오디오 데이터를 읽고 화면에 출력하거나 사용자의 요청에 따라 처리한다.
나. 안드로이드 All-in-JPEG 뷰어
본 논문은 OnePIC 앱의 All-in-JPEG 뷰어 기능을 통해 All-in-JPEG의 효과와 작동을 검증하였다. 그림 4(a)는 안드로이드의 갤러리 앱을 실행하였을 때 보이는 이미지 목록이다.
그림 4. 안드로이드에서 All-in-JPEG 파일 출력
Fig. 4. Viewing an All-in-JPEG file in Android
이곳에는 기존 JPEG 파일들과 All-in-JPEG 파일들이 섞여 있지만, 갤러리 앱이 All-in-JPEG 파일을 오류로 처리하기 않은 것은 APP3 세그먼트를 무시하고 All-in-JPEG 파일 내 첫 번째 이미지를 JPEG 이미지로 판단하기 때문이다. 이것은 호환성이 유지되고 있음을 보여준다.
사용자가 OnePIC 앱에서 그림 4(a)에 보이는 강아지 사진을 선택하면 그림 3의 Load 모듈이 파일을 분석하여 저장된 2개의 이미지, 1개의 오디오, 1개의 텍스트를 발견하고 그림 4(b)의 하단과 같이 저장된 콘텐츠들을 나열한다. 그림 4(c)는 텍스트를 선택한 경우 이미지 위에 텍스트를 출력한 모습이고, 그림 4(d)는 파일 내 두번째 이미지를 선택한 경우이다.
다. All-in-JPEG 파일 편집
본 논문은 기존 JPEG 파일에 여러 이미지나, 오디오, 텍스트를 추가하는 기능과, All-in-JPEG에 저장된 이미지, 오디오, 텍스트 등의 콘텐츠들을 삭제하거나 변경하는 기능을 구현하여 All-in-JPEG의 활용 가능성을 검증하였다. 그림 5(a)는 기존 JPEG 파일이고, 그림 5(b)는 편집 기능을 이용하여 이 JPEG 파일에 이미지 2개와 텍스트를 추가 삽입하여 만든 All-in-JPEG 파일 사례이다.
그림 5. All-in-JPEG 파일 편집
Fig. 5. Editing an All-in-JPEG file
IV. All-in-JPEG 응용
All-in-JPEG 포맷은 다양한 사진이나 이미지 응용에 활용될 수 있다. 이 논문에서는 몇 가지 사례를 통해 그 유용성을 검증한다.
1. 사진 일기 앱
본 논문은 All-in-JPEG 파일을 활용한 안드로이드 사진 일기 앱을 개발하여, All-in-JPEG 포맷의 활용성을 검증하였다. 1개의 JPEG 파일로 하루의 일기를 저장할 수 있어 관리가 쉽다. 그림 6은 본 논문에서 All-in-JPEG의 활용을 증명하기 위해 개발된 사진 일기 앱의 실행 사례이다.
그림 6. 안드로이드 사진 일기 앱
Fig. 6. Android Picture diary app
2. 매직 픽처 앱
본 논문은 OnePIC 앱에 All-in-JPEG 포맷을 이용하여 움직이는 사진을 만드는 기능을 구현하였다. OnePIC은 연사된 여러 개의 사진이나 다른 사진에서 얼굴을 인식하고, 이들 얼굴을 활용하여 다른 얼굴 이미지로 번갈아 출력하는 애니메이션을 만든다. 그림 7은 윙크하는 애니메이션 사진을 All-in-JPEG 포맷으로 만든 사례이다.
그림 7. All-in-JPEG를 활용한 매직 픽처 사례
Fig. 7. A Sample of Magic picture using All-in-JPEG
V. 토의 및 결론
본 논문은 JPEG 표준 포맷을 확장하여 여러 장의 사진, 오디오, 텍스트 등 멀티 콘텐츠를 담을 수 있도록 확장한 All-in-JPEG 포맷을 제안하였다. All-in-JPEG 파일은 한 장에 여러 콘텐츠를 담기 때문에 저장, 전송, 공유를 쉽게 하고, 움직이는 사진, 사진 일기 등 다양한 응용을 가능하게 한다. 본 논문은 All-in-JPEG 파일을 생성하고 활용하는 앱을 개발하여 실현 가능성과 충분한 활용성을 검증하였다. 하지만, All-in-JPEG은 동일한 카메라에서 촬영된 여러 사진을 저장하는데 어려움은 없지만, 서로 다른 APP 세그먼트를 사용하는 서로 다른 카메라 앱들이 촬영한 JPEG 이미지들을 한 개의 All-in-JPEG에 저장할 때 각 사진의 APP 세그먼트들을 잘 다루어야 하는 해결 과제를 가지고 있다. 이 문제는 추후 연구를 통해 해결하고자 한다.
참고문헌
- Laura M, https://www.latmultilingual.com/blog/introduction-to-image-social-media, Nov., 2014
- Vladan B, Oliver S. "Smartphone imaging technology and its applications", Advanced Optical Technologies, 2021, Vol. 10, No. 3, pp. 145-232. https://doi.org/10.1515/aot-2021-0023.
- Chris P, Stuart A, "Everyday imagery: Users' reflections on smartphone cameras and communication", Convergence, 2018, Vol. 24, No. 4, pp. 357-373, https://doi.org/10.1177/1354856516678395.
- https://support.apple.com/en-us/HT207310
- Amir Semmo, et. al., "ViVid: depicting dynamics in stylized live photos", ACM SIGGRAPH 2019 No. 8, pp. 1-2, https://doi.org/10.1145/3305365.3329726.
- https://en.wikipedia.org/wiki/JPEG
- "Multi-Picture Format", Standard of the Camera & Imaging Products Association, 2009
- http://fileformats.archiveteam.org/wiki/Multi-Picture_Format