KR20200035133A - 포인트 클라우드 기하학적 압축 - Google Patents

포인트 클라우드 기하학적 압축 Download PDF

Info

Publication number
KR20200035133A
KR20200035133A KR1020207006750A KR20207006750A KR20200035133A KR 20200035133 A KR20200035133 A KR 20200035133A KR 1020207006750 A KR1020207006750 A KR 1020207006750A KR 20207006750 A KR20207006750 A KR 20207006750A KR 20200035133 A KR20200035133 A KR 20200035133A
Authority
KR
South Korea
Prior art keywords
point cloud
points
point
individual
location
Prior art date
Application number
KR1020207006750A
Other languages
English (en)
Other versions
KR102362066B1 (ko
Inventor
칼레드 맘모우
파브리스 에이. 로비네트
안드레아 크레마쉬
알렉산드로스 토우라피스
Original Assignee
애플 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 애플 인크. filed Critical 애플 인크.
Priority to KR1020227004241A priority Critical patent/KR102513867B1/ko
Publication of KR20200035133A publication Critical patent/KR20200035133A/ko
Application granted granted Critical
Publication of KR102362066B1 publication Critical patent/KR102362066B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/167Position within a video image, e.g. region of interest [ROI]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/182Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Abstract

시스템은 포인트에 대한 공간 정보를 각각 포함하는 복수의 포인트들을 포함하는 포인트 클라우드를 압축하도록 구성된 인코더를 포함한다. 인코더는 포인트들을 서브샘플링하도록, 그리고 서브샘플링된 포인트들에 대한 세분 위치들을 결정하도록 구성된다. 또한, 인코더는, 개개의 세분 위치에 대해, 포인트가 세분 위치에 대해 포함되어야 하는지, 포함되어서는 안 되는지, 아니면 재위치되어야 하는지를 결정하도록 구성된다. 인코더는 서브샘플링된 포인트들에 대한 공간 정보를 인코딩하고, 세분 위치 포인트 포함/재위치 정보를 인코딩하여, 압축된 포인트 클라우드를 생성한다. 디코더는 공간 정보 및 압축된 포인트 클라우드 내에 포함된 세분 위치 포함/재위치 정보에 기초하여, 오리지널 포인트 클라우드의 오리지널 또는 가까운 복제물을 재생성한다.

Description

포인트 클라우드 기하학적 압축
본 발명은 대체로, 연관된 공간 정보, 및 일부 실시예들에서, 추가적인 속성 정보를 각각 갖는 복수의 포인트들을 포함하는 포인트 클라우드들의 압축 및 압축해제에 관한 것이다.
LIDAR(light detection and ranging) 시스템, 3D 카메라, 3D 스캐너 등과 같은 다양한 타입들의 센서들이 3차원 공간 내의 포인트들의 위치들, 예를 들어 X, Y 및 Z 평면들 내의 위치들을 나타내는 데이터를 캡처할 수 있다. 또한, 일부 그러한 시스템들은 개개의 포인트들에 대한 공간 정보에 더하여 속성 정보, 예컨대 컬러 정보(예컨대, RGB 값들), 세기 속성들, 반사율 속성들, 또는 다양한 다른 속성들을 추가로 캡처할 수 있다. 일부 환경들에서, 다른 속성들이, 그 포인트가 캡처되었을 때의 타임 스탬프와 같은 개개의 포인트들에 할당될 수 있다. 그러한 센서들에 의해 캡처된 포인트들은 연관된 공간 정보를 각각 갖는 포인트들의 세트를 포함하는 "포인트 클라우드(point cloud)"를 구성할 수 있다. 일부 환경들에서, 포인트 클라우드는 수천 개의 포인트들, 수십만 개의 포인트들, 수백만 개의 포인트들, 또는 심지어 더 많은 포인트들을 포함할 수 있다. 또한, 일부 환경들에서, 포인트 클라우드들은 하나 이상의 센서들에 의해 캡처되는 것과는 대조적으로, 예를 들어 소프트웨어에서 생성될 수 있다. 어느 경우든, 그러한 포인트 클라우드들은 다량의 데이터를 포함할 수 있고, 저장하고 송신하는 데 비용이 많이 들고 시간 소모적일 수 있다.
일부 실시예들에서, 시스템은 포인트 클라우드를 집합적으로 구성하는 포인트들을 캡처하도록 구성된 하나 이상의 센서들을 포함하며, 여기서 포인트들 각각은 개개의 포인트의 공간 위치를 식별하는 공간 정보를 포함한다. 시스템은, 또한, 압축된 포인트 클라우드를 생성하도록 구성된 인코더를 포함하며, 여기서 압축된 포인트 클라우드는 캡처된 포인트 클라우드의 포인트들의 수보다 적은 포인트들에 대한 공간 정보를 포함하지만, 압축된 포인트 클라우드 내에 포함된 포인트들 및 압축된 포인트 클라우드 내에 포함된 추가 데이터에 대한 공간 정보는, 압축된 포인트 클라우드에 기초하여, 디코더가 캡처된 포인트 클라우드 또는 캡처된 포인트 클라우드의 밀접한 근사치를 재생성할 수 있도록 하는 방식으로 구성된다. 압축된 포인트 클라우드를 생성하기 위해, 인코더는, 하나 이상의 센서들에 의해 캡처된, 캡처된 포인트 클라우드를 서브샘플링하도록 - 서브샘플링된 포인트 클라우드는 캡처된 포인트 클라우드보다 더 적은 포인트들을 포함함 - 구성된다. 인코더는, 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들 각각에 대해, 서브샘플링된 포인트 클라우드의 개개의 포인트와 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 식별하도록, 그리고 그 위치를 캡처된 포인트 클라우드와 비교한 것에 기초하여, 압축해제된 포인트 클라우드 내의 포인트가 그 위치에서 포함되어야 하는지, 그 위치에서 포함되어서는 안 되는지, 아니면 그 위치에 대해 재위치되어야 하는지를 결정하도록 추가로 구성된다. 인코더는, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보를 포함하는 압축된 포인트 클라우드에 대한 데이터, 및 개개의 위치들 각각에 대해, 개개의 포인트가 압축해제된 포인트 클라우드 내의 위치에서 포함되어야 하는지, 그 위치에서 포함되어서는 안 되는지, 아니면 그 위치에 대해 재위치되어야 하는지를 나타내는 데이터를 인코딩하도록 추가로 구성된다. 일부 실시예들에서, 시스템은 하나 이상의 센서들을 생략할 수 있고, 인코더는 다른 시스템의 센서들로부터 또는 다른 소스로부터, 압축될 오리지널 포인트 클라우드를 수신할 수 있다.
일부 실시예들에서, 방법은, 포인트 클라우드를 서브샘플링하는 단계 - 서브샘플링된 포인트 클라우드는 포인트 클라우드보다 더 적은 포인트들을 포함함 - 를 포함한다. 본 방법은, 또한, 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들 각각에 대해, 서브샘플링된 포인트 클라우드의 개개의 포인트와 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 서브샘플링하는 단계 전의 포인트 클라우드와 비교하는 단계, 및 비교에 기초하여, 포인트가 압축해제된 포인트 클라우드 내의 위치에서 포함되어야 하는지, 그 위치에서 포함되어서는 안 되는지, 아니면 그 위치에 대해 재위치되어야 하는지를 결정하는 단계를 포함한다. 본 방법은, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보를 포함하는 데이터, 및 개개의 위치들 각각에 대해, 개개의 포인트가 압축해제된 포인트 클라우드 내의 위치에서 포함되어야 하는지, 그 위치에서 포함되어서는 안 되는지, 아니면 그 위치에 대해 재위치되어야 하는지를 나타내는 데이터를 인코딩하는 단계를 추가로 포함한다.
일부 실시예들에서, 비일시적 컴퓨터 판독가능 매체는 프로그램 명령어들을 저장하고, 프로그램 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 압축된 포인트 클라우드를 수신하도록 - 압축된 포인트 클라우드는 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보, 및 서브샘플링된 포인트 클라우드의 개개의 포인트들과 서브샘플링된 포인트 클라우드 내의 개개의 이웃 포인트들 사이의 복수의 개개의 위치들 각각에 대해, 포인트가 압축해제된 포인트 클라우드 내의 개개의 위치에서 포함되어야 하는지, 개개의 위치에서 포함되어서는 안 되는지, 아니면 개개의 위치에 대해 재위치되어야 하는지를 나타내는 데이터를 포함함 - 구성된 디코더를 구현하게 한다. 프로그램 명령어들은, 실행될 때, 추가로, 디코더로 하여금, 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들 각각에 대해, 개개의 포인트와 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 개개의 위치를 식별하게 하고, 수신된 압축된 포인트 클라우드 내에 포함된 데이터에 기초하여, 개개의 위치에서 포인트를 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지를 결정하게 한다. 프로그램 명령어들은, 실행될 때, 추가로, 디코더로 하여금, 압축해제된 포인트 클라우드를 생성하게 하고, 압축해제된 포인트 클라우드는 서브샘플링된 포인트 클라우드의 포인트들, 및 개개의 위치들에서 포함되어야 하거나 개개의 위치들에 대해 재위치되어야 한다고 결정된 개개의 포인트들을 포함한다.
도 1a는 일부 실시예들에 따른, 포인트 클라우드의 포인트들에 대한 정보를 캡처하는 센서 및 포인트 클라우드를 압축하는 인코더를 포함하는 시스템 - 압축된 포인트 클라우드는 디코더에 전송됨 - 을 도시한다.
도 1b는 일부 실시예들에 따른, 압축된 포인트 클라우드를 인코딩하기 위한 프로세스를 도시한다.
도 1c는 일부 실시예들에 따른, 인코딩 프로세스의 상이한 스테이지들에서의 포인트 클라우드의 대표적인 뷰들을 도시한다.
도 2a는 일부 실시예들에 따른 인코더의 컴포넌트들을 도시한다.
도 2b는 일부 실시예들에 따른 디코더의 컴포넌트들을 도시한다.
도 3은 일부 실시예들에 따른, 예시적인 압축된 포인트 클라우드 파일의 컴포넌트들을 도시한다.
도 4는 일부 실시예들에 따른, 압축된 포인트 클라우드를 인코딩하기 위한 프로세스를 도시한다.
도 5는 일부 실시예들에 따른, 압축된 포인트 클라우드를 인코딩할 때, 서브샘플링된 포인트 클라우드에 대한 세분(subdivision) 위치들을 결정하기 위한 프로세스를 도시한다.
도 6a 내지 도 6c는 일부 실시예들에 따른, 압축된 포인트 클라우드를 디코딩하기 위한 프로세스를 도시한다.
도 7은 일부 실시예들에 따라, 압축된 포인트 클라우드가 3D 텔레프레전스 애플리케이션에서 사용되는 것을 도시한다.
도 8은 일부 실시예들에 따라, 압축된 포인트 클라우드가 가상 현실 애플리케이션에서 사용되는 것을 도시한다.
도 9는 일부 실시예들에 따른, 인코더 또는 디코더를 구현할 수 있는 예시적인 컴퓨터 시스템을 도시한다.
본 명세서는 "일 실시예" 또는 "실시예"에 대한 언급을 포함한다. "일 실시예에서" 또는 "실시예에서"라는 문구들의 등장들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 특정 특징들, 구조들 또는 특성들이 본 개시내용과 일관성을 유지하는 임의의 적합한 방식으로 조합될 수 있다.
"포함하는(Comprising)". 이 용어는 확장가능(open-ended)하다. 첨부된 청구범위에서 사용되는 바와 같이, 이러한 용어는 부가적인 구조 또는 단계들을 배제(foreclose)하지 않는다. "... 하나 이상의 프로세서 유닛들을 포함하는 장치"를 언급하는 청구항을 고려한다. 그러한 청구항은 장치가 부가적인 컴포넌트들(예를 들어, 네트워크 인터페이스 유닛, 그래픽 회로부 등)을 포함하는 것을 배제하지 않는다.
"~하도록 구성되는(configured to)". 다양한 유닛들, 회로들 또는 다른 컴포넌트들이 태스크 또는 태스크들을 수행"하도록 구성"되는 것으로 설명되거나 청구될 수 있다. 그러한 문맥들에서, "~하도록 구성되는"은 유닛들/회로들/컴포넌트들이 동작 동안에 그들 태스크 또는 태스크들을 수행하는 구조(예컨대, 회로부)를 포함한다는 것을 나타냄으로써 구조를 내포하는 데 사용된다. 이와 같이, 유닛/회로/컴포넌트는, 특정된 유닛/회로/컴포넌트가 현재 동작중이지 않은 경우(예를 들어, 켜진 상태가 아닌 경우)에도 태스크를 수행하도록 구성되는 것으로 칭해질 수 있다. "~하도록 구성되는"이라는 문구와 함께 사용되는 유닛들/회로들/컴포넌트들은 하드웨어 - 예를 들어, 회로들, 동작을 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 등 - 를 포함한다. 유닛/회로/컴포넌트가 하나 이상의 태스크를 수행"하도록 구성"됨을 언급하는 것은 그 유닛/회로/컴포넌트에 대해 미국 특허법 35 U.S.C. § 112(f) 규정이 적용되지 않도록 하기 위한 의도의 명시이다. 부가적으로, "~하도록 구성되는"은 사안이 되는 태스크(들)를 수행할 수 있는 방식으로 동작하도록 소프트웨어 및/또는 펌웨어(예를 들어, FPGA 또는 소프트웨어를 실행하는 범용 프로세서)에 의해 조작되는 일반적인 구조(예를 들어, 일반적인 회로부)를 포함할 수 있다. "~하도록 구성되는"은 또한 하나 이상의 태스크들을 구현하거나 수행하도록 적응된 디바이스들(예를 들어, 집적 회로들)을 제조하도록 제조 프로세스(예를 들어, 반도체 제조 설비)를 적응하는 것을 포함할 수 있다.
"제1", "제2", 등. 본 명세서에서 사용되는 바와 같이, 이러한 용어들은 이들이 선행하고 있는 명사들에 대한 라벨들로서 사용되고, 임의의 타입의(예를 들어, 공간적, 시간적, 논리적 등) 순서를 암시하는 것은 아니다. 예를 들어, 버퍼 회로는 "제1" 및 "제2" 값들에 대한 기입 동작들을 수행하는 것으로서 본 명세서에서 설명될 수 있다. 용어들 "제1" 및 "제2"는 반드시 제1 값이 제2 값 전에 기입되어야 한다는 것을 암시하지는 않는다.
"~에 기초하여(Based on)". 본 명세서에서 사용되는 바와 같이, 이러한 용어는 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이러한 용어는 결정에 영향을 줄 수 있는 부가적인 인자들을 배제하지 않는다. 즉, 결정은 오직 그들 인자들에만 기초하거나 또는 그들 인자들에 적어도 부분적으로 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이 경우에, B가 A의 결정에 영향을 주는 인자이기는 하지만, 그러한 문구는 A의 결정이 또한 C에도 기초하는 것임을 배제하지 않는다. 다른 예시들에서, A는 오직 B에만 기초하여 결정될 수 있다.
데이터 획득 및 디스플레이 기술들이 더 진보되어 감에 따라, 예컨대 LIDAR 시스템들을 통해, 2D 또는 3D 공간에서 수천 또는 수백만 개의 포인트들을 포함하는 포인트 클라우드들을 캡처하는 능력이 증가해 왔다. 또한, 가상 현실 또는 증강 현실 시스템들과 같은 진보된 디스플레이 기술들의 개발은 포인트 클라우드들에 대한 잠재적 사용을 증가시켜 왔다. 그러나, 포인트 클라우드 파일들은 종종 매우 크고, 저장하고 송신하는 데 비용이 많이 들고 시간 소모적일 수 있다. 예를 들어, 인터넷과 같은 사설 또는 공중 네트워크들을 통한 포인트 클라우드들의 통신은 상당한 양의 시간 및/또는 네트워크 리소스들을 필요로 하여, 실시간 사용과 같은 포인트 클라우드 데이터의 일부 사용이 제한될 수 있게 할 수 있다. 또한, 포인트 클라우드 파일들의 저장 요건들은 포인트 클라우드 파일들을 저장하는 디바이스들의 상당한 양의 저장 용량을 소모할 수 있으며, 이는, 또한, 포인트 클라우드 데이터를 사용하기 위한 잠재적인 애플리케이션들을 제한할 수 있다.
일부 실시예들에서, 인코더는 큰 포인트 클라우드 파일들을 저장 및 송신하는 것과 연관된 비용 및 시간을 감소시키기 위해, 압축된 포인트 클라우드를 생성하는 데 사용될 수 있다. 일부 실시예들에서, 시스템은, 포인트 클라우드 파일이 압축되지 않은 포인트 클라우드들보다 더 신속하게 저장 및 송신될 수 있도록, 그리고 포인트 클라우드 파일이 압축되지 않은 포인트 클라우드들보다 더 적은 저장 공간을 점유할 수 있는 방식으로 포인트 클라우드 파일을 압축하는 인코더를 포함할 수 있다. 일부 실시예들에서, 포인트 클라우드 압축은 포인트 클라우드가 네트워크를 통해 실시간으로 또는 거의 실시간으로 통신될 수 있게 할 수 있다. 예를 들어, 시스템은 센서가 위치되는 환경 내의 포인트들에 관한 데이터를 캡처하는 센서를 포함할 수 있으며, 여기서 캡처된 포인트들은 포인트 클라우드를 구성한다. 시스템은, 또한, 캡처된 포인트 클라우드를 압축하는 인코더를 포함할 수 있다. 압축된 포인트 클라우드는 압축된 포인트 클라우드를 압축해제하는 디코더로 네트워크를 통해 실시간으로 또는 거의 실시간으로 전송될 수 있다. 압축해제된 포인트 클라우드는, 예를 들어, 센서의 위치에서의 주위 환경에 기초하여 제어 결정을 행하도록 추가로 프로세싱될 수 있다. 이어서, 제어 결정은 센서의 위치에서 또는 그 부근에서 디바이스로 다시 통신될 수 있으며, 여기서 제어 결정을 수신하는 디바이스는 실시간으로 또는 거의 실시간으로 제어 결정을 구현한다. 일부 실시예들에서, 디코더는 증강 현실 시스템과 연관될 수 있고, 압축해제된 포인트 클라우드는 증강 현실 시스템에 의해 디스플레이되거나 달리 사용될 수 있다.
일부 실시예들에서, 시스템은 하나 이상의 포인트 클라우드 파일들을 저장하는 원격 서버 또는 다른 저장 디바이스로부터 네트워크를 통해 하나 이상의 포인트 클라우드 파일들을 수신하는 디코더를 포함할 수 있다. 예를 들어, 3D 디스플레이, 홀로그래픽 디스플레이, 또는 헤드 마운티드 디스플레이(head-mounted display)는 포인트 클라우드들에 의해 표현되는 가상 세계의 상이한 부분들을 보여주기 위해 실시간으로 또는 거의 실시간으로 조작될 수 있다. 3D 디스플레이, 홀로그래픽 디스플레이, 또는 헤드 마운티드 디스플레이를 업데이트하기 위해, 디코더와 연관된 시스템은 디스플레이들의 사용자 조작들에 기초하여 원격 서버로부터 포인트 클라우드 파일들을 요청할 수 있고, 포인트 클라우드 파일들은 원격 서버로부터 디코더로 송신되고 실시간으로 또는 거의 실시간으로 디코더에 의해 디코딩될 수 있다. 디스플레이들은, 이어서, 사용자 조작들에 응답하여, 업데이트된 포인트 클라우드 데이터로 업데이트될 수 있다.
일부 실시예들에서, 시스템은 하나 이상의 LIDAR 시스템들, 3D 카메라들, 3D 스캐너들 등을 포함할 수 있고, 그러한 센서 디바이스들은 센서 디바이스들의 뷰 내의 포인트들에 대한 X, Y, 및 Z 좌표들과 같은 공간 정보를 캡처할 수 있다. 일부 실시예들에서, 공간 정보는 국소 좌표계에 대한 것일 수 있거나, 또는 전역 좌표계에 대한 것일 수 있다(예를 들어, 직교 좌표계는 지면 상의 고정된 포인트와 같은 고정된 기준 포인트를 가질 수 있거나, 또는 센서 위치와 같은 고정되지 않은 국소 기준 포인트를 가질 수 있다). 일부 실시예들에서, 그러한 센서들은, 또한, 컬러 속성들, 반사율 속성들, 속도 속성들, 가속도 속성들, 시간 속성들, 및/또는 다양한 다른 속성들과 같은, 포인트들 중 하나 이상에 대한 속성 정보를 캡처할 수 있다.
일부 실시예들에서, 인코더는 압축되어야 하는 포인트 클라우드를 수신할 수 있고, 포인트 클라우드를 서브샘플링하여 서브샘플링된 포인트 클라우드를 생성할 수 있다. 예를 들어, 일부 실시예들에서, 포인트 클라우드는 백만 개의 포인트들을 포함할 수 있고, 포인트 클라우드를 서브샘플링함으로써 생성된 서브샘플링된 포인트 클라우드는 겨우 1,000개의 포인트들 또는 2,000개의 포인트들을 포함할 수 있다. 일부 실시예들에서, 서브샘플링은 균일한 포인트 간격들 또는 균일한 거리들에서 수행될 수 있다. 예를 들어, 일부 실시예들에서, 서브샘플링은 서브샘플링된 포인트 클라우드에서 포인트 클라우드 내에 매 100번째, 1,000번째, 또는 N번째 포인트를 포함시키는 것을 포함할 수 있거나, 또는 서브샘플링된 포인트 클라우드 내에 X, Y, 또는 Z 방향으로의 거리의 매 D 증분에서의 포인트를 포함시키는 것을 포함할 수 있다. 일부 실시예들에서, 서브샘플링은, 예를 들어 앨리어싱(aliasing)을 감소시키기 위해, 포인트 클라우드 내의 포인트들을 필터링하는 것을 포함할 수 있다. 다른 실시예들에서, 다른 서브샘플링 기법들이 이용될 수 있다.
일단 서브샘플링된 포인트 클라우드가 생성되면, 인코더는 서브샘플링된 포인트 클라우드의 복수의 개개의 포인트들 각각에 대한 하나 이상의 이웃 포인트들의 세트를 식별할 수 있다. 예를 들어, 인코더는 서브샘플링된 포인트 클라우드 내의 제1 포인트를 선택할 수 있고, 평가되고 있는 선택된 포인트에 대한 서브샘플링된 포인트 클라우드 내의 최근접 이웃 포인트들의 세트를 식별할 수 있다. 식별된 이웃 포인트들 각각에 대해, 인코더는 평가되고 있는 선택된 포인트와 최근접 이웃 포인트들의 세트의 개개의 이웃 포인트들 사이의 세분 위치를 결정할 수 있다. 인코더는, 또한, 평가되고 있는 포인트와 개개의 이웃 포인트 사이의 세분 위치를 서브샘플링 이전의 오리지널 포인트 클라우드와 비교할 수 있다. 위치가 오리지널 포인트 클라우드 내에 포함된 포인트의 범위 내에 있는 경우, 인코더는 포인트가 세분 위치에서 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정할 수 있고, 압축된 포인트 클라우드에 대해 인코딩된 데이터에 세분 위치에서의 포인트의 포함을 나타내는 표시를 포함시킬 수 있다. 위치가 오리지널 포인트 클라우드 내에 포함된 포인트들로부터의 범위 밖에 있는 경우, 인코더는 포인트가 압축해제된 포인트 클라우드 내의 세분 위치에서 포함되어서는 안 된다고 결정할 수 있고, 압축된 포인트 클라우드에 대한 데이터에 그러한 표시를 포함시킬 수 있다. 또한, 인코더는, 포인트가 압축해제된 포인트 클라우드 내에 포함되어야 하는 범위 내에 있지만 오리지널 포인트 클라우드 내에 포함된 포인트로부터 멀리 떨어진 거리에 있다고 결정할 수 있다. 그러한 환경에서, 인코더는 포인트가 압축해제된 포인트 클라우드 내의 세분 위치에 대해 재위치되어야 함을 나타내는 정보를 압축된 포인트 클라우드에 대한 데이터에 포함시킬 수 있다. 예를 들어, 인코더는 세분 위치에 인접한 오리지널 포인트 클라우드 내의 포인트의 위치를 세분 위치의 위치와 비교하여, 포인트가 세분 위치에 대해 어떻게 재위치되어야 하는지를 결정할 수 있다. 인코더는 평가되고 있는 선택된 포인트에 대해 식별된 이웃 포인트들의 세트 내의 각각의 식별된 이웃 포인트에 대해 이러한 프로세스를 계속할 수 있다. 인코더는, 이어서, 서브샘플링된 포인트 클라우드 내의 포인트들의 적어도 상당한 부분이 평가될 때까지, 평가될 서브샘플링된 포인트 클라우드 내의 다음 포인트에 대해 유사한 프로세스를 반복할 수 있다.
추가로, 인코더는 서브샘플링된 포인트 클라우드의 포인트들(예컨대, 세분부들) 또는 그 세분부에서 개개의 위치들에 대해 재위치되어야 하는 포인트들 사이의 개개의 위치들에서 포함되어야 한다고 결정된 포인트들과 서브샘플링된 포인트를 비교할 수 있고, 오리지널 포인트 클라우드를 정확하게 표현하기 위해 하나 이상의 추가 포인트들이 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정할 수 있다. 일부 실시예들에서, 하나 이상의 추가 포인트들에 대한 공간 정보는 압축된 포인트 클라우드에 대한 데이터에서 명시적으로 인코딩될 수 있다.
일부 실시예들에서, 인코더는 서브샘플링된 포인트 클라우드의 세분 위치들에 위치되어야 하거나 재위치되어야 하는 포인트들을 결정하는 것의 다수의 반복들을 수행할 수 있고, 압축해제된 포인트 클라우드 내에 포함되어야 하는 하나 이상의 추가 포인트들을 결정하는 것의 다수의 반복들을 수행할 수 있다. 예를 들어, 인코더는, 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 세분 위치들에서 포인트들을 포함하도록, 세분 위치들에 대해 재위치되어야 한다고 결정된 포인트들을 포함하도록, 그리고 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 추가 포인트들을 포함하도록 서브샘플링된 포인트 클라우드를 업데이트할 수 있다. 인코더는, 이어서, 업데이트된 서브샘플링된 포인트 클라우드 내에 포함된 포인트들 중의 개개의 포인트들을 선택함으로써, 선택된 포인트들의 최근접 이웃 포인트들을 식별함으로써, 그리고 선택된 포인트들과 최근접 이웃 포인트들 사이의 세부 위치들에서 포인트들을 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지를 결정함으로써 세분 프로세스를 반복할 수 있다. 인코더는, 또한, 새롭게 세분된 위치들에서 포함되어야 한다고 결정된 임의의 포인트들을 포함하는 업데이트된 서브샘플링된 포인트 클라우드를 비교하는 것에 기초하여, 하나 이상의 추가 포인트들이 압축해제된 포인트 클라우드 내에 포함되어야 하는지의 여부를 결정할 수 있다. 인코더는 다수의 반복들 동안 이러한 프로세스를 반복할 수 있다. 일부 실시예들에서, 인코더 및 디코더는 수행되어야 하는 세분 반복들의 사전특정된 또는 결정된 수(N)에 따라 반복들을 수행할 수 있다. 일부 실시예들에서, 수행되어야 하는 세분 반복의 수(N)는 사용자 구성가능 파라미터일 수 있거나, 또는 프로세싱되고 있는 포인트 클라우드 데이터에 기초하여 인코더에서 결정되는 파라미터일 수 있거나, 또는 이들의 조합일 수 있다. 예를 들어, 일부 실시예들에서, 수행되어야 하는 반복들의 수는 사용자 구성가능 파라미터와 인코더 기반 유도 파라미터 사이의 평균, 최소, 또는 최대 값에 기초할 수 있다. 일부 실시예들에서, 수행되어야 하는 세분 반복들의 수는 고정된 값일 수 있다. 일부 실시예들에서, 수행되어야 하는 세분 반복들의 수는 인코더 및 디코더 양측 모두에 의해 사전결정되고 알려져 있을 수 있다. 일부 실시예들에서, 인코더는 압축된 포인트 클라우드에 대한 데이터에 수행되어야 하는 세분 반복들의 수를 나타내는 데이터를 포함시킬 수 있다.
인코더는, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보, 및 포인트들이 세분 위치들에서 포함되어야 하는지, 세분 위치들에서 포함되어서는 안 되는지, 아니면 세분 위치들에 대해 재위치되어야 하는지를 나타내는 정보를 인코딩할 수 있다. 추가로, 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 임의의 추가 포인트들에 대한 공간 정보가 인코딩될 수 있다.
인코더는, 또한, 서브샘플링된 포인트 데이터, 및 압축된 포인트 클라우드에 대한 세분 포인트 포함, 불포함, 또는 재위치 데이터와 함께 전송되어야 하는, 전술된 것과 같은 구성 정보를 인코딩할 수 있다. 예를 들어, 인코더는 수행되어야 하는 세분 반복들의 수(N), 최근접 이웃들의 세트에 포함되어야 하는 최근접 이웃들의 수(K), 최근접 이웃들을 식별할 때 최근접 이웃에 대한 포인트로부터의 최소 거리(D0), 최근접 이웃들을 식별할 때 최근접 이웃에 대한 포인트로부터의 최대 거리(D1), 포인트가 세분 위치에서 포함되어야 하는지의 여부를 결정할 때 세분의 위치에 대한 임계 거리(D2) 등을 나타내는 데이터를 인코딩할 수 있다. 일부 실시예들에서, 거리들(D0, D1, 및/또는 D2)은 평가되고 있는 포인트와 최근접 이웃 포인트 또는 세분 위치 사이의 유클리드 거리(Euclidian distance)들로서 계산될 수 있다. 구성 정보는 디코더가 서브샘플링된 포인트 클라우드의 포인트들의 공간 정보에 기초하여 인코더에서 평가되었던 것과 동일한 세분 위치들을 재생성할 수 있게 할 수 있다. 이러한 방식으로, 디코더는 오리지널 포인트 클라우드의 포인트들의 일부분에 대한 공간 정보(예컨대, 포인트 클라우드의 서브샘플링된 포인트들의 공간 정보)만을 수신하면서 오리지널 포인트 클라우드 또는 오리지널 포인트 클라우드의 긴밀한 표현을 재생성할 수 있다. 훨씬 더 적은 포인트들에 대한 명시적 공간 정보가 압축된 포인트 클라우드 데이터에 포함되기 때문에, 압축된 포인트 클라우드 데이터는 오리지널 또는 캡처된 포인트 클라우드에 대한 압축되지 않은 데이터보다 적은 저장 공간을 점유할 수 있고, 오리지널 또는 캡처된 포인트 클라우드에 대한 압축되지 않은 데이터보다 더 빠르게 그리고/또는 더 적은 네트워크 리소스들로 송신될 수 있다.
도 1a는 일부 실시예들에 따른, 포인트 클라우드의 포인트들에 대한 정보를 캡처하는 센서 및 디코더로 전송되는 포인트 클라우드를 압축하는 인코더를 포함하는 시스템을 도시한다.
시스템(100)은 센서(102) 및 인코더(104)를 포함한다. 센서(102)는 센서(102)의 뷰(108) 내의 구조물(106)을 표현하는 포인트들을 포함하는 포인트 클라우드(110)를 캡처한다. 예를 들어, 일부 실시예들에서, 구조물(106)은 산맥, 건물, 표지판, 거리를 둘러싼 환경, 또는 임의의 다른 타입의 구조물일 수 있다. 일부 실시예들에서, 캡처된 포인트 클라우드(110)와 같은 캡처된 포인트 클라우드는 포인트 클라우드 내에 포함된 포인트들에 대한 공간 및/또는 속성 정보를 포함할 수 있다. 예를 들어, 캡처된 포인트 클라우드(110)의 포인트 A는 X, Y, Z 좌표들 및 속성들 1, 2, 및 3을 포함한다. 일부 실시예들에서, 포인트의 속성들은 R, G, B 컬러 값들, 포인트에서의 구조물의 속도, 포인트에서의 구조물의 가속도, 포인트에서의 구조물의 반사율, 포인트가 캡처되었을 때를 나타내는 타임 스탬프, 또는 다른 속성들과 같은 속성들을 포함할 수 있다. 캡처된 포인트 클라우드(110)는 인코더(104)에 제공될 수 있으며, 여기서 인코더(104)는 네트워크(114)를 통해 디코더(116)로 송신되는 포인트 클라우드의 압축된 버전(압축된 포인트 클라우드(112))을 생성한다.
일부 실시예들에서, 인코더(104)는 센서(102)와 통합될 수 있다. 예를 들어, 인코더(104)는 센서(102)와 같은 센서 디바이스에 포함된 하드웨어 또는 소프트웨어로 구현될 수 있다. 다른 실시예들에서, 인코더(104)는 센서(102)에 근접한 별개의 컴퓨팅 디바이스 상에서 구현될 수 있다.
도 1b는 일부 실시예들에 따른, 압축된 포인트 클라우드를 인코딩하기 위한 프로세스를 도시한다. 또한, 도 1c는 일부 실시예들에 따른, 인코딩 프로세스의 상이한 스테이지들에서의 포인트 클라우드의 대표적인 뷰들을 도시한다.
152에서, 인코더(104)와 같은 인코더는 도 1a에 도시된 캡처된 포인트 클라우드(110) 또는 도 1c에 도시된 캡처된 포인트 클라우드(154)와 같은 캡처된 포인트 클라우드를 수신한다. 캡처된 포인트 클라우드(110, 154)가 예시의 용이함을 위해 2개의 치수들로 도시되지만, 일부 실시예들에서, 3차원 포인트 클라우드들을 포함할 수 있다는 것에 유의한다.
156에서, 인코더는 포인트 클라우드를 서브샘플링하여, 서브샘플링된 포인트 클라우드를 생성한다. 예를 들어, 도 1c는 서브샘플링된 포인트 클라우드(158)를 도시한다. 일부 실시예들에서, 인코더는 포인트 클라우드를 균일하게 샘플링하여, 서브샘플링된 포인트 클라우드를 생성할 수 있다. 예를 들어, 인코더는 포인트 클라우드에서 균일한 간격들의 포인트들을 선택하여, 서브샘플링된 포인트 클라우드를 생성할 수 있다. 일부 실시예들에서, 인코더는, 압축해제된 서브샘플링된 포인트 클라우드를 생성하는 데 사용될 서브샘플링된 포인트 클라우드의 공간 정보를 인코딩할 때 손실 압축 알고리즘을 이용할 수 있다. 일부 그러한 실시예들에서, 인코더는 손실 압축 알고리즘을 이용하여, 서브샘플링된 포인트 클라우드를 인코딩할 수 있고, 손실 압축 알고리즘에 따라 인코딩되는 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보를 디코딩할 때 디코더가 직면할 대표적인 서브샘플링된 포인트 클라우드를 생성하기 위해, 인코더에서, 손실 인코딩된 서브샘플링된 포인트 클라우드를 디코딩할 수 있다. 일부 실시예들에서, 인코더는 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보를 인코딩하기 위한 무손실 압축 알고리즘을 이용할 수 있고, 인코더는 디코더에 의해 직면하게 될 대표적인 서브샘플링된 포인트 클라우드를 생성하기 위해 서브샘플링된 포인트 클라우드를 인코딩 및 디코딩하는 것을 생략할 수 있다. 이는, 무손실 압축 알고리즘을 이용할 때, 서브샘플링된 포인트 클라우드가, 무손실 압축 알고리즘에 따라 인코딩되었던 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보를 디코딩할 때 디코더가 직면할 것을 대표하기 때문이다.
160에서, 인코더는 서브샘플링된 포인트 클라우드의 개개의 포인트들과 서브샘플링된 포인트 클라우드의 개개의 포인트들의 이웃 포인트들 사이의 세분 위치들을 식별한다. 예를 들어, 도 1c의 162에 도시된 바와 같다. 164에서, 인코더는, 포인트가 세분 위치에서 압축해제된 포인트 클라우드 내에 포함되어야 하는지, 세분 위치에서 압축해제된 포인트 클라우드 내에 포함되어서는 안 되는지, 아니면 세분 위치에 대해 압축해제된 포인트 클라우드에서 재위치되어야 하는지를 결정한다. 예를 들어, 도 1c의 166에 도시된 바와 같다.
일부 실시예들에서, 다수의 세분 위치들은 주어진 포인트와 주어진 포인트에 대한 이웃 포인트들의 세트의 개개의 이웃 포인트들 사이에서 결정될 수 있고, 다수의 세분 위치들의 각각의 세분 위치에 대해, 포인트가 세분 위치에서 압축해제된 포인트 클라우드 내에 포함되어야 하는지, 세분 위치에서 압축해제된 포인트 클라우드 내에 포함되어서는 안 되는지, 아니면 세분 위치에 대해 압축해제된 포인트 클라우드에서 재위치되어야 하는지에 대한 결정이 이루어질 수 있다. 각각의 예시에서, 세분 위치에 대해 포인트를 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지의 결정은 세분 위치를 서브샘플링 이전의 오리지널 포인트 클라우드와 비교하는 것에 기초하여 결정될 수 있다. 예를 들어, 세분 위치가 오리지널 포인트 클라우드의 표면 상에 있는 경우, 인코더는 포인트가 압축해제된 포인트 클라우드 내의 세분 위치에서 포함되어야 한다고 결정할 수 있다. 역으로, 세분 위치가 오리지널 포인트 클라우드의 표면으로부터 임계 거리 초과에 있는 경우, 인코더는 포인트가 세분 위치에서 포함되어서는 안 된다고 결정할 수 있다. 세분 위치가 오리지널 포인트 클라우드의 표면의 임계 범위 내에 있지만, 오리지널 포인트 클라우드의 표면과 정렬하도록 조정될 필요가 있는 경우, 인코더는, 재위치된 포인트가 오리지널 포인트 클라우드와 더 밀접하게 정렬하도록 세분 위치에 대해 압축해제된 포인트 클라우드 내의 포인트를 재위치시킬 것을 결정할 수 있다.
일부 실시예들에서, 인코더는 공간 정보에 더하여 시간 정보를 추가로 인코딩할 수 있다. 예를 들어, 각각의 포인트는, 포인트가 캡처되었을 때와 같은, 포인트와 연관된 시간 속성을 가질 수 있다. 시간 정보가 인코딩되고 있는 일부 실시예들에서, 일례로서, 인코더는, 추가로, 시간 정보에 기초하여 세분 위치에 대해 포인트를 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지, 예컨대, 세분 위치에서 하나의 시간 증분으로부터 다음 시간 증분까지 포인트 클라우드가 변화했는지의 여부를 결정할 수 있다. 또는, 포인트가 더 조기의 순간에 이전 버전의 압축해제된 포인트 클라우드 내의 세분 위치에서 포함되었는지의 여부에 기초하여.
일부 실시예들에서, 인코더는 하나 이상의 추가 포인트들이 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정할 수 있다. 예를 들어, 오리지널 캡처된 포인트 클라우드가 불규칙한 표면 또는 형상을 가져서, 서브샘플링된 포인트 클라우드 내의 포인트들 사이의 세분 위치들이 불규칙한 표면 또는 형상을 적절하게 표현하지 않게 하는 경우, 인코더는 압축해제된 포인트 클라우드 내의 세분 위치들에서 포함되어야 하거나 그에 대해 재위치되어야 한다고 결정된 포인트들에 더하여 하나 이상의 추가 포인트들을 포함할 것을 결정할 수 있다. 일부 실시예들에서, 추가 포인트들을 나타내는 데이터는 압축된 포인트 클라우드에 대한 데이터에 포함된 서브샘플링된 포인트들에 더하여 명시적으로 인코딩될 수 있다.
일부 실시예들에서, 인코더는 서브샘플링된 포인트 클라우드 내의 각각의 포인트에 대해 160 및 164를 수행할 수 있다. 또한, 일부 실시예들에서, 인코더는 위치에 대해 포함되어야 하거나 재위치되어야 한다고 결정된 임의의 포인트들, 및 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 임의의 다른 추가 포인트들을 추가하여, 업데이트된 서브샘플링된 포인트 클라우드를 생성할 수 있다. 인코더는, 이어서, 업데이트된 서브샘플링된 포인트 클라우드의 포인트들 각각에 대해 160 및 164를 수행할 수 있다. 일부 실시예들에서, 인코더는 160 및 164를 계속 반복할 수 있고, 특정 수의 반복들, 예를 들어 특정된 또는 결정된 파라미터(N)에 대한 서브샘플링된 포인트 클라우드를 업데이트할 수 있다. 일부 실시예들에서, 수행될 세분 반복들의 수는, 인코더에서 구성되고, 압축된 포인트 클라우드와 함께 디코더에 통신되는 구성가능 파라미터일 수 있다. 일부 실시예들에서, 인코더 및 디코더는 고정된 수의 세분 반복들을 수행하도록 구성될 수 있다.
일단 인코더가 개개의 세분 위치들을 평가하여 포인트가 개개의 세분 위치들 각각에서 포함되어야 하는지, 포함되어서는 안 되는지, 아니면 재위치되어야 하는지를 결정하기를 완료했고, 반복 파라미터마다 요구되는 모든 세분 반복들에 대해 이러한 프로세스를 반복했다면, 인코더는, 168에서, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보 및/또는 속성 정보를 인코딩할 수 있고, 또한, 개개의 세분 위치들 각각에 대해, 포인트가 개개의 세분 위치에서 포함되어야 하는지, 아니면 포함되어서는 안 되는지를 나타내는 데이터를 인코딩할 수 있다. 압축해제된 포인트 클라우드에서 재위치되어야 하는 포인트들에 대해, 인코더는, 추가로, 포인트가 세분 위치에 대해 어떻게 재위치되어야 하는지를 나타내는 위치 보정 데이터를 인코딩할 수 있다. 일부 실시예들에서, 인코더는, 추가로, 압축해제된 포인트 클라우드 내에 추가되어야 하는 추가 포인트들에 대한 공간 및/또는 속성 정보를 인코딩할 수 있고, 다른 구성 정보를 인코딩할 수 있다.
예를 들어, 도 1c의 166은 오리지널 캡처된 포인트 클라우드와 정렬하도록 재위치되고 있는 세분 위치들에서의 포인트들을 도시한다. 일부 실시예들에서, 이러한 위치 보정 정보는 세분 위치에 대해 델타 X, 델타 Y, 또는 델타 Z 공간 정보로서 인코딩될 수 있다. 다른 실시예들에서, 이러한 위치 보정 정보는 세분 위치로부터 재위치된 위치로의 벡터와 세분 위치에서의 법선 벡터 사이의 내적(dot product)을 통해 결정될 수 있는 스칼라 값으로서 인코딩될 수 있고, 여기서 법선 벡터는, 포인트를 재위치된 위치에 재위치시키기 전, 서브샘플링된 포인트 클라우드의 표면에 대해 수직이다. 일부 실시예들에서, 위치 보정 데이터는 산술적으로 인코딩되거나, Golomb 인코딩 기법들 또는 다른 적합한 무손실 인코딩 기법들에 따라 인코딩될 수 있다.
일부 실시예들에서, 인코더는 공간 정보에 더하여 시간 정보를 추가로 인코딩할 수 있다. 예를 들어, 각각의 포인트는, 포인트가 캡처되었을 때와 같은, 포인트와 연관된 시간을 가질 수 있다. 시간 정보가 인코딩되고 있는 일부 실시예들에서, 일례로서, 인코더는, 추가로, 시간 정보에 기초하여 세분 위치에 대해 포인트를 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지, 예컨대, 세분 위치에서 하나의 시간 증분으로부터 다음 시간 증분까지 포인트 클라우드가 변화했는지의 여부를 결정할 수 있다. 다른 예로서, 인코더는, 오리지널 포인트 클라우드 내의 이전 시간 증분들(예컨대, 프레임들)에서 나타나지 않고/않거나 오리지널 포인트 클라우드 내의 후속 시간 증분들(예컨대, 프레임들)에서 나타나지 않는 오리지널(압축되지 않은) 포인트 클라우드 내의 특정 시간 증분에서 포함된 포인트가 중요한 포인트가 아니라고 결정할 수 있다. 그러한 결정에 응답하여, 인코더는 포인트가 오리지널 포인트 클라우드 내의 포인트에 대응하는 세분 위치에서 포함될 필요가 없다고 결정할 수 있다. 인코더는, 세분 위치에 대해 포인트를 재위치시켜야 할지의 여부를 결정할 때 그리고/또는 포인트 클라우드 내의 추가 포인트들에 대한 공간 정보를 포함시켜야 할지의 여부를 결정할 때, 유사한 시간적 고려사항들을 활용할 수 있다.
추가로, 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 임의의 추가 포인트들에 대한 공간 정보가 인코딩될 수 있고, 압축된 포인트 클라우드 내에 포함될 수 있다. 또한, 구성가능 파라미터들을 나타내는 데이터, 예컨대 세분 위치들을 결정할 때 포인트에 대한 최근접 이웃들의 세트에 포함시켜야 하는 최근접 이웃들의 수(K), 최근접 이웃들에 대한 선택된 포인트로부터의 최소 거리(D0), 최근접 이웃들에 대한 선택된 포인트로부터의 최대 거리(D1), 세분 위치에 대한 선택된 포인트로부터의 최소 거리(D2), 선택된 포인트와 세분 위치에 대한 최근접 이웃 사이의 거리(M), 예를 들어 중점(midpoint), 수행해야 하는 세분 반복들의 수(N) 등은 인코더로부터 디코더로 전송되는 압축된 포인트 클라우드 내에 포함될 수 있거나, 또는 저장되어야 하고 나중에 디코더에 의해 디코딩되어야 하는 압축된 포인트 클라우드 내에 포함될 수 있다. 일부 실시예들에서, 압축된 포인트 클라우드 내에 포함된 이러한 추가 정보는 다양한 인코딩 기법들을 이용하여 인코딩될 수 있다. 예를 들어, 산술 인코딩, Golomb 인코딩 또는 다른 적합한 무손실 또는 손실 인코딩 기법들이 이용될 수 있다.
압축된 포인트 클라우드가 서브샘플링된 포인트들에 대한 공간 정보, 세분 위치들에서의 포인트들의 포함 또는 불포함을 나타내는 데이터, 세분 위치들에 대해 재위치되어야 하는 임의의 포인트들의 재위치를 나타내는 데이터, 포함되어야 하는 임의의 추가 포인트들에 대한 공간 정보, 및 인코더에 의해 이용되는 구성 정보를 포함하기 때문에, 디코더는 인코더와 유사한 분석을 수행함으로써 오리지널 캡처된 포인트 클라우드 또는 오리지널 캡처된 포인트 클라우드의 가까운 복제물을 재생성할 수 있다. 예를 들어, 디코더는 인코더와 동일한 구성 파라미터들을 사용하여 세분 위치들을 결정할 수 있고, 압축된 포인트 클라우드 내에 포함된 결정들에 따라 세분 위치들에서 포인트들을 포함시킬 수 있거나, 포함시키지 않을 수 있거나, 또는 재위치시킬 수 있다. 또한, 디코더는 압축된 포인트 클라우드 내에 포함된 추가 포인트들에 대한 공간 정보에 기초하여 추가 포인트들을 포함할 수 있다. 디코더는, 또한, 멀티프레임 포인트 클라우드에서 프레임마다의 포인트 위치 변화들과 같은 시간 파라미터들에 기초하여 추가 포인트들을 포함시킬지의 여부를 결정할 수 있다.
도 2a는 일부 실시예들에 따른 인코더의 컴포넌트들을 도시한다.
인코더(202)는 도 1a에 도시된 인코더(104)와 유사한 인코더일 수 있다. 인코더(202)는 서브샘플러(216), 손실 인코더(204) 및 손실 디코더(210)를 포함한다. 전술된 바와 같이, 일부 실시예들에서, 손실 인코딩 알고리즘은 서브샘플링된 포인트 클라우드의 포인트들의 공간 정보를 인코딩하는 데 이용될 수 있다. 따라서, 인코더(202)와 같은 인코더는, 예를 들어 인입 데이터 인터페이스(214)를 통해, 포인트 클라우드를 수신할 수 있고, 서브샘플러(216)와 같은 서브샘플러를 통해, 수신된 포인트 클라우드를 서브샘플링하여, 서브샘플링된 포인트 클라우드를 생성할 수 있다. 인코더는, 이어서, 예를 들어 손실 인코더(204) 및 손실 디코더(210)를 통해, 서브샘플링된 포인트 클라우드를 손실-인코딩 및 손실-디코딩하여, 손실-인코딩되었던 서브샘플링된 포인트들을 포함하는 압축된 포인트 클라우드를 수신할 때 디코더가 생성할 서브샘플링된 포인트 클라우드를 나타내는 대표적인 서브샘플링된 포인트 클라우드를 생성할 수 있다.
일부 실시예들에서, 인코더(202)와 같은 인코더는, 추가로, 구성 인터페이스(212)와 같은 구성 인터페이스를 포함할 수 있고, 여기서 포인트 클라우드를 압축하기 위해 인코더에 의해 사용되는 하나 이상의 파라미터들은 구성 인터페이스를 통해 조정될 수 있다. 일부 실시예들에서, 구성 인터페이스(212)와 같은 구성 인터페이스는 API와 같은 프로그램 인터페이스일 수 있다. 인코더(202)와 같은 인코더에 의해 사용되는 구성들은 구성 저장소(218)와 같은 구성 저장소에 저장될 수 있다. 세분 위치 평가자(206)와 같은 세분 평가자는 세분 위치 평가를 수행하여, 포인트들이 세분 위치들에 대해 포함되어야 하는지, 포함되어서는 안 되는지, 아니면 재위치되어야 하는지를 결정할 수 있다. 또한, 세분 위치 평가자는 인코더에 의해 인코딩된 압축된 포인트 클라우드 내에 포함된 데이터로부터 생성된 압축해제된 포인트 클라우드 내에 포함되어야 하는 임의의 추가 포인트들을 결정할 수 있다.
일단 세분 위치 결정 정보가 결정되었고, 압축해제된 포인트 클라우드 내에 포함되어야 하는 임의의 추가 포인트들이 결정되었다면, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보, 세분 위치 결정 정보, 재위치 정보, 압축해제된 포인트 클라우드 내에 포함되어야 하는 임의의 추가 포인트들에 대한 공간 정보, 및 압축된 포인트 클라우드를 디코딩하는 데 이용하기 위한 구성 정보를 나타내는 데이터는 인출 데이터 인코더(208)와 같은 인출 데이터 인코더를 통해 인코딩될 수 있다. 일부 실시예들에서, 인출 데이터 인코더는 산술 인코딩, Golomb 인코딩, 다양한 무손실 인코딩 기법들, 또는 손실 인코딩 기법들과 같은 다양한 인코딩 기법들 중 임의의 것에 따라 인출 데이터를 인코딩할 수 있다. 일부 실시예들에서, 포인트들에 대한 공간 정보는 손실 인코딩 기법에 따라 인코딩될 수 있는 반면, 세분 위치에 대해 재위치되어야 하는 포인트들에 대한 재위치 정보는 무손실 인코딩 기법에 따라 인코딩될 수 있다. 일부 실시예들에서, 수 개의 문자들을 포함하는 재위치 정보는 특정 인코딩 기법을 이용하여 인코딩될 수 있는 반면, 더 많은 문자들을 포함하는 재위치 정보는 상이한 인코딩 기법을 이용하여 인코딩될 수 있다.
일부 실시예들에서, 인코더(202)와 같은 인코더는 도 2a에 도시된 것보다 더 많은 또는 더 적은 컴포넌트들을 포함할 수 있다. 예를 들어, 무손실 인코딩 기법을 이용하여 공간 정보를 인코딩하는 일부 실시예들에서, 손실 인코더(204) 및 손실 디코더(210)는 생략될 수 있다.
도 2b는 일부 실시예들에 따른 디코더의 컴포넌트들을 도시한다.
디코더(220)는 도 1a에 도시된 디코더(116)와 유사한 디코더일 수 있다. 디코더(220)는 인코딩된 데이터 인터페이스(224), 서브샘플 디코더(222), 세분 포인트 평가자(226), 구성 저장소(230), 및 디코딩된 데이터 인터페이스(228)를 포함한다.
디코더(220)와 같은 디코더는, 인코딩된 데이터 인터페이스(224)와 같은 인코딩된 데이터 인터페이스를 통해, 도 1a에 도시된 압축된 포인트 클라우드(112) 또는 도 3에 도시된 압축된 포인트 클라우드 파일(300)과 같은 인코딩된 압축된 포인트 클라우드를 인코더로부터 수신할 수 있다. 인코딩된 압축된 포인트 클라우드는 서브샘플링된 포인트 클라우드의 포인트들을 결정하기 위해 디코더에 의해 디코딩 및 사용될 수 있다. 예를 들어, 서브샘플링된 포인트 클라우드의 포인트들의 공간 정보는 서브샘플 디코더(222)와 같은 서브샘플 디코더에 의해 디코딩될 수 있다. 일부 실시예들에서, 압축된 포인트 클라우드는, 인코딩된 데이터 인터페이스(224)와 같은 인코딩된 데이터 인터페이스를 통해, 저장 디바이스 또는 다른 중개 소스로부터 수신될 수 있으며, 여기서 압축된 포인트 클라우드는 인코더(104)와 같은 인코더에 의해 이전에 인코딩되었다.
일단 서브샘플링된 포인트 클라우드가 결정되면, 세분 포인트 평가자(226)와 같은 세분 포인트 평가자는 결정된 서브샘플링된 포인트 클라우드의 개개의 포인트들에 대한 이웃 포인트들을 결정할 수 있고, 개개의 포인트들과 개개의 이웃 포인트들 사이의 세분 위치들을 결정할 수 있다. 세분 평가자는, 또한, 포인트가 특정 세분 위치에서 포함되어야 하는지 아니면 포함되어서는 안 되는지의 여부, 또는 그 포인트가 세분 위치에 대해 재위치되어야 하는지를 나타내는, 압축된 포인트 클라우드 내에 포함된 디코드 데이터를 수신할 수 있다. 일부 실시예들에서, 서브샘플 디코더(222)는, 또한, 손실 또는 무손실 기법들을 통해, 포인트가 특정 세분 위치에서 포함되어야 하는지 아니면 포함되어서는 안 되는지를 나타내는 인코딩된 데이터 및/또는 재위치 정보를 디코딩할 수 있고, 디코딩된 데이터를 세분 포인트 평가자(226)에 제공할 수 있다. 세분 평가자는 구성 저장소(230)와 같은 구성 저장소에 저장된 파라미터들에 기초하여 세분 위치들을 결정할 수 있다. 일부 실시예들에서, 구성들 중 적어도 일부는, 인코더에서 구성되고 압축된 포인트 클라우드와 함께 디코더에 통신되는 구성가능 파라미터들일 수 있다. 일부 실시예들에서, 파라미터들 중 적어도 일부는 압축된 포인트 클라우드와 통신되지 않는 고정된 파라미터들일 수 있다. 일부 실시예들에서, 압축된 포인트 클라우드와 함께 포함된 구성가능 파라미터들이 디코딩되고 구성 저장소(230)와 같은 구성 저장소에 추가될 수 있어서, 구성가능 파라미터들은 세분 위치들을 결정할 때 세분 포인트 평가자(226)에 의해 사용될 수 있다. 일부 실시예들에서, 세분 포인트 평가자 및/또는 서브샘플 디코더는, 추가로, 압축해제된 포인트 클라우드 내에 포함되어야 하는 임의의 추가 포인트들에 대한 공간 정보를 디코딩할 수 있고, 여기서 추가 포인트들에 대한 공간 정보는 디코더에 의해 수신된 인코딩된 압축된 포인트 클라우드 내에 포함된다.
디코더(220)와 같은 디코더는, 디코딩된 데이터 인터페이스(228)와 같은 디코딩된 데이터 인터페이스를 통해 수신용 디바이스 또는 애플리케이션에, 수신된 인코딩된 압축된 포인트 클라우드에 기초하여 생성된 압축해제된 포인트 클라우드를 제공할 수 있다. 압축해제된 포인트 클라우드는 서브샘플링된 포인트 클라우드의 포인트들, 세분 위치들에서 포함되어야 하거나 이들에 대해 재위치되어야 하는 임의의 포인트들, 및 압축해제된 포인트 클라우드 내에 포함되어야 한다고 나타난 임의의 추가 포인트들을 포함할 수 있다. 일부 실시예들에서, 압축해제된 포인트 클라우드는, 예컨대 헤드 마운티드 디스플레이를 위한, 시각적 디스플레이를 생성하기 위해 사용될 수 있다. 또한, 일부 실시예들에서, 압축해제된 포인트 클라우드는, 하나 이상의 제어 결정들을 행하는 데 압축해제된 포인트 클라우드를 사용하는 의사 결정 엔진에 제공될 수 있다. 일부 실시예들에서, 압축해제된 포인트 클라우드는 다양한 다른 애플리케이션들에서 또는 다양한 다른 목적들을 위해 사용될 수 있다.
도 3은 일부 실시예들에 따른 예시적인 압축된 포인트 클라우드 파일을 도시한다. 포인트 클라우드 파일(300)은 구성 정보(304), 포인트 클라우드 데이터(306), 세분 위치 포인트 포함/재위치 데이터(308), 및 압축해제된 포인트 클라우드(310) 내에 포함되어야 하는 추가 포인트들을 포함한다. 일부 실시예들에서, 포인트 클라우드 파일(300)은 다수의 패킷들을 통해 부분적으로 통신될 수 있다. 일부 실시예들에서, 포인트 클라우드 파일(300)에 도시된 섹션들 모두가 압축된 포인트 클라우드 정보를 송신하는 각각의 패킷에 포함될 수 있는 것은 아니다. 일부 실시예들에서, 포인트 클라우드 파일(300)과 같은 포인트 클라우드 파일은, 인코더 또는 디코더를 구현하는 서버와 같은 저장 디바이스에 저장될 수 있거나, 또는 다른 컴퓨팅 디바이스에 저장될 수 있다.
도 4는 일부 실시예들에 따른, 압축된 포인트 클라우드를 인코딩하기 위한 프로세스를 도시한다.
402에서, 인코더는 포인트 클라우드를 수신한다. 포인트 클라우드는 하나 이상의 센서들로부터의 캡처된 포인트 클라우드일 수 있거나, 또는 그래픽 애플리케이션에 의해 생성되는 포인트 클라우드와 같은 생성된 포인트 클라우드일 수 있다.
404에서, 인코더는 수신된 포인트 클라우드를 서브샘플링하여, 서브샘플링된 포인트 클라우드를 생성한다. 서브샘플링된 포인트 클라우드는 수신된 포인트 클라우드보다 더 적은 포인트들을 포함할 수 있다. 예를 들어, 수신된 포인트 클라우드는 수십만 개의 포인트들 또는 수백만 개의 포인트들을 포함할 수 있고, 서브샘플링된 포인트 클라우드는 수백 개의 포인트들 또는 수천 개의 포인트들을 포함할 수 있다.
406에서, 인코더는 서브샘플링된 포인트 클라우드를 인코딩 및 디코딩하여, 압축된 포인트 클라우드를 디코딩할 때 디코더가 생성할 대표적인 서브샘플링된 포인트 클라우드를 생성한다. 일부 실시예들에서, 인코더 및 디코더는 대표적인 서브샘플링된 포인트 클라우드를 생성하기 위해 손실 압축/압축해제 알고리즘을 실행할 수 있다. 일부 실시예들에서, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보는 대표적인 서브샘플링된 포인트 클라우드를 생성하는 것의 일부로서 양자화될 수 있다. 일부 실시예들에서, 인코더는 무손실 압축 기법들을 활용할 수 있고, 406은 생략될 수 있다. 예를 들어, 무손실 압축 기법들을 이용할 때, 오리지널 서브샘플링된 포인트 클라우드는 디코더가 생성할 서브샘플링된 포인트 클라우드를 대표할 수 있는데, 그 이유는 무손실 압축 시, 데이터가 압축 및 압축해제 동안 손실되지 않을 수 있기 때문이다.
408에서, 인코더는 포인트 클라우드의 압축을 위해 선택된 구성 파라미터들에 따라 또는 고정된 구성 파라미터들에 따라, 서브샘플링된 포인트 클라우드의 포인트들 사이의 세분 위치들을 식별한다. 고정된 구성 파라미터들이 아닌, 인코더에 의해 사용되는 구성 파라미터들은 압축된 포인트 클라우드 내의 구성 파라미터들에 대한 값들을 포함함으로써 디코더로 통신된다. 따라서, 디코더는 압축된 포인트 클라우드 내에 포함된 세분 구성 파라미터들에 기초하여 평가된 인코더와 동일한 세분 위치들을 결정할 수 있다. 도 5는 인코더가 구성 파라미터들에 따라 세분 위치들을 식별하는 방법을 더 상세히 논의한다.
410에서, 인코더는 세분 위치들 중 개개의 세분 위치들에 대해, 포인트가 압축해제된 포인트 클라우드 내의 세분 위치에서 포함되어야 하는지 아니면 포함되어서는 안 되는지를 결정한다. 이러한 결정을 나타내는 데이터는 압축된 포인트 클라우드에서 인코딩된다. 일부 실시예들에서, 이러한 결정을 나타내는 데이터는 "참"인 경우에는 포인트가 포함되어야 한다는 것을 의미하고 "거짓"인 경우에는 포인트가 포함되어서는 안 된다는 것을 의미하는 단일 비트일 수 있다. 추가로, 인코더는 압축해제된 포인트 클라우드 내에 포함되어야 하는 포인트가 압축해제된 포인트 클라우드 내의 세분 위치에 대해 재위치되어야 한다고 결정할 수 있다. 그러한 포인트들에 대해, 인코더는 세분 위치에 대해 포인트를 어떻게 재위치시키는지를 나타내는 데이터를 추가로 인코딩할 수 있다. 일부 실시예들에서, 위치 보정 정보는 양자화되고 엔트로피-인코딩될 수 있다. 일부 실시예들에서, 위치 보정 정보는 포인트가 세분 위치에 대해 어떻게 재위치되어야 하는지를 나타내는 델타 X, 델타 Y, 및/또는 델타 Z 값을 포함할 수 있다. 다른 실시예들에서, 위치 보정 정보는 다음과 같이 계산되는 위치 보정 정보의 법선 성분에 대응하는 단일 스칼라 값을 포함할 수 있다:
Figure pct00001
상기 수학식에서, 델타 N은 세분 위치(예컨대, [X A , Y A , Z A ])에 대한 재위치된 또는 조정된 포인트 위치와 오리지널 세분 위치(예컨대, [X, Y, Z]) 사이의 차이인, 위치 보정 정보를 나타내는 스칼라 값이다. 이러한 벡터 차이와 세분 위치에서의 법선 벡터의 외적(cross product)은 스칼라 값 델타 N을 생성한다. 디코더가 세분 위치에서의 법선 벡터를 결정할 수 있고, 세분 위치의 좌표들, 예컨대 [X, Y, Z]를 결정할 수 있기 때문에, 디코더는, 또한, 세분 위치에 대한 포인트에 대한 재위치된 위치를 나타내는 조정된 위치에 대해 상기의 수학식을 해결함으로써, 조정된 위치의 좌표들, 예컨대 [X A , Y A , Z A ]를 결정할 수 있다. 일부 실시예들에서, 위치 보정 정보는, 추가로, 법선 성분 및 하나 이상의 추가 접선 성분들로 분해될 수 있다. 그러한 실시예에서, 법선 성분, 예컨대 델타 N, 및 접선 성분(들)은 압축된 포인트 클라우드 내에 포함시키기 위해 양자화되고 인코딩될 수 있다.
412에서, 인코더는, (서브샘플링된 포인트들에 더하여 그리고 세분 위치들에서 포함되는 포인트들 또는 세분 위치들에 대해 재위치되는 위치들에서 포함되는 포인트들에 더하여) 하나 이상의 추가 포인트들이 압축해제된 포인트 클라우드 내에 포함되어야 하는지의 여부를 결정한다. 예를 들어, 오리지널 포인트 클라우드가 불규칙한 표면 또는 형상을 가져서, 서브샘플링된 포인트 클라우드 내의 포인트들 사이의 세분 위치들이 불규칙한 표면 또는 형상을 적절하게 표현하지 않게 하는 경우, 인코더는 압축해제된 포인트 클라우드 내의 세분 위치들에서 포함되어야 하거나 그에 대해 재위치되어야 한다고 결정된 포인트들에 더하여 하나 이상의 추가 포인트들을 포함할 것을 결정할 수 있다. 추가로, 인코더는 타깃 비트 전송률, 타깃 압축률, 품질 타깃 메트릭 등과 같은 시스템 제약들에 기초하여, 하나 이상의 추가 포인트들이 압축해제된 포인트 클라우드 내에 포함되어야 하는지의 여부를 결정할 수 있다. 일부 실시예들에서, 비트 예산(bit budget)이 네트워크 조건들, 프로세서 부하 등과 같은 변화하는 조건들로 인해 변화할 수 있다. 그러한 실시예들에서, 인코더는 변화하는 비트 예산에 기초하여, 압축해제된 포인트 클라우드 내에 포함되어야 하는 추가 포인트들의 양을 조정할 수 있다. 일부 실시예들에서, 인코더는 비트 예산이 초과되지 않고서 소비되도록 추가 포인트들을 포함할 수 있다. 예를 들어, 비트 예산이 더 높을 때, 인코더는 비트 예산을 소비하기 위해(그리고 품질을 향상시키기 위해) 더 많은 추가 포인트들을 포함할 수 있고, 비트 예산이 더 적을 때, 인코더는 비트 예산이 소비되지만 초과되지 않도록 더 적은 추가 포인트들을 포함할 수 있다.
414에서, 인코더는 추가 세분 반복들이 수행되어야 하는지의 여부를 결정한다. 그러한 경우, 압축해제된 포인트 클라우드 내에 포함되어야 하거나, 재위치되어야 하거나, 또는 추가로 포함되어야 한다고 결정된 포인트들이 고려되고, 프로세스는 408로 되돌아가서, 압축해제된 포인트 클라우드 내에 포함되어야 하거나, 재위치되어야 하거나, 또는 추가로 포함되어야 한다고 결정된 포인트들을 포함하는 업데이트된 서브샘플링된 포인트 클라우드의 새로운 세분 위치들을 식별한다. 일부 실시예들에서, 수행되어야 하는 세분 반복들의 수(N)는 인코더/디코더의 고정 또는 구성가능 파라미터일 수 있다. 일부 실시예들에서, 상이한 세분 반복 값들이 포인트 클라우드의 상이한 부분들에 할당될 수 있다. 예를 들어, 인코더는 포인트 클라우드가 관찰되고 있는 관점을 고려할 수 있고, 그 관점으로부터 관찰되는 바와 같은 포인트 클라우드의 포어그라운드에서의 포인트 클라우드의 포인트들 상에서 더 많은 세분 반복들을 그리고 그 관점으로부터 관찰되는 바와 같은 포인트 클라우드의 백그라운드에서의 포인트들 상에서 더 적은 세분 반복들을 수행할 수 있다.
416에서, 포인트 클라우드의 서브샘플링된 포인트들에 대한 공간 정보는 인코딩되고, 압축된 포인트 클라우드 내에 포함된다. 추가로, 세분 위치 포함 및 재위치 데이터는 인코딩되고, 압축해제된 포인트 클라우드 내에 포함되어야 하는 임의의 추가 포인트들에 대한 공간 정보와 함께, 압축된 포인트 클라우드 내에 포함된다. 추가로, 인코더에 의해 선택되거나 사용자로부터 인코더에 제공되는 임의의 구성가능 파라미터들이 압축된 포인트 클라우드와 함께 포함되도록 인코딩된다. 압축된 포인트 클라우드는, 이어서, 압축된 포인트 클라우드 파일, 다수의 압축된 포인트 클라우드 파일들로서 수신용 엔티티로 전송될 수 있거나, 또는 패킷화되고 다수의 패킷들을 통해 디코더 또는 저장 디바이스와 같은 수신용 엔티티로 통신될 수 있다.
도 5는 일부 실시예들에 따른, 서브샘플링된 포인트 클라우드를 세분하기 위한 프로세스를 도시한다. 도 5에 도시된 단계들(502 내지 512)은 도 4의 408에서와 같이 세분 위치들을 식별하는 것의 일부로서 수행될 수 있다.
502에서, 도 2a에 도시된 인코더(202)의 세분 위치 평가자(206)와 같은 세분 위치 평가자는, 도 4의 404에서의 서브샘플링으로부터 생성된 서브샘플링된 포인트 클라우드와 같은 서브샘플링된 포인트 클라우드 또는 도 4의 406으로부터 생성된 것과 같은 대표적인 서브샘플링된 포인트 클라우드로부터, 선택된 포인트를 선택한다. 일부 실시예들에서, 서브샘플링된 포인트 클라우드의 포인트들이 순서화될 수 있고, 세분 위치 평가자는 순서대로 제1(또는 그 다음) 포인트를 선택할 수 있다. 서브샘플링된 포인트들은 동일한 순서로 디코더에 통신되어, 디코더가 평가될 포인트들을, 서브샘플링된 포인트 클라우드 또는 대표적인 서브샘플링된 포인트 클라우드로부터 그들이 인코더에 의해 평가를 위해 선택되었던 것과 동일한 순서로 선택하게 할 수 있다.
504에서, 세분 위치 평가자는 선택된 포인트(또는 후속 반복들에서, 다음 최근접 이웃 포인트)에 대한 최근접 이웃 포인트를 식별한다. 506에서, 세분 위치 평가자는 식별된 최근접 또는 다음 최근접 이웃 포인트가 평가되고 있는 선택된 포인트로부터 적어도 최소 거리(D0)에 있는지를 결정한다. 일부 실시예들에서, D0은 인코더가 압축된 포인트 클라우드에서 디코더로 통신하는 구성가능 파라미터일 수 있다. 최근접 또는 다음 최근접 이웃 포인트가 최소 거리(D0)보다, 평가되고 있는 선택된 포인트에 더 가까운 경우, 이웃 포인트는 세분 위치에 대해 추가로 평가되지 않고, 프로세스는 504로 되돌아가고, 여기서 다음 최근접 이웃 포인트가 선택된다.
506에서 평가되고 있는 식별된 이웃 포인트가 최소 거리보다 선택된 포인트로부터 더 멀리 떨어져 있는 경우, 508에서, 평가되고 있는 식별된 이웃 포인트가 최대 거리(D1)보다 평가되고 있는 선택된 포인트에 더 가까운지의 여부가 결정된다. D1은, 또한, 인코더가 압축된 포인트 클라우드에서 디코더로 통신하는 구성가능 파라미터일 수 있다. 평가되고 있는 식별된 이웃 포인트가 최대 거리(D1)보다 평가되고 있는 선택된 포인트로부터 더 멀리 떨어져 있는 경우, 평가되고 있는 식별된 이웃 포인트는 세분 위치에 대해 추가로 평가되지 않을 수 있고, 프로세스는 다른 이웃 포인트가 선택되는 504로 되돌아갈 수 있거나, 또는 어떠한 이웃 포인트들도 D0 및 D1 내에 있지 않는 경우, 프로세스는 완료될 수 있고, 도 4의 410(예컨대, 도 5의 512)으로 되돌아갈 수 있다.
510에서, 평가되고 있는 선택된 포인트와 평가되고 있는 식별된 이웃 포인트 사이의 세분 위치가 평가되어, 세분 위치가 평가되고 있는 선택된 포인트로부터 적어도 최소 거리(D2)에 떨어져 있는지를 결정한다. 일부 실시예들에서, 세분 위치는 평가되고 있는 선택된 포인트와 평가되고 있는 식별된 이웃 포인트 사이의 중점에 있을 수 있다. 일부 실시예들에서, 세분 위치는 평가되고 있는 선택된 포인트와 평가되고 있는 식별된 이웃 포인트 사이의 중점 이외의 위치에 있을 수 있다. 예를 들어, 일부 실시예들에서, 인코더는 평가되고 있는 선택된 포인트와 평가되고 있는 식별된 이웃 포인트 사이의 세분 위치를 결정하기 위한 구성 파라미터를 선택할 수 있다. 이러한 파라미터(M)는 압축된 포인트 클라우드에서 디코더에 통신될 수 있다.
세분 위치가 평가되고 있는 선택된 포인트로부터의 최소 거리(D2)보다 더 큰 경우, 세분은 유효 세분 위치일 수 있고, 인코더는 512에서 포인트가 세분 위치에서 포함되어야 하는지, 세분 위치에서 포함되어서는 안 되는지, 아니면 세분 위치에 대해 재위치되어야 하는지를 결정할 수 있다. 512는 도 4의 410과 동일할 수 있고, 인코더는 도 4에 도시된 단계들(412 내지 416)로 계속될 수 있다는 것에 유의한다.
도 6은 일부 실시예들에 따른, 압축된 포인트 클라우드를 디코딩하기 위한 프로세스를 도시한다. 디코더는 도 4 및 도 5의 인코더에 대해 기술된 것과 유사한 단계들을 수행하여, 도 4 및 도 5에 개략적으로 설명된 바와 유사한 프로세스를 따라 인코더로부터 수신된 압축된 포인트 클라우드 내에 포함된 정보에 기초하여, 압축해제된 포인트 클라우드를 생성할 수 있다.
602에서, 디코더는 압축된 포인트 클라우드를 수신한다. 압축된 포인트 클라우드는 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보, 세분 위치들에서의 포인트들의 포함 또는 재위치를 나타내는 정보, 압축해제된 포인트 클라우드 내에 포함되어야 하는 임의의 추가 포인트들에 대한 공간 정보, 및 구성 정보를 포함할 수 있다. 일부 실시예들에서, 서브샘플링된 포인트 클라우드는 인코딩된 포맷으로 디코더에 통신될 수 있다. 예를 들어, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보는 인코더에서 산술 인코딩 기법 또는 Golomb 인코딩 기법을 이용하여 인코딩되었을 수 있다. 그러한 실시예들에서, 디코더는 서브샘플링된 포인트 클라우드의 포인트들에 대한 인코딩된 공간 정보를 디코딩하여, 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보가 압축된 포인트 클라우드로부터 생성되는 압축해제된 포인트 클라우드 내에 포함되어야 하는 추가 포인트들을 결정하는 데 사용될 수 있게 할 수 있다.
604에서, 도 2b에 도시된 디코더(220)의 세분 포인트 평가자(226)와 같은 디코더의 세분 포인트 평가자가 세분 위치들을 평가하기 위해 압축된 포인트 클라우드에서 통신되는 서브샘플링된 포인트 클라우드로부터 포인트를 선택한다. 후속 반복들에서, 선택된 포인트는 세분 위치들을 결정하는 이전 반복에서 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 포인트들을 포함하는 업데이트된 서브샘플링된 포인트 클라우드의 포인트일 수 있다. 일부 실시예들에서, 서브샘플링된 포인트 클라우드의 포인트들은, 디코더의 세분 포인트 평가자가 인코더에서 포인트들이 평가되었던 것과 동일한 순서로 평가될 서브샘플링된 포인트 클라우드의 포인트들을 선택하도록 순서화될 수 있다.
606에서, 디코더의 세분 포인트 평가자는 평가되고 있는 서브샘플링된 포인트 클라우드의 선택된 포인트에 대한 최근접(또는 다음 최근접) 이웃 포인트를 식별한다. 608에서, 디코더의 세분 포인트 평가자는 선택된 이웃 포인트가 평가되고 있는 선택된 포인트로부터 적어도 최소 거리(D0)에 있는지를 결정한다. 이웃 포인트가 평가되고 있는 선택된 포인트로부터 적어도 최소 거리(D0)에 있지 않은 경우, 세분 포인트 평가자는 606으로 되돌아가고, 다른 이웃 포인트를 선택한다. 이웃 포인트가 평가되고 있는 선택된 포인트로부터 최소 거리(D0)보다 더 큰 거리에 있는 경우, 610에서, 세분 포인트 평가자는 이웃 포인트들이 평가되고 있는 선택된 포인트로부터 최대 거리(D1) 내에 있는지를 결정한다. 이웃 포인트가 평가되고 있는 선택된 포인트로부터 최대 거리(D1) 내에 있지 않은 경우, 세분 포인트 평가자는 606으로 되돌아가고, 다른 이웃 포인트를 선택한다. D0 및 D1 내에 어떠한 이웃 포인트들도 없는 경우, 세분 포인트 평가자는 604로 되돌아가고, 다른 포인트를 평가한다.
이웃 포인트가 D0 및 D1 내에 있는 경우, 612에서, 세분 포인트 평가자는 평가되고 있는 선택된 포인트와 평가되고 있는 현재 이웃 포인트 사이의 세분 위치를 결정한다. 일부 실시예들에서, 세분 위치는 중점일 수 있거나, 또는 중점 이외의 위치에 있을 수 있는데, 여기서 압축된 포인트 클라우드 내에 포함된 구성 정보는 세분 위치가 일정 포인트와 이웃 포인트 사이에서 어떻게 결정될 것인지를 나타낸다. 614에서, 디코더의 세분 포인트 평가자는 결정된 세분 위치가 평가되고 있는 선택된 포인트로부터 적어도 최소 거리(D2)에 있는지를 결정한다. 일부 실시예들에서, 파라미터들(D0, D1, 및/또는 D2)은 압축된 포인트 클라우드에서 통신될 수 있거나, 또는 인코더와 디코더 양측 모두에서 동일한 고정된 파라미터들일 수 있다. 결정된 세분 위치가 평가되고 있는 선택된 포인트로부터 적어도 최소 거리(D2)에 있지 않은 경우, 디코더의 세분 포인트 평가자는 606으로 되돌아가고, 평가할 다른 이웃 포인트를 식별한다.
616에서, 일단 유효 세분 위치가 결정되면, 세분 포인트 평가자는, 압축된 포인트 클라우드 내에 포함된 세분 위치 포인트 포함/재위치 데이터에 기초하여, 포인트가 세분 위치에서 포함되어야 하는지의 여부를 결정한다. 포인트가 세분 위치에서 포함되어서는 안 되는 경우, 세분 포인트 평가자는 606으로 되돌아가고, 평가할 다른 이웃 포인트를 식별한다.
618에서, 세분 포인트 평가자는 포인트가 세분 위치에 대해 재위치되어야 하는지를 결정한다. 포인트가 재위치되어서는 안 되는 경우, 세분 포인트 평가자는, 620에서, 포인트가 압축해제된 포인트 클라우드 내의 세분 위치에서 포함되게 한다. 포인트가 재위치되어야 하는 경우, 디코더는, 622에서, 포인트가 압축해제된 포인트 클라우드 내에 포함되어야 하는 세분 위치에 대한 위치를 결정하기 위해, 압축된 포인트 클라우드 내에 포함된 재위치 정보를 활용하고, 624에서, 포인트가 압축해제된 포인트 클라우드 내에 포함되게 한다.
626에서, 디코더는, 구성 정보에 기초하여, 선택된 포인트에 대해 평가될 추가 이웃 포인트들이 있는지의 여부를 결정한다. 예를 들어, 압축된 포인트 클라우드 내에 포함된 구성 파라미터 "K"는, 평가되고 있는 주어진 선택된 포인트에 대한 세분 위치들에 대해 평가될 이웃 포인트들의 세트에 포함되어야 하는 이웃 포인트들의 수를 나타낼 수 있다. 평가될 추가 이웃 포인트들이 있는 경우, 디코더는 606으로 되돌아갈 수 있고, 세분 포인트 평가자는 평가되고 있는 선택된 포인트에 이웃하는 다른 이웃 포인트를 평가할 수 있다. 선택된 포인트에 대해 평가될 임의의 추가 이웃 포인트들이 없다면, 디코더는, 628에서, 평가될 서브샘플링된 포인트 클라우드의 추가 포인트들이 있는지를 결정할 수 있다. 평가될 서브샘플링된 포인트 클라우드의 추가 포인트들이 있는 경우, 디코더는 604로 되돌아할 수 있고, 평가할 서브샘플링된 포인트 클라우드의 포인트들의 다음 포인트를 선택하여, 서브샘플링된 포인트 클라우드 내의 다음 포인트에 대해 전술된 동일한 프로세스를 수행할 수 있다. 일부 실시예들에서, 서브샘플링된 포인트 클라우드의 포인트들은, 디코더가 평가될 서브샘플링된 포인트 클라우드의 포인트들을 그들이 인코더에서 평가되었던 동일한 순서로 선택하도록 하는 순서로 디코더로 통신될 수 있다.
평가될 서브샘플링된 포인트 클라우드의 어떠한 추가 포인트도 없는 경우, 디코더는, 630에서, 현재 세분 반복을 위해 압축해제된 포인트 클라우드 내에 포함되어야 하는 임의의 추가 포인트들이 있는지를 결정할 수 있다. 포함되어야 하는 추가 포인트들이 있는 경우, 그들은 632에서 포함될 수 있다. 그렇지 않은 경우, 632는 스킵될 수 있다.
634에서, 디코더는 수행될 추가 세분 반복들이 있는지를 결정한다. 예를 들어, 압축된 포인트 클라우드는 압축된 포인트 클라우드로부터 압축해제된 포인트 클라우드를 생성할 때 수행되어야 하는 세분 반복들의 수를 나타내는 구성 파라미터 "N"을 포함할 수 있다. 수행될 추가 세분 반복이 있는 경우, 디코더는, 636에서, 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 임의의 추가 포인트들과 함께, 세분 위치에서 포함되어야 하거나 세분 위치에 대해 재위치되어야 한다고 결정된 임의의 포인트들로 현재 서브샘플링된 포인트 클라우드를 업데이트한다. 현재 서브샘플링된 포인트 클라우드를 업데이트한 것에 후속하여, 디코더는 604로 되돌아가고, 업데이트된 서브샘플링된 포인트 클라우드를 사용하여 세분 위치들을 결정하기 위한 프로세스를 반복한다.
아직 수행될 임의의 추가 세분 반복들이 없는 경우, 디코더는, 638에서, 압축해제된 포인트 클라우드를 생성한다. 압축해제된 포인트 클라우드는, 세분 반복들 중 임의의 세분 반복 동안 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 임의의 추가 포인트들과 함께, 압축된 포인트 클라우드 내에 포함된 오리지널 서브샘플링된 포인트 클라우드의 포인트들, 및 세분 반복들 중 임의의 세분 반복 동안 결정된 임의의 세분 위치들에 대해 포함되어야 하거나 재위치되어야 한다고 결정된 임의의 포인트들을 포함한다.
도 7은 일부 실시예들에 따라, 압축된 포인트 클라우드들이 3D 텔레프레전스 애플리케이션에서 사용되는 것을 도시한다.
일부 실시예들에서, 센서(102)와 같은 센서, 인코더(104) 또는 인코더(202)와 같은 인코더, 및 디코더(116) 또는 디코더(220)와 같은 디코더는 3D 텔레프레전스 애플리케이션에서 포인트 클라우드들을 통신하는 데 사용될 수 있다. 예를 들어, 센서(102)와 같은 센서는, 702에서, 3D 이미지를 캡처할 수 있고, 704에서, 센서 또는 센서와 연관된 프로세서는 감지된 데이터에 기초하여 3D 재구성을 수행하여 포인트 클라우드를 생성할 수 있다.
706에서, 인코더(104 또는 202)와 같은 인코더는 포인트 클라우드를 압축할 수 있고, 708에서, 인코더 또는 포스트 프로세서는 압축된 포인트 클라우드를 패킷화하고 네트워크(710)를 통해 송신할 수 있다. 712에서, 패킷들은 디코더(116) 또는 디코더(220)와 같은 디코더를 포함하는 목적지 위치에서 수신될 수 있다. 디코더는, 714에서, 포인트 클라우드를 압축해제할 수 있고, 압축해제된 포인트 클라우드는, 716에서, 렌더링될 수 있다. 일부 실시예들에서, 3D 텔레프레전스 애플리케이션은 포인트 클라우드 데이터를 실시간으로 송신하여, 716에서의 디스플레이가 702에서 관찰되고 있는 이미지들을 표현하게 할 수 있다. 예를 들어, 협곡에서의 카메라는, 716에서, 원격 사용자가 가상 협곡을 통과하여 걷는 것을 경험하게 할 수 있다.
도 8은 일부 실시예들에 따른, 압축된 포인트 클라우드들이 가상 현실(VR) 또는 증강 현실(AR) 애플리케이션에서 사용되는 것을 도시한다.
일부 실시예들에서, 포인트 클라우드들은 (예를 들어, 센서에 의해 캡처되는 것과는 대조적으로) 소프트웨어에서 생성될 수 있다. 예를 들어, 802에서, 가상 현실 또는 증강 현실 콘텐츠가 생성된다. 가상 현실 또는 증강 현실 콘텐츠는 포인트 클라우드 데이터 및 비-포인트 클라우드 데이터를 포함할 수 있다. 예를 들어, 비-포인트 클라우드 문자는, 일례로서, 포인트 클라우드들에 의해 표현되는 풍경을 횡단할 수 있다. 804에서, 포인트 클라우드 데이터는 압축될 수 있고, 806에서, 압축된 포인트 클라우드 데이터 및 비-포인트 클라우드 데이터는 패킷화되고 네트워크(808)를 통해 송신될 수 있다. 예를 들어, 802에서 생성된 가상 현실 또는 증강 현실 콘텐츠는 원격 서버에서 생성될 수 있고, 네트워크(808)를 통해 VR 또는 AR 콘텐츠 소비자로 통신될 수 있다. 810에서, 패킷들은 VR 또는 AR 소비자의 디바이스에서 수신 및 동기화될 수 있다. VR 또는 AR 소비자의 디바이스에서 동작하는 디코더는, 812에서, 압축된 포인트 클라우드를 압축해제할 수 있고, 포인트 클라우드 및 비-포인트 클라우드 데이터는, 예를 들어 VR 또는 AR 소비자의 디바이스의 헤드 마운티드 디스플레이에서 실시간으로 렌더링될 수 있다. 일부 실시예들에서, 포인트 클라우드 데이터는, VR 또는 AR 소비자가 상이한 방향들에서 보기 위해 헤드 마운티드 디스플레이를 조작한 것에 응답하여 생성, 압축, 압축해제 및 렌더링될 수 있다.
일부 실시예들에서, 본 명세서에 기술된 바와 같은 포인트 클라우드 압축은 다양한 다른 애플리케이션들, 예컨대 지리적 정보 시스템들, 스포츠 리플레이 방송, 박물관 디스플레이들, 자율적 내비게이션 등에서 사용될 수 있다.
예시적인 컴퓨터 시스템
도 9는 일부 실시예들에 따른, 인코더 또는 디코더 또는 본 명세서에서 기술된 컴포넌트들 중 임의의 다른 것들(예컨대, 도 1 내지 도 8을 참조하여 전술된 컴포넌트들 중 임의의 것)을 구현할 수 있는 예시적인 컴퓨터 시스템(900)을 도시한다. 컴퓨터 시스템(900)은 전술된 실시예들 중 임의의 것 또는 모두를 실행하도록 구성될 수 있다. 상이한 실시예들에서, 컴퓨터 시스템(900)은 개인용 컴퓨터 시스템, 데스크톱 컴퓨터, 랩톱, 노트북, 태블릿, 슬레이트, 패드, 또는 넷북 컴퓨터, 메인프레임 컴퓨터 시스템, 핸드헬드 컴퓨터, 워크스테이션, 네트워크 컴퓨터, 카메라, 셋톱 박스, 모바일 디바이스, 소비자 디바이스, 비디오 게임 콘솔, 핸드헬드 비디오 게임 디바이스, 애플리케이션 서버, 저장 디바이스, 텔레비전, 비디오 녹화 디바이스, 주변기기 디바이스, 예컨대 스위치, 모뎀, 라우터, 또는 대체로 임의의 유형의 컴퓨팅 또는 전자 디바이스를 포함하지만 이들로 제한되지 않는, 다양한 유형의 디바이스들 중 임의의 것일 수 있다.
본 명세서에서 기술된 바와 같은, 포인트 클라우드 인코더 또는 디코더의 다양한 실시예들은, 다양한 다른 디바이스들과 상호작용할 수 있는 하나 이상의 컴퓨터 시스템들(900)에서 실행될 수 있다. 도 1 내지 도 8에 관하여 전술된 임의의 컴포넌트, 액션, 및 기능이, 다양한 실시예들에 따라, 도 9의 컴퓨터 시스템(900)으로서 구성되는 하나 이상의 컴퓨터들 상에서 구현될 수 있다는 것에 유의한다. 도시된 실시예에서, 컴퓨터 시스템(900)은 입력/출력(I/O) 인터페이스(930)를 통해 시스템 메모리(920)에 커플링된 하나 이상의 프로세서들(910)을 포함한다. 컴퓨터 시스템(900)은 I/O 인터페이스(930)에 커플링된 네트워크 인터페이스(940), 및 하나 이상의 입력/출력 디바이스들(950), 예컨대 커서 제어 디바이스(960), 키보드(970), 및 디스플레이(들)(980)를 추가로 포함한다. 일부 경우들에 있어서, 실시예들이 컴퓨터 시스템(900)의 예시를 사용하여 구현될 수 있지만, 다른 실시예들에서는 다수의 그러한 시스템들, 또는 컴퓨터 시스템(900)을 구성하는 다수의 노드들이 실시예들의 상이한 부분들 또는 예시들을 호스팅하도록 구성될 수 있다는 것이 고려된다. 예를 들어, 일 실시예에서, 일부 요소들은 다른 요소들을 구현하는 그들 노드들과는 별개인 컴퓨터 시스템(900)의 하나 이상의 노드들을 통해 구현될 수 있다.
다양한 실시예들에서, 컴퓨터 시스템(900)은 하나의 프로세서(910)를 포함하는 단일프로세서 시스템, 또는 여러 개(예컨대, 2개, 4개, 8개, 또는 다른 적합한 개수)의 프로세서들(910)을 포함하는 다중프로세서 시스템일 수 있다. 프로세서들(910)은 명령어들을 실행할 수 있는 임의의 적합한 프로세서일 수 있다. 예를 들어, 다양한 실시예들에서, 프로세서들(910)은 다양한 명령어 세트 아키텍처(instruction set architecture, ISA)들, 예컨대 x86, PowerPC, SPARC 또는 MIPS ISA들, 또는 임의의 다른 적합한 ISA 중 임의의 것을 구현하는 범용 또는 임베디드 프로세서들일 수 있다. 다중프로세서 시스템들에서, 프로세서들(910) 각각은 일반적으로 동일한 ISA를 구현할 수 있지만 반드시 그러한 것은 아니다.
시스템 메모리(920)는 프로세서(910)에 의해 액세스가능한 포인트 클라우드 압축 또는 포인트 클라우드 압축해제 프로그램 명령어들(922) 및/또는 센서 데이터를 저장하도록 구성될 수 있다. 다양한 실시예들에서, 시스템 메모리(920)는 정적 랜덤 액세스 메모리(SRAM), 동기식 동적 RAM(SDRAM), 비휘발성/플래시-타입 메모리, 또는 임의의 다른 타입의 메모리와 같은 임의의 적합한 메모리 기술을 사용하여 구현될 수 있다. 도시된 실시예에서, 프로그램 명령어들(922)은 전술된 기능 중 임의의 것을 통합하는 이미지 센서 제어 애플리케이션을 구현하도록 구성될 수 있다. 일부 실시예들에서, 프로그램 명령어들 및/또는 데이터는 시스템 메모리(920) 또는 컴퓨터 시스템(900)과는 별개인 상이한 타입들의 컴퓨터 액세스가능 매체들 또는 유사한 매체들에서 수신, 전송, 또는 저장될 수 있다. 컴퓨터 시스템(900)은 이전 도면들의 기능 블록들의 기능을 구현하는 것으로서 기술되지만, 본 명세서에서 기술된 기능 중 임의의 것이 그러한 컴퓨터 시스템을 통해 구현될 수 있다.
일 실시예에서, I/O 인터페이스(930)는 프로세서(910), 시스템 메모리(920), 및 네트워크 인터페이스(940) 또는 기타 주변기기 인터페이스들, 예컨대 입력/출력 디바이스들(950)을 포함한 디바이스 내의 임의의 주변기기 디바이스들 사이에서 I/O 트래픽을 조정하도록 구성될 수 있다. 일부 실시예들에서, I/O 인터페이스(930)는 하나의 컴포넌트(예를 들어, 시스템 메모리(920))로부터의 데이터 신호들을 다른 컴포넌트(예를 들어, 프로세서(910))에 의한 사용에 적합한 포맷으로 변환하기 위해 임의의 필수적인 프로토콜, 타이밍, 또는 다른 데이터 변환들을 수행할 수 있다. 일부 실시예들에서, I/O 인터페이스(930)는, 예를 들어, PCI(Peripheral Component Interconnect) 버스 표준 또는 USB(Universal Serial Bus) 표준의 변형물과 같은 다양한 타입들의 주변기기 버스들을 통해 부착되는 디바이스들을 위한 지원부를 포함할 수 있다. 일부 실시예들에서, I/O 인터페이스(930)의 기능은, 예를 들어, 2개 이상의 별개의 컴포넌트들, 예컨대 노스 브리지 및 사우스 브리지로 분할될 수 있다. 또한, 일부 실시예들에서, 시스템 메모리(920)에 대한 인터페이스와 같은 I/O 인터페이스(930)의 기능 중 일부 또는 전부가 프로세서(910) 내에 직접 통합될 수 있다.
네트워크 인터페이스(940)는, 컴퓨터 시스템(900)과, 네트워크(985)에 부착된 다른 디바이스들(예를 들어, 캐리어 또는 에이전트 디바이스들) 사이에서, 또는 컴퓨터 시스템(900)의 노드들 사이에서 데이터가 교환되게 하도록 구성될 수 있다. 네트워크(985)는, 다양한 실시예들에서, 로컬 영역 네트워크(Local Area Network, LAN)(예컨대, 이더넷(Ethernet) 또는 회사 네트워크), 광역 네트워크(Wide Area Network, WAN)(예컨대, 인터넷), 무선 데이터 네트워크, 일부 다른 전자 데이터 네트워크, 또는 이들의 일부 조합을 포함하지만 이로 제한되지 않는 하나 이상의 네트워크를 포함할 수 있다. 다양한 실시예들에서, 네트워크 인터페이스(940)는, 예를 들어 유선 또는 무선의 일반 데이터 네트워크들, 예컨대 임의의 적합한 타입의 이더넷 네트워크를 통해; 원격통신/전화 네트워크들, 예컨대 아날로그 음성 네트워크들 또는 디지털 광섬유 통신 네트워크들을 통해; 저장 영역 네트워크(storage area network, SAN)들, 예컨대 광섬유 채널 SAN(Fibre Channel SAN)들을 통해; 또는 임의의 다른 적합한 타입의 네트워크 및/또는 프로토콜을 통해 통신을 지원할 수 있다.
입력/출력 디바이스들(950)은, 일부 실시예들에서, 하나 이상의 디스플레이 단말기, 키보드, 키패드, 터치패드, 스캐닝 디바이스, 음성 또는 광 인식 디바이스, 또는 하나 이상의 컴퓨터 시스템(900)에 의해 데이터를 입력하거나 그에 액세스하는 데 적합한 임의의 다른 디바이스들을 포함할 수 있다. 다수의 입력/출력 디바이스들(950)은 컴퓨터 시스템(900)에 존재할 수 있거나, 또는 컴퓨터 시스템(900)의 다양한 노드들 상에 분산될 수 있다. 일부 실시예들에서, 유사한 입력/출력 디바이스들은 컴퓨터 시스템(900)으로부터 분리될 수 있고, 유선 또는 무선 연결을 통해, 예컨대 네트워크 인터페이스(940)를 통해, 컴퓨터 시스템(900)의 하나 이상의 노드들과 상호작용할 수 있다.
도 9에 도시된 바와 같이, 메모리(920)는 전술된 임의의 요소 또는 액션을 구현하도록 프로세서-실행가능할 수 있는 프로그램 명령어들(922)을 포함할 수 있다. 일 실시예에서, 프로그램 명령어들은 전술된 방법들을 구현할 수 있다. 다른 실시예들에서, 상이한 요소들 및 데이터가 포함될 수 있다. 데이터가 전술된 임의의 데이터 또는 정보를 포함할 수 있다는 점에 주목한다.
당업자들은, 컴퓨터 시스템(900)이 단지 예시적인 것이고, 실시예들의 범주를 제한하는 것으로 의도되지는 않음을 인식할 것이다. 특히, 컴퓨터 시스템 및 디바이스들은 컴퓨터, 네트워크 디바이스, 인터넷 어플라이언스, PDA, 무선 전화기, 호출기 등을 비롯한, 나타낸 기능들을 수행할 수 있는 하드웨어 또는 소프트웨어의 임의의 조합을 포함할 수 있다. 컴퓨터 시스템(900)은, 또한, 도시되지 않은 다른 디바이스들에 연결될 수 있거나, 또는 대신에 독립형 시스템으로서 동작할 수 있다. 부가적으로, 도시된 컴포넌트들에 의해 제공되는 기능은, 일부 실시예들에서, 더 적은 수의 컴포넌트들로 조합될 수 있거나 또는 부가적인 컴포넌트들에 분산될 수 있다. 유사하게, 일부 실시예들에서, 도시된 컴포넌트들 중 일부 컴포넌트들의 기능이 제공되지 않을 수 있고/있거나 다른 부가적인 기능이 이용가능할 수 있다.
당업자는 또한, 다양한 아이템들이 메모리에 저장되어 있는 것으로 또는 사용 중에 저장소 상에 저장되는 것으로 도시되어 있지만, 이들 아이템들 또는 이들의 부분들은 메모리 관리 및 데이터 무결성의 목적을 위해 메모리와 다른 저장 디바이스들 사이에서 전달될 수 있다는 것을 이해할 것이다. 대안적으로, 다른 실시예들에서, 소프트웨어 컴포넌트들 중 일부 또는 모두는 다른 디바이스 상의 메모리에서 실행될 수 있고, 컴퓨터간 통신을 통해 도시된 컴퓨터 시스템과 통신할 수 있다. 시스템 컴포넌트들 또는 데이터 구조들 중 일부 또는 전부는, 또한, 적절한 드라이브에 의해 판독될 컴퓨터 액세스가능 매체 또는 휴대용 물품 상에 (예를 들어, 명령어들 또는 구조화된 데이터로서) 저장될 수 있으며, 그의 다양한 예들이 위에 설명되어 있다. 일부 실시예들에서, 컴퓨터 시스템(900)으로부터 분리된 컴퓨터 액세스가능 매체 상에 저장된 명령어들은, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는 전기, 전자기, 또는 디지털 신호들과 같은 송신 매체들 또는 신호들을 통해 컴퓨터 시스템(900)으로 송신될 수 있다. 다양한 실시예들이 컴퓨터 액세스가능 매체에 관한 전술된 설명에 따라 구현된 명령어들 및/또는 데이터를 수신, 전송, 또는 저장하는 것을 추가로 포함할 수 있다. 일반적으로 말하면, 컴퓨터 액세스가능 매체는 자기적 또는 광학 매체들과 같은 비일시적 컴퓨터 판독가능 저장 매체 또는 메모리 매체, 예를 들어 디스크 또는 DVD/CD-ROM, 휘발성 또는 비휘발성 매체들, 예컨대 RAM(예를 들어, SDRAM, DDR, RDRAM, SRAM 등), ROM 등을 포함할 수 있다. 일부 실시예들에서, 컴퓨터 액세스가능 매체는, 네트워크 및/또는 무선 링크와 같은 통신 매체를 통해 전달되는 전기, 전자기, 또는 디지털 신호들과 같은 송신 매체들 또는 신호들을 포함할 수 있다.
본 명세서에 설명된 방법들은, 상이한 실시예들에서, 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현될 수 있다. 부가적으로, 방법들의 블록들의 순서는 변경될 수 있고, 다양한 요소들이 부가, 재순서화, 조합, 생략, 수정, 기타 등등될 수 있다. 본 개시내용의 이익을 가진 당업자에게 명백한 바와 같이 다양한 수정들 및 변화들이 이루어질 수 있다. 본 명세서에 설명된 다양한 실시예들은 예시적인 것이며 제한하려는 것으로 의도되지 않는다. 많은 변형들, 수정들, 부가들 및 개선들이 가능하다. 따라서, 복수의 예시들이 본 명세서에 설명된 컴포넌트들에 대해 단일 예시로서 제공될 수 있다. 다양한 컴포넌트들, 동작들, 및 데이터 저장들 사이의 경계들은 다소 임의적이고, 특정 동작들은 특정 예시 구성들의 맥락에서 예시된다. 기능의 다른 할당들이 계획되고, 다음의 청구범위의 범주 내에 속할 수 있다. 마지막으로, 예시적인 구성들에서 별개의 컴포넌트들로서 제시된 구조들 및 기능은 조합된 구조 또는 컴포넌트로서 구현될 수 있다. 이들 및 다른 변형들, 수정들, 부가들 및 개선들은 다음의 청구범위에 정의된 바와 같은 실시예들의 범주 내에 속할 수 있다.

Claims (20)

  1. 시스템으로서,
    포인트 클라우드를 구성하는 복수의 포인트들을 캡처하도록 구성된 하나 이상의 센서들 - 개개의 포인트들 각각은 개개의 포인트의 공간 위치를 식별하는 공간 정보를 포함함 -; 및
    압축된 포인트 클라우드를 생성하도록 구성된 인코더를 포함하고,
    상기 압축된 포인트 클라우드를 생성하기 위해, 상기 인코더는,
    상기 하나 이상의 센서들에 의해 캡처된, 캡처된 포인트 클라우드를 서브샘플링하도록 - 상기 서브샘플링된 포인트 클라우드는 상기 캡처된 포인트 클라우드보다 더 적은 포인트들을 포함함 -; 그리고
    상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해:
    상기 서브샘플링된 포인트 클라우드의 개개의 포인트와 상기 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 식별하도록; 그리고
    상기 위치를 상기 캡처된 포인트 클라우드와 비교한 것에 기초하여, 압축해제된 포인트 클라우드 내의 포인트가 상기 위치에서 포함되어야 하는지, 상기 위치에서 포함되어서는 안 되는지, 아니면 상기 위치에 대해 재위치되어야 하는지를 결정하도록; 그리고
    상기 압축된 포인트 클라우드에 대해, 데이터를 인코딩하도록 구성되고, 상기 데이터는,
    상기 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보; 및
    개개의 위치들 각각에 대해, 개개의 포인트가 상기 압축해제된 포인트 클라우드 내의 위치에서 포함되어야 하는지, 상기 위치에서 포함되어서는 안 되는지, 아니면 상기 위치에 대해 재위치되어야 하는지를 나타내는 데이터를 포함하는, 시스템.
  2. 제1항에 있어서, 상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해, 상기 인코더는,
    이웃 포인트들의 세트를 식별하도록 추가로 구성되고,
    상기 서브샘플링된 포인트 클라우드의 개개의 포인트와 상기 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 식별하는 것은, 상기 개개의 포인트와 상기 이웃 포인트들의 세트의 이웃 포인트들 중의 개개의 이웃 포인트들 사이의 위치를 식별하는 것을 포함하고,
    상기 위치를 상기 캡처된 포인트 클라우드와 비교한 것에 기초하여, 압축해제된 포인트 클라우드 내의 포인트가 상기 위치에서 포함되어야 하는지, 상기 위치에서 포함되어서는 안 되는지, 아니면 상기 위치에 대해 재위치되어야 하는지를 결정하는 것은, 상기 개개의 포인트와 상기 이웃 포인트들의 세트의 이웃 포인트들 중의 개개의 이웃 포인트들 사이의 개개의 위치들 각각에 대해 결정하는 것을 수행하는 것을 포함하는, 시스템.
  3. 제2항에 있어서, 상기 개개의 포인트에 대한 상기 이웃 포인트들의 세트에 포함되어야 하는 최근접 이웃 포인트들의 수는 상기 인코더에 의해 구성가능한 구성가능 파라미터이고,
    상기 인코더는, 상기 이웃 포인트들의 세트에 포함되어야 하는 최근접 이웃 포인트들의 수를 나타내는, 상기 압축된 포인트 클라우드 데이터에 대해 인코딩하도록 추가로 구성되고, 디코더는, 상기 압축해제된 포인트 클라우드를 생성할 때 상기 이웃 포인트들의 세트에 포함되어야 하는 최근접 이웃들의 수를 나타내는 상기 인코딩된 데이터를 사용하는, 시스템.
  4. 제3항에 있어서, 상기 이웃 포인트들의 세트를 식별하기 위해, 상기 인코더는, 상기 개개의 포인트로부터의 최소 거리보다 크고 상기 개개의 포인트로부터의 최대 거리보다 작은, 상기 개개의 포인트로부터의 거리에 있는 이웃 포인트들을 식별하도록 구성되고, 상기 최소 거리 및 상기 최대 거리는 상기 인코더에 의해 구성가능한 구성가능 파라미터들이고,
    상기 인코더는, 상기 최소 거리 및 상기 최대 거리를 나타내는, 상기 압축된 포인트 클라우드에 대한 데이터를 인코딩하도록 추가로 구성되고, 디코더는 상기 압축해제된 포인트 클라우드를 생성할 때 상기 최소 거리 및 상기 최대 거리를 나타내는 상기 인코딩된 데이터를 사용하는, 시스템.
  5. 제4항에 있어서, 상기 최근접 이웃 포인트들의 수, 상기 최소 거리, 및 상기 최대 거리는 사용자 구성가능 파라미터들인, 시스템.
  6. 제1항에 있어서, 상기 인코더는,
    상기 캡처된 포인트 클라우드를 상기 서브샘플링된 포인트들, 상기 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 상기 포인트들, 및 상기 압축해제된 포인트 클라우드에서 재위치되어야 한다고 결정된 상기 포인트들과 비교한 것에 기초하여, 하나 이상의 추가 포인트들이 상기 압축해제된 포인트 클라우드 내에 포함되어야 하는지의 여부를 결정하도록; 그리고
    상기 압축해제된 포인트 클라우드 내에 포함되어야 하는 상기 하나 이상의 추가 포인트들에 대한 공간 정보를 포함하는, 상기 압축된 포인트 클라우드에 대한 데이터를 인코딩하도록 추가로 구성되는, 시스템.
  7. 제1항에 있어서, 상기 인코더는,
    상기 압축해제된 포인트 클라우드 내에 포함되어야 하는 하나 이상의 포인트들 또는 상기 압축해제된 포인트 클라우드에서 재위치되어야 하는 하나 이상의 포인트들을 결정한 것에 후속하여, 상기 하나 이상의 포인트들 또는 하나 이상의 재위치되는 포인트들을 업데이트된 서브샘플링된 포인트 클라우드의 포인트들로서 상기 서브샘플링된 포인트 클라우드에 추가하도록; 그리고
    상기 업데이트된 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해:
    상기 업데이트된 서브샘플링된 포인트 클라우드의 개개의 포인트와 상기 업데이트된 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 식별하도록; 그리고
    상기 위치를 상기 캡처된 포인트 클라우드와 비교한 것에 기초하여, 압축해제된 포인트 클라우드 내의 포인트가 상기 위치에서 포함되어야 하는지, 상기 위치에서 포함되어서는 안 되는지, 아니면 상기 위치에 대해 재위치되어야 하는지를 결정하도록 추가로 구성되고,
    상기 압축된 포인트 클라우드에 대한 데이터를 인코딩하기 위해, 상기 인코더는, 하나 이상의 개개의 업데이트된 서브샘플링된 포인트 클라우드들 각각의 개개의 위치들에 대해, 개개의 포인트가 상기 압축해제된 포인트 클라우드 내의 개개의 위치에서 포함되어야 하는지, 상기 개개의 위치에서 포함되어서는 안 되는지, 아니면 상기 개개의 위치에 대해 재위치되어야 하는지를 나타내는 데이터를 포함하는 데이터를 인코딩하도록 구성되는, 시스템.
  8. 압축된 포인트 클라우드를 생성하는 방법으로서,
    포인트 클라우드를 서브샘플링하는 단계 - 상기 서브샘플링된 포인트 클라우드는 상기 포인트 클라우드보다 더 적은 포인트들을 포함함 -; 및
    상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해:
    상기 서브샘플링된 포인트 클라우드의 개개의 포인트와 상기 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 상기 서브샘플링하는 단계 이전의 포인트 클라우드와 비교하는 단계; 및
    상기 비교에 기초하여:
    포인트가 압축해제된 포인트 클라우드 내의 위치에서 포함되어야 하는지, 상기 위치에서 포함되어서는 안 되는지, 아니면 상기 위치에 대해 재위치되어야 하는지를 결정하는 단계; 및
    상기 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보를 포함하는 데이터, 및 개개의 위치들 각각에 대해, 개개의 포인트가 압축해제된 포인트 클라우드 내의 위치에서 포함되어야 하는지, 상기 위치에서 포함되어서는 안 되는지, 아니면 상기 위치에 대해 재위치되어야 하는지를 나타내는 데이터를 인코딩하는 단계를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해, 이웃 포인트들의 세트를 식별하는 단계를 추가로 포함하고,
    상기 서브샘플링된 포인트 클라우드의 개개의 포인트와 상기 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 식별하는 상기 단계는, 상기 개개의 포인트와 상기 이웃 포인트들의 세트의 이웃 포인트들 각각 사이의 위치를 식별하는 단계를 포함하는, 방법.
  10. 제9항에 있어서, 상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들 각각에 대해, 이웃 포인트들의 세트를 식별하는 상기 단계는,
    상기 개개의 포인트로부터의 최소 거리보다 크고 상기 개개의 포인트로부터의 최대 거리보다 작은, 상기 개개의 포인트로부터의 거리에 있는 하나 이상의 이웃 포인트들을 식별하는 단계를 포함하고, 상기 최소 거리 및 상기 최대 거리는 인코더에 의해 구성가능한 구성가능 파라미터들인, 방법.
  11. 제8항에 있어서,
    상기 서브샘플링된 포인트 클라우드 및 상기 압축해제된 포인트 클라우드 내에 포함되어야 하거나 상기 압축해제된 포인트 클라우드에서 재위치되어야 한다고 결정된 포인트들에 기초하여, 하나 이상의 추가 포인트들이 상기 압축해제된 포인트 클라우드 내에 포함되어야 하는지를 결정하는 단계; 및
    상기 압축해제된 포인트 클라우드 내에 포함되어야 하는 상기 추가 포인트들에 대한 공간 정보를 포함하는, 상기 압축된 포인트 클라우드에 대한 데이터를 인코딩하는 단계를 추가로 포함하는, 방법.
  12. 제8항에 있어서,
    인코더에서, 손실 압축 알고리즘에 따라 상기 서브샘플링된 포인트 클라우드를 인코딩하는 단계; 및
    상기 인코더에서, 상기 손실 압축 알고리즘에 따라 인코딩된 상기 서브샘플링된 포인트 클라우드를 디코딩하여, 상기 인코더에서 대표적인 디코딩된 서브샘플링된 포인트 클라우드를 생성하는 단계를 추가로 포함하고,
    상기 서브샘플링된 포인트 클라우드의 개개의 포인트와 상기 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 서브샘플링하는 단계 이전의 포인트 클라우드와 비교하는 상기 단계는, 상기 인코더에서 상기 대표적인 디코딩된 서브샘플링된 포인트 클라우드의 개개의 포인트 및 이웃 포인트를 사용하여 수행되는, 방법.
  13. 제8항에 있어서, 포인트가 압축해제된 포인트 클라우드 내의 개개의 위치에 대해 재위치되어야 하는지의 여부를 나타내는 데이터를 인코딩하는 상기 단계는,
    상기 위치에 대한 상기 개개의 포인트에 대한 X, Y, 또는 Z 방향으로의 이동을 나타내는 데이터를 인코딩하는 단계를 포함하는, 방법.
  14. 제8항에 있어서, 포인트가 압축해제된 포인트 클라우드 내의 개개의 위치에 대해 재위치되어야 하는지의 여부를 나타내는 데이터를 인코딩하는 상기 단계는,
    상기 개개의 위치에서 상기 서브샘플링된 포인트 클라우드의 표면에 수직인 법선 벡터와 상기 포인트가 재위치될 때 상기 서브샘플링된 포인트 클라우드의 표면에 수직인 법선 벡터 사이의 차이를 나타내는 스칼라 값을 인코딩하는 단계를 포함하고, 디코더는 상기 스칼라 값 및 상기 개개의 위치에서의 서브샘플링된 포인트 클라우드의 표면에 대한 상기 법선 벡터에 기초하여 재위치된 중점(midpoint)의 위치를 결정하는, 방법.
  15. 프로그램 명령어들을 저장하는 비일시적 컴퓨터 판독가능 매체로서,
    상기 프로그램 명령어들은, 하나 이상의 프로세서들에 의해 실행될 때, 상기 하나 이상의 프로세서들로 하여금,
    압축된 포인트 클라우드를 수신하도록 - 상기 압축된 포인트 클라우드는 서브샘플링된 포인트 클라우드의 포인트들에 대한 공간 정보, 및 상기 서브샘플링된 포인트 클라우드의 개개의 포인트들과 상기 서브샘플링된 포인트 클라우드 내의 개개의 이웃 포인트들 사이의 복수의 개개의 위치들 각각에 대해, 포인트가 압축해제된 포인트 클라우드 내의 개개의 위치에서 포함되어야 하는지, 상기 개개의 위치에서 포함되어서는 안 되는지, 아니면 상기 개개의 위치에 대해 재위치되어야 하는지를 나타내는 데이터를 포함함 -;
    상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해:
    상기 개개의 포인트와 상기 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 개개의 위치를 식별하도록; 그리고
    상기 수신된 압축된 포인트 클라우드 내에 포함된 상기 데이터에 기초하여, 상기 개개의 위치에서 포인트를 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지를 결정하도록; 그리고
    상기 압축해제된 포인트 클라우드를 생성하도록 구성된 디코더를 구현하게 하고, 상기 압축해제된 포인트 클라우드는 상기 서브샘플링된 포인트 클라우드의 포인트들, 및 상기 개개의 위치들에서 포함되어야 하거나 상기 개개의 위치들에 대해 재위치되어야 한다고 결정된 상기 개개의 포인트들을 포함하는, 비일시적 컴퓨터 판독가능 매체.
  16. 제15항에 있어서, 상기 압축된 포인트 클라우드는 상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대한 최근접 이웃들의 세트에 포함되어야 하는 최근접 이웃들의 수를 나타내는 데이터를 추가로 포함하고,
    상기 디코더는,
    상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해:
    이웃 포인트들의 세트를 식별하도록 - 상기 세트는 나타낸 수의 최근접 이웃들을 포함함 -;
    상기 개개의 포인트와 상기 이웃 포인트들의 세트의 이웃 포인트들 각각 사이의 위치를 식별하도록; 그리고
    상기 수신된 압축된 포인트 클라우드 내에 포함된 상기 데이터에 기초하여, 상기 개개의 포인트와 상기 이웃 포인트들의 세트의 이웃 포인트들 각각 사이의 위치들 각각에서 포인트를 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지를 결정하도록 추가로 구성되는, 비일시적 컴퓨터 판독가능 매체.
  17. 제16항에 있어서, 상기 압축된 포인트 클라우드는 상기 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대한 상기 최근접 이웃들의 세트에 포함되어야 하는 최근접 이웃들에 대한, 상기 개개의 포인트로부터의 최소 거리 및 상기 개개의 포인트로부터의 최대 거리를 나타내는 데이터를 추가로 포함하고,
    상기 이웃 포인트들의 세트에 포함되어야 한다고 식별된 상기 이웃 포인트들은, 상기 최소 거리보다 크고 상기 최대 거리보다 작은, 상기 개개의 포인트로부터의 거리에 위치되는, 비일시적 컴퓨터 판독가능 매체.
  18. 제15항에 있어서, 상기 압축된 포인트 클라우드는 개개의 포인트와 고려되어야 하는 이웃 포인트 사이의 위치에 대한, 개개의 포인트로부터의 최소 거리를 나타내는 데이터를 추가로 포함하고, 개개의 포인트로부터의 최소 거리보다 작은 위치들은 상기 압축해제된 포인트 클라우드 내의 위치에서의 포인트의 포함에 대해 추가로 평가되지 않는, 비일시적 컴퓨터 판독가능 매체.
  19. 제15항에 있어서, 상기 압축된 포인트 클라우드는 개개의 포인트와 이웃 포인트 사이의 특정 위치에 대해 스칼라 위치 보정 값을 나타내는 데이터를 추가로 포함하고,
    상기 인코더는,
    상기 서브샘플링된 포인트 클라우드의 표면에 대한 법선 벡터를 결정하도록; 그리고
    상기 스칼라 값과 상기 결정된 법선 벡터의 내적(dot product)에 기초하여 상기 특정 위치에 대해 재위치된 상기 포인트에 대한 위치를 결정하도록 구성되는, 비일시적 컴퓨터 판독가능 매체.
  20. 제15항에 있어서, 상기 디코더는,
    상기 압축해제된 포인트 클라우드 내에 포함되어야 한다고 결정된 상기 포인트들을 상기 서브샘플링된 포인트 클라우드에 추가하여, 업데이트된 서브샘플링된 포인트 클라우드를 생성하도록; 그리고
    상기 업데이트된 서브샘플링된 포인트 클라우드의 포인트들 중의 개개의 포인트들에 대해:
    상기 개개의 포인트와 상기 업데이트된 서브샘플링된 포인트 클라우드 내의 이웃 포인트 사이의 위치를 결정하도록; 그리고
    상기 수신된 압축된 포인트 클라우드 내에 포함된 상기 데이터에 기초하여, 상기 압축해제된 포인트 클라우드 내의 위치에서 포인트를 포함시켜야 하는지, 포함시켜서는 안 되는지, 아니면 재위치시켜야 하는지를 결정하도록 추가로 구성되고,
    상기 압축된 포인트 클라우드는 상기 압축해제된 포인트 클라우드를 생성할 때 수행되어야 하는, 서브샘플링된 포인트 클라우드를 업데이트하는 반복들의 수를 나타내는 데이터를 포함하는, 비일시적 컴퓨터 판독가능 매체.
KR1020207006750A 2017-09-06 2018-09-05 포인트 클라우드 기하학적 압축 KR102362066B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020227004241A KR102513867B1 (ko) 2017-09-06 2018-09-05 포인트 클라우드 기하학적 압축

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762555003P 2017-09-06 2017-09-06
US62/555,003 2017-09-06
US16/121,501 2018-09-04
US16/121,501 US10462485B2 (en) 2017-09-06 2018-09-04 Point cloud geometry compression
PCT/US2018/049523 WO2019050931A1 (en) 2017-09-06 2018-09-05 COMPRESSION OF THE GEOMETRY OF A POINT CLOUD

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020227004241A Division KR102513867B1 (ko) 2017-09-06 2018-09-05 포인트 클라우드 기하학적 압축

Publications (2)

Publication Number Publication Date
KR20200035133A true KR20200035133A (ko) 2020-04-01
KR102362066B1 KR102362066B1 (ko) 2022-02-14

Family

ID=65518420

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020207006750A KR102362066B1 (ko) 2017-09-06 2018-09-05 포인트 클라우드 기하학적 압축
KR1020227004241A KR102513867B1 (ko) 2017-09-06 2018-09-05 포인트 클라우드 기하학적 압축

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020227004241A KR102513867B1 (ko) 2017-09-06 2018-09-05 포인트 클라우드 기하학적 압축

Country Status (5)

Country Link
US (3) US10462485B2 (ko)
KR (2) KR102362066B1 (ko)
CN (2) CN111052189B (ko)
DE (1) DE112018004878T5 (ko)
WO (1) WO2019050931A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021210743A1 (ko) * 2020-04-14 2021-10-21 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2022005116A1 (ko) * 2020-06-29 2022-01-06 삼성전자 주식회사 무선 통신 시스템에서 데이터의 송수신을 제어하기 위한 방법 및 장치
KR20220067938A (ko) * 2020-11-18 2022-05-25 광운대학교 산학협력단 포인트 클라우드 압축 방법

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10462485B2 (en) 2017-09-06 2019-10-29 Apple Inc. Point cloud geometry compression
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10438413B2 (en) * 2017-11-07 2019-10-08 United States Of America As Represented By The Secretary Of The Navy Hybrid 2D/3D data in a virtual environment
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
US11367224B2 (en) 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
CN109889840B (zh) * 2019-03-20 2022-11-22 北京大学深圳研究生院 点云编码和解码的方法、编码设备和解码设备
KR20230152815A (ko) * 2019-03-21 2023-11-03 엘지전자 주식회사 포인트 클라우드 데이터 부호화 장치, 포인트 클라우드 데이터 부호화 방법, 포인트 클라우드 데이터 복호화 장치 및 포인트 클라우드 데이터 복호화 방법
KR102596003B1 (ko) * 2019-03-21 2023-10-31 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신장치 및 포인트 클라우드 데이터 수신 방법
CN113455007B (zh) * 2019-03-22 2023-12-22 腾讯美国有限责任公司 帧间点云属性编解码的方法和装置
WO2020197086A1 (ko) * 2019-03-25 2020-10-01 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
CN111684804B (zh) * 2019-04-30 2022-05-13 深圳市大疆创新科技有限公司 一种数据编码、数据解码方法、设备及存储介质
CN110211040B (zh) * 2019-04-30 2022-10-21 国网河南省电力公司电力科学研究院 一种基于权值的点云压缩方法和装置
GB2584119B (en) * 2019-05-22 2022-11-02 Sony Interactive Entertainment Inc Content coding system and method
WO2020246689A1 (ko) * 2019-06-05 2020-12-10 엘지전자 주식회사 포인트 클라우드 데이터 전송 장치, 포인트 클라우드 데이터 전송 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN111699683B (zh) * 2019-06-13 2022-05-17 深圳市大疆创新科技有限公司 一种点云编码方法、点云解码方法及相关设备
US11711544B2 (en) 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
WO2021025392A1 (ko) * 2019-08-02 2021-02-11 엘지전자 주식회사 포인트 클라우드 데이터 처리 장치 및 방법
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
US11475605B2 (en) 2020-01-09 2022-10-18 Apple Inc. Geometry encoding of duplicate points
EP4101173A1 (en) * 2020-02-06 2022-12-14 PCMS Holdings, Inc. 3d point cloud enhancement with multiple measurements
WO2021246796A1 (ko) * 2020-06-05 2021-12-09 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US11615557B2 (en) 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
CN114598892B (zh) * 2020-12-07 2024-01-30 腾讯科技(深圳)有限公司 点云数据编码方法、解码方法、装置、设备及存储介质
TWI744147B (zh) 2020-12-24 2021-10-21 財團法人工業技術研究院 可動式機械的動作測試方法與控制主機
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
CN113219493B (zh) * 2021-04-26 2023-08-25 中山大学 一种基于三维激光雷达传感器的端到端点云数据压缩方法
EP4330920A1 (en) * 2021-04-29 2024-03-06 Interdigital Patent Holdings, Inc. Learning-based point cloud compression via tearing transform
WO2023272730A1 (en) * 2021-07-02 2023-01-05 Beijing Xiaomi Mobile Software Co., Ltd. Method for encoding and decoding a point cloud
US11544419B1 (en) 2021-07-26 2023-01-03 Pointlab, Inc. Subsampling method for converting 3D scan data of an object for marine, civil, and architectural works into smaller densities for processing without CAD processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110010400A1 (en) * 2009-07-13 2011-01-13 Celartem, Inc. Lidar point cloud compression
US20110216063A1 (en) * 2010-03-08 2011-09-08 Celartem, Inc. Lidar triangular network compression
US20150268058A1 (en) * 2014-03-18 2015-09-24 Sri International Real-time system for multi-modal 3d geospatial mapping, object recognition, scene annotation and analytics
US20160047903A1 (en) * 2014-08-15 2016-02-18 US LADAR, Inc. Ladar Point Cloud Compression
US20170347122A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Scalable point cloud compression with transform, and corresponding decompression

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7224731B2 (en) * 2002-06-28 2007-05-29 Microsoft Corporation Motion estimation/compensation for screen capture video
US8179393B2 (en) * 2009-02-13 2012-05-15 Harris Corporation Fusion of a 2D electro-optical image and 3D point cloud data for scene interpretation and registration performance assessment
US8731313B2 (en) * 2009-03-23 2014-05-20 Level Set Systems, Inc. Method and apparatus for accurate compression and decompression of three-dimensional point cloud data
GB2477368B (en) 2010-10-11 2011-12-14 Visual Technology Services Ltd Triangle mesh compression
WO2014171988A2 (en) * 2013-01-29 2014-10-23 Andrew Robert Korb Methods for analyzing and compressing multiple images
US9530225B1 (en) * 2013-03-11 2016-12-27 Exelis, Inc. Point cloud data processing for scalable compression
US9796400B2 (en) * 2013-11-27 2017-10-24 Solfice Research, Inc. Real time machine vision and point-cloud analysis for remote sensing and vehicle control
US9633483B1 (en) * 2014-03-27 2017-04-25 Hrl Laboratories, Llc System for filtering, segmenting and recognizing objects in unconstrained environments
US9734595B2 (en) 2014-09-24 2017-08-15 University of Maribor Method and apparatus for near-lossless compression and decompression of 3D meshes and point clouds
US20170214943A1 (en) 2016-01-22 2017-07-27 Mitsubishi Electric Research Laboratories, Inc. Point Cloud Compression using Prediction and Shape-Adaptive Transforms
US10482196B2 (en) 2016-02-26 2019-11-19 Nvidia Corporation Modeling point cloud data using hierarchies of Gaussian mixture models
DE102016106472A1 (de) 2016-04-08 2017-10-12 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Verfahren zum Regeln einer Leistungselektronik
US10223810B2 (en) * 2016-05-28 2019-03-05 Microsoft Technology Licensing, Llc Region-adaptive hierarchical transform and entropy coding for point cloud compression, and corresponding decompression
CN106504275B (zh) * 2016-10-12 2019-03-05 杭州深瞳科技有限公司 一种惯性定位与点云配准耦合互补的实时三维重建方法
US10462485B2 (en) 2017-09-06 2019-10-29 Apple Inc. Point cloud geometry compression

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110010400A1 (en) * 2009-07-13 2011-01-13 Celartem, Inc. Lidar point cloud compression
US20110216063A1 (en) * 2010-03-08 2011-09-08 Celartem, Inc. Lidar triangular network compression
US20150268058A1 (en) * 2014-03-18 2015-09-24 Sri International Real-time system for multi-modal 3d geospatial mapping, object recognition, scene annotation and analytics
US20160047903A1 (en) * 2014-08-15 2016-02-18 US LADAR, Inc. Ladar Point Cloud Compression
US20170347122A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Scalable point cloud compression with transform, and corresponding decompression

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021210743A1 (ko) * 2020-04-14 2021-10-21 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US11483363B2 (en) 2020-04-14 2022-10-25 Lg Electronics Inc. Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method
WO2022005116A1 (ko) * 2020-06-29 2022-01-06 삼성전자 주식회사 무선 통신 시스템에서 데이터의 송수신을 제어하기 위한 방법 및 장치
KR20220067938A (ko) * 2020-11-18 2022-05-25 광운대학교 산학협력단 포인트 클라우드 압축 방법

Also Published As

Publication number Publication date
US20200053391A1 (en) 2020-02-13
US10869059B2 (en) 2020-12-15
US20200275125A1 (en) 2020-08-27
US10659816B2 (en) 2020-05-19
WO2019050931A1 (en) 2019-03-14
US20190075320A1 (en) 2019-03-07
KR102362066B1 (ko) 2022-02-14
CN111052189B (zh) 2023-12-15
KR20220025157A (ko) 2022-03-03
CN117808967A (zh) 2024-04-02
US10462485B2 (en) 2019-10-29
KR102513867B1 (ko) 2023-03-23
CN111052189A (zh) 2020-04-21
DE112018004878T5 (de) 2020-06-18

Similar Documents

Publication Publication Date Title
KR102362066B1 (ko) 포인트 클라우드 기하학적 압축
US11132818B2 (en) Predicting attributes for point cloud compression according to a space filling curve
US11538196B2 (en) Predictive coding for point cloud compression
US11454710B2 (en) Point cloud compression using a space filling curve for level of detail generation
US11895307B2 (en) Block-based predictive coding for point cloud compression
US11450031B2 (en) Significant coefficient flag encoding for point cloud attribute compression
US11475605B2 (en) Geometry encoding of duplicate points
KR102317576B1 (ko) 포인트 클라우드 압축
CN115918088A (zh) 使用具有切片的八叉树的点云压缩
US20230046917A1 (en) In-tree geometry quantization of point clouds
US11887345B2 (en) Predictive coding for point cloud compression
US11418769B1 (en) Viewport adaptive volumetric content streaming and/or rendering
CN115088017A (zh) 点云的树内几何量化

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