KR20220090398A - 다중 카메라 보정을 수행하는 방법 및 장치 - Google Patents

다중 카메라 보정을 수행하는 방법 및 장치 Download PDF

Info

Publication number
KR20220090398A
KR20220090398A KR1020210156919A KR20210156919A KR20220090398A KR 20220090398 A KR20220090398 A KR 20220090398A KR 1020210156919 A KR1020210156919 A KR 1020210156919A KR 20210156919 A KR20210156919 A KR 20210156919A KR 20220090398 A KR20220090398 A KR 20220090398A
Authority
KR
South Korea
Prior art keywords
camera
homography
exemplary
cameras
orientation
Prior art date
Application number
KR1020210156919A
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 KR20220090398A publication Critical patent/KR20220090398A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/80Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
    • G06T7/85Stereo camera calibration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/80Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01SRADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
    • G01S19/00Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
    • G01S19/38Determining a navigation solution using signals transmitted by a satellite radio beacon positioning system
    • G01S19/39Determining a navigation solution using signals transmitted by a satellite radio beacon positioning system the satellite radio beacon positioning system transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
    • G01S19/42Determining position
    • G01S19/45Determining position by combining measurements of signals from the satellite radio beacon positioning system with a supplementary measurement
    • G01S19/47Determining position by combining measurements of signals from the satellite radio beacon positioning system with a supplementary measurement the supplementary measurement being an inertial measurement, e.g. tightly coupled inertial
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10004Still image; Photographic image
    • G06T2207/10012Stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30221Sports video; Sports image
    • G06T2207/30228Playing field

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Remote Sensing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Studio Devices (AREA)
  • Image Analysis (AREA)

Abstract

초기 추측 없이 다중 카메라 보정을 나타내기 위해 방법, 장치 및 제조 물품이 개시된다. 일 예시는 카메라 쌍에 대한 호모그래피 - 호모그래피는 카메라 쌍의 카메라의 식별된 초점 거리와 식별된 특징의 공통 이미지 평면 좌표 매치를 이용하여 생성됨 - 를 계산하는 것, 호모그래피를 분석하여 상대 이동, 상대 회전 및 표면 법선을 식별하는 것, 카메라의 카메라 중심에 대한 최소화를 푸는 것 및 카메라 위치 및 방향을 이용하여 카메라를 보정하는 것을 포함한다.

Description

