KR20200020705A - 파이프라인 실행을 최적화하기 위한 방법들, 시스템들 및 장치 - Google Patents

파이프라인 실행을 최적화하기 위한 방법들, 시스템들 및 장치 Download PDF

Info

Publication number
KR20200020705A
KR20200020705A KR1020197037037A KR20197037037A KR20200020705A KR 20200020705 A KR20200020705 A KR 20200020705A KR 1020197037037 A KR1020197037037 A KR 1020197037037A KR 20197037037 A KR20197037037 A KR 20197037037A KR 20200020705 A KR20200020705 A KR 20200020705A
Authority
KR
South Korea
Prior art keywords
pixel
cost
descriptor
aggregation
matching
Prior art date
Application number
KR1020197037037A
Other languages
English (en)
Other versions
KR102655086B1 (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 KR20200020705A publication Critical patent/KR20200020705A/ko
Application granted granted Critical
Publication of KR102655086B1 publication Critical patent/KR102655086B1/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/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • 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/77Determining position or orientation of objects or cameras using statistical methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/10Processing, recording or transmission of stereoscopic or multi-view image signals
    • H04N13/106Processing image signals
    • H04N13/128Adjusting depth or disparity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • 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/20228Disparity calculation for image-based rendering

Abstract

파이프라인 실행을 최적화하기 위한 방법들, 장치, 시스템들 및 제조 물품들이 개시된다. 예시적인 장치는 제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 제1 위치와 제2 위치 사이의 매칭 비용을 계산함으로써 결정하기 위한 비용 계산 관리자 및 집계 생성기를 포함하며, 집계 생성기는, 값을 포함하는 디스패리티 맵을 생성하고, 디스패리티 맵에 기반하여 제1 위치와 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하기 위한 것이다.

Description

파이프라인 실행을 최적화하기 위한 방법들, 시스템들 및 장치
관련 출원
본 특허는 2017년 5월 19일자로 출원된 미국 가특허 출원 제62/508,891호의 이익을 주장하는 출원으로부터 발생한다. 미국 가특허 출원 제62/508,891호는 그 전체가 본 명세서에 참고로 포함된다. 미국 가특허 출원 제62/508,891호에 대한 우선권이 본 명세서에 의해 주장된다.
본 개시내용은 일반적으로 이미지 처리에 관한 것이며, 더 구체적으로는 파이프라인 실행을 최적화하기 위한 방법들, 시스템들 및 장치에 관한 것이다.
최근, 이미지 처리 애플리케이션들이 더 많은 수의 디바이스들 상에서 나타나고 있다. 얼굴 인식, 물체 인식 등과 같은 이미지 처리가 데스크톱 플랫폼들에 존재하지만, 모바일 디바이스 이미지 처리 특징들에서의 최근의 증가가 나타나고 있다. 모바일 디바이스들은 데스크톱 플랫폼들과 비교할 때 비교적 성능이 떨어지는 프로세서, 메모리 용량 및 전력 예비량들을 갖는 경향이 있다.
도 1은 본 개시내용의 교시들에 따라 구성된 예시적인 파이프라인 최적화 시스템의 예시적인 하드웨어 아키텍처의 개략도이다.
도 2a는 도 1의 예시적인 파이프라인 최적화 시스템의 예시적인 센서스 변환 엔진의 개략도이다.
도 2b는 도 1의 예시적인 파이프라인 최적화 시스템의 예시적인 기술어 버퍼 엔진의 개략도이다.
도 2c는 도 1의 예시적인 파이프라인 최적화 시스템의 예시적인 비용 매칭 엔진의 개략도이다.
도 2d는 도 1의 예시적인 파이프라인 최적화 시스템의 예시적인 비용 통합 엔진의 개략도이다.
도 2e는 도 1의 예시적인 파이프라인 최적화 시스템의 예시적인 SGBM 집계 엔진의 개략도이다.
도 3은 본 개시내용의 교시들에 따라 구성된 예시적인 연결 논리의 개략도이다.
도 4는 도 2a의 예시적인 기술어 버퍼 엔진, 도 2c의 예시적인 비용 매칭 엔진, 및 도 2d의 예시적인 비용 통합 엔진에 의해 수행되는 예시적인 상관 동작의 개략도이다.
도 5는 예시적인 SGBM 집계 셀의 개략도이다.
도 6은 본 명세서에 개시된 예들을 구현하기 위한 예시적인 스테레오 파이프라인 데이터 흐름의 개략도이다.
도 7은 예시적인 SIPP 가속기(700)의 예시적인 구현의 블록도이다.
도 8은 도 1의 예시적인 파이프라인 최적화 시스템 및/또는 도 7의 예시적인 SIPP 가속기를 구현하여 이미지 특징 매칭 동작을 가속화하기 위해 실행될 수 있는 예시적인 기계 판독가능한 명령어들을 나타내는 흐름도이다.
도 9는 도 1의 예시적인 파이프라인 최적화 시스템 및/또는 도 7의 예시적인 SIPP 가속기를 구현하여 제1 이미지에서의 제1 픽셀 및 제2 이미지에서의 제2 픽셀과 연관된 최소 비용을 갖는 디스패리티를 결정하기 위해 실행될 수 있는 예시적인 컴퓨터 판독가능한 명령어들을 도시한다.
도 10은 도 1의 예시적인 파이프라인 최적화 시스템 및/또는 도 7의 예시적인 SIPP 가속기를 구현하여 전파 경로와 연관된 비용을 결정하기 위해 실행될 수 있는 예시적인 컴퓨터 판독가능한 명령어들을 도시한다.
도 11은 예시적인 타이밍도를 도시한다.
도 12는 도 1의 예시적인 파이프라인 최적화 시스템 및/또는 도 7의 예시적인 SIPP 가속기를 구현하기 위해 도 8 내지 도 10의 예시적인 기계 판독가능한 명령어들을 실행하도록 구조화된 예시적인 프로세서 플랫폼의 블록도이다.
도면들은 축척에 맞지 않는다. 일반적으로, 동일하거나 유사한 부분들을 나타내기 위해 도면(들) 및 이에 수반하여 기재된 설명의 전체에 걸쳐 동일한 참조 번호들이 이용될 것이다.
계산 이미징(computational imaging)은 이미지들 및 비디오들에 기반한 전례 없는 사용자 경험 및 정보를 제공할 수 있는 새로운 이미징 패러다임이다. 예를 들어, 계산 이미징은, 이미지들 및/또는 비디오들을 처리하여 장면의 깊이 맵(depth map)을 제공하고, 장면의 파노라마 뷰를 제공하며, 이미지들 및/또는 비디오들로부터 얼굴들을 추출하고, 이미지들 및/또는 비디오들로부터 텍스트, 특징들, 및 메타데이터를 추출하고, 심지어, 물체 및 장면 인식 특징들에 기반한 자동화된 시각적 인식 능력들을 제공할 수 있다.
계산 이미징은 기계들이 물리적 세계를 캡처하고 그와 상호작용하는 방식들을 변형시킬 수 있다. 예를 들어, 계산 이미징을 통해, 기계들은 전통적인 이미징 기술들을 이용하여 캡처하기가 매우 어려웠던 이미지들을 캡처할 수 있다. 다른 예로서, 계산 이미징을 통해, 기계들은 그 주변들과 연관된 특성들을 이해하고/하거나 아니면 이들을 도출하고 그 주변들에 따라 반응할 수 있다.
계산 이미징을 대중 시장에 가져 오는 문제점들 중 하나는, 계산 이미징이 본질적으로 계산상 비싸다는 것이다. 계산 이미징은 종종 고해상도의 상당한 양들의 이미지들을 이용하고/하거나 높은 프레임 레이트를 갖는 상당한 양의 비디오들을 이용한다. 따라서, 계산 이미징은 종종 강력한 컴퓨팅 플랫폼들의 지원을 필요로 한다. 또한, 계산 이미징은 종종, 예를 들어, 스마트 폰이나 태블릿 컴퓨터를 이용하는 모바일 환경들에서 이용되기 때문에, 계산 이미징은 종종 저전력 예산으로 동작할 수 있는 강력한 컴퓨팅 플랫폼들의 지원을 필요로 한다.
본 명세서에 개시된 예들은 통상적으로 상당한 양의 계산 자원 능력들을 요구하는 상이한 타입들의 이미지 처리 작업들을 개선한다. 본 명세서에 개시된 예들은, 2개 이상의 이미지를 취하고, 2개 이상의 이미지에서 매칭 픽셀들을 찾고 2차원(2D) 위치들을 3D 깊이들로 변환함으로써 장면의 3차원(3D) 모델을 추정하는 프로세스를 지칭하는 스테레오 매칭 작업들을 보조한다. 달리 말하면, 스테레오 매칭은 2개의(또는 그 이상의) 2D 이미지를 취하여 하나의 3D 이미지를 생성한다. 스테레오 이미징은 물체가 대응하는 캡처 디바이스(예를 들어, 카메라)로부터 얼마나 멀리 있는지를 결정하기 위한 계산들을 포함한다.
일부 예들에서, 입력 이미지(예를 들어, 사진, 비디오 프레임 등)와 연관된 이미지 데이터는 2개 이상의 카메라(예를 들어, 카메라 쌍들, 스테레오 카메라 쌍들 등) 및/또는 임의의 수의 복수의 카메라 쌍들로부터 수신 및/또는 아니면 검색된다. 본 명세서에 개시된 예들은 스테레오 비전 알고리즘들을 가속화하기 위한 파이프라이닝되고 유연한 하드웨어 아키텍처를 용이하게 하며, 일부 예들에서는, 픽셀당 2개의 클록 사이클이 달성된다. 이러한 성능 능력들은, 예를 들어, 30Hz에서 720p 해상도의 4개의 카메라 쌍, 60Hz에서 720 해상도의 2개의 카메라 쌍, 또는 60Hz에서 VGA 해상도의 8개의 카메라 쌍의 실시간 처리를 가능하게 한다. 본 명세서에 개시된 예들은 8개 및 10개의 픽셀 데이터를 지원하고, 64 또는 96의 구성가능한 디스패리티 탐색 범위를 갖는다. 일반적으로 말하면, 탐색 범위는 지원되는 깊이 범위에 대응하는 메트릭을 나타낸다.
본 명세서에서 사용되는 "디스패리티"라는 용어는 스테레오 이미지 쌍의 제1 이미지에서의 제1 픽셀 및 제2 이미지에서의 제2 픽셀의 좌표들(예를 들어, 수평 좌표들, 수직 좌표들 등)에서의 차이를 지칭한다. 일부 예들에서, 제1 픽셀 및 제2 픽셀은 상이한 이미지들에 위치한 동일한 픽셀들이다. 디스패리티 값은 디스패리티가 깊이에 반비례함에 따라 더 가까운 거리에 대해 높을 것이고 더 먼 거리에 대해 낮을 것이다. 2개의 스테레오 이미지 사이의 특징들(예를 들어, 하나 이상의 픽셀)의 디스패리티는 통상적으로 우측 이미지에서 볼 때 이미지 특징의 좌측으로의 자리이동으로서 계산된다. 예를 들어, 좌측 이미지에서의 X-좌표 t(픽셀들에서 측정됨)에서 나타나는 단일 포인트는 우측 이미지에서의 X-좌표 t-3에 존재할 수 있고, 우측 이미지의 그 위치에서의 디스패리티는 3개의 픽셀이다.
본 명세서에 개시된 예들은, 임의의 유닛(예를 들어, 처리 유닛, 모듈 등)이, 이하에서 더 상세히 설명되는 바와 같이, 개별적으로 또는 하나 이상의 다른 계층적 유닛과 조합하여 이용 및/또는 아니면 구현될 수 있는 유연한 아키텍처를 가능하게 한다. 일부 예들에서, 특히 입력 데이터의 일부가 다른 엔진들에 의해 전처리될 수 있을 때, 특정 동작 유닛들은 파이프라인 전파 효율을 증가시키기 위해 우회될 수 있다.
본 명세서에 개시된 예들은, 아키텍처의 하나 이상의 동작 유닛 없이도(예를 들어, 단독으로) 또한 이용될 수 있는 유연한 센서스 변환(CT) 비용 함수를 가능하게 한다. 본 명세서에 개시된 예들은 SGBM(semi global block matching) 알고리즘 비용 집계(예를 들어, SGBM3)를 가능하게 하고, 2개 이상의 패스들에서 2개 이상의 평면 이미지들에 대해 동작할 수 있다. 본 명세서에 개시된 예들은 미리 계산된 비용들과 연관된 그레이-스케일 이미지 입력 모드 및/또는 입력 모드들을 포함한다. 본 명세서에 개시된 예들은 디스패리티 출력 모드들, 디스패리티 플러스 에러 출력 모드들, 최상의 및 차선의 디스패리티 모드들, 및/또는 원시 집계 비용 출력 모드들을 포함하지만, 이들로 제한되지는 않는다.
도 1은 예시적인 파이프라인 최적화 시스템(100)의 예시적인 하드웨어 아키텍처를 도시한다. 예시적인 파이프라인 최적화 시스템(100)은 스테레오-비전 알고리즘 또는 다른 이미지 처리 알고리즘을 가속화하기 위한 파이프라이닝되고 유연한 하드웨어 아키텍처에 대응하는 하나 이상의 하드웨어 가속기를 나타낸다. 예시적인 파이프라인 최적화 시스템(100)은 스트리밍 이미지 처리 파이프라인(SIPP) 가속기이다. 예를 들어, 파이프라인 최적화 시스템(100)은 전적으로 하드웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 그러나, 일부 예들에서, 파이프라인 최적화 시스템(100)의 하나 이상의 하드웨어 컴포넌트를 소프트웨어 또는 소프트웨어 기반 구현으로 대체하는 것은 성능 감소를 야기할 수 있다. 도 1의 도시된 예에서, 파이프라인 최적화 시스템(100)은 예시적인 센서스 변환(CT) 엔진(102), 예시적인 기술어 버퍼 엔진(104), 예시적인 기술어 선택기(106), 예시적인 비용 매칭 엔진(108), 예시적인 비용 통합 엔진(110), 및 예시적인 SGBM 집계 엔진(112)을 포함한다. 예시적인 CT 엔진(102), 예시적인 기술어 버퍼 엔진(104), 예시적인 비용 매칭 엔진(108), 예시적인 비용 통합 엔진(110), 및 예시적인 SGBM 집계 엔진(112)은 함께 예시적인 파이프라인(114)을 형성하며, 여기서 각각의 컴포넌트는 때때로 예시적인 파이프라인(114)의 "스테이지"로서 본 명세서에서 지칭된다.
예시적인 파이프라인(114)에서의 각각의 스테이지의 명료성을 개선하기 위해, 예시적인 CT 엔진(102)이 도 2a에 도시되어 있고, 예시적인 기술어 버퍼 엔진(104)이 도 2b에 도시되어 있고, 예시적인 비용 매칭 엔진(108)이 도 2c에 도시되어 있고, 예시적인 비용 통합 엔진(110)이 도 2d에 도시되어 있고, 예시적인 SGBM 집계 엔진(112)이 도 2e에 도시되어 있다.
동작 시에, 원시 이미지 데이터는 전형적으로 도 1의 예시적인 입력 인터페이스(116)로부터의 예시적인 파이프라인의 시작에서 예시적인 CT 엔진(102)에 공급된다. 일부 예들에서, 도 1의 입력 인터페이스(116)는 이미지 소스(예를 들어, 카메라, 복수의 카메라, 비디오 카메라 등) 또는 이미지 데이터를 저장하는 메모리에 대응한다. 일부 예들에서, 도 1의 입력 인터페이스(116)는 가속기 메모리 제어기(AMC) 인터페이스(예를 들어, AMC 판독 클라이언트 인터페이스 등)이다. 대안적으로, 예시적인 입력 인터페이스(116)는 메모리-매핑된 프로세서 버스일 수 있다. 예를 들어, 입력 인터페이스(116)는 메모리로부터 파이프라인(114)으로 데이터를 스트리밍하는 의사(pseudo) 직접 메모리 액세스(DMA) 제어기로서 동작한다.
도 1의 도시된 예에서, 입력 인터페이스(116)는 예시적인 좌측 이미지(118) 및/또는 예시적인 우측 이미지(120)에 대응하는 이미지 데이터를 획득한다. 일부 예들에서, 입력 인터페이스(116)는 예시적인 메인 메모리(122)로부터 이미지 데이터를 검색한다. 도 1의 예시적인 메인 메모리(122)는 동적 랜덤 액세스 메모리(DRAM)이다. 대안적으로, 예시적인 메인 메모리(122)는 정적 랜덤 액세스 메모리(SRAM), 접속 매트릭스(CMX) 메모리 등일 수 있다.
도 1의 도시된 예에서, 메인 메모리(122)에 저장된 이미지 데이터는 좌측 이미지(118)에 포함된 예시적인 좌측 픽셀(124) 및/또는 우측 이미지(120)에 포함된 예시적인 우측 픽셀(126)과 같은 예시적인 픽셀들의 픽셀 값들을 포함한다. 예를 들어, 픽셀 값들은 픽셀의 픽셀 휘도(예를 들어, 픽셀 강도)에 대응할 수 있다. 예시적인 좌측 이미지(118) 및 예시적인 우측 이미지(120) 각각은 1280개의 픽셀의 폭 X와 1920개의 픽셀의 높이 Y를 갖지만, 본 명세서에 개시된 예들은 이에 제한되지 않는다. 예를 들어, 이미지들(118, 120)의 각각의 라인은 1280개의 픽셀에 대응하고, 각각의 열은 1920개의 픽셀에 대응한다.
원시 이미지 데이터(예를 들어, 예시적인 좌측 픽셀(124), 예시적인 우측 픽셀(126) 등의 픽셀 값들)는 전술한 예시적인 스테레오 매칭 작업들과 같은 하나 이상의 이미지 처리 작업을 수행하기 위해 예시적인 파이프라인(114)에 의해 처리된다. 예시적인 파이프라인(114)의 각각의 스테이지는 대응하는 양의 자원들(예를 들어, 컴퓨팅 자원들, 대역폭, 메모리 자원들 등), 및 그와 같이 대응하는 양의 전력을 소비한다. 일부 예들에서, 예시적인 파이프라인(114)의 하나 이상의 스테이지는 예시적인 파이프라인(114)의 하나 이상의 다른 스테이지와 독립적으로 동작할 수 있다. 이와 같이, 특정 스테이지가 필요하지 않은 상황들에서, 예시적인 파이프라인(114)의 동작의 효율 또는 속도의 증가, 전력의 감소 등을 위해 하나 이상의 스테이지가 비활성화되고/되거나 아니면 우회될 수 있다.
일부 예들에서, 하나 이상의 스테이지는 다른 (외부) 프로세스가 그 스테이지에 관련된 특정 작업을 수행했을 수 있기 때문에 필요하지 않다. 이와 같이, 데이터 피드를 재처리하려는 시도들은 처리 시간 및 전력 소비의 관점에서 낭비적이다. 본 명세서에 개시된 일부 예들에서, 하나 이상의 스테이지는 전력을 보존하기 위해 입력 데이터를 처리하는 것으로부터 지연된다. 예를 들어, 비용 통합 엔진(110)은, 너무 크다면(예를 들어, 하나 이상의 비트 폭 임계 값을 초과함), 비교적 많은 양의 처리 전력을 소비할 수 있는 비트 정렬 동작들을 수행할 수 있다. 이와 같이, 본 명세서에 개시된 예들은, 전력을 보존하기 위해, 하나 이상의 스테이지가 교대로 동작하게 하거나, 동작하는 것을 억제하게 하거나, 또는 각각의 스테이지에 의해 처리될 입력 데이터의 양을 수정하게 하기 위해 파이프라인(114)을 분석하여 레이턴시 감소 기회들을 식별한다. 본 명세서에 개시된 일부 예들에서, 통상적인 파이프라인과 보통 연관된 시간 의존성이 제거되어, 적절한 경우 손쉬운 효율화 및 전력 보존을 용이하게 한다.
도 1의 도시된 예에서, 파이프라인 최적화 시스템(100)은 픽셀들과 연관된 픽셀 값들을 블록 기술어들 또는 비트 기술어들과 같은 기술어들로 변환하는 CT 엔진(102)을 포함한다. 예시적인 CT 엔진(102)은 예시적인 입력 인터페이스(116)로부터 예시적인 좌측 이미지(118), 예시적인 우측 이미지(120) 등에 포함된 픽셀들에 대응하는 원시 이미지 데이터를 획득한다. 예시적인 CT 엔진(102)은 원시 이미지 데이터에 포함된 픽셀 값들을 비교 값과 비교함으로써 비트 기술어들을 생성한다. 원시 이미지 데이터는 예시적인 픽셀 커널(128)과 연관된 픽셀 값들을 포함할 수 있다. 도 1의 예시적인 픽셀 커널(128)은 5×5 픽셀 커널로서 조직화되고/되거나 아니면 배열된 25개의 픽셀을 포함한다. 대안적으로, 원시 이미지 데이터는 7×7 픽셀 커널, 7×9 픽셀 커널 등 또는 임의의 다른 픽셀 커널 크기에 대응할 수 있다. 도 1의 예시적인 우측 픽셀(126)은 예시적인 픽셀 커널(128)의 중심 픽셀(예를 들어, 중심 픽셀)이다.
일부 예들에서, CT 엔진(102)은 픽셀 커널(128)의 중심 픽셀(126)의 픽셀 값을 픽셀 커널(128)의 주변 픽셀들의 픽셀 값들과 비교하여, 그 비교에 기반하여 비트 기술어(예를 들어, 32 비트 기술어, 64 비트 기술어 등)를 생성한다. 예를 들어, CT 엔진(102)은 우측 이미지(120)에서 중심 픽셀(126)과 연관된 비트 기술어에 대응하는 우측 기술어를 출력할 수 있다. 대안적으로, 예시적인 CT 엔진(102)은 비트 기술어를 생성할 수 있고, 여기서, 비교 값은 픽셀 커널(128)의 평균 픽셀 값, 임계 값만큼 중심 픽셀 값보다 큰 값에 기반한 임계 값 등이다. 예시적인 픽셀 커널(128)의 처리에 응답하여, 예시적인 CT 엔진(102)은 제2 픽셀 커널을 처리하고, 여기서 제2 픽셀 커널은 도 1에 도시된 픽셀 커널(128)에 인접할 수 있다(예를 들어, 픽셀 커널(128)의 우측, 픽셀 커널(128) 아래 등에 있을 수 있다). 대안적으로, 제2 픽셀 커널은 도 1의 픽셀 커널(128)의 하나 이상의 픽셀을 포함할 수 있고, 여기서 픽셀 커널(128) 및 제2 픽셀 커널은 하나 이상의 열, 인덱스, 행 등 및/또는 이들의 조합에 의해 중첩된다.
도 1의 도시된 예에서, CT 엔진(102)은 우측 기술어를 기술어 버퍼 엔진(104)에 전송한다. 도 1의 도시된 예에서, CT 엔진(102)은 비용 매칭 엔진(108)에 결합된다(예를 들어, CT 엔진(102)의 기입 클라이언트는 비용 매칭 엔진(108)의 판독 클라이언트에 결합된다). 대안적으로, 예시적인 CT 엔진(102)은 비용 매칭 엔진(108)에 결합되지 않을 수 있다. 예시적인 기술어 버퍼 엔진(104)은 제1 예시적인 기입 인터페이스(130)로부터 좌측 기술어를 검색하여 이를 예시적인 비용 매칭 엔진(108)에 전송한다. 일부 예들에서, 도 1의 제1 기입 인터페이스(130)는 가속기 메모리 제어기(AMC) 인터페이스(예를 들어, AMC 기입 클라이언트 인터페이스 등)이다. 대안적으로, 제1 예시적인 기입 인터페이스(130)는 메모리-매핑된 프로세서 버스일 수 있다. 좌측 기술어는 예시적인 좌측 이미지(118)로부터의 예시적인 좌측 픽셀(124)을 둘러싸고/둘러싸거나 아니면 이에 근접한 픽셀들의 픽셀 값들과 연관된 비트 기술어에 대응한다. 좌측 기술어 및/또는 우측 기술어를 검색하는 것에 응답하여, 예시적인 기술어 버퍼 엔진(104)은 좌측 기술어를 예시적인 비용 매칭 엔진(108)에 전송하고, CT 엔진(102)에 의해 생성된 우측 기술어를 포함하는 하나 이상의 우측 기술어를 예시적인 기술어 선택기(106)에 전송한다.
도 1의 도시된 예에서, 파이프라인 최적화 시스템(100)은 디스패리티 압신에 기반하여 기술어 버퍼 엔진(104)으로부터 우측 기술어들의 서브세트를 선택하기 위한 기술어 선택기(106)를 포함한다. 디스패리티 압신은 예시적인 파이프라인 최적화 시스템(100)이 유효 스테레오 깊이 범위에 대한 희소 디스패리티 포인트들을 취함으로써 그 범위를 확장할 수 있게 한다. 디스패리티 압신은 유효 공칭 범위를 더 덜한 해상도를 갖는 더 작은 유효 범위로 압축한다. 예를 들어, 해상도는 얕은 범위 값들에 대해 더 높고, 해상도는 깊은 범위들에 대해 점진적으로 감소한다. 예를 들어, 기술어 버퍼 엔진(104)은 176개의 우측 기술어를 출력할 수 있다. 예시적인 기술어 선택기(106)는 176개의 우측 기술어에 대해 희소 매칭 동작을 수행함으로써 176개의 우측 기술어 중 96개를 선택할 수 있다. 일부 예들에서, 기술어 선택기(106)는 하나 이상의 2:1 멀티플렉서에 의해 구현된다.
도 1의 도시된 예에서, 파이프라인 최적화 시스템(100)은 각각의 픽셀에서 각각의 후보 디스패리티에 대한 매칭 비용 또는 매칭 파라미터를 계산 및/또는 아니면 결정하기 위한 비용 매칭 엔진(108)을 포함한다. 일부 예들에서, 제1 이미지에서의 제1 픽셀과 연관된 매칭 비용은 제1 픽셀의 강도 및 의심되는 대응관계 또는 제2 이미지에서의 잠재적 매칭 픽셀에 기반하여 계산 및/또는 아니면 결정되는 파라미터(예를 들어, 0 내지 128, 0 내지 255 등의 범위에 클램핑된 정수 값)이다. 예를 들어, 매칭 비용은 제1 이미지에서의 제1 픽셀의 제1 위치가 제2 이미지에서의 제2 픽셀의 제2 위치에 얼마나 유사한지의 정량화를 나타낼 수 있다. 도 1의 예시적인 비용 매칭 엔진(108)은 기술어 버퍼 엔진(104) 및/또는 기술어 선택기(106)로부터 검색된 및/또는 아니면 획득된 비트 기술어들에 기반하여 매칭 비용들을 결정한다. 예시적인 비용 매칭 엔진(108)은 픽셀 강도 값들을 식별하고 예시적인 비용 통합 엔진(110)에 출력되는 디스패리티 값들을 계산한다. 예를 들어, 비용 매칭 엔진(108)은 좌측 픽셀(124)과 연관된 좌측 기술어의 8개의 최하위 비트(LSB)에 기반하여 좌측 픽셀(124)의 픽셀 강도 값을 결정할 수 있다. 다른 예들에서, 비용 매칭 엔진(108)은 좌측 기술어와 복수의 우측 기술어들의 비교에 기반하여 좌측 픽셀(124)과 픽셀 커널(128)의 픽셀들 사이의 디스패리티를 결정한다. 디스패리티는 좌측 이미지(118) 및 우측 이미지(120)에서의 2개의 대응하는 포인트들 사이의 좌표들(예를 들어, 수평 좌표들, 수직 좌표들 등)에서의 거리 또는 차이를 지칭하며, 좌측 이미지(118) 및 우측 이미지(120)는 예시적인 스테레오 이미지 쌍(132)을 형성한다.
도 1의 도시된 예에서, 파이프라인 최적화 시스템(100)은 CT 엔진(102), 기술어 버퍼 엔진(104), 및 비용 매칭 엔진(108) 중 적어도 하나에 의한 원형 버퍼 전략의 이용에 기인하여, 처리된 이미지 데이터를 재정렬하는 비용 통합 엔진(110)을 포함한다. 일부 예들에서, 예시적인 비용 통합 엔진(110)에의 입력들은, 예를 들어 각각의 데이터 세트가 32 비트를 갖는 128개의 데이터 세트를 갖는 식으로 다소 높다. 예시적인 기술어 버퍼 엔진(104)의 초기에 이러한 양의 데이터에 대한 정렬을 즉시 수행하기 보다는, 본 명세서에 개시된 예들은 재정렬을 수행하기 전에 데이터 세트당 더 적은 수의 비트들이 수신되고/되거나 아니면 검색되는 상황들을 기다린다. 달리 말하면, 재정렬 노력들은 파이프라인 최적화 시스템(100)의 효율을 향상시키기 위해 예시적인 비용 통합 엔진(110)과 같은 예시적인 파이프라인(114)의 대안적인 스테이지로 연기된다.
도 1의 도시된 예에서, 파이프라인 최적화 시스템(100)은 비용 통합 엔진(110)으로부터 수신된 입력들에 기반하여 비용 매칭 엔진(108)에 의해 생성된 매칭 비용들 및 대응하는 디스패리티들의 집계 및 정밀화를 수행하는 SGBM 집계 엔진(112)을 포함한다. 대안적으로, 예시적인 SGBM 집계 엔진(112)은 단독으로(예를 들어, 예시적인 파이프라인(114)의 외부에서) 이용될 수 있고, 예시적인 메인 메모리(122)로부터 입력들을 검색할 수 있다. 일부 예들에서, SGBM 집계 엔진(112)은 하나 이상의 제어 신호에 통신가능하게 결합된 복수의 집계 셀 및 입력 비용 버퍼를 포함하여 스테레오 이미지 쌍(132) 내의 관심 있는 각각의 픽셀에 대한 최종 디스패리티 값과 연관된 출력 집계 버퍼를 생성한다. 예시적인 SGBM 집계 엔진(112)은 출력 집계 버퍼를 제2 예시적인 기입 인터페이스(134)에 전송한다. 도 1의 제2 예시적인 기입 인터페이스(134)는 가속기 메모리 제어기(AMC) 인터페이스(예를 들어, AMC 기입 클라이언트 인터페이스 등)이다. 대안적으로, 제2 예시적인 기입 인터페이스(134)는 메모리-매핑된 프로세서 버스일 수 있다.
일부 예들에서, 도 1의 파이프라인(114)의 하나 이상의 컴포넌트, 및/또는 보다 일반적으로, 도 1의 파이프라인 최적화 시스템(100)은 출력 모드에서 동작한다. 예를 들어, 출력 모드는 디스패리티 모드, 디스패리티 플러스 에러 모드, 최상의 및 차선의 디스패리티 모드, 또는 집계 비용 모드(예를 들어, 원시 집계 비용 모드)일 수 있다. 이러한 예들에서, 파이프라인 최적화 시스템(100)은 디스패리티 모드에서 동작할 때 픽셀당 전체 비용 맵 또는 디스패리티 맵을 출력한다. 예시적인 파이프라인 최적화 시스템(100)은 최상의 및 차선의 디스패리티 모드에서 동작할 때 최상의(예를 들어, 최소의) 및 차선의(예를 들어, 두번째로 최소의) 디스패리티를 출력한다. 예시적인 파이프라인 최적화 시스템(100)은 집계 비용 모드에서 동작할 때 하나 이상의 집계 비용을 출력한다.
예시적인 파이프라인 최적화 시스템(100)은 디스패리티 플러스 에러 모드에서 동작할 때 디스패리티 및 대응하는 신뢰도 메트릭(예를 들어, 신뢰도 비율)을 출력한다. 예를 들어, 파이프라인 최적화 시스템(100)은 신뢰도 메트릭을 이용하여 디스패리티 맵으로부터의 잘못된 또는 부정확한 디스패리티 예측들을 결정 및/또는 아니면 무효화할 수 있다. 이러한 예들에서, 파이프라인 최적화 시스템(100)은 상이한 후처리 필터들(예를 들어, 갭 필링 필터, 중간값 필터 등)을 이용하여 이러한 부정확한 디스패리티 값들을 관련 또는 대체 값들로 대체할 수 있다. 일부 예들에서, 신뢰도 메트릭은 비율 신뢰도(예를 들어, 비율 신뢰도 메트릭)이다. 비율 신뢰도는 매칭 비용들(예를 들어, 매칭 비용 벡터)로부터의 제1 최소치(c(p, d0)) 및 제2 최소치(c(p, d1))를 이용하고, 아래의 수학식 1에 기재된 바와 같이 비율 신뢰도를 결정한다.
Figure pct00001
위의 수학식 1의 예에서, 비율 신뢰도 메트릭의 값은 0 내지 1([0,1])의 범위에 있다. 위의 수학식 1의 예에서, 더 작은 값(예를 들어,
Figure pct00002
가 0에 접근함)은 결정된 디스패리티가 비율 신뢰도 메트릭의 더 큰 값(예를 들어,
Figure pct00003
가 1에 접근함)과 연관된 디스패리티에 비해 정확한 추정 또는 결정인 높은 신뢰도에 대응한다. 예를 들어, 전역 최소치가 제2 최소치보다 더 작은(예를 들어, 2, 5, 10 등의 인자만큼 더 작은) 경우, 더 높은 신뢰도가 디스패리티와 연관된다.
일부 예들에서, 파이프라인 최적화 시스템(100)은, 신뢰도 비율 메트릭이 임계 값을 충족시키지 않을 때, 관심 픽셀과 연관된 계산된 디스패리티가 유효하지 않고, 부정확하고, 이미지 처리 작업에 이용되지 않는 것 등으로 결정한다. 예를 들어, 파이프라인 최적화 시스템(100)(예를 들어, SGBM 집계 엔진(112)과 같은 파이프라인 최적화 시스템(100)의 컴포넌트들 중 하나)은 신뢰도 메트릭 비율을 비율 임계 값과 비교할 수 있고, 신뢰도 메트릭 비율이 비율 임계 값보다 클 때 연관된 디스패리티를 무효화할 수 있다. 그 비교에 기반하여 연관된 디스패리티가 무효인 것으로 결정하는 것에 응답하여, 예시적인 파이프라인 최적화 시스템(100)은 비용 매칭 벡터에서의 디스패리티 값을 무효 값 식별자와 연관된 값으로 대체한다. 예시적인 파이프라인 최적화 시스템(100) 또는 파이프라인 최적화 시스템(100)에 대한 외부 컴포넌트는 하나 이상의 후처리 필터(예를 들어, 갭 필링 필터, 중간값 필터 등)를 이용하여 무효 값 식별자와 연관된 값을 관련 또는 대체 값으로 대체할 수 있다.
도 1의 예시적인 파이프라인(114)을 구현하는 예시적인 방식이 도 1에 도시되어 있지만, 도 1에 도시된 요소들, 프로세스들 및/또는 디바이스들 중 하나 이상은 임의의 다른 방식으로 결합, 분할, 재배열, 생략, 제거 및/또는 구현될 수 있다. 또한, 예시적인 CT 엔진(102), 예시적인 기술어 버퍼 엔진(104), 예시적인 기술어 선택기(106), 예시적인 비용 매칭 엔진(108), 예시적인 비용 통합 엔진(110), 예시적인 SGBM 집계 엔진(112), 및/또는 보다 일반적으로, 도 1의 예시적인 파이프라인(114)은 하드웨어, 소프트웨어, 펌웨어, 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합에 의해 구현될 수 있다. 따라서, 예를 들어, 예시적인 CT 엔진(102), 예시적인 기술어 버퍼 엔진(104), 예시적인 기술어 선택기(106), 예시적인 비용 매칭 엔진(108), 예시적인 비용 통합 엔진(110), 예시적인 SGBM 집계 엔진(112), 및/또는 보다 일반적으로, 예시적인 파이프라인(114) 중 임의의 것이 하나 이상의 아날로그 또는 디지털 회로(들), 논리 회로들, 프로그램가능한 프로세서(들), 프로그램가능한 제어기(들), 그래픽 처리 유닛(들)(GPU(들)), 디지털 신호 프로세서(들)(DSP(들)), 주문형 집적 회로(들)(ASIC(들)), 프로그램가능한 논리 디바이스(들)(PLD(들)) 및/또는 필드 프로그램가능한 논리 디바이스(들)(FPLD(들))에 의해 구현될 수 있다. 순전히 소프트웨어 및/또는 펌웨어 구현을 커버하기 위해 본 특허의 장치 또는 시스템 청구항들 중 임의의 것을 판독할 때, 예시적인 CT 엔진(102), 예시적인 기술어 버퍼 엔진(104), 예시적인 기술어 선택기(106), 예시적인 비용 매칭 엔진(108), 예시적인 비용 통합 엔진(110), 및/또는 예시적인 SGBM 집계 엔진(112) 중 적어도 하나는 소프트웨어 및/또는 펌웨어를 포함하는, 메모리, 디지털 다기능 디스크(DVD), 콤팩트 디스크(CD), 블루레이 디스크 등과 같은 비일시적 컴퓨터 판독가능한 저장 디바이스 또는 저장 디스크를 포함하는 것으로 본 명세서에서 명백히 정의된다. 또한, 도 1의 예시적인 파이프라인(114)은 도 1에 도시된 것들에 더하여 또는 이들 대신에 하나 이상의 요소, 프로세스 및/또는 디바이스를 포함할 수 있고/있거나 도시된 요소들, 프로세스들 및 디바이스들 중 둘 이상의 임의의 것 또는 모두를 포함할 수 있다. 본 명세서에서 사용되는 "통신한다", "통신하는" 식의 문구는, 그 변형 문구들을 포함하고, 직접 통신 및/또는 하나 이상의 중간 컴포넌트를 통한 간접 통신을 포함하고, 직접적인 물리적(예를 들어, 유선) 통신 및/또는 일정한 통신을 요구하지 않고, 오히려 주기적 간격들, 스케줄링된 간격들, 비주기적 간격들, 및/또는 1회 이벤트들에서의 선택적 통신을 추가적으로 포함한다.
도 2a는 도 1의 예시적인 파이프라인 최적화 시스템(100)의 예시적인 CT 엔진(102)의 개략도이다. 예시적인 CT 엔진(102)은 예시적인 우측 기술어(202)와 같은 비트 기술어 출력을 생성하여 이를 예시적인 기술어 버퍼 엔진(104)에 전송한다. 도 2a의 도시된 예에서, CT 엔진(102)은 스테레오 이미지 쌍의 이미지와 연관된 예시적인 픽셀 커널(206)의 예시적인 픽셀들(204)을 처리함으로써 우측 기술어(202)를 생성한다. 도 2a의 도시된 예에서, 각각의 픽셀(204)은 8 비트이다. 대안적으로, 예시적인 픽셀들(204) 각각은 10 비트 또는 임의의 다른 수의 비트일 수 있다. 도 2a의 예시적인 픽셀 커널(206)은 도 1의 예시적인 픽셀 커널(128)에 대응할 수 있다.
도 2a의 도시된 예에서, CT 엔진(102)은 입력 인터페이스(116)로부터 이미지 데이터를 획득한다. 도 2a의 예에서, 이미지 데이터는 스테레오 이미지 쌍의 이미지와 연관된 픽셀들(204)의 픽셀 값들을 포함한다. 예를 들어, 픽셀들(204)의 픽셀 값들은 스테레오 이미지 쌍(132)의 우측 이미지(120)의 도 1의 픽셀 커널(128)에 포함된 픽셀들의 픽셀 값들에 대응할 수 있다. 픽셀 값들은 픽셀의 휘도 성분 또는 강도에 대응한다.
도 2a의 도시된 예에서, CT 엔진(102)은 동작의 각각의 시간 인스턴스(예를 들어, 클록 사이클) 동안 입력 인터페이스(116)로부터 픽셀 값들의 예시적인 열(208)을 획득한다. 도 2a의 도시된 예에서, 픽셀 커널(206)은 5개의 픽셀을 각각 포함하는 5개의 열(208)을 포함하여 5×5 픽셀 커널을 형성한다. 대안적으로, 예시적인 CT 변환 엔진(102)은 7×7 픽셀 커널들, 7×9 픽셀 커널들, 또는 임의의 다른 픽셀 커널 크기를 처리할 수 있다.
도 2a의 도시된 예에서, CT 엔진(102)은 예시적인 픽셀 합 연산자(210)를 이용하여 픽셀 커널(206)의 열들(208)에 대한 픽셀 값들의 합을 계산한다. 도 2a의 도시된 예에서, 열들(208) 각각은 픽셀 합 연산자들(210) 중 하나에 결합된다. 픽셀 합 연산자(210) 각각은 픽셀 합 연산자(210)가 결합되는 열(208)의 5개의 픽셀 값의 합을 계산한다.
도 2a의 도시된 예에서, CT 엔진(102)은 예시적인 픽셀 평균 연산자(212)를 이용하여 픽셀 커널(206)의 열들(208)에 대한 픽셀 값들의 평균을 계산한다. 도 2a의 도시된 예에서, 픽셀 평균 연산자들(212) 각각은 픽셀 합 연산자들(210) 및 예시적인 모듈로 N 카운터(214) 중 하나에 결합된다. 예시적인 픽셀 평균 연산자(212) 각각은 명령받고/받거나 아니면 지시될 때 픽셀 평균 연산자(212)가 결합되는 열(208)의 5개의 픽셀 값의 평균을 계산한다.
도 2a의 도시된 예에서, CT 엔진(102)은 원형 버퍼 구현 또는 방법에 기반하여 클록 사이클마다 픽셀들(204)의 새로운 열을 검색한다. 예를 들어, CT 엔진(102)은 가외의 스위칭 또는 데이터 이동들을 피하기 위해 나머지 픽셀 커널(206)을 제자리에 유지하면서 가장 오래된 열을 새로운 열로 대체한다. 도 2a의 예시적인 CT 엔진(102)은 열들(208) 중 어느 것이 대체될 것인지에 대응하는 인덱스를 추적하고/하거나 아니면 유지하기 위해 예시적인 모듈로 N 카운터(214)를 이용한다. 예를 들어, 모듈로 N 카운터(214)가 0의 값(예를 들어, == 0)을 가질 때 열들(208) 중 제1 열이 대체되고, 모듈로 N 카운터(214)가 1의 값(예를 들어, == 1)을 가질 때 열들(208) 중 제2 열이 대체되며, 기타 등등이다. 예를 들어, 모듈로 N 카운터(214)는 하나 이상의 플립 플롭(예를 들어, D-타입 플립 플롭)을 이용하여 구현될 수 있다.
동작 시에, 예시적인 CT 변환 엔진(102)은 제1 클록 사이클 동안 열들(208a) 중 제1 열을 검색하고 저장한다. 제1 열(208a)에 결합된 예시적인 픽셀 합 연산자들(210) 중 제1 연산자는 제1 열(208a)에 포함된 5개의 픽셀 값의 합을 계산한다. 예시적인 픽셀 합 연산자들(210) 중 제1 연산자에 결합된 예시적인 픽셀 평균 연산자들(212) 중 제1 연산자는 픽셀 합 연산자(210)에 의해 계산된 합 및 제1 예시적인 열(208a)에 포함된 예시적인 픽셀들(204)의 양에 기반하여 5개의 픽셀 값의 평균을 계산한다. 예를 들어, 제1 열(208a)에 결합된 픽셀 합 연산자(210) 및 픽셀 평균 연산자(212)는 모듈로 N 카운터(214)에 대한 0의 값에 기반하여 트리거링된다. 예를 들어, 픽셀 합 연산자들(210) 및 픽셀 평균 연산자들(212) 중 제1 연산자들은 매 다섯번째 클록 사이클마다 트리거링될 수 있다. 예시적인 픽셀 평균 연산자들(212) 중 제1 연산자는 계산된 평균을 처리를 위해 예시적인 함수(FN)(216)에 전송한다.
제2 클록 사이클 동안, 예시적인 CT 변환 엔진(102)은 열들(208b) 중 제2 열을 검색하고 저장한다. 제2 예시적인 열(208b)에 결합된 예시적인 픽셀 합 연산자들(210) 중 제2 연산자는 제2 열(208b)에 포함된 5개의 픽셀 값의 합을 계산한다. 예시적인 픽셀 합 연산자들(210) 중 제2 연산자에 결합된 예시적인 픽셀 평균 연산자들(212) 중 제2 연산자는 픽셀 합 연산자(210)에 의해 계산된 합 및 제2 열(208b)에 포함된 픽셀들(204)의 양에 기반하여 5개의 픽셀 값의 평균을 계산한다. 예를 들어, 제1 열(208a)에 결합된 픽셀 합 연산자(210) 및 픽셀 평균 연산자(212)는 모듈로 N 카운터(214)에 대한 1의 값에 기반하여 트리거링된다. 예시적인 픽셀 평균 연산자들(212) 중 제2 연산자는 계산된 평균을 처리를 위해 예시적인 함수(216)에 전송한다.
예시적인 함수(216)가 예시적인 픽셀 커널(206)의 5개의 예시적인 열(208)에 대응하는 5개의 픽셀 평균을 수신하는 것(예를 들어, 모듈 N 카운터(214)가 5의 값을 가짐)에 응답하여, 함수(216)는 예시적인 픽셀 평균 연산자들(212)에 의해 계산된 부분 평균들에 기반하여 픽셀 커널(206)의 최종 평균 값을 계산한다. 예시적인 함수(216)는 또한 비교들을 수행하기 위한 예시적인 센서스 변환(220)을 위해 제1 예시적인 중심 픽셀(218a), 제2 예시적인 중심 픽셀(218b), 및 제3 예시적인 중심 픽셀(218c)을 포함하는 예시적인 중심 픽셀들을 검색한다. 예를 들어, CT 엔진(102)은 각각의 클록 사이클 동안 픽셀 커널(206)의 현재 중심 픽셀을 추적하도록 처리되는 입력 이미지(예를 들어, 도 1의 우측 이미지(120))의 일부 또는 윈도우(예를 들어, 도 1의 픽셀 커널(128))의 중심 픽셀을 연관시킨다. 예를 들어, 제1 중심 픽셀(218a)은 픽셀 커널(206)의 중심 픽셀에 대응한다. 예를 들어, 도 2a의 제1 중심 픽셀(218a)은 도 1의 우측 픽셀(126)에 대응할 수 있고, 도 2a의 픽셀 커널(206)은 도 1의 픽셀 커널(128)에 대응할 수 있다. 제2 예시적인 중심 픽셀(218b)은 윈도우가 자리이동될 때 입력 이미지의 다음 픽셀 커널(206)의 중심 픽셀에 대응한다. 예를 들어, 제2 중심 픽셀(218b)은 도 1의 픽셀 커널(128)에 대한 인접 픽셀 커널의 중심 픽셀에 대응할 수 있다.
도 2a의 도시된 예에서, 센서스 변환(220)은 픽셀들(204)의 픽셀 값들 각각을 픽셀 커널(206)의 중심 픽셀에 비교한다. 예를 들어, 센서스 변환(220)은 제1 중심 픽셀(218a)을 픽셀 커널(206)의 픽셀 값들 각각과 비교하고 그 비교에 기반하여 예시적인 프리-마스크 비트 기술어(222)를 생성할 수 있다. 도 2a의 도시된 예에서, 프리-마스크 비트 기술어(222)는 25개의 픽셀(예를 들어, 25개의 픽셀 값)을 갖는 픽셀 커널(206)에 기반한 25 비트 기술어이다. 일부 예들에서, 프리-마스크 비트 기술어(222)는 픽셀 커널(206)이 7×7 픽셀 커널일 때 49 비트 기술어일 수 있다. 다른 예들에서, 프리-마스크 비트 기술어(222)는 픽셀 커널(206)이 7×9 픽셀 커널일 때 63 비트 기술어일 수 있다.
도 2a의 도시된 예에서, 센서스 변환(220)은 대응하는 픽셀 값이 비교 포인트보다 작을 때 픽셀들(204) 중 하나에 0을 할당한다. 예를 들어, 비교 포인트는 중심 픽셀들(218a, 218b, 218c)의 픽셀 값 또는 처리되고 있는 픽셀 커널(206)의 픽셀 값들의 평균일 수 있다. 대안적으로, 비교 포인트는 비교되는 픽셀 값이 정의된(임계 값) 마진만큼 중심 픽셀 값보다 더 큰 것을 보장하기 위해 중심 픽셀의 픽셀 값에 값을 가산하는 것에 기반하여 계산된 임계 값일 수 있다. 도 2a의 도시된 예에서, 센서스 변환(220)은 대응하는 픽셀 값이 비교 포인트보다 클 때 픽셀들(204) 중 하나에 1을 할당한다.
도 2a의 예시적인 센서스 변환(220)은 예시적인 프리-마스크 비트 기술어(222)를 예시적인 연결 논리(224)에 전송하여 우측 기술어(202)를 생성한다. 도 2a의 예시적인 우측 기술어(202)는 예시적인 프리-마스크 비트 기술어(222)에 기반한 예시적인 포스트-마스크 기술어(226) 및 예시적인 중심 픽셀들(218a, 218b, 218c)(예를 들어, 8 비트 중심 픽셀) 중 대응하는 것을 포함하는 32 비트 기술어이다.
도 2a의 도시된 예에서, 연결 논리(224)는 제로 레이턴시, 랜덤 비트 연결 논리에 대응한다. 예를 들어, 연결 논리(224)는 입력들을 처리할 때 무시할 만한 레이턴시를 갖는 하드웨어 논리에 대응할 수 있다. 도 2a의 예시적인 연결 논리(224)는 예시적인 연결 마스크(228)를 예시적인 프리-마스크 비트 기술어(222)에 적용함으로써 예시적인 프리-마스크 비트 기술어(222)의 25 비트를 예시적인 우측 기술어(202)의 24 비트로 처리한다. 예시적인 CT 엔진(102)은 예시적인 연결 논리(224)에 포함된 비트별 연산들을 수행하기 위해 예시적인 연결 마스크(228)를 이용한다. 예시적인 연결 마스크(228)를 이용하여, 예시적인 CT 엔진(102)은, 1들이 연결 마스크(228)에 위치되는 곳에 기반하여, 예시적인 프리-마스크 비트 기술어(222)의 비트들을 온 또는 오프(예를 들어, 비트를 선택하거나 비트를 선택하지 않음)로 설정할 수 있다. 도 2a의 예시적인 연결 마스크(228)는 64 비트이다. 대안적으로, 예시적인 연결 마스크(228)는 32 비트 또는 임의의 다른 양의 비트일 수 있다.
일부 예들에서, 연결 논리(224)는 제1 비트 세트(예를 들어, 0 비트들의 스트링)를, 연결 마스크(228)에서의 1들의 위치들과 동일한 순번을 갖는 프리-마스크 비트 기술어(222)에서의 비트들에 대응하는 제2 비트 세트에 연결한다. 예시적인 16 비트 입력 스트림 및 예시적인 대응하는 16 비트 마스크 스트림에 대해, 연결 논리(224)의 논리가 아래에 기재된다:
예시적인 입력 스트림:
Figure pct00004
예시적인 마스크 스트림:
Figure pct00005
예시적인 출력 스트림:
Figure pct00006
예를 들어, 입력 스트림의 인덱스들 1, 2, 5, 6, 9 및 13은 마스크 스트림에서의 1들의 위치들과 동일한 순번(예를 들어, 비트 위치)을 갖는다. 예를 들어, 마스크 스트림에서의 1들과 동일한 순번의 입력 스트림의 값들은
Figure pct00007
이다. 예시적인 연결 논리(224)는 전술한 바와 같이 0들의 스트링을
Figure pct00008
의 값들에 연결하여 출력 스트림을 생성한다. 도 2a의 예시적인 연결 논리(224)는 25 비트, 49 비트, 63 비트 등의 입력 스트림들 및 64 비트의 대응하는 마스크 스트림(예를 들어, 연결 마스크)에 대해 전술한 예시적인 프로세스를 구현할 수 있다. 대안적으로, 예시적인 연결 마스크(228)는 상이한 양의 비트(예를 들어, 32 비트)를 포함할 수 있다. 도 2a의 예시적인 연결 논리(224), 및/또는 보다 일반적으로 예시적인 CT 엔진(102)은 예시적인 우측 기술어(202)를 도 1의 예시적인 기술어 버퍼 엔진(104)에 전송한다.
도 2b는 도 1의 예시적인 파이프라인 최적화 시스템(100)의 예시적인 기술어 버퍼 엔진(104)의 개략도이다. 예시적인 기술어 버퍼 엔진(104)은 (1) 도 1 및 도 2a의 예시적인 CT 변환 엔진(102) 또는 도 1의 제1 예시적인 기입 인터페이스(130) 중 적어도 하나와 (2) 도 1의 예시적인 기술어 선택기(106) 및/또는 예시적인 비용 매칭 엔진(108) 사이의 데이터 교환을 전송하고/하거나 아니면 용이하게 하는 버퍼이다.
도 2b의 도시된 예에서, 기술어 버퍼 엔진(104)은 CT 엔진(102)으로부터 우측 기술어(202)를 획득한다. 도 2b의 예시적인 우측 기술어(202)는 CT 엔진(102)에 의해 최종 처리된 중심 픽셀들(218a, 218b, 218c) 중 하나에 대응하는 32 비트 기술어이다. 대안적으로, 예시적인 우측 기술어(202)는 64 비트 또는 임의의 다른 수의 비트일 수 있다.
도 2b의 도시된 예에서, 기술어 버퍼 엔진(104)은 제1 기입 인터페이스(130)로부터 예시적인 좌측 기술어(230)를 획득한다. 도 2b의 도시된 예에서, 좌측 기술어(230)는 도 1의 좌측 픽셀(124)에 대응하는 32 비트 기술어이다. 대안적으로, 예시적인 좌측 기술어(230)는 64 비트 또는 임의의 다른 수의 비트일 수 있다. 예시적인 기술어 버퍼 엔진(104)은 예시적인 좌측 기술어(230)를 예시적인 비용 매칭 엔진(108)에 전달한다. 대안적으로, 예시적인 기술어 버퍼 엔진(104)은 예시적인 비용 매칭 엔진(108)에 전송되도록 요청될 때까지 예시적인 좌측 기술어(230)를 일시적으로(예를 들어, 한 클록 사이클, 두 클록 사이클 등 동안) 저장할 수 있다.
동작 시에, 제1 페이즈 동안, 예시적인 기술어 버퍼 엔진(104)은 예시적인 CT 엔진(102)에 의해 생성된 바와 같은 도 2a의 포스트-마스크 비트 기술어(202)를 획득하고 이를 저장한다. 예를 들어, 제1 페이즈 동안, 기술어 버퍼 엔진(104)은 CT 엔진(102)에 의해 생성된 바와 같은 도 1의 우측 이미지(120)의 픽셀들과 연관된 하나 이상의 우측 기술어를 저장한다. 예시적인 기술어 버퍼 엔진(104)은 예시적인 포스트-마스크 비트 기술어(202)를 예시적인 원형 버퍼(232)에 저장한다. 도 2b의 예시적인 원형 버퍼(232)는 1280개의 워드를 저장하며, 여기서 각각의 워드는 32 비트이지만, 본 명세서에 개시된 예들은 이에 제한되지 않는다. 예시적인 원형 버퍼(232)는 1280개의 워드를 보유하여 예시적인 우측 이미지(120)의 라인 내의 각각의 픽셀에 대한 비트 기술어를 저장할 수 있다. 대안적으로, 예시적인 원형 버퍼(232)는 1280개보다 더 적거나 더 많은 워드를 저장할 수 있고/있거나, 각각의 워드는 32 비트보다 더 적거나 더 많은 비트일 수 있다.
제2 페이즈 동안, 각각의 클록 사이클에 있어서, 예시적인 기술어 버퍼 엔진(104)은 도 1의 좌측 이미지(118)의 픽셀(예를 들어, 도 1의 좌측 픽셀(124))에 대응하는 예시적인 좌측 기술어(230)를 획득한다. 제2 페이즈 동안, 예시적인 기술어 버퍼 엔진(104)은 예시적인 좌측 기술어(230)를 예시적인 비용 매칭 엔진(108)으로 전송한다. 대안적으로, 예시적인 기술어 버퍼 엔진(104)은 CT 엔진(102)으로부터 수신된 좌측 기술어를 전송할 수 있다. 제2 클록 사이클 동안, 예시적인 기술어 버퍼 엔진(104)은 각각의 우측 기술어(234)가 32 비트인 176개의 예시적인 우측 기술어들(234)을 예시적인 기술어 선택기(106)에 전송하지만, 본 명세서에 개시된 예들은 이에 제한되지 않는다. 예를 들어, 기술어 버퍼 엔진(104)은 원형 버퍼(232)로부터 첫 번째 인덱스(RD_X)에서 시작하여 176번째 인덱스(RD_X-175)까지의 176개의 저장된 기술어를 판독할 수 있고, 전송을 위해 예시적인 출력 버퍼(233)에서 저장된 기술어들을 출력할 수 있다. 예를 들어, 용어 X는 현재 클록 사이클을 지칭한다. 예를 들어, 제1 클록 사이클 동안 X=1이고, 제2 클록 사이클 동안 X=2이며, 기타 등등이다. 현재 클록 사이클이 인덱스를 네거티브가 되게 하는 예들(예를 들어, X=2는 인덱스 RD_X-175가 RD_-173과 동일하게 함)에서, 기술어 버퍼 엔진(104)은 네거티브 인덱스들을 최저 비-네거티브 인덱스로 대체한다. 예를 들어, 클록 사이클이 2일 때, 기술어 버퍼 엔진(104)은 RD_0, RD_1, 및 RD_2를 판독하고, 여기서 잔여 인덱스들(예를 들어, RD_X-174, RD_X-175 등)은 RD_0과 연관된 기술어로 대체된다. 이러한 예들에서, 기술어 버퍼 엔진(104)은 700 메가헤르츠(MHz)의 주파수에 기반하여 초당 대략 4 기가바이트(GB)에 대응하는 클록 사이클당 5664 비트(예를 들어, 5664 비트/클록 사이클 = ((1 좌측 기술어 × 32 비트/좌측 기술어) + (176개의 우측 기술어 × 32 비트/우측 기술어))를 전송한다.
제2 페이즈 동안, 각각의 클록 사이클에 있어서, 예시적인 기술어 선택기(106)는 아래의 수학식 2에 기반하여 176개의 예시적인 우측 기술어들(234)을 96개의 우측 기술어들(234)로 압축하고/하거나 아니면 감소시키기 위해 압신 동작(예를 들어, 디스패리티 압신 동작)을 수행한다.
Figure pct00009
위의 수학식 2의 예에서, 예시적인 기술어 선택기(106)는 예시적인 비용 매칭 엔진(108)에 의해 계산될 디스패리티들의 양(D)(본 명세서에서는 디스패리티 양(D)으로도 지칭됨)을 결정한다. 도 2b의 도시된 예에서, 기술어 선택기(106)는 D를 96으로 결정한다. 예시적인 기술어 선택기(106)는 D = 96, 제1 압신 파라미터 N = 48, 제2 압신 파라미터 M = 32, 및 제3 압신 파라미터 T = 16에 기반하여 예시적인 기술어 버퍼 엔진(104)으로부터 176개의 우측 기술어(234) 중 96개를 선택한다. 예를 들어, 기술어 선택기(106)는 후술하는 바와 같이 N개의 디스패리티들에 대해 픽셀 단위로 매칭시키고, M개의 디스패리티들에 대해 2번째 픽셀마다 매칭시키고, T개의 디스패리티들에 대해 4번째 픽셀마다 매칭시킴으로써 176개의 우측 기술어(234)를 96개의 우측 기술어(234)로 압축할 수 있다:
176개의 우측 기술어(234) 중 기술어 1 내지 기술어 48의 각각의 기술어는 N = 48에 기반하여 선택되어 48개의 기술어를 생성하고;
176개의 우측 기술어(234) 중 기술어 49 내지 기술어 112의 매 2번째 기술어는 M = 32에 기반하여 선택되어 32개의 기술어를 생성하며;
176개의 우측 기술어(234) 중 기술어 113 내지 기술어 176의 매 4번째 기술어는 T = 16에 기반하여 선택되어 16개의 기술어를 생성한다. 예시적인 기술어 선택기(106)는 전술한 바와 같이 N, MT의 값들에 기반하여 176개의 우측 기술어(234) 중 96개(예를 들어, 96 = 48 + 32 + 16)를 선택할 수 있다. 대안적으로, N, M 및/또는 T의 임의의 다른 값들이 이용될 수 있다. 176개의 우측 기술어(234) 중 96개를 선택하는 것에 응답하여, 예시적인 기술어 선택기(106)는 96개의 기술어를 예시적인 비용 매칭 엔진(108)에 전송한다.
제2 페이즈 동안, 각각의 클록 사이클에 있어서, 예시적인 기술어 버퍼 엔진(104)은 도 1의 좌측 이미지(118)에 포함된 제2 픽셀에 대응하는 다른 좌측 기술어(230)를 저장 및/또는 전송한다. 예를 들어, 제2 픽셀은 좌측 이미지(118)에서 좌측 픽셀(124)의 우측으로의 또는 좌측 픽셀(124) 아래의 인접한 라인 상의 인접 픽셀일 수 있다. 제2 페이즈 동안, 예시적인 기술어 버퍼 엔진(104)은 예시적인 원형 버퍼(232)에 다른 예시적인 우측 기술어(202)를 저장한다. 예를 들어, 기술어 버퍼 엔진(104)은 우측 기술어(202)를 원형 버퍼(232) 내의 빈 또는 비-점유된 위치에 저장할 수 있거나, 원형 버퍼(232) 내의 저장된 기술어들 중 가장 오래된 것을 대체할 수 있다.
도 2c는 도 1의 예시적인 파이프라인 최적화 시스템(100)의 예시적인 비용 매칭 엔진(108)의 개략도이다. 예시적인 비용 매칭 엔진(108)은 도 1의 예시적인 좌측 픽셀(124)과 연관된 예시적인 픽셀 강도(236)를 식별하고/하거나 아니면 결정하고, 도 2b의 예시적인 좌측 기술어(230) 및 예시적인 우측 기술어들(234)에 기반하여 좌측 픽셀(124)과 연관된 예시적인 디스패리티들(238)을 결정한다.
도 2c의 도시된 예에서, 비용 매칭 엔진(108)은 픽셀 강도(236)를 식별하고, 예시적인 비용 매칭 셀들(240)을 이용하여 디스패리티들(238)을 결정한다. 도 2c의 도시된 예에서는, 96개의 비용 매칭 셀(240)이 있다. 대안적으로, 예시적인 비용 매칭 엔진(108)은 96개보다 더 적거나 더 많은 예시적인 비용 매칭 셀들(240)을 이용할 수 있다. 예시적인 비용 매칭 셀들(240) 각각은 RD[0], RD[1], RD[127] 등에 의해 표시된 좌측 기술어(230) 및 예시적인 우측 기술어들(234) 중 하나를 획득한다. 예시적인 비용 매칭 셀들(240)은 도 1의 우측 이미지(120)에 포함된 픽셀 커널(128)에서 좌측 픽셀(124)과 대응하는 픽셀들 사이의 디스패리티들을 계산함으로써 좌측 픽셀(124)이 카메라 소스로부터 얼마나 가까운지/먼지를 나타내는 매칭 비용을 결정한다. 예시적인 비용 매칭 셀들(240)은 아래의 수학식들 3 및 4에 기재된 예시적인 비용 함수에 기반하여 디스패리티들을 계산한다:
Figure pct00010
Figure pct00011
위의 수학식 3의 예에서, 매칭 비용(COMB_COST)은 스테레오 이미지 쌍의 제1 이미지에서의 제1 픽셀 및 제2 이미지에서의 제2 픽셀에 대한 이미지 위치들의 유사성을 측정 및/또는 아니면 정량화하는 파라미터를 나타낸다. 위의 수학식 3의 예는 2개의 픽셀 사이의 상관을 감소시키는(예를 들어, 최소화하는) 산술 함수이다. 예를 들어, COMB_COST에 대한 값이 더 작을수록, 2개의 평면들로부터의 2개의 픽셀들(예를 들어, 도 1의 좌측 이미지(118) 및 우측 이미지(120)) 사이의 상관이 더 나아진다.
위의 수학식 3의 예에서, 용어들
Figure pct00012
Figure pct00013
는 프로그램가능한 값들(예를 들어, 일정한 값들)이다. 일부 예들에서,
Figure pct00014
Figure pct00015
는 0 내지 15의 범위일 수 있는 값들이다. 예를 들어,
Figure pct00016
는 8의 값을 가질 수 있고,
Figure pct00017
는 12의 값을 가질 수 있다. 위의 수학식 3의 예에서, AD는 2개의 픽셀 값들 사이의 절대 차이이다. 예를 들어, 비용 매칭 셀(240)은 좌측 기술어(230)의 처음 8 비트와 대응하는 우측 기술어(234)의 처음 8 비트 사이의 차이를 계산함으로써 절대 차이를 결정할 수 있다. 위의 수학식 3의 예에서, CTC는 해밍 거리에 기반한 2개의 픽셀들 사이의 센서스 변환 비용이다. 예를 들어, CTC는 좌측 기술어(230)와 대응하는 우측 기술어(234) 사이의 비트별 XOR 연산에서의 1들의 수에 기반한 해밍 거리이다. 위의 수학식 3의 예에서, "<<"는 좌측 자리이동 연산을 지칭한다. 이와 같이, "CTC << 3"은 3 비트만큼 좌측으로 CTC를 자리이동시키는 것을 나타낸다.
위의 수학식 4의 예에서, ">>"는 우측 자리이동 연산을 지칭한다. 이와 같이, "COMB_COST >> 5"는 5 비트만큼 우측으로 COMB_COST를 자리이동시키는 것을 나타낸다. 위의 수학식 4의 예에서, 예시적인 비용 매칭 셀들(240)은 자리이동된 COMB_COST 값을 0 내지 127의 범위의 정수로 클램핑한다. 도 2c의 도시된 예에서, 비용 매칭 셀들(240)은 위의 수학식들 3 및 4의 예들을 이용함으로써 디스패리티들(238)을 생성한다. 예를 들어, 비용 매칭 셀들(240) 각각은 96개의 디스패리티들(238) 중 하나를 생성하고, 여기서 96개의 디스패리티들은 좌측 이미지(118)에서의 픽셀들 중 하나(예를 들어, 좌측 픽셀(124))에 대응한다. 예시적인 비용 매칭 엔진(108)은 좌측 픽셀마다 예시적인 픽셀 강도(236) 또는 96개의 디스패리티(238) 중 적어도 하나를 예시적인 비용 통합 엔진(110)으로 전송한다.
도 2d는 도 1의 예시적인 파이프라인 최적화 시스템(100)의 예시적인 비용 통합 엔진(110)의 개략도이다. 도 2d의 도시된 예에서, 비용 통합 엔진(110)은 도 2c의 비용 매칭 엔진(108)으로부터 도 2c의 픽셀 강도(236)를 수신 및/또는 아니면 획득한다. 도 2d의 도시된 예에서, 비용 통합 엔진(110)은 비용 매칭 엔진(108)으로부터 도 2c의 96개의 디스패리티들(238)을 수신 및/또는 아니면 획득한다.
도 2d의 도시된 예에서, 비용 통합 엔진(110)은 예시적인 배럴 자리이동기들(241)에서의 데이터 이동들을 감소시킴으로써 파이프라인 최적화 시스템(100)의 동작에 요구되는 전력을 감소시킨다. 도 2d의 예시적인 비용 통합 엔진(110)은 8개의 예시적인 배럴 자리이동기들(241)을 포함한다. 대안적으로, 예시적인 비용 통합 엔진(110)은 8개보다 더 적거나 더 많은 배럴 자리이동기들(241)을 포함할 수 있다. 예를 들어, 비용 통합 엔진(110)은 원형 방식으로 배럴 자리이동기들(241)에 포함된 데이터를 대체한다. 이러한 예들에서, 비용 통합 엔진(110)은 배럴 자리이동기들(241) 중 어느 것이 배럴 자리이동기들(241)로부터 가장 오래된 데이터를 포함하는지에 대응하여 배럴 자리이동기들(241) 중 하나(예를 들어, #0 배럴 자리이동기, #1 배럴 자리이동기 등)에서 데이터를 대체한다. 예시적인 배럴 자리이동기들(241) 각각은 96 비트를 저장하고, 각각의 비트는 비용 매칭 엔진(108)으로부터 검색된 디스패리티들(238) 중 하나에 대응하지만, 본 명세서에 개시된 예들은 이에 제한되지 않는다. 예를 들어, 96개의 디스패리티들(238) 각각은 1 비트(예를 들어, 96개의 디스패리티들이 총 96 비트에 대응함)이고, 배럴 자리이동기들(241) 중 하나에 완전히 저장될 수 있다.
도 2d의 도시된 예에서, 비용 통합 엔진(110)은 비용 매칭 엔진(108)으로부터 수신된 디스패리티들(238)을 가장 새로운 데이터로부터 가장 오래된 데이터로 재배열한다. 예를 들어, 비용 통합 엔진(110)은 96개의 디스패리티(238)를 재배열할 수 있고, 여기서 가장 새로운 픽셀 데이터와 연관된 디스패리티가 순번 0으로 설정되고, 가장 오래된 픽셀 데이터가 순번 95로 설정된다. 예시적인 배럴 자리이동기들(241)을 통해 예시적인 비용 매칭 엔진(108)으로부터의 데이터를 재배열하는 것에 응답하여, 비용 통합 엔진(110)은 예시적인 재배열된 데이터(242)를 예시적인 SGBM 집계 엔진(112)으로 전송한다. 예시적인 재배열된 데이터(242)는 예시적인 비용 매칭 엔진(108)으로부터 검색된 96개의 디스패리티(238)에 기반하여 가장 새로운 재배열된 데이터를 포함하여, 예시적인 배럴 자리이동기들(241) 각각에 저장된 데이터를 포함한다. 도 2d의 도시된 예의 예시적인 재배열된 데이터(242)는 96 바이트(예를 들어, 96 바이트 = (12 바이트/배럴 자리이동기) × 8개의 배럴 자리이동기)이다.
도 2e는 도 1의 예시적인 파이프라인 최적화 시스템(100)의 예시적인 SGBM 집계 엔진(112)의 개략도이다. 예시적인 SGBM 집계 엔진(112)은 비용 맵 또는 디스패리티 맵을 집계하기 위해 반 전역 기술을 이용한다. 디스패리티 맵(예를 들어, 그래프, 플롯, 테이블 등)은 깊이의 함수로서의 디스패리티 값의 매핑에 대응할 수 있다. 예를 들어, 디스패리티 맵은 카메라에 의해 캡처된 장면에서 이미지 특징(예를 들어, 컵, 동물, 얼굴 등)에 대한 카메라의 거리를 결정하는 함수를 생성하는데 이용될 수 있으며, 카메라와 이미지 특징 사이의 거리는 깊이로서 지칭된다. 예를 들어, SGBM 집계 엔진(112)은 예시적인 좌측 이미지(118)에서의 각각의 픽셀에 대한 디스패리티 값들의 세트에 기반하여 디스패리티 맵을 생성한다. 이러한 예들에서, SGBM 집계 엔진(112)은 깊이 범위(예를 들어, 64개의 디스패리티들, 96개의 디스패리티들 등의 깊이 범위)에 대응하는 디스패리티들의 양을 계산하고 디스패리티들을 좌측 픽셀(124)과 카메라 소스 사이의 깊이들 또는 거리들에 매핑함으로써 좌측 픽셀(124)에 대한 디스패리티 맵을 생성할 수 있다. 디스패리티 맵의 생성에 응답하여, 예시적인 SGBM 집계 엔진(112)은 디스패리티 맵의 최소 값을 결정할 수 있다. 일부 예들에서, 이러한 최소 값은 좌측 픽셀(124)과 우측 이미지(120)의 픽셀들 중의 매칭 픽셀 사이의 좌표들(예를 들어, 수평 좌표들, 수직 좌표들 등)에서의 차이에 대응한다. 다른 예들에서, 이러한 최소 값은 카메라 소스에 대한 좌측 픽셀(124)의 깊이에 대응한다.
반 전역 기술은 동적 프로그래밍 또는 신뢰 전파로 알려진 알고리즘들의 부류와 연관된다. 신뢰 전파에서, 신뢰 또는 한계 비용(예를 들어, 추정된 값)은 특정 경로를 따라 전파되며, 고려되는 이전 픽셀(예를 들어, 도 1의 좌측 픽셀(124))은 현재 픽셀(예를 들어, 좌측 픽셀(124)의 우측으로의 인접 픽셀)에서 행해지는 선택에 영향을 미친다. 예시적인 SGBM 집계 엔진(112)은 경로 비용
Figure pct00018
을 생성하기 위해 도 1의 우측 픽셀 커널(128)에 포함된 픽셀들과 좌측 픽셀(124) 사이의 디스패리티들에 기반하여 전역 2차원(2D) 에너지 함수를 감소시키고/시키거나 아니면 최소화하며, 여기서
Figure pct00019
은 평가된 경로들의 수이다. 예시적인 SGBM 집계 엔진(112)은 아래의 수학식 5에 기재된 바와 같이 각각의 경로에 대한 경로 비용을 결정한다:
Figure pct00020
예시적인 SGBM 집계 엔진(112)은 위의 수학식 5의 예를 이용하여 경로(예를 들어, 경로 방향)에서의 이전 픽셀의 위치에서 아마도 추가된 페널티들 P 1P 2를 포함한 최소 경로 비용을 탐색하고, 최소 경로 비용을 현재 픽셀 x 및 디스패리티 d에서의 비용 값 C(x, y, d)에 추가한다.
위의 수학식 5의 예에서, 제1 항 C(x, y, d)는 디스패리티(d)를 갖는 제2 이미지에서의 제2 픽셀(y)(예를 들어, 도 1의 우측 픽셀(126))과 제1 이미지에서의 제1 픽셀(x)(예를 들어, 도 1의 좌측 픽셀(124)) 사이의 매칭 비용 C를 나타낸다. 예를 들어, 제1 항은 경로 r에서의 픽셀의 매칭 비용을 나타낸다. 제2 항(E(x-1, y, d))은 디스패리티를 갖는 제2 픽셀과 제1 픽셀 (x-1)에 대한 인접 픽셀 사이의 매칭 비용에 대응하는 제1 에너지를 나타낸다. 예를 들어, 제2 항은 경로 r에서의 이전 픽셀 (x-1)의 최저 매칭 비용을 추가한다. 제3 항(E(x-1, y, d-1) + P 1)은 인접 픽셀(d-1)과 연관된 디스패리티 값을 갖는 제2 픽셀과 인접 픽셀 사이의 매칭 비용에 대응하는 제2 에너지를 나타내며, 여기서 제1 페널티 값 P 1이 디스패리티 변경들에 대해 매칭 비용에 추가된다. 현재 픽셀 결과 E(x, y, d)에서 이전 집계 결과(E(x-1, y, d))의 영향을 억제하고/하거나 아니면 증가시키기 위해 제1 페널티 값이 매칭 비용에 추가된다. 제4 항(
Figure pct00021
)은 전체 항으로부터 이전 픽셀의 최소 경로 매칭 비용을 감산함으로써 경로 매칭 비용들을 지속적으로 증가시키는 것을 방지한다.
예시적인 SGBM 집계 엔진(112)은 아래의 수학식 6에 기재된 바와 같이 각각의 경로에 대한 에너지들의 합을 계산한다:
Figure pct00022
위의 수학식 6의 예에서, 예시적인 SGBM 집계 엔진(112)은 3개의 경로 비용의 합을 계산한다. 대안적으로, 예시적인 SGBM 집계 엔진(112)은 도 1의 예시적인 파이프라인(114)의 하나 이상의 컴포넌트의 구성에 기반하여 3개보다 더 적거나 더 많은 경로 비용들을 계산할 수 있다. 예시적인 SGBM 집계 엔진(112)은 각각의 경로에 대한 최소 디스패리티를 탐색하고/하거나 아니면 결정함으로써 도 1의 좌측 픽셀(124)과 도 1의 우측 픽셀(126) 사이의 최종 디스패리티를 결정한다. 예시적인 SGBM 집계 엔진(112)은 디스패리티 맵을 생성하기 위해 도 1의 좌측 이미지(118)의 각각의 픽셀에 대한 최종 디스패리티를 저장한다.
일부 예들에서, 각각의 픽셀에의 입력 경로인 것으로 복수의 경로가 고려된다. 도 2e의 도시된 예에서, SGBM 집계 엔진(112)은 현재 픽셀의 좌측 이동에 대응하는 제1 경로(예를 들어, 수평 경로), 현재 픽셀의 우측 이동에 대응하는 제2 경로(예를 들어, 수평 경로), 또는 현재 픽셀 위로의 수직 이동에 대응하는 제3 경로(예를 들어, 수직 경로) 중 적어도 하나를 구현한다. 이러한 예들에서, 고려되는 경로들의 양은 이미지 데이터를 처리하기 위해 SGBM 집계 엔진(112)에 의해 이용될 파라미터이다.
도 2e의 예시적인 SGBM 집계 엔진(112)은 예시적인 입력 비용 버퍼(250) 및 예시적인 비용 집계 셀들(252)을 포함한다. 예시적인 입력 비용 버퍼(250)는 제1 예시적인 픽셀 버퍼(254) 및 제2 예시적인 픽셀 버퍼(256)를 포함한다. 예시적인 픽셀 버퍼들(254, 256) 각각은 예시적인 비용 통합 엔진(110)으로부터 검색된 예시적인 픽셀 강도(236)의 비트들의 양에 대응하는 8 비트이다. 대안적으로, 예시적인 픽셀 강도(236)가 10 비트일 때, 제1 및 제2 예시적인 픽셀 버퍼들(254, 256)은 10 비트일 수 있다. 제1 예시적인 픽셀 버퍼(254)는 처리되고 있는 현재 픽셀 값(예를 들어, 도 1의 좌측 픽셀(124))을 획득하고 이를 저장한다. 제2 예시적인 픽셀 버퍼(256)는 이전에 처리된 픽셀 값(예를 들어, 좌측 픽셀(124)의 좌측으로의 인접 픽셀)을 획득하고 이를 저장한다. 제2 예시적인 픽셀 버퍼(256)는 이전에 처리된 픽셀 값(8 비트 Y)을 제1 예시적인 룩업 테이블(LUT)(258) 및 제2 예시적인 LUT(260)에 매핑 및/또는 아니면 출력한다. 예시적인 SGBM 집계 엔진(112)은 제1 예시적인 우회 경로(262)를 통해 예시적인 픽셀 강도(236)를 제1 및 제2 예시적인 LUT(258, 260)에 전송한다.
도 2e의 도시된 예에서, 제1 LUT(258)는 수평 출력에 대응한다. 예를 들어, SGBM 집계 엔진(112)은 현재 픽셀의 픽셀 강도(236)를 제1 우회 경로(262)를 통해 제1 LUT(258)에 전송하고 이전에 처리된 픽셀의 픽셀 강도를 제2 픽셀 버퍼(256)를 통해 제1 LUT(258)에 전송할 수 있다. 이러한 예들에서, 제1 LUT(258)는 현재 픽셀 값과 이전에 처리된 픽셀 값 사이의 절대 차이를 계산하고, 제1 페널티 값(P 1) 또는 제2 페널티 값(P 2) 중 적어도 하나에 절대 차이를 매핑한다. 이러한 매핑에 응답하여, 제1 예시적인 LUT(258)는 제1 페널티 값 또는 제2 페널티 값 중 적어도 하나를 예시적인 비용 집계 셀들(252) 각각에 전송한다.
도 2e의 도시된 예에서, 제2 LUT(260)는 수직 출력에 대응한다. 예를 들어, SGBM 집계 엔진(112)은 현재 픽셀 값을 제1 우회 경로(262)를 통해 제2 LUT(260)에 전송하고 이전에 처리된 픽셀 값을 제2 픽셀 버퍼(256)를 통해 제2 LUT(260)에 전송할 수 있다. 이러한 예들에서, 제2 LUT(260)는 현재 픽셀 값과 이전에 처리된 픽셀 값 사이의 절대 차이를 계산하고, 제1 페널티 값(P 1) 및 제2 페널티 값(P 2) 중 적어도 하나에 절대 차이를 매핑한다. 이러한 매핑에 응답하여, 제2 예시적인 LUT(260)는 제1 페널티 값 또는 제2 페널티 값 중 적어도 하나를 예시적인 비용 집계 셀들(252) 각각에 전송한다.
도 2e의 도시된 예에서, 입력 비용 버퍼(250)는 예시적인 입력 비용 저장소(264)를 포함한다. 도 2e의 예시적인 입력 비용 저장소(264)는 1280개의 워드들을 포함하며, 워드들 각각은 768 비트이지만, 본 명세서에 개시된 예들은 이에 제한되지 않는다. 예를 들어, 워드들 각각은 예시적인 비용 통합 엔진(110)으로부터 수신된 예시적인 재배열된 데이터(242) 중 수신된 하나에 대응한다. 예를 들어, 재배열된 데이터(242)의 인스턴스는 96 바이트 또는 768 비트이다. 예시적인 입력 비용 저장소(264)는 예시적인 재배열된 데이터(242)의 이전에 처리된 세트를 예시적인 비용 집계 셀들(252) 각각에 전송한다. 예시적인 SGBM 집계 엔진(112)은 예시적인 재배열된 데이터(242)의 현재 세트를 제2 예시적인 우회 경로(266)를 통해 비용 집계 셀들(252) 각각에 전송한다.
도 2e의 도시된 예에서, SGBM 집계 엔진(112)은 관심 있는 각각의 경로와 연관된 매칭 비용들을 평가 및/또는 아니면 정밀화하기 위해 96개의 비용 집계 셀들(252)을 포함하지만, 명료성을 위해 96개 중 4개만이 도시되어 있다. 예를 들어, 비용 집계 셀들(252) 각각은 현재 픽셀의 수평 경로 또는 수직 경로 중 적어도 하나와 연관된 매칭 비용을 계산한다. 예시적인 비용 집계 셀들(252) 각각은 예시적인 수직 집계 비용(TOP_AGR)(268) 및 예시적인 수평 집계 비용(HOR_AGR)(270)을 계산한다. 예를 들어, 비용 집계 셀들(252) 중 첫 번째 셀은 T[K+3][X]와 연관된 수직 집계 비용(T)을 생성하고, 여기서 X는 입력 스트림의 픽셀이고, K는 X 픽셀의 96개의 비용 매칭 세트의 인덱스이다. 예를 들어, 집계 방향(예를 들어, 좌측->우측 방향, 우측->좌측 방향 등)의 입력 스트림은 이미지 라인(예를 들어, 좌측 이미지(118)의 라인)의 폭을 갖는 픽셀들의 어레이이고, 여기서 픽셀들 각각은 픽셀에 대한 매칭 비용들을 나타내는 96개의 대응 비트들을 갖는다. 예를 들어, [K+3][X]는 입력 스트림 인덱스 X에 대한 96개의 매칭 비용들의 K+3 인덱스를 나타낸다. 이러한 예들에서, 비용 집계 셀들(252) 중 첫 번째 셀은 A[K+3][X]와 연관된 수평 집계 비용(A)을 생성한다.
도 2e의 도시된 예에서, 비용 집계 셀들(252) 각각은 예시적인 중간 수직 집계 버퍼(274) 및 예시적인 수직 집계 버퍼(276)를 통해 수직 집계 비용(268)을 예시적인 출력 집계 버퍼(272)에 출력한다. 도 2e의 예시적인 출력 집계 버퍼(272)는 1280개의 워드들을 저장하고, 여기서 워드들 각각은 768 비트이지만, 본 명세서에 개시된 예들은 이에 제한되지 않는다. 예시적인 출력 집계 버퍼(272)는 예시적인 비용 집계 셀들(252)로부터의 예시적인 수직 집계 비용들(268) 각각을 저장한다. 도 2e의 예시적인 수직 집계 버퍼(276)는 1280개의 워드들을 포함하고, 이들 워드들 각각은 768 비트이지만, 본 명세서에 개시된 예들은 이에 제한되지 않는다.
도 2e의 도시된 예에서, 예시적인 수직 집계 버퍼(276)는 수직 집계 비용들(268)을 예시적인 수직 최소 비용 결정기(278)에 전송하기 전에 예시적인 수직 집계 비용들(268) 각각을 저장한다. 예시적인 수직 최소 비용 결정기(278)는 예시적인 비용 집계 셀들(252)에 의해 생성된 4개의 예시적인 수직 집계 비용(268)을 포함하는 96개의 비용들 중에서 최소 값을 식별 및/또는 아니면 결정하며, 여기서 96개의 비용은 96개의 디스패리티와 연관된다. 최소 수직 집계 비용을 결정하는 것에 응답하여, 예시적인 수직 최소 비용 결정기(278)는 최소 수직 집계 비용을 예시적인 비용 집계 셀들(252) 각각의 입력들에 전송한다.
도 2e의 도시된 예에서, 비용 집계 셀들(252) 각각은 수평 집계 비용(270)을, 예시적인 중간 수평 집계 버퍼(282)를 통해, 비용 집계 셀들(252) 각각의 입력들, 예시적인 수평 최소 비용 결정기(280) 및 예시적인 출력 집계 버퍼(272)에 출력한다. 도 2e의 예시적인 수평 최소 비용 결정기(280)는 예시적인 비용 집계 셀들(252)에 의해 생성된 4개의 예시적인 수평 집계 비용(270)을 포함하는 96개의 비용 중에서 최소 값을 식별하고/하거나 아니면 결정하며, 여기서 96개의 비용은 96개의 디스패리티와 연관된다. 최소 수평 집계 비용을 결정하는 것에 응답하여, 예시적인 수평 최소 비용 결정기(280)는 최소 수평 집계 비용을 예시적인 비용 집계 셀들(252) 각각의 입력들에 전송한다.
도 3은 도 2a의 예시적인 연결 논리(224)의 개략도이다. 도 3은 명료성을 위해 16 비트 예의 예시적인 연결 논리(224)를 도시한다. 예를 들어, 연결 논리(224)는 24 비트 기술어 입력, 49 비트 기술어 입력, 63 비트 기술어 입력 등을 획득 및 처리할 수 있다. 예시적인 연결 논리(224)는 log(N)+1 스테이지들의 최소 깊이를 갖는 소팅 트리 접근법을 나타내며, 여기서 N은 입력 스트림 길이이다. 도 3의 도시된 예에서, 예시적인 입력 비트스트림(302)은 예시적인 선택 마스크(304)로 처리된다. 도 3의 예시적인 입력 비트스트림(302)은 16 비트이다. 대안적으로, 예시적인 입력 비트스트림(302)은, 이에 제한되는 것은 아니지만, 24 비트, 49 비트, 또는 63 비트와 같은 임의의 다른 양의 비트일 수 있다. 도 3의 예시적인 선택 마스크(304)는 16 비트이다. 대안적으로, 예시적인 선택 마스크(304)는, 이에 제한되는 것은 아니지만, 32 비트 또는 64 비트와 같은 임의의 다른 양의 비트일 수 있다. 예시적인 선택 마스크(304)는 도 2a의 예시적인 연결 마스크(228)에 대응할 수 있다.
도 3의 도시된 예에서, 입력 비트스트림(302)의 제1 비트들 및 선택 마스크의 제2 비트들은 제1 예시적인 스테이지(308) 동안 예시적인 논리 AND 게이트들(306)로 처리된다. 대안적으로, 제1 예시적인 스테이지(308)가 제거될 수 있다. 도 3의 도시된 예에서, 제2 예시적인 스테이지(310)는, 각각의 2 비트 쌍에서 필요한 자리이동들의 양을 또한 카운팅하면서, 값 1의 마스크 비트에 의해 입력 비트스트림(302)의 최하위 비트(LSB)를 향해 정렬하는 일련의 2 비트 소팅 트리들을 포함한다.
도 3의 도시된 예에서, 제3 예시적인 스테이지(312)는 제2 스테이지(310)의 이전의 2 비트 쌍들에 기반하여 4 비트 소팅 트리들을 포함한다. 도 3의 도시된 예에서, 제4 예시적인 스테이지(314)는 제3 스테이지(312)의 이전의 4 비트 쌍들에 기반하여 8 비트 소팅 트리들을 포함한다. 도 3의 도시된 예에서, 제5 예시적인 스테이지(316)는 이전의 8 비트 쌍들에 대해 비트별 OR 연산을 수행하여 예시적인 최종 결과(318)를 생성한다. 도 3의 예시적인 최종 결과(318)는 도 2a의 예시적인 포스트-마스크 기술어(226)에 대응할 수 있다.
도 4는 도 1의 예시적인 기술어 버퍼 엔진(104), 예시적인 비용 매칭 엔진(108), 및 예시적인 비용 통합 엔진(110)에 의해 수행되는 예시적인 상관 동작(400)의 개략도이다. 도 4의 도시된 예에서, 상관 동작(400)은 전력 효율을 증가시키고/시키거나 아니면 향상시키기 위해 적어도 3개의 스테이지로 분할된다. 예를 들어, 상관 동작(400)은 원형 버퍼들을 이용하여 데이터 이동들을 감소시킴으로써 도 1의 파이프라인(114)의 전력 소비를 감소시킨다.
도 4의 도시된 예에서, 기술어 버퍼 엔진(104)은 처리되고 있는 각각의 픽셀에 대해 R 행으로 지정된 도 1의 우측 이미지(120)에 포함된 픽셀들에 대응하는 도 2a의 우측 기술어들(202) 중 176개를 저장한다. 예시적인 기술어 버퍼 엔진(104)은 L 행으로 지정된 도 1의 좌측 이미지(118)에 포함된 픽셀에 대응하는 예시적인 좌측 기술어(230)를 저장한다.
도 4의 도시된 예에서, 기술어 버퍼 엔진(104)은 176개의 우측 기술어들(234) 중 96개를 선택하기 위해 우측 기술어들(234) 중 176개를 기술어 선택기(106)에 출력한다. 예시적인 기술어 선택기(106)는 선택된 96개의 우측 기술어(234)를 예시적인 비용 매칭 엔진(108)에 출력하여 좌측 기술어(230) 및 우측 기술어들(234) 각각의 것들과 연관된 매칭 비용들을 계산한다. 도 4의 예시적인 비용 매칭 엔진(108)은 C0, C1 등으로 지정된 96개의 예시적인 비용들(402)을 계산하고, 여기서 96개의 비용들(402) 각각은 우측 기술어들(234) 중 하나와 좌측 기술어(230) 사이의 디스패리티에 대응한다. 예를 들어, 비용들(402)은 도 2c의 디스패리티들(238)에 대응할 수 있다.
도 4의 도시된 예에서, 비용 매칭 엔진(108)은 비용들(402)을 재배열하기 위해 비용 통합 엔진(110)에 96개의 비용들(402)을 출력한다. 예시적인 비용 통합 엔진(110)은 예시적인 비용들(402)을 순번대로 조직화하고, 여기서 비용들(402) 중 가장 새로운 비용이 순번 0(예를 들어, 제1 인덱스)으로서 식별되고, 비용들(402) 중 가장 오래된 비용이 순번 95(예를 들어, 마지막 인덱스)로서 식별된다.
도 4의 예시적인 상관 동작(400)은 처리되고 있는(예를 들어, 반복적으로 처리되고 있는) 도 1의 좌측 이미지(118)에 포함된 복수의 픽셀을 나타낸다. 예를 들어, 상관 동작(400)은 처리되고 있는 제1 예시적인 픽셀(픽셀 0)(404)을 묘사하고 있다. 제1 예시적인 픽셀(404)은 도 1의 예시적인 좌측 픽셀(124)에 대응할 수 있다. 예시적인 기술어 버퍼 엔진(104)은 176개의 우측 기술어(234) 및 좌측 기술어(230)를 도 2b의 예시적인 원형 버퍼(232)에 로딩한다. 예시적인 기술어 선택기(106)는 176개의 우측 기술어(234) 중 96개를 선택하고, 예시적인 비용 매칭 엔진(108)은 96개의 선택된 우측 기술어(234)와 연관된 96개의 예시적인 비용(402)을 계산하고, 예시적인 비용 통합 엔진(110)은 96개의 비용(402)을 재배열한다.
제1 예시적인 픽셀(404)의 처리에 응답하여, 예시적인 상관 동작(400)은 제2 예시적인 픽셀(픽셀 1)(406)을 처리하고, 그 동안 예시적인 기술어 버퍼 엔진(104)은 제1 예시적인 픽셀(404)과 연관된 예시적인 우측 기술어(234)를 인접한 픽셀과 연관된 우측 기술어(234)로 대체하면서 나머지 우측 기술어들(234)을 유지하여 데이터 이동들을 감소시키고, 이에 따라 도 1의 예시적인 파이프라인(114)의 전력 소비를 감소시킨다. 예를 들어, 픽셀 커널(128)을 포함하는 윈도우가 하나의 인덱스만큼 우측으로 이동될 때, 기술어 버퍼 엔진(104)은 도 1의 픽셀 커널(128)에 포함된 가장 좌측의 픽셀을 인접 픽셀(예를 들어, 픽셀 커널(128)의 우측으로의 다음 픽셀)로 대체할 수 있다. 예시적인 기술어 버퍼 엔진(104)은 예시적인 비용 매칭 엔진(108)으로의 176개의 우측 기술어(234) 중 96개를 선택하는 예시적인 기술어 선택기(106)에게 인접 픽셀의 우측 기술어(234)를 포함하는 176개의 예시적인 우측 기술어(234)를 출력한다. 예시적인 비용 매칭 엔진(108)은 비용들(402) 중 제1 비용(C0)을 우측 이미지(120)에서의 인접 픽셀과 연관된 새로운 비용(C95)으로 대체함으로써 예시적인 비용들(402) 중 96개를 계산한다. 예시적인 상관 동작(400)은 복수의 픽셀(예를 들어, 픽셀 2, 픽셀 3 등)에 대해 위의 동작들을 수행한다.
도 5는 도 2e의 예시적인 SGBM 집계 셀(K)(502)의 개략도이다. 예시적인 SGBM 집계 셀(502)은 제1 예시적인 SGBM 집계 셀이다. 도 5의 도시된 예에서, 제1 SGBM 집계 셀(502)은 도 2e의 비용 집계 셀들(252) 중 하나에 대응할 수 있다. 도 5의 제1 예시적인 SGBM 집계 셀(502)은 예시적인 매칭 비용 레지스터(508)를 통해 예시적인 매칭 비용(506)을 검색하고 저장하는 제1 예시적인 파이프(파이프 1)(504)(예를 들어, 파이프라인)를 포함한다. 예시적인 매칭 비용 레지스터(508)는 처리되어 제1 예시적인 SGBM 집계 셀(502)의 다음 스테이지로 전달될 매칭 비용을 저장한다. 예를 들어, 매칭 비용 레지스터(508)는 입력 비용 저장소(264)로부터 출력되는 도 2e의 96 바이트 디스패리티를 저장할 수 있다.
도 5의 제1 예시적인 파이프(504)는 예시적인 우회 플래그 레지스터(512)를 통해 예시적인 우회 플래그(510)를 검색한다. 예시적인 우회 플래그(510)는 집계 방향마다 이미지 라인에서의 제1 비용(예를 들어, 도 1의 좌측 이미지(118)의 라인에서의 제1 픽셀과 연관된 비용)에 대해 설정되며, 이에 따라 제1 비용으로서, 집계될 이전의 비용들 또는 데이터가 없기 때문에 제1 비용이 변경되지 않은 예시적인 SGBM 집계 셀(500)을 통해 푸시될 것이다. 이미지 라인에서의 후속 비용들에 대해서는, 예시적인 우회 플래그(510)가 설정되지 않는다.
도 5의 제1 예시적인 파이프(504)는 예시적인 픽셀 강도(514)를 검색하여 이를 예시적인 픽셀 강도 레지스터(516)에 저장한다. 예시적인 픽셀 강도 레지스터(516)는 픽셀 강도 값들을 예시적인 절대 차이 계산기(518)에 전송하여 2개의 연속적인 픽셀들(예를 들어, 현재 픽셀(Y_IN) 및 이전 픽셀(Y_IN)) 사이의 차이를 계산한다. 예를 들어, 2개의 연속적인 픽셀들은 도 1의 좌측 픽셀(124) 및 좌측 픽셀(124)의 우측으로의 인접 픽셀일 수 있다. 예시적인 절대 차이 계산기(518)는 절대 차이를 예시적인 페널티 룩업 테이블(LUT)(520)에 전송하여 연속적인 픽셀들 사이의 절대 차이를 제1 예시적인 페널티 값(P1)(522) 및 제2 예시적인 페널티 값(P2)(524)에 매핑한다.
동작 시에, 도 5의 제1 예시적인 SGBM 집계 셀(502)은 제2 예시적인 집계 셀(K+1)(530)에 의해 계산된 제1 예시적인 집계 비용(528)과 제1 예시적인 페널티 값(522)의 제1 예시적인 합(526)을 계산한다. 도 5의 제1 예시적인 SGBM 집계 셀(502)은 제1 SGBM 집계 셀(502)에 의해 계산된 제2 예시적인 집계 비용(534)과 제1 예시적인 페널티 값(522)의 제2 예시적인 합(532)을 계산한다. 도 5의 제1 예시적인 SGBM 집계 셀(502)은 제3 예시적인 SGBM 집계 셀(K-1)(540)에 의해 계산된 제3 예시적인 집계 비용(538)과 제1 예시적인 페널티 값(522)의 제3 예시적인 합(536)을 계산한다.
도 5의 제1 예시적인 SGBM 집계 셀(502)은 제2 예시적인 페널티 값(524)과 제4 예시적인 집계 비용(544)의 제4 예시적인 합(542)을 계산하고, 여기서 제4 집계 비용(544)은 예시적인 소팅 트리(546)에 의해 계산된 최소 값이다. 예시적인 소팅 트리(546)는 복수의 수평 집계 비용 및/또는 수직 집계 비용 중에서 최소 값을 결정한다. 예를 들어, 소팅 트리(546)는 수직 최소 비용 결정기(278), 수평 최소 비용 결정기(280) 및/또는 이들의 조합에 대응할 수 있다. 예를 들어, 소팅 트리(546)는 소팅될 요소들로부터 이진 탐색 트리를 구축하고, 그 후 그 요소들이 소팅된 순서로 나오도록 트리를 (순서대로) 순회하는 소팅 알고리즘을 실행하기 위한 하드웨어 및/또는 기계 판독가능한 명령어들을 나타낸다. 예시적인 소팅 트리(546)는 96개의 저장된 비용들(예를 들어, 수평 비용들, 수직 비용들 등)을 96개의 소팅된 비용들 중 하나에 대응하는 최소 값으로 소팅함으로써 예시적인 SGBM 집계 셀들(502, 530, 540)의 레이턴시가 1 클록 사이클이 되는 것을 용이하게 한다.
도 5의 도시된 예에서, 예시적인 SGBM 집계 셀들(502, 530, 540) 각각은 2개의 연속적인 사이클에서 3개의 집계 경로 각각을 수행한다. 예를 들어, 제1 사이클 동안, SGBM 집계 셀들(502, 530, 540) 각각은 좌측->우측 집계 경로를 수행 및/또는 아니면 용이하게 한다. 제2 사이클 동안, 예시적인 SGBM 집계 셀들(502, 530, 540) 각각은 우측->좌측 집계 경로 및 상단->하단 집계 경로를 수행 및/또는 아니면 용이하게 한다. 예시적인 SGBM 집계 셀들(502, 530, 540) 각각은 하나의 픽셀에 대한 96개의 디스패리티들 또는 비용 세트들 중 하나를 집계하는 것을 담당한다.
도 5의 도시된 예에서, 제1 내지 제4 집계 비용들(528, 534, 538, 544)은 집계 방향들 또는 경로들에서 이웃하는 픽셀들로부터의 트렌드들을 전파함으로써 도 1의 비용 매칭 엔진(108)에 의해 출력된 그 초기 값들로부터 픽셀마다의 상관-비용들의 품질을 개선하는 방법을 나타낸다. 예를 들어, 제1 집계 비용(528)은 좌측->우측의 제1 수평 경로에 대응할 수 있고, 제1 수평 경로는 좌측->우측의 도 1의 좌측 이미지(118)에서의 픽셀들을 처리하는 것을 나타내고, 우측에서의 픽셀들(예를 들어, 픽셀들의 매칭 비용들)은 그 좌측 이웃의 이전 집계의 결과에 의해 영향을 받는다. 경로 r에 대해, 예시적인 SGBM 집계 셀(502)은 이미지의 에지에서의 픽셀로 시작하고 관심 있는 픽셀로 끝나는 매칭 비용을 계산할 수 있다. 예를 들어, 도 1의 우측 이미지(120)의 좌측->우측 경로에 대해, SGBM 집계 셀(502)은 우측 이미지(120)의 좌측 에지에서의 제1 픽셀로부터 시작하여 우측 이미지(120)의 중심 픽셀(126)까지의 경로에서의 각각의 픽셀에 대한 매칭 비용을 결정한다.
다른 예들에서, 제3 집계 비용(538)은 우측->좌측의 제2 수평 경로에 대응할 수 있고, 제2 수평 경로는 우측->좌측의 도 1의 좌측 이미지(118)에서의 픽셀들을 처리하는 것을 나타내며, 좌측에서의 픽셀들(예를 들어, 픽셀들의 매칭 비용들)은 그 우측 이웃의 이전 집계의 결과에 의해 영향을 받는다. 예를 들어, 도 1의 우측 이미지(120)의 우측->좌측 경로에 대해, SGBM 집계 셀(502)은 우측 이미지(120)의 우측 에지에서의 제1 픽셀로부터 시작하여 우측 이미지(120)의 중심 픽셀(126)까지의 경로에서의 각각의 픽셀에 대한 매칭 비용을 결정한다.
도 5의 도시된 예에서, 제1 예시적인 최소 함수(548)는 제1 내지 제4 합들(526, 532, 536, 542)의 제1 최소 값을 결정한다. 예시적인 SGBM 집계 셀(502)은 (1) 예시적인 매칭 비용 K(506)와 제4 예시적인 집계 비용(544)의 합과 (2) 제1 최소 값 사이의 차이로부터 제2 최소 값을 결정하기 위한 제2 예시적인 최소 함수(550)를 포함한다. 예를 들어, 제2 최소 함수(550)는 현재 픽셀(예를 들어, 도 1의 좌측 픽셀(124))과 연관된 매칭 비용이 최소 디스패리티인지 여부를 결정한다. 예를 들어, SGBM 집계 셀들(502, 530, 540) 각각은 제1 최소 함수(548) 및 제2 최소 함수(550)를 통해 위의 수학식 5 및/또는 수학식 6의 예들을 실행 및/또는 아니면 구현한다.
도 5의 도시된 예의 제2 예시적인 최소 함수(550)는 제2 예시적인 파이프(파이프 2)(554)에 포함된 예시적인 집계 비용 레지스터(552)에 제2 최소 값을 출력하여 제2 최소 값을 저장한다. 도 5와 관련한 설명이 제1 예시적인 SGBM 집계 셀(502)에 관한 것이지만, 이러한 설명은 또한 제2 및 제3 예시적인 SGBM 집계 셀들(530, 540)에 적용가능하다. 예를 들어, 제2 및 제3 SGBM 집계 셀들(530, 540)은 실질적으로 유사한 컴포넌트들(예를 들어, 컴포넌트들의 일부 또는 전체)을 포함하고, 제1 SGBM 집계 셀(502)과 실질적으로 동일한 기능들(예를 들어, 기능들의 일부 또는 전체)을 수행한다.
도 6은 본 명세서에 개시된 예들을 구현하기 위한 예시적인 스테레오 파이프라인 데이터 흐름(600)의 개략도이다. 제1 시간 인스턴스 동안, 도 1의 예시적인 CT 엔진(102)은 제1 우측 라인(RL_0)(602)을 판독한다. 제2 시간 인스턴스 동안, 예시적인 CT 엔진(102)은 제1 우측 라인(602)의 제1 CT(CT RL_0)(604)를 생성한다. 예를 들어, CT 엔진(102)은 도 1의 우측 기술어(202)를 생성한다. 제2 시간 인스턴스 동안, 예시적인 CT 엔진(102)은 제1 좌측 라인(LL_0)(606)을 판독한다. 제3 시간 인스턴스 동안, 도 1의 예시적인 기술어 버퍼 엔진(104)은 제1 예시적인 우측 기술어 라인(BUFF RDL_0)(608)으로서 저장될 제1 CT(604)를 판독하고 이를 도 2b의 예시적인 원형 버퍼(232)에 저장한다.
제4 시간 인스턴스 동안, 예시적인 기술어 버퍼 엔진(104)은 제1 예시적인 우측 기술어 라인(608)을 예시적인 기술어 선택기(106) 및/또는 예시적인 비용 매칭 엔진(108)에 전송한다. 제4 시간 인스턴스 동안, 예시적인 비용 매칭 엔진(108)은 제1 좌측 라인(606)을 획득하여 비용 매칭 동작을 수행한다. 제5 시간 인스턴스 동안, 예시적인 비용 매칭 엔진(108)은 제1 예시적인 좌측->우측 비용 매칭 라인(L2R CML_0)(610)을 생성한다.
제6 시간 인스턴스 동안, 예시적인 비용 매칭 엔진(108)은 제1 좌측->우측 비용 매칭 라인(610)을 포함하는 이미지 데이터를 소팅하기 위해 제1 좌측->우측 비용 매칭 라인(610)을 예시적인 비용 통합 엔진(110)에 전송한다. 제7 시간 인스턴스 동안, 예시적인 비용 통합 엔진(110)은 제1 예시적인 좌측->우측 비용 집계 라인(L2R CAL_0)(612), 제1 예시적인 우측->좌측 집계 라인(R2L AL_0)(614), 및 제1 예시적인 상단->하단 집계 라인(T2B AL_0)(616)을 결정하기 위해 도 1의 SGBM 집계 엔진(112)에게 소팅된 이미지 데이터를 전송한다. 제8 시간 인스턴스 동안, 예시적인 SGBM 집계 엔진(112)은 제1 예시적인 출력 디스패리티 라인(ODL_0)(618)을 생성한다.
입력 이미지(예를 들어, 도 1의 좌측 이미지(118))의 각각의 라인에 대한 출력 디스패리티 라인들을 생성하는 것에 응답하여, 예시적인 파이프라인 데이터 흐름(600)은 센서스 변환 기술어들의 덤핑(DCTD)(620), 비용 맵의 덤핑(DCM)(622) 및 집계 비용 맵의 덤핑(DACM)(624)을 포함한다. 예시적인 파이프라인 데이터 흐름(600)은 출력 디스패리티 라인들이 입력 이미지의 각각의 라인에 대해 결정될 때 종료된다. 예를 들어, 도 1의 파이프라인(114)은 출력 디스패리티 라인들에 기반하여 도 1의 좌측 이미지(118)에 포함된 픽셀들 및 도 1의 우측 이미지(120)에 포함된 픽셀들의 스테레오 매칭을 수행할 수 있다.
도 7은 예시적인 SIPP 가속기(700)의 예시적인 구현의 블록도이다. 예시적인 SIPP 가속기(700)는 스테레오 매칭과 같은 이미지 처리 동작을 수행한다. 예를 들어, SIPP 가속기(700)는 2개 이상의 이미지들(예를 들어, 사진들, 비디오 프레임들 등)을 취하고 2개 이상의 이미지들에서 매칭 픽셀들을 식별하고 픽셀들의 2D 위치들을 3D 깊이들로 변환함으로써 환경, 장면 등의 3D 모델을 추정 및/또는 아니면 결정할 수 있다. 예를 들어, SIPP 가속기(700)는 2개 이상의 이미지들(예를 들어, 이미지들의 스테레오 쌍)에서 대응하는 포인트들을 매칭시킴으로써 구성되는, 스테레오 디스패리티 맵으로 그 환경 내의 포인트들의 상대적 깊이를 추정할 수 있다. 예시적인 SIPP 가속기(700)는 대응하는 실질적으로 큰 처리량을 갖는 정렬된 이미지들로부터 디스패리티 계산의 속도를 가속화하고/하거나 아니면 증가시킨다.
도 7의 도시된 예에서, SIPP 가속기(700)는 예시적인 센서스 변환 핸들러(702), 예시적인 기술어 관리자(704), 예시적인 비용 계산 관리자(706), 및 예시적인 집계 생성기를 포함한다. 도 7의 예시적인 SIPP 가속기(700)는 센서스 변환 동작을 수행 및/또는 아니면 용이하게 하는 예시적인 센서스 변환 핸들러(702)를 포함한다. 예를 들어, 센서스 변환 핸들러(702)는 도 1의 CT 엔진(102)에 대응하고/하거나 아니면 이를 구현될 수 있다. 예시적인 센서스 변환 핸들러(702)는 입력 이미지에 포함된 픽셀 커널 또는 평가 윈도우의 픽셀들과 연관된 픽셀 값들을 검색하고, 픽셀 값들을 중심 픽셀의 픽셀 값, 임계 값, 평균 값 등과 비교하고, 그 비교에 기반하여 기술어들을 생성하기 위한 수단을 포함한다.
일부 예들에서, 센서스 변환 핸들러(702)는 5×5 픽셀 커널의 픽셀들을 비교 값과 비교하는 것에 기반하여 25 비트 프리-마스크 비트 기술어(예를 들어, 도 2a의 프리-마스크 비트 기술어(222))를 생성한다. 다른 예들에서, 센서스 변환 핸들러(702)는 7×7 커널에 기반한 49 비트 프리-마스크 비트 기술어, 7×9 커널에 기반한 63 비트 프리-마스크 비트 기술어 등을 생성한다. 예시적인 센서스 변환 핸들러(702)는 프리-마스크 비트 기술어에 제로 레이턴시, 랜덤 비트 연결 논리를 적용하여 포스트-마스크 비트 기술어(예를 들어, 도 2a의 포스트-마스크 비트 기술어(202))를 생성한다. 예를 들어, 센서스 변환 핸들러(702)는 도 2a 및/또는 도 3의 연결 논리(224)를 구현하여 포스트-마스크 비트 기술어를 생성할 수 있다.
도 7의 예시적인 SIPP 가속기(700)는 비용 상관 동작을 위해 기술어(예를 들어, 도 2a의 포스트-마스크 비트 기술어(202))를 핸들링하고/하거나 아니면 준비하기 위한 예시적인 기술어 관리자(704)를 포함한다. 예를 들어, 기술어 관리자(704)는 도 1의 기술어 버퍼 엔진(104) 또는 기술어 선택기(106) 중 적어도 하나에 대응하고/하거나 아니면 이를 구현할 수 있다. 예시적인 기술어 관리자(704)는 예시적인 센서스 변환 핸들러(702)에 의해 생성되는 하나 이상의 포스트-마스크 비트 기술어를 검색하고, 압신 논리에 기반하여 포스트-마스크 비트 기술어들 중 하나 이상을 선택하기 위한 수단을 포함한다. 예를 들어, 기술어 관리자(704)는 센서스 변환 핸들러(702)에 의해 생성된 포스트-마스크 비트 기술어를 검색하고, 포스트-마스크 비트 기술어를 하나 이상의 원형 버퍼를 통해 원형 방식으로 저장하고, 압신 논리에 기반하여, 저장된 포스트-마스크 비트 기술어들의 서브세트를 선택할 수 있다.
도 7의 예시적인 SIPP 가속기(700)는 상이한 이미지들에 포함된 픽셀들의 이미지 위치들에서의 차이에 대응하는 매칭 비용들을 생성 및/또는 아니면 결정하기 위한 예시적인 비용 계산 관리자(706)를 포함한다. 예를 들어, 비용 계산 관리자(706)는 도 1의 비용 매칭 엔진(108) 또는 비용 통합 엔진(110) 중 적어도 하나에 대응하고/하거나 아니면 이를 구현할 수 있다. 예시적인 비용 계산 관리자(706)는 제1 이미지의 제1 픽셀과 연관된 제1 기술어(예를 들어, 도 2c의 예시적인 좌측 기술어(230)) 및 제2 이미지의 제2 픽셀들과 연관된 기술어들(예를 들어, 도 2c의 96개의 우측 기술어들(234))을 검색하고 제1 픽셀의 픽셀 강도 값 또는 제1 픽셀과 연관된 디스패리티들 중 적어도 하나를 결정하기 위한 수단을 포함한다. 예를 들어, 비용 계산 관리자(706)는 위의 수학식 4 또는 수학식 5 중 적어도 하나를 평가 및/또는 아니면 실행함으로써 디스패리티를 계산할 수 있다.
일부 예들에서, 비용 계산 관리자(706)는 관심 있는 각각의 픽셀에 대한 복수의 디스패리티를 결정한다. 예를 들어, 비용 계산 관리자(706)는 처리할 도 1의 좌측 픽셀(124)을 선택할 수 있다. 예시적인 비용 계산 관리자(706)는 처리할 도 1의 픽셀 커널(128)을 선택한다. 예시적인 비용 계산 관리자(706)는 좌측 픽셀(124)에 대해 픽셀 커널(128)에 포함된 픽셀들 각각에 대한 디스패리티를 계산한다. 디스패리티들을 계산하는 것에 응답하여, 예시적인 비용 계산 관리자(706)는 처리할 예시적인 우측 이미지(120)의 다른 픽셀 커널을 선택할 수 있다. 예를 들어, 비용 계산 관리자(706)는 우측 이미지(120)의 전체가 처리될 때까지 우측 이미지(120)의 픽셀 커널들을 처리할 수 있다.
도 7의 예시적인 SIPP 가속기(700)는 하나 이상의 디스패리티를 포함하는 디스패리티 맵을 생성하고, 디스패리티 맵에 기반하여 최소 디스패리티를 결정하기 위한 예시적인 집계 생성기(708)를 포함하고, 여기서 최소 디스패리티는 상이한 이미지들에서의 픽셀들 사이의 좌표들(예를 들어, 수평 좌표들, 수직 좌표들 등 및/또는 이들의 조합)에서의 차이에 대응한다. 예시적인 집계 생성기(708)는 하나 이상의 전파 경로와 연관된 집계 비용들을 결정하고, 집계 비용들에 기반하여 디스패리티 맵을 생성하고/하거나 집계 비용(들), 하나 이상의 디스패리티 또는 디스패리티 맵 중 적어도 하나에 기반하여 도 1의 예시적인 우측 이미지(120)에서의 픽셀들 중 예시적인 좌측 이미지(118)에 매칭하는 픽셀을 식별하기 위한 수단을 포함한다.
일부 예들에서, 집계 생성기(708)는 제2 픽셀로부터 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산한다. 예시적인 집계 생성기(708)는 제2 픽셀로부터 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산한다. 예시적인 집계 생성기(708)는 제2 픽셀로부터 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산한다. 제1, 제2 및 제3 집계 비용들을 결정하는 것에 응답하여, 예시적인 집계 생성기(708)는 제1 내지 제3 집계 비용들로부터 최소 값을 결정하고, 스테레오 이미지 쌍의 상이한 이미지들에서의 픽셀들을 매칭시키기 위해 복수의 픽셀에 대한 디스패리티 맵을 생성한다.
도 7의 도시된 예의 예시적인 센서스 변환 핸들러 수단, 예시적인 기술어 관리자 수단, 예시적인 비용 계산 관리자 수단 및/또는 집계 생성기 수단은 하드웨어 프로세서 상에서 실행되는 소프트웨어에 의해 구현된다. 추가적으로 또는 대안적으로, 예시적인 센서스 변환 핸들러 수단, 예시적인 기술어 관리자 수단, 예시적인 비용 계산 관리자 수단 및/또는 집계 생성기 수단은 ASIC, FPGA 등 및/또는 이러한 회로들과 소프트웨어 및/또는 펌웨어의 조합과 같은, 원하는 기능을 달성하기 위해 논리 연산들을 수행하도록 구조화된 논리 회로에 의해 대신 구현될 수 있다.
도 7의 예시적인 SIPP 가속기(700)를 구현하는 예시적인 방식이 도 7에 도시되어 있지만, 도 7에 도시된 요소들, 프로세스들 및/또는 디바이스들 중 하나 이상은 임의의 다른 방식으로 결합, 분할, 재배열, 생략, 제거 및/또는 구현될 수 있다. 또한, 예시적인 센서스 변환 핸들러(702), 예시적인 기술어 관리자(704), 예시적인 비용 계산 관리자(706), 예시적인 집계 생성기(708), 및/또는 보다 일반적으로, 도 7의 예시적인 SIPP 가속기(700)는 하드웨어, 소프트웨어, 펌웨어, 및/또는 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 조합에 의해 구현될 수 있다. 따라서, 예를 들어, 예시적인 센서스 변환 핸들러(702), 예시적인 기술어 관리자(704), 예시적인 비용 계산 관리자(706), 예시적인 집계 생성기(708), 및/또는 보다 일반적으로, 예시적인 SIPP 가속기(700) 중 임의의 것이 하나 이상의 아날로그 또는 디지털 회로(들), 논리 회로, 프로그램가능한 프로세서(들), 프로그램가능한 제어기(들), 그래픽 처리 유닛(들)(GPU(들)), 디지털 신호 프로세서(들)(DSP(들)), 주문형 집적 회로(들)(ASIC(들)), 프로그램가능한 논리 디바이스(들)(PLD(들)) 및/또는 필드 프로그램가능한 논리 디바이스(들)(FPLD(들))에 의해 구현될 수 있다. 순전히 소프트웨어 및/또는 펌웨어 구현을 커버하기 위해 본 특허의 장치 또는 시스템 청구항들 중 임의의 것을 판독할 때, 예시적인 센서스 변환 핸들러(702), 예시적인 기술어 관리자(704), 예시적인 비용 계산 관리자(706) 및/또는 예시적인 집계 생성기(708) 중 적어도 하나는 소프트웨어 및/또는 펌웨어를 포함하는, 메모리, 디지털 다기능 디스크(DVD), 콤팩트 디스크(CD), 블루레이 디스크 등과 같은 비일시적 컴퓨터 판독가능한 저장 디바이스 또는 저장 디스크를 포함하는 것으로 본 명세서에서 명백히 정의된다. 또한, 도 7의 예시적인 SIPP 가속기(700)는 도 7에 도시된 것들에 더하여 또는 이들 대신에 하나 이상의 요소, 프로세스 및/또는 디바이스를 포함할 수 있고/있거나 도시된 요소들, 프로세스들 및 디바이스들 중 둘 이상의 임의의 것 또는 모두를 포함할 수 있다. 본 명세서에서 사용되는 "통신한다", "통신하는" 식의 문구는, 그 변형 문구들을 포함하고, 직접 통신 및/또는 하나 이상의 중간 컴포넌트를 통한 간접 통신을 포함하고, 직접적인 물리적(예를 들어, 유선) 통신 및/또는 일정한 통신을 요구하지 않고, 오히려 주기적 간격들, 스케줄링된 간격들, 비주기적 간격들, 및/또는 1회 이벤트들에서의 선택적 통신을 추가적으로 포함한다.
도 7의 예시적인 SIPP 가속기(700)를 구현하기 위한 예시적인 하드웨어 논리, 기계 판독가능한 명령어들, 하드웨어 구현 상태 기계들, 및/또는 이들의 임의의 조합을 나타내는 흐름도들이 도 8 내지 도 10에 도시되어 있다. 기계 판독가능한 명령어들은 도 12와 관련하여 이하에서 논의되는 예시적인 프로세서 플랫폼(1200)에 도시된 프로세서(1212)와 같은 컴퓨터 프로세서에 의한 실행을 위한 실행가능한 프로그램 또는 실행가능한 프로그램의 일부일 수 있다. 이러한 프로그램은 CD-ROM, 플로피 디스크, 하드 드라이브, DVD, 블루레이 디스크, 또는 프로세서(1212)와 연관된 메모리와 같은 비일시적 컴퓨터 판독가능한 저장 매체에 저장된 소프트웨어로 구현될 수 있지만, 전체 프로그램 및/또는 그 부분들은 대안적으로 프로세서(1212) 이외의 디바이스에 의해 실행되고/되거나 펌웨어 또는 전용 하드웨어로 구현될 수 있다. 또한, 예시적인 프로그램이 도 8 내지 도 10에 도시된 흐름도들과 관련하여 설명되지만, 예시적인 SIPP 가속기(700)를 구현하는 많은 다른 방법들이 대안적으로 이용될 수 있다. 예를 들어, 블록들의 실행 순서는 변경될 수 있고/있거나, 설명된 블록들 중 일부는 변경, 제거 또는 결합될 수 있다. 추가적으로 또는 대안적으로, 블록들 중 임의의 것 또는 모두는 소프트웨어 또는 펌웨어를 실행하지 않고 대응하는 동작을 수행하도록 구조화된 하나 이상의 하드웨어 회로(예를 들어, 개별 및/또는 통합 아날로그 및/또는 디지털 회로, FPGA, ASIC, 비교기, 연산 증폭기(op-amp), 논리 회로 등)에 의해 구현될 수 있다.
전술한 바와 같이, 도 8 내지 도 10의 예시적인 프로세스들은 정보가 임의의 지속기간 동안(예를 들어, 연장된 기간들 동안, 영구적으로, 짧은 순간들 동안, 일시적으로 버퍼링하는 동안, 및/또는 정보의 캐싱 동안) 저장되는 하드 디스크 드라이브, 플래시 메모리, 판독 전용 메모리, 콤팩트 디스크, 디지털 다기능 디스크, 캐시, 랜덤 액세스 메모리 및/또는 임의의 다른 저장 디바이스 또는 저장 디스크와 같은 비일시적 컴퓨터 및/또는 기계 판독가능한 매체에 저장된 실행가능한 명령어들(예를 들어, 컴퓨터 및/또는 기계 판독가능한 명령어들)을 이용하여 구현될 수 있다. 본 명세서에서 사용되는 비일시적 컴퓨터 판독가능한 매체라는 용어는 임의의 타입의 컴퓨터 판독가능한 저장 디바이스 및/또는 저장 디스크를 포함하고 전파 신호들을 배제하고 전송 매체를 배제하는 것으로 명백하게 정의된다.
"포함"(및 이들의 모든 형태들 및 시제들)은 제한을 두지 않는 용어들인 것으로 본 명세서에서 사용된다. 따라서, 청구항이 전제부로서 또는 임의의 종류의 청구항 인용 내에서 "포함"의 임의의 형태(예컨대, 포함한다, 포함하는, 갖는 등)를 사용할 때마다, 이는, 추가적인 요소들, 용어들 등이 대응하는 청구항 또는 인용의 범위 밖에 속하지 않으면서 존재할 수 있다는 것이 이해되어야 한다. 본 명세서에서 사용되는 "적어도"라는 문구가 예컨대 청구항의 전제부에서 연결어로서 사용될 때, 이는, "포함"이 제한을 두지 않는 것과 동일한 방식으로 제한을 두지 않는다. "및/또는" 및 "~하고/하거나" 식의 용어는, 예컨대, 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의 임의의 조합 또는 서브세트를 지칭한다.
도 8은 이미지 특징 매칭 동작을 가속화하기 위해 도 1의 예시적인 파이프라인 최적화 시스템(100) 및/또는 도 7의 예시적인 SIPP 가속기(700)를 구현하도록 실행될 수 있는 예시적인 기계 판독가능한 명령어들(800)을 나타내는 흐름도이다. 도 8의 예시적인 기계 판독가능한 명령어들(800)은 블록(802)에서 시작하고, 여기서 예시적인 SIPP 가속기(700)는 제1 이미지에서의 제1 픽셀의 픽셀 값 및 제2 이미지에서의 제2 픽셀들의 픽셀 값들을 획득한다. 예를 들어, 도 7의 센서스 변환 핸들러(702)는 좌측 이미지(118)의 좌측 픽셀(124)의 픽셀 강도 값 및 도 1의 우측 이미지(120)의 픽셀 커널(128)의 픽셀들의 픽셀 강도 값들을 획득할 수 있다.
블록(804)에서, 예시적인 SIPP 가속기(700)는 픽셀 값들에 대해 센서스 변환을 수행하여 제1 기술어 및 제2 기술어를 생성한다. 예를 들어, 센서스 변환 핸들러(702)는 좌측 픽셀(124)의 (예를 들어, 픽셀 커널 내의) 이웃 픽셀들의 픽셀 값들을 좌측 픽셀(124)의 픽셀 값과 비교하여 도 2b의 좌측 기술어(230)를 생성할 수 있다. 다른 예들에서, 센서스 변환 핸들러(702)는 도 1의 픽셀 커널(128)의 픽셀 값들을, 이에 제한되지는 않는 중심 픽셀(126)의 픽셀 값, 픽셀 커널(128)의 픽셀 값들의 평균 값, 임계 값 등과 같은 비교 값과 비교하여 도 2a의 프리-마스크 비트 기술어(222)를 생성한다. 이러한 예들에서, 센서스 변환 핸들러(702)는 도 2a의 연결 마스크(228) 및 도 2a의 연결 논리(224)를 프리-마스크 비트 기술어(222)에 적용하여 도 2a의 포스트-마스크 비트 기술어(202)를 생성한다. 예시적인 포스트-마스크 비트 기술어(202)는 픽셀 커널(128)에 포함된 픽셀들의 픽셀 강도 값들과 비교 값의 비교에 기반하여 픽셀 커널(128)과 연관된 이미지 특징을 특성화할 수 있다. 예를 들어, 포스트-마스크 비트 기술어(202)는 우측 이미지(120)의 픽셀과 연관된 우측 기술어에 대응할 수 있다.
블록(806)에서, 예시적인 SIPP 가속기(700)는 제2 기술어를 기술어 버퍼에 저장한다. 예를 들어, 기술어 관리자(704)는 우측 기술어(202)를 도 2b의 원형 버퍼(232)에 저장할 수 있다. 예시적인 기술어 관리자(704)는 예시적인 원형 버퍼(232)로부터 176개의 우측 기술어들(202)을 판독 및 출력할 수 있다.
블록(808)에서, 예시적인 SIPP 가속기(700)는 기술어 버퍼로부터 저장된 기술어들의 서브세트를 선택한다. 예를 들어, 기술어 관리자(704)는 압신 논리에 기반하여 176개의 우측 기술어들(202) 중 96개를 선택할 수 있다.
블록(810)에서, 예시적인 SIPP 가속기(700)는 저장된 기술어들의 서브세트 및 제1 기술어와 연관된 디스패리티들을 계산한다. 예를 들어, 비용 계산 관리자(706)는 좌측 기술어(230) 및 96개의 선택된 우측 기술어(202) 각각과 연관된 96개의 디스패리티를 계산할 수 있다.
블록(812)에서, 예시적인 SIPP 가속기(700)는 제2 픽셀들로부터 제1 픽셀로의 전파 경로(들)와 연관된 집계 비용(들)을 계산한다. 예를 들어, 집계 생성기(708)는 좌측->우측 전파 경로와 연관된 제1 집계 비용, 우측->좌측 전파 경로와 연관된 제2 집계 비용, 및 상단->하단 전파 경로와 연관된 제3 집계 비용을 계산할 수 있다.
블록(814)에서, 예시적인 SIPP 가속기(700)는 최소 집계 비용을 결정한다. 예를 들어, 집계 생성기(708)는 제1, 제2, 및 제3 집계 비용들 중에서 최소 집계 비용을 결정한다. 예를 들어, 집계 생성기(708)는 예시적인 좌측 픽셀(124)에 대해 계산된 각각의 디스패리티(예를 들어, 96개의 디스패리티(238) 각각)에 대한 최소 집계 비용을 결정한다.
블록(816)에서, 예시적인 SIPP 가속기(700)는 최소 집계 비용에 기반하여 제2 픽셀들 중 하나를 제1 픽셀에 매칭시킨다. 예를 들어, 집계 생성기(708)는 96개의 디스패리티들 각각에 대한 최소 집계 비용에 기반하여 디스패리티 맵(예를 들어, 픽셀당 64개 또는 96개의 매칭 비용들의 2차원 벡터)을 생성한다. 이러한 예들에서, 집계 생성기(708)는 디스패리티 맵에 기반하여 최소 디스패리티를 결정한다. 예시적인 집계 생성기(708)는 최소 디스패리티에 기반하여 예시적인 좌측 픽셀(124)에 대한 우측 이미지(120)에서의 매칭 픽셀을 식별할 수 있다. 예를 들어, 집계 생성기(708)는 도 1의 픽셀 커널(128)에 포함된 픽셀들 중 하나가 최소 집계 비용에 기반하여 좌측 이미지(118)에서의 좌측 픽셀(124)의 제2 위치와 실질적으로 매칭하는(예를 들어, 허용 임계 값 내에서 매칭하는) 우측 이미지(120)에서의 제1 위치를 갖는다고 결정할 수 있다. 이러한 매칭에 응답하여, 도 8의 예시적인 기계 판독가능한 명령어들(800)이 종료된다. 예를 들어, 예시적인 SIPP 가속기(700)는 좌측 이미지(118)에서의 다른 픽셀을 도 1의 우측 이미지(120)에 포함된 픽셀들 중 하나에 매칭시키기로 결정할 수 있다.
도 9는, 제1 이미지에서의 제1 픽셀 및 제2 이미지에서의 제2 픽셀과 연관된 최소 비용을 갖는 디스패리티를 결정하기 위해 도 1의 예시적인 파이프라인 최적화 시스템(100) 및/또는 도 7의 예시적인 SIPP 가속기(700)를 구현하도록 실행될 수 있는 예시적인 컴퓨터 판독가능한 명령어들을 나타내는 예시적인 소스 코드(900)를 도시한다. 도 9의 예시적인 소스 코드(900)는 도 1의 SGBM 집계 엔진(112), 도 2e의 예시적인 비용 집계 셀들(252), 도 5의 예시적인 SGBM 집계 셀들(502, 530, 540), 또는 도 7의 집계 생성기(708) 중 적어도 하나에 의해 구현 및/또는 아니면 실행될 수 있다.
예를 들어, 집계 생성기(708)는 입력 이미지(예를 들어, 도 1의 좌측 이미지(118), 도 1의 우측 이미지(120) 등)의 라인 내의 각각의 픽셀에 대해 도 9의 소스 코드(900)를 실행한다. 도 9의 예시적인 소스 코드(900)는 입력 비용 버퍼(ICB) 및 부분 비용 버퍼(PCB)로부터의 이미지 데이터를 처리한다. 예를 들어, ICB는 도 2e의 입력 비용 버퍼(250)에 대응할 수 있다. 예시적인 PCB는 도 5의 예시적인 집계 비용 레지스터(552)에 대응할 수 있다.
도 9의 예시적인 소스 코드(900)에서, 라인 내의 각각의 픽셀에 대해, 예시적인 집계 생성기(708)는 3개의 경로들에 대한 업데이트된 경로 비용(PathCostNew[n][x])을 결정하고, 여기서 3개의 경로들은 n=0에 대응하는 좌측->우측, n=1에 대응하는 상단->하단, 및 n=2에 대응하는 우측->좌측이다. 도 9의 예시적인 소스 코드(900)에서, PathCostNew는 경로(n), 픽셀(x) 및 디스패리티(d)(예를 들어, PathCostNew[0][x][d])에 의해 인덱싱된 3D 어레이이다. 예시적인 집계 생성기(708)는 집계 비용(AGV)으로의 각각의 경로에 대한 합을 계산한다. 도 9의 예시적인 소스 코드(900)에서, AGV는 픽셀 및 디스패리티에 의해 인덱싱된 집계 비용들의 2D 어레이이다. 각각의 디스패리티에 대한 집계 비용을 계산하는 것에 응답하여, 예시적인 집계 생성기(708)는 최소 비용 값을 갖는 디스패리티를 결정 및/또는 아니면 식별하고, 경로들 각각에 대한 경로 비용들을 임시 버퍼 또는 메모리에 저장한다.
도 10은 전파 경로와 연관된 비용을 결정하기 위해 도 1의 예시적인 파이프라인 최적화 시스템(100) 및/또는 도 7의 예시적인 SIPP 가속기(700)를 구현하도록 실행될 수 있는 예시적인 컴퓨터 판독가능한 명령어들을 나타내는 예시적인 소스 코드(1000)를 도시한다. 도 10의 예시적인 소스 코드(1000)는 도 1의 SGBM 집계 엔진(112), 도 2e의 예시적인 비용 집계 셀들(252), 도 5의 예시적인 SGBM 집계 셀들(502, 530, 540), 또는 도 7의 집계 생성기(708) 중 적어도 하나에 의해 구현 및/또는 아니면 실행될 수 있다.
예를 들어, 집계 생성기(708)는 현재 픽셀(x)과 연관된 모든 디스패리티들에 걸쳐 순간 또는 현재 픽셀의 최소 비용(MIN_2)을 결정한다. 예를 들어, 집계 생성기(708)는 도 1의 좌측 픽셀(124)에 대해 계산되고/되거나 아니면 연관된 96개의 디스패리티들의 최소 디스패리티 값을 결정할 수 있다. 예시적인 집계 생성기(708)는 현재 픽셀 및 이전 픽셀의 강도 값들 사이의 차이(intensityDiff)를 제1 페널티 값(P1) 및 제2 페널티 값(P2)에 매핑한다. 예시적인 집계 생성기(708)는 각각의 디스패리티에 대한 새로운 비용을 결정한다. 예시적인 집계 생성기(708)는 선택된 디스패리티 플러스 제1 페널티 값이 현재 비용보다 작은지를 결정하는 것(예를 들어, 반복적으로 결정하는 것)에 의해 새로운 비용을 결정한다. 선택된 디스패리티 플러스 제1 페널티 값이 현재 비용보다 작다고 결정하는 것에 응답하여, 현재 비용은 선택된 디스패리티 플러스 제1 페널티 값으로 설정된다.
도 11은 도 1의 예시적인 SGBM 집계 엔진(112) 및/또는 도 7의 예시적인 집계 생성기(708)의 예시적인 데이터 경로 파형에 대응하는 예시적인 타이밍도(1100)를 도시한다. 예시적인 타이밍도(1100)는 좌측->우측 경로에 대응하는 제1 예시적인 경로(1102) 및 상-하 또는 상단->하단 경로에 대응하는 제2 예시적인 경로(1104)와 연관된 동작들을 도시한다.
도 11의 예시적인 타이밍도(1100)에서, 예시적인 SGBM 집계 엔진(112) 및/또는 예시적인 집계 생성기(708)는 2 클록 사이클 처리량당 1 경로 비용 세트(예를 들어, 경로당 64개의 집계 비용들의 세트, 경로당 96개의 집계 비용들의 세트 등)를 달성한다. 예를 들어, SGBM 집계 엔진(112)은 2 클록 사이클마다 주어진 집계 경로에 대한 픽셀과 연관된 96개의 디스패리티를 처리할 수 있다. 예를 들어, 제1 경로(1102)에서, 제1 클록 사이클(사이클 0) 동안, SGBM 집계 엔진(112)은 제1 세트의 제1 픽셀의 매칭 비용들(매칭 비용 K = 비용 0, K)(예를 들어, 도 1의 예시적인 비용 매칭 엔진(108)에 의해 결정된 96개의 비용), 제1 픽셀의 제1 픽셀 강도 값(Y0) 및 1의 우회 값을 획득한다. 좌측->우측 이동에서 가장 좌측의 픽셀이 이전의 집계 데이터를 갖지 않기 때문에, 우회 값은 제1 클록 사이클에서 설정된다. 제2 클록 사이클(사이클 1) 동안, SGBM 집계 엔진(112)은 제2 세트의 제2 픽셀의 매칭 비용들(매칭 비용 K = 비용 1), 제2 픽셀의 제2 픽셀 강도 값(Y1)을 획득하고, 픽셀 강도 지연 레지스터는 제1 클록 사이클 동안 획득된 제1 픽셀 강도 값(Y0)으로 설정된다. 제3 클록 사이클(사이클 2) 동안, 예시적인 SGBM 집계 엔진(112)은 제1 픽셀 강도 값과 제2 픽셀 강도 값의 차이를 페널티 값(판독 페널티 LUT)에 매핑한다. 제3 클록 사이클 동안, 예시적인 SGBM 집계 엔진(112)은 A0의 제1 경로 비용 세트(Path_cost[n])를 계산하고 제1 경로 비용 세트를 검증한다. 예를 들어, SGBM 집계 엔진(112)은 제2 클록 사이클 및 제3 클록 사이클 동안 픽셀과 연관된 96개의 비용을 처리하는 것에 기반하여 픽셀에 대한 관심 경로의 집계 비용을 계산한다.
도 11의 예시적인 타이밍도(1100)에서의 제2 경로(1104)에서, 제1 클록 사이클(사이클 0) 동안, 예시적인 SGBM 집계 엔진(112)은 TA0의 제1 집계 비용(Previews_Top_Aggr)을 획득하고, min(TA0)의 제1 최소 집계 비용(Top_Aggr_Min)을 결정한다. 제2 클록 사이클(사이클 1) 동안, 예시적인 SGBM 집계 엔진(112)은 LUT_0의 제1 페널티 값(p1/p2 LUT)을 결정한다. 제3 클록 사이클(사이클 2) 동안, 예시적인 SGBM 집계 엔진(112)은 TA1의 제2 집계 비용을 획득하고, min(TA1)의 제2 최소 집계 비용을 결정한다. 제3 클록 사이클 동안, 예시적인 SGBM 집계 엔진(112)은 A0의 제1 경로 비용을 결정하고 경로 비용을 출력 버퍼에 기입한다. 예시적인 SGBM 집계 엔진(112)은 2 클록 사이클-1 경로 비용 세트 처리량(예를 들어, 경로에 대한 64개의 집계 비용들의 세트, 경로에 대한 96개의 집계 비용들의 세트 등)을 달성하기 위해 입력 이미지의 픽셀들과 연관된 집계 비용을 처리한다(예를 들어, 반복적으로 처리한다).
도 12는 도 7의 예시적인 SIPP 가속기(700)를 구현하기 위해 도 8 내지 도 10의 명령어들을 실행하도록 구조화된 예시적인 프로세서 플랫폼(1200)의 블록도이다. 프로세서 플랫폼(1200)은, 예를 들어, 서버, 개인용 컴퓨터, 워크스테이션, 자기 학습 기계(예를 들어, 신경망), 모바일 디바이스(예를 들어, 셀 폰, 스마트 폰, iPadTM와 같은 태블릿), PDA, 인터넷 기기, DVD 플레이어, CD 플레이어, 디지털 비디오 레코더, 블루레이 플레이어, 게임 콘솔, 개인용 비디오 레코더, 셋톱 박스, 헤드셋 또는 다른 착용가능한 디바이스, 또는 임의의 다른 타입의 컴퓨팅 디바이스일 수 있다.
도시된 예의 프로세서 플랫폼(1200)은 프로세서(1212)를 포함한다. 도시된 예의 프로세서(1212)는 하드웨어이다. 예를 들어, 프로세서(1212)는 임의의 원하는 부류 또는 제조자로부터의 하나 이상의 집적 회로, 논리 회로, 마이크로프로세서, GPU, DSP 또는 제어기에 의해 구현될 수 있다. 하드웨어 프로세서는 반도체 기반(예컨대, 규소 기반) 디바이스일 수 있다. 이 예에서, 프로세서(1212)는 예시적인 SIPP 가속기(700), 예시적인 센서스 변환 핸들러(702), 예시적인 기술어 관리자(704), 예시적인 비용 계산 관리자(706), 예시적인 집계 생성기(708)를 구현한다.
도시된 예의 프로세서(1212)는 로컬 메모리(1213)(예컨대, 캐시)를 포함한다. 도시된 예의 프로세서(1212)는 버스(1218)를 통해 휘발성 메모리(1214) 및 비휘발성 메모리(1216)를 포함하는 메인 메모리와 통신한다. 휘발성 메모리(1214)는 동기식 동적 랜덤 액세스 메모리(SDRAM), 동적 랜덤 액세스 메모리(DRAM), RAMBUS® 동적 랜덤 액세스 메모리(RDRAM®) 및/또는 임의의 다른 타입의 랜덤 액세스 메모리 디바이스에 의해 구현될 수 있다. 비휘발성 메모리(1216)는 플래시 메모리 및/또는 임의의 다른 원하는 타입의 메모리 디바이스에 의해 구현될 수 있다. 메인 메모리(1214, 1216)에의 액세스는 메모리 제어기에 의해 제어된다.
도시된 예의 프로세서 플랫폼(1200)은 인터페이스 회로(1220)를 또한 포함한다. 인터페이스 회로(1220)는 임의의 타입의 인터페이스 표준, 이를테면 이더넷 인터페이스, 범용 직렬 버스(USB), 블루투스(Bluetooth®) 인터페이스, 근접장 통신(NFC) 인터페이스, 및/또는 PCI 익스프레스 인터페이스에 의해 구현될 수 있다.
도시된 예에서, 하나 이상의 입력 디바이스(1222)는 인터페이스 회로(1220)에 접속된다. 입력 디바이스(들)(1222)는 사용자가 데이터 및/또는 명령들을 프로세서(1212)에 입력하는 것을 허용한다. 입력 디바이스(들)(1222)는 예컨대, 오디오 센서, 마이크로폰, 카메라(정지화상 또는 비디오), 키보드, 버튼, 마우스, 터치스크린, 트랙-패드, 트랙볼, 이소포인트(isopoint) 디바이스, 및/또는 음성 인식 시스템에 의해 구현될 수 있다.
하나 이상의 출력 디바이스(1224)는 도시된 예의 인터페이스 회로(1220)에 또한 접속된다. 출력 디바이스들(1224)은, 예를 들어, 디스플레이 디바이스들(예컨대, 발광 다이오드(LED), 유기 발광 다이오드(OLED), 액정 디스플레이(LCD), 음극선관 디스플레이(CRT), 인-플레이스 스위칭(IPS; in-place switching) 디스플레이, 터치스크린 등), 촉각 출력 디바이스, 프린터 및/또는 스피커에 의해 구현될 수 있다. 따라서, 도시된 예의 인터페이스 회로(1220)는 전형적으로, 그래픽 드라이버 카드, 그래픽 드라이버 칩, 및/또는 그래픽 드라이버 프로세서를 포함한다.
도시된 예의 인터페이스 회로(1220)는 또한, 송신기, 수신기, 송수신기, 모뎀, 가정용 게이트웨이, 무선 액세스 포인트, 및/또는 네트워크(1226)를 통한 외부 기계들(예컨대, 임의의 종류의 컴퓨팅 디바이스들)과의 데이터의 교환을 용이하게 하기 위한 네트워크 인터페이스와 같은 통신 디바이스를 포함한다. 통신은, 예컨대, 이더넷 접속, 디지털 가입자 회선(DSL) 접속, 전화선 접속, 동축 케이블 시스템, 위성 시스템, 가시거리(line-of-site) 무선 시스템, 셀룰러 전화 시스템 등을 통해 이루어질 수 있다.
도시된 예의 프로세서 플랫폼(1200)은 소프트웨어 및/또는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스(1228)를 또한 포함한다. 이러한 대용량 저장 디바이스들(1228)의 예들은 플로피 디스크 드라이브들, 하드 드라이브 디스크들, 콤팩트 디스크 드라이브들, 블루레이 디스크 드라이브들, 복수 배열 독립 디스크(RAID) 시스템들, 및 디지털 다기능 디스크(DVD) 드라이브들을 포함한다.
도 8 내지 도 10의 기계 실행가능한 명령어들(1232)은, 대용량 저장 디바이스(1228)에, 휘발성 메모리(1214)에, 비휘발성 메모리(1216)에, 및/또는 착탈식 비일시적 컴퓨터 판독가능한 저장 매체, 이를테면 CD 또는 DVD 상에 저장될 수 있다.
전술한 내용으로부터, 파이프라인 실행을 최적화하는 예시적인 방법들, 장치들 및 제조 물품들이 개시되어 있음을 이해할 것이다. 본 명세서에 개시된 예들은 하나 이상의 파이프라인 컴포넌트를 포함하는 파이프라인 최적화 시스템을 이용한 스테레오 매칭을 수행하여 스테레오 이미지들에서 매칭 픽셀들과 연관된 디스패리티 및/또는 경로 비용들의 결정을 용이하게 한다. 본 명세서에 개시된 예들은 1 클록 사이클 처리량당 1 픽셀의 센서스 변환 함수들을 처리 및/또는 아니면 용이하게 하는 아키텍처를 가능하게 한다. 본 명세서에 개시된 예들은 하나 이상의 개시된 버퍼 또는 저장소 구성에서 원형 버퍼 스키마를 이용하여 데이터 이동들을 감소시킴으로써 자원들의 전력 소비를 감소시킨다. 본 명세서에 개시된 예들은 스테레오 이미지들에 포함된 픽셀들과 연관된 디스패리티 계산들을 가속화하는 아키텍처를 이용하여 스테레오 쌍에서의 대응하는 포인트들을 매칭시킴으로써 구성된 스테레오 디스패리티 맵을 생성한다.
예 1은 스테레오 매칭을 수행하기 위한 장치를 포함하며, 이 장치는 제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 제1 위치와 제2 위치 사이의 매칭 비용을 계산함으로써 결정하기 위한 비용 계산 관리자; 및 집계 생성기를 포함하며, 집계 생성기는, 값을 포함하는 디스패리티 맵을 생성하고, 디스패리티 맵에 기반하여 제1 위치와 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하기 위한 것이다.
예 2는 예 1의 장치를 포함하며, 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하기 위한 센서스 변환 핸들러를 더 포함한다.
예 3은 예 2의 장치를 포함하며, 센서스 변환 핸들러는 픽셀들의 세트의 강도 값들을 픽셀 커널의 중심 픽셀의 강도 값, 강도 값들의 평균 값 또는 임계 값과 비교함으로써 비트 스트링을 생성하기 위한 것이다.
예 4는 예 2의 장치를 포함하며, 비트 기술어는 포스트-마스크 비트 기술어이고, 센서스 변환 핸들러는 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 비트 스트링을 생성하기 위한 것이다.
예 5는 예 2의 장치를 포함하며, 비트 기술어는 제1 비트 기술어이고, 비용 계산 관리자는, 제1 픽셀의 제1 픽셀 강도 값과 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하는 것, 제1 픽셀의 제1 비트 기술어와 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하는 것, 절대 차이와 해밍 거리의 합을 계산하는 것, 및 합을 정수에 클램핑함으로써 디스패리티를 결정하는 것에 의해 디스패리티를 결정하기 위한 것이다.
예 6은 예 1의 장치를 포함하며, 매칭 비용은 제1 매칭 비용이고, 비용 계산 관리자는 배럴 자리이동기들을 이용하여 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하기 위한 것이다.
예 7은 예 1의 장치를 포함하며, 집계 생성기는, 제2 픽셀로부터 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하고, 제2 픽셀로부터 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하고, 제2 픽셀로부터 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하며, 제1 집계 비용, 제2 집계 비용, 및 제3 집계 비용의 합을 계산하는 것에 기반하여 디스패리티 맵을 결정하기 위한 것이다.
예 8은 명령어들을 포함하는 비일시적 컴퓨터 판독가능한 저장 매체를 포함하며, 이러한 명령어들은, 실행될 때, 기계로 하여금 적어도, 제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 제1 위치와 제2 위치 사이의 매칭 비용을 계산함으로써 결정하게 하고; 값을 포함하는 디스패리티 맵을 생성하게 하며; 디스패리티 맵에 기반하여 제1 위치와 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하게 한다.
예 9는 예 8의 비일시적 컴퓨터 판독가능한 저장 매체를 포함하며, 실행될 때, 기계로 하여금 적어도, 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하게 하는 명령어들을 더 포함한다.
예 10은 예 9의 비일시적 컴퓨터 판독가능한 저장 매체를 포함하며, 실행될 때, 기계로 하여금 적어도, 픽셀들의 세트의 강도 값들을 픽셀 커널의 중심 픽셀의 강도 값, 강도 값들의 평균 값 또는 임계 값과 비교함으로써 비트 스트링을 생성하게 하는 명령어들을 더 포함한다.
예 11은 예 9의 비일시적 컴퓨터 판독가능한 저장 매체를 포함하며, 비트 기술어는 포스트-마스크 비트 기술어이고, 실행될 때, 기계로 하여금 적어도, 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 비트 스트링을 생성하게 하는 명령어들을 더 포함한다.
예 12는 예 9의 비일시적 컴퓨터 판독가능한 저장 매체를 포함하며, 비트 기술어는 제1 비트 기술어이고, 실행될 때, 기계로 하여금 적어도, 제1 픽셀의 제1 픽셀 강도 값과 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하게 하고, 제1 픽셀의 제1 비트 기술어와 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하게 하고, 절대 차이와 해밍 거리의 합을 계산하게 하며, 합을 정수에 클램핑함으로써 디스패리티를 결정하게 하는 명령어들을 더 포함한다.
예 13은 예 8의 비일시적 컴퓨터 판독가능한 저장 매체를 포함하며, 매칭 비용은 제1 매칭 비용이고, 실행될 때, 기계로 하여금 적어도, 배럴 자리이동기들을 이용하여 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하게 하는 명령어들을 더 포함한다.
예 14는 예 1의 비일시적 컴퓨터 판독가능한 저장 매체를 포함하며, 실행될 때, 기계로 하여금 적어도, 제2 픽셀로부터 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하게 하고, 제2 픽셀로부터 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하게 하고, 제2 픽셀로부터 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하게 하며, 제1 집계 비용, 제2 집계 비용, 및 제3 집계 비용의 합을 계산하는 것에 기반하여 디스패리티 맵을 결정하게 하는 명령어들을 더 포함한다.
예 15는 스테레오 매칭을 수행하기 위한 방법을 포함하며, 이 방법은 제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 제1 위치와 제2 위치 사이의 매칭 비용을 계산함으로써 결정하는 단계; 값을 포함하는 디스패리티 맵을 생성하는 단계; 및 디스패리티 맵에 기반하여 제1 위치와 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하는 단계를 포함한다.
예 16은 예 15의 방법을 포함하며, 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하는 단계를 더 포함한다.
예 17은 예 16의 방법을 포함하며, 비트 스트링을 생성하는 단계는 픽셀들의 세트의 강도 값들을 픽셀 커널의 중심 픽셀의 강도 값, 강도 값들의 평균 값 또는 임계 값과 비교하는 단계를 포함한다.
예 18은 예 16의 방법을 포함하며, 비트 기술어는 포스트-마스크 비트 기술어이고, 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 비트 스트링을 생성한다.
예 19는 예 16의 방법을 포함하며, 비트 기술어는 제1 비트 기술어이고, 제1 픽셀의 제1 픽셀 강도 값과 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하는 것, 제1 픽셀의 제1 비트 기술어와 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하는 것, 절대 차이와 해밍 거리의 합을 계산하는 것, 및 합을 정수에 클램핑함으로써 디스패리티를 결정하는 것에 의해 디스패리티를 결정한다.
예 20은 예 15의 방법을 포함하며, 매칭 비용은 제1 매칭 비용이고, 배럴 자리이동기들을 이용하여 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하는 단계를 더 포함한다.
예 21은 예 15의 방법을 포함하며, 제2 픽셀로부터 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하는 단계; 제2 픽셀로부터 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하는 단계; 제2 픽셀로부터 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하는 단계; 및 제1 집계 비용, 제2 집계 비용, 및 제3 집계 비용의 합을 계산하는 것에 기반하여 디스패리티 맵을 결정하는 단계를 더 포함한다.
예 22는 스테레오 매칭을 수행하기 위한 장치를 포함하며, 이 장치는 제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 제1 위치와 제2 위치 사이의 매칭 비용을 계산함으로써 결정하기 위한 제1 수단; 및 제2 수단을 포함하며, 제2 수단은, 값을 포함하는 디스패리티 맵을 생성하고, 디스패리티 맵에 기반하여 제1 위치와 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하기 위한 것이다.
예 23은 예 22의 장치를 포함하며, 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하기 위한 제3 수단을 더 포함한다.
예 24는 예 23의 장치를 포함하며, 제3 수단은 픽셀들의 세트의 강도 값들을 픽셀 커널의 중심 픽셀의 강도 값, 강도 값들의 평균 값 또는 임계 값과 비교함으로써 비트 스트링을 생성하기 위한 것이다.
예 25는 예 23의 장치를 포함하며, 비트 기술어는 포스트-마스크 비트 기술어이고, 제3 수단은 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 비트 스트링을 생성하기 위한 것이다.
예 26은 예 23의 장치를 포함하며, 비트 기술어는 제1 비트 기술어이고, 제1 수단은, 제1 픽셀의 제1 픽셀 강도 값과 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하는 것, 제1 픽셀의 제1 비트 기술어와 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하는 것, 절대 차이와 해밍 거리의 합을 계산하는 것, 및 합을 정수에 클램핑함으로써 디스패리티를 결정하는 것에 의해 디스패리티를 결정하기 위한 것이다.
예 27은 예 22의 장치를 포함하며, 매칭 비용은 제1 매칭 비용이고, 제1 수단은 배럴 자리이동기들을 이용하여 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하기 위한 것이다.
예 28은 예 22의 장치를 포함하며, 제2 수단은, 제2 픽셀로부터 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하고, 제2 픽셀로부터 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하고, 제2 픽셀로부터 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하며, 제1 집계 비용, 제2 집계 비용, 및 제3 집계 비용의 합을 계산하는 것에 기반하여 디스패리티 맵을 결정하기 위한 것이다.
본 명세서에 개시된 예들은, 개개의 게이트웨이들에 대한 링크들을 통해 결합된 사물 인터넷(IoT) 네트워크들에 적용될 수 있다. 사물 인터넷(IoT)은, 많은 수의 컴퓨팅 디바이스들이 서로 그리고 인터넷에 상호연결되어 매우 낮은 수준들에서 기능성 및 데이터 획득을 제공하는 개념이다. 따라서, 본 명세서에서 사용되는 바와 같이, IoT 디바이스는, 다른 IoT 디바이스들 및 인터넷과 같은 더 넓은 네트워크와 통신하는, 다른 것들 중에서도 감지 또는 제어와 같은 기능을 수행하는 반자율 디바이스를 포함할 수 있다.
종종, IoT 디바이스들은 메모리, 크기, 또는 기능성이 제한되며, 이는, 더 적은 수의 더 큰 디바이스와 유사한 비용으로 더 많은 수가 배치될 수 있게 한다. 그러나, IoT 디바이스는 스마트 폰, 랩톱, 태블릿, 또는 PC 또는 다른 더 큰 디바이스일 수 있다. 추가로, IoT 디바이스는, 스마트 폰 또는 다른 컴퓨팅 디바이스 상의 애플리케이션과 같은 가상 디바이스일 수 있다. IoT 디바이스들은, 데이터 저장, 프로세스 제어 등을 위해 IoT 디바이스들을 다른 IoT 디바이스들에 그리고 클라우드 애플리케이션들에 결합시키는데 이용되는 IoT 게이트웨이들을 포함할 수 있다.
IoT 디바이스들의 네트워크들은, 상업용 및 가정용 자동화 디바이스들, 이를테면, 배수 시스템들, 배전 시스템들, 파이프라인 제어 시스템들, 발전 제어 시스템들, 조명 스위치들, 온도조절기들, 잠금장치들, 카메라들, 알람들, 움직임 센서들 등을 포함할 수 있다. IoT 디바이스들은, 예컨대, 시스템들을 제어하거나 데이터에 액세스하기 위해, 원격 컴퓨터들, 서버들 및 다른 시스템들을 통해 액세스가능할 수 있다.
인터넷 및 유사한 네트워크들의 향후의 성장은 매우 많은 수의 IoT 디바이스들을 수반할 수 있다. 따라서, 본 명세서에 논의된 기법들의 맥락에서, 이러한 향후의 네트워킹에 대한 여러 혁신들은 모든 이러한 계층들이 아무 방해를 받지 않으면서 성장하고, 연결된 리소스들을 발견하여 액세스가능하게 하고, 연결된 리소스들을 숨기고 구획화하는 능력을 지원할 필요성을 해결할 것이다. 임의의 수의 네트워크 프로토콜들 및 통신 표준들이 이용될 수 있으며, 여기서, 각각의 프로토콜 및 표준은 특정 목적들을 해결하도록 설계된다. 추가로, 프로토콜들은, 위치, 시간, 또는 공간과 관계없이 동작하는 인간 액세스가능 서비스들을 지원하는 구조의 일부이다. 혁신들은, 서비스 전달 및 연관된 기반구조, 이를테면, 하드웨어 및 소프트웨어; 보안 향상들; 및 서비스 수준 및 서비스 전달 계약에 특정된 서비스 품질(QoS) 관점에 기반한 서비스들의 제공을 포함한다.
백본 링크들은, 광학 네트워크들을 비롯하여 임의의 수의 유선 또는 무선 기술을 포함할 수 있으며, 근거리 네트워크(LAN), 광역 네트워크(WAN), 또는 인터넷의 일부일 수 있다. 추가적으로, 이러한 통신 링크들은, 다양한 디바이스들의 상호연결을 용이하게 하는 다중화/역다중화 컴포넌트들의 이용을 포함하는, IoT 디바이스들 및 게이트웨이들 둘 모두 간의 광학 신호 경로들을 용이하게 한다.
네트워크 토폴로지는 임의의 수의 타입들의 IoT 네트워크들, 이를테면, 블루투스 저에너지(BLE) 링크들을 이용하여 네트워크가 제공되는 메쉬 네트워크를 포함할 수 있다. 존재할 수 있는 다른 타입들의 IoT 네트워크들은, IEEE 802.11(Wi-Fi®) 링크들을 통해 IoT 디바이스들과 통신하는데 이용되는 무선 근거리 네트워크(WLAN) 네트워크, LTE/LTE-A(4G) 또는 5G 셀룰러 네트워크를 통해 IoT 디바이스들과 통신하는데 이용되는 셀룰러 네트워크, 및 저전력 광역(LPWA) 네트워크, 예컨대, 로라(LoRa) 협의체에 의해 반포된 LoRaWan 규격과 호환가능한 LPWA 네트워크 또는 국제 인터넷 표준화 기구(IETF; Internet Engineering Task Force)에 의해 반포된 규격과 호환가능한 저전력 광역 네트워크(LPWAN)들을 통한 IPv6을 포함한다. 추가로, 개개의 IoT 네트워크들은, LTE 셀룰러 링크, LPWA 링크, 또는 IEEE 802.15.4 표준, 이를테면 Zigbee®에 기반한 링크와 같은 임의의 수의 통신 링크를 이용하여 외부 네트워크 제공자(예컨대, 계층 2 또는 계층 3 제공자)와 통신할 수 있다. 개개의 IoT 네트워크들은 또한, 다양한 네트워크 및 인터넷 애플리케이션 프로토콜들, 이를테면 제약된 애플리케이션 프로토콜(CoAP)의 이용과 함께 동작할 수 있다. 개개의 IoT 네트워크들은 또한, 링크된 디바이스들 및 네트워크들의 클러스터 트리를 형성하는 링크들의 망을 제공하는 조정기 디바이스들과 통합될 수 있다.
이러한 IoT 네트워크들 각각은, 본 명세서에서 설명된 것들과 같은 새로운 기술적 특징들에 대한 기회들을 제공할 수 있다. 개선된 기술들 및 네트워크들은, 포그(fog) 디바이스들 또는 시스템들로서의 IoT 네트워크들의 이용을 포함하여, 디바이스들 및 네트워크들의 기하급수적인 성장을 가능하게 할 수 있다. 이러한 개선된 기술들의 이용이 성장함에 따라, 직접적인 인간 개입을 필요로 하지 않는 자체 관리, 기능 발전, 및 협업을 위한 IoT 네트워크들이 개발될 수 있다. 개선된 기술들은 심지어, IoT 네트워크들이 중앙집중형 제어 시스템들 없이도 기능할 수 있게 할 수 있다. 따라서, 본 명세서에서 설명된 개선된 기술들은, 현재 구현들을 훨씬 넘어서서 네트워크 관리 및 동작 기능들을 자동화하고 향상시키는데 이용될 수 있다.
예에서, 이를테면 백본 링크들을 통한 IoT 디바이스들 사이의 통신들은, 인증, 권한부여, 및 계정(AAA; authentication, authorization, and accounting)에 대해 분산형 시스템에 의해 보호될 수 있다. 분산형 AAA 시스템에서, 상호연결된 이종 네트워크 기반구조에 걸쳐, 분산된 결제, 신용거래, 감사, 권한부여, 및 인증 시스템들이 구현될 수 있다. 이는, 시스템들 및 네트워크들이 자율적 동작들을 지향할 수 있게 한다. 이러한 타입들의 자율적 동작들에서, 기계들은 심지어 인적 리소스들과 계약을 맺고 다른 기계 네트워크들과 파트너쉽들을 협상할 수 있다. 이는, 상호 목적들의 달성 및 개략적인 계획된 서비스 수준 계약들에 대한 균형잡힌 서비스 전달을 허용할 뿐만 아니라, 계량, 측정, 추종성, 및 추적가능성을 제공하는 해결책들을 달성할 수 있다. 새로운 공급망 구조들 및 방법들의 생성은, 인간의 어떠한 관여도 없이 다수의 서비스들이 생성되어 가치를 창출하고 와해될 수 있게 할 수 있다.
이러한 IoT 네트워크들은, 사운드, 광, 전자 트래픽, 안면 및 패턴 인식, 냄새, 진동과 같은 감지 기술들을 IoT 디바이스들 간의 자율적 구성들 내에 통합함으로써 추가로 향상될 수 있다. 감각 시스템들의 통합은, 계약 상의 서비스 목적들, 편성, 및 서비스 품질(QoS) 기반 스워밍(swarming) 및 리소스들의 융합을 위한 서비스 전달의 조정 및 체계적이고 자율적인 통신을 허용할 수 있다.
다른 IoT 디바이스들뿐만 아니라 클라우드 네트워크와 통신하기 위해 IoT 디바이스들의 클러스터들이 구비될 수 있다. 이는, IoT 디바이스들이 디바이스들 사이에 애드-혹 네트워크를 형성할 수 있게 할 수 있어서, 그들이 단일 디바이스로서 기능할 수 있게 하며, 이는 포그 디바이스로 지칭될 수 있다.
IoT 디바이스들의 메쉬 네트워크와 통신하는 클라우드 컴퓨팅 네트워크는, 클라우드 컴퓨팅 네트워크의 에지에서 포그 디바이스로서 동작할 수 있다. IoT 디바이스들의 메쉬 네트워크는, 클라우드의 에지에서 동작하는 포그로 지칭될 수 있다.
포그는, 다수의 IoT 디바이스들이 예컨대 무선 링크들에 의해 서로 통신하는 대규모로 상호연결된 네트워크인 것으로 간주될 수 있다. 예로서, 이러한 상호연결된 네트워크는, 오픈 커넥티비티 재단(OCF; Open Connectivity Foundation™)에 의해 릴리스된 상호연결 규격을 이용하여 가능해질 수 있다. 이러한 표준은, 디바이스들이 서로를 발견하고 상호연결들을 위한 통신들을 설정할 수 있게 한다. 다른 상호연결 프로토콜들이 또한 이용될 수 있는데, 예컨대, 다른 것들 중에서도, 최적화된 링크 상태 라우팅(OLSR) 프로토콜, 모바일 애드-혹 네트워킹에 대한 더 양호한 접근법(B.A.T.M.A.N.; the better approach to mobile ad-hoc networking)의 라우팅 프로토콜, 또는 OMA 경량 M2M(LWM2M) 프로토콜을 포함한다.
IoT 디바이스들의 3개의 타입은, 게이트웨이들, 데이터 집계기들, 및 센서들을 포함하지만, 임의의 조합들의 IoT 디바이스들 및 기능성이 이용될 수 있다. 게이트웨이들은 클라우드와 포그 사이의 통신들을 제공하는 에지 디바이스들일 수 있고, 또한, 센서들로부터 획득된 데이터, 이를테면, 움직임 데이터, 흐름 데이터, 온도 데이터 등에 대한 백엔드 처리 기능을 제공할 수 있다. 데이터 집계기들은, 임의의 수의 센서로부터 데이터를 수집하고, 분석을 위해 백엔드 처리 기능을 수행할 수 있다. 결과들, 원시 데이터, 또는 둘 모두가 게이트웨이들을 통해 클라우드로 전달될 수 있다. 센서들은, 예컨대, 데이터를 수집하는 것 및 데이터를 처리하는 것 둘 모두를 할 수 있는 완전한 IoT 디바이스들일 수 있다. 일부 경우들에서, 센서들은 기능성이 더 제한될 수 있어서, 예컨대, 데이터를 수집하고, 데이터 집계기들 또는 게이트웨이들이 데이터를 처리할 수 있게 한다.
임의의 IoT 디바이스로부터의 통신들은, IoT 디바이스들 중 임의의 IoT 디바이스 사이의 편리한 경로(예컨대, 가장 편리한 경로)를 따라 전달되어 게이트웨이들에 도달할 수 있다. 이러한 네트워크들에서, 다수의 상호연결들이 실질적인 중복성을 제공하여, 다수의 IoT 디바이스들이 손실되더라도 통신들이 유지될 수 있게 한다. 추가로, 메쉬 네트워크의 이용은, 전력이 매우 낮거나 기반구조로부터 멀리에 위치된 IoT 디바이스들이 이용될 수 있게 할 수 있는데, 그 이유는, 다른 IoT 디바이스에 연결하기 위한 범위가 게이트웨이들에 연결하기 위한 범위보다 훨씬 작을 수 있기 때문이다.
이러한 IoT 디바이스들로부터 제공되는 포그는, 클라우드의 에지에 위치된 단일 디바이스, 예컨대 포그 디바이스로서, 서버와 같은 클라우드 내의 디바이스들에 제공될 수 있다. 이러한 예에서, 포그 디바이스들로부터 비롯된 경고들이 포그 내의 특정 IoT 디바이스로부터 비롯된 것으로 식별됨이 없이 전송될 수 있다. 이러한 방식으로, 포그는, 다른 것들 중에서도, 데이터 분석, 데이터 집계, 기계 학습과 같은 처리 또는 데이터 집약적 작업들을 수행하기 위한 컴퓨팅 및 저장 리소스들을 제공하는 분산형 플랫폼으로 간주될 수 있다.
일부 예들에서, IoT 디바이스들은, 명령적 프로그래밍 양식을 이용하여 구성될 수 있는데, 예컨대, 각각의 IoT 디바이스가 특정 기능 및 통신 파트너들을 갖는다. 그러나, 포그 디바이스를 형성하는 IoT 디바이스들은 선언적 프로그래밍 양식으로 구성될 수 있어서, IoT 디바이스들이 그들의 동작들 및 통신들을 재구성할 수 있게 하는데, 이를테면, 조건들, 질의들, 디바이스 장애들에 대한 응답으로 필요한 리소스들을 결정할 수 있게 한다. 예로서, IoT 디바이스들에 의해 모니터링되는 장비의 서브세트의 동작들에 관한, 서버에 위치된 사용자로부터의 질의는, 포그 디바이스가, 질의에 응답하는데 필요한 IoT 디바이스들, 이를테면 특정 센서들을 선택하는 것을 초래할 수 있다. 그런 다음, 이러한 센서들로부터의 데이터는, 질의에 응답하기 위해 포그 디바이스에 의해 서버로 전송되기 전에, 센서들, 데이터 집계기들, 또는 게이트웨이들의 임의의 조합에 의해 집계 및 분석될 수 있다. 이러한 예에서, 포그 내의 IoT 디바이스들은, 흐름 센서들 또는 온도 센서들로부터의 데이터를 부가하는 것과 같이, 질의에 기반하여, 이용되는 센서들을 선택할 수 있다. 추가로, IoT 디바이스들 중 일부가 동작가능하지 않은 경우, 이용가능한 경우에는 포그 디바이스 내의 다른 IoT 디바이스들이 유사한 데이터를 제공할 수 있다.
특정 예시적인 방법들, 장치, 및 제조 물품들이 본 명세서에 개시되었지만, 본 특허의 적용 범위는 이에 제한되지 않는다. 반대로, 본 특허는, 본 특허의 청구항들의 범위 내에 명백히 속하는 모든 방법들, 장치, 및 제조 물품들을 포괄한다.

Claims (28)

  1. 스테레오 매칭을 수행하기 위한 장치로서,
    제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 상기 제1 위치와 상기 제2 위치 사이의 매칭 비용을 계산함으로써 결정하기 위한 비용 계산 관리자; 및
    집계 생성기
    를 포함하며, 상기 집계 생성기는,
    상기 값을 포함하는 디스패리티 맵을 생성하고,
    상기 디스패리티 맵에 기반하여 상기 제1 위치와 상기 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  2. 제1항에 있어서,
    상기 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하기 위한 센서스 변환 핸들러를 더 포함하는, 스테레오 매칭을 수행하기 위한 장치.
  3. 제2항에 있어서,
    상기 센서스 변환 핸들러는 상기 픽셀들의 세트의 강도 값들을 상기 픽셀 커널의 중심 픽셀의 강도 값, 상기 강도 값들의 평균 값 또는 임계 값과 비교함으로써 상기 비트 스트링을 생성하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  4. 제2항에 있어서,
    상기 비트 기술어는 포스트-마스크 비트 기술어이고, 상기 센서스 변환 핸들러는 상기 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 상기 비트 스트링을 생성하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  5. 제2항에 있어서,
    상기 비트 기술어는 제1 비트 기술어이고,
    상기 비용 계산 관리자는,
    상기 제1 픽셀의 제1 픽셀 강도 값과 상기 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하는 것,
    상기 제1 픽셀의 상기 제1 비트 기술어와 상기 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하는 것,
    상기 절대 차이와 상기 해밍 거리의 합을 계산하는 것, 및
    상기 합을 정수에 클램핑함으로써 상기 디스패리티를 결정하는 것
    에 의해 상기 디스패리티를 결정하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  6. 제1항에 있어서,
    상기 매칭 비용은 제1 매칭 비용이고, 상기 비용 계산 관리자는 배럴 자리이동기들을 이용하여 상기 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  7. 제1항에 있어서,
    상기 집계 생성기는,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하고,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하고,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하며,
    상기 제1 집계 비용, 상기 제2 집계 비용, 및 상기 제3 집계 비용의 합을 계산하는 것에 기반하여 상기 디스패리티 맵을 결정하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  8. 명령어들을 포함하는 비일시적 컴퓨터 판독가능한 저장 매체로서,
    상기 명령어들은 실행될 때 기계로 하여금 적어도,
    제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 상기 제1 위치와 상기 제2 위치 사이의 매칭 비용을 계산함으로써 결정하게 하고;
    상기 값을 포함하는 디스패리티 맵을 생성하게 하며;
    상기 디스패리티 맵에 기반하여 상기 제1 위치와 상기 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하게 하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  9. 제8항에 있어서,
    실행될 때 상기 기계로 하여금 적어도, 상기 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하게 하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  10. 제9항에 있어서,
    실행될 때 상기 기계로 하여금 적어도, 상기 픽셀들의 세트의 강도 값들을 상기 픽셀 커널의 중심 픽셀의 강도 값, 상기 강도 값들의 평균 값 또는 임계 값과 비교함으로써 상기 비트 스트링을 생성하게 하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  11. 제9항에 있어서,
    상기 비트 기술어는 포스트-마스크 비트 기술어이고, 실행될 때 상기 기계로 하여금 적어도, 상기 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 상기 비트 스트링을 생성하게 하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  12. 제9항에 있어서,
    상기 비트 기술어는 제1 비트 기술어이고,
    실행될 때 상기 기계로 하여금 적어도,
    상기 제1 픽셀의 제1 픽셀 강도 값과 상기 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하게 하고,
    상기 제1 픽셀의 상기 제1 비트 기술어와 상기 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하게 하고,
    상기 절대 차이와 상기 해밍 거리의 합을 계산하게 하며,
    상기 합을 정수에 클램핑함으로써 상기 디스패리티를 결정하게 하는
    명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  13. 제8항에 있어서,
    상기 매칭 비용은 제1 매칭 비용이고, 실행될 때 상기 기계로 하여금 적어도, 배럴 자리이동기들을 이용하여 상기 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하게 하는 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  14. 제1항에 있어서,
    실행될 때 상기 기계로 하여금 적어도,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하게 하고,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하게 하고,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하게 하며,
    상기 제1 집계 비용, 상기 제2 집계 비용, 및 상기 제3 집계 비용의 합을 계산하는 것에 기반하여 상기 디스패리티 맵을 결정하게 하는
    명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체.
  15. 스테레오 매칭을 수행하기 위한 방법으로서,
    제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 상기 제1 위치와 상기 제2 위치 사이의 매칭 비용을 계산함으로써 결정하는 단계;
    상기 값을 포함하는 디스패리티 맵을 생성하는 단계; 및
    상기 디스패리티 맵에 기반하여 상기 제1 위치와 상기 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하는 단계
    를 포함하는, 스테레오 매칭을 수행하기 위한 방법.
  16. 제15항에 있어서,
    상기 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하는 단계를 더 포함하는, 스테레오 매칭을 수행하기 위한 방법.
  17. 제16항에 있어서,
    상기 비트 스트링을 생성하는 단계는 상기 픽셀들의 세트의 강도 값들을 상기 픽셀 커널의 중심 픽셀의 강도 값, 상기 강도 값들의 평균 값 또는 임계 값과 비교하는 단계를 포함하는, 스테레오 매칭을 수행하기 위한 방법.
  18. 제16항에 있어서,
    상기 비트 기술어는 포스트-마스크 비트 기술어이고, 상기 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 상기 비트 스트링을 생성하는, 스테레오 매칭을 수행하기 위한 방법.
  19. 제16항에 있어서,
    상기 비트 기술어는 제1 비트 기술어이고,
    상기 제1 픽셀의 제1 픽셀 강도 값과 상기 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하는 것,
    상기 제1 픽셀의 상기 제1 비트 기술어와 상기 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하는 것,
    상기 절대 차이와 상기 해밍 거리의 합을 계산하는 것, 및
    상기 합을 정수에 클램핑함으로써 상기 디스패리티를 결정하는 것
    에 의해 상기 디스패리티를 결정하는, 스테레오 매칭을 수행하기 위한 방법.
  20. 제15항에 있어서,
    상기 매칭 비용은 제1 매칭 비용이고, 배럴 자리이동기들을 이용하여 상기 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하는 단계를 더 포함하는, 스테레오 매칭을 수행하기 위한 방법.
  21. 제15항에 있어서,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하는 단계;
    상기 제2 픽셀로부터 상기 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하는 단계;
    상기 제2 픽셀로부터 상기 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하는 단계; 및
    상기 제1 집계 비용, 상기 제2 집계 비용, 및 상기 제3 집계 비용의 합을 계산하는 것에 기반하여 상기 디스패리티 맵을 결정하는 단계
    를 더 포함하는, 스테레오 매칭을 수행하기 위한 방법.
  22. 스테레오 매칭을 수행하기 위한 장치로서,
    제1 이미지의 제1 픽셀의 제1 위치 및 제2 이미지의 제2 픽셀의 제2 위치와 연관된 값을 상기 제1 위치와 상기 제2 위치 사이의 매칭 비용을 계산함으로써 결정하기 위한 제1 수단; 및
    제2 수단
    을 포함하며, 상기 제2 수단은,
    상기 값을 포함하는 디스패리티 맵을 생성하고,
    상기 디스패리티 맵에 기반하여 상기 제1 위치와 상기 제2 위치 사이의 수평 좌표들에서의 차이에 대응하는 최소 값을 결정하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  23. 제22항에 있어서,
    상기 제2 픽셀을 포함하는 픽셀 커널의 픽셀들의 세트의 강도 값들을 비트 스트링에 매핑하는 비트 기술어를 생성하기 위한 제3 수단을 더 포함하는, 스테레오 매칭을 수행하기 위한 장치.
  24. 제23항에 있어서,
    상기 제3 수단은 상기 픽셀들의 세트의 강도 값들을 상기 픽셀 커널의 중심 픽셀의 강도 값, 상기 강도 값들의 평균 값 또는 임계 값과 비교함으로써 상기 비트 스트링을 생성하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  25. 제23항에 있어서,
    상기 비트 기술어는 포스트-마스크 비트 기술어이고, 상기 제3 수단은 상기 포스트-마스크 비트 기술어를 생성하기 위해 프리-마스크 비트 기술어에 연결 마스크 및 하나 이상의 소팅 트리를 적용함으로써 상기 비트 스트링을 생성하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  26. 제23항에 있어서,
    상기 비트 기술어는 제1 비트 기술어이고,
    상기 제1 수단은,
    상기 제1 픽셀의 제1 픽셀 강도 값과 상기 제2 픽셀의 제2 픽셀 강도 값 사이의 절대 차이를 계산하는 것,
    상기 제1 픽셀의 상기 제1 비트 기술어와 상기 제2 픽셀의 제2 비트 기술어 사이의 해밍 거리를 계산하는 것,
    상기 절대 차이와 상기 해밍 거리의 합을 계산하는 것, 및
    상기 합을 정수에 클램핑함으로써 상기 디스패리티를 결정하는 것
    에 의해 상기 디스패리티를 결정하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  27. 제22항에 있어서,
    상기 매칭 비용은 제1 매칭 비용이고, 상기 제1 수단은 배럴 자리이동기들을 이용하여 상기 제1 매칭 비용을 포함하는 매칭 비용들을 재배열하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
  28. 제22항에 있어서,
    상기 제2 수단은,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 좌측->우측 입력 경로에 대응하는 제1 전파 경로와 연관된 제1 집계 비용을 계산하고,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 우측->좌측 입력 경로에 대응하는 제2 전파 경로와 연관된 제2 집계 비용을 계산하고,
    상기 제2 픽셀로부터 상기 제1 픽셀로의 상단->하단 입력 경로에 대응하는 제3 전파 경로와 연관된 제3 집계 비용을 계산하며,
    상기 제1 집계 비용, 상기 제2 집계 비용, 및 상기 제3 집계 비용의 합을 계산하는 것에 기반하여 상기 디스패리티 맵을 결정하기 위한 것인, 스테레오 매칭을 수행하기 위한 장치.
KR1020197037037A 2017-05-19 2018-05-18 파이프라인 실행을 최적화하기 위한 방법들, 시스템들 및 장치 KR102655086B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762508891P 2017-05-19 2017-05-19
US62/508,891 2017-05-19
PCT/EP2018/063229 WO2018211127A1 (en) 2017-05-19 2018-05-18 Methods, systems and apparatus to optimize pipeline execution

Publications (2)

Publication Number Publication Date
KR20200020705A true KR20200020705A (ko) 2020-02-26
KR102655086B1 KR102655086B1 (ko) 2024-04-08

Family

ID=62530189

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197037037A KR102655086B1 (ko) 2017-05-19 2018-05-18 파이프라인 실행을 최적화하기 위한 방법들, 시스템들 및 장치

Country Status (5)

Country Link
US (2) US11380005B2 (ko)
KR (1) KR102655086B1 (ko)
CN (1) CN110998660B (ko)
DE (1) DE112018002572T5 (ko)
WO (1) WO2018211127A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200063368A (ko) * 2018-11-23 2020-06-05 연세대학교 산학협력단 대응점 일관성에 기반한 비지도 학습 방식의 스테레오 매칭 장치 및 방법

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813459A (zh) 2016-11-09 2020-10-23 华为技术有限公司 一种加速器加载方法、系统和加速器加载装置
CN108073423B (zh) * 2016-11-09 2020-01-17 华为技术有限公司 一种加速器加载方法、系统和加速器加载装置
WO2018211127A1 (en) * 2017-05-19 2018-11-22 Movidius Ltd. Methods, systems and apparatus to optimize pipeline execution
US11182914B2 (en) * 2018-05-21 2021-11-23 Facebook Technologies, Llc Dynamic structured light for depth sensing systems based on contrast in a local area
US11024037B2 (en) 2018-11-15 2021-06-01 Samsung Electronics Co., Ltd. Foreground-background-aware atrous multiscale network for disparity estimation
FR3094122A1 (fr) * 2019-03-22 2020-09-25 Stmicroelectronics (Grenoble 2) Sas Dispositif électronique de traitement d’images
CN111260711B (zh) 2020-01-10 2021-08-10 大连理工大学 一种弱监督可信代价传播的视差估计方法
US11356827B2 (en) * 2020-07-31 2022-06-07 King Abdulaziz University Compressive sensing-aided LPWAN MAC layer
CN116489289B (zh) * 2023-06-16 2023-11-21 浙江芯劢微电子股份有限公司 一种同轴视频信号数字预钳位方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140205181A1 (en) * 2012-05-11 2014-07-24 John I. Woodfill Systems and methods for row causal scan-order optimization stereo matching
US20150123973A1 (en) * 2013-11-06 2015-05-07 Oracle International Corporation Automated generation of a three-dimensional space representation and planogram verification
JP2015162156A (ja) * 2014-02-28 2015-09-07 オリンパス株式会社 画像処理装置、画像処理方法及びプログラム
US20160048970A1 (en) * 2014-08-15 2016-02-18 Maziar Loghman Multi-resolution depth estimation using modified census transform for advanced driver assistance systems
KR20160045098A (ko) * 2013-08-19 2016-04-26 노키아 테크놀로지스 오와이 객체 검출 및 세그먼트화를 위한 방법, 장치 및 컴퓨터 프로그램 제품

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2840706B2 (ja) * 1988-10-25 1998-12-24 株式会社鷹山 画像処理方法
US6215898B1 (en) * 1997-04-15 2001-04-10 Interval Research Corporation Data processing system and method
US8855405B2 (en) * 2003-04-30 2014-10-07 Deere & Company System and method for detecting and analyzing features in an agricultural field for vehicle guidance
KR100603603B1 (ko) * 2004-12-07 2006-07-24 한국전자통신연구원 변위 후보 및 이중 경로 동적 프로그래밍을 이용한 스테레오 변위 결정 장치 및 그 방법
JP4767595B2 (ja) * 2005-06-15 2011-09-07 パナソニック株式会社 対象物検出装置及びその学習装置
JP4402025B2 (ja) * 2005-08-29 2010-01-20 富士フイルム株式会社 複眼撮像装置及び複眼撮像装置の制御プログラム
CN101933335B (zh) * 2008-01-29 2012-09-05 汤姆森特许公司 将二维图像数据转换为立体图像数据的方法和系统
JP4960400B2 (ja) * 2009-03-26 2012-06-27 株式会社東芝 ステレオ画像符号化方法、及び、ステレオ画像復号化方法
US8947534B2 (en) * 2009-06-11 2015-02-03 Google Technology Holdings LLC System and method for providing depth imaging
JP5316309B2 (ja) * 2009-08-25 2013-10-16 コニカミノルタ株式会社 画像処理装置および画像処理方法
US8488870B2 (en) * 2010-06-25 2013-07-16 Qualcomm Incorporated Multi-resolution, multi-window disparity estimation in 3D video processing
US8478076B2 (en) * 2010-07-05 2013-07-02 Apple Inc. Alignment of digital images and local motion detection for high dynamic range (HDR) imaging
EP2602761A4 (en) * 2010-08-03 2017-11-01 Panasonic Intellectual Property Management Co., Ltd. Object detection device, object detection method, and program
JP2012253666A (ja) * 2011-06-06 2012-12-20 Sony Corp 画像理装置および方法、並びにプログラム
US8897546B2 (en) * 2011-09-29 2014-11-25 Texas Instruments Incorporated Semi-global stereo correspondence processing with lossless image decomposition
US9107213B2 (en) 2011-11-09 2015-08-11 Samsung Electronics Co., Ltd. Reference signal for time and/or frequency tracking in a wireless network
WO2013072212A1 (en) * 2011-11-15 2013-05-23 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Apparatus and method for real-time capable disparity estimation for virtual view rendering suitable for multi-threaded execution
US8605993B2 (en) * 2011-11-21 2013-12-10 Robo-team Ltd. Methods and systems of merging depth data from a plurality of disparity maps
JP5818674B2 (ja) * 2011-12-21 2015-11-18 株式会社東芝 画像処理装置、方法、及びプログラム、並びに、画像表示装置
US8687892B2 (en) * 2012-06-21 2014-04-01 Thomson Licensing Generating a binary descriptor representing an image patch
WO2014013405A1 (en) * 2012-07-20 2014-01-23 Koninklijke Philips N.V. Metadata for depth filtering
WO2014037603A1 (en) * 2012-09-06 2014-03-13 Nokia Corporation An apparatus, a method and a computer program for image processing
US9247237B2 (en) * 2012-12-12 2016-01-26 Intel Corporation Techniques for wavelet-based image disparity estimation
US10074179B2 (en) * 2013-05-07 2018-09-11 Sharp Kabushiki Kaisha Image measurement device
KR20150053438A (ko) * 2013-11-08 2015-05-18 한국전자통신연구원 스테레오 매칭 시스템과 이를 이용한 시차 맵 생성 방법
US9390508B2 (en) * 2014-03-03 2016-07-12 Nokia Technologies Oy Method, apparatus and computer program product for disparity map estimation of stereo images
JP5999127B2 (ja) * 2014-03-12 2016-09-28 トヨタ自動車株式会社 画像処理装置
WO2015138737A1 (en) * 2014-03-12 2015-09-17 Brass Roots Technologies, LLC Bit plane memory system
US9407896B2 (en) * 2014-03-24 2016-08-02 Hong Kong Applied Science and Technology Research Institute Company, Limited Multi-view synthesis in real-time with fallback to 2D from 3D to reduce flicker in low or unstable stereo-matching image regions
TWI538476B (zh) * 2014-03-24 2016-06-11 立普思股份有限公司 立體攝影系統及其方法
JP6314628B2 (ja) 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
US9619933B2 (en) * 2014-06-16 2017-04-11 Occipital, Inc Model and sizing information from smartphone acquired image sequences
JP6411188B2 (ja) * 2014-11-26 2018-10-24 国立研究開発法人産業技術総合研究所 ステレオマッチング装置とステレオマッチングプログラムとステレオマッチング方法
KR101622344B1 (ko) * 2014-12-16 2016-05-19 경북대학교 산학협력단 적응적 영역 가중치가 적용된 센서스 변환 기반 스테레오 정합을 통한 시차 계산 방법 및 그 시스템
JP6485072B2 (ja) * 2015-01-29 2019-03-20 富士通株式会社 画像探索装置、画像探索方法および画像探索プログラム
JP2016197795A (ja) * 2015-04-03 2016-11-24 日立オートモティブシステムズ株式会社 撮像装置
WO2016185458A1 (en) * 2015-05-17 2016-11-24 Inuitive Ltd. A method for estimating aggregation results for generating three dimensional images
US11423311B2 (en) 2015-06-04 2022-08-23 Samsung Electronics Co., Ltd. Automatic tuning of artificial neural networks
US10460230B2 (en) 2015-06-04 2019-10-29 Samsung Electronics Co., Ltd. Reducing computations in a neural network
US10554947B1 (en) * 2015-12-16 2020-02-04 Marvell International Ltd. Method and apparatus for stereo vision matching including disparity refinement based on matching merit values
US10080007B2 (en) * 2016-03-17 2018-09-18 Texas Instruments Incorporated Hybrid tiling strategy for semi-global matching stereo hardware acceleration
US10764561B1 (en) * 2016-04-04 2020-09-01 Compound Eye Inc Passive stereo depth sensing
KR102442594B1 (ko) * 2016-06-23 2022-09-13 한국전자통신연구원 조명기를 구비한 스테레오 매칭 시스템에서의 코스트 볼륨 연산장치 및 그 방법
US10462445B2 (en) * 2016-07-19 2019-10-29 Fotonation Limited Systems and methods for estimating and refining depth maps
WO2018211127A1 (en) * 2017-05-19 2018-11-22 Movidius Ltd. Methods, systems and apparatus to optimize pipeline execution
JP6986683B2 (ja) * 2018-01-05 2021-12-22 パナソニックIpマネジメント株式会社 視差値算出装置、視差値算出方法及びプログラム
CN110220493B (zh) * 2018-03-02 2023-11-10 北京图森智途科技有限公司 一种双目测距方法及其装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140205181A1 (en) * 2012-05-11 2014-07-24 John I. Woodfill Systems and methods for row causal scan-order optimization stereo matching
KR20160045098A (ko) * 2013-08-19 2016-04-26 노키아 테크놀로지스 오와이 객체 검출 및 세그먼트화를 위한 방법, 장치 및 컴퓨터 프로그램 제품
US20150123973A1 (en) * 2013-11-06 2015-05-07 Oracle International Corporation Automated generation of a three-dimensional space representation and planogram verification
JP2015162156A (ja) * 2014-02-28 2015-09-07 オリンパス株式会社 画像処理装置、画像処理方法及びプログラム
US20160048970A1 (en) * 2014-08-15 2016-02-18 Maziar Loghman Multi-resolution depth estimation using modified census transform for advanced driver assistance systems

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200063368A (ko) * 2018-11-23 2020-06-05 연세대학교 산학협력단 대응점 일관성에 기반한 비지도 학습 방식의 스테레오 매칭 장치 및 방법

Also Published As

Publication number Publication date
CN110998660B (zh) 2024-04-26
US20230084866A1 (en) 2023-03-16
US11954879B2 (en) 2024-04-09
KR102655086B1 (ko) 2024-04-08
US20200226776A1 (en) 2020-07-16
WO2018211127A1 (en) 2018-11-22
DE112018002572T5 (de) 2020-06-04
CN110998660A (zh) 2020-04-10
US11380005B2 (en) 2022-07-05

Similar Documents

Publication Publication Date Title
KR102655086B1 (ko) 파이프라인 실행을 최적화하기 위한 방법들, 시스템들 및 장치
JP7328379B2 (ja) 畳み込み効率を向上させる方法、システム、及び装置
US11680803B2 (en) Rendering operations using sparse volumetric data
AU2014236959B2 (en) Determining object volume from mobile device images
US20210166464A1 (en) Density coordinate hashing for volumetric data
JP2020522067A (ja) 動的視覚センサ用ブロックマッチングオプティカルフローとステレオ視
Poiesi et al. Cloud-based collaborative 3D reconstruction using smartphones
KR102636925B1 (ko) 픽셀 커널들을 페치할 때 메모리 레이턴시를 감소시키기 위한 방법들, 시스템들, 및 장치
CN111435551B (zh) 点云滤波方法、装置及存储介质
KR102210693B1 (ko) 경계 비트맵을 이용하는 이미지 분류 개선 기법
US9449249B2 (en) Method and apparatus for enhancing visual search
Ding et al. Improved real-time correlation-based FPGA stereo vision system
US10002432B2 (en) Method and apparatus for rendering target fluid
Zhang et al. End-to-end latency optimization of multi-view 3D reconstruction for disaster response
Menant et al. An automatized method to parameterize embedded stereo matching algorithms
Häublein et al. Fast and generic hardware architecture for stereo block matching applications on embedded systems
JP7271671B2 (ja) 点群符号化方法及びエンコーダ
TW201525939A (zh) 深度精鍊與資料聚集的方法與系統
Wu et al. Hybrid mobile vision for emerging applications
Santos et al. Scalable hardware architecture for disparity map computation and object location in real-time
Saha et al. A system for near real-time 3D reconstruction from multi-view using 4G enabled mobile
US20230269377A1 (en) Systems and methods for a multi-resolution visual sensing architecture for augmented reality
WO2023066122A1 (zh) 一种三维模型数据的处理方法、生成方法及相关装置
CN112017292A (zh) 网格译码方法和装置
Mazumdar Perceptual Optimizations for Video Capture, Processing, and Storage Systems

Legal Events

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