KR20230017301A - 포인트 클라우드 코딩을 위한 거리 기반 가중 평균을 계산하는 방법 및 장치 - Google Patents

포인트 클라우드 코딩을 위한 거리 기반 가중 평균을 계산하는 방법 및 장치 Download PDF

Info

Publication number
KR20230017301A
KR20230017301A KR1020227046110A KR20227046110A KR20230017301A KR 20230017301 A KR20230017301 A KR 20230017301A KR 1020227046110 A KR1020227046110 A KR 1020227046110A KR 20227046110 A KR20227046110 A KR 20227046110A KR 20230017301 A KR20230017301 A KR 20230017301A
Authority
KR
South Korea
Prior art keywords
point
point cloud
transform
distance
current point
Prior art date
Application number
KR1020227046110A
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 KR20230017301A publication Critical patent/KR20230017301A/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/02Digital function generators
    • G06F1/03Digital function generators working, at least partly, by table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/535Dividing only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/004Predictors, e.g. intraframe, interframe coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Remote Sensing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Analysis (AREA)

Abstract

본 개시의 측면은 포인트 클라우드 압축 및 압축해제를 위한 방법 및 장치를 제공한다. 일부 예에서, 포인트 클라우드 압축/압축해제를 위한 장치는 처리 회로를 포함한다. 처리 회로는 포인트 클라우드의 현재 포인트와 연관된 정보를 코딩(인코딩/디코딩)하기 위해 예측 모드를 사용하기로 결정한다. 예측 모드에서는 현재 포인트의 하나 이상의 이웃 포인트에 기반하여 현재 포인트와 연관된 정보를 예측한다. 처리 회로는 정수 연산을 사용하여, 하나 이상의 이웃 포인트에서 현재 포인트까지의 거리에 기반하여 거리 기반 가중 평균 값을 계산하고, 거리 기반 가중 평균 값에 기반하여 현재 포인트와 연관된 정보를 결정한다.

Description

