KR20200060297A - 하이브리드 변환을 이용한 포인트 클라우드 압축 - Google Patents

하이브리드 변환을 이용한 포인트 클라우드 압축 Download PDF

Info

Publication number
KR20200060297A
KR20200060297A KR1020197033756A KR20197033756A KR20200060297A KR 20200060297 A KR20200060297 A KR 20200060297A KR 1020197033756 A KR1020197033756 A KR 1020197033756A KR 20197033756 A KR20197033756 A KR 20197033756A KR 20200060297 A KR20200060297 A KR 20200060297A
Authority
KR
South Korea
Prior art keywords
frames
points
point cloud
patches
patch
Prior art date
Application number
KR1020197033756A
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 KR20200060297A publication Critical patent/KR20200060297A/ko

Links

Images

Classifications

    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/649Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding the transform being applied to non rectangular image segments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • 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
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computer Graphics (AREA)
  • Processing Or Creating Images (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

디코딩 디바이스, 인코딩 디바이스, 및 포인트 클라우드 디코딩 방법이 개시된다. 그 방법은 압축된 비트스트림을 제1의 2D 프레임들의 세트 및 제2의 2D 프레임들의 세트로 디코딩하는 단계를 포함한다. 제1의 2D 프레임들의 세트는 3D 포인트 클라우드의 기하학적 구조를 나타내는 제1정상 패치들의 세트를 포함하고, 제2의 2D 프레임들의 세트는 3D 포인트 클라우드의 텍스처를 나타내는 제1정상 패치들의 세트를 포함한다. 방법은 또한, 정상 패치들 안에 포함되지 않은 3D 포인트 클라우드의 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치를 제1의 2D 프레임들의 세트 내에서 식별하고, 정상 패치들 안에 포함되지 않은 3D 포인트 클라우드의 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 제2의 2D 프레임들의 세트 내에서 식별하는 단계를 포함한다. 방법은 또한, 2D 프레임들의 세트를 이용하여, 누락 포인트들의 패치를 사용하는 3D 포인트 클라우드를 생성하는 단계를 포함한다.

Description

하이브리드 변환을 이용한 포인트 클라우드 압축
본 개시는 일반적으로 멀티미디어 데이터의 압축 및 코딩에 관한 것이다. 보다 구체적으로, 본 개시는 포인트 클라우드들을 압축 및 압축해제하는 장치 및 방법에 관한 것이다.
스마트폰과 같은 강력한 핸드헬드 장치들의 준비된 이용가능성 덕분에, 360도(360°) 비디오가 실감나는 비디오를 경험하게 하는 새로운 방법으로 떠오르고 있다. 360° 비디오는 360° 보기로 세상을 캡처함으로써 소비자들에게 실감나는 “실생활”, “거기 있는 것 같은” 경험을 가능하게 한다. 사용자들은 캡처된 장면이나 대상 중 자신들이 원하는 어떤 부분이든, 상호작용하는 방식으로 방향을 바꾸어 동적으로 볼 수 있다. 사용자가 보고 싶어하는 360° 비디오의 영역을 판단하기 위해, 디스플레이 및 네비게이션 센서들이 머리의 이동을 실시간으로 추적한다. 360° 비디오는 3DoF(thee Degrees of Freedom) 몰입 경험을 제공한다. 6DoF는 사용자가 자신의 머리를 돌리는 것뿐 아니라 가상/증강 환경 안에서 돌아다닐 수 있는 몰입 경험의 다음 레벨이다. 포인트 클라우드(point clouds)와 같이, 본질적으로 3차원(3D)인 멀티미디어 데이터는 6DoF 경험을 제공해야 한다.
포인트 클라우드와 메쉬(meshes)들은 어떤 대상이나 장면의 표면에 대한 모델을 표현하는 3D 포인트들의 세트다. 포인트 클라우드는, 몇 가지 예를 들자면, 게임, 3D 맵, 시각화, 의료 응용분야, 증강 현실, 가상 현실, 자율주행, 다중 시점(multi-view) 재생, 6DoF 몰입 미디어 등과 같은 다양한 응용예들에서 일반적이다. 포인트 클라우드는 압축되지 않았을 때 일반적으로, 전송을 위해 많은 대역폭을 필요로 한다. 높은 비트레이트 요건으로 인해, 포인트 클라우드는 보통 전송에 앞서 압축된다. 포인트 클라우드의 압축 하드웨어 및 프로세스들은 전통적인 2차원(2D) 멀티미디어용의 전통적 압축 하드웨어 및 프로세스들과는 상이하다.
본 개시는 하이브리드 변환을 이용하는 포인트 클라우드 압축을 제공한다.
제1실시예에서, 포인트 클라우드 디코딩을 위한 디코딩 디바이스가 제공된다. 상기 디코딩 디바이스는 통신 인터페이스, 및 상기 통신 인터페이스와 동작 가능하게 연결된 프로세서를 포함한다. 통신 인터페이스는 압축된 비트스트림을 수신하도록 구성된다. 프로세서는 압축된 비트스트림을 제1의 2차원(2D) 프레임들의 세트 및 제2의 2D 프레임들의 세트로 디코딩하도록 구성된다. 제1의 2D 프레임들의 세트는 3차원(3D) 포인트 클라우드의 기하학적 구조를 나타내는 제1정상(regular) 패치들의 세트를 포함한다. 제2의 2D 프레임들의 세트는 3D 포인트 클라우드의 텍스처(texture)를 나타내는 제2정상 패치들의 세트를 포함한다. 제1 및 제2정상 패치들의 세트의 패치들은 3D 포인트 클라우드 내 3D 포인트들의 클러스터들 각각을 나타낸다. 프로세서는 또한, 상기 제1정상 패치들의 세트 안에 포함되지 않은 3D 포인트 클라우드의 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치를 상기 제1의 2D 프레임들의 세트 내에서 식별하고, 상기 제2정상 패치들의 세트 안에 포함되지 않은 3D 포인트 클라우드의 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 상기 제2의 2D 프레임들의 세트 내에서 식별하도록 구성된다. 프로세서는 상기 2D 프레임들의 세트들을 이용하여, 상기 제1 및 제2정상 패치들의 세트들 및 누락 포인트들의 패치들을 사용하는 3D 포인트 클라우드를 생성하도록 더 구성된다.
다른 실시예에서, 포인트 클라우드 인코딩을 위한 인코딩 디바이스가 제공된다. 상기 인코딩 디바이스는 프로세서, 및 상기 프로세서와 동작 가능하게 연결된 통신 인터페이스를 포함한다. 상기 프로세서는 3차원(3D) 포인트 클라우드에 대해, 상기 3D 포인트 클라우드의 기하학적 구조를 나타내는 제1정상 패치들의 세트를 포함하는 제1의 2차원(2D) 프레임들의 세트, 및 상기 3D 포인트 클라우드의 텍스처를 나타내는 제2정상 패치들의 세트를 포함하는 제2의 2D 프레임들의 세트를 생성하도록 구성된다. 상기 제1 및 제2정상 패치들의 세트들의 패치들은 3D 포인트 클라우드 내 3D 포인트들의 클러스터들 각각을 나타낸다. 상기 프로세서는 또한, 상기 3D 포인트 클라우드 안에서 상기 정상 패치들의 세트들 중 어느 하나에서 표현되지 않은 포인트들을 검출하도록 구성된다. 상기 프로세서는 또한, 상기 검출된 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치, 및 상기 검출된 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 생성하도록 구성된다. 상기 프로세서는 또한, 상기 제1정상 패치들의 세트 안에 포함되지 않은 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치를 상기 제1의 2D 프레임들의 세트 안에 포함하고, 상기 제2정상 패치들의 세트 안에 포함되지 않은 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 상기 제2의 2D 프레임들의 세트 안에 포함하도록 구성된다. 상기 프로세서는 또한, 압축된 비트스트림을 생성하기 위해, 누락 포인트들의 패치들을 포함하는 상기 2D 프레임들을 인코딩하도록 구성된다. 상기 통신 인터페이스는 상기 압축된 비트스트림을 전송하도록 구성된다.
또 다른 실시예에서, 디코딩 방법이 제공된다. 상기 방법은 압축된 비트스트림을 수신하는 단계를 포함한다. 상기 방법은 또한, 상기 압축된 비트스트림을 제1의 2차원(2D) 프레임들의 세트 및 제2의 2D 프레임들의 세트로 디코딩하는 단계를 포함하고, 상기 제1의 2D 프레임들의 세트는 3차원(3D) 포인트 클라우드의 기하학적 구조를 나타내는 제1정상 패치들의 세트를 포함하고, 상기 제2의 2D 프레임들의 세트는 3D 포인트 클라우드의 텍스처를 나타내는 제2정상 패치들의 세트를 포함한다. 상기 제1 및 제2정상 패치들의 세트들의 패치들은 3D 포인트 클라우드 내 3D 포인트들의 클러스터들 각각을 나타낸다. 상기 방법은 또한, 상기 제1정상 패치들의 세트 안에 포함되지 않은 3D 포인트 클라우드의 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치를 상기 제1의 2D 프레임들의 세트 내에서 식별하고, 상기 제2정상 패치들의 세트 안에 포함되지 않은 3D 포인트 클라우드의 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 상기 제2의 2D 프레임들의 세트 내에서 식별하는 단계를 포함한다. 상기 방법은 또한, 상기 2D 프레임들의 세트들을 이용하여, 상기 제1 및 제2정상 패치들의 세트들 및 누락 포인트들의 패치들을 사용하는 3D 포인트 클라우드를 생성하는 단계를 포함한다.
도 1은 본 개시의 실시예들에 따른 통신 시스템의 예를 도시한다.
도 2는 본 개시의 일 실시예에 따른 전자 디바이스의 예를 도시한다.
도 3은 본 개시의 일 실시예에 따른 전자 디바이스의 예를 도시한다.
도 4는 본 개시의 일 실시예에 따른 포인트 클라우드 및 메쉬를 도시한다.
도 5는 본 개시의 일 실시예에 따라 포인트 클라우드를 분해, 전송, 및 재구성하는 프로세스를 도시한다.
도 6a는 본 개시의 일 실시예에 따른 인코더의 구성 예를 도시한다.
도 6b는 본 개시의 일 실시예에 따른 디코더의 구성 예를 도시한다.
도 7a, 7b, 7c, 및 7d는 본 개시의 일 실시예에 따른 3D 포인트 클라우드의 예, 및 누락 포인트들의 패치를 포함하여 3D 포인트 클라우드를 나타내는 2D 프레임들을 도시한다.
도 8a, 8b, 8c, 및 8d는 본 개시의 일 실시예에 따른 내장된 누락 포인트들의 패치들의 예를 도시한다.
도 9는 본 개시의 일 실시예에 따른 래스터 주사(raster scan) 매핑의 예를 도시한다.
도 10은 본 개시의 일 실시예에 따른 구조화 부분 및 비구조화 부분을 가진 투사의 예를 도시한다.
도 11a, 11b, 11c, 11d, 및 11e는 본 개시의 일 실시예에 따른 비구조화 투사체들의 정렬 방법의 예를 도시한다.
도 12은 본 개시의 일 실시예에 따른 포인트 클라우드 인코딩에 대한 흐름도의 예를 도시한다.
도 13은 본 개시의 일 실시예에 따른 포인트 클라우드 디코딩에 대한 흐름도의 예를 도시한다.
본 개시 및 그 이점들에 대한 보다 완전한 이해를 위해, 지금부터 유사 참조부호들이 유사 구성요소들을 나타내는 첨부된 도면들과 함께 취해진 이하의 설명을 참조한다.
이하의 도면, 상세한 설명 및 청구범위로부터 다른 기술적 특징들이 당업자에게 자명해 보일 것이다.
이하의 상세한 설명을 수행하기 전에, 이 특허 문서 전체에 걸쳐 사용된 소정 단어들과 어구들의 정의를 설명하는 것이 바람직하다. "연결(결합)한다"는 말과 그 파생어들은 둘 이상의 구성요소들이 서로 물리적 접촉 상태에 있는지 그렇지 않든지, 그들 간의 어떤 직접적이거나 간접적인 통신을 일컫는다. "전송한다", "수신한다", 그리고 "통신한다" 라는 용어들뿐 아니라 그 파생어들은 직간접적 통신 모두를 포함한다. "포함하다" 및 "구비한다"는 용어들 및 그 파생어들은 제한 없는 포함을 의미한다. "또는"이라는 말은 '및/또는'을 의미하는 포괄적인 말이다 "~와 관련된다" 및 그 파생어들은 포함한다, ~ 안에 포함된다, ~와 상호 연결한다, 내포한다, ~안에 내포된다, ~에/와 연결한다, ~에/와 결합한다, ~와 통신할 수 있다, ~와 협력한다, 개재한다, 나란히 놓는다, ~에 근사하다, ~에 속박된다, 가진다, ~의 특성을 가진다, ~와 관계를 가진다는 등의 의미이다. "컨트롤러"라는 용어는 적어도 한 동작을 제어하는 어떤 장치, 시스템, 또는 그 일부를 의미한다. 그러한 컨트롤러는 하드웨어나 하드웨어와 소프트웨어 및/또는 펌웨어의 조합으로 구현될 수 있다. 어떤 특정 컨트롤러와 관련된 기능은 국지적이든 원격으로든 중앙 집중되거나 분산될 수 있다. "적어도 하나의~"라는 말은 항목들의 리스트와 함께 사용될 때, 나열된 항목들 중 하나 이상의 서로 다른 조합들이 사용될 수 있고, 그 리스트 내 오직 한 항목만이 필요로 될 수 있다는 것을 의미한다. 예를 들어, "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 내지 13, 및 이 특허 문서의 본 개시의 원리를 기술하는데 사용되는 다양한 실시예들은 단지 예일 뿐이며, 어떤 식으로도 본 개시의 범위를 한정하는 것으로 간주되어서는 안될 것이다. 당업자는 본 개시의 원리들이 어떤 적절하게 구성된 시스템이나 장치로 구현될 수 있다는 것을 알 수 있을 것이다.
가상 현실(VR)은 시각적 장면의 렌더링된 버전이다. 소정 실시예들에서, VR은 시각적이고 청각적인 장면의 렌더링된 버전이다. 렌더링은 개인이 해당 애플리케이션이나 VR 장면에 의해 한정된 제한범위 안에서 움직일 때, 관찰자나 사용자에게 가능한 자연스럽게 현실 세계의 시각적 자극, 및 가능하다면 청각적 자극을 모방하도록 설계된다. 예를 들어, VR은 사용자를 머리 움직임과 상호작용하는 몰입형(immersive) 세계 안에 위치시킨다. 비디오 레벨에서, VR은 머리 움직임과 렌더링된 비디오의 시야각의 동기와 함께 가능한 한 넓은 시계(field of view(FOV))를 커버하는 비디오 경험을 제공함으로써 수행된다. 많은 다양한 유형의 장치들이 그러한 경험을 제공할 수 있지만, 헤드 마운트 디스플레이(head-mounted displays(HMD))는 사용자가 VR 장면을 보면서 사용자의 머리 움직임에 기반하여 디스플레이 된 콘텐츠를 조정할 수 있게 하는 대중적인 장치이다. 통상적으로 HMD는 장치 안에 통합되어 외부 컴퓨터들과 함께 실행되는 전용 스크린(테더링)이나, 스마트폰 같이 HMD 안에 삽입되는 장치(언테더링)에 의존한다. 첫 번째 접근법은 경량의 스크린을 활용하며 높은 컴퓨팅 용량이라는 이점을 가진다. 반대로, 스마트폰 기반의 시스템은 보다 높은 이동성을 활용하며 생산에 비용이 덜 들 수 있다. 두 경우 모두, 생성되는 비디오 경험은 동일하다. 여기서 사용되는 "사용자(user)"라는 용어는 전자 디바이스를 사용하는 사람이나 다른 장치(인공지능 전자 장치 등)를 나타낼 수 있다.
포인트 클라우드는 VR 환경 내 객체와 유사한, 객체의 3D 표현이다. 마찬가지로, 포인트 메쉬는 VR 환경 내 객체와 유사한, 객체의 3D 표현이다. 일반적으로 포인트 클라우드는 좌표계에 의해 규정되는 데이터 포인트들의 세트다. 예를 들어 3D 직교 좌표계에서, 포인트 클라우드의 각각의 포인트는 X, Y, 및 Z의 세 좌표로 식별된다. 각각의 포인트가 세 좌표로 식별되면, 3D 환경 또는 공간 내에서 원점 대비 정확한 위치가 식별된다. 원점은 X, Y, 및 Z 축들이 교차하는 위치이다. 포인트 클라우드의 포인트는 보통, 객체의 외부 표면을 나타낸다. 포인트 클라우드의 각각의 포인트는 세 좌표 안에서의 각각의 포인트의 기하학적 위치와, 컬러, 법선, 반사도 등과 같은 텍스처 등의 속성들에 의해 정의된다.
마찬가지로, 3D 메쉬는 포인트 클라우드와 유사한 객체의 3D 표현이다. 3D 메쉬는 다각형들로 이루어진 객체의 외부 구조를 보여준다. 예를 들어 3D 메쉬는 객체의 모양을 규정하는 꼭지점들, 모서리들 및 면들의 세트다. 다른 예로서, 메쉬(또는 포인트 클라우드)는 구좌표계(spherical coordinate system) 상에 렌더링될 수 있다. 소정 실시예들에서, 각각의 포인트는 한 구 안에서 X, Y, Z 좌표들 상에 위치할 수 있다. 마찬가지로, 텍스처 좌표들인 U 및 V는 이미지의 텍스처 위치를 나타낸다. 객체가 렌더링 될 때, 메쉬의 꼭지점들, 대응하는 텍스처 좌표, 및 텍스처 이미지가, 메쉬를 3D 기하학적 구조 상에 매핑하는 그래픽 처리부로 입력된다. 사용자는 가상의 구 중심에 위치하는 FOV를 가질 수 있고, 뷰포트(viewport)에 해당하는 360° 장면의 일부를 보게 된다. 소정 실시예들에서, 구 대신, 정육면체, 20면체, 8면체 등과 같은 다른 모양들이 사용될 수도 있다. 포인트 클라우드 및 메쉬가 도 4를 참조하여 이하에서 보다 상세히 예시되고 논의될 것이다.
포인트 클라우드 및 메쉬는 몇 가지 예를 들자면, 게임, 3D 매핑, 시각화, 의료, 증강 현실, VR, 자율주행, 다중 시점(multi-view) 재생, 6DoF(degrees of freedom) 몰입 미디어를 포함하는 다양한 응용예들에서 일반적으로 사용된다. 앞으로 사용될 '포인트 클라우드'라는 용어는 '3D 포인트 클라우드' 및 '3D 메쉬'를 또한 일컫는다.
한 전자 디바이스에서 다른 디바이스로 포인트 클라우드를 전송하는 것은 보통, 하나의 포인트 클라우드와 관련된 데이터 크기와 복잡도로 인해 상당한 대역폭을 필요로 한다. 포인트 클라우드의 전송은 전송에 앞서 데이터의 크기를 줄이기 위한 특정 압축 기법들을 흔히 요한다. 예를 들어, 포인트 클라우드의 압축은 전용 하드웨어나 특정 압축 알고리즘 또는 그 조합을 필요로 할 수 있다. 일반적으로, 포인트 클라우드에 대한 압축 알고리즘은 이미지 및 비디오, VR 등과 같은 다른 멀티미디어 형식들의 압축 알고리즘들과는 상이하다.
본 개시의 실시예들은 대역폭의 크기 제한을 고려하므로, 소스 장치에서 다른 장치(사용자 장치 등)로의 포인트 클라우드 전송을 고속화하고 향상시키기 위해서는 포인트 클라우드 압축이 필수이다. 즉, 미압축 포인트 클라우드는 전송에 상당한 대역폭을 사용하므로 포인트 클라우드의 렌더링이 지연되게 만든다. 포인트 클라우드 렌더링 시 실시간 요구에 맞추거나 지연 또는 지체를 줄이기 위해 소정의 전용 하드웨어 구성요소들이 사용될 수 있다. 그러한 하드웨어 구성요소들은 보통 값이 비싸다. 본 개시의 실시예들에 따르면, 코덱을 이용한 포인트 클라우드의 압축은 소정 타입의 하드웨어만큼 전송 대역폭을 감소시킨다. 예를 들어, 포인트 클라우드가 2D 프레임에 맞도록 처리될 때, HEVC, AVC, VP9, VP8, JVNET 등의 비디오 또는 이미지 코덱이 포인트 클라우드를 압축하는데 사용될 수 있다. 예를 들어 포인트 클라우드는 원래의 3D 모양에서, 2D로 된 포인트 클라우드를 표현하는 여러 개의 패치들로 처리된다.
따라서, 본 개시의 실시예들은 포인트 클라우드와 같은 3D 객체를 처리하기 위한 시스템 및 방법을 제안한다. 3D 객체의 처리는 3D 객체를 2D 프레임 상으로 투사하는 것을 포함함으로써, 프레임이 압축되어 디스플레이 장치로 전송될 수 있고, 2D 프레임 내 콘텐츠가 3D 객체로 재구성되어 최종적으로 사용자에게는 3D 객체가 보여질 수 있게 렌더링될 수 있다. 다양한 2D 압축 하드웨어 및 소프트웨어 구성요소들은, 포인트 클라우드가 다수의 2D 비디오 프레임들 상에 투사된 후에 3D 포인트 클라우드를 압축할 수 있다. 포인트 클라우드가 다수의 2D 프레임들 상에 피팅되도록 해체(deconstruct)될 때, 그 프레임들은 원래의 포인트 클라우드를 전송하는 것보다 적은 대역폭을 이용하여 전송될 수 있다.
3D 객체는 인코더에 의해 처리된 후 디코더로 전송되어 사용자가 볼 수 있게 3D 객체로 재구성될 수 있다. 인코더는 3D 객체를 하나 이상의 2D 프레임들 상에 투사하고, 해당 프레임들을 압축하고, 압축된 프레임들을 포함하는 압축 비트스트림을 생성해 전송한다. 디코더는 그러한 비트스트림을 수신하고 압축해제하여 3D 객체를 재구성해 렌더링함으로써 사용자가 디스플레이된 객체를 볼 수 있게 한다.
본 개시의 실시예들에 따르면, 비디오 코덱을 이용한 포인트 클라우드 압축 수행 방식이 제안된다. 본 개시의 실시예들은 이미지 코덱을 이용한 포인트 클라우드 압축 방식을 제안한다. 포인트 클라우드가 해체될 수 있고, 포인트 클라우드의 다양한 속성들 또는 텍스처들뿐 아니라 포인트 클라우드의 각각의 포인트의 기하학적 구조의 정상 패치들을 포함하는 다수의 2D 프레임들이 생성된다. 예를 들어 포인트 클라우드가 해체되고 2D 프레임 상으로 매핑될 수 있다. 2D 프레임은 다양한 비디오 또는 이미지 또는 그 둘 모두의 압축을 이용하여 압축될 수 있다.
도 1은 본 개시에 따른 예시적 컴퓨팅 시스템(100)을 도시한다. 도 1에 도시된 시스템(100)의 실시예는 다만 예시를 위한 것이다. 본 개시물의 범위로부터 벗어나지 않는 시스템(100)의 다른 실시예들이 사용될 수도 있다.
시스템(100)은 시스템(100) 내 다양한 구성요소들 사이의 통신을 수월하게 하는 네트워크(102)를 포함한다. 예를 들어, 네트워크(102)는 네트워크 어드레스들 간 인터넷 프로토콜(IP) 패킷들, 프레임 중계 프레임들, 비동기 전송 모드(ATM) 셀들, 또는 다른 정보를 전송할 수 있다. 네트워크(102)는 하나 이상의 LAN(local area networks), MAN(metropolitan area networks); WAN(wide area networks), 인터넷 같은 글로벌 네트워크 전체나 일부, 또는 하나 이상의 위치들에 있는 어떤 다른 통신 시스템이나 시스템들을 포함한다.
네트워크(102)는 서버(104) 및 다양한 클라이언트 디바이스들(106-116) 간의 통신을 돕는다. 클라이언트 디바이스들(106-116)은 예컨대, 태블릿 컴퓨터, 랩탑, 퍼스널 컴퓨터, 웨어러블 디바이스, 또는 헤드 마운트 디스플레이(HMD)일 수 있다. 서버(104)는 하나 이상의 서버들을 나타낼 수 있다. 각각의 서버(104)는 하나 이상의 클라이언트 디바이스들에 컴퓨팅 서비스를 제공할 수 있는 어떤 적절한 컴퓨팅 또는 처리 장치를 포함한다. 각각의 서버(104)는 예컨대, 하나 이상의 처리 디바이스들, 명령 및 데이터를 저장하는 하나 이상의 메모리들, 및 네트워크(102)를 통한 통신을 돕는 하나 이상의 네트워크 인터페이스들을 포함할 수 있다. 이하에서 보다 상세히 기술하는 바와 같이, 서버(104)는 클라이언트 디바이스(106-116)와 같은 하나 이상의 디스플레이 디바이스들에게 포인트 클라우드를 전송할 수 있다. 소정 실시예들에서, 각각의 서버(104)는 인코더를 포함할 수 있다.
각각의 클라이언트 디바이스(106-116)는 네트워크(102)를 통해 적어도 하나의 서버 또는 다른 컴퓨팅 장치(들)과 상호 동작하는 어떤 적절한 컴퓨팅 또는 처리 장치를 나타낸다. 이 예에서, 클라이언트 디바이스들(106-116)은 데스크탑 컴퓨터(106), 모바일 전화나 모바일 디바이스(18)(스마트폰 등), PDA(personal digital assistant)(110), 랩탑 컴퓨터(112), 태블릿 컴퓨터(114), 및 HMD(116)를 포함한다. 그러나, 어떤 다른, 혹은 추가적인 클라이언트 디바이스들이 시스템(100) 내에서 사용될 수도 있다. 소정 실시예들에서, 각각의 클라이언트 디바이스 (106-116)는 인코더를 포함할 수 있다.
이 예에서, 일부 클라이언트 디바이스들(108-116)은 네트워크(102)와 간접적으로 통신한다. 예를 들어, 클라이언트 디바이스들(108 및 110)(각각 모바일 장치(108) 및 PDA(110))은 휴대전화 기지국들이나 eNodeB들(eNBs)과 같은 하나 이상의 기지국들(118)을 통해 통신한다. 모바일 디바이스 (108)는 스마트폰들을 포함한다. 또한 클라이언트 디바이스들(112, 114, 및 116)(각각, 랩탑 컴퓨터, 태블릿 컴퓨터, 및 HMD)은 IEEE 802.11 무선 액세스 포인트들과 같은 하나 이상의 무선 액세스 포인트들(120)을 통해 통신한다. 이하에서 보다 상세히 기술하는 바와 같이, HMD(116)는 하나 이상의 포인트 클라우드들을 포함하는 360° 장면들을 디스플레이 할 수 있다. 이들은 다만 예시를 위한 것이며, 각각의 클라이언트 디바이스 (106-116)가 네트워크(102)와 직접 통신하거나 어떤 적절한 매개 장치(들)이나 네트워크(들)을 통해 네트워크(102)와 간접적으로 통신할 수도 있다는 것을 알아야 한다. 소정 실시예들에서, 서버(104) 또는 어떤 클라이언트 디바이스 (106-114)가 포인트 클라우드를 압축하여 그 데이터를 임의의 클라이언트 디바이스 (106-116)와 같은 다른 클라이언트 디바이스로 전송하는데 사용될 수 있다.
소정 실시예들에서, 모바일 디바이스 (108)(또는 어떤 다른 클라이언트 디바이스 (106-116)가 예컨대 서버(104)와 같은 다른 디바이스로 정보를 안전하고 효율적으로 전송할 수 있다. 모바일 디바이스 (108)(또는 어떤 다른 클라이언트 디바이스 (106-116))는 브라켓을 통해 헤드셋에 연결될 때 VR 디스플레이로서 기능하여, HMD(116)와 유사하게 기능할 수 있다. 모바일 디바이스 (108)(또는 어떤 다른 클라이언트 디바이스 (106-116))는 모바일 디바이스 (108)와 서버(104) 사이의 정보 전송을 유도할 수 있다.
도 1은 시스템(100)의 일 예를 도시하고 있으나, 도 1에 대해 다양한 변형이 있을 수 있다. 예를 들어, 시스템(100)은 각각의 구성요소에 대해 임의 개를 임의의 적절한 구성으로 포함할 수도 있다. 일반적으로, 컴퓨팅 및 통신 시스템들은 광범위한 구성들로 나타나며, 도 1은 본 개시의 범위를 어떤 특정 구성으로 한정하지 않는다. 도 1은 본 특허 문서에서 개시된 다양한 특성들이 사용될 수 있는 하나의 동작 환경을 도시하고 있지만, 그러한 특성들은 어떤 다른 적절한 시스템에서 사용될 수도 있다.
본 개시에서 제안되는 프로세스들과 시스템들은 클라이언트 디바이스(106-116)나 서버(104)가 포인트 클라우드를 압축, 전송, 수신, 렌더링 하거나 그러한 동작의 조합을 가능하게 한다. 예를 들어 서버(104)는 포인트 클라우드 데이터를 압축하여 클라이언트 디바이스들(106-116)로 전송할 수 있다. 다른 예에서, 임의의 클라이언트 디바이스(106-116)는 포인트 클라우드 데이터를 압축하여 임의의 클라이언트 디바이스들(106-116)이나 서버(104)로 전송할 수 있다.
도 2 및 3은 본 개시의 실시예에 따른 컴퓨팅 시스템 내 디바이스들의 예를 도시한다. 특히 도 2는 예시적 서버(200)를 도시하며, 도 3은 예시적 전자디바이스(300)를 도시한다. 서버(200)는 도 1의 서버(104)를 나타낼 수 있으며, 전자 디바이스(300)는 도 1의 클라이언트 디바이스들(106-116) 중 하나 이상을 나타낼 수 있다.
서버(200)는 하나 이상의 로컬 서버, 하나 이상의 압축 서버, 또는 하나 이상의 인코딩 서버들을 나타낼 수 있다. 도 2에 도시된 바와 같이, 서버(200)는 적어도 하나의 프로세서(210), 적어도 하나의 저장 디바이스(215), 적어도 하나의 통신 인터페이스(220), 및 적어도 하나의 입출력(I/O) 유닛(225) 사이의 통신을 지원하는 버스 시스템(205)을 포함한다. 소정 실시예들에서, 서버(200)는 인코더이다.
프로세서(210)는 메모리(230)에 저장될 수 있는 명령어들을 실행한다. 메모리(230)에 저장된 명령어들은 포인트 클라우드를 해체하기 위한 명령어들, 포인트 클라우드를 압축하기 위한 명령어들을 포함할 수 있다. 메모리(230)에 저장된 명령어들은 비트스트림을 생성하기 위해 포인트 클라우드를 인코딩하기 위한 명령어들을 또한 포함할 수 있다. 메모리(230)에 저장된 명령어들은 또한, 도 1의 HMD(116)와 같은 VR 헤드셋을 통해 볼 수 있는 전방향 360° 장면 상에 포인트 클라우드를 렌더링하기 위한 명령어들을 포함할 수 있다. 프로세서(210)는 어떤 적절한 구성으로 임의의 적절한 개수 및 유형의 프로세서들이나 기타 디바이스들을 포함할 수 있다. 프로세서들(210)의 유형들의 예로는 마이크로프로세서, 마이크로 컨트롤러, 디지털 시그날 프로세서, 필드 프로그래머블 게이트 어레이, ASIC(application specific integrated circuits), 및 이산 회로를 포함한다.
메모리(230) 및 영구 저장부(235)가 저장 디바이스들(215)의 예들로서, (데이터, 프로그램 코드, 또는 임시 또는 지속적인 다른 적절한 정보와 같은) 정보를 저장하고 그 검색을 도울 수 있는 임의의 구조(들)을 나타낸다. 메모리(230)는 RAM(random access memory) 또는 다른 적절한 휘발성 또는 비휘발성 저장 디바이스(들)을 나타낼 수 있다. 영구 저장부(235)는 ROM(read-only memory), 하드 드라이브, 플래시 메모리, 또는 광 디스크와 같이 데이터의 장기적 저장을 지원하는 하나 이상의 구성요소들이나 소자들을 포함할 수 있다.
통신 인터페이스(220)는 다른 시스템들이나 디바이스들과의 통신을 지원한다. 예를 들어 통신 인터페이스(220)는 도 1의 네트워크(102)를 통한 통신을 돕는 네트워크 인터페이스 카드 또는 무선 트랜시버를 포함할 수도 있다. 통신 인터페이스(220)는 어떤 적절한 물리적 및/또는 무선 통신 링크(들)을 통해 통신을 지원할 수 있다.
I/O 유닛(225)은 데이터의 입력 및 출력을 가능하게 한다. 예를 들어, I/O 유닛(225)은 키보드, 마우스, 키패드, 터치스크린, 또는 임의의 다른 적절한 입력 디바이스를 통한 사용자 입력을 위한 연결을 제공할 수 있다. I/O 유닛(225)은 또한 디스플레이, 프린터, 또는 임의의 다른 적절한 출력 디바이스로 출력을 전송할 수도 있다.
소정 실시예들에서, 서버(200)는 이하에서 보다 상세히 논의하는 바와 같이, 포인트 클라우드의 압축을 구현한다. 소정 실시예들에서, 서버(200)는 3 차원 포인트 클라우드에 대응하는 다수의 2D 프레임들을 생성한다. 소정 실시예들에서, 서버(200)는 3 차원 포인트 클라우드를 2D에 매핑한다. 소정 실시예들에서 서버(200)는 포인트 클라우드를 나타내는 압축된 2 차원 프레임들을 인코딩함으로써 압축된 비트스트림을 생성한다.
도 2는 도 1의 서버(104)를 나타내는 것으로 기술되지만, 동일하거나 유사한 구조가 다양한 클라이언트 디바이스들(106-116) 중 하나 이상에 사용될 수 있을 것이라는 것을 알아야 한다. 예를 들어 데스크탑 컴퓨터(106)나 랩탑 컴퓨터(112)가 도 2에 도시된 것과 동일하거나 유사한 구조를 가질 수 있다.
도 3은 본 개시의 일 실시예에 따른 전자 디바이스(300)를 도시한다. 도 3에 도시된 전자 디바이스의 실시예는 다만 예시를 위한 것이며, 본 개시의 범위에서 벗어나지 않은 다른 실시예들이 사용될 수도 있다. 전자 디바이스(300)는 광범위한 구성들로 나타날 수 있고, 도 3은 본 개시의 범위를 어떤 특정한 전자 디바이스의 구현예로 한정하지 않는다. 소정 실시예들에서, 도 1의 클라이언트 디바이스들(106-116) 중 하나 이상은 전자 디바이스(300)와 동일하거나 유사한 구성을 포함할 수 있다.
소정 실시예들에서, 전자 디바이스(300)는 인코더, 디코더, 또는 그 둘 모두이다. 소정 실시예들에서, 전자 디바이스(300)는 데이터 전송, 이미지나 비디오 압축, 이미지나 비디오 압축해제, 인코딩, 디코딩, 및 미디어 렌더링 애플리케이션들과 함께 사용될 수 있다. 전자 디바이스(300)는 예컨대, 무선 단말, 데스크탑 컴퓨터(도 1의 데스크탑 컴퓨터(106)와 유사), 모바일 디바이스(도 1의 모바일 디바이스(108)와 유사), PDA(도 1의 PDA와 유사), 랩탑(도 1의 랩탑 컴퓨터(112)와 유사), 태블릿(도 1의 태블릿 컴퓨터(114)와 유사), 헤드 마운트 디스플레이(도 1의 HMD(116)와 유사) 등과 같은 모바일 통신 디바이스일 수 있다.
도 3에 도시된 바와 같이, 전자 디바이스(300)는 안테나(305), 무선 주파수(RF) 트랜시버(310), 송신(TX) 처리 회로(315), 마이크로폰(320), 및 수신(RX) 처리 회로(325)를 포함한다. 전자 디바이스(300)는 또한 스피커(330), 하나 이상의 프로세서들(340), 입출력(I/O) 인터페이스(IF)(345), 입력(350), 디스플레이(355), 및 메모리(360)를 포함한다. 메모리(360)는 운영체제(OS)(361), 하나 이상의 애플리케이션들(363), 및 포인트 클라우드들(363)을 포함한다.
RF 트랜시버(310)는 안테나(305)로부터, 시스템 상의 다른 구성요소가 전송한 유입 RF 신호를 수신한다. 예를 들어, RF 트랜시버(310)는 네트워크(102)(WI-FI, BLUETOOTH, 셀룰라, 5G, LTE, LTE-A, WiMAX, 또는 어떤 다른 유형의 무선 네트워크)의 액세스 포인트(기지국, WI-FI 라우터, BLUETOOTH 디바이스 등)로부터의 BLUETOOTH나 WI-FI 신호에 의해 전송되는 RF 신호를 수신한다. RF 트랜시버(310)는 유입 RF 신호를 하향 변환하여 중간 주파수나 기저대역 신호를 생성할 수 있다. 중간 주파수 또는 기저대역 신호는 RX 처리 회로(325)로 보내지고, RX 처리 회로(225)는 기저대역 또는 중간 주파수 신호 또는 그 조합을 필터링, 디코딩 또는 이진화함으로써, 처리된 기저대역 신호를 생성한다. RX 처리 회로(325)는 처리된 기저대역 신호를 스피커(330)(음성 데이터 등의 경우)로, 혹은 프로세서(340)(웹 브라우징 데이터와 같은 경우)로 전송한다.
TX 처리 회로(315)는 마이크로폰(320)으로부터 아날로그나 디지털 음성 데이터를, 또는 프로세서(340)로부터 다른 유출(outgoing) 기저대역 데이터를 수신한다. 유출 기저대역 데이터는 웹 데이터, 이메일, 또는 대화형(interactive) 비디오 게임 데이터를 포함할 수 있다. TX 처리 회로(315)는 유출 기저대역 데이터를 인코딩, 멀티플렉싱, 이진처리, 또는 그 조합 동작을 수행하여, 처리된 기저대역 또는 중간 주파수 신호를 생성한다. RF 트랜시버(310)는 처리된 유출 기저대역 또는 중간 주파수 신호를 TX 처리 회로(315)로부터 수신하고, 안테나(305)를 통해 전송되는 기저대역 또는 중간 주파수 신호를 RF 신호로 상향 변환한다.
프로세서(340)는 하나 이상의 프로세서들 또는 다른 프로세싱 디바이스들을 포함할 수 있고, 전자 디바이스(300)의 전반적 동작을 제어하기 위해 메모리에 저장된 OS(361)를 실행한다. 예를 들어, 프로세서(340)는 잘 알려진 원리들에 따라 RF 트랜시버(310), RX 처리 회로(325), 및 TX 처리 회로(315)에 의해 포워드 채널 신호들의 수신 및 리버스 채널 신호들의 송신을 제어할 수 있다. 프로세서(340)는 수신된 포인트 클라우드를 압축해제하고 생성하는 것과 같은, 메모리(360)에 상주(resident)하는 다른 애플리케이션들(362)을 실행할 수도 있다.
프로세서(340)는 메모리(360)에 저장되는 명령어들을 실행할 수 있다. 프로세서(340)는 어떤 적절한 구성으로 임의의 적절한 개수 및 유형의 프로세서들이나 기타 디바이스들을 포함할 수 있다. 예를 들어, 일부 실시예들에서 프로세서(340)는 적어도 하나의 마이크로프로세서나 마이크로 컨트롤러를 포함한다. 프로세서(340)의 유형들의 예로는 마이크로프로세서, 마이크로 컨트롤러, 디지털 시그날 프로세서, 필드 프로그래머블 게이트 어레이, ASIC(application specific integrated circuits), 및 이산 회로가 포함된다.
프로세서(340)는 수신, 저장, 및 이미지 캡처링과 처리를 제공하여 적시에 명령하는 동작들과 같이, 메모리(360)에 상주하는 다른 프로세스들 및 프로그램들을 실행할 수도 있다. 프로세서(340)는 실행 프로세스에 의해 요구될 때, 메모리(360) 안이나 밖으로 데이터를 옮길 수 있다. 일부 실시예들에서, 프로세서(340)는 OS(361)에 기반하거나 eNB들(도 1의 기지국들(118)과 유사)이나 운영자로부터 수신된 신호들에 응하여 복수의 애플리케이션들(362)을 실행하도록 구성된다. 프로세서(340)는 또한, 클라이언트 디바이스들(106-116)과 같은 다른 디바이스들로의 연결 기능을 전자 디바이스(300)에게 제공하는 I/O IF(345)와 결합된다. I/O IF(345)는 이러한 액세서리들 및 프로세서(340) 사이의 통신 경로이다.
프로세서(340)는 또한 입력(350)에 연결된다. 전자 디바이스(300)의 운영자는 입력(350)을 사용하여 전자 디바이스(300)로 데이터를 입력할 수 있다. 입력(350)은 키보드, 터치 스크린, 마우스, 트랙볼, 음성 입력, 또는 사용자가 전자 디바이스(300)와 상호작용할 수 있게 하는 사용자 인터페이스로서 작동할 수 있는 어떤 다른 디바이스일 수 있다. 예를 들어, 입력(350)은 음성 인식 처리를 포함하여, 사용자가 마이크로폰(320)을 통해 음성 명령을 입력하게 할 수 있다. 또 다른 예로서, 입력(350)은 터치 패널, (디지털) 펜 센서, 키, 또는 초음파 입력 디바이스를 포함할 수 있다. 터치 패널은 예컨대, 용량 방식, 압력 감지 방식, 적외선 방식, 또는 초음파 방식 중에 적어도 한 방식으로 터치 입력을 인식할 수 있다. 예를 들어 용량 방식에서, 입력(350)은 터치 또는 접근을 인식할 수 있다. 입력(350)은 제어 회로를 또한 포함할 수 있다. 입력(350)은 추가 입력을 프로세서(340)에 제공함으로써 센서(들)(365) 및/또는 카메라와 결부될 수 있다. 이하에서 보다 상세히 논의하는 바와 같이, 센서(365)는 관성 센서들(가속계, 자이로스코프, 및 자력계 등), 광학 센서들, 모션 센서들, 카메라들, 압력 센서들, 심박 센서들, 고도계 등을 포함한다. 예를 들어 입력(350)은 센서(365)와 연관된 모션 센서에 의해 검출되는 모션을 입력으로서 활용할 수 있다.
프로세서(340)는 또한 디스플레이(355)에 연결된다. 디스플레이(355)는 웹사이트, 비디오, 게임, 이미지 등으로부터의 텍스트 및/또는 그래픽을 렌더링 할 수 있는 LCD(liquid crystal display), LED(light-emitting diode) 디스플레이, OLED(organic LED), AMOLED(active matrix OLED), 또는 다른 디스플레이일 수 있다. 디스플레이(355)는 HMD 안에 맞는 크기일 수 있다. 디스플레이(355)는 단일 디스플레이 스크린, 또는 입체 디스플레이를 생성할 수 있는 멀티 디스플레이 스크린들일 수 있다. 소정 실시예들에서, 디스플레이(355)는 HUD(heads-up display)이다.
메모리(360)는 프로세서(340)와 결합된다. 메모리(360)의 일부는 RAM(random access memory)을 포함할 수 있고, 메모리(360)의 다른 일부는 플래쉬 메모리나 다른 ROM(read-only memory)을 포함할 수 있다.
메모리(360)는 정보(데이터, 프로그램 코드, 및/또는 임시 또는 지속적인 다른 적절한 정보 등)를 저장하고 그 검색을 도울 수 있는 임의의 구조(들)을 나타내는 영구 저장부(미도시)를 포함할 수 있다. 메모리(360)는 ROM(read-only memory), 하드 드라이브, 플래시 메모리, 또는 광 디스크와 같이 데이터의 장기적 저장을 지원하는 하나 이상의 구성요소들이나 소자들을 포함할 수 있다. 포인트 클라우드들(363)은 다양한 3D 포인트 클라우드들, 3D 메쉬들, 3D 객체들 등을 포함할 수 있다. 소정 실시예들에서, 포인트 클라우드들(363)은 하나 이상의 2D 프레임들 상에서의 3D 객체의 패치들의 투사체들을 포함할 수 있다. 포인트 클라우드들(363)은 또한 디스플레이(355) 상에 렌더링 될 수 있는 하나 이상의 3D 포인트 클라우드들을 포함할 수 있다.
전자 디바이스(300)는 전자 디바이스(300)상의 물리량을 측정하거나 활성 상태를 검출하고, 측정되거나 검출된 정보를 전기적 신호로 변환하는 하나 이상의 센서들(365)을 더 포함할 수 있다. 예를 들어 센서(들)(365)은 터치 입력을 위한 하나 이상의 버튼들(헤드셋이나 전자 디바이스(300) 상에 위치함), 하나 이상의 카메라들, 제스처 센서, 눈동자 추적 센서, 자이로스코프 또는 자이로 센서, 공기압 센서, 자기 센서 또는 자력계, 가속 센서 또는 가속계, 그립 센서, 근접 센서, 컬러 센서(RGB(Red Green Blue) 센서 등), 근전도 검사(EMG) 센서, 뇌전도(EEG) 센서, 심전도(ECG) 센서, 적외선(IR) 센서, 초음파 센서, 홍채 센서, 손지문 센서 등을 포함할 수 있다. 센서(들)(365)은 그 안에 포함된 센서들 중 적어도 하나를 제어하기 위한 제어 회로를 더 포함할 수 있다. 이하에서 보다 상세히 논의하겠지만, 이러한 센서(들)(365) 중 하나 이상은 사용자 인터페이스(UI)를 제어하고, UI 입력을 검출하고, 3차원 콘텐츠 디스플레이 식별을 위해 사용자의 방위를 결정하고 사용자의 방향을 향하게 하는데 사용될 수 있다. 센서(들)(365) 중 어느 하나는 전자 디바이스(300) 안, 전자 디바이스(300)와 동작 가능하게 연결된 이차 디바이스 안, 전자 디바이스(300)를 거치하도록 구성된 헤드셋 안, 또는 전자 디바이스(300)가 헤드셋을 포함하는 하나의 디바이스 안에 위치할 수 있다.
이하에서 보다 상세히 기술하는 것과 같이, 이 예시적 실시예에서, 전자 디바이스(300)는 인코딩되고 압축된 비트스트림을 수신한다. 전자 디바이스(300)는 수신된 비트스트림을 다수의 2D 프레임들로 디코딩한다. 소정 실시예들에서, 디코딩된 비트스트림은 점유(occupancy) 맵을 또한 포함한다. 전자 디바이스(300)는 다수의 2D 프레임들을 압축해제한다. 다수의 2D 프레임들은 포인트 클라우드의 각각의 포인트의 기하학적 위치와 같은 좌표들을 나타내는 프레임들의 세트를 포함할 수 있다. 예를 들어, 프레임들은 2D로 표현된 포인트 클라우드의 각각의 기하학적 포인트에 대한 하나 이상의 패치들과 같은 회화적 묘사(pictorial depiction)를 포함할 수 있다. 프레임들의 다른 세트는 각각의 포인트의 컬러와 같은, 각각의 포인트와 관련된 텍스처를 포함할 수 있다. 그런 다음 전자 디바이스(300)는 포인트 클라우드를 3차원으로 재구성하여 렌더링할 수 있다.
이하에서 보다 상세히 논의하는 바와 같이, 이러한 예시적 실시예에서 전자 디바이스(300)는 서버(300)와 유사하여 포인트 클라우드를 부호화할 수 있다. 전자 디바이스(300)는 포인트 클라우드의 기하학적 구조 및 텍스처를 표현하는 다수의 2D 프레임들을 생성할 수 있다. 포인트 클라우드는 하나 이상의 2D 프레임들로 매핑될 수 있다. 예를 들어, 프레임들의 한 세트는 패치들로 묘사되는 기하학적 포인트들을 포함할 수 있다. 다른 예에서, 프레임들의 다른 세트는 포인트 클라우드의 텍스처나 컬러, 또는 그 둘 모두를 포함할 수 있다. 소정 실시예들에서, 2D 프레임들 상에 포인트 클라우드를 나타내는 데이터가 구조화되거나, 반구조화되거나, 구조화되지 않을 수 있다.
전자 디바이스(300)는 원래의 포인트 클라우드로부터 2D 프레임 상에 투사된 패치들로의 누락된 포인트들을 식별할 수 있다. 누락된 포인트들이 식별되면, 전자 디바이스(300)는 누락된 포인트들을 포함하는 다른 패치를 생성하고, 누락된 포인트들의 패치를 2D 기하학적 구조 및 텍스처 프레임들 안에 배치할 수 있다. 예를 들어, 기하학적 구조를 포함하는 누락된 포인트들의 패치는 기하학적 구조 패치들을 포함하는 2D 프레임 안에 포함된다. 마찬가지로, 텍스처 속성을 포함하는 누락된 포인트들의 패치는 텍스처 속성 패치들을 포함하는 2D 프레임 안에 포함된다. 누락된 포인트들의 패치는 구조화되거나, 반구조화되거나, 구조화되지 않는 방식으로 정렬될 수 있다. 전자 디바이스(300)는 2D 프레임들을 압축할 수 있다. 전자 디바이스(300)는 각각의 프레임 내 유효 픽셀들의 위치를 가리키기 위한 점유 맵을 생성할 수 있다. 전자 디바이스(300)는 프레임들을 인코딩하여 압축된 비트스트림을 생성할 수 있다.
도 2 및 3은 컴퓨팅 시스템 내 디바이스들의 예들을 도시하지만, 도 2 및 3에 대해 다양한 변화가 이루어질 수 있다. 또한, 도 2 및 3 안의 여러 구성요소들이 결합되거나, 더 세부 분할되거나, 생략될 수 있고, 특정 수요에 따라 추가 구성요소들이 추가될 수 있다. 특정 예로서, 프로세서(340)는 하나 이상의 중앙 처리 유닛(CPU)들 및 하나 이상의 그래픽 처리 유닛(GPU)들과 같은 여러 프로세서들로 분할될 수 있다. 또한, 컴퓨팅 및 통신 네트워크에서와 같이, 전자 디바이스들과 서버들은 광범위한 구성들로 나타날 수 있으며, 도 2 및 3은 본 개시를 어떤 특정한 전자 디바이스나 서버로 한정하지 않는다.
도 4는 본 개시의 일 실시예에 따른 포인트 클라우드(405) 및 메쉬(410)를 도시한다. 포인트 클라우드(405)는 한 포인트 클라우드에 대한 예이다. 포인트 클라우드는 한 객체를 3D 공간 안에 시각적으로 규정하는 디지털화된 데이터이다. 도시된 바와 같이, 포인트 클라우드(405)는 다수의 포인트들을 포함하며, 각각의 포인트는 어떤 지형도와 유사하게, 객체의 외부 좌표를 나타낸다. 예를 들어, 각각의 포인트는 하나 이상의 속성들을 포함할 수 있다. 속성들은 지리적 위치와 같은 기하학적 구조를 포함할 수 있다. 각각의 포인트의 속성들은 또한 컬러, 밝기, 텍스처, 모션, 재료 특성 등을 포함할 수 있다. 기하학적 구조 이외의 속성들을 텍스처라 칭할 수 있으며, 텍스처는 포인트 클라우드의 각각의 포인트와 관련된 다양한 양태들과 특성들을 나타낸다.
마찬가지로, 메쉬(410)는 3D 메쉬의 예를 도시한다. 메쉬(410)는 한 객체를 3D 공간 안에 시각적으로 규정하는 디지털화된 데이터이다. 메쉬(410)의 회화적 묘사는 다양한 점들 간 정보의 여러 다각형 또는 삼각형 모양의 상호연결로 정의된다. 각각의 다각형은 한 속성(attribute)과 같은 다양한 정보를 포함할 수 있다. 속성은 기하학적 구조와 텍스처를 포함할 수 있다. 텍스처는 컬러 반사, 모션 등을 포함한다. 예를 들면, 지형 데이터는 꼭지점들, 모서리들 및 면들의 인접성과 같은, 꼭지점들 간 연결 정보를 제공한다. 기하학적 정보는 각각의 꼭지점의 3D 공간 내에서의 기하학적 위치를 제공한다. 속성 정보는 각각의 개별 꼭지점에 대한 법선, 컬러, 및 응용 종속적인 정보를 제공한다. 각각의 다각형의 꼭지점들은 포인트 클라우드(405) 내 포인트들과 유사하다. 메쉬(410)의 각각의 다각형은 객체의 외부 표면을 나타낸다.
(포인트 클라우드(405)와 같은) 포인트 클라우드들과 (메쉬(410)와 같은) 메쉬들은 한 컴퓨팅 디바이스에서 다른 디바이스로의 전송에 상당한 대역폭을 사용한다. 저장 및 대역폭 요건을 감소시키기 위해 압축이 필요하다. 예를 들어, 손실 압축은 포인트 클라우드 및 메쉬를 압축하면서, 데이터 크기를 줄이는 동안 왜곡을 허용 가능한 수준으로 유지할 수 있다.
도 5는 본 개시의 일 실시예에 따라 포인트 클라우드를 분해, 전송, 및 재구성하는 프로세스(500)를 도시한다. 프로세스(500)는 본 개시의 실시예들에 대한 상위 개념의 개요이다. 소정 실시예들에서, 프로세스(500)는 도 1의 서버(104)나 도 1의 클라이언트 디바이스들(106-116) 중 어느 하나에 의해 일부 수행될 수 있으며, 상기 두 디바이스는 각각 도 2의 서버(200)나 도 3의 전자 디바이스(300)와 유사한 내부 구성요소들을 포함할 수 있다. 프로세스(500)의 실시예는 다만 예시를 위한 것일 뿐이다. 본 개시의 범위로부터 벗어나지 않는 다른 실시예들이 사용될 수 있다.
이하에서 보다 상세히 논의되는 도 6a의 인코더(600)와 유사한 인코더가 포인트 클라우드(502a)를 수신한다. 포인트 클라우드(502a)는 도 4의 포인트 클라우드(405)와 유사할 수 있다. 포인트 클라우드(502a)는 인코더, 또는 전자 디바이스 같은 다른 디바이스에 의해 발생, 생성, 수신될 수 있다. 본 개시의 실시예들에 따른 전자 디바이스는 퍼스널 컴퓨터(랩탑, 데스크탑 등), 워크스테이션, 서버, 텔레비전, 가전기기 등을 포함할 수 있다. 전자 디바이스는 또한, 포인트 클라우드를 생성할 객체를 캡처하도록 구성된 하나 이상의 카메라들을 포함할 수 있다. 추가로, 전자 디바이스는 가구나 빌딩/구조물의 일부, 전자 보드, 전자 서명 수신 디바이스, 프로젝터, 또는 측정 디바이스 중 적어도 하나일 수 있다. 소정 실시예들에서, 전자 디바이스는 특히, 휴대형 통신 디바이스(스마트폰 또는 모바일 전화 등), 랩탑, 태블릿, 전자 책 리더(e-리더), PDA(personal digital assistants), 휴대형 멀티미디어 플레이어(PMP), MP3 플레이어, 모바일 의료 디바이스, 가상 현실 헤드셋, 휴대형 게임 콘솔, 카메라, 착용형 디바이스 등의 휴대형 전자 디바이스일 수 있다. 전자 디바이스는 위에서 나열한 디바이스들 중 하나이거나 그들의 한 조합이다. 또한, 여기서 개시되는 전자 디바이스는 위에서 나열한 디바이스들에 국한되지 않으며, 기술 발전에 따른 새로운 전자 디바이스들을 포함할 수 있다.
포인트 클라우드(502a)는 매끄러운 가상의 3D 객체를 생성하기 위한 임의 개의 개별 포인트들을 포함할 수 있다. 포인트 클라우드(502a)의 각각의 포인트는 3D 공간 내 X, Y, 및 Z 위치에 기반하는 지형적 좌표를 포함한다. 지형적 좌표는 LiDAR(Light Detection and Ranging) 디바이스 같은 깊이 센서, 키넥트(Kinect)와 같은 RGBD 센서, 다시점 카메라 프로젝터 디바이스에 의해 획득되거나 컴퓨터로 생성될 수 있다. 또한, 포인트 클라우드(502a)의 각각의 포인트는 적어도 하나의 텍스처 속성 역시 포함한다. 텍스처 속성은 컬러일 수 있다. 한 포인트의 컬러는 빨강(R) 값, 녹색(G) 값, 및 파랑(B) 값의 조합으로 이루어질 수 있다. R 값, G 값, 및 B 값을 이하에서는 RGB 값이라 부를 것이다. 추가적인 텍스처 속성들에는 물질 특성, 반사, 모션 등이 포함될 수 있다. 포인트 클라우드(502a)를 구성하는 다수의 포인트들 (및 각각의 포인트와 관련된 속성들)로 인해, 포인트 클라우드(502a)를 저장하는 서버나 포인트 클라우드(502a)를 생성한 전자 디바이스로부터 포인트 클라우드를 전송하는 것은 상당한 대역폭을 필요로 한다. 따라서, 제1디바이스에서 제2디바이스로 포인트 클라우드(502a)를 효율적으로 전송하기 위해, 포인트 클라우드(502a)가 분해되어 압축된다.
포인트 클라우드(502a)는 기하학적 구조 프레임(512) 및 텍스처 프레임(514)과 같은 다양한 프레임들(510)로 분해된다. 소정 실시예들에서, TMC2 하에서 각각의 포인트 클라우드는 두 개의 기하학적 구조 프레임들 및 두 개의 텍스처 프레임들로 분해된다. 기하학적 구조 프레임(512) 및 텍스처 프레임(514)은 각각 패치(516a) 및 패치(516b)와 같은 많은 패치들을 포함한다. 패치(516a) 등의 각각의 패치는 포인트 클라우드(502a)의 포인트들을 분할(segmenting)함으로써 생성된다. 특히, 포인트 클라우드(502a)는 법선 벡터들 및 평탄도 점수에 기반하여 3D 포인트들을 클러스터링함으로써 분할된다. 클러스터링된 포인트들은 3D 공간에서 2D 프레임으로 투사된다. 각각의 투사된 클러스터를 패치라고 부른다. 패치가 클러스터 사이즈, 최대 깊이 범위, 및 그들이 동일한 2D 위치로 투사되는지와 같은 하나 이상의 기하학적 구속요건들을 만족할 경우, 그 패치를 정상(regular) 패치라 부를 수 있다. 정상 패치들은 개별 프레임들 안에 정리되고 모아지며, 이때 각각의 프레임은 기하학적 구조(geometry) 프레임(512) 및 텍스처(texture) 프레임(514)과 같은 속성을 나타낸다.
패치를 기하학적 구조 프레임(512)에 투사할 때, 정상 패치(516a) 안의 한 포인트(2D 프레임 내 한 픽셀)의 2D 위치에 패치 오프셋을 더한 것이, 3D 공간 내 해당 포인트의 세 공간 좌표들 중 둘에 해당한다. 3D 공간 내 해당 포인트의 세 번째 공간 좌표는 2D 이미지 내 해당 픽셀 값에 패치 깊이 오프셋(patch-depth-offset)을 더한 것으로서 인코딩된다. 기하학적 구조 프레임(512) 내 각각의 픽셀은 텍스처 프레임(514) 안에 대응하는 픽셀을 가진다. 소정 실시예들에서, 텍스처 프레임(514)은 기하학적 구조 프레임(512) 내 각각의 대응하는 포인트의 컬러를 표현한다. 오프셋은 X, Y, 및 Z 좌표들 상의 서로 다른 값들을 포함하는 3D 벡터일 수 있다.
소정 실시예들에서, 점유 맵이 생성된다. 점유 맵은 기하학적 구조 프레임(512) 및 대응하는 텍스처 프레임(514) 내 한 픽셀이 유효한 3D 포인트를 표현하는지 여부를 나타낸다. 점유 맵은 인코더에 의해 손실 없이 코딩될 수 있다. 디코딩 프로세스 중에, 점유 맵은 적어도 두 프레임들(510) 각각에 포함되는 유효 포인트들을 검색하여 재구성하기 위해 사용된다. 점유 맵에 대한 보다 상세한 설명은 도 6a 및 6b와 관련하여 이하에서 논의될 것이다.
하나 이상의 포인트들이 중복되는 경우, 중복된 포인트들에 의해 표현되는 다양한 표면들 또는 객체들은 3D 공간에서 2D 프레임으로의 투사에서 누락될할 수 있다. 따라서, 적어도 두 프레임들(510)이 재구성 단계(540)에서 재구성될 때, 포인트 클라우드(502b)는 투사 시 건너 뛰었던 포인트들에 해당하는 구멍들과 함께 재구성될 것이다. 예를 들어 포인트 클라우드에 의해 표현되는 3D 객체는 중복되는 포인트 클라우드의 여러 부분들을 가질 수 있다. 포인트 클라우드의 각각의 포인트를 2D 프레임 상에 투사하는 일은 포인트 클라우드 안에 중복된 포인트들이 다수가 존재할 때 지장을 받게 된다. 투사로부터 차단되고 배제된 포인트들은 포인트 클라우드가 재구성될 때 포인트 클라우드 내 구멍들이 된다. 포인트 클라우드의 바깥 부분에 의해 중복되는 포인트 클라우드의 포인트들은 투사체에 나타나지 않을 수 있는데, 이는 동일한 기하학적 축 상에 존재하는 여러 포인트들이 기하학적 구조 프레임(512) 안에서 동일한 2D 픽셀 위치를 가지기 때문이다.
따라서, 누락 포인트들의 패치(518a) 및 누락 포인트들의 패치(518b)가 만들어져 적어도 두 프레임들(510) 안에 포함된다. 누락 포인트들의 패치(518a)는 누락 포인트들의 기하학적 구조에 대응하고, 대응하는 누락 포인트들의 패치(518b)는 누락 포인트들의 텍스처에 대응한다. 누락 포인트들의 패치(518a) 및 누락 포인트들의 패치(518b)는 (적어도 두 개의 프레임들(510) 안에 포함된 투사된 패치들에 기반하여 인코더에서) 포인트 클라우드를 재구성하고 재구성된 포인트 클라우드를 입력된 포인트 클라우드(502a)에 대해 비교하여 하나 이상의 누락 포인트들을 찾음으로써 생성될 수 있다. 소정 실시예들에서, 누락 포인트들은 K-D 트리 최근접 이웃 검색을 이용하여 검출될 수 있다. 누락 포인트들이 발견되면, 그 누락 포인트들이 함께 그룹화되어 하나 이상의 누락 포인트 패치들을 형성한다. 특히, 누락 포인트 패치(518a)를 생성하기 위해서 기하학적 좌표들이 사용되며, 누락 포인트 패치(518b)를 생성하기 위해 각각의 포인트와 연관된 텍스처가 사용된다. 소정 실시예들에서, 누락 포인트들의 패치는 누락 포인트들의 패치(518a 및 518b)에 의해 도시된 바와 같이 구조화되어 있지 않다.
상기 프레임들이 생성될 때, 비디오 코덱(520)은 그 프레임들을 압축하여 인코딩된 비트스트림(525)을 생성한다. 비디오 코덱(520)은 HEVC, AVC, VP9, VP8 JVET, 등일 수 있다. 인코딩된 비트스트림(525)이 인코더에서 디코더로 전송된다. 디코더는 도 1의 HMD(116) 같은 사용자 디바이스일 수 있다. 인코딩된 비트스트림(525)은 비디오 코덱(530)에 의해 압축해제되어 디코딩된 비트스트림(535)으로 생성된다. 그 후, 재구성부(540)가 포인트 클라우드(502b)를 재구성하여 렌더링한다. 포인트 클라우드(502b)는 다른 디바이스 상에서 포인트 클라우드(502a)에 대해 재구성된 표현이다. 손실 코딩 하에서, 포인트 클라우드들(502a 및 502b)은 시각적으로 유사하나 동일하지는 않다. 무손실 코딩 하에서는 포인트 클라우드들(502a 및 502b)이 동일하다. 예를 들어, 포인트 클라우드(502a)가 인코더에 의해 수신되어, 인코딩된 비트스트림으로 생성된 후 전송되며, 포인트 클라우드(502b)는 디코더에서 수신되어 재구성되고 사용자가 볼 수 있도록 렌더링된 포인트 클라우드(502a)이다.
도 6a는 본 개시의 일 실시예에 따른 인코더(600)의 구성 예를 도시한다. 도 6b는 본 개시의 일 실시예에 따른 디코더(650)의 구성 예를 도시한다. 인코더(600)는 도 1의 서버(104)나 도 1의 클라이언트 디바이스들(106-116) 중 어느 하나와 유사할 수 있고, 도 2의 서버(200) 및 도 3의 전자 디바이스(300)와 유사한 내부 구성요소들을 포함할 수 있다. 디코더(650)는 도 1의 클라이언트 디바이스들(106-116) 중 어느 하나와 유사할 수 있고, 도 3의 전자 디바이스(300)와 유사한 내부 구성요소들을 포함할 수 있다. 인코더(600)는 네트워크(102)를 통해 디코더(650)와 통신할 수 있다. 인코더(600) 및 디코더(650)의 실시예는 다만 예시를 위한 것이다. 본 개시의 범위로부터 벗어나지 않는 다른 실시예들이 사용될 수도 있다.
인코더(600)는 포인트 클라우드나 메쉬, 또는 그 둘 모두를 압축하고, 인코딩하여 도 5의 인코딩된 비트스트림과 유사한 인코딩된 비트스트림으로서 전송할 수 있다. 소정 실시예들에서, 인코더(600)는 포인트 클라우드나 메쉬가 매핑되거나 투사되는 다수의 2D 프레임들을 생성한다. 예를 들어 포인트 클라우드는 펼쳐져서(unwrapped) 다수의 2D 프레임들 상으로 매핑된다. 예를 들어, 포인트 클라우드는 한 축(가령 Y 축)을 따라 펼쳐질 수 있고, 그 이미지가 나머지 축(가령 X 및 Z 축)을 따라 매핑된다. 소정 실시예들에서, 인코더(600)는 포인트 클라우드가 2D 프레임 상에 매핑될 때 포인트 클라우드의 각각의 픽셀이 어디에 위치하는지를 나타내는 점유 맵(가령 점유 맵(622))을 생성한다. 예를 들어, 점유 맵은 각각의 프레임의 유효 포인트들 및 무효 포인트들을 나타낼 수 있다. 무효 포인트들은 포인트 클라우드의 포인트에 대응하지 않는 프레임의 위치들인 반면, 유효 포인트들은 3D 포인트 클라우드 내 포인트에 대응하는 프레임의 위치이다. 소정 실시예들에서, 인코더(600)는 3 차원 포인트 클라우드를 이차원으로 매핑하고, 프레임들을 압축하며 전송할 이미지들을 인코딩할 수 있는 웹 서버, 관리 서버같은 서버 컴퓨터, 또는 어떤 다른 전자적 컴퓨팅 시스템이다. 소정 실시예들에서, 인코더(600)는 하나 이상의 네트워크들에 의해 상호 연결된 컴퓨터들의 "클라우드"일 수 있으며, 각각의 컴퓨터는 도 1의 네트워크(102)를 통해 액세스될 때 클러스터링된 컴퓨터들 및 구성요소들을 활용하여 심리스(seamless) 자원들의 단일 풀로서 기능하는 컴퓨팅 시스템이다.
디코더(650)는 포인트 클라우드나 메쉬, 또는 그 둘 모두의 표현을 포함하는 수신된 인코딩 비트스트림(가령 도 5의 인코딩된 비트스트림(525))을 디코딩, 압축해제, 및 생성할 수 있다. 소정 실시예들에서 디코더(650)는 다수의 2D 프레임들을 포함하는 수신된 비트스트림으로부터 다수의 포인트 클라우드들을 생성한다. 예를 들어, 포인트 클라우드의 픽셀들 각각은 2D 프레임들로 수신된 정보 및 수신된 점유 맵에 기반하여 매핑될 수 있다.
인코더(600)는 전송할 포인트 클라우드를 인코딩 및 압축하는 전자 디바이스에 대한 본 개시의 일 실시예에 따른 상위 개념의 개요를 예시한다. 소정 실시예들에서, 인코더(600)는 하나 이상의 디코더들(가령, 디코더(650))로 비트스트림을 통해 전송할 포인트 클라우드를 패키징한다. 인코더(600)는 수신된 포인트 클라우드(602), 패치 생성부(604), 보조 패치 정보(606), 누락 포인트들의 패치(610), 프레임 패킹(612), 다양한 프레임들(하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)), 점유 맵(622), 다양한 인코더들(인코더(616) 및 인코더(620) 등), 및 멀티플렉서(624)를 포함한다.
포인트 클라우드(602)는 인코더(600)로의 입력을 나타낸다. 포인트 클라우드(602)는 인코더(600)와 연관된 메모리 안에 저장될 수 있다. 패치 생성부(604)는 포인트 클라우드(602)를 분해하여 다수의 패치들을 생성한다. 패치들은 속성 별로 체계화될 수 있다. 예를 들어, 속성들에는 기하학적 구조와 텍스처가 포함될 수 있다. 기하학적 구조는 포인트 클라우드(602)의 각각의 포인트의 지형적 위치이다. 텍스처는 컬러, 밝기, 법선, 반사 등과 같이 포인트 클라우드(602)의 각각의 포인트의 여러 양태들을 나타낸다. 패치 생성부(604)는 기하학적 구조 속성들 및 텍스처 속성들을 클러스터링한다. 클러스터링은 법선 방향, 투사된 프레임들에 대한 거리, 근접도 등과 같은 기준들에 기반할 할 수 있다. 생성된 각각의 클러스터는 도 5의 적어도 두 개의 프레임들(510)과 관련하여 위에서 설명한 것과 같은 패치로서 표현된다.
소정 실시예들에서, 패치 생성부(604)는 포인트 클라우드의 포인트들을 일대일 매핑을 통해 2D 프레임들 상에 투사 및 매핑한다. 소정 실시예들에서, 패치 생성부(604)는 포인트들을 서로 다른 평면들 상에 투사하는 동작을 통해, 포인트 클라우드의 포인트들을 2D 프레임들 상에 투사 및 매핑한다. 소정 실시예들에서, 2D 프레임들 상에 포인트 클라우드의 포인트들을 투사 및 매핑하는 것은 주사 스캔 매핑, X 기하학적 좌표 기반 매핑, Y 기하학적 좌표 기반 매핑, Z 기하학적 좌표 기반 매핑, 컬러 기반 매핑, 법선 방향 기반 매핑 등에 기반할 수 있다.
소정 실시예들에서, 포인트 클라우드의 포인트들을 2D 프레임 상에 투사 및 매핑한 후, 포인트들이 2D 프레임으로 분류 및 처리될 수 있어, 코딩 효율성을 높일 수 있다. 프레임 패킹(612)은 포인트들을 한 패치 안에 분류하고 패킹한다. 소정 실시예들에서, 인코더(600)는 이웃 포인트들 및 서로 인접한 공간적 상관 데이터를 포함하는 포인트들을 배치시키는 분류(sorting) 엔진(미도시)을 포함할 수도 있다.
패치 생성부(604)는 또한 보조 패치 정보(606)를 생성한다. 보조 패치 정보(606)는 각각의 생성된 패치와 관련된 정보이다. 소정 실시예들에서 보조 패치 정보(606)는 패치들에 대한 메타데이터이다. 예를 들어, 모든 패치는 (i) 공간적 위치 오프셋, (ii) 깊이 오프셋, (iii) 비디오 프레임 내 패치의 위치, (iv) (패치의 높이 및 너비와 같은) 패치의 사이즈, (v) 투사 평면의 인덱스 등과 같은 보조 정보와 연관되어 있다. 보조 패치 정보(606)는 포인트 클라우드를 재구성하기 위해 디코더(650)와 같은 디코더에 의해 사용된다.
소정 실시예들에서, 무손실 코딩 중에, 누락 포인트들의 패치가 사용되지 않는 경우 많은 수의 작은 패치들이 패치 생성부(604)에 의해 생성될 수 있다. 많은 수의 패치들은 보조 패치 정보(606) 안의 정보를 증가시킨다. 보조 패치 정보(606) 안에서 증가된 정보는 비디오 코딩 효율성에 역효과를 낼 수 있어, 포인트 클라우드 압축 성능에 영향을 준다.
소정 실시예들에서 보조 패치 정보(606)는 플래그(608)를 포함한다. 소정 실시예들에서, 플래그(608)는 생략된다. 플래그(608)는 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임(618)과 같은 다양한 프레임들 안에 포함되는, 누락 포인트들의 패치(610)의 존재를 가리킬 수 있다. 예를 들어, 패치 생성부(604)가 누락 포인트들의 패치(610)를 생성하면, 보조 패치 정보(606) 안의 플래그(608)는 (디코더(650)와 같은) 디코더에게, 누락 포인트들의 패치(610)와 관련된 정보를 가리킨다. 소정 실시예들에서, 플래그(608)는 무손실 코딩을 나타낸다. 예를 들어, 무손실 코딩 하에서, 누락 포인트들의 패치가 프레임들 각각에 포함된다.
보조 패치 정보(606)나 플래그(608), 또는 그 둘 모두는 누락 포인트들의 패치(610)와 관련된 정보를 포함할 수 있다. 예를 들어, 그 정보는 (i) (기하학적 구조 프레임들(614) 중 하나와 같은) 프레임 내 누락 포인트들의 패치의 위치, (ii) 누락 포인트들의 패치의 크기 또는 사이즈, (iii) 누락 포인트들의 패치 안에 포함되는 누락 포인트들의 개수 등을 포함할 수 있다. 소정 실시예들에서, 누락 포인트들의 패치(610)와 관련된 정보는 보조 패치 정보(606) 안에 포함되는 정상 패치들에 대한 패치 정보의 리스트 끝(이나 처음)에 추가된다. 예를 들어, 보조 패치 정보(606)에 포함되는 패치 정보의 리스트에서의 (끝이나 시작부와 같은) 위치는 누락 포인트들의 패치(610)에 해당하는 정보를 식별하는데 사용된다.
소정 실시예들에서, 패치 생성부(604)는 누락 포인트들의 패치(610)를 생성할 수 있다. 누락 포인트들의 패치(610)는 3D 포인트 클라우드의 추가 포인트들의 패치를 나타낼 수 있다. 여기서 사용되는 누락 포인트들의 패치(610)는 추가 포인트들의 패치라고 일컬어질 수 있는데, 이는 누락 포인트들의 패치(610)가 (i) 3D 포인트 클라우드가 2D 프레임들 상에 투사될 때 누락되는 포인트들, 또는 (ii) 포인트 클라우드 내 하나 이상의 관심 영역들에 속하는 포인트들 둘 모두를 포함할 수 있기 때문임을 알아야 한다. 또한, 이러한 추가 포인트들은 누락 포인트들의 패치 안에 포함되어, 정상 패치들과 다른 품질을 이용한 이 포인트들의 인코딩을 도울 수도 있다.
누락 포인트들의 패치(610)는 3D 포인트 클라우드의 중복 포인트들을 포함할 수 있다. 예를 들어, 누락 포인트들의 패치(610)는 (i) (하나 이상의 기하학적 구조 프레임들(614)이나 하나 이상의 텍스처 프레임들(618) 또는 그 둘 모두와 같이) 3D에서 2D 투사 이후 정상 패치들 안의 포인트들로부터 생성된 새 포인트 클라우드를 (ii) 입력된 포인트 클라우드(602)와 비교하여 생성된다. 상기 비교동작은 K-D 트리 최근접 이웃 검색을 이용할 수 있다. 누락된 포인트들이 서로 그룹화되어 누락 포인트들의 패치를 형성한다. 누락 포인트들의 패치(610)는 포인트 클라우드(602)의 여러 누락 포인트들을 나타낸다. 누락된 포인트들의 각각의 클러스터에 대해 하나의 누락 포인트 패치가 생성된다. 이와 달리, 누락 포인트들의 패치는 하나의 패치 안에 누락된 각각의 포인트를 포함할 수 있다. 또한, 포인트들의 각각의 클러스터마다, 각각의 포인트의 지형적 위치 및 각각의 포인트와 관련된 다양한 텍스처들과 같은 각각의 속성에 대응하는 패치가 생성된다.
추가 포인트들의 패치와 같은 누락된 포인트들의 패치(610)는 관심 영역들을 나타낼 수 있다. 예를 들어, 누락된 포인트들의 패치(610)는 포인트 클라우드 중 가장 핵심적이거나 중요한 부분에 속하는 포인트들을 포함할 수 있다. 포인트 클라우드 중 가장 핵심적이거나 중요한 부분은 포인트 클라우드의 생성자에 의해 식별될 수 있다. 포인트 클라우드의 부분들의 예들로는 사람 형상의 포인트 클라우드에 있어서 두 눈, 코, 또는 입이 있을 수 있다.
추가 포인트들의 패치와 같은 누락된 포인트들의 패치(610)는 컬러 메트릭(metric) 또는 기하학적 구조 메트릭을 나타낼 수 있다. 컬러 메트릭은 컬러의 균일성에 기반할 수 있다. 기하학적 구조 메트릭은 3D 포인트 클라우드의 소정 영역에 대한 근접도에 기반할 수 있다.
추가 포인트들의 패치와 같은 누락된 포인트들의 패치(610)는 하나 이상의 누락된 포인트들을 나타낼 수 있다. 포인트들이 3D 포인트 클라우드를 2D 프레임 상에 투사하는 것과 관련된 어떤 기준을 만족시키지 못했을 경우 그 포인트들은 누락될 수 있다. 예를 들어, 하나 이상의 포인트들이 포인트 클라우드의 주요 부분에서 분리되는 경우, 그 분리된 포인트들은 포인트 클라우드 자체의 어떤 부분과도 중복되지 않을 경우에도 누락될 수 있다.
소정 실시예들에서, 누락 포인트들의 패치 안에 누락 포인트들을 정렬 및 분류하는 것은 프레임 포맷에 달려 있다. 소정 실시예들에서, 인코더(600)는 누락 포인트들의 패치(610)의 원래 값들 대신 잔차(residual) 값들을 저장한다. 즉, 인코더(600)는 원래 좌표값 대신 누락 포인트들의 패치(610) 내 잔차들을 저장하며, 이는 압축 효율을 향상시킬 수 있다. 누락 포인트들의 좌표 값을 저장하는 대신, 누락 포인트들의 기하학적 값들의 어떤 차동(differential) 코딩의 형식으로부터 획득되는 잔차들이 누락 포인트들의 패치(610) 안에 저장된다. 예를 들어, 누락 포인트들을 나타내는 누락 포인트들의 패치(610) 안에 제1 차이(DPCM) 값들(the first differences values)을 저장하는 것은 누락 포인트들의 패치에 대한 압축 효율성을 높일 수 있다. 소정 실시예들에서, 잔차들은 누락 포인트들의 패치(610)에서 값들의 샘플상의 차이들을 취함으로써 얻어진다. 누락된 포인트들의 원래의 값들이 디코더(650)와 같은 디코더에서 재구성된다는 것을 알아야 한다.
프레임 패킹(612)은 패치들을 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618) 안에 분류 및 패킹된다. 패치 생성부(604)에 의해 생성된 패치들에 대응하는 기하학적 구조 및 텍스처 정보가 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)과 같은 개별 비디오 프레임들 안에 패킹된다. 소정 실시예들에서, 프레임 패킹(612)은 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)을 생성한다. 프레임 패킹(612)은 또한, 패치들이 한 프레임 안에서 정렬되고 패킹되는 방법에 기반하여 프레임의 높이와 너비를 결정한다. 정상 패치들은 프레임 안에서 최소의 공간을 차지하도록 정렬된다. 즉, 프레임의 사이즈가 프레임 안에서의 각각의 패치의 위치에 기반하여 결정된다. 따라서, 프레임은 패치들이 프레임 안에서 어떤 방위로 어떻게 위치하는지에 기반하는 가능한 최소한의 사이즈이다.
정상(normal) 패치들이 하나 이상의 기하학적 구조 프레임들(614)과 같은 프레임 안에 정렬된 후, 누락 포인트들의 패치(610)(기하학적 구조에 해당)의 위치 및 크기가 (i) 누락된 포인트들의 수, (ii) 비디오 프레임의 크기들, (iii) 비디오 프레임의 점유, (iv) 프레임 포맷 등에 기반하여 결정된다. 소정 실시예들에서, 기하학적 구조 프레임들(614)의 크기(높이, 너비, 또는 그 둘 모두)는 정상 패치들의 패킹 이후 프레임 내에서 이용 가능한 공간보다 큰 누락 포인트들의 패치(610)를 수용하기 위해 증가될 수 있다. 누락 포인트들의 패치(610)(기하학적 구조에 해당)가 이때 하나 이상의 기하학적 구조 프레임들(614) 안에 패킹된다. 하나 이상의 텍스처 프레임들(618)은 각기 하나 이상의 기하학적 구조 프레임들(614)에서와 마찬가지로 체계화된다. 소정 실시예들에서, 하나 이상의 텍스처 프레임들(618)은 기하학적 구조 프레임(614)에 앞서 생성된다.
소정 실시예들에서, 프레임(가령, 기하학적 구조 프레임(614)) 내 누락 포인트들의 패치(610)의 배치 및 위치는 프레임 형식에 따라 좌우된다. 예를 들어, 기하학적 구조 프레임들(614)이 4:4:4 포맷에 기반하는 경우, 누락 포인트들의 X, Y, 및 Z 좌표들은 Y, Cb, 및 Cr 채널들 안에 각각 바로 저장된다. 이하에서 기술되는 도 8a는 Y, Cb, 및 Cr 채널들 안에 저장된 X, Y, 및 Z 좌표들을 도시한다. 다른 예에서, 기하학적 구조 프레임들(614)이 4:2:0 포맷에 기반하는 경우, 누락 포인트들의 X, Y, 및 Z 좌표들은 X 값들, 그에 이어서 Y 값들, 그에 이어서 Z 값들과 함께 그룹화되어, Y 채널 안에 저장된다. 이하에서 기술되는 도 8b는 누락 포인트들의 X, Y, 및 Z 좌표들이 함께 그룹화되어 Y 채널 안에 저장되는 것을 도시한다.
소정 실시예들에서, 4:2:0 포맷은 손실있는 포인트 클라우드 압축을 위한 텍스처 비디오에 사용된다. 소정 실시예들에서, 4:4:4 포맷은 무손실 포인트 클라우드 압축을 위한 텍스처 비디오에 사용된다.
프레임 패킹(612)은 또한, 점유 맵(622)을 생성한다. 점유 맵은 각각의 프레임들에 투사되거나 매핑되는 포인트 클라우드의 유효 포인트들을 포함하는 프레임들(가령 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)) 안의 픽셀 위치를 가리킨다. 예를 들어 점유 맵(622)은 각각의 프레임(가령 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)) 상의 각각의 픽셀이 유효 픽셀인지 블랭크(blank)인지 여부를 나타낸다. 점유 맵 상의 유효 픽셀은 포인트 클라우드 내 3D 포인트에 대응하는 2D 프레임 상의 픽셀을 나타낸다. 소정 실시예들에서, 점유 맵(622)은 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618) 같은 각각의 프레임마다 동일할 수 있다. 소정 실시예들에서, 점유 맵(622)은 다수의 점유 맵들을 나타내며, 여기서 각각의 점유 맵은 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618) 같은 하나의 프레임에 대응한다. 점유 맵(622)은 하나 이상의 기하학적 구조 프레임들(614)이나 하나 이상의 텍스처 프레임들(618)과 유사한 다른 프레임 안에 포함될 수 있다. 소정 실시예들에서, 점유 맵(622)은 개별 비트스트림인 메타데이터로서 전송될 수 있다.
하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)은 각기 인코더(616) 및 인코더(620)를 통해 인코딩된다. 소정 실시예들에서, 보조 패치 정보(606), 점유 맵(622), 또는 그 둘 모두가 인코딩된다. 이후, 보조 패치 정보(606), 인코딩된 하나 이상의 기하학적 구조 프레임들(614) 및 인코딩된 하나 이상의 텍스처 프레임들(618), 및 점유 맵(622)이 멀티플렉서(624)를 통해 다중화된다. 멀티플렉서(624)는 보조 패치 정보(606), 인코딩된 하나 이상의 기하학적 구조 프레임들(614) 및 인코딩된 하나 이상의 텍스처 프레임들(618), 및 점유 맵(622)을 결합하여 단일 인코딩 비트스트림(626)을 생성한다. 소정 실시예들에서, 하나 이상의 기하학적 구조 프레임들(614)을 인코딩하는 인코더(616)나, 하나 이상의 텍스처 프레임들(618)을 인코딩하는 인코더(620), 또는 그 둘 모두는 8 비트, 10 비트, 12 비트, 14 비트, 또는 16 비트의 데이터 정밀도를 지원하도록 구성될 수 있다. 소정 실시예들에서, 인코더(616) 및 인코더(620)는 동일한 구성요소이므로, 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)은 동일한 인코더로 인코딩된다.
소정 실시예들에서, 누락 포인트들의 패치는 비디오 프레임의 정상 패치들 옆에 패킹된다. 예를 들어, 누락 포인트들의 패치의 기하학적 구조를 나타내는 데이터가 기하학적 구조 프레임 안에 패킹되고, 텍스처를 나타내는 데이터가 대응하는 텍스처 프레임 안에 패킹된다. 소정 실시예들에서, 누락 포인트들의 패치는 비트스트림 안에 직접 다중화된다. 누락 포인트들의 패치를 비트스트림 안에 직접 다중화화는 것을 직접 다중화라고 칭한다. 즉, (하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)과 같은) 비디오 프레임들 안에 누락된 포인트들을 삽입하는 대신, 누락된 포인트들의 압축을 위한 비디오 코덱(가령, 인코더들(616 및 620))을 사용한다. 이러한 포인트들의 좌표 값들이 압축되어 비트스트림 안에 직접 다중화된다. 좌표값들을 압축하는 것은 허프만(Huffman) 코딩, 산술연산 코딩, DPCM 기반 기법 등을 이용하여 수행될 수 있다. (도 6b의 디코더(650)와 같은) 디코더에서, 비트스트림이 압축해제되고 누락 포인트들이 정상 포인트들과 함께 재구성된다는 것을 알아야 한다. 이하에서 보다 상세히 논의되는 도 8d는 비트스트림 안에 다중화되는 누락 포인트들을 도시한다. 예를 들어 멀티플렉서(624)는 인코딩된 하나 이상의 기하학적 구조 프레임들(614), 인코딩된 하나 이상의 텍스처 프레임들(618) 및 누락 포인트들의 패치를 다중화한다. 멀티플렉서(624)는 또한, 인코딩된 하나 이상의 기하학적 구조 프레임들(614), 인코딩된 하나 이상의 텍스처 프레임들(618), 누락 포인트들의 패치, 점유 맵(622), 그리고 보조 패치 정보(606)를 다중화할 수도 있다. 소정 실시예들에서, 누락 포인트들의 패치(610)는 보조 패치 정보(606) 안에 인코딩된다.
인코더들(616 및 620)은 손실 포인트 클라우드 압축 또는 무손실 포인트 클라우드 압축을 포함할 수 있다. 손실 포인트 클라우드가 사용되는 경우, 점유 맵(622)이 비트스트림 안에 포함되어 (디코더(650) 같은) 디코더로 전송된다. 디코더는 점유 맵(622)을 사용하여 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618) 같은 각각의 프레임 내 유효 포인트들을 식별한다. 무손실 압축이 사용되어 (하나 이상의 기하학적 구조 프레임들(614) 같은) 프레임을 압축하는 경우, 디코더(650)는 그 하나 이상의 기하학적 구조 프레임들(614)로부터 직접 유효 포인트들을 도출할 수 있다. 예를 들어 디코더(650)는 하나 이상의 기하학적 구조 프레임들(614)을 점유 맵(622)을 사용하는 것과 유사한 방식으로 사용할 수 있다. 그 결과, 점유 맵(622)이 비트스트림에서 배제되어 압축율을 향상시킬 수 있다. 비트스트림에서 점유 맵(622)을 제거하기 위해, 멀티플렉서(624)는 점유 맵(622)을, (인코더(616)로부터) 인코딩된 하나 이상의 기하학적 구조 프레임들(614), (인코더(620)로부터) 인코딩된 하나 이상의 텍스처 프레임들(618), 및 보조 패치 정보(606)와 같이 다중화하지 않는다.
하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)과 같은 비디오 프레임 안에 누락된 포인트들의 패치(610)의 위치를 나타내기 위해 바운딩 박스(bounding box)가 활용될 수 있다. 예를 들어, 좌표 (u0, v0)가 누락 포인트들의 패치(610)를 포함하는 바운딩 박스의 좌상단 좌표를 나타낼 수 있다. 마찬가지로, 좌표 (u1, v1)은 누락 포인트들의 패치(610)를 포함하는 바운딩 박스의 우하단 좌표를 나타낼 수 있다. 다른 예에서, 2D 바운딩 박스의 좌표들은 (u0, v0) 및 (w, h)로서 인코딩되며, 여기서 w는 바운딩 박스의 너비이고, h는 바운딩 박스의 높이다. 즉, (u0, v0) 및 (u1, v1)는 바운딩 박스의 위치를 기술하기 위해 바운딩 박스의 좌상단 및 우하단 좌표를 나타낼 수 있고, (u0, v0) 및 (w, h)는 바운딩 박스의 시작 좌표를 기술하고 그 높이와 너비를 제공한다.
소정 실시예들에서, 누락 포인트들의 패치(들)의 바운딩 박스 위치가 그 크기와 함께, 프레임 단위로 디코더로 보내진다. 누락 포인트들의 바운딩 박스는 보조 패치 정보(606) 안에 포함될 수 있다. 기하학적 구조 및 텍스처 프레임들이 (이하에서 보다 상세히 기술되는 도 6b의 디코더(650)와 같은) 디코더에 의해 수신될 때, X, Y, 및 Z 좌표들과 텍스처 정보가 (보조 패치 정보(606)에 포함된) 누락 포인트들의 패치의 (너비 및 높이 같은) 사이즈 및 위치에 대한 정보 및 점유 맵에 기반하여 각각의 프레임들 내 누락 포인트들의 패치들로부터 검색된다. 소정 실시예들에서, 보조 패치 정보(606) 안에 누락된 포인트들의 개수 및 바운딩 박스 정보가 인코더에서 디코더로 전송되는 경우, 점유 맵은 누락 포인트들을 검색하지 않는다.
디코더(650)는 렌더링할 포인트 클라우드를 디코딩 및 재구성하는 전자 디바이스에 대한 본 개시의 일 실시예에 따른 상위 개념의 개요를 예시한다. 소정 실시예들에서, 디코더는 비트스트림(626)으로부터 압축된 기하학적 구조 및 속성들을 추출한다. 소정 실시예들에서, 디코더(650)는 기하학적 구조 및 속성을 매핑하여 포인트 클라우드(602)를 생성한다. 디코더(650)는 디멀티플렉서(662), 디코딩 엔진(672), 및 재구성 엔진(674)을 포함한다. 소정 실시예들에서, 디코더(650)는 둘 이상의 디코딩 엔진들(672)을 포함한다. 3D 포인트 클라우드를 재구성하기 위해, 디코더는 (하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)과 같은 다양한 비디오 프레임들의 패치들 내 정보, 보조 패치 정보(606)에 포함된 것과 같은 패치 메타데이터, 및 점유 맵(622)을 사용한다.
디코더(650)는 인코더(600)로부터 발생된 인코딩된 비트스트림(626)을 수신한다. 인코딩된 비트스트림(626)을 수신한 디멀티플렉서(662)는 인코딩된 비트스트림(626)으로부터 데이터의 다양한 스트림들을 분리한다. 예를 들어, 디멀티플렉서(662)는 기하학적 구조 프레임 정보(664)(원래는 도 6a의 하나 이상의 기하학적 구조 프레임들(614)), 텍스처 프레임 정보(666)(원래는 도 6a의 하나 이상의 텍스처 프레임들(618)), 점유 맵 정보(668)(원래는 도 6a의 점유 맵(622)), 및 보조 패치 정보(670)(원래는 도 6a의 보조 패치 정보(606))와 같은 데이터의 다양한 스트림들을 분리시킨다.
예를 들어, 디멀티플렉서(662)는 인코딩된 비트스트림(626)을 포인트 클라우드 기하학적 구조(가령, 하나 이상의 기하학적 구조 프레임들(614)로부터의 기하학적 구조 프레임 정보(664)), 컬러(가령, 하나 이상의 텍스처 프레임들(618)로부터의 텍스처 프레임 정보(666)), 속성(가령, 하나 이상의 텍스처 프레임들(618)로부터의 텍스처 프레임 정보(666)), 점유 맵(가령, 점유 맵 정보(668)) 및 메타데이터에 대해 각각 압축된 비트스트림들로 다중화를 해제한다. 기하학적 구조에 대한 비트스트림 및 컬러에 대한 비트스트림이 디코딩 엔진(672)을 통해 디코딩되어, 기하학적 구조 및 컬러에 대한 2D 비디오 프레임들이 생성된다.
소정 실시예들에서, 디코딩 엔진(672)은 기하학적 구조 프레임 정보(664) 및 텍스처 프레임 정보(666)를 디코딩하여, 도 6a의 하나 이상의 기하학적 구조 프레임들(614) 및 하나 이상의 텍스처 프레임들(618)에 대한 대응하는 2D 프레임들을 생성한다. 소정 실시예들에서, 다양한 비트스트림들 또는 (기하학적 구조 프레임 정보(664), 텍스처 프레임 정보(666), 점유 맵 정보(668), 및 보조 패치 정보(670)와 같은) 데이터의 스트림들 각각은 디코딩 엔진(672)에 의해 디코딩된다. 소정 실시예들에서, 디코딩 엔진(672)과 유사한 독립된 병렬 디코딩 엔진들이 각각의 수신 스트림을 처리할 수 있다. 데이터의 다양한 스트림들의 일부(가령, 기하학적 구조 프레임 정보(664))가 인코딩되었으면, 기하학적 구조 프레임 정보(664)가 디코딩 엔진(672)에 의해 디코딩된다. 점유 맵 정보(668)는 포인트 클라우드(602)를 재구성하기 위한 2D 프레임들 내 유효 픽셀 위치를 나타낸다. 디코딩 엔진(672)은 다양한 데이터 스트림들을 압축해제한다. 소정 실시예들에서, 디코딩 엔진(672)은 무손실이거나 손실이 있을 수 있다. 소정 실시예들에서, 디코딩 엔진(672)은 손실이 있거나 무손실로 인코딩된 비트스트림으로부터 신호를 재구성할 수 있다.
소정 실시예들에서, 누락 포인트들의 식별 및 누락 포인트들의 패치 생성이 무손실 압축에 사용된다.
재구성 엔진(674)은 디멀티플렉서(662)나 디코딩 엔진(672)으로부터 수신된 데이터에 기반하여 3D 포인트 클라우드를 재구성한다. 정상 패치들의 위치와 크기가, 디코딩된 보조 패치 정보(670)로부터 검색된다. 예를 들어, (디코딩된 보조 패치 정보(670)로부터의) 패치 오프셋들을 비디오 내 포인트들의 공간적 위치에 더하고, 패치의 깊이 오프셋을 공간 위치에 있는 픽셀의 값에 더함으로써, 정상 패치들로부터 포인트들이 재구성된다. 재구성 엔진(674)은 손실, 또는 무손실 코딩에 기반하여 포인트 클라우드를 재구성할 수 있다.
소정 실시예들에서, 재구성 엔진(674)은 보조 패치 정보(670) 안에 플래그(608)가 포함되는지 여부를 검출한다. 플래그(608)는 (기하학적 구조 프레임 정보(664)와 같이) 누락 포인트들의 패치가 프레임들 안에 포함되는지, 또는 직접 멀티플렉싱되어 있는지 등의 여부를 나타낸다. 소정 실시예들에서, 보조 패치 정보(670)는, 누락 포인트들의 패치에 대한 정보를 가리키거나, 패치가 직접 코딩된 포인트 클라우드 데이터를 포함하는지 여부를 가리키기 위해 사용되는 1 또는 0과 같은 이진 값일 수 있는, 'patch_direct_coding'을 또한 포함할 수 있다. 예를 들어, 'patch_direct_coding'은 누락 포인트들의 패치(610)가 직접 멀티플렉싱과 같이, 다른 패치 정보와 함께 전송되는 직접 코딩된 정보인지 여부를 나타낼 수 있다. 다른 예에서, 'patch_direct_coding'는 이진값일 수 있고, (i) 투사 평면의 인덱스, (ii) 2D 바운딩 박스에 관한 정보, (iii) 누락 포인트들의 패치(610)의 3D 위치를 나타낼 수 있다.
2D 비디오 프레임들의 포맷에 기반하여, 재구성 엔진(674)은 포인트 클라우드를 재구성하는 방법을 변경한다. 예를 들어, (기하학적 구조 프레임 정보(664)에 기반하는) 기하학적 구조 비디오 포맷이 4:4:4인 경우, 그 좌표값들은 세 컬러 체널들 상의 패치로부터 직접 검색된다. 패치는 누락 포인트들의 패치에 대한 디코딩된 보조 패치 정보로부터 위치가 확인될 수 있다. 소정 실시예들에서, 누락 포인트들의 패치에 대한 보조 패치 정보(670)는 마지막 위치와 같은 위치로 식별되는 보조 패치 정보(670)의 리스트로부터 검색된다.
다른 예에서, (기하학적 구조 프레임 정보(664)에 기반하는) 기하학적 구조 비디오 포맷이 4:2:0인 경우, 재구성 엔진(674)은 먼저, 누락된 포인트들의 패치 안에 포함되는 누락된 포인트들의 수(가령, 수량)을 확인한다. 그런 다음, 재구성 엔진(674)은 Y 채널로부터 좌표값들을 검색한다. 소정 실시예들에서, 누락 포인트들의 개수는 누락 포인트들의 패치에 대응하는 점유 맵 정보(668)의 도움으로 디코더(650)에서 판단된다. 소정 실시예들에서, 누락 포인트들의 개수에 대한 정보는 누락 포인트들의 패치에 대한 보조 패치 정보(670) 안에 저장되어 디코더(650)에서 검색된다.
이하에서 포인트 클라우드 재구성을 예시하기 위한 신택스(syntax)의 예가 제공된다. 이 신택스의 예에서, np는 디코딩된 포인트들의 실행 카운터이다. 이 신택스는 프레임들 안에 포함된 모든 패치들과 관련하여 사용된다.
Figure pct00001
Figure pct00002
신택스 1은 디코더(650)와 같은 디코더에 의해 포인트 클라우드를 재구성하는 것을 예시한다. 'projection_plane_index' 라는 용어는 투사 평면의 인덱스를 나타낸다. 좌표 '(u0, v0, u1, v1)'는 패치를 포함하는 2D 바운딩 박스의 좌표들을 나타낸다. 좌표 '(x0, y0, z1)'는 패치의 3D 위치를 나타낸다. 'occupancy_map'이라는 용어는 점유 맵이다. 'image_geo'는 디코딩된 기하학적 구조 비디오 프레임이다. 'image_color'는 디코딩된 컬러 비디오 프레임이다. 'point'는 출력 포인트 클라우드이다.
이하에서 예로 든 신택스는 상술한 patch_direct_coding'를 포함하는 포인트 클라우드 재구성을 예시하기 위해 제공된다. 이 신택스의 예에서, np는 디코딩된 포인트들의 실행 카운터이다. 이 신택스는 프레임들 안에 포함된 모든 패치들과 관련하여 사용된다.
Figure pct00003
상기 예에서, 신택스 2는 디코더(650)와 같은 디코더에 의해 포인트 클라우드를 재구성하는 것을 예시한다. 특히 변수 'patch_direct_coding'이 0으로 설정된 경우, 누락 포인트들의 패치(610)는 비트스트림 안에 바로 코딩되지 않았고, 신택스 1이 사용된다. 신택스 1과 마찬가지로, 'projection_plane_index' 라는 용어는 투사 평면의 인덱스를 나타낸다. 좌표 '(u0, v0, u1, v1)'는 패치를 포함하는 2D 바운딩 박스의 좌표들을 나타낸다. 좌표 '(x0, y0, z1)'는 패치의 3D 위치를 나타낸다. 'occupancy_map'이라는 용어는 점유 맵이다. 'image_geo'는 디코딩된 기하학적 구조 비디오 프레임이다. 'image_color'는 디코딩된 컬러 비디오 프레임이다. 'point'는 출력 포인트 클라우드이다.
소정 실시예들에서, 도 6a의 인코더(600)는 포인트 클라우드의 서로 다른 속성들 사이에 비트들을 할당한다. 인코더(600)는 비트 할당 엔진(미도시) 및 결정 엔진(미도시)을 포함할 수 있다. 예를 들어, 인코더(600)의 패치 생성부(604)는 메타데이터를 생성할 수 있다. 메타데이터는 패치 생성부(604)에서 멀티플렉서(624)로 전송된다. 그러면 멀티플렉서(624)가 그 메타데이터를 압축 비트스트림으로 다중화하고, 그런 다음 디코더(650)로 전송한다. 비트 할당 엔진은 포인트 클라우드의 특정 양태들에 대해 중요도 인자를 할당한다. 예를 들어, 포인트 클라우드가 사람에 대한 것일 때, 얼굴과 양손에는 포인트 클라우드의 다른 부분들보다 높은 중요도 값이 할당된다. 포인트 클라우드의 특징에 따라, 포인트 클라우드의 다양한 특성들 또는 요소들에 보다 높은 중요도 값이 할당될 수 있다. 결정 엔진은 인코더(600)의 일환인 폐쇄 루프 결정 요소이다. 결정 엔진은 에러, 차이, 홀(holes) 등을 평가한다. 예를 들어, 결정 엔진은 포인트 클라우드가 패치 생성부(604)에 의해 투사될 때 에러, 차이, 홀 등의 존재를 최소화하기 위해 투사, 매핑, 및 기타 파라미터들을 변형한다. 할당 엔진 및 결정 엔진에 기반하여 메타데이터가 생성된다. 메타데이터는 보호 및 매핑 타입을 기술할 수 있다. 메타데이터는 또한, 정상 패치들 및 누락 포인트들의 패치들을 생성할 때 사용되는 분류, 패킹 및 패딩(padding) 유형에 대해 기술할 수도 있다. 생성된 메타데이터는 멀티플렉서(624)에 의해 다중화되어 압축 비트스트림(626) 안에서 디코더(650)로 전송된다.
디코더(650)는 압축 비트스트림(626)을 수신하고, 디멀티플렉서(662)는 기하학적 구조 프레임 정보(664), 텍스처 프레임 정보(666), 점유 맵 정보(668), 및 보조 패치 정보(670)로부터 메타데이터를 분리한다. 재구성 엔진(674)이 그 메타데이터를 수신한다. 메타데이터는 다양한 2D 프레임들로부터 3D 포인트 클라우드를 생성하기 위해 사용된다.
도 7a, 7b, 7c, 및 7d는 본 개시의 일 실시예에 따른 3D 포인트 클라우드의 예, 및 누락 포인트들의 패치를 포함하여 3D 포인트 클라우드를 나타내는 2D 프레임들을 도시한다. 특히, 도 7a는 포인트 클라우드(710)를 예시하며, 도 7b, 7c, 및 7d는 정상 패치들과 누락 포인트들의 패치를 포함하는 2D 프레임들을 예시한다. 도 7a, 7b, 7c, 및 7d의 실시예는 다만 예시를 위한 것이며, 본 개시의 범위에서 벗어나지 않은 다른 실시예들이 사용될 수도 있다.
포인트 클라우드(710)는 도 4의 포인트 클라우드(405), 도 4의 메쉬(410), 도 5의 포인트 클라우드(502a 및 502b), 도 6a 및 6b의 포인트 클라우드(602)와 유사한 것이다. 포인트 클라우드(710)는 3D 공간 내 데이터 포인트들의 세트다. 3D 포인트 클라우드의 각각의 포인트는 (i) 3D 포인트 클라우드의 구조를 제공하는 기하학적 구조 위치 및 (ii) 컬러, 반사, 재료 등과 같이 각각의 포인트에 대한 정보를 제공하는 하나 이상의 텍스처들을 포함한다.
도 7b, 7c, 및 7d는 2D 프레임들(720, 730, 및 740)을 도시한다. 프레임(720)은 포인트 클라우드(710)의 텍스처를 나타내는 (패치(722)와 같은) 정상 패치들을 묘사한다. 프레임(730)은 포인트 클라우드(710)의 깊이 값들을 나타내는 (패치(732)와 같은) 정상 패치들을 묘사한다. 프레임들(720 및 730)은 도 6a의 하나 이상의 텍스처 프레임들(618) 및 하나 이상의 기하학적 구조 프레임들(614)과 유사할 수 있다. 프레임(720) 및 프레임(730)은 또한, 각자 누락 포인트들의 패치(724 및 734)를 포함한다. 누락 포인트들의 패치(724 및 734)는 3D에서 2D로의 투사에서 얻어진 (722 및 723과 같은) 정상 패치들 외에 별도의 추가 패치를 형성하기 위해 함께 묶인 투사가 어려운 포인트들을 포함하는 포인트 클라우드(710)의 중복 포인트들을 포함한다. 소정 실시예들에서, 중복되어 투사가 어려운 포인트들의 블록들로 구성된 누락 포인트들의 패치는 블록 기반 비디오 코덱에서 사용되는 소정 크기를 가진다. 소정 실시예들에서, 누락 포인트들의 패치(724 및 734)는 1로 설정된 변수 'patch_direct_coding'을 포함할 수 있다.
도 7d는 정상 패치들(742) 및 누락 포인트들의 패치(744)를 예시한다. 프레임(740)의 정상 패치들(742)은 포인트 클라우드(710)와 상이한 포인트 클라우드를 나타낸다. 프레임(740)은 도 6a의 하나 이상의 기하학적 구조 프레임들(614)이나 하나 이상의 텍스처 프레임들(614)과 유사할 수 있다. 프레임(740)이 프레임들(720 및 730)과 다른 포인트 클라우드를 나타낸다고 해도, 프레임(740)은 누락 포인트들의 패치(744)와 같은 누락 포인트들의 패치에 대한 다른 배치 위치를 보여준다.
일반적으로, 누락 포인트들의 패치(724, 734, 및 744)와 같은 누락 포인트들의 패치는 프레임들(720, 730, 및 740)과 같은 비디오 프레임들 안에 패킹되며, 이때 각각의 프레임은 기하학적 구조, 텍스처, 및 어떤 다른 속성을 나타낼 수 있다. 누락 포인트들의 패치(724 및 734)의 위치는 프레임 안의 위치에 자리한다. 누락 포인트들의 패치(744)의 위치는 프레임(740)의 다른 엣지 상에 위치된다. 다른 예에서, 누락 포인트들의 패치들은 프레임 내에서 (i) 프레임의 좌측, (ii) 프레임의 우측, (iii) 프레임의 상단, (iv) 프레임의 하단, (v) (정상 패치들 중 어느 것과도 중복되지 않는 위치에서의) 프레임의 중간 내부, 및 (vi) 당업자가 아는 다른 위치들에 자리하는 것과 같이, 비디오 프레임 내 정상 패치들에 상대적으로 배치될 수 있다.
이하에서 예로 든 신택스는 프레임 내 누락 포인트들의 패치의 위치를 결정하는 것을 예시하기 위해 주어진다. 정상 패치들이 한 프레임 상에 투사된다. 대응하는 점유 맵은 그 프레임에 포함되는 픽셀들의 유효 위치들을 예시한다. 그런 다음, 점유 맵과 비디오 프레임은, 비디오 프레임과 점유 맵 각각 안에서의 패치들 및 유효 포인트 지시자들의 배치를 돕기 위해, 'occupancyResolution x occupancyResolution' 같은 소정 사이즈의 정사각 그리드로 분할될 수 있다. 이하의 신택스는 정상 패치들이 (도 6a의 프레임 패킹(612) 등에 의해) 비디오 프레임 안에 패킹되고 점유 맵이 정상 패치들의 유효 포인트들의 위치들을 나타낸다는 전제를 포함한다.
Figure pct00004
Figure pct00005
소정 실시예들에서, 누락 포인트들의 패치(가령, 누락 포인트들의 패치(724))의 위치 및 사이즈가 프레임 내 소정 위치에 추가된다. 프레임 내 누락 포인트들의 패치의 위치는 디코더로 보내진 패치 정보의 리스트에서 최초 위치나 마지막 위치에 추가될 수 있다. (누락 포인트들의 패치가 패치 정보의 리스트 안에서 최초 위치나 마지막 위치에 있다는 식으로) 패치 정보의 리스트 안에서 누락 포인트들의 패치의 위치를 아는 디코더(가령, 디코더(650))는 포인트 클라우드를 재구성할 때, 누락 포인트들의 패치로부터의 포인트들을 포인트 클라우드 내 원래의 위치의 포인트들 각각으로 복구한다.
도 8a, 8b, 8c, 및 8d는 본 개시의 일 실시예에 따른 내장된 누락 포인트들의 패치들의 예를 도시한다. 도 8a, 8b, 및 8c는 프레임 안에서의 누락된 포인트들의 다양한 정렬들을 예시한다. 도 8d는 인코더(가령 인코더(600)에서 디코더(가령 디코더(650))로 전송되는 비트스트림 안에 누락 포인트들의 패치를 직접 다중화하는 것을 예시한다. 도 8a, 8b, 8c, 및 8d의 실시예는 다만 예시를 위한 것이다. 본 개시의 범위로부터 벗어나지 않는 다른 실시예들이 사용될 수 있다.
도 8a는 세 개의 프레임들(810a, 820a, 및 830a)를 도시한다. 도 8b는 세 개의 프레임들(810b, 820b, 및 830b)를 도시한다. 도 8c 또한 세 개의 프레임들(810c, 820c, 및 830c)를 도시한다.
도 8a는 누락 포인트들의 패치 안에 있는 누락 포인트들이 4:4:4 포맷의 세 컬러 프레임들 안에 어떻게 저장될 수 있는지에 대한 예를 도시한다. 세 컬러 프레임들은 프레임 810a, 820a, 및 830a에 각각 대응되는 Y, Cb, 및 Cr일 수 있다. 즉, X 좌표들은 프레임(810a)에 저장되고, Y 좌표들은 프레임(820a)에 저장되며, Z 좌표들은 프레임(830a)에 저장된다. 누락 포인트들의 패치가 세 평면들(프레임들(810a, 820a, 및 830a)의 평면들) 안에 좌표들을 바로 저장하는 반면, 도 7d의 정상 패치(742)와 같은 정상 패치들은 깊이 값만을 저장한다는 것을 알아야 한다. 정상 패치 안에 포함된 포인트의 다른 두 좌표들은 정상 패치 내 각각의 포인트의 위치와 어떤 패치 오프셋으로부터 추론된다.
도 8b는 누락 포인트들의 패치 안에 있는 누락 포인트들이 4:2:0 포맷의 세 컬러 프레임들 안에 어떻게 저장될 수 있는지에 대한 예를 도시한다. 누락 포인트들의 패치는 프레임(810b)과 같은 루마(luma) 평면 안에 삽입된다. (도 6a의 인코더(600)와 같은) 인코더가 단일 패치로서 정렬 및 저장될 수 있는 누락 포인트들의 패치 내 각각의 포인트의 X 좌표, Y 좌표, 및 Z 좌표를 인코딩할 수 있다. 그런 다음, (도 6b의 디코더(650)와 같은) 디코더가 누락 포인트들의 패치 내 누락 포인트들의 개수에 대한 지식으로부터 디코딩 및 재구성을 할 수 있다.
소정 실시예들에서, 인코더는 도 8b에 도시된 것과 같은 단일 루마 평면 내 하나의 누락 포인트들의 패치 안에 모든 X, Y, 및 Z 좌표들을 함께 저장한다. 디코더는 해당 패치로부터, (i) 프레임 내 해당 패치의 위치, (ii) 해당 패치의 크기, 및 (iii) 해당 패치 안에 저장된 누락 포인트들의 총 수에 기반하여 X, Y, 및 Z 좌표들을 검색한다. (I) 위치, (ii) 사이즈, 및 (iii) 포인트들의 개수에 대한 정보는 보조 패치 정보(606) 및 보조 패치 정보(670)와 같은 보조 패치 정보로서 비트스트림을 통해 인코더에서 디코더로 보내질 수 있다. 소정 실시예들에서, 누락 포인트들의 패치 안에 포함되는 포인트들의 개수는 인코더로부터 전송되지 않고, 디코더에서 도출될 수 잇다. 예를 들어 디코더는 누락 포인트들의 패치와 관련된 점유 맵을 통해 유효 포인트들의 총 수를 합산하여 누락된 포인트들의 개수를 도출할 수 있다.
도 8c는 누락 포인트들의 패치를 저장하는 다른 예를 도시한다. 누락 포인트들의 패치 내 각각의 포인트의 X 좌표, Y 좌표, 및 Z 좌표가 프레임(810c) 안에서 세 개의 개별 패치들로서 저장될 수 있다.
이하에서 예로든 신택스는 4:2:0 및 4:4:4 비디오 프레임 포맷에 대한 비디오 프레임 내 누락 포인트들의 패치 삽입을 예시하기 위해 주어진다.
Figure pct00006
도 8d는 누락 포인트들의 패치를 비트스트림 안에 직접 다중화하는 것을 예시한다. 프레임(840)은 기하학적 구조 포인트 클라우드 비디오 비트스트림, 컬러 포인트 클라우드 비디오 비트스트림, 및 누락된 포인트들의 패치를 포함한다. 누락된 포인트들의 패치는 X, Y, Z, R, G, B, 기하학적 구조 및 텍스처를 포함한다. 다음 프레임(845) 또한, 기하학적 구조 포인트 클라우드(PC) 비디오 비트스트림, 컬러 PC 비디오 비트스트림, 및 누락된 포인트들의 패치를 포함한다. 누락된 포인트들의 패치는 X, Y, Z, R, G, B, 기하학적 구조 및 텍스처를 포함한다. 누락된 포인트들의 좌표값들 및 텍스처 값들이 비트스트림 안에 직접 다중화된다. 허프만 인코딩, 산술연산 인코딩, DPCM 기반 코딩 등과 같은 엔트로피 코딩이 사용되어, 기하학적 구조나 속성들, 또는 그 둘 모두의 포인트들을 직접 비트스트림 안에 코딩할 수 있다.
이하에서 예로든 신택스는 4:2:0 및 4:4:4 비디오 프레임 포맷에 대한 비디오 프레임 내 누락 포인트들의 복구를 예시하기 위해 주어진다. 포맷이 4:4:4인 경우, 누락 포인트들의 패치 내 포인트들은 도 8a에 도시된 것과 같은 세 컬러 평면들 안에 저장된다. 포맷이 4:2:0인 경우, 누락 포인트들의 패치 내 포인트들은 도 8b에 도시된 것과 같은 하나의 패치 및 하나의 비디오 프레임 안에 저장된다.
Figure pct00007
상기 예에서, 신택스 5는 프레임 자체의 포맷에 기반하여, 누락 포인트들의 패치를 복구하는 것을 예시한다. 신택스 5는 무손실 포인트 클라우드 압축이다.
소정 실시예들에서, 누락된 포인트들의 패치를 생성하기 위해 하이브리드 투사(hybrid projection)가 이용된다. 예를 들어, 초기에 누락된 포인트들은, 정상 패치들이 3D 포인트 클라우드를 2D 프레임 안에 투사함으로써 생성될 때, 검출되어 누락된 포인트들의 패치 안에 그룹화된다. 누락 포인트들을 그룹화하기 위해, 정상 패치들에 포함된 포인트들로부터 제2포인트 클라우드가 구성될 수 있다. 원래의 포인트 클라우드의 각각의 포인트가 제2포인트 클라우드와 비교된다. 제2포인트 클라우드에서 포인트가 누락된 경우, 원래 포인트 클라우드 내 해당 포인트가 누락된 포인트이다. 그런 다음 각각의 누락된 포인트가 모여서 누락 포인트들의 패치를 형성한다. 상술한 바와 같이, 누락 포인트들의 패치는 누락된 포인트들을 저장한다.
소정 실시예들에서, 누락 포인트들의 패치로부터의 X, Y, 및 Z 좌표값들을 비디오 프레임(도 8b 대비 도 8a와 같이 모든 세 개의 채널들이나 단일 채널) 안에 저장하는 대신, 잔차들이 저장될 수 있다. 상술한 바와 같이, 잔차들은 X, Y, 및 Z 좌표값들의 차이일 수 있다. 잔차 신호의 동적 범위와 최대값은 원래의 좌표값보다 낮기 때문에, 무손실 성능이 개선된다. 잔차들은 원래의 신호에서 예측 신호를 감산함으로써 얻어질 수 있다. 한 예시적 실시예에서, 예측 신호는 원래 신호의 샘플 이동(sample-shifted) 버전이다.
이하의 신택스는 잔차 생성 및 신호 재구성 프로세스를 예시한다. 예를 들어, X는 수평 배열로 차례로 늘어서는(stacked) 원래 좌표값들을 포함하는 일차원 어레이이다.
Figure pct00008
소정 실시예들에서, 비디오 프레임의 비트 깊이(bit-depth)가 동적 범위의 잔차값들을 저장하기 위해 요구되는 비트 깊이를 초과하는 경우, 잔차 값들이 비디오 프레임들 안에 직접 저장된다. 예를 들어, 잔차들이 [-512, 511]의 범위 안에 있고, 비디오 프레임의 비트 깊이가 10 비트인 경우, 잔차들은 10 비트 비디오 프레임에 직접 저장되는데, 이때 9 비트들은 그 값을 저장하고 1 비트는 부호를 저장한다. 다른 예에서, 비디오 프레임의 비트 깊이가 잔차들의 부호 및 최대값을 저장할 수 없는 경우, 절대값만이 프레임 안에 저장된다. 음의 잔차들의 위치에 대한 정보는 점유 맵(622) 같은 점유 맵 안의 대응 위치에 저장될 수 있다. 부호는 런렝스(run-length) 코딩, 산술연산 코딩 등을 통해 점유 맵(622) 안에 인코딩될 수 있다. 이하의 신택스는 점유 맵(622)으로부터의 잔차 부호 재구성을 예시한다.
Figure pct00009
상기 신택스에서, 's'는 원래 신호에서 생성된 신호이다. 'N'은 누락 포인트들의 개수이다. 디코더에서, 잔차 신호의 절대값으로부터 원래 신호 x_rec을 재구성하기 위해, 부호 신호가 디코더로 전송된다.
소정 실시예들에서, 비트스트림에 바로 삽입되고 점유 맵(622)으로부터 독립적으로 전송되는 부호들을 나타내기 위해 날(raw) 비트들이 사용된다. 예를 들어, 부호 신호를 점유 맵(622)에 저장하는 대신, 부호들이 비트스트림 안에 직접 삽입될 수 있다.
소정 실시예들에서, 누락 포인트들의 패치 안에 저장되는 값들의 동적 범위는 원래의 값들 대신 바이어스된(biased) 값들(오프셋 값들이라고도 칭함)을 저장함으로써 감소된다. 예를 들어, 바이어스된 값들은 X-X_min, Y-Y_min, Z-Z_min을 포함할 수 있고, 원래 값들은 X, Y, 및 Z이다. 여기서 X_min는 모든 X 좌표값들의 최소값이고, Y_min은 모든 Y 좌표값들의 최소값이며, Z_min는 모든 Z 좌표값들의 최소값이다. 바이어스된 값들인 min, Y_min, and Z_min는 인코더(600)에서 디코더(650)로, 각 프레임에 대한 배치 정보로서 인코딩된 비트스트림을 통해 전송될 수 있다.
상술한 바와 같이, 도 4의 포인트 클라우드(405), 도 5의 포인트 클라우드(502b), 도 6a 및 6b의 포인트 클라우드(602), 도 7의 포인트 클라우드(710)와 유사한 포인트 클라우드들은 많은 양의 전송 대역폭을 사용한다. 따라서, 포인트 클라우드가 전송될 때 효율성을 높이기 위해 포인트 클라우드는 압축된다. 3차원인 포인트 클라우드가 2D 프레임 상에 투사될 때, 그 투사의 결과는 2D 프레임 상의 포인트 클라우드의 각각의 포인트의 배치 순서에 따라 달라질 수 있다. 포인트들의 가변하는 배열과 정렬은 포인트 클라우드의 압축, 포인트 클라우드의 전송, 및 포인트 클라우드의 재구성과 같은 포인트 클라우드의 성능에 영향을 미칠 수 있다. 포인트 클라우드의 압축, 전송, 및 재구성을 더 향상시키기 위해, 입력 포인트들을 재정렬하는 것이 포인트 클라우드의 성능을 높일 수 있다. 예를 들어, 정상 패치나 누락 포인트들의 패치와 같은 패치 안의 각각의 포인트의 순서가 인코더(600), 디코더(650), 그리고 그 사이의 전송 성능에 영향을 미칠 수 있다.
예를 들어, 여러 정상 패치들과 하나 이상의 누락 포인트들의 패치에 기반하여 3D 포인트 클라우드를 2D 프레임 상에 투사하는 것은, 포인트 클라우드의 포인트가 각각의 프레임에 저장되는 순서에 따라 달라질 수 있다. 포인트들이 저장되는 순서는 인코더(600) 및 디코더(650) 둘 모두에 직접 영향을 미칠 수 있다. 예를 들어, 입력 포인트들을 재정렬하기 위해 포인트들을 분류하는 것은 인코더(600) 및 디코더(650) 둘 모두의 성능에 바로 영향을 미칠 수 있다. 포인트들을 분류하는 것 역시 보다 평탄한 2D 프레임들을 증가시킬 수 있다.
투사 방법에 따라, 포인트 클라우드는 (i) 구조화된 순서, (ii) 비구조화된 순서, 또는 (iii) 반 구조화된 순서로 2D 비디오 프레임들 상에 투사될 수 있다. 구조화된 순서에서는, 투사된 2D 프레임들 내 모든 패치들은 포인트 클라우드의 구조를 유지한다. 비구조화된 순서에서는, 투사된 2D 프레임들 내 패치들 어느 것도 포인트 클라우드의 구조를 유지하지 않는다. 반구조화된 순서에서는, 일부 패치들은 포인트 클라우드의 구조를 유지하고, 다른 일부는 그러지 않는다. 예를 들어, 정상 패치들은 포인트 클라우드의 구조를 유지할 수 있고, 누락 포인트들의 패치는 그러지 않을 수 있다. 비구조화 또는 반구조화 투사 방법의 성능은, 포인트들 간 최소 거리 분류 순서, K-D 트리 분류 순서, 깊이 우선 검색(DFS) 분류 순서, 또는 너비 우선 검색(BFS) 분류 순서와 같은 어떤 분류 메커니즘들에 기반하여 비구조화된 패치들 안의 포인트들을 재정렬함으로써 개선될 수 있다.
분류는, 3D 포인트 클라우드가 2D 프레임 상에 투사될 때, 포인트 클라우드 내 한 포인트의 소정 근접거리 안에 있는 다른 포인트가 서로에게 더 가까워지게 할 수 있다. 근접 메트릭이, 기하학적 거리, 컬러 유사도 등과 같은 다양한 요소들에 기반하여 투사 포인트들을 분류할 수 있다. 기하학적 거리는 3D 공간 내 포인트들 간 거리일 수 있다. 컬러 유사도는 유사한 컬러들을 그룹화할 수 있다. 컬러 유사도는 유사한 컬러 강도의 포인트들을 그룹화할 수도 있다.
포인트들을 분류하는 것은 하나 이상의 속성들이나 룩업 테이블에 기반할 수 있다. 예를 들어, 속성에 기반하는 분류는 동일한 정렬방식을 다른 속성들에 적용할 수 있다. 예를 들어, 포인트들은 최적의 순서를 찾기 위해 기하학적 구조 속성을 이용하여 정렬될 수 있고, 그런 다음 그와 동일한 순서가 컬러와 같은 다른 속성들에 적용된다. 다른 예에서, 기하학적 구조 및 컬러와 같은 둘 이상의 속성들에 기반하는 분류는 동일한 정렬방식을 어떤 다른 속성들에 적용할 수 있다. 다른 예에서, 특정 분류 순서에 속성들을 매치시키기 위한 룩업 테이블이 생성될 수 있다.
최적이 아닌 순서로 포인트들을 투사하는 것은, 포인트 클라우드의 각각의 속성을 비구조적 방식으로 저장할 수 있다. 예를 들어, 속성 값들이, 래스터 주사를 통해 생성되는 것과 같은 행 방향 또는 열 방향으로, 2D 프레임 상의 직사각형 영역에 순차적으로 추가될 수 있다.
도 9는 본 개시의 일 실시예에 따른 래스터 주사(raster scan) 매핑의 예를 도시한다. 도 9에 따른 래스터 주사의 실시예는 다만 예시를 위한 것이며, 본 개시의 범위에서 벗어나지 않은 다른 실시예들이 사용될 수도 있다. 도 9는 포인트 클라우드(902), 기하학적 구조(X, Y, Z) 프레임(904) 및 컬러(RGB) 프레임(906)을 도시한다.
포인트 클라우드(902)는 도 4의 포인트 클라우드(405), 도 4의 메쉬(410), 도 5의 포인트 클라우드(502a 및 502b), 도 6a 및 6b의 포인트 클라우드(602), 도 7의 포인트 클라우드(710)와 유사할 수 있다. 기하학적 구조 프레임(904)은 래스터 주사를 이용하여 3D 공간에서 2D 평면으로 포인트 클라우드(902)의 각각의 X, Y, 및 Z 좌표를 매핑한 것이다. 컬러 프레임(906)은 래스터 주사를 이용하여 3D 공간에서 2D 평면으로 포인트 클라우드(902)의 각각의 R, G, 및 B 컬러 좌표를 매핑한 것이다. 래스터 주사 방식에서, 포인트들은 포인트 클라우드(902) 안에 저장된 순서로 포인트 클라우드(902)로부터 읽혀진다. 그런 다음 입력 포인트의 각각의 속성이 라인 단위로 해당 2D 프레임에 매핑된다.
기하학적 구조 프레임(904)은 순차적으로 행(row)방향 래스터 주사 순서에 따라 2D 프레임의 한 컬러 채널에 저장된 포인트 클라우드의 X, Y, 및 Z 기하학적 구조 값들 각각을 예시한다. 마찬가지로, 포인트 클라우드의 R, G, 및 B 컬러 값들 각각은 순차적으로 래스터 주사 순서에 따라 다른 비디오 프레임의 한 컬러 채널에 저장된다. 패치들(가령, 도 7b의 패치들(722))은 이러한 분류 방법에서 인지될 수 없다는 것을 알아야 한다.
도 10은 본 개시의 일 실시예에 따른 구조화 부분 및 비구조화 부분을 가진 투사의 예를 도시한다. 도 10에 따른 래스터 주사의 실시예는 다만 예시를 위한 것이며, 본 개시의 범위에서 벗어나지 않은 다른 실시예들이 사용될 수도 있다. 도 10은 기하학적 구조 프레임(1002) 및 텍스처 프레임(1004)을 도시한다. 기하학적 구조 프레임(1002)은 도 7c의 프레임(730)과 유사한 것으로, 포인트 클라우드의 깊이 값들을 나타내는 정상 패치들을 묘사한다. 예를 들어 패치(732)가 패치(1010b)와 유사하다. 마찬가지로, 텍스처 프레임(1004)은 도 7b의 프레임(720)과 유사한 것으로, 포인트 클라우드의 텍스처를 나타내는 정상 패치들을 묘사한다. 예를 들어 패치(722)가 패치(1010a)와 유사하다. 패치들(1010a 및 1010b) 및 기타 패치들과 같이 기후구조 프레임(1002) 및 텍스처 프레임(1004)에 묘사된 패치들은 구조화 형식을 가진다. 기하학적 구조 프레임(1002) 및 텍스처 프레임(1004) 각자의 비구조적 투사체(1012a 및 1012b)는 래스터 주사를 통해 생성된 것과 같은 각각의 개별 프레임의 직사각 영역 안에 저장되는 포인트들의 부분을 나타낸다. 비구조적 투사체(1012a 및 1012b)는 그들의 구조적 정보를 상실하였다. 비구조적 형식으로 된 포인트들을 재정렬하는 것이 코딩 및 디코딩 효율을 향상시킬 수 있다.
도 11a, 11b, 11c, 11d, 및 11e는 본 개시의 일 실시예에 따른 비구조적 투사체들의 정렬 방법의 예를 도시한다. 도 11a-11d의 실시예는 다만 예시를 위한 것이며, 본 개시의 범위에서 벗어나지 않은 다른 실시예들이 사용될 수도 있다. 소정 실시예들에서, 포인트들을 분류하기 위해, 분류 엔진이 도 6a의 인코더(600)와 같은 인코더 안에 포함된다.
도 11a, 11b, 11c, 11d, 및 11e는 포인트들(1101, 1102, 1103, 1104, 1106, 1107, 1108, 및 1109)와 같은 포인트들의 클러스터를 묘사한다. 이하의 예는 비구조적 투사의 K-D 트리에 기반하는 3D 포인트 클라우드의 일부분을 분류하는 것에 대해 예시한다. 도 11a는 포인트 1101, 포인트 1102, 포인트 1103, 포인트 1104, 포인트 1106, 포인트 1107, 포인트 1108 및 포인트 1109와 같은 포인트 클라우드의 9 개의 포인트들의 클러스터를 도시한다.
도 11b는 분류 엔진이 포인트(1101)을 시드(seed)로서 무작위로 선택하는 것을 묘사한다. 도 11c는 분류 엔진이 시드 포인트(1101)와 최근접 포인트들 간 소정 거리(1120a) 안에 있는 각각의 포인트를 식별하는 것을 도시한다. 소정 거리(1120a)는 근접 거리일 수 있다. 예를 들어, 소정 거리(1120a)는 그 경계 안에 있는 각각의 포인트를 식별하게 한다. 소정 거리(1120a)는 포인트들(1102, 1103, 1104 및 1105)을 포함한다. 소정 실시예들에서, 분류 엔진은 K-D 트리를 이용하여 시드 포인트(1101)의 이웃 포인트들을 찾을 수 있다. 그러면 그 이웃 포인트들이 2D 프레임 안에 매핑될 수 있다.
도 11d는 분류 엔진이 소정 거리(1120a) 안에서 포인트들을 정렬시키는 것을 예시한다. 분류 엔진은 시드 포인트(1101)로부터의 거리 순으로 리스트 안에 포인트들을 나열할 수 있다. 예를 들어, 시드 포인트로부터의 거리 순서는 시드 포인트(1101), 포인트 1102, 1104, 1103, 및 1105 순이다. 포인트들(1106, 1107, 1108 및 1109)는 소정 거리(1120a) 안에 있지 않기 때문에 나열되지 않는다. 포인트들의 순서는 정렬 리스트라 불리는 리스트 안에 저장된다. 소정 실시예들에서 시드로부터의 각각의 포인트의 거리 또한 정렬 리스트 안에 기록된다.
도 11e는 포인트(1104)와 같은 새 시드의 무작위 선택을 예시한다. 시드 포인트(1101)까지의 소정 거리(1120a) 안에 있는 포인트들이 정렬된 후, 시드 포인트(1101)가 아닌 다른 포인트가 새로운 시드로서 선택된다. 새로운 소정 거리(1102b) 안에 있는 포인트들이 정렬 리스트 안에 추가된다. 거리 순에 따른 새로운 소정 거리(1102b) 안의 포인트들은 포인트(1106), 포인트(1108), 포인트(1109), 및 포인트(1107) 순이다. 정렬 리스트는 이전 포인트 정렬 및 새 포인트 정렬을 포함하도록 업데이트된다. 예를 들어, 정렬 리스트는 다음과 같은 순서로 포인트들을 포함한다: 포인트(1101), 포인트(1102), 포인트(1104), 포인트(1103), 포인트(1105), 포인트(1106), 포인트(1108), 포인트(1109), 및 포인트(1107). 소정 거리(1120a) 안에 있는 포인트들이 새로운 소정 거리(1120b) 안에서도 나타나는 경우 그 포인트들은 재정렬되지 않는다. 새로운 소정 거리 안의 포인트들에 기반하여 정렬 리스트가 업데이트된 후, 새 시드가 선택되고, 입력 포인트들의 부분세트 내 모든 포인트들이 추가될 때까지 프로세스가 이어진다.
소정 실시예들에서, 정렬 엔진은 반복적으로, 또는 비반복적으로 포인트들을 정렬할 수 있다. 이하의 신택스는 포인트들을 정리 및 분류하는 비반복적인 예를 예시한다.
Figure pct00010
상기 예에서, 신택스 8은 포인트들의 부분세트, 즉 'pointSet' 안의 포인트들을 분류하는 비반복적 코드를 예시한다.입력은 (i) 입력 포인트 클라우드인 'pointSet', (ii) 검색할 각각의 포인트의 이웃 포인트의 최대 개수인 'maxNeighborCount', (iii) 각각의 포인트 주변 검색 영역 반경인 'neighborSearchRadius' 를 포함한다. 신택스 8은 이어서 정렬된 포인트들 또는 인덱스들의 리스트를 출력한다.
소정 실시예들에서, 3D 포인트 클라우드를 2D 프레임 상에 투사하는 것은 포인트들 간 최소 거리에 기반하는 반구조화 방법으로 수행될 수 있다. 예를 들어, 포인트들은 Y 좌표와 같은 한 기하학적 구조 성분의 유사도에 기반하여 그룹화될 수 있다. 예를 들어 포인트들은 한 기하학적 구조 성분에 대한 유사도에 기반하여 그룹화된다. 예를 들어, 유사한 Y 값들을 가진 포인트들이 함께 그룹지어진다. 유사한 Y 값들을 가진 그룹에 속하는 포인트들이 2D 프레임의 Y 번째 라인에 정렬된다.
한 기하학적 구조 성분의 유사도에 기반하여 포인트들이 그룹화될 때, 각각의 포인트는 우선, 한 포인트를 임시 시드로 선택한 후 그 시드를 2D 프레임 상에 매핑함으로써 분류된다. 그런 다음, 분류 엔진이 시드에 가장 가까운 포인트들을 식별한다. 시드에 가장 가까운 포인트들이 식별된 후, 분류 엔진은 이웃 포인트들 중 하나를 새로운 시드로서 선택한다. 새로운 시드가 선택된 후, 프로세스는 그 시드를 2D 프레임 상의 한 영역에 매핑하고, 시드에 가장 가까운 포인트들을 식별하고, 각각의 포인트가 분류될 때까지 새로 식별된 시드들에서 새 시드가 선택되는 등 프로세스가 반복된다.
이하의 신택스는 3D 포인트 클라우드를 반구조화 방식으로 2D 프레임 상에 투사하기 위해 X 값 그룹화를 통한 최소 거리 메트릭에 기반하는 분류에 대해 예시한다.
Figure pct00011
Figure pct00012
상기 예에서, 신택스 9는 포인트 클라우드가 2D 프레임 상에 투사될 때 3D 포인트 클라우드의 포인트들에 대한 최소 거리 메트릭에 기반하는 그룹 분류에 대해 예시한다. 신택스 9는 시드에 가장 가까운 포인트를 찾는 것을 기반으로 한다. 신택스 9는 그룹 내 모든 포인트들의 x, y, 및 z와 같은 기하학적 구조 성분들인 입력들 xx, yy, 및 zz를 이용한다. 인용구 'isSorted '는 포인트가 이미 매핑되어 있는지 여부를 보여준다. 인용구 'seedIdx'는 현재의 시드 포인트들의 인덱스이다. 신택스 9는 정렬된 포인트들의 리스트를 출력한다. 예를 들어, 신택스 9는 포인트들의 그룹 내에서 임의의 포인트를 선택하는 것을 묘사한다. 임의의 포인트를 제1시드라 칭한다. 제1시드는 한 비디오 프레임 라인으로 매핑된다. 신택스 9는 임의로 선택된 포인트와 가장 가까운 포인트를 그룹 안에서 식별한다. 그 포인트(임의 선택 포인트와 가장 가까운 포인트)는 임의 선택 포인트와 동일한 프레임 라인으로 매핑된다. 새로 추가된 포인트가 새로운 시드로서 선택된다. 프로세스는 그룹 내 모든 포인트들이 비디오 프레임 라인에 매핑될 때까지 이어진다.
소정 실시예들에서, 3D 포인트 클라우드를 2D 프레임 상에 투사하는 것은 K-D 트리에 기반하는 반구조화 방법으로 투사될 수 있다. 예를 들어, 포인트들은 Y 좌표와 같은 한 기하학적 구조 성분의 유사도에 기반하여 그룹화될 수 있다. 그런 다음 각각의 포인트가, 우선 임의의 포인트를 시드로서 선택하고, 그런 다음 그 시드를 2D 프레임 상의 한 영역으로 매핑하는 것을 통해 분류된다. 그런 다음, 분류 엔진이 검색 범위 내 포인트들을 식별한다. 검색 범위 안에서 포인트들이 식별되었으면, 그 포인트들은 거리의 오름차순 또는 내림차순에 따라 시드 옆에 매핑된다. 포인트들이 매핑되었으면, 새로운 시드가 선택된다. 새로운 시드는 앞서 매핑되었으나 시드로서 사용되지 않았던 포인트들 중 하나이다. 새로운 시드가 선택될 때, 프로세스는 2D 프레임 상의 한 영역에 그 시드를 매핑함으로써 반복된다. 그런 다음, 분류 엔진이 검색 범위 내 포인트들을 식별한다. 검색 범위 안에서 포인트들이 식별되었으면, 그 포인트들은 거리의 오름차순 또는 내림차순에 따라 시드 옆에 매핑된다. 포인트들이 매핑되었으면, 새로운 시드가 선택된다. 새로운 시드는 앞서 매핑되었으나 시드로서 사용되지 않았던 포인트들 중 하나이다. 새 시드가 선택될 때, 프로세스는 각각의 그룹이 분류될 때까지 계속된다.
이하의 신택스는 3D 포인트 클라우드를 2D 프레임 상에 투사하기 위해 X 값 그룹화에 기반하는 K-D 트리 이웃 검색에 대해 예시한다.
Syntax 10:
Figure pct00013
Figure pct00014
상기 예에서, 신택스 10은 포인트 클라우드가 2D 프레임 상에 투사될 때 3D 포인트 클라우드의 포인트들을 그룹화하고 정렬하기 위해 K-D 트리 검색을 이용하는 것에 대해 예시한다. 예를 들어, 유사한 X, Y, 또는 Z 기하학적 구조 값을 가진 포인트들이 함께 그룹화될 수 있고, 그런 다음 K-D 트리와 같은 이웃 검색 데이터 구조가 각각의 포인트에 대해 소정 거리 내, 또는 이웃 포인트들의 최대 개수 안에 드는 모든 이웃 포인트들을 검색할 수 있다. 먼저, 그룹 내에서 한 임의의 포인트가 시드로서 선택된다. 시드는, 도 11b와 유사하게, 한 비디오 프레임 라인으로 매핑된다. 이어서, K-D 트리 데이터 구조는 비디오 프레임에 매핑되는 시드의 이웃에서 시드 포인트에 인접한 포인트들을 찾기 위해 사용된다. 이웃 포인트들은 거리의 오름차순 또는 거리의 내림차순으로 매핑될 수 있다. 포인트들이 매핑되었으면, 이미 매핑된 포인트들 중, 앞서 시드로 선택된 적이 없는 한 포인트가 새로운 시드로서 선택된다. 프로세스는 그룹 내 모든 포인트들이 비디오 프레임 라인에 매핑될 때까지 이어진다.
소정 실시예들에서, 3D 포인트 클라우드를 2D 프레임 상에 투사하는 것은, 하나 이상의 이웃 포인트들을 검색하기 위한 깊이 우선 검색(DFS) 또는 너비 우선 검색(BFS)에 기반하는 반구조화 방법으로 투사될 수 있다. 예를 들어, 포인트들은 Y 좌표와 같은 한 기하학적 구조 성분의 유사도에 기반하여 그룹화될 수 있다. 그런 다음 각각의 포인트가, 우선 임의의 포인트를 시드로서 선택하고, 그 시드를 2D 프레임 상의 한 영역으로 매핑하는 것을 통해 분류된다. 이후, 분류 엔진은 DFS를 이용한 검색 범위 내에서 최적의 이웃 시드 또는 시드들을 식별한다. 식별된 시드(들)이 상기 시드 옆에 매핑된다. 그러면 분류 엔진이 그 최적의 이웃 포인트를 새로운 시드로서 선택한다. 새로운 시드가 선택될 때, 그 시드를 2D 프레임으로의 최적 시드(들)로 매핑함으로써 프로세스가 반복되고, 이때 최적 시드(들)은 DFS에 기반하여 식별된다. 포인트들이 매핑되었으면, 새로운 시드가 선택된다. 새 시드가 선택된 후, 프로세스는 각각의 포인트가 매핑될 때까지 계속된다.
이하의 신택스는 3D 포인트 클라우드를 2D 프레임 상에 투사하기 위해 X 값 그룹화에 기반하는 DFS 또는 BFS 검색에 대해 예시한다.
Figure pct00015
Figure pct00016
상기 신택스에서, 신택스 11은 포인트 클라우드가 2D 프레임 상에 투사될 때 3D 포인트 클라우드의 포인트들을 그룹화하고 정렬하기 위해 DFS 검색을 이용하는 것에 대해 예시한다. 입력 포인트들은 그룹화되고, 각각의 그룹은 K-D 트리 검색을 이용하여 분류될 수 있다. 그런 다음 포인트들이 2D 프레임 상에 매핑된다. 예를 들어, 유사한 X, Y, 또는 Z 기하학적 구조 값들을 가진 포인트들이 그룹화되고, 그런 다음 2D에서 일차원으로의 분류 알고리즘이 수행되어 검색 기준에 기반하여 서로 근접한 이웃 포인트들을 검색한다. 그 알고리즘은 DFS 또는 BFS일 수 있다. 먼저, 분류 엔진이 임의의 포인트를 시드로 선택한다. 시드가 비디오 프레임 내 한 라인으로 매핑된다. 이어서 검색 알고리즘이 최적 이웃 포인트 또는 포인트들을 찾는다. 그 포인트(들)은 비디오 프레임으로 시드 포인트 옆에 매핑된다. 그런 다음, 이미 매핑된 포인트들 중 이전에 시드로 선택된 적이 없는 한 포인트가 새로운 시드로 선택되고, 그룹 안의 모든 포인트들이 비디오 프레임 라인에 매핑될 때까지 절차가 이어진다.
상기 신택스 11을 참조하면, 입력된 'pointSet'은 입력된 포인트 클라우드를 일컫는다. 입력된 'maxNeighborCount'는 각각의 포인트에 대해 검색할 이웃 포인트들의 최대 개수를 나타낸다. 입력된 'neighborSearchRadius'는 각각의 포인트 주변 검색 영역의 반경을 나타낸다. 신택스 11은 정렬된 포인트들의 리스트 출력을 생성한다.
도 12는 본 개시의 일 실시예에 따른 포인트 클라우드 인코딩에 대한 흐름도의 예를 도시한다. 도 12는 포인트 클라우드 인코딩을 위한 흐름도(1200)를 도시한다. 예를 들어, 도 12에 묘사된 프로세스는 도 1의 서버(104)나 도 1의 클라이언트 디바이스들(106-114) 중 어느 하나, 도 6a의 인코더(600)에 의해 구현되는 것으로 기술되며, 도 2의 서버(200)나 도 3의 전자 디바이스(300)와 유사한 내부 구성요소들을 포함한다.
이 프로세스는 도 6a의 인코더(600)와 같은 인코더가 3D 포인트 클라우드에 대해 제1의 2D 프레임들의 세트 및 제2의 2D 프레임 세트를 생성하는 것으로 시작된다(1202). 제1 및 제2의 2D 프레임들의 세트들은 하나 이상의 프레임들을 포함할 수 있다. 소정 실시예들에서 제1의 2D 프레임들의 세트는 두 프레임들을 포함하고, 제2의 2D 프레임들의 세트는 두 프레임들을 포함한다. 제1의 2D 프레임들의 세트는 3D 포인트 클라우드의 기하학적 구조를 나타내는 정상 패치들을 포함한다. 제2의 2D 프레임들의 세트는 3D 포인트 클라우드의 텍스처를 나타내는 정상 패치들을 포함한다. 정상 패치들 각각은 3D 포인트 클라우드 내 3D 포인트들의 클러스터를 나타낸다. 소정 실시예들에서, 인코더(600)는 또한, 2D 프레임들의 점유 맵을 생성한다. 점유 맵은 3D 포인트 클라우드 내 포인트들을 나타내는 2D 프레임들 내 픽셀들의 위치들을 가리킬 수 있다. 점유 맵은 2D 프레임들 내 누락 포인트들의 패치의 위치 및 사이즈를 나타낼 수도 있다. 소정 실시예들에서, 보조 패치 정보 또한 생성된다. 보조 패치 정보는 플래그일 수 있다. 보조 패치 정보는 2D 프레임들 중 적어도 하나 안의 누락 포인트들의 패치의 사이즈, 누락 포인트들의 패치의 위치, 및 누락 포인트들의 패치에 포함된 포인트들의 양 등 중에서 적어도 하나를 나타낸다. 인코더(600)가 플래그를 생성할 수도 있다. 플래그는 패치들 각각과 관련된 것으로, (정상 패치들 또는 누락된 포인트들의 패치와 같은) 패치가 누락된 포인트들의 패치인지 여부를 나타낼 수 있다.
프로세스는 3D 포인트 클라우드 안에서 정상 패치들 하나에 표현되지 않은 하나 이상의 중복 포인트들을 검출한다(1204). 중복 포인트들의 검출은 2D 프레임들 중 하나에서, 두 번째 3D 포인트 클라우드를 생성하는 것을 포함할 수 있다. 그런 다음 인코더(600)가 두 번째 3D 포인트 클라우드를, 2D 프레임들을 생성되게 했던 최초의 3D 포인트 클라우드와 비교한다. 최초 3D 포인트 클라우드에 대한 두 번째 3D 포인트 클라우드의 비교 결과에 따라, 인코더는 두 번째 3D 포인트 클라우드에 포함되지 않은 최초 3D 포인트 클라우드의 포인트들을 식별할 수 있다.
두 번째 3D 포인트 클라우드에 포함되지 않은 최초의 3D 포인트 클라우드의 포인트들을 식별한 후, 인코더(600)는 하나 이상의 중복 포인트들을 포함하는 누락 포인트들의 패치를 생성한다(1206). 예를 들어, 인코더(600)는 하나 이상의 중복 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치와, 하나 이상의 중복 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 생성한다. 누락 포인트들의 패치를 생성하기 위해, 인코더는 두 번째 3D 포인트 클라우드에 포함되지 않는다고 식별된 3D 포인트 클라우드의 포인트들을 그룹화할 수 있다. 그룹화된 포인트들이 누락 포인트들의 패치이다. 소정 실시예들에서, 그룹화된 포인트들은 반구조화 패치를 형성하도록 분류될 수 있다.
인코더(600)는 하나 이상의 중복 포인트들의 수량을 결정할 수 있다. 또한, 인코더(600)는 생성된 2D 프레임들의 포맷을 식별할 수 있다. 2D 프레임들의 포맷이 4:2:0 포맷인 경우, 제1의 2D 프레임은 하나 이상의 중복 포인트들 각각의 기하학적 좌표들을 포함한다. 2D 프레임들의 포맷이 4:4:4 포맷이고, 제1의 2D 프레임이 세 개의 컬러 채널들을 포함하는 경우, 세 컬러 채널들 각각은 누락 포인트들의 패치에 포함된 각각의 포인트의 기하학적 좌표들 중 하나를 각기 포함한다. 세 컬러 채널들 각각은 좌표 방향에 대응된다. 인코더(600)는 2D 프레임들의 크기를 또한 식별할 수 있다. 2D 프레임들의 사이즈가 2D 프레임들의 식별 크기에 기반하는 어떤 문턱치를 초과할 경우, 2D 프레임들의 크기는 증가된다.
소정 실시예들에서, 누락 포인트들의 패치를 생성하기 위해, 인코더(600)는 포인트들을 특정 순서로 분류할 수 있다. 마찬가지로, 2D 프레임들 안에 포함되는 정상 패치들을 생성하기 위해, 인코더(600)는 포인트들을 특정 순서로 분류할 수 있다. 예를 들어, 인코더(600)는 3D 포인트 클라우드의 한 개 이상의 선택된 포인트에 인접한 어떤 문턱치 안에 들어오는 3D 포인트 클라우드의 각각의 포인트를 나타내는 리스트를 생성할 수 있다. 상기 리스트에 기반하여 각각의 포인트의 위치가 2D 프레임 상으로 매핑될 수 있다. 포인트들의 매핑이 각각의 포인트의 기하학적 좌표 위치에 기반하는 경우, 각각의 포인트의 컬러에 대해서도 동일한 순서가 적용될 수 있다. 예를 들어, 3D 포인트 클라우드 내 각각의 포인트의 텍스처 속성을 제2의 2D 프레임 상에 매핑할 때, 각각의 포인트의 텍스처 속성은 제1의 2D 프레임 상의 각각의 포인트의 매핑 위치에 기반하여 매핑될 수 있다.
이어서 프로세스는 제1의 2D 프레임 안에, 누락 포인트들의 패치의 기하학적 구조 표현을 포함한다(1208). 프로세스는 또한, 제2의 2D 프레임 안에, 누락 포인트들의 패치의 텍스처 표현을 포함한다. 누락된 포인트들의 패치는 정상 패치들 안에 포함되지 않은 포인트들의 기하학적 구조 및 텍스처를 포함한다. 예를 들어, 인코더(600)는 제1의 2D 프레임 안에 하나 이상의 중복 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치를, 제2의 2D 프레임 안에 하나 이상의 중복 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 포함한다. 인코더(600)는 제1의 2D 프레임 상에 누락 포인트들의 패치의 기하학적 구조 표현을 위치시킬 수 있고, 제2의 2D 프레임 상에 누락 포인트들의 패치의 텍스처 표현을 위치시킬 수 있다. 제1의 2D 프레임 상에서의 누락 포인트들의 패치의 기하학적 구조 표현의 위치는 제2의 2D 프레임 상에서의 누락 포인트들의 패치의 텍스처 표현의 유사한 위치에 대응한다.
상기 프로세서는 이후 압축된 비트스트림을 생성하기 위해, 누락 포인트들의 패치들을 포함하는 2D 프레임들을 인코딩한다(1210). 이후, 인코더는 압축된 비트스트림을 전송한다(1212). 압축된 비트스트림은 궁극적으로 디코더(650) 같은 디코더로 전송될 수 있다.
도 13은 본 개시의 일 실시예에 따른 포인트 클라우드 디코딩에 대한 흐름도의 예를 도시한다. 도 13은 포인트 클라우드 디코딩을 위한 흐름도(1300)를 도시한다. 예를 들어, 도 12에 묘사된 프로세스는 도 1의 클라이언트 디바이스들(106-114) 중 어느 하나, 도 6b의 디코더(650)에 의해 구현되는 것으로 기술되며, 도 2의 서버(200)나 도 3의 전자 디바이스(300)와 유사한 내부 구성요소들을 포함한다.
프로세스는 디코더(650) 같은 디코더가 압축된 비트스트림을 수신하는 것에서 시작된다(1302). 수신된 비트스트림은 다수의 2D 프레임들 상으로 매핑되어, 압축되고 그런 다음 전송되어 궁극적으로 디코더에 의해 수신된, 인코딩된 포인트 클라우드를 포함할 수 있다.
프로세스는 압축된 비트스트림을 디코딩한다(1304). 디코더(650)는 압축된 비트스트림을 제1의 2차원(2D) 프레임들의 세트 및 제2의 2D 프레임들의 세트로 디코딩한다. 제1 및 제2의 2D 프레임들의 세트들은 하나 이상의 프레임들을 포함할 수 있다는 것을 알아야 한다. 소정 실시예들에서 제1의 2D 프레임들의 세트는 두 프레임들을 포함하고, 제2의 2D 프레임들의 세트는 두 프레임들을 포함한다. 제1의 2D 프레임들의 세트는 3차원(3D) 포인트 클라우드의 기하학적 구조를 나타내는 정상 패치들을 포함한다. 제2의 2D 프레임들의 세트는 3D 포인트 클라우드의 텍스처를 나타내는 정상 패치들을 포함한다. 정상 패치들 각각은 3D 포인트 클라우드 내 3D 포인트들의 클러스터를 나타낸다.
소정 실시예들에서, 디코더(650)는 또한, 압축된 비트스트림으로부터 보조 패치 정보를 디코딩한다. 보조 패치 정보는 누락 포인트들의 패치의 사이즈를 알려준다. 보조 패치 정보는 또한, 2D 프레임들 중 적어도 하나에서의, 누락 포인트들의 패치 위치를 알려줄 수 있다. 보조 패치 정보는 누락 포인트들의 패치에 포함되는 포인트들의 양을 추가로 알려줄 수 있다. 디코더(650)는 플래그를 디코딩할 수도 있다. 플래그는 패치들 각각과 관련된 것으로, (정상 패치들 또는 누락된 포인트들의 패치와 같은) 패치가 누락된 포인트들의 패치인지 여부를 나타낼 수 있다.
디코더(650)는 또한, 압축된 비트스트림 안에 포함된 점유 맵을 디코딩하여 식별할 수 있다. 점유 맵은 3D 포인트 클라우드 내 포인트들을 나타내는 2D 프레임들의 세트 내 픽셀들의 위치들을 가리킬 수 있다. 점유 맵은 2D 프레임들의 세트 내에 포함되는 누락 포인트들의 패치의 위치 및 사이즈를 나타낼 수도 있다.
이제 프로세스는 두 2D 프레임들 내 누락 포인트들의 패치를 식별한다(1306). 누락된 포인트들의 패치는 정상 패치들 안에 포함되지 않은 3D 포인트 클라우드의 포인트들을 포함한다. 예를 들어, 제1의 2D 프레임들의 세트는 3D 포인트 클라우드의 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치를 포함할 수 있다. 제2의 2D 프레임들의 세트는 3D 포인트 클라우드의 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 포함할 수 있다. 소정 실시예들에서, 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치들은 3D 포인트 클라우드의 중복 포인트들의 기하학적 구조이다. 소정 실시예들에서, 포인트들의 텍스처를 나타내는 누락 포인트들의 패치들은 3D 포인트 클라우드의 중복 포인트들의 텍스처이다. 누락 포인트들의 패치는 세 개의 기하학적 좌표들 모두를 저장하는 반면, 정상 패치들은 깊이 좌표만을 저장하는데, 이는 프레임 상에서의 정상 패치들의 배치가 X 및 Y 좌표와 같은 다른 두 좌표들을 나타내기 때문이다.
프로세스는 이어서, 누락 포인트들의 패치를 이용하여 2D 프레임들의 세트에서 3D 포인트 클라우드를 생성한다(1308). 예를 들어, 디코더(650)는 2D 프레임들을 이용하여, 3D 포인트 클라우드의 포인트들의 기하학적 구조 및 텍스처에 대한 누락 포인트들의 패치들을 사용하는 3D 포인트 클라우드를 생성할 수 있다. 디코더(650)는 제1의 2D 프레임들의 세트의 정상 패치들을 분석하여 3D 포인트 클라우드의 모양을 생성한다. 디코더(650)는 또한, 제2의 2D 프레임들의 세트의 정상 패치들을 분석하여 3D 포인트 클라우드의 모양에 텍스처를 적용한다. 3D 포인트 클라우드의 모양은 제1의 2D 프레임들의 세트 안에 포함된 누락 포인트들의 패치로부터의 정보를 가지고 증강된다. 마찬가지로, 3D 포인트 클라우드의 텍스처는 제2의 2D 프레임들의 세트 안에 포함된 누락 포인트들의 패치로부터의 정보를 가지고 증강된다.
소정 실시예들에서, 디코더(650)는 제1의 2D 프레임 내 누락 포인트들의 패치의 기하학적 구조 표현을 찾을 수 있고, 제2의 2D 프레임 내 누락 포인트들의 패치의 텍스처 표현을 찾을 수 있다. 제1의 2D 프레임 내 누락 포인트들의 패치의 위치는, 2D 프레임 내 누락 포인트들의 유사한 위치에 대응할 수 있다.
디코더(650)는 2D 프레임들의 세트의 포맷을 식별할 수 있다. 누락 포인트들의 패치 바운딩 박스에 대한 정보와 더불어 2D 프레임들의 포맷은, 누락 포인트들의 패치의 위치를 디코더(650)에게 알려준다. 예를 들어, 2D 프레임들의 세트의 포맷이 4:2:0 포맷이면, 디코더(650)는 제1의 2D 프레임들의 세트에서, 누락 포인트들의 패치 안에 포함되는 각각의 포인트의 기하학적 좌표들을 식별할 수 있다. 다른 예에서, 2D 프레임들의 세트의 포맷이 4:4:4 포맷이고 제1의 2D 프레임이 세 개의 컬러 채널들을 포함하는 경우, 디코더는 세 개의 컬러 채널들 각각에서, 제1의 2D 프레임들의 세트의 하나 이상의 중복 포인트들 각각의 기하학적 좌표들 중 하나를 식별할 수 있다. 세 컬러 채널들 각각은 좌표 방향에 대응된다.
소정 실시예들에서, 디코더는 신호를 디코딩하되, 포인트들의 기하학적 좌표들이 하나 이상의 프레임들 상에 위치할 수 있는, 상기 신호 관련 값에 따라 신호를 디코딩한다. 예를 들어, 신호가 제1값인 경우, 기하학적 구조 좌표들은 제1의 2D 프레임들 세트의 여러 컬러 평면들 상에 위치될 수 있다. 다른 예에서, 신호가 제2값인 경우, 기하학적 구조 좌표들은 제1의 2D 프레임들의 세트의 단일 컬러 평면 상에 위치될 수 있다.
도면들은 다양한 사용자 디바이스의 예들을 예시하였으나, 해당 도면에 대한 다양한 변형이 있을 수 있다. 예를 들어, 사용자 디바이스는 각각의 구성요소에 대해 임의 개를 임의의 적절한 구성으로 포함할 수 있다. 일반적으로, 도면들은 어떤 특정 구성(들)로 본 개시의 범위를 한정하지 않는다. 또한, 도면들이 본 특허 문서에서 개시된 다양한 사용자 디바이스의 특성들이 사용될 수 있는 동작 환경을 도시하고 있지만, 그러한 특성들은 어떤 다른 적절한 시스템에서 사용될 수도 있다.
본 출원의 내용은 어떤 특정 요소, 단계, 또는 기능이 청구범위에 포함되어야 하는 필수 구성 요소를 의미한다고 파악되어서는 안된다. 본 개시의 특허 범위는 오직 청구범위에 의해서만 한정된다. 또한, 청구항들 중 어느 것도 정확한 단어 "~의 수단" 뒤에 분사가 뒤따르지 않는다면 35 USC §112를 행사하도록 되어 있지 않다. 청구범위 안에서 "메커니즘", "모듈", "디바이스", "유닛", "성분", "요소", "멤버", "디바이스", "기계", "시스템", "프로세서" 또는 "컨트롤러"를 비한정적으로 포함하는 어떤 다른 용어의 사용은 출원인들에 의해 당업자에게 알려진 구조들을 일컫는 것으로 이해되어야 한다.
본 개시는 예시적 실시예와 함께 기술되었지만, 당업자에게 다양한 변경 및 수정안이 제안될 수 있다. 본 개시는 그러한 변경 및 수정이 첨부된 청구범위 안에 드는 것으로 포괄하도록 되어 있다.

Claims (20)

  1. 포인트 클라우드 디코딩을 위한 디코딩 디바이스로서,
    압축된 비트스트림을 수신하도록 구성된 통신 인터페이스; 및
    상기 통신 인터페이스에 동작 가능하게 연결된 프로세서를 포함하고, 상기 프로세서는
    상기 압축된 비트스트림을 제1의 2차원(2D) 프레임들의 세트 및 제2의 2D 프레임들의 세트로 디코딩하되, 상기 제1의 2D 프레임들의 세트는 3차원(3D) 포인트 클라우드의 기하학적 구조를 나타내는 제1 정상(regular) 패치들의 세트를 포함하고, 상기 제2의 2D 프레임들의 세트는 상기 3D 포인트 클라우드의 텍스처를 나타내는 제2 정상 패치들의 세트를 포함하며, 상기 제1 및 제2 정상 패치들의 세트의 패치들은 상기 3D 포인트 클라우드 내 3D 포인트들의 개별 클러스터들을 나타내고,
    상기 제1 정상 패치들의 세트 안에 포함되지 않은 상기 3D 포인트 클라우드의 포인트들의 기하학적 포인트들(geometry points)을 나타내는 누락(missed) 포인트들의 패치를 상기 제1의 2D 프레임들의 세트 내에서 식별하고, 상기 제2 정상 패치들의 세트 안에 포함되지 않은 상기 3D 포인트 클라우드의 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 상기 제2의 2D 프레임들의 세트 내에서 식별하고,
    상기 2D 프레임들의 세트들을 이용하여, 상기 제1 및 제2 정상 패치들의 세트들 및 상기 누락 포인트들의 패치들을 사용하는 3D 포인트 클라우드를 생성하도록 구성되는 디코딩 디바이스.
  2. 제1항에 있어서, 상기 프로세서는
    상기 2D 프레임들의 세트들 안에 포함되는 각각의 패치와 관련된 플래그들을 식별하고, 상기 플래그들은 각각의 패치가 상기 누락 포인트들의 패치들 중 하나인지 여부를 나타내고,
    상기 누락 포인트들의 패치들의 사이즈, 상기 누락 포인트들의 패치들의 상기 2D 프레임들의 세트들 내에서의 위치를 나타내는 보조 패치 정보를 식별하도록 더 구성되고,
    상기 보조 패치 정보 및 상기 플래그들은 상기 압축된 비트스트림으로부터 디코딩되는 디코딩 디바이스.
  3. 제1항에 있어서, 상기 프로세서는
    상기 제1의 2D 프레임들의 세트 안에서 기하학적 구조를 나타내는 상기 누락 포인트들의 패치들의 위치와, 상기 제2의 2D 프레임들의 세트 안에서 텍스처를 나타내는 상기 누락 포인트들의 패치들의 위치를 찾아내도록 더 구성되고,
    상기 제1의 2D 프레임들의 세트 안에서 기하학적 구조를 나타내는 상기 누락 포인트들의 패치들의 위치는, 상기 제2의 2D 프레임들의 세트 안에서 텍스처를 나타내는 상기 누락 포인트들의 패치들의 위치에 대응하는 디코딩 디바이스.
  4. 제1항에 있어서, 상기 프로세서는
    상기 비트스트림에 포함되는 파라미터를 식별하고;
    상기 파라미터가 제1값으로 식별됨에 따라, 상기 제1의 2D 프레임들의 세트의 단일 컬러 평면 안에서 상기 포인트들 각각의 기하학적 좌표들을 식별하고;
    상기 파라미터가 제2값으로 식별됨에 따라, 상기 제1의 2D 프레임들의 세트의 여러 컬러 평면들 안에 상기 포인트들 각각의 기하학적 좌표들을 배치시키되, 상기 여러 컬러 평면들 각각은 하나의 좌표 방향에 대응하도록 더 구성되는 디코딩 디바이스.
  5. 제1항에 있어서, 상기 프로세서는
    상기 2D 프레임들의 세트들의 점유 맵을 식별하되, 상기 점유 맵은 상기 3D 포인트 클라우드 내 포인트들을 나타내는 상기 2D 프레임들의 세트들 내 픽셀들의 위치들을 가리키고,
    상기 점유 맵에 기반하여 상기 누락 포인트들의 패치들 각각에 포함된 포인트들의 양을 추정하도록 더 구성되는 디코딩 디바이스.
  6. 제1항에 있어서, 상기 2D 프레임들의 세트들로부터 상기 3D 포인트 클라우드를 생성하기 위해, 상기 프로세서는
    상기 제1의 2D 프레임들의 세트의 상기 정상 패치들을 분석하여 상기 3D 포인트 클라우드의 모양을 생성하고;
    상기 제2의 2D 프레임들의 세트의 상기 정상 패치들을 분석하여 상기 3D 포인트 클라우드의 모양에 텍스처를 적용하고;
    상기 제1의 2D 프레임들의 세트 안에 포함된 상기 누락 포인트들의 패치로부터의 정보를 가지고 상기 3D 포인트 클라우드의 모양을 증강(augment)시키고;
    상기 제2의 2D 프레임들의 세트 안에 포함된 상기 누락 포인트들의 패치로부터의 정보를 가지고 상기 3D 포인트 클라우드의 텍스처를 증강시키도록 구성된 디코딩 디바이스.
  7. 포인트 클라우드 인코딩을 위한 인코딩 디바이스로서,
    3차원(3D) 포인트 클라우드에 대해, 상기 3D 포인트 클라우드의 기하학적 구조를 나타내는 제1 정상 패치들의 세트를 포함하는 제1의 2차원(2D) 프레임들의 세트 및 상기 3D 포인트 클라우드의 텍스처를 나타내는 제2정상 패치들의 세트를 포함하는 제2의 2D 프레임들의 세트를 생성하되, 상기 제1 및 제2 정상 패치들의 세트의 패치들은 상기 3D 포인트 클라우드 내 3D 포인트들의 개별 클러스터들을 나타내고,
    상기 3D 포인트 클라우드 안에서 상기 정상 패치들의 세트들 중 하나에서 나타내지 않은 포인트들을 검출하고,
    상기 검출된 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치, 및 상기 검출된 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 생성하고,
    상기 제1의 2D 프레임 안에 상기 검출된 포인트들의 기하학적 구조를 나타내는 상기 누락 포인트들의 패치를, 상기 제2의 2D 프레임 안에 상기 검출된 포인트들의 텍스처를 나타내는 상기 누락 포인트들의 패치를 포함시키고,
    압축된 비트스트림을 생성하기 위해, 상기 누락 포인트들의 패치들을 포함하는 상기 2D프레임들의 세트들을 인코딩하도록 구성된 프로세서; 및
    상기 프로세서와 동작가능하게 연결되고, 상기 압축된 비트스트림을 전송하도록 구성된 통신 인터페이스를 포함하는 인코딩 디바이스.
  8. 제7항에 있어서, 상기 프로세서는
    상기 2D 프레임들의 세트들 안에 포함되는 각각의 패치와 관련된 플래그들을 생성하고, 상기 플래그들은 각각의 패치가 상기 제1 및 제2 정상 패치들의 세트들 중 하나인지 또는 상기 누락 포인트들의 패치들 중 하나인지 여부를 나타내고;
    상기 누락 포인트들의 패치들의 사이즈, 상기 누락 포인트들의 패치들의 상기 2D 프레임들의 세트들 내에서의 위치를 나타내는 보조 패치 정보를 생성하도록 더 구성되고,
    상기 보조 패치 정보 및 상기 플래그들은 상기 압축된 비트스트림에 포함되는 인코딩 디바이스.
  9. 제7항에 있어서, 상기 프로세서는
    상기 제1의 2D 프레임들의 세트 안에서 기하학적 구조를 나타내는 상기 누락 포인트들의 패치들을 위치시키고, 상기 제2의 2D 프레임들의 세트 안에서 텍스처를 나타내는 상기 누락 포인트들의 패치들을 위치시키도록 더 구성되고,
    상기 제1의 2D 프레임들의 세트 안에서 기하학적 구조를 나타내는 상기 누락 포인트들의 패치들의 위치는, 상기 제2의 2D 프레임들의 세트 안에서 텍스처를 나타내는 상기 누락 포인트들의 패치들의 위치에 대응하는 인코딩 디바이스.
  10. 제7항에 있어서, 상기 누락 포인트들의 패치들을 생성하기 위해, 상기 프로세서는
    상기 검출된 포인트들의 양을 판단하고;
    상기 2D 프레임들의 세트들의 포맷과 크기(dimenstion)를 식별하고;
    상기 2D 프레임들의 세트들의 포맷이 제1포맷이라고 식별됨에 따라, 상기 제1의 2D 프레임들의 세트의 단일 컬러 평면에 각각의 포인트의 기하학적 좌표들을 포함시키고;
    상기 2D 프레임들의 세트들의 포맷이 제2포맷이라고 식별됨에 따라, 상기 제1의 2D 프레임들의 세트의 여러 컬러 평면들 안에 상기 포인트들 각각의 기하학적 좌표들을 배치시키되, 상기 여러 컬러 평면들 각각은 하나의 좌표 방향에 대응하고;
    상기 검출된 포인트들의 양이, 상기 2D 프레임들의 세트들의 식별 크기에 기반하는 문턱치를 초과함에 따라, 상기 2D 프레임들의 세트들의 크기를 증가시키도록 구성되는 인코딩 디바이스.
  11. 제7항에 있어서, 상기 프로세서는 상기 2D 프레임들의 세트들의 점유 맵을 생성하도록 더 구성되고, 상기 점유 맵은 상기 3D 포인트 클라우드 내 포인트들을 나타내는 상기 2D 프레임들의 세트들 내 픽셀들의 위치들을 가리키는 인코딩 디바이스.
  12. 제7항에 있어서,
    상기 3D 포인트 클라우드 안에서 상기 정상 패치들 중 하나에서 나타내지 않은 포인트들을 검출하기 위해, 상기 프로세서는
    상기 2D 프레임들의 세트들 중 하나로부터, 제2의 3D 포인트 클라우드를 생성하고,
    상기 제2의 3D 포인트 클라우드를 상기 3D 포인트 클라우드와 비교하고,
    상기 3D 포인트 클라우드에 대한 상기 제2의 3D 포인트 클라우드의 비교 결과에 따라, 상기 제2의 3D 포인트 클라우드에 포함되지 않은 상기 3D 포인트 클라우드의 포인트들을 식별하고,
    상기 누락 포인트들의 패치들을 생성하기 위해, 상기 프로세서는 상기 제2의 3D 포인트 클라우드에 포함되지 않는다고 식별된 상기 3D 포인트 클라우드의 포인트들을 그룹화하도록 구성되는 인코딩 디바이스.
  13. 제7항에 있어서, 상기 2D 프레임들의 세트들을 생성하기 위해, 상기 프로세서는
    근접 기준에 기반하여, 상기 2D 프레임들의 세트들에서 검출된 포인트들의 기하학적 구조를 나타내는 포인트들의 매핑 위치를 변경하고;
    다른 근접 기준에 기반하여, 상기 2D 프레임들의 세트들에서 검출된 포인트들 중 텍스처를 나타내는 포인트들의 매핑 위치를 변경하고;
    제3의 근접 기준에 기반하여, 상기 2D 프레임들의 세트들에서 다른 속성들을 나타내는 포인트들의 매핑 위치를 변경하도록 더 구성되는 인코딩 디바이스.
  14. 포인트 클라우드 디코딩 방법으로서,
    압축된 비트스트림을 수신하는 단계;
    상기 압축된 비트스트림을 제1의 2차원(2D) 프레임들의 세트 및 제2의 2D 프레임들의 세트로 디코딩하되, 상기 제1의 2D 프레임들의 세트는 3차원(3D) 포인트 클라우드의 기하학적 구조를 나타내는 제1정상 패치들의 세트를 포함하고, 상기 제2의 2D 프레임들의 세트는 상기 3D 포인트 클라우드의 텍스처를 나타내는 제2정상 패치들의 세트를 포함하며, 상기 제1 및 제2 정상 패치들의 세트의 패치들은 상기 3D 포인트 클라우드 내 3D 포인트들의 개별 클러스터들을 나타내는 단계;
    상기 제1 정상 패치들의 세트 안에 포함되지 않은 상기 3D 포인트 클라우드의 포인트들의 기하학적 구조를 나타내는 누락 포인트들의 패치를 상기 제1의 2D 프레임들의 세트 내에서 식별하고, 상기 제2 정상 패치들의 세트 안에 포함되지 않은 상기 3D 포인트 클라우드의 포인트들의 텍스처를 나타내는 누락 포인트들의 패치를 상기 제2의 2D 프레임들의 세트 내에서 식별하는 단계; 및
    상기 2D 프레임들의 세트들을 이용하여, 상기 제1 및 제2 정상 패치들의 세트들 및 상기 누락 포인트들의 패치들을 사용하는 3D 포인트 클라우드를 생성하는 단계를 포함하는 방법.
  15. 제14항에 있어서,
    상기 2D 프레임들의 세트들 안에 포함되는 각각의 패치와 관련된 플래그들을 식별하는 단계에 있어서, 상기 플래그들은, 각각의 패치가 상기 누락 포인트들의 패치들 중 하나인지 여부를 나타내는, 상기 플래그들을 식별하는 단계; 및
    상기 누락 포인트들의 패치들의 사이즈, 상기 2D 프레임들의 세트들 내에서의 상기 누락 포인트들의 패치들의 위치를 나타내는 보조 패치 정보를 식별하는 단계를 더 포함하고,
    상기 보조 패치 정보 및 상기 플래그들은 상기 압축된 비트스트림으로부터 디코딩되는 방법.
  16. 제14항에 있어서,
    상기 제1의 2D 프레임들의 세트 안에서 기하학적 구조를 나타내는 상기 누락 포인트들의 패치들의 위치와, 상기 제2의 2D 프레임들의 세트 안에서 텍스처를 나타내는 상기 누락 포인트들의 패치들의 위치를 찾아내는 단계를 더 포함하고,
    상기 제1의 2D 프레임들의 세트 안에서 기하학적 구조를 나타내는 상기 누락 포인트들의 패치들의 위치는, 상기 제2의 2D 프레임들의 세트 안에서 텍스처를 나타내는 상기 누락 포인트들의 패치들의 위치에 대응하는 방법.
  17. 제14항에 있어서,
    상기 비트스트림에 포함되는 파라미터를 식별하는 단계;
    상기 파라미터가 제1값으로 식별됨에 따라, 상기 제1의 2D 프레임들의 세트의 단일 컬러 평면 안에서 상기 포인트들 각각의 기하학적 좌표들을 식별하는 단계; 및
    상기 파라미터가 제2값으로 식별됨에 따라, 상기 제1의 2D 프레임들의 세트의 여러 컬러 평면들 안에 상기 포인트들 각각의 기하학적 좌표들을 배치시키되, 상기 여러 컬러 평면들 각각은 하나의 좌표 방향에 대응하는 단계를 더 포함하는 방법.
  18. 제14항에 있어서,
    상기 2D 프레임들의 세트들의 점유 맵을 식별하되, 상기 점유 맵은 상기 3D 포인트 클라우드 내 포인트들을 나타내는 상기 2D 프레임들의 세트들 내 픽셀들의 위치들을 가리키는 단계, 및
    상기 점유 맵에 기반하여 상기 누락 포인트들의 패치들 각각에 있는 포인트들의 양을 추정하는 단계를 더 포함하는 방법.
  19. 제14항에 있어서, 상기 2D 프레임들의 세트들로부터 상기 3D 포인트 클라우드를 생성하는 단계는
    상기 제1의 2D 프레임들의 세트의 상기 정상 패치들을 분석하여 상기 3D 포인트 클라우드의 모양을 생성하는 단계;
    상기 제2의 2D 프레임들의 세트의 상기 정상 패치들을 분석하여 상기 3D 포인트 클라우드의 모양에 텍스처를 적용하는 단계;
    상기 제1의 2D 프레임들의 세트 안에 포함된 상기 누락 포인트들의 패치로부터의 정보를 가지고 상기 3D 포인트 클라우드의 모양을 증강(augment)시키는 단계; 및
    상기 제2의 2D 프레임들의 세트 안에 포함된 상기 누락 포인트들의 패치로부터의 정보를 가지고 상기 3D 포인트 클라우드의 텍스처를 증강시키는 단계를 포함하는 방법.
  20. 제14항에 있어서,
    상기 압축된 비트스트림에 포함되는 파라미터를 식별하는 단계;
    상기 파라미터가 제1값일 때, 상기 제1의 2D 프레임들의 세트의 단일 컬러 채널 안에서 상기 3D 포인트 클라우드의 기하학적 구조 좌표들을 나타내는 포인트들을 식별하는 단계; 및
    상기 파라미터가 제2값일 때, 상기 제1의 2D 프레임들의 세트의 세 개의 컬러 채널들 안에서 상기 3D 포인트 클라우드의 기하학적 구조 좌표들을 나타내는 포인트들을 식별하는 단계를 더 포함하는 방법.
KR1020197033756A 2017-10-21 2018-10-22 하이브리드 변환을 이용한 포인트 클라우드 압축 KR20200060297A (ko)

Applications Claiming Priority (23)

Application Number Priority Date Filing Date Title
US201762575412P 2017-10-21 2017-10-21
US62/575,412 2017-10-21
US201762575842P 2017-10-23 2017-10-23
US62/575,842 2017-10-23
US201762590159P 2017-11-22 2017-11-22
US62/590,159 2017-11-22
US201862617869P 2018-01-16 2018-01-16
US62/617,869 2018-01-16
US201862644025P 2018-03-16 2018-03-16
US62/644,025 2018-03-16
US201862648069P 2018-03-26 2018-03-26
US62/648,069 2018-03-26
US201862653793P 2018-04-06 2018-04-06
US201862654125P 2018-04-06 2018-04-06
US62/654,125 2018-04-06
US62/653,793 2018-04-06
US201862681728P 2018-06-07 2018-06-07
US62/681,728 2018-06-07
US201862683429P 2018-06-11 2018-06-11
US62/683,429 2018-06-11
US16/165,817 US10424083B2 (en) 2017-10-21 2018-10-19 Point cloud compression using hybrid transforms
US16/165,817 2018-10-19
PCT/KR2018/012483 WO2019078696A1 (en) 2017-10-21 2018-10-22 COMPRESSION OF POINT CLOUD USING HYBRID TRANSFORMS

Publications (1)

Publication Number Publication Date
KR20200060297A true KR20200060297A (ko) 2020-05-29

Family

ID=66170701

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197033756A KR20200060297A (ko) 2017-10-21 2018-10-22 하이브리드 변환을 이용한 포인트 클라우드 압축

Country Status (5)

Country Link
US (1) US10424083B2 (ko)
EP (1) EP3665658B1 (ko)
KR (1) KR20200060297A (ko)
CN (1) CN111247562B (ko)
WO (1) WO2019078696A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102403501B1 (ko) * 2020-12-10 2022-05-30 한밭대학교 산학협력단 3차원 데이터 부호화 방법 및 장치
KR20230052923A (ko) * 2021-07-20 2023-04-20 텐센트 아메리카 엘엘씨 비디오 기반 포인트 클라우드 코딩을 위한 고속 패치 생성

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3349182A1 (en) * 2017-01-13 2018-07-18 Thomson Licensing Method, apparatus and stream for immersive video format
US10897269B2 (en) 2017-09-14 2021-01-19 Apple Inc. Hierarchical point cloud compression
US11818401B2 (en) 2017-09-14 2023-11-14 Apple Inc. Point cloud geometry compression using octrees and binary arithmetic encoding with adaptive look-up tables
US10861196B2 (en) 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11113845B2 (en) 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
US10909725B2 (en) 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10699444B2 (en) 2017-11-22 2020-06-30 Apple Inc Point cloud occupancy map compression
US10607373B2 (en) 2017-11-22 2020-03-31 Apple Inc. Point cloud compression with closed-loop color conversion
US10529086B2 (en) * 2017-11-22 2020-01-07 Futurewei Technologies, Inc. Three-dimensional (3D) reconstructions of dynamic scenes using a reconfigurable hybrid imaging system
US10909727B2 (en) 2018-04-10 2021-02-02 Apple Inc. Hierarchical point cloud compression with smoothing
US10909726B2 (en) 2018-04-10 2021-02-02 Apple Inc. Point cloud compression
US10939129B2 (en) 2018-04-10 2021-03-02 Apple Inc. Point cloud compression
US11010928B2 (en) 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US10853946B2 (en) * 2018-05-18 2020-12-01 Ebay Inc. Physical object boundary detection techniques and systems
US11010955B2 (en) * 2018-06-27 2021-05-18 Sony Group Corporation Point cloud mapping
US11017566B1 (en) 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11202098B2 (en) * 2018-07-05 2021-12-14 Apple Inc. Point cloud compression with multi-resolution video encoding
US11138762B2 (en) * 2018-07-11 2021-10-05 Samsung Electronics Co., Ltd. Visual quality of video based point cloud compression using one or more additional patches
US11012713B2 (en) 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
EP3824632A1 (en) * 2018-07-18 2021-05-26 Telefonaktiebolaget Lm Ericsson (Publ) Video-based coding of point cloud occcupancy map
US11178373B2 (en) 2018-07-31 2021-11-16 Intel Corporation Adaptive resolution of point cloud and viewpoint prediction for video streaming in computing environments
US11212506B2 (en) 2018-07-31 2021-12-28 Intel Corporation Reduced rendering of six-degree of freedom video
US11386524B2 (en) 2018-09-28 2022-07-12 Apple Inc. Point cloud compression image padding
US11367224B2 (en) * 2018-10-02 2022-06-21 Apple Inc. Occupancy map block-to-patch information compression
US11430155B2 (en) 2018-10-05 2022-08-30 Apple Inc. Quantized depths for projection point cloud compression
US11057631B2 (en) * 2018-10-10 2021-07-06 Intel Corporation Point cloud coding standard conformance definition in computing environments
DE102019127349A1 (de) * 2018-10-10 2020-04-16 Intel Corporation Punktwolkencodierungsstandard-konformitätsdefintion in computerumgebungen
US11284091B2 (en) * 2019-03-25 2022-03-22 Apple Inc. Video based point cloud compression-patch alignment and size determination in bounding box
US11348284B2 (en) * 2019-01-08 2022-05-31 Apple Inc. Auxiliary information signaling and reference management for projection-based point cloud compression
US11956478B2 (en) * 2019-01-09 2024-04-09 Tencent America LLC Method and apparatus for point cloud chunking for improved patch packing and coding efficiency
CN113748681B (zh) * 2019-01-09 2024-04-26 腾讯美国有限责任公司 动态点云分区打包方法、装置和电子设备
US11190803B2 (en) 2019-01-18 2021-11-30 Sony Group Corporation Point cloud coding using homography transform
KR20210134391A (ko) * 2019-03-12 2021-11-09 후아웨이 테크놀러지 컴퍼니 리미티드 포인트 클라우드 코딩을 위한 패치 데이터 유닛 코딩 및 디코딩
US11057564B2 (en) 2019-03-28 2021-07-06 Apple Inc. Multiple layer flexure for supporting a moving image sensor
CN111901601B (zh) * 2019-05-06 2023-03-31 上海交通大学 动态点云数据传输中的不等差错保护的码率分配方法
CN113785590A (zh) * 2019-05-10 2021-12-10 松下电器(美国)知识产权公司 三维数据编码方法、三维数据解码方法、三维数据编码装置及三维数据解码装置
US11581022B2 (en) * 2019-05-29 2023-02-14 Nokia Technologies Oy Method and apparatus for storage and signaling of compressed point clouds
US11210813B2 (en) * 2019-05-30 2021-12-28 Tencent America LLC Method and apparatus for point cloud compression
US11461932B2 (en) 2019-06-11 2022-10-04 Tencent America LLC Method and apparatus for point cloud compression
US11711544B2 (en) * 2019-07-02 2023-07-25 Apple Inc. Point cloud compression with supplemental information messages
WO2021025392A1 (ko) * 2019-08-02 2021-02-11 엘지전자 주식회사 포인트 클라우드 데이터 처리 장치 및 방법
US11210815B2 (en) 2019-08-09 2021-12-28 Intel Corporation Point cloud playback mechanism
US20220312035A1 (en) * 2019-09-11 2022-09-29 Sony Group Corporation Information processing apparatus, information processing method, reproduction processing apparatus, and reproduction processing method
US11895301B2 (en) * 2019-09-24 2024-02-06 Interdigital Ce Patent Holdings, Sas Encoding and decoding a point cloud using patches for in-between samples
US11627314B2 (en) 2019-09-27 2023-04-11 Apple Inc. Video-based point cloud compression with non-normative smoothing
US11562507B2 (en) 2019-09-27 2023-01-24 Apple Inc. Point cloud compression using video encoding with time consistent patches
US11538196B2 (en) 2019-10-02 2022-12-27 Apple Inc. Predictive coding for point cloud compression
KR102295825B1 (ko) * 2019-10-03 2021-08-31 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US11895307B2 (en) 2019-10-04 2024-02-06 Apple Inc. Block-based predictive coding for point cloud compression
CN112995758B (zh) * 2019-12-13 2024-02-06 鹏城实验室 点云数据的编码方法、解码方法、存储介质及设备
CN110897642A (zh) * 2019-12-26 2020-03-24 昆山杜克大学 一种3d测量并监测人体头围增长的系统与方法
US11585923B2 (en) * 2019-12-30 2023-02-21 GM Cruise Holdings LLC. Point cloud registration for LiDAR labeling
EP4085634A4 (en) * 2020-01-02 2024-01-10 Nokia Technologies Oy METHOD, APPARATUS AND COMPUTER PROGRAM PRODUCT FOR CODING AND DECODING VOLUMETRIC VIDEOS
EP4085633A4 (en) * 2020-01-02 2024-01-03 Nokia Technologies Oy APPARATUS, METHOD AND COMPUTER PROGRAM FOR VOLUMETRIC VIDEO
EP4068789A4 (en) 2020-01-07 2023-01-04 LG Electronics Inc. POINT CLOUD DATA TRANSMITTER DEVICE, POINT CLOUD DATA TRANSMITTER METHOD, POINT CLOUD DATA RECEIVE DEVICE AND POINT CLOUD DATA RECEIVE METHOD
US11798196B2 (en) 2020-01-08 2023-10-24 Apple Inc. Video-based point cloud compression with predicted patches
CN114930813B (zh) * 2020-01-08 2024-03-26 Lg电子株式会社 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
US11625866B2 (en) 2020-01-09 2023-04-11 Apple Inc. Geometry encoding using octrees and predictive trees
CN113538605A (zh) * 2020-04-13 2021-10-22 财团法人工业技术研究院 编码和译码点云的电子装置和方法
US20210319592A1 (en) * 2020-04-13 2021-10-14 Industrial Technology Research Institute Electronic device and method for encoding and decoding point cloud
WO2021210743A1 (ko) * 2020-04-14 2021-10-21 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021215811A1 (ko) * 2020-04-24 2021-10-28 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US11615557B2 (en) 2020-06-24 2023-03-28 Apple Inc. Point cloud compression using octrees with slicing
US11620768B2 (en) 2020-06-24 2023-04-04 Apple Inc. Point cloud geometry compression using octrees with multiple scan orders
US11467276B2 (en) 2020-08-25 2022-10-11 Volkswagen Aktiengesellschaft Live point cloud compression with egomotion propagation
US11967120B2 (en) * 2020-08-26 2024-04-23 Tencent America LLC Attribute coding of duplicate points for point cloud coding
EP3979651A1 (en) * 2020-09-30 2022-04-06 Koninklijke Philips N.V. Encoding and decoding immersive video
US11948338B1 (en) 2021-03-29 2024-04-02 Apple Inc. 3D volumetric content encoding using 2D videos and simplified 3D meshes
CN113284248B (zh) * 2021-06-10 2022-11-15 上海交通大学 一种点云有损压缩的编解码方法、装置和系统
CN115804581B (zh) * 2021-09-15 2023-12-15 深圳先进技术研究院 心率特征的测量方法、症状检测方法及相关设备
CN118302793A (zh) * 2021-11-23 2024-07-05 Oppo广东移动通信有限公司 几何点云编码

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6525722B1 (en) 1995-08-04 2003-02-25 Sun Microsystems, Inc. Geometry compression for regular and irregular mesh structures
US6438266B1 (en) 1998-08-27 2002-08-20 Lucent Technologies Inc. Encoding images of 3-D objects with improved rendering time and transmission processes
US6970510B1 (en) * 2000-04-25 2005-11-29 Wee Susie J Method for downstream editing of compressed video
CA2373707A1 (en) * 2001-02-28 2002-08-28 Paul Besl Method and system for processing, compressing, streaming and interactive rendering of 3d color image data
US6701006B2 (en) * 2002-06-26 2004-03-02 Nextengine, Inc. Apparatus and method for point cloud assembly
US8731313B2 (en) * 2009-03-23 2014-05-20 Level Set Systems, Inc. Method and apparatus for accurate compression and decompression of three-dimensional point cloud data
US20140092439A1 (en) * 2012-09-28 2014-04-03 Scott A. Krig Encoding images using a 3d mesh of polygons and corresponding textures
WO2014110642A1 (en) * 2013-01-15 2014-07-24 Imax Corporation Image frames multiplexing method and system
EP3143774A4 (en) * 2014-05-13 2018-04-25 PCP VR Inc. Method, system and apparatus for generation and playback of virtual reality multimedia
US9734595B2 (en) 2014-09-24 2017-08-15 University of Maribor Method and apparatus for near-lossless compression and decompression of 3D meshes and point clouds
US20170214943A1 (en) * 2016-01-22 2017-07-27 Mitsubishi Electric Research Laboratories, Inc. Point Cloud Compression using Prediction and Shape-Adaptive Transforms
US10482196B2 (en) * 2016-02-26 2019-11-19 Nvidia Corporation Modeling point cloud data using hierarchies of Gaussian mixture models
US9787321B1 (en) 2016-11-17 2017-10-10 Google Inc. Point cloud data compression using a space-filling curve
US10776111B2 (en) * 2017-07-12 2020-09-15 Topcon Positioning Systems, Inc. Point cloud data method and apparatus
US10909725B2 (en) * 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
US10726299B2 (en) * 2017-10-12 2020-07-28 Sony Corporation Sorted geometry with color clustering (SGCC) for point cloud compression

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102403501B1 (ko) * 2020-12-10 2022-05-30 한밭대학교 산학협력단 3차원 데이터 부호화 방법 및 장치
KR20230052923A (ko) * 2021-07-20 2023-04-20 텐센트 아메리카 엘엘씨 비디오 기반 포인트 클라우드 코딩을 위한 고속 패치 생성

Also Published As

Publication number Publication date
CN111247562B (zh) 2023-10-03
WO2019078696A1 (en) 2019-04-25
EP3665658A4 (en) 2020-07-22
US10424083B2 (en) 2019-09-24
CN111247562A (zh) 2020-06-05
EP3665658B1 (en) 2023-05-31
EP3665658A1 (en) 2020-06-17
US20190122393A1 (en) 2019-04-25

Similar Documents

Publication Publication Date Title
EP3665658B1 (en) Point cloud compression using hybrid transforms
US11138762B2 (en) Visual quality of video based point cloud compression using one or more additional patches
US10853974B2 (en) Point cloud compression using non-orthogonal projection
US10783668B2 (en) Handling duplicate points in point cloud compression
US11348283B2 (en) Point cloud compression via color smoothing of point cloud prior to texture video generation
US11514613B2 (en) Point cloud and mesh compression using image/video codecs
US11373338B2 (en) Image padding in video-based point-cloud compression CODEC
US10916041B2 (en) Method for depth image di coding
CN110892453B (zh) 使用图像/视频编解码器的点云和网格压缩
US20220164994A1 (en) Overlapped patches for mesh coding for video based point cloud compression
US11095908B2 (en) Point cloud compression using interpolation
US11665372B2 (en) Fast projection method in video-based point cloud compression codecs
US11216984B2 (en) Patch splitting for improving video-based point cloud compression performance
US11210812B2 (en) Single-pass boundary detection in video-based point cloud compression
US11922663B2 (en) Decision-making rules for attribute smoothing
US10964067B2 (en) Visual quality enhancement of reconstructed point clouds via color smoothing
US10944991B2 (en) Prediction for matched patch index coding
US11039115B2 (en) Low complexity color smoothing of reconstructed point clouds
US20220058833A1 (en) Complexity reduction of video-based point cloud compression encoding using grid-based segmentation

Legal Events

Date Code Title Description
A201 Request for examination