KR20240067983A - 이미지 수정 기법들 - Google Patents

이미지 수정 기법들 Download PDF

Info

Publication number
KR20240067983A
KR20240067983A KR1020247015090A KR20247015090A KR20240067983A KR 20240067983 A KR20240067983 A KR 20240067983A KR 1020247015090 A KR1020247015090 A KR 1020247015090A KR 20247015090 A KR20247015090 A KR 20247015090A KR 20240067983 A KR20240067983 A KR 20240067983A
Authority
KR
South Korea
Prior art keywords
representation
input image
target object
image
images
Prior art date
Application number
KR1020247015090A
Other languages
English (en)
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 퀄컴 인코포레이티드
Publication of KR20240067983A publication Critical patent/KR20240067983A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/20Linear translation of whole images or parts thereof, e.g. panning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/60Rotation of whole images or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Abstract

이미지들 내의 객체들의 스케일 및/또는 포지션을 수정하기 위한 시스템들 및 기법들이 본 명세서에 설명된다. 예를 들어, 시스템은 카메라로부터의 이차원(2D) 입력 이미지 및 2D 입력 이미지의 3차원(3D) 표현을 획득할 수 있다. 시스템은 2D 입력 이미지 내의 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 추가로 결정할 수 있다. 시스템은 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정할 수 있다. 시스템은 디스플레이 상에 출력될 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 조정된 포즈에 기초하여 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 추가로 생성할 수 있다.

Description