다중 카메라 보정을 수행하는 방법 및 장치{METHODS AND APPARATUS TO PERFORM MULTIPLE-CAMERA CALIBRATION}
본 개시는 일반적으로 몰입형 현실 및 보다 구체적으로 다중 카메라 보정을 수행하는 방법 및 장치에 관한 것이다.
몰입형 현실, 즉 가상 현실(virtual reality, VR), 증강 현실(augmented reality, AR) 및 혼합 현실(mixed reality, MR)은 여러 산업을 형성하고 있으며, 마케팅에서 소매 및 훈련에서 교육까지 모든 것이 기술에 의해 근본적으로 변경되고 있다. 이러한 몰입형 현실을 생성하기 위해, 카메라 파라미터 추정, 고품질 이미지 피드(feed) 및 고품질 비디오 피드가 필요하며, 이는 현재 센서 기반 접근법을 통해 또는 추가적인 광속 조정(bundle adjustment) 접근법을 통해 해결된다.
INS(inertial navigation system)과 같은 다중 카메라 보정에 대한 센서 기반 접근법은 다중 카메라의 자동화된 보정을 수행하기 위한 하나의 방식이다. 센서 기반 시스템은 IMU(inertial measurement unit) 또는 GPS(global positioning system)와 같은 센서가 장착되어, 각 디바이스의 가격을 매우 높인다. 추가적으로, INS 시스템과 GPS 시스템은 일반적으로 다중 카메라 보정을 수행하기 위한 목표하는 수준의 정확성을 제공하지 않는다.
카메라 보정에 대한 다른 접근법은 추가적인 광속 조정이다. 추가적인 광속 조정은 두 카메라 간의 광속 조정을 계산하고, 그 후 조정된 광속에 카메라를 이어서 추가한다.
도 1은 예시적인 이미지 획득 및 프로세싱 시스템의 블록도 개요이다.
도 2는 도 1의 예시적인 카메라 방향 보정기의 블록도이다.
도 3은 도 1에 도시된 위치 및 방향 계산기의 일 예시이다.
도 4는 다중 카메라 보정을 수행하도록 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 5는 카메라 방향을 해결(solve)하도록 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 6은 카메라 로케이션을 해결하도록 실행될 수 있는 머신 판독 가능 명령어를 나타내는 흐름도이다.
도 7은 예시적인 장면에서 카메라 사이의 연결성 및 에지를 나타내는 도면이다.
도 8은 도 4, 5 및/또는 6의 명령어를 실행하여 다중 카메라 보정을 구현하도록 구성된 예시적인 프로세싱 플랫폼의 블록도이다.
도 9는 도 4, 5 및/또는 6의 명령어를 실행하여 다중 카메라 보정을 구현하도록 구성된 예시적인 프로세싱 플랫폼의 블록도이다.
도면은 반드시 축척에 맞지는 않는다. 일반적으로, 동일한 참조 번호는 도면과 첨부된 명세서에 걸쳐 동일 또는 유사한 부분을 지칭하는 데 사용될 것이다. 연결 참조(예컨대, 부착된, 결합된, 연결된 및 병합된)는 광범위하게 해석되어야 하며, 달리 표시되지 않는 한 요소들의 연결 사이의 중간 부재를 포함할 수 있다. 이와 같이 연결 참조는 반드시 두 요소가 직접 연결되고 서로 고정된 관계에 있는 것을 추정하지 않는다. 임의의 부분이 다른 부분에 "접촉"되어 있다는 것은 두 부분 사이에 중간 부분이 없다는 것을 의미한다. 비록 도면이 깨끗한 선과 경계로 계층 및 영역을 도시하지만, 이 선 및/또는 경계 중 일부 또는 전부는 이상화될 수 있다. 실제로 경계 및/또는 선은 관찰할 수 없고/없거나, 혼합되고/되거나, 불규칙적일 수 있다.
서술자 "제 1", "제 2", "제 3" 등은 본 명세서에서 개별적으로 지칭될 수 있는 여러 요소 또는 구성요소를 식별할 때 사용된다. 사용 맥락에 따라 달리 지정되거나 이해되지 않는 한, 이러한 서술자는 우선 순위, 목록의 물리적 순서 또는 배열 또는 시간 순서의 의미를 부여하는 것이 아니고, 단지 개시된 예시를 이해하기 쉽게 하기 위해 여러 요소 또는 구성요소를 지칭하기 위한 표시로 사용된다. 일부 예시에서, 상세한 설명에서 서술자 "제 1"은 한 요소를 지칭하는 데 사용될 수 있는 반면, 동일한 요소는 청구범위에서 "제 2" 또는 "제 3"과 같은 상이한 서술자로 지칭될 수 있다. 이러한 경우, 이러한 서술자는 단지 여러 요소 또는 구성요소를 참조하기 쉽게 하기 위해 사용되는 것을 이해하여야 한다.
몰입형 현실은 사용자에게 비물리적 세계에 물리적으로 존재한다는 인식을 제공한다. 이 인식은 몰입형 현실 시스템의 사용자를 전체 환경을 제공하는 이미지, 소리 또는 다른 자극으로 둘러쌈을 통해 생성된다. 이러한 몰입형 현실의 생성은 고품질 이미지 및 비디오 피드(feed)를 필요로 하며, 이는 이벤트를 관찰하고 비디오 피드를 생성하는 카메라의 보정과 같은 방법을 필요로 한다. 다중 카메라를 보정하는 것은 고품질 몰입형 현실이 여러 산업에서 생성될 수 있게 한다.
본 명세서에서 설명되는, 초기 추측 없이 다중 카메라 보정을 수행하는 방법 및 장치는 많은 상이한 사용 사례에서 많은 상이한 방식으로 사용될 수 있다. 예를 들어, 본 개시의 교시는 평면 환경 및 콜드 스타트(cold start) 환경에서 사용될 수 있다. 평면 환경은 다중 카메라에 의해 관찰되는 대부분의 장면(예컨대, 경기장)의 대부분이 적어도 하나의 평면으로부터 구성된 상황이다. 평면 환경의 경우, 일부 다중 뷰 알고리즘은 이러한 비전 시스템에서 적합하게 사용되지 않는다.
콜드 스타트 환경은 센서가 고정되어 있지 않거나 또는 위치 파악을 위해 INS와 같은 보조 디바이스를 포함하지 않는 상황이다. 따라서, 콜드 스타트 시스템은 다중 카메라 보정에 사용될 수 있는 초기 추측이 없다.
특히 넓은 기준선(base-line)의 경우 불안정하고 부정확한 경향이 있는 광속 조정(bundle adjustment)에 의한 카메라 보정과 대조적으로, 본 명세서에서 설명되는 시스템 및 방법은 안정적이고 정확하다. 광속 조정에서는, 해결 단계가 여러 번 호출되어 전체 프로세스를 매우 시간 낭비적이고, 카메라의 순서와 정확한 초기 추측 모두에 의존적이게 한다. 전반적으로, 광속 조정은 견고하지 않고 불안정하다. 본 명세서에서 설명되는 시스템 및 방법은 견고하고, 안정적이며, 효율적이다.
도 1은 예시적인 이미지 획득 및 처리 시스템(100)의 블록도이다. 시스템(100)은 기준점(103)으로 사용되는 고정적인 초점에 초점을 맞춘 다수의 카메라(102A, 102B, 102C, 102D, 102E 및 102F)에 의해 관찰되는 장면(101)을 포함한다. 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)는 네트워크(104)에 연결되며, 이는 예시적인 이미지 프로세서(106)에 연결된다. 도 1의 예시에서, 이미지 프로세서(106)는 카메라 방향 보정기(108), 위치 및 방향 계산기(110) 및 가상 이미지 생성기(112)를 포함한다. 예시적인 이미지 프로세서(106)의 출력은 AR/VR/MR 세트(114)에 결합된다.
도 1의 예시적인 장면(101)은 몰입형 현실로 변환될 환경이다. 예를 들어, 장면(101)은 스포츠 게임(예컨대, 풋볼 게임)일 수 있거나, 액션/어드벤처 비디오 게임 등에 제공되는 장면일 수 있다. 임의의 예시적인 장면(101)이 활용될 수 있다.
예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)는 IP(internet protocol) 카메라와 같은 임의의 카메라를 이용하여 구현될 수 있다. 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)는 예시적인 장면(101) 주위에 위치되고 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)가 장면(101)을 보는 곳으로부터 상이한 관찰 각도를 갖는다. 각 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터의 뷰는 적어도 하나의 다른 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터의 뷰와 중첩되어 몰입형 현실의 생성을 용이하게 한다.
본 명세서에서 설명되는 바와 같이, 초기 추측이 없는 다중 카메라 보정의 예시는 먼저 예시적인 장면(101)에서 모든 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터 동기화된 샷(shot)을 포착하는 것을 포함하며, 여기서 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)의 초점 거리는 대략적으로 알려져 있다. 이 환경은 예시적인 장면(101)의 중첩 뷰를 갖는 예시적인 다중 카메라(102A, 102B, 102C, 102D, 102E 및 102F)를 포함한다.
예시적인 장면(101)은 또한 기준점(103)을 포함하며, 이는, 예를 들어, 정지된 객체 또는 스포츠 경기장의 특정 표시된 코너 또는 경기장의 특정 표시된 선일 수 있다. 도 1의 예시에서, 풋볼공과 같은 공이 예시적인 기준점(103)으로 도시되지만, 임의의 적합한 객체 또는 특징(feature)이 예시적인 기준점(103)으로 사용될 수 있다. 예를 들어, 예시적인 장면의 나무가 기준점으로 활용될 수 있다. 다른 예시에서, 사람이 기준점(103)을 지정할 수 있고, 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)는 이를 기준점으로 사용할 것이다.
예시적인 네트워크(104)는 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)와 이미지 프로세서(106) 사이의 통신을 용이하게 하는 임의의 공공 및/또는 사설 네트워크를 활용하여 구현될 수 있다. 예를 들어, 네트워크(104)의 전부 또는 부분은 인터넷을 활용하여 구현될 수 있다. 예시적인 네트워크(104)는 또한 예시적인 기준점(103)을 예시적인 이미지 프로세서(106)에 표시하는 것을 용이하게 한다.
예시적인 이미지 프로세서(106)는 임의의 적합한 프로세싱 하드웨어를 활용하여 구현될 수 있다. 예를 들어, 이미지 프로세서(106)는 서버, 컴퓨터 또는 이들의 임의의 적합한 조합을 이용하여 구현될 수 있다. 도 1의 예시에서, 예시적인 이미지 프로세서(106)는 예시적인 네트워크(104)로부터 데이터를 수신하고, 적어도 하나의 예시적인 카메라 방향 보정기(108), 예시적인 위치 및 방향 계산기(110) 및 예시적인 가상 이미지 생성기(112)를 구현한다. 예시적인 이미지 프로세서(106)는 추가적인 기능성을 구현할 수 있거나 또는 예시적인 카메라 방향 보정기(108), 예시적인 위치 및 방향 계산기(110) 및 예시적인 가상 이미지 생성기(112)가 상이하거나 추가적인 이미지 프로세서를 이용하여 구현될 수 있다.
도 1의 예시에서 이미지 프로세서(106)의 부분으로 구현되는 것으로 도시된 카메라 방향 보정기(108)는 네트워크(104)로부터 데이터를 수신한다. 예를 들어, 예시적인 카메라 방향 보정기(108)는 예시적인 네트워크(104)로부터 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)의 로케이션 및 방향을 결정하는 데 사용되는 입력을 수신한다.
일 예시에서, 예시적인 카메라 방향 보정기(108)는 먼저 좌표계에서 전역 회전(global rotation)을 찾기 위해 카메라 로케이션을 해결한다. 예를 들어, 카메라 방향 보정기(108)는 로케이션이 (0, 0, 0)이 되도록 제 1 예시적인 카메라의 로케이션(예컨대, 방향)을 식별하고, 로케이션이 임의의 단위로 1이 되도록 제 2 예시적인 카메라의 로케이션(예컨대, 방향)을 식별한다. 예시적인 카메라 방향 보정기(108)는 예시적인 카메라 사이의 거리를 계산할 수 있다.
전역 회전이 알려진 후, 상대 이동(relative translations)은 전역 회전을 상대 이동으로부터 분리함으로써 결정되며,
Figure pat00001
을 얻는다. 카메라의 중심
Figure pat00002
를 찾아야 한다. 따라서, 시스템은 최적화 문제를 정의하고 해결하여, 예를 들어, 에너지
Figure pat00003
를 결정하는데, 여기서
Figure pat00004
은 단위 길이로의 상대 이동이고,
Figure pat00005
는 소프트
Figure pat00006
손실과 같은 손실 함수이다.
도 1의 예시에서, 위치 및 방향 계산기(110)는 예시적인 네트워크(104)로부터 정보를 수신한다. 예시적인 방향 계산기(110)는 또한 예시적인 카메라 방향 보정기(108)로부터 카메라(102A, 102B, 102C, 102D, 102E 및 102F)의 로케이션 및 방향을 수신한다. 아래에서 더 상세히 설명되는 바와 같이, 수신된 정보는 카메라 쌍의 호모그래피(homography)를 계산하고 카메라 뷰의 각 에지를 출력하는 데 사용된다. 공간에서 동일한 평면 표면의 임의의 두 이미지는 호모그래피에 의해 연관된다. 호모그래피는 또한 투영법(projectivity), 투영 변환(projective transformation) 및 투영 콜리니에이션(projective collineation)으로 정의될 수 있다. 위치 빛 방향 계산기(110)는 또한 카메라(102A, 102B, 102C, 102D, 102E 및 102F)의 각 카메라 로케이션 및 방향의 상대 회전, 상대 이동 및 표면 법선을 해결하고, 특이값(outlier)을 제거한다. 일부 예시에서, 다른 카메라에 대해 수직인 표면을 갖지 않는 카메라를 특이값으로 지칭한다. 일부 예시에서, 위치 및 방향 계산기(110)는 최소화 문제를 해결하고, 각 카메라(102A, 102B, 102C, 102D, 102E 및 102F)의 전역 위치와 방향을 가상 이미지 생성기(112)에 출력한다.
이미지 프로세서(106)의 부분으로 구현될 수 있는 가상 이미지 생성기(112)는 위치 및 방향 계산기(110)로부터 입력을 수신하고, 네트워크(104), 카메라 방향 보정기(108) 및 위치 및 방향 계산기(110)로부터 수신한 데이터를 이용하여 몰입형 현실을 위한 이미지를 생성한다. 예를 들어, 가상 이미지 생성기(112)는 생성된 정보를 이용하여 다중 카메라로부터의 피드를 결합할 수 있다. 이는 AR/VR/MR 세트(114)에 표시되도록 전송되는 몰입형 현실을 생성한다.
헤드셋 또는 하나 이상의 스크린일 수 있는 AR/VR/MR 세트(114)는 가상 이미지 생성기로부터의 데이터를 이용하고 장면(101)을 사용자에게 표시한다.
도 2는 도 1의 카메라 방향 보정기(108)의 일 예시의 추가적인 세부사항을 도시하며, 다른 예시가 가능하다. 도 2의 예시적인 카메라 방향 보정기(108)는 보정 데이터 수신기(202), 카메라 로케이션 솔버(solver)(204) 및 보정 데이터 전송기(206)를 포함한다. 도 2의 예시에서, 카메라 데이터 수신기(202)는 초점 거리 수신기(210), 평면 표면 계산기(212), 특징 매처(matcher) 수신기(214) 및 수동 식별점(label point) 수신기(216)를 포함한다. 일부 예시에서, 카메라 데이터 수신기(202)는 보정 데이터 수신기이다.
예시적인 카메라 방향 보정기(108)는 예시적인 네트워크(104)로부터 정보를 수신한다. 네트워크(104)는 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터 예시적인 카메라 방향 보정기(108)로 데이터를 전달한다. 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터의 데이터를 이용하여, 예시적인 카메라 데이터 수신기(202)는 예시적인 초점 거리 수신기(210)를 이용하여 각 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)의 초점 거리를 결정한다.
예시적인 평면 표면 계산기는 카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터의 데이터를 이용하여 자동으로 평면 표면 입력을 계산한다. 예시적인 카메라 데이터 수신기(202)는 예시적인 평면 표면 계산기(212)로부터 평면 표면을 수신한다.
카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터 데이터를 이용하여, 예시적인 카메라 데이터 수신기(202)의 예시적인 특징 매처 수신기는 각 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)의 중첩 특징을 매치한다.
예시적인 네트워크(104)로부터의 데이터를 이용하여, 예시적인 카메라 데이터 수신기(202)는 예시적인 수동 식별점 수신기(216)를 이용하여 예시적인 기준점(103)(예컨대, 정지된 객체(103))과 같은 수동 식별점을 획득한다. 예시적인 카메라 데이터 수신기(202)로부터의 데이터는 예시적인 보정 데이터 전송기(206)로 전송되고, 이는 데이터를 통합하고 이를 예시적인 위치 및 방향 계산기(110)로 전송한다.
예시적인 카메라 데이터 수신기(202)는 예시적인 네트워크(104)로부터 입력을 수신한다. 예시적인 보정 데이터 수신기(202)는 다수의 입력을 수신한다. 입력의 예시는 예시적인 초점 거리 수신기(210)의 초점 길이, 예시적인 수동 식별점 수신기(216)의 수동 식별점, 예시적인 평면 표면 계산기(212)의 평면 표면 및 특징 매처 수신기(214)의 특징 매처를 포함한다. 예시적인 카메라 방향 보정기(108)는 그 후 예시적인 카메라 데이터 수신기(202)의 출력을 예시적인 보정기 데이터 전송기(206)로 전송한다. 예시적인 카메라 방향 보정기는 그 출력을 예시적인 위치 및 방향 계산기(110)로 전송한다.
도 1의 카메라 방향 보정기(108)를 구현하는 예시적인 방식이 도 2에 도시되어 있지만, 도 2에 도시된 요소, 프로세스 및/또는 디바이스 중 하나 이상은 결합, 분리, 재배열, 생략, 제거 및/또는 임의의 다른 방식으로 구현될 수 있다. 또한, 도 2의 예시적인 보정 데이터 전송기(206), 예시적인 초점 거리 수신기(210), 예시적인 평면 표면 계산기(212), 예시적인 특징 매처 수신기(214), 예시적인 수동 식별점 수신기(216) 및/또는, 더 일반적으로, 예시적인 카메라 방향 보정기(108)는 하드웨어, 소프트웨어, 펌웨어 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합으로 구현될 수 있다. 따라서, 예를 들어, 도 2의 예시적인 보정 데이터 전송기(206), 예시적인 초점 거리 수신기(210), 예시적인 평면 표면 계산기(212), 예시적인 특징 매처 수신기(214), 예시적인 수동 식별점 수신기(216) 및/또는, 더 일반적으로, 예시적인 카메라 방향 보정기(108) 중 임의의 것은 하나 이상의 아날로그 또는 디지털 회로(들), 논리 회로, 프로그램 가능한 프로세서(들), 프로그램 가능한 컨트롤러(들), 그래픽 프로세싱 유닛(GPU)(들), 디지털 신호 프로세서(DSP)(들), ASIC(application specific integrated circuit)(들), PLD(programmable logic device)(들) 및/또는 FPLD(field programmable logic device)(들)에 의해 구현될 수 있다. 순수한 소프트웨어 및/또는 펌웨어 구현을 포함하는 본 특허의 장치 또는 시스템 청구항 중 임의의 것을 읽을 때, 예시적인 보정 데이터 전송기(206), 예시적인 초점 거리 수신기(210), 예시적인 평면 표면 계산기(212), 예시적인 특징 매처 수신기(214), 예시적인 수동 식별점 수신기(216) 중 적어도 하나는, 메모리, DVD(digital versatile disk), CD(compact disk), 블루레이(Blu-ray) 디스크 등과 같은 비일시적 컴퓨터 판독 가능 저장 디바이스 또는 저장 디스크를 포함하도록 이에 명시적으로 정의된다. 또한, 도 1의 예시적인 카메라 방향 보정기는 도 2에 도시된 것들에 추가로 또는 대신에 하나 이상의 요소, 프로세스 및/또는 디바이스를 포함할 수 있고/있거나 도시된 요소, 프로세스 및 디바이스 중 임의의 것 또는 전부 중 하나보다 더 포함할 수 있다. 본 명세서에서 사용되는 문구 "통신"은, 변형을 포함하여, 직접 통신 및/또는 하나 이상의 중계 구성요소를 통한 간접 통신을 포함하며, 직접 물리적인(예컨대, 유선) 통신 및/또는 지속적인 통신을 필요로 하지 않고, 오히려 추가적으로 주기적 간격, 예정된 간격, 비주기적 간격 및/또는 일회성으로 선택적인 통신을 포함한다.
도 3은 도 2의 위치 및 방향 계산기(110)의 일 예시를 도시한다. 도 3의 예시에서, 위치 및 방향 계산기(110)는 호모그래피 계산기(302), 상대 회전, 상대 이동, 표면 법선 분석기(304), 특이값 제거기(306) 및 최소화 솔버(308)를 포함한다.
도 3의 예시에서 도시된 바와 같이, 호모그래피 계산기(302)는 데이터 수신기(310), 특징 획득기(312), 특징 비교기(314) 및 에지 생성기(316)를 포함한다. 예시적인 데이터 수신기(310)는 예시적인 보정 데이터 전송기(206)의 출력으로부터 데이터를 수신한다. 예시적인 데이터 수신기(310)는 예시적인 특징 획득기(312)로 데이터를 전송하며, 이는 예시적인 장면(101)의 다수의 예시적인 카메라(102A, 102B, 102C, 102D, 102E 및 102F)로부터 모든 특징을 획득한다. 예시적인 특징 획득기(312)는 특징을 예시적인 특징 비교기(314)로 전송하며, 이는 예시적인 장면(101)으로부터의 모든 특징을 비교한다. 예시적인 특징 비교기(314)는 예시적인 에지 생성기(316)로 출력을 전송한다. 예시적인 출력 생성기(316)는 에지(예컨대, 중첩 뷰를 갖는 카메라에 연결된 에지)와 각 카메라 로케이션의 상대적인 로케이션을 매핑한다. 예시적인 호모그래피 계산기(302)는 그 후 예시적인 에지 생성기(316)의 출력을 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304)로 전송한다.
예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304)는 값을 구성 및 분석함으로써 상대 회전, 상대 이동, 표면 법선을 계산한다. 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304)는 출력을 예시적인 특이값 제거기(306)로 전송하며, 이는 데이터로부터 특이값을 제거한다. 그 후, 예시적인 특이값 제거기(306)는 나머지 출력을 예시적인 최소화 솔버(308)로 전송하며, 이는 최소화 문제를 계산한다. 그 후 예시적인 위치 및 방향 계산기(110)는 예시적인 최소화 솔버(308)의 출력을 예시적인 가상 이미지 생성기(112)로 전송하며, 이는 전체 예시적인 장면(101)의 가상 이미지를 생성한다. 가상 이미지 생성기(112)의 출력은 그 후 전송되고 예시적인 AR/VR/MR 세트(114)에 표시된다.
예시적인 위치 및 방향 계산기(110)는 예시적인 카메라 방향 보정기(108)로부터 입력 데이터를 수신한다. 예시적인 위치 및 방향 계산기(110)는 먼저 데이터를 이용하여 호모그래피 계산기(302)를 사용하여 카메라 쌍 사이의 호모그래피를 해결한다. 예시적인 호모그래피 계산기(302)는 예시적인 데이터 수신기(310)를 이용하여 예시적인 카메라 방향 보정기(108)로부터 데이터를 수신한다. 호모그래피 계산기(302)는 데이터를 예시적인 특징 획득기(312)로 전송하며, 이는 장면의 모든 특징에 대한 데이터를 얻는다. 그 후 예시적인 특징 획득기(312)는 특징을 예시적인 특징 비교기(314)로 전송하며, 이는 장면의 특징을 분석하고 공통 특징을 식별한다. 예시적인 특징 비교기(314)는 공통 특징을 예시적인 에지 생성기(316)로 전송한다.
에지 생성기(316)는 중첩 이미지 피드를 결정하기 위한 카메라 쌍 사이의 에지를 적절한 중첩점을 결정하기 위한 기준점을 이용하여 결정한다.
도 7에 도시된 바와 같이 꼭지점이 카메라인 그래프가 정의될 수 있다. 두 카메라가 중첩 기준점(예컨대, 예시적인 기준점(103))이 일치하는 경우, 제 1 꼭지점(702)과 제 2 꼭지점(706)은 두 카메라 사이에 에지(704)를 설정할 수 있다.
각 에지에 대해, (예컨대, 다수(예컨대, 4, 6, 8 등)의 매치를 갖는 카메라 쌍에 대해) 호모그래피가 이미지의 평면 상의 지점의 매치 사이에 계산된다. 모든 카메라가 동일한 평면을 바라보고 있고 그 변환이 이미지 평면 좌표 사이에 있기 때문에, 호모그래피는
Figure pat00007
로 쓸 수 있으며, 여기서
Figure pat00008
는 임의의 0이 아닌 수,
Figure pat00009
은 제 1 카메라로부터 제 2 카메라로의 상대 회전,
Figure pat00010
는 비례적으로 스케일링된, 회전된 공간에서 제 1 카메라로부터 제 2 카메라로의 상대 카메라 변위, 그리고
Figure pat00011
은 제 1 카메라의 프레임 시스템으로부터의 평면 법선(plane normal)이다.
예시적인 호모그래피 계산기(302)는 생성된 에지를 이용하고 이를 상대 회전, 상대 이동, 표면 법선 분석기(304)에 공급한다. 카메라의 초점 거리를 알면, 호모그래피가 구성될 수 있고, 상대 회전 및 이동으로 분석될 수 있다. 이는 Faugeras의 SVD(singular value decomposition) 기반 방법에 설명된 대로 수행될 수 있으며, 예를 들어, OpenCV로 구현될 수 있다. 이 접근법은 호모그래피당 상대 회전, 이동 및 표면 법선에 대한 다수의(예컨대, 4개) 물리적으로 가능한 해(solution)를 생성한다. 카메라가 평면 위에 있도록 정의(예컨대, 표면 법선이 카메라 중심을 향함)함으로써, 가능한 해의 수를 줄일 수 있다(예컨대, 2개로).
예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304)는 각 카메라의 상대 회전, 상대 이동 및 표면 법선을 찾는 데 사용된다. 예시적인 에지 생성기(316)에서 계산된 에지를 이용하여, 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304)는 각 예시적인 카메라에 대한 상대 회전, 상대 이동, 표면 법선을 구한다. 해를 이용하여, 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304)는 값을 분석하고 예시적인 특이값 제거기(306)로 데이터를 전송한다.
예시적인 특이값 제거기(306)는 분석된 해를 수신하고 수신된 해를 비교한다. 연결된 꼭지점의 삼중항(triplet)을 선택함으로써, 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304)는 쌍이 동일한 평면 법선에 대해 일치하는 것을 요구한다. 일부 경우에, 대응하는 상대 회전이 법선에 적용되도록 제 2 카메라의 법선이 측정된다. 호모그래피 분석에 의해 주어진 해(예컨대 4개의 해)는 2개의 일치하는 카메라 사이의 상대 회전 및 이동의 단일 해로 축소된다.
해를 제거하는 프로세스의 마지막에, 하나보다 많은 해를 갖는 상대 지오메트리가 존재하는 경우, 상대 지오메트리는 평면 법선 상의 임의의 다른 상대 지오메트리와 일치하지 않는다. 이러한 결과는 특이값으로 간주되고, 예시 특이값 제거기(306)에 의해 제거되며, 이는 나머지 해를 예시적인 최소화 솔버(308)로 전송한다.
예시적인 최소화 솔버(308)는 카메라 방향을 구한다. 카메라 방향을 구하기 위해, 예시적인 최소화 솔버(308)는 제 1 카메라(또는 임의의 다른 카메라)로 정렬된 좌표계 내에서 절대 회전을 구한다. SO(3)와 같은 다른 회전 표현에 비하여 증가된 수치 안정성으로 인해 쿼터니언(quaternion)이 회전을 표현하는 데 사용된다. 그러나, 쿼터니언 표현은 전역 부호 모호성을 갖는다. 부호 모호성을 극복하기 위해, 해밀터니언(Hamiltonian) 경로로 획득된 회전에 대해 대략적인 초기 추측이 사용된다. 해밀터니언 경로는 반복 없이 한번에 모든 꼭지점을 지나는 경로이다. 그러나, 해밀터니언 경로는 동일한 꼭지점에서 시작하고 끝날 필요가 없다. 제 1 카메라(회전이 항등(예컨대, (0, 0, 0))으로 설정된)로부터 시작하여, 경로가 그래프의 모든 꼭지점을 지날 때까지 그래프 상의 각각의 에지를 지난다. 프로세스 동안, 지나간 각 예시적인 카메라의 전역 회전은 관련된 상대 회전을 적용함으로써 설정된다. 결과는 쿼터니언
Figure pat00012
으로 표현된, 각 카메라의 전역 회전에 대한 대략적인 추정이다. 대부분의 데이터가 해밀터니언 경로에 포함되지 않기 때문에, 이 초기 추측은 대략적이고 노이즈가 많은 것으로 간주된다.
카메라 방향을 구하기 위한 1단계는 상대 회전을 쿼터니언 표현으로 변환하는 것을 포함한다. 초기 추측을 이용하여 부호 모호성이 설정된다.
Figure pat00013
으로 카메라 j로부터 카메라 i까지의 상대 회전이 표시되고, 상대 회전은 초기 추측
Figure pat00014
으로부터 추정된다. 쿼터니언 평균(quaternion norm)의 의미에서 더 가까운 부호가
Figure pat00015
로 선택되어, 쿼터니언 표현
Figure pat00016
으로 일관된 상대 회전 시스템을 생성한다.
카메라 방향을 구하기 위한 2단계는, 쿼터니언 평균
Figure pat00017
으로부터 일관된 상대 쿼터니언을 이용하여 더 정확하고 노이즈가 적은 초기 추측을 위해 쿼터니언으로 표현된 모든 카메라 회전에 대한 3 자유도(three degree of freedom)를 찾는 최소화 문제를 해결하는 것을 포함한다. 일반적으로, 회전을 표현하는 쿼터니언은 단위 길이의 것이다.
최소화 문제를 해결하기 위해, 모든 i에 대해
Figure pat00018
인 쿼터니언 평균 수학식(예컨대,
Figure pat00019
)을 푼다. 초기 추측 없이 쿼터니언 평균 수학식을 푸는 것은 어렵다. 초기 추측은, SVD 분석 기법을 통해
Figure pat00020
이 상수인 단순화된 쿼터니언 평균 수학식(예컨대,
Figure pat00021
) 을 풀면 생성된다.
카메라 방향을 구하기 위한 3단계는 쿼터니언
Figure pat00022
으로 표현된 모든 카메라 회전에 대한 3 자유도를 찾는 최소화 문제를 해결하는 데 사용되는 변형물(variant)이다. 다시, 모든 i에 대해
Figure pat00023
인, 평균 제약
Figure pat00024
을 추가한다. 이 비-볼록(non-convex) 최적화는 쿼터니언 매개변수화와 소프트
Figure pat00025
손실과 같은 손실 함수
Figure pat00026
를 사용한다. 손실 함수는 특이값 현상을 줄이는 데 중요하다. 이 해결책은 전역 회전까지 정의되므로, 제 1(또는 임의의 다른) 회전은 고유한 전역 최소값을 달성하기 위해 항등으로 고정된다. 제 1 카메라로부터 측정된 카메라 당 전역 회전
Figure pat00027
이 결과이다.
카메라 로케이션을 구하기 위해, 제 1(또는 임의의 다른) 카메라의 로케이션이 (0, 0, 0)이고 제 2(또는 임의의 다른) 카메라까지의 거리가 임의의 단위로 1인 좌표계에서 절대 이동을 찾는다.
전역 회전을 알고 난 후, 상대 이동으로부터 전역 회전을 분리(decoupling)하여 상대 이동
Figure pat00028
이 얻어진다. 카메라 중심
Figure pat00029
을 찾아야 한다. 따라서, 최적화 문제가 해결, 예를 들어, 다음 에너지가
Figure pat00030
가 마련되며, 여기서
Figure pat00031
는 단위 길이로의 상대 이동이고,
Figure pat00032
은 소프트
Figure pat00033
손실과 같은 손실 함수이다.
도 1의 위치 및 방향 계산기(110)를 구현하는 예시적인 방식이 도 3에 도시되어 있지만, 도 3에 도시된 요소, 프로세스 및/또는 디바이스 중 하나 이상은 결합, 분리, 재배열, 생략, 제거 및/또는 임의의 다른 방식으로 구현될 수 있다. 또한, 도 3의 예시적인 호모그래피 계산기(302), 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304), 예시적인 특이값 제거기(306), 예시적인 최소화 솔버(308) 및/또는, 더 일반적으로, 예시적인 위치 및 방향 계산기(110)는 하드웨어, 소프트웨어, 펌웨어 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합으로 구현될 수 있다. 따라서, 예를 들어, 도 3의 예시적인 호모그래피 계산기(302), 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304), 예시적인 특이값 제거기(306), 예시적인 최소화 솔버(308) 및/또는, 더 일반적으로, 예시적인 위치 및 방향 계산기(110) 중 임의의 것은 하나 이상의 아날로그 또는 디지털 회로(들), 논리 회로, 프로그램 가능한 프로세서(들), 프로그램 가능한 컨트롤러(들), 그래픽 프로세싱 유닛(GPU)(들), 디지털 신호 프로세서(DSP)(들), ASIC(application specific integrated circuit)(들), PLD(programmable logic device)(들) 및/또는 FPLD(field programmable logic device)(들)에 의해 구현될 수 있다. 순수한 소프트웨어 및/또는 펌웨어 구현을 포함하는 본 특허의 장치 또는 시스템 청구항 중 임의의 것을 읽을 때, 예시적인 호모그래피 계산기(302), 예시적인 상대 회전, 상대 이동, 표면 법선 분석기(304), 예시적인 특이값 제거기(306), 예시적인 최소화 솔버(308) 중 적어도 하나는 소프트웨어 및/또는 펌웨어를 포함하여, 메모리, DVD(digital versatile disk), CD(compact disk), 블루레이 디스크 등과 같은 비일시적 컴퓨터 판독 가능 저장 디바이스 또는 저장 디스크를 포함하도록 본 명세서에서 명시적으로 정의된다. 또한, 도 1의 예시적인 위치 및 방향 계산기(110)는 도시된 요소, 프로세스 및 디바이스 중 임의의 것 또는 전부 중 하나보다 더 포함할 수 있다. 본 명세서에서 사용되는 문구 "통신 "은, 변형을 포함하여, 직접 통신 및/또는 하나 이상의 중계 구성요소를 통한 간접 통신을 포함하며, 직접 물리적인(예컨대, 유선) 통신 및/또는 지속적인 통신을 필요로 하지 않고, 오히려 추가적으로 주기적 간격, 예정된 간격, 비주기적 간격 및/또는 일회성으로 선택적인 통신을 포함한다.
이미지 프로세서(806)를 구현하기 위한 예시적인 하드웨어 로직, 머신 판독 가능 명령어, 하드웨어 구현 스테이트 머신 및/또는 이들의 임의의 조합을 나타내는 흐름도가 도 4 내지 6에 도시된다. 머신 판독 가능 명령어는 도 6과 관련하여 아래에서 논의되는 예시적인 프로세서 플랫폼(800)에 도시된 프로세서(812)와 같은 컴퓨터 프로세서 및/또는 프로세서 회로에 의한 실행을 위한 하나 이상의 실행 가능한 프로그램 또는 실행 가능한 프로그램의 부분(들)일 수 있다. 프로그램은 CD-ROM, 플로피 디스크, 하드 드라이브, DVD, 블루레이 디스크 또는 프로세서(812)와 관련된 메모리에 저장된 소프트웨어로 구현될 수 있지만, 전체 프로그램 및/또는 이것의 부분은 프로세서(812)가 아닌 디바이스에 의해 대신 실행될 수 있고/있거나 펌웨어 또는 전용 하드웨어로 구현될 수 있다. 또한, 비록 예시적인 프로그램이 도 4 내지 6에 도시된 흐름도를 참조하여 설명되지만, 예시적인 이미지 프로세서(806)를 구현하는 많은 다른 방법이 대안적으로 사용될 수 있다. 예를 들어, 블록의 실행의 순서는 변경될 수 있고/있거나 설명된 블록의 일부는 변경, 제거 또는 결합될 수 있다. 추가적으로 또는 대안적으로, 블록 중 일부 또는 전부는 소프트웨어 또는 펌웨어를 실행하지 않고 대응하는 동작을 수행하도록 구성된 하나 이상의 하드웨어 회로(예컨대, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC, 비교기, op-amp(operational-amplifier), 논리 회로 등)로 구현될 수 있다. 프로세서 회로는 상이한 네트워크 위치에 및/또는 하나 이상의 디바이스(예컨대, 단일 머신의 멀티 코어 프로세서, 서버 랙에 분산된 다중 프로세서 등)에 로컬로 분산될 수 있다.
본 명세서에서 설명되는 머신 판독 가능 명령어는 압축된 형식, 암호화된 형식, 단편화(fragment)된 형식, 컴파일된 형식, 실행 가능한 형식, 패키징된 형식 등 중 하나 이상으로 저장될 수 있다. 본 명세서에서 설명되는 머신 판독 가능 명령어는 머신 판독 가능 명령어를 생성, 제조 및/또는 생산하는 데 활용될 수 있는 데이터 또는 데이터 구조(예컨대, 명령어의 부분, 코드, 코드 표현 등)로 저장될 수 있다. 예를 들어, 머신 판독 가능 명령어는, 네트워크 또는 네트워크의 집합의 동일 또는 다른 위치에 위치한 하나 이상의 저장 디바이스 및/또는 컴퓨팅 디바이스(예컨대, 서버)에 단편화되고 저장될 수 있다. 머신 판독 가능 명령어는 설치, 수정, 적용, 업데이트, 결합, 보완, 구성, 암호 해독, 압축 해제, 언패킹, 배포, 재할당, 컴파일 등 중 하나 이상을 필요로 할 수 있다. 예를 들어, 머신 판독 가능 명령어는 복수의 부분들에 저장될 수 있고, 이는 개별적으로 압축, 암호화 및 개별적인 컴퓨팅 디바이스에 저장되며, 여기서 부분들은 암호 해독, 압축 해제 및 결합되면, 본 명세서에서 설명되는 것과 같은 프로그램을 함께 형성할 수 있는 하나 이상의 기능을 구현하는 실행 가능한 명령어의 세트를 형성한다.
다른 예시에서, 머신 판독 가능 명령어는 프로세서 회로에 의해서 판독될 수 있는 상태로 저장될 수 있지만, 특정 컴퓨팅 디바이스 또는 다른 디바이스에서 명령어를 실행하기 위해 라이브러리(예컨대, DLL(dynamic link library)), 소프트웨어 개발 키트(SDK), API(application programming interface) 등의 추가를 필요로 할 수 있다. 다른 예시에서, 머신 판독 가능 명령어는, 머신 판독 가능 명령어 및/또는 대응하는 프로그램(들)이 전체적으로 또는 부분적으로 실행될 수 있기 전에, 구성될 필요가 있을 수 있다. 따라서, 본 명세서에서 사용되는 머신 판독 가능 매체는, 저장되거나 그렇지 않고 정지 또는 전송될 때 머신 판독 가능 명령어 및/또는 프로그램의 특정 포맷 또는 상태와 관계없이, 머신 판독 가능 명령어 및/또는 프로그램을 포함할 수 있다.
본 명세서에서 설명되는 머신 판독 가능 명령어는 임의의 과거, 현재 또는 미래의 명령어 언어, 스크립팅 언어, 프로그래밍 언어 등에 의해 표현될 수 있다. 예를 들어, 머신 판독 가능 명령어는 C, C++, JAVA, C#, Perl, Python, JavaScript, HTML(HyperText Markup Language), SQL(Structured Query Language), Swift 등의 언어 중 임의의 것을 이용하여 표현될 수 있다.
앞서 언급한 바와 같이, 도 4 내지 6의 예시적인 프로세스는, 비일시적 컴퓨터 및/또는 임의의 기간 동안(예컨대, 연장된 기간 동안, 영구적으로, 잠깐 동안, 일시적으로 버퍼링 동안 및/또는 정보의 캐싱(caching) 동안) 정보가 저장될 수 있는 하드디스크 드라이브, 플래시 메모리, ROM(read-only memory), CD(compact disk), DVD(digital versatile disk), 캐시, RAM(random-access memory) 및/또는 임의의 다른 저장 디바이스 또는 저장 디스크와 같은 머신 판독 가능 매체에 저장된 실행 가능한 명령어(예컨대, 컴퓨터 및/또는 머신 판독 가능 명령어)를 이용하여 구현될 수 있다. 본 명세서에서 사용되는, 비일시적 컴퓨터 판독 가능 매체라는 용어는 임의의 유형의 컴퓨터 판독 가능 저장 디바이스 및/또는 저장 디스크를 포함하고, 신호 전파를 제외하며 전송 매체를 제외하도록 명시적으로 정의된다.
"포함하는" ("including" 및 "comprising")(및 이들의 모든 형태와 시제)은 본 명세서에서 개방형 용어로 사용된다. 따라서, 전제부(preamble)로서 또는 임의의 종류의 청구범위 기재에서, 청구범위가 임의의 형태의 "포함하다" ("include" 또는 "comprise")(예컨대, comprises, includes, comprising, including, having 등)를 사용하는 경우, 대응하는 청구범위 또는 기재의 범위를 벗어나지 않고 추가적인 요소, 용어 등이 존재할 수 있다는 것을 이해하여야 한다. 본 명세서에서 사용되는 바와 같이, "적어도"라는 구문이, 예를 들어, 청구범위의 전제부에서 전환 용어로 사용되는 경우, 이는 "포함하는"이 개방형인 것과 같이 동일한 방식으로 개방형이다. "및/또는"이라는 용어는, 예를 들어 A, B 및/또는 C와 같은 형태로 사용되는 경우, (1) A만, (2) B만, (3) C만, (4) A와 B, (5) A와 C, (6) B와 C 및 (7) A와 B와 C와 같은 A, B, C의 임의의 조합 또는 서브세트를 지칭한다. 구조, 구성요소, 항목, 객체 및/또는 사물을 설명하는 맥락에서 사용되는 바와 같이, "A와 B 중 적어도 하나"라는 문구는 (1) 적어도 하나의 A, (2) 적어도 하나의 B 및 (3) 적어도 하나의 A와 적어도 하나의 B를 포함하는 구현을 지칭하는 것이다.
본 명세서에서 사용되는, 단수 참조(예컨대, "하나의", "제 1", "제 2" 등)는 복수를 제외하지 않는다. 본 명세서에서 사용되는 "하나의" ("a" 또는 "an") 엔티티는 하나 이상의 그 엔티티를 지칭한다. "하나의", "하나 이상의" 및 "적어도 하나의"라는 용어는 본 명세서에서 상호 교환 가능하게 사용될 수 있다. 또한, 개별적으로 나열되지만, 복수의 수단, 요소 또는 방법 동작은, 예컨대 단일 유닛 또는 프로세서에 의해 구현될 수 있다. 추가적으로, 개별적인 특징이 상이한 예시 또는 청구범위에 포함될 수 있지만, 이는 결합될 수 있고, 상이한 예시 또는 청구범위에 포함된 것은 특징들의 조합이 실현 가능하지 않고/않거나 이점이 없다는 것을 암시하지 않는다.
도 4는 초기 추측 없이 다중 카메라의 위치 및 방향(각 카메라에 대한 총 6 자유도)을 획득하는 데 필요한 다중 카메라 보정을 해결하기 위해 실행될 수 있는 머신 판독 가능 명령어(400)를 나타내는 흐름도이다.
다중 카메라의 정확한 보정을 필요로 하는 많은 애플리케이션, 예를 들어, 자율 주행, 로봇 탐색/주변과의 상호작용 및 자유 차원 비디오를 생성하기 위한 전체 3D 재구성이 있다. 가상 카메라로부터의 장면을 렌더링 하기 위해 필요한 주요 작업 중 하나는 각 카메라의 외부 보정 파라미터를 획득하는 것이다. 카메라 초점 거리를 알게 되면, 자동으로 위치 및 방향을 획득하여 인력을 절약하고 훨씬 더 나은 정확성을 획득하게 된다. 또한, 이 방법은 사용 중에 적용, 예를 들어, 게임 사이에 보정을 계산하는 기존 방법 대신에 게임이 방송되는 동안에 적용될 수 있다. 이는 또한 다수의 이벤트를 동시에 방송하는 능력을 제공한다.
블록(402)에서, 카메라 방향 보정기(108)는 알려진 초점 거리(픽셀 단위)를 갖는, 평면 표면을 가리키는 다중 카메라를 입력한다. 초기 추측이 없는 다중 카메라 보정의 일 예시는 초점 거리가 대략적으로 알려진 장면의 모든 카메라로부터 동기화된 샷을 먼저 잡는 것을 포함한다.
이론적으로, 각 카메라 이미지는 적어도 4개의 특징(다른 카메라와의 호모그래피를 구성하기 위해)을 획득하여야 하지만, 수치적 안정을 위해 카메라 이미지당 적어도 8개의 특징이 필요하다. 상이한 카메라로부터의 특징은 동일한 3차원 지점을 보고 있는 경우 일치(매칭 특징)한다. 일부 예시에서 적어도 8개의 특징이 일치하면 카메라의 쌍은 일치한다. 다른 예시에서, 2개의 카메라 사이에 일치하는 카메라의 경로가 존재하는 경우, 카메라의 쌍은 프록시(proxy)에 의해 일치한다. 매치는, 카메라의 모든(또는 대부분) 쌍이 프록시에 의해 일치하여야 한다는 연결 조건을 만족하여야 한다. 특징 추출 및 특징 매칭은 수동 스태빙(stabbing), 특징 검출의 자동화된 방법 및 매칭, 또는 임의의 다른 방법에 의해 획득될 수 있다.
블록(404)에서, 카메라 방향 보정기(108)는 카메라 이미지 사이의 특징 매치를 확인한다.
블록(406)에서, 위치 및 방향 계산기(110)는 카메라 쌍 사이의 호모그래피를 계산한다.
블록(408)에서, 위치 및 방향 계산기(110)는 각 호모그래피를 상대 회전, 상대 이동 및 표면 법선으로 분석한다.
블록(410)에서, 위치 및 방향 계산기(110)는 동일한 표면 법선을 요구함으로써 특이값을 제거한다.
블록(412)에서, 위치 및 방향 계산기(110)는 최소화 문제를 해결하여 상대적 회전을 알고 있는 절대적 회전을 찾는다.
블록(414)에서, 위치 및 방향 계산기(110)는 최소화 문제를 해결하여 상대적 이동을 알고 있는 절대적 이동을 찾는다. 위치 및 방향 계산기(110)의 출력은 가상 이미지 생성기(112)로 갈 것이고, 이는 AR/VR/MR 세트(114)로 전송될 수 있는 가상 이미지를 생성할 것이다.
도 5는 카메라 방향 해결을 구현하기 위해 실행될 수 있는 머신 판독 가능 명령어(500)의 흐름도이다. 블록(502)에서, 예시적인 카메라 방향 보정기(108)는 각 카메라에 대한 회전에 대한 초기 추측을 수신한다.
블록(504)에서, 예시적인 호모그래피 계산기(302)는 예시적인 카메라 방향 보정기(108)로부터 각 카메라에 대한 상대 회전을 획득한다.
블록(506)에서, 예시적인 위치 및 방향 계산기(110)는 각 카메라에 대해 회전 이동을 쿼터니언으로 변환하고, 예시적인 특이값 제거기(306)로 특이값을 제거한다.
블록(508)에서, 예시적인 최소화 솔버(308)는 각 카메라에 대한 최소화 문제를 해결한다.
블록(510)에서, 예시적인 위치 및 방향 계산기(110)는 각 카메라에 대한 전역 회전을 출력한다.
블록(512)에서, 위치 및 방향 계산기(110)는 각 카메라에 대해 쿼터니언에 의해 표현되는 각 카메라 회전에 대한 3 자유도를 출력한다. 카메라 방향은 초기 추측 없이 카메라를 매핑하고 다중 카메라를 보정하는 데 사용된다. 예시적인 머신 판독 가능 명령어(500)는 종료된다.
도 5는 카메라 로케이션 해결을 구현하기 위해 실행될 수 있는 머신 판독 가능 명령어(600)를 나타내는 흐름도이다. 블록(602)에서, 예시적인 위치 및 방향 계산기(110)는 호모그래피 계산기(302)를 이용하여 예시적인 제 1 카메라를 식별하고 예시적인 제 1 카메라를 (0, 0, 0)로 라벨링한다.
블록(604)에서, 상대 회전, 상대 이동, 표면 법선 분석기(304)는 임의의 단위로 예시적인 제 1 카메라부터 예시적인 제 2 카메라까지 좌표계에서 절대 이동을 찾는다.
블록(606)에서, 상대 회전, 상대 이동, 표면 법선 분석기(304)는 전역 회전과 절대 이동을 이용하여 상대 이동을 얻고, 특이값 제거기(306)를 이용하여 특이값을 제거한다.
블록(608)에서, 예시적인 위치 및 방향 계산기(110)는 최적화 문제를 해결하여 카메라 중심을 찾는다. 카메라 중심을 찾는 것은 카메라 로케이션을 위해 사용되며, 이는 초기 추측 없이 다중 카메라를 보정하도록 매핑된다. 예시적인 명령어는 종료된다.
도 7은 장면(700)에서 각 카메라 사이의 연결성 및 에지의 다이어그램이다. 도 7에 도시된 바와 같이 꼭지점이 카메라인 그래프가 정의되어야 한다. 꼭지점(702)과 제 2 꼭지점(706)은 2개의 카메라가 일치하는 경우 존재하는 2개의 카메라 사이의 에지(704)를 생성할 수 있다. 그래프는 연결되어야 한다(예컨대, 각 카메라로부터 모든 다른 카메라로 경로가 존재함). 그래프의 연결성은 연결성 조건과 동일하다. 에지는 에지 생성기(316)에 의해 생성된다.
각 에지(예컨대, 적어도 8개의 매치를 갖는 카메라 쌍)에 대해, 지점의 매치 사이의 호모그래피가 이미지 평면에서 구해진다. 모든 카메라가 동일한 평면을 보고 있고 그 변환이 이미지 평면 좌표계 사이에 있다는 사실 때문에, 호모그래피는
Figure pat00034
으로 쓸 수 있고, 여기서
Figure pat00035
은 임의의 0이 아닌 수이고,
Figure pat00036
은 제 1 카메라로부터 제 2 카메라까지 상대 이동이며,
Figure pat00037
는 비례적으로 스케일링된 제 1 카메라로부터 제 2 카메라로 상대 카메라 변위이고,
Figure pat00038
은 제 1 카메라의 프레임 시스템에서 수직인 평면이다.
도 8은 도 4 내지 6의 명령어를 실행하여 도 1 내지 3의 장치를 구현하기 위해 구성된 예시적인 프로세서 플랫폼(800)의 블록도이다. 프로세서 플랫폼(800)은, 예를 들어, 서버, 개인용 컴퓨터, 워크스테이션, 자가 학습 머신(예컨대, 뉴럴 네트워크), 모바일 디바이스(예컨대, 휴대 전화, 스마트폰, iPADTM과 같은 태블릿), PDA(personal digital assistant), 인터넷 기기, DVD 플레이어, CD 플레이어, 디지털 비디오 레코더, 블루레이 플레이어, 게이밍 콘솔, 개인용 비디오 레코더, 셋톱 박스, 헤드셋 또는 다른 웨어러블 디바이스, 또는 임의의 다른 유형의 컴퓨팅 디바이스일 수 있다.
도시된 예시의 프로세서 플랫폼(800)은 프로세서(812)를 포함한다. 도시된 예시의 프로세서(812)는 하드웨어이다. 예를 들어, 프로세서(812)는 임의의 원하는 제품군 또는 제조업체의 하나 이상의 집적 회로, 논리 회로, 마이크로프로세서, GPU, DSP 또는 컨트롤러에 의해 구현될 수 있다. 하드웨어 프로세서는 반도체 기반(예컨대, 실리콘 기반) 디바이스일 수 있다. 이 예시에서, 프로세서(812)는 예시적인 카메라 방향 보정기(108), 예시적인 위치 및 방향 계산기(110) 및 예시적인 가상 이미지 생성기(112)를 구현한다.
도시된 예시의 프로세서(812)는 로컬 메모리(813)(예컨대, 캐시)를 포함한다. 도시된 예시의 프로세서(812)는 버스(818)를 통해 휘발성 메모리(814)와 비휘발성 메모리(816)를 포함하는 주 메모리와 통신한다. 휘발성 메모리(814)는 SDRAM(synchronous dynamic random access memory), DRAM(dynamic random access memory), RDRAM®(RAMBUS® dynamic random access memory) 및/또는 임의의 다른 유형의 랜덤 액세스 메모리 디바이스에 의해 구현될 수 있다. 비휘발성 메모리(816)는 플래시 메모리 및/또는 임의의 다른 원하는 유형의 메모리 디바이스에 의해 구현될 수 있다. 주 메모리(814, 816)에 대한 액세스는 메모리 컨트롤러에 의해 제어된다.
도시된 예시의 프로세서 플랫폼(800)은 인터페이스 회로(820) 또한 포함한다. 인터페이스 회로(820)는 이더넷 인터페이스, USB(universal serial bus), Bluetooth® 인터페이스, NFC(near field communication) 인터페이스 및/또는 PCI 익스프레스 인터페이스와 같은 임의의 유형의 인터페이스 표준에 의해 구현될 수 있다.
도시된 예시에서, 하나 이상의 입력 디바이스(822)는 인터페이스 회로(820)로 연결된다. 입력 디바이스(들)(822)는 사용자가 데이터 및/또는 명령을 프로세서(812)에 입력하는 것을 허용한다. 입력 디바이스(들)(822)는, 예를 들어, 오디오 센서, 마이크로폰, 카메라(스틸 또는 비디오), 키보드, 버튼, 마우스, 터치스크린, 트랙패드, 트랙볼, 아이소포인트(isopoint) 디바이스 및/또는 음성 인식 시스템에 의해 구현될 수 있다.
하나 이상의 출력 디바이스(824)는 또한 도시된 예시의 인터페이스 회로(820)에 연결된다. 출력 디바이스(824)는, 예를 들어, 디스플레이 디바이스(예컨대, LED(light emitting diode), OLED(organic light emitting diode), LCD(liquid crystal display), CRT(cathode ray tube display), IPS(in-place switching) 디스플레이, 터치스크린 등), 촉각 출력 디바이스, 프린터 및/또는 스피커에 의해 구현될 수 있다. 따라서, 도시된 예시의 인터페이스 회로(820)는 일반적으로 그래픽 드라이버 카드, 그래픽 드라이버 칩 및/또는 그래픽 드라이버 프로세서를 포함한다.
도시된 예시의 인터페이스 회로(820)는 또한 네트워크(826)를 통해 외부 머신(예컨대, 임의의 종류의 컴퓨팅 디바이스)과 데이터 교환을 용이하게 하는 전송기, 수신기, 트랜시버, 모뎀, 가정용 게이트웨이, 무선 액세스 포인트 및/또는 네트워크 인터페이스와 같은 통신 디바이스를 포함한다. 통신은, 예를 들어, 이더넷 연결, DSL(digital subscriber line) 연결, 전화선 연결, 동축 케이블 시스템, 위성 시스템, line-of-site 무선 시스템, 휴대 전화 시스템 등일 수 있다.
도시된 예시의 프로세서 플랫폼(800)은 또한 소프트웨어 및/또는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스(828)를 포함한다. 이러한 대용량 저장 디바이스(828)의 예시는 플로피 디스크 드라이브, 하드드라이브 디스크, CD 드라이브, 블루레이 디스크 드라이브, RAID(redundant array of independent disk) 시스템 및 DVD 드라이브를 포함한다.
도 4, 5 및/또는 6의 머신 실행 가능 명령어(832)는 대용량 저장 디바이스(828), 휘발성 메모리(814), 비휘발성 메모리(816) 및/또는 CD 또는 DVD와 같은 제거 가능한 비일시적 컴퓨터 판독 가능 저장 매체에 저장될 수 있다.
도 8의 예시적인 컴퓨터 판독 가능 명령어(832)와 같은 소프트웨어를 서드 파티(third party)에 배포하기 위한 예시적인 소프트웨어 배포 플랫폼(905)을 도시하는 블록도가 도 9에 도시된다. 예시적인 소프트웨어 배포 플랫폼(905)은 소프트웨어를 저장하고 다른 컴퓨팅 디바이스에 전송할 수 있는 임의의 컴퓨터 서버, 데이터 설비, 클라우드 서비스 등에 의해 구현될 수 있다. 서드 파티는 소프트웨어 배포 플랫폼을 소유 및/또는 운영하는 엔티티의 고객일 수 있다. 예를 들어, 소프트웨어 배포 플랫폼을 소유 및/또는 운영하는 엔티티는 도 8의 예시적인 컴퓨터 판독 가능 명령어와 같은 소프트웨어의 개발자, 판매자 및/또는 라이센스 제공자일 수 있다. 서드 파티는 사용 및/또는 재판매 및/또는 서브 라이센싱을 위해 소프트웨어를 구매 및/또는 라이센싱하는 소비자, 사용자, 소매업체, OEM 등일 수 있다. 도시된 예시에서, 소프트웨어 배포 플랫폼(905)은 하나 이상의 서버 및 하나 이상의 저장 디바이스를 포함한다. 저장 디바이스는 컴퓨터 판독 가능 명령어(832)를 저장하고, 이는 앞서 설명된 도 4 내지 6의 예시적인 컴퓨터 판독 가능 명령어에 대응할 수 있다. 하나 이상의 예시적인 소프트웨어 배포 플랫폼(905)의 서버는 네트워크(910)와 통신하며, 이는 인터넷 및/또는 도 1의 예시적인 네트워크(104) 중 어느 하나 이상에 대응할 수 있다. 일부 예시에서, 하나 이상의 서버는 상업적 거래의 일부로서 요청 파티에 소프트웨어를 전송하기 위한 요청에 응답한다. 소프트웨어의 배송, 판매 및/또는 라이센스에 대한 지불은 하나 이상의 소프트웨어 배포 플랫폼의 서버에 의해 및/또는 서드 파티 지불 엔티티를 통해 처리될 수 있다. 서버는 구매자 및/또는 라이센스 제공자가 소프트웨어 배포 플랫폼(905)으로부터 컴퓨터 판독 가능 명령어(832)를 다운로드할 수 있게 한다. 예를 들어, 도 4 내지 6의 예시적인 판독 가능 명령어에 대응할 수 있는 소프트웨어는 예시적인 프로세서 플랫폼(800)에 다운로드될 수 있고, 이는 컴퓨터 판독 가능 명령어(832)를 실행하여 이미지 프로세서(106)를 구현한다. 일부 예시에서, 하나 이상의 소프트웨어 배포 플랫폼(905)의 서버는 주기적으로 소프트웨어(예컨대, 도 8의 예시적인 컴퓨터 판독 가능 명령어(832))에 업데이트를 제공, 전송 및/또는 실행하여 개선, 패치, 업데이트 등을 보장하며, 이는 배포되고 최종 사용자 디바이스 소프트웨어에 적용된다.
전술한 내용으로부터, 초기 추측 없이 다중 카메라를 보정하는 예시적인 방법, 장치 및 제조 물품이 개시되었음을 알 수 있을 것이다. 개시된 방법, 장치 및 제조 물품은 평면 환경 및/또는 콜드 스타트 이용에 해결책을 제공함으로써 컴퓨팅 디바이스 사용의 효율성을 개선한다.
본 명세서에서 설명된 초기 추측 없는 다중 카메라 보정을 해결하는 방법 및 장치는 많은 상이한 방법에 사용될 수 있고, 많은 상이한 사용 사례에 통합될 수 있다. 예를 들어, 본 개시의 교시는 평면 환경 및 콜드 스타트 환경에서 많은 응용을 갖는다. 평면 환경은 다중 카메라에 의해 관찰되고 있는 대부분의 장면이 적어도 하나의 평면으로부터 구성된 상황이다. 평면 환경의 경우에서, 일부 다중 뷰 알고리즘은 이러한 비전 시스템에서 적합하게 사용되지 않는다. 콜드 스타트 환경은 센서가 고정되어 있지 않거나 또는 위치 파악을 위해 INS와 같은 보조 디바이스를 포함하지 않는 상황이다. 따라서, 콜드 스타트 시스템은 다중 카메라 보정에 사용될 수 있는 초기 추측이 없다. 따라서, 시스템은 다중 카메라 보정을 위한 초기 추측을 갖지 않는다.
본 명세서에서 설명된 초기 추측 없는 다중 카메라 보정을 해결하는 방법 및 장치는 비용이 적게 들고, INS와 같은 다중 카메라 보정에 대한 센서 기반 접근법으로 발생할 수 있는 열악한 실내 GPS 수신에 의해 발생하는 드리프트(drift)를 갖지 않는다.
본 명세서에서 설명된 초기 추측 없는 다중 카메라 보정을 해결하는 방법 및 장치는 시스템에 카메라 추가를 허용하고, 추가적인 광속 조정 방법보다 더 견고하고 안정적이다.
이러한 개시된 방법, 장치 및 제조 물품은 위치 및 방향을 자동으로 획득하여, 인력을 절약하고 훨씬 더 나은 정확도를 획득한다. 또한, 이 방법은 사용 중에 적용, 예를 들어, 게임 사이에 보정을 계산하는 기존 방법 대신에 게임이 방송되는 동안에 적용될 수 있다. 이는 또한 다수의 이벤트를 동시에 초기 추측 없이 방송하는 능력을 제공한다. 따라서 개시된 방법, 장치 및 제조 물품은 컴퓨터의 기능에 하나 이상의 개선(들)에 관한 것이다.
다중 카메라 보정을 수행하는 예시적인 방법, 장치, 시스템 및 제조 물품이 본 명세서에 개시된다. 이들의 추가적인 예시 및 조합은 다음을 포함한다.
예시 1은 카메라 보정을 수행하는 방법을 포함하며, 방법은 카메라 쌍에 대한 호모그래피 - 호모그래피는 카메라 쌍의 카메라의 식별된 초점 거리와 식별된 특징의 공통 이미지 평면 좌표 매치를 이용하여 생성됨 - 를 계산하는 단계, 호모그래피를 분석하여 상대 이동, 상대 회전 및 표면 법선을 식별하는 단계, 카메라의 카메라 중심에 대한 최소화 수학식을 푸는 단계, 및 카메라 위치 및 방향을 이용하여 카메라를 보정하는 단계를 포함한다.
예시 2는 예시 1의 방법을 포함하되, 방법은 나머지 카메라와 동일한 표면 법선을 갖지 않는 다른 카메라를 제거하는 단계를 더 포함한다.
예시 3은 예시 1의 방법을 포함하되, 방법은 제 1 카메라를 좌표계에 지점 (0, 0, 0)으로 설정하는 단계를 더 포함한다.
예시 4는 예시 1의 방법을 포함하되, 방법은 카메라의 이미지 결합 피드를 생성하여 몰입형 현실을 생성하는 단계를 더 포함한다.
예시 5는 예시 1의 방법을 포함하되, 방법은 쿼터니언을 활용하여 좌표계에 상대 회전 및 절대 회전을 표현하는 단계를 더 포함한다.
예시 6은 예시 5의 방법을 포함하되, 방법은 해밀터니언 경로에 의해 획득된 회전에 대한 초기 추측을 활용하여 쿼터니언의 부호 모호성을 극복하는 단계를 더 포함한다.
예시 7은 예시 1의 방법을 포함하되, 방법은 최적화 문제를 해결하여 상대 이동을 이용해 카메라 중심을 찾는 단계를 더 포함하고, 상대 이동은 전역 회전을 분리함으로써 계산된다.
예시 8은 카메라 쌍에 대한 호모그래피 - 호모그래피는 카메라 쌍의 카메라의 식별된 초점과 식별된 특징의 공통 이미지 평면 좌표 매치를 이용하여 생성됨 - 를 계산하는, 호모그래피 계산기, 호모그래피를 분석하여 상대 이동, 상대 회전 및 표면 법선을 식별하는, 상대 이동, 상대 회전, 표면 법선 분석기, 카메라의 카메라 중심에 대한 최소화 수학식을 푸는, 최소화 솔버 및 카메라 위치 및 방향을 이용하여 카메라를 보정하는, 위치 및 방향 계산기를 포함하는 장치를 포함한다.
예시 9는 예시 8의 장치를 포함하되, 위치 및 방향 계산기는, 나머지 카메라와 동일한 표면 법선을 갖지 않는 다른 카메라를 제거한다.
예시 10은 예시 8의 장치를 포함하되, 제 1 카메라를 좌표계에 지점 (0, 0, 0)으로 설정하는, 카메라 방향 보정기를 더 포함한다.
예시 11은 예시 8의 장치를 포함하되, 카메라의 이미지 결합 피드를 생성하여 몰입형 현실을 생성하는, 가상 이미지 생성기를 더 포함한다.
예시 12는 예시 8의 장치를 포함하되, 최소화 솔버는 쿼터니언을 활용하여 좌표계에 상대 회전 및 절대 회전을 표현한다.
예시 13은 예시 12의 장치를 포함하되, 최소화 솔버는 해밀터니언 경로에 의해 획득된 회전에 대한 초기 추측을 활용하여 쿼터니언의 부호 모호성을 극복한다.
예시 14는 예시 8의 장치를 포함하되, 최소화 솔버는 최적화 문제를 해결하여 상대 이동을 이용해 카메라 중심을 찾고, 상대 이동은 전역 회전을 분리함으로써 계산된다.
예시 15는 명령어를 포함하는 비일시적 컴퓨터 판독 가능 매체를 포함하되, 명령어는 실행되는 경우 머신으로 하여금 적어도 카메라 쌍에 대한 호모그래피 - 호모그래피는 카메라 쌍의 카메라의 식별된 초점 거리와 식별된 특징의 공통 이미지 평면 좌표 매치를 이용하여 생성됨 - 를 생성하고, 호모그래피를 분석하여 상대 이동, 상대 회전 및 표면 법선을 식별하며, 카메라의 카메라 중심에 대한 최소화 수학식을 풀고, 카메라 위치 및 방향을 이용하여 카메라를 보정하게 한다.
예시 16은 예시 15의 비일시적 컴퓨터 판독 가능 매체를 포함하되, 명령어는, 실행되는 경우 머신으로 하여금, 나머지 카메라와 동일한 표면 법선을 갖지 않는 다른 카메라를 제거하게 한다.
예시 17은 예시 15의 비일시적 컴퓨터 판독 가능 매체를 포함하되, 명령어는, 실행되는 경우 머신으로 하여금, 제 1 카메라를 좌표계에 지점 (0, 0, 0)으로 설정하게 한다.
예시 18은 예시 15의 비일시적 컴퓨터 판독 가능 매체를 포함하되, 명령어는, 실행되는 경우 머신으로 하여금, 카메라의 이미지 결합 피드를 생성하여 몰입형 현실을 생성하게 한다.
예시 19는 예시 15의 비일시적 컴퓨터 판독 가능 매체를 포함하되, 명령어는, 실행되는 경우 머신으로 하여금, 쿼터니언을 활용하여 좌표계에 상대 회전 및 절대 회전을 표현하게 한다.
예시 20은 예시 19의 비일시적 컴퓨터 판독 가능 매체를 포함하되, 명령어는, 실행되는 경우 머신으로 하여금, 해밀터니언 경로에 의해 획득된 회전에 대한 초기 추측을 활용하여 쿼터니언의 부호 모호성을 극복하게 한다.
예시 21은 예시 15의 비일시적 컴퓨터 판독 가능 매체를 포함하되, 명령어는, 실행되는 경우 머신으로 하여금, 최적화 문제를 해결하여 상대 이동을 이용해 카메라의 중심을 찾게 하고, 상대 이동은 전역 회전을 분리함으로써 계산된다.
비록 특정 예시적인 방법, 장치 및 제조 물품이 본 명세서에 개시되었지만, 본 특허의 포함 범위는 이에 제한되지 않는다. 반대로, 본 특허는 본 특허의 청구범위의 범위에 분명히 속하는 모든 방법, 장치 및 제조 물품을 포함한다.
이하 청구범위는 본 참조에 의해 본 상세한 설명에 통합되며, 각 청구범위는 그 자체로 본 개시의 별도의 실시예이다.

