KR101950658B1 - 구조형 광 깊이 맵들의 아웃라이어 검출 및 정정을 위한 방법들 및 장치들 - Google Patents

구조형 광 깊이 맵들의 아웃라이어 검출 및 정정을 위한 방법들 및 장치들 Download PDF

Info

Publication number
KR101950658B1
KR101950658B1 KR1020187017584A KR20187017584A KR101950658B1 KR 101950658 B1 KR101950658 B1 KR 101950658B1 KR 1020187017584 A KR1020187017584 A KR 1020187017584A KR 20187017584 A KR20187017584 A KR 20187017584A KR 101950658 B1 KR101950658 B1 KR 101950658B1
Authority
KR
South Korea
Prior art keywords
depth
depth value
value
values
segment
Prior art date
Application number
KR1020187017584A
Other languages
English (en)
Other versions
KR20180098260A (ko
Inventor
알브레히트 요하네스 린드너
칼린 미트코브 아타나소브
스티븐 마이클 베랄
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180098260A publication Critical patent/KR20180098260A/ko
Application granted granted Critical
Publication of KR101950658B1 publication Critical patent/KR101950658B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/521Depth or shape recovery from laser ranging, e.g. using interferometry; from the projection of structured light
    • G06K9/03
    • G06K9/38
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/001
    • G06T5/007
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/40Image enhancement or restoration using histogram techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • G06T5/92Dynamic range modification of images or parts thereof based on global image properties
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • G06T5/94Dynamic range modification of images or parts thereof based on local image properties, e.g. for local contrast enhancement
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/28Quantising the image, e.g. histogram thresholding for discrimination between background and foreground patterns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/98Detection or correction of errors, e.g. by rescanning the pattern or by human intervention; Evaluation of the quality of the acquired patterns
    • 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/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20004Adaptive image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20182Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Optics & Photonics (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

구조형 광 시스템에 의해 생성된 깊이 맵에서 에러들을 정정하기 위한 시스템들 및 방법들이 개시된다. 하나의 양태에서, 방법은 깊이 맵을 세그먼트들로 분할하는 단계 및 각 세그먼트에 대한 깊이 값들의 밀도 분포를 계산하는 단계를 포함한다. 방법은 깊이 값들의 범위의 밖에 있는 깊이 값들을 결정함으로써 에로 (또는 "아웃라이어") 값들을 검출하는 단계를 포함하며, 그 깊이 값들의 범위는 주어진 세그먼트에 대한 최고 밀도 깊이 값들을 나타낸다. 방법은 각 세그먼트에 대한 밀도 분포 값들에 기초하여 전체로서의 깊이 맵에서 에러 값들을 검출하는 단계를 포함한다.

Description

구조형 광 깊이 맵들의 아웃라이어 검출 및 정정을 위한 방법들 및 장치들
본 개시는 일반적으로 구조형 광 깊이 맵 불일치들 (inconsistencies) 을 검출 및 정정하기 위한 시스템들 및 방법들에 관한 것이다.
구조형 광 시스템들은 깊이 맵을 생성하기 위해 광 패턴들, 또는 공간 코드들을 송신 및 수신한다. 물체가 송신기 및 수신기로부터 더 멀리 떨어질수록, 수신된 투영은 수신기(들) 에서 그의 원래의 위치로부터 더 가까우며, 이는 출사 투영 및 입사 투영이 더 평행하기 때문이다. 역으로, 물체가 송신기 및 수신기에 더 가까울수록, 수신된 투영은 수신기(들) 에서 그의 원래의 위치로부터 더 멀다. 따라서, 수신된 및 송신된 코드워드 위치 사이의 차이는 장면 또는 물체의 깊이를 제공한다. 구조형 광 시스템들은 장면의 깊이 맵 또는 3차원 표현을 생성하기 위해 이들 상대 깊이들을 사용한다. 깊이 맵 추출은 카메라 품질 향상으로부터 컴퓨터 비전까지에 걸친 다수의 애플리케이션들에 중요하다.
장면에서의 반사 또는 투명 표면들은 도전들을 제시할 수 있다. 예를 들어, 반사들은 광이 수신기로부터 멀리 또는 그것의 광학으로 곧바로 반사되게 할 수 있다. 양자의 경우들에서, 구조형 광 시스템의 동적 범위는 초과될 수 있다. 투명 또는 반투명 표면들은 또한 장해들 뿐아니라, 송신된 코드워드들의 적당한 검출을 타협할 수 있는 이중 반사들 및 상호-반사들을 야기한다. 또한, 피부, 대리석, 왁스, 식물들 및 인간의 조직과 같은 반투명 물질들은 서브-표면 산란을 야기할 수도 있다. 이러한 콘텍스트에서, 깊이 맵의 정확한 생성을 제공하기 위해 깊이 맵에서의 아웃라이어 (outlier) 값들을 검출 및 정정할 필요가 존재한다.
본 개시의 샘플의 양태들의 개요는 다음과 같다. 편의를 위해, 본 개시의 하나 이상의 양태들은 "일부 양태들" 로서 간단히 여기서 지칭될 수도 있다.
여기에 개시되는 방법들 및 장치들 또는 디바이스들은 각각 수개의 양태들을 가지며, 이들 중 단일의 하나도 그것의 바람직한 속성들에 대해 유일하게 책임이 없다. 본 개시의 범위를 제한하지 않고, 예를 들어, 이하에 따라오는 청구범위에 의해 표현된 바와 같이, 그것의 더욱 현저한 특징들이 간략하게 이제 논의될 것이다.
하나의 양태에 따르면, 깊이 맵에서 에러들을 정정하기 위한 장치가 제공된다. 장치는 투영된 시야에서 복수의 코드워드들을 투영하도록 구성된 송신기를 포함할 수도 있다. 장치는 투영된 시야에서 표면으로부터 투영된 코드워드들의 반사를 수신하도록 구성된 수신기를 포함할 수도 있다. 장치는 투영된 코드워드들의 수신된 반사에 기초하여 깊이 맵을 생성하고, 깊이 맵을 복수의 세그먼트들로 분할하며, 세그먼트들 각각에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하고, (i) 세그먼트들의 하위 퀀타일 깊이 값의 최소값 및 (ii) 세그먼트들의 상위 퀀타일 깊이 값의 최대값에 기초하여 글로벌 깊이 범위를 생성하며, 깊이 맵에서 아웃라이어 깊이 값을 식별하고, 깊이 맵에서의 정보에 기초하여 아웃라이어 깊이 값을 정정하도록 구성된 에러 정정 회로를 포함할 수도 있다.
일부 실시형태들의 경우, 상위 퀀타일 깊이 값 및 하위 퀀타일 깊이 값은 (i) 히스토그램 퀀타일 계산 및 (ii) 평균 및 분산 계산 중 적어도 하나에 기초하여 결정되며, 그 계산들 각각은 각 세그먼트에서의 깊이 값들의 범위 및 깊이 값들의 범위의 인접한 서브세트에 기초하며, 그 인접한 서브세트는 세그먼트에서의 깊이 값들의 밀도를 나타낸다. 일부 실시형태들의 경우, 깊이 값들의 범위의 인접한 서브세트는 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 포함하며, 하위 퀀타일 깊이 값은 인접한 서브세트 내에서 최저 깊이 값이고, 상위 퀀타일 깊이 값은 인접한 서브세트 내에서 최고 깊이 값이다. 일부 실시형태들의 경우, 복수의 코드워드들을 투영하는 것은 코드마스크를 통해 광을 전파시키는 것을 포함하며, 코드마스크는 복수의 심볼들을 갖는다. 일부 실시형태들의 경우, 깊이 맵에서 아웃라이어 깊이 값을 식별하는 것은 글로벌 깊이 범위 밖에서 깊이 맵에서 깊이 값을 검출하는 것을 포함할 수도 있다. 일부 실시형태들의 경우, 복수의 세그먼트들은 깊이 맵의 중첩 영역들을 포함한다.
일부 실시형태들의 경우, 아웃라이어 깊이 값을 정정하는 것은, 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 것으로서, 그 복수의 깊이 값들은 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 것; 복수의 깊이 값들에 기초하여 제 1 깊이 값을 계산하는 것; 및 아웃라이어 깊이 값을 제 1 깊이 값으로 대체하는 것을 포함한다. 일부 실시형태들의 경우, 제 1 깊이 값은 복수의 깊이 값들의 평균이다. 일부 실시형태들의 경우, 아웃라이어 깊이 값을 정정하는 것은, 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 것으로서, 그 복수의 깊이 값들은 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 것; 이웃하는 깊이 값들의 수평 그래디언트 및 수직 그래디언트 중 적어도 하나를 계산하는 것; 수평 그래디언트 및 수직 그래디언트 중 적어도 하나에 기초하여 제 1 깊이 값을 계산하는 것; 및 아웃라이어 깊이 값을 제 1 깊이 값으로 대체하는 것을 포함한다. 일부 실시형태들에서, 복수의 세그먼트들에서의 각 세그먼트의 사이즈는 사용자 구성가능하다.
다른 양태에 따르면, 깊이 맵핑 시스템에 의해 동작가능한, 깊이 맵에서 에러들을 정정하기 위한 방법이 제공된다. 방법은, 송신기를 통해, 투영된 시야에서 복수의 코드워드들을 투영하는 단계를 더 포함할 수도 있다. 방법은, 수신기에서, 투영된 시야에서 표면으로부터 투영된 코드워드들의 반사를 수신하는 단계를 더 포함할 수도 있다. 방법은, 에러 정정 회로를 통해, 투영된 코드워드들의 수신된 반사에 기초하여 깊이 맵을 생성하는 단계를 더 포함할 수도 있다. 방법은, 에러 정정 회로를 통해, 깊이 맵을 복수의 세그먼트들로 분할하는 단계를 더 포함할 수도 있다. 방법은, 에러 정정 회로를 통해, 세그먼트들 각각에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하는 단계를 더 포함할 수도 있다. 방법은, 에러 정정 회로를 통해, (i) 세그먼트들의 하위 퀀타일 깊이 값의 최소값 및 (ii) 세그먼트들의 상위 퀀타일 깊이 값의 최대값에 기초하여 글로벌 깊이 범위를 생성하는 단계를 더 포함할 수도 있다. 방법은, 에러 정정 회로를 통해, 깊이 맵에서 아웃라이어 깊이 값을 식별하는 단계를 더 포함할 수도 있다. 방법은, 에러 정정 회로를 통해, 깊이 맵에서의 정보에 기초하여 아웃라이어 깊이 값을 정정하는 단계를 더 포함할 수도 있다.
일부 실시형태들의 경우, 방법은 (i) 히스토그램 퀀타일 계산 및 (ii) 평균 및 분산 계산 중 적어도 하나에 기초하여 상위 퀀타일 깊이 값 및 하위 퀀타일 깊이 값을 결정하는 단계를 포함할 수도 있으며, 그 계산들 각각은 각 세그먼트에서의 깊이 값들의 범위 및 깊이 값들의 범위의 인접한 서브세트에 기초하며, 그 인접한 서브세트는 세그먼트에서의 깊이 값들의 밀도를 나타낸다. 일부 실시형태들의 경우, 깊이 값들의 범위의 인접한 서브세트는 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 포함하며, 하위 퀀타일 깊이 값은 인접한 서브세트 내에서 최저 깊이 값이고, 상위 퀀타일 깊이 값은 인접한 서브세트 내에서 최고 깊이 값이다. 일부 실시형태들의 경우, 복수의 코드워드들을 투영하는 단계는 코드마스크를 통해 광을 전파시키는 단계를 포함하며, 코드마스크는 복수의 심볼들을 갖는다. 일부 실시형태들의 경우, 깊이 맵에서 아웃라이어 깊이 값을 식별하는 단계는 글로벌 깊이 범위 밖에서 깊이 맵에서 깊이 값을 검출하는 단계를 포함한다. 일부 실시형태들의 경우, 복수의 세그먼트들은 깊이 맵의 중첩 영역들을 포함한다.
일부 실시형태들의 경우, 아웃라이어 깊이 값을 정정하는 단계는, 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 단계로서, 그 복수의 깊이 값들은 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 단계; 복수의 깊이 값들에 기초하여 제 1 깊이 값을 계산하는 단계; 및 아웃라이어 깊이 값을 제 1 깊이 값으로 대체하는 단계를 포함한다. 일부 실시형태들의 경우, 제 1 깊이 값은 복수의 깊이 값들의 평균이다. 일부 실시형태들의 경우, 아웃라이어 깊이 값을 정정하는 단계는, 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 단계로서, 그 복수의 깊이 값들은 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 단계; 이웃하는 깊이 값들의 수평 그래디언트 및 수직 그래디언트 중 적어도 하나를 계산하는 단계; 수평 그래디언트 및 수직 그래디언트 중 적어도 하나에 기초하여 제 1 깊이 값을 계산하는 단계; 및 아웃라이어 깊이 값을 제 1 깊이 값으로 대체하는 단계를 포함할 수도 있다. 일부 실시형태들에서, 복수의 세그먼트들에서의 각 세그먼트의 사이즈는 사용자 구성가능하다.
다른 양태에 따르면, 깊이 맵에서의 에러들을 정정하기 위한 장치가 제공된다. 장치는 투영된 시야에서 복수의 코드워드들을 투영하는 수단을 포함할 수도 있다. 장치는 투영된 시야에서 표면으로부터 투영된 코드워드들의 반사를 수신하는 수단을 포함할 수도 있다. 장치는 투영된 코드워드들의 수신된 반사에 기초하여 깊이 맵을 생성하는 수단을 포함할 수도 있다. 장치는 깊이 맵을 복수의 세그먼트들로 분할하는 수단을 포함할 수도 있다. 장치는 세그먼트들 각각에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하는 수단을 포함할 수도 있다. 장치는 (i) 세그먼트들의 하위 퀀타일 깊이 값의 최소값 및 (ii) 세그먼트들의 상위 퀀타일 깊이 값의 최대값에 기초하여 글로벌 깊이 범위를 생성하는 수단을 포함할 수도 있다. 장치는 깊이 맵에서 아웃라이어 깊이 값을 식별하는 수단을 포함할 수도 있다. 장치는 깊이 맵에서의 정보에 기초하여 아웃라이어 깊이 값을 정정하는 수단을 포함할 수도 있다.
다른 양태에 따르면, 명령들을 포함하는 비일시적 컴퓨터 판독가능 매체가 제공되며, 그 명령들은 디바이스에 의해 시행될 때 디바이스로 하여금, 송신기를 통해, 투영된 시야에서 복수의 코드워드들을 투영하게 한다. 디바이스는 또한, 수신기에서, 투영된 시야에서 표면으로부터 투영된 코드워드들의 반사를 수신하도록 될 수도 있다. 디바이스는 또한, 에러 정정 시스템을 통해, 투영된 코드워드들의 수신된 반사에 기초하여 깊이 맵을 생성하도록 될 수도 있다. 디바이스는 또한, 에러 정정 시스템을 통해, 깊이 맵을 복수의 세그먼트들로 분할하도록 될 수도 있다. 디바이스는 또한, 에러 정정 시스템을 통해, 세그먼트들 각각에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하도록 될 수도 있다. 디바이스는 또한, 에러 정정 시스템을 통해, (i) 세그먼트들의 하위 퀀타일 깊이 값의 최소값 및 (ii) 세그먼트들의 상위 퀀타일 깊이 값의 최대값에 기초하여 글로벌 깊이 범위를 생성하도록 될 수도 있다. 디바이스는 또한, 에러 정정 시스템을 통해, 깊이 맵에서 아웃라이어 깊이 값을 식별하도록 될 수도 있다. 디바이스는 또한, 에러 정정 시스템을 통해, 깊이 맵에서의 정보에 기초하여 아웃라이어 깊이 값을 정정하도록 될 수도 있다.
여러 특징들, 특성 및 이점들이 유사한 참조 부호들이 명세서 전체에 걸쳐 대응적으로 식별하는 도면들과 결합하여 취해질 때 이하에 진술된 상세한 설명으로부터 명백해질 수도 있다.
도 1 은 기지의 패턴이 장면을 조명하고 3차원 정보를 생성할 깊이 정보를 획득하기 위해 사용되는 감지 시스템의 예를 도시한다.
도 2 는 에러들을 포함하는 예시의 깊이 맵을 도시한다.
도 3 은 합성 코드 마스크를 생성하고 및/또는 그러한 코드 마스크를 투영하도록 구성될 수도 있는 예시의 송신기 디바이스의 블록도를 도시한다.
도 4 는 합성 코드 마스크로부터 깊이 정보를 획득하도록 구성될 수도 있는 예시의 수신기 디바이스의 블록도를 도시한다.
도 5 는 여기에 개시된 에러 정정 방법들 중 하나 이상을 수행하도록 구성된 장치의 하나의 실시형태의 블록도를 도시한다.
도 6 은 각 세그먼트에 대해 깊이의 유효한 범위를 결정하기 위해 생성되는 히스토그램을 갖는, 세그먼트들로 분할되는 예시의 깊이 맵을 도시한다.
도 7 은 글로벌 최소 및 글로벌 최대 깊이 값의 결정을 갖는 예시의 깊이 맵, 및 아웃라이어 깊이 값들이 정정된 후 결과의 깊이 맵을 도시한다.
도 8 은 깊이 맵에서 아웃라이어 깊이 값들을 식별 및 정정하기 위한 방법의 예를 도시하는 플로우챠트이다.
도 9 는 깊이 맵에서 적어도 하나의 아웃라이어 깊이 값을 식별 및 정정하기 위한 장치의 예를 도시하는 블록도이다.
다음의 상세한 설명은 본 발명의 소정의 특정의 실시형태들로 지향된다. 그러나, 본 발명은 다수의 상이한 방법들로 구현될 수 있다. 여기의 양태들은 매우 다양한 형태들로 구현될 수도 있다는 것 및 여기에 개시되는 임의의 특정의 구조, 기능, 또는 양자 모두는 단순히 대표적인 것이라는 것이 분명해야 한다. 여기의 교시들에 기초하여, 당업자는 여기에 개시된 양태가 임의의 다른 양태들과 독립적으로 구현될 수도 있다는 것 및 이들 양태들의 2 이상이 여러 방식들로 결합될 수도 있다는 것을 인정해야 한다. 예를 들어, 여기에 진술된 임의의 수의 양태들을 사용하여 장치가 구현될 수도 있거나 방법이 실시될 수도 있다. 또, 여기에 진술된 양태들 중 하나 이상에 더하거나 그 하나 이상 이외의 다른 구조, 기능성, 또는 구조 및 기능성을 사용하여 그러한 장치가 구현될 수도 있거나 그러한 방법이 실시될 수도 있다.
여기에 기술된 시스템들 및 방법들은 능동 공간 감지 시스템을 호스팅하는 다양한 상이한 컴퓨팅 디바이스들상에서 구현될 수도 있다. 이들은 전용 이미징 시스템들, 이동 전화들, 태블릿들, 전용 카메라들, 웨어러블 컴퓨터들, 개인용 컴퓨터들, 포토 부스들 또는 키오스크들, 개인용 휴대정보단말들, 울트라 모바일 개인용 컴퓨터들, 및 모바일 인터넷 디바이스들을 포함한다. 그것들은 범용 또는 특수 목적 컴퓨팅 시스템 환경들 또는 구성들을 사용할 수도 있다. 본 발명와 함께 사용하기에 적합할 수도 있는 컴퓨팅 시스템들, 환경들, 및/또는 구성들의 예들은 개인용 컴퓨터들, 서버 컴퓨터들, 핸드 헬드 또는 랩톱 디바이스들, 마이크로프로세서 시스템들, 마이크로프로세서-기반 시스템들, 프로그램가능 소비자 일렉트로닉스, 네트워크 PC 들, 미니컴퓨터들, 메인프레임 컴퓨터들, 상기 시스템들 또는 디바이스들 중 임의의 것을 포함하는 분포된 컴퓨팅 환경들 등을 포함하지만 이들에 제한되지 않는다.
본 개시의 양태들에 따르면, 구조형 광 능동 감지 시스템들 (100) 은 깊이 맵을 생성하기 위해 공간 코드들을 송신 및 수신한다. 공간 코드들은 이진 심볼들과 같은 심볼들로 이루어질 수도 있다. 공간 코드들의 수가 증가함에 따라, 각 공간 코드에 대한 심볼들의 수가 증가하고, 심볼 당 대역폭이 증가하며, 각 심볼을 디스플레이하기 위해 요구되는 공간이 증가하고, 깊이 마스크의 해상도가 증가한다. 공간 코드 사이즈가 공간적으로 증가함에 따라, 깊이 마스크의 해상도는 감소한다. 따라서, 코드들을 각 프레임 내에서 더 자주 반복하는 것을 가능하게 함으로써 사용되는 고유 공간 코드들의 수를 감소시킬 필요가 존재한다.
송신기로부터 물체로의 코드들의 투영의 송신된 광선들 (rays) 은 송신기/수신기와 물체 사이의 거리가 증가함에 따라 송신된 광선들에 의해 조명되는 물체의 표면으로부터 반사되는 수신된 (인커밍) 코드들과 더 평행하다. 이에 따라, 물체로부터 반사되고 수신기 또는 수신기들에 의해 수신되는 코드들은 물체가 더 멀리 떨어질 때 (투영된 코드 이미지에서) 그들의 원래의 위치에 더 가깝다. 역으로, 물체가 송신기 및 수신기에 더 가까울수록, 수신된 코드들은 그들이 송신되었을 때 (투영된 코드 이미지에서) 그 코드들의 원래의 위치로부터 더 멀다. 수신된 및 송신된 코드워드 위치들 사이의 차이는 장면 또는 물체의 하나 이상의 깊이들을 결정하기 위해 사용될 수 있다. 구조형 광 능동 감지 시스템들 (100) 은 장면의 깊이 맵 또는 3차원 표현을 생성하기 위해 그러한 깊이 정보를 사용할 수도 있다. 장면 또는 물체의 깊이 맵 생성은 예를 들어 카메라 품질 향상, 컴퓨터 비전 등을 포함하는 다수의 애플리케이션들에 중요할 수도 있다.
상술된 바와 같이, 구조형 광 시스템들은 (때때로 설명의 편의를 위해 장면상으로 투영되는 것으로서 지칭되는) 장면 내의 적어도 하나의 물체 상으로 기지의 패턴 (예를 들어, 코드워드들) 을 투영하고, 깊이 맵을 획득하기 위해 수신된 이미지를 프로세싱한다. 불가피하게, 스페클 또는 다른 잡음 소스들에 기인하여, 수신된 패턴의 소정의 영역들은 디코딩되지 않는다. 이들 미코딩 (un-coded) 영역들은 어떠한 깊이 정보도 포함하지 않는 따라서 맵의 유용성을 저하시키는 깊이 맵에서의 홀들 (holes) 을 생성한다. 잡음은 또한 정확한 깊이 값을 제공하지 않을 수도 있는, 또는 우연하게 정확한 깊이 값을 제공할 수도 있는 디코딩된 패턴의 영역들을 생성할 수도 있다. 그러한 영역들은 어떠한 깊이 정보도 포함하지 않거나 부정확한 깊이 정보를 포함하는, 따라서 맵의 유용성을 저하시키는 깊이 맵에서의 홀들 또는 간섭을 생성한다.
일부 실시형태들에서, 개시된 시스템들 및 방법들은 이웃 코드들에 기초하여, 송신된 가장 가능성있는 코드를 결정하기를 시도함으로써 송신된 가장 가능성있는 코드워드 (때때로 참조의 편의를 위해 “코드” 로서 지칭됨) 를 결정할 수도 있다.
도 1 은 기지의 패턴이 장면을 조명하고 2차원 (“2D”) 이미지들 및/또는 정보로부터 3차원 (“3D”) 정보를 생성할 깊이 정보를 획득하기 위해 사용되는 능동 감지 시스템 (100) 의 예를 도시한다. 여기에 개시된 하나 이상의 양태들 및/또는 특징들은 그러한 예시의 능동 감지 시스템 (100) 내에서 구현될 수도 있다. 도 1 에 도시된 시스템은 송신기 (102) 및 수신기 (108) 를 포함한다. 송신기 (102) 는 물체 또는 장면 (106) 상에 코드워드들의 이미지 (104) 를 투영하기 위해 코드마스크 (410) 를 통해 광 필드를 투영한다. 여기서, 설명의 명확성을 위해, “장면” 은 사용되는 콘텍스트에 따라 장면 또는 물체 중 어느 것 또는 양자 모두를 지칭하기 위해 사용될 수도 있다. 예를 들어, 장면은 관심의 단일의 물체, 또는 관심의 복수의 물체들을 포함할 수도 있다. 수신기 (108) 는 반사된 이미지 (110) 및 그 안의 코드워드들을 캡쳐한다. 이러한 예는 코드마스크 (410) 의 섹션 (112) 이 장면 (106) 의 표면 (예를 들어, 투영된 섹션 (116)) 상으로 (섹션 (114) 으로서) 투영되는 방법을 도시한다. 투영된 섹션 (116) 은 그 후 캡쳐된 세그먼트 (118) 로서 수신기 (108) 에 의해 캡쳐될 수도 있다. 섹션 (112) 은 고유하게 식별될 수 있는 코드워드 (120) 로서 사용될 수도 있다. 따라서, 이러한 방식으로 장면 (106) 을 고유 코드워드들로 커버함으로써, 장면 (106) 의 섹션들/부분들은 반사된 코드워드들에 의해 식별될 수도 있고, 이러한 정보는 감지 디바이스로부터 장면 내의 물체들까지의 거리 (깊이) 를 감지하기 위해 사용될 수도 있다.
수신기 (108) 에 의해 캡쳐된 이미지로부터, 다수의 세그먼트들이 장면 (106) 에 대해 식별될 수도 있다. 각각의 캡쳐된 세그먼트 (118) 는 수신기 (108) 에서 고유하게 식별가능할 수도 있고, 다른 세그먼트들에 대한 그것의 로케이션이 투영된 이미지 (104) 의 기지의 패턴으로부터 확인될 수도 있다. 각각의 세그먼트/부분/윈도우로부터의 코드의 식별은 (예를 들어, 왜곡을 어드레싱하기 위해) 패턴 세그멘테이션을 및 지각된 세그먼트/부분/윈도우의 대응하는 코드(들) 로의 디코딩을 수반할 수도 있다. 또, 삼각측량이 배향 및/또는 깊이를 확인하기 위해 각각의 캡쳐된 세그먼트/부분/윈도우에 대해 적용될 수도 있다. 다수의 그러한 세그먼트들/부분들/윈도우들은 캡쳐된 이미지 패턴을 함께 스티치 (stitch) 하기 위해 결합될 수도 있다. 이러한 방식으로, 깊이 맵 (107) 이 장면 (106) 에 대해 생성될 수도 있다.
도 2 는 무효인 값들 (201) 을 포함하는 코드워드들 및 우연히 유효인 값들 (202) 을 포함하는 코드워드들을 포함하는 예시의 깊이 맵 (200) 을 도시한다. 상술된 바와 같이, 잡음은 무효인 값들 (201) 을 포함하는 코드워드들 및 우연히 유효인 값들 (202) 을 포함하는 코드워드들을 야기할 수 있는 검출된 코드들에서의 비트들을 변경하여 시각적으로 불쾌한 깊이 맵 및 덜 유용할 수도 있는 깊이 맵을 생성할 수 있다.
능동 깊이 감지를 위한 코드들
구조형 광 패턴들은 코드마스크 (410) 를 통해 광을 비춤으로써 장면 상으로 투영될 수도 있다. 코드마스크 (410) 를 통해 투영된 광은 하나 이상의 테셀레이팅된 코드마스크 (410) 프리미티브들 (primitives) 을 포함할 수도 있다. 각각의 코드마스크 (410) 프리미티브는 공간 코드들의 에레이를 포함할 수도 있다. 코드북 또는 데이터 구조는 코드들의 세트를 포함할 수도 있다. 공간 코드들, 코드마스크 (410), 및 코드마스크 (410) 프리미티브들은 기본 기능들을 사용하여 생성될 수도 있다. 기본 기능들의 주기성들은 고스트 (ghost) 이미지들을 제거하고 제조를 단순화하기 위한) 허미션 (Hermitian) 대칭성의 집성 패턴, (코드워드 당 최소 전력을 보장하는) 최소 듀티 사이클, (최적의 컨투어 (contour) 해상도 및 고 해상도를 위한 코드 패킹을 위한) 완벽한 윈도우 특성, 및 (물체 경계들에 대한 개선된 검출을 위한) 랜덤화된 시프팅을 위한 요건들을 충족시키도록 선택될 수도 있다. 수신기는 수신된 패턴들에서의 에러들을 복조, 디코딩 및 정정할 때 제약들에 따르도록 의도된 설계의 속성들 및/또는 코드북을 이용할 수도 있다.
공간 코드들의 사이즈 및 대응하는 해상도는 코드마스크 (410) 상의 공간 코드의 물리적 공간 범위에 대응한다. 사이즈는 각 코드워드를 나타내는 행렬에서의 행들 및 열들의 수에 대응할 수도 있다. 코드워드가 더 작을수록, 검출될 수 있는 물체는 더 작다. 예를 들어, 셔츠의 단추와 셔츠 패브릭 사이의 깊이 차이를 검출 및 결정하기 위해, 코드워드는 단추의 사이즈보다 더 크지 않아야 한다. 실시형태에서, 각각의 공간 코드는 4 개의 행들 및 4 개의 열들을 점유할 수도 있다. 실시형태에서, 코드들은 예를 들어 3x3, 4x4, 4x5, 5x5, 6x4, 또는 10x10 행들 및 열들을 점유하기 위해 더 많거나 더 적은 행들 및 열들 (행들 x 열들) 을 점유할 수도 있다.
공간 코드들의 공간 표현은 각각의 코드워드 엘리먼트가 코드마스크 (410) 상에 패터닝되고, 그 후 장면 상으로 투영되는 방법에 대응한다. 예를 들어, 각각의 코드워드 엘리먼트는 하나 이상의 도트들, 하나 이상의 세그먼트들, 하나 이상의 그리드들, 일부 다른 형상, 또는 이들의 일부 조합을 사용하여 표현될 수도 있다.
공간 코드들의 "듀티 사이클" 은 코드워드에서 비어서트된 (un-asserted) 비트들 또는 부분들 (예를 들어, "O 들") 의 수에 대한 어서트된 비트들 또는 부분들 (예를 들어, "1 들") 의 수의 비에 대응한다. 코드워드를 포함하는 코딩된 광 패턴이 장면상으로 투영될 때, "1" 의 값을 갖는 각각의 비트 또는 부분은 에너지 (예를 들어, "광 에너지") 를 가질 수도 있지만, "0" 의 값을 갖는 각각의 비트는 에너지가 없을 수도 있다. 코드워드가 쉽게 검출가능하기 위해서는, 코드워드는 충분한 에너지를 가져야 한다. 저 에너지 코드워드들은 검출하기가 더 어려울 수도 있고 잡음에 더 민감할 수도 있다. 예를 들어, 4x4 코드워드는 코드워드에서의 8 개 이상의 비트들이 "1" 인 경우 50% 이상의 듀티 사이클을 갖는다. 개개의 코드워드들에 대한 최소 (또는 최대) 듀티 사이클 제약들, 또는 코드북에서의 코드들의 세트에 대한 듀티 사이클 제약들, 예를 들어, 평균 듀티 사이클이 존재할 수도 있다.
코드들의 "컨투어 해상도" 또는 "완벽한 위도우" 특성은, 코드워드가 소정의 양만큼 시프트될 때, 예를 들어, 1-비트 회전 시에, 결과의 데이터는 다른 코드워드를 표현한다는 것을 나타낸다. 코드워드가 시프트되는 양은 시프트 양으로 지칭될 수도 있다. 높은 컨투어 해상도를 갖는 코드들은 구조형 광 깊이 감지 시스템이 상대적으로 작은 물체 경계들을 인식하고 상이한 물체들에 대한 인식 연속성을 제공하는 것을 가능하게 할 수도 있다. 행 디멘젼에서의 1 및 열 디멘젼에서의 2 의 시프트 양은 행 디멘젼을 따라 우측으로 1 비트 위치들, 및 열 디멘젼을 따라 아래로 2 비트 위치들 만큼의 시프트에 대응할 수도 있다. 코드워드들의 높은 컨투어 해상도 세트들은 한번에 1 행 또는 1 열씩 수신된 이미지상의 윈도우를 이동시키고, 각 윈도우 위치에서 깊이를 결정하는 것을 가능하게 한다. 이것은 수신된 이미지의 제 3 행 및 제 3 열에 센터링된 시작점에서 5x5 윈도우를 사용하고, 그 5x5 윈도우를 제 3 행으로부터 제 3 내지 마지막 행까지, 및 제 3 열로부터 제 3 내지 마지막 열까지 각각의 행, 열 로케이션으로 이동시켜 깊이의 결정을 가능하게 한다. 코드워드들이 중첩함에 따라, 윈도우는 결정될 물체 깊이들의 해상도에 기초하여 사이징될 수도 있다 (예를 들어, 셔츠의 단추).
코드들의 대칭성은 코드 마스크 또는 코드북 프리미티브가 비허미션 대칭 코드북 프리미티브들 또는 패턴들을 사용하는 것에 비해 수개의 이익들을 제공할 수도 있는 허미션 대칭성을 갖는 다는 것을 나타낼 수도 있다. 허미션 대칭성들을 갖는 패턴들은 X 및 Y (행 및 열) 축들 양자 모두를 따라 플립되거나 ("flipped") 대칭적이다.
코드마스크들 또는 코드마스크 (410) 프리미티브들의 앨리어싱 특징은 동일한 2 개의 코드워드들 사이의 거리에 대응한다. 광학 패턴이 테셀레이팅된 코드북 프리미티브를 포함할 때, 및 프리미티브에서의 각 코드북이 고유할 때, 앨리어싱 거리는 코드북 프리미티브의 사이즈에 기초할 수도 있다. 앨리어싱 거리는 따라서 코드북 프리미티브의 각 코드워드가 코드북 프리미티브의 각각의 다른 코드워드와 상이하여야 한다는 것, 및 코드북 프리미티브가 전체로서 고유하다는 것을 나타내는 고유성 기준을 표현할 수도 있다. 앨리어싱 거리는 하나 이상의 수신기 디바이스들에게 알려져 있고, 코드워드 복조 동안 앨리어싱을 방지하기 위해 사용될 수도 있다. 코드마스크 (410) 의 카디널리티 (cardinality) 는 코드북 프리미티브에서의 고유한 코드들의 수에 대응한다.
송신기 디바이스
도 3 은 합성 코드 마스크를 생성하고 및/또는 그러한 합성 코드 마스크를 투영하도록 구성될 수도 있는 송신기 디바이스의 예를 도시하는 블록도이다. 송신기 디바이스 (302) 는 메모리/저장 디바이스 (306) 에 커플링된 프로세싱 회로 (304) (또는 프로세서), 이미지 투영 디바이스 (308), 및/또는 유형의 매체 (309) 를 포함할 수도 있다.
제 1 예에서, 송신기 디바이스 (302) 는 유형의 매체 (309) 를 포함하도록 커플링될 수도 있다. 유형의 매체는 합성 코드 마스크 (314) 를 정의, 포함, 및/또는 저장할 수도 있다. 합성 코드 마스크는 캐리어 계층과 결합된 코드 계층을 포함할 수도 있다. 코드 계층은 복수의 심볼들에 의해 정의된 고유하게 식별가능한 공간적으로-코딩된 코드워드들을 포함할 수도 있다. 캐리어 계층은 코드 계층과는 독립적으로 확인가능하고 구별될 수도 있고 투영 시의 왜곡에 강건한 복수의 참조 물체들을 포함한다. 코드 계층 및 캐리어 계층 중 적어도 하나는 투영 전에 합성 포인트 확산 함수에 의해 사전-성형될 수도 있다.
제 2 예에서, 프로세싱 회로 (304) 는 코드 계층 생성기/선택기 (316), 캐리어 계층 생성기/선택기 (318), 합성 코드 마스크 생성기/선택기 (320) 및//또는 사전-성형 회로 (322) 를 포함할 수도 있다. 코드 계층 생성기/선택기 (316) 는 사전-저장된 코드 계층 (310) 을 선택할 수도 있고 및/또는 그러한 코드 계층을 생성할 수도 있다. 캐리어 계층 생성기/선택기 (318) 는 사전-저장된 캐리어 계층 (312) 을 선택할 수도 있고 및/또는 그러한 캐리어 계층을 생성할 수도 있다. 합성 코드 마스크 생성기/선택기는 사전-저장된 합성 코드 마스크 (314) 를 선택할 수도 있고 및/또는 합성 코드 마스크 (314) 를 생성하기 위해 코드 계층 (310) 및 캐리어 계층 (312) 을 결합할 수도 있다. 선택적으로, 프로세싱 회로 (304) 는 합성 코드 마스크가 투영되는 채널에서의 예상된 왜곡을 보상하기 위해 합성 코드 마스크 (314), 코드 계층 (310), 및/또는 캐리어 계층 (312) 을 사전-성형하는 사전-성형 회로를 포함할 수도 있다.
일부 구현들에서, 복수의 상이한 코드 계층들 및/또는 캐리어 계층들이 이용가능할 수도 있으며, 여기서 각각의 그러한 캐리어 또는 코드 계층들은 상이한 조건들을 위해 (예를 들어, 송신기 디바이스와 수신기 디바이스 사이의 상이한 거리들, 또는 상이한 구성들에서 물체들을 위해) 구성될 수도 있다. 예를 들어, 제 1 거리 또는 범위 내의 물체들의 경우, 제 2 거리 또는 범위에서의 물체들의 경우와는 상이한 조합의 코드 및 캐리어 계층들이 사용될 수도 있으며, 여기서 제 2 거리는 제 1 거리보다 크다. 다른 예에서, 송신기 디바이스와 수신기 디바이스의 상대적인 배향에 의존하여 상이한 조합의 코드 및 캐리어 계층들이 사용될 수도 있다.
이미지 투영 디바이스 (308) 는 관심의 물체 상으로 생성된/선택된 합성 코드 마스크를 투영하도록 작용할 수도 있다. 예를 들어, 레이저 또는 다른 광원이 (예를 들어, 투영 채널을 통해) 관심의 물체 상으로 합성 코드 마스크를 투영하기 위해 사용될 수도 있다. 하나의 예에서, 합성 코드 마스크 (314) 는 적외선 스펙트럼에서 투영될 수도 있으며, 따라서 그것은 나안에 가시적이지 않을 수도 있다. 대신에, 적외선 스펙트럼 범위에서의 수신기 센서는 그러한 투영된 합성 코드 마스크를 캡쳐하기 위해 사용될 수도 있다.
수신기 디바이스 동작
도 4 는 물체로부터 반사된 합성 코드 마스크를 수신하고 합성 코드 마스크로부터 깊이 정보를 결정하도록 구성되는 수신기 디바이스 (402) 의 예를 도시하는 블록도이다. 수신기 디바이스 (402) 는 메모리/저장 디바이스 (406) 및 수신기 센서 (408) (예를 들어, 이미지 캡쳐링 디바이스) 에 커플링된 프로세싱 회로 (404) 를 포함할 수도 있다. 일부 실시형태들에서, 수신기 센서 (408) 는 이미지 캡쳐 디바이스, 예를 들어, 카메라이다.
수신기 센서 (408) 는 물체의 표면상에 투영된 합성 코드 마스크의 적어도 일부를 획득하도록 구성될 수도 있다. 예를 들어, 수신기 센서는 타겟 물체의 표면상에 투영된 합성 코드 마스크의 적어도 일부의 이미지를 캡쳐할 수도 있다. 합성 코드 마스크는 (a) 복수의 심볼들에 의해 정의된 고유하게 식별가능한 공간적으로 코딩된 코드워드들의 코드 계층, 및 (b) 그 코드 계층과는 독립적으로 확인가능하고 구별되며 투영 시의 왜곡에 강건한 복수의 참조 물체들을 포함하는 캐리어 계층에 의해 정의될 수도 있다. 코드 계층 및 캐리어 계층 중 적어도 하나는 투영 전에 합성 포인트 확산 함수에 의해 사전-성형되었을 수도 있다. 하나의 예에서, 수신기 센서 (408) 는 적외선 스펙트럼에서 합성 코드 마스크를 캡쳐할 수도 있다.
도 4 를 여전히 참조하면, 일부 실시형태들에서, 코드 계층은 n1 바이 (by) n2 이진 심볼들을 포함할 수도 있으며, 여기서 n1 및 n2 는 2 보다 큰 정수들이다. 합성 코드 마스크에서, 각 심볼은 참조 물체들과는 구별된 2 개의 그레이-스케일 셰이드들 (shades) 중 하나에서의 라인 세그먼트일 수도 있다. 코드 계층의 심볼들은 적어도 하나의 디멘젼에서 스태거링될 수도 있다. 캐리어 계층 참조 물체들은 사이에 보호 간격을 갖는 복수의 동일하게 이격된 참조 스트라이프들을 포함할 수도 있다. 참조 스트라이프들 및 보호 간격은 상이한 폭들일 수도 있다. 보호 간격 폭에 대한 각각의 참조 스트라이프의 폭은 송신기 디바이스 및/또는 수신기 디바이스의 예상된 광학적 확산에 의해 결정될 수도 있다.
프로세싱 회로 (404) 는 참조 스트라이프 검출기 회로/모듈 (412), 왜곡 조정 회로/모듈 (414), 코드워드 식별기 회로/모듈 (416), 깊이 검출 회로/모듈 (418), 및/또는 깊이 맵 생성 회로/모듈 (420) 을 포함할 수도 있다.
참조 스트라이프 검출기 회로/모듈 (412) 은 합성 코드 마스크의 부분 내의 참조 스트라이프들을 검출하도록 구성될 수도 있다. 왜곡 조정 회로/모듈 (414) 은 참조 스트라이프들의 실제의 배향에 대한 참조 스트라이프들의 예상된 배향에 기초하여 합성 코드 마스크의 부분의 왜곡을 조정하도록 구성될 수도 있다. 코드워드 식별기 회로/모듈 (416) 은 합성 코드 마스크의 부분 내에 정의된 윈도우로부터 코드워드를 획득하도록 구성될 수도 있다. 깊이 검출 회로/모듈 (418) 은 (a) 합성 코드 마스크의 단일의 투영, 및 (b) 기지의 참조 코드 마스크에 대한 윈도우의 변위에 기초하여 윈도우에 대응하는 타겟 물체의 표면 부분에 대한 깊이 정보를 획득하도록 구성될 수도 있다.
깊이 맵 생성 회로/모듈 (420) 은 미왜곡 합성 코드 마스크의 부분 내에서 상이한 중첩 윈도우들로서 검출된 복수의 코드워드들에 기초하여 물체에 대한 깊이 맵을 어셈블링하도록 구성될 수도 있다.
하나의 예에서, 코드 계층 및 캐리어 계층 중 적어도 하나의 사전-성형은 합성 코드 마스크의 투영 동안 전력 효율을 증가시켜서, 미성형 합성 코드 마스크와 비교하여 수신기 센서에 의해 더 많은 전력이 감지되도록 한다.
하나의 예에서, 사용된 합성 포인트 확산 함수는 (a) 합성 코드 마스크가 투영되는 예상된 채널 조건들, (b) 합성 코드 마스크가 투영되는 표면들의 특성들, 및/또는 (c) 투영된 합성 코드 마스크를 수신하는 수신기 센서의 감도 중 적어도 하나에 기초하여 복수의 포인트 확산 함수들로부터 선택될 수도 있다. 다른 예에서, 합성 포인트 확산 함수는 (a) 합성 코드 마스크를 투영하는 투영기에 대한 제 1 채널 응답; 및/또는 (b) 합성 코드 마스크를 투영하는 투영기로부터 합성 코드 마스크를 수신하는 수신기 센서까지의 경로에 대한 제 2 채널 응답 중 적어도 하나에 기초하여 복수의 포인트 확산 함수들로부터 선택될 수도 있다.
에러 검출 디바이스
도 5 는 여기에 개시된 에러 정정 방법들 중 하나 이상을 수행하도록 구성된 장치의 하나의 실시형태를 도시하는 블록도이다. 예시의 깊이 맵핑 디바이스 (500) 는 광 방출기 (502), 수광 엘리먼트 (504), 프로세서 (506), 및 메모리 (508) 를 포함한다. 광 방출기 (502), 수광 엘리먼트 (504), 프로세서 (506), 및 메모리 (508) 는 버스 (510) 를 통해 동작적으로 연결될 수도 있다.
메모리 (508) 는 여기서 논의된 방법들 중 하나 이상의 함수들을 수행하도록 프로세서 (506) 를 구성하는 명령들을 저장할 수도 있다. 예를 들어, 메모리 (508) 에 저장된 명령들은 타겟 물체를 조명하기 위해 코드워드들로서 구조형 광을 인코딩하는 광을 방출하기 위해 광 방출기 (502) 를 제어하도록 프로세서 (506) 를 구성할 수도 있다. 메모리 (508) 에 저장된 명령들은 또한 프로세서 (506) 로 하여금 타겟 물체로부터 반사되는 광을 수신하고 그 반사된 광에 인코딩된 데이터를 생성하기 위해 수광 엘리먼트 (504) 를 제어하게 할 수도 있다.
도 6 은 깊이 맵에서의 에러들이 검출될 수도 있는 방법을 도시한다. 에러 정정 이전의 예시의 깊이 맵 (200) 이 도시된다. 무효인 값들 (201) 을 포함하는 코드워드들은 예를 들어 깊이 맵 (200) 의 가장 우측의 에지에서 어둡고, 셰이딩된 영역들로서 보여질 수 있다. 우연히 유효인 값들 (202) 을 포함하는 코드워드들은 깊이 맵에서 오프-컬러 (off-color) 스폿들 또는 영역들의 산란들, 종종 주변 영역들과는 뚜렸하게 상이한 컬러 또는 셰이드로서 보여질 수 있다.
여기에 기술된 에러 정정 시스템들 및 방법들은 무효인 코드가 수신되는 경우 또는 우연히 유효인 코드가 수신되는 경우 에러를 검출할 수도 있다. 에러의 정정은 아래에 기술된 방법들 중 임의의 것에 기초하여 유효인 코드워드를 결정함으로써 수행될 수도 있다. 하나의 예시의 실시형태에서, 에러 정정 시스템은 깊이 맵 (200) 을 복수의 세그먼트들 (예를 들어, 601a, 602a, 603a, 및 604a) 로 분할 수도 있다. 복수의 세그먼트들은 각 세그먼트에 대해 사이즈에서 서로 상이할 수도 있거나, 세그먼트들은 사이즈 균일성을 채용할 수도 있다. 세그먼트들의 사이즈는 사용자 구성가능하거나, 투영된 이미지 (104) 및 그 안의 코드마스크 (410) 의 사이즈에 의존할 수도 있다. 복수의 세그먼트들에서의 각 세그먼트의 사이즈에 영향을 줄 수도 있는 다른 변수들은 코드마스크 (410) 에서의 각각의 고유한 코드워드 (120) 의 사이즈, 코드마스크 (410) 에서의 고유한 코드워드들 (120) 의 수, 깊이 맵 (200) 의 해상도, 투영된 이미지 (104) 의 사이즈, 반사된 이미지 (110) 의 사이즈 등이다. 하나의 예에서, 깊이 맵은 투영된 이미지 (104) 의 사이즈에 기초하여 다수의 세그먼트들로 분할될 수도 있으며, 그 세그먼트들은 복수의 코어스 (coarse), 중첩하는 영역들이다. 이러한 예는 그 다수의 세그먼트들이 임의의 중첩 특징들을 갖지 않을 수도 있고, 엄격하게 인접하거나, 중첩하는 및 인접한 특징들의 조합이도록 분할될 수도 있기 때문에 제한하는 것으로서 간주되지 않아야 한다.
도 6 을 여전히 참조하면, 에러 정정 시스템은 각 세그먼트에서의 코드워드들의 수를 결정하고, 그들의 대응하는 깊이 값에 따라 간격들에서 그 코드워드들의 수를 카테고리화할 수도 있다. 에러 정정 시스템은 또한 각 세그먼트에 대한 깊이 값들의 최고 밀도를 나타내는 간격들의 범위를 결정할 수도 있다. 이것은 히스토그램 퀀타일들 (quantiles), 평균 및 분산, 밀도 분포, 또는 2 개의 경계들을 추론하는 임의의 다른 적절한 방법을 사용하여 달성될 수 있다. 하나의 예에서, 프로세서 (506) 는 세그먼트 (601a) 의 수광 엘리먼트 (504) 에 의해 수신된 코드워드들을 분석하고 그 세그먼트에 대한 깊이 값들의 범위를 결정할 수도 있다. 예를 들어, 세그먼트 (601a) 에 대한 깊이 값들의 밀도 분포를 계산함에 있어서, 프로세서 (506) 는 복수의 간격들 - 또는 세그먼트 (601a) 에서의 깊이 값들에 의해 표현된 값들의 범위 - 을 결정하고, 그 후 세그먼트 (601a) 에 포함된 모든 깊이 값들에 대해, 다수의 깊이 값들이 각 간격으로 나뉘는 방법을 결정할 수도 있다. 이것은 세그먼트 (601a) 에 대해 개발된 히스토그램 (601) 으로서 도 6 에 도시된다. 세그먼트 (601a) 에 대한 깊이 값들의 밀도 분포를 나타내는 히스토그램 (601) 은 x-축 및 y-축을 포함한다. x-축은 특정의 세그먼트에서 발견된 깊이 값들의 복수의 간격들을 나타낼 수도 있는 반면, y-축은 각 간격과 연관된 깊이 값들의 수, 또는 다시 말해서 그 특정의 세그먼트에 대한 깊이 값들의 분포의 밀도를 나타낼 수도 있다.
히스토그램 (601) 을 참조하면, 최대 밀도의 깊이 값들 (601d) 는 x-축 상에서 대략 315 및 335 의 간격 값들 사이에서 발생한다. x-축 및 y-축 상에 제공된 값들은 예시의 스케일을 나타내고 제한하는 것으로서 간주되지 않아야 한다. 유사하게, 히스토그램 (602) 은 x-축 상에서 대략 310 및 335 의 간격 값들 사이에서 발생하는 최대 밀도의 깊이 값들 (602d) 을 보여준다. 히스토그램 (603) 은 x-축 상에서 대략 310 및 340 의 간격 값들 사이에서 발생하는 최대 밀도의 깊이 값들 (603d) 을 보여주고, 히스토그램 (604) 은 x-축 상에서 대략 340 및 355 의 간격 값들 사이에서 발생하는 최대 밀도의 깊이 값들 (604d) 을 보여준다. 이리하여, 그 히스토그램들은 각 세그먼트에 대해 프로세서 (506) 에 의해 포뮬레이팅된 데이터의 예시의 설명을 제공한다. 주어진 세그먼트의 깊이 값들은 주어진 세그먼트의 통계적 분석을 적용할 때 변화되지 않은 채로 유지된다. 그러나, 하나의 예시의 실시형태에서, 세그먼트에서의 값들은 고정되거나 구성가능한 가중 함수에 의해 가중될 수도 있다. 예를 들어, 통계적 분석를 제공할 목적으로, 깊이 값들은 주어진 세그먼트에서의 그들의 로케이션, 깊이 맵 (200) 에서의 그들의 로케이션에 의존하여, 또는 사용자 구성 가중 함수에 따라 상이할 수도 있다.
세그먼트 (601a) 를 참조하면, 일단 프로세서 (506) 가 세그먼트 (601a) 의 깊이 값들을 조직하고 최고 밀도의 간격들을 결정했다면, 프로세서는 최소 간격 (601b) 및 최대 간격 (601c) 을 컴퓨팅할 수도 있다. 여전히 세그먼트 (601a) 를 예로서 사용하면, 최소 간격 (601b) 은 315 의 깊이 값이도록 결정될 수도 있고, 최대 간격 (601c) 은 335 의 깊이 값이도록 결정될 수도 있다. 세그먼트 (602a) 를 참조하면, 일단 프로세서 (506) 가 세그먼트 (602a) 의 깊이 값들을 조직하고 최고 밀도의 간격들을 결정했다면, 프로세서는 최소 간격 (602b) 및 최대 간격 (602c) 을 컴퓨팅할 수도 있다. 여전히 세그먼트 (602a) 를 예로서 사용하면, 최소 간격 (602b) 은 310 의 깊이 값이도록 결정될 수도 있고, 최대 간격 (602c) 은 335 의 깊이 값이도록 결정될 수도 있다. 세그먼트 (603a) 를 참조하면, 일단 프로세서 (506) 가 세그먼트 (603a) 의 깊이 값들을 조직하고 최고 밀도의 간격들을 결정했다면, 프로세서는 최소 간격 (603b) 및 최대 간격 (603c) 을 컴퓨팅할 수도 있다. 여전히 세그먼트 (603a) 를 예로서 사용하면, 최소 간격 (603b) 은 310 의 깊이 값이도록 결정될 수도 있고, 최대 간격 (603c) 은 340 의 깊이 값이도록 결정될 수도 있다. 세그먼트 (601a) 를 참조하면, 일단 프로세서 (506) 가 세그먼트 (601a) 의 깊이 값들을 조직하고 최고 밀도의 간격들을 결정했다면, 프로세서는 최소 간격 (601b) 및 최대 간격 (601c) 을 컴퓨팅할 수도 있다. 여전히 세그먼트 (601a) 를 예로서 사용하면, 최소 간격 (601b) 은 340 의 깊이 값이도록 결정될 수도 있고, 최대 간격 (601c) 은 355 의 깊이 값이도록 결정될 수도 있다.
히스토그램 (601) 을 예로서 사용하면, 최소 간격 (601b) 및 최대 간격 (601c) 을 결정하는 것은 사용자 구성가능한 특징일 수도 있다. 예를 들어, 사용자는 고정되거나 구성가능한 퀀타일까지 깊이 값들 (601d) 의 범위를 좁혀, 주어진 세그먼트에서의 깊이 값들의 소정 퍼센티지를 포함하는 값들에 최소 간격 (601b) 및 최대 간격 (601c) 을 배치하는 제약을 구현할 수도 있다. 예를 들어, 고정된 퀀타일은 주어진 세그먼트의 깊이 값들의 90% 이상을 포함하는 간격 값들로 최소 간격 (601b) 및 최대 간격 (601c) 을 제한할 수도 있다. 즉, 나머지 깊이 값들의 아웃라이어 10% 를 포함하는 간격들은 최소 간격 (601b) 과 최대 간격 (601c) 사이의 깊이 범위에 포함되지 않을 것이다. 다른 예에서, 사용자는 유사한 방식으로 깊이 값들의 범위를 넓힐 수도 있거나, 각 세그먼트에 대해 제한 값들을 수동으로 입력할 수도 있다. 이러한 방식으로, 사용자는 하나의 최소 간격 (601b) 제한 및 하나의 최대 간격 (601c) 제한을 입력할 수도 있거나, 사용자는 세그먼트 (601a) 에 대한 복수의 최소 간격 제한들 및 최대 간격 제한들을 입력할 수도 있다.
여전히 예시의 세그먼트 (601a) 를 참조하면, 프로세서 (506) 는, 깊이 값들 (601d) 의 범위 밖에 있는 세그먼트 (601a) 의 영역들 내의 깊이 값들을, 이웃하는 코드워드가 그 값들의 범위 내에 있는 경우 이웃하는 코드워드의 깊이 값까지 변화시킴으로써, 최소 간격 (601b) 과 최대 간격 (601c) 내의 깊이 값들 (601d) 의 범위까지 세그먼트 (601a) 의 깊이 값들을 제한할 수도 있다. 예를 들어, 세그먼트 (601a) 는 프로세서 (506) 에 의해 결정된 깊이 값들 (601d) 의 범위 밖의 깊이 값들을 포함할 수도 있다. 이들 값들은 무효인 값들 (201) 또는 우연히 유효인 값들 (202) 를 포함할 수도 있다. 세그먼트 (601a) 에서의 깊이 값이 최소 간격 (601b) 및 최대 간격 (601c) 에 의해 제한된 깊이 값들 (601d) 의 범위 밖에 있도록 결정되는 경우, 프로세서 (506) 는 이러한 값이 무효라고 결정할 수도 있다. 프로세서 (506) 는 무효인 값에 이웃하는 깊이 값들을 고려해 보고 그 이웃하는 값들이 깊이 값들 (601d) 의 범위 내에 있는지 여부를 결정할 수도 있다. 이웃하는 깊이 값들이 깊이 값들 (601d) 의 범위 내에 있는 것으로 결정되는 경우, 프로세서 (506) 는 이웃하는 깊이 값들의 평균을 결정하고 그 평균된 값을 무효인 깊이 값에 할당하여, 그것을 대체할 수도 있다. 다른 예에서, 깊이 값들 (601d) 의 범위 밖에 있는 세그먼트 (601a) 의 깊이 값들은 사용자에 의해 특정의 값으로 수동으로 변경될 수도 있다.
도 7 은 정정된 깊이 맵 (700) 을 생성하기 위해 세그먼트들 각각에 대해 결정된 간격 값들을 사용하여 전체 깊이 맵 (200) 의 글로벌 에러 정정의 방법을 도시한다. 바람직한 실시형태에서, 글로벌 에러 정정의 방법이 상술된 바와 같이 세그먼트 레벨에서 깊이 값들을 정정하지 않고 깊이 맵 (200) 에 적용될 수도 있다. 도 7 은 글로벌 에러 정정 전의 예시의 깊이 맵 (200) 뿐아니라, 그 예시의 깊이 맵 (200) 으로부터 취해진 2 개의 별개의 세그먼트들로부터의 2 개의 예시의 히스토그램들 (703 및 704) 을 포함한다. 제 1 히스토그램 (703) 은 주어진 세그먼트에 대한 깊이 값들의 밀도 분포를 나타낸다. 제 1 히스토그램 (703) 의 예에서, 2 개의 영역들이 깊이 값들 (703d) 의 최고 밀도를 갖는 것으로 도시된다. 제 1 영역은 대략 310 에서 320 까지 깊이 값들의 최고 밀도를 갖고, 제 2 영역은 대략 325 에서 340 까지 깊이 값들의 최고 밀도를 갖는다. 이러한 예에서, 제 1 히스토그램 (703) 과 연관된 세그먼트는 깊이 맵 (200) 의 모든 다른 세그먼트들의 최저 깊이 값 간격 (703e) 을 포함하는 것으로 결정된다.
제 2 히스토그램 (704) 은 주어진 세그먼트에 대한 깊이 값들의 밀도 분포를 나타낸다. 제 2 히스토그램 (704) 의 예에서, 2 개의 영역들이 깊이 값들 (704d) 의 최고 밀도를 갖는 것으로 도시된다. 제 1 영역은 대략 340 에서 350 까지 깊이 값들의 최고 밀도를 갖고, 제 2 영역은 대략 350 에서 355 까지 깊이 값들의 최고 밀도를 갖는다. 이러한 예에서, 제 2 히스토그램 (704) 과 연관된 세그먼트는 깊이 맵 (200) 의 모든 다른 세그먼트들의 최고 깊이 값 간격 (704e) 을 포함하는 것으로 결정된다.
간격 값들 (703e 및 704e) 을 사용하는 글로벌 에러 정정은 깊이 맵 (200) 에서의 아웃라이어 깊이 값들을 정정하기 위해 사용될 수도 있다. 하나의 예에서, 프로세서 (506) 는 상술된 바와 같이 깊이 맵 (200) 을 복수의 세그먼트들로 분할하고, 각각의 세그먼트에 대해 최소 및 최대 간격 및 깊이 값들의 범위를 결정할 수도 있다. 프로세서 (506) 는 그 후 모든 세그먼트들의 최소 및 최대 간격들을 비교하고, 복수의 세그먼트들에서 발견된 최저 깊이 값 간격 (703e) 및 복수의 세그먼트들에서 발견된 최고 깊이 값 간격 (704e) 을 결정할 수도 있다. 프로세서는 그 후 최저 깊이 값 간격 (703e) 및 최고 깊이 값 간격 (704e) 사이에 있는 깊이 값들의 범위를, 이러한 범위 밖에 있는 깊이 맵 (200) 에서의 무효인 깊이 값들을 로케이팅하기 위해 유효인 깊이 범위로서, 사용할 수도 있다.
깊이 맵 (200) 에서의 무효 및 아웃라이어 깊이 값들은 다양한 기법들 중 임의의 기법을 사용하여 정정될 수도 있다. 프로세서 (506) 는 무효인 깊이 값을 유효인 이웃 깊이 값으로 변경할 수도 있다. 프로세서 (506) 는 무효인 깊이 값을 둘러싸는 깊이 값들의 유효성을 결정할 수도 있다. 둘러싸는 깊이 값들의 유효성의 결정 시에, 프로세서는 유효인 이웃 깊이 값들의 내삽에 기초하여 무효인 깊이 값을 새로운 값으로 대체함으로써 무효인 깊이 값을 정정할 수도 있다. 내삽의 방법들은 그 둘러싸는 깊이 값들을 평균하는 것, 패턴을 결정하기 위해 패턴 인식 소프트웨어를 사용하는 것 및 패턴을 유지하기 위해 무효인 깊이 값을 정정하는 것, 또는 내삽의 임의의 다른 방법을 포함할 수도 있다. 예를 들어, 일부 실시형태들에서, 정정될 각각의 아웃라이어 깊이 값에 대해, 세그먼트 또는 전체 깊이 맵 (200) 내의 N 개의 (예를 들어, 10 개의) 가장 가까운 유효인 깊이 값들이 결정될 수도 있고, N 개의 깊이 값들의 (예를 들어, 거리에 의해) 가중된 평균이 각각의 아웃라이어에 대한 새로운 깊이 값으로서 컴퓨팅될 수도 있다. 예를 들어, 만일 (d0,..., d9) 가 아웃라이어 깊이 값 (P) 에 대해 10 개의 가장 가까운 유효인 깊이 값들의 값들이고, (D0,..., D9) 가 (거리에 의한 오름 차순으로) 이들 깊이 값들로부터 아웃라이어 깊이 값 (P) 까지의 거리들이고,
Figure 112018060768976-pct00001
이면, 가중 평균 (w) 은,
Figure 112018060768976-pct00002
이다.
가중 평균은 아웃라이어 깊이 값 (P) 을 대체하기 위해 사용될 수도 있다. 하나의 실시형태에서, 아웃라이어 깊이 값을 대체하기 위해, 8 개의 가장 가까운 이웃들 (d0,..., d7) 이 사용될 수도 있다. 예를 들어, 그 8 개의 가장 가까운 이웃 깊이 값들은 2 개의 수평 이웃들, 2 개의 수직 이웃들, 및 4 개의 코너 이웃들을 포함할 수도 있다. N 은 깊이 맵에서의 깊이 값의 로케이션에 의존하는 동적인 수일 수도 있다. 예를 들어, 깊이 맵의 코너에서의 깊이 값은 깊이 맵의 중앙에서의 깊이 값보다 더 작은 N 값을 가질 것이다. 다른 예에서, N 값은 깊이 맵의 코너에서의 아웃라이어 깊이 값에 대해 동일하게 유지될 수도 있으며, 그 경우에 이웃 깊이 값들은 아웃라이어 깊이 값에 바로 인접하지 않는 깊이 값들을 포함할 수도 있다. N 은 또한 사용자 구성가능한 수일 수도 있고, 아웃라이어 깊이 값에 가장 가까운 그 8 개의 깊이 값들보다 더 많거나 더 적은 깊이 값들을 포함하도록 구성될 수도 있다.
다른 예로서, 일부 실시형태들에서, 그래디언트 필 (fill) 이 아웃라이어 깊이 값들을 정정하기 위해 사용될 수도 있다. 예를 들어, 프로세서 (506) 는 아웃라이어 깊이 값을 둘러싸는 유효인 깊이 값들의 영역을 고려할 수도 있고, 상승하거나 하강하는 깊이 값들의 트렌드를 나타내는 방향 값을 그 유효인 깊이 값들에 할당할 수도 있다. 이러한 트렌드에 기초하여, 프로세서 (506) 는 아웃라이어 깊이 값을 대체하기 위해 깊이 값을 추정하도록 구성될 수도 있다. 일부 실시형태들에서, 기법에서의 저주파수 깊이/디스패리티 필이 사용될 수도 있다. 예를 들어, 유효한 데이터를 사용하여 평면 d(u,v) = au + bv + c 를 피팅하는 기법이 사용될 수도 있으며, 여기서 (u,v) 는 깊이 값의 좌표들이다. 이것은 아웃라이어 깊이 값 (u*,v*) 을, 그것의 깊이 값을 au* + bv* + c 로 설정함으로써, 정정한다. 일부 실시형태들에서 평면 이외의 다른 형상들이 화소들을 대체하기 위한 모델로서 사용될 수도 있다. 화소들을 정정하기 위한 다른 방법들이 다른 실시형태들에서 사용될 수도 있다.
도 8 은 깊이 맵 (107) 에서 아웃라이어 깊이 값들을 검출 및 정정하는 프로세스 (800) 의 예를 도시하는 플로우챠트이다. 블록 (802) 에서, 프로세스 (800) 는 송신기로부터 투영된 시야에서 복수의 코드워드들을 투영한다. 일부 구현들에서, 블록 (802) 의 기능성은 도 1 에 도시된 송신기 (102) 또는 도 3 에 도시된 송신기 디바이스 (302) 에 의해 수행될 수도 있다. 블록 (804) 에서, 프로세스 (800) 는 시야에서 표면으로부터 투영된 코드워드들의 반사를 수신한다. 일부 구현들에서, 블록 (804) 의 기능성은 도 1 에 도시된 수신기 (108) 또는 도 4 에 도시된 수신기 디바이스 (402) 에 의해 수행될 수도 있다. 블록 (806) 에서, 프로세스 (800) 는 투영된 코드워드들의 수신된 반사에 기초하여 깊이 맵을 생성한다. 일부 구현들에서, 블록 (806) 의 기능성은 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 블록 (808) 에서, 프로세스 (800) 는 깊이 맵을 복수의 세그먼트들로 분할한다. 일부 구현들에서, 블록 (808) 의 기능성은 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 블록 (810) 에서, 프로세스 (800) 는 세그먼트들 각각에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정한다. 일부 구현들에서, 블록 (810) 의 기능성은 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 블록 (812) 에서, 프로세스 (800) 는 (i) 세그먼트들의 하위 퀀타일 깊이 값의 최소값 및 (ii) 세그먼트들의 상위 퀀타일 깊이 값의 최대값에 기초하여 글로벌 깊이 범위를 생성한다. 일부 구현들에서, 블록 (812) 의 기능성은 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 블록 (814) 에서, 프로세스 (800) 는 깊이 맵에서 아웃라이어 깊이 값을 식별한다. 일부 구현들에서, 블록 (814) 의 기능성은 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 블록 (816) 에서, 프로세스 (800) 는 아웃라이어 깊이 값을 정정한다. 일부 구현들에서, 블록 (816) 의 기능성은 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다.
도 9 는 깊이 맵 (107) 에서 아웃라이어 깊이 값들을 검출 및 정정하기 위한 장치 (900) 의 예를 도시하는 블록도이다. 장치 (900) 는 투영된 시야에서 복수의 코드워드들을 투영하는 컴포넌트 (902) 를 포함할 수도 있다. 일부 구현들에서, 투영하는 컴포넌트 (902) 는 도 1 에 도시된 송신기 (102) 또는 도 3 에 도시된 송신기 디바이스 (302) 에 의해 수행될 수도 있다. 장치 (900) 는 투영된 시야에서 표면으로부터 투영된 코드워드들의 반사를 수신하는 컴포넌트 (904) 를 포함할 수도 있다. 일부 구현들에서, 수신하는 컴포넌트 (904) 는 도 1 에 도시된 수신기 (108) 또는 도 4 에 도시된 수신기 디바이스 (402) 일 수도 있다. 장치 (900) 는 투영된 코드워드들의 수신된 반사에 기초하여 깊이 맵을 생성하는 컴포넌트 (906) 를 포함할 수도 있다. 일부 구현들에서, 생성하는 컴포넌트 (906) 는 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 장치 (900) 는 깊이 맵을 복수의 세그먼트들로 분할하는 컴포넌트 (908) 를 포함할 수도 있다. 일부 구현들에서, 분할하는 컴포넌트 (908) 는 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 장치 (900) 는 세그먼트들 각각에서 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하는 컴포넌트 (910) 를 포함할 수도 있다. 일부 구현들에서, 결정하는 컴포넌트 (910) 는 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 장치 (900) 는 (i) 세그먼트들의 하위 퀀타일 깊이 값들의 최소값 및 (ii) 세그먼트들의 상위 퀀타일 깊이 값들의 최대값에 기초하여 글로벌 깊이 범위를 생성하는 컴포넌트 (912) 를 포함할 수도 있다. 일부 구현들에서, 생성하는 컴포넌트 (912) 는 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 장치 (900) 는 깊이 맵에서 아웃라이어 깊이 값을 식별하는 컴포넌트 (914) 를 포함할 수도 있다. 일부 구현들에서, 식별하는 컴포넌트 (914) 는 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다. 장치 (900) 는 깊이 맵에서의 정보에 기초하여 아웃라이어 깊이 값을 정정하는 컴포넌트 (916) 를 포함할 수도 있다. 일부 구현들에서, 정정하는 컴포넌트 (916) 는 도 4 에 도시된 프로세싱 회로 (404) 또는 도 5 의 깊이 맵핑 디바이스 (500) 에 의해 수행될 수도 있다.
도면들에서 도시된 컴포넌트들, 단계들, 특징들 및/또는 기능들은 단일의 컴포넌트, 단계, 특징 또는 기능으로 재배열 및/또는 결합되거나 수개의 컴포넌트들, 단계들, 또는 기능들로 구현될 수도 있다. 추가의 엘리먼트들, 컴포넌트들, 단계들, 및/또는 기능들이 또한 여기에 개시된 신규의 특징들로부터 일탈하지 않고 추가될 수도 있다. 도면들에서 도시된 장치들, 디바이스들, 및/또는 컴포넌트들은 도면들에 기술된 방법들, 특징들, 또는 단계들 중 하나 이상을 수행하도록 구성될 수도 있다. 여기에 기술된 신규한 알고리즘들은 또한 소프트웨어로 효율적으로 구현되고 및/또는 하드웨어로 구현될 수도 있다.
또한, 실시형태들은 플로우챠트, 흐름도, 구조도, 또는 블록도로서 묘사되는 프로세스로서 기술될 수도 있다. 플로우챠트가 순차적인 프로세스로서 동작들을 기술할 수도 있지만, 다수의 동작들은 병행하여 또는 동시적으로 수행될 수 있다. 또, 동작들의 순서는 재배열될 수도 있다. 프로세스는 그것의 동작들이 완료될 때 종료된다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응하는 경우, 그것의 종료는 호출 함수 또는 메인 함수에 대한 그 함수의 리턴에 대응한다.
또한, 저장 매체는 정보를 저장하기 위한 리드 온리 메모리 (ROM), 랜덤 액세스 메모리 (RAM), 자기 디스크 저장 매체들, 광학 저장 매체들, 플래시 메모리 디바이스들 및/또는 다른 머신 판독가능 매체들, 프로세서 판독가능 매체들, 및/또는 컴퓨터 판독가능 매체들을 포함하는 데이터를 저장하기 위한 하나 이상의 디바이스들을 나타낼 수도 있다. 용어들 "머신 판독가능 매체", "컴퓨터 판독가능 매체", 및/또는 "프로세서 판독가능 매체" 는 휴대용 또는 고정형 저장 디바이스들, 광학 저장 디바이스들, 및 명령(들) 및/또는 데이터를 저장, 보유 또는 반송할 수 있는 여러 다른 매체들과 같은 비일시적 매체들을 포함하지만 이들에 제한되지 않는다. 따라서, 여기에 기술된 여러 방법들은 "머신 판독가능 매체", "컴퓨터 판독가능 매체", 및/또는 "프로세서 판독가능 매체" 에 저장되고 하나 이상의 프로세서들, 머신들 및/또는 디바이스들에 의해 실행될 수도 있는 명령들 및/또는 데이터에 의해 전체적으로 또는 부분적으로 구현될 수도 있다.
더욱이, 실시형태들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 또는 이들의 임의의 조합에 의해 구현될 수도 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드로 구현되는 경우, 필요한 태스크들을 수행하는 프로그램 코드 또는 코드 세그먼트들은 저장 매체 또는 다른 스토리지(들) 과 같은 머신 판독가능 매체에 저장될 수도 있다. 프로세서는 필요한 태스크들을 수행할 수도 있다. 코드 세그먼트는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령들, 데이터 구조들, 또는 프로그램 스테이트먼트들의 임의의 조합을 나타낼 수도 있다. 코드 세그먼트는 정보, 데이터, 인수들, 파라미터들, 또는 메모리 내용들을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 인수들, 파라미터들, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적합한 수단을 통해 전달, 포워딩, 또는 송신될 수도 있다.
여기에 개시된 예들과 관련하여 기술된 여러 예시적인 로직컬 블록들, 모듈들, 회로들, 엘리먼트들, 및/또는 컴포넌트들은 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 반도체 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 컴포넌트, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 여기에 기술된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안적으로, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 컴포넌트들의 조합, 예를 들어, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합한 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수도 있다.
여기에 개시된 예들과 연관하여 기술된 방법들 또는 알고리즘들은 프로세싱 유닛, 프로그래밍 명령들, 또는 다른 지령들의 형태로, 하드웨어로 직접, 프로세서에 의해 실행가능한 소프트웨어 모듈로, 또는 이들 둘의 조합으로 구현될 수도 있고, 단일의 디바이스에 포함되거나 다수의 디바이스들에 걸쳐 분포될 수도 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 착탈가능 디스크, CD-ROM, 또는 본 기술분에서 알려진 임의의 다른 형태의 저장 매체에 상주할 수도 있다. 저장 매체는 프로세서가 그 저장 매체로부터 정보를 판독하고, 그 저장 매체로 정보를 기입할 수 있도록 프로세서에 커플링될 수도 있다. 대안적으로, 저장 매체는 프로세서에 통합될 수도 있다.
본 기술에서 통상의 기술자는 여기에 개시된 실시형태들과 관련하여 기술된 여러 예시적인 로직컬 블록들, 모듈들, 회로들, 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들 양자의 조합으로서 구현될 수도 있다는 것을 인정할 것이다. 하드웨어 및 소프트웨어의 이러한 교환가능성을 명확하게 설명하기 위해, 여러 예시적인 컴포넌트들, 블록들, 모듈들, 회로들, 및 단계들은 일반적으로 그들의 기능성의 면에서 상술되었다. 그러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정의 애플리케이션 및 전체 시스템에 부과된 설계 제약들에 의존한다.
여기에 기술된 본 발명의 여러 특징들은 본 발명으로부터 일탈하지 않고 상이한 시스템들에서 구현될 수 있다. 상술된 실시형태들은 단순히 예시들일 뿐이고 본 발명을 제한하는 것으로서 해석되지 않아야 한다. 실시형태들의 설명은 예시적인 것이고 청구범위의 범위를 제한하는 것으로 의도되지 않는다. 이와 같이, 본 교시들은 다른 타입들의 장치들에 쉽게 적용될 수 있고, 다수의 대안들, 변경들, 및 변형들이 당업자들에게 명백할 것이다.

Claims (39)

  1. 장치로서,
    시야에서 복수의 코드워드들을 투영하도록 구성된 송신기;
    상기 시야에서의 표면으로부터의 투영된 상기 코드워드들 각각의 반사를 수신하도록 구성된 수신기; 및
    프로세서를 포함하고,
    상기 프로세서는,
    수신된 반사들에 기초하여 깊이 맵을 생성하는 것으로서, 각각의 반사는 대응하는 깊이 값을 갖는, 상기 깊이 맵을 생성하고;
    상기 깊이 맵의 복수의 세그먼트들을 결정하는 것으로서, 각각의 세그먼트는 다수의 상기 반사들을 포함하는, 상기 복수의 세그먼트들을 결정하며;
    각각의 세그먼트에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하고,
    각각의 세그먼트에서의 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값에 기초하여 상기 깊이 맵에 대한 글로벌 깊이 범위를 생성하도록
    구성된, 장치.
  2. 제 1 항에 있어서,
    상기 상위 퀀타일 깊이 값 및 상기 하위 퀀타일 깊이 값은 (i) 히스토그램 퀀타일 계산 및 (ii) 평균 및 분산 계산 중 적어도 하나에 기초하여 결정되며,
    계산들 각각은 각 세그먼트에서의 깊이 값들의 범위 및 깊이 값들의 상기 범위의 인접한 서브세트에 기초하며,
    상기 인접한 서브세트는 상기 세그먼트에서의 깊이 값들의 밀도를 나타내는, 장치.
  3. 제 2 항에 있어서,
    상기 깊이 값들의 상기 범위의 인접한 서브세트는 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값을 포함하며,
    상기 하위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최저 깊이 값이고, 상기 상위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최고 깊이 값인, 장치.
  4. 제 1 항에 있어서,
    상기 송신기는 코드마스크를 통해 광을 전파시키는 것을 통해 상기 복수의 코드워드들을 투영하며,
    상기 코드마스크는 복수의 심볼들을 갖는, 장치.
  5. 제 1 항에 있어서,
    상기 프로세서는 상기 글로벌 깊이 범위 밖에서 상기 깊이 맵에서의 깊이 값을 검출하는 것을 통해 상기 글로벌 깊이 범위 밖에 있는 주어진 깊이 값이 상기 깊이 맵에 존재하는지 여부를 결정하는, 장치
  6. 제 1 항에 있어서,
    상기 복수의 세그먼트들은 상기 깊이 맵의 중첩 영역들을 포함하는, 장치.
  7. 제 1 항에 있어서,
    상기 복수의 세그먼트들에서의 각 세그먼트의 사이즈는 사용자 구성가능한, 장치.
  8. 제 1 항에 있어서,
    상기 프로세서는 또한 상기 글로벌 깊이 범위 밖에 있는 주어진 깊이 값이 상기 깊이 맵에 존재하는지 여부를 결정하도록 구성되는, 장치.
  9. 제 8 항에 있어서,
    상기 프로세서는 또한,
    상기 깊이 맵에서 아웃라이어 깊이 값을 식별하고;
    상기 깊이 맵에서의 정보에 기초하여 상기 아웃라이어 깊이 값을 정정하도록 구성되는, 장치.
  10. 제 9 항에 있어서,
    상기 프로세서는,
    상기 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 것으로서, 상기 복수의 깊이 값들은 상기 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 것;
    상기 복수의 깊이 값들에 기초하여 제 1 깊이 값을 계산하는 것; 및
    상기 아웃라이어 깊이 값을 상기 제 1 깊이 값으로 대체하는 것
    을 통해 상기 아웃라이어 깊이 값을 정정하는, 장치.
  11. 제 10 항에 있어서,
    상기 제 1 깊이 값은 상기 복수의 깊이 값들의 평균인, 장치.
  12. 제 9 항에 있어서,
    상기 프로세서는,
    상기 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 것으로서, 상기 복수의 깊이 값들은 상기 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 것;
    상기 이웃하는 깊이 값들의 수평 그래디언트 및 수직 그래디언트 중 적어도 하나를 계산하는 것;
    상기 수평 그래디언트 및 상기 수직 그래디언트 중 적어도 하나에 기초하여 제 1 깊이 값을 계산하는 것; 및
    상기 아웃라이어 깊이 값을 상기 제 1 깊이 값으로 대체하는 것
    을 통해 상기 아웃라이어 깊이 값을 정정하는, 장치.
  13. 제 1 항에 있어서,
    상기 글로벌 깊이 범위는 상기 세그먼트들의 최저 퀀타일 깊이 값에 기초한 최소값 및 상기 세그먼트들의 상기 상위 퀀타일 깊이 값에 기초한 최대값을 갖는, 장치.
  14. 방법으로서,
    송신기를 통해, 시야에서 복수의 코드워드들을 투영하는 단계;
    수신기에서, 상기 시야에서의 표면으로부터의 투영된 상기 코드워드들 각각의 반사를 수신하는 단계;
    프로세서를 통해, 수신된 반사들에 기초하여 깊이 맵을 생성하는 단계로서, 각각의 반사는 대응하는 깊이 값을 갖는, 상기 깊이 맵을 생성하는 단계;
    상기 프로세서를 통해, 상기 깊이 맵의 복수의 세그먼트들을 결정하는 단계로서, 각각의 세그먼트는 다수의 상기 반사들을 포함하는, 상기 복수의 세그먼트들을 결정하는 단계;
    상기 프로세서를 통해, 각각의 세그먼트에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하는 단계; 및
    상기 프로세서를 통해, 각각의 세그먼트에서의 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값에 기초하여 상기 깊이 맵에 대한 글로벌 깊이 범위를 생성하는 단계를 포함하는, 방법.
  15. 제 14 항에 있어서,
    상기 상위 퀀타일 깊이 값 및 상기 하위 퀀타일 깊이 값은 (i) 히스토그램 퀀타일 계산 및 (ii) 평균 및 분산 계산 중 적어도 하나에 기초하여 결정되고,
    계산들 각각은 각 세그먼트에서의 깊이 값들의 범위 및 깊이 값들의 상기 범위의 인접한 서브세트에 기초하며,
    상기 인접한 서브세트는 상기 세그먼트에서의 깊이 값들의 밀도를 나타내는, 방법.
  16. 제 15 항에 있어서,
    상기 깊이 값들의 범위의 인접한 서브세트는 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값을 포함하며,
    상기 하위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최저 깊이 값이고, 상기 상위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최고 깊이 값인, 방법.
  17. 제 14 항에 있어서,
    상기 복수의 코드워드들을 투영하는 단계는 코드마스크를 통해 광을 전파시키는 단계를 포함하며,
    상기 코드마스크는 복수의 심볼들을 갖는, 방법.
  18. 제 14 항에 있어서,
    상기 복수의 세그먼트들은 상기 깊이 맵의 중첩 영역들을 포함하는, 방법.
  19. 제 14 항에 있어서,
    상기 복수의 세그먼트들에서의 각 세그먼트의 사이즈는 사용자 구성가능한, 방법.
  20. 제 14 항에 있어서,
    상기 프로세서를 통해, 상기 글로벌 깊이 범위 밖에 있는 주어진 깊이 값이 상기 깊이 맵에 존재하는지 여부를 결정하는 단계를 더 포함하는, 방법.
  21. 제 20 항에 있어서,
    상기 글로벌 깊이 범위 밖에 있는 주어진 깊이 값이 상기 깊이 맵에 존재하는지 여부를 결정하는 단계는 상기 글로벌 깊이 범위 밖에서 상기 깊이 맵에서의 깊이 값을 검출하는 단계를 포함하는, 방법.
  22. 제 20 항에 있어서,
    상기 프로세서를 통해,
    상기 깊이 맵에서 아웃라이어 깊이 값을 식별하는 단계; 및
    상기 깊이 맵에서의 정보에 기초하여 상기 아웃라이어 깊이 값을 정정하는 단계를 더 포함하는, 방법.
  23. 제 22 항에 있어서,
    상기 아웃라이어 깊이 값을 정정하는 단계는,
    상기 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 단계로서, 상기 복수의 깊이 값들은 상기 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 단계;
    상기 복수의 깊이 값들에 기초하여 제 1 깊이 값을 계산하는 단계; 및
    상기 아웃라이어 깊이 값을 상기 제 1 깊이 값으로 대체하는 단계를 포함하는, 방법.
  24. 제 23 항에 있어서,
    상기 제 1 깊이 값은 상기 복수의 깊이 값들의 평균인, 방법.
  25. 제 22 항에 있어서,
    상기 아웃라이어 깊이 값을 정정하는 단계는,
    상기 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 단계로서, 상기 복수의 깊이 값들은 상기 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 단계;
    상기 이웃하는 깊이 값들의 수평 그래디언트 및 수직 그래디언트 중 적어도 하나를 계산하는 단계;
    상기 수평 그래디언트 및 상기 수직 그래디언트 중 상기 적어도 하나에 기초하여 제 1 깊이 값을 계산하는 단계; 및
    상기 아웃라이어 깊이 값을 상기 제 1 깊이 값으로 대체하는 단계를 포함하는, 방법.
  26. 제 14 항에 있어서,
    상기 글로벌 깊이 범위는 상기 세그먼트들의 최저 퀀타일 깊이 값에 기초한 최소값 및 상기 세그먼트들의 상기 상위 퀀타일 깊이 값에 기초한 최대값을 갖는, 방법.
  27. 장치로서,
    시야에서 복수의 코드워드들을 투영하는 수단;
    상기 시야에서의 표면으로부터의 투영된 상기 코드워드들 각각의 반사를 수신하는 수단;
    수신된 반사들에 기초하여 깊이 맵을 생성하는 수단으로서, 각각의 반사는 대응하는 깊이 값을 갖는, 상기 깊이 맵을 생성하는 수단;
    상기 깊이 맵의 복수의 세그먼트들을 결정하는 수단으로서, 각각의 세그먼트는 다수의 상기 반사들을 포함하는, 상기 복수의 세그먼트들을 결정하는 수단;
    각각의 세그먼트에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하는 수단; 및
    각각의 세그먼트에서의 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값에 기초하여 상기 깊이 맵에 대한 글로벌 깊이 범위를 생성하는 수단을 포함하는, 장치.
  28. 제 27 항에 있어서,
    상기 상위 퀀타일 깊이 값 및 상기 하위 퀀타일 깊이 값은 (i) 히스토그램 퀀타일 계산 및 (ii) 평균 및 분산 계산 중 적어도 하나에 기초하여 결정되고,
    계산들 각각은 각 세그먼트에서의 깊이 값들의 범위 및 깊이 값들의 상기 범위의 인접한 서브세트에 기초하며,
    상기 인접한 서브세트는 상기 세그먼트에서의 깊이 값들의 밀도를 나타내는, 장치.
  29. 제 28 항에 있어서,
    상기 깊이 값들의 범위의 인접한 서브세트는 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값을 포함하며,
    상기 하위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최저 깊이 값이고, 상기 상위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최고 깊이 값인, 장치.
  30. 제 27 항에 있어서,
    상기 복수의 코드워드들을 투영하는 수단은 코드마스크를 통해 광을 전파시키는 수단을 포함하며,
    상기 코드마스크는 복수의 심볼들을 갖는, 장치.
  31. 제 27 항에 있어서,
    상기 글로벌 깊이 범위 밖에 있는 주어진 깊이 값이 상기 깊이 맵에 존재하는지 여부를 결정하는 수단을 더 포함하는, 장치.
  32. 제 31 항에 있어서,
    상기 글로벌 깊이 범위 밖에 있는 주어진 깊이 값이 상기 깊이 맵에 존재하는지 여부를 결정하는 수단은 상기 글로벌 깊이 범위 밖에서 상기 깊이 맵에서의 깊이 값을 검출하는 수단을 포함하는, 장치.
  33. 제 31 항에 있어서,
    상기 깊이 맵에서 아웃라이어 깊이 값을 식별하는 수단; 및
    상기 깊이 맵에서의 정보에 기초하여 상기 아웃라이어 깊이 값을 정정하는 수단을 더 포함하는, 장치.
  34. 제 33 항에 있어서,
    상기 아웃라이어 깊이 값을 정정하는 수단은,
    상기 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 수단으로서, 상기 복수의 깊이 값들은 상기 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 수단;
    상기 복수의 깊이 값들에 기초하여 제 1 깊이 값을 계산하는 수단; 및
    상기 아웃라이어 깊이 값을 상기 제 1 깊이 값으로 대체하는 수단을 포함하는, 장치.
  35. 제 33 항에 있어서,
    상기 아웃라이어 깊이 값을 정정하는 수단은,
    상기 아웃라이어 깊이 값에 이웃하는 복수의 깊이 값들을 결정하는 수단으로서, 상기 복수의 깊이 값들은 상기 글로벌 깊이 범위 내에 있는, 상기 복수의 깊이 값들을 결정하는 수단;
    상기 이웃하는 깊이 값들의 수평 그래디언트 및 수직 그래디언트 중 적어도 하나를 계산하는 수단;
    상기 수평 그래디언트 및 상기 수직 그래디언트 중 상기 적어도 하나에 기초하여 제 1 깊이 값을 계산하는 수단; 및
    상기 아웃라이어 깊이 값을 상기 제 1 깊이 값으로 대체하는 수단을 포함하는, 장치.
  36. 제 27 항에 있어서,
    상기 글로벌 깊이 범위는 상기 세그먼트들의 최저 퀀타일 깊이 값에 기초한 최소값 및 상기 세그먼트들의 상기 상위 퀀타일 깊이 값에 기초한 최대값을 갖는, 장치.
  37. 명령들을 포함하는 비일시적 컴퓨터 판독가능 저장 매체로서,
    상기 명령들은, 디바이스에 의해 시행될 때, 상기 디바이스로 하여금,
    송신기를 통해, 시야에서 복수의 코드워드들을 투영하게 하고;
    수신기에서, 상기 시야에서의 표면으로부터의 투영된 상기 코드워드들 각각의 반사를 수신하게 하며;
    에러 정정 시스템을 통해, 수신된 반사들에 기초하여 깊이 맵을 생성하게 하는 것으로서, 각각의 반사는 대응하는 깊이 값을 갖는, 상기 깊이 맵을 생성하게 하고;
    상기 에러 정정 시스템을 통해, 상기 깊이 맵의 복수의 세그먼트들을 결정하게 하는 것으로서, 각각의 세그먼트는 다수의 상기 반사들을 포함하는, 상기 복수의 세그먼트들을 결정하게 하며;
    상기 에러 정정 시스템을 통해, 각각의 세그먼트에서의 하위 퀀타일 깊이 값 및 상위 퀀타일 깊이 값을 결정하게 하고;
    상기 에러 정정 시스템을 통해, 각각의 세그먼트에서의 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값에 기초하여 상기 깊이 맵에 대한 글로벌 깊이 범위를 생성하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  38. 제 37 항에 있어서,
    상기 상위 퀀타일 깊이 값 및 상기 하위 퀀타일 깊이 값은 (i) 히스토그램 퀀타일 계산 및 (ii) 평균 및 분산 계산 중 적어도 하나에 기초하여 결정되고,
    계산들 각각은 각 세그먼트에서의 깊이 값들의 범위 및 깊이 값들의 상기 범위의 인접한 서브세트에 기초하며,
    상기 인접한 서브세트는 상기 세그먼트에서의 깊이 값들의 밀도를 나타내는, 비일시적 컴퓨터 판독가능 저장 매체.
  39. 제 38 항에 있어서,
    상기 깊이 값들의 범위의 인접한 서브세트는 상기 하위 퀀타일 깊이 값 및 상기 상위 퀀타일 깊이 값을 포함하며,
    상기 하위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최저 깊이 값이고, 상기 상위 퀀타일 깊이 값은 상기 인접한 서브세트 내에서 최고 깊이 값인, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020187017584A 2015-12-22 2016-11-30 구조형 광 깊이 맵들의 아웃라이어 검출 및 정정을 위한 방법들 및 장치들 KR101950658B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562387377P 2015-12-22 2015-12-22
US62/387,377 2015-12-22
US15/069,751 2016-03-14
US15/069,751 US9996933B2 (en) 2015-12-22 2016-03-14 Methods and apparatus for outlier detection and correction of structured light depth maps
PCT/US2016/064119 WO2017112375A1 (en) 2015-12-22 2016-11-30 Methods and apparatus for outlier detection and correction of structured light depth maps

Publications (2)

Publication Number Publication Date
KR20180098260A KR20180098260A (ko) 2018-09-03
KR101950658B1 true KR101950658B1 (ko) 2019-02-20

Family

ID=59066269

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187017584A KR101950658B1 (ko) 2015-12-22 2016-11-30 구조형 광 깊이 맵들의 아웃라이어 검출 및 정정을 위한 방법들 및 장치들

Country Status (7)

Country Link
US (1) US9996933B2 (ko)
EP (1) EP3394827A1 (ko)
JP (1) JP6513887B2 (ko)
KR (1) KR101950658B1 (ko)
CN (1) CN108369729B (ko)
BR (1) BR112018012574A2 (ko)
WO (1) WO2017112375A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069725B2 (en) 2011-08-19 2015-06-30 Hartford Steam Boiler Inspection & Insurance Company Dynamic outlier bias reduction system and method
KR102357659B1 (ko) 2014-04-11 2022-02-04 하트포드 스팀 보일러 인스펙션 앤드 인슈어런스 컴퍼니 시스템 조작 및 수행 데이터 모델링에 기초한 미래 신뢰도 예측 개선
US10445861B2 (en) * 2017-02-14 2019-10-15 Qualcomm Incorporated Refinement of structured light depth maps using RGB color data
US10552970B2 (en) 2018-01-12 2020-02-04 Qualcomm Incorporated Efficient guide filter for depth refinement
CN109118533B (zh) * 2018-08-30 2021-03-02 歌尔光学科技有限公司 深度信息处理方法、装置和设备
US11636292B2 (en) 2018-09-28 2023-04-25 Hartford Steam Boiler Inspection And Insurance Company Dynamic outlier bias reduction system and method
CN109756662B (zh) * 2018-11-14 2023-06-13 深圳大学 基于dll延迟锁相环的深度信息校正方法以及深度信息校正装置
EP3746989A4 (en) 2018-11-16 2021-03-17 Beijing Didi Infinity Technology and Development Co., Ltd. SYSTEMS AND METHODS FOR POSITIONING VEHICLES IN POOR LIGHT CONDITIONS
US10510155B1 (en) 2019-06-11 2019-12-17 Mujin, Inc. Method and processing system for updating a first image generated by a first camera based on a second image generated by a second camera
US11416998B2 (en) * 2019-07-30 2022-08-16 Microsoft Technology Licensing, Llc Pixel classification to reduce depth-estimation error
US11328177B2 (en) 2019-09-18 2022-05-10 Hartford Steam Boiler Inspection And Insurance Company Computer-based systems, computing components and computing objects configured to implement dynamic outlier bias reduction in machine learning models
US11615348B2 (en) 2019-09-18 2023-03-28 Hartford Steam Boiler Inspection And Insurance Company Computer-based systems, computing components and computing objects configured to implement dynamic outlier bias reduction in machine learning models
JP7399269B2 (ja) 2019-09-18 2023-12-15 ハートフォード スチーム ボイラー インスペクション アンド インシュアランス カンパニー 機械学習モデルにおいて動的外れ値偏り低減を実装するように構成されるコンピュータベースシステム、コンピュータコンポーネント及びコンピュータオブジェクト

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130136338A1 (en) 2011-11-30 2013-05-30 Adobe Systems Incorporated Methods and Apparatus for Correcting Disparity Maps using Statistical Analysis on Local Neighborhoods
US20130314696A1 (en) 2012-05-24 2013-11-28 Qualcomm Incorporated Transmission of Affine-Invariant Spatial Mask for Active Depth Sensing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2184713A1 (en) * 2008-11-04 2010-05-12 Koninklijke Philips Electronics N.V. Method and device for generating a depth map
EP2293586A1 (en) * 2009-08-04 2011-03-09 Samsung Electronics Co., Ltd. Method and system to transform stereo content
US8970672B2 (en) * 2010-05-28 2015-03-03 Qualcomm Incorporated Three-dimensional image processing
US8933927B2 (en) * 2010-09-02 2015-01-13 Samsung Electronics Co., Ltd. Display system with image conversion mechanism and method of operation thereof
US8711206B2 (en) 2011-01-31 2014-04-29 Microsoft Corporation Mobile camera localization using depth maps
US20140340486A1 (en) * 2011-09-16 2014-11-20 Konica Minolta, Inc. Image processing system, image processing method, and image processing program
US11509880B2 (en) * 2012-11-14 2022-11-22 Qualcomm Incorporated Dynamic adjustment of light source power in structured light active depth sensing systems
US10230934B2 (en) 2013-06-14 2019-03-12 Microsoft Tehcnology Licensing, Llc Depth map correction using lookup tables
US9270386B2 (en) 2013-06-24 2016-02-23 Intel Corporation Error detecting and correcting structured light patterns
CN103400366B (zh) 2013-07-03 2016-04-13 西安电子科技大学 基于条纹结构光的动态场景深度获取方法
CN104424649B (zh) * 2013-08-21 2017-09-26 株式会社理光 检测运动物体的方法和系统
CN104574342B (zh) * 2013-10-14 2017-06-23 株式会社理光 视差深度图像的噪声识别方法和噪声识别装置
KR102130123B1 (ko) * 2013-10-31 2020-07-03 삼성전자주식회사 다시점 영상 디스플레이 장치 및 그 제어 방법
EP3389011B1 (en) * 2014-06-30 2019-06-12 Ventana Medical Systems, Inc. Image analysis system for detecting edges of a nucleus
AU2014280872A1 (en) * 2014-12-22 2016-07-07 Canon Kabushiki Kaisha Multiscale depth estimation using depth from defocus
KR101690645B1 (ko) * 2015-09-21 2016-12-29 경북대학교 산학협력단 다단계 시차영상 분할이 적용된 시차탐색범위 추정 방법 및 이를 이용한 스테레오 영상 정합장치
US10554956B2 (en) * 2015-10-29 2020-02-04 Dell Products, Lp Depth masks for image segmentation for depth-based computational photography
US10659766B2 (en) * 2015-10-30 2020-05-19 Canon Kabushiki Kaisha Confidence generation apparatus, confidence generation method, and imaging apparatus

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130136338A1 (en) 2011-11-30 2013-05-30 Adobe Systems Incorporated Methods and Apparatus for Correcting Disparity Maps using Statistical Analysis on Local Neighborhoods
US20130314696A1 (en) 2012-05-24 2013-11-28 Qualcomm Incorporated Transmission of Affine-Invariant Spatial Mask for Active Depth Sensing

Also Published As

Publication number Publication date
EP3394827A1 (en) 2018-10-31
CN108369729B (zh) 2019-11-12
KR20180098260A (ko) 2018-09-03
WO2017112375A1 (en) 2017-06-29
JP2019501390A (ja) 2019-01-17
CN108369729A (zh) 2018-08-03
BR112018012574A2 (pt) 2018-12-04
US9996933B2 (en) 2018-06-12
JP6513887B2 (ja) 2019-05-15
US20170178332A1 (en) 2017-06-22

Similar Documents

Publication Publication Date Title
KR101950658B1 (ko) 구조형 광 깊이 맵들의 아웃라이어 검출 및 정정을 위한 방법들 및 장치들
US10909707B2 (en) System and methods for measuring depth using an array of independently controllable cameras
US9948920B2 (en) Systems and methods for error correction in structured light
CN103069250B (zh) 三维测量设备、三维测量方法
US9530215B2 (en) Systems and methods for enhanced depth map retrieval for moving objects using active sensing technology
US10223801B2 (en) Code domain power control for structured light
CN107851310B (zh) 节省存储器的经译码光错误校正
US10574947B2 (en) Object reconstruction in disparity maps using displaced shadow outlines
CN107408306B (zh) 一种产生对象的深度图信息的方法、设备及可读介质
US10771768B2 (en) Systems and methods for improved depth sensing
CN116157652A (zh) 为主动深度感测解码图像以应对光学失真

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant