KR102545667B1 - 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치 - Google Patents

인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치 Download PDF

Info

Publication number
KR102545667B1
KR102545667B1 KR1020180130849A KR20180130849A KR102545667B1 KR 102545667 B1 KR102545667 B1 KR 102545667B1 KR 1020180130849 A KR1020180130849 A KR 1020180130849A KR 20180130849 A KR20180130849 A KR 20180130849A KR 102545667 B1 KR102545667 B1 KR 102545667B1
Authority
KR
South Korea
Prior art keywords
image frame
image
camera
electronic device
positions
Prior art date
Application number
KR1020180130849A
Other languages
English (en)
Other versions
KR20200048609A (ko
Inventor
김승훈
이세현
조정환
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180130849A priority Critical patent/KR102545667B1/ko
Priority to US17/286,874 priority patent/US11924550B2/en
Priority to PCT/KR2019/013409 priority patent/WO2020091262A1/ko
Publication of KR20200048609A publication Critical patent/KR20200048609A/ko
Application granted granted Critical
Publication of KR102545667B1 publication Critical patent/KR102545667B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/682Vibration or motion blur correction
    • H04N23/683Vibration or motion blur correction performed by a processor, e.g. controlling the readout of an image memory
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01PMEASURING LINEAR OR ANGULAR SPEED, ACCELERATION, DECELERATION, OR SHOCK; INDICATING PRESENCE, ABSENCE, OR DIRECTION, OF MOVEMENT
    • G01P15/00Measuring acceleration; Measuring deceleration; Measuring shock, i.e. sudden change of acceleration
    • G01P15/18Measuring acceleration; Measuring deceleration; Measuring shock, i.e. sudden change of acceleration in two or more dimensions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/001
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/60Image enhancement or restoration using machine learning, e.g. neural networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6812Motion detection based on additional sensors, e.g. acceleration sensors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/80Camera processing pipelines; Components thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20182Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20216Image averaging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Studio Devices (AREA)

Abstract

본 발명의 다양한 실시예들에 따른 전자 장치는, 카메라, 모션 센서, 메모리, 및 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 카메라를 이용하여, 제 1 이미지 프레임(frame), 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하고, 상기 카메라가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 모션 센서를 이용하여 상기 전자 장치의 움직임을 검출하고, 상기 전자 장치의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하고, 인공 신경망을 통하여 학습된 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하고, 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하도록 설정될 수 있다.

Description

인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치{METHOD FOR PROCESSING IMAGE USING ARTIFICIAL NEURAL NETWORK AND ELECTRONIC DEVICE FOR SUPPORTING THE SAME}
본 발명의 다양한 실시예들은, 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치에 관한 것이다.
일반적으로 전자 장치의 카메라를 이용하여 동영상 이미지를 촬영하는 동안, 사용자의 손 또는 몸의 떨림이 전자 장치로 전달될 수 있다.
전자 장치의 카메라의 흔들림을 보정하기 위하여, 손 떨림 보정 기능, 예를 들어, OIS(optical image stabilizer) 또는 DIS(digital image stabilizer)가 적용되고 있다.
종래 기술의 동영상에서의 손 떨림 보정 기능은, 현재 이미지(또는 이미지 프레임(frame)) 보정하기 위하여, 현재 이미지 전에 획득된 이미지들을 이용하거나 현재 이미지 획득 후에 획득된 이미지들을 이용하고 있다. 현재 이미지 전에 획득된 이미지들을 이용하여 현재 이미지를 보정하는 경우 보정 성능이 떨어질 수 있다(또는 정확하게 현재 이미지를 보정할 수 없을 수 있다). 또한, 현재 이미지 획득 후에 획득된 이미지들을 이용하여 현재 이미지를 보정하는 경우, 현재 이미지 획득 후에 획득된 많은 개수의 이미지들에 기반하여 현재 이미지를 보정하므로(또는 현재 이미지 전에 획득한 이미지들은 처리결과를 시스템 메모리가 아닌 저장 장치(예: SD(secure digital) 카드)에 저장하고, 시스템 메모리 상에는 영상으로 저장하지 않고 수치로만 저장하지만 이후에 획득한 이미지들은 처리결과를 저장 장치에 저장하지 못하고 시스템 메모리상에 저장하고 있어야 하므로), 메모리가 많이 사용되며 연산을 위하여 많은 시간이 소요될 수 있다.
본 발명의 다양한 실시예들은, 인공 신경망을 통하여 학습된 가중치를 이용하여 이미지에 대한 손 떨림 보정을 수행하는, 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치에 관한 것이다.
본 발명이 이루고자 하는 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 발명의 다양한 실시예들에 따른 전자 장치는, 카메라, 모션 센서, 메모리, 및 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 상기 카메라를 이용하여, 제 1 이미지 프레임(frame), 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하고, 상기 카메라가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 모션 센서를 이용하여 상기 전자 장치의 움직임을 검출하고, 상기 전자 장치의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하고, 인공 신경망을 통하여 학습된 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하고, 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하도록 설정될 수 있다.
본 발명의 다양한 실시예들에 따른 방법은, 전자 장치의 카메라를 이용하여, 제 1 이미지 프레임, 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하는 동작, 상기 카메라가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 전자 장치의 모션 센서를 이용하여 상기 전자 장치의 움직임을 검출하는 동작, 상기 전자 장치의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하는 동작, 인공 신경망을 통하여 학습된 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작, 및 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하는 동작을 포함할 수 있다.
본 발명의 다양한 실시예에 따른 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치, 인공 신경망을 통하여 학습된 가중치를 이용하여 이미지에 대한 손떨림 보정을 수행함으로써, 보정 성능을 유지하면서, 메모리 사용량을 감소시키고, 연산 감소를 통하여 이미지를 처리하는 시간을 단축시킬 수 있다.
도 1은, 다양한 실시예에 따른, 네트워크 환경 내의 전자 장치의 블럭도이다.
도 2는, 다양한 실시예들에 따른, 카메라 모듈(280)의 블럭도(200)이다.
도 3은, 다양한 실시예들에 따른, 인공 신경망을 이용하여 이미지를 처리하기 위한 전자 장치의 블록도이다.
도 4 는, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 이용하여 카메라의 위치를 보정하는 방법을 설명하기 위한 도면이다.
도 5는, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 이용하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법을 설명하기 위한 도면이다.
도 6은, 다양한 실시예들에 따른, 인공 신경망을 통하여 가중치를 결정하는 방법을 설명하기 위한 도면이다.
도 7은, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들 및 인공 신경망을 통하여 결정된 카메라의 보정 후 위치들 간 관계를 설명하기 위한 그래프이다.
도 8은, 다양한 실시예들에 따른, 인공 신경망을 이용하여 이미지를 처리하기 위한 방법을 설명하기 위한 흐름도이다.
도 9는, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 이용하여 이미지 프레임에 대응하는 카메라의 위치를 결정하는 방법을 설명하기 위한 흐름도이다.
도 10은, 다양한 실시예들에 따른, 인공 신경망을 통하여 가중치를 결정하는 방법을 설명하기 위한 흐름도이다.
도 1은, 다양한 실시예에 따른, 네트워크 환경(100) 내의 전자 장치(101)의 블럭도이다.
도 1을 참조하면, 네트워크 환경(100)에서 전자 장치(101)는 제 1 네트워크(198)(예: 근거리 무선 통신 네트워크)를 통하여 전자 장치(102)와 통신하거나, 또는 제 2 네트워크(199)(예: 원거리 무선 통신 네트워크)를 통하여 전자 장치(104) 또는 서버(108)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 서버(108)를 통하여 전자 장치(104)와 통신할 수 있다. 일 실시예에 따르면, 전자 장치(101)는 프로세서(120), 메모리(130), 입력 장치(150), 음향 출력 장치(155), 표시 장치(160), 오디오 모듈(170), 센서 모듈(176), 인터페이스(177), 햅틱 모듈(179), 카메라 모듈(180), 전력 관리 모듈(188), 배터리(189), 통신 모듈(190), 가입자 식별 모듈(196), 또는 안테나 모듈(197)을 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)에는, 이 구성요소들 중 적어도 하나(예: 표시 장치(160) 또는 카메라 모듈(180))가 생략되거나, 하나 이상의 다른 구성 요소가 추가될 수 있다. 어떤 실시예에서는, 이 구성요소들 중 일부들은 하나의 통합된 회로로 구현될 수 있다. 예를 들면, 센서 모듈(176)(예: 지문 센서, 홍채 센서, 또는 조도 센서)은 표시 장치(160)(예: 디스플레이)에 임베디드된 채 구현될 수 있다
프로세서(120)는, 예를 들면, 소프트웨어(예: 프로그램(140))를 실행하여 프로세서(120)에 연결된 전자 장치(101)의 적어도 하나의 다른 구성요소(예: 하드웨어 또는 소프트웨어 구성요소)을 제어할 수 있고, 다양한 데이터 처리 또는 연산을 수행할 수 있다. 일 실시예에 따르면, 데이터 처리 또는 연산의 적어도 일부로서, 프로세서(120)는 다른 구성요소(예: 센서 모듈(176) 또는 통신 모듈(190))로부터 수신된 명령 또는 데이터를 휘발성 메모리(132)에 로드하고, 휘발성 메모리(132)에 저장된 명령 또는 데이터를 처리하고, 결과 데이터를 비휘발성 메모리(134)에 저장할 수 있다. 일 실시예에 따르면, 프로세서(120)는 메인 프로세서(121)(예: 중앙 처리 장치 또는 어플리케이션 프로세서), 및 이와는 독립적으로 또는 함께 운영 가능한 보조 프로세서(123)(예: 그래픽 처리 장치, 이미지 시그널 프로세서, 센서 허브 프로세서, 또는 커뮤니케이션 프로세서)를 포함할 수 있다. 추가적으로 또는 대체적으로, 보조 프로세서(123)은 메인 프로세서(121)보다 저전력을 사용하거나, 또는 지정된 기능에 특화되도록 설정될 수 있다. 보조 프로세서(123)는 메인 프로세서(121)와 별개로, 또는 그 일부로서 구현될 수 있다.
보조 프로세서(123)는, 예를 들면, 메인 프로세서(121)가 인액티브(예: 슬립) 상태에 있는 동안 메인 프로세서(121)를 대신하여, 또는 메인 프로세서(121)가 액티브(예: 어플리케이션 실행) 상태에 있는 동안 메인 프로세서(121)와 함께, 전자 장치(101)의 구성요소들 중 적어도 하나의 구성요소(예: 표시 장치(160), 센서 모듈(176), 또는 통신 모듈(190))와 관련된 기능 또는 상태들의 적어도 일부를 제어할 수 있다. 일 실시예에 따르면, 보조 프로세서(123)(예: 이미지 시그널 프로세서 또는 커뮤니케이션 프로세서)는 기능적으로 관련 있는 다른 구성 요소(예: 카메라 모듈(180) 또는 통신 모듈(190))의 일부로서 구현될 수 있다.
메모리(130)는, 전자 장치(101)의 적어도 하나의 구성요소(예: 프로세서(120) 또는 센서모듈(176))에 의해 사용되는 다양한 데이터를 저장할 수 있다. 데이터는, 예를 들어, 소프트웨어(예: 프로그램(140)) 및, 이와 관련된 명령에 대한 입력 데이터 또는 출력 데이터를 포함할 수 있다. 메모리(130)는, 휘발성 메모리(132) 또는 비휘발성 메모리(134)를 포함할 수 있다.
프로그램(140)은 메모리(130)에 소프트웨어로서 저장될 수 있으며, 예를 들면, 운영 체제(142), 미들 웨어(144) 또는 어플리케이션(146)을 포함할 수 있다.
입력 장치(150)는, 전자 장치(101)의 구성요소(예: 프로세서(120))에 사용될 명령 또는 데이터를 전자 장치(101)의 외부(예: 사용자)로부터 수신할 수 있다. 입력 장치(150)은, 예를 들면, 마이크, 마우스, 키보드, 또는 디지털 펜(예:스타일러스 펜)을 포함할 수 있다.
음향 출력 장치(155)는 음향 신호를 전자 장치(101)의 외부로 출력할 수 있다. 음향 출력 장치(155)는, 예를 들면, 스피커 또는 리시버를 포함할 수 있다. 스피커는 멀티미디어 재생 또는 녹음 재생과 같이 일반적인 용도로 사용될 수 있고, 리시버는 착신 전화를 수신하기 위해 사용될 수 있다. 일 실시예에 따르면, 리시버는 스피커와 별개로, 또는 그 일부로서 구현될 수 있다.
표시 장치(160)는 전자 장치(101)의 외부(예: 사용자)로 정보를 시각적으로 제공할 수 있다. 표시 장치(160)은, 예를 들면, 디스플레이, 홀로그램 장치, 또는 프로젝터 및 해당 장치를 제어하기 위한 제어 회로를 포함할 수 있다. 일 실시예에 따르면, 표시 장치(160)는 터치를 감지하도록 설정된 터치 회로(touch circuitry), 또는 상기 터치에 의해 발생되는 힘의 세기를 측정하도록 설정된 센서 회로(예: 압력 센서)를 포함할 수 있다.
오디오 모듈(170)은 소리를 전기 신호로 변환시키거나, 반대로 전기 신호를 소리로 변환시킬 수 있다. 일 실시예에 따르면, 오디오 모듈(170)은, 입력 장치(150)를 통해 소리를 획득하거나, 음향 출력 장치(155), 또는 전자 장치(101)와 직접 또는 무선으로 연결된 외부 전자 장치(예: 전자 장치(102)) (예: 스피커 또는 헤드폰))를 통해 소리를 출력할 수 있다.
센서 모듈(176)은 전자 장치(101)의 작동 상태(예: 전력 또는 온도), 또는 외부의 환경 상태(예: 사용자 상태)를 감지하고, 감지된 상태에 대응하는 전기 신호 또는 데이터 값을 생성할 수 있다. 일 실시예에 따르면, 센서 모듈(176)은, 예를 들면, 제스처 센서, 자이로 센서, 기압 센서, 마그네틱 센서, 가속도 센서, 그립 센서, 근접 센서, 컬러 센서, IR(infrared) 센서, 생체 센서, 온도 센서, 습도 센서, 또는 조도 센서를 포함할 수 있다.
인터페이스(177)는 전자 장치(101)이 외부 전자 장치(예: 전자 장치(102))와 직접 또는 무선으로 연결되기 위해 사용될 수 있는 하나 이상의 지정된 프로토콜들을 지원할 수 있다. 일 실시예에 따르면, 인터페이스(177)는, 예를 들면, HDMI(high definition multimedia interface), USB(universal serial bus) 인터페이스, SD카드 인터페이스, 또는 오디오 인터페이스를 포함할 수 있다.
연결 단자(178)는, 그를 통해서 전자 장치(101)가 외부 전자 장치(예: 전자 장치(102))와 물리적으로 연결될 수 있는 커넥터를 포함할 수 있다. 일 실시예에 따르면, 연결 단자(178)은, 예를 들면, HDMI 커넥터, USB 커넥터, SD 카드 커넥터, 또는 오디오 커넥터(예: 헤드폰 커넥터)를 포함할 수 있다.
햅틱 모듈(179)은 전기적 신호를 사용자가 촉각 또는 운동 감각을 통해서 인지할 수 있는 기계적인 자극(예: 진동 또는 움직임) 또는 전기적인 자극으로 변환할 수 있다. 일 실시예에 따르면, 햅틱 모듈(179)은, 예를 들면, 모터, 압전 소자, 또는 전기 자극 장치를 포함할 수 있다.
카메라 모듈(180)은 정지 영상 및 동영상을 촬영할 수 있다. 일 실시예에 따르면, 카메라 모듈(180)은 하나 이상의 렌즈들, 이미지 센서들, 이미지 시그널 프로세서들, 또는 플래시들을 포함할 수 있다.
전력 관리 모듈(188)은 전자 장치(101)에 공급되는 전력을 관리할 수 있다. 일 실시예에 따르면, 전력 관리 모듈(388)은, 예를 들면, PMIC(power management integrated circuit)의 적어도 일부로서 구현될 수 있다.
배터리(189)는 전자 장치(101)의 적어도 하나의 구성 요소에 전력을 공급할 수 있다. 일 실시예에 따르면, 배터리(189)는, 예를 들면, 재충전 불가능한 1차 전지, 재충전 가능한 2차 전지 또는 연료 전지를 포함할 수 있다.
통신 모듈(190)은 전자 장치(101)와 외부 전자 장치(예: 전자 장치(102), 전자 장치(104), 또는 서버(108))간의 직접(예: 유선) 통신 채널 또는 무선 통신 채널의 수립, 및 수립된 통신 채널을 통한 통신 수행을 지원할 수 있다. 통신 모듈(190)은 프로세서(120)(예: 어플리케이션 프로세서)와 독립적으로 운영되고, 직접(예: 유선) 통신 또는 무선 통신을 지원하는 하나 이상의 커뮤니케이션 프로세서를 포함할 수 있다. 일 실시예에 따르면, 통신 모듈(190)은 무선 통신 모듈(192)(예: 셀룰러 통신 모듈, 근거리 무선 통신 모듈, 또는 GNSS(global navigation satellite system) 통신 모듈) 또는 유선 통신 모듈(194)(예: LAN(local area network) 통신 모듈, 또는 전력선 통신 모듈)을 포함할 수 있다. 이들 통신 모듈 중 해당하는 통신 모듈은 제 1 네트워크(198)(예: 블루투스, WiFi direct 또는 IrDA(infrared data association) 같은 근거리 통신 네트워크) 또는 제 2 네트워크(199)(예: 셀룰러 네트워크, 인터넷, 또는 컴퓨터 네트워크(예: LAN 또는 WAN)와 같은 원거리 통신 네트워크)를 통하여 외부 전자 장치와 통신할 수 있다. 이런 여러 종류의 통신 모듈들은 하나의 구성 요소(예: 단일 칩)으로 통합되거나, 또는 서로 별도의 복수의 구성 요소들(예: 복수 칩들)로 구현될 수 있다. 무선 통신 모듈(192)은 가입자 식별 모듈(196)에 저장된 가입자 정보(예: 국제 모바일 가입자 식별자(IMSI))를 이용하여 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크 내에서 전자 장치(101)를 확인 및 인증할 수 있다.
안테나 모듈(197)은 신호 또는 전력을 외부(예: 외부 전자 장치)로 송신하거나 외부로부터 수신할 수 있다. 일 실시예에 따르면, 안테나 모듈은 서브스트레이트(예: PCB) 위에 형성된 도전체 또는 도전성 패턴으로 이루어진 방사체를 포함하는 하나의 안테나를 포함할 수 있다. 일 실시예에 따르면, 안테나 모듈(197)은 복수의 안테나들을 포함할 수 있다. 이런 경우, 제 1 네트워크(198) 또는 제 2 네트워크(199)와 같은 통신 네트워크에서 사용되는 통신 방식에 적합한 적어도 하나의 안테나가, 예를 들면, 통신 모듈(190)에 의하여 상기 복수의 안테나들로부터 선택될 수 있다. 신호 또는 전력은 상기 선택된 적어도 하나의 안테나를 통하여 통신 모듈(190)과 외부 전자 장치 간에 송신되거나 수신될 수 있다. 어떤 실시예에 따르면, 방사체 이외에 다른 부품(예: RFIC)이 추가로 안테나 모듈(197)의 일부로 형성될 수 있다.
상기 구성요소들 중 적어도 일부는 주변 기기들간 통신 방식(예: 버스, GPIO(general purpose input and output), SPI(serial peripheral interface), 또는 MIPI(mobile industry processor interface))를 통해 서로 연결되고 신호(예: 명령 또는 데이터)를 상호간에 교환할 수 있다.
일 실시예에 따르면, 명령 또는 데이터는 제 2 네트워크(199)에 연결된 서버(108)를 통해서 전자 장치(101)와 외부의 전자 장치(104)간에 송신 또는 수신될 수 있다. 전자 장치(102, 104) 각각은 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 일 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 외부 전자 장치들(102, 104, or 108) 중 하나 이상의 외부 장치들에서 실행될 수 있다. 예를 들면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로, 또는 사용자 또는 다른 장치로부터의 요청에 반응하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 하나 이상의 외부 전자 장치들에게 그 기능 또는 그 서비스의 적어도 일부를 수행하라고 요청할 수 있다. 상기 요청을 수신한 하나 이상의 외부 전자 장치들은 요청된 기능 또는 서비스의 적어도 일부, 또는 상기 요청과 관련된 추가 기능 또는 서비스를 실행하고, 그 실행의 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 상기 결과를, 그대로 또는 추가적으로 처리하여, 상기 요청에 대한 응답의 적어도 일부로서 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅, 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 문서에 개시된 다양한 실시예들에 따른 전자 장치는 다양한 형태의 장치가 될 수 있다. 전자 장치는, 예를 들면, 휴대용 통신 장치 (예: 스마트폰), 컴퓨터 장치, 휴대용 멀티미디어 장치, 휴대용 의료 기기, 카메라, 웨어러블 장치, 또는 가전 장치를 포함할 수 있다. 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않는다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술적 특징들을 특정한 실시예들로 한정하려는 것이 아니며, 해당 실시예의 다양한 변경, 균등물, 또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 또는 관련된 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 아이템에 대응하는 명사의 단수 형은 관련된 문맥상 명백하게 다르게 지시하지 않는 한, 상기 아이템 한 개 또는 복수 개를 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및 B 중 적어도 하나","A 또는 B 중 적어도 하나,""A, B 또는 C," "A, B 및 C 중 적어도 하나,"및 "A, B, 또는 C 중 적어도 하나"와 같은 문구들 각각은 그 문구들 중 해당하는 문구에 함께 나열된 항목들 중 어느 하나, 또는 그들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", 또는 "첫째" 또는 "둘째"와 같은 용어들은 단순히 해당 구성요소를 다른 해당 구성요소와 구분하기 위해 사용될 수 있으며, 해당 구성요소들을 다른 측면(예: 중요성 또는 순서)에서 한정하지 않는다. 어떤(예: 제 1) 구성요소가 다른(예: 제 2) 구성요소에, "기능적으로" 또는 "통신적으로"라는 용어와 함께 또는 이런 용어 없이, "커플드" 또는 "커넥티드"라고 언급된 경우, 그것은 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로(예: 유선으로), 무선으로, 또는 제 3 구성요소를 통하여 연결될 수 있다는 것을 의미한다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구현된 유닛을 포함할 수 있으며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는, 상기 부품의 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 일 실시예에 따르면, 모듈은 ASIC(application-specific integrated circuit)의 형태로 구현될 수 있다.
본 문서의 다양한 실시예들은 기기(machine)(예: 전자 장치(101)) 의해 읽을 수 있는 저장 매체(storage medium)(예: 내장 메모리(136) 또는 외장 메모리(138))에 저장된 하나 이상의 명령어들을 포함하는 소프트웨어(예: 프로그램(140))로서 구현될 수 있다. 예를 들면, 기기(예: 전자 장치(101))의 프로세서(예: 프로세서(120))는, 저장 매체로부터 저장된 하나 이상의 명령어들 중 적어도 하나의 명령을 호출하고, 그것을 실행할 수 있다. 이것은 기기가 상기 호출된 적어도 하나의 명령어에 따라 적어도 하나의 기능을 수행하도록 운영되는 것을 가능하게 한다. 상기 하나 이상의 명령어들은 컴파일러에 의해 생성된 코드 또는 인터프리터에 의해 실행될 수 있는 코드를 포함할 수 있다. 기기로 읽을 수 있는 저장매체 는, 비일시적(non-transitory) 저장매체의 형태로 제공될 수 있다. 여기서, ‘비일시적’은 저장매체가 실재(tangible)하는 장치이고, 신호(signal)(예: 전자기파)를 포함하지 않는다는 것을 의미할 뿐이며, 이 용어는 데이터가 저장매체에 반영구적으로 저장되는 경우와 임시적으로 저장되는 경우를 구분하지 않는다.
일 실시예에 따르면, 본 문서에 개시된 다양한 실시예들에 따른 방법은 컴퓨터 프로그램 제품(computer program product)에 포함되어 제공될 수 있다. 컴퓨터 프로그램 제품은 상품으로서 판매자 및 구매자 간에 거래될 수 있다. 컴퓨터 프로그램 제품은 기기로 읽을 수 있는 저장 매체(예: compact disc read only memory (CD-ROM))의 형태로 배포되거나, 또는 어플리케이션 스토어(예: 플레이 스토어TM)를 통해 또는 두 개의 사용자 장치들(예: 스마트폰들) 간에 직접, 온라인으로 배포(예: 다운로드 또는 업로드)될 수 있다. 온라인 배포의 경우에, 컴퓨터 프로그램 제품의 적어도 일부는 제조사의 서버, 어플리케이션 스토어의 서버, 또는 중계 서버의 메모리와 같은 기기로 읽을 수 있는 저장 매체에 적어도 일시 저장되거나, 임시적으로 생성될 수 있다.
다양한 실시예들에 따르면, 상기 기술한 구성요소들의 각각의 구성요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성요소들 중 하나 이상의 구성요소들 또는 동작들이 생략되거나, 또는 하나 이상의 다른 구성요소들 또는 동작들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성요소들(예: 모듈 또는 프로그램)은 하나의 구성요소로 통합될 수 있다. 이런 경우, 통합된 구성요소는 상기 복수의 구성요소들 각각의 구성요소의 하나 이상의 기능들을 상기 통합 이전에 상기 복수의 구성요소들 중 해당 구성요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성요소에 의해 수행되는 동작들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 상기 동작들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 동작들이 추가될 수 있다.
도 2는, 다양한 실시예들에 따른, 카메라 모듈(180)의 블럭도(200)이다.
도 2를 참조하면, 카메라 모듈(180)은 렌즈 어셈블리(210), 플래쉬(220), 이미지 센서(230), 이미지 스태빌라이저(240), 메모리(250)(예: 버퍼 메모리), 또는 이미지 시그널 프로세서(260)를 포함할 수 있다. 렌즈 어셈블리(210)는 이미지 촬영의 대상인 피사체로부터 방출되는 빛을 수집할 수 있다. 렌즈 어셈블리(210)는 하나 또는 그 이상의 렌즈들을 포함할 수 있다. 일 실시예에 따르면, 카메라 모듈(180)은 복수의 렌즈 어셈블리(210)들을 포함할 수 있다. 이런 경우, 카메라 모듈(180)은, 예를 들면, 듀얼 카메라, 360도 카메라, 또는 구형 카메라(spherical camera)일 수 있다. 복수의 렌즈 어셈블리(210)들은 동일한 렌즈 속성(예: 화각, 초점 거리, 자동 초점, f 넘버(f number), 또는 광학 줌)을 갖거나, 또는 적어도 하나의 렌즈 어셈블리는 다른 렌즈 렌즈 어셈블리와 적어도 하나의 다른 렌즈 속성을 가질 수 있다. 렌즈 어셈블리(210)는, 예를 들면, 광각 렌즈 또는 망원 렌즈를 포함할 수 있다. 플래쉬(220)는 피사체로부터 방출되는 빛을 강화하기 위하여 사용되는 광원을 방출할 수 있다. 플래쉬(220)는 하나 이상의 발광 다이오드들(예: RGB(red-green-blue) LED, white LED, infrared LED, 또는 ultraviolet LED), 또는 xenon lamp를 포함할 수 있다.
이미지 센서(230)는 피사체로부터 렌즈 어셈블리(210)를 통해 전달된 빛을 전기적인 신호로 변환함으로써, 상기 피사체에 대응하는 이미지를 획득할 수 있다. 일 실시예에 따르면, 이미지 센서(230)는, 예를 들면, RGB 센서, BW(black and white) 센서, IR 센서, 또는 UV 센서와 같이 속성이 다른 이미지 센서들 중 선택된 하나의 이미지 센서, 동일한 속성을 갖는 복수의 이미지 센서들, 또는 다른 속성을 갖는 복수의 이미지 센서들을 포함할 수 있다. 이미지 센서(230)에 포함된 각각의 이미지 센서는, 예를 들면, CCD(charged coupled device) 센서 또는 CMOS(complementary metal oxide semiconductor) 센서로 구현될 수 있다.
이미지 스태빌라이저(240)는 카메라 모듈(180) 또는 이를 포함하는 전자 장치(101)의 움직임에 반응하여, 촬영되는 이미지에 대한 상기 움직임에 의한 부정적인 영향(예: 이미지 흔들림)을 적어도 일부 보상하기 위하여 렌즈 어셈블리(210)에 포함된 적어도 하나의 렌즈 또는 이미지 센서(230)를 특정한 방향으로 움직이거나 제어(예: 리드 아웃(read-out) 타이밍을 조정 등)할 수 있다. 일 실시예에 따르면, 이미지 스태빌라이저(240)는, 예를 들면, 광학식 이미지 스태빌라이저로 구현될 수 있으며, 카메라 모듈(180)의 내부 또는 외부에 배치된 자이로 센서(미도시) 또는 가속도 센서(미도시)를 이용하여 상기 움직임을 감지할 수 있다.
메모리(250)는 이미지 센서(230)을 통하여 획득된 이미지의 적어도 일부를 다음 이미지 처리 작업을 위하여 적어도 일시 저장할 수 있다. 예를 들어, 셔터에 따른 이미지 획득이 지연되거나, 또는 복수의 이미지들이 고속으로 획득되는 경우, 획득된 원본 이미지(예: 높은 해상도의 이미지)는 메모리(250)에 저장이 되고, 그에 대응하는 사본 이미지(예: 낮은 해상도의 이미지)는 표시 장치(160)을 통하여 프리뷰될 수 있다. 이후, 지정된 조건이 만족되면(예: 사용자 입력 또는 시스템 명령) 메모리(250)에 저장되었던 원본 이미지의 적어도 일부가, 예를 들면, 이미지 시그널 프로세서(260)에 의해 획득되어 처리될 수 있다. 일 실시예에 따르면, 메모리(250)는 메모리(130)의 적어도 일부로, 또는 이와는 독립적으로 운영되는 별도의 메모리로 구성될 수 있다.
이미지 시그널 프로세서(260)는 이미지 센서(230)을 통하여 획득된 이미지 또는 메모리(250)에 저장된 이미지에 대하여 이미지 처리(예: 깊이 지도(depth map) 생성, 3차원 모델링, 파노라마 생성, 특징점 추출, 이미지 합성, 또는 이미지 보상(예: 노이즈 감소, 해상도 조정, 밝기 조정, 블러링(blurring), 샤프닝(sharpening), 또는 소프트닝(softening))을 수행할 수 있다. 추가적으로 또는 대체적으로, 이미지 시그널 프로세서(260)는 카메라 모듈(180)에 포함된 구성 요소들 중 적어도 하나(예: 이미지 센서(230))에 대한 제어(예: 노출 시간 제어, 또는 리드 아웃 타이밍 제어 등)를 수행할 수 있다. 이미지 시그널 프로세서(260)에 의해 처리된 이미지는 추가 처리를 위하여 메모리(250)에 다시 저장 되거나 카메라 모듈(180)의 외부 구성 요소(예: 메모리(130), 표시 장치(160), 전자 장치(102), 전자 장치(104), 또는 서버(108))로 전달될 수 있다. 일 실시예에 따르면, 이미지 시그널 프로세서(260)는 프로세서(120)의 적어도 일부로 구성되거나, 프로세서(120)와 독립적으로 운영되는 별도의 프로세서로 구성될 수 있다. 별도의 프로세서로 구성된 경우, 이미지 시그널 프로세서(260)에 의해 처리된 이미지들은 프로세서(120)에 의하여 그대로 또는 추가의 이미지 처리를 거친 후 표시 장치(160)를 통해 표시될 수 있다.
일 실시예에 따르면, 전자 장치(101)는 각각 다른 속성 또는 기능을 가진 둘 이상의 카메라 모듈(180)들을 포함할 수 있다. 이런 경우, 예를 들면, 적어도 하나의 카메라 모듈(180)은 광각 카메라 또는 전면 카메라이고, 적어도 하나의 다른 카메라 모듈은 망원 카메라 또는 후면 카메라일 수 있다.
도 3은, 다양한 실시예들에 따른, 인공 신경망을 이용하여 이미지를 처리하기 위한 전자 장치(101)의 블록도이다.
도 3을 참조하면, 일 실시예에서, 전자 장치(101)는, 카메라(310), 모션 센서(320), 디스플레이(330), 메모리(340), 및 프로세서(350)를 포함할 수 있다.
일 실시예에서, 카메라(310)는 이미지를 획득할 수 있다. 예를 들어, 카메라(310)는 피사체에 대하여 연속적으로 획득되는 복수의 이미지들을 획득할 수 있다.
일 실시예에서, 카메라(310)를 통하여 연속된 획득된 복수의 이미지들(또는 원본 이미지들)은 다음 처리를 위하여 버퍼(341)(예: 도 2의 메모리(250))에 일시 저장될 수 있다.
예를 들어, 손 떨림 보정 기능을 수행하기 위하여, 보정될 이미지(또는 현재 보정될 이미지)(이하, '제 1 이미지 프레임'으로 지칭함), 제 1 이미지 프레임의 보정을 위하여 필요한 제 1 이미지 프레임에 연속하는 복수의 이미지들(또는 제 1 이미지 프레임 획득 후 연속적으로 획득된 복수의 이미지들)(이하, '복수의 제 2 이미지 프레임들'로 지칭함), 및 제 1 이미지 프레임 바로 이전의 이미지(또는 제 1 이미지 프레임 획득 바로 이전에 획득된 이미지)(이하, '제 3 이미지 프레임'으로 지칭함)가 버퍼(341)에 저장될 수 있다.
일 실시예에서, 카메라(310)는, 도 1 및 도 2의 카메라 모듈(180)의 적어도 일부 구성을 포함할 수 있다.
일 실시예에서, 모션 센서(320)는 카메라(310)를 이용하여 이미지를 획득하는 동안 전자 장치(101)의 움직임을 검출할 수 있다. 예를 들어, 카메라(310)를 이용하여 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들을 획득하는 동안, 모션 센서(320)는 전자 장치(101)의 움직임을 검출할 수 있다.
일 실시예에서, 모션 센서(320)는 전자 장치(101)의 움직임을 검출하기 위한 자이로 센서(gyro sensor)(또는 자이로스코프(gyroscope))를 포함할 수 있다. 다만, 이에 제한되지 않으며, 일 실시예에서, 모션 센서(320)는 전자 장치(101)의 움직임을 검출하기 위한 가속도 센서(acceleration sensor)를 포함할 수 있다.
일 실시예에서, 모션 센서(320)는, 검출된 전자 장치(101)의 움직임에 대한 정보를 프로세서(350)로 전달할 수 있다.
일 실시예에서, 모션 센서(320)는 도 1의 센서 모듈(176)에 포함될 수 있다.
일 실시예에서, 디스플레이(330)는 카메라(310)를 통하여 획득된 복수의 이미지들이 보정된(또는 손떨림 보정 기능을 수행함으로써 보정된) 복수의 이미지들을 출력할 수 있다.
일 실시예에서, 디스플레이(330)는 도 1의 표시 장치(160)에 포함될 수 있다.
일 실시예에서, 메모리(340)는 이미지 처리와 관련된 다양한 정보를 저장할 수 있다.
일 실시예에서, 메모리(340)는 버퍼(341) 및 가중치(weight)(343)를 포함할 수 있다.
일 실시예에서, 버퍼(341)는, 카메라를 이용하여 획득되는 복수의 이미지들을 일시적으로 저장할 수 있다. 일 실시예에서, 버퍼(341)는 도 2의 메모리(340)(250)와 적어도 일부가 동일 또는 유사할 수 있다.
일 실시예에서, 버퍼(341)는, 제 1 이미지 프레임을 보정하기 위하여(또는 제 1 이미지 프레임 보정 시), 제 1 이미지 프레임, 복수의 제 2 이미지 프레임들, 및 제 3 이미지 프레임을 저장할 수 있다.
일 실시예에서, 버퍼(341)는 제 1 이미지 프레임(예: n 번째 이미지 프레임)에 대한 보정이 수행된 경우(또는 제 1 이미지 프레임을 보정한 후), 제 1 이미지 프레임 바로 다음의 이미지 프레임(예: n+1 번째 이미지 프레임)을 보정하기 위하여, 제 1 이미지 프레임 바로 다음의 이미지 프레임, 제 1 이미지 프레임 바로 다음의 이미지 프레임에 연속하는 복수의 이미지 프레임들, 및 제 1 이미지 프레임을 저장할 수 있다.
다만, 버퍼(341)에 저장되는 정보는 전술한 예시에 제한되지 않는다.
일 실시예에서, 가중치는, 인공 신경망을 통하여 학습된 가중치일 수 있다. 일 실시예에서, 가중치는, 입력 데이터와의 연산을 통하여 카메라의 보정된 위치를 결정하기 위한 출력 데이터를 생성하기 위하여 이용될 수 있다. 일 실시예에서, 가중치는, 가중치가 다른 전자 장치(예: 전자 장치들(102, 104) 또는 서버(108))에서 학습된 경우, 다른 전자 장치(101)로부터 수신될 수 있다. 인공 신경망을 통하여 가중치를 학습하는 방법 및 입력 데이터와의 연산을 통하여 출력 데이터를 생성하는 방법은 상세히 후술하도록 한다.
일 실시예에서, 프로세서(350)는 이미지를 처리하기 위한 전반적인 동작을 수행할 수 있다.
일 실시예에서, 프로세서(350)는, 이미지 시그널 프로세서(351) 및 흔들림 보정부(353)를 포함할 수 있다.
일 실시예에서, 이미지 시그널 프로세서(351)는, 카메라(310)를 이용하여 획득된 복수의 이미지들에 대한 보정 동작의 적어도 일부를 수행할 수 있다. 예를 들어, 이미지 시그널 프로세서(351)는, 카메라(310)를 이용하여 획득된 복수의 이미지들(또는 복수의 원시 이미지들)로부터 저장 또는 출력할 이미지를 크롭(crop)할 수 있다.
일 실시예에서, 이미지 시그널 프로세서(351)는 도 2의 이미지 시그널 프로세서(260)와 적어도 일부가 동일 또는 유사할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 카메라(310)를 통하여 획득된 복수의 이미지들에 대한 보정 동작을 수행할 수 있다.
이하에서, 흔들림 보정부(353)가 카메라(310)를 통하여 획득된 복수의 이미지들에 대한 보정하는 방법의 일부로서, 흔들림 보정부(353)가 제 1 이미지 프레임을 보정하는 방법을 먼저 설명하도록 한다.
일 실시예에서, 흔들림 보정부(353)는, 제 1 이미지 프레임을 보정하기 위하여, 카메라(310)로부터 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들을 획득(또는 수신)할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 카메라(310)가 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들을 획득하는 동안, 모션 센서(320)를 이용하여 전자 장치(101)의 움직임을 검출할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 전자 장치(101)의 움직임과 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들에 대한 정보에 적어도 일부 기반하여, 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 위치(또는 변위, 또는 좌표)를 결정할 수 있다.
일 실시예에서, 카메라의 위치는, 전자 장치(101)의 움직임에 의해 이미지 프레임들 간 이미지의 변화(또는 이동)(또는 변화 정도)에 대응할 수 있다. 예를 들어, 제 3 이미지 프레임에 대응하는 카메라의 위치와 제 1 이미지 프레임에 대응하는 카메라의 위치 간 차이는, 동일한 피사체(또는 고정된 피사체)에 대하여, 제 3 이미지 프레임 내에서 피사체를 나타내는 픽셀(pixel) 및 제 1 이미지 프레임 내에서 피사체를 나타내는 픽셀 간 픽셀 차이(또는 픽셀 개수)에 대응할 수 있다. 다른 예를 들어, 제 1 이미지 프레임에 대응하는 카메라의 위치는, 이미지 획득을 위한 입력에 의해, 최초로 획득된 이미지 프레임(이하, '최초 이미지 프레임'으로 지칭함)에 대응하는 카메라의 위치(또는 최로 이미지 프레임 획득 시의 카메라 위치)에 상대적인(또는 최초 이미지 프레임에 대응하는 카메라의 위치를 기준으로), 제 1 이미지 프레임 획득 시의 카메라의 위치(또는 변위)일 수 있다.
일 실시예에서, 카메라의 위치는, 카메라 경로(camera path), 카메라 궤적(camera trajectory), 또는 이미지 프레임들의 모션 벡터(motion vector)(또는 global motion vector)로 지칭될 수 있다.
이하에서, 손 떨림 보정 전 카메라의 위치를 '카메라의 보정 전 위치'로 지칭하고, 손 떨림 보정 후 카메라의 위치를 '카메라의 보정 후 위치'로 지칭하기로 한다.
일 실시예에서, 흔들림 보정부(353)는, 카메라(310)가 제 3 이미지 프레임 및 제 1 이미지 프레임을 획득하는 동안 모션 센서(320)를 통하여 검출된 전자 장치(101)의 움직임(또는 움직임 정도)에 기반하여 제 3 이미지 프레임 및 제 1 이미지 프레임 간 이미지 변화(또는 픽셀 차이)에 대한 오차를 보정할 수 있다. 흔들림 보정부(353)는, 오차가 보정된 제 3 이미지 프레임 및 제 1 이미지 프레임 간 이미지 변화에 기반하여 전자 장치(101)의 움직임에 대한 노이즈(noise)를 제거함으로써, 제 1 이미지 프레임에 대응하는 카메라의 위치(또는 카메라의 보정 전 위치)를 결정할 수 있다. 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치를 결정하는 방법과 동일한 방식으로 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들을 결정할 수 있다. 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치는, 제 1 이미지 프레임을 보정하기 전에 수행된 제 3 이미지 프레임을 보정하는 동작을 통하여 결정된 후 메모리(340)에 저장된 상태에 있을 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치(또는 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치 및 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치), 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들(또는 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들이 보정 가능한 위치들), 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치를 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치(또는 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 간 차이)를 결정(또는 산출)할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치(또는 범위) 간 차이를 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임 이전의(또는 제 3 이미지 프레임 획득 전에 획득된) 지정된 개수의 이미지 프레임들의 카메라의 보정 후 위치들의 평균을 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치 간 차이, 및 제 3 이미지 프레임 이전의 지정된 개수의 이미지 프레임들에 대응하는 카메라의 위치들의 평균을 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치에 적어도 일부 기반하여, 제 1 이미지 프레임으로부터 저장 또는 출력될 이미지 영역(또는 부분)을 결정할 수 있다. 예를 들어, 흔들림 보정부(353)는, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치 및 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치에 적어도 일부 기반하여, 제 1 이미지 프레임으로부터 저장 또는 출력될 이미지 영역을 결정할 수 있다.
일 실시예에서, 흔들림 보정부(353)는, 제 1 이미지 프레임으로부터 저장 또는 출력될 이미지 영역을 결정한 후(또는 제 1 이미지 프레임을 보정한 후), 제 1 이미지 프레임의 다음 이미지 프레임(또는 제 1 이미지 프레임 획득 후 바로 획득된 이미지 프레임)을 보정하는 동작을 수행할 수 있다. 제 1 이미지 프레임의 다음 이미지 프레임을 보정하는 동작은 전술한 제 1 이미지 프레임을 보정하는 동작과 적어도 일부가 동일하므로 상세한 설명은 생략하기로 한다.
일 실시예에서, 프로세서(350)는, 도 1의 프로세서(350)와 적어도 일부가 동일 또는 유사할 수 있다.
도 4 는, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 이용하여 카메라의 위치를 보정하는 방법을 설명하기 위한 도면이다.
도 4를 참조하면, 일 실시예에서, 이미지 프레임(411)은 최초 이미지 프레임(또는 원본 최초 이미지 프레임)을 나타내고, 이미지 영역(413)은 최로 이미지 프레임 내에서 저장 또는 출력될 이미지 영역을 나타낼 수 있다. 일 실시예에서, x축은 이미지 프레임(411) 내에서 이미지 영역(413)의 좌우 움직임과 관련되고, y축은 이미지 프레임(411) 내에서 이미지 영역(413)의 상하 움직임에 관련되고, z축은 이미지 프레임(411) 내에서 이미지 영역(413)의 시계 방향 또는 반시계 방향으로의 회전(또는 회전량)과 관련될 수 있다.
도 4의 그래프(420)에서, 일 실시예에서, 라인(421)은 y축에 대하여 카메라를 이용하여 연속적으로 획득되는 이미지 프레임들에 각각 대응하는 카메라의 보정 전 위치들(또는 변위들)(또는 위치들의 자취(또는 궤적))를 나타내고, 라인(423)은 y축에 대하여 카메라를 이용하여 연속적으로 획득되는 이미지 프레임들에 각각 대응하는 카메라의 보정 후 위치들을 나타낼 수 있다. 일 실시예에서, 라인들(425-1, 425-3)은, y축에 대하여 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치들(또는 보정 가능한 범위들, 또는 마진(margin))을 나타낼 수 있다. 예를 들어, 이미지 프레임에서, 이미지 프레임에 대응하는 카메라의 보정 후 위치가 라인(425-1)의 좌표 이상이거나, 라인(425-3)의 좌표 이하인 경우 저장 또는 표시될 이미지 영역(또는 크롭될 영역)의 일부가 이미지 프레임(또는 원본 이미지 프레임)의 영역 내에 포함되지 않을 수 있다(또는 저장 또는 표시될 이미지 영역의 일부가 표시되지 않을 수 있다).
일 실시예에서, 라인들(425-1, 425-3)은 이미지 프레임(411)의 크기 및 이미지 영역(413)의 크기(또는 프레임(411)의 크기 및 이미지 영역(413)의 크기 간 차이)에 의해 결정될 수 있다. 예를 들어, y축에 대한 이미지 프레임(411) 및 이미지 영역(413) 간 크기 차이(d1 + d2)는 그래프(420)에서 t=0일 때 라인(425-1)의 좌표 및 라인(421)의 좌표 간 차이와 라인(421)의 좌표 및 라인(425-3)의 좌표 간 차이를 합산한 값과 동일할 수 있다. 일 실시예에서, d1과 d2은 동일하며, d3 및 d4는 동일할 수 있다.
도 4의 그래프(420)는 y축에 대한 카메라의 위치와 관련된 라인들을 설명하고 있지만, x축 및 z축 각각에 대한 카메라의 위치와 관련된 라인들에도 동일 또는 유사하게 적용될 수 있다.
이하, 도 5에서, 손 떨림 보정 알고리즘을 이용하여 라인(423)을 결정하기 위한 방법(또는 카메라를 이용하여 연속적으로 획득되는 이미지 프레임들에 각각 대응하는 카메라의 보정 후 위치들을 결정하기 위한 방법)을 상세히 설명하도록 한다.
도 5는, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 이용하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법을 설명하기 위한 도면이다.
도 5를 참조하면, 일 실시예에서, 전자 장치(101)는, 제 1 이미지 프레임(예: t=a 인 시점에 획득된 이미지 프레임) 내지 복수의 제 2 이미지 프레임들(예: t=a+1 시점 내지 t=a+5 시점에 획득된 복수의 이미지 프레임들) 각각에 대응하는 카메라의 보정 전 위치들 및 제 3 이미지 프레임(t=a-1 시점에 획득된 이미지 프레임)에 대응하는 카메라의 보정 후 위치를 확인할 수 있다. 일 실시예에서, 도 5에 도시된 라인들(521, 523, 525-1, 525-3)은, x 축에 대한 라인들일 수 있다.
일 실시예에서, 전자 장치(101)는, 지정된 조건을 만족하는 카메라의 보정 후 위치들을 결정할 수 있다. 이하에서, 도 4에 도시된 이미지 프레임들 각각에 대하여 보정이 완료된 카메라의 위치들(예: 라인(423))과의 구별을 위하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치를 보정하기 위하여 결정될 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들에 대응하는 카메라의 보정 후 위치들(예: 라인(523))은 '카메라의 가상 보정 후 위치들'로 지칭하기로 한다.
일 실시예에서, 전자 장치(101)는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 가상 보정 후 위치들이 보정 가능한 범위를 나타내는 라인(525-1) 및 라인(525-3) 사이에 있으면서, 제 3 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치 내지 복수의 이미지 프레임들 중 마지막 이미지 프레임(예: t=a+15 시점에 획득된 이미지 프레임)에 대응하는 카메라의 가상 보정 후 위치들(또는 t=a-1 내지 t=a+14 시점에 획득된 이미지 프레임들에 대응하는 카메라의 가상 보정 후 위치들) 간 변화(또는 변화의 절대 값)의 합산 값, 카메라의 가상 보정 후 위치들의 속도 변화의 합산 값, 카메라의 가상 보정 후 위치들의 가속도 변화의 합산 값, 또는 카메라의 가상 보정 후 위치들의 변화, 속도 변화, 또는 가속도 변화 중 가중치를 고려한 적어도 2개의 합산 값이 최소가 되는 조건을 만족하는 카메라의 가상 보정 후 위치들(예: 라인(523))을 결정할 수 있다.
예를 들어, 도 5에서, 전자 장치(101)는, t=a 내지 t=a+14 시점에 획득된 이미지 프레임들에 대응하는 카메라의 가상 보정 후 위치들이 라인(525-1) 및 라인(525-3) 사이에 있으면서, 아래 [수학식 1] 또는 [수학식 2]를 만족하는 라인(523)을 카메라의 가상 보정 후 위치들로 결정할 수 있다.
Figure 112018107303209-pat00001
Figure 112018107303209-pat00002
일 실시예에서, [수학식 1] 및 [수학식 2]에서, P(k)는 t=k인 시점에 획득된 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치를 나타내고, V(k)는 t=k인 시점에 획득된 이미지 프레임에 대응하는 카메라의 가상 보정 후 속도를 나타내고, A(k)는 t=k인 시점에 획득된 이미지 프레임에 대응하는 카메라의 가상 보정 후 가속도를 나타낼 수 있다. 또한, W1, W2, W3은 변경 가능한 가중치(또는 가중치 파라미터)를 나타낼 수 있다.
일 실시예에서, V(k) 및 A(k)는, 각각, 아래 [수학식 3] 및 [수학식 4]에 의해 정의될 수 있다.
Figure 112018107303209-pat00003
Figure 112018107303209-pat00004
일 실시예에서, 전자 장치(101)는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 가상 보정 후 위치들이 보정 가능한 위치들 내에 있을 조건을 제외하고, 제 3 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치 내지 복수의 이미지 프레임들 중 마지막 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치들 간 변화(또는 변화의 절대 값)의 합산 값, 카메라의 가상 보정 후 위치들의 속도 변화의 합산 값, 카메라의 가상 보정 후 위치들의 가속도 변화의 합산 값, 또는 카메라의 가상 보정 후 위치들의 변화, 속도 변화, 또는 가속도 변화 중 가중치를 고려한 적어도 2개의 합산 값이 최소가 되는 조건에 기반하여 카메라의 가상 보정 후 위치들을 결정할 수도 있다.
도 5 및 [수학식 1] 및 [수학식 2]는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들의 개수가 15개인 경우를 예시하고 있지만, 이에 제한되지 않는다.
일 실시예에서, 전자 장치(101)는, 지정된 조건을 만족하는 카메라의 가상 보정 후 위치들 중 제 1 이미지 프레임에 대응하는 카메라의 가상 보정 위치를, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치로 결정할 수 있다.
전술한 예시들에서는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치에 기반하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법을 예시하고 있지만 이에 제한되지 않는다. 예를 들어, 전자 장치(101)는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치와 함께, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치 간 차이를 더 고려하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
도 5는, x축에 대하여 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법을 예시하고 있지만, y축 및 z축에 대하여 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법은 동일하게 적용될 수 있다.
도 5는, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법을 예시하고 있지만, 제 1 이미지 프레임 다음의 이미지 프레임들 각각에 대응하는 카메라의 보정 후 위치를 결정하는 방법에 대하여 동일 또는 유사하게 적용될 수 있다.
도 5에서 설명한 손 떨림 보정 알고리즘은 예시이며, 이에 제한되지는 않는다. 예를 들어, 손 떨림 보정 알고리즘으로서, kalman filter, particle filter, 또는 low path filter가 이용될 수도 있다.
도 5는, 전자 장치(101)에서 수행되는 것으로 예시하고 있지만, 이에 제한되지 않는다. 예를 들어, 도 5의 동작은 다른 전자 장치(예: 전자 장치들(102, 104) 또는 서버(108)에서 수행될 수 있다.
도 6은, 다양한 실시예들에 따른, 인공 신경망을 통하여 가중치(343)를 결정하는 방법을 설명하기 위한 도면이다.
도 6을 참조하면, 일 실시예에서, 전자 장치(101)는, 도 5의 동작을 통하여 획득된(또는 결정된) 정보를 이용하여, 가중치(343)를 결정할 수 있다.
일 실시예에서, 전자 장치(101)는 학습을 수행할 입력 데이터로서 도 5의 동작을 통하여 결정된 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들(또는 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들이 보정 가능한 위치들), 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치를 확인할 수 있다. 다만, 학습을 수행할 입력 데이터는 전술한 예시에 제한되지 않는다. 예를 들어, 입력 데이터는, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치(또는 범위) 간 차이를 포함할 수 있다. 다른 예를 들어, 입력 데이터는, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임 이전의(또는 제 3 이미지 프레임 획득 전에 획득된) 지정된 개수의 이미지 프레임들에 대응하는 카메라의 보정 후 위치들의 평균을 포함할 수 있다.
일 실시예에서, 도 5의 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들은 가중치의 오차 보정을 위하여 이용될 수 있다(또는 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들은 ground truth로서 이용될 수 있다). 예를 들어, 입력 데이터 및 가중치 간 연산을 통하여 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치(또는 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치 및 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 간 차이)가 결정(또는 생성)된 경우, 결정된 입력 데이터 및 가중치 간 연산을 통하여 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 및 손 떨림 보정 알고리즘을 통하여 결정된 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 간 오차에 기반하여 가중치를 학습(또는 업데이트(update), 또는 리트레이닝(retraining))(예: 오차 역전파법(back propagation)을 이용하여 학습)할 수 있다.
일 실시예에서, 인공 신경망을 통하여 학습을 수행할 제 1 이미지 프레임 내지 제 2 이미지 프레임에 대응하는 카메라의 보정 전 위치들의 개수는, 도 5의 손 떨림 보정 알고리즘에 이용되는 제 1 이미지 프레임 내지 제 2 이미지 프레임들에 대응하는 카메라의 보정 전 위치들의 개수 보다 적을 수 있다.
일 실시예에서, 손 떨림 보정 알고리즘에 이용되는 제 1 이미지 프레임 내지 제 2 이미지 프레임들에 대응하는 카메라의 보정 전 위치들의 개수는 약 15개 내지 30개일 수 있다. 인공 신경망을 통하여 학습을 수행할 제 1 이미지 프레임 내지 제 2 이미지 프레임에 대응하는 카메라의 보정 전 위치들의 개수는 약 3개 내지 6개일 수 있다.
예를 들어, 도 6에 도시된 바와 같이, x축, y축, 및 z축 각각에 대하여, 인공 신경망을 통하여 학습을 수행할 제 1 이미지 프레임 내지 제 2 이미지 프레임에 대응하는 카메라의 보정 전 위치들의 개수는 4개일 수 있다.
일 실시예에서, 도 6의 그래프(610)와 같이, x축에 대하여, 제 3 이미지 프레임(예: t=b-1 시점에 획득된 이미지 프레임), 제 1 이미지 프레임(예: t=b 시점에 획득된 이미지 프레임), 2개의 제 2 이미지 프레임들(예: t=b+1 및 t=b+2 시점들에서 획득된 이미지 프레임들)에 대응하는 카메라의 보정 전 위치들(예: 라인(611)) 및 보정 후 위치들(예: 라인(613)), 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들이 보정 가능한 위치들(예: 라인들(615-1, 615-2))이 학습을 위하여 이용될 수 있다.
일 실시예에서, 도 6의 그래프(620)와 같이, y축에 대하여, 제 3 이미지 프레임(예: t=b-1 시점에 획득된 이미지 프레임), 제 1 이미지 프레임(예: t=b 시점에 획득된 이미지 프레임), 2개의 제 2 이미지 프레임들(예: t=b+1 및 t=b+2 시점들에서 획득된 이미지 프레임들)에 대응하는 카메라의 보정 전 위치들(예: 라인(621)) 및 보정 후 위치들(예: 라인(623)), 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들이 보정 가능한 위치들(예: 라인들(625-1, 625-2))이 학습을 위하여 이용될 수 있다.
일 실시예에서, 도 6의 그래프(630)와 같이, z축에 대하여, 제 3 이미지 프레임(예: t=b-1 시점에 획득된 이미지 프레임), 제 1 이미지 프레임(예: t=b 시점에 획득된 이미지 프레임), 2개의 제 2 이미지 프레임들(예: t=b+1 및 t=b+2 시점들에서 획득된 이미지 프레임들)에 대응하는 카메라의 보정 전 위치들(예: 라인(631)) 및 보정 후 위치들(예: 라인(633)), 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들이 보정 가능한 위치들(예: 라인들(635-1, 635-2))이 학습을 위하여 이용될 수 있다.
일 실시예에서, 인공 신경망은, CNN(convolutional neural networks), RNN(recurrent neural networks), 또는 deep belief networks, restricted boltzman machines을 포함할 수 있다. 다만, 이에 제한되지 않으며, 다양한 종류의 인공 신경망이 이용될 수 있다.
일 실시예에서, 도 6의 동작은, 다른 전자 장치(예: 전자 장치들(102, 104) 또는 서버(108))에서 수행될 수 있다.
일 실시예에서, 도 6의 동작이 다른 전자 장치(예: 전자 장치들(102, 104) 또는 서버(108))에서 수행된 경우, 도 6의 동작을 통하여 결정된 가중치는 전자 장치(101)로 전송될 수 있다.
도 7은, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들 및 인공 신경망을 통하여 결정된 카메라의 보정 후 위치들 간 관계를 설명하기 위한 그래프(700)이다.
도 7을 참조하면, 일 실시예에서, 라인(710)은 카메라의 보정 전 위치들을 나타내고, 라인들(740-1, 740-2)는 카메라의 보정 전 위치들이 보정 가능한 위치들을 나타낼 수 있다. 일 실시예에서, 라인(720)은 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들을 나타낼 수 있다. 일 실시예에서, 라인(730)은 인공 신경망을 통하여 결정된 카메라의 보정 후 위치들을 나타낼 수 있다.
일 실시예에서, 도 7에 도시된 바와 같이, 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들을 나타내는 라인(720)은, 인공 신경망을 통하여 결정된 카메라의 보정 후 위치들을 나타내는 라인(730)과 상당히 근사할 수 있다. 라인(720) 및 라인(730)이 근사함은, 인공 신경망을 통하여 이미지 프레임들을 보정하는 방법과 손 떨림 보정 알고리즘을 통하여 이미지 프레임들을 보정하는 방법의 성능 간 차이가 상당히 작음을 의미할 수 있다.
일 실시예에서, 손 떨림 보정 알고리즘을 통하여 이미지 프레임들을 보정하는 방법은 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치를 보정하기 위하여 약 15개 내지 30개의 이미지 프레임들을 이용할 수 있다. 일 실시예에서, 인공 신경망을 통하여 이미지 프레임들을 보정하는 방법은 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하기 위하여 약 3개 내지 6개의 이미지 프레임들을 이용할 수 있다. 일 실시예에서, 인공 신경망을 통하여 이미지 프레임들을 보정하는 방법은 손 떨림 보정 알고리즘을 통하여 이미지 프레임들을 보정하는 방법에 비하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하기 위하여 보다 적은 이미지 프레임들을 이용하므로, 이용된 이미지 프레임들을 일시적으로 저장하는 메모리(340)(예: 버퍼 (341))의 사용량을 감소시킬 수 있다. 일 실시예에서, 인공 신경망을 통하여 이미지 프레임들을 보정하는 방법은 입력 데이터 및 가중치 간 연산을 통하여 이미지 프레임들에 대응하는 카메라의 보정 후 위치들을 산출하므로, 연산 처리량이 많은 손 떨림 보정 알고리즘을 통하여 이미지 프레임들을 보정하는 방법에 비하여, 이미지 프레임들을 처리하는 처리 속도를 향상(또는 처리 시간을 단축)시킬 수 있다. 예를 들어, 손 떨림 보정 알고리즘을 통하여 이미지 프레임들을 보정하는 경우 하나의 이미지 프레임 보정 시 약 10msec의 시간이 소요되는 반해, 인공 신경망을 통하여 이미지 프레임들을 보정하는 경우 하나의 이미지 프레임 보정 시 약 0.3msec의 시간이 소요될 수 있다. 일 실시예에서, 인공 신경망을 통하여 이미지 프레임들을 보정하는 방법은 손 떨림 보정 알고리즘을 통하여 이미지 프레임들을 보정하는 방법에 비하여, 연산량이 적고 처리 속도가 빠르기 때문에, 소모 전류를 감소시키고 배터리의 사용 시간을 증가시키며 전자 장치(101)에서 발생하는 발열을 감소시킬 수 있다.
본 발명의 다양한 실시예들에 따른 전자 장치(101)는, 카메라(310), 모션 센서(320), 메모리(340), 및 적어도 하나의 프로세서(350)를 포함하고, 상기 적어도 하나의 프로세서(350)는, 상기 카메라(310)를 이용하여, 제 1 이미지 프레임(frame), 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하고, 상기 카메라(310)가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 모션 센서(320)를 이용하여 상기 전자 장치(101)의 움직임을 검출하고, 상기 전자 장치(101)의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하고, 인공 신경망을 통하여 학습된 가중치(343)와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하고, 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하도록 설정될 수 있다.
다양한 실시예에서, 상기 적어도 하나의 프로세서(350)는, 상기 가중치(343)와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 및 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하도록 설정될 수 있다.
다양한 실시예에서, 상기 적어도 하나의 프로세서(350)는, 상기 가중치(343)와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이, 및 상기 제 3 이미지 프레임 이전의 복수의 이미지 프레임들에 각각 대응하는 상기 카메라의 위치들의 평균을 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하도록 설정될 수 있다.
다양한 실시예에서, 상기 가중치는, 지정된 제 1 개수의 이미지 프레임들에 각각 대응하는 카메라의 위치들과, 손 떨림 보정 알고리즘을 이용하여 상기 위치들이 보정된 위치들에 적어도 일부 기반하여, 학습될 수 있다.
다양한 실시예에서, 상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들의 개수가 지정된 제 2 개수인 경우, 상기 지정된 제 2 개수는 상기 지정된 제 1 개수 보다 적을 수 있다.
다양한 실시예에서, 상기 메모리(340)는, 상기 제 2 개수의 상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들 및 상기 제 3 이미지 프레임을 일시적으로 저장하는 버퍼(341)(buffer)를 포함할 수 있다.
다양한 실시예에서, 상기 모션 센서(320)는, 자이로 센서 또는 가속도 센서 중 적어도 하나를 포함할 수 있다.
다양한 실시예에서, 상기 적어도 하나의 프로세서(350)는, 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임 내에서 크롭(crop)할 영역을 결정하도록 설정될 수 있다.
다양한 실시예에서, 상기 적어도 하나의 프로세서(350)는, 상기 제 1 위치로부터 보정 가능한 위치 내에서 상기 제 1 위치를 보정하도록 설정될 수 있다.
다양한 실시예에서, 상기 적어도 하나의 프로세서(350)는, 상기 제 1 위치를 보정한 후, 상기 복수의 제 2 프레임들 중 상기 제 1 이미지 프레임 다음의 이미지 프레임을 보정하기 위한 동작을 수행하도록 설정될 수 있다.
도 8은, 다양한 실시예들에 따른, 인공 신경망을 이용하여 이미지를 처리하기 위한 방법을 설명하기 위한 흐름도이다.
도 8을 참조하면, 동작 801에서, 일 실시예에서, 프로세서(350)는, 카메라(310)를 이용하여 이미지 프레임을 획득할 수 있다.
일 실시예에서, 프로세서(350)는, 카메라(310)로부터, 피사체에 대하여 연속적으로 획득되는 복수의 이미지들을 획득할 수 있다. 일 실시예에서, 카메라(310)를 통하여 연속된 획득된 복수의 이미지들(또는 원본 이미지들)은 손 떨림 보정 기능을 수행하기 위하여 버퍼(341)(예: 도 2의 메모리(250))에 일시 저장될 수 있다. 예를 들어, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하기 위하여, 제 1 이미지 프레임, 복수의 제 2 이미지 프레임들, 및 제 3 이미지 프레임이 버퍼(341)에 일시 저장될 수 있다. 다만, 버퍼(341)에 저장되는 정보는 이에 제한되지 않는다.
동작 803에서, 일 실시예에서, 프로세서(350)는, 이미지 프레임들을 획득하는 동안 전자 장치(101)의 움직임을 검출할 수 있다. 예를 들어, 프로세서(350)는, 카메라를 이용하여 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들을 획득하는 동안, 모션 센서(320)를 이용하여 전자 장치(101)의 움직임을 검출할 수 있다.
일 실시예에서, 모션 센서(320)는 전자 장치(101)의 움직임을 검출하기 위한 자이로 센서(gyro sensor)(또는 자이로스코프(gyroscope))를 포함할 수 있다. 다만, 이에 제한되지 않으며, 일 실시예에서, 모션 센서(320)는 전자 장치(101)의 움직임을 검출하기 위한 가속도 센서(acceleration sensor)를 포함할 수 있다. 일 실시예에서, 프로세서(350)는, 모션 센서(320)로부터, 검출된 전자 장치(101)의 움직임에 대한 정보를 수신할 수 있다.
동작 805에서, 일 실시예에서, 프로세서(350)는, 이미지 프레임에 대응하는 카메라의 보정 전 위치를 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 전자 장치(101)의 움직임과 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들에 대한 정보에 적어도 일부 기반하여, 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치(또는 변위, 또는 좌표)를 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 카메라(310)가 제 3 이미지 프레임 및 제 1 이미지 프레임을 획득하는 동안 모션 센서(320)를 통하여 검출된 전자 장치(101)의 움직임(또는 움직임 정도)에 기반하여 제 3 이미지 프레임 및 제 1 이미지 프레임 간 이미지 변화(또는 픽셀 차이)에 대한 오차를 보정할 수 있다. 프로세서(350)는, 오차가 보정된 제 3 이미지 프레임 및 제 1 이미지 프레임 간 이미지 변화에 기반하여 전자 장치(101)의 움직임에 대한 노이즈(noise)를 제거함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치를 결정할 수 있다. 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치를 결정하는 방법과 동일한 방식으로 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들을 결정할 수 있다. 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치는, 제 1 이미지 프레임을 보정하기 전에 수행된 제 3 이미지 프레임을 보정하는 동작을 통하여 결정된 후 메모리(340)에 저장된 상태에 있을 수 있다.
동작 807에서, 일 실시예에서, 프로세서(350)는, 인공 신경망을 통하여 학습된 가중치(343) 및 카메라의 위치 간 연산을 수행함으로써, 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치(또는 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치 및 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치), 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들(또는 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들이 보정 가능한 위치들), 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치를 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치(또는 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 간 차이)를 결정(또는 산출)할 수 있다.
일 실시예에서, 프로세서(350)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치(또는 범위) 간 차이를 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임 이전의(또는 제 3 이미지 프레임 획득 전에 획득된) 지정된 개수의 이미지 프레임들의 카메라의 보정 후 위치들의 평균을 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 인공 신경망을 통하여 학습된 가중치(343)와, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치 간 차이, 및 제 3 이미지 프레임 이전의 지정된 개수의 이미지 프레임들에 대응하는 카메라의 위치들의 평균을 이용하여 연산을 수행함으로써, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 가중치(343)는 전자 장치(101) 또는 다른 전자 장치(101)(예: 전자 장치(101)들(102, 104), 또는 서버(108))에서 학습될 수 있다. 일 실시예에서, 가중치(343)가 다른 전자 장치(예: 전자 장치들(102, 104), 또는 서버(108))에서 학습된 경우, 전자 장치(101)는 통신 모듈(190)을 통하여 다른 전자 장치(예: 전자 장치들(102, 104), 또는 서버(108))로부터 가중치를 수신할 수 있다.
동작 809에서, 일 실시예에서, 프로세서(350)는, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치에 적어도 일부 기반하여, 제 1 이미지 프레임을 보정할 수 있다.
일 실시예에서, 프로세서(350)는, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치에 적어도 일부 기반하여, 제 1 이미지 프레임으로부터 저장 또는 출력될 이미지 영역(또는 부분)을 결정할 수 있다. 예를 들어, 프로세서(350)는, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치 및 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치에 적어도 일부 기반하여, 제 1 이미지 프레임으로부터 저장 또는 출력될 이미지 영역을 결정할 수 있다.
도 8에 도시하지는 않았지만, 프로세서(350)는, 제 1 이미지 프레임으로부터 저장 또는 출력될 이미지 영역을 결정한 후(또는 제 1 이미지 프레임을 보정한 후), 제 1 이미지 프레임의 다음 이미지 프레임(또는 제 1 이미지 프레임 획득 후 바로 획득된 이미지 프레임)을 보정하는 동작을 수행할 수 있다. 제 1 이미지 프레임의 다음 이미지 프레임을 보정하는 동작은 제 1 이미지 프레임을 보정하는 동작과 적어도 일부가 동일하므로 상세한 설명은 생략하기로 한다.
일 실시예에서, 프로세서(350)는, 저장 또는 출력될 이미지 영역을 결정된 경우, 제 1 이미지 프레임으로부터 저장 또는 출력될 이미지 영역을 크롭할 수 있다. 일 실시예에서, 프로세서(350)는, 크롭된 이미지 영역을 메모리(340)에 저장할 수 있다. 일 실시예에서, 프로세서(350)는, 크롭된 이미지 영역을 디스플레이(330)를 이용하여 출력할 수 있다.
도 9는, 다양한 실시예들에 따른, 손 떨림 보정 알고리즘을 이용하여 이미지 프레임에 대응하는 카메라의 위치를 결정하는 방법을 설명하기 위한 흐름도이다.
일 실시예에서, 도 9의 손 떨림 보정 알고리즘을 이용하여 이미지 프레임에 대응하는 카메라의 위치를 결정하는 방법은, 인공 신경망을 통하여 가중치를 학습하기 위하여 필요한 정보를 산출하기 위하여 수행될 수 있다.
도 9를 참조하면, 동작 901에서, 프로세서(350)는, 카메라(310)를 이용하여 이미지 프레임을 획득할 수 있다.
일 실시예에서, 프로세서(350)는, 카메라(310)로부터, 피사체에 대하여 연속적으로 획득되는 복수의 이미지들을 획득할 수 있다. 일 실시예에서, 카메라(310)를 통하여 연속된 획득된 복수의 이미지들(또는 원본 이미지들)은 손 떨림 보정 기능을 수행하기 위하여 버퍼(341)(예: 도 2의 메모리(250))에 일시 저장될 수 있다. 예를 들어, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하기 위하여, 제 1 이미지 프레임, 복수의 제 2 이미지 프레임들, 및 제 3 이미지 프레임이 버퍼(341)에 일시 저장될 수 있다. 다만, 버퍼(341)에 저장되는 정보는 이에 제한되지 않는다.
일 실시예에서, 손 떨림 보정 알고리즘을 이용하여 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치를 보정하기 위하여 이용되는 이미지 프레임들의 개수(예: 약 15개 내지 30개)는, 도 8의 가중치를 이용하여 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치를 보정하기 위하여 이용되는 이미지 프레임들의 개수(예: 약 3개 내지 6개) 보다 약 3배 내지 5배 많을 수 있다.
동작 903에서, 일 실시예에서, 프로세서(350)는, 이미지 프레임들을 획득하는 동안 전자 장치(101)의 움직임을 검출할 수 있다. 예를 들어, 프로세서(350)는, 카메라를 이용하여 제 3 이미지 프레임, 제 1 이미지 프레임, 및 복수의 제 2 이미지 프레임들을 획득하는 동안, 모션 센서(320)를 이용하여 전자 장치(101)의 움직임을 검출할 수 있다.
동작 903은 도 8의 동작 803과 적어도 일부가 동일 또는 유사하므로 상세한 설명은 생략하기로 한다.
동작 905에서, 일 실시예에서, 프로세서(350)는, 이미지 프레임에 대응하는 카메라의 보정 전 위치를 결정할 수 있다.
동작 905는 도 8의 동작 805와 적어도 일부가 동일 또는 유사하므로 상세한 설명은 생략하기로 한다.
동작 905에서, 일 실시예에서, 프로세서(350)는, 손 떨림 보정 알고리즘을 이용하여 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치를 확인할 수 있다.
일 실시예에서, 프로세서(350)는, 지정된 조건을 만족하는 카메라의 가상 보정 후 위치들을 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 가상 보정 후 위치들이 보정 가능한 위치들 내에 있으면서, 제 3 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치 내지 복수의 이미지 프레임들 중 마지막 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치들 간 변화(또는 변화의 절대 값)의 합산 값, 카메라의 가상 보정 후 위치들의 속도 변화의 합산 값, 카메라의 가상 보정 후 위치들의 가속도 변화의 합산 값, 또는 카메라의 가상 보정 후 위치들의 변화, 속도 변화, 또는 가속도 변화 중 가중치를 고려한 적어도 2개의 합산 값이 최소가 되는 조건을 만족하는 카메라의 가상 보정 후 위치들을 결정할 수 있다.
일 실시예에서, 프로세서(350)는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 가상 보정 후 위치들이 보정 가능한 위치들 내에 있을 조건을 제외하고, 제 3 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치 내지 복수의 이미지 프레임들 중 마지막 이미지 프레임에 대응하는 카메라의 가상 보정 후 위치들 간 변화(또는 변화의 절대 값)의 합산 값, 카메라의 가상 보정 후 위치들의 속도 변화의 합산 값, 카메라의 가상 보정 후 위치들의 가속도 변화의 합산 값, 또는 카메라의 가상 보정 후 위치들의 변화, 속도 변화, 또는 가속도 변화 중 가중치를 고려한 적어도 2개의 합산 값이 최소가 되는 조건에 기반하여 카메라의 가상 보정 후 위치들을 결정할 수도 있다. 일 실시예에서, 프로세서(350)는, 지정된 조건을 만족하는 카메라의 가상 보정 후 위치들 중 제 1 이미지 프레임에 대응하는 카메라의 가상 보정 위치를, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치로 결정할 수 있다.
전술한 예시들에서는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치에 기반하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법을 예시하고 있지만 이에 제한되지 않는다. 예를 들어, 전자 장치(101)는, 제 1 이미지 프레임 내지 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치와 함께, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치 간 차이를 더 고려하여, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정할 수 있다.
동작 907은, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치를 결정하는 방법을 예시하고 있지만, 제 1 이미지 프레임 다음의 이미지 프레임들 각각에 대응하는 카메라의 보정 후 위치를 결정하는 방법에 대하여 동일 또는 유사하게 적용될 수 있다.
동작 907에서 설명한 손 떨림 보정 알고리즘은 예시이며, 이에 제한되지는 않는다. 예를 들어, 손 떨림 보정 알고리즘으로서, kalman filter, particle filter, 또는 low path filter가 이용될 수도 있다.
동작 909에서, 일 실시예에서, 프로세서(350)는, 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치에 적어도 일부 기반하여, 제 1 이미지 프레임을 보정할 수 있다.
동작 909는 도 8의 동작 809와 적어도 일부가 동일 또는 유사하므로 상세한 설명은 생략하기로 한다.
도 9는, 전자 장치(101)에서 수행되는 것으로 예시하고 있지만, 이에 제한되지 않는다. 예를 들어, 도 9의 동작은 다른 전자 장치(예: 전자 장치들(102, 104))에서 수행될 수 있다.
도 10은, 다양한 실시예들에 따른, 인공 신경망을 통하여 가중치(343)를 결정하는 방법을 설명하기 위한 흐름도이다.
도 10을 참조하면, 동작 1001에서, 일 실시예에서, 프로세서(350)는, 학습을 수행할 입력 데이터를 획득할 수 있다.
일 실시예에서, 프로세서(350)는 학습을 수행할 입력 데이터로서 도 9를 통하여 결정된 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치(또는 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치 및 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치), 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들(또는 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들 및 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들이 보정 가능한 위치들), 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치를 획득할 수 있다. 다만, 학습을 수행할 입력 데이터는 전술한 예시에 제한되지 않는다.
예를 들어, 입력 데이터는, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치로부터 제 3 이미지 프레임에 대응하는 카메라의 보정 전 위치가 보정 가능한 위치(또는 범위) 간 차이를 포함할 수 있다. 다른 예를 들어, 입력 데이터는, 제 1 이미지 프레임에 대응하는 카메라의 보정 전 위치, 복수의 제 2 이미지 프레임들 각각에 대응하는 카메라의 보정 전 위치들, 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치, 및 제 3 이미지 프레임 이전의(또는 제 3 이미지 프레임 획득 전에 획득된) 지정된 개수의 이미지 프레임들에 대응하는 카메라의 보정 후 위치들의 평균을 포함할 수 있다.
동작 1003에서, 프로세서(350)는, 입력 데이터 및 가중치를 이용하여 학습을 수행할 수 있다.
일 실시예에서, 도 9의 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들은 가중치의 오차 보정을 위하여 이용될 수 있다(또는 손 떨림 보정 알고리즘을 통하여 결정된 카메라의 보정 후 위치들은 ground truth로서 이용될 수 있다). 예를 들어, 입력 데이터 및 가중치 간 연산을 통하여 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치(또는 제 3 이미지 프레임에 대응하는 카메라의 보정 후 위치 및 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 간 차이)가 결정(또는 생성)된 경우, 결정된 입력 데이터 및 가중치 간 연산을 통하여 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 및 손 떨림 보정 알고리즘을 통하여 결정된 제 1 이미지 프레임에 대응하는 카메라의 보정 후 위치 간 오차에 기반하여 가중치를 학습(또는 업데이트(update), 또는 리트레이닝(retraining))(예: 오차 역전파법(back propagation)을 이용하여 학습)할 수 있다.
일 실시예에서, 인공 신경망을 통하여 학습을 수행할 제 1 이미지 프레임 내지 제 2 이미지 프레임에 대응하는 카메라의 보정 전 위치들의 개수(예: 약 15개 내지 30개)는, 도 9의 손 떨림 보정 알고리즘에 이용되는 제 1 이미지 프레임 내지 제 2 이미지 프레임들에 대응하는 카메라의 보정 전 위치들의 개수(예: 약 3개 내지 6개) 보다 적을 수 있다.
동작 1005에서, 일 실시예에서, 프로세서(350)는, 가중치를 결정할 수 있다. 예를 들어, 프로세서(350)는, 동작 1003에서 학습된(또는 업데이트된) 가중치를, 가중치로서 결정할 수 있다.
일 실시예에서, 인공 신경망은, CNN(convolutional neural networks), RNN(recurrent neural networks), 또는 deep belief networks, restricted boltzman machines을 포함할 수 있다. 다만, 이에 제한되지 않으며, 다양한 종류의 인공 신경망이 이용될 수 있다.
일 실시예에서, 도 10의 동작은, 전자 장치(101) 또는 다른 전자 장치 (예: 서버(108), 전자 장치들(102, 104))에서 수행될 수 있다. 일 실시예에서, 도 10의 동작이 다른 전자 장치(예: 서버(108), 전자 장치들(102, 104))에서 수행된 경우, 도 10의 동작을 통하여 결정된 가중치는 전자 장치(101)로 전송될 수 있다.
본 발명의 다양한 실시예들에 따른 방법은, 전자 장치(101)의 카메라(310)를 이용하여, 제 1 이미지 프레임, 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하는 동작, 상기 카메라(310)가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 전자 장치(101)의 모션 센서(320)를 이용하여 상기 전자 장치(101)의 움직임을 검출하는 동작, 상기 전자 장치(101)의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하는 동작, 인공 신경망을 통하여 학습된 가중치(343)와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작, 및 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하는 동작을 포함할 수 있다.
다양한 실시예에서, 상기 제 1 위치를 보정하는 동작은, 상기 가중치(343)와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 및 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작을 포함할 수 있다.
다양한 실시예에서, 상기 제 1 위치를 보정하는 동작은, 상기 가중치(343)와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이, 및 상기 제 3 이미지 프레임 이전의 복수의 이미지 프레임들에 각각 대응하는 상기 카메라의 위치들의 평균을 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작을 포함할 수 있다.
다양한 실시예에서, 상기 가중치(343)는, 지정된 제 1 개수의 이미지 프레임들에 각각 대응하는 카메라의 위치들과, 손 떨림 보정 알고리즘을 이용하여 상기 위치들이 보정된 위치들에 적어도 일부 기반하여, 학습될 수 있다.
다양한 실시예에서, 상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들의 개수가 지정된 제 2 개수인 경우, 상기 지정된 제 2 개수는 상기 지정된 제 1 개수 보다 적을 수 있다.
다양한 실시예에서, 상기 전자 장치(101)의 메모리(340)는, 상기 제 2 개수의 상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들 및 상기 제 3 이미지 프레임을 일시적으로 저장하는 버퍼(341)를 포함할 수 있다.
다양한 실시예에서, 상기 모션 센서(320)는, 자이로 센서 또는 가속도 센서 중 적어도 하나를 포함할 수 있다.
다양한 실시예에서, 상기 제 1 이미지 프레임을 보정하는 동작은, 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임 내에서 크롭할 영역을 결정하는 동작을 포함할 수 있다.
또한, 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, CD-ROM, DVD 등)와 같은 저장매체를 포함한다.
일 실시예에서, 컴퓨터 판독 가능한 기록매체는 전자 장치(101)에서, 전자 장치(101)의 카메라(310)를 이용하여, 제 1 이미지 프레임, 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하는 동작, 상기 카메라(310)가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 전자 장치(101)의 모션 센서(320)를 이용하여 상기 전자 장치(101)의 움직임을 검출하는 동작, 상기 전자 장치(101)의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라(310)의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라(310)의 복수의 제 2 위치들을 결정하는 동작, 인공 신경망을 통하여 학습된 가중치(343)와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라(310)의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작, 및 상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하는 동작을 실행시키기 위한 프로그램을 기록할 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
101, 102, 104 : 전자 장치 108: 서버

Claims (20)

  1. 전자 장치에 있어서,
    카메라;
    모션 센서;
    메모리; 및
    적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    상기 카메라를 이용하여, 제 1 이미지 프레임(frame), 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하고,
    상기 카메라가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 모션 센서를 이용하여 상기 전자 장치의 움직임을 검출하고,
    상기 전자 장치의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하고,
    인공 신경망을 통하여 학습된 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하고,
    상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하도록 설정된 전자 장치.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 및 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하도록 설정된 전자 장치.
  3. 제 2 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이, 및 상기 제 3 이미지 프레임 이전의 복수의 이미지 프레임들에 각각 대응하는 상기 카메라의 위치들의 평균을 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하도록 설정된 전자 장치.
  4. 제 1 항에 있어서,
    상기 가중치는, 지정된 제 1 개수의 이미지 프레임들에 각각 대응하는 카메라의 위치들과, 손 떨림 보정 알고리즘을 이용하여 상기 위치들이 보정된 위치들에 적어도 일부 기반하여, 학습되는 전자 장치.
  5. 제 4 항에 있어서,
    상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들의 개수가 지정된 제 2 개수인 경우, 상기 지정된 제 2 개수는 상기 지정된 제 1 개수 보다 적은 전자 장치.
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    제 5 항에 있어서,
    상기 메모리는, 상기 제 2 개수의 상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들 및 상기 제 3 이미지 프레임을 일시적으로 저장하는 버퍼(buffer)를 포함하는 전자 장치.
  7. ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 모션 센서는, 자이로 센서 또는 가속도 센서 중 적어도 하나를 포함하는 전자 장치.
  8. 제 1 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임 내에서 크롭(crop)할 영역을 결정하도록 설정된 전자 장치.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제 1 위치로부터 보정 가능한 위치 내에서 상기 제 1 위치를 보정하도록 설정된 전자 장치.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    제 1 항에 있어서,
    상기 적어도 하나의 프로세서는,
    상기 제 1 위치를 보정한 후, 상기 복수의 제 2 프레임들 중 상기 제 1 이미지 프레임 다음의 이미지 프레임을 보정하기 위한 동작을 수행하도록 설정된 전자 장치.
  11. 방법에 있어서,
    전자 장치의 카메라를 이용하여, 제 1 이미지 프레임, 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하는 동작;
    상기 카메라가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 전자 장치의 모션 센서를 이용하여 상기 전자 장치의 움직임을 검출하는 동작;
    상기 전자 장치의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하는 동작;
    인공 신경망을 통하여 학습된 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작; 및
    상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하는 동작을 포함하는 방법.
  12. ◈청구항 12은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 제 1 위치를 보정하는 동작은,
    상기 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 및 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작을 포함하는 방법.
  13. ◈청구항 13은(는) 설정등록료 납부시 포기되었습니다.◈
    제 12 항에 있어서,
    상기 제 1 위치를 보정하는 동작은,
    상기 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 상기 제 3 위치의 보정 후 위치, 상기 제 3 위치의 보정 후 위치로부터 상기 제 3 위치가 보정 가능한 위치 간 차이, 및 상기 제 3 이미지 프레임 이전의 복수의 이미지 프레임들에 각각 대응하는 상기 카메라의 위치들의 평균을 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작을 포함하는 방법.
  14. 제 11 항에 있어서,
    상기 가중치는, 지정된 제 1 개수의 이미지 프레임들에 각각 대응하는 카메라의 위치들과, 손 떨림 보정 알고리즘을 이용하여 상기 위치들이 보정된 위치들에 적어도 일부 기반하여, 학습되는 방법.
  15. 제 14 항에 있어서,
    상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들의 개수가 지정된 제 2 개수인 경우, 상기 지정된 제 2 개수는 상기 지정된 제 1 개수 보다 적은 방법.
  16. ◈청구항 16은(는) 설정등록료 납부시 포기되었습니다.◈
    제 15 항에 있어서,
    상기 전자 장치의 메모리는, 상기 제 2 개수의 상기 제 1 이미지 프레임 내지 상기 복수의 제 2 이미지 프레임들 및 상기 제 3 이미지 프레임을 일시적으로 저장하는 버퍼를 포함하는 방법.
  17. ◈청구항 17은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 모션 센서는, 자이로 센서 또는 가속도 센서 중 적어도 하나를 포함하는 방법.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 제 1 이미지 프레임을 보정하는 동작은,
    상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임 내에서 크롭할 영역을 결정하는 동작을 포함하는 방법.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제 11 항에 있어서,
    상기 제 1 위치를 보정하는 동작은,
    상기 제 1 위치로부터 보정 가능한 위치 내에서 상기 제 1 위치를 보정하는 동작을 포함하는 방법.
  20. 컴퓨터에서 실행 가능한 프로그램들이 기록된 컴퓨터로 판독 가능한 기록 매체에 있어서,
    상기 프로그램들은,
    전자 장치의 카메라를 이용하여, 제 1 이미지 프레임, 상기 제 1 이미지 프레임에 연속하는 복수의 제 2 이미지 프레임들, 및 상기 제 1 이미지 프레임 바로 이전의 제 3 이미지 프레임을 획득하는 동작;
    상기 카메라가 상기 제 3 이미지 프레임, 제 1 이미지 프레임, 및 상기 복수의 제 2 이미지 프레임들을 획득하는 동안, 상기 전자 장치의 모션 센서를 이용하여 상기 전자 장치의 움직임을 검출하는 동작;
    상기 전자 장치의 움직임과 상기 제 1 이미지 프레임, 상기 복수의 제 2 이미지 프레임들, 및 상기 제 3 이미지 프레임에 적어도 일부 기반하여, 상기 제 1 이미지 프레임에 대응하는 상기 카메라의 제 1 위치 및 상기 복수의 제 2 이미지 프레임들에 각각 대응하는 상기 카메라의 복수의 제 2 위치들을 결정하는 동작;
    인공 신경망을 통하여 학습된 가중치와, 상기 제 1 위치, 상기 복수의 제 2 위치들, 및 상기 제 3 이미지 프레임에 대응하는 상기 카메라의 제 3 위치의 보정 후 위치를 이용한 연산을 수행함으로써, 상기 제 1 위치를 보정하는 동작; 및
    상기 보정된 제 1 위치에 적어도 일부 기반하여, 상기 제 1 이미지 프레임을 보정하는 동작을 수행하기 위한 명령어들을 포함하는 컴퓨터로 판독 가능한 기록 매체.
KR1020180130849A 2018-10-30 2018-10-30 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치 KR102545667B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180130849A KR102545667B1 (ko) 2018-10-30 2018-10-30 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치
US17/286,874 US11924550B2 (en) 2018-10-30 2019-10-14 Method for processing image by using artificial neural network, and electronic device supporting same
PCT/KR2019/013409 WO2020091262A1 (ko) 2018-10-30 2019-10-14 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180130849A KR102545667B1 (ko) 2018-10-30 2018-10-30 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치

Publications (2)

Publication Number Publication Date
KR20200048609A KR20200048609A (ko) 2020-05-08
KR102545667B1 true KR102545667B1 (ko) 2023-06-21

Family

ID=70463359

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180130849A KR102545667B1 (ko) 2018-10-30 2018-10-30 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치

Country Status (3)

Country Link
US (1) US11924550B2 (ko)
KR (1) KR102545667B1 (ko)
WO (1) WO2020091262A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210045119A (ko) * 2019-10-16 2021-04-26 엘지전자 주식회사 로봇 및 상기 로봇의 위치 보정 방법
CN111951180B (zh) * 2020-07-09 2024-05-14 北京迈格威科技有限公司 图像抖动校正方法、装置、计算机设备和存储介质
WO2022131655A1 (ko) * 2020-12-18 2022-06-23 삼성전자 주식회사 영상 처리 장치 및 이에 의한 멀티 프레임의 처리 방법
US11877059B2 (en) * 2021-03-09 2024-01-16 Qualcomm Incorporated Sensor-based image verification
KR20220141663A (ko) * 2021-04-13 2022-10-20 삼성전자주식회사 영상을 처리하는 방법 및 이를 수행하는 전자 장치
JP2022165815A (ja) * 2021-04-20 2022-11-01 キヤノン株式会社 画像処理装置、画像処理方法
KR20230023506A (ko) * 2021-08-10 2023-02-17 삼성전자주식회사 이미지 안정화를 수행하는 전자 장치 및 그의 동작 방법
US11750927B2 (en) * 2021-08-12 2023-09-05 Deepx Co., Ltd. Method for image stabilization based on artificial intelligence and camera module therefor

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8068697B2 (en) * 2006-10-19 2011-11-29 Broadcom Corporation Real time video stabilizer
KR101467873B1 (ko) 2008-08-06 2014-12-02 삼성전자주식회사 손떨림 검출에 따른 디지털 영상 촬영 장치 및 방법
KR101528860B1 (ko) 2008-12-11 2015-06-15 삼성전자주식회사 디지털 촬영 장치의 흔들림 보정 방법 및 장치
KR101714787B1 (ko) * 2010-06-07 2017-03-09 엘지이노텍 주식회사 카메라 모듈 및 그가 구비된 전자 기기 제어 시스템
RU2431889C1 (ru) 2010-08-06 2011-10-20 Дмитрий Валерьевич Шмунк Способ суперразрешения изображений и нелинейный цифровой фильтр для его осуществления
JP6577703B2 (ja) 2014-08-05 2019-09-18 キヤノン株式会社 画像処理装置及び画像処理方法、プログラム、記憶媒体
KR20160141572A (ko) * 2015-06-01 2016-12-09 삼성전자주식회사 이미지를 촬영하는 전자 장치 및 방법
KR102493994B1 (ko) 2016-01-27 2023-02-02 (주)엠아이웨어 영상 흔들림 보정 기능을 구비한 자동차용 영상 저장 장치
KR102608782B1 (ko) * 2016-12-30 2023-12-04 삼성전자주식회사 이미지에서 전자 장치의 흔들림 영향을 보정하기 위한 방법 및 장치
EP3352454B1 (en) * 2017-01-19 2019-01-02 Axis AB Method for fixed pattern noise reduction and use of such method
KR102659504B1 (ko) 2017-02-03 2024-04-23 삼성전자주식회사 복수의 이미지들간의 변화에 기반하여 동영상을 촬영하는 전자 장치 및 그 제어 방법
KR101843990B1 (ko) 2017-03-09 2018-03-30 한국과학기술원 모션 블러 변조 방법 및 이를 이용한 차량의 속도 정보 측정 방법
US10771698B2 (en) * 2018-08-31 2020-09-08 Qualcomm Incorporated Image stabilization using machine learning

Also Published As

Publication number Publication date
US20210385383A1 (en) 2021-12-09
US11924550B2 (en) 2024-03-05
WO2020091262A1 (ko) 2020-05-07
KR20200048609A (ko) 2020-05-08

Similar Documents

Publication Publication Date Title
KR102545667B1 (ko) 인공 신경망을 이용한 이미지 처리 방법 및 이를 지원하는 전자 장치
KR102385360B1 (ko) 이미지 보정을 수행하는 전자 장치 및 그 동작 방법
US11558553B2 (en) Electronic device for stabilizing image and method for operating same
KR102525000B1 (ko) 복수의 이미지들이 합성된 이미지를 깊이 정보에 기반하여 흐림 처리하는 전자 장치 및 상기 전자 장치의 구동 방법
US11363199B2 (en) Apparatus and method for estimating optical image stabilization motion
US11671701B2 (en) Electronic device for recommending composition and operating method thereof
US11108961B2 (en) Electronic device for controlling shaking of lens part contained in camera module and operation method for electronic device
US10965871B2 (en) Apparatus and method for compensating for image change caused by optical image stabilization motion
KR102382871B1 (ko) 렌즈의 포커스를 제어하기 위한 전자 장치 및 전자 장치 제어 방법
KR102435614B1 (ko) 카메라 모듈 내에서 이미지 센서를 위한 클럭 신호를 생성하기 위한 전자 장치 및 방법
US10848686B2 (en) Method of providing image and electronic device for supporting the method
US20220360714A1 (en) Camera movement control method and device
KR102330264B1 (ko) 움직임 정보에 기반하여 동영상을 재생하기 위한 장치 및 그의 동작 방법
US11297237B2 (en) Electronic device for auto focusing function and operating method thereof
US20210035267A1 (en) Image processing device and method of electronic device
CN117256157A (zh) 包括相机的电子装置
US11032462B2 (en) Method for adjusting focus based on spread-level of display object and electronic device supporting the same
US12022192B2 (en) Electronic device for stabilizing image and method for operating same
KR20200036264A (ko) 자동 초점 방법 및 이를 수행하는 전자 장치
US20220294986A1 (en) Electronic device, method for controlling the same, and recording medium of recording program
KR20240050969A (ko) 슬로우 셔터 기능을 제공하는 전자 장치 및 방법

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right