Claims (21)

  1. 카메라 보정을 수행하는 방법으로서,
    카메라 쌍에 대한 호모그래피(homography) - 상기 호모그래피는 상기 카메라 쌍의 카메라의 식별된 초점 거리와 식별된 특징의 공통 이미지 평면 좌표 매치를 이용하여 생성됨 - 를 계산하는 단계,
    상기 호모그래피를 분석(decompose)하여 상대 이동, 상대 회전 및 표면 법선을 식별하는 단계,
    상기 카메라의 카메라 중심에 대한 최소화 수학식을 푸는 단계, 및
    카메라 위치 및 방향을 이용하여 상기 카메라를 보정하는 단계를 포함하는,
    카메라 보정을 수행하는 방법.
  2. 제 1 항에 있어서,
    나머지 카메라와 동일한 표면 법선을 갖지 않는 다른 카메라를 제거하는 단계를 더 포함하는,
    카메라 보정을 수행하는 방법.
  3. 제 1 항에 있어서,
    제 1 카메라를 좌표계에 지점 (0, 0, 0)으로 설정하는 단계를 더 포함하는,
    카메라 보정을 수행하는 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 카메라의 이미지 결합 피드(feed)를 생성하여 몰입형 현실을 생성하는 단계를 더 포함하는,
    카메라 보정을 수행하는 방법.
  5. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    쿼터니언(quaternion)을 활용하여 좌표계에 상기 상대 회전 및 절대 회전을 표현하는 단계를 포함하는,
    카메라 보정을 수행하는 방법.
  6. 제 5 항에 있어서,
    해밀터니언(Hamiltonian) 경로에 의해 획득된 상기 회전에 대한 초기 추측을 활용하여 상기 쿼터니언의 부호 모호성을 극복하는 단계를 포함하는,
    카메라 보정을 수행하는 방법.
  7. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    최적화 문제를 해결하여 상대 이동을 이용해 상기 카메라 중심을 찾는 단계를 더 포함하되,
    상기 상대 이동은 전역 회전을 분리함으로써 계산되는,
    카메라 보정을 수행하는 방법.
  8. 장치로서,
    카메라 쌍에 대한 호모그래피 - 상기 호모그래피는 상기 카메라 쌍의 카메라의 식별된 초점과 식별된 특징의 공통 이미지 평면 좌표 매치를 이용하여 생성됨 - 를 계산하는, 호모그래피 계산기,
    상기 호모그래피를 분석하여 상대 이동, 상대 회전 및 표면 법선을 식별하는, 상대 이동, 상대 회전, 표면 법선 분석기,
    상기 카메라의 카메라 중심에 대한 최소화 수학식을 푸는, 최소화 솔버 및
    카메라 위치 및 방향을 이용하여 상기 카메라를 보정하는, 위치 및 방향 계산기를 포함하는,
    장치.
  9. 제 8 항에 있어서,
    상기 위치 및 방향 계산기는, 나머지 카메라와 동일한 표면 법선을 갖지 않는 다른 카메라를 제거하는,
    장치.
  10. 제 8 항에 있어서,
    제 1 카메라를 좌표계에 지점 (0, 0, 0)으로 설정하는, 카메라 방향 보정기를 더 포함하는,
    장치.
  11. 제 8 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 카메라의 이미지 결합 피드를 생성하여 몰입형 현실을 생성하는, 가상 이미지 생성기를 더 포함하는,
    장치.
  12. 제 8 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 최소화 솔버는, 쿼터니언을 활용하여 좌표계에 상기 상대 회전 및 절대 회전을 표현하는,
    장치.
  13. 제 12 항에 있어서,
    상기 최소화 솔버는, 해밀터니언 경로에 의해 획득된 상기 회전에 대한 초기 추측을 활용하여 상기 쿼터니언의 부호 모호성을 극복하는,
    장치.
  14. 제 8 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 최소화 솔버는, 최적화 문제를 해결하여 상대 이동을 이용해 상기 카메라 중심을 찾되,
    상기 상대 이동은 전역 회전을 분리함으로써 계산되는,
    장치.
  15. 명령어를 포함하는 컴퓨터 판독 가능 매체로서,
    상기 명령어는, 실행되는 경우 머신으로 하여금 적어도,
    카메라 쌍에 대한 호모그래피 - 상기 호모그래피는 상기 카메라 쌍의 카메라의 식별된 초점 거리와 식별된 특징의 공통 이미지 평면 좌표 매치를 이용하여 생성됨 - 를 생성하고,
    상기 호모그래피를 분석하여 상대 이동, 상대 회전 및 표면 법선을 식별하며,
    상기 카메라의 카메라 중심에 대한 최소화 수학식을 풀고,
    카메라 위치 및 방향을 이용하여 상기 카메라를 보정하게 하는,
    컴퓨터 판독 가능 매체.
  16. 제 15 항에 있어서,
    상기 명령어는, 실행되는 경우 상기 머신으로 하여금, 나머지 카메라와 동일한 표면 법선을 갖지 않는 다른 카메라를 제거하게 하는,
    컴퓨터 판독 가능 매체.
  17. 제 15 항에 있어서,
    상기 명령어는, 실행되는 경우 상기 머신으로 하여금, 제 1 카메라를 좌표계에 지점 (0, 0, 0)으로 설정하게 하는,
    컴퓨터 판독 가능 매체.
  18. 제 15 항 내지 제 17 항에 있어서,
    상기 명령어는, 실행되는 경우 상기 머신으로 하여금, 상기 카메라의 이미지 결합 피드를 생성하여 몰입형 현실을 생성하게 하는,
    컴퓨터 판독 가능 매체.
  19. 제 15 항 내지 제 17 항에 있어서,
    상기 명령어는, 실행되는 경우 상기 머신으로 하여금, 쿼터니언을 활용하여 좌표계에 상기 상대 회전 및 절대 회전을 표현하게 하는,
    컴퓨터 판독 가능 매체.
  20. 제 19 항에 있어서,
    상기 명령어는, 실행되는 경우 상기 머신으로 하여금, 해밀터니언 경로에 의해 획득된 상기 회전에 대한 초기 추측을 활용하여 상기 쿼터니언의 부호 모호성을 극복하게 하는,
    컴퓨터 판독 가능 매체.
  21. 제 15 항 내지 제 17 항 중 어느 한 항에 있어서,
    상기 명령어는, 실행되는 경우 상기 머신으로 하여금, 최적화 문제를 해결하여 상대 이동을 이용해 상기 카메라의 중심을 찾게 하되,
    상기 상대 이동은 전역 회전을 분리함으로써 계산되는,
    컴퓨터 판독 가능 매체.
