KR20210142013A - 비디오 기반 포인트 클라우드 압축에서 싱글 패스 경계 검출 - Google Patents

비디오 기반 포인트 클라우드 압축에서 싱글 패스 경계 검출 Download PDF

Info

Publication number
KR20210142013A
KR20210142013A KR1020217037186A KR20217037186A KR20210142013A KR 20210142013 A KR20210142013 A KR 20210142013A KR 1020217037186 A KR1020217037186 A KR 1020217037186A KR 20217037186 A KR20217037186 A KR 20217037186A KR 20210142013 A KR20210142013 A KR 20210142013A
Authority
KR
South Korea
Prior art keywords
pixels
frame
pixel
point cloud
layer
Prior art date
Application number
KR1020217037186A
Other languages
English (en)
Inventor
호세인 나자프자데-아즈간디
마두카르 부다가비
라잔 락스만 조시
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20210142013A publication Critical patent/KR20210142013A/ko

Links

Images

Classifications

    • 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/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
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • 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/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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/184Methods 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 bits, e.g. of the compressed video stream
    • 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/20024Filtering details
    • G06T2207/20028Bilateral filtering
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2021Shape modification

Abstract

본 개시는 IOT(Internet of Things) 기술을 이용하여 4G(4th-Generation) 시스템보다 높은 데이터 전송률을 지원하는 5G 통신 시스템을 컨버징하기 위한 통신 방법 및 시스템에 관한 것이다. 본 개시는 스마트 홈, 스마트 빌딩, 스마트 시티, 스마트 카, 커넥티드 카, 헬스 케어, 디지털 교육, 스마트 소매, 보안 및 안전 서비스들과 같은 IoT 관련 기술 및 5G 통신 기술에 기반한 지능형 서비스들에 적용될 수 있다. 디코딩 장치는 비트스트림을 수신하도록 구성되는 통신 인터페이스, 및 비트스트림으로부터 제 1 프레임, 제 2 프레임 및 점유 맵 프레임을 디코딩하고, 제 1 프레임, 제 2 프레임 및 점유 맵 프레임을 사용하여 3D 포인트 클라우드를 재구성하고, 점유 맵 프레임의 싱글 패스를 수행하여 재구성된 3D 포인트 클라우드의 포인트들을 식별하도록 구성되는 프로세서를 포함한다.

Description