포인트 클라우드 코딩을 위한 거리 기반 가중 평균을 계산하는 방법 및 장치
본 출원은 2021년 6월 8일에 출원되고 명칭이 "포인트 클라우드 코딩을 위한 거리 기반 가중 평균을 계산하는 방법 및 장치"인 미국 가출원 번호 제63/208,340호에 대한 우선권을 주장하는, 2022년 5월 23일에 출원되고 명칭이 "포인트 클라우드 코딩을 위한 거리 기반 가중 평균을 계산하는 방법 및 장치"인 미국 특허 출원 번호 제17/751,413호에 대한 우선권을 주장하는 바이다. 이전 출원의 개시는 그 전체가 본 명세서에 참고로 포함된다.
본 개시는 일반적으로 포인트 클라우드 코딩(point cloud coding)과 연관된 실시예를 설명한다.
여기에서 제공된 배경 설명은 본 개시의 맥락을 일반적으로 제시하기 위한 것이다. 현재 명명된 발명가의 작업(work)은 이 배경 섹션에 설명된 한도 내에서 그리고 출원 당시 선행 기술로 자격이 없는 설명의 측면은 명시적으로나 묵시적으로 본 개시의 선행 기술로 인정되지 않는다.
세계(world) 속의 객체, 세계 속의 환경 등과 같은 세계를 3차원(3-dimensional, 3D) 공간에 캡처하고 표현하기 위한 다양한 기술들이 개발되고 있다. 세계의 3D 표현은 보다 몰입적인 형태의 상호 작용 및 커뮤니케이션을 가능하게 한다. 포인트 클라우드는 세계의 3D 표현으로 사용될 수 있다. 포인트 클라우드는 3D 공간의 포인트 세트로, 각각 속성 예를 들어, 색상, 재질 속성, 텍스처 정보, 강도(intensity) 속성, 반사 속성, 모션 관련 속성, 양식(modality) 속성 및 기타 다양한 속성과 연관된다. 이러한 포인트 클라우드에는 많은 양의 데이터가 포함될 수 있으며, 저장하고 전송하는 데 많은 비용과 시간이 소요될 수 있다.
본 개시의 측면은 포인트 클라우드 압축 및 압축해제를 위한 방법 및 장치를 제공한다. 일부 예에서, 포인트 클라우드 압축/압축해제를 위한 장치는 처리 회로를 포함한다. 처리 회로는 포인트 클라우드의 현재 포인트와 연관된 정보를 코딩하기 위해 예측 모드를 사용하도록 결정한다. 현재 포인트와 연관된 정보는 예측 모드에서 현재 포인트의 하나 이상의 이웃 포인트에 기반하여 예측된다. 처리 회로는 정수 연산을 사용하여 하나 이상의 이웃 포인트에서 현재 포인트까지의 거리에 기반하여 거리 기반 가중 평균 값(distance based weighted average value)을 계산하고, 거리 기반 가중 평균 값에 기반하여 현재 포인트와 연관된 정보를 결정한다.
일 예에서, 현재 포인트와 연관된 정보는 현재 포인트의 지오메트리(geometry) 정보이다. 또 다른 예에서, 현재 포인트와 연관된 정보는 현재 포인트의 속성 정보이다.
거리 기반 가중 평균 값을 계산하기 위해, 일부 예에서, 처리 회로는 가중치 계산(weight calculation)에서 부동 소수점 데이터 유형(floating point data type)의 사용을 제외한다. 일부 예에서, 처리 회로는 피제수(dividend)를 제수(divisor)로 나누는 정수 나누기 연산에 기반하여 제1 이웃 포인트의 가중 정보에(weighting information) 대한 제1 변환 가중치(converted weight)를 계산한다. 피제수는 절대값이 1보다 큰 정수이며, 제수는 제1 이웃 포인트와 현재 포인트 사이의 거리에 기반한다. 일부 예에서, 처리 회로는 비트별 좌측 시프트(bitwise left shift)에 기반하여 피제수를 획득한다. 일부 예에서, 처리 회로는 비트별 좌측 시프트에 의해 획득된 제1 정수와 제수의 비트별 우측 시프트(bitwise right shift)에 의해 획득된 제2 정수의 합에 기반하여 피제수를 결정한다.
일부 예에서, 처리 회로는 하나 이상의 이웃 포인트의 가중 속성(weighted attribute)의 합을 계산한다. 가중 속성 중 제1 가중 속성은 제1 이웃 포인트와 연관되며, 제1 이웃 포인트와 연관된 제1 속성과 제1 변환 가중치의 곱셈에 기반하여 계산된다. 처리 회로는 하나 이상의 이웃 포인트와 연관된 변환 가중치의 합을 계산한다. 변환 가중치는 제1 변환 가중치를 포함한다. 처리 회로는 가중 속성의 합을 변환 가중치의 합으로 나눈 값에 기반하여 거리 기반 가중 평균 값을 결정한다.
일부 예에서, 처리 회로는 제1 속성 및 제1 변환 가중치에 기반한 룩업 작동(lookup operation)에 응답하여 룩업 테이블로부터 출력되는 제1 가중 속성을 수신한다.
일부 예에서, 처리 회로는 변환 가중치 중 적어도 하나가 상한(upper limit)보다 큰 것에 응답하여 변환 가중치를 각각 다운스케일링한다(downscale).
일 예에서, 처리 회로는 변환 가중치의 합이 0인 것에 응답하여 하나 이상의 이웃 포인트 중 가장 가까운 이웃 포인트에 기반하여 현재 포인트와 연관된 속성 값을 결정한다.
다른 예에서, 처리 회로는 변환 가중치의 합이 0인 것에 응답하여 하나 이상의 이웃 포인트의 속성 값의 평균에 기반하여 현재 포인트와 연관된 속성 값을 결정한다.
일부 예에서, 처리 회로는 변환 모델에 따라 거리에 기반한 가중치를 계산하고, 정수 연산을 사용하여 가중치에 기반한 거리 기반 가중 평균 값을 계산한다. 변환 모델은 선형 모델, 이차 모델(quadratic model) 및 비선형 모델 중 하나일 수 있다.
본 개시의 측면은 또한 포인트 클라우드 인코딩/디코딩을 위해 컴퓨터에 의해 실행될 때, 컴퓨터가 포인트 클라우드 인코딩/디코딩을 위한 방법 중 어느 하나 또는 조합을 수행하게 하는 명령어를 저장하는, 컴퓨터가 판독 가능한 비일시적 매체를 제공한다.
개시된 주제의 추가 특징, 특성 및 다양한 장점은 다음의 상세한 설명 및 첨부된 도면으로부터 더욱 명백해질 것이다:
도 1은 일 실시예에 따른 통신 시스템의 단순화된 블록도의 개략도이다.
도 2는 일 실시예에 따른 스트리밍 시스템의 단순화된 블록도의 개략도이다.
도 3은 일부 실시예에 따른 포인트 클라우드 프레임을 인코딩하기 위한 인코더의 블록도를 도시한다.
도 4는 일부 실시예에 따라 포인트 클라우드 프레임에 대응하는 압축된 비트스트림을 디코딩하기 위한 디코더의 블록도를 도시한다.
도 5는 일 실시예에 따른 비디오 디코더의 단순화된 블록도의 개략도이다.
도 6은 일 실시예에 따른 비디오 인코더의 단순화된 블록도의 개략도이다.
도 7은 일부 실시예에 따른 포인트 클라우드 프레임을 인코딩하기 위한 인코더의 블록도를 도시한다.
도 8은 일부 실시예에 따른 포인트 클라우드 프레임에 대응하는 압축된 비트스트림을 디코딩하기 위한 디코더의 블록도를 도시한다.
도 9는 본 개시의 일부 실시예에 따른 옥트리 파티션 기법에 기반한 입방체의 파티션을 예시하는 도면을 도시한다.
도 10은 본 개시의 일부 실시예에 따른 옥트리 파티션 및 옥트리 파티션에 대응하는 옥트리 구조의 예를 도시한다.
도 11은 3개의 쿼드트리 파티션 예를 도시한다.
도 12는 3개의 이진트리 파티션 예를 도시한다.
도 13은 너비 우선 코딩 순서를 예시하는 옥트리 구조의 도면을 도시한다.
도 14는 깊이 우선 코딩 순서를 예시하는 옥트리 구조의 도면을 도시한다.
도 15는 예측 트리 예를 도시한다.
도 16은 인코더 측에서의 리프팅 기반 속성 코딩에서 직접/순방향 변환 아키텍처를 사용하는 도면을 도시한다.
도 17은 디코더 측에서의 리프팅 기반 속성 코딩에서 역변환 아키텍처를 사용하는 도면을 도시한다.
도 18은 RAHT(Region Adaptive Hierarchical Transform) 순방향 변환 아키텍처의 도면과 RAHT 역변환 아키텍처의 도면을 도시한다.
도 19는 일부 실시예에 따른 프로세스 예를 요약한 흐름도를 도시한다.
도 20은 일 실시예에 따른 컴퓨터 시스템의 개략도이다.
본 개시의 측면은 포인트 클라우드 코딩(point cloud coding, PCC) 기술을 제공한다. PCC는 G-PCC라고 하는 지오메트리 기반 방식, V-PCC라고 하는 비디오 코딩 기반 방식 등과 같은 다양한 방식으로 수행될 수 있다. 본 개시의 일부 측면에 따르면, G-PCC는 3D 지오메트리를 직접 인코딩하고, 비디오 코딩과 공유할 것이 많지 않은 순수한 지오메트리 기반 접근법이며, V-PCC는 비디오 코딩에 크게 기반을 두고 있다. 예를 들어, V-PCC는 3D 클라우드의 포인트를 2D 그리드(이미지)의 픽셀로 매핑할 수 있다. V-PCC 방식은 포인트 클라우드 압축을 위해 일반 비디오 코덱을 활용할 수 있다. MPEG(Moving Picture Experts Group)는 G-PCC 방식과 V-PCC 방식을 각각 사용하는 G-PCC 표준과 V-PCC 표준을 연구하고 있다.
포인트 클라우드는 많은 애플리케이션에서 널리 사용될 수 있다. 예를 들어, 포인트 클라우드는 객체 검출 및 위치 파악을 위해 자율 주행 차량에 사용될 수 있으며; 포인트 클라우드는 매핑을 위해 지리 정보 시스템(geographic information system, GIS)에서 사용될 수 있으며, 문화 유산 객체 및 컬렉션 등을 시각화하고 보관하기 위해 문화 유산에서 사용될 수 있다.
이하에서, 포인트 클라우드는 일반적으로 3차원 공간에서의 포인트의 세트를 지칭할 수 있으며, 각각은 색상, 재료 속성, 텍스처 정보, 강도 속성, 반사 속성, 모션 관련 속성, 양식 속성 및 기타 다양한 속성과 같은 연관된 속성을 갖는다. 포인트 클라우드는 객체나 장면을 이러한 포인트의 구성(composition)으로 재구성하는 데 사용할 수 있다. 포인트는 다양한 설정(setup)에서 다수의 카메라, 깊이 센서 또는 LiDAR를 사용하여 캡처될 수 있으며, 재구성된 장면이나 객체를 사실적으로 표현하기 위해 수천에서 최대 수십억 개의 포인트로 구성될 수 있다. 패치(patch)는 일반적으로 포인트 클라우드에 의해 설명된 표면의 연속적인 서브세트를 참조할 수 있다. 일 예에서, 패치는 임계값 양보다 적게 서로로부터 벗어나는 표면 법선 벡터(surface normal vector)를 갖는 포인트를 포함한다.
압축 기술은 더 빠른 전송 또는 스토리지 감소를 위해 포인트 클라우드를 나타내는 데 필요한 데이터의 양을 줄일 수 있다. 이와 같이, 실시간 통신 및 6 자유도(six Degrees of Freedom, 6 DoF) 가상 현실에서 사용하기 위한 포인트 클라우드의 손실 압축 기술이 필요하다. 또한, 자율 주행 및 문화 유산 애플리케이션 등을 위한 동적 매핑의 맥락에서 무손실 포인트 클라우드 압축을 위한 기술이 모색된다.
본 개시의 일 측면에 따르면, V-PCC 배후의 주요 철학은 기존의 비디오 코덱을 활용하여 동적 포인트 클라우드의 지오메트리, 점유(occupancy) 및 텍스처를 3개의 개별 비디오 시퀀스로 압축하는 것이다. 3개의 비디오 시퀀스를 해석하는 데 필요한 추가 메타데이터는 별도로 압축된다. 전체 비트스트림의 작은 부분은 소프트웨어 구현을 사용하여 효율적으로 인코딩/디코딩할 수 있는 메타데이터이다. 대부분의 정보는 비디오 코덱에 의해 처리된다.
도 1은 본 개시의 실시예에 따른 통신 시스템(100)의 단순화된 블록도를 도시한다. 통신 시스템(100)은 예를 들어, 네트워크(150)를 통해 서로 통신할 수 있는 복수의 단말 디바이스를 포함한다. 예를 들어, 통신 시스템(100)은 네트워크(150)를 통해 상호 연결된 한 쌍의 단말 디바이스(110, 120)를 포함한다. 도 1의 예에서, 제1 단말 디바이스 쌍(110, 120)은 포인트 클라우드 데이터의 단방향 전송을 수행할 수 있다. 예를 들어, 단말 디바이스(110)는 단말 디바이스(110)와 연결된 센서(105)에 의해 캡처된 포인트 클라우드(예: 구조를 나타내는 포인트)를 압축할 수 있다. 압축된 포인트 클라우드는 예를 들어, 비트스트림의 형태로 네트워크(150)를 통해 다른 단말 디바이스(120)로 전송될 수 있다. 단말 디바이스(120)는 네트워크(150)로부터 압축된 포인트 클라우드를 수신하고, 비트스트림을 압축해제하여 포인트 클라우드를 재구성하며, 재구성된 포인트 클라우드를 적절하게 디스플레이할 수 있다. 단방향 데이터 전송은 애플리케이션 등을 제공하는 미디어에서 일반적일 수 있다.
도 1의 예에서, 단말 디바이스(110, 120)는 서버 및 개인용 컴퓨터로 예시될 수 있지만, 본 개시의 원리는 이에 제한되지 않을 수 있다. 본 개시의 실시예는 랩탑 컴퓨터, 태블릿 컴퓨터, 스마트폰, 게임 단말, 미디어 플레이어 및/또는 전용 3차원(three-dimensional, 3D) 장비를 사용한 애플리케이션을 찾는다. 네트워크(150)는 단말 디바이스(110)와 단말 디바이스(120) 사이에 압축된 포인트 클라우드를 전송하는 임의의 수의 네트워크를 나타낸다. 네트워크(150)는 예를 들어, 유선(wireline)(wired) 및/또는 무선 통신 네트워크를 포함할 수 있다. 네트워크(150)는 회선 교환 및/또는 패킷 교환 채널에서 데이터를 교환할 수 있다. 대표적인 네트워크로는 전기통신망(telecommunications network), 근거리 통신망, 광역통신망 및/또는 인터넷 등이 있다. 본 논의의 목적을 위해, 네트워크(150)의 아키텍처 및 토폴로지는 아래에서 여기서 설명하지 않는 한 본 개시의 작동에 중요하지 않을 수 있다.
도 2는 일 실시예에 따른 스트리밍 시스템(200)의 단순화된 블록도를 예시한다. 도 2의 예는 포인트 클라우드에 대한 개시된 주제에 대한 애플리케이션이다. 개시된 주제는 3D 텔레프레즌스 애플리케이션, 가상 현실 애플리케이션 등과 같은 다른 포인트 클라우드 가능 애플리케이션(point cloud enabled application)에 동등하게 적용될 수 있다.
스트리밍 시스템(200)은 캡처 서브시스템(213)을 포함할 수 있다. 캡처 서브시스템(213)은 포인트 클라우드 소스(201), 예를 들어, LIDAR(Light Detection and Ranging) 시스템, 3D 카메라, 3D 스캐너, 소프트웨어에서 압축되지 않은 포인트 클라우드를 생성하는 그래픽 생성 컴포넌트, 그리고 예를 들어, 압축되지 않은 포인트 클라우드(202)를 생성하는 것 등을 포함할 수 있다. 일 예에서, 포인트 클라우드(202)는 3D 카메라에 의해 캡처된 포인트를 포함한다. 포인트 클라우드(202)는 압축된 포인트 클라우드(204)(압축된 포인트 클라우드의 비트스트림)와 비교할 때 높은 데이터 볼륨을 강조하기 위해 굵은 선으로 표시된다(depict). 압축된 포인트 클라우드(204)는 포인트 클라우드 소스(201)에 결합된 인코더(203)를 포함하는 전자 디바이스(220)에 의해 생성될 수 있다. 인코더(203)는 하드웨어, 소프트웨어 또는 이들의 조합을 포함하여, 아래에서 더 자세히 설명되는 바와 같이 개시된 주제의 측면을 가능하게 하거나 구현한다. 압축된 포인트 클라우드(204)(또는 압축된 포인트 클라우드(204)의 비트스트림)는 포인트 클라우드(202)의 스트림과 비교할 때 더 낮은 데이터 볼륨을 강조하기 위해 가는 선으로 표시되며, 향후 사용을 위해 스트리밍 서버(205)에 저장될 수 있다. 도 2의 클라이언트 서브시스템(206 및 208)과 같은 하나 이상의 스트리밍 클라이언트 서브시스템은, 스트리밍 서버(205)에 액세스하여 압축된 포인트 클라우드(204)의 사본(207 및 209)을 검색할 수 있다. 클라이언트 서브시스템(206)은 예를 들어, 전자 디바이스(230)에서의 디코더(210)를 포함할 수 있다. 디코더(210)는 압축된 포인트 클라우드의 입력되는 사본(207)을 디코딩하고, 렌더링 디바이스(212)에서 렌더링될 수 있는 재구성된 포인트 클라우드(211)의 출력 스트림을 생성한다.
전자 디바이스(220, 230)는 다른 컴포넌트(도시되지 않음)를 포함할 수 있음에 유의한다. 예를 들어, 전자 디바이스(220)는 디코더(도시되지 않음)를 포함할 수 있고, 전자 디바이스(230)도 인코더(도시되지 않음)를 포함할 수 있다.
일부 스트리밍 시스템에서, 압축된 포인트 클라우드(204, 207 및 209)(예: 압축된 포인트 클라우드의 비트스트림)는 특정 표준에 따라 압축될 수 있다. 일부 예에서, 비디오 코딩 표준은 포인트 클라우드의 압축에 사용된다. 이러한 표준의 예에는 HEVC(High Efficiency Video Coding), VVC(Versatile Video Coding) 등이 포함된다.
도 3은 일부 실시예에 따라 포인트 클라우드 프레임을 인코딩하기 위한 V-PCC 인코더(300)의 블록도를 도시한다. 일부 실시예에서, V-PCC 인코더(300)는 통신 시스템(100) 및 스트리밍 시스템(200)에서 사용될 수 있다. 예를 들어, 인코더(203)는 V-PCC 인코더(300)와 유사한 방식으로 구성되고 작동할 수 있다.
V-PCC 인코더(300)는 포인트 클라우드 프레임을 압축되지 않은 입력으로 수신하고, 압축된 포인트 클라우드 프레임에 대응하는 비트스트림을 생성한다. 일부 실시예에서, V-PCC 인코더(300)는 포인트 클라우드 소스(201) 등과 같은 포인트 클라우드 소스로부터 포인트 클라우드 프레임을 수신할 수 있다.
도 3의 예에서, V-PCC 인코더(300)는 패치 생성 모듈(306), 패치 패킹(packing) 모듈(308), 지오메트리 이미지 생성 모듈(310), 텍스처 이미지 생성 모듈(312), 패치 정보 모듈(304), 점유맵 모듈(314), 평활화(smoothing) 모듈(336), 이미지 패딩(padding) 모듈(316, 318), 그룹 확장(dilation) 모듈(320), 비디오 압축 모듈(322, 323 및 332), 보조(auxiliary) 패치 정보 압축 모듈(338), 엔트로피 압축 모듈(334) 및 다중화기(324)를 포함한다.
본 개시의 일 측면에 따르면, V-PCC 인코더(300)는 압축된 포인트 클라우드를 압축해제된 포인트 클라우드로 변환하는 데 사용되는 일부 메타 데이터(예: 점유맵 및 패치 정보)와 함께 3D 포인트 클라우드 프레임을 이미지 기반 표현(image-based representation)으로 변환한다. 일부 예에서, V-PCC 인코더(300)는 3D 포인트 클라우드 프레임을 지오메트리 이미지, 텍스처 이미지 및 점유맵으로 변환한 다음, 비디오 코딩 기술을 사용하여 지오메트리 이미지, 텍스처 이미지 및 점유맵을 비트스트림으로 인코딩할 수 있다. 일반적으로 지오메트리 이미지는 픽셀에 투영된 포인트와 연관된 지오메트리 값으로 채워진 픽셀을 갖는 2D 이미지이며, 지오메트리 값으로 채워진 픽셀을 지오메트리 샘플이라고 할 수 있다. 텍스처 이미지는 픽셀에 투영된 포인트와 연관된 텍스처 값으로 채워진 픽셀을 갖는 2D 이미지이며, 텍스처 값으로 채워진 픽셀을 텍스처 샘플이라고 할 수 있다. 점유맵은 패치가 점유 또는 점유하지 않음을 지시하는(indicate) 값으로 채워진 픽셀을 갖는 2D 이미지이다.
패치 생성 모듈(306)은 포인트 클라우드를 패치 세트(예: 패치는 포인트 클라우드에 의해 설명된 표면의 연속적인 서브세트로 정의됨)로 분할하며, 이는 각각 중첩되거나 중첩되지 않을 수 있으므로, 각 패치는 2D 공간에서 평면에 대한 깊이 필드로 설명될 수 있다. 일부 실시예에서, 패치 생성 모듈(306)은 포인트 클라우드를 매끄러운 경계를 갖는 최소 개수의 패치로 분해하는 동시에 재구성 에러를 최소화하는 것을 목표로 한다.
패치 정보 모듈(304)은 패치의 크기와 모양을 지시하는 패치 정보를 수집할 수 있다. 일부 예에서, 패치 정보는 압축된 보조 패치 정보를 생성하기 위해, 이미지 프레임으로 패킹된 다음 보조 패치(auxiliary patch) 정보 압축 모듈(338)에 의해 인코딩된다.
패치 패킹 모듈(308)은 사용되지 않은 공간을 최소화하고 그리드의 모든
Figure pct00001
(예: 16×16) 블록이 고유한 패치와 연관되는 것을 보장하면서, 추출된 패치를 이차원(2 dimensional, 2D) 그리드로 매핑하도록 구성된다. 효율적인 패치 패킹은 사용되지 않는 공간을 최소화하거나 시간적 일관성을 보장함으로써 압축 효율성에 직접적인 영향을 미칠 수 있다.
지오메트리 이미지 생성 모듈(310)은 주어진 패치 위치에서 포인트 클라우드의 지오메트리와 연관된 2D 지오메트리 이미지를 생성할 수 있다. 텍스처 이미지 생성 모듈(312)은 주어진 패치 위치에서 포인트 클라우드의 텍스처와 연관된 2D 텍스처 이미지를 생성할 수 있다. 지오메트리 이미지 생성 모듈(310) 및 텍스처 이미지 생성 모듈(312)은 포인트 클라우드의 지오메트리 및 텍스처를 이미지로 저장하기 위해 패킹 프로세스 동안 계산된 3D-2D 매핑을 이용한다. 다수의 포인트가 동일한 샘플에 투영되는 경우를 더 잘 처리하기 위해, 각 패치는 레이어(layer)라고 하는 두 이미지에 투영된다. 일 예에서, 지오메트리 이미지는 YUV420-8비트 형식의 W×H 단색 프레임으로 표현된다. 텍스처 이미지를 생성하기 위해, 텍스처 생성 절차는 재샘플링된 포인트와 연관될 색상을 계산하기 위해 재구성된/평활화된 지오메트리를 이용한다.
점유맵 모듈(314)은 각 유닛에서의 패딩 정보를 설명하는 점유맵을 생성할 수 있다. 예를 들어, 점유 이미지는 셀이 빈 공간에 속하는지 포인트 클라우드에 속하는지를 그리드의 각 셀에 대해 지시하는 이진 맵을 포함한다. 일 예에서, 점유맵은 각 픽셀에 대해 픽셀이 패딩되었는지를 설명하는 이진 정보를 사용한다. 다른 예에서, 점유맵은 각 픽셀의 블록에 대해 픽셀의 블록이 패딩되었는지를 설명하는 이진 정보를 사용한다.
점유맵 모듈(314)에 의해 생성된 점유맵은 무손실 코딩 또는 손실 코딩을 사용하여 압축될 수 있다. 무손실 코딩을 사용할 때, 엔트로피 압축 모듈(334)을 사용하여 점유맵을 압축한다. 손실 코딩을 사용할 때, 비디오 압축 모듈(332)을 사용하여 점유맵을 압축한다.
패치 패킹 모듈(308)은 이미지 프레임에 패킹된 2D 패치 사이에 약간의 빈 공간을 남길 수 있다는 점에 유의한다. 이미지 패딩 모듈(316, 318)은 2D 비디오 및 이미지 코덱에 적합할 수 있는 이미지 프레임을 생성하기 위해 빈 공간(패딩이라고 함)을 채울 수 있다. 이미지 패딩은 중복(redundant) 정보로 사용하지 않은 공간을 채울 수 있는 배경 채우기(background filling)라고도 지칭된다. 일부 예에서, 좋은 배경 채우기는 패치 경계 주변에 상당한 코딩 왜곡을 도입하지 않으면서 비트 레이트(bit rate)를 최소한으로 증가시킨다.
비디오 압축 모듈(322, 323, 332)은 패딩된 지오메트리 이미지, 패딩된 텍스처 이미지, 점유맵과 같은 2D 이미지를 HEVC 및 VVC 등과 같은 적절한 비디오 코딩 표준에 기반하여 인코딩할 수 있다. 일 예에서, 비디오 압축 모듈(322, 323, 332)은 개별적으로 작동하는 개별 컴포넌트이다. 비디오 압축 모듈(322, 323, 332)은 다른 예에서, 단일 컴포넌트로 구현될 수 있음에 유의한다.
일부 예에서, 평활화 모듈(336)은 재구성된 지오메트리 이미지의 평활화된 이미지(smoothed image)를 생성하도록 구성된다. 평활화된 이미지는 텍스처 이미지 생성(312)에 제공될 수 있다. 그다음 텍스처 이미지 생성(312)은 재구성된 지오메트리 이미지에 기반하여 텍스처 이미지의 생성을 조정할 수 있다. 예를 들어, 인코딩 및 디코딩 중에 패치 모양(예: 지오메트리)이 약간 왜곡된 경우, 패치 모양의 왜곡을 보정하기 위해 텍스처 이미지를 생성할 때 왜곡을 고려할 수 있다.
일부 실시예에서, 그룹 확장(320)은 재구성된 포인트 클라우드의 시각적 품질뿐만 아니라 코딩 이득을 개선하기 위해, 중복 저주파 콘텐츠로 객체 경계 주변의 픽셀을 패딩하도록 구성된다.
다중화기(324)는 압축된 지오메트리 이미지, 압축된 텍스처 이미지, 압축된 점유맵, 압축된 보조 패치 정보를 압축된 비트스트림으로 다중화할 수 있다.
도 4는 일부 실시예에 따라 포인트 클라우드 프레임에 대응하는 압축된 비트스트림을 디코딩하기 위한 V-PCC 디코더(400)의 블록도를 도시한다. 일부 실시예에서, V-PCC 디코더(400)는 통신 시스템(100) 및 스트리밍 시스템(200)에서 사용될 수 있다. 예를 들어, 디코더(210)는 V-PCC 디코더(400)와 유사한 방식으로 작동하도록 구성될 수 있다. V-PCC 디코더(400)는 압축된 비트스트림을 수신하고 압축된 비트스트림에 기반하여 재구성된 포인트 클라우드를 생성한다.
도 4의 예에서, V-PCC 디코더(400)는 역다중화기(432), 비디오 압축해제 모듈(434 및 436), 점유맵 압축해제 모듈(438), 보조 패치 정보 압축해제 모듈(442), 지오메트리 재구성 모듈(444), 평활화 모듈(446), 텍스처 재구성 모듈(448) 및 색상 평활화 모듈(452)을 포함한다.
역다중화기(432)는 압축된 비트스트림을 수신하여 압축된 텍스처 이미지, 압축된 지오메트리 이미지, 압축된 점유맵 및 압축된 보조 패치 정보로 분리할 수 있다.
비디오 압축해제 모듈(434, 436)은 적절한 표준(예: HEVC, VVC 등)에 따라 압축된 이미지를 디코딩하고 압축해제된 이미지를 출력할 수 있다. 예를 들어, 비디오 압축해제 모듈(434)은 압축된 텍스처 이미지를 디코딩하고 압축해제된 텍스처 이미지를 출력하며; 비디오 압축해제 모듈(436)은 압축된 지오메트리 이미지를 디코딩하고 압축해제된 지오메트리 이미지를 출력한다.
점유맵 압축해제 모듈(438)은 적합한 표준(예: HEVC, VVC 등)에 따라 압축된 점유맵을 디코딩하고 압축해제된 점유맵을 출력할 수 있다.
보조 패치 정보 압축해제 모듈(442)은 적합한 표준(예: HEVC, VVC 등)에 따라 압축된 보조 패치 정보를 디코딩하고 압축해제된 보조 패치 정보를 출력할 수 있다.
지오메트리 재구성 모듈(444)은 압축해제된 지오메트리 이미지를 수신하고, 압축해제된 점유맵 및 압축해제된 보조 패치 정보에 기반하여 재구성된 포인트 클라우드 지오메트리를 생성할 수 있다.
평활화 모듈(446)은 패치의 가장자리에서 부조화(incongruence)를 평활화할 수 있다. 평활화 절차는 압축 아티팩트로 인해 패치 경계에서 발생할 수 있는 잠재적 불연속성을 완화하는 것을 목표로 한다. 일부 실시예에서, 평활화 필터는 압축/압축해제에 의해 야기될 수 있는 왜곡을 완화하기 위해 패치 경계에 위치한 픽셀에 적용될 수 있다.
텍스처 재구성 모듈(448)은 압축해제된 텍스처 이미지 및 평활화 지오메트리에 기반하여 포인트 클라우드의 포인트에 대한 텍스처 정보를 결정할 수 있다.
색상 평활화 모듈(452)은 색상의 부조화를 평활화할 수 있다. 3D 공간에서 이웃하지 않는 패치는 종종 2D 비디오에서 서로 옆에 패킹된다. 일부 예에서, 이웃하지 않는 패치로부터의 픽셀 값은 블록 기반 비디오 코덱에 의해 혼합될 수 있다. 색상 평활화의 목표는 패치 경계에 나타나는 시각적 아티팩트를 줄이는 것이다.
도 5는 본 개시의 실시예에 따른 비디오 디코더(510)의 블록도를 도시한다. 비디오 디코더(510)는 V-PCC 디코더(400)에 사용될 수 있다. 예를 들어, 비디오 압축해제 모듈(434 및 436), 점유맵 압축해제 모듈(438)은 비디오 디코더(510)와 유사하게 구성될 수 있다.
비디오 디코더(510)는 코딩된 비디오 시퀀스와 같은 압축 이미지로부터 심볼(521)을 재구성하는 파서(520)를 포함할 수 있다. 이러한 심볼의 카테고리에는 비디오 디코더(510)의 작동을 관리하는 데 사용되는 정보가 포함된다. 파서(520)는 수신된 코딩된 비디오 시퀀스를 파싱/엔트로피-디코딩할 수 있다. 코딩된 비디오 시퀀스의 코딩은 비디오 코딩 기술 또는 표준에 따를 수 있고, 가변 길이 코딩, 허프만 코딩, 콘텍스트 민감성을 포함하거나 포함하지 않는 산술 코딩 등을 포함하는 다양한 원리를 따를 수 있다. 파서(520)는 그룹에 대응하는 적어도 하나의 파라미터에 기반하여, 비디오 디코더의 픽셀의 서브그룹 중 적어도 하나에 대한 서브그룹 파라미터 세트를 코딩된 비디오 시퀀스로부터 추출할 수 있다. 서브그룹에는 GOP(Group of Picture), 픽처, 타일, 슬라이스, 매크로블록, CU(Coding Unit), 블록, TU(Transform Unit), PU(Prediction Unit) 등이 포함될 수 있다. 파서(520)는 또한 코딩된 비디오 시퀀스 정보로부터 변환 계수, 양자화 파라미터 값, 모션 벡터 등을 추출할 수 있다.
파서(520)는 버퍼 메모리로부터 수신한 비디오 시퀀스에 대해 엔트로피 디코딩/파싱 작동을 수행하여 심볼(521)을 생성할 수 있다.
심볼의 재구성(521)은 코딩된 비디오 픽처 또는 그 부분(예: 인터 및 인트라 픽처, 인터 및 인트라 블록)의 유형 및 기타 요인(factor)에 따라 다수의 상이한 유닛을 수반할 수 있다. 어떤 유닛이 관련되고 어떻게 관련되는지는 파서(520)에 의해 코딩된 비디오 시퀀스로부터 파싱된 서브그룹 제어 정보에 의해 제어될 수 있다. 파서(520)와 다수의 유닛 사이의 이러한 서브그룹 제어 정보의 흐름은 아래에서 명확성을 위해 묘사되지 않는다.
이미 언급한 기능 블록 외에, 비디오 디코더(510)는 개념적으로 후술하는 바와 같이 다수의 기능 유닛으로 세분될 수 있다. 상업적인 제약 하에서 작동하는 실제 구현에서, 이러한 유닛 중 다수는 서로 밀접하게 상호 작용하며, 적어도 부분적으로는 서로 통합될 수 있다. 그러나, 개시된 주제를 설명하기 위해 아래의 기능 유닛으로의 개념적 세분화가 적절하다.
제1 유닛은 스케일러(scaler)/역변환 유닛(551)이다. 스케일러/역변환 유닛(551)은 사용할 변환, 블록 크기, 양자화 팩터, 양자화 스케일링 매트릭스 등을 포함하는 제어 정보뿐만 아니라 양자화된 변환 계수를 파서(520)로부터 심볼(들)(521)로서 수신한다. 스케일러/역변환 유닛(551)은 애그리게이터(aggregator)(555)에 입력될 수 있는 샘플 값을 포함하는 블록을 출력할 수 있다.
일부 경우에, 스케일러/역변환(551)의 출력 샘플은 인트라 코딩된 블록에 관련될 수 있으며; 즉, 이전에 재구성된 픽처의 예측 정보를 사용하지 않지만 현재 픽처의 이전에 재구성된 부분으로부터의 예측 정보를 사용할 수 있는 블록이다. 이러한 예측 정보는 인트라 픽처 예측 유닛(552)에 의해 제공될 수 있다. 일부 경우에, 인트라 픽처 예측 유닛(552)은 현재 픽처 버퍼(558)로부터 인출된(fetched) 주변 이미 재구성된 정보를 사용하여, 재구성 중인 블록과 동일한 크기와 모양의 블록을 생성한다. 현재 픽처 버퍼(558)는 예를 들어, 부분적으로 재구성된 현재 픽처 및/또는 완전히 재구성된 현재 픽처를 버퍼링한다. 애그리게이터(555)는 일부 경우에, 인트라 예측 유닛(552)이 생성한 예측 정보를 스케일러/역변환 유닛(551)이 제공하는 출력 샘플 정보에 샘플 단위로 추가한다.
다른 경우에, 스케일러/역변환 유닛(551)의 출력 샘플은 인터 코딩되고 잠재적으로 모션 보상된 블록에 관련될 수 있다. 그러한 경우에, 모션 보상 예측 유닛(553)은 예측에 사용되는 샘플을 인출하기 위해 참조 픽처 메모리(557)를 액세스할 수 있다. 블록에 속하는 심볼(521)에 따라 인출된 샘플을 모션 보상한 후, 이들 샘플은 애그리게이터(555)에 의해 스케일러/역변환 유닛(551)의 출력에 추가되어(이 경우 잔차 샘플 또는 잔차 신호라고 함) 출력 샘플 정보를 생성한다. 모션 보상 예측 유닛(553)이 예측 샘플을 인출하는 참조 픽처 메모리(557) 내의 어드레스는 예를 들어, X, Y 및 참조 픽처 컴포넌트를 가질 수 있는 심볼(521)의 형태로 모션 보상 예측 유닛(553)에 대해 이용 가능한 모션 벡터에 의해 제어될 수 있다. 모션 보상은 또한 서브 샘플 정확한 모션 벡터(sub-sample exact motion vector)가 사용될 때 참조 픽처 메모리(557)로부터 인출된 샘플 값의 보간, 모션 벡터 예측 메커니즘 등을 포함할 수 있다.
애그리게이터(555)의 출력 샘플은 루프 필터 유닛(556)에서 다양한 루프 필터링 기술의 대상이 될 수 있다. 비디오 압축 기술은 코딩된 비디오 시퀀스(코딩된 비디오 비트스트림이라고도 함)에 포함되고 루프 필터 유닛(556)에 대해 파서(520)로부터의 심볼(521)로서 이용 가능한 파라미터에 의해 제어되는 인루프 필터 기술을 포함할 수 있으며, 그러나 또한 이전에 재구성되고 루프 필터링된 샘플 값에 응답할 뿐만 아니라 코딩된 픽처 또는 코딩된 비디오 시퀀스의 이전(디코딩 순서에서) 부분을 디코딩하는 동안 획득되는 메타 정보에 응답할 수 있다.
루프 필터 유닛(556)의 출력은 향후 인터 픽처 예측에 사용하기 위해 참조 픽처 메모리(557)에 저장될 뿐만 아니라 렌더 디바이스로 출력될 수 있는 샘플 스트림일 수 있다.
일단 완전히 재구성되면 특정 코딩된 픽처는 향후 예측을 위한 참조 픽처로 사용될 수 있다. 예를 들어, 현재 픽처에 대응하는 코딩된 픽처가 완전히 재구성되고 코딩된 픽처가 (예를 들어, 파서(520)에 의해) 참조 픽처로 식별되면, 현재 픽처 버퍼(558)는 참조 픽처 메모리(557)의 일부가 될 수 있으며, 새로운 현재 픽처 버퍼(fresh current picture buffer)가 다음 코딩된 픽처의 재구성을 시작하기 전에 재할당될 수 있다.
비디오 디코더(510)는 ITU-T Rec.H.265와 같은 표준에서의 미리 결정된 비디오 압축 기술에 따라 디코딩 작동을 수행할 수 있다. 코딩된 비디오 시퀀스는 코딩된 비디오 시퀀스가 비디오 압축 기술 또는 표준의 구문(syntax)과 비디오 압축 기술 또는 표준에 문서화된 프로필 모두를 준수한다는 의미에서, 사용 중인 비디오 압축 기술 또는 표준에 의해 지정된 구문을 따를 수 있다. 구체적으로, 프로필은 비디오 압축 기술 또는 표준에서 사용 가능한 모든 도구(tool) 중에서 대응하는 프로필에서 사용할 수 있는 유일한 도구로 특정 도구를 선택할 수 있다. 또한 준수를 위해 필요한 것은 코딩된 비디오 시퀀스의 복잡성이 비디오 압축 기술 또는 표준의 레벨에 의해 정의된 범위 내에 있다는 것이다. 일부 경우에, 레벨은 최대 픽처 크기, 최대 프레임 레이트, 최대 재구성 샘플 레이트(예를 들어, 초당 메가샘플로 측정), 최대 참조 픽처 크기 등을 제한한다. 레벨에 의해 설정된 제한은 경우에 따라 HRD(Hypothetical Reference Decoder) 사양 및 코딩된 비디오 시퀀스에서 시그널링되는 HRD 버퍼 관리를 위한 메타데이터를 통해 추가로 제한될 수 있다.
도 6은 본 개시의 실시예에 따른 비디오 인코더(603)의 블록도를 도시한다. 비디오 인코더(603)는 포인트 클라우드를 압축하는 V-PCC 인코더(300)에서 사용될 수 있다. 일 예에서, 비디오 압축 모듈(322, 323)과 비디오 압축 모듈(332)은 인코더(603)와 유사하게 구성된다.
비디오 인코더(603)는 패딩된 지오메트리 이미지, 패딩된 텍스처 이미지 등과 같은 이미지를 수신하고, 압축된 이미지를 생성할 수 있다.
실시예에 따르면, 비디오 인코더(603)는 애플리케이션에 의해 요구되는 임의의 다른 시간 제한 하에 또는 실시간으로, 소스 비디오 시퀀스(이미지)의 픽처를 코딩된 비디오 시퀀스(압축된 이미지)로 코딩하고 압축할 수 있다. 적절한 코딩 속도를 강제하는 것은 컨트롤러(650)의 기능 중 하나이다. 일부 실시예에서, 컨트롤러(650)는 아래에 설명된 바와 같이 다른 기능 유닛을 제어하고 다른 기능 유닛에 기능적으로 결합된다. 결합은 명확성을 위해 표시되지 않았다. 컨트롤러(650)에 의해 설정되는 파라미터는 레이트 제어 관련 파라미터(픽처 스킵, 양자화기, 레이트 왜곡 최적화 기술의 람다(lambda) 값 등), 픽처 크기, GOP(group of pictures) 레이아웃, 최대 모션 벡터 검색 범위 등을 포함할 수 있다. 컨트롤러(650)는 특정 시스템 설계에 최적화된 비디오 인코더(603)에 속하는 다른 적절한 기능을 갖도록 구성될 수 있다.
일부 실시예에서, 비디오 인코더(603)는 코딩 루프에서 작동하도록 구성된다. 지나치게 단순화된 설명으로서, 일 예에서, 코딩 루프는 소스 코더(630)(예: 코딩될 입력 픽처 및 참조 픽처(들)에 기반하여 심볼 스트림과 같은 심볼 생성을 담당), 및 비디오 인코더(603)에 내장된 (로컬) 디코더(633)를 포함할 수 있다. 디코더(633)는 (원격) 디코더가 또한 생성하는 것과 유사한 방식으로 샘플 데이터를 생성하기 위해 심볼을 재구성한다(심볼과 코딩된 비디오 비트스트림 사이의 임의의 압축은 개시된 주제에서 고려되는 비디오 압축 기술에서 손실이 없기 때문). 재구성된 샘플 스트림(샘플 데이터)은 참조 픽처 메모리(634)에 입력된다. 심볼 스트림의 디코딩이 디코더 위치(로컬 또는 원격)와 무관한 비트 정확한 결과(bit-exact result)를 가져오므로, 참조 픽처 메모리(634)의 콘텐츠도 로컬 인코더와 원격 인코더 사이에서 비트 정확하다. 달리 말하면, 인코더의 예측 부분은 디코딩 동안 예측을 사용할 때 디코더가 "보는(see)" 것과 정확히 동일한 샘플 값을 참조 픽처 샘플로 "본다". 참조 픽처 동기화(및 예를 들어, 채널 에러로 인해 동기화가 유지될 수 없으면 드리프트(drift)가 발생함)의 이러한 기본 원리는 일부 관련 기술에서도 사용된다.
"로컬" 디코더(633)의 작동은 비디오 디코더(510)와 같은 "원격" 디코더의 작동과 동일할 수 있으며, 이는 도 5와 관련하여 위에서 이미 상세히 설명되었다. 도 5를 또한 간략하게 참조하면, 심볼이 이용 가능하고 엔트로피 코더(645) 및 파서(520)에 의해 코딩된 비디오 시퀀스에 대한 심볼의 인코딩/디코딩이 무손실일 수 있으므로, 파서(520)를 포함하는 비디오 디코더(510)의 엔트로피 디코딩 부분은, 로컬 디코더(633)에서 완전히 구현되지 않을 수 있다.
이 시점에서 관찰할 수 있는 것은 디코더에 존재하는 파싱/엔트로피 디코딩을 제외한 임의의 디코더 기술도 반드시 대응하는 인코더에 실질적으로 동일한 기능 형태로 존재할 필요가 있다는 것이다. 이러한 이유로, 개시된 주제는 디코더 작동에 초점을 맞춘다. 인코더 기술에 대한 설명은 포괄적으로 설명된 디코더 기술의 반대이므로 축약될 수 있다. 특정 영역에서만 더 자세한 설명이 필요하며 아래에서 제공된다.
작동 중에, 일부 예에서, 소스 코더(630)는 모션 보상된 예측 코딩을 수행할 수 있는데, 이는 "참조 픽처"로 지정된 비디오 시퀀스로부터의 하나 이상의 이전에 코딩된 픽처를 참조하여 예측적으로 입력 픽처를 코딩한다. 이러한 방식으로, 코딩 엔진(632)은 입력 픽처의 픽셀 블록과 입력 픽처에 대한 예측 참조(들)로서 선택될 수 있는 참조 픽처(들)의 픽셀 블록 간의 차이를 코딩한다.
로컬 비디오 디코더(633)는 소스 코더(630)에 의해 생성된 심볼에 기반하여, 참조 픽처로 지정될 수 있는 픽처의 코딩된 비디오 데이터를 디코딩할 수 있다. 코딩 엔진(632)의 작동은 유리하게 손실 프로세스일 수 있다. 코딩된 비디오 데이터가 비디오 디코더(도 6에 도시되지 않음)에서 디코딩될 수 있을 때, 재구성된 비디오 시퀀스는 전형적으로 약간의 에러가 있는 소스 비디오 시퀀스의 복제(replica)일 수 있다. 로컬 비디오 디코더(633)는 참조 픽처에 대해 비디오 디코더에 의해 수행될 수 있는 디코딩 프로세스를 복제하고, 재구성된 참조 픽처가 참조 픽처 캐시(634)에 저장되게 할 수 있다. 이러한 방식으로, 비디오 인코더(603)는 원단(far-end) 비디오 디코더에 의해 획득될 재구성된 참조 픽처로서 공통 콘텐츠를 갖는 재구성된 참조 픽처의 사본을 국부적으로 저장할 수 있다(전송 에러 없음).
예측기(predictor)(635)는 코딩 엔진(632)에 대한 예측 검색을 수행할 수 있다. 즉, 코딩될 신규 픽처에 대해, 예측기(635)는 신규 픽처에 대해 적절한 예측 참조로서 역할할 수 있는, 샘플 데이터(후보 참조 픽셀 블록으로서) 또는 참조 픽처 모션 벡터, 블록 모양 등과 같은 특정 메타데이터에 대해 참조 픽처 메모리(634)를 검색할 수 있다. 예측기(635)는 적절한 예측 참조를 찾기 위해 픽셀 단위의 샘플 블록 단위로 작동할 수 있다. 일부 경우에, 예측기(635)에 의해 획득된 검색 결과에 의해 결정되는 바와 같이, 입력 픽처는 참조 픽처 메모리(634)에 저장된 다수의 참조 픽처로부터 도출된 예측 참조를 가질 수 있다.
컨트롤러(650)는 예를 들어, 비디오 데이터를 인코딩하는 데 사용되는 파라미터 및 서브그룹 파라미터의 설정을 포함하는 소스 코더(630)의 코딩 작동을 관리할 수 있다.
전술한 모든 기능 유닛의 출력은 엔트로피 코더(645)에서 엔트로피 코딩될 수 있다. 엔트로피 코더(645)는 허프만 코딩, 가변 길이 코딩, 산술 코딩 등과 같은 기술에 따라 심볼을 무손실 압축함으로써, 다양한 기능 유닛에 의해 생성된 심볼을 코딩된 비디오 시퀀스로 변환한다.
컨트롤러(650)는 비디오 인코더(603)의 작동을 관리할 수 있다. 코딩 동안, 컨트롤러(650)는 각각의 픽처에 적용될 수 있는 코딩 기술에 영향을 미칠 수 있는 특정 코딩된 픽처 유형을 각각의 코딩된 픽처에 할당할 수 있다. 예를 들어, 픽처는 종종 다음 픽처 유형 중 하나로 할당될 수 있다.
인트라 픽처(Intra Picture)(I 픽처)는 예측의 소스로서 시퀀스 내의 임의의 다른 픽처를 사용하지 않고 코딩 및 디코딩될 수 있는 것일 수 있다. 일부 비디오 코덱은 예를 들어, IDR(Independent Decoder Refresh) 픽처를 포함하여 다양한 유형의 인트라 픽처를 허용한다. 당업자는 I 픽처의 이러한 변형 및 각각의 애플리케이션 및 특징을 알고 있다.
예측 픽처(predictive picture)(P 픽처)는 각 블록의 샘플 값을 예측하기 위해 최대 하나의 모션 벡터와 참조 인덱스를 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다.
양방향 예측 픽처(bi-directionally predictive picture)(B 픽처)는 각 블록의 샘플 값을 예측하기 위해 최대 2개의 모션 벡터와 참조 인덱스를 사용하는 인트라 예측 또는 인터 예측을 사용하여 코딩 및 디코딩될 수 있는 것일 수 있다. 이와 유사하게, 다수의 예측 픽처는 단일 블록의 재구성을 위해 2개 이상의 참조 픽처 및 연관된 메타데이터를 사용할 수 있다.
소스 픽처는 일반적으로 복수의 샘플 블록(예: 각각 4×4, 8×8, 4×8 또는 16×16 샘플의 블록)으로 공간적으로 세분될 수 있고 블록 단위로 코딩될 수 있다. 블록은 블록의 각각의 픽처에 적용된 코딩 할당에 의해 결정된 다른 (이미 코딩된) 블록을 참조하여 예측적으로 코딩될 수 있다. 예를 들어, I 픽처의 블록은 비예측적으로 코딩될 수 있거나 동일한 픽처의 이미 코딩된 블록을 참조하여 예측적으로(공간 예측 또는 인트라 예측) 코딩될 수 있다. P 픽처의 픽셀 블록은 이전에 코딩된 하나의 참조 픽처를 참조하여 공간적 예측 또는 시간적 예측을 통해 예측적으로 코딩될 수 있다. B 픽처의 블록은 이전에 코딩된 하나 또는 2개의 참조 픽처를 참조하여 공간적 예측 또는 시간적 예측을 통해 예측적으로 코딩될 수 있다.
비디오 인코더(603)는 ITU-T Rec와 같은 미리 결정된 비디오 코딩 기술 또는 표준에 따라 코딩 작동을 수행할 수 있다. 그 작동에서, 비디오 인코더(603)는 입력 비디오 시퀀스에서 시간적 및 공간적 중복성을 이용하는 예측 코딩 작동을 포함하는 다양한 압축 작동을 수행할 수 있다. 따라서, 코딩된 비디오 데이터는 사용 중인 비디오 코딩 기술 또는 표준에 의해 지정된 구문을 따를 수 있다.
비디오는 시간적 순서로 복수의 소스 픽처(이미지)의 형태일 수 있다. 인트라 픽처 예측(종종 인트라 예측으로 약칭됨)은 주어진 픽처에서 공간적 상관 관계를 사용하고, 인터 픽처 예측은 픽처 간의 (시간적 또는 기타) 상관 관계를 사용한다. 일 예에서, 현재 픽처라고 하는 인코딩/디코딩 중인 특정 픽처가 블록으로 파티셔닝된다. 현재 픽처의 블록이 비디오에서 이전에 코딩되어 여전히 버퍼링된 참조 픽처의 참조 블록과 유사할 때, 현재 픽처의 블록은 모션 벡터라고 하는 벡터에 의해 코딩될 수 있다. 모션 벡터는 참조 픽처의 참조 블록을 가리키며, 다수의 참조 픽처가 사용 중인 경우에 참조 픽처를 식별하는 3차원을 가질 수 있다.
일부 실시예에서, 양방향 예측 기술이 인터 픽처 예측에 사용될 수 있다. 양방향 예측 기술에 따르면, 비디오에서 디코딩 순서에 있어서 둘 다 현재 픽처보다 우선인 제1 참조 픽처 및 제2 참조 픽처와 같은 2개의 참조 픽처(그러나, 디스플레이 순서에서 각각 과거 및 미래에 있을 수 있음)를 사용한다. 현재 픽처의 블록은 제1 참조 픽처의 제1 참조 블록을 가리키는 제1 모션 벡터와 제2 참조 픽처의 제2 참조 블록을 가리키는 제2 모션 벡터에 의해 코딩될 수 있다. 블록은 제1 참조 블록과 제2 참조 블록의 조합에 의해 예측될 수 있다.
또한, 코딩 효율을 향상시키기 위해 병합 모드 기술이 인터 픽처 예측에 사용될 수 있다.
본 개시의 일부 실시예에 따르면, 인터 픽처 예측 및 인트라 픽처 예측과 같은 예측이 블록 단위로 수행된다. 예를 들어, HEVC 표준에 따르면, 비디오 픽처 시퀀스에서의 픽처는 압축을 위해 코딩 트리 유닛(coding tree unit, CTU)으로 파티셔닝되며, 픽처의 CTU는 64×64 픽셀, 32×32 픽셀 또는 16×16 픽셀과 같은 동일한 크기를 갖는다. 일반적으로, CTU는 하나의 루마 코딩 트리 블록(coding tree block, CTB)과 2개의 크로마 CTB인 3개의 CTB를 포함한다. 각 CTU는 하나 또는 다수의 코딩 유닛(coding unit, CUs)으로 재귀적으로 쿼드트리 분할될(split) 수 있다. 예를 들어, 64×64픽셀의 CTU는 64×64픽셀의 1개의 CU, 32×32픽셀의 4개의 CU 또는 16×16픽셀의 16개의 CU로 분할될 수 있다. 일 예에서, 각 CU는 인터 예측 유형 또는 인트라 예측 유형과 같은 CU에 대한 예측 유형을 결정하기 위해 분석된다. CU는 시간적 및/또는 공간적 예측 가능성에 따라 하나 이상의 예측 유닛(prediction unit, PU)으로 분할된다. 일반적으로, 각 PU는 루마 예측 블록(prediction block, PB) 및 2개의 크로마 PB를 포함한다. 일 실시예에서, 코딩(인코딩/디코딩)에서의 예측 작동은 예측 블록 단위로 수행된다. 예측 블록의 예로서 루마 예측 블록을 사용하여, 예측 블록은 8×8 픽셀, 16×16 픽셀, 8×16 픽셀, 16×8 픽셀 등과 같은 픽셀에 대한 값(예: 루마 값)의 매트릭스를 포함한다.
도 7은 일부 실시예에 따른 G-PPC 인코더(700)의 블록도를 도시한다. 인코더(700)는 포인트 클라우드 데이터를 수신하고 포인트 클라우드 데이터를 압축하여 압축된 포인트 클라우드 데이터를 운반하는 비트 스트림을 생성하도록 구성될 수 있다. 일 실시예에서, 인코더(700)는 위치 양자화 모듈(710), 중복된 포인트 제거(duplicated points removal) 모듈(712), 옥트리(octree) 인코딩 모듈(730), 속성 전달(transfer) 모듈(720), 세부 레벨(level of detail, LOD) 생성 모듈(740), 속성 예측 모듈(750), 잔차 양자화 모듈(760), 산술 코딩 모듈(770), 역 잔차 양자화 모듈(780), 가산 모듈(781) 및 재구성된 속성 값을 저장하는 메모리(790)를 포함할 수 있다.
도시된 바와 같이, 입력 포인트 클라우드(701)는 인코더(700)에서 수신될 수 있다. 포인트 클라우드(701)의 위치(예: 3D 좌표)는 양자화 모듈(710)에 제공된다. 양자화 모듈(710)은 좌표를 양자화하여 양자화된 위치를 생성하도록 구성된다. 중복된 포인트 제거 모듈(712)은 양자화된 위치를 수신하고 필터 프로세스를 수행하여 중복 포인트를 식별 및 제거하도록 구성된다. 옥트리 인코딩 모듈(730)은 중복된 포인트 제거 모듈(712)로부터 필터링된 위치를 수신하고, 옥트리 기반 인코딩 프로세스를 수행하여 복셀의 3D 그리드를 설명하는 점유 코드 시퀀스를 생성하도록 구성된다. 점유 코드는 산술 코딩 모듈(770)에 제공된다.
속성 전달 모듈(720)은 입력 포인트 클라우드의 속성을 수신하고 속성 전달 프로세스를 수행하여 다수의 속성 값이 각각의 복셀과 연관될 때 각 복셀에 대한 속성 값을 결정하도록 구성된다. 옥트리 인코딩 모듈(730)로부터 출력된 재정렬된 포인트에 대해 속성 전달 프로세스를 수행할 수 있다. 전달 작동 후의 속성은 속성 예측 모듈(750)에 제공된다. LOD 생성 모듈(740)은 옥트리 인코딩 모듈(730)로부터 출력된 재정렬된 포인트에 대해 작동하고 포인트를 상이한 LOD로 재구성하도록 구성된다. LOD 정보는 속성 예측 모듈(750)에 제공된다.
속성 예측 모듈(750)은 LOD 생성 모듈(740)로부터의 LOD 정보가 지시하는 LOD 기반 순서에 따라 포인트를 처리한다. 속성 예측 모듈(750)은 메모리(790)에 저장된 현재 포인트의 이웃 포인트 세트의 재구성된 속성에 기반하여 현재 포인트에 대한 속성 예측을 생성한다. 예측 잔차는 속성 전달 모듈(720)로부터 수신된 원래 속성 값 및 국부적으로 생성된 속성 예측에 기반하여 후속적으로 획득될 수 있다. 각각의 속성 예측 프로세스에서 후보 인덱스를 사용할 때, 선택된 예측 후보에 대응하는 인덱스를 산술 인코딩 모듈(770)에 제공할 수 있다.
잔차 양자화 모듈(760)은 속성 예측 모듈(750)로부터 예측 잔차를 수신하고, 양자화를 수행하여 양자화된 잔차를 생성하도록 구성된다. 양자화된 잔차는 산술 코딩 모듈(770)에 제공된다.
역 잔차 양자화 모듈(780)은 잔차 양자화 모듈(760)로부터 양자화된 잔차를 수신하고, 잔차 양자화 모듈(760)에서 수행된 양자화 작동의 역을 수행함으로써 재구성된 예측 잔차를 생성하도록 구성된다. 가산 모듈(781)은 역 잔차 양자화 모듈(780)로부터 재구성된 예측 잔차를 수신하고, 속성 예측 모듈(750)로부터 각각의 속성 예측을 수신하도록 구성된다. 재구성된 예측 잔차와 속성 예측을 조합하는 것에 의해, 재구성된 속성 값이 생성되어 메모리(790)에 저장된다.
산술 코딩 모듈(770)은 점유 코드, 후보 인덱스(사용된 경우), 양자화된 잔차(생성된 경우) 및 기타 정보를 수신하고, 엔트로피 인코딩을 수행하여 수신된 값 또는 정보를 추가로 압축하도록 구성된다. 그 결과, 압축된 정보를 운반하는 압축된 비트스트림(702)이 생성될 수 있다. 비트스트림(702)은 압축된 비트스트림을 디코딩하는 디코더로 전송되거나 제공되거나 또는 저장 디바이스에 저장될 수 있다.
도 8은 일 실시예에 따른 G-PCC 디코더(800)의 블록도를 도시한다. 디코더(800)는 압축된 비트스트림을 수신하고, 포인트 클라우드 데이터 압축해제를 수행하여 비트스트림을 압축해제하여, 디코딩된 포인트 클라우드 데이터를 생성하도록 구성될 수 있다. 일 실시예에서, 디코더(800)는 산술 디코딩 모듈(810), 역 잔차 양자화 모듈(820), 옥트리 디코딩 모듈(830), LOD 생성 모듈(840), 속성 예측 모듈(850), 재구성된 속성 값을 저장하는 메모리(860)를 포함할 수 있다.
도시된 바와 같이, 압축된 비트스트림(801)은 산술 디코딩 모듈(810)에서 수신될 수 있다. 산술 디코딩 모듈(810)은 압축된 비트스트림(801)을 디코딩하여 양자화된 잔차(생성된 경우) 및 포인트 클라우드의 점유 코드를 획득하도록 구성된다. 옥트리 디코딩 모듈(830)은 점유 코드에 따라 포인트 클라우드에서 포인트의 재구성된 위치를 결정하도록 구성된다. LOD 생성 모듈(840)은 재구성된 위치에 기반하여 포인트를 상이한 LOD로 재조직하고 LOD 기반 순서를 결정하도록 구성된다. 역 잔차 양자화 모듈(820)은 산술 디코딩 모듈(810)로부터 수신된 양자화된 잔차에 기반하여 재구성된 잔차를 생성하도록 구성된다.
속성 예측 모듈(850)은 LOD 기반 순서에 따라 포인트에 대한 속성 예측 프로세스를 수행하여 속성 예측을 결정하도록 구성된다. 예를 들어, 메모리(860)에 저장된 현재 포인트의 이웃 포인트의 재구성된 속성 값에 기반하여 현재 포인트의 속성 예측이 결정될 수 있다. 일부 예에서, 속성 예측은 현재 포인트에 대한 재구성된 속성을 생성하기 위해 각각의 재구성된 잔차와 조합될 수 있다.
옥트리 디코딩 모듈(830)로부터 생성된 재구성된 위치와 함께 속성 예측 모듈(850)로부터 생성된 재구성된 속성의 시퀀스는 하나의 예에서 디코더(800)에서 출력되는 디코딩된 포인트 클라우드(802)에 대응한다. 또한, 재구성된 속성도 메모리(860)에 저장되고, 후속 포인트에 대한 속성 예측을 유도하는 데 사용할 수 있다.
다양한 실시예에서, 인코더(300), 디코더(400), 인코더(700) 및/또는 디코더(800)는 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 인코더(300), 디코더(400), 인코더(700) 및/또는 디코더(800)는 ASIC(application specific integrated circuit), FPGA(field programmable gate array) 등과 같은 소프트웨어없이 또는 소프트웨어로 작동하는 하나 이상의 집적 회로(integrated circuit, IC)와 같은 처리 회로로 구현될 수 있다. 다른 예에서, 인코더(300), 디코더(400), 인코더(700) 및/또는 디코더(800)는 컴퓨터가 판독 가능한 비휘발성(또는 비일시적) 저장 매체에 저장된 명령어를 포함하는 소프트웨어 또는 펌웨어로 구현될 수 있다. 명령어는 하나 이상의 프로세서와 같은 처리 회로에 의해 실행될 때, 처리 회로가 인코더(300), 디코더(400), 인코더(700) 및/또는 디코더(800)의 기능을 수행하게 한다.
여기에 개시된 속성 예측 기술을 구현하도록 구성된 속성 예측 모듈(750, 850)은 도 7 및 도 8에 도시된 것과 유사하거나 상이한 구조를 가질 수 있는 다른 디코더 또는 인코더에 포함될 수 있음에 유의한다. 또한, 다양한 예에서, 인코더(700) 및 디코더(800)는 동일한 디바이스에 포함될 수도 있고 별도의 디바이스에 포함될 수도 있다.
본 개시의 측면은 G-PCC에서 사용하기 위한 기술을 제공한다. 구체적으로, G-PCC에 대한 노드 기반 지오메트리 및/또는 속성 코딩 기술이 다음 설명에서 설명된다.
본 개시의 일부 측면에 따르면, 지오메트리 정보 및 색상, 반사율 등과 같은 포인트 클라우드의 연관된 속성은 (예: MPEG G-PCC 테스트 모델 13(TMC13) 모델에서) 별도로 압축될 수 있다. 포인트 클라우드에 있는 포인트의 3D 좌표를 포함하는 포인트 클라우드의 지오메트리 정보는 파티션의 점유 정보가 있는 옥트리 파티션, 쿼드트리 파티션 및 이진 파티션과 같은 파티션의 점유 정보가 있는 파티션으로 코딩할 수 있다. 지오메트리 정보가 코딩된 후, 예를 들어, 예측, 리프팅(lifting) 및 영역 적응 계층 변환 기술을 사용하여, 재구성된 지오메트리에 기반하여 속성을 압축할 수 있다.
지오메트리 코딩을 위해, 여러 기술이 사용될 수 있다. 여러 기술에는 트리 기반 지오메트리 코딩, 예측 트리 기반 지오메트리 코딩 및 트리수프(trisoup) 기반 지오메트리 코딩이 포함될 수 있다. 트리 기반 지오메트리 코딩, 예측 트리 기반 지오메트리 코딩 및 트리수프 기반 지오메트리 코딩에 대해 각각 설명한다.
본 개시의 일 측면에 따르면, 3차원 공간은 옥트리 파티션, 쿼드트리 파티션, 이진트리 파티션 등과 같은 트리 파티션을 사용하여 파티셔닝될 수 있다. 옥트리 파티션을 예로 사용하면, 옥트리는 이차원 공간에서 쿼드트리의 3차원 아날로그이다. 옥트리 파티션 기법은 3차원 공간을 재귀적으로 8개의 옥탄트(octant)로 세분하는(subdivide) 파티션 기법을 지칭하며, 옥트리 구조는 파티션을 나타내는 트리 구조를 지칭한다. 일 예에서, 옥트리 구조의 각 노드는 3차원 공간에 대응하고, 노드는 끝(end) 노드(더 이상 파티션이 없으며, 일부 예에서는 리프(leaf) 노드라고도 함) 또는 추가 파티션이 있는 노드일 수 있다. 노드에서의 옥트리 파티션은 노드가 나타내는 3차원 공간을 8개의 옥탄트로 파티셔닝할 수 있다. 일부 예에서, 특정 노드의 파티션에 대응하는 노드는 특정 노드의 자식 노드라고 할 수 있다.
도 9는 본 개시의 일부 실시예에 따른 옥트리 파티션 기법에 기반한 3D 입방체(cube)(900)(노드에 대응함)의 파티션을 예시하는 도면을 도시한다. 파티션은 3D 입방체(900)를 도 9에 도시된 바와 같이 8개의 더 작은 동일한 크기의 입방체 0-7로 분할할 수 있다. 도 9에서, 3D 입방체(900)의 x, y 및 z 차원은 각각 절반으로 분할되며, 분할은 동일한 크기를 갖는 8개의 서브입방체를 생성할 수 있다.
옥트리 파티션 기술(예: TMC13에서)은 원래의 3D 공간을 더 작은 유닛으로 재귀적으로 분할할 수 있고, 모든 서브 공간의 점유 정보는 지오메트리 위치를 나타내도록 인코딩될 수 있다.
일부 실시예에서(예: TMC13에서), 옥트리 지오메트리 코덱이 사용된다. 옥트리 지오메트리 코덱은 지오메트리 인코딩을 수행할 수 있다. 일부 예에서, 지오메트리 인코딩은 입방체 박스에 대해 수행된다. 예를 들어, 입방체 박스는 두 포인트 (0,0,0)과
Figure pct00002
로 정의되는 축 정렬 바운딩 박스(axis-aligned bounding box) B일 수 있으며, 여기서
Figure pct00003
은 바운딩 박스 B의 크기를 정의하며,
Figure pct00004
은 비트스트림에서 지정될 수 있다.
그런 다음, 입방체 박스를 재귀적으로 세분하여 옥트리 구조를 구축한다. 예를 들어, 두 포인트 (0,0,0)과
Figure pct00005
로 정의된 입방체 박스는 8개의 서브 입방체 박스로 분할된 다음, 점유 코드로 지칭되는 8비트 코드가 생성된다. 점유 코드의 각 비트는 서브 입방체 박스와 연관되며, 비트의 값은 연관된 서브 입방체 박스가 포인트 클라우드의 임의의 포인트를 포함하는지를 지시하는 데 사용된다. 예를 들어, 비트의 값 1은 비트와 연관된 서브 입방체 박스가 포인트 클라우드의 하나 이상의 포인트를 포함함을 지시하며, 비트의 값 0은 비트와 연관된 서브 입방체 박스가 포인트 클라우드의 포인트를 포함하지 않음을 지시한다.
또한, 비어 있는 서브 입방체 박스(예: 서브 입방체 박스와 연관된 비트의 값은 0임)에 대해, 서브 입방체 박스에 더 이상 분할이 적용되지 않는다. 서브 입방체 박스가 포인트 클라우드의 하나 이상의 포인트를 가질 때(예: 서브 입방체 박스와 연관된 비트 값이 1임), 서브 입방체 박스는 8개의 더 작은 서브 입방체 박스로 더 분할되고, 점유 코드는 더 작은 서브 입방체 박스의 점유를 지시하기 위해 서브 입방체 박스에 대해 생성할 수 있다. 일부 예에서, 세분화 작동은 서브 입방체 박스의 크기가 크기가 1인 것과 같은 미리 결정된 임계값과 동일해질 때까지, 비어 있지 않은 서브 입방체 박스에 대해 반복적으로 수행될 수 있다. 일부 예에서, 크기가 1인 서브 입방체 박스를 복셀(voxel)이라고 하고, 복셀보다 큰 크기를 갖는 서브 입방체 박스를 비-복셀(non-voxel)이라고 할 수 있다.
도 10은 본 개시의 일부 실시예에 따른 옥트리 파티션(1010) 및 옥트리 파티션(1010)에 대응하는 옥트리 구조(1020)의 예를 도시한다. 도 10은 옥트리 파티션(1010)에서 두 가지 레벨의 파티션을 도시한다. 옥트리 구조(1020)는 옥트리 파티션(1010)을 위한 입방체 박스에 대응하는 노드 N0를 포함한다. 노드 N0는 옥트리 구조(1020)의 깊이 0에 있다. 파티션의 제1 레벨에서, 입방체 박스는 도 9에 도시된 번호 매기기(numbering) 기술에 따라 0-7로 번호가 매겨진 8개의 서브 입방체 박스로 파티셔닝된다. 노드 N0의 파티션에 대한 점유 코드는 이진수로 "10000001"이며, 이는 노드 N0-0으로 표현되는 제1 서브 입방체 박스와 노드 N0-7로 표현되는 제8 서브 입방체 박스가 포인트 클라우드의 포인트를 포함하고, 다른 서브 입방체 박스는 비어 있음을 지시한다. 노드 N0-0 ~ 노드 N0-7은 옥트리 구조(1020)의 깊이 1에 있다.
그런 다음, 파티션의 제2 레벨에서, 제1 서브 입방체 박스(노드 N0-0으로 표현됨) 및 제8 서브 입방체 박스(노드 N0-7로 표현됨)는 각각 8개의 옥탄트로 더 세분된다. 예를 들어, 제1 서브 입방체 박스(노드 N0-0으로 표현됨)는 도 9에 도시된 번호 매기기 기술에 따라 0-7로 번호가 매겨진 8개의 더 작은 서브 입방체 박스로 파티셔닝된다. 노드 N0-0의 파티션에 대한 점유 코드는 이진수로 "00011000"이며, 이는 제4 작은 서브 입방체 박스(노드 N0-0-3으로 표현됨)와 제5 작은 서브 입방체 박스(노드 N0-0-4로 표현됨)가 포인트 클라우드의 포인트를 포함하고, 다른 작은 서브 입방체 박스는 비어 있음을 지시한다. 노드 N0-0-0 ~ 노드 N0-0-7은 옥트리 구조(1020)의 깊이 2에 있다. 제2 레벨에서, 제8 서브 입방체 박스(노드 N0-7로 표현됨)는 도 10에 도시된 바와 같이 유사하게 8개의 더 작은 서브 입방체 박스로 파티셔닝된다. 노드 N0-7-0 ~ 노드 N0-7-7은 옥트리 구조(1020)의 깊이 2에 있다.
도 10의 예에서, 비어 있지 않은 입방체 공간에 대응하는 노드(예: 입방체 박스, 서브 입방체 박스, 더 작은 서브 입방체 박스 등)는 회색으로 표현되며, 음영 노드라고 한다. 빈 입방체 공간에 대응하는 노드(예: 입방체 박스, 서브 입방체 박스, 더 작은 서브 입방체 박스 등)는 흰색으로 표현되며, 공백 노드(blank node)라고 할 수 있다.
위의 설명에서는 옥트리 파티션에 대해 설명했지만, 일반적으로 트리 기반 지오메트리 코딩 기술은 쿼드트리 또는 이진 트리 파티션과 같은 다른 파티션을 사용하여 포인트 클라우드를 파티셔닝할 수 있다.
보다 일반적으로, 포인트 클라우드의 경우, 포인트 클라우드의 바운딩 박스 B는 모든 방향에서 동일한 크기로 제한되지 않고, 대신에 바운딩 박스 B는 3D 장면 또는 객체의 모양에 더 잘 맞도록 임의 크기의 직사각형 직육면체(rectangular cuboid)가 될 수 있다. 일부 예에서, 바운딩 박스 B의 크기는
Figure pct00006
와 같이 2의 거듭제곱으로 나타낼 수 있다. 일 예에서,
Figure pct00007
는 같지 않다.
포인트 클라우드의 바운딩 박스 B를 파티셔닝하기 위해, 상술한 옥트리 파티션 이외에, 이하에서 설명할 쿼드트리 파티션 및 이진 트리 파티션이 사용될 수 있다.
도 11은 일부 예에서 3개의 쿼드트리 파티션을 도시한다. 쿼드트리 파티션의 경우, 바운딩 박스 B의 3차원(예: x, y 및 z 차원) 중 2개가 절반으로 분할될 수 있으며, 쿼드트리 파티션은 동일한 크기의 4개의 서브 박스를 생성할 수 있다.
도 11의 예에서, 바운딩 박스(1110)는 x 및 y 차원에서 쿼드트리 파티션에 의해 분할되며, 쿼드트리 파티션의 결과는 0, 2, 4 및 6으로 레이블이 지정된 동일한 크기의 4개의 서브 박스로 도시된다.
또한, 도 11의 예에서, 바운딩 박스(1120)는 x 및 z 차원에서 쿼드트리 파티션에 의해 분할되며, 쿼드트리 파티션의 결과는 0, 1, 4 및 5로 레이블이 지정된 동일한 크기의 4개의 서브 박스로 도시된다.
또한, 도 11의 예에서, 바운딩 박스(1130)는 y 및 z 차원에서 쿼드트리 파티션에 의해 분할되며, 쿼드트리 파티션의 결과는 0, 1, 2 및 3으로 레이블이 지정된 동일한 크기의 4개의 서브 박스로 도시된다.
도 12는 일부 예에서 3개의 이진 트리 파티션을 도시한다. 이진 트리 파티션의 경우, 바운딩 박스 B의 세 가지 차원(예: x, y 및 z 차원) 중 하나가 절반으로 분할될 수 있으며, 이진 트리 파티션은 동일한 크기의 2개의 서브 박스를 생성할 수 있다.
도 12의 예에서, 바운딩 박스(1210)는 x 차원에서 이진 트리 파티션에 의해 분할되며, 이진 파티션의 결과는 0 및 4로 레이블이 지정된 동일한 크기의 2개의 서브 박스로 도시된다.
또한, 도 12의 예에서, 바운딩 박스(1220)는 y 차원에서 이진 트리 파티션에 의해 분할되며, 이진 파티션의 결과는 0 및 2로 레이블이 지정된 동일한 크기의 2개의 서브 박스로 도시된다.
또한, 도 12의 예에서, 바운딩 박스(1230)는 z 차원에서 이진 트리 파티션에 의해 분할되며, 이진 파티션의 결과는 0 및 1로 레이블이 지정된 동일한 크기의 2개의 서브 박스로 도시된다.
따라서, 포인트 클라우드는 옥트리 파티션, 쿼드트리 파티션 및 이진 트리 파티션이 적절히 혼합된 일반적인 트리 구조로 표현될 수 있다. 트리 구조를 순회하기(traverse) 위해, 일부 예(예: TMC13 모델 버전)에서, 너비 우선 접근법(breadth-first approach)이 채택된다. 일부 다른 예에서는 깊이 우선 접근법(depth-first approach)도 사용할 수 있다.
일부 관련 예(예: TMC13의 버전)에서, 점유 코드를 코딩하기 위해, 트리 구조는 너비 우선 순서로 순회된다. 너비 우선 순서에 따라, 한 레벨의 트리 노드(예: 트리 구조의 노드)는 상위 레벨의 모든 트리 노드를 방문한 후에 방문할 수 있다. 일 구현 예에서, FIFO(First-In-First-Out) 데이터 구조가 사용될 수 있다.
도 13은 너비 우선 코딩 순서를 예시하는 옥트리 구조(1300)의 도면을 도시한다. 옥트리 구조(1300)에서 음영 노드는 비어 있지 않고 포인트 클라우드에서 하나 이상의 포인트가 점유하는 입방체 공간에 대응하는 노드이다. 음영 노드에 대한 점유 코드는 도 13에 도시된 0에서 8까지의 너비 우선 코딩 순서로 코딩될 수 있다. 너비 우선 코딩 순서에서, 옥트리 노드는 레벨별로 방문된다. 본 개시의 일 측면에 따르면, 현재 레벨이 상위 레벨이 코딩될 때까지 기다려야 하기 때문에 너비 우선 코딩 순서 자체는 병렬 처리에 적합하지 않다.
일부 예에서, 하이브리드 코딩 순서는 너비 우선 코딩 순서 대신 깊이 우선 코딩 순서를 사용하여 코딩되는 적어도 하나의 레벨을 포함한다. 따라서, 일부 실시예에서, 깊이 우선 코딩 순서를 갖는 레벨의 노드 및 이 노드의 자손 노드(descendant node)는 트리 구조의 서브 트리 구조를 형성할 수 있다. 깊이 우선 인코딩 순서를 갖는 레벨이 비어 있지 않은 입방체 공간에 각각 대응하는 다수의 노드를 포함할 때, 다수의 노드 및 이들의 대응하는 자손 노드는 다수의 서브 트리 구조를 형성할 수 있다. 다수의 서브트리 구조는 일부 실시예에서 병렬로 코딩될 수 있다.
도 14는 깊이 우선 코딩 순서를 예시하는 옥트리 구조(1400)의 도면을 도시한다. 옥트리 구조(1400)에서 음영 노드는 비어 있지 않은 입방체 공간에 대응하는 노드이다. 옥트리 구조(1400)는 옥트리 구조(1300)와 동일한 포인트 클라우드 점유 지오메트리에 대응할 수 있다. 음영 노드에 대한 점유 코드는 도 14에 도시된 0에서 8까지의 깊이 우선 코딩 순서로 코딩될 수 있다.
도 14의 예에서, 노드 "0"은 PD0과 같은 임의의 적합한 파티션 깊이에 있을 수 있고, 노드 "0"의 자식 노드는 파티션 깊이 PD0+1에 있으며, 노드 "0"의 손자 노드는 파티션 깊이 PD0+2에 있다. 도 14의 예에서, 파티션 깊이 PD0+1에 있는 노드는 깊이 우선 코딩 순서로 코딩될 수 있다. 파티션 깊이 PD0+1에 있는 노드는 비어 있지 않은 공간에 대응하는 2개의 노드를 포함한다. 2개의 노드 및 이들 각각의 자손 노드는 제1 서브 옥트리 구조(1410) 및 제2 서브 옥트리 구조(1420)를 형성할 수 있고, 2개의 노드는 각각 2개의 서브 옥트리 구조의 루트(root) 노드라고 할 수 있다.
도 14의 깊이 우선 코딩 순서는 깊이 우선 코딩 순서의 선순위 버전(preorder version)이라고 한다. 깊이 우선 코딩 순서의 선순위 버전에서, 각 서브 옥트리 구조에 대해, 서브 옥트리 구조의 자식 노드를 방문하기 전에 먼저 서브 옥트리의 루트 노드를 방문한다. 또한, 가장 깊은 노드를 먼저 방문한 다음 부모 노드의 형제 노드까지 추적한다.
도 14의 예에서, 제1 서브 옥트리 구조(1410) 및 제2 서브 옥트리 구조(1420)는 일부 구현에서 병렬 처리로 코딩될 수 있다. 예를 들어, 노드 1과 노드 5를 동시에 방문할 수 있다. 일부 예에서, 재귀 프로그래밍 또는 스택 데이터 구조가 깊이 우선 코딩 순서를 구현하는 데 사용될 수 있다.
일부 실시예에서, 하이브리드 코딩 순서는 너비 우선 순회(코딩)로 시작하고, 여러 레벨의 너비 우선 순회 후에 깊이 우선 순회(코딩)가 가능해질 수 있다.
일부 예에서, 예측 트리 기반 지오메트리 코딩이 사용될 수 있다. 스패닝 트리(spanning tree)와 같은 예측 트리가 포인트 클라우드의 모든 포인트에 대해 구성될 수 있을 때, 예측 트리 기반 지오메트리 코딩을 사용할 수 있다. 일 예에서, 포인트 예측의 경우, 모든 조상을 사용할 수 있다.
도 15는 토끼의 포인트 클라우드(1500)에 걸쳐 있는 예측 트리(1510)의 일부를 도시한다. 일부 예에서, 예측 트리(1510)에서의 포인트의 위치는 그의 부모 포인트의 위치로부터, 또는 그의 부모 및 그의 조부모 포인트의 위치로부터 예측될 수 있다.
일부 예에서, 트리수프 기반 지오메트리 코딩이 사용될 수 있다. 트리수프 기반 지오메트리 코딩 접근법은 객체의 표면을 일련의 삼각형 메시(triangle mesh)로 나타낼 수 있다. 일 예에서, 트리수프 기반 지오메트리 코딩 접근법은 조밀한 표면 포인트 클라우드에 적용된다. 트리수프 기반 지오메트리 코딩을 사용하는 디코더는 재구성된 포인트 클라우드의 밀도를 보장하기 위해, 지정된 복셀 그래뉼래러티(granularity)의 메시 표면으로부터 포인트 클라우드를 생성할 수 있다. 본 개시의 일 측면에 따르면, 트리수프 기반 지오메트리 코딩은 원래 포인트 클라우드에 왜곡을 도입할 수 있지만, 비트스트림 크기를 줄이는 이점을 제공할 수 있다.
속성 코딩을 위해 여러 기술이 사용될 수 있다. 기술은 예측 기반 속성 코딩, 리프팅 기반 속성 코딩, RAHT(region adaptive hierarchical transform) 기반 속성 코딩 등을 포함한다. 예측 기반 속성 인코딩, 리프팅 기반 속성 인코딩, RAHT 기반 속성 인코딩 등에 대해서는 각각 후술한다.
단순함을 위해, 하나의 상세 레벨(level of detail, LoD)이 다음 설명에서 사용된다. 예측 기반 속성 코딩의 경우,
Figure pct00008
은 포인트 클라우드의 포인트와 연관된 일련의 위치를 표시한다. 다차원 데이터로 표현되는 각 위치에 대해, 한 차원의 모튼(Morton) 코드가 위치와 연관되도록 결정될 수 있다.
Figure pct00009
은 위치
Figure pct00010
와 연관된 모튼 코드를 표시한다. 예측 기반 속성 코딩은 정렬(sorting) 단계와 뒤따르는 코딩 단계를 포함한다. 정렬 단계에서, 포인트 클라우드의 포인트는 연관된 모튼 코드에 따라 예를 들어, 오름차순으로 정렬된다. 예를 들어,
Figure pct00011
는 정렬 단계에 따라 순서화된 포인트에 대한 인덱스 배열을 표시한다.
코딩 단계에서, 인코더/디코더는 반복에서
Figure pct00012
로 정의된 순서에 따라 포인트를 각각 압축/압축해제할 수 있다. 각 반복
Figure pct00013
에서, I에 의해 정의된 순서에 따라 포인트
Figure pct00014
이 선택된다.
Figure pct00015
에서 여러 이전 포인트까지의 거리를 순서대로 분석했다. 예를 들어,
Figure pct00016
(예:
Figure pct00017
=64)는 분석된 이전 포인트의 수를 표시한다. 분석된 포인트에 기반하여,
Figure pct00018
(예:
Figure pct00019
=3)개의
Figure pct00020
의 가장 가까운 이웃을 선택하여 속성 예측에 사용한다. 구체적으로, 일부 예에서, 포인트 i의 속성
Figure pct00021
는 포인트 i에 대한 가장 가까운 이웃의 거리에 기반하여, 가중된
Figure pct00022
개의 가장 가까운 이웃
Figure pct00023
의 속성의 선형 보간 프로세스를 사용하여 예측될 수 있다. 일 예에서, 디코더 측에서
Figure pct00024
는 현재 포인트 i의 k-가장 가까운 이웃 세트를 표시하며,
Figure pct00025
는 이웃의 디코딩/재구성된 속성 값을 표시하고,
Figure pct00026
는 현재 포인트 i까지의 거리를 표시한다. 그다음, 이웃(이웃 포인트)의 속성 값과 현재 포인트까지의 거리에 기반하여, 거리 기반 가중 평균 계산에 따라 현재 포인트 i에 대한 예측 속성 값
Figure pct00027
을 계산할 수 있다. 예를 들어, 현재 포인트 i에 대한 예측 속성 값
Figure pct00028
은 수식 1에 따라 계산될 수 있다.
Figure pct00029
수식 (1)
리프팅 기반 속성 코딩의 경우, 예측 기반 코딩에 추가 단계가 적용된다. 일 예에서, 업데이트 연산자의 제1 단계와 적응적 양자화의 제2 단계라고 하는 2개의 추가 단계가 사용된다.
도 16은 G-PCC의 인코더 측의 리프팅 기반 속성 코딩에서 직접/순방향 변환 아키텍처(1600)를 사용하는 도면을 도시한다. 일부 예에서, 예측 및 업데이트를 용이하게 하기 위해, 직접/순방향 변환 아키텍처(1600)는 속성 신호를 분해하기(decompose) 위해 다수의 예측/업데이트(prediction/update, P/U) 분해 스테이지(stage)들을 포함한다. 다수의 P/U 분해 스테이지 각각에서, 이전 스테이지로부터의 신호(근사(approximation) 신호)는 2개의 높은 상관(high-correlation) 세트로 분할된다. 일 예에서, G-PCC의 리프팅 기반 속성 인코딩 방식에서는 레벨 간 높은 상관 관계가 예상되는 세부 레벨(level of details, LoD) 구조를 활용하여 분할을 수행하고, 각 레벨은 가장 가까운 이웃 검색(nearest neighbor search)에 의해 구성되어, 비균일 포인트 클라우드를 구조화된 데이터로 조직한다. 스테이지(N)에서의 P/U 분해 스테이지는 세부 신호(detail signal) D(N) 및 근사 신호 L'(N)을 생성하고, 이는 다음 스테이지(예: 스테이지(N-1))에서 다시 D(N-1) 및 L'(N-1)로 분해된다. 일 예에서, 베이스 레이어 근사 신호 L'(0)이 획득될 때까지 분해가 반복적으로 적용된다. 결과적으로, 다양한 세부 레벨로 구성된 입력 속성 신호 자체를 코딩하는 대신에, 세부 신호 D(N), D(N-1), …, D(0), 베이스 레이어 근사 신호 L'(0)는 리프팅 기반 속성 코딩 방식으로 코딩될 수 있다.
P/U 분해 단계의 적용은 D(N), …, D(0)의 계수에 희소 서브대역(sparse sub-band)을 발생시키며, 그에 따라 변환 코딩 이득 이점을 제공한다.
도 17은 G-PCC의 디코더 측에서의 리프팅 기반 속성 코딩에서 역변환 아키텍처(1700)를 사용하는 도면을 도시한다. 역변환 아키텍처(1700)는 속성 신호를 재구성하기 위해 다수의 예측/업데이트(prediction/update, P/U) 병합 스테이지를 포함한다. 각 P/U 병합 스테이지에서, 세부 신호를 디코딩하고 이전 스테이지로부터의 근사 신호와 병합하여, 다음 P/U 병합 스테이지에 제공할 신규 근사 신호를 생성한다.
RAHT 기반 속성 코딩을 위해, 적응적 계층적 변환이 사용될 수 있다.
도 18은 G-PCC의 인코더 측에서 사용될 수 있는 RAHT 순방향 변환 아키텍처(1810)의 도면 및 G-PCC의 디코더 측에서 사용될 수 있는 RAHT 역변환 아키텍처(1820)의 도면을 도시한다. 도 18의 예에서
Figure pct00030
Figure pct00031
이고, w0은 입력 계수 F l +1,2 n 의 가중치의 표기이며, w1F l +1,2 n +1과 동일하다.
본 개시의 일 측면에 따르면, 예측 기반 지오메트리 코딩 및/또는 속성 코딩 방법에서, 현재 포인트의 지오메트리 정보 및/또는 속성 정보의 예측은 예측된 이웃 포인트(들)로부터 가중 평균을 계산하는 것에 기반한다. 가중 평균 계산의 가중치는 일반적으로 예를 들어, 수식(1)을 사용하는, 예측된 이웃 포인트와 현재 포인트 사이의 거리에 기반한다.
본 개시의 일 측면에 따르면, 수식 (1)의 계산은 부동 소수점 연산을 포함한다. 예를 들어, 예측된 이웃 포인트의 속성 값에 대한 가중치는 예측된 이웃 포인트에서 현재 포인트까지의 거리의 역수에 기반하여 계산된다. 예측된 이웃 포인트에서 현재 포인트까지의 거리의 역수는 나누기 연산을 사용하여 계산될 수 있으며, 피제수(dividend)는 1이고 제수(divisor)는 예측된 이웃 포인트에서 현재 포인트까지의 거리이다. 컴퓨터 기술에서, 정수 나누기 연산은 거리가 1보다 클 때 0을 출력할 수 있다. 일반적으로 부동 소수점 분할 연산은 상대적으로 높은 정밀도를 획득하기 위해, 예측된 이웃 포인트와 현재 포인트 사이의 거리의 역수를 계산하는 데 사용된다.
또한, 일부 예에서, 이웃 포인트에서 현재 포인트까지의 거리의 범위는 포인트 클라우드에서 포인트들의 불규칙한 분포로 인해 상당히 변할 수 있다. 부동 소수점 연산은 범위와 정밀도 간의 균형을 지원할 수 있으며, 예를 들어, 수식 (1)에 따라, 거리 기반 가중 평균 계산을 구현하는 데 사용될 수 있다. 예를 들어, 일부 컴퓨터 기술에서 부동 소수점 연산을 구현하는 경우, 수학 연산(예: 더하기 연산, 빼기 연산, 곱하기 연산, 나누기 연산 등)에서 하나 이상의 피연산자(operand)가 부동 소수점 데이터 유형으로 선언된다(declared). 그런 다음, 부동 소수점 연산을 사용하여 수학 연산을 수행한다.
일반적으로 부동 소수점 연산은 하드웨어 지원을 필요로 할 수 있으며 하드웨어 구현에 친숙하지 않다. 예를 들어, 빠른 부동 소수점 처리 속도를 위해 FPU(floating point unit)에 의해 부동 소수점 연산을 실행해야 할 수 있다. 그러나, 임베디드 프로세서와 같은 많은 프로세서에는 FPU의 하드웨어 지원이 없을 수 있다.
본 개시의 측면은 거리 기반 가중 평균을 계산할 때 부동 소수점 연산 대신에 정수 연산을 사용하는 기술을 제공한다. 일부 예에서, 거리 기반 가중 평균 방법은 지오메트리 코딩에 사용된다. 일부 예에서, 거리 기반 가중 평균 방법은 속성 코딩에 사용된다.
본 개시에서 개시된 기술은 일부 예에서 개별적으로 사용될 수 있음에 유의한다. 일부 예에서, 2개 이상의 기술이 조합되어 일부 구현에서 사용될 수 있다.
수식의 δ j δ t 와 같은 거리 기반 가중 평균 방법에서 사용되는 거리가 데카르트 좌표계, 구형 좌표계 등과 같은 임의의 좌표계에서 임의의 거리 메트릭(metric)(예: L1 표준 거리(norm distance), L2 표준 거리)일 수 있음에 유의한다.
일부 예에서, 현재 포인트 i에 대해,
Figure pct00032
에서 가장 가까운 이웃이 현재 포인트 i의 지오메트리 정보 및/또는 속성 정보를 예측하기 위한 예측자로서 결정된다.
일부 예에서, 현재 포인트 i에 대해, 현재 포인트 i의 지오메트리 정보 및/또는 속성 정보는 이웃 포인트들에 대한 동일한 가중치에 기반하여 이웃 포인트들의 평균으로서 예측될 수 있다. 예를 들어, 수식 (1)은 이웃 포인트에 대해 동일한 가중치에 기반하여 수식 (2)로 변환된다:
Figure pct00033
수식 (2)
여기서
Figure pct00034
는 현재 포인트 i의 k-가장 가까운 이웃 포인트들의 세트를 표시하며, k는 세트
Figure pct00035
의 이웃 포인트들의 수를 표시한다. 현재 포인트 i에 대한 예측 속성 값
Figure pct00036
은 이웃 포인트의 예측 속성의 평균 속성으로 계산될 수 있다.
수식 (2)는 예측된 이웃 포인트와 현재 포인트 사이의 거리의 역수를 계산하지 않음을 유의한다. 수식 (2)에 따른 계산은 정수 연산을 사용하여 수행될 수 있다. 예를 들어, 이웃 포인트의 예측 속성 값(
Figure pct00037
의 경우
Figure pct00038
), 이웃 포인트의 수(
Figure pct00039
) 등과 같은 수식 (2)의 피연산자는 정수 데이터 유형으로 선언된다. 예측 속성 값의 합은 정수 추가 연산으로 수행될 수 있다. 일 예에서, 반올림(rounding) 연산은 내림 연산(rounding down operation)이고, 수식 (2)는 수식 (3)으로 변환되며, 예측 속성 값의 합을 정수 k로 나누는 연산은 정수 나누기 연산으로 수행될 수 있다.
Figure pct00040
는 결과가 정수가 되는 내림 연산을 지시한다.
Figure pct00041
수식 (3)
반올림 연산이 내림 연산이 아닐 때, 수식 (2)가 적절하게 조정될 수 있음을 유의한다. 일 예에서, 반올림 연산은 가장 가까운 정수 연산으로 반올림하는 것이며, 수식 (2)는 수식 (4)로 변환될 수 있으며, 수식 (4)는 정수 연산으로 수행될 수 있다.
Figure pct00042
수식 (4)
일부 실시예에서, 가중치 계산은 부동 소수점 연산 대신에 정수 곱셈, 정수 나누기 등과 같은 정수 연산을 사용하여 수행될 수 있도록, 적절하게 변환될 수 있다. 예를 들어, 가중치 계산은 정밀도를 높이기 위해 업스케일링된 피제수로 변환된다. 업스케일링된 피제수는 절대값이 1보다 큰 정수이다. 일부 예에서, δ j 에 기반한 변환 가중치
Figure pct00043
는 수식 (5)에 따라 계산될 수 있다:
Figure pct00044
수식 (5)
여기서, MN은 양의 정수이다. 일 예에서,
Figure pct00045
, 및
Figure pct00046
이다. 업스케일링된 피제수는 수식 (5)의 나누기 연산에서의 정밀도를 증가시킬 수 있다. 나누기 연산은 정밀도를 높이는 정수 나누기 연산을 사용하여 수행될 수 있다.
일부 예에서, M은 원하는 정밀도에 기반하여 적절하게 선택되고, N은 정수 나누기 연산에서 가장 가까운 정수로 반올림하는 데 사용된다. 수식 (5)의 계산은 비트 시프트 연산, 정수 가산 연산, 정수 나누기 연산 등과 같은 정수 연산을 사용하여 수행될 수 있다. 일 구현 예에서, M, N,
Figure pct00047
등과 같은 수식 (5)의 피연산자는 정수 데이터 유형으로 선언되며, 변환 가중치
Figure pct00048
는 정수 데이터 유형으로 선언된다.
일 예에서, 변환 가중치에 기반하여, 수식 (6)에 따른 계산에 기반하여 현재 포인트의 속성을 예측할 수 있다:
Figure pct00049
수식 (6)
수식 (6)의 연산은 정수 곱셈, 정수 덧셈, 정수 나누기 등과 같은 정수 연산을 사용하여 수행될 수 있다. 일 구현 예에서,
Figure pct00050
,
Figure pct00051
에 대한
Figure pct00052
와 같은 수식 (6)의 피연산자는 정수 데이터 유형으로 선언된다.
내림(floor), 올림(ceiling), 가장 가까운 정수로 반올림 등과 같은 임의의 적합한 반올림 연산이 사용될 수 있음에 유의한다.
일 예에서, 내림 연산을 사용할 때, 수식 (6)의 나누기 연산에 정수 나누기 연산이 사용될 수 있으며, 수식 (6)은 수식 (7)을 사용하여 표현될 수 있다.
Figure pct00053
수식 (7)
다른 예에서, 가장 가까운 정수로 반올림하는 연산이 사용될 때, 수식 (6)은 수식 (8)로 변환될 수 있으며, 수식 (8)의 나누기 연산은 정수 나누기 연산을 사용하여 수행될 수 있다.
Figure pct00054
수식 (8)
일부 예에서, 수식 (6)-수식 (8)에서
Figure pct00055
와 같은 제수가 계산된다. 제수가 0과 같으면, 상이한 방법을 사용하여 현재 포인트의 속성
Figure pct00056
을 결정할 수 있다. 일 예에서, 제수가 0과 같을 때, 가장 가까운 이웃 포인트가 현재 포인트의 속성을 예측하는 예측자로 사용될 수 있다. 다른 예에서, 제수가 0과 같을 때, 현재 포인트의 속성은 예를 들어, 수식 (3)을 사용하여 이웃 포인트의 속성의 평균으로 계산된다.
본 개시의 일 측면에 따르면, M의 값이 클수록 변환 가중치의 정밀도를 향상시킬 수 있지만, 오버플로, 정수 나누기 연산 속도 저하 등과 같은 문제를 일으킬 수도 있다. 일부 실시예에서, 변환 가중치의 값은 문제를 피하기 위해 적응적으로 조정될 수 있다. 일부 예에서, 변환 가중치의 값은 변환 가중치의 상한에 기반하여 조정된다. 일 예에서, 상한은 파라미터 L에 기반하여 정의된다. L은 미리 정의된 정수이다. 예를 들어, 상한은
Figure pct00057
로 설정된다. 일부 예에서, 변환 가중치가 상한보다 크거나 같으면, 변환 가중치 모두가
Figure pct00058
보다 작을 때(예: 최대 변환 가중치가
Figure pct00059
보다 작음)까지 변환 가중치 모두가 다운스케일링된다.
본 개시의 일 측면에 따르면, 적합한 변환 모델이 거리 기반 가중 모델에 사용될 수 있다. 예를 들어, 선형 모델, 이차 모델 및/또는 다른 비선형 모델이 거리 기반 가중 모델에서 사용될 수 있다. 그다음, 거리 기반 가중 모델에 따른 가중치 계산을 적절히 변환할 수 있으므로, 정수 연산으로 수행할 수 있다.
일 예에서, 거리 기반 가중 모델은 변환 모델
Figure pct00060
을 사용할 수 있으며, 여기서 A 및 B는 양의 정수이고,
Figure pct00061
는 이웃 포인트와 현재 포인트 사이의 거리이다. 일부 실시예에서, 가중치 계산은 부동 소수점 연산 대신에, 정수 곱셈, 정수 나누기 등과 같은 정수 연산을 사용하여 수행될 수 있도록 적절하게 변환될 수 있다. 예를 들어, 가중치 계산은 정밀도를 높이기 위해 업스케일링된 피제수로 변환된다. 업스케일링된 피제수는 절대값이 1보다 큰 정수이다. 일부 예에서, δ j 에 기반한 변환 가중치
Figure pct00062
는 수식 (9)에 따라 계산될 수 있다:
Figure pct00063
수식 (9)
여기서 MN은 양의 정수이다.
본 개시의 일 측면에 따르면, 정수 곱셈 연산을 가속화하기 위해 룩업 테이블(lookup table)이 사용될 수 있다. 예를 들어, 정수 곱셈 연산을 미리 계산할 수 있으며 결과는 룩업 테이블에 저장된다.
일 예에서,
Figure pct00064
의 값은 제1 범위의 정수이고, 속성의 값은 제2 범위의 정수이며, 제1 범위의 제1 값과 제2 범위의 제2 값의 모든 가능한 조합의 곱셈 결과가 미리 계산될 수 있으며, 곱셈 결과는 룩업 테이블에 저장된다. 룩업 테이블은 제1 입력 값과 제2 입력 값에 기반하여 곱셈 결과를 생성할 수 있다. 일 예에서, 룩업 테이블의 연산은 수식 (10)에 의해 나타낼 수 있다.
Figure pct00065
수식 (10)
변환 가중치에 기반하여, 수식 (11)에 따라 현재 포인트의 예측 속성을 계산할 수 있다:
Figure pct00066
수식 (11)
일부 예에서, M, N, L, A, B 등과 같은 상기 설명에서 사용된 다양한 파라미터들이 고정되고, 인코더 측 및 디코더 측에 의해 알려짐에 유의한다. 일부 다른 예에서, 인코더는 M, N, L, A, B 등과 같은 다양한 파라미터를 결정할 수 있고, 시퀀스 적응을 위해 인코더 측에서 디코더 측으로 비트스트림의 파라미터를 시그널링할 수 있다. 디코더는 비트스트림으로부터 파라미터를 디코딩할 수 있으며, 이웃 포인트 및 디코딩된 파라미터에 기반하여 현재 포인트의 정보를 예측할 수 있다. 일 예에서, 다양한 파라미터는 시퀀스 파라미터 세트, 속성 파라미터 세트, 지오메트리 파라미터 세트, 슬라이스 헤더 등과 같은 고레벨 구문으로 시그널링될 수 있다.
도 19는 본 개시의 실시예에 따른 프로세스(1900)를 개략적으로 설명하는 흐름도를 도시한다. 프로세스(1900)는 포인트 클라우드에 대한 인코딩 프로세스 또는 디코딩 프로세스와 같은 코딩 프로세스 동안 사용될 수 있다. 다양한 실시예에서, 프로세스(1900)는 단말 디바이스(110)의 처리 회로, 인코더(203) 및/또는 디코더(210), 인코더(700), 및/또는 디코더(800) 등의 기능을 수행하는 처리 회로와 같은 처리 회로에 의해 실행된다. 일부 실시예에서, 프로세스(1900)는 소프트웨어 명령어로 구현되며, 따라서, 처리 회로가 소프트웨어 명령어를 실행할 때, 처리 회로는 프로세스(1900)를 수행한다. 프로세스는 (S1901)에서 시작하여 (S1910)으로 진행한다.
(S1910)에서, 포인트 클라우드의 현재 포인트와 연관된 정보를 코딩(인코딩/디코딩)하기 위한 예측 모드를 결정한다. 예측 모드에서는 현재 포인트의 하나 이상의 이웃 포인트에 기반하여 현재 포인트와 연관된 정보를 예측한다.
일부 예에서, 현재 포인트와 연관된 정보는 현재 포인트의 지오메트리 정보이다. 일부 예에서, 현재 포인트와 연관된 정보는 현재 포인트의 속성 정보이다.
(S1920)에서, 하나 이상의 이웃 포인트에서 현재 포인트 까지의 거리에 기반하여, 거리 기반 가중 평균 값을 계산한다. 계산하는 동안 정수 연산을 사용하여 적어도 가중치 값을 계산하고, 적어도 가중치 값 계산에는 부동 소수점 연산을 사용하지 않는다.
일부 예에서, 가중치 값을 계산하기 위해, 가중치 계산의 다양한 연산에 대한 피연산자는 부동 소수점 데이터 유형이 아니다. 일부 예에서, 다양한 수학적 연산(예: 덧셈 연산, 뺄셈 연산, 곱셈 연산, 나누기 적용 등)의 피연산자는 정수 데이터 유형으로 선언된다. 부동 소수점 데이터 유형은 가중치 계산의 수학 연산에서 제외된다.
본 개시의 일 측면에 따르면, 일부 컴퓨터 기술에서, 수학 연산의 피연산자가 부동 소수점 데이터 유형일 때, 수학 연산은 부동 소수점 기반 연산을 사용하여 수행된다. 수학 연산의 모든 피연산자가 부동 소수점 데이터 유형이 아닐 때, 부동 소수점 연산을 피할 수 있다. 예를 들어, 제수와 피제수가 모두 정수 데이터 유형일 때 정수 나누기 연산이 수행되고, 제수 또는 피제수 중 하나가 부동 소수점 숫자인 경우 부동 소수점 나누기가 실행된다.
일부 예에서, 가중치 계산은 나누기 연산에서 업스케일링된 피제수를 사용하도록 변환된다. 예를 들어, 이웃 포인트의 가중치 정보에 대한 가중치(변환 가중치라고 함)는 업스케일링된 피제수를 가지는 나누기 연산을 통해 계산된다. 업스케일링된 피제수는 절대값이 1보다 큰 정수이며, 제수는 이웃 포인트와 현재 포인트 사이의 거리에 기반한다. 일 예에서, 피제수는 비트별 좌측 시프트(bitwise left shift)에 기반하여 업스케일링된다. 일 예에서, 피제수는 비트별 좌측 시프트에 의해 계산된 제1 정수와 제수의 비트별 우측 시프트에 의해 계산된 제2 정수의 합에 기반한다.
일부 예에서, 하나 이상의 이웃 포인트의 가중 속성의 합이 계산된다. 가중 속성은 이웃 포인트와 연관된 속성과 변환 가중치를 곱하여 계산된다. 일 예에서, 가중 속성은 속성 및 변환 가중치에 기반한 룩업 작동에 따라 룩업 테이블로부터 출력된다. 또한, 하나 이상의 이웃 포인트에 대한 변환 가중치의 합을 계산한다. 그 다음, 거리 기반 가중 평균 값은 가중 속성의 합을 변환 가중치의 합으로 나눈 값에 기반하여 결정된다.
일부 예에서, 변환 가중치 중 적어도 하나가 상한보다 큰 것에 응답하여 변환 가중치가 다운스케일링(예: 비트별 우측 시프트를 사용함)될 수 있다.
일 예에서, 변환 가중치의 합이 0인 것에 응답하여, 거리 기반 가중 평균 값이 하나 이상의 이웃 포인트 중 가장 가까운 이웃 포인트에 기반하여 결정된다.
또 다른 예로, 변환 가중치의 합이 0인 것에 응답하여, 거리 기반 가중 평균 값이 하나 이상의 이웃 포인트의 속성 값의 평균에 기반하여 결정된다.
(S1930)에서, 거리 기반 가중 평균 값에 기반하여 현재 포인트에 연관된 정보를 결정한다.
그리고, 프로세스는 (S1999)로 진행하여 종료한다.
본 명세서에 개시된 기술은 개별적으로 또는 임의의 순서로 조합되어 사용될 수 있다. 또한, 각각의 기술(예: 방법, 실시예), 인코더 및 디코더는 처리 회로(예: 하나 이상의 프로세서 또는 하나 이상의 집적 회로)에 의해 구현될 수 있다. 일부 예에서, 하나 이상의 프로세서는 컴퓨터가 판독 가능한 비일시적 매체에 저장된 프로그램을 실행한다.
위에서 설명된 기술은 컴퓨터가 판독 가능한 명령어를 사용하고 하나 이상의 컴퓨터가 판독 가능한 매체에 물리적으로 저장된 컴퓨터 소프트웨어로서 구현될 수 있다. 예를 들어, 도 20은 개시된 주제의 특정 실시예를 구현하기에 적합한 컴퓨터 시스템(2000)을 도시한다.
컴퓨터 소프트웨어는 임의의 적절한 머신 코드 또는 컴퓨터 언어를 사용하여 코딩될 수 있으며, 이는 컴퓨터 중앙 처리 유닛(central processing unit, CPU), 그래픽 처리 유닛(Graphics Processing Unit, GPU) 등과 같은 처리 회로에 의해, 직접 또는 해석(interpretation), 마이크로 코드 실행 등을 통해 실행될 수 있는 명령어를 포함하는 코드를 생성하도록 어셈블리, 컴파일, 링크 또는 유사한 메커니즘의 적용을 받을 수 있다.
명령어는 예를 들어 개인용 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 폰, 게임 디바이스, 사물 인터넷 디바이스 등을 포함하는 다양한 유형의 컴퓨터 또는 그 컴포넌트에서 실행될 수 있다.
컴퓨터 시스템(2000)에 대해 도 20에 도시된 컴포넌트는 본질적으로 예시적인 것이며, 본 개시의 실시예를 구현하는 컴퓨터 소프트웨어의 사용 또는 기능의 범위에 대한 어떠한 제한도 제안하도록 의도되지 않는다. 컴포넌트의 구성은 컴퓨터 시스템(2000)의 예시적인 실시예에 예시된 컴포넌트 중 임의의 하나 또는 조합과 관련된 임의의 종속성 또는 요건을 갖는 것으로 해석되어서는 안된다.
컴퓨터 시스템(2000)은 특정한 휴먼 인터페이스 입력 디바이스를 포함할 수 있다. 이러한 휴먼 인터페이스 입력 디바이스는 예를 들어, 촉각 입력(예: 키스트로크(keystroke), 스와이프, 데이터 글러브 움직임), 오디오 입력(예: 음성, 박수), 시각적 입력(예: 제스처), 후각 입력(도시되지 않음)을 통해 한 명 이상의 인간 사용자에 의한 입력에 응답할 수 있다. 휴먼 인터페이스 디바이스는 또한 오디오(예: 음성, 음악, 주변 소리), 이미지(예: 스캔된 이미지, 정지 이미지 카메라로부터 획득하는 사진 이미지), 비디오(예: 2차원 비디오, 입체 비디오를 포함한 3차원 비디오)와 같이 인간의 의식적 입력과 직접 관련이 없는 특정 미디어를 캡처하는 데 사용될 수도 있다.
입력 휴먼 인터페이스 디바이스는 키보드(2001), 마우스(2002), 트랙패드(2003), 터치 스크린(2010), 데이터 글러브(도시되지 않음), 조이스틱(2005), 마이크(2006), 스캐너(2007), 카메라(2008) 중 하나 이상(각 도시된 것 중 하나만)을 포함할 수 있다.
컴퓨터 시스템(2000)은 또한 특정 휴먼 인터페이스 출력 디바이스를 포함할 수 있다. 이러한 휴먼 인터페이스 출력 디바이스는 예를 들어 촉각 출력, 소리, 빛 및 냄새/맛을 통해 한 명 이상의 인간 사용자의 감각을 자극할 수 있다. 이러한 휴먼 인터페이스 출력 디바이스는, 촉각 출력 디바이스(예를 들어, 터치 스크린(2010), 데이터 글러브(도시되지 않음), 또는 조이스틱(2005)에 의한 촉각 피드백을 포함하지만, 입력 디바이스로서 기능하지 않는 촉각 피드백 디바이스이 있을 수도 있음), 오디오 출력 디바이스(예: 스피커(2009), 헤드폰(도시되지 않음)), 시각 출력 디바이스(예: CRT 스크린, LCD 스크린, 플라즈마 스크린, OLED 스크린을 포함하는 스크린(2010)를 포함하며, 이들 각각은 터치 스크린 입력 능력을 가지고 있을 수도 없을 수도 있고, 이들 각각은 촉각 피드백 능력을 가지고 있을 수도 없을 수도 있으며, 일부는 2차원 시각 출력 또는 가상 현실 안경(도시되지 않음), 홀로그래픽 디스플레이 및 스모크 탱크(smoke tank, 도시되지 않음)와 같은 스테레오그래픽 출력 수단을 통한 3차원 출력이 가능함), 및 프린터(도시되지 않음)를 포함할 수 있다.
컴퓨터 시스템(2000)은 또한 사람이 액세스할 수 있는 저장 디바이스 및 이와 연관된 매체로서, CD/DVD를 가진 CD/DVD ROM/RW(2020) 또는 이와 유사한 매체(2021)를 포함하는 광학 매체, 썸 드라이브(thumb-driver)(2022), 탈착식 하드 드라이브 또는 솔리드 스테이트 드라이브(2023), 테이프 및 플로피 디스크(도시되지 않음)와 같은 레거시 자기 매체, 보안 동글(도시되지 않음)과 같은 특수 ROM/ASIC/PLD 기반 디바이스 등을 포함한다.
당업자는 또한 현재 개시된 주제와 관련하여 사용되는 용어 "컴퓨터가 판독 가능한 매체"가 전송 매체, 반송파, 또는 다른 일시적 신호를 포함하지 않는다는 것을 이해해야 한다.
컴퓨터 시스템(2000)은 또한 하나 이상의 통신 네트워크(2055)에 대한 인터페이스(2045)를 포함할 수 있다. 네트워크(2055)는 예를 들어 무선, 유선, 광일 수 있다. 네트워크는 또한 로컬, 광역, 대도시, 차량 및 산업, 실시간, 지연 허용 등일 수 있다. 네트워크의 예로는 이더넷과 같은 근거리 네트워크, 무선 LAN, GSM, 3G, 4G, 5G, LTE 등을 포함하는 셀룰러 네트워크, 케이블 TV, 위성 TV 및 지상파 방송 TV를 포함하는 TV 유선 또는 무선 광역 디지털 네트워크, CANBus를 포함하는 차량 및 산업용 등이 포함된다. 특정 네트워크는 일반적으로 특정 범용 데이터 포트 또는 주변기기 버스(2049)(예를 들어, 컴퓨터 시스템(2000)의 USB 포트)에 부착된 외부 네트워크 인터페이스 어댑터를 필요로 하며; 다른 것들은 아래에서 설명된 바와 같이, 일반적으로 시스템 버스에 부착되는 것(예를 들어, PC 컴퓨터 시스템에 대한 이더넷 인터페이스 또는 스마트 폰 컴퓨터 시스템에 대한 셀룰러 네트워크 인터페이스)에 의해 컴퓨터 시스템(2000)의 코어에 통합된다. 이러한 네트워크 중 임의의 것을 사용하여 컴퓨터 시스템(2000)은 다른 엔티티와 통신할 수 있다. 이러한 통신은 예를 들어, 로컬 또는 광역 디지털 네트워크를 사용하는 다른 컴퓨터 시스템에 대한, 단방향, 수신 전용(예를 들어, 방송 TV), 단방향 송신 전용(예를 들어, CANbus에서 특정 CANbus 디바이스로) 또는 양방향일 수 있다. 특정 프로토콜 및 프로토콜 스택이 위에서 설명한 바와 같이 네트워크 및 네트워크 인터페이스 각각에서 사용될 수 있다.
전술한 휴먼 인터페이스 디바이스, 사람이 액세스할 수 있는 저장 디바이스 및 네트워크 인터페이스는 컴퓨터 시스템(2000)의 코어(2040)에 부착될 수 있다.
코어(2040)는 하나 이상의 중앙 처리 유닛(Central Processing Unit, CPU)(2041), 그래픽 처리 유닛(Graphics Processing Unit, GPU)(2042), FPGA(Field Programmable Gate Areas) 형태의 특수 프로그래머블 처리 유닛(2043), 특정 태스크에 대한 하드웨어 가속기(2044), 그래픽 어댑터(2055) 등을 포함할 수 있다. 읽기 전용 메모리(Read-only memory, ROM)(2045), 랜덤 액세스 메모리(2046), 내부 비 사용자 액세스 가능 하드 드라이브, SSD 등과 같은 내부 대용량 스토리지(2047)와 함께 이러한 디바이스는 시스템 버스(2048)를 통해 연결될 수 있다. 일부 컴퓨터 시스템에서, 시스템 버스(2048)는 추가 CPU, GPU 등에 의한 확장을 가능하게 하기 위해 하나 이상의 물리적 플러그의 형태로 액세스할 수 있다. 주변 디바이스는 코어의 시스템 버스(2048)에 직접 또는 주변기기 버스(2049)를 통해 부착될 수 있다. 일 예에서, 스크린(2010)이 그래픽 어댑터(2050)에 연결될 수 있다. 주변 버스의 아키텍처에는 PCI, USB 등이 포함된다.
CPU(2041), GPU(2042), FPGA(2043), 및 가속기(2044)는 조합하여 전술한 컴퓨터 코드를 구성할 수 있는 특정 명령어를 실행할 수 있다. 이 컴퓨터 코드는 ROM(2045) 또는 RAM(2046)에 저장될 수 있다. 과도기 데이터(Transitional data)는 RAM(2046)에 저장될 수도 있지만 영구(permanent) 데이터는 예를 들어 내부 대용량 스토리지(2047)에 저장될 수 있다. 하나 이상의 CPU(2041), GPU(2042), 대용량 스토리지(2047), ROM(2045), RAM(2046) 등과 밀접하게 연관될 수 있는 캐시 메모리의 사용을 통해 임의의 메모리 디바이스에 대한 빠른 저장 및 검색을 가능하게 할 수 있다.
컴퓨터가 판독 가능한 매체는 다양한 컴퓨터 구현 작동을 수행하기 위한 컴퓨터 코드를 가질 수 있다. 매체 및 컴퓨터 코드는 본 개시의 목적을 위해 특별히 설계되고 구성된 것이거나, 컴퓨터 소프트웨어 분야의 숙련자에게 잘 알려져 있고 이용 가능한 종류일 수 있다.
제한이 아닌 예로서, 아키텍처(2000)를 갖는 컴퓨터 시스템, 특히 코어(2040)는 하나 이상의 유형의 컴퓨터가 판독 가능한 매체에 구현된 소프트웨어를 실행하는 프로세서(들)(CPU, GPU, FPGA, 가속기 등을 포함)의 결과로서 기능을 제공할 수 있다. 이러한 컴퓨터가 판독 가능한 매체는 위에서 소개된 사용자 액세스 가능 대용량 스토리지 또는 코어 내부 대용량 스토리지(2047) 또는 ROM(2045)과 같은 비 일시적 특성을 가진 코어(2040)의 특정 스토리지와 관련된 매체일 수 있다. 본 개시의 다양한 실시예를 구현하는 소프트웨어는 이러한 디바이스에 저장되고 코어(2040)에 의해 실행될 수 있다. 컴퓨터가 판독 가능한 매체는 특정 필요성에 따라 하나 이상의 메모리 디바이스 또는 칩을 포함할 수 있다. 소프트웨어는 코어(2040) 및 특히 그 안의 프로세서(CPU, GPU, FPGA 등을 포함)가 RAM(2046)에 저장된 데이터 구조를 정의하는 것과 소프트웨어에서 정의한 프로세스에 따라 이러한 데이터 구조를 수정하는 것을 포함하여, 여기에 설명된 특정 프로세스 또는 특정 프로세스의 일부를 실행하도록 할 수 있다. 추가로 또는 대안으로, 컴퓨터 시스템은 여기에 설명된 특정 프로세스나 특정 프로세스의 특정 부분을 실행하기 위해 소프트웨어 대신 또는 소프트웨어와 함께 작동할 수 있는 회로(예를 들어, 가속기(2044))에 배선(hardwired)되거나 구현된 로직의 결과로 기능을 제공할 수 있다. 소프트웨어에 대한 참조는 로직을 포함할 수 있으며 적절한 경우에 그 반대도 마찬가지이다. 컴퓨터가 판독 가능한 매체에 대한 참조는 실행을 위한 소프트웨어를 저장하는 회로(예: 집적 회로(IC)), 실행을 위한 로직을 구현하는 회로 또는 적절한 경우 둘 다를 포함할 수 있다. 본 개시는 하드웨어 및 소프트웨어의 임의의 적절한 조합을 포괄한다.
본 개시는 몇몇 예시적인 실시예를 설명했지만, 개시의 범위 내에 속하는 변경, 순열 및 다양한 대체 등가물이 있다. 따라서, 당업자는 본 명세서에 명시적으로 도시되거나 설명되지는 않았지만 본 개시의 원리를 구현하고 따라서 본 발명의 사상 및 범위 내에 있는 수많은 시스템 및 방법을 고안할 수 있음을 이해할 것이다.