KR1020210156919A 2020-12-22 2021-11-15 다중 카메라 보정을 수행하는 방법 및 장치 KR20220090398A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/131,700 US20210118182A1 (en) 2020-12-22 2020-12-22 Methods and apparatus to perform multiple-camera calibration
US17/131,700 2020-12-22

Publications (1)

Publication Number Publication Date
KR20220090398A true KR20220090398A (ko) 2022-06-29

Family

ID=75491362

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210156919A KR20220090398A (ko) 2020-12-22 2021-11-15 다중 카메라 보정을 수행하는 방법 및 장치

Country Status (4)

Country Link
US (1) US20210118182A1 (ko)
EP (1) EP4020394A1 (ko)
KR (1) KR20220090398A (ko)
CN (1) CN114663515A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11379683B2 (en) 2019-02-28 2022-07-05 Stats Llc System and method for generating trackable video frames from broadcast video
US11295473B2 (en) * 2019-12-18 2022-04-05 Intel Corporation Continuous local 3D reconstruction refinement in video
CN113436277A (zh) * 2021-07-15 2021-09-24 无锡先导智能装备股份有限公司 3d相机标定方法、装置及标定系统
US11924561B2 (en) 2022-07-18 2024-03-05 Nant Holdings, LLC Determining a camera control point for virtual production

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020127185A1 (en) * 2018-12-21 2020-06-25 Koninklijke Kpn N.V. Cloud-based camera calibration
EP3855397B1 (en) * 2020-01-24 2021-12-29 Axis AB Imaging system
CN112070831B (zh) * 2020-08-06 2022-09-06 天津大学 一种基于多平面联合位姿估计的主动相机重定位方法

