본문 바로가기

OnePIC (Android App)/카메라

[기능 설명] 거리별 다초점 촬영

반응형

필자는 팀프로젝트로 OnePIC이라는 카메라 앱을 구현하였고, 다양한 공모전에 참여하였습니다.
이 과정에서 필자가 구현한 거리별 다초점 촬영에 대해 간단하게 설명하고자한다.


거리별 다초점 촬영

거리별 다초점 촬영이란, 카메라 렌즈 초점 거리별로 초점을 맞춰 초점이 서로 다른 이미지들(현재 10개)을 순식간에 촬영하는 고속 연사 촬영이다.

 

 

해당 기능에 대한 설명과 기능을 어떻게 구현하였는지에 관해 간단하게 설명하고자한다.


 

기능 설명

 

거리별 다초점 촬영 기능을 그림과 같이 유령과 해골 등 여러 모형이 있는 공간을 촬영하는 사례를 들어 설명한다.

 

OnePIC 앱을 실행하면 그림(a)과 같은 카메라 화면이 나타난다.

사용자가 그림(a) 하단에 촬영 모드 중 거리별 다초점 촬영 모드를 선택하고, 촬영 버튼을 누르면 가장 가까운 거리에 있는 흰색 유령 모형에 초점이 맞는 이미지부터, 가장 먼 거리에 있는 해골 모형에 초점이 맞는 이미지까지 여러 이미지가 순식간에 촬영된다.

촬영된 이미지들은 그림(c)과 같이 한 장의 All-in JPEG 파일로 저장된다.


 

구현 설명

 

거리별 다초점 촬영은 그림과 같이 카메라 렌즈 초점 거리별로 초점이 맞춰진 여러 개의 이미지를 촬영한다. 

 

Camera2 API를 호출하여 현재 카메라가 추출할 수 있는 가장 가까운 초점 거리 N값을 알아낸다. 그리고 카메라 렌즈의 초점 거리를 0부터 N 사이 균등하게 10개의 초점 값을 생성한다. 초점 거리 0이란 카메라를 막론하고 가장 먼 초점 거리를 나타내는 값이며, 가장 가까운 초점 거리 N은 카메라에 따라 달라진다. 

사용자가 촬영 버튼을 누르면, 카메라 촬영을 지시하는 지시 데이터를 10개 생성하는데, 이곳에는 해당 초점거리 값을 저장한다. 

Camera2 API에 10개의 촬영 지시 데이터를 전달하여, 서로 다른 초점을 가진 10개의 이미지를 연속 촬영하도록 지시한다. 그러면 카메라는 초점 거리를 이동시키면서 순식간에 10개의 이미지를 촬영한다. 

촬영된 10개의 이미지를 한 장의 All-in JPEG 파일로 저장한다. 추후 All-in JPEG 파일을 이용해 원하는 초점 거리에 초점이 맞춰진 사진을 추출할 수 있다.

 

반응형