Claims (20)

  1. 포인트 클라우드 코딩 방법으로서,
    포인트 클라우드의 현재 포인트와 연관된 정보를 코딩하기 위한 예측 모드를 사용하기로 결정하는 단계 - 상기 현재 포인트와 연관된 정보는 상기 현재 포인트의 하나 이상의 이웃 포인트에 기반하여 예측 모드에서 예측됨 -;
    정수 연산을 사용하여, 상기 하나 이상의 이웃 포인트에서 상기 현재 포인트까지의 거리에 기반한 거리 기반 가중 평균값을 계산하는 단계; 및
    상기 거리 기반 가중 평균값에 기반하여 상기 현재 포인트와 연관된 정보를 결정하는 단계
    를 포함하는 포인트 클라우드 코딩 방법.
  2. 제1항에 있어서,
    상기 현재 포인트와 연관된 정보는 상기 현재 포인트의 지오메트리 정보 및 상기 현재 포인트의 속성 정보 중 적어도 하나를 포함하는, 포인트 클라우드 코딩 방법.
  3. 제1항에 있어서,
    상기 거리 기반 가중 평균값을 계산하는 단계는,
    가중치 계산에서 부동 소수점 데이터 유형의 사용을 제외하는 단계
    를 포함하는, 포인트 클라우드 코딩 방법.
  4. 제1항에 있어서,
    상기 거리 기반 가중 평균값을 계산하는 단계는,
    피제수를 제수로 나누는 정수 나누기 연산에 기반하여 제1 이웃 포인트의 가중치 정보에 대한 제1 변환 가중치를 계산하는 단계 - 상기 피제수는 절대값이 1보다 큰 정수이고, 상기 제수는 상기 제1 이웃 포인트와 상기 현재 포인트 사이의 거리에 기반함 -
    를 포함하는, 포인트 클라우드 코딩 방법.
  5. 제4항에 있어서,
    상기 제1 변환 가중치를 계산하는 단계는,
    비트별 좌측 시프트(bitwise left shift)에 기반하여 상기 피제수를 획득하는 단계
    를 포함하는, 포인트 클라우드 코딩 방법.
  6. 제5항에 있어서,
    상기 제1 변환 가중치를 계산하는 단계는,
    상기 비트별 좌측 시프트에 의해 획득된 제1 정수와 상기 제수의 비트별 우측 시프트에 의해 획득된 제2 정수의 합에 기반하여, 상기 피제수를 결정하는 단계
    를 포함하는, 포인트 클라우드 코딩 방법.
  7. 제4항에 있어서,
    상기 거리 기반 가중 평균값을 계산하는 단계는,
    상기 하나 이상의 이웃 포인트의 가중 속성의 합을 계산하는 단계 - 상기 가중 속성 중 제1 가중 속성은 상기 제1 이웃 포인트와 연관되며, 상기 제1 이웃 포인트와 연관된 제1 속성과 상기 제1 변환 가중치의 곱셈에 기반하여 계산됨 -;
    상기 하나 이상의 이웃 포인트에 연관된 변환 가중치의 합을 계산하는 단계 - 상기 변환 가중치는 상기 제1 변환 가중치를 포함함 -; 및
    상기 가중 속성의 합을 상기 변환 가중치의 합으로 나눈 값에 기반하여 상기 거리 기반 가중 평균값을 결정하는 단계
    를 포함하는, 포인트 클라우드 코딩 방법.
  8. 제7항에 있어서,
    상기 제1 속성 및 제1 변환 가중치에 기반한 룩업 작동(lookup operation)에 응답하여 룩업 테이블로부터 출력되는 상기 제1 가중 속성을 수신하는 단계
    를 더 포함하는 포인트 클라우드 코딩 방법.
  9. 제7항에 있어서,
    상기 변환 가중치 중 적어도 하나가 상한보다 큰 것에 응답하여, 상기 변환 가중치를 각각 다운스케일링하는 단계
    를 더 포함하는 포인트 클라우드 코딩 방법.
  10. 제7항에 있어서,
    상기 변환 가중치의 합이 0인 것에 응답하여, 상기 하나 이상의 이웃 포인트 중 가장 가까운 이웃 포인트에 기반하여 상기 현재 포인트와 연관된 속성 값을 결정하는 단계; 및
    상기 변환 가중치의 합이 0인 것에 응답하여, 상기 하나 이상의 이웃 포인트의 속성의 평균에 기반하여 상기 현재 포인트와 연관된 속성 값을 결정하는 단계
    를 더 포함하는 포인트 클라우드 코딩 방법.
  11. 제1항에 있어서,
    변환 모델에 따라, 상기 거리에 기반하여 가중치를 계산하는 단계; 및
    상기 정수 연산을 사용하여 상기 가중치에 기반하여 상기 거리 기반 가중 평균값을 계산하는 단계 - 상기 변환 모델은 선형 모델, 이차 모델 및 비선형 모델 중 하나임 -
    를 더 포함하는 포인트 클라우드 코딩 방법.
  12. 포인트 클라우드 코딩 장치로서,
    포인트 클라우드의 현재 포인트와 연관된 정보를 코딩하기 위한 예측 모드를 사용하기로 결정하고 - 상기 현재 포인트와 연관된 정보는 상기 현재 포인트의 하나 이상의 이웃 포인트에 기반하여 예측 모드에서 예측됨 -;
    정수 연산을 사용하여, 상기 하나 이상의 이웃 포인트에서 상기 현재 포인트까지의 거리에 기반한 거리 기반 가중 평균값을 계산하며; 그리고
    상기 거리 기반 가중 평균값에 기반하여 상기 현재 포인트와 연관된 정보를 결정하도록 구성된
    처리 회로를 포함하는 포인트 클라우드 코딩 장치.
  13. 제12항에 있어서,
    상기 현재 포인트와 연관된 정보는 상기 현재 포인트의 지오메트리 정보 및 상기 현재 포인트의 속성 정보 중 적어도 하나를 포함하는, 포인트 클라우드 코딩 장치.
  14. 제12항에 있어서,
    상기 처리 회로는,
    가중치 계산에서 부동 소수점 데이터 유형의 사용을 제외하도록 구성되는, 포인트 클라우드 코딩 장치.
  15. 제12항에 있어서,
    상기 처리 회로는,
    피제수를 제수로 나누는 정수 나누기 연산에 기반하여 제1 이웃 포인트의 가중치 정보에 대한 제1 변환 가중치를 계산하도록 구성되며, 상기 피제수는 절대값이 1보다 큰 정수이고, 상기 제수는 상기 제1 이웃 포인트와 상기 현재 포인트 사이의 거리에 기반하는, 포인트 클라우드 코딩 장치.
  16. 제15항에 있어서,
    상기 처리 회로는,
    비트별 좌측 시프트에 기반하여 상기 피제수를 획득하도록 구성되는, 포인트 클라우드 코딩 장치.
  17. 제16항에 있어서,
    상기 처리 회로는,
    상기 비트별 좌측 시프트에 의해 획득된 제1 정수와 상기 제수의 비트별 우측 시프트에 의해 획득된 제2 정수의 합에 기반하여, 상기 피제수를 결정하도록 구성되는, 포인트 클라우드 코딩 장치.
  18. 제15항에 있어서,
    상기 처리 회로는,
    상기 하나 이상의 이웃 포인트의 가중 속성의 합을 계산하고 - 상기 가중 속성 중 제1 가중 속성은 상기 제1 이웃 포인트와 연관되며, 상기 제1 이웃 포인트와 연관된 제1 속성과 상기 제1 변환 가중치의 곱셈에 기반하여 계산됨 -;
    상기 하나 이상의 이웃 포인트에 연관된 변환 가중치의 합을 계산하며 - 상기 변환 가중치는 상기 제1 변환 가중치를 포함함 -; 및
    상기 가중 속성의 합을 상기 변환 가중치의 합으로 나눈 값에 기반하여 상기 거리 기반 가중 평균값을 결정하도록 구성되는, 포인트 클라우드 코딩 장치.
  19. 제18항에 있어서,
    상기 처리 회로는,
    상기 제1 속성 및 제1 변환 가중치에 기반한 룩업 작동에 응답하여 룩업 테이블로부터 출력되는 상기 제1 가중 속성을 수신하도록 구성되는, 포인트 클라우드 코딩 장치.
  20. 제18항에 있어서,
    상기 처리 회로는,
    상기 변환 가중치 중 적어도 하나가 상한보다 큰 것에 응답하여, 상기 변환 가중치를 각각 다운스케일링하도록 구성되는, 포인트 클라우드 코딩 장치.