Also Published As

Publication number Publication date
CN114663515A (zh) 2022-06-24
EP4020394A1 (en) 2022-06-29
US20210118182A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
US11386572B2 (en) Calibration system and method to align a 3D virtual scene and a 3D real world for a stereoscopic head-mounted display
KR20220090398A (ko) 다중 카메라 보정을 수행하는 방법 및 장치
US10586395B2 (en) Remote object detection and local tracking using visual odometry
JP6171079B1 (ja) 不整合検出システム、複合現実システム、プログラム及び不整合検出方法
WO2018119889A1 (zh) 三维场景定位方法和装置
KR20220009393A (ko) 이미지 기반 로컬화
US20170186219A1 (en) Method for 360-degree panoramic display, display module and mobile terminal
US11847796B2 (en) Calibrating cameras using human skeleton
US20140267397A1 (en) In situ creation of planar natural feature targets
JP2017021328A (ja) カメラの空間特性を決定する方法及びシステム
US11270443B2 (en) Resilient dynamic projection mapping system and methods
JP2018106661A (ja) 不整合検出システム、複合現実システム、プログラム及び不整合検出方法
US10516878B1 (en) Stereoscopic viewer
KR20150120866A (ko) Iid에서 디스플레이 오차를 보정하는 장치 및 방법
US20190088027A1 (en) Method for developing augmented reality experiences in low computer power systems and devices
US11210864B2 (en) Solution for generating virtual reality representation
JP6295296B2 (ja) 複合システム及びターゲットマーカ
CN114663516A (zh) 基于人类姿态校准多相机系统的方法和装置
US10366495B2 (en) Multi-spectrum segmentation for computer vision
US11758100B2 (en) Portable projection mapping device and projection mapping system
KR20220084842A (ko) 증강 현실 콘텐츠를 디스플레이하는 전자 장치 및 방법
WO2023088127A1 (zh) 室内导航方法、服务器、装置和终端
US10664948B2 (en) Method and apparatus for processing omni-directional image
US20230009413A1 (en) Analysis apparatus, communication system, non-transitory computer readable medium
KR102260754B1 (ko) 증강현실용 가이드 도구의 자세 추정을 위한 캘리브레이션 기구 및 이를 이용한 캘리브레이션 방법