비디오 기반 포인트 클라우드 압축에서 싱글 패스 경계 검출
본 개시는 일반적으로 멀티미디어 데이터에 관한 것이다. 보다 구체적으로, 본 개시는 포인트 클라우드를 압축 및 압축 해제하기 위한 장치 및 방법에 관한 것이다.
4G 통신 시스템 구축 이후 증가하는 무선 데이터 트래픽에 대한 수요를 충족하기 위해 개선된 5G 또는 pre-5G 통신 시스템을 개발하기 위한 노력이 이루어지고 있다. 이러한 이유로, 5G 또는 pre-5G 통신 시스템은 '비욘드(Beyond) 4G 네트워크' 또는 '포스트(Post) LTE 시스템'이라 불리어지고 있다. 더 높은 데이터 전송률을 달성하기 위해, 5G 통신 시스템은 초고주파(mmWave) 대역(예를 들어, 60GHz 대역)에서의 구현이 고려되고 있다. 무선파의 전파 손실을 줄이고 송신 거리를 늘리기 위해, 5G 통신 시스템에서는 빔포밍(beamforming), 거대 배열 다중 입출력(massive MIMO), 전차원 다중입출력(Full Dimensional MIMO, FD-MIMO), 어레이 안테나(array antenna), 아날로그 빔포밍(analog beam forming), 및 대규모 안테나(large scale antenna) 기술들이 논의되고 있다. 또한, 시스템 네트워크 개선을 위해, 5G 통신 시스템에서는 개선된 소형 셀(advanced small cell), 클라우드 무선 액세스 네트워크(cloud radio access network, cloud RAN), 초고밀도 네트워크(ultra-dense network), D2D(device-to-device) 통신, 무선 백홀(wireless backhaul), 이동 네트워크, 협력 통신, CoMP(Coordinated Multi-Points), 및 수신단 간섭 제거 등의 기술 개발이 이루어지고 있다. 5G 시스템에서는, 진보된 코딩 변조(advanced coding modulation, ACM) 기술인 FQAM(hybrid frequency shift keying and quadrature amplitude modulation) 및 SWSC(sliding window superposition coding)와, 진보된 액세스 기술인 FBMC(filter bank multi carrier), NOMA(non-orthogonal multiple access), 및 SCMA(sparse code multiple access) 등이 개발되고 있다.
인간이 정보를 생성하고 소비하는 인간 중심의 연결 네트워크인 인터넷은 이제 사물과 같은 분산된 엔티티들이 인간의 개입없이 정보를 교환하고 처리하는 IOT(Internet of Things)로 진화하고 있다. 클라우드 서버와의 연결을 통해 IoT 기술과 빅 데이터 처리 기술이 결합된 IoE(Internet of Everything)가 등장했다. IoT 구현을 위한 "센싱 기술", "유/무선 통신 및 네트워크 인프라스트럭처", "서비스 인터페이스 기술" 및 "보안 기술"과 같은 기술 요소들이 요구됨에 따라 센서 네트워크, M2M(Machine-to-Machine) 통신, MTC(Machine Type Communication) 등이 최근 연구되고 있다. 이러한 IoT 환경은 연결된 사물들간에 생성되는 데이터를 수집하고 분석함으로써 인간의 삶에 새로운 가치를 창출하는 지능형 인터넷 기술 서비스를 제공할 수 있다. IoT는 기존의 정보 기술(IT)과 다양한 산업 응용들 간의 융합 및 결합을 통해 스마트 홈, 스마트 빌딩, 스마트 시티, 스마트 카 또는 커넥티드 카, 스마트 그리드, 헬스 케어, 스마트 가전 및 고급 의료 서비스 등의 다양한 분야에 적용될 수 있다.
이에 따라, 5G 통신 시스템을 IoT 네트워크에 적용하기 위한 다양한 시도가 이루어지고 있다. 예를 들어, 센서 네트워크, MTC(Machine Type Communication) 및 M2M(Machine-to-Machine) 통신과 같은 기술은 빔포밍, MIMO 및 어레이 안테나로 구현될 수 있다. 또한, 전술한 빅 데이터 처리 기술로서 클라우드 RAN(Radio Access Network)의 응용은 5G 기술과 IoT 기술 간의 컨버전스의 예로 간주될 수 있다.
360도(360°) 비디오는 스마트 폰과 같은 강력한 핸드 헬드 장치를 즉시 사용할 수 있기 때문에 몰입형 비디오를 경험하는 새로운 방법으로 떠오르고 있다. 360° 비디오는 세계의 360°보기를 캡처하여 소비자에게 몰입감 있는 "실제" "실감"경험을 제공한다. 사용자는 대화식으로 관점을 변경하고 캡처 한 장면 또는 원하는 개체의 모든 부분을 동적으로 볼 수 있다. 디스플레이 및 내비게이션 센서는 사용자의 머리 움직임을 실시간으로 추적하여 사용자가 보고자 하는 360° 비디오 영역을 결정할 수 있다. 몰입형 환경에서는 포인트 클라우드와 같이 본질적으로 3 차원(3D)인 멀티미디어 데이터를 사용할 수 있다.
포인트 클라우드는 객체를 나타내는 3D 공간의 포인트 세트이다. 포인트 클라우드는 게임, 3D 지도, 시각화, 의료 애플리케이션, 증강 현실, 가상 현실, 자율 주행, 멀티 뷰 재생, 6DoF 몰입형 미디어와 같은 다양한 애플리케이션에서 일반적이다. 압축되지 않은 경우 포인트 클라우드는 일반적으로 송신을 위해 많은 양의 대역폭을 필요로 한다. 큰 비트 송신률 요구 사항으로 인해 포인트 클라우드는 종종 송신 전에 압축된다. 포인트 클라우드와 같은 3D 객체를 압축하려면 종종 특수 하드웨어가 필요하다. 3D 포인트 클라우드를 압축하는 특수 하드웨어를 피하기 위해 3D 포인트 클라우드를 기존의 2 차원(2D) 프레임으로 조작할 수 있으며 이를 압축한 후 나중에 재구성하여 사용자가 볼 수 있다. 2D 프레임을 압축 및 압축 해제하면 포인트 클라우드의 시각적 품질을 저하시키는 아티팩트가 생성될 수 있다.
본 개시는 비디오 기반 포인트 클라우드 압축에서 싱글 패스(single-pass) 경계 검출을 제공한다.
일 실시예에서, 포인트 클라우드 디코딩을 위한 디코딩 장치가 제공된다. 디코딩 장치는 통신 인터페이스 및 프로세서를 포함한다. 통신 인터페이스는 비트스트림을 수신하도록 구성된다. 프로세서는 픽셀들을 포함하는 제 1 프레임을 비트스트림으로부터 디코딩하도록 구성된다. 제 1 프레임의 픽셀들 중 일부는 3D 포인트 클라우드의 포인트들의 각각의 클러스터들에 대응하는 패치(patch)들로 구성되는 3D 포인트 클라우드의 포인트들의 기하학적 위치를 나타낸다. 프로세서는 또한 픽셀들을 포함하는 제 2 프레임을 비트스트림으로부터 디코딩하도록 구성된다. 제 2 프레임의 픽셀들 중 일부는 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내며, 제 2 프레임에서 픽셀들의 위치들은 제 1 프레임에서 픽셀들의 위치들에 대응한다. 프로세서는 비트스트림으로부터 점유 맵 프레임을 디코딩하도록 더 구성된다. 점유 맵 프레임은 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타내는 제 1 프레임의 픽셀들의 부분과 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내는 제 2 프레임의 픽셀들의 부분을 식별하는 픽셀들을 포함한다. 또한, 프로세서는 제 1 프레임, 제 2 프레임 및 점유 맵 프레임을 사용하여 3D 포인트 클라우드를 재구성하도록 구성된다. 프로세서는 또한 점유 맵 프레임의 싱글 패스를 수행하여, 점유 맵 프레임 내의 픽셀들의 값에 기초하여, 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 제 1 프레임 및 제 2 프레임의 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별하도록 구성된다.
다른 실시예에서, 포인트 클라우드 디코딩을 위한 방법이 제공된다. 이 방법은 비트스트림을 수신하는 단계를 포함한다. 이 방법은 또한 픽셀들을 포함하는 제 1 프레임을 비트스트림으로부터 디코딩하는 단계를 포함한다. 제 1 프레임의 픽셀들 중 일부는 3D 포인트 클라우드의 포인트들의 각각의 클러스터들에 대응하는 패치들로 구성되는 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타낸다. 이 방법은 픽셀들을 포함하는 제 2 프레임을 비트스트림으로부터 디코딩하는 단계를 추가로 포함한다. 제 2 프레임의 픽셀들 중 일부는 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내며, 제 2 프레임에서 픽셀들의 위치는 제 1 프레임에서 픽셀들의 각 위치에 대응한다. 이 방법은 비트스트림으로부터 점유 맵 프레임을 디코딩하는 단계를 더 포함한다. 점유 맵 프레임은 3D 포인트 클라우드의 포인트들의 기하학적 위치를 나타내는 제 1 프레임의 픽셀들의 부분과 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내는 제 2 프레임의 픽셀들의 부분을 식별하는 픽셀들을 포함한다. 또한, 이 방법은 제 1 프레임, 제 2 프레임 및 점유 맵 프레임을 이용하여 3D 포인트 클라우드를 재구성하는 단계를 포함한다. 이 방법은 또한 점유 맵 프레임의 싱글 패스를 수행하여, 점유 맵 프레임 내의 픽셀들의 값에 기초하여, 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 제 1 프레임 및 제 2 프레임의 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별하는 단계를 포함한다.
또 다른 실시예에서, 포인트 클라우드 인코딩을 위한 인코딩 장치가 제공된다. 인코딩 장치는 통신 인터페이스와 프로세서를 포함한다. 프로세서는 3D 포인트 클라우드에 대해, 제 1 프레임 및 제 2 프레임을 생성하도록 구성된다. 제 1 프레임은 픽셀들을 포함하며, 여기서 픽셀들의 일부는 3D 포인트 클라우드의 포인트들의 각각의 클러스터들에 대응하는 패치들로 구성되는 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타낸다. 제 2 프레임은 픽셀들을 포함하며, 여기서 제 2 프레임의 픽셀들 중 일부는 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타낸다. 제 2 프레임에서 픽셀들의 위치들은 제 1 프레임에서 픽셀들의 각 위치들에 대응한다. 프로세서는 점유 맵 프레임을 생성하도록 더 구성된다. 점유 맵 프레임은 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타내는 제 1 프레임의 픽셀들의 부분 및 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내는 제 2 프레임의 픽셀들의 부분을 식별하는 픽셀들을 포함한다. 프로세서는 제 1 프레임을 인코딩하여 지오메트리 서브-스트림을 생성하고, 제 2 프레임을 인코딩하여 어트리뷰트 서브-스트림을 생성하고, 점유 맵 프레임을 인코딩하여 점유 맵 서브-스트림을 생성하도록 추가로 구성된다. 지오메트리 서브-스트림, 어트리뷰트 서브-스트림 및 점유 맵 서브-스트림을 디코딩한 것에 응답하여, 프로세서는 제 1 프레임, 제 2 프레임 및 점유 맵 프레임을 사용하여 3D 포인트 클라우드를 재구성하도록 구성된다. 추가적으로, 프로세서는 점유 맵 프레임의 싱글 패스를 수행하여, 점유 맵 프레임 내의 픽셀들의 값에 기초하여, 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 제 1 프레임 및 제 2 프레임의 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별하도록 구성된다. 프로세서는 지오메트리 서브-스트림, 어트리뷰트 서브-스트림 및 점유 맵 서브-스트림을 결합하여 비트스트림을 생성하도록 더 구성된다. 통신 인터페이스는 비트스트림을 송신하도록 구성된다.
다른 기술적 특징은 다음의 도면, 설명 및 청구 범위로부터 당업자에게 쉽게 명백해질 수 있다.
본 개시의 실시예들은 송신된 이후에 렌더링을 위해 포인트 클라우드로 재구성될 수 있는 2D 표현으로 포인트 클라우드를 변환하기 위한 시스템 및 방법을 제공한다.
본 개시 및 그 이점의 보다 완전한 이해를 위해, 첨부된 도면과 관련하여 취해진 다음 설명을 참조하도록 하며, 여기서 유사한 참조 번호는 유사한 부분을 나타낸다.
도 1은 본 개시의 일 실시예에 따른 예시적인 통신 시스템을 도시한 것이다.
도 2 및 도 3은 본 개시의 일 실시예에 따른 예시적인 전자 장치를 도시한 것이다.
도 4a는 본 개시의 일 실시예에 따른 예시적인 3D 포인트 클라우드를 도시한 것이다.
도 4b는 본 개시의 일 실시예에 따른 다중 프로젝션 평면에 의해 둘러싸인 포인트 클라우드의 다이어그램을 도시한 것이다.
도 4c 및 도 4d는 본 개시의 일 실시예에 따른 도 4a의 3D 포인트 클라우드를 나타내는 패치들을 포함하는 예시적인 2D 프레임들을 도시한 것이다.
도 4e는 본 개시의 일 실시예에 따른 재구성된 3D 포인트 클라우드에서의 예시적인 컬러 아티팩트를 도시한 것이다.
도 5a는 본 개시의 일 실시예에 따른 예시적인 환경 아키텍처의 블록도를 도시한 것이다.
도 5b는 본 개시의 일 실시예에 따른 인코더의 예시적인 블록도를 도시한 것이다.
도 5c는 본 개시의 일 실시예에 따른 디코더의 예시적인 블록도를 도시한 것이다.
도 6a는 본 개시의 일 실시예에 따른 단일 쿼리 픽셀 주변의 경계 포인트들을 식별하기 위한 예시적인 방법을 도시한 것이다.
도 6b는 본 개시의 일 실시예에 따른 단일 쿼리 픽셀 주위의 경계 포인트들을 식별하기 위한 예시적인 방법을 도시한 것이다.
도 6c는 본 개시의 일 실시예에 따른 경계 포인트들을 식별하기 위한 예시적인 방법을 도시한 것이다.
도 7a는 본 개시의 일 실시예에 따른 경계 포인트들을 식별하기 위한 예시적인 슬라이딩 윈도우를 도시한 것이다.
도 7b는 본 개시의 일 실시예에 따른 패치를 포함하는 점유 맵의 예시적인 부분을 도시한 것이다.
도 7c 내지 도 7m은 본 개시의 일 실시예에 따라 경계 포인트들을 식별하기 위해 점유 맵을 통해 슬라이딩 윈도우를 이동함으로써 경계 포인트들을 식별하는 예시적인 프로세스를 도시한 것이다.
도 8은 본 개시의 일 실시예에 따른 포인트 클라우드를 디코딩하기 위한 예시적인 방법을 도시한 것이다.
도 9는 본 개시의 일 실시예에 따른 포인트 클라우드를 인코딩하기 위한 예시적인 방법을 도시한 것이다.
아래의 상세한 설명에 들어가기 전에, 본 특허 명세서 전체에 걸쳐 사용되는 특정 단어 및 어구들의 정의를 기재하는 것이 도움이 될 수 있다. 용어 "커플(couple)" 및 그 파생어는 두 개 이상의 요소 사이의 어떤 직접 또는 간접 통신을 나타내거나, 이들 요소가 서로 물리적으로 접촉하고 있는지의 여부를 나타낸다. 용어 "송신(transmit)", "수신(receive)" 및 "통신(communicate)" 그리고 그 파생어는 직접 통신 및 간접 통신 모두를 포함한다. 용어 "포함한다(include)" 및 "구성한다(comprise)" 그리고 그 파생어는 제한이 아닌 포함을 의미한다. 용어 "또는(or)"은 포괄적 용어로써, '및/또는'을 의미한다. 어구 "~와 관련되다(associated with)" 및 그 파생어는 ~을 포함한다(include), ~에 포함된다(be included within), ~와 결합하다(interconnect with), ~을 함유하다(contain), ~에 함유되어 있다(be contained within), ~에 연결한다(connect to or with), ~와 결합하다(couple to or with), ~ 전달한다(be communicable with), 와 협력하다(cooperate with), ~를 끼우다(interleave), ~을 나란히 놓다(juxtapose), ~에 인접하다(be proximate to), 구속하다/구속되다(be bound to or with), 소유하다(have), 속성을 가지다(have a property of), ~와 관계를 가지다(have a relationship to or with) 등을 의미한다. 용어 "제어기(controller)"는 적어도 하나의 동작을 제어하는 어떤 장치, 시스템 또는 그 일부를 의미한다. 이러한 제어기는 하드웨어 또는 하드웨어와 소프트웨어의 조합 및/또는 펌웨어로 구현될 수 있다. 특정 제어기와 관련된 기능은 로컬 또는 원격으로 중앙 집중식으로 처리(centralized)되거나 또는 분산식으로 처리(distributed)될 수 있다. 어구 "적어도 하나"는, 그것이 항목들의 나열과 함께 사용될 경우, 나열된 항목들 중 하나 이상의 상이한 조합이 사용될 수 있음을 의미한다. 예를 들어, "A, B, 및 C 중 적어도 하나"는 다음의 조합, 즉 A, B, C, A와 B, A와 C, B와 C, 그리고 A와 B와 C 중 어느 하나를 포함한다.
또한, 후술하는 각종 기능들은 컴퓨터 판독 가능한 프로그램 코드로 형성되고 컴퓨터 판독 가능한 매체에서 구현되는 하나 이상의 컴퓨터 프로그램 각각에 의해 구현 또는 지원될 수 있다. 용어 "애플리케이션" 및 "프로그램"은 하나 이상의 컴퓨터 프로그램, 소프트웨어 컴포넌트, 명령 세트, 프로시저, 함수, 객체, 클래스, 인스턴스, 관련 데이터, 혹은 적합한 컴퓨터 판독 가능한 프로그램 코드에서의 구현용으로 구성된 그것의 일부를 지칭한다. 어구 "컴퓨터 판독 가능한 프로그램 코드"는 소스 코드, 오브젝트 코드, 및 실행 가능한 코드를 포함하는 컴퓨터 코드의 종류를 포함한다. 어구 "컴퓨터 판독 가능한 매체"는 ROM(read only memory), RAM(random access memory), 하드 디스크 드라이브, 컴팩트 디스크(CD), 디지털 비디오 디스크(DVD), 혹은 임의의 다른 타입의 메모리와 같은, 컴퓨터에 의해 액세스될 수 있는 임의의 타입의 매체를 포함한다. "비일시적인" 컴퓨터 판독 가능한 매체는 유선, 무선, 광학, 일시적인 전기적 또는 다른 신호들을 전달시키는 통신 링크를 제외한다. 비일시적 컴퓨터 판독 가능한 매체는 데이터가 영구적으로 저장되는 매체 그리고 재기록이 가능한 광디스크 또는 소거 가능한 메모리 장치와 같은, 데이터가 저장되어 나중에 덮어 씌어지는 매체를 포함한다.
다른 특정 단어 및 어구에 대한 정의가 이 특허 명세서 전반에 걸쳐 제공된다. 당업자는 대부분의 경우가 아니더라도 다수의 경우에 있어서, 이러한 정의는 종래에 뿐만 아니라 그러한 정의된 단어 및 어구의 향후 사용에 적용될 수 있음을 이해해야 한다.
이하에 설명되는 도 1 내지 도 9, 및 이 특허 명세서에 있어서의 본 개시의 원리들을 설명하기 위해 사용되는 각종 실시예들은 단지 설명을 위한 것이며, 어떠한 방식으로도 본 개시의 범위를 제한하는 방식으로 해석되어서는 안된다. 본 개시의 원리들은 임의의 적절하게 구성된 시스템 또는 장치에서 구현될 수 있다는 것을 당업자는 이해할 수 있을 것이다.
증강 현실(Augmented reality, AR)은 실제 환경에 있는 객체가 가상 객체, 가상 정보 또는 둘 모두로 증강되는 실제 환경의 대화 형 경험이다. 가상 현실(Virtual reality, VR)은 전체 장면이 컴퓨터로 생성되는 시각적 장면의 렌더링 된 버전이다. 특정 실시예들에서, AR 및 VR은 시각 및 청각 경험을 모두 포함한다. 시각적 렌더링은 사용자가 응용 프로그램이나 AR 또는 VR 장면에서 정의한 한계 내에서 이동함에 따라 관찰자 또는 사용자에게 가능한 한 자연스럽게 현실 세계의 시각적 자극과 오디오 감각 자극을 모방하도록 설계되었다. 예를 들어 VR은 사용자의 머리 움직임에 반응하는 몰입형 세계에 사용자를 배치한다. 비디오 수준에서 VR은 렌더링 된 비디오의 시야각과 머리 움직임의 동기화와 함께 가능한 한 많은 시야(FOV)를 포함하는 비디오 경험을 제공함으로써 달성된다.
다양한 유형의 장치가 AR 또는 VR과 관련된 몰입형 경험을 제공할 수 있다. 한 가지 예시적인 장치는 헤드 마운트 디스플레이(HMD)이다. HMD는 사용자에게 AR 및 VR 경험을 제공하는 여러 유형의 장치 중 하나를 나타낸다. HMD는 사용자가 머리의 움직임에 따라 VR 장면을 보고 표시되는 컨텐츠를 조정할 수 있는 장치이다. 일반적으로 HMD는 장치에 통합되고 외부 컴퓨터(테더링됨)와 연결된 전용 화면 또는 HMD에 삽입된(테더링되지 않은) 스마트 폰과 같은 장치에 의존한다. 첫 번째 접근 방식은 하나 이상의 경량 화면을 사용하며 높은 컴퓨팅 용량의 이점을 얻는다. 반대로 스마트 폰 기반 시스템은 더 높은 이동성을 활용하고 생산 비용이 더 저렴할 수 있다. 두 경우 모두 생성되는 비디오 경험은 동일하다. 본 명세서에서 사용되는 용어 "사용자"는 인간 또는 전자 장치를 사용하는 다른 장치(예를 들면, 인공 지능 전자 장치)를 의미할 수 있음에 유의한다.
포인트 클라우드는 객체를 3 차원으로 가상으로 표현한 것이다. 예를 들어, 포인트 클라우드는 3D 공간의 포인트 모음이며, 각 포인트는 3D 공간 내의 특정 기하학적 위치에 위치하며 컬러와 같은 하나 이상의 어트리뷰트를 포함한다. 포인트 클라우드는 VR 또는 AR 환경의 가상 객체와 유사할 수 있다. 메쉬는 VR 또는 AR 환경에서 객체를 가상으로 표현하는 또 다른 유형이다. 포인트 클라우드 또는 메쉬는 객체, 다중 객체, 가상 장면(여러 객체 포함) 등이 될 수 있다. 포인트 클라우드 및 메쉬는 게임, 3D 매핑, 시각화, 의료, AR, VR, 자율 주행, 멀티 뷰 재생, 6 DoF 몰입형 미디어 등 다양한 애플리케이션에서 일반적으로 사용된다. 본 명세서에 사용되는, 포인트 클라우드 및 메쉬라는 용어는 상호 교환적으로 사용될 수 있다.
포인트 클라우드는 체적 시각 데이터를 나타낸다. 포인트 클라우드는 3D 공간에 위치한 여러 3D 포인트로 구성되며, 3D 포인트 클라우드의 각 포인트에는 3-튜플(X, Y, Z) 좌표 값으로 표현되는 기하학적 위치가 포함된다. 세 개의 좌표로 각 포인트를 식별하면 3D 환경이나 공간에서 정확한 위치가 식별된다. 3D 환경에서의 위치 또는 각 포인트의 공간은 원점, 포인트 클라우드의 다른 포인트 또는 이들의 조합을 기준으로할 수 있다. 원점은 X, Y 및 Z 축이 교차하는 위치이다. 특정 실시예들에서, 포인트는 객체의 외부 표면에 위치한다. 특정 실시예들에서, 포인트는 객체의 내부 구조 및 외부 표면 전체에 걸쳐 위치한다. 또 다른 실시예들에서, 포인트는 객체의 표면을 따라 위치되며, 포인트 클라우드의 내부 영역 내에 위치될 수 있다.
포인트의 기하학적 위치(3D 공간에서 포인트의 위치) 외에도, 포인트 클라우드의 각 포인트는 컬러, 텍스처, 반사율, 강도, 표면 법선 등과 같은 어트리뷰트도 포함할 수 있다. 일부 실시예에서, 3D 포인트 클라우드의 단일 포인트는 다중 어트리뷰트를 가질 수 있다. 일부 애플리케이션에서는 포인트 클라우드를 사용하여 각 포인트에 여러 뷰 종속 컬러 정보(R, G, B 또는 Y, U, V 트리플렛)가 포함된 라이트 필드 데이터를 근사화할 수도 있다.
단일 포인트 클라우드에는 수십억 개의 포인트가 포함될 수 있으며 각 포인트는 기하학적 위치 및 하나 이상의 어트리뷰트와 연관된다. 포인트와 연관된 기하학적 위치 및 각 추가 어트리뷰트는 특정 비트 수를 차지한다. 예를 들어, 포인트 클라우드에서 단일 포인트의 기하학적 위치는 30 비트를 소비할 수 있다. 예를 들어, 단일 포인트의 각 기하학적 위치가 X 값, Y 값 및 Z 값으로 정의되면, 각 좌표 (X, Y 및 Z)는 10 비트를 사용하여 총 30 비트를 사용한다. 마찬가지로, 단일 포인트의 컬러를 지정하는 어트리뷰트는 24 비트를 사용할 수 있다. 예를 들어, 단일 포인트의 컬러 성분이 적색 값, 녹색 값 및 청색 값을 기반으로 정의되면, 각 컬러 성분(적색, 녹색 및 청색)은 8 비트를 사용하여 총 24 비트를 사용한다. 결과적으로, 좌표 당 10 비트 기하학적 어트리뷰트 데이터와 컬러 값당 8 비트 컬러 어트리뷰트 데이터가 있는 단일 포인트는 54 비트를 차지한다. 각 추가 어트리뷰트는 단일 포인트에 필요한 비트를 증가시킨다. 프레임에 1 백만 개의 포인트가 포함된 경우 프레임 당 비트 수는 5 천 4 백만 비트(포인트 당 54 비트 x 프레임 당 100 만 포인트)이다. 프레임 속도가 초당 30 프레임이고 압축을 거치지 않는 경우, 두 번째 장치가 포인트 클라우드를 디스플레이하기 위해 한 전자 장치에서 다른 전자 장치로 초당 1.62 GB(프레임 당 5 천 4 백만 비트 x 초당 30 프레임)가 송신된다. 따라서, 하나의 전자 장치에서 다른 전자 장치로 압축되지 않은 포인트 클라우드를 송신하면 단일 포인트 클라우드와 연관된 데이터의 크기와 복잡성으로 인해 상당한 대역폭이 사용된다. 결과적으로, 포인트 클라우드는 송신 전에 압축된다.
본 개시의 실시예들은 포인트 클라우드를 송신하는데 필요한 대역폭으로 인해 하나의 장치(예를 들면, 소스 장치)에서 다른 장치(예를 들면, 디스플레이 장치)로의 포인트 클라우드 송신을 촉진하고 개선하기 위해 포인트 클라우드를 압축하는 것이 필요하다는 것을 고려한다. 특정 전용 하드웨어 구성 요소를 사용하여 실시간 요구 사항을 충족하거나 3D 포인트 클라우드 송신 및 렌더링의 지연 또는 지연을 줄일 수 있다. 그러나, 이러한 하드웨어 구성 요소는 종종 비싸다. 또한 많은 비디오 코덱은 포인트 클라우드와 같은 3D 비디오 컨텐츠를 인코딩 및 디코딩할 수 없다. 기존 2D 비디오 코덱을 활용하여 포인트 클라우드를 압축 및 압축 해제하면 새로운 또는 특수 하드웨어 없이도 포인트 클라우드의 인코딩 및 디코딩을 널리 사용할 수 있다. 본 개시의 실시예들에 따르면, 포인트 클라우드가 3D 표현에서 2D 표현으로 변환될 때, 기존 비디오 코덱을 활용하여 포인트 클라우드를 압축하고 재구성하는데 사용될 수 있다. 특정 실시예들에서, 3D 표현에서 2D 표현으로의 포인트 클라우드의 변환은 패치를 생성함으로써 3D 포인트 클라우드의 포인트 클러스터를 2D 프레임으로 프로젝션하는 것을 포함한다. 그 후에, HEVC, AVC, VP9, VP8, VVC 등과 같은 비디오 코덱을 사용하여 2D 비디오와 유사한 3D 포인트 클라우드를 나타내는 2D 프레임을 압축할 수 있다.
한 장치에서 다른 장치로 포인트 클라우드를 송신하기 위해, 3D 포인트 클라우드는 2D 프레임에 패치로서 표현되는 여러 포인트 클러스터로 분리된다. 2D 프레임은 서로 다른 프로젝션 평면들에 대한 3D 포인트 클라우드의 프로젝션을 포함할 수 있다. 프레임에는 포인트의 기하학적 위치를 나타내는 값이 포함될 수 있다. 프레임은 포인트 클라우드의 다양한 어트리뷰트를 나타낼 수도 있다. 예를 들어, 하나의 어트리뷰트 프레임은 각 포인트와 연관된 컬러 정보를 나타내는 값을 포함할 수 있다. 디코더는 그 프레임을 사용하여 3D 포인트 클라우드를 재구성함으로써, 포인트 클라우드를 렌더링하고 표시한 다음 사용자가 볼 수 있도록 한다.
포인트 클라우드를 여러 2D 프레임에 맞게 분해하고 압축하면, 원래 포인트 클라우드를 송신하는데 사용되는 것보다 적은 대역폭을 사용하여 프레임을 송신할 수 있다. 아래에서 더 자세히 설명되는 도 4a 내지 도 4d는 포인트 클라우드를 상이한 평면 상에 프로젝션하고 그 후 프로젝션을 2D 프레임에 저장하는 다양한 단계를 도시한 것이다. 예를 들어, 도 4a는 3D 포인트 클라우드의 두 가지 뷰를 보여주며, 포인트 클라우드가 객체의 360˚ 뷰일 수 있음을 보여준다. 도 4b는 3D 포인트 클라우드를 상이한 평면들에 프로젝션하는 프로세스를 보여준다. 도 4a의 포인트 클라우드와 같은 포인트 클라우드가 상이한 평면들에 프로젝션된 후, 도 4c 및 도 4d는 각각 다양한 프로젝션에 대응하는 패치를 포함하는 지오메트리 프레임 및 어트리뷰트 프레임(3D 포인트 클라우드의 포인트들의 컬러를 나타냄)을 보여준다.
본 개시의 실시예들은 송신된 이후에 렌더링을 위해 포인트 클라우드로 재구성될 수 있는 2D 표현으로 포인트 클라우드를 변환하기 위한 시스템 및 방법을 제공한다. 특정 실시예들에서, 포인트 클라우드는 프레임들에 패킹되는 다중 패치로 분해된다. 특정 실시예들에서, 프레임은 동일한 어트리뷰트의 패치를 포함한다. 한 프레임에서 한 패치로 표현되는 3D 포인트 클라우드의 포인트는 두 패치가 동일한 좌표 위에 위치할 때 제 2 프레임에서 다른 패치로 표현되는 동일한 포인트에 해당한다. 예를 들어, 지오메트리를 나타내는 프레임의 위치 (u, v)에 있는 픽셀은 컬러와 같은 어트리뷰트를 나타내는 프레임의 동일한 (u, v) 위치에 있는 픽셀의 기하학 위치이다. 다른 실시예들에서, 하나의 프레임의 패치는 3D 공간 및 컬러에서 포인트의 기하학적 위치와 같은, 포인트 클라우드의 포인트들과 연관된 다중 어트리뷰트를 나타낸다.
인코더는 각 포인트에서 지오메트리 정보와 어트리뷰트 정보를 분리할 수 있다. 인코더는 서로 다른 프로젝션 평면들에 대한 3D 포인트 클라우드의 포인트들을 그룹화(또는 클러스터링)한 다음, 포인트 그룹들을 2D 프레임 상에 패치로서 저장한다. 지오메트리 및 어트리뷰트 정보를 나타내는 패치는 각각 지오메트리 비디오 프레임 및 어트리뷰트 비디오 프레임에 패킹되며, 여기서 임의의 패치 내의 각 픽셀은 3D 공간의 일 포인트에 대응한다. 지오메트리 비디오 프레임은 지오메트리 정보를 인코딩하는데 사용되며, 해당 어트리뷰트 비디오 프레임은 포인트 클라우드의 어트리뷰트(예를 들면, 컬러)를 인코딩하는데 사용된다. 3D 포인트의 두 가로 좌표(프로젝션 평면에 대한)는 지오메트리 비디오 프레임(u, v)의 열 및 행 인덱스 플러스 비디오 프레임 내에서 전체 패치의 위치를 결정하는 가로 오프셋에 대응한다. 3D 포인트의 깊이는 비디오 프레임의 픽셀 값 플러스 패치의 깊이 오프셋으로서 인코딩된다. 3D 포인트 클라우드의 깊이는 3D 포인트 클라우드의 프로젝션이 XY 좌표에서 수행되는지, YZ 좌표에서 수행되는지 또는 XZ 좌표에서 수행되는지 여부에 따라 달라진다.
프레임을 생성한 후, 다양한 비디오 압축 코덱, 이미지 압축 코덱 또는 둘 다를 활용하여 프레임을 압축할 수 있다. 예를 들어, 인코더는 먼저 HEVC와 같은 2D 비디오 코덱을 사용하여 지오메트리 프레임을 생성한 다음 압축한다. 어트리뷰트 프레임(예를 들면, 3D 포인트 클라우드의 컬러)을 인코딩하기 위해, 인코더는 인코딩된 지오메트리 프레임을 디코딩하며, 이것은 3D 포인트 클라우드의 3D 좌표를 재구성하는데 사용된다. 인코더는 재구성된 포인트 클라우드를 스무딩한다. 그 후에, 인코더는 원래 포인트 클라우드의 컬러 값들에서 각 포인트의 컬러 값들을 보간한다. 보간된 컬러 값들은 압축된 컬러 프레임에 패킹된다.
인코더는 또한 2D 비디오 프레임에서 프로젝션된 포인트들의 위치를 보여주는 점유 맵(점유 맵 프레임이라고도 함)을 생성할 수 있다. 예를 들어, 패치는 생성된 프레임 전체를 차지하지 않을 수 있기 때문에, 점유 맵은 지오메트리 프레임 및 어트리뷰트 프레임의 어떤 픽셀들이 포인트 클라우드의 포인트에 대응하는지 및 어떤 픽셀들이 비어 있거나 유효하지 않은지 및 포인트 클라우드의 포인트에 대응하지 않는지를 나타낸다. 특정 실시예들에서, 점유 맵 프레임은 압축된다. 압축된 지오메트리 프레임, 압축된 컬러 프레임(및 임의의 다른 어트리뷰트 프레임) 및 점유 맵 프레임을 다중화하여 비트스트림을 생성할 수 있다. 인코더 또는 다른 장치는 2D 프레임을 포함하는 비트스트림을 다른 장치로 송신한다.
디코더는 비트스트림을 수신하고, 비트스트림을 프레임들로 압축 해제하고, 프레임들 내의 정보를 기반으로 포인트 클라우드를 재구성한다. 포인트 클라우드가 재구성된 후, 사용자가 관찰할 수 있도록 3D 포인트 클라우드를 렌더링 및 디스플레이할 수 있다. 특정 실시예들에서, 지오메트리 및 상이한 어트리뷰트들을 나타내는 프레임들이 개별적으로 인코딩 및 디코딩된다. 다른 실시예들에서는, 지오메트리 및 상이한 어트리뷰트들을 나타내는 프레임들이 함께 인코딩 및 디코딩된다.
본 개시의 실시예들은 3D 포인트 클라우드의 재구성을 개선하기 위한 시스템 및 방법을 제공한다. 3D 포인트 클라우드의 재구성을 개선하면 3D 포인트 클라우드를 재구성하는데 필요한 처리 능력이 감소하고 3D 포인트 클라우드의 시각적 품질이 향상된다. 예를 들어, 패치 경계 또는 그 근처에 위치한 픽셀에 대응하는 3D 포인트 클라우드의 포인트를 스무딩하면 포인트 클라우드의 시각적 외관이 향상되는 한편, 그 포인트를 나타내는 데이터 송신량은 감소할 수 있다.
본 개시의 실시예들에 따르면, 비디오 코덱을 이용하여 포인트 클라우드 압축 및 압축 해제를 수행하는 아키텍처 및 방법이 제공된다. 3D 포인트 클라우드가 3D 표현에서 2D 표현으로 변환될 때, 3D 포인트 클라우드의 포인트들이 그룹으로 클러스터링되고 프레임들에 프로젝션되며, 여기서 클러스터링된 포인트들이 2D 프레임에 패킹되는 패치를 생성한다. 특정 2D 프레임의 크기 제약 때문에, 3D 포인트 클라우드에서 서로 옆에 있지 않은 두 패치를 단일 프레임에 서로 나란히 패킹할 수 있다. 포인트 클라우드의 이웃하지 않은 두 패치가 2D 프레임에서 서로 나란히 패킹되면, 블록 기반 비디오 코덱에 의해 한 패치로부터의 픽셀들이 의도치 않게 다른 패치로부터의 픽셀들과 섞일 수 있다. 한 패치로부터의 픽셀들이 의도치 않게 다른 패치에 포함된 경우, 디코더에 의해 포인트 클라우드가 재구성될 때 패치 경계에서 가시적인 아티팩트가 발생할 수 있다.
따라서, 본 개시의 실시예들은 패치 경계에서 또는 그 근처에서 프레임의 픽셀들에 의해 표현되는 재구성된 3D 포인트 클라우드의 포인트들을 식별하기 위한 시스템 및 방법을 제공한다. 식별된 포인트는 이러한 포인트들이 패치 경계 또는 그 근처에서 프레임의 픽셀들에 의해 표현되기 때문에 경계 포인트라고 한다. 그 후 경계 포인트들을 스무딩함으로써 시각적 아티팩트를 제거함으로써 포인트 클라우드의 시각적 외관을 증가시킬 수 있다. 점유 맵 프레임의 싱글 패스를 사용하여 경계 포인트들을 식별할 경우, 인코더 또는 디코더의 런타임을 30% 이상 줄일 수 있다.
도 1은 본 개시의 일 실시예에 따른 예시적인 통신 시스템(100)을 도시한 것이다. 도 1에 도시된 통신 시스템(100)의 실시예는 단지 예시를 위한 것이다. 통신 시스템(100)의 다른 실시예들이 본 개시의 범위를 벗어나지 않고 사용될 수 있다.
통신 시스템(100)은 통신 시스템(100)의 다양한 구성 요소들 간의 통신을 용이하게 하는 네트워크(102)를 포함한다. 예를 들어, 네트워크(102)는 IP 패킷들, 프레임 릴레이 프레임들, ATM(Asynchronous Transfer Mode) 셀들, 또는 네트워크 어드레스들 사이의 다른 정보를 통신할 수 있다. 네트워크(102)는 하나 이상의 LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network), 인터넷과 같은 글로벌 네트워크의 전체 또는 일부, 또는 하나 이상의 위치들에 있는 임의의 다른 통신 시스템 또는 시스템들을 포함한다.
이 예에서, 네트워크(102)는 서버(104)와 다양한 클라이언트 장치들(106-116) 사이의 통신을 용이하게 한다. 클라이언트 장치들(106-116)은 예를 들어, 스마트폰, 태블릿 컴퓨터, 랩탑, 개인용 컴퓨터, 웨어러블 장치, HMD 등일 수 있다. 서버(104)는 하나 이상의 서버를 나타낼 수 있다. 각 서버(104)는 클라이언트 장치들(106-116)과 같은 하나 이상의 클라이언트 장치에 컴퓨팅 서비스를 제공할 수 있는 임의의 적절한 컴퓨팅 또는 처리 장치를 포함한다. 각각의 서버(104)는 예를 들어, 하나 이상의 처리 장치, 명령 및 데이터를 저장하는 하나 이상의 메모리, 및 네트워크(102)를 통한 통신을 용이하게 하는 하나 이상의 네트워크 인터페이스를 포함할 수 있다. 아래에서 더 상세히 설명되는 바와 같이, 서버(104)는 포인트 클라우드(point cloud)를 나타내는 압축된 비트스트림을, 클라이언트 장치들(106-116)과 같은 하나 이상의 디스플레이 장치로 송신할 수 있다. 특정 실시예들에서, 각각의 서버(104)는 인코더를 포함할 수 있다.
각각의 클라이언트 장치(106-116)는 네트워크(102)를 통해 (서버(104)와 같은) 적어도 하나의 서버 또는 다른 컴퓨팅 장치(들)와 상호 작용하는 임의의 적절한 컴퓨팅 또는 처리 장치를 나타낸다. 클라이언트 장치들(106-116)은 데스크탑 컴퓨터(106), 모바일 전화 또는 모바일 장치(108)(예를 들면, 스마트폰), PDA(110), 랩탑 컴퓨터(112), 태블릿 컴퓨터(114), 및 HMD(116)를 포함한다. 그러나, 임의의 다른 또는 추가적인 클라이언트 장치들이 통신 시스템(100)에서 사용될 수 있다. 스마트폰들은 음성, 단문 메시지 서비스(SMS) 및 인터넷 데이터 통신들을 위한 모바일 운영 체제들 및 통합 모바일 광대역 셀룰러 네트워크 연결들을 갖는 핸드헬드 장치들인 모바일 장치들(108)의 클래스를 나타낸다. HMD(116)는 하나 이상의 3D 포인트 클라우드를 포함하는 360˚ 장면을 표시할 수 있다. 특정 실시예들에서, 클라이언트 장치들(106-116) 중 임의의 장치는 인코더, 디코더, 또는 둘 다를 포함할 수 있다. 예를 들어, 모바일 장치(108)는 비디오를 녹화한 다음 비디오를 인코딩하여 비디오가 클라이언트 장치들(106-116) 중 하나로 송신되도록 할 수 있다. 다른 예에서, 랩탑 컴퓨터(112)는 가상 3D 포인트 클라우드를 생성하는데 사용될 수 있으며, 이 가상 3D 포인트 클라우드는 그 후에 인코딩되어 클라이언트 장치들(106-116) 중 하나로 송신된다.
이 예에서, 일부 클라이언트 장치들(108-116)은 네트워크(102)와 간접적으로 통신한다. 예를 들어, 모바일 장치(108) 및 PDA(110)는 셀룰러 기지국들 또는 eNB(eNodeB)들과 같은 하나 이상의 기지국(118)을 통해 통신한다. 또한, 랩탑 컴퓨터(112), 태블릿 컴퓨터(114), 및 HMD(116)는 IEEE 802.11 무선 액세스 포인트들과 같은 하나 이상의 무선 액세스 포인트(120)를 통해 통신한다. 이것은 단지 예시를 위한 것이며 각 클라이언트 장치(106-116)는 네트워크(102)와 직접 통신하거나 임의의 적절한 중간 장치(들) 또는 네트워크(들)를 통해 네트워크(102)와 간접적으로 통신할 수 있다는 점에 유의하도록 한다. 특정 실시예들에서, 서버(104) 또는 임의의 클라이언트 장치(106-116)는 포인트 클라우드를 압축하고, 포인트 클라우드를 나타내는 비트스트림을 생성하며, 또한 임의의 클라이언트 장치(106-116)와 같은 다른 클라이언트 장치에 비트스트림을 송신하는데 사용될 수 있다.
특정 실시예들에서, 클라이언트 장치들(106-114) 중 임의의 장치는 예를 들어, 서버(104)와 같은 다른 장치에 정보를 안전하고 효율적으로 송신한다. 또한, 클라이언트 장치들(106-116) 중 임의의 장치는 자신과 서버(104) 사이의 정보 송신을 트리거할 수 있다. 클라이언트 장치들(106-114) 중 임의의 장치는 브래킷들을 통해 헤드셋에 부착될 경우 VR 디스플레이로서 기능할 수 있으며, 또한 HMD(116)와 유사한 기능을 수행할 수 있다. 예를 들어, 모바일 장치(108)는 브래킷 시스템에 부착되고 사용자의 눈 위에 착용될 경우 HMD(116)와 유사하게 기능할 수 있다. 모바일 장치(108)(또는 임의의 다른 클라이언트 장치(106-116))는 자신과 서버(104) 사이의 정보 송신을 트리거할 수 있다.
특정 실시예들에서, 클라이언트 장치들(106-116) 중 임의의 장치 또는 서버(104)는 3D 포인트 클라우드를 생성하거나, 3D 포인트 클라우드를 압축하거나, 3D 포인트 클라우드를 송신하거나, 3D 포인트 클라우드를 수신하거나, 3D 포인트 클라우드를 렌더링하거나, 또는 이들의 조합을 수행할 수 있다. 예를 들어, 서버(104)는 3D 포인트 클라우드를 수신하여, 3D 포인트 클라우드를 분해함으로써 2D 프레임들에 맞추고, 이 프레임들을 압축하여 비트스트림을 생성한다. 비트스트림은 정보 리포지토리(information repository)와 같은 저장 장치, 또는 클라이언트 장치들(106-116) 중 하나 이상으로 송신될 수 있다. 다른 예에서, 클라이언트 장치들(106-116) 중 하나는 3D 포인트 클라우드를 수신하여, 3D 포인트 클라우드를 분해함으로써 2D 프레임들에 맞추고, 이 프레임들을 압축하여 정보 리포지토리와 같은 저장 장치, 클라이언트 장치들(106-116) 중 다른 하나, 또는 서버(104)로 송신될 수 있는 비트스트림을 생성할 수 있다.
도 1이 통신 시스템(100)의 일 예를 도시하고 있지만, 도 1에 다양한 변경이 이루어질 수 있다. 예를 들어, 통신 시스템(100)은 임의의 적절한 배열로 임의의 수의 각 구성 요소를 포함할 수 있다. 일반적으로, 컴퓨팅 및 통신 시스템들은 매우 다양한 구성으로 제공되며, 도 1은 본 개시의 범위를 임의의 특정 구성으로 제한하지 않는다. 도 1이 본 특허 명세서에 개시된 다양한 특징들이 사용될 수 있는 하나의 작동 환경을 도시하고 있지만, 이러한 특징들은 임의의 다른 적합한 시스템에서 사용될 수도 있다.
도 1이 통신 시스템(100)의 일 예를 도시하고 있지만, 도 1에 다양한 변경이 이루어질 수 있다. 예를 들어, 통신 시스템(100)은 임의의 적절한 배열로 임의의 수의 각 구성 요소를 포함할 수 있다. 일반적으로, 컴퓨팅 및 통신 시스템들은 매우 다양한 구성으로 제공되며, 도 1이 본 개시의 범위를 임의의 특정 구성으로 제한하지 않는다. 도 1이 본 특허 명세서에 개시된 다양한 특징들이 사용될 수 있는 하나의 작동 환경을 도시하고 있지만, 이러한 특징들은 임의의 다른 적합한 시스템에서 사용될 수도 있다.
도 2 및 도 3은 본 개시의 일 실시예에 따른 예시적인 전자 장치들을 도시한 것이다. 특히, 도 2는 예시적인 서버(200)를 도시한 것이며, 서버(200)는 도 1의 서버(104)를 나타낼 수 있다. 서버(200)는 하나 이상의 인코더, 디코더, 로컬 서버, 원격 서버, 클러스터형 컴퓨터, 및 심리스 리소스들의 단일 풀, 클라우드 기반 서버 등의 역할을 하는 구성 요소를 나타낼 수 있다. 서버(200)는 도 1의 클라이언트 장치들(106-116) 중 하나 이상의 장치 또는 다른 서버에 의해 액세스될 수 있다.
서버(200)는 하나 이상의 로컬 서버, 하나 이상의 압축 서버, 또는 하나 이상의 인코딩 서버(예를 들면, 인코더)를 나타낼 수 있다. 특정 실시예들에서, 인코더는 디코딩을 수행할 수 있다. 도 2에 도시된 바와 같이, 서버(200)는 적어도 하나의 처리 장치(예를 들면, 프로세서(210)), 적어도 하나의 저장 장치(215), 적어도 하나의 통신 인터페이스(220), 및 적어도 하나의 입/출력(I/O) 유닛(225) 사이의 통신을 지원하는 버스 시스템(205)을 포함한다.
프로세서(210)는 메모리(230)에 저장될 수 있는 명령어들을 실행한다. 프로세서(210)는 임의의 적절한 배열로 임의의 적절한 수(들) 및 타입(들)의 프로세서들 또는 다른 장치들을 포함할 수 있다. 프로세서(210)의 예시적인 타입들로는 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서, 필드 프로그램 가능 게이트 어레이, 주문형 집적 회로, 및 이산 회로를 포함한다. 특정 실시예들에서, 프로세서(210)는 저장 장치(215) 내에 저장된 3D 포인트 클라우드를 인코딩할 수 있다. 특정 실시예들에서, 3D 포인트 클라우드가 인코더에 의해 인코딩될 경우, 인코더가 또한 인코딩된 3D 포인트 클라우드를 디코딩함으로써 포인트 클라우드가 재구성될 시에, 재구성된 3D 포인트 클라우드가 인코딩 이전에 3D 포인트 클라우드와 매칭되는 것을 보장한다.
메모리(230) 및 영구 저장소(235)는 정보(예를 들면, 데이터, 프로그램 코드, 또는 임시 또는 영구 기반의 다른 적절한 정보)를 저장하고 이것의 검색을 용이하게 할 수 있는 임의의 구조(들)를 나타내는 저장 장치들(215)의 예들이다. 메모리(230)는 랜덤 액세스 메모리 또는 임의의 다른 적절한 휘발성 또는 비휘발성 저장 장치(들)를 나타낼 수 있다. 예를 들어, 메모리(230)에 저장된 명령어들은 포인트 클라우드를 패치들로 분해하기 위한 명령어들, 2D 프레임들에 패치들을 패킹하기 위한 명령어들, 2D 프레임들을 압축하기 위한 명령어들, 및 비트스트림을 생성하기 위해 2D 프레임들을 특정 순서로 인코딩하기 위한 명령어들을 포함할 수 있다. 메모리(230)에 저장된 명령어들은 또한 도 1의 HMD(116)와 같은 VR 헤드셋을 통해 볼 때, 360˚ 장면을 렌더링하기 위한 명령어들을 포함할 수 있다. 영구 저장소(235)는 읽기 전용 메모리, 하드 드라이브, 플래시 메모리 또는 광 디스크와 같은, 데이터의 장기 저장을 지원하는 하나 이상의 구성 요소들 또는 장치들을 포함할 수 있다.
통신 인터페이스(220)는 다른 시스템들 또는 장치들과의 통신들을 지원한다. 예를 들어, 통신 인터페이스(220)는 도 1의 네트워크(102)를 통한 통신들을 용이하게 하는 네트워크 인터페이스 카드 또는 무선 트랜시버를 포함할 수 있다. 통신 인터페이스(220)는 임의의 적절한 물리적 또는 무선 통신 링크(들)를 통한 통신들을 지원할 수 있다. 예를 들어, 통신 인터페이스(220)는 3D 포인트 클라우드를 포함하는 비트스트림을, 클라이언트 장치들(106-116) 중 하나의 장치와 같은 다른 장치로 송신할 수 있다.
I/O 유닛(225)은 데이터의 입력 및 출력을 허용한다. 예를 들어, I/O 유닛(225)은 키보드, 마우스, 키패드, 터치스크린, 또는 다른 적절한 입력 장치를 통한 사용자 입력을 위한 연결을 제공할 수 있다. I/O 유닛(225)은 또한 출력을 디스플레이, 프린터, 또는 다른 적절한 출력 장치로 전송할 수 있다. 그러나, I/O 유닛(225)은 네트워크 연결을 통해 서버(200)와의 I/O 상호 작용들이 발생하는 경우와 같이, 생략될 수 있다는 점에 유의한다.
도 2가 도 1의 서버(104)를 나타내는 것으로 설명되지만, 동일하거나 유사한 구조가 다양한 클라이언트 장치들(106-116) 중 하나 이상에서 사용될 수 있음에 유의한다. 예를 들어, 데스크탑 컴퓨터(106) 또는 랩탑 컴퓨터(112)는 도 2에 도시된 것과 동일하거나 유사한 구조를 가질 수 있다.
도 3은 예시적인 전자 장치(300)를 도시한 것이며, 전자 장치(300)는 도 1의 클라이언트 장치들(106-116) 중 하나 이상을 나타낼 수 있다. 전자 장치(300)는 예를 들어 이동국, 가입자국, 무선 단말기, 데스크탑 컴퓨터(도 1의 데스크탑 컴퓨터(106)와 유사), 휴대용 전자 장치(도 1의 모바일 장치(108), PDA(110), 랩탑 컴퓨터(112), 태블릿 컴퓨터(114), 또는 HMD(116)와 유사) 등과 같은 이동 통신 장치일 수 있다. 특정 실시예들에서, 도 1의 클라이언트 장치들(106-116) 중 하나 이상은 전자 장치(300)와 동일하거나 유사한 구성을 포함할 수 있다. 특정 실시예들에서, 전자 장치(300)는 인코더, 디코더, 또는 둘 다이다. 예를 들어, 전자 장치(300)는 데이터 전송, 이미지 또는 비디오 압축, 이미지 또는 비디오 압축 해제, 인코딩, 디코딩 및 미디어 렌더링 애플리케이션들과 함께 사용 가능하다.
도 3에 도시된 바와 같이, 전자 장치(300)는 안테나(305), 무선 주파수(RF) 트랜시버(310), 송신(TX) 처리 회로(315), 마이크로폰(320), 및 수신(RX) 처리 회로(325)를 포함한다. RF 트랜시버(310)는, 예를 들면, RF 트랜시버, BLUETOOTH 트랜시버, WI-FI 트랜시버, ZIGBEE 트랜시버, 적외선 트랜시버 및 기타 다양한 무선 통신 신호들을 포함할 수 있다. 전자 장치(300)는 또한 스피커(330), 프로세서(340), 입/출력(I/O) 인터페이스(IF)(345), 입력부(350), 디스플레이(355), 메모리(360), 및 센서(들)(365)를 포함한다. 메모리(360)는 운영 체제(OS)(361), 및 하나 이상의 애플리케이션들(362)을 포함한다.
RF 트랜시버(310)는 안테나(305)에서, 액세스 포인트(예를 들면, 기지국, WI-FI 라우터 또는 BLUETOOTH 장치) 또는 네트워크(102)의 다른 장치(예를 들면, WI-FI, BLUETOOTH, 셀룰러, 5G, LTE, LTE-A, WiMAX 또는 임의의 다른 타입의 무선 네트워크)로부터 송신되는 내향(incoming) RF 신호를 수신한다. RF 트랜시버(310)는 내향 RF 신호를 하향 변환하여 중간 주파수 또는 기저대역 신호를 생성한다. 중간 주파수 또는 기저대역 신호는 기저대역 또는 중간 주파수 신호를 필터링, 디코딩 및/또는 디지털화함으로써 처리된 기저대역 신호를 생성하는 RX 처리 회로(325)로 전송된다. RX 처리 회로(325)는 처리된 기저대역 신호를 스피커(330)로 송신하거나(예를 들면, 음성 데이터용) 또는 추가 처리를 위해 프로세서(340)로 송신한다(예를 들면, 웹 브라우징 데이터용).
TX 처리 회로(315)는 마이크로폰(320)으로부터 아날로그 또는 디지털 음성 데이터를 수신하거나 프로세서(340)로부터 다른 외향(outgoing) 기저대역 데이터를 수신한다. 외향 기저대역 데이터는 웹 데이터, 이메일 또는 대화형 비디오 게임 데이터를 포함할 수 있다. TX 처리 회로(315)는 외향 기저대역 데이터를 인코딩, 다중화 및/또는 디지털화함으로써 처리된 기저대역 또는 중간 주파수 신호를 생성한다. RF 트랜시버(310)는 TX 처리 회로(315)로부터 외향 처리된 기저대역 또는 중간 주파수 신호를 수신하고, 기저대역 또는 중간 주파수 신호를 안테나(305)를 통해 송신되는 RF 신호로 상향 변환한다.
프로세서(340)는 하나 이상의 프로세서들 또는 다른 처리 장치들을 포함할 수 있다. 프로세서(340)는 전자 장치(300)의 전반적인 동작을 제어하기 위해 OS(361)와 같은 메모리(360)에 저장된 명령어들을 실행할 수 있다. 예를 들어, 프로세서(340)는 잘 알려진 원리들에 따라 RF 트랜시버(310), RX 처리 회로(325), 및 TX 처리 회로(315)에 의한 순방향 채널 신호들의 수신 및 역방향 채널 신호들의 송신을 제어할 수 있다. 프로세서(340)는 임의의 적절한 배열로 임의의 적절한 수(들) 및 타입(들)의 프로세서들 또는 다른 장치들을 포함할 수 있다. 예를 들어, 특정 실시예들에서, 프로세서(340)는 적어도 하나의 마이크로프로세서 또는 마이크로컨트롤러를 포함한다. 프로세서(340)의 예시적인 타입들로는 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서, 필드 프로그램 가능 게이트 어레이, 주문형 집적 회로, 및 이산 회로를 포함한다.
프로세서(340)는 또한 데이터를 수신하고 저장하는 동작들과 같이, 메모리(360)에 상주하는 다른 프로세스들 및 프로그램들을 실행할 수 있다. 프로세서(340)는 실행 프로세스에 의해 요구되는 대로 데이터를 메모리(360) 내로 또는 메모리(360) 밖으로 이동시킬 수 있다. 특정 실시예들에서, 프로세서(340)는 OS(361)에 기초하여 또는 외부 소스(들) 또는 오퍼레이터로부터 수신된 신호들에 응답하여, 하나 이상의 애플리케이션들(362)을 실행하도록 구성된다. 예를 들어, 애플리케이션(362)은 인코더, 디코더, VR 또는 AR 애플리케이션, 카메라 애플리케이션(정지 이미지 및 비디오용), 화상 통화 애플리케이션, 이메일 클라이언트, 소셜 미디어 클라이언트, SMS 메시징 클라이언트, 가상 어시스턴트 등을 포함할 수 있다. 특정 실시예들에서, 프로세서(340)는 미디어 컨텐츠를 수신 및 송신하도록 구성된다.
프로세서(340)는 또한 전자 장치(300)에 대하여 클라이언트 장치들(106-114)과 같은 다른 장치들에 연결하는 능력을 제공하는 I/O 인터페이스(345)에 커플링된다. I/O 인터페이스(345)는 이러한 보조 장치들과 프로세서(340) 간의 통신 경로이다.
프로세서(340)는 또한 입력부(350) 및 디스플레이(355)에 커플링된다. 전자 장치(300)의 오퍼레이터는 입력부(350)를 사용하여 전자 장치(300)에 데이터 또는 입력 사항들을 입력할 수 있다. 입력부(350)는 키보드, 터치스크린, 마우스, 트랙 볼, 음성 입력 장치, 또는 사용자가 전자 장치(300)와 상호 작용할 수 있도록 하는 사용자 인터페이스 역할을 하는 다른 장치일 수 있다. 예를 들어, 입력부(350)는 음성 인식 처리를 포함하여, 사용자가 음성 명령을 입력 가능하게 할 수 있다. 다른 예에서, 입력부(350)는 터치 패널, (디지털) 펜 센서, 키, 또는 초음파 입력 장치를 포함할 수 있다. 터치 패널은, 예를 들면, 정전 용량 방식, 압력 감지 방식, 적외선 방식 또는 초음파 방식 등 적어도 하나의 방식으로 터치 입력을 인식할 수 있다. 입력부(350)는 프로세서(340)에 대하여 추가 입력을 제공함으로써 센서(들)(365) 및/또는 카메라와 연관될 수 있다. 특정 실시예들에서, 센서(365)는 하나 이상의 관성 측정 유닛(IMU)(예를 들면 가속도계, 자이로스코프 및 자력계), 모션 센서, 광학 센서, 카메라, 압력 센서, 심박수 센서, 고도계 등을 포함한다. 입력부(350)는 또한 제어 회로를 포함할 수 있다. 정전 용량 방식에서, 입력부(350)는 터치 또는 근접을 인식할 수 있다.
디스플레이(355)는 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 유기 LED(OLED), 능동 매트릭스 OLED(AMOLED), 또는 웹사이트, 비디오, 게임, 이미지 등과 같은 텍스트 및/또는 그래픽을 렌더링할 수 있는 다른 디스플레이일 수 있다. 디스플레이(355)는 HMD 내에 맞도록 크기가 정해질 수 있다. 디스플레이(355)는 단일 디스플레이 스크린 또는 입체 디스플레이를 생성할 수 있는 다중 디스플레이 스크린일 수 있다. 특정 실시예들에서, 디스플레이(355)는 헤드업 디스플레이(HUD)이다. 디스플레이(355)는 3D 포인트 클라우드와 같은, 3D 객체들을 디스플레이할 수 있다.
메모리(360)는 프로세서(340)에 커플링된다. 메모리(360)의 일부는 RAM을 포함할 수 있으며, 메모리(360)의 다른 부분은 플래시 메모리 또는 다른 ROM을 포함할 수 있다. 메모리(360)는 정보(예를 들면 데이터, 프로그램 코드, 및/또는 다른 적절한 정보)를 저장하고 이것의 검색을 용이하게 할 수 있는 임의의 구조(들)를 나타내는 영구 저장소(미도시)를 포함할 수 있다. 메모리(360)는 읽기 전용 메모리, 하드 드라이브, 플래시 메모리 또는 광 디스크와 같은, 데이터의 장기 저장을 지원하는 하나 이상의 구성 요소들 또는 장치들을 포함할 수 있다. 메모리(360)는 또한 미디어 컨텐츠를 포함할 수 있다. 미디어 컨텐츠는 이미지, 비디오, 3차원 컨텐츠, VR 컨텐츠, AR 컨텐츠, 3D 포인트 클라우드 등과 같은 다양한 타입의 미디어를 포함할 수 있다.
전자 장치(300)는 물리량을 계측하거나 전자 장치(300)의 활성화 상태를 감지하고 계측 또는 감지된 정보를 전기 신호로 변환할 수 있는 하나 이상의 센서(365)를 더 포함한다. 예를 들어, 센서(365)는 터치 입력을 위한 하나 이상의 버튼, 카메라, 제스처 센서, IMU 센서(예를 들면, 자이로스코프 또는 자이로 센서 및 가속도계), 아이 트래킹 센서, 기압 센서, 자기 센서 또는 자력계, 그립 센서, 근접 센서, 컬러 센서, 생체 센서, 온/습도 센서, 조도 센서, 자외선(UV) 센서, 근전도(EMG) 센서, 뇌파(EEG) 센서, 심전도(ECG) 센서, IR 센서, 초음파 센서, 홍채 센서, 지문 센서, 컬러 센서(예를 들면, RGB(Red Green Blue) 센서) 등을 포함할 수 있다. 센서(365)는 그 안에 포함된 임의의 센서를 제어하기 위한 제어 회로를 더 포함할 수 있다.
아래에서 더 자세히 논의되는 바와 같이, 이러한 센서(들)(365) 중 하나 이상은 사용자 인터페이스(UI)를 제어하고, UI 입력들을 검출하고, 배향을 결정하고, 3차원 컨텐츠 디스플레이 식별을 위해 사용자의 방향을 향하게 하는 등을 수행하는데 사용될 수 있다. 이러한 센서(들)(365) 중 임의의 것은 전자 장치(300) 내에 위치되거나, 전자 장치(300)에 작동 가능하게 연결된 보조 장치 내에 위치되거나, 전자 장치(300)를 유지하도록 구성된 헤드셋 내에 위치되거나, 또는 단일 장치(여기서 전자 장치(300)는 헤드셋을 포함함)에 위치될 수 있다.
전자 장치(300)는 미디어 컨텐츠를 생성할 수 있으며 예를 들면 3D 포인트 클라우드를 생성하거나 또는 카메라를 통해 컨텐츠를 캡처(또는 녹화)할 수 있다. 전자 장치(300)는 비트스트림이 다른 전자 장치에 직접적으로 송신되거나 또는 간접적으로(예를 들면 도 1의 네트워크(102)를 통해) 송신될 수 있도록, 비트스트림(위에서 설명된 서버(200)와 유사)을 생성하기 위해 미디어 컨텐츠를 인코딩할 수 있다. 전자 장치(300)는 비트스트림을 다른 전자 장치로부터 직접적으로 수신하거나 또는 간접적으로(예를 들면 도 1의 네트워크(102)를 통해) 수신할 수 있다.
전자 장치(300)는 포인트 클라우드와 같은 미디어 컨텐츠를 인코딩할 때, 포인트 클라우드를 복수의 패치(patch)로 프로젝션할 수 있다. 예를 들어, 포인트 클라우드의 포인트 클러스터는 함께 그룹화되어 2D 프레임들 상에 패치로서 표현될 수 있다. 패치는 지오메트리, 컬러 등과 같은 포인트 클라우드의 단일 어트리뷰트를 나타낼 수 있다. 동일한 어트리뷰트를 나타내는 패치들은 각각 개별 2D 프레임들에 패킹될 수 있다. 그런 다음 2D 프레임들을 인코딩하여 비트스트림을 생성한다. 인코딩 프로세스 동안 메타데이터, 플래그, 점유 맵, 지오메트리 스무딩 파라미터, 하나 이상의 어트리뷰트 스무딩 파라미터, 패치 서브-스트림 등과 같은 추가 컨텐츠가 비트스트림에 포함될 수 있다.
유사하게, 전자 장치(300)는 3D 포인트 클라우드를 나타내는 비트스트림에 포함된 미디어 컨텐츠를 디코딩할 때, 수신된 비트스트림을 프레임들로 디코딩할 수 있다. 특정 실시예들에서, 디코딩된 비트스트림은 또한 점유 맵, 2D 프레임, 보조 정보 등을 포함한다. 지오메트리 프레임은 3D 공간에서 포인트 클라우드의 포인트들의 지리적 좌표들을 나타내는 픽셀들을 포함할 수 있다. 유사하게, 어트리뷰트 프레임은 3D 공간에서 각 지오메트리 포인트의 RGB(또는 YUV) 컬러(또는 다른 어트리뷰트)를 나타내는 픽셀들을 포함할 수 있다. 보조 정보는 하나 이상의 플래그, 또는 양자화 파라미터 크기, 하나 이상의 임계값, 지오메트리 스무딩 파라미터, 하나 이상의 어트리뷰트 스무딩 파라미터, 패치 서브-스트림, 또는 이들의 임의의 조합을 포함할 수 있다. 3D 포인트 클라우드를 재구성한 후, 전자 장치(300)는 디스플레이(355)를 통해 3D 포인트 클라우드를 3차원으로 렌더링할 수 있다.
도 2 및 도 3이 전자 장치들의 예를 도시하고 있지만, 도 2 및 도 3에 다양한 변경이 이루어질 수 있다. 예를 들어, 도 2 및 도 3의 다양한 구성 요소들이 결합되거나, 추가로 세분화되거나, 생략될 수 있으며, 특정 요구에 따라 추가 구성 요소들이 부가될 수 있다. 특정 예로서, 프로세서(340)는 하나 이상의 중앙 처리 장치(CPU) 및 하나 이상의 그래픽 처리 장치(GPU)와 같은, 다중 프로세서로 분할될 수 있다. 또한, 컴퓨팅 및 통신에서와 같이, 전자 장치들 및 서버들은 매우 다양한 구성으로 제공될 수 있으며, 도 2 및 도 3은 본 개시를 임의의 특정 전자 장치 또는 서버로 제한하지 않는다.
도 4a, 4b, 4c, 4d 및 4e는 3D 포인트 클라우드를 나타내는 프레임들을 생성하는 다양한 단계들을 도시한 것이다. 특히, 도 4a는 본 개시의 일 실시예에 따른 예시적인 3D 포인트 클라우드(400)를 도시한 것이다. 도 4b는 본 개시의 일 실시예에 따른 다중 프로젝션 평면에 의해 둘러싸인 포인트 클라우드의 다이어그램(405)을 도시한 것이다. 도 4c 및 도 4d는 본 개시의 일 실시예에 따른 도 4a의 3D 포인트 클라우드(400)를 나타내는 패치들을 포함하는 2D 프레임들을 도시한 것이다. 예를 들어, 도 4c는 3D 포인트 클라우드(400)의 포인트들의 기하학적 위치를 나타내는 2D 프레임(430)을 도시하고 있고, 도 4d는 3D 포인트 클라우드(400)의 포인트들과 연관된 컬러(또는 다른 어트리뷰트)를 나타내는 프레임(440)을 도시하고 있다. 도 4e는 재구성된 포인트 클라우드(450)에서의 예시적인 컬러 아티팩트를 도시한 것이다. 특정 실시예들에서, 재구성된 포인트 클라우드(450)는 도 4a의 3D 포인트 클라우드(400)와 유사하다.
도 4a의 3D 포인트 클라우드(400)는 3D 공간에 있는 데이터 포인트들의 세트이다. 3D 포인트 클라우드(400)의 각 포인트는 3D 포인트 클라우드의 구조를 제공하는 기하학적 위치와 컬러, 반사도, 재질 등과 같은 각 포인트에 대한 정보를 제공하는 하나 이상의 어트리뷰트를 포함한다. 3D 포인트 클라우드(400)는 전체 360˚ 객체를 나타낸다. 즉, 포인트 클라우드는 전면(402), 측면, 후면(402), 상단, 하단 등 다양한 각도에서 볼 수 있다.
도 4b의 다이어그램(405)은 포인트 클라우드(406)를 포함한다. 포인트 클라우드(406)는 도 4a의 3D 포인트 클라우드(400)와 유사할 수 있다. 즉, 포인트 클라우드(406)는 전체 360˚ 객체를 나타낸다. 포인트 클라우드(406)는 프로젝션 평면(410, 412, 414, 416, 418, 420)과 같은 다중 프로젝션 평면으로 둘러싸여 있다. 프로젝션 평면(410)은 사전 정의된 거리만큼 프로젝션 평면(412)으로부터 분리된다. 예를 들어, 프로젝션 평면(410)은 프로젝션 평면 XZ0에 대응하고, 프로젝션 평면(412)은 프로젝션 평면 XZ1에 대응한다. 유사하게, 프로젝션 평면(414)은 사전 정의된 거리만큼 프로젝션 평면(416)으로부터 분리된다. 예를 들어, 프로젝션 평면(414)은 프로젝션 평면 YZ0에 대응하고, 프로젝션 평면(416)은 프로젝션 평면 YZ1에 대응한다. 추가적으로, 프로젝션 평면(418)은 사전 정의된 거리만큼 프로젝션 평면(420)으로부터 분리된다. 예를 들어, 프로젝션 평면(418)은 프로젝션 평면 XY0에 대응하고, 프로젝션 평면(420)은 프로젝션 평면 XY1에 대응한다. 추가 프로젝션 평면이 포함될 수 있으며, 프로젝션 평면들이 형성하는 형상이 다를 수 있음에 유의한다.
세그멘테이션 프로세스 동안, 포인트 클라우드(406)의 각 포인트들은 특정 프로젝션 평면(예를 들면, 프로젝션 평면(410, 412, 414, 416, 418 및 420))에 할당된다. 서로 근접해 있으면서 또한 동일한 프로젝션 평면에 할당된 포인트들이 함께 그룹화됨으로써 도 4c 및 도 4d에 도시된 패치들 중 임의의 것과 같은 패치로 표현되는 클러스터를 형성한다.
도 4c 및 도 4d는 각각 2D 프레임들(430 및 440)을 도시한 것이다. 프레임(430)은 도 4a의 3D 포인트 클라우드(400)의 각 포인트의 기하학적 위치를 제공하기 때문에 지오메트리 프레임이다. 프레임(430)은 3D 포인트 클라우드(400)의 깊이 값들을 나타내는 다수의 패치들(예를 들면, 패치(432))을 포함한다. 프레임(430)의 각 픽셀의 값은 더 밝거나 더 어두운 컬러로 표현되며, 특정 프로젝션 평면(예를 들면, 도 4b의 프로젝션 평면(410, 412, 414, 416, 418 및 420) 중 하나)으로부터의 각 픽셀의 거리에 대응한다.
프레임(440)은 도 4a의 3D 포인트 클라우드(400)의 각 포인트의 컬러를 제공하는 컬러 프레임(어트리뷰트의 한 타입)이다. 프레임(440)은 3D 포인트 클라우드(400)에서의 포인트의 컬러에 대응하는 값들을 나타내는 다수의 패치들(예를 들면, 패치(442))을 포함한다.
도 4c 및 도 4d의 패치들 각각은 인덱스 번호에 의해 식별될 수 있다. 유사하게, 패치 내의 각 픽셀은 프레임 내의 위치와 픽셀이 있는 패치의 인덱스 번호에 의해서 식별될 수 있다.
프레임(430)과 프레임(440) 사이에는 대응 관계(또는 매핑)이 존재한다. 즉, 프레임(430)의 각 픽셀은 프레임(440)의 동일한 위치에 있는 픽셀에 대응한다. 프레임(440)의 각 컬러 픽셀은 프레임(430)의 특정 지오메트리 픽셀에 대응한다. 예를 들어, 프레임(430)과 프레임(440)의 각 픽셀 사이에 매핑이 생성된다. 예를 들어, 패치(432) 내의 각 픽셀은 3D 공간의 한 포인트에 대응하고, 패치(442) 내의 각 픽셀은 패치(432)의 동일한 위치에 표현되는 3D 포인트 클라우드의 한 포인트에 대하여 컬러를 제공한다. 프레임들(430 및 440)에 도시된 바와 같이, 일부 픽셀들은 3D 포인트 클라우드(400)를 나타내는 유효한 픽셀들에 해당하고, 다른 픽셀들(배경의 검은색 영역)은 3D 포인트 클라우드(400)를 나타내지 않는 유효하지 않은 픽셀들에 해당한다.
3D 공간에서 인웃하지 않은 포인트들은 프레임들(430 및 440)에서 서로 옆에 있는 픽셀들로 표현될 수 있다. 예를 들어, 3D 공간에서 서로 옆에 있지 않은 두 개의 포인트 클러스터는 프레임들(430 및 440)에서 서로 인접한 패치들로 표현될 수 있다.
프레임들(430 및 440)은 HEVC, AVC, VP9, VP8, VVC, AV1 등과 같은 비디오 코덱으로 인코딩될 수 있다. 디코더는 프레임들(430 및 440)을 포함하는 비트스트림을 수신하고, 도 4e에 도시된 바와 같이 재구성된 포인트 클라우드(450)를 생성하기 위해 프레임(430)으로부터 3D 포인트 클라우드의 지오메트리를 재구성하고, 프레임(440)을 기반으로 포인트 클라우드의 지오메트리를 컬러링한다.
도 4e의 재구성된 포인트 클라우드(450)는 3D 포인트 클라우드(400)와 유사해야 한다. 프레임들(430 및 440)을 인코딩 및 압축하는 경우, 블록 기반 비디오 코덱에 의해 픽셀들에 대응하는 값들이 뒤섞일 수 있다. 프레임(430)의 단일 패치 내의 픽셀들이 뒤섞이는 경우에는, 패치 내의 서로 옆에 있는 컬러들이 종종 유사하기 때문에 포인트 클라우드가 재구성될 때 효과는 종종 무시할 수 있다. 그러나, 패치(432)와 같은, 프레임(430)의 패치들 중 하나의 경계에 있는 픽셀들이 다른 패치의 픽셀들과 뒤섞이게 되는 경우에는, 포인트 클라우드가 재구성될 때 도 4e에 도시된 아티팩트(452)와 유사한 아티팩트가 생성될 수 있다. 패치들은 포인트 클라우드의 완전히 다른 부분들에서 온 것일 수 있으므로, 패치들의 컬러링이 다를 수 있다. 블록 기반 비디오 코덱에서, 코딩 블록은 컬러링이 매우 다른 패치들로부터의 픽셀들을 포함할 수 있다. 이로 인해 패치에서 텍스처가 매우 다른 다른 패치로 컬러가 유출된다. 결과적으로, 포인트 클라우드의 시각적 품질을 저하시키는 시각적 아티팩트들이 생성된다. 마찬가지로, 패치들 중 하나의 경계에 있는 픽셀들이 빈 픽셀(검은색 배경으로 표시되고 포인트 클라우드의 포인트에 해당하지 않음)과 뒤섞이게 되는 경우, 블랭크 픽셀로 전환된 픽셀에 해당하는 포인트는 재구성되지 않기 때문에, 포인트 클라우드를 재구성할 때 아티팩트가 생성될 수 있다.
재구성된 포인트 클라우드(450)는 아티팩트(452)를 보여주고 있다. 아티팩트(452)는 3D 포인트 클라우드(400)로 표현된 모델의 이마에 대응하는 패치가 3D 포인트 클라우드(400)의 다른 부분(예를 들면, 3D 포인트 클라우드(400)로 표현된 모델의 드레스)에 대응하는 패치 옆의 프레임(430)에 패킹될 때 생성될 수 있다. 이와 같이, 3D 포인트 클라우드(400)로 표현된 모델의 이마에 대응하는 패치로 드레스의 일부를 나타내는 패치의 컬러 값들이 유출될 수 있다. 이 예에서, 컬러 값들의 뒤섞임은 사용자의 얼굴에 균열 또는 구멍으로 나타나는 아티팩트를 초래하며 이로 인해 재구성된 포인트 클라우드(450)의 시각적 품질이 저하된다. 본 개시의 실시예들은 포인트 클라우드의 품질을 유지하면서 아티팩트 영역들에 있는 재구성된 포인트 클라우드를 스무딩(smoothing)함으로써 아티팩트들을 제거하기 위한 시스템 및 방법을 제공한다. 예를 들어, 재구성된 포인트 클라우드의 패치 경계들 근처의 포인트들이 식별되고 스무딩된다.
도 4a, 4b, 4c 및 4d가 예시적인 포인트 클라우드 및 포인트 클라우드를 나타내는 2D 프레임들을 도시하고 있지만, 도 4a, 4b, 4c 및 4d에 다양한 변경이 이루어질 수 있다. 예를 들어, 포인트 클라우드 또는 메쉬가 단일 객체를 나타낼 수 있는 한편, 다른 실시예들에서는, 포인트 클라우드 또는 메쉬가 다중 객체, 배경(예를 들면, 랜드스케이프), AR의 가상 객체 등을 나타낼 수 있다. 다른 예에서, 2D 프레임들에 포함되는 패치들은 휘도, 재질 등과 같은 다른 어트리뷰트들을 나타낼 수 있다. 도 4a, 4b, 4c 및 4d는 본 개시를 임의의 특정 3D 객체(들) 및 3D 객체(들)를 나타내는 2D 프레임들로 제한하지 않는다.
도 5a, 5b 및 5c는 본 개시의 일 실시예에 따른 블록도를 도시한 것이다. 특히, 도 5a는 본 개시의 일 실시예에 따른 예시적인 환경 아키텍처(500)의 블록도를 도시한 것이다. 도 5b는 도 5a의 인코더(510)의 예시적인 블록도를 도시한 것이고, 도 5c는 본 개시의 실시예에 따른 도 5a의 디코더(550)의 예시적인 블록도를 도시한 것이다. 도 5a, 5b 및 5c의 실시예는 단지 예시를 위한 것이다. 본 개시의 범위를 벗어나지 않고 다른 실시예들이 사용될 수 있다.
도 5a에 도시된 바와 같이, 예시적인 환경 아키텍처(500)는 네트워크(502)를 통해 통신하는 인코더(510) 및 디코더(550)를 포함한다. 네트워크(502)는 도 1의 네트워크(102)와 동일하거나 유사할 수 있다. 특정 실시예들에서, 네트워크(502)는 하나 이상의 네트워크에 의해 상호 연결되는 컴퓨터들의 "클라우드(cloud)"를 나타내며, 여기서 네트워크는 액세스될 때 심리스 리소스들의 단일 풀로서 기능하는 클러스터링된 컴퓨터들 및 구성 요소들을 활용하는 컴퓨팅 시스템이다. 또한, 특정 실시예들에서, 네트워크(502)는 하나 이상의 서버(예를 들면, 도 1의 서버(104), 서버(200)), 하나 이상의 전자 장치(예를 들면, 도 1의 클라이언트 장치(106-116), 전자 장치(300)), 인코더(510) 및 디코더(550)를 포함한다. 또한, 특정 실시예들에서, 네트워크(502)는 인코더(510)에 의해 인코딩되거나, 디코더(550)에 의해 디코딩되거나, 또는 전자 장치에 렌더링 및 디스플레이될 수 있는 VR 및 AR 미디어 컨텐츠를 포함하는 정보 저장소(미도시)에 연결될 수 있다.
특정 실시예들에서, 인코더(510) 및 디코더(550)는 도 1의 서버(104), 클라이언트 장치들(106-116) 중 하나, 도 2의 서버(200), 도 3의 전자 장치(300), 또는 다른 적절한 장치를 나타낼 수 있다. 특정 실시예들에서, 인코더(510) 및 디코더(550)는 하나 이상의 네트워크에 의해 상호 연결된 컴퓨터들의 "클라우드"일 수 있으며, 여기서 그 각각은 네트워크(502)를 통해 액세스될 때 심리스 리소스들의 단일 풀로서 기능하는 클러스터링된 컴퓨터들 및 구성 요소들을 활용하는 컴퓨팅 시스템이다. 일부 실시예들에서, 인코더(510) 또는 디코더(550)에 포함된 구성 요소들의 일부는 다중 서버(104 또는 200), 다중 클라이언트 장치(106-116), 또는 상이한 디바이스들의 다른 조합과 같은 상이한 디바이스들에 포함될 수 있다. 특정 실시예들에서, 인코더(510)는 전자 장치 또는 서버에 작동 가능하게 연결되며, 디코더(550)는 전자 장치에 작동 가능하게 연결된다. 특정 실시예들에서, 인코더(510) 및 디코더(550)는 동일한 장치이거나 또는 동일한 장치에 작동 가능하게 연결된다.
인코더(510)는 아래의 도 5b에서 더 설명된다. 일반적으로, 인코더(510)는 서버(도 1의 서버(104), 도 2의 서버(200)와 유사) 또는 정보 저장소(예를 들면, 데이터베이스), 또는 클라이언트 장치들(106-116) 중 하나와 같은 다른 장치로부터, 포인트 클라우드와 같은 3D 미디어 컨텐츠를 수신한다. 특정 실시예들에서, 인코더(510)는 다수의 카메라로부터 미디어 컨텐츠를 수신하고, 이 컨텐츠를 함께 스티칭하여 하나 이상의 포인트 클라우드를 포함하는 3D 장면을 생성할 수 있다.
인코더(510)는 포인트 클라우드의 포인트들을, 그 프로젝션을 나타내는 다수의 패치들로 프로젝션한다. 인코더(510)는 포인트 클라우드의 포인트들을, XY 평면, YZ 평면 및 XZ 평면과 같은 서로 다른 평면들 상에 프로젝션되는 그룹들로 클러스터링한다. 각각의 포인트 클러스터는 평면 상에 프로젝션될 시에 패치에 의해 표현된다. 인코더(510)는 포인트 클라우드를 2D 프레임 상에 2차원으로 프로젝션할 수 있다. 3D 포인트 클라우드의 포인트는 (X, Y, Z) 좌표값을 기준으로 3D 공간에 위치하지만, 이 포인트가 2D 프레임 상에 프로젝션될 경우 프로젝션된 포인트를 나타내는 픽셀은 좌표 (u, v)로 표시되는 프레임의 열 및 행 인덱스에 의해서 나타내진다. 또한, 'u' 및 'v'의 범위는 각각 0에서 깊이 이미지의 행 또는 열의 개수까지일 수 있다.
인코더(510)는 포인트 클라우드를 나타내는 패치들을 2D 프레임들에 패킹한다. 2D 프레임들은 비디오 프레임들일 수 있다. 각각의 2D 프레임들은 특정 어트리뷰트를 나타내며, 예를 들어 하나의 프레임 세트가 지오메트리를 나타내고 다른 프레임 세트는 어트리뷰트(예를 들면, 컬러)을 나타낼 수 있다. 더 많은 레이어들 및 각각의 추가 정의된 어트리뷰트에 기초하여 추가 프레임들이 생성될 수 있음에 유의해야 한다.
인코더(510)는 또한 프레임들 내의 어느 픽셀들이 유효한지를 나타내기 위해 지오메트리 프레임 및 어트리뷰트 프레임(들)에 기초하여 점유 맵(occupancy map)을 생성한다. 일반적으로, 점유 맵은 프레임 내의 각 픽셀에 대해 그 픽셀이 유효한 픽셀인지 또는 유효하지 않은 픽셀인지 여부를 나타낸다. 예를 들어, 좌표 (u, v)에 있는 점유 맵의 픽셀이 유효한 경우, 지오메트리 프레임의 대응 픽셀과 좌표 (u, v)의 대응 어트리뷰트 프레임도 유효하다. 좌표 (u, v)에 있는 점유 맵의 픽셀이 유효하지 않은 경우, 디코더는 좌표 (u, v)에 있는 지오메트리 및 어트리뷰트 프레임들의 대응 픽셀을 건너뛴다. 특정 실시예들에서, 위치 (u, v)에서의 점유 맵은 1 또는 0일 수 있다. 일반적으로, 점유 맵은 각 픽셀의 값이 1 또는 0이 되도록 하는 이진수이다. 점유 맵의 위치 (u, v)에 있는 픽셀의 값이 1인 경우, 이것은 어트리뷰트 프레임 및 지오메트리 프레임의 (u, v)에 있는 픽셀이 유효함을 나타낸다. 이에 반해, 점유 맵의 위치 (u, v)에 있는 픽셀 값이 0인 경우, 이것은 어트리뷰트 프레임 및 지오메트리 프레임의 (u, v)에 있는 픽셀이 유효하지 않음을 나타낸다.
특정 실시예들에서, 인코더(510)는 지오메트리 프레임, 어트리뷰트 프레임 및 점유 맵 프레임을 사용하여 포인트 클라우드를 재구성한다. 인코더(510)는 프레임들 중 한 프레임의 패치들 중 하나의 경계 상에 또는 그 근처에서 표현되었던 재구성된 3D 포인트 클라우드 상의 포인트들을 식별할 수 있다. 그 후에, 인코더(510)는 식별된 경계 포인트들에 대해 스무딩을 수행할지 여부를 결정할 수 있다.
인코더(510)는 포인트 클라우드를 나타내는 프레임들을, 인코딩된 비트스트림으로서 송신한다. 비트스트림은 또한 식별된 경계 포인트들의 일부 또는 전부에 대한 스무딩이 수행되는 경우 스무딩의 파라미터들을 포함할 수 있다. 비트스트림은 네트워크(502)를 통해 정보 저장소(예를 들면, 데이터베이스) 또는 디코더(예를 들면, 디코더(550))를 포함하는 전자 장치, 또는 디코더(550) 자체로 송신될 수 있다. 인코더(510)는 아래의 도 5b에서 더 상세히 설명된다.
아래의 도 5c에서 더 설명되는 디코더(550)는, 포인트 클라우드와 같은 미디어 컨텐츠를 나타내는 비트스트림을 수신한다. 비트스트림들은 3D 포인트 클라우드를 나타내는 데이터를 포함할 수 있다. 특정 실시예들에서, 디코더(550)는 비트스트림을 디코딩하여 하나 이상의 지오메트리 프레임, 하나 이상의 어트리뷰트 프레임, 및 하나 이상의 점유 맵 프레임과 같은 다중 프레임을 생성할 수 있다. 디코더(550)는 사용자에 의해 렌더링되고 보여질 수 있는 다중 프레임을 사용하여 포인트 클라우드를 재구성한다. 디코더(550)는 프레임들 중 하나의 프레임의 패치들 중 하나의 경계 상에 또는 그 근처에 표현되었던 재구성된 3D 포인트 클라우드 상의 포인트들을 식별할 수 있다. 그 후에, 디코더(550)는 식별된 경계 포인트들에 대해 스무딩을 수행할지 여부를 결정할 수 있다.
도 5b는 3D 포인트 클라우드(512)를 수신하고 비트스트림(546)을 생성하는 인코더(510)를 도시한 것이다. 비트스트림(546)은 3D 포인트 클라우드(512)를 나타내는 데이터를 포함한다. 비트스트림(546)은 다중 비트스트림을 포함할 수 있으며, 도 5a의 네트워크(502)를 통해 디코더(550) 또는 정보 저장소와 같은 다른 장치로 송신될 수 있다. 인코더(510)는 패치 생성기 및 패커(packer)(514), 하나 이상의 인코딩 엔진(예를 들면, 인코딩 엔진(520a, 520b, 520c, 및 520d), 집합적으로 인코딩 엔진(520)이라고 함)), 재구성 엔진(528), 경계 검출 엔진(530), 지오메트리 스무딩 엔진(538a), 어트리뷰트 스무딩 엔진(538b), 및 멀티플렉서(542)를 포함한다.
3D 포인트 클라우드(512)는 메모리(미도시)에 저장되거나 다른 전자 장치(미도시)로부터 수신될 수 있다. 3D 포인트 클라우드(512)는 단일 3D 객체(도 4a의 3D 포인트 클라우드(400)와 유사), 또는 3D 객체들의 그룹일 수 있다. 3D 포인트 클라우드(512)는 정지된 객체 또는 움직이는 객체일 수 있다.
패치 생성기 및 패커(514)는 3D 포인트 클라우드(512)의 프로젝션들을 취함으로써 패치들을 생성하고 이 패치들을 프레임들에 패킹한다. 특정 실시예들에서, 패치 생성기 및 패커(514)는 3D 포인트 클라우드(512)의 각 포인트의 지오메트리 정보 및 어트리뷰트 정보를 분할한다. 패치 생성기 및 패커(514)는 3D 포인트 클라우드(512)의 포인트들을 클러스터링하여 패치들을 생성하기 위해, 2개 이상의 프로젝션 평면(예를 들면, 도 4b의 2개 이상의 프로젝션 평면(410-420))을 사용할 수 있다. 지오메트리 패치들은 궁극적으로 지오메트리 프레임들(518)에 패킹된다.
패치 생성기 및 패커(514)는 3D 포인트 클라우드(512)의 각 포인트에 대한 최적의 프로젝션 평면을 결정한다. 프로젝션될 경우, 3D 포인트 클라우드(512)의 각 포인트 클러스터는 패치(레귤러 패치라고도 함)로서 나타난다. 단일의 포인트 클러스터가 다중 패치(상이한 프레임들 상에 위치)에 의해 표현될 수 있으며, 여기서 각 패치는 포인트 클러스터 내에 있는 각 포인트의 특정 측면을 나타낸다. 예를 들어, 포인트 클러스터의 기하학적 위치들을 나타내는 패치가 지오메트리 프레임(518)에 위치되고, 포인트 클러스터의 어트리뷰트를 나타내는 패치는 어트리뷰트 프레임(534)에 위치된다.
3D 포인트 클라우드(512)의 각 포인트에 대한 최적의 프로젝션 평면을 결정한 후, 패치 생성기 및 패커(514)는 포인트들을, 지오메트리 프레임(518)과 같은 패킹된 프레임들인 패치 데이터 구조들로 세그멘테이션한다. 위에서 논의된, 도 4c 및 도 4d에 도시된 바와 같이, 패치들이 어트리뷰트들에 의해 구성되고 대응하는 프레임들 내에 이 패치들을 배치하며, 예를 들면, 패치(432)가 지오메트리 프레임(430)에 포함되고 패치(442)가 어트리뷰트 프레임(440)에 포함된다. 동일한 포인트 클러스터의 서로 다른 어트리뷰트들을 나타내는 패치들은 대응 관계 또는 매핑을 포함하며, 픽셀들의 위치들이 각각의 프레임들에서 동일한 위치에 있다는 점에 기초하여, 이러한 하나의 패치에 있는 픽셀은 다른 패치에 있는 동일한 픽셀에 대응한다.
패치 생성기 및 패커(514)는 또한 패치 정보(각 패치와 연관된 인덱스 번호와 같은 패치들에 대한 정보 제공), 점유 맵 프레임들(516), 지오메트리 프레임들(518) 및 어트리뷰트 정보(어트리뷰트 프레임들(534)을 생성하기 위해 어트리뷰트 생성기(532)에 의해 사용됨)를 생성한다.
점유 맵 프레임들(516)은 프레임들(예를 들면, 지오메트리 프레임들(518))의 유효 픽셀들을 나타내는 점유 맵들을 나타낸다. 예를 들어, 점유 맵 프레임들(516)은 지오메트리 프레임(518)의 각 픽셀이 유효 픽셀인지 또는 유효하지 않은 픽셀인지 여부를 표시한다. 점유 맵 프레임(516)의 각 유효 픽셀은 3D 공간에서 3D 포인트 클라우드(512)의 위치 포인트를 나타내는 지오메트리 프레임들(518)의 픽셀들에 대응한다. 대조적으로, 유효하지 않은 픽셀들은 점유 맵 프레임들(516) 내의 픽셀들이며 3D 포인트 클라우드(512)의 포인트를 나타내지 않는 지오메트리 프레임들(518)의 픽셀들에 대응한다(예를 들면, 도 4c 및 도 4d의 프레임들(430 및 440)의 빈/검은색 공간). 특정 실시예들에서, 점유 맵 프레임들(516) 중 하나는 지오메트리 프레임(518) 및 어트리뷰트 프레임(534) 모두에 대응할 수 있다(아래에서 논의됨).
예를 들어, 패치 생성기 및 패커(514)가 점유 맵 프레임들(516)을 생성할 경우, 점유 맵 프레임들(516)은 0 또는 1과 같은, 각 픽셀에 대한 미리 정의된 값들을 포함한다. 예를 들어, 위치 (u, v)에 있는 점유 맵의 픽셀이 0의 값일 경우, 이것은 지오메트리 프레임(518)의 (u, v)에 있는 픽셀이 유효하지 않음을 나타낸다. 유사하게, 위치 (u, v)에 있는 점유 맵의 픽셀이 1의 값일 경우, 지오메트리 프레임(518)의 (u, v)에 있는 픽셀이 유효함을 나타내며 따라서 3D 포인트 클라우드의 포인트를 나타내는 정보를 포함한다.
지오메트리 프레임들(518)은 3D 포인트 클라우드(512)의 지오메트리 값들을 나타내는 픽셀들을 포함한다. 지오메트리 프레임들(518)은 3D 포인트 클라우드(512)의 각 포인트의 지리적 위치를 포함한다. 지오메트리 프레임들(518)은 포인트 클라우드의 지오메트리 정보를 인코딩하는데 사용된다. 예를 들어, 3D 포인트의 두 개의 가로 좌표(프로젝션 평면에 대한)는 지오메트리 비디오 프레임 (u, v)의 열 및 행 인덱스들 플러스 비디오 프레임 내 전체 패치의 위치를 나타내는 가로-오프셋에 대응한다. 3D 포인트의 깊이는 비디오 프레임의 픽셀 값 플러스 패치의 깊이-오프셋으로 인코딩된다. 3D 포인트 클라우드의 깊이는 3D 포인트 클라우드의 프로젝션이 XY 좌표에서 수행되는지, YZ 좌표에서 수행되는지 또는 XZ 좌표에서 수행되는지 여부에 따라 달라진다.
인코더(510)는 하나 이상의 인코딩 엔진을 포함한다. 예를 들어, 인코더(510)는 인코딩 엔진(520a), 인코딩 엔진(520b), 인코딩 엔진(520c), 및 인코딩 엔진(520d)(집합적으로 인코딩 엔진(520)이라 함)을 포함할 수 있다. 특정 실시예들에서는, 단일의 인코딩 엔진이 모든 개별 인코딩 엔진들(520)의 동작들을 수행한다. 특정 실시예들에서, 인코딩 엔진(520)은 8비트, 10비트, 12비트, 14비트, 또는 16비트, 데이터 정밀도를 지원하도록 구성될 수 있다. 인코딩 엔진(520)은 3D 포인트 클라우드를 나타내는 2D 프레임들을 압축하기 위해 HEVC, AVC, VP9, VP8, VVC, EVC, AV1 등과 같은 비디오 또는 이미지 코덱을 포함할 수 있다.
인코딩 엔진들(520) 중의 하나 이상은 손실 또는 무손실 방식으로 정보를 압축할 수 있다.
특정 실시예들에서는, 정보(예를 들면 패치 정보, 점유 맵 프레임들(516), 지오메트리 프레임들(518), 및 어트리뷰트 프레임들(534))가, 도시된 바와 같은 독립적 인코딩 엔진들(520)에 의해 인코딩된다. 예를 들어, 인코딩 엔진(520a)은 패치 시퀀스 정보를 수신하여 패치 시퀀스 압축을 수행함으로써 패치 서브-스트림(522)을 생성한다. 인코딩 엔진(520b)은 점유 맵 프레임들(516)을 수신하여 점유 맵 압축을 수행함으로써 점유 맵 서브-스트림(524a)을 생성한다. 인코딩 엔진(520c)은 지오메트리 프레임들(518)을 수신하여 지오메트리 압축을 수행함으로써 지오메트리 서브-스트림(526a)을 생성한다. 인코딩 엔진(520d)은 어트리뷰트 프레임들(534)을 수신하여 어트리뷰트 압축을 수행함으로써 어트리뷰트 서브-스트림(536)을 생성한다.
특정 실시예들에서, 인코딩 엔진(520b), 인코딩 엔진(520c), 및 인코딩 엔진(520d)은 더 낮은 해상도에서 점유 맵 프레임들(516), 지오메트리 프레임들(518), 및 어트리뷰트 프레임들(534)을 인코딩할 수 있다. 해상도가 낮으면 전체 프레임 크기가 줄어들 수 있다. 점유 맵 프레임들(516), 지오메트리 프레임들(518) 및 어트리뷰트 프레임들(534)이 더 낮은 해상도로 인코딩될 경우, 이 프레임들은 도 5c의 디코더(550)의 디코딩 엔진들에 의해 프레임들이 디코딩된 이후에 프레임들의 원래 크기로 업샘플링되어야 한다.
인코딩 엔진(520b)이 점유 맵 서브-스트림(524a)을 생성한 후, 디코딩 엔진(미도시)은 점유 맵 서브-스트림(524a)을 디코딩하여 재구성된 점유 맵 프레임들(524b)을 생성할 수 있다. 유사하게, 인코딩 엔진(520c)이 지오메트리 서브-스트림(526a)을 생성한 후, 디코딩 엔진(미도시)은 지오메트리 서브-스트림(524a)을 디코딩하여 재구성된 지오메트리 프레임들(526b)을 생성할 수 있다. 특정 실시예들에서, 재구성 엔진(528)은 재구성된 점유 맵 프레임들(524b) 및 재구성된 지오메트리 프레임들(526b)에 기초하여, 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 재구성한다.
어트리뷰트 생성기(532)는 어트리뷰트 프레임들(534)을 생성한다. 어트리뷰트 생성기(532)는 3D 포인트 클라우드(512)로부터의 어트리뷰트 정보, 재구성된 점유 맵 프레임들(524b), 재구성된 지오메트리 프레임들(526b), 및 패치 생성기 및 패커(514)에 의해 제공된 정보에 기초하여 어트리뷰트 프레임들(534)을 생성할 수 있다.
예를 들어, 컬러를 나타내는 어트리뷰트 프레임들(534) 중 하나를 생성하기 위해, 지오메트리 프레임들(518)은 HEVC와 같은 2D 비디오 코덱을 사용하여 인코딩 엔진(520c)에 의해 압축된다. 지오메트리 서브-스트림(526a)이 디코딩되고, 3D 포인트 클라우드의 지오메트리가 재구성 엔진(528)에 의해 재구성된다. 재구성 엔진(528)은 재구성된 지오메트리 프레임들(526b)에 기초하여 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 재구성한다. 어트리뷰트 생성기(532)는 입력 포인트 클라우드의 컬러 값들로부터 각 포인트의 어트리뷰트 값들(예를 들면, 컬러)을 재구성된 포인트 클라우드(또한, 스무딩을 수행한 경우, 포인트 클라우드의 스무딩된 지오메트리 좌표)로 보간한다. 그 다음, 보간된 컬러들이 어트리뷰트 생성기(532)에 의해 세그멘테이션되어 지오메트리 정보와 동일한 패치들을 매칭한다. 그 다음, 어트리뷰트 생성기(532)는 보간된 어트리뷰트 값들을 컬러를 나타내는 어트리뷰트 프레임(534)에 패킹한다.
어트리뷰트 프레임들(534)은 포인트 클라우드의 서로 다른 어트리뷰트들을 나타낸다. 예를 들어, 지오메트리 프레임들(518) 중 하나에 대해 하나 이상의 대응하는 어트리뷰트 프레임들(534)이 있을 수 있다. 어트리뷰트 프레임은 컬러, 텍스처, 법선, 재질 속성들, 반사, 모션 등을 포함할 수 있다. 특정 실시예들에서, 어트리뷰트 프레임들(534) 중 하나는 지오메트리 프레임들(518) 중 하나 내의 지오메트리 포인트들 각각에 대한 컬러 값들을 포함할 수 있는 반면, 다른 어트리뷰트 프레임은 동일한 지오메트리 프레임(518) 내의 각각의 대응하는 지오메트리 포인트의 반사율 레벨을 나타내는 반사율 값들을 포함할 수 있다. 각각의 추가 어트리뷰트 프레임(534)은 특정 지오메트리 프레임(518)과 연관된 다른 어트리뷰트들을 나타낸다. 특정 실시예들에서, 각각의 지오메트리 프임(518)은 적어도 하나의 대응하는 어트리뷰트 프레임(534)을 갖는다.
점유 맵 프레임들(516), 지오메트리 프레임들(518) 및 어트리뷰트 프레임들(534)이 인코딩 엔진(520)에 의해 인코딩되고 나서, 디코더(550)에서 디코딩될 때, 한 패치의 픽셀들이 의도치 않게 다른 패치에 포함될 수 있다. 결과적으로, 재구성된 포인트 클라우드에 가시적인 아티팩트들이 나타나, 포인트 클라우드의 시각적 품질이 저하될 수 있다. 예를 들어, 지오메트리 프레임(518) 내의 픽셀들이 인코딩 및 디코딩 프로세스로 인하여 약간 시프트될 수 있다. 일반적으로, 픽셀이 패치 중간에 있을 때 약간의 시프트는 포인트 클라우드의 시각적 품질을 크게 저하시키지 않을 수 있다. 그러나, 점유 맵에 의해 비어 있는(또는 유효하지 않은) 위치로 패치의 픽셀을 약간 시프트하거나 전환하면, 이미지의 일부가 렌더링되지 않기 때문에 상당한 아티팩트들이 발생할 수 있다. 마찬가지로, 한 패치에서 다른 패치로 픽셀을 약간 시프트하거나 전환하면 상당한 아티팩트들이 발생할 수 있다. 예를 들어, 도 4a의 3D 포인트 클라우드(400)의 얼굴을 포함하는 하나의 패치가, 3D 포인트 클라우드(400)의 드레스를 포함하는 패치 옆에 패킹되고, 인코딩/디코딩 프로세스 결과 픽셀 그룹이 한 패치에서 다른 패치로 이동하는 경우, 재구성된 포인트 클라우는 드레스 상에 얼굴에 대응하는 픽셀들을 가질 수 있으며, 반대로, 재구성 및 렌더링된 포인트 클라우드의 얼굴 상에 드레스에 대응하는 픽셀들을 가질 수 있다. 이러한 시프트로 인해 포인트 클라우드의 시각적 품질을 저하시키는 가시적인 아티팩트가 발생할 수 있다.
아티팩트의 출현을 줄이기 위해, 패치의 경계 근처에 있는 픽셀들로서 2D 프레임들에 표현되는 3D 포인트 클라우드의 포인트들을 스무딩할 수 있다. 시각적 아티팩트의 발생 또는 출현을 줄이고 압축 효율을 높이기 위해, 포인트 클라우드의 포인트들의 위치들, 포인트 클라우드의 각각의 식별된 속성(예를 들면 컬러, 반사도 등), 또는 포인트 클라우드의 지오메트리 및 어트리뷰트 모두에 스무딩을 적용할 수 있다.
3D 포인트 클라우드의 지오메트리, 어트리뷰트, 또는 지오메트리와 어트리뷰트 둘 다스무딩하기 위해, 인코더(510)는, 경계 검출 엔진(530)을 통해, 각 패치의 경계에 위치되거나 그 근처에 위치되는 지오메트리 프레임들(518) 및 어트리뷰트 프레임들(534) 내의 픽셀들을 식별한다. 특정 실시예들에서, 인코딩 엔진(520d)이 어트리뷰트 서브-스트림(536)을 생성한 후, 디코딩 엔진(미도시)이 어트리뷰트 서브-스트림(536)을 디코딩함으로써 재구성된 어트리뷰트 프레임들을 생성할 수 있다. 재구성된 어트리뷰트 프레임들은 재구성된 3D 포인트 클라우드의 포인트들에 대하여 어트리뷰트 정보를 적용함으로써 3D 포인트 클라우드를 재구성하는데 이용될 수 있다. 그 후에, 경계 검출 엔진(530)은 각 패치의 경계에 위치되거나 그 근처에 위치되는 재구성된 지오메트리 프레임들(526b) 및 재구성된 어트리뷰트 프레임들 내의 픽셀들을 식별한다.
경계 검출 엔진(530)은 재구성된 점유 맵 프레임들(524b)의 픽셀들을 검사함으로써 재구성된 지오메트리 프레임들(526b) 내의 패치들의 경계들을 식별한다. 대안적으로, 경계 검출 엔진(530)은 점유 맵 프레임들(516)의 픽셀들을 검사함으로써 지오메트리 프레임들(518) 내의 패치들의 경계들을 식별한다.
경계 검출 엔진(530)은 2D 프레임들에서 패치의 경계에 위치되거나 또는 그 근처에 위치된 포인트 클라우드의 포인트들에 대응하는 픽셀들의 서브세트를 식별하기 위해 점유 맵 프레임들에 대한 싱글 패스(single pass)를 수행한다. 포인트 클라우드의 경계 포인트를 식별하기 위해, 경계 검출 엔진(530)은 쿼리 픽셀에 이웃하는 재구성된 점유 맵 프레임들(524b) 내의 픽셀들을 검사한다. 예를 들어, 경계 검출 엔진(530)은, 점유 맵 프레임 내의 픽셀들의 값에 기초하여, 임의의 패치들의 경계에 대한 근접 임계값 내에 위치된 지오메트리 프레임들(518) 내의 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별한다. 픽셀들의 서브세트는 쿼리 픽셀로부터 미리 정의된 거리에 있는 하나 이상의 픽셀을 포함한다. 예를 들어, 거리는 쿼리 픽셀로부터 1픽셀 거리 내, 쿼리 픽셀로부터 2픽셀 거리 내, 쿼리 픽셀로부터 3픽셀 거리 내 등의 픽셀들을 포함할 수 있다. 거리가 증가함에 따라, 식별되는 경계 포인트의 수도 증가하게 된다.
경계 검출 엔진(530)은 점유 맵 프레임(516) 내의 각 픽셀을 검사한다. 검사는 쿼리 픽셀을 선택하고 쿼리 픽셀의 값에 기초하여 쿼리 픽셀이 유효한지 여부를 식별하는 것을 포함한다. 쿼리 픽셀이 유효하지 않은 경우, 경계 검출 엔진(530)은 유효한 쿼리 픽셀이 식별될 때까지 점유 맵 프레임들(516) 내에서 새로운 픽셀들을 계속 선택한다.
유효한 쿼리 픽셀을 식별하는 경우, 경계 검출 엔진(530)은 쿼리 픽셀 주변의 제 1 레이어의 픽셀들을 검사한다. 제 1 레이어의 픽셀들은 (이웃) 쿼리 픽셀에 인접하고 접촉하는 임의의 픽셀을 포함한다. 예를 들어, 점유 맵 프레임들(516) 중 하나의 프레임의 중간에 쿼리 픽셀이 있으면, 8개의 이웃 픽셀이 존재하게 된다. 아래에서 더 자세히 논의되는 도 7a는 쿼리 픽셀(702)을 둘러싸는 제 1 레이어의 픽셀들(704)을 도시한다.
경계 검출 엔진(530)은 제 1 레이어의 픽셀들을 검사함으로써 제 1 레이어의 픽셀들 중 임의의 픽셀이 유효하지 않은지의 여부를 결정한다. 경계 검출 엔진(530)은 또한 제 1 레이어의 픽셀들을 검사함으로써 이웃 픽셀들 중 임의의 픽셀이 쿼리 픽셀이 속하는 패치와 다른 패치에 속하는지 여부를 결정한다. 제 1 레이어의 픽셀들 중 임의의 픽셀의 값이 유효하지 않은 픽셀을 나타내는 경우, 그 쿼리 픽셀은 경계 픽셀인 것으로 식별된다. 유사하게, 제 1 레이어의 픽셀들 중 임의의 픽셀이 쿼리 픽셀이 속한 패치와 다른 패치에 속하는 경우, 그 쿼리 픽셀은 또한 경계 픽셀인 것으로 식별된다.
경계 검출 엔진(530)은 또한 제 1 레이어의 픽셀들을 검사함으로써 이웃 픽셀들 중 임의의 것이 점유 맵 프레임(516) 중 하나의 프레임의 에지에 위치하는지 여부를 결정한다. 제 1 레이어의 픽셀들 중 임의의 픽셀이 점유 맵 프레임(516)의 에지에 위치하는 경우, 그 쿼리 픽셀은 경계 픽셀인 것으로 식별된다. 예를 들어, 일반적으로 제 1 레이어에 8개의 픽셀이 존재하며, 경계 검출 엔진(530)이 제 1 레이어에서 8개 미만의 픽셀을 식별하는 경우, 그 쿼리 픽셀은 경계 픽셀인 것으로 식별된다.
쿼리 픽셀을 경계 픽셀인 것으로 식별하는 경우, 경계 검출 엔진(530)은 (쿼리 픽셀에 대응하는) 3D 포인트 클라우드의 포인트를 쿼리 포인트인 것으로 식별한다.
제 1 레이어의 픽셀들 모두가 유효하고, 쿼리 픽셀과 동일한 패치에 속하며, 점유 맵 프레임(516)의 에지에 위치하지 않는 경우, 경계 검출 엔진(530)은 또한 쿼리 픽셀 주변의 제 2 레이어의 픽셀들을 검사한다.
예를 들어, 점유 맵 프레임들(516) 중 하나의 프레임의 중간에 쿼리 픽셀이 있는 경우, 16개의 이웃 픽셀이 존재한다. 아래에서 더 자세히 논의되는 도 7a는 쿼리 픽셀(702)을 둘러싸는 제 2 레이어의 픽셀들(706)을 도시한다. 제 2 레이어의 픽셀들은 쿼리 포인트로부터 2픽셀의 거리가 되도록, 제 1 레이어의 픽셀들에 인접하고 접촉한다.
경계 검출 엔진(530)은 제 2 레이어의 픽셀들을 검사함으로써 제 2 레이어의 픽셀들 중 임의의 픽셀이 유효하지 않은지의 여부를 결정한다. 경계 검출 엔진(530)은 또한 제 2 레이어의 픽셀들을 검사함으로써 (제 2 레이어의) 이웃 픽셀들 중 임의의 픽셀이 쿼리 픽셀이 속하는 패치와 다른 패치에 속하는지 여부를 결정한다. 제 2 레이어의 픽셀들 중 임의의 픽셀의 값이 유효하지 않은 픽셀을 나타내는 경우, 그 쿼리 픽셀은 경계 픽셀인 것으로 식별된다. 유사하게, 제 2 레이어의 픽셀들 중 임의의 픽셀이 쿼리 픽셀이 속한 패치와 다른 패치에 속하는 경우, 그 쿼리 픽셀은 또한 경계 픽셀인 것으로 식별된다.
경계 검출 엔진(530)은 또한 제 2 픽셀 어레이를 검사함으로써 이웃 픽셀들 중 임의의 것이 점유 맵 프레임(516) 중 하나의 프레임의 에지에 위치하는지 여부를 결정한다. 제 2 레이어의 픽셀들 중 임의의 픽셀이 점유 맵 프레임(516)의 에지에 위치하는 경우, 그 쿼리 픽셀은 경계 픽셀인 것으로 식별된다. 예를 들어, 일반적으로 제 2 레이어에 16개의 픽셀이 존재하며, 경계 검출 엔진(530)이 16개 미만의 픽셀을 식별하는 경우, 그 쿼리 픽셀은 경계 픽셀인 것으로 식별된다.
쿼리 픽셀을 경계 픽셀인 것으로 식별하는 경우, 경계 검출 엔진(530)은 (쿼리 픽셀에 대응하는) 3D 포인트 클라우드의 포인트를 쿼리 포인트인 것으로 식별한다. 제 2 레이어의 픽셀들 모두가 유효하고, 쿼리 픽셀과 동일한 패치에 속하며, 점유 맵 프레임(516)의 에지에 위치하지 않는 경우, 경계 검출 엔진(530)은 새로운 유효 쿼리 픽셀을 선택한다. 경계 검출 엔진(530)은 포인트 클라우드의 모든 포인트가 검사될 때까지 새로운 쿼리 픽셀들을 계속 선택한다. 특정 실시예들에서, 경계 검출 엔진(530)은 모든 점유 맵 프레임(516)이 검사될 때까지 새로운 쿼리 픽셀들을 계속 선택한다.
아래의 신택스(Syntax) (1)은 싱글 패스 프로세스를 사용하여 3D 포인트 클라우드의 경계 포인트들을 식별하는 방법을 설명하기 위해 제공된다. 신택스 (1)에 대한 입력들로는 (i) 점유 맵 프레임 [ i ][ j ], i = 0.. asps_frame_height - 1, j = 0.. asps_frame_width - 1, (ii) x, 캔버스 상의 재구성된 포인트의 열 인덱스, 및 (iii) y, 캔버스 상의 재구성된 포인트의 행 인덱스를 포함한다. 신택스 (1)의 출력은 변수 boundaryPoint이며, 이것은 재구성된 포인트가 지오메트리 또는 어트리뷰트 스무딩과 관련된 것인지 여부를 나타내는데 사용되는 패치 경계 근처에 포인트가 위치하는지를 식별하는 부울(Boolean) 변수이다.
Figure pct00001
또한, 위의 신택스 (1)과 관련하여, i가 0 내지 (asps_frame_height - 1)까지의 범위에 있지 않거나 j가 0 내지 (asps_frame_width - 1)까지의 범위에 있지 않은 경우, oFrame[ i ][ j ]는 0인 것으로 가정한다.
경계 검출 엔진(530)이 임의의 패치의 경계에 대한 근접 임계값 내에 있는 픽셀들의 서브세트를 식별한 이후에, 지오메트리 스무딩 엔진(538a) 및 어트리뷰트 스무딩 엔진(538b)은 3D 포인트 클라우드의 식별된 포인트들에 대한 스무딩을 수행할 수 있다. 스무딩을 수행하기 위해, 생성된 스무딩 파라미터들(예를 들면, 지오메트리 스무딩 파라미터들(540a) 및 어트리뷰트 스무딩 파라미터들(540b))이 생성된다.
멀티플렉서(542)는 패치 서브-스트림(522), 점유 맵 서브-스트림(524a), 지오메트리 서브-스트림(526a), 지오메트리 스무딩 파라미터들(540a), 어트리뷰트 서브-스트림(536), 및 어트리뷰트 스무딩 파라미터들(540b)를 결합하여 비트스트림(546)을 생성한다.
도 5c는 디멀티플렉서(552), 하나 이상의 디코딩 엔진(예를 들면 디코딩 엔진(554a), 디코딩 엔진(554b), 디코딩 엔진(554c), 및 디코딩 엔진(554d)), 재구성 엔진(556), 지오메트리 스무딩 엔진(558a), 어트리뷰트 스무딩 엔진(558b) 및 경계 검출 엔진(530)을 포함하는 디코더(550)를 도시한 것이다.
디코더(550)는 인코더(510)에 의해 생성된 비트스트림과 같은, 비트스트림(546)을 수신한다. 디멀티플렉서(552)는 비트스트림(546)을 서로 다른 정보를 나타내는 하나 이상의 서브-스트림으로 분리한다. 예를 들어, 디멀티플렉서(552)는 다양한 데이터 스트림들을, 패치 서브-스트림(522), 점유 맵 서브-스트림(524a), 지오메트리 서브-스트림(526a), 어트리뷰트 서브-스트림(536), 지오메트리 스무딩 파라미터들(540a) 및 어트리뷰트 스무딩 파라미터들(540b)과 같은 개별 서브-스트림들로 분리한다.
디코더(550)는 하나 이상의 디코딩 엔진을 포함한다. 예를 들어, 디코더(550)는 디코딩 엔진(554a), 디코딩 엔진(554b), 디코딩 엔진(554c), 및 디코딩 엔진(554d)(집합적으로 디코딩 엔진(554)이라 함)을 포함할 수 있다. 특정 실시예들에서는, 단일의 디코딩 엔진이 모든 개별 디코딩 엔진들(554)의 동작들을 수행한다.
디코딩 엔진(554a)은 어트리뷰트 서브-스트림(536)을 어트리뷰트 프레임들(534a)로 디코딩한다. 어트리뷰트 프레임들(534a)은 도 5b의 어트리뷰트 프레임들(534)과 유사하지만, 어트리뷰트 프레임들(534a)을 발생시키는 프레임들의 인코딩 및 디코딩으로 인해 하나 이상의 픽셀이 시프트될 수 있다는 점이 다르다.
디코딩 엔진(554b)은 지오메트리 서브-스트림(526a)을 지오메트리 프레임들(526c)로 디코딩한다. 지오메트리 프레임들(526c)은 도 5b의 지오메트리 프레임들(526b)과 유사하지만, 지오메트리 프레임들(526c)을 발생시키는 프레임들의 인코딩 및 디코딩으로 인해 하나 이상의 픽셀이 시프트될 수 있다는 점이 다르다.
디코딩 엔진(554d)은 점유 맵 서브-스트림(524a)을 점유 맵 프레임들(524c)로 디코딩한다. 점유 맵 프레임들(524c)은 도 5b의 점유 맵 프레임들(524b)과 유사하지만, 점유 맵 프레임들(524c)을 발생시키는 프레임들의 인코딩 및 디코딩으로 인해 하나 이상의 픽셀이 시프트될 수 있다는 점이 다르다.
디코딩 엔진(554d)은 패치 서브-스트림(522)을 패치 정보(522a)로 디코딩한다. 패치 정보(522a)는 도 5b에 도시된 바와 같이 인코딩되기 전의 패치 정보와 유사하다.
패치 정보(522d), 점유 맵 프레임들(524c), 지오메트리 프레임(526c), 및 어트리뷰트 프레임들(534a)이 디코딩된 후, 재구성 엔진(556)은 재구성된 포인트 클라우드를 생성한다. 재구성 엔진(556)은 포인트 클라우드를 재구성한다. 재구성 엔진(556)은 도 5b의 재구성 엔진(528)과 유사하다.
경계 검출 엔진(530)은 점유 맵 프레임(524c) 내의 픽셀들의 값들에 기초하여, 재구성된 포인트 클라우드의 경계 포인트들을 식별한다. 디코더(550)의 경계 검출 엔진(530)은 도 5b의 인코더(510)의 경계 검출 엔진(530)과 유사한 방식으로, 재구성된 포인트 클라우드의 경계 포인트들을 식별한다.
재구성된 포인트 클라우드의 경계 포인트들이 식별된 후, 지오메트리 스무딩 엔진(558a)은 지오메트리 스무딩 파라미터들(540a)을 적용하여, 재구성된 포인트 클라우드의 식별된 포인트들을 스무딩한다.
어트리뷰트 전환부(560)는 지오메트리 스무딩 엔진에 의해 수정된 재구성된 포인트 클라우드에 기초하여, 재구성된 포인트 클라우드의 어트리뷰트를 수정한다. 어트리뷰트들이 어트리뷰트 전환부(560)에 의해 수정된 후, 어트리뷰트 스무딩 엔진(558b)은 어트리뷰트 스무딩 파라미터들(540b)을 적용하여, 재구성된 포인트 클라우드의 어트리뷰트들을 스무딩한다. 그 후에, 재구성된 포인트 클라우드(564)가 렌더링 및 디스플레이될 수 있다.
도 5a가 환경 아키텍처(500)를 도시하고, 도 5b가 인코더(510)를 도시하고, 도 5c가 디코더(550)를 도시하고 있지만, 도 5a, 5b, 5c, 및 4d에 대한 다양한 변경이 이루어질 수 있다. 예를 들어, 임의의 수의 인코더 또는 디코더가 환경 아키텍처(500)에 포함될 수 있다.
도 6a, 6b 및 6b는 임의의 패치의 경계에 대한 근접 임계값 내에 위치된 경계 포인트들을 식별하기 위한 프로세스를 설명한다. 예를 들어, 도 6a는 본 개시의 일 실시예에 따른 단일 쿼리 포인트 주변의 경계 포인트들을 식별하기 위한 예시적인 방법(600)을 도시한 것이다. 도 6b는 본 개시의 일 실시예에 따른 단일 쿼리 포인트 주변의 경계 포인트들을 식별하기 위한 예시적인 방법(620)을 도시한 것이다. 도 6c는 본 개시의 일 실시예에 따른 점유 맵의 픽셀들의 값들에 기초하여 경계 포인트들을 식별하기 위한 예시적인 방법(650)을 도시한 것이다. 방법들(600, 620, 650)은 도 1의 서버(104), 클라이언트 장치들(106-116) 중 임의의 장치, 도 2의 서버(200), 도 3의 전자 장치(300), 도 5a 및 도 5b의 인코더(510), 도 5a 및 도 5c의 디코더(550), 또는 임의의 다른 적절한 장치 또는 시스템에 의해 수행될 수 있다. 설명의 편의를 위해, 방법들(600, 620, 650)은 도 5a 및 도 5b의 인코더(510) 및 디코더(550)의 경계 검출 엔진(530)에 의해 수행되는 것으로 설명된다.
도 6a의 방법(600)은 2D 프레임들(예를 들면 지오메트리 프레임, 어트리뷰트 프레임 및 점유 맵 프레임)에 표현되는 3D 포인트 클라우드의 단일 포인트가 경계 포인트인지 여부를 결정하는 전체 프로세스를 설명한다.
단계 602에서, 경계 검출 엔진(530)은 점유 맵 프레임으로부터 단일 픽셀을 쿼리 픽셀로서 선택한다. 픽셀은 점유 맵 프레임 내의 임의의 개소에 위치할 수 있다. 특정 실시예들에서, 경계 검출 엔진(530)은 먼저 인덱스 번호 0으로 표시된 픽셀과 같은, 특정 픽셀을 선택한다. 그 후에, 경계 검출 엔진(530)은 인덱스 번호 1로 표시된 픽셀과 같은, 다음 픽셀을 선택하게 된다. 점유 맵의 모든 픽셀 또는 3D 포인트 클라우드의 선택된 또는 모든 포인트가 경계 포인트인 것으로 또는 경계 포인트가 아닌 것으로 식별될 때까지 프로세스가 계속된다.
픽셀을 쿼리 픽셀로 선택한 경우, 단계 604에서, 경계 검출 엔진(530)은 쿼리 픽셀이 유효한지 여부를 결정한다. 위에서 논의한 바와 같이, 점유 맵에는 값들이 포함된다. 특정 실시예들에서, 값들은 0 또는 1과 같은 이진수이다. 예를 들어, 점유 맵의 위치 (u, v)에 있는 픽셀 값이 제 1 값(예를 들면, 0)인 경우, 이것은 지오메트리 프레임과 어트리뷰트 프레임 내에서 동일한 위치에 있는 해당 픽셀이 3D 포인트 클라우드의 포인트에 대응하지 않음(그리고 유효하지 않은 것으로 간주됨)을 가리킨다. 점유 맵의 위치 (u, v)에 있는 픽셀 값이 제 2 값(예를 들면, 1)인 경우, 이것은 지오메트리 프레임과 어트리뷰트 프레임 내에서 동일한 위치에 있는 해당 픽셀이 3D 포인트 클라우드의 포인트의 정보를 나타냄(그리고 유효한 것으로 간주됨)을 가리킨다.
쿼리 픽셀이 0(유효하지 않은 픽셀을 나타냄)인 것으로 결정하면, 0의 값을 갖는 위치 (u, v)에 있는 점유 맵의 픽셀에 대응하는 3D 포인트 클라우드의 포인트가 없기 때문에, 방법(600)이 종료한다. 쿼리 픽셀이 0인 것으로 결정하면, 경계 검출 엔진(530)은 단계 602로 돌아가서 점유 맵 내의 새로운 픽셀을 쿼리 픽셀로서 선택할 수 있다는 점에 유의한다.
쿼리 픽셀이 1(유효한 픽셀을 나타냄)인 것으로 결정하면, 단계 606에서 경계 검출 엔진(530)은 쿼리 픽셀 주변의 이웃 픽셀들을 검사한다. 이웃 포인트들은 쿼리 픽셀에 인접하여 이것을 둘러싸는 제 1 레이어의 픽셀들 내에 있다. 예를 들어, 쿼리 픽셀이 점유 맵 프레임의 에지에 있지 않은 경우, 쿼리 픽셀은 8개의 이웃 픽셀을 갖게 된다. 예를 들어, 쿼리 픽셀이 (y, x)에 있는 경우, 제 1 레이어의 픽셀들은 쿼리 픽셀과 관련하여 (y, x-1), (y, x+1), (y-1, x), (y+1, x), (y-1, x-1), (y-1, x+1), (y+1, x-1), 및 (y+1, x+1)에 있는 픽셀들로서 정의된다.
단계 608에서, 경계 검출 엔진(530)은 쿼리 픽셀을 둘러싸는 제 1 레이어 내의 픽셀들 중 임의의 픽셀이 유효하지 않은지(3D 포인트 클라우드에 대응하지 않는 픽셀을 나타내는 값을 갖는지) 여부를 결정한다. 제 1 레이어 내의 임의의 픽셀이 유효하지 않은 경우, 이것은 쿼리 픽셀이 패치의 경계에 위치하며, 따라서 3D 포인트 클라우드의 대응 포인트가 경계 포인트로 식별됨을 나타낸다. 쿼리 픽셀은 이전에 유효한 것으로 결정되었고, 유효하지 않은 것으로 간주되는 픽셀 옆에 있기 때문에, 패치의 경계에 위치된 것으로 식별된다. 이와 같이, 쿼리 픽셀은 유효하지 않은 픽셀 옆에 있기 때문에, 패치의 경계에 위치된 것으로 식별된다.
단계 614에서, 쿼리 포인트를 둘러싸는 제 1 레이어 내의 픽셀들 중 적어도 하나가 유효하지 않은 경우(3D 포인트 클라우드에 대응하지 않는 픽셀을 나타내는 값을 가짐), 이것은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 대응 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 나타낸다. 즉, 제 1 레이어 내의 픽셀들 중 임의의 픽셀이 유효하지 않은 경우, 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임 및 지오메트리 프레임의 픽셀들에 의해 표현되는 3D 포인트 클라우드의 포인트가 경계 픽셀로서 식별된다.
쿼리 픽셀을 둘러싸는 제 1 레이어 내의 픽셀들 모두가 유효하면(각 픽셀은 지오메트리 프레임 및 어트리뷰트 프레임에서 유효한 픽셀을 나타내는 값을 가짐), 단계 610에서, 경계 검출 엔진(530)은 제 2 레이어의 픽셀들을 검사한다. 제 2 레이어의 픽셀들은 제 1 레이어의 픽셀들에 인접하고 이것을 둘러싸는 픽셀들이다. 예를 들어, 쿼리 픽셀이 점유 맵 프레임의 에지로부터 2픽셀 이상의 거리에 위치하는 경우, 쿼리 픽셀의 제 2 레이어에는 16개의 픽셀이 존재한다. 예를 들어, 쿼리 픽셀이 (y, x)에 있는 경우, 제 2 레이어의 픽셀들은 쿼리 픽셀과 관련하여 (y-2, x-2), (y-2, x-1), (y-2, x), (y-2, x+1), (y-2, x+2), (y-1, x-2), (y-1, x+2), (y, x-2), (y, x+2), (y+1, x-2), (y+1, x+2), (y+2, x-2),(y+1, x-1), (y+1, x), (y+1, x+1), 및 (y+1, x+2)에 있는 픽셀들로서 정의된다.
단계 612에서, 경계 검출 엔진(530)은 쿼리 픽셀을 둘러싸는 제 2 레이어 내의 픽셀들 중 임의의 픽셀이 유효하지 않은지(3D 포인트 클라우드에 대응하지 않는 픽셀을 나타내는 값을 갖는지) 여부를 결정한다. 제 2 레이어 내의 임의의 픽셀이 유효하지 않은 경우, 이것은 쿼리 픽셀이 패치의 경계에 위치하며, 따라서 3D 포인트 클라우드의 대응 포인트가 경계 포인트로 식별됨을 나타낸다. 즉, 제 2 레이어 내에 있는 하나 이상의 픽셀이 유효하지 않은 경우, 이것은 쿼리 픽셀이 임의의 패치의 경계에 대한 근접 임계값 내에 위치한다는 것을 나타낸다. 이 경우 근접 임계값은 패치의 에지로부터 2개 픽셀이다.
단계 614에서, 쿼리 포인트를 둘러싸는 제 2 레이어 내의 픽셀들 중 적어도 하나가 유효하지 않은 경우(3D 포인트 클라우드에 대응하지 않는 픽셀을 나타내는 값을 가짐), 이것은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 나타낸다. 즉, 제 2 레이어 내의 픽셀들 중 임의의 픽셀이 유효하지 않은 경우, 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임 및 지오메트리 프레임의 픽셀들에 의해 표현되는 3D 포인트 클라우드의 포인트가 경계 픽셀로서 식별된다.
쿼리 픽셀을 둘러싸는 제 1 레이어 및 제 2 레이어 내의 모든 픽셀이 유효한 경우(각 픽셀은 지오메트리 프레임과 어트리뷰트 프레임에서 유효한 픽셀을 나타내는 값을 가짐), 인코더는 점유 맵 프레임의 다른 픽셀을 쿼리 픽셀로서 선택할 수 있다. 점유 맵 프레임의 다른 픽셀이 쿼리 픽셀로 선택되면, 방법(600)은 단계 604에서 다시 시작한다.
특정 실시예들에서, 방법(600)은 제 1 레이어 및 제 2 레이어 너머에 있는 검사 픽셀들을 포함하도록 확장될 수 있다. 예를 들어, 방법(600)은 경계 검출 엔진(530)이 제 3 레이어 내지 제 n 레이어의 픽셀들을 검사하도록 확장될 수 있으며, 여기서 각각의 새로운 레이어는 그 아래 레이어의 픽셀들에 인접하고 이들을 둘러싼다. 더 많은 픽셀을 검사할수록 3D 포인트 클라우드의 더 많은 포인트가 경계 포인트로 식별된다.
도 6b의 방법(620)은 도 6a의 방법(600)과 유사하며, 방법들(600 및 620) 모두 2D 프레임들(예를 들면, 지오메트리 프레임, 어트리뷰트 프레임 및 점유 맵 프레임) 상에 표현되는 3D 포인트 클라우드의 단일 포인트가 경계 포인트인지 여부를 결정하는 전체 프로세스를 설명한다. 그러나, 방법(620)은 해당 포인트에 대응하는 2D 프레임들의 픽셀이 프레임의 에지 근처에 있거나 픽셀이 다른 패치에 속하는 다른 픽셀 근처에 있는 경우, 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하는 능력을 추가한다.
단계 622(도 6a의 단계 602와 유사)에서, 경계 검출 엔진(530)은 점유 맵 프레임으로부터 단일 픽셀을 쿼리 픽셀로서 선택한다. 픽셀은 점유 맵 프레임 내의 임의의 개소에 위치할 수 있다. 그 후, 단계 624(도 6a의 단계 604와 유사)에서, 경계 검출 엔진(530)은 쿼리 픽셀의 값이 유효한 픽셀을 나타내는지 여부를 결정한다. 예를 들어, 점유 맵의 위치 (u, v)에 있는 픽셀 값이 제 1 값(예를 들면, 0)인 경우, 이것은 지오메트리 프레임과 어트리뷰트 프레임 내에서 동일한 위치에 있는 해당 픽셀이 3D 포인트 클라우드의 포인트에 대응하지 않음을 가리킨다. 점유 맵의 위치 (u, v)에 있는 픽셀 값이 제 2 값(예를 들면, 1)인 경우, 이것은 지오메트리 프레임과 어트리뷰트 프레임 내에서 동일한 위치에 있는 해당 픽셀이 3D 포인트 클라우드의 포인트의 정보를 나타냄을 가리킨다. 예를 들어, 점유 맵의 픽셀 값이 0이면, 이것은 동일한 위치에 있는 지오메트리 및 어트리뷰트 프레임들의 픽셀들이 유효하지 않음을 가리킨다. 점유 맵의 픽셀 값이 1이면, 이것은 동일한 위치에 있는 지오메트리 및 어트리뷰트 프레임들의 픽셀들이 유효하며 따라서 3D 포인트 클라우드의 특정 포인트를 나타냄을 가리킨다.
쿼리 픽셀의 값이 0(유효하지 않은 픽셀을 나타냄)인 것으로 결정하면, 점유 맵에서, 해당 위치에 있는 픽셀의 값이 0이기 때문에, 위치 (u, v)에서 어트리뷰트 프레임 및 지오메트리 프레임의 픽셀에 대응하는 3D 포인트 클라우드의 포인트가 없으므로, 방법(600)이 종료한다. 특정 실시예들에서, 쿼리 픽셀의 값이 0인 것으로 결정하면, 경계 검출 엔진(530)은 단계 622로 돌아가서 점유 맵 내의 새로운 픽셀을 쿼리 픽셀로서 선택할 수 있다.
단계 626에서, 쿼리 픽셀의 값이 1(유효한 픽셀을 나타냄)인 것으로 결정하면, 경계 검출 엔진(530)은 그 픽셀이 속하는 패치를 식별한다. 예를 들어, 도 4c 및 도 4d에 설명된 바와 같이, 패치들(432 및 442)과 같은 다중 패치가 단일 프레임에 포함된다. 각각의 패치는 패치 인덱스 번호에 의해 식별될 수 있기 때문에, 경계 검출 엔진(530)은 픽셀이 어느 패치 내에 있는지 식별할 수 있다. 예를 들어, 쿼리 픽셀은 1과 전체 패치 수 사이의(또는 패치들이 인덱스 번호 0에서 시작하는 경우, 인덱스 번호 0과 전체 패치 수에서 1을 뺀 값 사이의) 인덱스 번호에 의해서 식별되는 패치 내에 있을 수 있다.
단계 628에서 경계 검출 엔진(530)은 쿼리 픽셀 주변의 제 1 레이어의 임의의 픽셀들이 유효하지 않은지 여부(도 6a의 단계 606 및 608과 유사) 또는 쿼리 픽셀 주변의 제 1 레이어의 픽셀들 중 임의의 픽셀이 상이한 패치에 속하는지 여부를 결정한다. 제 1 레이어의 이웃 포인트들은 쿼리 픽셀에 인접하고 이것을 둘러싸는 제 1 레이어의 픽셀들 내에 있다. 예를 들어, 쿼리 픽셀이 점유 맵 프레임의 에지에 있지 않은 경우, 쿼리 픽셀은 (y, x-1), (y, x+1), (y-1, x), (y+1, x), (y-1, x-1), (y-1, x+1), (y+1, x-1), 및 (y+1, x+1)에 있는 픽셀들과 같은, 8개의 이웃 픽셀들을 갖게 된다.
경계 검출 엔진(530)은 단계 628에서 쿼리 픽셀 주변의 이웃 픽셀들을 검사함으로써, 점유 맵에 있는 쿼리 픽셀의 값이 유효 또는 비유효 픽셀을 나타내는지 및 제 1 레이어의 각 픽셀이 속하는 패치를 식별한다.
쿼리 포인트를 둘러싸는 제 1 레이어 내의 픽셀들 중 적어도 하나가 유효하지 않은 경우(3D 포인트 클라우드에 대응하지 않는 픽셀을 나타내는 값을 가짐), 단계 636에서, 경계 검출 엔진(530)은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 대응 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 식별한다. 즉, 제 1 레이어 내의 픽셀들 중 임의의 픽셀이 유효하지 않은 경우, 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임 및 지오메트리 프레임의 픽셀들에 의해 표현되는 3D 포인트 클라우드의 포인트가 경계 픽셀로서 식별된다.
유사하게, 쿼리 포인트를 둘러싸는 제 1 레이어 내의 픽셀들 중 적어도 하나가 쿼리 포인트의 패치와 다른 패치에 속하는 경우, 단계 636에서, 경계 검출 엔진(530)은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 대응 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 식별한다. 예를 들어, 경계 검출 엔진(530)은 쿼리 픽셀의 패치 인덱스 번호를, 제 1 레이어의 이웃 픽셀들 각각의 패치 인덱스 번호와 비교한다. 제 1 레이어의 픽셀들 중 어느 것이 상이한 패치에 속하는 경우, 경계 검출 엔진(530)은 쿼리 픽셀에 대응하는 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별한다(점유 맵 프레임의 쿼리 픽셀과 동일한 지오메트리 프레임 및 어트리뷰트 프레임의 위치에 있는 픽셀에 기초하여).
제 1 레이어의 픽셀들 모두가 동일한 패치에 속하고 제 1 레이어의 픽셀들 모두가 유효한 경우, 경계 검출 엔진(530)은 단계 630에서, 쿼리 픽셀이 점유 맵 프레임의 에지에 위치하는지 여부를 결정한다. 예를 들어, 경계 검출 엔진(530)은 제 1 레이어의 픽셀들 중 임의의 픽셀이 존재하지 않는지 여부를 결정한다. 쿼리 픽셀이 점유 맵 프레임의 경계에 위치하는 경우, 제 1 레이어의 픽셀은 존재하지 않는다.
쿼리 픽셀이 점유 맵 프레임의 경계를 따라 위치하는 것으로 결정하는 경우, 단계 636에서, 경계 검출 엔진(530)은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 대응 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 식별한다. 즉, 제 1 레이어 내의 픽셀들 중 임의의 픽셀이 존재하지 않은 경우(예를 들면, 쿼리 픽셀이 점유 맵 프레임의 경계에 위치하는 경우), 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임 및 지오메트리 프레임의 픽셀들에 의해 표현되는 3D 포인트 클라우드의 포인트가 경계 픽셀로서 식별된다.
제 1 레이어의 픽셀들 모두가 존재하는 경우, 경계 검출 엔진(530)은 단계 632에서, 쿼리 픽셀 주변의 제 2 레이어의 임의 픽셀들이 유효하지 않은지 여부(도 6a의 단계 610 및 612와 유사) 또는 쿼리 픽셀 주변의 제 2 레이어에 있는 픽셀들 중 임의의 픽셀이 상이한 패치에 속하는지 여부를 결정한다. 제 2 레이어의 픽셀들은 제 1 레이어의 픽셀들에 인접하고 이들을 둘러싸는 픽셀들이다. 예를 들어, 쿼리 픽셀이 점유 맵 프레임의 에지로부터 적어도 2픽셀의 거리에 위치하는 경우, (y-2, x-2), (y-2, x-1), (y-2, x), (y-2, x+1), (y-2, x+2), (y-1, x-2), (y-1, x+2), (y, x-2), (y, x+2), (y+1, x-2), (y+1, x+2), (y+2, x-2), (y+1, x-1), (y+1, x), (y+1, x+1), 및 (y+1, x+2)에 있는 픽셀들과 같이, 제 2 레이어의 쿼리 픽셀에 16개의 픽셀이 존재하게 된다.
경계 검출 엔진(530)은 단계 632에서, 쿼리 픽셀 주변의 제 2 레이어에서 이웃 픽셀들을 검사함으로써, 점유 맵에 있는 쿼리 픽셀의 값이 유효 또는 비유효 픽셀을 나타내는지 및 제 1 레이어의 각 픽셀이 속하는 패치를 식별한다.
쿼리 포인트를 둘러싸는 제 2 레이어 내의 픽셀들 중 적어도 하나가 유효하지 않은 경우(3D 포인트 클라우드에 대응하지 않는 픽셀을 나타내는 값을 가짐), 단계 636에서, 경계 검출 엔진(530)은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 대응 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 식별한다. 즉, 제 2 레이어 내의 픽셀들 중 임의의 픽셀이 유효하지 않은 경우, 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임 및 지오메트리 프레임의 픽셀들에 의해 표현되는 3D 포인트 클라우드의 포인트가 경계 픽셀로서 식별된다.
유사하게, 쿼리 포인트를 둘러싸는 제 2 레이어 내의 픽셀들 중 적어도 하나가 쿼리 포인트의 패치와 다른 패치에 속하는 경우, 단계 636에서, 경계 검출 엔진(530)은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 대응 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 식별한다. 예를 들어, 경계 검출 엔진(530)은 쿼리 픽셀의 패치 인덱스 번호를, 제 2 레이어의 이웃 픽셀들 각각의 패치 인덱스 번호와 비교한다. 제 2 레이어의 픽셀들 중 어느 것이 상이한 패치에 속하는 경우, 경계 검출 엔진(530)은 쿼리 픽셀에 대응하는 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별한다(점유 맵 프레임의 쿼리 픽셀과 동일한 지오메트리 프레임 및 어트리뷰트 프레임의 위치에 있는 픽셀에 기초하여).
제 2 레이어의 픽셀들 모두가 쿼리 픽셀과 동일한 패치에 속하고 제 2 레이어의 픽셀들 모두가 유효한 경우, 경계 검출 엔진(530)은 단계 634에서, 쿼리 픽셀이 점유 맵 프레임의 에지로부터 2픽셀 떨어져 위치하는지 여부를 결정한다. 예를 들어, 경계 검출 엔진(530)은 제 2 레이어의 픽셀들 중 임의의 픽셀이 존재하지 않는지 여부를 결정한다. 쿼리 픽셀이 점유 맵 프레임의 에지로부터 2픽셀 떨어져 위치하는 경우 제 2 레이어의 픽셀은 존재하지 않게 된다.
쿼리 픽셀이 점유 맵 프레임의 경계를 따라 위치하는 것으로 결정하는 경우, 단계 636에서, 경계 검출 엔진(530)은 점유 맵의 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임의 픽셀 및 지오메트리 프레임의 대응 픽셀이 3D 포인트 클라우드의 경계 포인트에 해당함을 식별한다. 즉, 제 2 레이어 내의 픽셀들 중 임의의 픽셀이 존재하지 않은 경우(예를 들면, 쿼리 픽셀이 점유 맵 프레임의 경계로부터 2픽셀 떨어진 거리에 위치하는 경우), 쿼리 픽셀과 동일한 위치에 있는 어트리뷰트 프레임 및 지오메트리 프레임의 픽셀들에 의해 표현되는 3D 포인트 클라우드의 포인트가 경계 픽셀로서 식별된다.
제 1 레이어의 픽셀들 모두가 존재하는 경우, 경계 검출 엔진(530)은 쿼리 픽셀이 프레임의 에지로부터 2픽셀에 위치하지 않는 것으로 결정한다. 쿼리 픽셀이 프레임의 에지로부터 2픽셀에 위치하지 않는 경우, 방법(620)은 종료한다. 특정 실시예들에서, 경계 검출 엔진(530)은 점유 맵 프레임의 다른 픽셀을 쿼리 픽셀로 선택할 수 있다. 점유 맵 프레임의 다른 픽셀이 쿼리 픽셀로서 선택될 경우, 방법(600)은 단계 624로 돌아가서 새로운 쿼리 픽셀이 유효한지 여부를 결정한다. 특정 실시예들에서, 방법(620)은 제 1 레이어 및 제 2 레이어 너머에 있는 검사 픽셀들을 포함하도록 확장될 수 있다. 예를 들어, 방법(620)은 경계 검출 엔진(530)이 제 3 레이어 내지 제 n 레이어의 픽셀들을 검사하도록 확장될 수 있으며, 여기서 각각의 새로운 레이어는 그 아래 레이어의 픽셀들에 인접하고 이들을 둘러싼다. 더 많은 픽셀을 검사할수록 3D 포인트 클라우드의 더 많은 포인트가 경계 포인트로 식별된다.
도 6c의 방법(650)은 3D 포인트 클라우드의 어느 포인트들이 프레임들 내의 임의의 패치의 경계에 대한 근접 임계값 내에 위치된 픽셀들에 대응하는지 식별하기 위한 전체 프로세스를 설명한다. 즉, 방법(650)은 점유 맵 프레임 내의 픽셀들의 값에 기초하여 포인트 클라우드 내의 경계 포인트들을 식별하는데 사용된다. 방법(650)은 쿼리 픽셀과 패치의 경계 사이의 2픽셀 거리인 픽셀들에 대응하는, 3D 포인트 클라우드의 경계 포인트들을 식별하는 것으로 제한된다. 특정 실시예들에서, 방법(650)은 쿼리 픽셀과 패치의 경계 사이의 2픽셀보다 큰 거리인 픽셀들에 대응하는 경계 포인트들을 식별하는 것을 포함하도록 확장될 수 있다.
단계 652에서, 경계 검출 엔진(530)은 변수 n을 0으로 설정한다. 변수 n은 점유 맵의 픽셀을 식별하기 위한 카운터로서 사용된다.
단계 654에서, 경계 검출 엔진(530)은 점유 맵에서 픽셀 n의 점유 값이 0인지 여부를 결정한다. 점유 맵에서 픽셀 값 0은 3D 포인트 클라우드에 대응 포인트가 없음을 나타내고, 0이 아닌 값(예를 들면, 점유 맵에서 1)은 3D 포인트 클라우드에 대응 포인트가 있음을 나타내며, 이것은 지오메트리 프레임 및 점유 맵 프레임 내의 정보를 기반으로 한다. 픽셀 n의 픽셀 값이 0인 경우, 단계 662에서 경계 검출 엔진(530)은 점유 맵 내의 새로운 픽셀에 대응하는 1만큼 n 값을 증가시킨다.
픽셀 값이 0이 아닌 값인 경우, 단계 656에서 경계 검출 엔진(530)은 픽셀 n에 바로 이웃하는 픽셀들의 값들을 식별한다. 그 다음, 경계 검출 엔진(530)은 픽셀 n에 바로 이웃하는 픽셀들(예를 들어, 제 1 레이어 내의 픽셀들)의 값들이 0인지 여부를 결정한다.
단계 656에서, 경계 검출 엔진(530)이 픽셀 n에 바로 이웃하는 픽셀들(제 1 레이어 내의 픽셀들)의 하나 이상의 값이 0인 것으로 결정하는 경우, 단계 660에서 경계 검출 엔진(530)은 (지오메트리 프레임에 기초하여) 픽셀 n에 대응하는 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별한다. 대안적으로, 단계 656에서, 경계 검출 엔진(530)이 픽셀 n에 바로 이웃하는 픽셀들(제 1 레이어 내의 픽셀들) 중 어느 것도 0인 값을 갖지 않는다고 결정하는 경우, 단계 658에서 경계 검출 엔진(530)은 픽셀 n으로부터 2픽셀 떨어진 픽셀들(제 2 레이어)의 값들을 식별한다. 그 다음, 경계 검출 엔진(530)은 이웃하는 픽셀 n으로부터 2픽셀 떨어진 픽셀들(예를 들면, 제 2 레이어 내의 픽셀들)의 값들 중 임의의 값이 0인지 여부를 결정한다.
단계 658에서, 경계 검출 엔진(530)이 픽셀 n으로부터 2픽셀 떨어진 픽셀들(제 2 레이어 내의 픽셀들)의 하나 이상의 값이 0인 것으로 결정하는 경우, 단계 660에서 경계 검출 엔진(530)은 (지오메트리 프레임에 기초하여) 픽셀 n에 대응하는 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별한다. 대안적으로, 단계 658에서, 경계 검출 엔진(530)이 픽셀 n으로부터 2픽셀 떨어져 있는 픽셀들(제 2 레이어 내의 픽셀들) 중 어느 것도 0인 값을 갖지 않는다고 결정하는 경우, 단계 662에서 경계 검출 엔진(530)은 점유 맵 내의 새로운 픽셀에 대응하는 1만큼 n 값을 증가시킨다.
추가적으로, 경계 검출 엔진(530)이 (지오메트리 프레임에 기초하여) 픽셀 n에 대응하는 3D 포인트 클라우드의 포인트를 경계 포인트로 식별한 이후, 단계 660에서, 경계 검출 엔진(530)은 점유 맵 내의 새로운 픽셀에 대응하는 1만큼 n 값을 증가시킨다.
단계(664)에서, 경계 검출 엔진(530)은 n의 값을 점유 맵 프레임의 전체 픽셀 수와 비교한다. n의 값이 점유 맵 프레임의 전체 픽셀 수보다 작은 경우, 경계 검출 엔진(530)은 단계 654로 돌아가서 새로운 픽셀 n(단계 662의 증가된 n 값에 기초함)이 0인지 여부를 결정한다. n의 값이 전체 픽셀 수보다 크거나 같을 경우, 경계 검출 엔진(530)이 3D 포인트 클라우드의 모든 경계 포인트를 식별했기 때문에 방법(650)은 종료한다.
특정 실시예들에서, 방법(650)은 픽셀 n으로부터 2픽셀보다 많이 떨어진 픽셀들을 포함하도록 확장될 수 있다. 예를 들어, 경계 검출 엔진(530)은 픽셀 n으로부터 3픽셀 이상 떨어져 있는 픽셀들의 값들을 식별할 수 있으며, 후속적으로 이러한 픽셀들(픽셀 n으로부터 3픽셀 이상 떨어져 있는 픽셀들)의 값들 중 임의의 값이 0인지 여부를 결정할 수 있다.
특정 실시예들에서는, 위에서 설명된 바와 같이, 점유 맵의 픽셀에 대응하는 n 대신에, n이 3D 포인트 클라우드의 포인트에 대응할 수 있다. n이 3D 포인트 클라우드의 포인트에 대응하는 경우, 방법(650)은 모든 포인트가 검사될 때 중지된다. 점유 맵 프레임에 유효한 픽셀과 유효하지 않은 픽셀이 모두 포함되어 있기 때문에, 점유 맵 프레임의 모든 픽셀 대신에 포인트 클라우드의 포인트들만 검사되므로 이것은 더 적은 처리를 사용하게 된다.
도 6a, 6b 및 6c가 경계 포인트들을 식별하는 예들을 도시하지만, 도 6a, 6b 및 6c에 다양한 변경이 이루어질 수 있다. 예를 들어, 일련의 단계로서 도시되어 있지만, 도 6a, 6b 및 6c의 다양한 단계는 중첩되거나 병렬로 발생하거나 여러 번 발생할 수 있다. 다른 예에서, 경계 검출 엔진(530)은 다른 방법들을 사용하여 경계 포인트들을 식별할 수 있다.
도 7a 내지 도 7m은 임의의 패치의 경계에 대한 근접 임계값 내에 위치된 경계 포인트들을 식별하기 위한 다이어그램들을 도시한 것이다. 도 7a는 본 개시의 일 실시예에 따른 경계 포인트들을 식별하기 위한 예시적인 슬라이딩 윈도우를 도시한 것이다. 도 7b는 본 개시의 일 실시예에 따른 패치를 포함하는 점유 맵의 예시적인 부분을 도시한 것이다. 도 7c 내지 도 7l은 본 개시의 일 실시예에 따라 경계 포인트들을 식별하기 위해 점유 맵을 통해 슬라이딩 윈도우를 이동함으로써 경계 포인트들을 식별하는 예시적인 프로세스를 도시한 것이다. 도 7m은 어느 픽셀들이 3D 포인트 클라우드의 경계 포인트들에 대응하지를 나타내는 예시적인 점유 맵 프레임을 도시한 것이다. 경계 포인트들을 식별하는 프로세스는 도 1의 서버(104), 클라이언트 장치들(106-116) 중 임의의 장치, 도 2의 서버(200), 도 3의 전자 장치(300), 도 5a 및 도 5b의 인코더(510), 도 5a 및 도 5c의 디코더(550), 또는 임의의 다른 적절한 장치 또는 시스템에 의해 수행될 수 있다. 설명의 편의를 위해, 도 7a 내지 도 7m에 도시된 바와 같은 경계 포인트들을 식별하는 프로세스는 도 5a 및 도 5b의 인코더(510) 및 디코더(550)의 경계 검출 엔진(530)에 의해 수행되는 것으로 설명된다.
도 7a는 예시적인 슬라이딩 윈도우(700)를 도시한 것이다. 슬라이딩 윈도우(700)는 중앙에 쿼리 픽셀(702)을 포함한다. 슬라이딩 윈도우(700)는 또한 쿼리 픽셀(702)에 인접하고 이것을 둘러싸는 제 1 레이어의 픽셀들을 포함한다. 제 1 레이어의 픽셀들은 픽셀(704a), 픽셀(704b), 픽셀(704c), 픽셀(704d), 픽셀(704e), 픽셀(704f), 픽셀(704g), 및 픽셀(704h)(집합적으로 픽셀들(704))을 포함한다. 제 1 레이어는 그 픽셀들이 쿼리 픽셀(702)에 가장 가까운 픽셀들을 포함하는 픽셀들이다.
슬라이딩 윈도우(700)는 또한 쿼리 픽셀(702)로부터 2픽셀 떨어진 제 1 레이어의 픽셀들(704)에 인접하고 이들을 둘러싸는 제 2 레이어의 픽셀들을 포함한다. 제 2 레이어의 픽셀들은 픽셀(706a), 픽셀(706b), 픽셀(706c), 픽셀(706d), 픽셀(706e), 픽셀(706f), 픽셀(706g), 픽셀(706h), 픽셀(706i), 픽셀(706j), 픽셀(706k), 픽셀(706l), 픽셀(706m), 픽셀(706n), 픽셀(706o), 픽셀(706p)(집합적으로 제 2 레이어의 픽셀들(706))을 포함한다. 제 2 레이어는 그 픽셀들이 쿼리 픽셀(702)에 대해 2픽셀 거리 내에 있는 픽셀들을 포함하는 픽셀들이다.
특정 실시예들에서, 쿼리 픽셀을 둘러싸는 추가 레이어들이 포함될 수 있다. 슬라이딩 윈도우(700)는 쿼리 픽셀로부터 거리가 있는 픽셀들을 식별할 수 있다. 거리가 2개 이상 레이어의 픽셀들을 포함할 수 있기 때문에 이 거리는 근접 임계값으로 지칭될 수 있다.
도 7b는 점유 맵 프레임(710)의 일부를 도시한 것이다. 이 점유 맵 프레임(710)의 부분은 도 5b의 점유 맵 프레임들(516) 중 하나와 유사하고, 픽셀(712)과 같은 다중 픽셀을 포함한다. 픽셀들(712)은 각각의 개별 픽셀과 연관된 값에 기초하여 유효 및 비유효 픽셀들 모두를 포함한다. 도 7b에 도시된 바와 같이, 비유효 픽셀(0 값을 갖는 픽셀)은 음영 없이 표시되는 반면, 유효 픽셀(1과 같이 0이 아닌 값을 갖는 픽셀)은 음영으로 표시된다. 이 점유 맵 프레임(710)의 부분은 패치(714)를 포함한다. 패치(714)는 25개의 유효 픽셀을 포함한다.
도 5b 및 도 5c의 경계 검출 엔진(530)은 점유 맵 프레임(710)의 부분에서 패치들의 경계 검출을 수행한다. 예를 들어, 경계 검출 엔진(530)은 유효 픽셀과 비유효 픽셀 사이의 경계를 식별한다. 다른 예에서, 경계 검출 엔진(530)은 쿼리 픽셀로부터 임계 거리 내에 있는 유효 픽셀과 비유효 픽셀 사이의 경계를 식별한다. 경계 검출 엔진(530)은 임의의 패치의 경계에 대한 근접 임계값 내에 있는 픽셀들을 식별하기 위해 점유 맵 프레임에 대해 싱글 패스(single pass)를 수행한다.
도 7c는 점유 맵 프레임(710)의 일 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 비유효 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 식별된 경계 포인트들(720a)에 도시된 바와 같이 비-경계 포인트에 대응하는 것으로 해당 픽셀(점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7d는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7c와 비교하여 우측으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 비유효 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 식별된 경계 포인트들(720b)에 도시된 바와 같이 비-경계 포인트에 대응하는 것으로 해당 픽셀(점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7e는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7d와 비교하여 우측으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 비유효 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 식별된 경계 포인트들(720c)에 도시된 바와 같이 비-경계 포인트에 대응하는 것으로 해당 픽셀(점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7f는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7e와 비교하여 우측으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 비유효 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 식별된 경계 포인트들(720d)에 도시된 바와 같이 비-경계 포인트에 대응하는 것으로 해당 픽셀(점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7g는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7f와 비교하여 우측으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효한 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 제 1 레이어의 픽셀들(704) 내의 임의의 픽셀들이 유효하지 않은지 여부를 결정한다(0의 값을 갖는 점유 맵 프레임(710)의 픽셀에 대응). 도 7g에 도시된 바와 같이, 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내의 5개의 픽셀은 비유효 픽셀들 위에 위치되는 반면 3개의 픽셀은 유효 픽셀들 위에 위치된다. 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내에 있는 픽셀들 중 적어도 하나가 비유효 픽셀 위에 위치하기 때문에, 경계 검출 엔진(530)은 식별된 경계 포인트들(720e)에 도시된 바와 같이 경계 포인트에 대응하는 것으로서 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7h는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7g에 비해 오른쪽으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효한 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 제 1 레이어의 픽셀들(704) 내의 임의의 픽셀들이 유효하지 않은지 여부를 결정한다(0의 값을 갖는 점유 맵 프레임(710)의 픽셀에 대응). 도 7h에 도시된 바와 같이, 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내에 있는 5개의 픽셀은 비유효 픽셀들 위에 위치되는 반면 3개의 픽셀은 유효 픽셀들 위에 위치된다. 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내에 있는 픽셀들 중 적어도 하나가 비유효 픽셀 위에 위치하기 때문에, 경계 검출 엔진(530)은 식별된 경계 포인트들(720f)에 도시된 바와 같이 경계 포인트에 대응하는 것으로서 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7i는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7h와 비교하여 우측으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효한 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 제 1 레이어의 픽셀들(704) 내의 임의의 픽셀들이 유효하지 않은지 여부를 결정한다(0의 값을 갖는 점유 맵 프레임(710)의 픽셀에 대응). 도 7i에 도시된 바와 같이, 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내의 5개의 픽셀은 비유효 픽셀들 위에 위치되는 반면 3개의 픽셀은 유효 픽셀들 위에 위치된다. 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내에 있는 픽셀들 중 적어도 하나가 비유효 픽셀 위에 위치하기 때문에, 경계 검출 엔진(530)은 식별된 경계 포인트들(720g)에 도시된 바와 같이 경계 포인트에 대응하는 것으로서 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7j는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7i와 비교하여 우측으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효한 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 제 1 레이어의 픽셀들(704) 내의 임의의 픽셀들이 유효하지 않은지 여부를 결정한다(0의 값을 갖는 점유 맵 프레임(710)의 픽셀에 대응). 도 7j에 도시된 바와 같이, 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내의 5개의 픽셀은 비유효 픽셀들 위에 위치되는 반면 3개의 픽셀은 유효 픽셀들 위에 위치된다. 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내에 있는 픽셀들 중 적어도 하나가 비유효 픽셀 위에 위치하기 때문에, 경계 검출 엔진(530)은 식별된 경계 포인트들(720h)에 도시된 바와 같이 경계 포인트에 대응하는 것으로서 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7k는 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7j와 비교하여 오른쪽으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효한 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 제 1 레이어의 픽셀들(704) 내의 임의의 픽셀들이 유효하지 않은지 여부를 결정한다(0의 값을 갖는 점유 맵 프레임(710)의 픽셀에 대응). 도 7i에 도시된 바와 같이, 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내의 5개의 픽셀은 비유효 픽셀들 위에 위치되는 반면 3개의 픽셀은 유효 픽셀들 위에 위치된다. 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내에 있는 픽셀들 중 적어도 하나가 비유효 픽셀 위에 위치하기 때문에, 경계 검출 엔진(530)은 식별된 경계 포인트들(720g)에 도시된 바와 같이 경계 포인트에 대응하는 것으로서 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 식별한다.
도 7l은 점유 맵 프레임(710)의 새로운 위치에서의 슬라이딩 윈도우(700)를 도시한 것이다. 즉, 슬라이딩 윈도우(700)는 도 7k와 비교하여 우측으로 한 픽셀 이동하였다. 경계 검출 엔진(530)은 슬라이딩 윈도우(700)의 쿼리 픽셀(702)이 점유 맵 프레임(710)의 유효 또는 비유효 픽셀 위에 위치하는지 여부를 결정한다. 쿼리 픽셀(702)이 점유 맵 프레임(710)의 비유효 픽셀에 대응하는 것으로 결정하는 경우, 경계 검출 엔진(530)은 식별된 경계 포인트들(720b)에 도시된 바와 같이 비-경계 포인트에 대응하는 것으로서 해당 픽셀(점유 맵 프레임(710)의 픽셀)을 식별한다.
경계 검출 엔진(530)이 슬라이딩 윈도우(700)의 제 1 레이어의 픽셀들(704) 내의 모든 픽셀이 유효 픽셀들 위에 위치하는 것으로 결정한 경우, 경계 검출 엔진(530)은 제 2 레이어의 픽셀들(706)의 픽셀들을 검사하게 됨에 유의한다. 제 2 레이어의 픽셀들(706)의 픽셀들 중 임의의 픽셀이 비유효 픽셀 위에 위치한 경우, 경계 검출 엔진(530)은 경계 포인트에 대응하는 것으로서 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 결정하게 된다. 대안적으로, 제 2 레이어의 픽셀들(706)의 모든 픽셀이 유효 픽셀들 위에 위치한 경우, 경계 검출 엔진(530)은 비-경계 포인트에 대응하는 것으로서 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 식별하게 된다.
해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 경계 포인트에 대응하는 것으로 결정한 이후에, 또는 해당 픽셀(쿼리 픽셀(702)에 의해 표시된 점유 맵 프레임(710)의 픽셀)을 비-경계 포인트에 대응하는 것으로 결정한 이후에, 슬라이딩 윈도우는 점유 맵의 다른 픽셀 위로 이동한다. 특정 실시예들에서, 슬라이딩 윈도우(700)는 한 행의 한 픽셀로부터 다른 픽셀로 수평 이동하고, 행의 끝에 도달하면 한 픽셀을 새로운 행으로 수직 이동하며 각 픽셀이 검사된 이후에 계속해서 새로운 행으로 수직 하향 이동한다. 특정 실시예들에서, 슬라이딩 윈도우(700)는 점유 맵 프레임의 픽셀들에 걸쳐 미리 정의된 패턴으로 이동한다.
도 7m은 경계 포인트들(720k)을 도시한 것이다. 도 7m은 슬라이딩 윈도우(700) 및 경계 검출 엔진(530)에 의해 식별된 패치(714)에 기초하여, 점유 맵 프레임(710)의 어느 픽셀들이 3D 포인트 클라우드의 경계 포인트에 대응하는지를 나타내는 매핑을 도시한 것이다.
도 7a 내지 도 7m이 경계 포인트들을 식별하는 일 예를 도시하고 있지만, 도 7a 내지 도 7m에 대하여 다양한 변경이 이루어질 수 있다. 예를 들어 슬라이딩 윈도우에는 더 많거나 더 적은 레이어가 포함될 수 있다. 다른 예에서, 임의의 수의 픽셀들이 점유 맵 프레임(710)의 부분에 포함될 수 있고, 픽셀들 중 임의의 픽셀은 프레임 상의 유효 또는 비유효 포인트들일 수 있다.
도 8은 본 개시의 일 실시예에 따른 포인트 클라우드를 인코딩하기 위한 예시적인 방법(800)을 도시한 것이다. 방법(800)은 도 1의 서버(104) 또는 클라이언트 장치들(106-116) 중 임의의 장치, 도 2의 서버(200), 도 3의 전자 장치(300), 도 5a 및 도 5b의 인코더(510), 또는 임의의 다른 적합한 장치 또는 시스템에 의해 수행될 수 있다. 설명의 편의를 위해, 방법(800)은 도 5a 및 도 5b의 인코더(510)에 의해 수행되는 것으로 설명된다.
단계 802에서, 인코더(510)는 3D 포인트 클라우드에 대해 지오메트리 프레임을 생성한다. 지오메트리 프레임에는 픽셀들이 포함된다. 지오메트리 프레임에 포함된 픽셀들의 일부는 3D 포인트 클라우드의 각각의 포인트 클러스터들에 대응하는 패치들로 구성되는 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타낸다. 또한, 인코더(510)는 어트리뷰트 프레임을 생성한다. 어트리뷰트 프레임은 픽셀들을 포함하며, 어트리뷰트 프레임의 픽셀들의 일부는 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타낸다. 제 2 프레임에 있는 픽셀들의 위치들은 제 1 프레임에 있는 픽셀들의 각각의 위치들에 대응한다.
단계 804에서, 인코더(510)는 점유 맵 프레임을 생성한다. 점유 맵 프레임은 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타내는 지오메트리 프레임의 픽셀들의 부분을 식별하는 픽셀들을 포함한다. 점유 맵 프레임의 픽셀들은 또한 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내는 어트리뷰트 프레임의 픽셀들의 위치들을 식별시킨다.
단계 806에서, 인코더(510)는 지오메트리 프레임을 인코딩하여 지오메트리 서브-스트림을 생성하고, 어트리뷰트 프레임을 인코딩하여 어트리뷰트 서브-스트림을 생성하고, 점유 맵 프레임을 인코딩하여 점유 맵 서브-스트림을 생성한다. 지오메트리 서브-스트림, 어트리뷰트 서브-스트림 및 점유 맵 서브-스트림을 디코딩한 것에 응답하여, 인코더(510)는 지오메트리 프레임 및 점유 맵 프레임을 사용하여 3D 포인트 클라우드를 재구성한다(단계 808).
단계 810에서, 인코더(510)는 임의의 패치의 경계에 대한 근접 임계값 내에 위치된 지오메트리 프레임 및 어트리뷰트 프레임의 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별하기 위해 점유 맵 프레임의 싱글 패스를 수행한다. 인코더(510)는 점유 맵 프레임 내의 픽셀들의 값에 기초하여, 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별한다.
예를 들어, 인코더(510)는 점유 맵 프레임에서 쿼리 픽셀을 선택하고, 쿼리 픽셀이 지오메트리 프레임의 유효 픽셀에 대응하는 것으로 결정하면, 인코더(510)는 쿼리 픽셀의 이웃 픽셀들을 검사한다. 인코더(510)는 먼저 쿼리 픽셀 주변의 제 1 레이어 내의 픽셀들을 검사한다. 제 1 레이어와 관련하여, 인코더(510)는 (i) 제 1 레이어의 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부, (ii) 제 1 레이어의 픽셀들 중 임의의 픽셀이 쿼리 픽셀과 다른 패치에 속하는지 여부를 식별하며, 또는 (iii) 제 1 레이어의 픽셀들 중 임의의 픽셀이 프레임의 에지에 위치하면, 쿼리 픽셀에 대응하는 포인트 클라우드의 포인트가 경계 포인트로서 식별된다. (i) 제 1 레이어의 모든 픽셀이 유효하거나, (ii) 제 1 레이어의 모든 픽셀이 쿼리 픽셀과 다른 패치에 속하거나, (iii) 제 1 레이어의 픽셀들 중 어느 것도 프레임의 에지에 위치하지 않는 경우, 인코더(510)는 쿼리 픽셀 주변의 제 2 레이어 내의 픽셀들을 검사한다.
제 2 레이어와 관련하여, 인코더(510)는 (i) 제 2 레이어의 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부, (ii) 제 2 레이어의 픽셀들 중 임의의 픽셀이 쿼리 픽셀과 다른 패치에 속하는지 여부를 식별하며, 또는 (iii) 제 2 레이어의 픽셀들 중 임의의 픽셀이 프레임의 에지에 위치하면, 쿼리 픽셀에 대응하는 포인트 클라우드의 포인트가 경계 포인트로서 식별된다. (i) 제 2 레이어의 모든 픽셀이 유효하거나, (ii) 제 2 레이어의 모든 픽셀이 쿼리 픽셀과 다른 패치에 속하거나, (iii) 제 2 레이어의 픽셀들 중 어느 것도 프레임의 에지에 위치하지 않는 경우, 인코더(510)는 새로운 쿼리 픽셀을 선택한다.
특정 실시예들에서, 디코더(550)는 식별된 경계 포인트들에 대해 스무딩을 수행하고, 스무딩 파라미터들을 생성할 수 있다. 디코더(550)는 임의의 가능한 아티팩트들을 제거함으로써 재구성된 포인트 클라우드의 시각적 품질을 증가시키기 위해 스무딩 파라미터들을 적용할 수 있다.
3D 포인트 클라우드를 나타내는 프레임들이 인코딩되고, 경계 포인트들이 식별된 이후에, 인코더(510)는 프레임들을 비트스트림으로 다중화할 수 있다. 단계 812에서, 인코더(510)는 비트스트림을 송신한다. 비트스트림은 궁극적으로 디코더(550)와 같은 디코더로 송신될 수 있다.
도 8이 포인트 클라우드를 인코딩하기 위한 방법(800)의 일 예를 도시하고 있지만, 도 8에 대한 다양한 변경이 이루어질 수 있다. 예를 들어, 일련의 단계로서 도시되어 있지만, 도 8의 다양한 단계는 중첩되거나 병렬로 발생하거나 여러 번 발생할 수 있다.
도 9는 본 개시의 일 실시예에 따른 포인트 클라우드를 디코딩하기 위한 예시적인 방법(900)을 도시한 것이다. 방법(900)은 도 1의 서버(104) 또는 클라이언트 장치들(106-116) 중 임의의 장치, 도 2의 서버(200), 도 3의 전자 장치(300), 도 5a 및 도 5c의 디코더(550), 또는 임의의 다른 적합한 장치 또는 시스템에 의해 수행될 수 있다. 설명의 편의를 위해, 방법(900)은 도 5a 및 도 5c의 디코더(550)에 의해 수행되는 것으로 설명된다.
방법(900)은 디코더(예를 들면, 디코더(550))가 압축된 비트스트림을 수신하는 것으로 시작한다(단계 902). 수신된 비트스트림은 다수의 2-D 프레임에 매핑되고 압축된 다음 송신되어 궁극적으로 디코더(550)에 의해 수신되는, 인코딩된 포인트 클라우드를 포함할 수 있다.
단계 904에서, 디코더(550)는 비트스트림으로부터 지오메트리 프레임 및 어트리뷰트 프레임을 디코딩한다. 지오메트리 프레임은 픽셀들을 포함하며, 지오메트리 프레임의 픽셀들 중 일부는 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타낸다. 3D 포인트 클라우드의 각각의 포인트 클러스터들에 대응하는 패치들로 구성되는 지오메트리 프레임의 픽셀들. 어트리뷰트 프레임은 픽셀들을 포함하고, 어트리뷰트 프레임의 픽셀들 중 일부는 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내며, 어트리뷰트 프레임에서 픽셀들의 위치는 지오메트리 프레임에서 픽셀들의 각 위치에 대응한다.
단계 906에서, 디코더(550)는 비트스트림으로부터 점유 맵 프레임을 디코딩한다. 점유 맵 프레임은 3D 포인트 클라우드의 포인트들의 기하학적 위치들을 나타내는 지오메트리 프레임의 픽셀들의 부분을 식별하는 픽셀들을 포함한다. 점유 맵 프레임의 픽셀들은 또한 3D 포인트 클라우드의 포인트들의 어트리뷰트 정보를 나타내는 어트리뷰트 프레임의 픽셀들의 부분을 식별시킨다.
단계 908에서, 디코더(550)는 지오메트리 프레임, 어트리뷰트 프레임 및 점유 맵 프레임을 이용하여 3D 포인트 클라우드를 재구성한다.
단계 910에서, 디코더(550)는 점유 맵 프레임의 싱글 패스를 수행하여 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 지오메트리 프레임의 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별한다. 인코더(510)는 점유 맵 프레임 내의 픽셀들의 값에 기초하여, 픽셀들의 서브세트에 대응하는 재구성된 3D 포인트 클라우드의 포인트들을 식별한다.
예를 들어, 인코더(510)는 점유 맵 프레임에서 쿼리 픽셀을 선택하고, 쿼리 픽셀이 지오메트리 프레임의 유효 픽셀에 대응하는 것으로 결정하는 경우, 인코더(510)는 쿼리 픽셀의 이웃 픽셀들을 검사한다. 인코더(510)는 먼저 쿼리 픽셀 주변의 제 1 레이어 내의 픽셀들을 검사한다. 제 1 레이어와 관련하여, 인코더(510)는 (i) 제 1 레이어의 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부, (ii) 제 1 레이어의 픽셀들 중 임의의 픽셀이 쿼리 픽셀과 다른 패치에 속하는지 여부를 식별하며, 또는 (iii) 제 1 레이어의 픽셀들 중 임의의 픽셀이 프레임의 에지에 위치하면, 쿼리 픽셀에 대응하는 포인트 클라우드의 포인트가 경계 포인트로서 식별된다. (i) 제 1 레이어의 모든 픽셀이 유효하거나, (ii) 제 1 레이어의 모든 픽셀이 쿼리 픽셀과 다른 패치에 속하거나, (iii) 제 1 레이어의 픽셀들 중 어느 것도 프레임의 에지에 위치하지 않는 경우, 인코더(510)는 쿼리 픽셀 주변의 제 2 레이어 내의 픽셀들을 검사한다.
제 2 레이어와 관련하여, 인코더(510)는 (i) 제 2 레이어의 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부, (ii) 제 2 레이어의 픽셀들 중 임의의 픽셀이 쿼리 픽셀과 다른 패치에 속하는지 여부를 식별하며, 또는 (iii) 제 2 레이어의 픽셀들 중 임의의 픽셀이 프레임의 에지에 위치하면, 쿼리 픽셀에 대응하는 포인트 클라우드의 포인트가 경계 포인트로서 식별된다. (i) 제 2 레이어의 모든 픽셀이 유효하거나, (ii) 제 2 레이어의 모든 픽셀이 쿼리 픽셀과 다른 패치에 속하거나, (iii) 제 2 레이어의 픽셀들 중 어느 것도 프레임의 에지에 위치하지 않는 경우, 인코더(510)는 새로운 쿼리 픽셀을 선택한다.
그 후에 디코더(550)는 임의의 가능한 아티팩트들을 제거함으로써 재구성된 포인트 클라우드의 시각적 품질을 증가시키기 위해 식별된 경계 포인트들에 대한 스무딩을 수행할 수 있다. 그 후에, 디코더(550)는 사용자가 볼 수 있도록 포인트 클라우드를 렌더링할 수 있다.
도 9가 포인트 클라우드를 디코딩하기 위한 방법(900)의 일 예를 도시하고 있지만, 도 9에 대한 다양한 변경이 이루어질 수 있다. 예를 들어, 일련의 단계로서 도시되어 있지만, 도 9의 다양한 단계는 중첩되거나 병렬로 발생하거나 여러 번 발생할 수 있다.
도면들이 사용자 장비에 대한 다양한 예들을 도시하고 있지만, 도면들에 대한 다양한 변경이 이루어질 수 있다. 예를 들어, 사용자 장비는 임의의 적절한 배열로 임의의 수의 각 구성 요소를 포함할 수 있다. 일반적으로, 도면들은 본 개시의 범위를 임의의 특정 구성(들)으로 제한하지 않는다. 또한, 도면들이 이 특허 명세서에 개시된 다양한 사용자 장비 특징들이 사용될 수 있는 작동 환경들을 도시하고 있지만, 이러한 특징들은 임의의 다른 적합한 시스템에서 사용될 수도 있다.
본 개시가 예시적인 실시예로 설명되었지만, 다양한 변경 및 수정이 당업자에게 제안될 수 있다. 본 개시는 첨부된 청구범위 내에 속하는 그러한 변경 및 수정을 포함하는 것으로 의도된다.

Claims (15)

  1. 포인트 클라우드(point cloud) 디코딩을 위한 디코딩 장치에 있어서,
    비트스트림을 수신하도록 구성되는 통신 인터페이스; 및
    상기 통신 인터페이스에 작동 가능하게 커플링된 프로세서를 포함하며, 상기 프로세서는,
    픽셀들을 포함하는 제 1 프레임을 상기 비트스트림으로부터 디코딩하고 - 상기 제 1 프레임의 상기 픽셀들의 일부는 3D(three-dimensional) 포인트 클라우드의 포인트들의 각각의 클러스터(cluster)들에 대응하는 패치들로 구성되는 상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타냄 -,
    픽셀들을 포함하는 제 2 프레임을 상기 비트스트림으로부터 디코딩하고 - 상기 제 2 프레임의 상기 픽셀들의 일부는 상기 3D 포인트 클라우드의 상기 포인트들의 어트리뷰트(attribute) 정보를 나타내고, 상기 제 2 프레임의 상기 픽셀들의 위치들은 상기 제 1 프레임의 상기 픽셀들의 각각의 위치들에 대응함 -,
    상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타내는 상기 제 1 프레임의 상기 픽셀들의 부분을 식별하는 픽셀들을 포함하는 점유 맵 프레임(occupancy map frame)을 상기 비트스트림으로부터 디코딩하고,
    상기 제 1 프레임, 상기 제 2 프레임 및 상기 점유 맵 프레임을 사용하여 상기 3D 포인트 클라우드를 재구성하며, 또한
    상기 점유 맵 프레임의 싱글 패스(single pass)를 수행함으로써, 상기 점유 맵 프레임 내의 상기 픽셀들의 값에 기초하여, 상기 패치들 중 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 상기 제 1 프레임 및 상기 제 2 프레임의 픽셀들의 서브세트에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트들을 식별하도록 구성되는, 디코딩 장치.
  2. 제 1 항에 있어서,
    상기 프로세서는,
    상기 비트스트림으로부터, 지오메트리 스무딩 파라미터들 또는 어트리뷰트 스무딩 파라미터들을 식별하고,
    상기 3D 포인트 클라우드의 상기 포인트들 모두가 경계 포인트들 또는 비-경계 포인트들로 식별될 때까지 상기 점유 맵 프레임의 상기 픽셀들을 점진적으로 선택하고 - 상기 경계 포인트들은 상기 제 1 프레임 및 상기 제 2 프레임의 상기 픽셀들의 서브세트에 대응함 -, 또한
    상기 지오메트리 스무딩 파라미터들 또는 상기 어트리뷰트 스무딩 파라미터들에 기초하여 상기 식별된 경계 포인트들에 대해 스무딩을 수행하도록 더 구성되는, 디코딩 장치.
  3. 제 1 항에 있어서,
    상기 픽셀들의 서브세트에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트를 식별하기 위해, 상기 프로세서는,
    상기 점유 맵 프레임의 쿼리 픽셀을 선택하고;
    상기 쿼리 픽셀의 값에 기초하여, 상기 쿼리 픽셀이 유효한지 또는 유효하지 않은지 여부를 결정하고;
    상기 쿼리 픽셀이 유효한 것으로 결정한 것에 응답하여, 상기 쿼리 픽셀을 제 1 쿼리 픽셀로서 식별하며; 또한
    상기 쿼리 픽셀이 유효하지 않은 것으로 결정한 것에 응답하여, 상기 제 1 쿼리 픽셀이 식별될 때까지 상기 점유 맵 프레임의 상기 픽셀들의 값들을 계속 검사하도록 구성되며,
    여기서 비유효 픽셀은 상기 점유 맵 프레임의 상기 비유효 픽셀과 동일한 위치에 위치되는 상기 제 1 프레임의 픽셀이 상기 3D 포인트 클라우드의 포인트의 기하학적 위치를 나타내지 않음을 가리키고,
    여기서 유효 픽셀은 상기 점유 맵 프레임의 상기 유효 픽셀과 동일한 위치에 위치되는 상기 제 1 프레임의 픽셀이 상기 3D 포인트 클라우드의 포인트의 기하학적 위치를 나타냄을 가리키는, 디코딩 장치.
  4. 제 3 항에 있어서,
    상기 제 1 쿼리 픽셀을 식별한 것에 응답하여, 상기 프로세서는,
    상기 제 1 쿼리 픽셀에 인접한 상기 점유 맵 프레임의 제 1 레이어의 픽셀들을 식별하고;
    상기 제 1 레이어의 상기 픽셀들의 값들에 기초하여, 상기 제 1 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하며; 또한
    상기 제 1 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 점유 맵 프레임의 상기 제 1 쿼리 픽셀과 동일한 위치에 있는 상기 제 1 프레임의 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트(boundary point)로서 식별하도록 구성되는, 디코딩 장치.
  5. 제 4 항에 있어서,
    상기 제 1 레이어의 상기 픽셀들 모두가 유효한 것으로 결정한 것에 응답하여, 상기 프로세서는,
    상기 제 1 레이어의 픽셀들에 인접한 상기 점유 맵 프레임의 제 2 레이어의 픽셀들을 식별하고;
    상기 제 2 레이어의 상기 픽셀들의 값들에 기초하여, 상기 제 2 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하고;
    상기 제 2 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 점유 맵 프레임의 상기 제 1 쿼리 픽셀과 동일한 위치에 있는 상기 제 1 프레임의 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하며; 또한
    상기 제 2 레이어의 상기 픽셀들 모두가 유효한 것으로 결정하거나 또는 상기 재구성된 3D 포인트 클라우드의 상기 포인트를 상기 경계 포인트로 식별한 것에 응답하여, 상기 재구성된 3D 포인트 클라우드의 경계 포인트들에 대응하는 상기 점유 맵 프레임의 후속 쿼리 픽셀들을 계속 식별하도록 구성되는, 디코딩 장치.
  6. 제 3 항에 있어서,
    상기 제 1 쿼리 픽셀을 식별한 것에 응답하여, 상기 프로세서는,
    상기 제 1 프레임의 지오메트리 픽셀이 속하는 제 1 패치를 식별하고 - 상기 지오메트리 픽셀은 상기 점유 맵 프레임의 상기 제 1 쿼리 픽셀과 동일한 위치에 위치됨 -;
    상기 지오메트리 픽셀에 인접한 상기 제 1 프레임의 제 1 레이어의 픽셀들을 식별하고;
    (i) 상기 제 1 레이어의 상기 픽셀들 중 임의의 픽셀이 제 2 패치에 속하는지 여부 및 (ii) 상기 제 1 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하고 - 상기 제 1 패치 및 상기 제 2 패치는 상기 3D 포인트 클라우드의 포인트들의 서로 다른 클러스터들에 대응함 -;
    상기 제 1 레이어의 상기 픽셀들 중 적어도 하나가 상기 제 2 패치에 속하는 것으로 결정하거나 또는 상기 제 1 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 지오메트리 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하고;
    상기 제 1 레이어의 상기 픽셀들 모두가 상기 제 1 패치에 속하고 상기 제 1 레이어의 상기 픽셀들 모두가 유효한 것으로 결정한 것에 응답하여, 상기 제 1 레이어의 픽셀들에 인접한 상기 제 1 프레임의 제 2 레이어의 픽셀들을 식별하고;
    (i) 상기 제 2 레이어의 상기 픽셀들 중 임의의 픽셀이 상기 제 2 패치에 속하는지 여부 및 (ii) 상기 제 2 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하며; 또한
    상기 제 2 레이어의 상기 픽셀들 중 적어도 하나가 상기 제 2 패치에 속한 것으로 결정하거나 또는 상기 제 2 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 지오메트리 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 상기 포인트를 경계 포인트로서 식별하도록 더 구성되는, 디코딩 장치.
  7. 제 3 항에 있어서,
    상기 제 1 쿼리 픽셀을 식별한 것에 응답하여, 상기 프로세서는,
    상기 제 1 쿼리 픽셀이 상기 점유 맵 프레임의 에지(edge)에 대한 근접 임계값 내에 위치되는지 여부를 결정하며, 또한
    상기 제 1 쿼리 픽셀이 상기 점유 맵 프레임의 상기 에지에 대한 근접 임계값 내에 위치되는 것으로 결정한 것에 응답하여, 상기 제 1 쿼리 픽셀에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하도록 더 구성되는, 디코딩 장치.
  8. 포인트 클라우드 디코딩을 위한 방법에 있어서,
    비트스트림을 수신하는 단계;
    픽셀들을 포함하는 제 1 프레임을 상기 비트스트림으로부터 디코딩하는 단계 - 상기 제 1 프레임의 상기 픽셀들의 일부는 3D(three-dimensional) 포인트 클라우드의 포인트들의 각각의 클러스터(cluster)들에 대응하는 패치들로 구성되는 상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타냄 -;
    픽셀들을 포함하는 제 2 프레임을 상기 비트스트림으로부터 디코딩하는 단계 - 상기 제 2 프레임의 상기 픽셀들의 일부는 상기 3D 포인트 클라우드의 상기 포인트들의 어트리뷰트 정보를 나타내고, 상기 제 2 프레임의 상기 픽셀들의 위치들은 상기 제 1 프레임의 상기 픽셀들의 각각의 위치들에 대응함 -;
    상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타내는 상기 제 1 프레임의 상기 픽셀들의 부분을 식별하는 픽셀들을 포함하는 점유 맵 프레임을 상기 비트스트림으로부터 디코딩하는 단계;
    상기 제 1 프레임, 상기 제 2 프레임 및 상기 점유 맵 프레임을 사용하여 상기 3D 포인트 클라우드를 재구성하는 단계; 및
    상기 점유 맵 프레임의 싱글 패스를 수행함으로써, 상기 점유 맵 프레임 내의 상기 픽셀들의 값에 기초하여, 상기 패치들 중 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 상기 제 1 프레임 및 상기 제 2 프레임의 픽셀들의 서브세트에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트들을 식별하는 단계를 포함하는, 방법.
  9. 제 8 항에 있어서,
    상기 픽셀들의 서브세트에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트들을 식별하는 단계는,
    상기 점유 맵 프레임의 쿼리 픽셀을 선택하는 단계;
    상기 쿼리 픽셀의 값에 기초하여, 상기 쿼리 픽셀이 유효한지 또는 유효하지 않은지 여부를 결정하는 단계;
    상기 쿼리 픽셀이 유효한 것으로 결정한 것에 응답하여, 상기 쿼리 픽셀을 제 1 쿼리 픽셀로서 식별하는 단계; 및
    상기 쿼리 픽셀이 유효하지 않은 것으로 결정한 것에 응답하여, 상기 제 1 쿼리 픽셀이 식별될 때까지 상기 점유 맵 프레임의 상기 픽셀들의 값들을 계속 검사하는 단계를 포함하며,
    여기서 비유효 픽셀은 상기 점유 맵 프레임의 상기 비유효 픽셀과 동일한 위치에 위치되는 상기 제 1 프레임의 픽셀이 상기 3D 포인트 클라우드의 포인트의 기하학적 위치를 나타내지 않음을 가리키고,
    여기서 유효 픽셀은 상기 점유 맵 프레임의 상기 유효 픽셀과 동일한 위치에 위치되는 상기 제 1 프레임의 픽셀이 상기 3D 포인트 클라우드의 포인트의 기하학적 위치를 나타냄을 가리키는, 방법.
  10. 제 9 항에 있어서,
    상기 제 1 쿼리 픽셀을 식별한 것에 응답하여, 상기 제 1 쿼리 픽셀에 인접한 상기 점유 맵 프레임의 제 1 레이어의 픽셀들을 식별하는 단계;
    상기 제 1 레이어의 상기 픽셀들의 값들에 기초하여, 상기 제 1 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하는 단계; 및
    상기 제 1 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 점유 맵 프레임의 상기 제 1 쿼리 픽셀과 동일한 위치에 있는 상기 제 1 프레임의 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하는 단계를 더 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 제 1 레이어의 상기 픽셀들 모두가 유효한 것으로 결정한 것에 응답하여, 상기 제 1 레이어의 픽셀들에 인접한 상기 점유 맵 프레임의 제 2 레이어의 픽셀들을 식별하는 단계;
    상기 제 2 레이어의 상기 픽셀들의 값들에 기초하여, 상기 제 2 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하는 단계;
    상기 제 2 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 점유 맵 프레임의 상기 제 1 쿼리 픽셀과 동일한 위치에 있는 상기 제 1 프레임의 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하는 단계; 및
    상기 제 2 레이어의 상기 픽셀들 모두가 유효한 것으로 결정하거나 또는 상기 재구성된 3D 포인트 클라우드의 상기 포인트를 상기 경계 포인트로 식별한 것에 응답하여, 상기 재구성된 3D 포인트 클라우드의 경계 포인트들에 대응하는 상기 점유 맵 프레임의 후속 쿼리 픽셀들을 계속 식별하는 단계를 더 포함하는, 방법.
  12. 제 9 항에 있어서,
    상기 제 1 쿼리 픽셀을 식별한 것에 응답하여, 상기 제 1 프레임의 지오메트리 픽셀이 속하는 제 1 패치를 식별하는 단계 - 상기 지오메트리 픽셀은 상기 점유 맵 프레임의 상기 제 1 쿼리 픽셀과 동일한 위치에 위치됨 -;
    상기 지오메트리 픽셀에 인접한 상기 제 1 프레임의 제 1 레이어의 픽셀들을 식별하는 단계;
    (i) 상기 제 1 레이어의 상기 픽셀들 중 임의의 픽셀이 제 2 패치에 속하는지 여부 및 (ii) 상기 제 1 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하는 단계 - 상기 제 1 패치 및 상기 제 2 패치는 상기 3D 포인트 클라우드의 포인트들의 서로 다른 클러스터들에 대응함 -;
    상기 제 1 레이어의 상기 픽셀들 중 적어도 하나가 상기 제 2 패치에 속하는 것으로 결정하거나 또는 상기 제 1 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 지오메트리 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하는 단계;
    상기 제 1 레이어의 상기 픽셀들 모두가 상기 제 1 패치에 속하고 상기 제 1 레이어의 상기 픽셀들 모두가 유효한 것으로 결정한 것에 응답하여, 상기 제 1 레이어의 픽셀들에 인접한 상기 제 1 프레임의 제 2 레이어의 픽셀들을 식별하는 단계;
    (i) 상기 제 2 레이어의 상기 픽셀들 중 임의의 픽셀이 상기 제 2 패치에 속하는지 여부 및 (ii) 상기 제 2 레이어의 상기 픽셀들 중 임의의 픽셀이 유효하지 않은지 여부를 결정하는 단계; 및
    상기 제 2 레이어의 상기 픽셀들 중 적어도 하나가 상기 제 2 패치에 속한 것으로 결정하거나 또는 상기 제 2 레이어의 상기 픽셀들 중 적어도 하나가 유효하지 않은 것으로 결정한 것에 응답하여, 상기 지오메트리 픽셀에 의해 나타내지는 상기 재구성된 3D 포인트 클라우드의 상기 포인트를 경계 포인트로서 식별하는 단계를 더 포함하는, 방법.
  13. 제 9 항에 있어서,
    상기 제 1 쿼리 픽셀을 식별한 것에 응답하여, 상기 제 1 쿼리 픽셀이 상기 점유 맵 프레임의 에지에 대한 근접 임계값 내에 위치되는지 여부를 결정하는 단계, 및
    상기 제 1 쿼리 픽셀이 상기 점유 맵 프레임의 상기 에지에 대한 근접 임계값 내에 위치되는 것으로 결정한 것에 응답하여, 상기 제 1 쿼리 픽셀에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트를 경계 포인트로서 식별하는 단계를 더 포함하는, 방법.
  14. 포인트 클라우드 인코딩을 위한 인코딩 장치에 있어서,
    프로세서; 및
    상기 프로세서에 작동 가능하게 커플링되고, 비트스트림을 송신하도록 구성되는 통신 인터페이스를 포함하며, 상기 프로세서는,
    3D(three-dimensional) 포인트 클라우드에 대해, 픽셀들을 포함하는 제 1 프레임을 생성하고 - 상기 제 1 프레임의 상기 픽셀들의 일부는 상기 3D 포인트 클라우드의 포인트들의 각각의 클러스터들에 대응하는 패치들로 구성되는 상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타냄 -,
    픽셀들을 포함하는 제 2 프레임을 생성하고 - 상기 제 2 프레임의 상기 픽셀들의 일부는 상기 3D 포인트 클라우드의 상기 포인트들의 어트리뷰트 정보를 나타내고, 상기 제 2 프레임의 상기 픽셀들의 위치들은 상기 제 1 프레임의 상기 픽셀들의 각각의 위치들에 대응함 -,
    상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타내는 상기 제 1 프레임의 상기 픽셀들의 부분을 식별하는 픽셀들을 포함하는 점유 맵 프레임을 생성하고,
    상기 제 1 프레임을 인코딩하여 지오메트리 서브-스트림을 생성하고, 상기 제 2 프레임을 인코딩하여 어트리뷰트 서브-스트림을 생성하며, 또한 상기 점유 맵 프레임을 인코딩하여 점유 맵 서브-스트림을 생성하고,
    상기 지오메트리 서브-스트림, 상기 어트리뷰트 서브-스트림 및 상기 점유 맵 서브-스트림을 디코딩한 것에 응답하여, 상기 제 1 프레임, 상기 제 2 프레임 및 상기 점유 맵 프레임을 사용하여 상기 3D 포인트 클라우드를 재구성하고,
    상기 점유 맵 프레임의 싱글 패스를 수행함으로써, 상기 점유 맵 프레임 내의 상기 픽셀들의 값에 기초하여, 상기 패치들 중 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 상기 제 1 프레임 및 상기 제 2 프레임의 픽셀들의 서브세트에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트들을 식별하며, 또한
    상기 지오메트리 서브-스트림, 상기 어트리뷰트 서브-스트림 및 상기 점유 맵 서브-스트림을 결합하여 상기 비트스트림을 생성하도록 구성되는, 인코딩 장치.
  15. 포인트 클라우드 인코딩을 위한 방법으로서,
    3D(three-dimensional) 포인트 클라우드에 대해, 픽셀들을 포함하는 제 1 프레임을 생성하는 단계 - 상기 제 1 프레임의 상기 픽셀들의 일부는 상기 3D 포인트 클라우드의 포인트들의 각각의 클러스터들에 대응하는 패치들로 구성되는 상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타냄 -;
    픽셀들을 포함하는 제 2 프레임을 생성하는 단계 - 상기 제 2 프레임의 상기 픽셀들의 일부는 상기 3D 포인트 클라우드의 상기 포인트들의 어트리뷰트 정보를 나타내고, 상기 제 2 프레임의 상기 픽셀들의 위치들은 상기 제 1 프레임의 상기 픽셀들의 각각의 위치들에 대응함 -;
    상기 3D 포인트 클라우드의 상기 포인트들의 기하학적 위치들을 나타내는 상기 제 1 프레임의 상기 픽셀들의 부분을 식별하는 픽셀들을 포함하는 점유 맵 프레임을 생성하는 단계;
    상기 제 1 프레임을 인코딩하여 지오메트리 서브-스트림을 생성하고, 상기 제 2 프레임을 인코딩하여 어트리뷰트 서브-스트림을 생성하며, 또한 상기 점유 맵 프레임을 인코딩하여 점유 맵 서브-스트림을 생성하는 단계;
    상기 지오메트리 서브-스트림, 상기 어트리뷰트 서브-스트림 및 상기 점유 맵 서브-스트림을 디코딩한 것에 응답하여, 상기 제 1 프레임, 상기 제 2 프레임 및 상기 점유 맵 프레임을 사용하여 상기 3D 포인트 클라우드를 재구성하는 단계;
    상기 점유 맵 프레임의 싱글 패스를 수행함으로써, 상기 점유 맵 프레임 내의 상기 픽셀들의 값에 기초하여, 상기 패치들 중 임의의 패치의 경계에 대한 근접 임계값 내에 위치되는 상기 제 1 프레임 및 상기 제 2 프레임의 픽셀들의 서브세트에 대응하는 상기 재구성된 3D 포인트 클라우드의 포인트들을 식별하는 단계;
    상기 지오메트리 서브-스트림, 상기 어트리뷰트 서브-스트림 및 상기 점유 맵 서브-스트림을 결합하여 비트스트림을 생성하는 단계; 및
    상기 비트스트림을 송신하는 단계를 포함하는, 방법.
KR1020217037186A 2019-05-15 2020-05-15 비디오 기반 포인트 클라우드 압축에서 싱글 패스 경계 검출 KR20210142013A (ko)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US201962848188P 2019-05-15 2019-05-15
US62/848,188 2019-05-15
US201962904244P 2019-09-23 2019-09-23
US62/904,244 2019-09-23
US202062986366P 2020-03-06 2020-03-06
US62/986,366 2020-03-06
US15/929,663 US11210812B2 (en) 2019-05-15 2020-05-14 Single-pass boundary detection in video-based point cloud compression
US15/929,663 2020-05-14
PCT/KR2020/006443 WO2020231231A1 (en) 2019-05-15 2020-05-15 Single-pass boundary detection in video-based point cloud compression

Publications (1)

Publication Number Publication Date
KR20210142013A true KR20210142013A (ko) 2021-11-23

Family

ID=73245050

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217037186A KR20210142013A (ko) 2019-05-15 2020-05-15 비디오 기반 포인트 클라우드 압축에서 싱글 패스 경계 검출

Country Status (5)

Country Link
US (1) US11210812B2 (ko)
EP (1) EP3957076A4 (ko)
KR (1) KR20210142013A (ko)
CN (1) CN113841411A (ko)
WO (1) WO2020231231A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019235587A1 (ja) * 2018-06-08 2019-12-12 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
CN112292713A (zh) * 2018-06-12 2021-01-29 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置、以及三维数据解码装置
US11288843B2 (en) * 2019-01-04 2022-03-29 Samsung Electronics Co., Ltd. Lossy compression of point cloud occupancy maps
US20220417557A1 (en) * 2019-06-21 2022-12-29 Lg Electronics Inc. Device and method for processing point cloud data
WO2021002443A1 (ja) * 2019-07-02 2021-01-07 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ 三次元データ符号化方法、三次元データ復号方法、三次元データ符号化装置、及び三次元データ復号装置
KR20190104931A (ko) * 2019-08-22 2019-09-11 엘지전자 주식회사 시설 안내 로봇 및 이를 이용한 시설 안내 방법
US11196977B2 (en) * 2019-09-24 2021-12-07 Sony Group Corporation Unified coding of 3D objects and scenes
CN114467119A (zh) * 2019-10-09 2022-05-10 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置及三维数据解码装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10832471B2 (en) 2017-03-27 2020-11-10 Mitsubishi Electric Research Laboratories, Inc. Fast T-spline fitting system and method
EP3429206A1 (en) 2017-07-13 2019-01-16 Thomson Licensing Method and device for encoding a point cloud
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
EP3468182A1 (en) 2017-10-06 2019-04-10 InterDigital VC Holdings, Inc. A method and apparatus for encoding a point cloud representing three-dimensional objects
US10535161B2 (en) 2017-11-09 2020-01-14 Samsung Electronics Co., Ltd. Point cloud compression using non-orthogonal projection
US10699444B2 (en) * 2017-11-22 2020-06-30 Apple Inc Point cloud occupancy map compression

Also Published As

Publication number Publication date
US20200364904A1 (en) 2020-11-19
CN113841411A (zh) 2021-12-24
EP3957076A1 (en) 2022-02-23
EP3957076A4 (en) 2022-06-08
US11210812B2 (en) 2021-12-28
WO2020231231A1 (en) 2020-11-19

Similar Documents

Publication Publication Date Title
US11348283B2 (en) Point cloud compression via color smoothing of point cloud prior to texture video generation
US11373338B2 (en) Image padding in video-based point-cloud compression CODEC
US11095908B2 (en) Point cloud compression using interpolation
US10984541B2 (en) 3D point cloud compression systems for delivery and access of a subset of a compressed 3D point cloud
US11393132B2 (en) Mesh compression
US10916041B2 (en) Method for depth image di coding
US11288843B2 (en) Lossy compression of point cloud occupancy maps
CN110892453B (zh) 使用图像/视频编解码器的点云和网格压缩
US11122279B2 (en) Point cloud compression using continuous surface codes
KR20210142013A (ko) 비디오 기반 포인트 클라우드 압축에서 싱글 패스 경계 검출
US11665372B2 (en) Fast projection method in video-based point cloud compression codecs
CN111247562A (zh) 使用混合变换的点云压缩
US11216984B2 (en) Patch splitting for improving video-based point cloud compression performance
US11039115B2 (en) Low complexity color smoothing of reconstructed point clouds
US10944991B2 (en) Prediction for matched patch index coding
US11922663B2 (en) Decision-making rules for attribute smoothing
US11803987B2 (en) Attribute transfer in V-PCC
US20230308684A1 (en) Tiling for video based point cloud compression
US20220058833A1 (en) Complexity reduction of video-based point cloud compression encoding using grid-based segmentation