KR1020227046110A 2021-06-08 2022-06-02 포인트 클라우드 코딩을 위한 거리 기반 가중 평균을 계산하는 방법 및 장치 KR20230017301A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202163208340P 2021-06-08 2021-06-08
US63/208,340 2021-06-08
US17/751,413 US20220392114A1 (en) 2021-06-08 2022-05-23 Method and apparatus for calculating distance based weighted average for point cloud coding
US17/751,413 2022-05-23
PCT/US2022/072707 WO2022261605A2 (en) 2021-06-08 2022-06-02 Method and apparatus for calculating distance based weighted average for point cloud coding

Publications (1)

Publication Number Publication Date
KR20230017301A true KR20230017301A (ko) 2023-02-03

Family

ID=84284255

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227046110A KR20230017301A (ko) 2021-06-08 2022-06-02 포인트 클라우드 코딩을 위한 거리 기반 가중 평균을 계산하는 방법 및 장치

Country Status (6)

Country Link
US (1) US20220392114A1 (ko)
EP (1) EP4139899A4 (ko)
JP (1) JP7470211B2 (ko)
KR (1) KR20230017301A (ko)
CN (1) CN117917078A (ko)
WO (1) WO2022261605A2 (ko)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201309036A (zh) 2011-06-28 2013-02-16 Samsung Electronics Co Ltd 使用亮度成分影像的預測色度成分影像用的裝置與方法
US10502549B2 (en) * 2015-03-24 2019-12-10 Kla-Tencor Corporation Model-based single parameter measurement
US11010928B2 (en) * 2018-04-10 2021-05-18 Apple Inc. Adaptive distance based point cloud compression
US10853973B2 (en) * 2018-10-03 2020-12-01 Apple Inc. Point cloud compression using fixed-point numbers
EP4018669A4 (en) * 2019-10-03 2022-11-02 LG Electronics Inc. POINT CLOUD DATA TRANSMITTING DEVICE, POINT CLOUD DATA TRANSMITTING METHOD, POINT CLOUD DATA RECEIVING DEVICE AND POINT CLOUD DATA RECEIVING METHOD

