취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

카메라 성능 이야기

옵션

👩‍🎓전혜경

목차

1. 카메라에도 KPI가 있어?
2. 주요 지표 그리고 우리의 노력들
3. 끝나지 않는 숙제
4. 맺음말
5. 참고

카메라에도 KPI지표가 있어?

 

KPI는 Key Performance Indicator의 핵심성과지표의 약어로 스마트폰 카메라 관련 성능을 정량적으로 측정하여 수치화할 수 있는 지표를 의미합니다.

카메라 성능을 수치화하는 방법에는 아래와 같이 다양한 방법들이 있으며, 일반적인 상황에서 발생할 수 있는 대표적인 지표들에 대해서 우선 설명을 드리겠습니다.

  • 카메라 애플리케이션 진입 시간

카메라 애플리케이션이 실행되어 프리뷰(Preview) 화면이 사용자에게 보여지는 순간까지 소요되는 시간을 의미합니다.

 

  • 카메라 전환 시간

대기 상태에 있던 카메라를 활성화 시키기 위한 시간이며, 카메라 애플리케이션이 실행된 상태에서 전/후면 카메라 또는 줌에 따른 카메라 렌즈 전환 시 소요되는 시간을 의미합니다.

  • 촬영 반응 시간

카메라 애플리케이션을 실행된 상태에서 사진 촬영 버튼을 누르는 순간부터 소리나 화면 효과로 촬영이 완료 되었음을 사용자에게 알려주는 데까지 소요되는 시간을 의미합니다.


 

  • 사진 촬영 시간

사용자가 사진촬영 버튼을 누르는 순간부터 최종 결과물이 저장되는데까지 소요되는 시간을 의미합니다. 카메라 센서에서 사진을 가져와서 다양한 이미지를 처리하고 결과물과 부가 정보를 기록하는 등의 모든 후처리 과정에 소요되는 시간을 포함합니다.

  • 동영상 녹화 영상 빠짐(Frame Drop) 여부

동영상 녹화 후 결과물의 영상이 일정한 간격으로 저장이 되었는지 확인하는 것을 의미합니다. 예를들면 UHD/FHD 30fps으로 녹화된 영상의 경우 하나의 프레임 당 33.33ms의 일정한 간격으로 영상이 저장되어야 하지만 예상하지 못 한 문제로 인해 중간의 영상이 누락되면 영상이 끊겨 보이게 됩니다.

주요 지표 그리고 우리의 노력들

 

pipeline.JPG

1. 카메라 애플리케이션 진입 카메라 렌즈 전환 시간 줄이기

  • 관련 장치의 대기상태 유지 (Hardware standby)

카메라를 켜기 위해서는 전원 제어 및 영상/좌표 보정(Calibration) 데이터 로딩 그리고 동작 모드에 카메라 센서 설정 등 많은 작업이 필요합니다.

하지만, 매번 카메라를 켤 때마다 이 모든 과정을 거치게 되면 사용자는 항상 카메라 시작이 느리다고 느낄 수 있기 때문에, 휴대폰을 부팅하는 단계에서 카메라 관련 장치들을 초기화한 뒤 대기 상태를 유지하게 함으로써 카메라 애플리케이션이 실행되었을 때 빠르게 카메라 프리뷰 화면이 보일 수 있도록 동작시키고 있습니다.

  • 필요 리소스의 조기 할당 (Early resource allocation)

모든 데이터의 흐름은 메모리 읽기, 쓰기 동작을 통해 이루어지게 됩니다. 큰 해상도의 영상 일수록 그 데이터의 크기는 커지며 데이터를 담기 위한 메모리 상의 버퍼 할당에도 더 시간이 필요하게 됩니다. 이 시간을 단축하기 위해서 필요한 메모리를 미리 확보하고 할당하는 방식이 채용됩니다.

  • 일시적 클럭 상향 (Clock boost)