이미지 수정 기법들
본 개시내용은 일반적으로 이미지 조정 또는 수정에 관한 것이다. 예를 들어, 본 개시내용의 양태들은 이미지들 내의 객체들의 스케일 및/또는 포지션을 수정하기 위한 시스템들 및 기법들에 관한 것이다.
많은 디바이스들 및 시스템들은 장면의 이미지들(또는 프레임들) 및/또는 비디오 데이터(다수의 프레임들을 포함함)를 생성하는 것에 의해 장면이 캡처될 수 있게 한다. 예를 들어, 카메라 또는 카메라를 포함하는 디바이스는 장면의 프레임들의 시퀀스(예컨대, 장면의 비디오)를 캡처할 수 있다. 일부 경우들에서, 프레임들의 시퀀스는, 다른 사용들 중에서도, 하나 이상의 기능들을 수행하기 위해 프로세싱될 수 있고, 디스플레이를 위해 출력될 수 있고, 다른 디바이스들에 의한 프로세싱 및/또는 소비를 위해 출력될 수 있다.
이미지를 캡처하기 위해 디바이스를 이용할 때, 사용자는 상이한 이미지 캡처 디바이스들에 의해 제공되는 상이한 이용가능한 시야들 사이에서 선택해야 할 수 있다. 일부 경우들에서, 사용자는 큰 객체가 좁은 시야를 갖는 이미지에 묘사되게 하는 텔레-앵글(tele-angle) 또는 망원 렌즈를 사용할지 아니면 넓은 시야를 갖는 광각 렌즈를 사용할지 선택할 수 있다. 예를 들어, 광각 렌즈를 이용하여 캡처된 이미지는 (넓은 시야로 인해) 장면의 더 큰 부분을 캡처할 수 있지만, 이미지 내의 객체들은 상대적으로 작을 수 있다.
사용자는 이미지의 일부분의 크기를 증가시키기 위해(예컨대, 위 이미지의 좌하단의 두 사람을 확대하기 위해) 입력(예컨대, 핀치-줌 입력과 같은 줌 입력)을 제공할 수 있다. 그러나, 전체 이미지도 줌인되어, 배경의 많은 부분이 줌인된 이미지의 시야를 벗어나게 할 것이다.
일부 예들에서, 이미지 내의 하나 이상의 객체들 또는 특징부들을 조정하기 위한 시스템들 및 기법들이 설명된다. 적어도 하나의 예에 따라, 하나 이상의 이미지들을 프로세싱하기 위한 방법이 제공된다. 방법은: 카메라로부터 이차원(2D) 입력 이미지를 획득하는 단계; 2D 입력 이미지의 3차원(3D) 표현을 획득하는 단계; 2D 입력 이미지 내의 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계; 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계; 및 디스플레이 상에 출력될 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 조정된 포즈에 기초하여 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하는 단계를 포함한다.
다른 예에서, 메모리(예컨대, 가상 콘텐츠 데이터, 하나 이상의 이미지들 등과 같은 데이터를 저장하도록 구성됨) 및 메모리에 커플링된 하나 이상의 프로세서들(예컨대, 회로부로 구현됨)을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치가 제공된다. 하나 이상의 프로세서들은: 카메라로부터 이차원(2D) 입력 이미지를 획득하고; 2D 입력 이미지의 3차원(3D) 표현을 획득하고; 2D 입력 이미지 내의 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하고; 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하고; 디스플레이 상에 출력될 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 조정된 포즈에 기초하여 상기 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하도록 구성되고, 그렇게 할 수 있다.
다른 예에서, 명령들을 저장한 비일시적 컴퓨터 판독가능 매체가 제공되고, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금: 카메라로부터 이차원(2D) 입력 이미지를 획득하게 하고; 2D 입력 이미지의 3차원(3D) 표현을 획득하게 하고; 2D 입력 이미지 내의 목표 객체에 대응하는 2D 입력 이미지의 상기 3D 표현의 제1 부분을 결정하게 하고; 목표 객체에 대응하는 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 포즈를 조정하게 하고; 디스플레이 상에 출력될 상기 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 조정된 포즈에 기초하여 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하게 한다.
다른 예에서, 하나 이상의 이미지들을 프로세싱하기 위한 장치가 제공된다. 장치는: 카메라로부터 이차원(2D) 입력 이미지를 획득하기 위한 수단; 2D 입력 이미지의 3차원(3D) 표현을 획득하기 위한 수단; 2D 입력 이미지 내의 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하기 위한 수단; 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하기 위한 수단; 및 디스플레이 상에 출력될 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 조정된 포즈에 기초하여 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하기 위한 수단을 포함한다.
일부 양태들에서, 목표 객체의 수정된 버전의 적어도 서브-부분은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 비해 2D 출력 이미지에서 확대된 크기를 갖는다.
일부 양태들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 심도(depth), 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 및 롤 회전을 조정하는 것 중 하나 이상을 포함한다.
일부 양태들에서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제1 버텍스들의 심도 값들을 감소시킨다.
일부 양태들에서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제2 버텍스들의 심도 값들을 증가시키는 것을 추가로 포함한다.
일부 양태들에서, 위에 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 목표 객체를 식별하는 사용자 입력을 획득하는 것을 추가로 포함하고; 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 조정된다.
일부 양태들에서, 위에서 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 목표 객체의 조정량의 표시를 획득하는 것; 2D 입력 이미지의 3D 표현의 포즈를 목표 객체의 조정량의 표시에 대응하는 양만큼 조정하는 것을 추가로 포함한다.
일부 양태들에서, 위에서 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 조정 범위, 겉보기(apparent) 크기 변화, 및 최대 왜곡량 중 하나 이상에 기초하여 목표 객체의 조정량을 결정하는 것; 2D 입력 이미지의 3D 표현의 포즈를 목표 객체의 조정량에 대응하는 양만큼 조정하는 것을 추가로 포함한다.
일부 양태들에서, 위에서 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 2D 입력 이미지 내의 목표 객체와 연관된 객체 마스크를 획득하는 것; 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것; 객체 마스크에 기초하여, 하나 이상의 추가 객체들에 대응하는 3D 표현의 제2 부분을 결정하는 것; 조정된 포즈를 갖는 3D 표현의 제1 부분과 3D 표현의 제2 부분을 조합하여 조합된 3D 메시를 생성하는 것을 추가로 포함한다.
일부 양태들에서, 2D 출력 이미지를 생성하는 것은 조합된 3D 메시를 2D 출력 이미지로 변환하는 것을 포함한다.
일부 양태들에서, 위에서 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 2D 입력 이미지 내의, 목표 객체와는 상이한, 하나 이상의 추가 객체들과 연관된 객체 마스크를 획득하는 것; 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것; 객체 마스크에 기초하여, 하나 이상의 추가 객체들 중 적어도 하나에 대응하는 3D 표현의 제2 부분을 결정하는 것; 및 3D 표현의 제1 부분의 포즈를 조정하고 3D 표현의 제2 부분의 하나 이상의 버텍스들을 고정하여 조정된 3D 메시를 생성하는 것을 추가로 포함한다.
일부 양태들에서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 버텍스들의 심도 값들을 감소시켜 버텍스들이 3D 표현의 제2 부분의 고정된 하나 이상의 버텍스들에 대해 사전결정된 수치적 대응성을 갖도록 한다.
일부 양태들에서, 2D 출력 이미지를 생성하는 것은 조정된 3D 메시를 2D 출력 이미지로 변환하는 것을 포함한다.
일부 양태들에서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것은 특징부 검출 및 객체 검출 중 적어도 하나를 포함한다.
일부 양태들에서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것은 2D 입력 이미지의 3D 표현의 제1 부분에 대응하는 심도 정보에 기초한다.
일부 양태들에서, 위에서 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 목표 객체에 대응하지 않는 2D 입력 이미지의 3D 표현의 제2 부분을 조정하지 않으면서 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것을 추가로 포함한다.
일부 양태들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 결정된 양만큼 조정된다.
일부 양태들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 디폴트 구성에 기초하여 결정된 양으로 조정된다.
일부 양태들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자의 선호도 및 과거 거동들의 머신 러닝에 기초하여 조정된다.
일부 양태들에서, 위에서 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 2D 입력 이미지 내의 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분을 결정하는 것; 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 포즈를 조정하는 것; 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 조정된 포즈에 추가로 기초하여 2D 출력 이미지를 생성하는 것을 추가로 포함한다.
일부 양태들에서, 제2 부분의 포즈에 대한 조정은 제1 부분의 포즈에 대한 조정과는 상이하다.
일부 양태들에서, 목표 객체의 수정된 버전의 적어도 일부분의 수정은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 대한 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 또는 롤 회전 중 하나 이상을 포함한다.
일부 양태들에서, 위에서 설명된 방법, 장치들, 및 컴퓨터-판독가능 매체는: 카메라로부터 제2 2D 입력 이미지를 획득하는 것으로서, 제2 2D 입력 이미지는 2D 입력 이미지에 포함되는 장면의 적어도 일부분을 포함하는, 카메라로부터 제2 2D 입력 이미지를 획득하는 것; 제2 2D 입력 이미지의 제2 3D 표현을 획득하는 것을 추가로 포함하고, 2D 출력 이미지의 적어도 일부분은 제2 2D 입력 이미지의 제2 3D 표현에 기초하여 생성된다.
일부 양태들에서, 위에서 설명된 장치들 중 하나 이상은 모바일 디바이스(예를 들어, 모바일 전화 또는 소위 "스마트폰" 또는 다른 모바일 디바이스), 웨어러블 디바이스, 확장 현실 디바이스(예를 들어, 가상 현실(VR) 디바이스, 증강 현실(AR) 디바이스, 또는 혼합 현실(MR) 디바이스), 개인용 컴퓨터, 랩톱 컴퓨터, 서버 컴퓨터, 차량(예를 들어, 차량의 컴퓨팅 디바이스), 또는 다른 디바이스이거나 그 일부이거나 또는 이를 포함한다. 일부 양태들에서, 장치는 하나 이상의 이미지들을 캡처하기 위한 카메라 또는 다수의 카메라들을 포함한다. 일부 양태들에서, 그 장치는 하나 이상의 이미지들, 통지들, 및/또는 다른 디스플레이가능 데이터를 디스플레이하기 위한 디스플레이를 포함한다. 일부 양태들에서, 장치는 하나 이상의 센서들을 포함할 수 있다. 일부 경우들에서, 하나 이상의 센서들은 장치의 위치 및/또는 포즈, 장치들의 상태를 결정, 및/또는 다른 목적들을 위해 사용될 수 있다.
이러한 발명의 내용은 청구 대상의 핵심적인 또는 본질적인 특징들을 식별하는 것으로 의도되는 것이 아니고, 청구 대상의 범주를 결정하기 위해 별개로 사용되는 것으로 의도되는 것도 아니다. 청구 대상은 본 특허의 전체 명세서의 적절한 부분들, 임의의 또는 모든 도면들, 및 각각의 청구항에 대한 참조에 의해 이해되어야 한다.
전술한 내용은 다른 특징들 및 실시 형태들과 함께, 하기의 명세서, 청구항들 및 첨부 도면들을 참조할 때 더 명백해질 것이다.
본 출원의 예시적인 실시 형태들은 다음의 도면들을 참조하여 아래에서 상세히 설명된다:
도 1a 내지 도 1c는 본 개시내용의 일부 예들에 따른 예시적인 이미지들에서 상이한 시야들을 도시하는 이미지들이다.
도 2a 내지 도 2c는 일부 예들에 따른 예시적인 이미지 조정 기법들을 도시한다.
도 3은 본 개시내용의 일부 예들에 따른 이미지 캡처 및 프로세싱 디바이스의 아키텍처를 도시하는 블록도이다.
도 4는 본 개시내용의 일부 예들에 따른 예시적인 이미지 조정 시스템을 도시하는 블록도이다.
도 5a 내지 도 5k는 본 개시내용의 일부 예들에 따른 이미지 조정 기법의 예시적인 단계들을 도시하는 이미지들이다.
도 6은 본 개시내용의 일부 예들에 따른 예시적인 이미지 조정 프로세스를 도시하는 흐름도이다.
도 7a 내지 도 7e는 본 개시내용의 일부 예들에 따른 예시적인 이미지 조정들을 도시하는 이미지들이다.
도 8은 일부 예들에 따른 하나 이상의 이미지들을 프로세싱하기 위한 프로세스의 일 예를 도시하는 흐름도이다.
도 9는 일부 예들에 따른 딥 러닝 네트워크의 일 예를 도시하는 블록도이다.
도 10은 일부 예들에 따른 콘볼루션 뉴럴 네트워크의 일 예를 도시하는 블록도이다.
도 11은 본 명세서에 설명된 소정 양태들을 구현하기 위한 컴퓨팅 시스템의 일 예를 도시하는 도면이다.
본 개시내용의 특정 양태들 및 실시 형태들이 아래에서 제공된다. 이들 양태들 및 실시 형태들 중 일부는 독립적으로 적용될 수 있고, 그들 중 일부는 당업자들에게 명백하듯이, 조합하여 적용될 수 있다. 다음의 설명에서는, 설명의 목적으로, 본 출원의 실시 형태들의 전반적인 이해를 제공하기 위해 특정 세부사항들이 기재된다. 그러나, 다양한 실시 형태들은 이들 특정 세부사항들 없이 실시될 수 있음이 명백할 것이다. 도면들 및 설명은 제한적인 것으로 의도되지 않는다.
다음의 설명은 예시적인 실시 형태들만을 제공하며, 본 개시내용의 범위, 적용가능성, 또는 구성을 제한하도록 의도되지 않는다. 오히려, 예시적인 실시 형태들의 다음의 설명은 예시적인 실시 형태를 구현하기 위한 가능한 설명을 당업자들에게 제공할 것이다. 첨부된 청구항들에 기재된 출원의 범위를 벗어나지 않으면서 엘리먼트들의 기능 및 배열에서 다양한 변경들이 이루어질 수 있다는 것이 이해되어야 한다.
장면의 이미지를 캡처할 때, 사진사들은 종종 사진에 대한 맥락을 제공하는 배경 객체들 및 정보를 포함하는 넓은 시야(FOV)를 캡처하는 것과 전경 객체들을 더 눈에 잘 띄고/띄거나 더 상세하게 캡처하기 위해 (예컨대, 망원 렌즈를 이용하여) 좁은 시야를 캡처하는 것 사이에서 선택을 내리도록 요구받는다. 도 1a 내지 도 1c는 상이한 선택된 FOV에 기초하여 상이한 장면들을 도시하는 이미지들이다. 도 1a는 넓은 FOV를 이용하여 캡처된 큰 건물(104) 앞에서 포즈를 취하고 있는 두 사람(102)의 사진이다. 도 1a에서, 이미지(100)는 건물(104)이 이미지(100)의 거의 전체 높이를 점유하는 반면, 사람들(102)은 이미지(100)의 높이의 1/4 미만을 점유하는 것을 도시한다. 도 1b 및 도 1c는 상이한 FOV로 캡처된 이벤트의 2장의 이미지들을 도시한다. 도 1b에서, 이미지(110)는 좁은 FOV로 캡처되고, 카메라에 가까운(예컨대, 전경에 있는) 사람(112) 뿐만 아니라 공연자(114)도 눈에 잘 띄게 이미지(110)에 포함되지만 배경(116)의 제한된 부분만이 이미지(110)에 포함된다. 도 1c에서, 이미지(120)는 넓은 FOV로 캡처되고, 사람(112)은, 카메라에 근접해서, 계속 눈에 잘 띄게 디스플레이된다. 이미지(120)에서, 공연자(114)는 사람(112)에 비해 작아 보이고, 배경(116)의 많은 부분은 이미지(120)에 도시된 이벤트가 스타디움에서 열리고 있다는 추가적인 맥락을 제공한다.
또한, 일부 경우들에서, 디바이스의 전면 카메라는 사용자가 이미지의 일부분(예컨대, 이미지의 배경에 있는 객체)을 줌인하게 하는 줌 기능을 갖지 않을 수 있다. 예를 들어, 모바일 폰의 전면 카메라를 이용하여 "셀피" 이미지를 캡처할 때, 사용자가 모바일 폰으로 하여금 셀피 이미지의 배경에 있는 객체를 줌인하게 하는 입력을 제공하지 못할 수 있다.
이미지 조정 기법들은 상이한 FOV의 이점들을 조합하기 위해 캡처된 이미지들 내의 관심 영역들(ROI) 또는 목표 객체들을 조정하는데 사용될 수 있다. 예를 들어, 이미지 조정 기법은 이미지(120) 내에서 공연자(114)가 더 눈에 잘 띄게(예컨대, 가수를 줌하고/하거나 그의 크기를 증가시킴으로써) 만들면서 배경(116)의 스케일은 유지하는데 사용될 수 있다.
도 2a 내지 도 2c는 예시적인 이미지 조정 기법들을 도시한다. 도 2a는 2D 이미지들에서 ROI(들) 또는 목표 객체들을 조정하는데 사용될 수 있는 예시적인 인페인팅(inpainting) 기법(200)을 도시한다. 입력 이미지(202)는 카메라에 의해 캡처된 2D 이미지의 초기 상태를 도시한다. 입력 이미지(202)에서, 사람(203)은 이미지의 전경에 있고, 많은 다른 객체들(예컨대, 나무, 건물 등)은 입력 이미지(202)의 배경(205)에 있다. 도 2a에 도시된 예시적인 인페인팅 기법(200)에서, 조정을 위해 선택된 목표 객체는 사람(203)이고, 선택된 조정은 사람(203)을 줌인(또는 확대)하는 것이다.
분할(segmentation) 이미지(204)는 ROI 또는 목표 객체를 입력 이미지(202) 내의 다른 객체들로부터 분리하기 위해 입력 이미지(202) 상에 수행될 수 있는 분할의 일 예를 제공한다. 분할 이미지(204)에서, 사람(203)과 연관된 입력 이미지(202)의 영역(사람(203) 형상을 한 백색 영역으로 표현됨)은 입력 이미지(202)의 나머지(사람(203)을 둘러싼 흑색 배경으로 표현됨)로부터 분할된 것으로 도시된다. 일부 경우들에서, 분할 이미지(204)에서 도시된 분할은 머신 러닝 모델에 의해 전체적으로 또는 부분적으로 수행될 수 있다. 예를 들어, 머신 러닝 모델은 입력 이미지(202)에서 특징부들을 검출하도록 트레이닝될 수 있다. 일부 경우들에서, 입력 이미지(202)에서 검출된 특징부들에 기초하여, 머신 러닝 모델은 입력 이미지(202)에서 객체들을 분류(classify)할 수 있다. 분할의 추가적인 예들이 도 4에 도시된 특징부 분할 머신 러닝 모델(404)에 대해 아래 더 상세하게 설명된다. 사람(203)에 대한 예시적인 분류들은 "사람", "전경 객체" 등을 포함할 수 있다. 일부 경우들에서, 사용자는 입력 이미지(202) 내의 어느 객체들(또는 분류들)을 인페인팅 기법(200)을 이용한 조정(예컨대, 줌인)의 목표로 할지 선택할 수 있다.
분할 이미지(204)에 도시된 입력 이미지(202)의 사람(203)과 배경(205) 사이의 분할에 기초하여, 인페인팅 기법(200)은 목표 객체(예컨대, 사람(203))와 연관된 입력 이미지(202)의 픽셀들을 포함하는 목표 객체 이미지(206) 및 배경(205)과 연관된 입력 이미지(202)의 픽셀들을 포함하는 비-조정 이미지(208)를 생성할 수 있다. 목표 객체 이미지(206)에서, 배경(205)과 연관된 픽셀들은 빈 영역(207)에 의해 도시된 바와 같이 제거되었고, 역으로 비-조정 이미지(208)에서, 목표 객체(예컨대, 사람(203))와 연관된 픽셀들은 빈 영역(209)에 의해 도시된 바와 같이 제거되었다. 조정된 이미지(210)는 사람(203)을 줌인하는 것을 도시한다. 도시된 바와 같이, 줌인하는 것은 사람(203)의 크기를 확대된 사람(211)으로 확대하는 것을 포함한다. 일부 양태들에서, 목표 객체(예컨대, 사람(203))에 줌인하기 위한 기법들은 입력 이미지(202) 내의 목표 객체에 의해 점유되는 부분과 비교할 때 더 큰 부분에 걸쳐 목표 객체와 연관된 픽셀들의 보간을 포함할 수 있다. 일부 경우들에서, 줌인 후에, 확대된 사람(211)의 픽셀들은 사람(203)의 원래 크기에 대응하는 빈 영역(209)과 완전히 중첩되지 않을 수 있다. 유사하게, 빈 영역(209)은 줌인 후에 확대된 사람(211)에 의해 커버되지 않는 픽셀들을 점유할 수 있다. 인페인팅된 이미지(212)는 인페인팅 프로세스를 도시하는데, 이는 비-조정 이미지(208) 내의 빈 영역(209)을 사람(203)에 의해 가려졌던 입력 이미지(202)에서 캡처된 장면의 일부분을 근사(또는 추정)하는 색상들로 채우려고 시도한다. 일 예시적인 예에서, 인페인팅은 빈 영역(209)에 이웃하는 입력 이미지(202) 내의 픽셀들로부터의 색상들을 보간 및/또는 블렌딩하고, 보간된 색상들을 빈 영역(209)에 적용함으로써 수행될 수 있다. 인페인팅된 이미지(212)에 도시된 바와 같이, 인페인팅된 부분(213) 내의 줌 객체(예컨대, 사람(203))의 윤곽은 인페인팅이 완료된 후에 유지될 수 있다. 인페인팅 기법(200)은 조정된 이미지(210)와 인페인팅된 이미지(212)를 조합할 수 있다. 일부 경우들에서, 인페인팅 기법(200)은 확대된 사람(211) 및 인페인팅된 부분(213)의 에지들 주위에서 평활화 및 블렌딩을 수행할 수 있다. 다른 예시적인 예에서, 입력 이미지(202)와 동일한 장면 또는 동일한 장면의 일부분의 제2 입력 이미지(미도시)는 입력 이미지(202) 내의 사람(203)에 의해 가려진 장면의 부분들을 포함할 수 있다. 일부 예들에서, 인페인팅 기법(200)은 제2 입력 이미지로부터의 픽셀들을 조정된 이미지(210), 인페인팅된 이미지(212), 하나 이상의 추가 이미지들, 또는 이들의 임의의 조합과 조합할 수 있다. 이미지(216)는 인페인팅 기법(200)의 최종 결과를 도시한다. 도 2a에 대해 설명된 인페인팅 기법은 연산 집약적일 수 있고, 인페인팅이 입력 이미지에서 보이지 않았던 장면의 부분들에 대해 픽셀 색상 정보를 추론해야 하는 곳에서 아티팩트들을 초래할 수 있다.
도 2b 및 도 2c는 이미지에서 ROI들 및/또는 목표 객체들의 외관(appearance)을 조정하기 위한 다른 예시적인 이미지 조정 기법(220)을 도시한다. 도 2b는 2D 이미지(240) 및 대응하는 3D 메시(250)의 예를 도시한다. 2D 이미지(240)는 목표 객체(243)(예컨대, 차량)의 2D 표현을 포함하고, 3D 메시(250)는 목표 객체(253)의 3D 표현을 포함한다. 도 2b에 도시된 바와 같이, 2D 이미지(240)는 이미지 평면(248) 상으로의 3D 메시(250)의 투영으로 간주될 수 있다. 일부 양태들에서, 3D 메시(250)는 또한 3D 메시(250)의 3D 공간으로의 이미지 평면(248)에 위치된 2D 이미지의 역투영(unprojection)으로 고려될 수 있다. 카메라(244)에 대한 이미지 평면(248)의 위치는 카메라의 파라미터들, 예컨대, 초점 길이, 시야, 스큐(skew)(예컨대, 카메라와 이미지 평면(248) 사이의 오정렬) 등에 기초하여 결정될 수 있다. 도 2b 및 도 2c의 도시된 예들에서, 카메라(244)의 시야(270)는 3D 메시의 3D 공간에서 피라미드 형상 영역으로 도시된다. 2D 이미지(240) 내의 객체 상의 예시적인 픽셀(242)은 카메라(244)의 투영(245)의 중심으로부터 유래된 광선 에 의해 교차된다. 물리적 세계에서 카메라(244)의 투영(245)의 중심에 대응하는 위치는 3D 메시(250) 내의 지점으로서 표현될 수 있다. 일부 경우들에서, 목표 객체(243)의 거리가 투영(245)의 중심으로부터 공지된 거리 d에 있는 경우, 예시적인 픽셀(242)에 대응하는 포인트(246)(예컨대, 3D 버텍스)는 광선 의 방향으로 투영(245)의 카메라 중심으로부터 거리 d에 위치될 수 있다.
일부 경우들에서, 2D 이미지의 픽셀들의 각각에 대응하는 거리 정보는 거리 정보가 2D 이미지(240) 내에 포함될 때 공지될 수 있다. 일 예시적인 예에서, 2D 이미지(240)는 2D 이미지(240) 내의 각각의 픽셀 위치에 대한 색상 정보 및 심도 정보를 포함하는 RGB-D 이미지를 포함할 수 있다. 일부 경우들에서, 2D 이미지의 픽셀들의 각각에 대응하는 거리 정보는 명시적 거리 정보를 포함하지 않는 2D 이미지로부터 추정될 수 있다.
일 예시적인 예에서, 심도 정보는 심도(또는 2D 이미지 내의 객체들의 상대 심도)를 결정하도록 트레이닝된 머신 러닝 시스템에 의해 추론될 수 있다. 일부 경우들에서, 트레이닝 데이터세트는 2D 이미지(예컨대, RGB-D) 이미지들 내의 각각의 픽셀에 대한 심도 정보를 갖는 2D 이미지를 포함할 수 있다. 일부 경우들에서, 트레이닝 데이터세트는, 라벨링된 특징부들, 객체들 및/또는 분류들(예컨대, 차, 사람, 나무, 건물, 전경 객체, 배경 객체)을 포함하는 이미지들 뿐만 아니라 라벨링된 특징부들, 객체들 및/또는 분류들에 대응하는 심도 정보를 포함할 수 있다. 추론 동안(예컨대, 머신 러닝 모델이 트레이닝된 후에), 머신 러닝 모델은 2D 이미지와 연관된 픽셀들, 특징부들, 객체들, 라벨들, 및/또는 분류들에 대응하는 거리들을 추정할 수 있다.
도 2c는 목표 객체(263)의 2D 표현이 도 2b에 도시된 목표 객체(243)의 2D 표현과 비교하여 크기가 증가되고/되거나 줌인된 외관을 갖는 2D 이미지(240)에 대응하는 조정된 2D 이미지(260)를 생성하기 위한 예시적인 기법을 도시한다. 줌인 효과는 카메라(244)의 투영(245)의 중심을 3D 메시(250) 내에서 (예컨대, 상이한 버텍스 좌표들을 갖는) 새로운 포지션으로 이동시킴으로써 달성될 수 있다. 예를 들어, 카메라의 투영(245)의 중심은 목표 객체(253)의 3D 표현에 더 가까이 이동될 수 있다. 도시된 바와 같이, 목표 객체(253)의 3D 표현의 포인트(246)를 통과하는 광선 사이의 교차점은 픽셀 포지션(262)에서 이미지 평면(268)과 교차한다. 일부 양태에서, 조정된 2D 이미지(260)는 투영(245)의 카메라 중심으로부터 3D 메시(250)의 버텍스들(목표 객체(253)의 3D 표현의 버텍스들을 포함)의 각각을 통해 광선들을 투영시키고 투영된 광선과 교차하는 대응하는 픽셀 포지션을 결정함으로써 구성될 수 있다. 그러나, 이러한 기법은 계산 집약적일 수 있다.
조정된 2D 이미지(260)를 생성하기 위한 다른 예시적인 구현예는 원근투영(perspective projection) 기법을 사용한다. 일 예시적인 예에서, 3D 메시(250)로부터 조정된 2D 이미지(260)로의 투영은 식(1)에 도시된 바와 같이 원근투영을 포함할 수 있다.
[식(1)]
여기서 x 및 y는 2D 이미지에서 투영된 픽셀 좌표들이고, X는 3D 메시 내의 버텍스의 X 성분(예컨대, 수평 축 포지션)이고, Y는 3D 메시 내의 버텍스의 Y 성분(예컨대, 수직 축 포지션)이고, Z는 3D 메시 내의 버텍스의 Z 성분(예컨대, 심도)이다. 식(1)의 예에서 3D 메시의 좌표계에 대한 원점은, 카메라 좌표계로도 지칭되는 투영(245)의 카메라 중심에 위치될 수 있다. 일부 경우들에서, 3D 메시(250)의 버텍스들의 좌표들이 카메라 좌표계 이외의 좌표계에 대한 것인 경우, 이미지 조정 기법(220)은 조정된 2D 이미지(260) 상으로의 3D 메시(250)의 투영 이전에 카메라 좌표계로의 좌표 변환을 수행할 수 있다. 원근투영 기법들에 추가적으로 또는 대안적으로, 제한 없이, 직각 투영 및 사선 투영을 포함하는 3D로부터 2D로의 다른 투영 기법들이 본 개시내용의 범주를 벗어나지 않으면서 이용될 수 있다. 일부 구현예들에서, 2D 이미지를 캡처한 물리적 카메라의 투영 기법에 대응하는 투영 기법이 사용될 수 있다. 일부 경우들에서, 물리적 카메라의 투영 기법에 대응하는 투영 기법을 이용하는 것은 물리적 카메라 투영 기법과 조정된 2D 이미지(260) 상에 3D 메시(250)를 투영하는데 활용되는 투영 기법 사이의 불일치에 의해 야기될 수 있는 조정된 2D 이미지 내의 왜곡들을 감소시킬 수 있다.
도 2b 및 도 2c에 도시된 이미지 조정 기법(220)은 도 2a에 도시된 인페인팅 기법(200)보다 이점을 가질 수 있는데, 그 이유는 목표 객체(253)의 3D 표현 및 3D 메시의 나머지가 고정된 채로 유지되기 때문이다. 결과적으로, 도 2a에 도시된 빈 영역(209)과 같은 빈 영역들이 생성되지 않고, 이미지 조정 기법(220)은 인페인팅을 필요로 하지 않을 수 있다. 도시된 이미지 조정 기법(220)의 한 가지 단점은 카메라(244)의 위치를 이동시키고, 그럼으로써 투영(245)의 중심을 이동시키는 것이 동시에 목표 객체(253)의 3D 표현, 뿐만 아니라 목표 객체(미도시)와 연관되지 않은 3D 메시 내의 버텍스들, 예컨대 다른 객체들(예컨대, 차, 사람, 건물, 나무 등) 둘 모두를 포함하는, 모든 3D 메시 내의 버텍스들을 조정(예컨대, 줌인)하는 것이다. 결과적으로, 이미지 조정 기법(220)이 목표 객체를 조정(예컨대, 줌인)하는 원하는 효과를 달성하지만, 이미지 조정 기법(220)은 원래의 2D 이미지(240)의 다른 부분들을 조정되지 않은 상태로 남겨두면서 ROI(들) 또는 목표 객체(들)만을 조정하는 능력을 제공하지 않는다.
이미지의 다른 부분들에 영향을 주지 않으면서 이미지 내의 ROI(들) 또는 목표 객체(들)을 정확하고 효율적으로 조정하기 위한 시스템들 및 기법들이 필요하다. 예를 들어, 이미지들 내의 ROI(들) 또는 목표 객체(들)의 외관을 조정하면서, 이미지들의 다른 객체들 및/또는 부분들을 조정되지 않은 상태로 남겨두는 것은 넓은 FOV 및 좁은 FOV 둘 모두의 이점을 조합할 수 있다. 예를 들어, 넓은 FOV 이미지 캡처로 인해 입력 이미지에서 작게 보이는 ROI들은 조정된 이미지에서 더 크게 및/또는 카메라에 더 가까이 보이도록 크기가 조정(예컨대, 줌인)될 수 있다.
이미지의 다른 부분들에 영향을 주지 않으면서 이미지의 하나 이상의 관심 영역들(ROI들)을 선택적으로 조정하기 위한 시스템들, 장치들, 프로세스들(방법들로도 지칭됨), 및 컴퓨터-판독가능 매체("시스템들 및 기법들"로 총칭됨)가 본 명세서에 기술된다. 시스템들 및 기법들은 이미지의 다른 부분들(예컨대, 전경 객체, 배경 객체들 등)의 외관(예컨대, 크기, 포지션 등)에 영향을 주지 않으면서 사용자가 이미지 내의 (예컨대, 사용자, 머신 러닝 모델 등에 의해 선택된) ROI 또는 목표 객체의 외관을 조정(예컨대, 크기 증가 및/또는 포지션 변경)하기 위한 사용자 입력을 제공하게 한다. 일 예시적인 예에서, 시스템들 및 기법들은 사용자가 ROI(들)/목표 객체(들) 이외의 객체들 및 이미지의 배경이 목표 객체와 비교하여 줌되지 않거나 또는 적은 정도로 줌되도록 FOV(예컨대, 광각 렌즈에 의해 제공되는 넓은 FOV)를 유지하면서 이미지 내의 하나 이상의 목표 객체들 또는 ROI들을 선택적으로 줌인하기 위한 입력을 제공할 수 있게 함으로써 사용자 경험을 향상시킬 수 있다.
일부 예들에서, 이미지 조정 시스템은 하나 이상의 심도 이미지들 및 하나 이상의 컬러 이미지들(예컨대, RGB 이미지로 지칭되는, 픽셀당 적색(R), 녹색(G), 및 청색(B) 컬러 성분들을 갖는 이미지)을 프로세싱할 수 있다. 심도 이미지는 컬러 이미지를 캡처하는데 사용된 카메라로부터의 컬러 이미지 내의 각각의 픽셀의 심도를 나타낼 수 있다. 일부 양태들에서, 하나 이상의 컬러 이미지들은 광각 렌즈를 이용하여 캡처된다. 일부 경우들에서, 이미지 조정 시스템은 하나 이상의 컬러 이미지들을 대신하여 또는 이에 더하여 하나 이상의 흑백 이미지들을 프로세싱할 수 있다. 일부 예들에서, 단일 이미지는 픽셀당 색상 정보(예컨대, RGB) 및 심도 정보를 포함할 수 있는데, 이는 RGB-심도(RGB-D) 이미지로 지칭된다.
이미지 조정 시스템은 컬러 이미지 및 컬러 이미지에 대응하는 심도 이미지를 이용하여 이차원(2D) 컬러 이미지의 3차원(3D) 표현(예컨대, 3D 메시)을 생성할 수 있다. 예를 들어, 심도 이미지에 의해 표시되는 각각의 픽셀에 대한 심도 정보 및 카메라의 공지된 FOV에 기초하여 (예컨대, 고유 및/또는 외부 파라미터들과 같은 카메라 파라미터들에 기초하여), 시스템은 3D 공간(예컨대, 3D 메시) 내의 컬러 이미지의 주어진 픽셀의 3D 포지션을 결정할 수 있다. 심도 이미지에 의해 표시된 바와 같이 (카메라로부터의) 픽셀 거리가 10 미터인 일 예시적인 예에서, 픽셀은 픽셀에 대응하는 3D 포지션의 방향으로 가리키는 투영의 카메라 중심으로부터 유래되는 광선 사이의 교차점을 나타낼 수 있다. 2D 컬러 이미지 내의 픽셀에 대응하는 3D 포지션은 카메라 중심으로부터 광선의 방향으로 10 미터에 위치될 수 있다. 컬러 이미지의 각각의 픽셀이 역투영되면, 시스템은 대응하는 3D 포지션들(예컨대, 버텍스들)을 메시에 연결할 수 있다. 시스템은 컬러 이미지로부터의 색상 정보를 이용하여 (색상을 갖는) 메시를 텍스처화할 수 있다. 이러한 기법은 (2D RGB-D로부터 3D로의) 원근역투영으로 지칭된다. 일부 경우들에서, 3D 메시는 이미지 내의 아이템들(예컨대, 사람들과 같은 객체들 및 이미지 내의 다른 물리적 객체들)의 구조를 나타내는 삼각형 또는 다각형 메시일 수 있다. 예를 들어, 3D 메시는 장면의 3D 공간 내의 객체들의 형상들을 정의하는 버텍스들, 에지들, 및 면들의 집합을 포함할 수 있다.
이미지 조정 시스템은 또한 이미지 내에서 하나 이상의 객체들(예컨대, 얼굴들)을 검출하기 위해 컬러 이미지 상에 객체 검출(예컨대, 얼굴 검출)을 수행할 수 있다. 사용자는 (예컨대, 터치스크린 인터페이스를 통해, 음성 입력을 통해, 제스처 입력, 시선 입력 등을 이용하여) 사용자 입력을 제공하여 사용자가 조정(예컨대, 더 크게 만들기, 회전을 변경 등)하고자 하는 컬러 이미지 내의 하나 이상의 ROI들(이들은 검출된 하나 이상의 객체들 중에서 목표 객체 또는 다수의 목표 객체들과 연관될 수 있음)을 나타내거나 또는 선택할 수 있다.
일부 경우들에서, 가장 보정된 객체(예컨대, 2D 이미지의 수직 또는 수평 축들과 가장 정렬됨)는 하나 이상의 ROI들을 나타내거나 또는 선택하는데 사용될 수 있다. 일 예시적인 예에서, 카메라 및/또는 카메라를 포함하는 디바이스의 포즈는 가장 보정된 객체를 결정하는데 사용될 수 있다. 일부 경우들에서, 제1 카메라에 의해 2D 컬러 이미지에서 캡처된 장면 또는 장면의 일부분은 또한 제2 카메라에 의해 캡처될 수 있다. 일부 경우들에서, 제1 및 제2 카메라 둘 모두에 의해 캡처된 장면 또는 장면의 일부분 내의 객체들은 하나 이상의 ROI들을 결정하는데 사용될 수 있다. 일부 경우들에서, 제1 카메라 및 제2 카메라는 단일 디바이스에 포함될 수 있다(예컨대, 다수의 카메라들을 구비한 모바일 디바이스). 일부 경우들에서, 제1 카메라 및 제2 카메라는 별개의 디바이스들에 포함될 수 있다.
일부 예들에서, 이미지 조정 시스템은 컬러 이미지 상에 분할(예컨대, 이진 분할, 시멘틱 분할, 인스턴스 분할 등)을 수행하여 컬러 이미지 내의 하나 이상의 객체들을 식별하는 객체 마스크를 생성할 수 있다. 일 예에서, 셀피 이미지를 캡처할 때와 같이, 객체 마스크는 이미지 내에서 카메라에 가장 가까운 객체에 속하는 픽셀들 및 이미지 내에서 카메라에 가장 가까운 객체에 속하지 않는 픽셀들을 나타낼 수 있다. 이미지 조정 시스템은 객체 마스크를 이용하여 (예컨대, 조정을 방지하거나, 또는 마스킹된 객체와 연관된 버텍스들을 고정함으로써) 객체 마스크에서 식별되는 하나 이상의 객체들이 조정되는 것을 방지할 수 있다.
3D 메시, 객체 마스크, 및 (목표 객체에 대응하는) ROI의 선택에 기초하여, 이미지 조정 시스템은 ROI에 대응하는 3D 메시의 조정 부분(또는 목표 객체) 및 3D 메시의 비-조정 부분(예컨대, 조정되는 것이 금지되는 3D 메시의 일부분)을 결정할 수 있다. 이미지 조정 시스템은 효과적으로 크기를 증가, 회전을 변경, 또는 다른 방식으로 모핑된(morphed) 3D 메시가 재투영될 이차원(2D) 출력 이미지의 대응하는 줌을 조정하기 위하여 ROI에 대응하는 3D 메시의 조정 부분의 기하학적 구조(예컨대, 버텍스들, 에지들, 및 면들)를 모핑할 수 있다. ROI에 대응하는 3D 메시의 조정 부분의 모핑은 3D 메시의 비-조정 부분을 변경되지 않은 채로 남겨둘 수 있다. 일부 경우들에서, ROI에 대응하는 3D 메시의 조정 부분의 모핑은 또한 ROI의 기하학적 구조의 모핑에 의해 영향을 받지 않은 조정 부분의 서브-부분들을 변하지 않은 채로 남겨둘 수 있다.
일 예시적인 예에서, 3D 메시의 조정 부분의 기하학적 구조를 모핑하여 2D 이미지 내의 ROI 상에 줌인을 생성하기 위해, 시스템들 및 기법들은 3D 메시의 조정 부분 내의 버텍스들(및 그에 따른 에지들 및 면들)의 심도 값들(예컨대, z-값들)을 감소시키고, 그럼으로써 버텍스들을 카메라에 가까이 가져올 수 있다. 추가적으로 또는 대안적으로, 3D 메시의 조정 부분의 기하학적 구조를 모핑하기 위하여, 시스템은 2D 출력 이미지 내의 ROI의 서브-부분의 포지션을 유지하는 병진 벡터를 따라 조정 부분의 기하학적 구조를 병진시킬 수 있다. 예를 들어, 병진 벡터는 ROI/목표 객체(예컨대, 얼굴의 중심)의 서브-부분의 고정된 2D 픽셀 포지션을 유지하도록 선택될 수 있다. 일부 경우들에서, 병진 벡터의 방향은 카메라 중심으로부터 고정된 2D 픽셀 포지션 및 대응하는 3D 버텍스를 통과하는 광선의 방향에 대응할 수 있다. 본 명세서에 사용된 바와 같이, 조정 부분의 기하학적 구조를 모핑하는 것은 또한 3D 메시의 제1 부분의 기하학적 구조의 포즈를 조정하는 것으로 지칭될 수 있다. 일부 구현예들에서, 조정 부분을 모핑한 후에, 이미지 조정 시스템은 3D 메시의 모핑된(또는 포즈 조정된) 조정 부분을 3D 메시의 비-조정 부분과 융합 또는 조합할 수 있다. 일부 구현예들에서, 조정 부분 및 비-조정 부분은, 비-조정 부분에 대응하는 3D 버텍스들이 고정되고 비-조정 부분에 매우 근접하게 발생할 수 있는 조정 부분의 임의의 모핑으로부터 배제된 상태로, 단일 3D 메시에서 유지될 수 있다.
이어서 이미지 조정 시스템은 3D 메시(목표 객체에 대응하는 모핑된 조정 부분을 포함함)를 2D 이미지 도메인으로 변환 또는 이동시켜서, ROI/목표 객체의 수정된 버전을 갖는 출력 2D 이미지를 생성할 수 있다. 일 예시적인 예에서, 2D 내의 ROI/목표 객체는 ROI/목표 객체에 대응하는 3D 메시의 부분들이 모핑된 후에 (원래 이미지와 비교하여) 줌인될 수 있다. 예를 들어, 3D 메시를 3D 도메인으로부터 2D 이미지 도메인으로 변환하도록 원근투영 기법이 수행될 수 있다. 결과적으로, 출력 이미지는 광각 렌즈의 넓은 시야 및 ROI/목표 객체의 확대된 버전을 포함한다.
핸드헬드 카메라로부터 획득된 이미지들 내의 하나 이상의 ROI(들)를 조정하기 위한 예들이 설명되지만, 본 명세서에 설명된 이미지 조정 시스템들 및 기법들은 기타 디바이스들, 예컨대, 차량의 카메라, 공장 환경의 로보틱스 디바이스, 및/또는 카메라를 포함하는 임의의 다른 시스템에 의해 획득된 이미지들에 대한 이미지 조정을 수행하는데 사용될 수 있다.
본 명세서에 설명된 기법들의 다양한 양태들이 도면들에 관해 아래에서 논의될 것이다. 도 3은 이미지 캡처 및 프로세싱 시스템(300)의 아키텍처를 도시한 블록도이다. 이미지 캡처 및 프로세싱 시스템(300)은 장면들의 이미지들(예를 들어, 장면(310)의 이미지)을 캡처 및 프로세싱하는 데 사용되는 다양한 컴포넌트들을 포함한다. 이미지 캡처 및 프로세싱 시스템(300)은 독립형(standalone) 이미지들(또는 사진들)을 캡처할 수 있고/있거나 특정 시퀀스에서 다수의 이미지들(또는 비디오 프레임들)을 포함하는 비디오를 캡처할 수 있다. 이미지 캡처 및 프로세싱 시스템(300)의 렌즈(315)는 장면(310)을 향하고 장면(310)으로부터 광을 수광한다. 렌즈(315)는 이미지 센서(330)를 향해 광을 만곡시킨다. 렌즈(315)에 의해 수신된 빛은 하나 이상의 제어 메커니즘들(320)에 의해 제어되는 조리개를 통과하고 이미지 센서(330)에 의해 수신된다.
하나 이상의 제어 메커니즘들(320)은 이미지 센서(330)로부터의 정보에 기초하여 그리고/또는 이미지 프로세서(350)로부터의 정보에 기초하여 노출, 포커스, 및/또는 줌을 제어할 수 있다. 하나 이상의 제어 메커니즘들(320)은 다수의 메커니즘들 및 컴포넌트들을 포함할 수 있고; 예를 들어, 제어 메커니즘들(320)은 하나 이상의 노출 제어 메커니즘들(325A), 하나 이상의 포커스 제어 메커니즘들(325B), 및/또는 하나 이상의 줌 제어 메커니즘들(325C)을 포함할 수 있다. 하나 이상의 제어 메커니즘들(320)은 또한 아날로그 이득, 플래시, HDR, 피사계 심도, 및/또는 다른 이미지 캡처 속성을 제어하는 제어 메커니즘들과 같이 예시된 것 외에 추가적인 제어 메커니즘들을 포함할 수 있다.
제어 메커니즘들(320) 중 포커스 제어 메커니즘(325B)은 포커스 설정을 획득할 수 있다. 일부 예들에서, 포커스 제어 메커니즘(325B)은 메모리 레지스터에 포커스 설정을 저장한다. 포커스 설정에 기초하여, 포커스 제어 메커니즘(325B)은 이미지 센서(330)의 포지션에 상대적으로 렌즈(315)의 포지션을 조정할 수 있다. 예를 들어, 포커스 설정에 기초하여, 포커스 제어 메커니즘(325B)은 모터 또는 서보(또는 다른 렌즈 메커니즘)를 작동시켜 렌즈(315)를 이미지 센서(330)에 더 가깝게 또는 이미지 센서(330)로부터 더 멀리 이동시켜, 포커스를 조정할 수 있다. 일부 경우들에서, 빛이 포토다이오드에 도달하기 전에 대응하는 포토다이오드를 향해 렌즈(315)로부터 수신된 빛을 각각 휘어지게 하는, 이미지 센서(330)의 각각의 포토다이오드 위의 하나 이상의 마이크로렌즈와 같은 추가 렌즈가 이미지 캡처 및 프로세싱 시스템(300)에 포함될 수 있다. 포커스 설정은 CDAF(contrast detection autofocus), PDAF(phase detection autofocus), HAF(hybrid autofocus) 또는 이들의 일부 조합을 통해 결정될 수 있다. 포커스 설정은 제어 메커니즘(320), 이미지 센서(330), 및/또는 이미지 프로세서(350)를 이용하여 결정될 수 있다. 포커스 설정은 이미지 캡처 설정 및/또는 이미지 프로세싱 설정이라고 할 수 있다.
제어 메커니즘들(320) 중 노출 제어 메커니즘(325A)은 노출 설정을 획득할 수 있다. 일부 경우들에서, 노출 제어 메커니즘(325A)은 메모리 레지스터에 노출 설정을 저장한다. 이 노출 설정에 기초하여, 노출 제어 메커니즘(325A)은 조리개의 크기(예를 들어, 조리개 크기 또는 f/스톱), 조리개가 열려 있는 지속 시간(예를 들어, 노출 시간 또는 셔터 속도), 이미지 센서(330)의 감도(예를 들어, ISO 속도 또는 필름 속도), 이미지 센서(330)에 의해 적용된 아날로그 이득, 또는 이들의 임의의 조합을 제어할 수 있다. 노출 설정은 이미지 캡처 설정 및/또는 이미지 프로세싱 설정으로서 지칭될 수 있다.
제어 메커니즘들(320) 중 줌 제어 메커니즘(325C)은 줌 설정을 획득할 수 있다. 일부 예들에서, 줌 제어 메커니즘(325C)은 메모리 레지스터에 줌 설정을 저장한다. 줌 설정에 기초하여, 줌 제어 메커니즘(325C)은 렌즈(315) 및 하나 이상의 추가 렌즈를 포함하는 렌즈 요소들의 조립체(렌즈 조립체)의 초점 길이를 제어할 수 있다. 예를 들어, 줌 제어 메커니즘(325C)은 서로에 대해 하나 이상의 렌즈를 이동시키기 위해 하나 이상의 모터 또는 서보(또는 다른 렌즈 메커니즘)를 작동시킴으로써 렌즈 어셈블리의 초점 길이를 제어할 수 있다. 줌 설정은 이미지 캡처 설정 및/또는 이미지 프로세싱 설정이라고 할 수 있다. 일부 예들에서, 렌즈 어셈블리는 동초점(parfocal) 줌 렌즈 또는 가변초점(varifocal) 줌 렌즈를 포함할 수 있다. 일부 예들에서, 렌즈 조립체는 먼저 장면(310)으로부터 빛을 수신하는 (일부 경우들에서 렌즈(315)일 수 있는) 포커싱 렌즈를 포함할 수 있으며, 다음으로 빛이 이미지 센서(330)에 도달하기 전에 포커싱 렌즈(예컨대, 렌즈(315))와 이미지 센서(330) 사이의 무한초점(afocal) 줌 시스템을 빛이 통과한다. 무한초점 줌 시스템은, 일부 경우에, 초점 길이가 같거나 유사한(예를 들어, 서로의 임계 차이 내에 있는) 2개의 포지티브(예를 들어, 수렴하는, 볼록) 렌즈를 포함할 수 있으며, 그 사이에는 네거티브(예를 들어, 발산하는, 오목) 렌즈를 갖는다. 일부 경우들에서, 줌 제어 메커니즘(325C)은 네거티브 렌즈 및 포지티브 렌즈들 중 하나 또는 둘 모두와 같은 무한초점 줌 시스템에서의 렌즈 중 하나 이상의 렌즈들을 움직인다.
이미지 센서(330)는 포토다이오드들 또는 다른 감광 요소들의 하나 이상의 어레이들을 포함한다. 각각의 포토다이오드는 이미지 센서(330)에 의해 생성된 이미지에서의 특정 픽셀에 최종적으로 대응하는 빛의 양을 측정한다. 일부 경우들에서, 상이한 포토다이오드들은 상이한 컬러 필터들에 의해 커버될 수 있고, 따라서, 포토다이오드를 커버하는 필터의 컬러와 매칭하는 광을 측정할 수 있다. 예를 들어, 베이어 컬러 필터들은 적색 컬러 필터들, 청색 컬러 필터들, 및 녹색 컬러 필터들을 포함하고, 이미지의 각각의 픽셀은 적색 컬러 필터에서 커버된 적어도 하나의 포토다이오드로부터의 적색 광 데이터, 청색 컬러 필터에서 커버된 적어도 하나의 포토다이오드로부터의 청색 광 데이터, 및 녹색 컬러 필터에서 커버된 적어도 하나의 포토다이오드로부터의 녹색 광 데이터에 기초하여 생성된다. 다른 유형들의 컬러 필터들이 적색, 청색, 및/또는 녹색 컬러 필터들 대신에 또는 그에 부가하여 황색, 마젠타, 및/또는 시안("에메랄드"로서 또한 지칭됨) 컬러 필터들을 사용할 수 있다. 일부 이미지 센서들(예컨대, 이미지 센서(330))에는 컬러 필터가 전적으로 없을 수 있으며, 대신에 (일부 경우에 수직으로 적층된) 픽셀 어레이 전체에 걸쳐 상이한 포토다이오드들을 사용할 수 있다. 픽셀 어레이 전체에 걸쳐 상이한 포토다이오드들은 상이한 스펙트럼 감도 커브들을 가질 수 있으므로, 상이한 파장들의 빛에 반응한다. 모노크롬 이미지 센서들에도 컬러 필터들이 없을 수 있으며, 따라서 색 심도가 없을 수 있다.
일부 경우들에서, 이미지 센서(330)는 대안적으로 또는 추가적으로, 특정 시간들에 그리고/또는 특정 각도들로부터, 특정 포토다이오드들, 또는 특정 포토다이오드들의 부분들에 광이 도달하는 것을 차단하는 불투명 및/또는 반사 마스크들을 포함할 수 있으며, 이들은 위상 검출 자동초점(phase detection autofocus, PDAF)를 위해 사용될 수 있다. 이미지 센서(330)는 또한 포토다이오드들에 의해 출력된 아날로그 신호들을 증폭하기 위한 아날로그 이득 증폭기 및/또는 포토다이오드들의 출력된 (및/또는 아날로그 이득 증폭기에 의해 증폭된) 아날로그 신호들을 디지털 신호들로 변환하기 위한 아날로그-디지털 변환기(ADC)를 포함할 수 있다. 일부 경우들에서, 제어 메커니즘(320) 중 하나 이상과 관련하여 논의된 특정 컴포넌트들 또는 기능들이 이미지 센서(330) 대신에 또는 추가적으로 포함될 수 있다. 이미지 센서(330)는 CCD(charge-coupled device) 센서, EMCCD(electron-multiplying CCD) 센서, APS(active-pixel sensor), CMOS(complimentary metal-oxide semiconductor), NMOS(N-type metal-oxide semiconductor), 하이브리드 CCD/CMOS 센서(예컨대, sCMOS), 또는 이들의 기타 조합일 수 있다.
이미지 프로세서(350)는, 하나 이상의 ISP(image signal processor)들(ISP(354)를 포함함), 하나 이상의 호스트 프로세서들(호스트 프로세서(352)를 포함함), 및/또는 컴퓨팅 시스템(1100)에 관해 논의된 임의의 다른 타입의 프로세서(1110)의 하나 이상과 같은 하나 이상의 프로세서들을 포함할 수 있다. 호스트 프로세서(352)는 디지털 신호 프로세서(DSP) 및/또는 다른 유형의 프로세서일 수 있다. 일부 구현예들에서, 이미지 프로세서(350)는 호스트 프로세서(352) 및 ISP(354)를 포함하는 단일 집적 회로 또는 칩(예를 들어, 시스템-온-칩 또는 SoC로 지칭됨)이다. 일부 경우들에서, 칩은 또한 하나 이상의 입력/출력 포트들(예를 들어, 입/출력(I/O) 포트들(356)), 중앙 프로세싱 유닛들(CPU), 그래픽 프로세싱 유닛들(GPU), 광대역 모뎀들(예를 들어, 3G, 4G 또는 LTE, 5G 등), 메모리, 연결성 컴포넌트들(예컨대, Bluetooth™, GPS(Global Positioning System) 등), 이들의 임의의 조합, 및/또는 다른 컴포넌트들을 포함할 수 있다. I/O 포트(356)는 I2C(Inter-Integrated Circuit 2) 인터페이스, I3C(Inter-Integrated Circuit 3) 인터페이스, SPI(Serial Peripheral Interface) 인터페이스, GPIO(serial General Purpose Input/Output) 인터페이스, MIPI(Mobile Industry Processor Interface)(예컨대, MIPI CSI-2 물리(PHY) 계층 포트 또는 인터페이스, AHB(Advanced High-performance Bus) 버스, 이들의 임의의 조합 및/또는 다른 입력/출력 포트와 같은 하나 이상의 프로토콜 또는 규격에 따른 임의의 적합한 입력/출력 포트 또는 인터페이스를 포함할 수 있다. 하나의 예시적인 예에서, 호스트 프로세서(352)는 I2C 포트를 사용하여 이미지 센서(330)와 통신할 수 있고, ISP(354)는 MIPI 포트를 사용하여 이미지 센서(330)와 통신할 수 있다.
이미지 프로세서(350)는 디모자이킹, 색 공간 변환, 이미지 프레임 다운샘플링, 픽셀 보간, 자동 노출(AE) 제어, 자동 이득 제어(AGC), CDAF, PDAF, 자동 화이트 밸런스, HDR 이미지를 형성하기 위한 이미지들의 병합, 이미지 인식, 객체 인식, 특징부(feature) 인식, 입력들의 수신, 출력들 관리, 메모리 관리, 또는 이들의 일부 조합과 같은 다수의 태스크들을 수행할 수 있다. 이미지 프로세서(350)는 이미지 프레임들 및/또는 프로세싱된 이미지들을 랜덤 액세스 메모리(RAM)(140/3225), 판독 전용 메모리(ROM)(145/1120), 캐시, 메모리 유닛, 다른 저장 디바이스, 또는 이들의 일부 조합에 저장할 수 있다.
다양한 입력/출력(I/O) 디바이스들(360)이 이미지 프로세서(350)에 연결될 수 있다. I/O 디바이스들(360)은 디스플레이 스크린, 키보드, 키패드, 터치스크린, 트랙패드, 터치 감응형 표면, 프린터, 임의의 다른 출력 디바이스(1135), 임의의 다른 입력 디바이스(1145), 또는 이들의 일부 조합을 포함할 수 있다. 일부 경우들에서, 캡션은 I/O 디바이스들(360)의 물리적 키보드 또는 키패드를 통해, 또는 I/O 디바이스들(360)의 터치스크린의 가상 키보드 또는 키패드를 통해 이미지 프로세싱 디바이스(305B)에 입력될 수 있다. I/O(360)는 이미지 캡처 및 프로세싱 시스템(300)과 하나 이상의 주변 디바이스들 사이의 유선 연결을 가능하게 하는 하나 이상의 포트들, 잭들, 또는 다른 커넥터들을 포함할 수 있고, 이를 통해 이미지 캡처 및 프로세싱 시스템(300)은 하나 이상의 주변 디바이스로부터 데이터를 수신 및/또는 하나 이상의 주변 디바이스들에 데이터를 송신할 수 있다. I/O(360)는 이미지 캡처 및 프로세싱 시스템(300)과 하나 이상의 주변 디바이스들 사이의 무선 연결을 가능하게 하는 하나 이상의 무선 송수신기들을 포함할 수 있고, 이를 통해 이미지 캡처 및 프로세싱 시스템(300)은 하나 이상의 주변 디바이스로부터 데이터를 수신 및/또는 하나 이상의 주변 디바이스들에 데이터를 송신할 수 있다. 주변 디바이스들은 이전에 논의된 유형들의 I/O 디바이스들(360) 중 임의의 것을 포함할 수 있으며 포트들, 잭들, 무선 트랜시버들, 또는 다른 유선 및/또는 무선 커넥터들에 커플링되면 그 자체가 I/O 디바이스들(360)로 고려될 수 있다.
일부 경우들에서, 이미지 캡처 및 프로세싱 시스템(300)은 단일 디바이스일 수 있다. 일부 경우들에서, 이미지 캡처 및 프로세싱 시스템(300)은 이미지 캡처 디바이스(305A)(예를 들어, 카메라) 및 이미지 프로세싱 디바이스(305B)(예를 들어, 카메라에 커플링된 컴퓨팅 디바이스)를 포함하는 둘 이상의 별개의 디바이스들일 수 있다. 일부 구현예들에서, 이미지 캡처 디바이스(305A) 및 이미지 프로세싱 디바이스(305B)는, 예를 들어, 하나 이상의 와이어들, 케이블들, 또는 다른 전기 커넥터들을 통해, 및/또는 하나 이상의 무선 트랜시버들을 통해 무선으로 함께 커플링될 수 있다. 일부 구현예들에서, 이미지 캡처 디바이스(305A) 및 이미지 프로세싱 디바이스(305B)는 서로 분리될 수 있다.
도 3에 도시된 바와 같이, 수직 점선은 도 3의 이미지 캡처 및 프로세싱 시스템(300)을, 이미지 캡처 디바이스(305A) 및 이미지 프로세싱 디바이스(305B)를 각각 나타내는 2개의 부분들로 나눈한다. 이미지 캡처 디바이스(305A)는 렌즈(315), 제어 메커니즘들(320) 및 이미지 센서(330)를 포함한다. 이미지 프로세싱 디바이스(305B)는(ISP(354) 및 호스트 프로세서(352)를 포함하는)이미지 프로세서(350), RAM(340), ROM(345) 및 I/O(360)를 포함한다. 일부 경우들에서, ISP(354) 및/또는 호스트 프로세서(352)와 같은 이미지 캡처 디바이스(305A)에 예시된 특정 컴포넌트들은 이미지 캡처 디바이스(305A)에 포함될 수 있다.
이미지 캡처 및 프로세싱 시스템(300)은 전자 디바이스, 예컨대, 모바일 또는 고정식(stationary) 전화 핸드셋(예컨대, 스마트폰, 셀룰러 전화기 등), 데스크톱 컴퓨터, 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 게이밍 콘솔, 비디오 스트리밍 디바이스, 인터넷 프로토콜(IP) 카메라, 또는 임의의 다른 적합한 전자 디바이스를 포함할 수 있다. 일부 예들에 있어서, 이미지 캡처 및 프로세싱 시스템(300)은 셀룰러 네트워크 통신들, 802.11 wi-fi 통신들, 무선 로컬 영역 네트워크(WLAN) 통신들, 또는 이들의 일부 조합과 같은 무선 통신들을 위한 하나 이상의 무선 트랜시버들을 포함할 수 있다. 일부 구현예들에서, 이미지 캡처 디바이스(305A) 및 이미지 프로세싱 디바이스(305B)는 상이한 디바이스들일 수 있다. 예를 들어, 이미지 캡처 디바이스(305A)는 카메라 디바이스를 포함할 수 있고 이미지 프로세싱 디바이스(305B)는 모바일 핸드셋, 데스크톱 컴퓨터, 또는 다른 컴퓨팅 디바이스와 같은 컴퓨팅 디바이스를 포함할 수 있다.
이미지 캡처 및 프로세싱 시스템(300)이 특정 컴포넌트들을 포함하는 것으로 도시되어 있지만, 당업자는 이미지 캡처 및 프로세싱 시스템(300)이 도 3에 도시된 것들보다 더 많은 컴포넌트들을 포함할 수 있음을 인식할 것이다. 이미지 캡처 및 프로세싱 시스템(300)의 컴포넌트들은 소프트웨어, 하드웨어, 또는 소프트웨어와 하드웨어의 하나 이상의 조합들을 포함할 수 있다. 예를 들어, 일부 구현예들에서, 이미지 캡처 및 프로세싱 시스템(300)의 컴포넌트들은, 하나 이상의 프로그래머블 전자 회로들(예컨대, 마이크로프로세서들, GPU들, DSP들, CPU들, 및/또는 다른 적합한 전자 회로들)을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함하고/포함하거나 이들을 이용하여 구현될 수 있거나, 및/또는 본 명세서에 기재된 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함하고/포함하거나 이들을 이용하여 구현될 수 있다. 소프트웨어 및/또는 펌웨어는 컴퓨터 판독가능 저장 매체에 저장되고 이미지 캡처 및 프로세싱 시스템(300)을 구현하는 전자 디바이스의 하나 이상의 프로세서들에 의해 실행가능한 하나 이상의 명령들을 포함할 수 있다. 일부 예들에서, 이미지 조정 시스템(400)은 이미지 캡처 및 프로세싱 시스템(300), 이미지 캡처 디바이스(305A), 이미지 프로세싱 디바이스(305B), 또는 이들의 조합을 포함할 수 있다.
도 4는 이미지 조정 시스템(400)의 일 예를 도시하는 블록도이다. 이미지 조정 시스템(400)은 하나 이상의 이미지들 내의 특징부 또는 객체의 크기 및/또는 겉보기 포지션을 변경하는 것과 같은, 하나 이상의 이미지들을 프로세싱하는데 사용되는 다양한 컴포넌트들을 포함한다. 이미지 조정 시스템(400)은 입력 이미지에 기초하여 3D 메시를 생성하고, 조정된 3D 메시를 생성하기 위해 3D 메시 내의 ROI(들) 또는 객체들을 조정하고, 조정된 2D 이미지를 생성하기 위해 조정된 3D 메시를 다시 2D 이미지로 투영할 수 있다. 도시된 바와 같이, 이미지 조정 시스템(400)의 컴포넌트들은 하나 이상의 이미지 캡처 디바이스들(402), 특징부 분할 머신 러닝 모델(404), 3D 메시 엔진(406), 및 투영 엔진(408)을 포함한다.
아래 도 4 및 이미지 조정 시스템(400)의 설명에서, 이미지 조정 시스템(400)에 의해 수행되는 이미지 조정의 상이한 양태들을 도시하는 도 5a 내지 도 5k에 도시된 예시적인 이미지들을 참조한다. 도 5a 내지 도 5k에 도시된 예에서, 제2 사람(504)은 조정에 대해 선택된다(예컨대, 제2 사람(504)은 ROI 또는 선택된 객체임). 도시된 예에서, 제2 사람(504)에 적용되는 조정은 제2 사람(504)을 제1 사람(502)에 더 가까이 데려가도록 선택된다. 일 예시적인 예에서, 제2 사람(504)과 연관된 버텍스들은 3D 좌표계 내의 카메라 위치에 버텍스들을 더 가까이 가져옴으로써 조정될 수 있다.
도 4로 돌아가서, 이미지 조정 시스템(400)은 모바일 또는 고정식 전화 핸드셋(예컨대, 스마트폰, 셀룰러 전화 등), (예컨대, 차량 컴퓨팅 시스템과 통신하는) 서버 컴퓨터, 데스크톱 컴퓨터, 랩톱 또는 노트북 컴퓨터, 태블릿 컴퓨터, 셋톱 박스, 텔레비전, 카메라, 디스플레이 디바이스, 디지털 미디어 플레이어, 비디오 스트리밍 디바이스, 또는 임의의 다른 적합한 전자 디바이스를 포함하거나 또는 이의 부분일 수 있다. 일부 예들에서, 이미지 조정 시스템(400)은 무선 통신, 예컨대, 셀룰러 네트워크 통신, 802.11 Wi-Fi 통신, 무선 로컬 영역 네트워크(WLAN) 통신, 블루투스 또는 기타 단거리 통신, 이들의 임의의 조합, 및/또는 기타 통신을 위한 하나 이상의 무선 송수신기들(또는 별개의 무선 수신기들 및 송신기들)을 포함할 수 있다. 일부 구현예들에서, 이미지 조정 시스템(400)의 컴포넌트들, 예컨대, 하나 이상의 이미지 캡처 디바이스들(402), 특징부 분할 머신 러닝 모델(404), 3D 메시 엔진(406), 및 투영 엔진(408)은 동일한 컴퓨팅 디바이스의 일부일 수 있다. 일부 구현예들에서, 이미지 조정 시스템(400)의 컴포넌트들은 둘 이상의 별개의 컴퓨팅 디바이스들의 일부일 수 있다. 일부 경우들에서, 이미지 조정 시스템(400)은 도 11에 도시된 컴퓨팅 시스템(1100)의 일부로서 구현될 수 있다.
이미지 조정 시스템(400)은 소정 컴포넌트들을 포함하는 것으로 도시되지만, 통상의 기술자는 이미지 조정 시스템(400)이 도 3에 도시된 것들보다 더 많은 컴포넌트들 또는 더 적은 컴포넌트들을 포함할 수 있음을 이해할 것이다. 일부 경우들에서, 이미지 조정 시스템(400)의 추가적인 컴포넌트들은 소프트웨어, 하드웨어, 또는 소프트웨어 및 하드웨어의 하나 이상의 조합들을 포함할 수 있다. 예를 들어, 일부 경우들에서, 이미지 조정 시스템 시스템 (400)은 하나 이상의 다른 센서들(예컨대, 하나 이상의 관성 측정 유닛들(IMU들), 레이더들, 광 검출 및 레인징(LIDAR) 센서들, 오디오 센서들 등), 하나 이상의 디스플레이 디바이스들, 하나 이상의 다른 프로세싱 엔진들, 하나 이상의 다른 하드웨어 컴포넌트들, 및/또는 도 3에 도시되지 않은 하나 이상의 다른 소프트웨어 및/또는 하드웨어 컴포넌트들을 포함할 수 있다. 일부 구현예들에서, 이미지 조정 시스템(400)의 추가적인 컴포넌트들은 전자 회로들 또는 다른 전자 하드웨어를 포함할 수 있고/있거나 이들을 이용하여 구현될 수 있는데, 이들은 본 명세서에 설명된 다양한 동작들을 수행하기 위하여 하나 이상의 프로그램가능 전자 회로들(예컨대, 디지털 신호 프로세서들(DSP들), 마이크로프로세서들, 마이크로제어기들, 그래픽 프로세싱 유닛들(GPU들), 중앙 프로세싱 유닛들(CPU들), 이들의 임의의 조합, 및/또는 기타 적합한 전자 회로들)을 포함할 수 있고/있거나 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함할 수 있고/있거나 이들을 이용하여 구현될 수 있다. 소프트웨어 및/또는 펌웨어는 컴퓨터-판독가능 저장 매체 상에 저장되고 전자 디바이스의 하나 이상의 프로세서들에 의해 실행되어 이미지 조정 시스템(400)을 구현하는 하나 이상의 명령들을 포함할 수 있다.
하나 이상의 이미지 캡처 디바이스들(402)은 하나 이상의 이미지들을 캡처할 수 있다. 하나 이상의 이미지 캡처 디바이스들(402)(예컨대, 카메라들 또는 기타 이미지 센서들)은 모바일 디바이스에 포함될 수 있고, (예컨대, 하나 이상의 전면 카메라들로) 디바이스의 사용자를 향해 지향되거나 또는 (예컨대, 하나 이상의 후면 카메라들로) 디바이스의 사용자로부터 멀리 지향될 수 있다.
하나 이상의 이미지 캡처 디바이스들(402)의 각각은 카메라 또는 다른 유형의 이미지 센서를 포함할 수 있다. 일부 예들에서, 하나 이상의 이미지 캡처 디바이스들(402)은 IR 이미지들 및/또는 근적외선(NIR) 이미지들을 캡처하도록 구성된 적외선(IR) 카메라를 포함할 수 있다. 예를 들어, IR 카메라 또는 센서는 IR 신호들을 포함할 수 있다. IR 신호들은 IR 전자기 스펙트럼에 속하는 파장들 및 주파수들을 갖는다. IR 전자기 스펙트럼은 430 테라헤르츠(THz) 내지 400 기가헤르츠(GHz)에 이르는 주파수들에 대응하는, 2,500 나노미터(nm) 내지 1 밀리미터(mm)의 범위 내의 파장들을 포함한다. 적외선 스펙트럼은 NIR 스펙트럼을 포함하고, 이는 780 nm 내지 2,500 nm의 범위 내의 파장들을 포함한다. 일부 경우들에서, 이미지 조정 시스템(400)은 IR 및 NIR 신호들을 캡처하도록 구성된 IR 센서를 포함할 수 있다. 일부 경우들에서, 별개의 IR 및 NIR 센서들이 이미지 조정 시스템(400)에 포함될 수 있다. 일부 예들에서, 하나 이상의 이미지 캡처 디바이스들(402)은 컬러 이미지들 및/또는 흑백 이미지들을 캡처하도록 구성된 카메라를 포함할 수 있다. 컬러 이미지들은: 적색-녹색-청색(RGB) 이미지들; 루마, 크로마-청색, 크로마-적색(YCbCr 또는 Y'CbCr) 이미지들; 및/또는 임의의 다른 적합한 유형의 이미지를 포함할 수 있다. 일 예시적인 예에서, 이미지 조정 시스템(400)은 RGB 카메라 또는 다수의 RGB 카메라들을 포함할 수 있다. 일부 경우들에서, 하나 이상의 이미지 캡처 디바이스들(402)은 하나 이상의 IR 카메라들 및 하나 이상의 RGB 카메라들을 포함할 수 있다.
일부 실시 형태들에서, 하나 이상의 이미지 캡처 디바이스들(402)은 하나 이상의 심도 센서들을 포함할 수 있다. 하나 이상의 심도 센서들은 캡처된 장면에서 객체들에 대응하는 거리의 측정치들을 획득할 수 있다. 일 예시적인 예에서, 심도 센서는 하나 이상의 좁은 대역들의 광을 포함할 수 있는 구조화되거나 또는 텍스처링된 광 패턴을 장면 내의 하나 이상의 객체들 상에 투영할 수 있는 광원의 형태를 취할 수 있다. 이어서 심도 정보는 객체들의 표면 형상에 의해 야기된 투영된 패턴의 기하학적 왜곡들을 이용함으로써 획득될 수 있다. 일부 경우들에서, 하나 이상의 심도 센서들은 하나 이상의 이미지 캡처 디바이스들(402)에 의해 캡처된 하나 이상의 이미지들에서의 픽셀 위치들에 대응하는 심도 값들을 포함하는 심도 이미지들을 생성할 수 있다. 일부 경우들에서, 심도 센서는 하나 이상의 이미지 캡처 디바이스들(402)의 다른 센서들과 동일한 일반적인 위치에 위치될 수 있다. 일부 경우들에서, 심도 센서는 하나 이상의 이미지 캡처 디바이스들(402)에 포함된 하나 이상의 다른 센서들에 의해 캡처된 이미지와 동시에 심도 이미지를 캡처할 수 있다. 일부 구현예들에서, 본 명세서에 설명된 시스템들 및 기법들은 또한 심도 정보가 하나 이상의 이미지들로부터 추론될 때 사용될 수 있다.
일 예시적인 예에서, 하나 이상의 이미지 캡처 디바이스들(402), 및 일부 경우들에서 하나 이상의 심도 센서들은 하나 이상의 RGB-D 이미지들을 캡처할 수 있다. 일부 경우들에서, 하나 이상의 이미지 캡처 디바이스들(402)은 흑백-심도, NIR-심도 등과 같은 심도 정보를 포함하는 다른 이미지 유형들을 캡처할 수 있다. 예시의 목적을 위해, 본 개시내용의 예들은 RGB-D 이미지들 상에 이미지 조정을 수행하는 것을 논의하지만, 본 명세서에 설명된 시스템들 및 기법들은 또한 본 개시내용의 범주를 벗어나지 않으면서 심도 정보를 포함하는 다른 이미지 유형들에 사용될 수 있다.
도 5a는 예시적인 2D 입력 이미지(500)(예컨대, RGB 이미지)를 도시하고, 도 5b는 예시적인 심도 이미지(510)를 도시한다. 일부 경우들에서, 2D 입력 이미지(500) 및 심도 이미지(510)는 집합적으로 RGB-D 이미지를 포함할 수 있다. 2D 입력 이미지(500) 및 심도 이미지(510) 둘 모두는 카메라에 더 가까이 포지셔닝된 제1 사람(502) 및 카메라로부터 더 먼 거리에 포지셔닝된 제2 사람(504)의 표현들을 포함한다. 심도 이미지(510)에서, 각각의 픽셀의 밝기는 카메라로부터 객체 또는 특징부의 거리를 나타낼 수 있다. 예시적인 심도 이미지(510)에서, 더 가까운 객체들은 더 밝게 보이는 반면(예컨대, 제1 사람(502)), 더 먼 객체들은 더 낮은 밝기를 갖는다(예컨대, 제2 사람(504), 또는 배경(506)).
도 4로 돌아가서, 하나 이상의 이미지 캡처 디바이스들(402)에 의해 캡처된 하나 이상의 이미지들은 특징부 분할 머신 러닝 모델(404)에 대한 입력으로서 제공될 수 있다. 특징부 분할 머신 러닝 모델(404)은 하나 이상의 이미지들과 연관된 공간 정보(예컨대, 특징부들)를 검출하도록 트레이닝될 수 있다. 일부 경우들에서, 특징부 분할 머신 러닝 모델(404)은 검출된 특징부들에 기초하여 하나 이상의 이미지들 내의 객체들에 하나 이상의 분류들을 제공하도록 추가로 트레이닝될 수 있다. 이어서 특징부 분할 머신 러닝 모델(404)은 분류들을 이용하여 이미지를 하나 이상의 분류들과 연관된 상이한 부분들로 분할할 수 있다. 예를 들어, 특징부 분할 머신 러닝 모델(404)은 하나 이상의 이미지들을 사람, 건물, 차, 가구, 식물 등과 연관된 상이한 부분들로 분할할 수 있다.
특징부 분할 머신 러닝 모델(404)은 또한 하나 이상의 분류들을 이용하여 하나 이상의 이미지들로부터 추출된 특징부들에 대응하는 객체들을 분류하도록 트레이닝될 수 있다. 예시적인 이미지들 및 분류 라벨들을 포함하는 트레이닝 데이터세트가, 예컨대, 아래 도 9 및 도 10에 관련하여 설명된 기법들을 이용하여 특징부 분할 머신 러닝 모델(404)을 트레이닝하는데 사용될 수 있다. 일 예시적인 예에서, 추론 동안 (예컨대, 특징부 분할 머신 러닝 모델(404)이 트레이닝된 후에), 특징부 분할 머신 러닝 모델(404)은 특징부 벡터를 이용하여 하나 이상의 입력 이미지들을 분류할 수 있다. 예시적인 분류들은 "사람", "얼굴", "건물", "나무", 및 특징부 분할 머신 러닝 모델(404)이 분류하도록 트레이닝되는 임의의 다른 분류를 포함할 수 있다.
일 예시적인 예에서, 특징부 분할 머신 러닝 모델(404)은 이미지의 시멘틱 분할을 수행할 수 있다. 시멘틱 분할에서, 특징부 분할 머신 러닝 모델(404)은 장면 내의 각각의 객체를 하나 이상의 분류들(또한 본 명세서에서 라벨들로 지칭됨)과 연관시킬 수 있다. 일부 경우들에서, 하나 초과의 객체가 동일한 라벨을 갖는 경우, 시멘틱 분할은 두 객체들 간을 구분하지 않는다. 이러한 예에서, 하나 이상의 캡처된 이미지들(예컨대, RGB-D 이미지들) 내의 심도 정보는 객체들 간을 구분하고 객체들 간을 추가로 분할하는데 사용될 수 있다. 예를 들어, 입력 이미지 내의 두 사람을 포함하는 부분은 "사람"의 단일 분류기로 분류될 수 있다. 도 5c는 제1 사람(502)과 연관된 제1 분류기(508)(백색으로 표현됨) 및 제2 사람(504)과 연관된 제2 분류기(512)를 도시하는 예시적인 이미지(520)를 도시한다. 일부 예들에서, 제1 분류기(508) 및/또는 제2 분류기(512)는 "사람" 또는 "얼굴"과 같은 분류를 나타낼 수 있다. 일부 양태들에서, 시멘틱 분할을 사용하여, 특징부 분할 머신 러닝 모델(404)은 제1 분류기(508) 및 제2 분류기(512)에 기초하여 제1 사람(502)과 제2 사람(504)을 상이한 객체들로서 별개로 식별할 수 없을 수 있다.
다른 예시적인 예에서, 특징부 분할 머신 러닝 모델(404)은 인스턴스 분할을 수행할 수 있다. 인스턴스 분할에서, 특징부 분할 머신 러닝 모델(404)은 동일한 분류기로 상이하게 객체들의 다수의 인스턴스들을 별도로 식별할 수 있다. 예를 들어, 도 5d에 도시된 이미지(530)는 인스턴스 분할의 예시적인 예를 제공하며, 제2 사람(504)과 연관된 제1 인스턴스(514)는 회색으로 도시되고 사람(502)과 연관된 제2 인스턴스(516)는 백색으로 도시된다. 일부 경우들에서, 인스턴스 분할을 이용하여, 특징부 분할 머신 러닝 모델(404)은 제1 인스턴스(514) 및 제2 인스턴스(516)에 기초하여 제1 사람(502) 및 제2 사람(504)을 상이한 객체들을 별도로 식별가능할 수 있다.
일부 경우들에서, 3D 메시 엔진(406)은 심도 정보 뿐만 아니라 카메라의 파라미터들(예컨대, 초점 길이, 시야 등)을 활용하여 RGB-D 이미지에 대응하는 3D 메시를 생성할 수 있다. 일부 경우들에서, 입력 이미지 내의 각각의 픽셀에 대해, 3D 메시 엔진(406)은 입력 이미지에 도시된 장면의 3D 모델에서 대응하는 3D 버텍스를 생성할 수 있다. 일 예시적인 예에서, 3D 메시 엔진은 2D 입력 이미지(예컨대, 도 5a의 입력 이미지(500))를 캡처한 카메라의 심도 값들 및 시야를 이용하여 3D 메시를 생성할 수 있다. 예를 들어, 3D 메시 엔진(406)은 역투영 기법을 활용하여 3D 메시를 생성할 수 있다. 도 2b 및 도 2c에 관련하여 위에서 논의된 바와 같이, 좌표 x,y에서 픽셀에 대한 3D 메시의 3D 버텍스 V x,y 의 포지션을 결정하기 위한 예시적인 기법은 좌표 x,y를 통과하는 카메라 중심으로부터의 광선을 투영하는 단계 및 카메라로부터 거리 d x,y 에서 광선 상에 놓이는 3D 좌표에 기초하여 대응하는 3D 버텍스 V x,y 를 결정하는 단계를 포함할 수 있고, d x,y 는 좌표 x,y에 대응하는 심도 이미지 내의 거리 값이다. 3D 메시 엔진(406)은 2D 입력 이미지에서 각각의 픽셀 좌표 x,y에 대해 역투영 기법을 수행할 수 있다. 임의의 적합한 역투영 기법은 본 개시내용의 범주를 벗어나지 않으면서 사용될 수 있다. 도 5e는 2D 입력 이미지로부터 생성된 3D 메시(542)의 예시적인 이미지(540)를 도시한다. 도시된 바와 같이, 3D 메시(542)는 제1 사람(502) 및 제2 사람(504)의 3D 표현들을 포함할 수 있다.
일부 경우들에서, 특징부 분할 머신 러닝 모델(404)에 의해 결정된 특징부들, 객체들, 및/또는 분류들은 3D 메시 엔진(406)에 대한 입력으로서 제공될 수 있다. 일부 경우들에서, 분류들에 기초하여, 3D 메시 엔진(406)은 3D 메시 내의 버텍스들을 2D 입력 이미지 내의 대응하는 픽셀 포지션과 연관된 대응하는 특징부들, 객체들, 및/또는 분류들에 연관시킬 수 있다. 일부 경우들에서, 특징부 분할 머신 러닝 모델(404)이 인스턴스 분할을 제공할 때와 같이, 3D 메시 엔진은 특징부 분할 머신 러닝 모델로부터의 출력에 기초하여 동일한 클래스와 연관된 상이한 특징부들 또는 객체들 간을 구분할 수 있다. 일부 경우들에서, 특징부 분할 머신 러닝 모델(404)이 시멘틱 분할만을 제공할 수 있을 때, 3D 메시 엔진(406)은 각각의 객체와 연관된 심도 값들에 기초하여 3D 메시 내의 상이한 객체들 또는 특징부들을 구별할 수 있다. 예를 들어, 3D 메시 엔진(406)은 상이한 심도 값들을 갖는 분류기와 연관된 3D 메시의 상이한 부분들에 기초하여 동일한 분류기를 공유하는 2개의 객체가 별개의 객체들이라고 결정할 수 있다. 일 예시적인 예에서, 특징부 분할 머신 러닝 모델(404)은 제1 사람(502) 및 제2 사람(504) 둘 모두에 적용되는 "얼굴"의 분류를 제공할 수 있다. 이러한 예에서, 3D 메시 엔진(406)은 "얼굴" 분류기와 연관된 3D 메시 내의 일부 포지션(예컨대, 바운딩 박스의 중심, 코 끝, 눈 사이 등)에서의 심도 값을 결정하고, 결정된 심도로부터 임계 거리 내의 3D 메시 내의 다른 버텍스들은 동일한 객체의 일부라고 결정할 수 있다.
일부 경우들에서, 3D 메시 엔진(406) 및/또는 특징부 분할 머신 러닝 모델(404)은 또한 하나 이상의 마스크들을 2D 입력 이미지의 영역들(예컨대, 픽셀들) 및 3D 메시의 대응하는 부분들(예컨대, 버텍스들)에 적용할 수 있다. 도 5f는 일 예시적인 마스크를 포함하는 이미지(550)를 도시하고, 사람(502)과 연관된 픽셀들은 마스킹 영역(552)으로서 도시된다. 일부 예들에서, 카메라에 가장 가까운 전경 객체는 3D 메시 엔진(406) 및/또는 특징부 분할 머신 러닝 모델(404)에 의해 마스킹 영역(552)에 포함하도록 선택될 수 있다. 도시된 예에서, 2D 입력 이미지(500)의 전경의 제1 사람(502)은 마스킹을 위해 선택되는데, 그 이유는 제1 사람(502)과 연관된 버텍스들의 임의의 잘못된 조정은 이미지 조정이 완료된 후에 조정된 2D 이미지 내의 현저한 시각적 아티팩트들을 생성할 수 있다. 일부 경우들에서, 다른 마스크들 및/또는 다수의 마스크들이 본 개시내용의 범주를 벗어나지 않으면서 사용될 수 있다.
일부 경우들에서, 3D 메시 엔진(406)은 2D 이미지 내의 마스킹 영역(552)에 기초하여 3D 메시(예컨대, 3D 메시(542))의 비-조정 부분을 결정할 수 있다. 일부 경우들에서, 비-조정 부분 밖의 3D 메시의 임의의 부분은 조정 영역으로 지칭될 수 있다. 버텍스들을 조정 부분에 포함하는 것이 반드시 포함된 버텍스들이 3D 메시 엔진(406)에 의해 조정될 것임을 의미하는 것은 아니다. 일부 구현예들에서, 3D 메시에서 조정 부분 및 비-조정 부분의 결정에 기초하여, 3D 메시 엔진(406)은 3D 메시를 조정 3D 메시 및 별개의 비-조정 3D 메시로 분리할 수 있다.
도 5g는 사람(502)의 3D 표현을 포함하고 도 5f에 도시된 마스킹 영역(552)에 기초하여 생성될 수 있는 예시적인 비-조정 3D 메시(562)를 도시하는 이미지(560)를 도시한다. 도 5h는 제2 사람(504) 뿐만 아니라, 소파, 벽 등과 같은 마스킹 영역(552)에 포함되지 않는 다른 객체들을 포함하는 조정 3D 메시(572)를 도시하는 예시적인 이미지(570)를 도시한다.
도 4로 돌아가서, 일부 구현예들에서, 3D 메시 엔진(406)은 3D 메시를 3D 메시의 별개의 비-조정 부분과 3D 메시의 조정 부분으로 분리하지 않을 수 있고, 대신 좌표들을 고정하거나 또는 다른 방식으로 비-조정 부분 내의 3D 메시의 버텍스들의 조정을 방지할 수 있다.
3D 메시 엔진(406)이 2D 입력 이미지에 기초하여 3D 메시(또는 다수의 3D 메시들)를 생성하고, 하나 이상의 마스크들을 결정하고/하거나 심도 값들에 기초하여 3D 메시 내의 객체들의 추가 분할을 수행하면, 3D 메시 엔진(406)은 3D 메시의 하나 이상의 부분들을 조정할 수 있다. 일부 경우들에서, 3D 메시 엔진(406)은 3D 메시 내의 3D 버텍스들과 연관된 것으로서 특징부 분할 머신 러닝 모델(404)에 의해 검출 및/또는 분류된 하나 이상의 특징부들과 연관된 3D 메시의 하나 이상의 부분들을 조정할 수 있다. 예를 들어, 3D 메시 엔진(406)은 조정될 입력 이미지 내의 하나 이상의 선택된 객체들(또는 ROI(들))의 표시를 획득할 수 있다. 일부 경우들에서, 조정될 입력 이미지(예컨대, 도 5a의 2D 입력 이미지(500)) 내의 하나 이상의 선택된 객체들의 표시는 사용자 입력에 기초할 수 있다. 일 예시적인 예에서, 사용자는 물리적 접촉(예컨대, 스크린을 탭핑, 스와이핑 등), 제스처(예컨대, 카메라 또는 다른 센서에 의해 검출됨)를 이용하거나, 입력 디바이스를 이용하거나, 또는 사용자가 이미지 조정 시스템(400)과 상호작용할 수 있게 하는 임의의 다른 수단을 통해 하나 이상의 선택된 객체들을 표시가능하게 할 수 있다.
조정될 입력 이미지 내의 하나 이상의 선택된 객체들의 표시에 기초하여, 3D 메시 엔진(406)은 3D 메시(예컨대, 도 5e에 도시된 메시(542))를 조정할 수 있다. 일부 경우들에서, 3D 메시 엔진(406)은 하나 이상의 ROI(들) 또는 객체들과 연관된 3D 메시 내의 버텍스들을 조정할 수 있다. ROI(들) 또는 객체들에 대한 조정들은 또한 ROI(들) 또는 객체들의 변화로 지칭될 수 있다. ROI(들) 또는 객체들의 포즈에 대한 변화는 심도의 변화, 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 롤 회전, 및 이들의 임의의 조합을 포함할 수 있다. 일 예시적인 예에서, 메시 조정은 3D 모델에서 하나 이상의 선택된 객체들을 카메라에 더 가까이 가져오는 것을 포함할 수 있다. 도 5i는 화살표들(582)의 방향으로 시프트된 제2 사람(504)과 연관된 3D 메시 내의 버텍스들을 도시하는 이미지(580)를 도시한다. 도시된 예에서, 화살표들(582)의 방향은 조정된 2D 이미지 내의 제2 사람(504)의 얼굴의 중심(예컨대, 코, 눈 사이 등) 근처에 서브-부분의 고정된 포지션을 유지하도록 선택되었다.
일 예시적인 예에서, 객체의 특정 앵커 포인트는 조정된 2D 이미지 내의 고정된 포지션에서 유지되도록 선택될 수 있다. 이러한 예에서, 포즈 변경은 카메라의 중심 및 앵커 포인트에 대응하는 3D 버텍스의 초기 포지션을 통과하는 광선의 방향을 따라 하나 이상의 선택된 객체들의 버텍스들을 조정하는 것을 포함할 수 있다. 포즈를 조정하는 다른 예시적인 예는 선택된 객체와 연관된 버텍스들의 일부분 또는 전부의 심도 값들을 감소시키는 것을 포함할 수 있다. 일부 경우들에서, 선택된 객체의 버텍스들의 심도 값들을 감소시킴으로써 생성된 2D 이미지 내의 선택된 객체의 크기를 확대시킬 수 있다. 포즈를 조정하는 추가적인 예시적인 예는 (동시에) 선택된 객체와 연관된 버텍스들의 일부분 또는 전부의 심도 값들을 증가 및 감소시키는 것을 포함할 수 있다. 일부 경우들에서, 선택된 객체의 버텍스들의 심도 값들을 증가 및 감소시키는 것은 생성된 2D 이미지 내의 선택된 객체의 피치 회전, 요 회전 및/또는 롤 회전을 초래할 수 있다.
일부 경우들에서, 이미지 조정 시스템(400)은 2D 입력 이미지에서 캡처된 장면 또는 장면의 일부분의 다수의 이미지들을 획득할 수 있다. 예를 들어, 전자 디바이스는 장면의 적어도 부분적 공통 부분을 동시에 캡처하는 (예컨대, 이미지 캡처 디바이스들(402)에 포함된) 제1 이미지 캡처 디바이스 및 제2 이미지 캡처 디바이스를 포함할 수 있다. 일부 경우들에서, 단일 이미지 센서는 장면의 다수의 이미지들을 캡처하여, 예를 들어, 제로 셔터 랙 캡처(zero shutter lag capture), 미리보기 이미지들 등을 제공할 수 있다. 일부 예들에서, 이미지 조정 시스템은 장면 또는 장면의 일부분의 다수의 이미지들에 기초하여 다수의 3D 메시들을 생성할 수 있다. 일부 경우들에서, 3D 메시 엔진(406)은 다수의 3D 메시들로부터의 부분들을 포함(예컨대, 병합, 복합, 인페인트 등)하여 조합된 3D 메시를 생성할 수 있다. 일 예시적인 예에서 3D 메시 엔진(406)은 제1 2D 이미지 내의 선택된 객체와 연관된 제1 3D 메시로부터의 3D 버텍스들을 조정하고, 또한 제2 2D 이미지와 연관된 제2 3D 메시로부터의 3D 버텍스들을 포함할 수 있다. 일 예시적인 예에서, 선택된 객체와 연관된 3D 버텍스들은 수평으로 시프트될 수 있고, 이전에 선택된 객체에 의해 점유된 3D 메시의 부분은 제2 2D 메시로부터의 부분들을 포함할 수 있다.
3D 메시가 3D 메시 엔진(406)에 의해 조정된 후에, 투영 엔진(408)은 3D 메시를 조정된 2D 이미지 상에 투영할 수 있다. 투영 엔진(408)은 도 2b 및 도 2c에 관련하여 앞서 설명된 투영 기법들 중 임의의 것을 활용할 수 있다. 일 예시적인 예에서, 투영 엔진(408)은 식(1)의 원근투영을 활용할 수 있다. 일부 양태들에서, 투영 엔진(408)은, 제한 없이, 직각 투영 또는 사선 투영을 포함하는 임의의 다른 투영 기법을 이용하여 본 개시내용의 범주를 벗어나지 않으면서 조정된 2D 이미지를 생성할 수 있다. 도 5k는 이미지 조정 시스템(400)에 의해 생성될 수 있는 조정된 2D 이미지(595)를 도시한다. 일부 구현예들에서, 투영 엔진(408)은 2D 이미지를 캡처한 물리적 카메라의 투영 기법에 대응하는 투영 기법을 활용할 수 있다. 일부 경우들에서, 물리적 카메라의 투영 기법에 대응하는 투영 기법을 사용하는 것은 물리적 카메라 투영 기법과 투영 엔진(408)에 의해 활용되는 투영 기법 사이의 불일치에 의해 초래될 수 있는 조정된 2D 이미지 내의 왜곡들을 감소시킬 수 있다.
도 6은 본 개시내용의 예들에 따라 이미지 조정을 수행하기 위한 예시적인 프로세스(600)를 도시한다. 블록(602)에서, 프로세스(600)는 (예컨대, 도 4에 도시된 이미지 캡처 디바이스들(402)로부터) 2D 입력 이미지를 획득할 수 있다. 블록(604)에서, 프로세스(600)는 입력 이미지에 포함된 특징부들 또는 객체들의 분할을 수행할 수 있다. 예를 들어, 프로세스(600)는 도 4의 특징부 분할 머신 러닝 모델(404)에 대해 설명된 바와 같이, 특징부 검출, 시멘틱 분할, 인스턴스 분할, 객체 분류 등 중 하나 이상을 수행할 수 있다.
블록(606)에서, 프로세스(600)는 블록(602)에서 획득된 RGB-D 이미지에 포함된 심도 정보 및/또는 색상 정보에 기초하여 3D 메시를 생성하는 단계를 포함할 수 있다. 일부 경우들에서, 2D 이미지 내의 각각의 픽셀에 대해, 장면의 3D 모델 내의 대응하는 3D 버텍스는 도 2b, 도 2c에 관련하여 앞서 설명된 역투영 기법들, 및 도 4의 3D 메시 엔진(406)을 이용하거나, 또는 2D 이미지를 3D 메시로 변환하기 위한 임의의 다른 적합한 기법을 이용하여 생성될 수 있다.
블록(608)에서, 프로세스(600)는 3D 메시의 마스킹을 수행할 수 있다. 일부 경우들에서, 마스킹은 3D 메시에서 비-조정 부분 및 조정 부분을 생성하는 것을 포함할 수 있다. 일부 경우들에서, 비-조정 부분 및 조정 부분은 비-조정 부분의 조정을 방지하도록 2개의 별개의 3D 메시들로 분리될 수 있다. 일부 경우들에서, 단일 메시는 비-조정 부분 및 조정 부분 둘 모두를 포함할 수 있고, 비-조정 부분의 버텍스들은 고정되거나 또는 다른 방식으로 조정되는 것이 방지될 수 있다. 일부 양태들에서, 마스킹은 하나 이상의 ROI(들) 또는 객체(들)와 연관된 3D 메시 내의 버텍스들을 포함할 수 있다.
블록(610)에서, 프로세스(600)는 블록(608)에서 생성된 3D 메시 상에 메시 조정을 수행할 수 있다. 일부 경우들에서, 프로세스(600)는 2D 이미지 내의 하나 이상의 선택된 객체들(또는 ROI들)이 조정을 위해 선택되었음을 나타내는 입력을 획득할 수 있다. 예를 들어, 프로세스(600)는 하나 이상의 선택된 객체들에 대응하는 버텍스들의 좌표들을 변경함으로써 하나 이상의 선택된 객체들의 포즈를 조정할 수 있다. 도 4의 3D 메시 엔진(406)에 대해 위에서 언급된 바와 같이, 블록(602)에서 획득된 입력 이미지 내의 각각의 2D 픽셀 위치는 블록(608)에서 생성된 3D 메시에서 대응하는 3D 버텍스를 가질 수 있다. 일부 경우들에서, 프로세스(600)는 블록(608)에서 생성된 3D 버텍스들을 하나 이상의 객체들(또는 특징부들)과 연관시킬 수 있다. 예를 들어, 블록(604)에서 결정되고 입력 이미지의 2D 픽셀 위치들의 각각과 연관된 특징부들, 객체들, 및/또는 클래스들은 또한 대응하는 3D 버텍스들과 연관될 수 있다. 선택된 객체들에 대응하는 3D 버텍스들이 식별되면, 프로세스(600)는 조정된 2D 이미지에서 원하는 효과(예컨대, 확대, 병진, 회전 등)를 제공하기 위해 버텍스들을 조정할 수 있다.
블록(612)에서, 프로세스(600)는 3D 메시의 둘 이상의 부분들 사이에서 융합을 수행할 수 있다. 예를 들어, 프로세스(600)가 블록(608)에서 3D 메시를 비-조정 3D 메시 및 조정 3D 메시로 분리한다면, 프로세스(600)는 비-조정 3D 메시 및 조정 3D 메시를 (예컨대, 도 5j의 이미지(590)에 도시된 바와 같이) 단일 조합된 3D 메시로 조합할 수 있다. 일부 경우들에서, 프로세스(600)가 별개의 3D 메시들을 생성하지 않고 대신 3D 메시의 비-조정 부분 내에 버텍스들을 잠그는 경우에, 프로세스(600)는 3D 메시의 임의의 융합을 수행하도록 요구되지 않을 수 있다.
블록(614)에서, 프로세스(600)는 도 2b, 도 2c에 관련하여 설명된 투영 기법들, 및 도 4의 투영 엔진(408)을 이용하여 조정된 2D 이미지를 생성할 수 있다. 프로세스(600)에 의해 수행될 수 있는 투영의 일 예시적인 예는 식(1)에 도시된 원근투영이다. 그러나, 3D 메시를 2D 이미지로 변환할 수 있는 임의의 투영 또는 렌더링 기법은 본 개시내용의 범주를 벗어나지 않으면서 프로세스(600)에 의해 사용될 수 있다. 그러나, 3D 메시를 2D 이미지로 변환할 수 있는 임의의 투영 또는 렌더링 기법은 본 개시내용의 범주를 벗어나지 않으면서 프로세스(600)에 의해 사용될 수 있다. 일부 구현예들에서, 프로세스(600)는 2D 이미지를 캡처한 카메라의 물리적 투영에 대응하는 투영 기법을 사용할 수 있다. 일부 경우들에서, 물리적 카메라 내의 투영에 대응하는 투영 기법을 이용하는 것은 블록(614)에서 물리적 카메라 투영과 프로세스(600)에 의해 활용되는 투영 기법 사이의 불일치에 의해 초래될 수 있는 조정된 2D 이미지 내의 왜곡들을 감소시킬 수 있다.
도 6에 도시된 프로세스(600)는 본 개시내용에 따른 이미지 조정 프로세스의 일 예시적인 예를 제공한다. 그러나, 프로세스(600)의 동작들의 순서는 본 개시내용의 범주를 벗어나지 않으면서 변경될 수 있다. 또한, 프로세스(600)의 하나 이상의 단계들은 생략될 수 있거나 또는 추가 단계들은 본 개시내용의 범주를 벗어나지 않으면서 수행될 수 있다.
일부 경우들에서, 프로세스(600)는 또한 하나 이상의 객체들 또는 특징부들에 적용될 조정량에 대응하는 입력을 획득할 수 있다. 일부 경우들에서, 프로세스(600)는 하나 이상의 선택된 객체들에 적용될 조정량을 동적으로 결정할 수 있다. 일 예시적인 예에서, 프로세스(600)는 전경 객체의 대략적인 크기(예컨대, 바운딩 박스를 사용, 전경 객체에 의해 점유되는 이미지 픽셀들의 수를 연산 등) 및 하나 이상의 객체들의 각각에 대한 대략적인 크기를 결정할 수 있다. 이러한 예에서, 프로세스(600)는 전경 객체와 하나 이상의 객체들의 상대적인 크기들에 기초하여 조정량을 결정할 수 있다. 일 예시적인 예에서, 하나 이상의 객체들은 전경 객체의 크기와의 소정 수치적 대응성(예컨대, 소정 백분율 값, 비율, 비례, 함수, 관계 등)에 대응하는 크기를 갖도록 2D 이미지 내의 하나 이상의 객체들의 크기를 확대하도록 조정될 수 있다. 일 예시적인 예에서, 하나 이상의 선택된 객체들(또는 ROI들)은 전경 객체의 크기의 7/10(예컨대, 70 퍼센트) 내지 9/10(예컨대, 90 퍼센트)의 범위의 사전결정된 비율에 대응하는 크기를 갖도록 조정될 수 있다. 일부 경우들에서, 수치적 대응성(예컨대, 백분율 값) 및/또는 수치적 대응성에 대한 범위(예컨대, 백분율 값 범위)는 3D 메시 내의 전경 객체와 배경 객체 사이의 거리에 기초하여 제한될 수 있다. 다른 예시적인 예에서, 전경 객체와 하나 이상의 선택된 객체들 중 제1 객체 사이의 거리(예컨대, 평균 거리)가 작은 경우(예컨대, 1/2 미터(m) 미만, 1 m 미만, 3 m 미만 등), 하나 이상의 선택된 객체들 중 제1 객체는 전경 객체의 크기의 1의 비율(예컨대, 100 퍼센트)까지 조정될 수 있다. 다른 예시적인 예에서, 하나 이상의 선택된 객체들의 제2 객체와 전경 객체들 사이의 거리(예컨대, 평균 거리)가 큰 경우(예컨대, 5 m 초과, 10 m 초과, 또는 임의의 다른 선택된 거리), 하나 이상의 선택된 객체들의 제2 객체는 전경 객체의 크기의 4/5(예컨대, 80 퍼센트)의 비율까지 조정될 수 있다. 하나 이상의 선택된 객체들의 각각에 대해 조정량을 결정하기 위한 다른 기법들이 또한 본 개시내용의 범주를 벗어나지 않으면서 사용될 수 있다. 예를 들어, 객체의 포즈의 총 변화는 조정 범위 내에서 제한될 수 있다. 일부 경우들에서, 객체의 포즈를 변경하기 위한 조정 범위는 포즈 변경을 수행하는 것으로 인해 초래되는 2D 이미지 내의 최대 왜곡량에 기초하여 결정될 수 있다. 다른 예에서, 하나 이상의 선택된 객체들의 각각에 대한 최대 조정량은 원래 이미지에 비교되는 조정된 이미지 내의 객체의 겉보기 크기의 비율에 기초할 수 있다. 예를 들어, 최대 조정량은 각각의 객체의 겉보기 크기가 50 퍼센트, 100 퍼센트, 200 퍼센트, 또는 임의의 다른 값만큼 증가하게 허용하도록 제한될 수 있다.
위에서 언급된 바와 같이, 이미지 조정 시스템(400) 및 본 명세서에 설명된 관련 기법들은 시스템이 이미지 또는 장면 내의 다른 객체들을 조정하지 않으면서 이미지 내의 ROI(들) 또는 객체(들)를 조정하게 허용할 수 있다. 예를 들어, 이미지 조정 시스템(400)은 (예컨대, 도 5a 및 도 5b에 도시된 바와 같이) 두 사람이 서로 멀리 떨어져 앉아 있는 이미지의 외관을 조정하여 두 사람을 서로 더 가까이 데려올 수 있다. 일부 경우들에서, 조정은 목표 객체의 심도 감소, 수직 시프팅, 피치 회전, 롤 회전, 요 회전 등을 포함할 수 있다. 3D 메시 상에서 조정을 수행함으로써, 이미지 조정 시스템은 연속성(예컨대, 조정된 목표 객체(들)와 조정되지 않은 이미지의 나머지 부분들 사이의 3D 메시의 연속성)을 유지할 수 있다.
도 7a 내지 도 7e는 본 개시내용의 시스템들 및 기법들을 이용하여 수행될 수 있는 이미지 조정들의 추가 예시적인 예를 제공한다. 도 7a는 전경에 있는 제1 사람(702), 및 상이한 거리들만큼 제1 사람(702) 뒤에 있는 제2 사람(704), 제3 사람(706), 제4 사람(708), 및 제5 사람(710)을 포함하는 2D 입력 이미지(700)를 도시한다. 도 7b는 2D 입력 이미지(700) 상에서 수행되는 예시적인 인스턴스 분할(720)을 도시하고, 이미지 내의 제1 사람(702), 제2 사람(704), 제3 사람(706), 제4 사람(708), 및 제5 사람(710)의 각각은 별도로 인식된다. 일 예시적인 예에서 각각의 사람(702 내지 710)은 도 7b에 도시된 상이한 음영으로 도시된 바와 같이 클래스 "사람"의 별개의 인스턴스로서 분류된다. 도 7c에 도시된 제1 조정된 이미지(740)에서, 제2, 제3, 제4 및 제5 사람(704 내지 710)의 각각은 본 명세서에 기재된 바와 같이 이미지 조정 기법을 이용하여 조정되었다. 예를 들어, 2D 입력 이미지(700)에 대응하는 3D 메시는 RGB-D 입력 이미지에 포함된 심도 정보를 이용하여 생성되었다. 도 7c의 도시된 예에서, 제2, 제3, 제4, 및 제5 사람(704 내지 710)에 대응하는 포지션들(예컨대, 버텍스들)은 3D 메시에서 카메라에 더 가깝게 조정되었고, 조정된 3D 메시는 2D로 재투영되어 제1 조정된 이미지(740)를 생성하였다. 유사하게, 도 7d에 도시된 바와 같이, 제2 조정된 이미지(760)는 제3 사람(706)만이 카메라에 더 가까이 조정된 자신의 포지션을 갖는 예를 도시하고, 도 7e에 도시된 제3 조정된 이미지(780)는 제5 사람만이 카메라에 더 가까이 조정된 자신의 포지션을 갖는 예를 도시한다. 일부 경우들에서, 제2, 제3, 제4, 및 제5 사람(704 내지 710)의 포지션들은 사용자 입력에 기초하여 조정된 이미지에서 앞뒤로 동적으로 이동될 수 있다. 도 7a 및 도 7c 내지 도 7e에 도시된 모든 예들에서, 전경에 있는 제1 사람(702)은 고정된 상태를 유지한다. 2D 입력 이미지(700)에 기초하여 생성된 예시적인 3D 메시에서, 사람(702)과 연관된 버텍스들은 도 4의 3D 메시 엔진(406)에 관련하여 위에 기재된 바와 같이 비-조정 부분 및/또는 비-조정 메시에 포함되었을 수 있다. 도 7a 내지 도 7e는 본 명세서에 설명된 이미지 조정을 위한 시스템들 및 기법들의 유연성을 도시한다. 예를 들어, 시스템들 및 기법들은 캡처된 이미지 내의 ROI(들) 또는 객체들의 조정을 허용하면서, 이미지 내의 다른 ROI(들) 또는 객체들을 고정된 채로 유지한다.
도 8은 하나 이상의 프레임들을 프로세싱하는 프로세스(800)의 예를 도시하는 흐름도이다. 블록(802)에서, 프로세스(800)는 카메라로부터 2D 입력 이미지를 획득하는 단계를 포함한다. 예를 들어, 2D 입력 이미지는 이미지 캡처 및 프로세싱 시스템(300), 이미지 캡처 디바이스(305A), 및/또는 이미지 프로세싱 디바이스(305B)로부터 획득될 수 있다.
블록(804)에서, 프로세스(800)는 2D 입력 이미지의 3D 표현을 획득하는 단계를 포함한다. 예를 들어, 프로세스(800)는 도 4에 도시된 3D 메시 엔진(406)으로부터 3D 표현을 획득할 수 있다.
블록(806)에서, 프로세스(800)는 2D 입력 이미지 내의 제1 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계를 포함한다. 예를 들어, 프로세스(800)는 목표 객체 및/또는 ROI를 나타내는 사용자 입력을 획득할 수 있다. 일부 경우들에서, 사용자 입력에 기초하여, 프로세스(800)는 목표 객체 및/또는 ROI와 연관된 3D 메시 내의 버텍스들을 결정할 수 있다. 일부 경우들에서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것은 특징부 검출 및 객체 검출 중 적어도 하나를 포함한다. 일부 예들에서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것은 2D 입력 이미지의 3D 표현의 제1 부분에 대응하는 심도 정보에 기초한다.
블록(808)에서, 프로세스(800)는 제1 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계를 포함한다. 일부 예들에서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제1 버텍스들의 심도 값들을 감소시키는 것을 포함한다. 일부 경우들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 심도, 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 및 롤 회전을 조정하는 것 중 하나 이상을 포함한다. 예를 들어, 목표 객체는 사람일 수 있고, 사람의 3D 표현의 수정은 사람의 머리의 배향을 변경하는 것(예컨대, 피치 축, 요 축, 및/또는 롤 축을 중심으로 한 회전)을 포함할 수 있다. 일부 예들에서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제2 버텍스들의 심도 값들을 증가시키는 것을 추가로 포함한다.
블록(810)에서, 프로세스(800)는 디스플레이 상에 출력될 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 조정된 포즈에 기초하여 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하는 단계를 포함한다. 목표 객체의 수정된 버전의 적어도 서브-부분은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 비해 2D 출력 이미지에서 확대된 크기를 갖는다.
일부 예들에서, 프로세스(800)는 목표 객체를 식별하는 사용자 입력을 획득하는 단계를 포함하고, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 조정된다.
일부 예들에서, 프로세스(800)는 목표 객체의 조정량의 표시를 획득하고 2D 입력 이미지의 3D 표현의 포즈를 목표 객체의 조정량의 표시에 대응하는 양만큼 조정하는 단계를 포함한다.
일부 예들에서, 프로세스(800)는 2D 입력 이미지 내의 목표 객체와 연관된 객체 마스크를 획득하는 단계를 포함한다. 일부 경우들에서, 프로세스(800)는, 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계를 포함한다. 일부 예들에서, 프로세스(800)는, 객체 마스크에 기초하여, 하나 이상의 추가 객체들에 대응하는 3D 표현의 제2 부분을 결정하는 단계를 포함한다. 일부 양태들에서, 프로세스(800)는 조정된 포즈를 갖는 3D 표현의 제1 부분과 3D 표현의 제2 부분을 조합하여 조합된 3D 메시를 생성하는 단계를 포함한다. 일부 경우들에서, 2D 출력 이미지를 생성하는 것은 조합된 3D 메시를 2D 출력 이미지로 변환하는 것을 포함한다.
일부 예들에서, 프로세스(800)는 2D 입력 이미지 내의, 목표 객체와는 상이한, 하나 이상의 추가 객체들과 연관된 객체 마스크를 획득하는 단계를 포함한다. 일부 양태들에서, 프로세스(800)는, 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계를 포함한다. 일부 경우들에서, 프로세스(800)는, 객체 마스크에 기초하여, 하나 이상의 추가 객체들 중 적어도 하나에 대응하는 3D 표현의 제2 부분을 결정하는 단계를 포함한다. 일부 예들에서, 프로세스(800)는 3D 표현의 제1 부분의 포즈를 조정하는 단계 및 3D 표현의 제2 부분의 하나 이상의 버텍스들을 고정하여 조정된 3D 메시를 생성하는 단계를 포함한다. 일부 경우들에서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 버텍스들의 심도 값들을 감소시켜 버텍스들이 3D 표현의 제2 부분의 고정된 하나 이상의 버텍스들에 대해 사전결정된 수치적 대응성을 갖도록 한다. 일부 양태들에서, 2D 출력 이미지를 생성하는 것은 조정된 3D 메시를 2D 출력 이미지로 변환하는 것을 포함한다.
일부 경우들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 결정된 양만큼 조정된다. 일부 양태들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 디폴트 구성에 기초하여 결정된 양으로 조정된다. 일부 예들에서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자의 선호도 및 과거 거동들의 머신 러닝에 기초하여 조정된다. 일부 구현예들에서, 목표 객체의 수정된 버전의 적어도 일부분의 수정은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 대한 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 또는 롤 회전 중 하나 이상을 포함한다.
일부 예들에서, 프로세스(800)는 목표 객체에 대응하지 않는 2D 입력 이미지의 3D 표현의 제2 부분을 조정하지 않으면서 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계를 포함한다.
일부 예들에서, 프로세스(800)는 2D 입력 이미지 내의 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분을 결정하는 단계를 포함한다. 일부 경우에, 프로세스(800)는 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 포즈를 조정하는 단계를 포함한다. 일부 양태들에서, 프로세스(800)는 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 조정된 포즈에 추가로 기초하여 2D 출력 이미지를 생성하는 단계를 포함한다. 일부 구현예들에서, 제2 부분의 포즈에 대한 조정은 제1 부분의 포즈에 대한 조정과는 상이하다.
일부 예들에서, 프로세스(800)는 카메라로부터 제2 2D 입력 이미지를 획득하는 단계를 포함하고, 제2 2D 입력 이미지는 2D 입력 이미지에 포함된 장면의 적어도 일부분을 포함한다. 일부 양태들에서, 프로세스(800)는 제2 2D 입력 이미지의 제2 3D 표현을 획득하는 단계를 포함하고, 2D 출력 이미지의 적어도 일부분은 제2 2D 입력 이미지의 제2 3D 표현에 기초하여 생성된다.
일부 예들에서, 본 명세서에서 설명된 프로세스들(예컨대, 프로세스(800) 및/또는 본 명세서에서 설명된 다른 프로세스)은 컴퓨팅 디바이스 또는 장치에 의해 수행될 수 있다. 일 예에서, 하나 이상의 프로세스들이 도 4의 이미지 조정 시스템(400)에 의해 수행될 수 있다. 다른 예에서, 하나 이상의 프로세스들은 도 11에 도시된 컴퓨팅 시스템(1100)에 의해 수행될 수 있다. 예를 들어, 도 11에 도시된 컴퓨팅 시스템(1100)을 구비한 컴퓨팅 디바이스는 이미지 조정 시스템(400)의 컴포넌트들을 포함할 수 있고, 도 6의 프로세스(600), 도 8의 프로세스(800) 및/또는 본 명세서에 설명된 다른 프로세스의 동작들을 구현할 수 있다.
컴퓨팅 디바이스는 임의의 적합한 디바이스, 이를테면 차량 또는 차량의 컴퓨팅 디바이스(예를 들어, 차량의 운전자 모니터링 시스템(DMS)), 모바일 디바이스(예를 들어, 모바일 폰), 데스크톱 컴퓨팅 디바이스, 태블릿 컴퓨팅 디바이스, 웨어러블 디바이스(예를 들어, VR 헤드셋, AR 헤드셋, AR 안경, 네트워크-연결 워치 또는 스마트워치, 또는 기타 웨어러블 디바이스), 서버 컴퓨터, 로봇 디바이스, 텔레비전, 및/또는 프로세스(600), 프로세스(800) 및/또는 본 명세서에 설명된 다른 프로세스를 포함하는 본 명세서에 설명된 프로세스들을 수행하기 위한 리소스 능력들을 갖는 임의의 다른 컴퓨팅 디바이스를 포함할 수 있다. 일부 경우들에서, 컴퓨팅 디바이스 또는 장치는 하나 이상의 입력 디바이스들, 하나 이상의 출력 디바이스들, 하나 이상의 프로세서들, 하나 이상의 마이크로프로세서들, 하나 이상의 마이크로컴퓨터들, 하나 이상의 카메라들, 하나 이상의 센서들, 및/또는 여기에 설명된 프로세스들의 단계들을 수행하도록 구성되는 다른 컴포넌트(들)와 같은 다양한 컴포넌트들을 포함할 수 있다. 일부 예들에서, 컴퓨팅 디바이스는 디스플레이, 데이터를 통신 및/또는 수신하도록 구성된 네트워크 인터페이스, 이들의 임의의 조합, 및/또는 다른 컴포넌트(들)를 포함할 수 있다. 네트워크 인터페이스는 인터넷 프로토콜(IP) 기반 데이터 또는 다른 타입의 데이터를 통신 및/또는 수신하도록 구성될 수 있다.
컴퓨팅 디바이스의 컴포넌트들은 회로부에서 구현될 수 있다. 예를 들어, 컴포넌트들은 하나 이상의 프로그래밍가능 전자 회로들(예컨대, 마이크로프로세서들, 그래픽 프로세싱 유닛(GPU)들, 디지털 신호 프로세서(DSP)들, 중앙 프로세싱 유닛(CPU)들 및/또는 다른 적합한 전자 회로들)을 포함할 수 있는 전자 회로들 또는 다른 전자 하드웨어를 포함할 수 있고 그리고/또는 그를 사용하여 구현될 수 있으며, 그리고/또는 본 명세서에서 설명되는 다양한 동작들을 수행하기 위해 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합을 포함할 수 있고 그리고/또는 그를 사용하여 구현될 수 있다.
프로세스(600) 및 프로세스(800)는 논리적 흐름도들로서 도시되고, 이들의 동작은 하드웨어, 컴퓨터 명령들, 또는 이들의 조합으로 구현될 수 있는 동작들의 시퀀스를 나타낸다. 컴퓨터 명령들과 관련하여, 동작들은 하나 이상의 컴퓨터 판독가능 저장 매체들 상에 저장된 컴퓨터 실행가능 명령들을 표현하며, 이러한 명령들은 하나 이상의 프로세서들에 의해 실행될 때, 열거된 동작들을 수행한다. 대체적으로, 컴퓨터 실행가능 명령들은 특정 기능들을 수행하거나 특정 데이터 타입들을 구현하는 루틴들, 프로그램들, 객체들, 컴포넌트들, 데이터 구조들 등을 포함한다. 동작들이 설명되는 순서는 제한으로서 해석되는 것으로 의도되지 않으며, 임의의 수의 설명되는 동작들이 임의의 순서로 그리고/또는 병렬로 조합되어 프로세스들을 구현할 수 있다.
추가적으로, 프로세스(600), 프로세스(800) 및/또는 본 명세서에 설명된 다른 프로세스는 실행가능 명령들로 구성된 하나 이상의 컴퓨터 시스템들의 제어 하에 수행될 수 있으며, 하나 이상의 프로세서들 상에서 집합적으로 실행하는 코드(예를 들어, 실행가능 명령들, 하나 이상의 컴퓨터 프로그램들, 또는 하나 이상의 어플리케이션들)로서, 하드웨어에 의해, 또는 이들의 조합으로 구현될 수 있다. 위에서 언급된 바와 같이, 코드는 예를 들어, 하나 이상의 프로세서들에 의해 실행가능한 복수의 명령들을 포함하는 컴퓨터 프로그램의 형태로, 컴퓨터 판독가능 또는 머신 판독가능 저장 매체 상에 저장될 수 있다. 컴퓨터 판독가능 또는 머신 판독가능 저장 매체는 비일시적일 수 있다.
위에서 언급된 바와 같이, 다양한 본 개시내용의 양태들은 머신 러닝 모델들 또는 시스템들을 이용할 수 있다. 도 9는 앞서 설명한 특징부 분할, 인스턴스 분할, 심도 평가 및/또는 분류에 기초하여 머신 러닝을 구현하는데 사용될 수 있는 딥 러닝 뉴럴 네트워크(900)의 예시적인 예이다. 입력 계층(920)은 입력 데이터를 포함한다. 일 예시적인 예에서, 입력 계층(920)은 입력 이미지의 픽셀들을 나타내는 데이터를 포함할 수 있다. 뉴럴 네트워크(900)는 다수의 은닉 계층들(922a, 922b, 내지 922n)을 포함한다. 은닉 계층들(922a, 922b, 내지 922n)은 "n"개의 은닉 계층들을 포함하며, 여기서 "n"은 1 이상의 정수이다. 은닉 계층들의 수는 주어진 애플리케이션을 위해 필요한 만큼 많은 계층들을 포함하도록 이루어질 수 있다. 뉴럴 네트워크(900)는 은닉 계층들(922a, 922b, 내지 922n)에 의해 수행된 프로세싱으로부터 기인되는 출력을 제공하는 출력 계층(921)을 더 포함한다. 일 예시적인 예에서, 출력 계층(921)은 2D 입력 이미지 내의 객체에 대한 분류를 제공할 수 있다. 분류는 활동의 유형(예컨대, 올려보기, 내려보기, 눈 감기, 하품 등)을 식별하는 클래스를 포함할 수 있다.
뉴럴 네트워크(900)는 상호연결된 노드들의 다중 계층 뉴럴 네트워크이다. 각 노드는 정보의 단편을 나타낼 수 있다. 노드들과 연관된 정보는 상이한 계층들 사이에서 공유되고 각각의 계층은 정보가 프로세싱될 때 정보를 보유한다. 일부 경우들에서, 뉴럴 네트워크(900)는 피드-포워드 네트워크를 포함할 수 있으며, 이 경우, 네트워크의 출력들이 그 자체로 피드백되는 피드백 연결들은 존재하지 않는다. 일부 경우들에서, 뉴럴 네트워크(900)는 순환 뉴럴 네트워크를 포함할 수 있으며, 이는 입력 시에 판독하면서 노드들에 걸쳐 정보가 반송될 수 있게 하는 루프들을 가질 수 있다.
정보는 다양한 계층들 사이에서 노드 대 노드 상호연결들을 통해 노드들 사이에서 교환될 수 있다. 입력 계층(920)의 노드들은 제1 은닉 계층(922a)의 노드들의 세트를 활성화할 수 있다. 예를 들어, 도시된 바와 같이, 입력 계층(920)의 입력 노드들 각각은 제1 은닉 계층(922a)의 노드들 각각에 연결된다. 제1 은닉 계층(922a)의 노드들은 입력 노드 정보에 활성화 함수들을 적용함으로써 각각의 입력 노드의 정보를 변환할 수 있다. 이어서, 변환으로부터 도출된 정보는 그들 자신의 지정된 기능들을 수행할 수 있는 다음 은닉 계층(922b)의 노드들로 전달되고 이들을 활성화시킬 수 있다. 예시적 함수들은 콘볼루션, 업샘플링, 데이터 변환, 및/또는 다른 적절한 함수들을 포함한다. 이어서, 은닉 계층(922b)의 출력은 다음 은닉 계층의 노드들을 활성화시키는 등을 할 수 있다. 최종 은닉 계층(922n)의 출력은, 출력이 제공되는, 출력 계층(921)의 하나 이상의 노드들을 활성화할 수 있다. 일부 경우들에서, 뉴럴 네트워크(900) 내의 노드들(예를 들어, 노드 (926))이 다수의 출력 라인들을 갖는 것으로 도시되어 있지만, 노드는 단일 출력을 갖고, 노드로부터 출력되고 있는 것으로 도시되는 모든 라인들은 동일한 출력 값을 표현한다.
일부 경우들에서, 각각의 노드 또는 노드들 사이의 상호연결은 뉴럴 네트워크(900)의 트레이닝으로부터 도출된 파라미터들의 세트인 가중치를 가질 수 있다. 일단 뉴럴 네트워크(900)가 트레이닝되면, 그것은 트레이닝된 뉴럴 네트워크로 지칭될 수 있으며, 이는 하나 이상의 활동들을 분류하는 데 사용될 수 있다. 예를 들어, 노드들 사이의 상호연결은 상호연결된 노드들에 관해 학습된 정보의 편부를 표현할 수 있다. 상호연결은 (예를 들어, 트레이닝 데이터세트에 기초하여) 튜닝될 수 있는 튜닝가능 수치 가중치를 가질 수 있어서, 뉴럴 네트워크(900)가 입력들에 적응적이고, 점점 더 많은 데이터가 프로세싱됨에 따라 학습할 수 있게 허용한다.
뉴럴 네트워크(900)는, 출력 계층(921)을 통해 출력을 제공하기 위해, 상이한 은닉 계층들(922a, 922b, 내지 922n)을 사용하여 입력 계층(920) 내의 데이터로부터의 특징들을 프로세싱하도록 프리-트레이닝(pre-training)된다. 뉴럴 네트워크(900)가 이미지들 내의 특징부들을 식별하는데 사용되는 예에서, 뉴럴 네트워크(900)는, 위에 기재된 바와 같이, 이미지들 및 라벨들 둘 모두를 포함하는 트레이닝 데이터를 이용하여 트레이닝될 수 있다. 예를 들어, 트레이닝 이미지들은 네트워크에 입력될 수 있는데, 각각의 트레이닝 이미지는 (특징부 분할 머신 러닝 시스템을 위한) 이미지들 내의 특징부들을 나타내는 라벨 또는 각각의 이미지 내의 활동의 클래스들을 나타내는 라벨을 갖는다. 예시적인 목적을 위해 객체 분류를 이용하는 일 예에서, 트레이닝 이미지는 2번 이미지를 포함할 수 있고, 이 경우에 이미지에 대한 라벨은 [0 0 1 0 0 0 0 0 0 0]일 수 있다.
일부 경우들에서, 뉴럴 네트워크(900)는 역전파(backpropagation)로 불리는 트레이닝 프로세스를 사용하여 노드들의 가중치들을 조정할 수 있다. 위에서 언급된 바와 같이, 역전파 프로세스는 순방향 패스, 손실 함수, 역방향 패스, 및 가중치 업데이트를 포함할 수 있다. 순방향 패스, 손실 함수, 역방향 패스, 및 파라미터 업데이트는 하나의 트레이닝 반복을 위해 수행된다. 프로세스는, 계층들의 가중치들이 정확하게 튜닝되도록 뉴럴 네트워크(900)가 충분히 잘 트레이닝될 때까지 트레이닝 이미지들의 각각의 세트에 대해 소정 수의 반복들 동안 반복될 수 있다.
이미지들에서의 객체들을 식별하는 예의 경우, 순방향 패스는 뉴럴 네트워크(900)를 통해 트레이닝 이미지를 전달하는 것을 포함할 수 있다. 가중치들은, 뉴럴 네트워크(900)가 트레이닝되기 전에 초기에 랜덤화된다. 예시적인 예로서, 이미지는 이미지의 픽셀들을 나타내는 숫자들의 어레이를 포함할 수 있다. 어레이 내의 각각의 수는 어레이 내의 그 포지션에서의 픽셀 강도를 기술하는 0 내지 255의 값을 포함할 수 있다. 일례에서, 어레이는 픽셀들의 28개의 로우 및 28개의 컬럼과 3개의 컬러 성분들(예컨대, 적색, 녹색 및 청색, 또는 루마와 2개의 크로마 성분들, 등)을 갖는 28 × 28 × 3 숫자 어레이를 포함할 수 있다.
위에서 언급된 바와 같이, 뉴럴 네트워크(900)에 대한 제1 트레이닝 반복 동안, 출력은 초기화 시 가중치들이 랜덤으로 선택되는 것으로 인해 임의의 특정 클래스에 대한 선호도를 부여하지 않는 값들을 포함할 가능성이 있을 것이다. 예를 들어, 출력이 객체가 상이한 클래스들을 포함할 확률들을 갖는 벡터인 경우, 상이한 클래스들 각각에 대한 확률 값은 동일하거나 적어도 매우 유사할 수도 있다(예를 들어, 10 개의 가능한 클래스들에 대해, 각각의 클래스는 0.1의 확률 값을 가질 수도 있다). 초기 가중치들로, 뉴럴 네트워크(900)는 로우 레벨 특징부들을 결정할 수 없고, 따라서 객체의 분류가 어떤 것일 수 있는지의 정확한 결정을 행할 수 없다. 손실 함수는 출력에서의 에러를 분석하는데 사용될 수 있다. 크로스-엔트로피(Cross-Entropy) 손실과 같은 임의의 적합한 손실 함수 정의가 사용될 수 있다. 손실 함수의 다른 예는 로 정의되는, 평균 제곱 오차(mean squared error, MSE)를 포함한다. 손실은 E total 의 값과 동일하도록 설정될 수 있다.
실제 값들이 예측된 출력과는 많이 상이할 것이기 때문에, 손실(또는 에러)은 제1 트레이닝 이미지들에 대해 높을 것이다. 트레이닝의 목표는 예측 출력이 트레이닝 라벨과 동일하도록 손실량을 최소화하는 것이다. 뉴럴 네트워크(900)는, 어느 입력들(가중치들)의 네트워크의 손실에 가장 기여했는지를 결정함으로써 역방향 패스를 수행할 수 있고, 손실이 감소하고 결국 최소화되도록 가중치들을 조정할 수 있다. 가중치들에 대한 손실의 도함수(dL/dW로 표기됨, 여기서 W는 특정 계층에서의 가중치들임)는 네트워크의 손실에 가장 많이 기여한 가중치들을 결정하도록 컴퓨트될 수 있다. 도함수가 계산된 후 가중치 업데이트가 필터들의 모든 가중치들을 업데이트함으로써 수행될 수 있다. 예를 들어, 가중치가 구배(gradient)의 반대 방향으로 변경되도록 업데이트될 수 있다. 가중치 업데이트는 와 같이 표기될 수 있으며, 식중 w는 가중치를 표기하고, w i 는 초기 가중치를 표기하며, η는 학습률(learning rate)을 표기한다. 학습률은 더 큰 가중치 업데이트를 포함하는 높은 학습률과 더 작은 가중치 업데이트를 나타내는 낮은 값을 사용하여 적절한 값으로 설정될 수 있다.
뉴럴 네트워크(900)는 임의의 적합한 심층 네트워크를 포함할 수 있다. 일 예는 입력 계층 및 출력 계층을 포함하는 콘볼루션 뉴럴 네트워크(CNN)를 포함하고, 입력 계층과 출력 계층 사이에 다수의 은닉 계층들을 갖는다. CNN의 은닉 계층들은 일련의 콘볼루션, 비선형, 풀링(다운샘플링을 위한), 및 완전 연결 계층들을 포함한다. 뉴럴 네트워크(900)는 특히, 오토인코더, DBN(deep belief net), 순환 뉴럴 네트워크(RNN) 등과 같은 CNN 이외의 임의의 다른 심층 네트워크를 포함할 수 있다.
도 10은 콘볼루션 뉴럴 네트워크(convolutional neural network, CNN)(1000)의 예시적인 예이다. CNN(1000)의 입력 계층(1020)은 이미지 또는 프레임을 나타내는 데이터를 포함한다. 예를 들어, 데이터는 이미지의 픽셀들을 나타내는 숫자들의 어레이를 포함할 수 있고, 어레이에 있는 각각의 숫자는 어레이에 있는 그 포지션에서의 픽셀 강도를 기술하는 0 내지 255의 값을 포함한다. 위로부터의 이전의 예를 사용하여, 어레이는 28개의 로우 및 28개의 컬럼의 픽셀들과 3개의 컬러 성분들(예를 들어, 적색, 녹색 및 청색, 또는 루마와 2개의 크로마 성분들 등)을 갖는 숫자들의 28 × 28 × 3 어레이를 포함할 수 있다. 이미지는 출력 계층(1024)에서 출력을 얻기 위해 콘볼루션 은닉 계층(1022a), 선택적 비선형 활성화 계층, 풀링 은닉 계층(1022b), 및 완전 연결 은닉 계층들(1022c)을 통해 통과될 수 있다. 각각의 은닉 계층 중 하나만이 도 10에 도시되어 있지만, 당업자는 다중 콘볼루션 은닉 계층들, 비선형 계층들, 풀링 은닉 계층들, 및/또는 완전 연결 계층들이 CNN(1000)에 포함될 수 있다는 것을 이해할 것이다. 앞에서 설명한 것처럼, 출력은 객체의 단일 클래스를 나타낼 수 있거나 또는 이미지에서 객체를 가장 잘 기술하는 클래스의 확률을 포함할 수 있다.
CNN(1000)의 제1 계층은 콘볼루션 은닉 계층(1022a)이다. 콘볼루션 은닉 계층(1022a)은 입력 계층(1020)의 이미지 데이터를 분석한다. 콘볼루션 은닉 계층(1022a)의 각각의 노드는 수용 필드로 불리는 입력 이미지의 노드들(픽셀들)의 영역에 연결된다. 콘볼루션 은닉 계층(1022a)은 하나 이상의 필터들(각각의 필터는 상이한 활성화 또는 피처 맵에 대응함)로서 간주될 수 있으며, 필터의 각각의 콘볼루션 반복은 콘볼루션 은닉 계층(1022a)의 노드 또는 뉴런이다. 예를 들어, 각각의 콘볼루션 반복에서 필터가 커버하는 입력 이미지의 영역은 필터에 대한 수용 필드일 것이다. 일 예시적인 예에서, 입력 이미지가 28×28 어레이를 포함하고, 각각의 필터(및 대응하는 수용 필드)가 5×5 어레이인 경우, 콘볼루션 은닉 계층(1022a)에 24×24 노드들이 있을 것이다. 노드와 그 노드에 대한 수용 필드 사이의 각각의 연결은 가중치, 그리고 일부 경우들에서는, 전체 바이어스를 학습하여 각각의 노드가 입력 이미지에서의 그 특정 로컬 수용 필드를 분석하도록 학습한다. 은닉 계층(1022a)의 각각의 노드는 동일한 가중치들 및 바이어스(공유 가중치 및 공유 바이어스로 불림)를 가질 것이다. 예를 들어, 필터는 입력과 동일한 심도 및 가중치들 (숫자들)의 어레이를 갖는다. 필터는 (입력 이미지의 3개의 컬러 성분에 따라) 이미지 프레임 예에 대해 3의 심도를 가질 것이다. 필터 어레이의 예시적인 예 크기는 노드의 수용 필드의 크기에 대응하는 5 × 5 × 3이다.
콘볼루션 은닉 계층(1022a)의 콘볼루션 성질은 콘볼루션 계층의 각각의 노드가 그의 대응하는 수용 필드에 적용되는 것에 기인한다. 예를 들어, 콘볼루션 은닉 계층(1022a)의 필터는 입력 이미지 어레이의 좌상단 모서리에서 시작할 수 있고, 입력 이미지 주위에서 컨볼브(convolve)할 수 있다. 상기에 언급된 바와 같이, 필터의 각각의 콘볼루션 반복은 콘볼루션 은닉 계층(1022a)의 노드 또는 뉴런으로 간주될 수 있다. 각각의 콘볼루션 반복에서, 필터의 값들은 이미지의 대응하는 수의 원래 픽셀 값들과 승산된다(예를 들어, 5×5 필터 어레이는 입력 이미지 어레이의 상부-좌측 코너에서 입력 픽셀 값들의 5×5 어레이로 승산된다). 각각의 콘볼루션 반복으로부터의 승산들은 그 반복 또는 노드에 대한 총 합산을 획득하기 위해 함께 합산될 수 있다. 다음으로 프로세스는 콘볼루션 은닉 계층(1022a) 내의 다음 노드의 수용 필드에 따라 입력 이미지에서의 다음 위치에서 계속된다. 예를 들어, 필터는 스텝 양(스트라이드라고 함)만큼 다음 수용 필드로 움직일 수 있다. 스트라이드는 1 또는 다른 적절한 양으로 설정될 수 있다. 예를 들어, 스트라이드가 1 로 설정되는 경우, 필터는 각각의 콘볼루션 반복에서 1 픽셀만큼 우측으로 움직일 것이다. 입력 체적의 각각의 고유 위치에서 필터를 프로세싱하는 것은 그러한 위치에 대한 필터 결과들을 나타내는 숫자를 생성하여, 콘볼루션 은닉 계층(1022a)의 각각의 노드에 대해 결정되는 총 합산 값을 생성한다.
입력 계층으로부터 콘볼루션 은닉 계층(1022a)으로의 맵핑은 활성화 맵(또는 피처 맵)으로 지칭된다. 활성화 맵은 입력 볼륨의 각 위치에서의 필터 결과들을 나타내는 각각의 노드에 대한 값을 포함한다. 활성화 맵은 입력 체적 상에서 필터의 각 반복으로부터 야기되는 다양한 총 합산 값들을 포함하는 어레이를 포함할 수 있다. 예를 들어, 28 × 28 입력 이미지의 각각의 픽셀(1의 스트라이드)에 5 × 5 필터가 적용되는 경우 활성화 맵은 24 × 24 어레이를 포함할 것이다. 콘볼루션 은닉 계층(1022a)은 이미지에서 다수의 특징부들을 식별하기 위해 여러 개의 활성화 맵들을 포함할 수 있다. 도 10에 도시된 예는 3개의 활성화 맵들을 포함한다. 3개의 활성화 맵들을 사용하여, 콘볼루션 은닉 계층(1022a)은 3개의 상이한 종류의 특징부들을 검출할 수 있고, 이때 전체 이미지에 걸쳐 각각의 특징부가 검출가능하다.
일부 예들에서, 비선형 은닉 계층은 콘볼루션 은닉 계층(1022a) 이후에 적용될 수 있다. 비선형 계층은 선형 연산들을 계산하고 있던 시스템에 비선형성을 도입하는데 사용될 수 있다. 비선형 계층의 하나의 예시적인 예는 시정된 선형 유닛 (ReLU) 계층이다. ReLU 계층은 함수 f(x) = max(0, x)를 입력 체적의 모든 값들에 적용할 수 있으며, 이는 모든 음의 활성화들을 0으로 변경한다. 따라서 ReLU는 콘볼루션 은닉 계층(1022a)의 수용 필드들에 영향을 미치지 않고서 CNN(1000)의 비선형 속성들을 증가시킬 수 있다.
풀링 은닉 계층(1022b)은 콘볼루션 은닉 계층(1022a) 이후에(그리고 사용될 때 비선형 은닉 계층 이후에) 적용될 수 있다. 풀링 은닉 계층(1022b)은 콘볼루션 은닉 계층(1022a)으로부터의 출력에서의 정보를 단순화하는 데 사용된다. 예를 들어, 풀링 은닉 계층(1022b)은 콘볼루션 은닉 계층(1022a)으로부터 출력된 각각의 활성화 맵을 취할 수 있고, 풀링 함수를 사용하여 응축된 활성화 맵(또는 특징부 맵)을 생성한다. 최대-풀링은 풀링 은닉 계층에 의해 수행되는 함수의 일 예이다. 산술 평균 풀링, L2-norm 풀링, 또는 다른 적합한 풀링 함수들과 같은 다른 형태들의 풀링 함수들이 풀링 은닉 계층(1022a)에 의해 사용될 수 있다. 풀링 함수(예컨대, 최대 풀링 필터, L2-norm 필터, 또는 다른 적합한 풀링 필터)가 콘볼루션 은닉 계층(1022a)에 포함된 각각의 활성화 맵에 적용된다. 도 10에 도시된 예에서, 3개의 풀링 필터들이 콘볼루션 은닉 계층(1022a)에서의 3개의 활성화 맵들에 대해 사용된다.
일부 예들에서, 최대-풀링은 스트라이드(예를 들어, 2의 스트라이드와 같은 필터의 차원과 동일)를 갖는 최대-풀링 필터(예를 들어, 2×2의 크기를 가짐)를 콘볼루션 은닉 계층(1022a)로부터 출력된 활성화 맵에 적용함으로써 사용될 수 있다. 최대 풀링 필터로부터의 출력은 필터가 주위를 콘볼브하는 모든 서브 영역에서의 최대 수를 포함한다. 예를 들어, 2×2 필터를 이용하여, 풀링 계층 내의 각각의 유닛은 이전 계층 내의 2×2 노드들의 영역을 요약할 수 있다(각각의 노드는 활성화 맵에서의 값임). 예를 들어, 활성화 맵에서의 4개 값(노드)은 필터의 각 반복에서 2×2 최대 풀링 필터에 의해 분석될 것이며, 여기서 4개 값으로부터의 최대값이 "최대" 값으로 출력된다. 이러한 최대 풀링 필터가 24×24 노드의 차원을 갖는 콘볼루션 은닉 계층(1022a)으로부터의 활성화 필터에 적용되면, 풀링 은닉 계층(1022b)으로부터의 출력은 12×12 노드의 어레이가 될 것이다.
일부 예에서, L2-norm 풀링 필터가 또한 사용될 수 있다. L2-norm 풀링 필터에는 (최대-풀링에서 행해진 바처럼 최대 값을 계산하는 대신에) 활성화 맵의 2×2 영역(또는 다른 적절한 영역)에서의 값의 제곱의 합의 제곱 근을 계산하는 것, 및 계산된 값을 출력으로 사용하는 것을 포함한다.
직관적으로, 풀링 함수(예컨대, 최대 풀링, L2-norm 풀링, 또는 다른 풀링 함수)는, 주어진 특징부가 이미지의 영역 내의 어느 곳에서나 발견되는지 여부를 결정하고, 정확한 포지션 정보를 폐기한다. 이것은 특징부 검출 결과에 영향을 주지 않고서 수행될 수 있는데, 왜냐하면, 특징부가 발견되면, 특징부의 정확한 위치가 다른 특징부에 상대적인 그의 근사적인 위치만큼 중요하지 않기 때문이다. 최대 풀링(및 다른 풀링 방법들)은 많은 더 적은 풀링된 특징부들이 존재한다는 이점을 제공하고, 따라서 CNN(1000)의 이후 계층들에서 필요한 파라미터들의 수를 감소시킨다.
네트워크에서의 연결들의 최종 계층은, 출력 계층(1024)에서 출력 노드들의 모든 노드에 풀링 은닉 계층(1022b)으로부터의 모든 노드를 연결시키는 완전 연결 계층이다. 위의 예를 사용하여, 입력 계층은 입력 이미지의 픽셀 강도를 인코딩하는 28 × 28 노드를 포함하고, 콘볼루션 은닉 계층(1022a)은 3개 활성화 맵에의 (필터를 위한) 5×5 로컬 수용 필드의 적용에 기초한 3×24×24 은닉 특징 노드들을 포함하고, 풀링 은닉 계층(1022b)은 3개의 특징 맵들 각각에 걸친 2×2 영역들에의 최대 풀링 필터의 적용에 기초한 3×12×12 은닉 특징의 계층을 포함한다. 이러한 예를 확장하면, 출력 계층(1024)은 10개의 출력 노드들을 포함할 수 있다. 그러한 예에서, 3×12×12 풀링 은닉 계층(1022b)의 모든 노드는 출력 계층(1024)의 모든 노드에 연결된다.
완전 연결 계층(1022c)은 이전 풀링 은닉 계층(1022b)의 출력(하이레벨(high-level) 특징부들의 활성화 맵들을 나타내야 함)을 획득할 수 있고, 특정 클래스에 가장 상관되는 특징부들을 결정한다. 예를 들어, 완전 연결 계층(1022c)은 특정 클래스에 가장 강하게 상관되는 하이레벨 특징부들을 결정할 수 있고, 하이레벨 특징부들에 대한 가중치들(노드들)을 포함할 수 있다. 곱은 상이한 클래스들에 대한 확률들을 획득하기 위해 완전 연결 계층(1022c)과 풀링 은닉 계층(1022b)의 가중치들 사이에서 계산될 수 있다. 예를 들어, CNN(1000)이 이미지 내의 객체가 사람임을 예측하는 데 사용되고 있는 경우, 사람의 하이 레벨의 특징부들을 나타내는 활성화 맵들에 높은 값들이 존재할 것이다(예컨대, 2개의 다리가 존재하고, 얼굴이 객체의 상단에 존재하고, 2개의 눈이 얼굴의 상단 좌측 및 상단 우측에 존재하고, 코가 얼굴의 중앙에 존재하고, 입이 얼굴의 하단에 존재하고, 그리고/또는 다른 특징부들이 사람에게 공통적임).
일부 예들에서, 출력 계층(1024)으로부터의 출력은 M차원 벡터(앞선 예에서, M=10)를 포함할 수 있다. M은 이미지 내의 객체를 분류할 때 CNN(1000)이 선택해야 하는 클래스들의 수를 나타낸다. 다른 예시적인 출력들이 또한 제공될 수 있다. N차원 벡터에서의 각 숫자는 객체가 특정 클래스일 확률을 나타낼 수 있다. 하나의 예시적인 예에서, 10차원 출력 벡터가 객체들의 10가지 상이한 클래스가 [0 0 0.05 0.8 0 0.15 0 0 0 0]임을 나타내는 경우, 벡터는 이미지가 제3 클래스의 객체(예를 들어, 개)일 확률이 5%, 이미지가 제4 클래스의 객체(예를 들어, 인간)일 확률이 80%, 그리고 이미지가 제6 클래스의 객체(예를 들어, 캥거루)일 확률이 15%임을 나타낸다. 클래스에 대한 확률은 객체가 해당 클래스의 부분이라는 신뢰 수준으로 간주될 수 있다.
도 11은 본 기술의 소정 양태들을 구현하기 위한 시스템의 일 예를 도시하는 도면이다. 특히, 도 11은, 예를 들어 내부 컴퓨팅 시스템, 원격 컴퓨팅 시스템, 카메라 또는 이들의 임의의 컴포넌트를 구성하는 임의의 컴퓨팅 디바이스일 수 있는 컴퓨팅 시스템(1100)의 예를 예시하고, 여기서 시스템의 컴포넌트들은 연결부(1105)를 사용하여 서로 통신한다. 연결부(1105)는 버스를 사용한 물리적 연결부이거나, 또는 칩셋 아키텍처에서와 같이 프로세서(1110)로의 직접 연결부일 수 있다. 연결부(1105)는 또한 가상 연결부, 네트워크 연결부 또는 논리 연결부일 수 있다.
일부 실시 형태들에서, 컴퓨팅 시스템(1100)은 본 개시내용에서 설명된 기능들이 데이터 센터, 다중 데이터 센터들, 피어 네트워크 등 내에서 분산될 수 있는 분산 시스템이다. 일부 실시 형태들에서, 설명된 시스템 컴포넌트들 중 하나 이상은 컴포넌트가 설명된 기능의 일부 또는 전부를 각각 수행하는 다수의 그러한 컴포넌트들을 나타낸다. 일부 실시 형태에서, 컴포넌트들은 물리적 또는 가상 디바이스들일 수 있다.
예시적인 컴퓨팅 시스템(1100)은 적어도 하나의 프로세싱 유닛(CPU 또는 프로세서)(1110) 및 판독 전용 메모리(ROM)(1120) 및 랜덤 액세스 메모리(RAM)(1125)와 같은 시스템 메모리(1115)를 포함하는 다양한 시스템 컴포넌트를 프로세서(1110)에 커플링시키는 연결부(1105)를 포함한다. 컴퓨팅 시스템(1100)은, 프로세서(1110)와 직접 연결되거나, 그에 매우 근접하거나, 또는 그의 일부로서 통합된 고속 메모리의 캐시(1112)를 포함할 수 있다.
프로세서(1110)는, 프로세서(1110)를 제어하도록 구성된 저장 디바이스(1130)에 저장된 서비스들(1132, 1134, 및 1136)과 같은 임의의 범용 프로세서 및 하드웨어 서비스 또는 소프트웨어 서비스뿐만 아니라, 소프트웨어 명령들이 실제 프로세서 설계에 통합되는 특수 목적 프로세서를 포함할 수 있다. 프로세서(1110)는 본질적으로, 다중 코어들 또는 프로세서들, 버스, 메모리 제어기, 캐시 등을 포함하는 완전 자급식(self-contained) 컴퓨팅 시스템일 수 있다. 다중 코어 프로세서는 대칭 또는 비대칭일 수 있다.
사용자 상호작용을 가능하게 하기 위해, 컴퓨팅 시스템(1100)은 음성용 마이크, 제스처 또는 그래픽 입력용 터치 감응형 스크린, 키보드, 마우스, 모션 입력, 음성 등과 같은 임의의 수의 입력 메커니즘을 나타낼 수 있는 입력 디바이스(1145)를 포함한다. 컴퓨팅 시스템(1100)은 또한 다수의 출력 메커니즘 중 하나 이상일 수 있는 출력 디바이스(1135)를 포함할 수 있다. 일부 예들에서, 다중모드 시스템들은 사용자가 컴퓨팅 시스템(1100)과 통신하기 위해 다수의 유형들의 입력/출력을 제공하는 것을 가능하게 할 수 있다. 컴퓨팅 시스템(1100)은, 일반적으로 사용자 입력 및 시스템 출력을 통제하고 관리할 수 있는 통신 인터페이스(1140)를 포함할 수 있다. 통신 인터페이스는 오디오 잭/플러그, 마이크로폰 잭/플러그, 범용 직렬 버스(USB) 포트/플러그, Apple® Lightning® 포트/플러그, 이더넷 포트/플러그, 광섬유 포트/플러그, 사유의(proprietary) 유선 포트/플러그, BLUETOOTH® 무선 신호 전송, BLUETOOTH® 저에너지(BLE) 무선 신호 전송, IBEACON® 무선 신호 전송, 무선 주파수 식별(RFID) 무선 신호 전송, 근거리 통신(NFC) 무선 신호 전송, DSRC(dedicated short range communication) 무선 신호 전송, 802.11 Wi-Fi 무선 신호 전송, WLAN(wireless local area network) 신호 전송, VLC(Visible Light Communication), WiMAX(Worldwide Interoperability for Microwave Access), 적외선(IR) 통신 무선 신호 전송, PSTN(Public Switched Telephone Network) 신호 전송, ISDN(Integrated Services Digital Network) 신호 전송, 3G/4G/5G/LTE 셀룰러 데이터 네트워크 무선 신호 전송, ad-hoc 네트워크 신호 전송, 전파 신호 전송, 마이크로파 신호 전송, 적외선 신호 전송, 가시광 신호 전송, 자외광 신호 전달, 전자기 스펙트럼을 따른 무선 신호 전송, 또는 이들의 일부 조합을 이용하는 것들을 포함하는, 유선 및/또는 무선 트랜시버를 사용한 유선 또는 무선 통신 수신 및/또는 송신을 수행하거나 또는 가능하게 할 수 있다. 통신 인터페이스(1140)는 또한, 하나 이상의 글로벌 내비게이션 위성 시스템(GNSS) 시스템들과 연관된 하나 이상의 위성들로부터 하나 이상의 신호들의 수신에 기초하여 컴퓨팅 시스템(1100)의 위치를 결정하는 데 사용되는 하나 이상의 GNSS 수신기들 또는 트랜시버들을 포함할 수 있다. GNSS 시스템들은 미국 기반의 GPS(Global Positioning System), 러시아 기반의 GLONASS(Global Navigation Satellite System), 중국 기반의 BeiDou Navigation Satellite System(BDS) 및 유럽 기반의 갈릴레오 GNSS을 포함하지만 이에 국한되지는 않는다. 임의의 특정 하드웨어 배열에 대해 동작하는 것에 제한이 없으며, 따라서, 여기에서의 기본 특징들은 이들이 개발됨에 따라 개선된 하드웨어 또는 펌웨어 배열들로 쉽게 대체될 수 있다.
저장 디바이스(1130)는 비휘발성 및/또는 비일시적 및/또는 컴퓨터 판독가능 메모리 디바이스일 수 있고, 다음과 같은 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 하드 디스크 또는 다른 유형들의 컴퓨터 판독가능 매체들일 수 있다: 자기 카세트들, 플래시 메모리 카드들, 솔리드 스테이트 메모리 디바이스들, 디지털 다기능 디스크들, 카트리지들, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 자기 테이프, 자기 스트립/스트라이프, 임의의 다른 자기 저장 매체, 플래시 메모리, 멤리스터 메모리, 임의의 다른 솔리드-스테이트 메모리, 콤팩트 디스크 판독 전용 메모리(CD-ROM) 광 디스크, 재기록가능 콤팩트 디스크(CD) 광 디스크, 디지털 비디오 디스크(DVD) 광 디스크, 블루-레이 디스크(BDD) 광 디스크, 홀로그래픽 광 디스크, 다른 광학 매체, 보안 디지털(SD) 카드, 마이크로 보안 디지털(microSD) 카드, Memory Stick® 카드, 스마트카드 칩, EMV 칩, 가입자 아이덴티티 모듈(SIM) 카드, 미니/마이크로/나노/피코 SIM 카드, 다른 집적 회로(IC) 칩/카드, 랜덤 액세스 메모리(RAM), 정적 RAM(SRAM), 동적 RAM(DRAM), 판독 전용 메모리(ROM), 프로그래밍가능 판독 전용 메모리(PROM), 소거가능한 프로그래밍가능 판독 전용 메모리(EPROM), 전기적으로 소거가능한 프로그래밍가능 판독 전용 메모리(EEPROM), 플래시 EPROM(FLASHEPROM), 캐시 메모리(L1/L2/L3/L4/L5/L#), 저항성 랜덤 액세스 메모리(RRAM/ReRAM), 상변화 메모리(PCM), 스핀 전달 토크 RAM(STT-RAM), 다른 메모리 칩 또는 카트리지, 및/또는 이들의 조합.
저장 디바이스(1130)는, 그러한 소프트웨어를 정의하는 코드가 프로세서(1110)에 의해 실행될 때, 시스템으로 하여금 기능을 수행하게 하는 소프트웨어 서비스들, 서버들, 서비스들 등을 포함할 수 있다. 일부 실시 형태들에서, 특정 기능을 수행하는 하드웨어 서비스는, 그 기능을 수행하기 위해, 프로세서(1110), 연결부(1105), 출력 디바이스(1135) 등과 같은 필요한 하드웨어 컴포넌트들과 관련하여 컴퓨터 판독가능 매체에 저장된 소프트웨어 컴포넌트를 포함할 수 있다.
용어 "컴퓨터 판독가능 매체(computer-readable medium)"는, 휴대 또는 비휴대 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장, 포함 또는 운반할 수 있는 다양한 다른 매체들을 포함하지만, 이에 한정되지는 않는다. 컴퓨터 판독가능 매체는 데이터가 저장될 수 있고 무선으로 또는 유선 연결부들을 통해 전파되는 캐리어파들 및/또는 일시적 전자 신호들을 포함하지 않는 비일시적 매체를 포함할 수 있다. 비일시적 매체의 예들은 자기 디스크 또는 테이프, CD(compact disk) 또는 DVD(digital versatile disk)와 같은 광학 저장 매체들, 플래시 메모리, 메모리 또는 메모리 디바이스들을 포함할 수 있지만, 이것으로 제한되지는 않는다. 컴퓨터 판독가능 매체 상에는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들 또는 프로그램 명령문들의 임의의 조합을 표현할 수 있는 코드 및/또는 머신 실행가능 명령들이 저장될 수 있다. 코드 세그먼트는 정보, 데이터, 독립변수(argument)들, 파라미터들, 또는 메모리 콘텐츠를 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수 있다. 정보, 독립변수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함한 임의의 적합한 수단을 사용하여 전달, 포워딩, 또는 송신될 수 있다.
일부 실시 형태들에서, 컴퓨터 판독가능 저장 디바이스들, 매체들 및 메모리들은 비트 스트림 등을 포함하는 케이블 또는 무선 신호를 포함할 수 있다. 그러나, 언급될 때, 비일시적 컴퓨터 판독가능 저장 매체들은 에너지, 캐리어 신호들, 전자기파들, 및 신호들 그 자체와 같은 매체들을 명시적으로 배제한다.
본 명세서에서 제공되는 실시 형태들 및 예들의 철저한 이해를 제공하기 위해, 특정 세부사항들이 위의 설명에서 제공된다. 그러나, 실시 형태들은 이러한 특정 세부사항들 없이 실시될 수 있다고 당업자에 의해 이해될 것이다. 설명의 명확성을 위해, 일부 경우들에서, 본 기술은 디바이스들, 디바이스 컴포넌트들, 소프트웨어로 구현되는 방법의 단계들 또는 루틴들, 또는 하드웨어와 소프트웨어의 조합들을 포함하는 기능 블록들을 포함하는 개별 기능 블록들을 포함하는 것으로 제시될 수 있다. 도면들에 도시된 그리고/또는 본 명세서에서 설명되는 것들 이외의 추가적인 컴포넌트들이 사용될 수 있다. 예를 들어, 불필요한 세부사항으로 실시 형태들을 모호하게 하지 않도록 회로들, 시스템들, 네트워크들, 프로세스들 및 다른 컴포넌트들은 블록도 형태의 컴포넌트들로서 도시될 수 있다. 다른 경우들에는, 실시 형태들을 모호하게 하는 것을 회피하기 위해, 잘 알려진 회로들, 프로세스들, 알고리즘들, 구조들 및 기법들이 불필요한 세부사항 없이 도시될 수 있다.
개별 실시 형태들은 위에서 흐름도, 순서도, 데이터 순서도, 구조도, 또는 블록도로서 도시된 프로세스 또는 방법으로서 설명될 수 있다. 흐름도가 동작들을 순차적인 프로세스로서 설명할 수 있지만, 동작들의 대부분은 병렬로 또는 동시에 수행될 수 있다. 추가로, 동작들의 순서는 재-배열될 수 있다. 프로세스는 프로세서의 동작들이 완료될 때 종료되지만 도면에 포함되지 않은 추가적인 단계들을 가질 수 있다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수 있다. 프로세스가 함수에 대응할 때, 그 종료는 호출 함수 또는 메인 함수로의 함수의 복귀에 대응할 수 있다.
위에서 설명된 예들에 따른 프로세스들 및 방법들은 컴퓨터 판독가능 매체들로부터 저장되거나 또는 달리 컴퓨터 판독가능 매체들로부터 이용가능한 컴퓨터 실행가능 명령들을 사용하여 구현될 수 있다. 이러한 명령들은 예를 들어, 범용 컴퓨터, 특수 목적 컴퓨터 또는 프로세싱 디바이스로 하여금 특정 기능 또는 기능들의 그룹을 수행하게 하거나 아니면 구성하는 명령들 및 데이터를 포함할 수 있다. 사용되는 컴퓨터 리소스들의 부분들은 네트워크를 통해 액세스가능할 수 있다. 컴퓨터 실행가능 명령들은, 예를 들어, 어셈블리 언어, 펌웨어, 소스 코드 등과 같은 이진수들, 중간 포맷 명령들일 수 있다. 명령들, 사용되는 정보, 및/또는, 설명된 예들에 따른 방법들 동안 형성된 정보를 저장하기 위해 사용될 수 있는 컴퓨터 판독가능 매체들의 예들은 자기 또는 광학 디스크들, 플래시 메모리, 비휘발성 메모리가 제공된 USB 디바이스들, 네트워킹된 저장 디바이스들 등을 포함한다.
이들 개시내용들에 따른 프로세스들 및 방법들을 구현하는 디바이스들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 하드웨어 기술 언어들, 또는 이들의 임의의 조합을 포함할 수 있고, 다양한 폼 팩터들 중 임의의 폼 팩터를 취할 수 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현될 때, 필요한 태스크들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들(예컨대, 컴퓨터 프로그램 제품)은 컴퓨터 판독가능 또는 머신 판독가능 매체에 저장될 수 있다. 프로세서(들)는 필요한 태스크들을 수행할 수 있다. 폼 팩터들의 통상적인 예들은 랩톱들, 스마트 폰들, 모바일 폰들, 태블릿 디바이스들 또는 다른 소형 폼 팩터 개인용 컴퓨터들, 개인용 디지털 어시스턴트들, 랙마운트 디바이스들, 독립형 디바이스들 등을 포함한다. 본 명세서에서 설명되는 기능은 또한 주변기기들 또는 애드인(add-in) 카드들로 구현될 수 있다. 그러한 기능은 또한 추가 예로서, 단일 디바이스에서 실행되는 상이한 프로세스들 또는 상이한 칩들 사이의 회로 기판 상에서 구현될 수 있다.
명령들, 그러한 명령들을 전달하기 위한 매체들, 명령들을 실행하기 위한 컴퓨팅 리소스들, 및 그러한 컴퓨팅 리소스들을 지원하기 위한 다른 구조들은 본 개시내용에서 설명되는 기능들을 제공하기 위한 예시적인 수단들이다.
위의 설명에서, 본 출원의 양태들은 본 출원의 특정 실시 형태들을 참조하여 설명되지만, 당업자들은 본 출원이 이에 제한되지 않음을 인식할 것이다. 따라서, 본 출원의 예시적인 실시 형태들이 본 명세서에서 상세히 설명되었지만, 본 발명의 개념들은 다른 방식으로 다양하게 구현 및 채용될 수 있고, 첨부된 청구항들은 종래 기술에 의해 제한된 것을 제외하면, 그러한 변형들을 포함하는 것으로 해석되어야 한다고 이해되어야 한다. 위에서 설명된 애플리케이션의 다양한 특징들 및 양태들은 개별적으로 또는 공동으로 사용될 수 있다. 추가로, 실시 형태들은 본 명세서의 범주로부터 일탈함이 없이 본 명세서에서 설명된 것들을 넘어서는 임의의 수의 환경들 및 애플리케이션들에서 활용될 수 있다. 그에 따라, 본 명세서 및 도면들은 제한적인 것이 아니라 예시적인 것으로 간주되어야 한다. 예시의 목적들로, 방법들은 특정 순서로 설명되었다. 대안적인 실시 형태들에서, 방법들은 설명된 것과 상이한 순서로 수행될 수 있음이 이해되어야 한다.
당업자는 본 명세서에서 사용된 미만 ("<") 및 초과 (">") 기호들 또는 용어가 본 개시의 범위를 벗어나지 않으면서 이하 ("≤") 및 이상 ("≥") 기호들로 각각 대체될 수 있음을 알 것이다.
컴포넌트들이 특정 동작을 수행하도록 "구성된" 것으로 설명되는 경우, 그러한 구성은 예를 들어, 전자 회로들 또는 다른 하드웨어를 설계하여 그 동작을 수행하는 것에 의해, 프로그래밍가능 전자 회로들(예컨대, 마이크로프로세서들 또는 다른 적합한 전자 회로들)을 프로그래밍하여 그 동작을 수행하는 것에 의해, 또는 이들의 임의의 조합에 의해, 달성될 수 있다.
문구 "~에 커플링된(coupled to)"은 다른 컴포넌트에 직접적으로 또는 간접적으로 물리적으로 연결된 임의의 컴포넌트, 및/또는 다른 컴포넌트와 직접적으로 또는 간접적으로 통신하는 (예컨대, 유선 또는 무선 연결부, 및/또는 다른 적합한 통신 인터페이스를 통해 다른 컴포넌트에 연결된) 임의의 컴포넌트를 지칭한다.
세트 "중의 적어도 하나" 또는 세트 중의 "하나 이상"을 인용하는 청구항 언어 또는 기타 언어는 그 세트 중의 하나의 멤버 또는 그 세트의 다수의 멤버들이 청구항을 만족하는 것을 나타낸다. 예를 들어, "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"를 언급하는 청구항 언어는 A, B, 또는 A 및 B를 의미한다. 다른 예에서, "A, B 및 C 중 적어도 하나" 또는 "A, B 또는 C 중 적어도 하나"를 언급하는 청구항 언어는 A, B, C, 또는 A 및 B, 또는 A 및 C, 또는 B 및 C, 또는 A 및 B 및 C를 의미한다. 그 언어, 세트 "중 적어도 하나" 및/또는 세트 중 "하나 이상"은 세트를 그 세트에 열거된 항목들로 제한하지 않는다. 예를 들어, "A 및 B 중 적어도 하나" 또는 "A 또는 B 중 적어도 하나"를 언급하는 청구항 언어는 A, B, 또는 A 및 B를 의미할 수 있으며, A 및 B의 세트에 열거되지 않은 항목들을 추가적으로 포함할 수 있다.
본 명세서에 개시된 실시 형태들과 관련하여 설명된 다양한 예시적인 논리 블록들, 모듈들, 회로들 및 알고리즘 단계들은 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 조합들로 구현될 수 있다. 하드웨어와 소프트웨어의 이러한 상호교환 가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트, 블록, 모듈, 회로, 및 단계는 그것들의 기능 관점에서 일반적으로 위에서 설명되었다. 이러한 기능이 하드웨어로 구현되는지, 또는 소프트웨어로 구현되는지 여부는 특정 애플리케이션 및 전체 시스템에 대해 부과된 설계 제한들에 따라 달라진다. 당업자들은 설명된 기능을 각각의 특정 애플리케이션에 대해 다양한 방식들로 구현할 수 있지만, 그러한 구현 결정들이 본 출원의 범주를 벗어나게 하는 것으로 해석되지는 않아야 한다.
본 명세서에서 설명되는 기법들은 또한 전자 하드웨어, 컴퓨터 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수 있다. 그러한 기법들은 무선 통신 디바이스 핸드셋들 및 다른 디바이스들에서의 적용을 포함하여 다수의 용도들을 갖는 범용 컴퓨터들, 무선 통신 디바이스 핸드셋들 또는 집적 회로 디바이스들과 같은 다양한 디바이스들 중 임의의 디바이스에서 구현될 수 있다. 모듈들 또는 컴포넌트들로서 설명되는 임의의 특징들은 통합된 로직 디바이스로 함께 또는 개별적이지만 상호 운용가능한 로직 디바이스들로서 별개로 구현될 수 있다. 소프트웨어로 구현된다면, 이 기법들은 적어도 부분적으로는, 실행될 때 위에서 설명된 방법들 중 하나 이상을 수행하는 명령들을 포함하는 프로그램 코드를 포함하는 컴퓨터 판독가능 데이터 저장 매체에 의해 실현될 수 있다. 컴퓨터 판독가능 데이터 저장 매체는 패키징 재료들을 포함할 수 있는 컴퓨터 프로그램 제품의 일부를 형성할 수 있다. 컴퓨터 판독가능 매체는 메모리 또는 데이터 저장 매체들, 이를테면 랜덤 액세스 메모리(RAM), 이를테면 SDRAM(synchronous dynamic random access memory), 판독 전용 메모리(ROM), NVRAM(non-volatile random access memory), EEPROM(electrically erasable programmable read-only memory), FLASH 메모리, 자기 또는 광학 데이터 저장 매체들 등을 포함할 수 있다. 추가적으로 또는 대안적으로, 이 기법들은 적어도 부분적으로는, 명령들 또는 데이터 구조들의 형태로 프로그램 코드를 반송 또는 통신하고 컴퓨터, 이를테면, 전파 신호들 또는 파들 의해 액세스, 판독 및/또는 실행될 수 있는 컴퓨터 판독가능 통신 매체에 의해 실현될 수 있다.
프로그램 코드는 프로세서에 의해 실행될 수 있으며, 이는 하나 이상의 프로세서들, 이를테면 하나 이상의 디지털 신호 프로세서(DSP)들, 범용 마이크로프로세서들, 주문형 집적 회로(ASIC)들, 필드 프로그래밍가능 로직 어레이(field programmable logic array, FPGA)들, 또는 다른 등가의 집적 또는 이산 로직 회로부를 포함할 수 있다. 그러한 프로세서는 본 개시내용에서 설명되는 기법들 중 임의의 기법을 수행하도록 구성될 수 있다. 범용 프로세서는 마이크로프로세서일 수 있지만; 대안으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 조합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수 있다. 그에 따라, 본 명세서에서 사용된 바와 같은 용어 "프로세서"는 전술한 구조, 전술한 구조의 임의의 조합, 또는 본 명세서에서 설명된 기법들의 구현에 적합한 임의의 다른 구조 또는 장치 중 임의의 것을 지칭할 수 있다.
본 개시내용의 예시적 양태들은 다음을 포함한다:
양태 1: 하나 이상의 이미지들을 프로세싱하는 방법으로서, 카메라로부터 이차원(2D) 입력 이미지를 획득하는 단계; 2D 입력 이미지의 3차원(3D) 표현을 획득하는 단계; 2D 입력 이미지 내의 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계; 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계; 및 디스플레이 상에 출력될 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 조정된 포즈에 기초하여 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 2: 양태 1에 있어서, 목표 객체의 수정된 버전의 적어도 서브-부분은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 비해 2D 출력 이미지에서 확대된 크기를 갖는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 3: 양태 1 또는 양태 2에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계는 심도, 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 및 롤 회전을 조정하는 것 중 하나 이상을 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 4: 양태 1 내지 양태 3 중 어느 한 양태에 있어서, 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계는: 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제1 버텍스들의 심도 값들을 감소시키는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 5: 양태 4에 있어서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계는 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제2 버텍스들의 심도 값들을 증가시키는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 6: 양태 1 내지 양태 5 중 어느 한 양태에 있어서, 목표 객체를 식별하는 사용자 입력을 획득하는 단계를 추가로 포함하고; 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 조정되는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 7: 양태 6에 있어서, 목표 객체의 조정량의 표시를 획득하는 단계; 및 2D 입력 이미지의 3D 표현의 포즈를 목표 객체의 조정량의 표시에 대응하는 양만큼 조정하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 8: 양태 6 또는 양태 7에 있어서, 조정 범위, 겉보기 크기 변화, 및 최대 왜곡량 중 하나 이상에 기초하여 목표 객체의 조정량을 결정하는 단계; 및 2D 입력 이미지의 3D 표현의 포즈를 목표 객체의 조정량에 대응하는 양만큼 조정하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 9: 양태 6 내지 양태 8 중 어느 한 양태에 있어서, 2D 입력 이미지 내의 목표 객체와 연관된 객체 마스크를 획득하는 단계; 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계; 객체 마스크에 기초하여, 하나 이상의 추가 객체들에 대응하는 3D 표현의 제2 부분을 결정하는 단계; 및 조정된 포즈를 갖는 3D 표현의 제1 부분과 3D 표현의 상기 제2 부분을 조합하여 조합된 3D 메시를 생성하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 10: 양태 9에 있어서, 2D 출력 이미지를 생성하는 단계는 조합된 3D 메시를 2D 출력 이미지로 변환하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 11: 양태 1 내지 양태 10 중 어느 한 양태에 있어서, 2D 입력 이미지 내의, 목표 객체와는 상이한, 하나 이상의 추가 객체들과 연관된 객체 마스크를 획득하는 단계; 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계; 객체 마스크에 기초하여, 하나 이상의 추가 객체들 중 적어도 하나에 대응하는 3D 표현의 제2 부분을 결정하는 단계; 및 3D 표현의 제1 부분의 포즈를 조정하고 3D 표현의 제2 부분의 하나 이상의 버텍스들을 고정하여 조정된 3D 메시를 생성하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 12: 양태 11에 있어서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계는: 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 버텍스들의 심도 값들을 감소시켜 버텍스들이 3D 표현의 제2 부분의 고정된 하나 이상의 버텍스들에 대해 사전결정된 수치적 대응성을 갖도록 하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 13: 양태 1 내지 양태 12 중 어느 한 양태에 있어서, 2D 출력 이미지를 생성하는 단계는 조정된 3D 메시를 2D 출력 이미지로 변환하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 14: 양태 1 내지 양태 13 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계는 특징부 검출 및 객체 검출 중 적어도 하나를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 15: 양태 1 내지 양태 14 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 단계는 2D 입력 이미지의 3D 표현의 제1 부분에 대응하는 심도 정보에 기초하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 16: 양태 1 내지 양태 15 중 어느 한 양태에 있어서, 목표 객체에 대응하지 않는 2D 입력 이미지의 3D 표현의 제2 부분을 조정하지 않으면서 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 17: 양태 1 내지 양태 16 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 결정된 양만큼 조정되는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 18: 양태 1 내지 양태 17 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 디폴트 구성에 기초하여 결정된 양으로 조정되는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 19: 양태 1 내지 양태 18 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자의 선호도 및 과거 거동들의 머신 러닝에 기초하여 조정되는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 20: 양태 1 내지 양태 19 중 어느 한 양태에 있어서, 2D 입력 이미지 내의 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분을 결정하는 단계; 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 포즈를 조정하는 단계; 및 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 조정된 포즈에 추가로 기초하여 2D 출력 이미지를 생성하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 21: 양태 20에 있어서, 제2 부분의 포즈에 대한 조정은 제1 부분의 포즈에 대한 조정과는 상이한, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 22: 양태 1 내지 양태 21 중 어느 한 양태에 있어서, 목표 객체의 수정된 버전의 적어도 일부분의 수정은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 대한 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 또는 롤 회전 중 하나 이상을 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 23: 양태 1 내지 양태 22 중 어느 한 양태에 있어서, 카메라로부터 제2 2D 입력 이미지를 획득하는 단계로서, 제2 2D 입력 이미지는 2D 입력 이미지에 포함된 장면의 적어도 일부분을 포함하는, 상기 카메라로부터 제2 2D 입력 이미지를 획득하는 단계; 및 제2 2D 입력 이미지의 제2 3D 표현을 획득하는 단계를 추가로 포함하고, 2D 출력 이미지의 적어도 일부분은 제2 2D 입력 이미지의 제2 3D 표현에 기초하여 생성된, 하나 이상의 이미지들을 프로세싱하는 방법.
양태 24: 하나 이상의 이미지들을 프로세싱하기 위한 장치로서, 메모리; 및 메모리에 커플링된 하나 이상의 프로세서들을 포함하고, 하나 이상의 프로세서들은: 카메라로부터 이차원(2D) 입력 이미지를 획득하고, 2D 입력 이미지의 3차원(3D) 표현을 획득하고, 2D 입력 이미지 내의 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하고, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하고, 그리고 디스플레이 상에 출력될 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 조정된 포즈에 기초하여 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 25: 양태 24에 있어서, 목표 객체의 수정된 버전의 적어도 서브-부분은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 비해 2D 출력 이미지에서 확대된 크기를 갖는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 26: 양태 24 또는 양태 25에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 심도, 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 및 롤 회전을 조정하는 것 중 하나 이상을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 27: 양태 24 내지 양태 26 중 어느 한 양태에 있어서, 하나 이상의 프로세서들은: 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제1 버텍스들의 심도 값들을 감소시키도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 28: 양태 27에 있어서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하는 것은 2D 입력 이미지의 3D 표현의 제1 부분의 하나 이상의 제2 버텍스들의 심도 값들을 증가시키는 것을 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 29: 양태 24 내지 양태 28 중 어느 한 양태에 있어서, 하나 이상의 프로세서들은: 목표 객체를 식별하는 사용자 입력을 획득하도록 구성되고; 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 조정되는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 30: 양태 29에 있어서, 하나 이상의 프로세서들은: 목표 객체의 조정량의 표시를 획득하고; 2D 입력 이미지의 3D 표현의 포즈를 목표 객체의 조정량의 표시에 대응하는 양만큼 조정하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 31: 양태 29 또는 양태 30에 있어서, 하나 이상의 프로세서들은: 조정 범위, 겉보기 크기 변화, 및 최대 왜곡량 중 하나 이상에 기초하여, 목표 객체의 조정량을 결정하고; 2D 입력 이미지의 3D 표현의 포즈를 목표 객체의 조정량에 대응하는 양만큼 조정하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 32: 양태 29 내지 양태 31 중 어느 한 양태에 있어서, 하나 이상의 프로세서들은: 2D 입력 이미지 내의 목표 객체와 연관된 객체 마스크를 획득하고; 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하고; 객체 마스크에 기초하여, 하나 이상의 추가 객체들에 대응하는 3D 표현의 제2 부분을 결정하고; 그리고 조정된 포즈를 갖는 3D 표현의 제1 부분과 3D 표현의 제2 부분을 조합하여 조합된 3D 메시를 생성하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 33: 양태 24 내지 양태 32 중 어느 한 양태에 있어서, 2D 출력 이미지를 생성하는 것은 조합된 3D 메시를 2D 출력 이미지로 변환하는 것을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 34: 양태 24 내지 양태 33 중 어느 한 양태에 있어서, 하나 이상의 프로세서들은: 2D 입력 이미지 내의, 목표 객체와는 상이한, 하나 이상의 추가 객체들과 연관된 객체 마스크를 획득하고; 객체 마스크에 기초하여, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분을 결정하고; 객체 마스크에 기초하여, 하나 이상의 추가 객체들 중 적어도 하나에 대응하는 3D 표현의 제2 부분을 결정하고; 그리고 3D 표현의 제1 부분의 포즈를 조정하고 3D 표현의 제2 부분의 하나 이상의 버텍스들을 고정하여 조정된 3D 메시를 생성하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 35: 양태 34에 있어서, 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하기 위하여, 하나 이상의 프로세서들은: 2D 입력 이미지에 대응하는 2D 입력 이미지의 3D 표현의 제1 부분의 버텍스들의 심도 값들을 감소시켜 버텍스들이 3D 표현의 제2 부분의 고정된 하나 이상의 버텍스들에 대해 사전결정된 수치적 대응성을 갖게 하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 36: 양태 34 내지 양태 35 중 어느 한 양태에 있어서, 2D 출력 이미지를 생성하는 것은 조정된 3D 메시를 2D 출력 이미지로 변환하는 것을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 37: 양태 24 내지 양태 36 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것은 특징부 검출 및 객체 검출 중 적어도 하나를 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 38: 양태 24 내지 양태 37 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분을 결정하는 것은 2D 입력 이미지의 3D 표현의 제1 부분에 대응하는 심도 정보에 기초하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 39: 양태 24 내지 양태 38 중 어느 한 양태에 있어서, 하나 이상의 프로세서들은: 목표 객체에 대응하지 않는 2D 입력 이미지의 3D 표현의 제2 부분을 조정하지 않으면서 2D 입력 이미지의 3D 표현의 제1 부분의 포즈를 조정하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 40: 양태 24 내지 양태 39 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자 입력에 기초하여 결정된 양만큼 조정되는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 41: 양태 24 내지 양태 40 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 디폴트 구성에 기초하여 결정된 양으로 조정되는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 42: 양태 24 내지 양태 41 중 어느 한 양태에 있어서, 2D 입력 이미지의 3D 표현의 제1 부분의 포즈는 사용자의 선호도 및 과거 거동들의 머신 러닝에 기초하여 조정되는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 43: 양태 24 내지 양태 42 중 어느 한 양태에 있어서, 하나 이상의 프로세서들은: 2D 입력 이미지 내의 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분을 결정하고; 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 포즈를 조정하고; 그리고 제2 목표 객체에 대응하는 2D 입력 이미지의 3D 표현의 제2 부분의 조정된 포즈에 추가로 기초하여 2D 출력 이미지를 생성하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 44: 양태 43에 있어서, 제2 부분의 포즈에 대한 조정은 제1 부분의 포즈에 대한 조정과는 상이한, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 45: 양태 24 내지 양태 44 중 어느 한 양태에 있어서, 목표 객체의 수정된 버전의 적어도 일부분의 수정은 2D 입력 이미지 내의 목표 객체의 대응하는 서브-부분에 대한 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 또는 롤 회전 중 하나 이상을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 46: 양태 24 내지 양태 45 중 어느 한 양태에 있어서, 하나 이상의 프로세서들은: 카메라로부터, 2D 입력 이미지에 포함된 장면의 적어도 일부분을 포함하는, 제2 2D 입력 이미지를 획득하고; 그리고 제2 2D 입력 이미지의 제2 3D 표현을 획득하도록 구성되고, 2D 출력 이미지의 적어도 일부분은 제2 2D 입력 이미지의 제2 3D 표현에 기초하여 생성되는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
양태 47: 명령들이 저장되어 있는 비일시적 컴퓨터-판독가능 저장 매체로서, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 양태 1 내지 양태 46의 동작들 중 임의의 동작을 수행하게 하는, 비일시적 컴퓨터-판독가능 저장 매체.
양태 48: 양태 1 내지 양태 46의 동작들 중 임의의 동작을 수행하기 위한 수단을 포함하는 장치.

Claims (30)

  1. 하나 이상의 이미지들을 프로세싱하는 방법으로서,
    카메라로부터 이차원(two-dimensional, 2D) 입력 이미지를 획득하는 단계;
    상기 2D 입력 이미지의 3차원(3D) 표현을 획득하는 단계;
    상기 2D 입력 이미지 내의 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 제1 부분을 결정하는 단계;
    상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 포즈를 조정하는 단계; 및
    디스플레이 상에 출력될 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 조정된 상기 포즈에 기초하여 상기 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  2. 제1항에 있어서, 상기 목표 객체의 상기 수정된 버전의 적어도 서브-부분은 상기 2D 입력 이미지 내의 상기 목표 객체의 대응하는 서브-부분에 비해 상기 2D 출력 이미지에서 확대된 크기를 갖는, 하나 이상의 이미지들을 프로세싱하는 방법.
  3. 제1항에 있어서, 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하는 단계는 심도, 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 및 롤 회전을 조정하는 것 중 하나 이상을 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  4. 제1항에 있어서, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하는 단계는:
    상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 하나 이상의 제1 버텍스들의 심도 값들을 감소시키는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  5. 제4항에 있어서, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하는 단계는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 하나 이상의 제2 버텍스들의 심도 값들을 증가시키는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  6. 제1항에 있어서,
    상기 목표 객체를 식별하는 사용자 입력을 획득하는 단계를 추가로 포함하고, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈는 상기 사용자 입력에 기초하여 조정되는, 하나 이상의 이미지들을 프로세싱하는 방법.
  7. 제6항에 있어서,
    상기 목표 객체의 조정량의 표시를 획득하는 단계; 및
    상기 2D 입력 이미지의 상기 3D 표현의 상기 포즈를 상기 목표 객체의 조정량의 상기 표시에 대응하는 양만큼 조정하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  8. 제6항에 있어서,
    조정 범위, 겉보기 크기 변화, 및 최대 왜곡량 중 하나 이상에 기초하여 상기 목표 객체의 조정량을 결정하는 단계; 및
    상기 2D 입력 이미지의 상기 3D 표현의 상기 포즈를 상기 목표 객체의 상기 조정량에 대응하는 양만큼 조정하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  9. 제1항에 있어서,
    상기 2D 입력 이미지 내의 상기 목표 객체와 연관된 객체 마스크를 획득하는 단계;
    상기 객체 마스크에 기초하여, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하는 단계;
    상기 객체 마스크에 기초하여, 하나 이상의 추가 객체들에 대응하는 상기 3D 표현의 제2 부분을 결정하는 단계; 및
    상기 조정된 포즈를 갖는 상기 3D 표현의 상기 제1 부분과 상기 3D 표현의 상기 제2 부분을 조합하여 조합된 3D 메시를 생성하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  10. 제9항에 있어서, 상기 2D 출력 이미지를 생성하는 단계는 상기 조합된 3D 메시를 상기 2D 출력 이미지로 변환하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  11. 제1항에 있어서,
    상기 2D 입력 이미지 내의, 상기 목표 객체와는 상이한, 하나 이상의 추가 객체들과 연관된 객체 마스크를 획득하는 단계;
    상기 객체 마스크에 기초하여, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하는 단계;
    상기 객체 마스크에 기초하여, 상기 하나 이상의 추가 객체들 중 적어도 하나에 대응하는 상기 3D 표현의 제2 부분을 결정하는 단계; 및
    상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하고 상기 3D 표현의 상기 제2 부분의 하나 이상의 버텍스들을 고정하여 조정된 3D 메시를 생성하는 단계를 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  12. 제11항에 있어서, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하는 단계는:
    상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 버텍스들의 심도 값들을 감소시켜 상기 버텍스들이 상기 3D 표현의 상기 제2 부분의 고정된 상기 하나 이상의 버텍스들에 대해 사전결정된 수치적 대응성을 갖도록 하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  13. 제11항에 있어서, 상기 2D 출력 이미지를 생성하는 단계는 상기 조정된 3D 메시를 상기 2D 출력 이미지로 변환하는 단계를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  14. 제1항에 있어서, 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하는 단계는 특징부 검출 및 객체 검출 중 적어도 하나를 포함하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  15. 제1항에 있어서, 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하는 단계는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분에 대응하는 심도 정보에 기초하는, 하나 이상의 이미지들을 프로세싱하는 방법.
  16. 하나 이상의 이미지들을 프로세싱하기 위한 장치로서,
    메모리; 및
    상기 메모리에 커플링된 하나 이상의 프로세서들을 포함하고, 상기 하나 이상의 프로세서들은:
    카메라로부터 이차원(2D) 입력 이미지를 획득하고;
    상기 2D 입력 이미지의 3차원(3D) 표현을 획득하고;
    상기 2D 입력 이미지 내의 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 제1 부분을 결정하고;
    상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 포즈를 조정하고; 그리고
    디스플레이 상에 출력될 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 조정된 상기 포즈에 기초하여 상기 목표 객체의 수정된 버전을 갖는 2D 출력 이미지를 생성하도록
    구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  17. 제16항에 있어서, 상기 목표 객체의 상기 수정된 버전의 적어도 서브-부분은 상기 2D 입력 이미지 내의 상기 목표 객체의 대응하는 서브-부분에 비해 상기 2D 출력 이미지에서 확대된 크기를 갖는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  18. 제16항에 있어서, 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하는 것은 심도, 수직 시프팅, 수평 시프팅, 피치 회전, 요 회전, 및 롤 회전을 조정하는 것 중 하나 이상을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  19. 제16항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 하나 이상의 제1 버텍스들의 심도 값들을 감소시키도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  20. 제19항에 있어서, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하는 것은 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 하나 이상의 제2 버텍스들의 심도 값들을 증가시키는 것을 추가로 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  21. 제16항에 있어서, 상기 하나 이상의 프로세서들은 상기 목표 객체를 식별하는 사용자 입력을 획득하도록 구성되고, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈는 상기 사용자 입력에 기초하여 조정되는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  22. 제21항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 목표 객체의 조정량의 표시를 획득하고; 그리고
    상기 2D 입력 이미지의 상기 3D 표현의 상기 포즈를 상기 목표 객체의 조정량의 상기 표시에 대응하는 양만큼 조정하도록
    구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  23. 제21항에 있어서, 상기 하나 이상의 프로세서들은:
    조정 범위, 겉보기 크기 변화, 및 최대 왜곡량 중 하나 이상에 기초하여 상기 목표 객체의 조정량을 결정하고; 그리고
    상기 2D 입력 이미지의 상기 3D 표현의 상기 포즈를 상기 목표 객체의 상기 조정량에 대응하는 양만큼 조정하도록
    구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  24. 제16항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 2D 입력 이미지 내의 상기 목표 객체와 연관된 객체 마스크를 획득하고;
    상기 객체 마스크에 기초하여, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하고;
    상기 객체 마스크에 기초하여, 하나 이상의 추가 객체들에 대응하는 상기 3D 표현의 제2 부분을 결정하고; 그리고
    상기 조정된 포즈를 갖는 상기 3D 표현의 상기 제1 부분과 상기 3D 표현의 상기 제2 부분을 조합하여 조합된 3D 메시를 생성하도록
    구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  25. 제24항에 있어서, 상기 2D 출력 이미지를 생성하는 것은 상기 조합된 3D 메시를 상기 2D 출력 이미지로 변환하는 것을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  26. 제16항에 있어서, 상기 하나 이상의 프로세서들은:
    상기 2D 입력 이미지 내의, 상기 목표 객체와는 상이한, 하나 이상의 추가 객체들과 연관된 객체 마스크를 획득하고;
    상기 객체 마스크에 기초하여, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하고;
    상기 객체 마스크에 기초하여, 상기 하나 이상의 추가 객체들 중 적어도 하나에 대응하는 상기 3D 표현의 제2 부분을 결정하고; 그리고
    상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하고 상기 3D 표현의 상기 제2 부분의 하나 이상의 버텍스들을 고정하여 조정된 3D 메시를 생성하도록
    구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  27. 제26항에 있어서, 상기 목표 객체에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 상기 포즈를 조정하기 위해, 상기 하나 이상의 프로세서들은:
    상기 2D 입력 이미지에 대응하는 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분의 버텍스들의 심도 값들을 감소시켜 상기 버텍스들이 상기 3D 표현의 상기 제2 부분의 고정된 상기 하나 이상의 버텍스들에 대해 사전결정된 수치적 대응성을 갖게 하도록 구성된, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  28. 제26항에 있어서, 상기 2D 출력 이미지를 생성하는 것은 상기 조정된 3D 메시를 상기 2D 출력 이미지로 변환하는 것을 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  29. 제16항에 있어서, 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하는 것은 특징부 검출 및 객체 검출 중 적어도 하나를 포함하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
  30. 제16항에 있어서, 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분을 결정하는 것은 상기 2D 입력 이미지의 상기 3D 표현의 상기 제1 부분에 대응하는 심도 정보에 기초하는, 하나 이상의 이미지들을 프로세싱하기 위한 장치.
KR1020247015090A 2021-11-11 2022-08-30 이미지 수정 기법들 KR20240067983A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US17/524,681 2021-11-11

Publications (1)

Publication Number Publication Date
KR20240067983A true KR20240067983A (ko) 2024-05-17

Family

ID=

Similar Documents

Publication Publication Date Title
US11810256B2 (en) Image modification techniques
US11776129B2 (en) Semantic refinement of image regions
US11727576B2 (en) Object segmentation and feature tracking
US11863729B2 (en) Systems and methods for generating synthetic depth of field effects
CN115668967A (zh) 自动相机指导和设置调整
US20240007760A1 (en) Low-power fusion for negative shutter lag capture
US20230239553A1 (en) Multi-sensor imaging color correction
KR20240067983A (ko) 이미지 수정 기법들
CN118160007A (zh) 图像修改技术
US20240013351A1 (en) Removal of objects from images
US11671714B1 (en) Motion based exposure control
US20240054659A1 (en) Object detection in dynamic lighting conditions
US20230370727A1 (en) High dynamic range (hdr) image generation using a combined short exposure image
WO2023283855A1 (en) Super resolution based on saliency
TW202418218A (zh) 圖像中的物件移除
US20240144717A1 (en) Image enhancement for image regions of interest
US20240177329A1 (en) Scaling for depth estimation
US20230021016A1 (en) Hybrid object detector and tracker
US20230386056A1 (en) Systems and techniques for depth estimation
US20240087232A1 (en) Systems and methods of three-dimensional modeling based on object tracking
WO2024030691A1 (en) High dynamic range (hdr) image generation with multi-domain motion correction
KR20240038963A (ko) 다중 카메라 시스템
WO2024112458A1 (en) Scaling for depth estimation