Also Published As

Publication number Publication date
JP2023533899A (ja) 2023-08-07
EP4139899A4 (en) 2023-11-01
EP4139899A2 (en) 2023-03-01
WO2022261605A2 (en) 2022-12-15
JP7470211B2 (ja) 2024-04-17
WO2022261605A3 (en) 2023-01-19
CN117917078A (zh) 2024-04-19
US20220392114A1 (en) 2022-12-08

Similar Documents

Publication Publication Date Title
KR102584867B1 (ko) 포인트 클라우드 코딩을 위한 방법 및 장치
AU2020397870B2 (en) Method and apparatus for point cloud coding
JP7325534B2 (ja) 点群符号化のための方法および装置
JP7470211B2 (ja) ポイントクラウドコーディングのための距離ベースの加重平均を計算する方法および装置
US11611775B2 (en) Method and apparatus for point cloud coding
JP7497443B2 (ja) 点群コーディングのための方法、装置、およびコンピュータプログラム
CN115152225A (zh) 用于点云译码的方法和设备
KR20230132818A (ko) 차트 기반 메시 압축을 위한 방법 및 장치
JP2024512915A (ja) 非マニホールドメッシュにおける境界ループの検出のための方法、装置、およびコンピュータプログラム
JP2023548236A (ja) メッシュ圧縮のための頂点並べ替え方法における接続のコーディング
JP2023547173A (ja) 動的メッシュ圧縮のための方法および装置

Legal Events

Date Code Title Description
A201 Request for examination