클럭(Clock)은 제품에 탑재된 특정 하드웨어 부품이 얼마나 빠르게 작업을 수행하는지를 나타내는 수치입니다. 이는 같은 양의 데이터를 더 높은 클럭에서 처리하면 더 짧은 시간 내에 처리할 수 있다는 의미이고, 카메라 애플리케이션 진입 시 관련 하드웨어 부품의 클럭을 높이게 되면 전체 처리 시간이 줄어들게 됩니다. 다만, 높은 클럭의 사용은 높은 전류 소모 또한 동반하기 때문에 배터리 소모를 최소화 하기 위해서는 적절한 클럭의 사용 수준과 유지 시간을 찾는 것 또한 중요합니다.

2. 데이터 처리 지연이 없는 사진 촬영

  • 이른 시점의 셔터 알림 (Early shutter notification)

여기서 말하는 알림(Notification)은 사용자에게 사진 촬영이 완료되었음을 알려주는 신호를 의미합니다. 만약, 카메라의 셔터를 누른 후 한참 후에 이 신호가 전달되거나, 혹은 아무런 신호가 없다면 사용자는 언제 사진이 촬영이 완료되었는지 알 수 없어서 이미지 프로세스 처리 중 카메라를 움직여 상이 흔들리게 되거나 혹은 필요 이상으로 촬영 자세를 유지하는 등의 문제가 발생하게 됩니다.

그렇다면 이러한 신호는 언제 전달하는 것이 좋을까요? 아직 이미지가 저장되기 까지는 시간이 더 걸린다고 해도 이미 저장할 영상이 확보된 상태라면 그 즉시 사용자에게 신호를 주는 것이 가장 좋습니다. 그것이 이른 시점의 셔터 알림이며, 촬영된 결과물의 처리 경로 중 가능한 앞 부분에서 바로 신호를 전달할 수 있도록 구현하고 있습니다.

  • 파이프라인 최적화 병렬 처리 (Pipeline optimization and parallel execution)

카메라 센서로부터 들어온 영상이 실제 화면에 표시 되기까지 혹은 저장되기까지 거치는 과정의 모음을 파이프라인(이미지 처리 경로)이라고 표현합니다. 이 파이프라인에 많은 단계가 포함될수록 데이터 처리가 완료되는데 까지 긴 시간이 걸리고 결국 사진 촬영 시간이 길어집니다.

이런 문제를 피하기 위하여 파이프라인 최적화를 통해 서로 독립적인 작업은 동시에 처리하거나, 하나의 영상을 여러 조각으로 나누어 병렬로 처리함으로써 연속적인 데이터 처리 과정에 존재하는 불필요한 대기 시간이나 데이터 복사 및 반복적인 작업들을 제거 해줌으로써 실행 시간을 단축하는 방법으로 사용되고 있습니다.

3. 동영상 녹화 프레임 드랍이 없는 촬영

  • 리소스의 적절한 분배 (Resource balancing)

동영상 녹화는 일정한 FPS(Frame Per Second)로 진행되고 있는데 각 프레임에 대한 처리는 영상이 녹화되는 동안 대부분 일관됩니다. 그렇기 때문에 병목 현상 없이 CPU, GPU, NPU[1] 등 필요한 하드웨어 리소스가 안정적으로 동작하는 것이 중요한데, 만일 특정 프레임이 제 시간에 처리되지 못하는 상황이 발생되면 일부 프레임이 누락될 수 있습니다.

예를 들면 얼굴 인식에 관련된 솔루션은 NPU, 화질 개선 솔루션은 ISP 그리고 손떨림 방지 솔루션(VDIS)은 GPU로 동작시키는 것과 같이 동시에 동작할 수 있는 여러 기능들이 특정 하드웨어에 집중되지 않도록 자원을 효율적으로 분배하는 것이 매우 중요합니다.

  • 유연한 실패 처리 (Exception/failure handling in time)

동영상 녹화에 있어서는 완벽한 한 장의 영상을 만들기보다 정해진 시간 안에 필요한 동작을 완료하여 안정적인 녹화를 이어나가는 것이 매우 중요합니다.

그렇기에 만일 파이프라인 진행 중 필요로 하는 데이터가 정해진 시간 내에 전달되지 않거나 특정 하드웨어의 과부하로 인해 일시적으로 처리가 지연되는 등의 상태가 된다고 해도 동영상 녹화를 종료하지 않고 가능하면 기존 데이터를 최대한 활용하여 동영상 녹화를 계속해서 이어나갈 수 있도록 유연하게 대처하고 있습니다.

끝나지 않는 숙제

 

어떻게 사용자 환경에 맞게 최적화 것인가

제품을 출시하기 전 다양한 환경에서 많은 테스트와 엄격한 검사를 진행하고 있지만, 워낙 다양한 사용자가 존재하기에 모든 사용자 환경에서 기대한 만큼의 성능을 보장하기는 매우 어렵습니다. 최대한의 시뮬레이션을 통해 각 환경에 맞춰 최적화를 하는 것이 최선의 방법이며, 이 시뮬레이션에는 고용량 데이터 읽기와 쓰기의 반복, 수백 개의 애플리케이션을 설치한 뒤 4시간 ~ 72시간 동안 연속 실행하는 과정 등이 포함되어 있습니다.

이러한 상황에서 카메라 애플리케이션을 실행하였을 때 어느 정도의 성능을 나타내는지 평가하고 각 상황 별 분석 결과를 토대로 우선 순위 등을 조정하는 등의 개선하는 작업을 거치게 됩니다.

속도 VS 화질, 이율 배반과 절충

언제 어디서든 빠르게 사진을 찍고 최고의 화질을 가진 결과물을 얻을 수 있다면 좋겠지만 사진 촬영 환경에 따라 둘 다를 가지기는 어려운 경우가 많습니다.

대표적인 예로, 빛이 부족한 어두운 환경에서 좋은 화질의 영상을 얻기 위해서는 충분한 노출을 가진 여러 개의 영상을 합성하여 밝은 사진을 만드는 것이 최선의 방법이지만 그렇게 되면 촬영 시간이 길어질 수 밖에 없는 것을 들 수 있습니다. [2]

그렇기에 우리는 주변 밝기, 장면들(Scene)의 종류, 그리고 피사체의 움직임 등에 따라 최선의 선택을 시도하고 있으며 아래는 이해를 돕기 위한 예시 입니다.

buffer.JPG

  • 빛이 충분한 밝은 환경에서는 이미 확보된 영상을 이용하여(3~7) 멀티프레임 합성하여 저장함으로써 빠른 촬영이 가능합니다. 
  • 빛이 부족하고 어두운 환경에서는 사진 촬영 시 노출을 변경하여 더 나은 화질의 프레임을 입력 받아(8 ~ 12) 멀티프레임 합성을 합니다. 


맺음말

 

여기 설명된 것 외에도 수 많은 기술들이 카메라 성능 향상을 위해 적용되어 있습니다. 그렇지만 우리는 여기서 멈추지 않고, 보다 나은 사용 경험을 제공하기 위한 방법을 더 많이 고민하고 연구하도록 하겠습니다.


CamCyclopedia(카메라 백과사전) 목차 바로 가기

CamCyclopedia 소개글 바로 가기

이외에도 CamCyclopedia는 커뮤니티 -> 카테고리(app) -> CamCyclopedia -> “CamCyclopedia 목차를 통해 언제든지 확인하실 수 있습니다.

참고


[1]NPU(Neural Processing Unit, 신경망처리장치) : 딥러닝 알고리즘 연산에 최적화되어 빅데이터를 사람의 신경망처럼 빠르고 효율적으로 처리할 수 있는 프로세서

[2] 멀티프레임 합성기술 :https://r1.community.samsung.com/t5/camcyclopedia/%EB%A9%80%ED%8B%B0%ED%94%84%EB%A0%88%EC%9E%84-%ED%...

5 의견