KR102537087B1 - 3d 보조 데이터를 사용한 모션 추정 - Google Patents

3d 보조 데이터를 사용한 모션 추정 Download PDF

Info

Publication number
KR102537087B1
KR102537087B1 KR1020217012942A KR20217012942A KR102537087B1 KR 102537087 B1 KR102537087 B1 KR 102537087B1 KR 1020217012942 A KR1020217012942 A KR 1020217012942A KR 20217012942 A KR20217012942 A KR 20217012942A KR 102537087 B1 KR102537087 B1 KR 102537087B1
Authority
KR
South Korea
Prior art keywords
patch
point cloud
data
frame
dimensional
Prior art date
Application number
KR1020217012942A
Other languages
English (en)
Other versions
KR20210069683A (ko
Inventor
블라디슬라브 자카르첸코
장러 천
Original Assignee
후아웨이 테크놀러지 컴퍼니 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후아웨이 테크놀러지 컴퍼니 리미티드 filed Critical 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20210069683A publication Critical patent/KR20210069683A/ko
Application granted granted Critical
Publication of KR102537087B1 publication Critical patent/KR102537087B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • 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/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/56Motion estimation with initialisation of the vector search, e.g. estimating a good candidate to initiate a search
    • 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
    • H04N7/00Television systems
    • H04N7/18Closed-circuit television [CCTV] systems, i.e. systems in which the video signal is not broadcast
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Image Generation (AREA)

Abstract

모션 추정을 수행하기 위한 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치. 일부 구현에서, 방법은 포인트 클라우드 데이터의 연속성 데이터에 기초하여 포인트 클라우드 데이터의 분할을 생성하는 단계를 포함한다. 분할된 포인트 클라우드 데이터의 표현은 3 차원 바운딩 박스의 측면에 투영된다. 분할된 포인트 클라우드 데이터의 투영된 표현에 기초하여 패치가 생성된다. 패치의 제1 프레임이 생성된다. 제1 및 제2 보조 정보는 제1 프레임과 참조 프레임을 이용하여 생성된다. 제1 및 제2 보조 정보에 기초하여 참조 프레임으로부터의 패치와 일치하는 제1 프레임으로부터의 제1 패치가 식별된다. 제1 및 제2 보조 정보의 차이에 기초하여 제1 패치와 제2 패치 사이에 모션 벡터 후보가 생성된다. 모션 보상은 모션 벡터 후보를 사용하여 수행된다.

Description

3D 보조 데이터를 사용한 모션 추정
본 출원은 2018년 10월 2일에 출원된 미국 가특허출원 No. 62/740,237 및 2019년 6월 19일 출원된 미국 가특허출원 No. 62/863,362에 대한 우선권을 주장하며, 이 두 문헌은 본 명세서에 그 전문이 참조로 포함된다.
포인트 클라우드 처리(Point cloud processing)는 엔터테인먼트 산업, 지능형 자동차 내비게이션, 지리 공간 검사, 실제 물체의 3 차원(3-D) 모델링 및 환경 시각화와 같은 애플리케이션에서 다양한 애플리케이션의 필수 부분이 되었다.
일부 구현에서, 명세서는 3 차원 및 2 차원 보조 데이터를 사용하여 모션 추정을 수행하기 위한 기술을 설명한다. 모션 추정은 3 차원 포인트 클라우드 데이터를 인코딩하고 전송하기 위해 수행된다. 3 차원 포인트 클라우드 데이터에는 인간 또는 실제 항목과 같은 3 차원 객체의 외부 표면을 윤곽을 그리거나 시각적으로 나타내는 데이터 포인트가 포함된다. 3 차원 포인트 클라우드 데이터에는 3 차원 포인트 클라우드 데이터의 색상, 질감 및 깊이를 나타내는 속성 정보도 포함될 수 있다. 인코더 또는 디코더는 모션 개선 데이터를 사용하여 3 차원 포인트 클라우드 데이터를 각각 인코딩 또는 디코딩할 수 있다.
일부 구현에서, 인코더 또는 디코더는 3 차원 포인트 클라우드 데이터를 둘러싸기 위해 3 차원 바운딩 박스를 사용하고 이어서 인코딩 및 전송에 사용되는 패치를 생성한다. 인코더는 3 차원 포인트 클라우드 데이터의 이미지를 3 차원 바운딩 박스의 각 측면에 투영할 수 있다. 인코더는 인코딩에 사용할 이미지 또는 패치를 프레임으로 그룹화할 수 있다. 일반적으로 큰 3 차원 포인트 클라우드 데이터를 전송하는 데 일반적으로 사용되는 대역폭의 양을 줄이기 위해 인코더는 대신 현재 생성된 프레임의 패치를 이전에 생성된 프레임의 패치와 비교하여 동작 개선 데이터를 생성할 수 있다. 인코더는 두 프레임 사이의 패치를 일치시키고 일치하는 패치를 식별하는 데이터를 기반으로 동작 개선 데이터를 생성할 수 있다. 예를 들어, 인코더는 위치 좌표 및 패치의 크기를 정의하는 보조 정보를 사용하여 모션 개선 데이터로 포함할 수 있다. 패치 프레임을 인코딩하고 전송하는 대신, 모션 개선 데이터를 인코딩 및 전송에 사용하여 전체 전송 대역폭을 줄이고 메시지를 적절하게 디코딩 및 수신할 수 있다. 모션 세분화 데이터가 식별되면, 모션 세분화 데이터를 기존 비디오 압축 기술에 추가하여 3 차원 포인트 클라우드 데이터 전송을 개선할 수 있다.
하나의 일반적인 관점에서, 방법은: 3 차원 포인트 클라우드 데이터의 연속성 데이터에 기초하여 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계; 상기 분할된 3 차원 포인트 클라우드 데이터의 표현을 3 차원 바운딩 박스(three-dimensional bounding box)의 하나 이상의 측면에 투영하는 단계 - 상기 분할된 3 차원 포인트 클라우드 데이터의 표현은 상기 3 차원 바운딩 박스의 투영된 측면에 기초하여 상이함 - ; 상기 분할된 3 차원 포인트 클라우드 데이터의 투영된 표현에 기초하여 하나 이상의 패치를 생성하는 단계; 상기 하나 이상의 패치의 제1 프레임을 생성하는 단계; 상기 제1 프레임에 대한 제1 보조 정보를 생성하는 단계; 참조 프레임에 대한 제2 보조 정보를 생성하는 단계; 상기 제1 보조 정보 및 상기 제2 보조 정보에 기초하여 상기 참조 프레임으로부터의 제2 패치와 매칭되는 제1 프레임으로부터의 제2 보조 정보 사이의 차이에 기초하여 상기 제1 패치와 상기 제2 패치 사이의 모션 벡터 후보를 생성하는 단계; 및 상기 모션 벡터 후보를 사용하여 모션 보상을 수행하는 단계를 포함한다.
본 개시 내용 및 본 개시의 다른 관점들의 다른 실시 예들은 컴퓨터 저장 장치상에서 인코딩된, 방법들의 동작을 수행하도록 구성된 대응하는 시스템, 장치 및 컴퓨터 프로그램을 포함한다. 하나 이상의 컴퓨터로 구성된 시스템은 소프트웨어, 펌웨어, 하드웨어 또는 시스템에 설치된 이들의 조합을 통해 구성되어 시스템이 작업을 수행하도록 할 수 있다. 하나 이상의 컴퓨터 프로그램은 데이터 처리 장치에 의해 실행될 때 장치로 하여금 동작을 수행하게 하는 명령을 가짐으로써 구성될 수 있다.
전술한 실시예 및 다른 실시예는 각각 하나 이상의 다음의 특징을 포함할 수 있거나 단독으로 또는 조합으로 포함할 수 있다. 예를 드렁, 일 실시예는 다음의 특징을 조합으로 모두 포함한다.
일부 실시예에서, 방법은 상기 참조 프레임은 전송되고 이전에 인코딩된 프레임에 대응하고 상기 제2 보조 정보를 생성하도록 디코딩되는 것을 포함한다.
일부 실시예에서, 상기 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계는: 상기 하나 이상의 프로세서가 복수의 분할의 각각의 분할을 후속적으로 투영하고 인코딩하기 위해 상기 3 차원 포인트 클라우드 미디어에 대한 복수의 분할을 생성하는 단계를 더 포함한다.
일부 실시예에서, 상기 제1 보조 정보는 상기 하나 이상의 패치 각각에 대한 인덱스 데이터, 상기 하나 이상의 패치 각각에 대한 2 차원 데이터 및 상기 하나 이상의 패치 각각에 대한 3 차원 데이터를 포함한다.
일부 실시예에서, 상기 하나 이상의 패치 각각에 대한 인덱스 데이터는 상기 3 차원 바운딩 박스의 대응하는 측면에 대응한다.
일부 실시예에서, 상기 하나 이상의 패치 각각에 대한 2 차원 데이터 및 상기 하나 이상의 패치 각각에 대한 3 차원 데이터는 상기 3 차원 포인트 클라우드 데이터의 일부에 대응한다.
일부 실시예에서, 상기 3 차원 포인트 클라우드 데이터의 연속성 데이터에 기초하여 상기 3 차원 포인트 클라우드 데이터에 대한 하나 이상의 패치를 생성하는 단계는: 상기 하나 이상의 프로세서가 각 방향으로부터 상기 3 차원 포인트 클라우드 데이터의 평활도 기준(smoothness criteria)을 결정하는 단계; 상기 하나 이상의 프로세서가 상기 3 차원 포인트 클라우드 데이터의 각 방향으로부터 상기 평활도 기준을 비교하는 단계; 및 상기 비교에 응답하여, 상기 하나 이상의 프로세서가 바운딩 박스의 측면에 더 큰 투영 영역을 갖는 상기 3 차원 포인트 클라우드 데이터의 평활도 기준의 방향을 선택하는 단계를 더 포함한다.
일부 실시예에서, 상기 제1 패치와 상기 제2 패치 사이의 모션 벡터 후보를 생성하는 단계는: 상기 하나 이상의 프로세서가 상기 제1 보조 정보의 2 차원 데이터와 상기 제2 보조 정보의 2 차원 데이터 사이의 거리를 결정하는 단계; 상기 제1 보조 정보의 2 차원 데이터와 상기 제2 보조 정보의 2 차원 데이터 사이의 거리에 기초하여 상기 모션 벡터 후보를 생성하는 단계; 및 상기 모션 벡터 후보를 모션 벡터 후보 목록에 추가하는 단계를 더 포함한다.
본 명세서의 주제의 하나 이상의 실시예의 자세한 내용은 첨부된 도면 및 아래의 설명에서 설명된다. 주제의 다른 특징, 측면 및 이점은 설명, 도면 및 청구 범위로부터 명백해질 것이다.
도 1은 비디오 신호를 코딩하는 예시적인 방법의 흐름도이다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템의 개략도이다.
도 3은 예시적인 비디오 인코더를 예시하는 블록도이다.
도 4는 예시적인 비디오 디코더를 예시하는 블록도이다.
도 5는 단방향 인터-예측의 예를 예시하는 개략도이다.
도 6은 양방향 인터-예측의 예를 설명하는 개략도이다.
도 7은 비디오 코딩에 사용되는 예시적인 인트라-예측 모드를 예시하는 개략도이다.
도 8은 비디오 코딩에서 블록의 방향 관계의 예를 예시하는 개략도이다.
도 9는 예시적인 인-루프 필터를 예시하는 블록도이다.
도 10은 블록 분할에 사용되는 예시적인 스플리트 모드를 도시한다.
도 11은 예시적인 비디오 인코딩 메커니즘의 개략도이다.
도 12는 비디오 코딩을 위한 컴퓨팅 장치의 개략도이다.
도 13은 포인트 클라우드 미디어를 예시하는 시스템의 예이다.
도 14는 포인트 클라우드 프레임 시퀀스를 예시하는 시스템의 예이다.
도 15는 3 차원 패치 바운딩 박스를 2 차원 패치 투영으로 변환하는 과정의 예이다.
도 16은 3D 대 2D 패치 투영 결과를 나타내는 시스템의 예이다.
도 17은 클라우드 포인트 미디어에 대한 속성 분할의 예이다.
도 18은 속성 정보를 갖는 포인트 클라우드 미디어에 대한 패키징 패치를 예시하는 시스템의 예이다.
도 19는 모션 추정을 수행하는 시스템의 예이다.
도 20은 현재 프레임의 패치와 참조 프레임의 패치 사이의 모션 벡터 후보를 나타내는 시스템의 일 예이다.
도 21은 병합 후보 목록 구성을 위한 유도 프로세스를 예시한다.
도 22는 공간 병합 후보의 중복 검사를 위해 고려되는 공간 병합 후보 및 후보 쌍의 위치 시스템을 예시한다.
도 23은 Nx2N 및 2NxN 파티션의 제2 PU에 대한 위치를 보여주는 시스템을 예시한다.
도 24는 시간 병합 후보에 대한 스케일링된 모션 벡터를 얻는 것을 예시한다.
도 25는 시간 병합 후보에 대한 후보 위치를 나타내는 시스템
도 26은 결합된 양방향-예측 병합 후보들의 예시적인 테이블을 예시한다.
도 27은 보조 데이터를 사용하여 모션 추정 파이프 라인을 수정 한 시스템의 예이다.
도 28은 V-PCC 유닛 페이로드의 패킷 스트림 표현의 예이다.
도 29는 V-PCC 유닛 페이로드의 시각적 표현의 또 다른 예이다.
도 30은 3D 보조 데이터를 사용하여 모션 추정을 수행하기 위한 프로세스의 예를 예시하는 흐름도이다.
다양한 도면에서 유사한 참조 번호 및 지정은 유사한 요소를 나타낸다.
하나 이상의 실시예의 예시적인 구현이 아래에 제공되지만, 개시된 시스템 및/또는 방법은 현재 알려져 있거나 존재하는지에 관계없이 임의의 수의 기술을 사용하여 구현될 수 있다는 것을 처음부터 이해해야 한다. 본 개시는 여기에 예시되고 설명된 예시적인 설계 및 구현을 포함하여 아래에 예시된 예시적인 구현, 도면 및 기술로 제한되어서는 안 되며, 균등물의 전체 범위와 함께 첨부된 청구 범위의 범위 내에서 수정될 수 있다.
도 1은 비디오 신호를 코딩하는 예시적인 방법(100)의 흐름도이다. 구체적으로, 비디오 신호는 인코더에서 인코딩된다. 인코딩 프로세스는 비디오 파일 크기를 줄이기 위해 다양한 메커니즘을 사용하여 비디오 신호를 압축한다. 파일 크기가 작을수록 압축된 비디오 파일을 사용자에게 전송하는 동시에 관련 대역폭 오버헤드를 줄일 수 있다. 그런 다음 디코더는 압축된 비디오 파일을 디코딩하여 최종 사용자에게 표시할 원본 비디오 신호를 재구성한다. 디코딩 프로세스는 일반적으로 디코더가 비디오 신호를 일관되게 재구성할 수 있도록 인코딩 프로세스를 미러링한다.
단계 101에서, 비디오 신호가 인코더에 입력된다. 예를 들어, 비디오 신호는 메모리에 저장된 비 압축 비디오 파일일 수 있다. 다른 예로서, 비디오 파일은 비디오 카메라와 같은 비디오 캡처 장치에 의해 캡처될 수 있고 비디오의 라이브 스트리밍을 지원하도록 인코딩될 수 있다. 비디오 파일에는 오디오 컴포넌트와 비디오 컴포넌트가 모두 포함될 수 있다. 비디오 컴포넌트에는 일련의 이미지 프레임이 포함되어 있으며 순차적으로 볼 때 모션의 시각적 인상을 준다. 프레임은 본 명세서에서 루마 성분으로 지칭되는 광 및 크로마 성분으로 지칭되는 컬러로 표현되는 픽셀을 포함한다. 일부 예에서, 프레임은 또한 3 차원 뷰를 지원하기 위해 깊이 값을 포함할 수 있다.
단계 103에서, 비디오는 블록으로 파티셔닝된다. 파티셔닝은 압축을 위해 각 프레임의 픽셀을 정사각형 및/또는 직사각형 블록으로 세분화하는 것을 포함한다. 예를 들어, 코딩 트리는 추가 인코딩을 지원하는 구성이 달성될 때까지 블록을 분할한 다음 재귀적으로 세분화하는 데 사용될 수 있다. 이와 같이, 블록은 고효율 비디오 코딩(High Efficiency Video Coding, HEVC)(H.265 및 MPEG-H Part 2라고도 함)에서 코딩 트리 단위로 지칭될 수 있다. 예를 들어, 프레임의 루마 성분은 개별 블록이 상대적으로 균일한 조명 값을 포함할 때까지 세분화될 수 있다. 또한, 프레임의 크로마 성분은 개별 블록이 상대적으로 균일한 색상 값을 포함할 때까지 세분화될 수 있다. 따라서 분할 메커니즘은 비디오 프레임의 내용에 따라 달라진다.
단계 105에서, 단계 103에서 분할된 이미지 블록을 압축하기 위해 다양한 압축 메커니즘이 사용된다. 예를 들어, 인터-예측 및/또는 인트라-예측이 사용될 수 있다. 인터-예측은 공통 장면의 객체가 연속 프레임에 나타나는 경향이 있다는 사실을 활용하도록 설계되어 있다. 따라서, 참조 프레임에서 객체를 묘사하는 블록은 후속 프레임에서 반복적으로 기술될 필요가 없다. 구체적으로, 테이블과 같은 객체는 여러 프레임에 걸쳐 일정한 위치에 남아 있을 수 있다. 따라서 테이블은 한 번만 설명하면 되고 이후 프레임은 참조 프레임을 다시 참조할 수 있다. 패턴 매칭 메커니즘은 여러 프레임에 걸쳐 객체를 매칭하기 위해 사용될 수 있다. 또한, 움직이는 객체는 예를 들어 객체 이동 또는 카메라 이동으로 인해 여러 프레임에 걸쳐 표현될 수 있다. 특정 예로서, 비디오는 여러 프레임에 걸쳐 화면을 가로 질러 이동하는 자동차를 보여줄 수 있다. 이러한 움직임을 설명하기 위해 모션 벡터를 사용할 수 있다. 모션 벡터는 프레임에 있는 객체의 좌표에서 참조 프레임에 있는 객체의 좌표까지 오프셋을 제공하는 2 차원 벡터이다. 이와 같이 인터-예측은 현재 프레임의 이미지 블록을 참조 프레임의 해당 블록으로부터의 오프셋을 나타내는 모션 벡터의 세트로 인코딩할 수 있다.
인트라-예측은 공통 프레임의 블록을 인코딩한다. 인트라-예측은 루마 성분 및 크로마 성분이 한 프레임에 클러스터되는 경향이 있다는 사실을 활용한다. 예를 들어, 나무의 일부에 있는 녹색 패치는 유사한 녹색 패치 옆에 위치하는 경향이 있다. 인트라-예측은 다중 방향 예측 모드(예를 들어, HEVC에서 33), 평면 모드 및 직류(direct current, DC) 모드를 사용한다. 방향 모드는 현재 블록이 해당 방향의 인접 블록과 유사/동일함을 나타낸다. 평면 모드는 행을 따르는 일련의 블록(예를 들어, 평면)이 행 가장자리의 인접 블록을 기반으로 보간될 수 있음을 나타낸다. 사실상 평면 모드는 값을 변경할 때 상대적으로 일정한 기울기를 사용하여 행을 가로 질러 빛/색상이 부드럽게 전환됨을 나타낸다. DC 모드는 경계 평활화에 사용되며 블록이 방향 예측 모드의 각도 방향과 관련된 모든 인접 블록과 관련된 평균 값과 유사/동일함을 나타낸다. 따라서 인트라-예측 블록은 실제 값 대신 다양한 관계형 예측 모드 값으로 영상 블록을 나타낼 수 있다. 또한 인터-예측 블록은 이미지 블록을 실제 값 대신 모션 벡터 값으로 나타낼 수 있다. 두 경우 모두 예측 블록은 경우에 따라 이미지 블록을 정확하게 표현하지 못할 수 있다. 모든 차이는 잔여 블록에 저장된다. 파일을 추가로 압축하기 위해 잔여 블록에 변환을 적용할 수 있다.
단계 107에서, 다양한 필터링 기술이 적용될 수 있다. HEVC에서 필터는 인-루프 필터링 방식에 따라 적용된다. 위에서 논의된 블록 기반 예측은 디코더에서 블록 이미지의 생성을 초래할 수 있다. 또한, 블록 기반 예측 방식은 블록을 인코딩한 후 나중에 참조 블록으로 사용하기 위해 인코딩된 블록을 재구성할 수 있다. 인-루프 필터링 체계는 노이즈 억제 필터, 디 블로킹 필터, 적응형 루프 필터 및 SAO 필터를 블록/프레임에 반복적으로 적용한다. 이러한 필터는 인코딩된 파일을 정확하게 재구성할 수 있도록 이러한 차단 아티팩트를 완화한다. 또한, 이러한 필터는 재구성된 참조 블록에서 아티팩트를 완화하여 아티팩트가 재구성된 참조 블록을 기반으로 인코딩되는 후속 블록에서 추가 아티팩트를 생성할 가능성을 줄인다. 인-루프 필터링 프로세스는 아래에서 자세히 설명한다.
비디오 신호가 분할, 압축 및 필터링되면, 결과 데이터는 단계 109에서 비트스트림으로 인코딩된다. 비트스트림은 디코더에서 적절한 비디오 신호 재구성을 지원하기 위해 원하는 임의의 시그널링 데이터뿐만 아니라 위에서 논의된 데이터를 포함한다. 예를 들어, 그러한 데이터는 파티션 데이터, 예측 데이터, 잔여 블록, 및 코딩 명령을 디코더에 제공하는 다양한 플래그를 포함할 수 있다. 비트스트림은 요청시 디코더를 향한 전송을 위해 메모리에 저장될 수 있다. 비트스트림은 또한 복수의 디코더를 향해 브로드캐스트 및/또는 멀티캐스트될 수 있다. 비트스트림의 생성은 반복적인 프로세스이다. 따라서, 단계 101, 103, 105, 107 및 109는 많은 프레임 및 블록에 걸쳐 연속적으로 및/또는 동시에 발생할 수 있다. 도 1에 도시된 순서는 명확성과 논의의 용이성을 위해 제시된 것이며, 비디오 코딩 프로세스를 특정 순서로 제한하려는 것이 아니다.
디코더는 비트스트림을 수신하고 단계 111에서 디코딩 프로세스를 시작한다. 구체적으로, 디코더는 비트스트림을 대응하는 신택스 및 비디오 데이터로 변환시키기 위해 엔트로피 디코딩 체계를 적용한다. 디코더는 단계 111에서 프레임에 대한 파티션을 결정하기 위해 비트스트림으로부터의 신택스 데이터를 적용한다. 파티셔닝은 단계 103에서 블록 파티셔닝의 결과를 매칭해야 한다. 단계 111에서 적용되는 바와 같은 엔트로피 인코딩/디코딩에 대해 설명한다. 인코더는 입력 이미지(들)에서의 공간 포지셔닝 값에 기초하여 수 개의 가능한 선택 중에서 블록-파티셔닝 방식을 선택하는 것과 같이 압축 프로세스 중에 많은 선택을 한다. 정확한 선택을 시그널링하는 데 많은 빈(bin)이 사용될 수 있다. 본 명세서에서 사용되는 바와 같이, 빈은 변수(예를 들어, 컨텍스트에 따라 달라질 수 있는 비트 값)로 취급되는 이진 값이다. 엔트로피 코딩을 사용하면 인코더가 특정 사례에 대해 명확하게 실행 불가능한 옵션을 버리고 허용 가능한 옵션 세트만 남길 수 있다. 그런 다음 각 허용 옵션에 코드 단어가 할당된다. 코드워드의 길이는 허용 가능한 옵션의 수를 기반으로 한다(예를 들어, 2 개의 옵션에 대해 하나의 빈, 3 내지 4 개의 옵션에 대해 2 개의 빈 등). 그런 다음 인코더는 선택한 옵션에 대한 코드워드를 인코딩한다. 이 체계는 가능한 모든 옵션의 잠재적으로 큰 세트 중에서의 선택을 고유하게 나타내는 것과는 반대로 허용 가능한 옵션의 작은 서브-세트 중에서의 선택을 고유하게 나타내기 위해 코드 단어가 원하는 만큼만 크기 때문에 코드 단어의 크기를 줄인다. 그런 다음 디코더는 인코더와 유사한 방식으로 허용 가능한 옵션 세트를 결정하여 선택을 디코딩한다. 허용 가능한 옵션 세트를 결정함으로써 디코더는 코드워드를 읽고 인코더가 선택한 사항을 결정할 수 있다.
단계 113에서 디코더는 블록 디코딩을 수행한다. 구체적으로, 디코더는 역변환을 사용하여 잔여 블록을 생성한다. 그런 다음 디코더는 분할에 따라 이미지 블록을 재구성하기 위해 잔여 블록 및 대응하는 예측 블록을 사용한다. 예측 블록은 단계 105에서 인코더에서 생성된 바와 같이 인트라-예측 블록 및 인터-예측 블록을 모두 포함할 수 있다. 그런 다음, 재구성된 이미지 블록은 단계 111에서 결정된 분할 데이터에 따라 재구성된 비디오 신호의 프레임으로 위치 결정된다. 단계 113은 또한 전술한 바와 같이 엔트로피 코딩을 통해 비트스트림에서 시그널링될 수 있다.
단계 115에서, 인코더에서의 단계 107과 유사한 방식으로 재구성된 비디오 신호의 프레임에 대해 필터링이 수행된다. 예를 들어, 노이즈 억제 필터, 디 블로킹 필터, 적응형 루프 필터 및 SAO 필터가 블로킹 아티팩트를 제거하기 위해 프레임에 적용될 수 있다. 프레임이 필터링되면, 비디오 신호는 최종 사용자가 볼 수 있도록 단계 117에서 디스플레이로 출력될 수 있다.
도 2는 비디오 코딩을 위한 예시적인 코딩 및 디코딩(코덱) 시스템(200)의 개략도이다. 구체적으로, 코덱 시스템(200)은 방법(100)의 구현을 지원하는 기능을 제공한다. 코덱 시스템(200)은 인코더 및 디코더 모두에서 사용되는 컴포넌트를 묘사하도록 일반화된다. 코덱 시스템(200)은 방법(100)의 단계 101 및 103과 관련하여 논의된 바와 같이 비디오 신호를 수신하고 분할하며, 그 결과 파티셔닝된 비디오 신호(201)를 초래한다. 방법(100)의 단계 105, 107 및 109와 관련하여 논의된 바와 같이 코덱 시스템(200)은 인코더로서 동작할 때 파티셔닝된 비디오 신호(201)를 코딩된 비트스트림으로 압축한다. 디코더 코덱 시스템(200)으로서 동작할 때 방법(100)의 단계 111, 113, 115 및 117에 관해 논의된 바와 같이 비트스트림으로부터 출력 비디오 신호를 생성한다. 코덱 시스템(200)은 일반 코더 제어 컴포넌트(211), 변환 스케일링 및 양자화 컴포넌트(213), 인트라-픽처 추정 컴포넌트(215), 인트라-픽처 예측 컴포넌트(217), 모션 보상 컴포넌트(219), 모션 추정 컴포넌트(221), 스케일 및 역변환 컴포넌트(229), 필터 제어 분석 컴포넌트(227), 인-루프 필터 컴포넌트(225), 디코딩된 픽처 버퍼 컴포넌트(223), 및 헤더 포맷팅 및 컨텍스트 적응 이진 산술 코딩(header formatting and Context adaptive binary arithmetic coding, CABAC) 컴포넌트(231)를 포함한다. 이러한 컴포넌트는 도시된 바와 같이 결합된다. 도 2에서 검은 색 선은 인코딩/디코딩할 데이터의 이동을 나타내고, 점선은 다른 컴포넌트의 동작을 제어하는 제어 데이터의 이동을 나타낸다. 코덱 시스템(200)의 컴포넌트는 모두 인코더에 존재할 수 있다. 디코더는 코덱 시스템(200)의 컴포넌트의 서브세트를 포함할 수 있다. 예를 들어, 디코더는 인트라-픽처 예측 컴포넌트(217), 모션 보상 컴포넌트(219), 스케일링 및 역변환 컴포넌트(229), 인-루프 필터 컴포넌트(225), 및 디코딩된 픽처 버퍼 컴포넌트(223)를 포함할 수 있다. 이들 컴포넌트가 이제 설명된다.
파티셔닝된 비디오 신호(201)는 코딩 트리에 의해 픽셀 블록으로 분할된 캡처된 비디오 스트림(captured video stream)이다. 코딩 트리는 다양한 스플리트 모드를 사용하여 픽셀 블록을 더 작은 픽셀 블록으로 세분화한다. 그런 다음 이 블록은 더 작은 블록으로 더 세분화될 수 있다. 블록은 코딩 트리에서 노드로 지칭될 수 있다. 더 큰 부모 노드는 더 작은 자식 노드로 파티셔닝된다. 노드가 세분화되는 횟수를 노드/코딩 트리의 깊이라고 한다. 분할된 블록은 경우에 따라 코딩 단위(coding unit, CU)라고도 한다. 스플리트 모드는 적용된 스플리트 모드에 따라 노드를 다양한 형태의 2 개, 3 개 또는 4 개의 자식 노드로 각각 분할하는 데 사용되는 이진 트리(binary tree, BT), 트리플 트리(triple tree, TT) 및 쿼드 트리(quad tree, QT)를 포함할 수 있다. 파티셔닝된 비디오 신호(201)는 일반 코더 제어 컴포넌트(211), 변환 스케일링 및 양자화 컴포넌트(213), 인트라-픽처 추정 컴포넌트(215), 필터 제어 분석 컴포넌트(227), 및 압축을 위한 모션 추정 컴포넌트(221)로 포워딩된다.
일반 코더 제어 컴포넌트(211)는 애플리케이션 제약에 따라 비디오 시퀀스의 이미지를 비트스트림으로 코딩하는 것과 관련된 결정을 내리도록 구성된다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 비트레이트/비트스트림 크기 대 재구성 품질의 최적화를 관리한다. 이러한 결정은 저장 공간/대역폭 가용성 및 이미지 해상도 요청을 기반으로 할 수 있다. 일반 코더 제어 컴포넌트(211)는 또한 버퍼 언더런 및 오버런 문제를 완화하기 위해 전송 속도 측면에서 버퍼 활용을 관리한다. 이러한 문제를 관리하기 위해 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트에 의한 파티셔닝, 예측 및 필터링을 관리한다. 예를 들어, 일반 코더 제어 컴포넌트(211)는 해상도를 증가시키고 대역폭 사용을 증가시키기 위해 압축 복잡도를 동적으로 증가시키거나 해상도 및 대역폭 사용을 감소시키기 위해 압축 복잡도를 감소시킬 수 있다. 따라서, 일반 코더 제어 컴포넌트(211)는 비디오 신호 재구성 품질과 비트레이트 문제의 균형을 맞추기 위해 코덱 시스템(200)의 다른 컴포넌트를 제어한다. 일반 코더 제어 컴포넌트(211)는 다른 컴포넌트의 동작을 제어하는 제어 데이터를 생성한다. 제어 데이터는 또한 비트스트림에서 인코딩되도록 헤더 포맷팅 및 CABAC 컴포넌트(231)로 포워딩되어 디코더에서 디코딩을 위한 파라미터를 시그널링한다.
파티셔닝된 비디오 신호(201)는 또한 인터-예측을 위해 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)로 전송된다. 파티셔닝된 비디오 신호(201)의 프레임 또는 슬라이스는 다수의 비디오 블록으로 분할될 수 있다. 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 시간적 예측을 제공하기 위해 하나 이상의 참조 프레임에서 하나 이상의 블록에 대해 수신된 비디오 블록의 인터-예측 코딩을 수행한다. 코덱 시스템(200)은 예를 들어 비디오 데이터의 각 블록에 대한 적절한 코딩 모드를 선택하기 위해 다중 코딩 패스를 수행할 수 있다.
모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 고도로 통합될 수 있지만, 개념적 목적을 위해 별도로 예시된다. 모션 추정 컴포넌트(221)에 의해 수행되는 모션 추정은 비디오 블록에 대한 모션을 추정하는 모션 벡터를 생성하는 프로세스이다. 예를 들어, 모션 벡터는 현재 프레임(또는 다른 코딩된 단위) 내에서 코딩되는 현재 블록에 대한 참조 프레임(또는 다른 코딩된 단위) 내의 예측 블록에 대한 비디오 블록의 예측 단위(PU)의 변위를 나타낼 수 있다. 예측 블록은 절대 차이의 합(sum of absolute difference, SAD), 제곱 차이의 합(sum of square difference, SSD) 또는 기타 차이 메트릭에 의해 결정될 수 있는 픽셀 차이 측면에서 코딩될 블록과 밀접하게 일치하는 것으로 확인된 블록이다. 일부 예들에서, 코덱 시스템(200)은 디코딩된 픽처 버퍼(223)에 저장된 참조 픽처의 서브 정수 픽셀 위치에 대한 값을 카운팅할 수 있다. 예를 들어, 비디오 코덱 시스템(200)은 1/4 픽셀 위치, 1/8 픽셀 위치, 또는 참조 화상의 다른 분수 픽셀 위치의 값을 보간할 수 있다. 따라서, 모션 추정 컴포넌트(221)는 전체 픽셀 위치 및 부분 픽셀 위치에 대한 모션 검색을 수행하고 부분 픽셀 정밀도를 갖는 모션 벡터를 출력할 수 있다. 모션 추정 컴포넌트(221)는 PU의 위치를 참조 픽처의 예측 블록의 위치와 비교함으로써 인터 코딩된 슬라이스에서 비디오 블록의 PU에 대한 모션 벡터를 계산한다. 모션 추정 컴포넌트(221)는 모션 보상 컴포넌트(219)로의 인코딩 및 모션을 위해 헤더 포맷 및 CABAC 컴포넌트(231)에 모션 데이터로서 계산된 모션 벡터를 출력한다.
모션 보상 컴포넌트(219)에 의해 수행되는 모션 보상은 모션 추정 컴포넌트(221)에 의해 결정된 모션 벡터에 기초하여 예측 블록을 페치하거나 생성하는 것을 포함할 수 있다. 다시, 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)는 일부 예들에서 기능적으로 통합될 수 있다. 현재 비디오 블록의 PU에 대한 모션 벡터를 수신하면, 모션 보상 컴포넌트(219)는 모션 벡터가 참조 화상 목록을 가리키는 예측 블록을 찾을 수 있다. 잔여 비디오 블록은 코딩되는 현재 비디오 블록의 픽셀 값에서 예측 블록의 픽셀 값을 감산하여 픽셀 차이 값을 형성함으로써 형성된다. 일반적으로, 모션 추정 컴포넌트(221)는 루마 성분에 대한 모션 추정을 수행하고, 모션 보상 컴포넌트(219)는 크로마 성분 및 루마 성분 모두에 대해 루마 성분에 기초하여 계산된 모션 벡터를 사용한다. 예측 블록 및 잔여 블록은 변환 스케일링 및 양자화 컴포넌트(213)로 포워딩된다.
파티셔닝된 비디오 신호(201)는 또한 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)로 전송된다. 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)와 마찬가지로, 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)는 고도로 통합될 수 있지만 개념적 목적을 위해 별도로 설명되어 있다. 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)는 전술한 바와 같이 프레임 사이의 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)에 의해 수행되는 인터-예측에 대한 대안으로서, 현재 프레임의 블록에 대한 현재 블록을 인트라-예측한다. 특히, 인트라-픽처 추정 컴포넌트(215)는 현재 블록을 인코딩하기 위해 사용할 인트라-예측 모드를 결정한다. 일부 예들에서, 인트라-픽처 추정 컴포넌트(215)는 다수의 테스트된 인트라-예측 모드로부터 현재 블록을 인코딩하기 위해 적절한 인트라-예측 모드를 선택한다. 선택된 인트라-예측 모드는 인코딩을 위해 헤더 포맷팅 및 CABAC 컴포넌트(231)로 포워딩된다.
예를 들어, 인트라-픽처 추정 컴포넌트(215)는 테스트된 다양한 인트라-예측 모드에 대한 레이트 왜곡 분석을 이용하여 레이트-왜곡 값을 계산하고, 테스트된 모드 중에서 가장 좋은 레이트-왜곡 특성을 갖는 인트라-예측 모드를 선택한다. 레이트 왜곡 분석은 일반적으로 인코딩된 블록을 생성하기 위해 인코딩된 원래의 인코딩되지 않은 블록과 인코딩된 블록 간의 왜곡(또는 오류) 양뿐만 아니라 인코딩된 블록을 생성하는 데 사용된 비트레이트(예를 들어, 비트 수)를 결정한다. 인트라-픽처 추정 컴포넌트(215)는 다양한 인코딩된 블록에 대한 왜곡 및 레이트로부터 비율을 계산하여 블록에 대한 최상의 레이트-왜곡 값을 나타내는 인트라-예측 모드를 결정한다. 또한, 인트라-픽처 추정 컴포넌트(215)는 레이트-왜곡 최적화(RDO)에 기초한 깊이 모델링 모드(DMM)를 사용하여 깊이 맵의 깊이 블록을 코딩하도록 구성될 수 있다.
인트라-픽처 예측 컴포넌트(217)는 인트라-픽처 추정 컴포넌트(215)에 의해 결정된 선택된 인트라-예측 모드에 기초하여 예측 블록으로부터 잔여 블록을 생성할 수 있다. 잔여 블록은 행렬로 표현된, 예측 블록과 원래 블록 사이의 값의 차이를 포함한다. 그런 다음 잔여 블록은 변환 스케일링 및 양자화 컴포넌트(213)로 포워딩된다. 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)는 루마 및 크로마 성분 모두에서 동작할 수 있다.
변환 스케일링 및 양자화 컴포넌트(213)는 잔여 블록을 추가로 압축하도록 구성된다. 변환 스케일링 및 양자화 컴포넌트(213)는 이산 코사인 변환(DCT), 이산 사인 변환(DST) 또는 개념적으로 유사한 변환과 같은 변환을 잔여 블록에 적용하여 잔여 변환 계수 값을 포함하는 비디오 블록을 생성한다. 웨이블릿 변환, 정수 변환, 서브 밴드 변환 또는 기타 유형의 변환도 사용할 수 있다. 변환은 잔여 정보를 픽셀 값 도메인으로부터 주파수 도메인과 같은 변환 도메인으로 변환할 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 예를 들어 주파수에 기초하여 변환된 잔여 정보를 스케일링하도록 구성된다. 이러한 스케일링은 스케일 팩터를 잔여 정보에 적용하여 상이한 주파수 정보가 상이한 입도(granularity)에서 양자화되도록 하는 것을 포함하며, 이는 재구성된 비디오의 최종 시각적 품질에 영향을 미칠 수 있다. 변환 스케일링 및 양자화 컴포넌트(213)는 또한 비트레이트를 더 감소시키기 위해 변환 계수를 양자화하도록 구성된다. 양자화 프로세스는 계수의 일부 또는 전부와 관련된 비트 깊이를 감소시킬 수 있다. 양자화의 정도는 양자화 파라미터를 조정함으로써 수정될 수 있다. 일부 예들에서, 변환 스케일링 및 양자화 컴포넌트(213)는 양자화된 변환 계수들을 포함하는 매트릭스의 스캔을 수행할 수 있다. 양자화된 변환 계수는 헤더 포맷팅 및 CABAC 컴포넌트(231)로 포워딩되어 비트스트림으로 인코딩된다.
스케일링 및 역변환 컴포넌트(229)는 모션 추정을 지원하기 위해 변환 스케일링 및 양자화 컴포넌트(213)의 역 동작을 적용한다. 스케일링 및 역변환 컴포넌트(229)는, 예를 들어, 다른 현재 블록에 대한 예측 블록이 될 수 있는 참조 블록으로서 나중에 사용하기 위해 픽셀 도메인에서 잔여 블록을 재구성하기 위해 역 스케일링, 변환 및/또는 양자화를 적용한다. 모션 추정 컴포넌트(221) 및/또는 모션 보상 컴포넌트(219)는 차후 블록/프레임의 모션 추정에 사용하기 위해 대응하는 예측 블록에 잔여 블록을 다시 추가함으로써 참조 블록을 카운팅할 수 있다. 스케일링, 양자화 및 변환 중에 생성된 아티팩트를 완화하기 위해 재구성된 참조 블록에 필터가 적용된다. 그렇지 않으면 후속 블록이 예측될 때 이러한 아티팩트가 부정확한 예측을 유발하고 추가 아티팩트를 생성할 수 있다.
필터 제어 분석 컴포넌트(227) 및 인-루프 필터 컴포넌트(225)는 필터를 잔여 블록 및/또는 재구성된 이미지 블록에 적용한다. 예를 들어, 스케일링 및 역 변환 컴포넌트(229)로부터의 변환된 잔여 블록은 원본 이미지 블록을 재구성하기 위해 인트라-픽처 예측 컴포넌트(217) 및/또는 모션 보상 컴포넌트(219)로부터 대응하는 예측 블록과 결합될 수 있다. 그런 다음 필터는 재구성된 이미지 블록에 적용될 수 있다. 일부 예에서, 필터는 대신 잔여 블록에 적용될 수 있다. 도 2의 다른 컴포넌트와 마찬가지로, 필터 제어 분석 컴포넌트(227) 및 인-루프 필터 컴포넌트(225)는 고도로 통합되고 함께 구현될 수 있지만 개념적 목적을 위해 별도로 도시된다. 재구성된 참조 블록에 적용된 필터는 특정 공간 영역에 적용되며 이러한 필터가 적용되는 방식을 조정하는 여러 파라미터를 포함한다. 필터 제어 분석 컴포넌트(227)는 재구성된 참조 블록을 분석하여 그러한 필터가 적용되어야 하는 위치를 결정하고 대응하는 파라미터를 설정한다. 이러한 데이터는 인코딩을 위한 필터 제어 데이터로서 헤더 포맷팅 및 CABAC 컴포넌트(231)로 포워딩된다. 인-루프 필터 컴포넌트(225)는 필터 제어 데이터에 기초하여 이러한 필터를 적용한다. 필터는 디 블로킹 필터, 노이즈 억제 필터, SAO 필터 및 적응 루프 필터를 포함할 수 있다. 그러한 필터는 예에 따라 공간/픽셀 도메인에 (예를 들어, 재구성된 픽셀 블록에) 또는 주파수 도메인에 적용될 수 있다.
인코더로서 동작할 때, 필터링된 재구성된 이미지 블록, 잔여 블록 및/또는 예측 블록은 위에서 논의된 바와 같이 모션 추정에서 나중에 사용하기 위해 디코딩된 픽처 버퍼(223)에 저장된다. 디코더로서 동작할 때, 디코딩된 픽처 버퍼(223)는 출력 비디오 신호의 일부로서 디스플레이를 향해 재구성 및 필터링된 블록을 저장하고 포워딩한다. 디코딩된 픽처 버퍼(223)는 예측 블록, 잔여 블록 및/또는 재구성된 이미지 블록을 저장할 수 있는 임의의 메모리 장치일 수 있다.
헤더 포맷팅 및 CABAC 컴포넌트(231)는 코덱 시스템(200)의 다양한 컴포넌트로부터 데이터를 수신하고 디코더를 향한 전송을 위해 이러한 데이터를 코딩된 비트스트림으로 인코딩한다. 구체적으로, 헤더 포맷팅 및 CABAC 컴포넌트(231)는 일반 제어 데이터 및 필터 제어 데이터와 같은 제어 데이터를 인코딩하기 위해 다양한 헤더를 생성한다. 또한, 인트라-예측 및 움직임 데이터를 포함하는 예측 데이터는 물론 양자화된 변환 계수 데이터 형태의 잔여 데이터가 모두 비트스트림으로 인코딩된다. 최종 비트스트림은 원래 파티셔닝된 비디오 신호(201)를 재구성하기 위해 디코더에 의해 요구되는 모든 정보를 포함한다. 이러한 정보는 또한 인트라-예측 모드 인덱스 테이블(코드워드 매핑 테이블이라고도 함), 다양한 블록에 대한 인코딩 컨텍스트의 정의, 가장 가능성 있는 인트라-예측 모드의 지시, 파티션 정보의 지시 등을 포함할 수 있다. 이러한 데이터는 엔트로피 코딩을 사용하여 인코딩될 수 있다. 예를 들어, 정보는 컨텍스트 적응 가변 길이 코딩(Context adaptive variable length coding, CAVLC), CABAC 및 신택스 기반 컨텍스트 적응 이진 산술 코딩(syntax-based context adaptive binary arithmetic coding, SBAC), 확률 간격 파티셔닝 엔트로피(probability interval partitioning entropy, PIPE) 코딩 또는 다른 엔트로피 코딩 기술을 사용하여 인코딩될 수 있다. 엔트로피 코딩에 이어서, 코딩된 비트스트림은 다른 장치(예를 들어, 비디오 디코더)로 전송되거나 나중에 전송 또는 검색을 위해 보관될 수 있다.
도 3은 예시적인 비디오 인코더(300)를 예시하는 블록도이다. 비디오 인코더(300)는 코덱 시스템(200)의 인코딩 기능을 구현하고 및/또는 방법(100)의 단계 101, 103, 105, 107 및/또는 109를 구현하기 위해 사용될 수 있다. 인코더(300) 입력 비디오 신호를 분할하여 파티셔닝된 비디오 신호(301)를 생성하며, 이는 파티셔닝된 비디오 신호(201)와 실질적으로 유사하다. 파티셔닝된 비디오 신호(301)는 인코더(300)의 컴포넌트에 의해 압축되고 비트스트림으로 인코딩된다.
구체적으로, 파티셔닝된 비디오 신호(301)는 인트라-예측을 위해 인트라-픽처 예측 컴포넌트(317)로 포워딩된다. 인트라-픽처 예측 컴포넌트(317)는 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217)와 실질적으로 유사할 수 있다. 파티셔닝된 비디오 신호(301)는 또한 디코딩된 픽처 버퍼(323)의 참조 블록에 기초하여 인터-예측을 위한 모션 보상 컴포넌트(321)로 포워딩된다. 모션 보상 컴포넌트(321)는 모션 추정 컴포넌트(221) 및 모션 보상 컴포넌트(219)와 실질적으로 유사할 수 있다. 인트라-픽처 예측 컴포넌트(317) 및 모션 보상 컴포넌트(321)로부터의 예측 블록 및 잔여 블록은 잔여 블록의 변환 및 양자화를 위한 변환 및 양자화 컴포넌트(313)로 포워딩된다. 변환 및 양자화 컴포넌트(313)는 변환 스케일링 및 양자화 컴포넌트(213)와 실질적으로 유사할 수 있다. 변환 및 양자화된 잔여 블록 및 대응하는 예측 블록은 (관련 제어 데이터와 함께) 엔트로피 코딩 컴포넌트(331)로 포워딩되어 비트스트림으로 코딩된다. 엔트로피 코딩 컴포넌트(331)는 헤더 포맷팅 및 CABAC 컴포넌트(231)와 실질적으로 유사할 수 있다.
변환 및 양자화된 잔여 블록 및/또는 대응하는 예측 블록은 또한 모션 보상 컴포넌트(321)에 의해 사용하기 위한 참조 블록으로 재구성하기 위해 변환 및 양자화 컴포넌트(313)로부터 역 변환 및 양자화 컴포넌트(329)로 포워딩된다. 역변환 및 양자화 컴포넌트(329)는 스케일링 및 역 변환 컴포넌트(229)와 실질적으로 유사할 수 있다. 인-루프 필터 컴포넌트(325)의 인-루프 필터는 또한 예에 따라 잔여 블록 및/또는 재구성된 참조 블록에 적용된다. 인-루프 필터 컴포넌트(325)는 필터 제어 분석 컴포넌트(227) 및 인-루프 필터 컴포넌트(225)와 실질적으로 유사할 수 있다. 인-루프 필터 컴포넌트(325)는 아래에서 논의되는 바와 같이 노이즈 억제 필터를 포함하는 다중 필터를 포함할 수 있다. 필터링된 블록은 모션 보상 컴포넌트(321)에 의해 참조 블록을 사용하기 위해 디코딩된 픽처 버퍼(323)에 저장된다. 디코딩된 픽처 버퍼(323)는 디코딩된 픽처 버퍼(223)와 실질적으로 유사할 수 있다.
도 4는 예시적인 비디오 디코더(400)를 예시하는 블록도이다. 비디오 디코더(400)는 코덱 시스템(200)의 디코딩 기능을 구현하고 및/또는 방법(100)의 단계 111, 113, 115 및/또는 117을 구현하기 위해 사용될 수 있다. 디코더(400)는 예를 들어 인코더(300)로부터의 비트스트림은 최종 사용자에게 디스플레이하기 위해 비트스트림에 기초하여 재구성된 출력 비디오 신호를 생성한다.
비트스트림은 엔트로피 디코딩 컴포넌트(433)에 의해 수신된다. 엔트로피 디코딩 컴포넌트(433)는 엔트로피 인코딩 컴포넌트(331)의 역기능을 수행한다. 엔트로피 디코딩 컴포넌트(433)는 CAVLC, CABAC, SBAC 및 PIPE 코딩 또는 기타 엔트로피 코딩 기술과 같은 엔트로피 디코딩 방식을 구현하도록 구성된다. 예를 들어, 엔트로피 디코딩 컴포넌트(433)는 비트스트림에서 코드워드로 인코딩된 추가 데이터를 해석하기 위한 컨텍스트를 제공하기 위해 헤더 정보를 사용할 수 있다. 디코딩된 정보는 일반 제어 데이터, 필터 제어 데이터, 파티션 정보, 모션 데이터, 예측 데이터 및 잔여 블록으로부터의 양자화된 변환 계수와 같은 비디오 신호를 디코딩하기 위한 임의의 원하는 정보를 포함한다. 양자화된 변환 계수는 잔여 블록으로의 재구성을 위해 역변환 및 양자화 컴포넌트(429)로 포워딩된다. 역변환 및 양자화 컴포넌트(429)는 역변환 및 양자화 컴포넌트(329)와 실질적으로 유사할 수 있다.
재구성된 잔여 블록 및/또는 예측 블록은 인트라-예측 연산에 기초하여 이미지 블록으로 재구성하기 위해 인트라-픽처 예측 컴포넌트(417)로 포워딩된다. 인트라-픽처 예측 컴포넌트(417)는 인트라-픽처 예측 컴포넌트(317)와 실질적으로 유사할 수 있지만 반대로 동작한다. 구체적으로, 인트라-픽처 예측 컴포넌트(417)는 프레임에서 참조 블록을 찾기 위해 예측 모드를 사용하고 그 결과에 잔여 블록을 적용하여 인트라-예측된 이미지 블록을 재구성한다. 재구성된 인트라-예측된 이미지 블록 및/또는 잔여 블록 및 대응하는 인터-예측 데이터는 인-루프 필터 컴포넌트(425)를 통해 디코딩된 픽처 버퍼 컴포넌트(423)로 포워딩되며, 이는 디코딩된 픽처 버퍼 컴포넌트(323) 및 인-루프 필터 컴포넌트(325)와 각각 실질적으로 유사할 수 있다. 인-루프 필터 컴포넌트(425)는 재구성된 이미지 블록, 잔여 블록 및/또는 예측 블록을 필터링하고, 이러한 정보는 디코딩된 픽처 버퍼 컴포넌트(423)에 저장된다. 디코딩된 픽처 버퍼 컴포넌트(423)로부터의 재구성된 이미지 블록은 모션 보상으로 포워딩된다. 인터-예측을 위한 컴포넌트 421. 모션 보상 컴포넌트(421)는 모션 보상 컴포넌트(321)와 실질적으로 유사할 수 있지만 반대로 동작할 수 있다. 구체적으로, 모션 보상 컴포넌트(421)는 참조 블록으로부터 모션 벡터를 사용하여 예측 블록을 생성하고 결과에 잔여 블록을 적용하여 이미지 블록을 재구성한다. 결과적인 재구성된 블록은 또한 인-루프 필터 컴포넌트(425)를 통해 디코딩된 픽처 버퍼 컴포넌트(423)로 포워딩될 수 있다. 디코딩된 픽처 버퍼 컴포넌트(423)는 분할 정보를 통해 프레임으로 재구성될 수 있는 추가의 재구성된 이미지 블록을 계속 저장한다. 이러한 프레임은 시퀀스에 배치될 수도 있다. 시퀀스는 재구성된 출력 비디오 신호로 디스플레이에 출력된다.
인터-예측.
비디오 코딩 프로세스 동안 비디오 데이터를 압축하기 위해 많은 방식이 함께 사용된다. 예를 들어 비디오 시퀀스는 이미지 프레임으로 파티셔닝된다. 그런 다음 이미지 프레임이 이미지 블록으로 파티셔닝된다. 그런 다음 이미지 블록은 인터-예측(다른 프레임의 블록 간의 상관) 또는 인트라-예측(동일한 프레임의 블록 간의 상관)에 의해 압축될 수 있다.
인터-예측은 코딩 트리 단위(coding tree unit, CTU), 코딩 트리 블록(coding tree block, CTB), 코딩 단위(coding unit, CU), 서브 CU 등과 같은 코딩 객체가 비디오 시퀀스의 여러 프레임에 나타날 때 사용된다. 각 프레임에서 동일한 객체를 코딩하는 대신 객체를 참조 프레임에 코딩하고 모션 벡터(motion vector, MV)를 사용하여 객체의 움직임 궤적을 표시한다. 물체의 모션 궤적은 시간에 따른 물체의 움직임이다. MV는 프레임 사이에서 위치가 변경되는 객체의 방향과 크기를 나타내는 벡터이다. 객체와 MV는 비트스트림으로 코딩되고 디코더에 의해 디코딩될 수 있다. 코딩 효율을 더 높이고 인코딩 크기를 줄이기 위해 MV는 비트스트림에서 생략되고 디코더에서 유도될 수 있다. 예를 들어, 한 쌍의 참조 프레임이 사용될 수 있다. 참조 프레임은 관련 프레임을 코딩할 때 참조로 코딩할 수 있는 데이터를 포함하는 비트스트림의 프레임이다. 양방향 매칭 및/또는 템플릿 매칭과 같은 매칭 알고리즘이 양쪽 참조 프레임에서 코딩 객체의 위치를 결정하기 위해 사용될 수 있다. 양방향 매칭 알고리즘은 이전 프레임의 블록을 현재 프레임의 블록과 매칭한다. 템플릿 매칭 알고리즘은 하나 이상의 참조 프레임에서 현재 블록에 인접한 블록이 있는 현재 블록에 인접한 블록을 매칭한다. 두 참조 프레임에서 물체의 위치가 결정되면 참조 프레임 사이에서 물체의 움직임을 나타내는 MV를 결정할 수 있다. 그런 다음 MV를 사용하여 참조 프레임 사이의 프레임에 객체를 배치할 수 있다. 구체적인 예로 전체 CU에 대해 초기 MV를 결정할 수 있다. 그런 다음 로컬 검색을 사용하여 초기 MV를 구체화할 수 있다. 또한 객체의 서브 CU 컴포넌트에 대한 MV는 개선된 초기 MV를 기반으로 결정 및 개선될 수 있다. 이러한 접근 방식은 물체의 움직임 궤적이 참조 프레임 사이에서 연속적인 한 물체의 정확한 위치를 나타낸다.
도 5는 예를 들어 블록 압축 단계 105, 블록 디코딩 단계 113, 모션 추정 컴포넌트(221), 모션 보상 컴포넌트(219), 모션 보상 컴포넌트(321) 및/또는 모션 보상 컴포넌트(421)에서 모션 벡터(MV)를 결정하기 위해 수행되는 단방향 인터-예측(500)의 예를 예시하는 개략도이다.
단방향 인터-예측(500)은 현재 프레임(510)에서 현재 블록(511)을 예측하기 위해 참조 블록(531)이 있는 참조 프레임(530)을 사용한다. 참조 프레임(530)은 도시된 바와 같이 시간적으로 현재 프레임(510) 뒤에 위치할 수 있지만, 일부 예들에서 시간적으로 현재 프레임(510) 앞에 위치할 수도 있다. 현재 프레임(510)은 특정 시간에 인코딩/디코딩되는 예시적인 프레임/영상이다. 현재 프레임(510)은 참조 프레임(530)의 참조 블록(531)에 있는 객체와 일치하는 현재 블록(511)의 객체를 포함한다. 참조 프레임(530)은 현재 프레임(510)을 인코딩하기 위한 참조로 사용되는 프레임고, 참조 블록(531)은 현재 프레임(510)의 현재 블록(511)에도 포함된 객체를 포함하는 참조 프레임(530)의 블록이다. 현재 블록(511)은 코딩 프로세스의 특정 포인트에서 인코딩/디코딩되는 임의의 코딩 단위이다. 현재 블록(511)은 분할된 전체 블록일 수도 있고, 아핀 인터-예측의 경우 서브 블록일 수도 있다. 현재 프레임(510)은 시간적 거리(temporal distance, TD)(533)만큼 참조 프레임(530)과 분리된다. TD(533)는 비디오 시퀀스에서 현재 프레임(510)과 참조 프레임(530) 사이의 시간의 양을 나타낸다. TD(533)에 의해 표현되는 기간 동안, 현재 블록(511)의 객체는 현재 프레임(510)의 위치에서 참조 프레임(530)의 다른 위치(예를 들어, 참조 블록(531)의 위치)로 이동한다. 예를 들어, 객체는 시간에 따른 객체의 이동 방향 인 모션 궤적(513)을 따라 이동할 수 있다. 모션 벡터(535)는 TD(533)를 통해 모션 궤적(513)을 따라 물체의 움직임의 방향과 크기를 설명한다. 따라서, 인코딩된 MV(535) 및 참조 블록(531)은 현재 블록(51)을 현재 프레임(510)에서 현재 블록(511)의 랜드 위치로 재구성하기에 충분한 정보를 제공한다.
도 6은 예를 들어, 블록 압축 단계 105, 블록 디코딩 단계 113, 모션 추정 컴포넌트(221), 모션 보상 컴포넌트(219), 모션 보상 컴포넌트(321), 및/또는 모션 보상 컴포넌트(421)에서 MV를 결정하기 위해 수행되는 양방향 인터-예측(600)의 예를 나타내는 개략도이다. 예를 들어, 양방향 인터-예측(600)은 인터-예측 모드에서 블록에 대한 모션 벡터를 결정하고 및/또는 아핀 인터-예측 모드에서 서브-블록에 대한 모션 벡터를 결정하기 위해 사용될 수 있다.
양방향 인터-예측(600)은 단방향 인터-예측(500)과 유사하지만, 현재 프레임(610)에서 현재 블록(611)을 예측하기 위해 한 쌍의 참조 프레임을 사용한다. 따라서, 현재 프레임(610) 및 현재 블록(611)은 각각 현재 프레임(510) 및 현재 블록(511)과 실질적으로 유사하다. 현재 프레임(610)은 비디오 시퀀스에서 현재 프레임(610) 이전에 발생하는 선행 참조 프레임(620)과 비디오 시퀀스에서 현재 프레임(610) 이후에 발생하는 후속 참조 프레임(630) 사이에 시간적으로 위치한다. 선행 참조 프레임(620) 및 후속 참조 프레임(630)은 그렇지 않으면 참조 프레임(530)과 실질적으로 유사하다.
현재 블록(611)은 선행 참조 프레임(620)에서 선행 참조 블록(621) 및 후속 참조 프레임(630)에서 후속 참조 블록(631)에 매칭된다. 이러한 매칭은 비디오 시퀀스 과정에서, 객체는 선행 참조 블록(621)의 위치에서 모션 궤적(613)을 따라 현재 블록(611)을 통해 후속 참조 블록(631)의 위치로 이동한다는 것을 나타낸다. 현재 프레임(610)은 선행 참조 프레임(620)으로부터 일부의 선행 시간 거리(preceding temporal distance, TD0)(623)만큼 분리되고 일부 후속 시간 거리(TD1)(633)만큼 후속 참조 프레임(630)으로부터 분리된다. TD0(623)은 비디오 시퀀스에서 선행 참조 프레임(620)과 현재 프레임(610) 사이의 시간 양을 나타낸다. TD1(633)은 비디오 시퀀스에서 현재 프레임(610)과 후속 참조 프레임(630) 사이의 시간 양을 나타낸다. 따라서, 객체는 TD0(623)에 의해 표시된 시간 동안 모션 궤적(613)을 따라 선행 참조 블록(621)에서 현재 블록(611)으로 이동한다. 또한, 객체는 TD1(633)로 표시된 시간 동안 모션 궤적(613)을 따라 현재 블록(611)에서 후속 참조 블록(631)으로 이동한다.
선행 모션 벡터(MV0)(625)는 TD0(623)(예를 들어, 선행 참조 프레임(620)과 현재 프레임(610) 사이)에 걸쳐 모션 궤적(613)을 따라 물체의 이동의 방향 및 크기를 설명한다. 후속 모션 벡터(MV1)(635)는 (예를 들어, 현재 프레임(610)과 후속 참조 프레임(630) 사이의) TD1(633)에 걸쳐 모션 궤적(613)을 따라 물체의 이동의 방향 및 크기를 설명한다. 이와 같이, 양방향 인터-예측(600)에서, 현재 블록(611)은 선행 참조 블록(621) 및/또는 후속 참조 블록(631), MV0(625) 및 MV1(635)을 사용함으로써 코딩되고 재구성될 수 있다.
인트라 예측.
비디오 코딩 프로세스 동안 비디오 데이터를 압축하기 위해 많은 방식이 함께 사용된다. 예를 들어 비디오 시퀀스는 이미지 프레임으로 파티셔닝된다. 그런 다음 이미지 프레임이 이미지 블록으로 파티셔닝된다. 그런 다음 이미지 블록은 인터-예측(다른 프레임의 블록 간의 상관) 또는 인트라-예측(동일한 프레임의 블록 간의 상관)에 의해 압축될 수 있다. 인트라-예측에서는 샘플의 기준선에서 현재 이미지 블록을 샘플의 기준선으로부터 예측한다. 기준선은 인접 블록이라고도 하는 인접 이미지 블록의 샘플이 포함된다. 현재 블록의 샘플은 가장 가까운 루마(광) 또는 크로마(색상) 값을 가진 기준선의 샘플과 일치한다. 현재 블록은 일치하는 샘플을 나타내는 예측 모드로 코딩된다. 예측 모드에는 각도 예측 모드, 직류(DC) 모드 및 평면 모드가 포함된다. 예측 모드에서 예측한 값과 실제 값의 차이는 잔여 블록에 잔여 값으로 코딩된다.
도 7은 비디오 코딩에 사용되는 예시적인 인트라-예측 모드(700)를 예시하는 개략도이다. 예를 들어, 인트라-예측 모드(700)는 방법(100)의 단계 105 및 113, 인트라-픽처 추정 컴포넌트(215), 및 코덱 시스템(200)의 인트라-픽처 예측 컴포넌트(217), 인코더(300)의 인트라-픽처 예측 컴포넌트(317), 및/또는 디코더(400)의 인트라-픽처 예측 컴포넌트(417)에 의해 적용될 수 있다. 구체적으로, 인트라-예측 모드(700)는 이미지 블록을 선택된 예측 모드 및 나머지 잔여 블록을 포함하는 예측 블록으로 압축하기 위해 사용될 수 있다.
위에서 언급한 바와 같이, 인트라-예측은 현재 이미지 블록을 하나 이상의 인접 블록의 대응하는 샘플 또는 샘플들에 매칭하는 것을 포함한다. 그런 다음 현재 이미지 블록은 선택된 예측 모드 인덱스 및 잔여 블록으로 표시될 수 있으며, 이것은 현재 이미지 블록에 포함된 모든 루마/크로마 값을 나타내는 것보다 훨씬 작다. 인트라-예측은 사용 가능한 참조 프레임이 없거나 현재 블록 또는 프레임에 대해 인터-예측(Inter-predication) 코딩이 사용되지 않을 때 사용할 수 있다. 인트라-예측을 위한 참조 샘플은 동일한 프레임에서 이전에 코딩된(또는 재구성된) 인접 블록으로부터 유도될 수 있다. H.264 및 H.265/HEVC로도 알려진 고급 비디오 코딩(Advanced Video Coding, AVC)는 둘 다 인트라-예측을 위한 참조 샘플로 인접한 블록의 경계 샘플의 기준선을 사용한다. 다양한 텍스처 또는 구조적 특성을 다루기 위해 다양한 내부 예측 모드가 사용된다. H.265/HEVC는 현재 블록을 하나 이상의 참조 샘플과 공간적으로 상관시키는 35 개의 내부 예측 모드(700)를 지원한다. 구체적으로, 인트라-예측 모드(700)는 모드 2 내지 34로 인덱싱된 33 개의 방향성 예측 모드, 모드 1로 인덱싱된 DC 모드 및 모드 0으로 인덱싱된 평면 모드를 포함한다.
인코딩하는 동안 인코더는 현재 블록의 루마/크로마 값을 인접 블록의 가장자리를 가로지르는 기준선의 해당 참조 샘플의 루마/크로마 값과 일치시킨다. 기준선 중 하나와의 최상의 일치가 발견되면, 인코더는 최상의 일치 기준선을 가리키는 방향성 인트라-예측 모드(700) 중 하나를 선택한다. 논의의 명확성을 위해, 특정 방향성 인트라-예측 모드(700)를 참조하기 위해 아래에서 약어가 사용된다. DirS는 왼쪽 하단에서 시계 방향으로 카운팅할 때 시작 방향성 인트라-예측 모드를 나타낸다(예를 들어, HEVC의 모드 2). DirE는 왼쪽 하단에서 시계 방향으로 카운팅할 때 종료 방향 인트라-예측 모드를 나타낸다(예를 들어, HEVC의 모드 34). DirD는 왼쪽 하단에서 시계 방향으로 카운팅할 때 중간 방향 인트라 코딩 모드를 나타낸다(예를 들어, HEVC의 모드 18). DirH는 수평 인트라-예측 모드를 나타낸다(예를 들어, HEVC의 모드 10). DirV는 수직 인트라-예측 모드를 나타낸다(예를 들어, HEVC의 모드 26).
전술한 바와 같이, DC 모드는 평활화 기능의 역할을 하며 주변 블록을 가로지르는 기준선의 모든 참조 샘플의 평균값으로 현재 블록의 예측값을 도출한다. 또한 위에서 논의한 바와 같이, 평면 모드는 기준 샘플의 기준선의 왼쪽 아래와 상단 또는 왼쪽 상단과 오른쪽 상단에 있는 샘플 사이의 부드러운 전환(예를 들어, 값의 일정한 기울기)을 나타내는 예측 값을 반환한다.
DirH에서 DirV까지의 평면(Planar) 모드, DC 모드 및 예측 모드의 경우 기준선의 맨 위 행과 기준선의 왼쪽 열에 있는 샘플이 참조 샘플로 사용된다. DirS에서 DirH까지(DirS 및 DirH 포함)의 예측 방향이 있는 예측 모드의 경우 기준선의 왼쪽 열에 있는 이전에 코딩되고 재구성된 인접 블록의 참조 샘플이 참조 샘플로 사용된다. DirV에서 DirE까지(DirV 및 DirE 포함)의 예측 방향이 있는 예측 모드의 경우 기준선의 맨 위 행에 있는 이전에 코딩되고 재구성된 인접 블록의 참조 샘플이 참조 샘플로 사용된다.
도 8은 비디오 코딩에서 블록(800)의 방향 관계의 예를 예시하는 개략도이다. 예를 들어, 블록(800)은 인트라-예측 모드(500)를 선택할 때 사용될 수 있다. 따라서, 블록(800)은 방법(100)의 단계 105 및 113, 코덱 시스템(200)의 인트라-픽처 추정 컴포넌트(215) 및 인트라-픽처 예측 컴포넌트(217), 인코더(300)의 인트라-픽처 예측 컴포넌트(317) 및/또는 디코더(400)의 인트라-픽처 예측 컴포넌트(417)에 의해 사용될 수 있다. 비디오 코딩에서, 블록(800)은 비디오 콘텐츠에 기초하여 파티셔닝되고, 따라서 다양한 형태 및 크기의 많은 직사각형 및 정사각형을 포함할 수 있다. 블록(800)은 설명을 위해 정사각형으로 도시되어 있으므로 논의의 명확성을 지원하기 위해 실제 비디오 코딩 블록에서 단순화된다.
블록(800)은 현재 블록(801) 및 인접 블록(810)을 포함한다. 현재 블록(810)은 지정된 시간에 코딩되는 임의의 블록이다. 인접 블록(810)은 현재 블록(801)의 좌측 에지 또는 상단 에지에 바로 인접한 임의의 블록이다. 비디오 코딩은 일반적으로 좌측 상단에서 우측 하단으로 진행된다. 이와 같이, 인접 블록(810)은 현재 블록(801)의 코딩 이전에 인코딩 및 재구성될 수 있다. 현재 블록(801)을 코딩할 때, 인코더는 현재 블록(801)의 루마/크로마 값을 인접 블록(810)의 에지를 횡단하는 기준선으로부터 참조 샘플(또는 샘플들)과 일치시킨다. 그런 다음, 일치된 샘플(또는 DC 또는 평면 모드가 선택될 때의 샘플)을 가리키는 인트라-예측 모드(700)와 같은 인트라-예측 모드를 선택하기 위해 매치가 사용된다. 이때 선택된 인트라-예측 모드는 현재 블록(801)의 루마/크로마 값은 선택된 인트라-예측 모드에 대응하는 기준 샘플과 실질적으로 유사함을 나타낸다. 모든 차이는 잔여 블록에 유지될 수 있다. 선택된 인트라-예측 모드는 비트스트림으로 인코딩된다. 디코더에서, 현재 블록(801)은 (잔여 블록으로부터의 잔여 정보와 함께) 선택된 인트라-예측 모드에 대응하는 인접 블록(810)의 선택된 기준선에서 참조 샘플의 루마/크로마 값을 사용함으로써 재구성될 수 있다.
인-루프 필터.
비디오 코딩 방식은 비디오 신호를 이미지 프레임으로 세분화한 다음 이미지 프레임을 다양한 유형의 블록으로 세분화한다. 그런 다음 이미지 블록이 압축된다. 이 접근 방식은 압축된 비디오 신호가 재구성되고 표시될 때 시각적 아티팩트를 생성할 수 있다. 예를 들어, 이미지 압축 프로세스는 인위적으로 블록 모양을 추가할 수 있다. 이를 블로킹(blocking)이라고 하며 일반적으로 블록 파티션 경계에서 발생한다. 또한, 양자화 노이즈로 알려진 비선형 신호 의존적 반올림 오차(non-linear signal dependent rounding error)도 압축된 이미지에 인위적으로 추가될 수 있다. 이러한 아티팩트를 보정하기 위해 다양한 필터가 사용될 수 있다. 필터는 포스트 프로세싱에서 재구성된 프레임에 적용될 수 있다. 포스트 프로세싱은 압축된 비디오 신호의 상당 부분이 재구성된 후 사용자에게 표시되기 직전에 발생한다. 필터는 인-루프 필터링이라는 메커니즘을 사용하여 압축/압축 해제 프로세스의 일부로 적용될 수도 있다. 인-루프 필터링은 인코딩 및/또는 디코딩 프로세스 중에 재구성된 비디오 이미지에 필터를 적용하여 관련 이미지 간의 보다 정확한 압축을 지원하는 필터링 체계이다. 예를 들어, 인터-예측은 이전 및/또는 후속 이미지 프레임을 기반으로 이미지 프레임을 인코딩한다. 인코더에서, 압축된 이미지는 인-루프 필터링을 통해 재구성되고 필터링되므로 재구성된 이미지는 인터-예측을 통해 이전/후속 이미지 프레임(들)을 인코딩하는 데 사용하기 위해 더 정확한 이미지를 제공한다. 디코더에서 압축된 이미지는 최종 사용자가 볼 수 있는 보다 정확한 이미지를 생성하고 보다 정확한 인터-예측을 지원하기 위해 인-루프 필터링을 통해 재구성 및 필터링된다. 인-루프에서, 필터링은 디 블로킹 필터, 샘플 적응 오프셋(SAO) 필터 및 적응 루프 필터와 같은 여러 필터를 사용한다. 인-루프 필터링에는 노이즈 억제 필터도 포함될 수 있다.
도 9는 예시적인 인-루프 필터(900)를 예시하는 블록도이다. 인-루프 필터(900)는 인-루프 필터(225, 325, 및/또는 425)를 구현하기 위해 사용될 수 있다. 인-루프 필터(900)는 노이즈 억제 필터(941); 디 블록킹 필터(943), 샘플 적응 오프셋(SAO) 필터(945) 및 적응 루프 필터(947)를 포함한다. 인-루프 필터(900)의 필터는 재구성된 이미지 블록 및/또는 잔여 블록에 순차적으로 적용된다.
노이즈 억제 필터(941)는 이미지 압축으로 인한 양자화 노이즈를 제거하도록 구성된다. 구체적으로, 노이즈 억제 필터(941)는 이미지의 가장자리에서 발생하는 아티팩트를 제거하기 위해 사용된다. 예를 들어, 이미지 압축은 이미지에서 서로 다른 색상/밝은 패치 사이의 날카로운 전환(가장자리)에 인접한 뚜렷하고 부정확한 색상/밝은 값을 생성할 수 있다. 이를 링잉이라고 하며 날카로운 가장자리와 관련된 이미지 데이터의 고주파수 부분에 변환을 적용하여 발생한다. 노이즈 억제 필터(941)는 이러한 링잉 아티팩트를 완화하기 위해 사용된다. 노이즈 억제 필터(941)는 공간 도메인(예를 들어, 픽셀의 공간 배향) 및 주파수 도메인(예를 들어, 픽셀 데이터에 관한 변환된 계수 값의 관계) 모두에서 동작한다. 인코더에서, 노이즈 억제 필터(941)는 재구성된 프레임을 참조 매크로 블록으로 파티셔닝한다. 이러한 블록은 더 작은 참조 블록으로 세분화될 수도 있다. 노이즈 억제 필터(941)는 먼저 블록에서 추정된 양자화 잡음의 양에 기초하여 필터링되어야 하는 프레임의 부분을 나타내는 애플리케이션 맵을 생성한다. 노이즈 억제 필터(941)는 매칭 컴포넌트를 사용하여 애플리케이션 맵에 의해 표시된 바와 같이 각각의 참조 블록에 대해 대응하는 참조 블록과 유사한 패치 세트를 결정하는데, 여기서 유사한 것은 크로마/루마 값이 미리 결정된 범위 내에 있음을 나타낸다. 노이즈 억제 필터(941)는 패치를 클러스터로 그룹화하고 2 차원(2D) 변환을 사용하여 클러스터를 주파수 도메인으로 변환하여 주파수 도메인 패치를 생성할 수 있다. 노이즈 억제 필터(941)는 또한 역 2D 변환을 이용하여 주파수 도메인 패치를 공간 도메인으로 다시 변환할 수 있다.
디 블로킹 필터(943)는 블록 기반 인터 및 인트라-예측에 의해 생성된 블록 형상 에지를 제거하도록 구성된다. 디 블로킹 필터(943)는 분할 경계에서 발생하는 크로마 및/또는 루마 값의 불연속성에 대해 이미지 부분(예를 들어, 이미지 슬라이스)을 스캔한다. 그런 다음, 디 블로킹 필터(943)는 그러한 불연속성을 제거하기 위해 블록 경계에 평활화 기능을 적용한다. 디 블로킹 필터(943)의 강도는 블록 경계에 인접한 영역에서 발생하는 공간 활동(예를 들어, 루마/크로마 성분의 변화)에 따라 변할 수 있다.
SAO 필터(945)는 인코딩 프로세스에 의해 야기되는 샘플 왜곡과 관련된 아티팩트를 제거하도록 구성된다. 인코더에서의 SAO 필터(945)는 재구성된 이미지의 디 블로킹된 샘플을 상대적 디 블로킹 에지 형상 및/또는 방향에 기초하여 여러 카테고리로 분류한다. 그런 다음 오프셋이 결정되고 범주에 따라 샘플에 추가된다. 오프셋은 비트스트림에서 인코딩되고 디코더에서 SAO 필터(945)에 의해 사용된다. SAO 필터(945)는 밴딩 아티팩트(banding artifact)(부드러운 전환 대신 값의 밴드) 및 링잉 아티팩트(ringing artifact)(예리한 에지 근처의 가짜 신호)를 제거한다.
인코더에서 적응 루프 필터(947)는 재구성된 이미지를 원본 이미지와 비교하도록 구성된다. 적응 루프 필터(947)는 예를 들어 비에너(Wiener) 기반 적응 필터를 통해 재구성된 이미지와 원본 이미지 사이의 차이를 설명하는 계수를 결정한다. 이러한 계수는 비트스트림에서 인코딩되고 디코더의 적응 루프 필터(947)에서 사용되어 재구성된 이미지와 원본 이미지 사이의 차이를 제거한다. 적응성 루프 필터(947)가 아티팩트를 수정하는 데 효과적이지만, 재구성된 이미지와 원본 이미지 사이의 차이가 클수록 더 많은 계수가 시그널링될 수 있다. 이것은 차례로 더 큰 비트스트림을 생성하여 압축의 효율성을 감소시킨다. 이와 같이, 적응 루프 필터(947)를 적용하기 전에 다른 필터에 의한 차이를 최소화하면 압축이 개선된다.
파티셔닝.
비디오 코딩은 인코더를 사용하여 미디어 파일을 압축하고 디코더를 사용하여 압축된 미디어 파일로부터 원본 미디어 파일을 재구성한다. 비디오 코딩은 표준화된 프로세스를 사용하는 모든 디코더가 표준화된 프로세스를 사용하는 모든 인코더에 의해 압축된 미디어 파일을 일관되게 재생할 수 있도록 하기 위해 다양한 표준화된 프로세스를 사용한다. 예를 들어, 인코더와 디코더는 모두 H.265로도 알려진 고효율 비디오 코딩(HEVC)과 같은 코딩 표준을 사용할 수 있다. 인코더에서 비디오 신호는 프레임으로 분리된다. 그런 다음 프레임은 픽셀 그룹을 포함하는 이미지 블록으로 파티셔닝된다. 그런 다음 이미지 블록은 압축, 필터링 및 비트스트림으로 인코딩된다. 비트스트림은 최종 사용자에게 디스플레이하기 위해 비디오 신호를 재구성하는 디코더로 전송될 수 있다.
분할 시스템은 이미지 블록을 서브 블록으로 분할하도록 구성된다. 예를 들어, 노드(예를 들어, 블록)를 자식 노드(예를 들어, 서브 블록)로 분할하기 위해 다양한 스플리트 모드를 사용하는 트리 구조가 사용될 수 있다. 다른 스플리트 모드를 사용하여 다른 파티션을 얻을 수 있다. 또한 스플리트 모드를 재귀적으로 적용하여 노드를 더 세분화할 수도 있다. 이러한 스플리트 모드를 적용하면 다양한 파티션 패턴이 생성된다.
도 10은 블록 파티셔닝에 사용되는 예시적인 스플리트 모드(1000)를 도시한다. 스플리트 모드(1000)는 파티셔닝하는 동안 부모 노드(예를 들어, 이미지 블록)를 복수의 자식 노드(예를 들어, 이미지 서브-블록)로 분할하는 메커니즘이다. 스플리트 모드(1000)는 쿼드 트리(quad-tree, QT) 스플리트 모드(1001), 수직 이진 트리(binary tree, BT) 스플리트 모드(1003), 수평 BT 스플리트 모드(1005), 수직 트리플 트리(triple tree, TT) 스플리트 모드(1007) 및 수평 TT 스플리트 모드(1009)를 포함한다. QT 스플리트 모드(1001)는 4Mx4N 크기의 노드가 MxN 크기의 4 개의 자식 노드로 분할되는 블록 파티셔닝을 위한 트리 구조이며, 여기서 M은 블록 너비를 나타내고 N은 블록 높이를 나타낸다. 수직 BT 스플리트 모드(1003) 및 수평 BT 스플리트 모드(1005)는 크기가 4Mx4N인 노드가 각각 크기가 2Mx4N인 두 개의 자식 노드로 수직으로 분할되거나 크기가 4Mx2N인 두 개의 자식 노드로 수평으로 각각 분할되는 블록 파티셔닝을 위한 트리 구조이다. 수직 TT 스플리트 모드(1007) 및 수평 TT 스플리트 모드(1009)는 크기가 4Mx4N인 노드가 Mx4N, 2Mx4N 및 Mx4N 크기의 3 개의 자식 노드로 수직으로 분할되거나; 또는 4MxN, 4Mx2N 및 4MxN 크기의 3 개의 자식 노드로 각각 수평 분할되는 블록 파티셔닝을 위한 트리 구조이다. 세 개의 자식 노드 중 가장 큰 노드가 중앙에 위치한다.
스플리트 모드(1000)는 블록을 더 분할하기 위해 재귀적으로 적용될 수도 있다. 예를 들어 쿼드-트리 이진-트리(quad-tree binary-tree, QT-BT)는 QT 스플리트 모드 1001로 노드를 분할한 다음 수직 BT 스플리트 모드(1003) 및/또는 수평 BT 스플리트 모드(1005)로 각각의 자식 노드(4 중 트리 리프 노드라고도 함)를 파티셔닝하여 생성될 수 있다. 또한, 쿼드 트리 분할로 노드를 분할한 다음 결과적인 자식 노드를 수직 TT 분할 모드(1007) 및/또는 수평 TT 스플리트 모드(1009)로 분할하여 쿼드 트리 트리플 트리(QT-TT)를 생성할 수 있다.
HEVC는 합동 탐사 모델(Joint Exploration Model, JEM) 애플리케이션에서 작동한다. JEM에서는 코딩 트리 단위(CTU)를 복수의 블록으로 파티셔닝하기 위해 QT-BT 블록 분할이 사용된다. TT 블록 파티셔닝은 또한 블록 파티션 유형을 더욱 풍부하게 하기 위해 JEM에 포함되도록 제안되었다. QT, QT-BT, QT-TT 블록 분할 스플리트 모드에 기반한 비디오 코딩에서, 깊이 K의 코딩 또는 예측 블록은 BT, TT, 또는 QT 스플리트 모드에 의해 깊이 K+1의 N 개의 더 작은 코딩 또는 예측 블록으로 분할될 수 있으며, 여기서 N은 각각 2, 3 또는 4로 설정된다. 스플리트 모드의 파티션 패턴은 도 10에 도시되어 있고, 파티션 패턴은 부모 노드에서 분할된 둘 이상의 자식 노드의 크기와 위치를 나타낸다.
변환.
비디오 코딩은 인코더를 사용하여 미디어 파일을 압축하고 디코더를 사용하여 압축된 미디어 파일로부터 원본 미디어 파일을 재구성한다. 비디오 코딩은 표준화된 프로세스를 사용하는 모든 디코더가 표준화된 프로세스를 사용하는 모든 인코더에 의해 압축된 미디어 파일을 일관되게 재생할 수 있도록 하기 위해 다양한 표준화된 프로세스를 사용한다.
예를 들어, 인코더와 디코더는 모두 H.265로도 알려진 고효율 비디오 코딩(HEVC)과 같은 코딩 표준을 사용할 수 있다. H. 265는 예측 및 변환 프레임 워크를 기반으로 한다. 인코더에서 비디오 파일은 프레임으로 분리된다. 그런 다음 프레임은 픽셀 그룹을 포함하는 이미지 블록으로 세분화된다. 이미지 블록은 예측 모드 및 모션 벡터 정보와 같은 예측 정보를 포함하는 예측 블록과 변환 모드, 변환 계수 및 양자화 파라미터와 같은 잔여 정보를 포함하는 잔여 블록으로 더 분해된다. 예측 블록과 잔여 블록은 이미지 블록보다 적은 저장 공간을 사용하지만 디코더에서 이미지 블록을 복원하는 데 사용할 수 있다. 예측 블록 및 잔여 블록은 비트스트림으로 코딩되고 디코더로 전송되고 및/또는 요청 시 나중의 전송을 위해 저장된다. 디코더에서 예측 정보와 잔여 정보가 파싱된다. 분석된 예측 정보는 인트라-예측 또는 인터-예측을 사용하여 예측 샘플을 생성하는 데 사용된다. 인트라-예측은 재구성된 이미지 블록을 사용하여 동일한 프레임의 다른 이미지 블록을 예측한다. 인터-예측은 재구성된 이미지 블록을 사용하여 인접 프레임 사이의 다른 이미지 블록을 예측한다. 또한, 잔여 정보는 예를 들어 역 양자화 및 역변환을 순차적으로 적용하여 잔여 샘플을 생성하는 데 사용된다. 예측 샘플 및 잔여 샘플은 (예를 들어, 모니터에서 최종 사용자에게 표시하기 위해) 인코더에 의해 코딩된 이미지 블록에 대응하는 재구성된 샘플을 얻도록 결합된다.
공간 가변 변환(Spatial varying transform, SVT)은 비디오 코딩 효율성을 더욱 향상시키기 위해 사용되는 메커니즘이다. SVT는 잔여 블록을 더 압축하기 위해 변환 블록을 사용한다. 구체적으로 직사각형 잔여 블록은 너비와 높이 h(예를 들어, wxh)를 포함한다. 잔여 블록보다 작은 변환 블록이 선택된다. 따라서, 변환 블록은 잔여 블록의 대응하는 부분을 변환하고 추가적인 코딩/압축 없이 잔여 블록의 나머지 부분을 남기기 위해 사용된다. SVT의 근거는 잔여 정보가 잔여 블록에 고르게 분포되지 않을 수 있다는 것이다. 적응형 위치가 있는 더 작은 변환 블록을 사용하면 전체 잔여 블록을 변환할 필요없이 잔여 블록에서 대부분의 잔여 정보를 캡처할 수 있다. 이 접근 방식은 일부 경우에 잔여 블록의 모든 잔여 정보를 변환하는 것보다 더 나은 코딩 효율성을 달성할 수 있다. 변환 블록이 잔여 블록보다 작기 때문에 SVT는 잔여 블록에 대한 변환 위치를 시그널링하는 메커니즘을 사용한다. 이러한 위치 시그널링은 코딩 프로세스의 전체 시그널링 오버헤드를 증가시켜 압축 효율을 감소시킨다. 또한 모든 경우에 동일한 유형의 변환 블록을 사용하면 경우에 따라 유익한 결과를 얻지 못할 수 있다.
도 11은 예시적인 비디오 인코딩 메커니즘(1100)의 개략도이다. 하나 이상의 프레임으로부터의 인코더는 이미지 블록(1101)을 획득할 수 있다. 예를 들어, 이미지는 복수의 직사각형 이미지 영역으로 분할될 수 있다. 이미지의 각 영역은 CTU(코딩 트리 단위)에 대응한다. CTU는 HEVC의 코딩 단위와 같은 복수의 블록으로 파티셔닝된다. 그런 다음, 블록 분할 정보는 비트스트림(1111)에서 인코딩된다. 따라서, 이미지 블록(1101)은 이미지의 분할된 부분이고 이미지의 대응하는 부분에서 루마 성분 및/또는 크로마 성분을 나타내는 픽셀을 포함한다. 인코딩 동안, 이미지 블록(1101)은 인트라-예측을 위한 예측 모드 및/또는 인터-예측을 위한 모션 벡터와 같은 예측 정보를 포함하는 예측 블록(1103)으로서 인코딩된다. 이미지 블록(1101)을 예측 블록(1103)으로 인코딩하면 예측 블록(303)과 이미지 블록(301) 사이의 차이를 나타내는 잔여 정보를 포함하는 잔여 블록(1105)을 남길 수 있다.
이미지 블록(1101)은 하나의 예측 블록(1103)과 하나의 잔여 블록(1105)을 포함하는 코딩 단위로 파티셔닝될 수 있다는 점에 유의해야 한다. 예측 블록(1103)은 코딩 단위의 모든 예측 샘플을 포함할 수 있고, 잔여 블록(1105)은 코딩 단위의 잔여 샘플 모두를 포함할 수 있다. 이러한 경우, 예측 블록(1103)은 잔여 블록(1105)과 동일한 크기이다. 다른 예에서, 이미지 블록(1101)은 두 개의 예측 블록(1103)과 하나의 잔여 블록(1105)을 포함하는 코딩 단위로 분할될 수 있다. 이러한 경우에, 각각의 예측 블록(1103)은 코딩 단위의 예측 샘플의 일부를 포함하고, 잔여 블록(1105)은 코딩 단위의 모든 잔여 샘플을 포함한다. 또 다른 예에서, 이미지 블록(1101)은 2 개의 예측 블록(1103) 및 4 개의 잔여 블록(1105)을 포함하는 코딩 단위로 파티셔닝된다. 코딩 단위의 잔여 블록(1105)의 파티션 패턴은 비트스트림(1111)에서 시그널링될 수 있다. 이러한 위치 패턴은 HEVC의 잔여 쿼드-트리(Residual Quad-Tree, RQT)를 포함할 수 있다. 또한, 이미지 블록(1101)은 이미지 샘플(또는 픽셀)의 Y 성분으로 표시되는 루마 성분(예를 들어, 빛)만을 포함할 수 있다. 다른 경우에, 이미지 블록(1101)은 이미지 샘플의 Y, U 및 V 성분을 포함할 수 있으며, 여기서 U 및 V는 청색 휘도 및 적색 휘도(UV) 색 공간에서 색차 성분(예를 들어, 컬러)을 나타낸다.
정보를 추가로 압축하기 위해 변환이 사용될 수 있다. 특히, 변환 블록(1107)은 잔여 블록(1105)을 추가로 압축하기 위해 사용될 수 있다. 변환 블록(1107)은 역 이산 코사인 변환(DCT) 및/또는 역 이산 사인 변환(DST)과 같은 변환을 포함한다. 예측 블록(1103)과 이미지 블록(1101) 사이의 차이는 변환 계수를 사용함으로써 변환에 적합하다. 변환 블록(1107)의 변환 모드(예를 들어, 역 DCT 및/또는 역 DST) 및 대응하는 변환 계수를 표시함으로써, 디코더는 잔여 블록(1105)을 재구성할 수 있다. 정확한 재생이 요구되지 않는 경우, 변환 계수는 변환에 더 잘 맞도록 특정 값을 반올림하여 더 압축될 수 있다. 이 프로세스를 양자화라고 하며 허용 가능한 양자화를 설명하는 양자화 파라미터에 따라 수행된다. 따라서, 변환 블록(1107)의 변환 모드, 변환 계수 및 양자화 파라미터는 변환된 잔여 블록(1109)에 변환된 잔여 정보로 저장되며, 일부 경우에 간단히 잔여 블록이라고도 할 수 있다.
예측 블록(1103)의 예측 정보 및 변환된 잔여 블록(1109)의 변환된 잔여 정보는 비트스트림(1111)에서 인코딩될 수 있다. 비트스트림(1111)은 저장 및/또는 디코더로 전송될 수 있다. 그런 다음 디코더는 이미지 블록(1101)을 복구하기 위해 역으로 프로세스를 수행할 수 있다. 구체적으로, 디코더는 변환된 잔여 정보를 이용하여 변환 블록(1107)을 결정할 수 있다. 그런 다음 변환 블록(1107)은 변환된 잔여 블록(1109)과 함께 사용되어 잔여 블록(1105)을 결정할 수 있다. 잔여 블록(1105) 및 예측 블록(1103)은 이미지 블록(1101)을 재구성하는 데 사용될 수 있다. 그런 다음 이미지 블록(1101)은 다른 디코딩된 이미지 블록(1101)에 상대적으로 위치하여 프레임을 재구성하고 그러한 프레임을 인코딩된 비디오 복구하도록 위치시킬 수 있다.
일부 예측 블록(1103)은 잔여 블록(1105)을 생성하지 않고 인코딩될 수 있다는 점에 유의해야 한다. 그렇지만, 그러한 경우는 변환 블록(1107)의 사용을 초래하지 않으므로 더 이상 논의되지 않는다. 변환 블록(1107)은 인터-예측된 블록 또는 인트라-예측된 블록에 사용될 수 있다. 또한, 변환 블록(1107)은 지정된 인터-예측 메커니즘(예를 들어, 변환 모델 기반 모션 보상)에 의해 생성된 잔여 블록(1105)에 사용될 수 있지만, 다른 지정된 인터-예측 메커니즘(예를 들어, 아핀 모델 기반 모션 보상)에 의해 생성된 잔여 블록(1105)에는 사용되지 않을 수 있다.
도 12는 본 개시의 실시예에 따른 비디오 코딩을 위한 예시적인 컴퓨팅 장치(1200)의 개략도이다. 컴퓨팅 장치(1200)는 여기에 설명된 바와 같이 개시된 실시예들을 구현하는데 적합하다. 컴퓨팅 장치(1200)는 데이터를 수신하기 위한 수신 포트(1220) 및 수신기 유닛(Rx)(1210); 데이터를 처리하기 위한 프로세서, 로직 유닛 또는 중앙 처리 유닛(CPU)(1230); 데이터를 전송하기 위한 송신기 유닛(TX) 1240 및 출구 포트(1250); 데이터를 저장하기 위한 메모리(1260)를 포함한다. 컴퓨팅 장치(1200)는 또한 입구 포트(1220), 수신기 유닛(1210), 송신기 유닛(1240) 및 광학 신호 또는 전기 신호의 출력 또는 유입을 위한 출구 포트(1250)에 결합된 광-전기(OE) 컴포넌트 및 전기-광(EO) 컴포넌트를 포함할 수 있다. 컴퓨팅 장치(1200)는 또한 일부 예에서 무선 송신기 및/또는 수신기를 포함할 수 있다.
프로세서(1230)는 하드웨어 및 소프트웨어에 의해 구현된다. 프로세서(1230)는 하나 이상의 CPU 칩, 코어(예를 들어, 멀티 코어 프로세서), 필드-프로그래머블 게이트 어레이(field-programmable gate array, FPGA), 주문형 집적 회로(application specific integrated circuits, ASIC) 및 디지털 신호 프로세서(digital signal processor, DSP)로 구현될 수 있다. 프로세서(1230)는 입구 포트(1220), 수신기 유닛(1210), 송신기 유닛(1240), 출구 포트(1250) 및 메모리(1260)와 통신한다. 프로세서(1230)는 코딩 모듈(1214)을 포함한다. 코딩 모듈(1214)은 전술한 개시된 실시예를 구현한다. 예를 들어, 코딩 모듈(1214)은 다양한 코딩 동작을 구현, 처리, 준비 또는 제공한다. 따라서 코딩 모듈(1214)을 포함함으로써 컴퓨팅 장치(1200)의 기능에 실질적인 개선을 제공하고 컴퓨팅 장치(1200)의 다른 상태로의 변환에 영향을 미친다. 대안적으로, 코딩 모듈(1214)은 메모리(1260)에 저장되고 (예를 들어, 비 일시적 미디어에 저장된 컴퓨터 프로그램 제품으로서) 프로세서(1230)에 의해 실행되어 구현된다.
메모리(1260)는 하나 이상의 디스크, 테이프 드라이브 및 솔리드 스테이트 드라이브를 포함하고 오버 플로우 데이터 저장 장치로 사용될 수 있으며, 이러한 프로그램이 실행을 위해 선택될 때 프로그램을 저장하고, 명령 및 데이터를 저장하기 위해 사용될 수 있다. 프로그램 실행 중에 읽는다. 메모리(1260)는 휘발성 및/또는 비 휘발성일 수 있으며 리드-온리 메모리(read-only memory, ROM), 랜덤 액세스 메모리(random access memory, RAM), 터너리 콘텐츠-액세스 가능형 메모리(ternary content-addressable memory, TCAM) 및/또는 정적 랜덤 액세스 메모리(static random-access memory, SRAM)일 수 있다. 컴퓨팅 장치(1200)는 또한 최종 사용자와 상호 작용하기 위한 입력/출력(I/O) 장치일 수 있다. 예를 들어, 컴퓨팅 장치(1200)는 시각적 출력을 위한 모니터와 같은 디스플레이, 오디오 출력을 위한 스피커, 사용자 입력을 위한 키보드/마우스/트랙볼 등을 포함할 수 있다.
도 13은 포인트 클라우드 미디어를 예시하는 시스템(1300)의 예이다. 특히, 시스템(1300)은 포인트 클라우드 미디어 프레임의 다양한 예를 예시한다. 예는 남자(1302), 정면을 향하는 여성(1304) 및 후면을 향하는 여성(1306)을 포함한다. 일부 구현에서, 시스템(1300)은 포인트 클라우드 미디어의 더 많거나 적은 예시를 포함할 수 있다. 포인트 클라우드 미디어는 3 차원(3-D) 공간에서 일정 기간 동안 물체 또는 사람의 가상 표현과 그 대응하는 움직임을 포함할 수 있다.
일반적으로, 포인트 클라우드 미디어는 3-D 객체의 외부 표면을 윤곽을 그리는 3-D 공간의 데이터 포인트 세트를 포함한다. 예를 들어, 객체에는 사람, 제조 품목 및 실제 객체가 포함될 수 있다. 예를 들어, 물체는 카메라에 의해 실시간으로 기록될 수 있으며 3 차원 공간의 디스플레이 또는 프로젝션 스크린에 가상으로 표현될 수 있다. 포인트 클라우드 미디어의 프레임은 특정 시점에서 객체의 3D 표현을 포함할 수 있다. 포인트 클라우드 미디어의 연속 프레임은 포인트 클라우드 미디어의 동적 표현을 나타낸다.
이하에서는 두문자어 정의가 설명된다: 프레임 그룹(Group of Frames, GoF) - 추가 처리를 위해 사용되는 고정된 시간에 등록된 포인트 클라우드 세트. 픽처 그룹(Group of Pictures, GoP) - 비디오 압축 인코딩에 사용되는 포인트 클라우드에서 유도된 투영 세트이다. 포인트 클라우드 압축(Point cloud compression, PCC) - 전송을 위해 포인트 클라우드 미디어를 압축하는 기술이다.
비디오 기반 PCC 코덱 솔루션은 3-D 포인트 클라우드 데이터를 2-D 프로젝션 패치로의 세그멘테이션을 기반으로 한다. 비디오 기반 PCC는 몰입형 6 자유도, 동적 AR/VR 객체, 문화 유산, GIS, CAD, 자율 내비게이션 등의 콘텐츠에 널리 사용된다.
포인트 클라우드 미디어는 엔터테인먼트 산업, 지능형 자동차 내비게이션 산업, 지리 공간 검사, 실제 물체의 3D 모델링 및 시각화를 포함한 다양한 애플리케이션에서 필수적인 부분이 되었다. 이러한 각 애플리케이션에서 다양한 클라이언트 장치는 포인트 클라우드 미디어를 표시하고 설명할 수 있다. 비 균일 샘플링 형상을 고려할 때 이러한 데이터의 저장 및 전송을 위한 간결한 표현을 갖는 것이 좋다.
예를 들어, 클라이언트 장치는 포인트 클라우드 미디어를 사용하여 제조 부품, 계측 및 품질 검사, 다양한 시각화, 애니메이션, 렌더링 및 대량 맞춤화 애플리케이션을 위한 3-D 컴퓨터 애니메이션 드로잉(CAD) 모델을 생성할 수 있다. 일부 예에서, 몇 가지 예를 들기 위해 뼈, 팔 또는 다리가 차지하는 공간의 양을 시각화할 때와 같이 의료 영상에서 종종 수행되는 것처럼 포인트 클라우드 미디어를 사용하여 체적 데이터를 나타낼 수도 있다.
기존의 3D 프리젠테이션과 비교할 때 사람을 나타내는 포인트 클라우드 표면과 같은 불규칙한 포인트 클라우드 표면은 더 일반적이며 광범위한 센서 및 데이터 수집 전략에 적용 가능하다. 예를 들어, 가상 현실 세계의 3D 프리젠테이션 또는 텔레프레즌스 환경의 원격 렌더링의 경우 가상 인물 및 실시간 지침의 렌더링이 고밀도 포인트 클라우드 데이터 세트로 처리된다. 예를 들어, 남성(1302), 전면을 향한 여성(1304) 및 후면을 향한 여성(1306)이 텔레프레즌스 환경을 통해 가상 현실 세계에 제시된 예에서 이러한 단일 포인트 클라우드 프레임 각각은 밀집 포인트 클라우드 데이터 세트로 처리된다.
시스템(1300)은 특정 시점에서 포인트 클라우드 미디어의 프레임에 의해 표현되는 상이한 객체를 예시한다. 클라이언트 장치와 같은 장치는 일정 기간 동안 포인트 클라우드 미디어의 연속 프레임을 표시할 수 있다. 일부 예에서, 장치는 몰입형 6 자유도(6 DoF) 환경, 동적 증강 현실(AR) 및 가상 현실(VR) 환경, 문화 유산 환경, 지리 정보 시스템(GIS) 환경, CAD(Computer-Aided Design) 및 자율 내비게이션 시스템에서 포인트 클라우드 미디어를 표시할 수 있다.
포인트 클라우드 미디어를 수신, 표시 및 전송할 수 있는 장치는 개인용 컴퓨터, 핸드헬드 장치, 텔레비전, 내비게이션 시스템, 또는 포인트 클라우드 미디어를 표시할 수 있는 다른 장치와 같은 클라이언트 장치를 포함할 수 있다. 일부 구현에서, 이러한 장치는 내부 메모리 내에 포인트 클라우드 미디어를 저장하거나 일부 외부 저장 장치에 포인트 클라우드 미디어를 저장할 수 있다. 포인트 클라우드 미디어를 저장하려면 상당한 양의 저장 공간이 필요하기 때문에 일반적으로 포인트 클라우드 미디어는 외부 저장 장치에 저장되고 액세스된다.
포인트 클라우드 미디어를 캡처하고 중계하는 클라이언트 장치에 있어서, 클라이언트 장치는 포인트 클라우드 미디어를 저장 및/또는 전송하는 데 필요한 대역폭을 줄이기 위해 멀티 샘플링 기술 및 데이터 압축 기술에 의존할 수 있다. 어떤 경우에는 포인트 클라우드 미디어의 단일 프레임 크기 때문에 포인트 클라우드 미디어의 동적 표현을 저장하고 전송하는 것이 복잡하다. 예를 들어, 단일 프레임의 포인트 클라우드 미디어에는 수백 기가 바이트와 같은 많은 양의 데이터가 포함될 수 있다. 따라서 여러 프레임의 포인트 클라우드 미디어를 저장하고 전송하려면 데이터 손실을 유발할 수 있는 다양한 미디어를 통해 많은 양의 포인트 클라우드 미디어 프레임이 적절하게 전송되도록 데이터 압축 및 인코딩 기술이 필요한다.
도 14는 포인트 클라우드 프레임 시퀀스를 예시하는 시스템(1400)의 예이다. 특히, 시스템(1400)은 상이한 타임 스탬프에서 포인트 클라우드 미디어의 프레임 시퀀스를 나타내는 동적 포인트 클라우드 미디어 시퀀스를 예시한다. 예를 들어, 시스템(1400)은 제1 타임 스탬프에서 제1 포인트 클라우드 프레임(1402), 제2 타임 스탬프에서 제2 포인트 클라우드 프레임(1404), 및 제3 타임 스탬프에서 제3 포인트 클라우드 프레임(1406)을 포함한다. 제1, 제2 및 제3 포인트 클라우드 프레임은 실시간으로 볼 때 3 차원 환경에서 증분 타임 스탬프에서 1400회 오른발을 앞으로 이동하는 여성을 나타내는 동적 포인트 클라우드 시퀀스를 구성한다. 증분 타임 스탬프는 몇 가지 예를 들자면 초 또는 마이크로 초와 같은 시간 단위로 측정할 수 있다.
시스템(1400)은 포인트 클라우드 미디어(1402)의 프레임에 대한 바운딩 박스(1408), 포인트 클라우드 미디어(1404)의 다른 프레임에 대한 바운딩 박스(1410), 및 포인트 클라우드 미디어(1406)의 다른 프레임에 대한 바운딩 박스(1412)를 예시한다. 각 포인트 클라우드 미디어는 u1, v1 및 d1 위치 좌표로 표시되는 X 차원, Y 차원 및 Z 차원과 같은 3 차원의 고정 그리드를 포함한다.
바운딩 박스는 비어 있거나 데이터로 채워질 수 있는 포인트를 포함한다. 일부 예에서 빈 포인트(empty point)는 보이드 포인트(void point)가 될 수 있다. 일부 예에서, 점유 포인트는 하나 이상의 속성을 포함할 수 있다. 보이드 포인트는 속성이 없는 포인트 클라우드 미디어 프레임의 위치를 포함할 수 있다. 반면에, 점유 포인트는 적어도 하나의 속성을 갖는 포인트 클라우드 미디어의 프레임 내 위치를 포함할 수 있다. 예를 들어 속성에는 크로마, 루나, 반사율 및 색상이 포함될 수 있다. 바운딩 박스 내의 포인트는 특정 좌표계로 식별할 수 있다. 예를 들어, 포인트 클라우드 미디어(1402) 프레임의 바운딩 박스(1408) 내의 포인트는 u1, v1 및 d1 좌표계에 의해 표시될 수 있다.
일반적으로 클라이언트 장치가 네트워크를 통해 하나 이상의 포인트 클라우드 미디어 프레임을 다른 클라이언트 장치로 전송할 때 포인트 클라우드 미디어의 각 프레임이 인코딩된다. 인코딩은 적절한 전송을 보장하고 수신 클라이언트 장치에서 수신될 때 데이터가 손실되지 않도록 한다. 그러나 한 프레임의 포인트 클라우드 미디어의 크기가 수백 기가 바이트를 초과할 수 있기 때문에 포인트 클라우드 미디어의 프레임 인코딩은 복잡할 수 있다. 예를 들어, 클라이언트 장치와 같은 시스템은 제1 포인트 클라우드 프레임(1402)을 인코딩하려는 경우 500 기가 바이트의 데이터를 인코딩해야 하므로 이를 수행하는 데 시간과 리소스가 낭비된다. 따라서, 포인트 클라우드 미디어의 특정 프레임을 인코딩하기 위해 바운딩 박스, 예를 들어 바운딩 박스(1408)에 의존하는 다른 인코딩 기술이 필요하다. 아래에서 설명하는 바운딩 박스 표현을 통해 시스템은 단일 프레임의 포인트 클라우드 미디어를 압축된 형식으로 인코딩할 수 있다.
일부 구현에서, 포인트 클라우드 미디어의 프레임은 비디오 기반 포인트 클라우드 압축(video-based point cloud compression, V-PCC) 코더를 사용하여 인코딩된다. V-PCC 코더는 포인트 클라우드 미디어 프레임을 3 차원 패치 세트로 분할하여 작동한다. 3 차원 패치는 3 차원 바운딩 박스에 의해 표시되고 전송을 위해 조작된다. 이에 대해서는 아래에서 자세히 설명한다.
도 15는 3 차원 패치 바운딩 박스를 2 차원 패치 투영으로 변환하는 과정(1500)의 예이다. 일부 구현에서, 변환 프로세스(1500)는 V-PCC 인코딩 솔루션을 사용하여 V-PCC 인코더에 의해 수행된다.
V-PCC 인코딩 솔루션 동안, V-PCC 인코더는 3 차원 바운딩 박스를 사용하여 포인트 클라우드 미디어의 프레임을 인코딩한다. 일반적으로 포인트 세트가 반복되고 바운딩 박스에 투영된 다음 부드럽기 연속 표면 기준의 정의에 따라 패치가 파티셔닝된다. 각 패치는 특정하고 고유한 인덱스와 해당 3D 좌표에 대응한다. 또한 일치하는 패치 목록은 목록에서의 순서가 유사하고 이 목록의 일치하는 패치가 동일한 인덱스를 갖도록 하기 위해 존재한다.
먼저, 3-D 포인트 클라우드 미디어의 프레임은 하나 이상의 3-D 패치-바운딩 박스(1504)와 같은 3 차원(3-D) 패치 바운딩 박스 또는 분할 세트로 분할된다. 패치 바운딩 박스(1504)는 다음 파라미터 - u1, v1, d1, u1의 크기, v1의 크기 및 d1의 크기를 포함한다. 3-D 패치 바운딩 박스(1504)의 파라미터는 포인트 클라우드 3-D 바운딩 박스(1502) 내의 3-D 패치 바운딩 박스(1504)의 크기 및 배치를 나타낸다. 일부 구현에서, 시스템은 다수의 3-D 패치 바운딩 박스를 생성한다. 포인트 클라우드 미디어의 전체 프레임이 프레임 내의 객체를 덮도록 한다. 각 3D 패치 바운딩 박스는 서로 근접하게 배치할 수 있다. 일부 구현에서, 각각의 3-D 패치-바운딩 박스는 포인트 클라우드 3-D 바운딩 박스(1502) 내의 객체를 덮을 때 서로 겹칠 수 있다.
그런 다음, V-PCC 인코더는 3D 패치 경계 박스(1504)와 같이, 각각의 3D 패치 바운딩 박스에 대한 포인트 클라우드 3D 바운딩 박스(1502)의 측면 중 하나로 투영 평면(1508)을 정의한다. V-PCC 인코더는 투영 평면을 선택하기 위한 기준을 정의한다. 예를 들어, 기준은 3-D 패치 바운딩 박스(1504)의 각 측면의 매끄러운 연속 표면 기준의 정의를 포함한다. 매끄러운 연속 표면 기준이 투영된 3-D 패치 바운딩 박스(1504)의 영역을 포함할 때 투영 평면이 선택되는데, 투영된 3-D 패치 바운딩 박스(1504)의 영역은 3 차원 바운딩 박스(1502)의 측면에 투영되고 투영을 위한 각 방향 중 최대 영역이 된다. 예를 들어, 매끄러운 연속 표면은 하나 이상의 매끄러운 연속 알고리즘을 사용하여 결정할 수 있다. 매끄러운 연속 표면은 최소한의 가려지거나 차단된 데이터 포인트가 있는 표면으로 정의할 수 있다. 그런 다음, V-PCC 인코더는 각각의 모든 방향으로부터의 각각의 매끄러운 표면을 비교하여 어느 방향이 3D 바운딩 박스(1502)의 측면에 최대 영역을 포함하는 2D 바운딩 박스를 생성할 것인지 결정한다.
시스템(1500)에 예시된 바와 같이, 투영 평면(1508)은 최대 면적을 갖도록 3-D 패치 바운딩 박스(1504)의 평행 투영 면적에 대응한다. 달리 말하면, V-PCC 인코더가 투영면(1508)의 반대쪽(예를 들어, 측면 1505)에서 3-D 패치 바운딩 박스(1504)를 보는 경우, V-PCC 인코더는 패치 3-D 바운딩 박스(1504)에 포함된 속성 포인트가 투영 평면(1508)에 투영되었을 때, 그 투영은 포인트 클라우드 3-D 바운딩 박스(1502)의 다른 측면으로 투영되는 최대 면적을 나타낼 것으로 결정할 것이다. 포인트 클라우드 3-D 바운딩 박스(1502) 내에 포함된 포인트 클라우드 미디어의 프레임이 정지하여 움직이지 않는 경우, V-PCC 인코더는 포인트 클라우드 3-D 바운딩 박스(1502)의 각 측면으로부터의 프로젝션을 분석하여 어떤 프로젝션이 최대 영역을 포함할지를 결정할 수 있다. 따라서, V-PCC 인코더는 투영 평면(1508)이 패치 3-D 바운딩 박스(1504)로부터 속성의 투영을 위한 최대 영역을 생성할 것이라고 결정한다. 따라서 투영은 패치 2-D 투영 바운딩 박스(1506) 내에 표시된다. 패치 2-D 투영 바운딩 박스(1506)는 바운딩 박스의 근거리 레이어 및 원거리 레이어 상의 u 및 v 좌표에 의해 정의된다. 예를 들어, 도 17은 깊이 이미지(1708 및 1712) 및 속성 이미지(1710 및 1714)의 근거리 레이어(1704) 및 원거리 레이어(1706)를 도시한다.
투영 평면, 예를 들어 투영 평면(1508)이 선택되면, 패치 3-D 바운딩 박스(1504)에 대한 법선 축이 그려지므로 V-PCC 인코더가 투영의 방향을 알 수 있다. 예를 들어, V-PCC 인코더는 포인트 클라우드 3-D 바운딩 박스(1502) 내에서 "n"으로 표시되는 투영 평면(1508)에 수직 또는 직교하는 축을 그린다. 추가로, V-PCC 인코더는 포인트 클라우드 3D 바운딩 박스(1502) 내에서 "bt" 및 "t"로 표시된 패치 3D 바운딩 박스(1504)에 대한 접선 및 양각 축을 생성한다. V-PCC 인코더가 포인트 3-D 바운딩 박스(1502) 클라우드 내에서 법선, 접선 및 양면 축을 그린 것에 대한 응답으로, 오른손 3-D 좌표계가 패치 3-D 바운딩 박스(1504)를 통해 양각과 직교 축 사이에 생성된다.
그 포인트에서, V-PCC 인코더는 패치 3-D 바운딩 박스(1504)를 법선 축 "n"을 따라 포인트 클라우드 3-D 바운딩 박스(1502)의 투영 평면(1508)에 투영한다. 프로세스(1500)에 도시된 바와 같이, 투영의 결과는 포인트 클라우드(3-D 바운딩 박스(1502))의 특정 측면 상의 2 차원(2-D) 투영(1506)이다.
일부 구현에서, 포인트 클라우드 미디어 프레임의 3-D 투영은 포인트 클라우드 3-D 바운딩 박스(1502)의 각 측면에 투영된다. 프레임이 포인트 클라우드 3-D의 측면에 투영될 때 바운딩 박스(1502)에서 2-D 바운딩 박스에 대한 좌표 세트가 획득될 수 있다. 예를 들어 2 차원 바운딩 박스의 좌표 세트에는 u0, v0, size_u0 및 size_v0이 포함된다. 바운딩 박스(1510)에 도시된 바와 같이, V-PCC 인코더는 바운딩 박스(1510) 내의 포인트 클라우드의 표면을 투영 평면(1512)에 투영한다.
도 16은 3-D 내지 2-D 패치 투영 결과를 예시하는 시스템(1600)의 예이다. 시스템(1600)은 바운딩 박스(1602)의 각 측면에 2-D 패치 투영을 갖는 바운딩 박스(1602)를 예시한다. 바운딩 박스의 각 측면 상의 투영은 시스템(1500)에 대해 설명된 바와 같이 패치의 직교 방향에 기초한다. 각 2D 패치 투영에는 패치의 2D 투영의 2D 좌표를 설명하는 패치 인덱스 u0, v0, size_u0 및 size_v0이 포함된다. 패치 인덱스는 대응하는 바운딩 박스(1602)의 특정 면과 연관된 특정 패치를 식별한다. U0는 투영 평면에서 패치의 X 좌표를 정의한다. V0은 투영 평면에서 패치의 Y 좌표를 정의한다. Size_u0 및 size_v0은 각각 패치 u0 및 v0의 각 좌표에 대응하는 크기를 설명한다.
바운딩 박스(1602)에 투영된 패치는 "패치 타일 그룹"을 형성한다. 패치 타일 그룹의 각 요소는 특정 패치에 대응하며, 이 특정 패치에는 특정의 고유한 인덱스가 포함되며 3D 포인트 클라우드 프레임 내의 고유한 3D 바운딩 박스에 대응한다.
바운딩 박스(1602)에 투영 맵을 생성하는 것에 추가하여, 시스템은 패치 2-D 및 3-D 데이터를 메모리에 저장한다. 예를 들어, 아래에 설명된 코드는 패치를 생성하고 비디오 코딩을 위한 보충 데이터로 2D 및 3D 패치 데이터를 저장하는 한 가지 예시적인 솔루션을 제공한다:
Algorithm. PCC coder additional data export
1. while frame k in GoF frames do generate patches in frame k.
for each patch in frame k
generate projection map from patches
store patch2D data: U0, sizeU0, V0, sizeV0
store patch3D data: U1, V1, D1, axis
end for
end while
For k-th frame: double patch3DCoor[MAX_NUM_PATCHES][4];
size_t patch2DCoor[MAX_NUM_PATCHES][4];
patch2DCoor[patchIndex][0] = patch.getU0() * patch.getOccupancyResolution();
patch2DCoor[patchIndex][1] =(patch.getU0() + patch.getSizeU0()) * patch.getOccupancyResolution();
patch2DCoor[patchIndex][2] = patch.getV0() * patch.getOccupancyResolution();
patch2DCoor[patchIndex][3] =(patch.getV0() + patch.getSizeV0()) * patch.getOccupancyResolution();
PCCVector3D pointStart, pointEnd;
const double lodScale = params.ignoreLod_ ? 1.0 : double(1u << patch.getLod());
int x = patch.getU0() * patch.getOccupancyResolution(), y = patch.getV0() * patch.getOccupancyResolution();
pointStart[patch.getNormalAxis()] = double(frame0.getValue(0, x, y) + patch.getD1()) * lodScale;
pointStart[patch.getTangentAxis()] = patch.getU1() * lodScale;
pointStart[patch.getBitangentAxis()] = patch.getV1() * lodScale;
x =(patch.getU0() + patch.getSizeU0()) * patch.getOccupancyResolution() - 1;
y =(patch.getV0() + patch.getSizeV0()) * patch.getOccupancyResolution() - 1;
pointEnd[patch.getNormalAxis()] = double(frame0.getValue(0, x, y) + patch.getD1()) * lodScale;
pointEnd[patch.getTangentAxis()] =(patch.getSizeU0() * patch.getOccupancyResolution() - 1 + patch.getU1()) * lodScale;
pointEnd[patch.getBitangentAxis()] =(patch.getSizeV0() * patch.getOccupancyResolution() - 1 + patch.getV1()) * lodScale;
patch3DCoor[patchIndex][0] = pointStart[patch.getTangentAxis()];
patch3DCoor[patchIndex][1] = pointStart[patch.getBitangentAxis()];
patch3DCoor[patchIndex][2] = pointEnd[patch.getTangentAxis()];
patch3DCoor[patchIndex][3] = pointEnd[patch.getBitangentAxis()];
비디오 코딩에 대한 보조 정보 생성
위에서 설명한 코드는 "패치"의 정의를 보여준다. 패치 3D 정보가 2D 패치 정보로 전송되는 방법; 프로젝션 프로세스; 및 재구성 프로세스. 특히 이러한 프레임이 2D 투영 측면에서 해석되는 방식이다.
추가적으로, 프레임의 각 패치에 대해 V-PCC 인코더는 투영 맵을 생성한다. 투영 맵에는 비디오 인코더에 제공되는 추가 텍스트 파일이 포함되어 있다. 특정 패치에 대한 2D 데이터, 예를 들어, u0, v0는 투영의 X 및 Y 좌표의 왼쪽 상단 모서리에 대응한다. Size_u0 및 size_v0은 해당 패치의 높이와 너비에 대응한다. 3D 패치 투영 데이터의 경우 투영 맵에는 X, Y 및 Z 축에 대응하는 u1, v1 및 d1 좌표가 포함된다. 특히, u1, v1 및 d1은 투영면의 인덱스 또는 법선 축에 대응하는 투영면에 대응한다. 예를 들어, 시스템(1600)에 예시된 바와 같이, 바운딩 박스(1602)의 각 측면은 자신의 인덱스를 포함한다. 따라서 각 인덱스는 특정 투영 축을 나타낸다. 이와 관련하여, u1, v1 및 d1은 바운딩 박스(1602)에 도시된 X, Y 및 Z 좌표의 재구성이다.
일부 구현에서, u1, v1 및 d1 좌표는 로컬 좌표계에 대응한다. X, Y 및 Z 좌표는 전역 좌표계에 대응한다. 예를 들어, 수직 축이 결정되면(투영 축에 대응) V-PCC 인코더는 3D 공간 내에서 Z 축과 정렬되도록 투영 축을 회전할 수 있다. 이 포인트에서 V-PCC 인코더는 로컬 좌표계와 글로벌 좌표계 사이를 변환할 수 있다.
제안된 솔루션은 또한 비디오 압축 기술에서 비디오 압축 솔루션에 대한 추가 입력으로 사용되는 보조 정보를 기반으로 모션 보상을 위한 추가 모션 벡터 후보를 제공한다:
Figure 112021049832878-pct00001
도 17은 클라우드 포인트 미디어에 대한 속성 분할을 위한 시스템(1700)의 예이다. 투영에서 각 3D 포인트 클라우드에 대한 2D 패치가 생성되면 패치 타일 그룹 내의 각 2D 패치에 대해 이미지 세트가 생성된다. 시스템(1700)은 3 차원에서 2 차원으로 투영하는 동안 깊이 및 속성 정보가 손실되기 때문에 패치 타일 그룹 내의 2 차원 패치의 각 패치에 대한 이미지 세트를 생성한다. 투영이 발생하기 전에 포인트 클라우드 미디어에 대응하는 깊이 및 속성 정보를 보존하기 위해 이미지 세트가 생성된다.
일부 구현에서, 패치 타일 그룹은 패치(1702)를 포함한다. 시스템은 특정 패치(1702)로부터 두 세트의 이미지를 생성한다. 제1 이미지 세트는 근거리 레이어(1704)를 포함한다. 제2 이미지 세트는 원거리 레이어(1712)를 포함한다. 근거리 레이어(1704)는 깊이 데이터의 이미지(1708) 및 속성 데이터의 이미지(1710)를 포함한다. 추가적으로, 원거리 레이어(1706)는 깊이 데이터의 이미지(1712) 및 속성 데이터의 이미지(1712)를 포함한다. 따라서 2-D 투영의 각각의 모든 포인트는 깊이 정보 및 속성 정보, 예를 들어, 색상, 질감, 루나 등을 갖는다. 특정 레이어, 예를 들어, 근처 레이어(1704) 및 원거리 레이어(1706)는 3D 포인트 클라우드 객체의 2-D 투영의 양면을 보여준다.
도 18은 속성 정보를 갖는 포인트 클라우드 미디어에 대한 패키징 패치를 예시하는 시스템(1800)의 예이다. 일부 구현에서, 속성 정보는 텍스처 정보, 깊이 정보, 색상 정보, 루나, 반사율 및 크로마 정보를 포함할 수 있다. 패키징된 패치 그룹(1802)은 포인트 클라우드 미디어(1402)의 프레임과 같은 포인트 클라우드 미디어의 프레임으로부터의 하나 이상의 투영된 패치, 2-D 프레임을 예시한다. 패치의 컬렉션은 패치 타일 그룹 및 패치 타일 그룹을 생성한다. 주어진 포인트 클라우드 미디어 프레임에 대해 패치 데이터 그룹으로 결합된다. "패치"라고 하는 패치 데이터 그룹의 각 요소는 특정 고유 인덱스를 포함하며 3D 포인트 클라우드 프레임 내의 고유한 3D 바운딩 박스에 대응한다. 패키징된 패치(1802)는 인코딩된 후 전송될 수 있다. 특히, 하나의 포인트 클라우드 프레임의 패치가 참조 포인트 클라우드 프레임, 예를 들어 이전 프레임에 대응하는 참조 패치를 가지고 있다면, 참조 패치 타일 그룹의 참조 패치의 인덱스가 비트스트림으로 전송된다. 이에 대해서는 아래에서 자세히 설명한다.
도 19는 모션 추정을 수행하기 위한 시스템(1900)의 예이다. 이전 비디오 압축 솔루션에서 2D 프로젝션 이미지, 예를 들어, 패치의 데이터는 모션 추정 프로세스를 사용하여 추정된다. 시스템(1900)은 이러한 모션 추정 프로세스를 예시한다. 블록(1902)에 도시된 인코딩 및 디코딩 블록은 인코더를 사용하여 모션 추정을 생성하고, 데이터 전환 채널 또는 스토리지를 통해 모션 추정을 전송하고, 디코더에서 전송된 모션 추정을 디코딩한다. 결과는 새로 복원된 프레임이다.
블록(1904)은 모션 추정 프로세스의 예시를 묘사한다. 예를 들어, 인코더는 참조 프레임에서 유사한 패치 이미지의 예측자를 생성한다. 예를 들어 참조 프레임은 이전 프레임일 수 있다. 일부 구현에서, 인코더는 참조 프레임과 현재 프레임 사이의 샘플 값을 비교함으로써 유사성을 결정한다. 예를 들어 샘플 값은 속성 및 위치에 따라 다를 수 있다. 이 프로세스를 현재 프레임의 이미지와 유사한 참조 프레임에서 해당 이미지를 찾는 것을 목표로 모션 추정이라고 한다. 인코더는 참조 프레임의 인접 픽셀 내에서 픽셀을 검색한다. 일치하는 이미지가 발견되면 인코더는 현재 및 참조 프레임의 각 이미지를 구체적으로 인코딩하지 않고 적은 양의 정보를 필요로 하는 유사성을 인코딩한다. 전반적으로 이것은 전송 대역폭을 줄인다. 따라서 인코더는 유사한 이미지에 대해 현재 및 이전 프레임을 분석한다. 현재 프레임과 참조 (이전) 프레임 사이의 각 이미지에 대한 속성 및 위치 정보와 관련된 구체화 데이터를 결정한다. 그런 다음 인코더는 현재 프레임과 미래 예측 프레임에 대한 개선 데이터를 인코딩한다. 일반적으로 2D 모션 비디오 또는 2D 이미지를 전송하는 데 사용된다.
패치 패킹 방법의 특성으로 인해, 각 포인트 클라우드 미디어에 대한 투영 프레임 내의 패치 위치는 상당히 다를 수 있다. 따라서 서로 다른 프레임 사이에서 패치는 3D 바운딩 박스의 다른 측면을 가로지르는 것과 같이 한 위치에서 다른 위치로 이동할 수 있다. 이와 같이, 일반적으로 2-D 모션 비디오 또는 2-D 이미지에 사용되는 인터-예측 코딩 알고리즘에서 패치 위치를 사용한 예측 모션 추정은 만족할 수 없어 적절하게 인코딩 및 전송되지 않는다. 따라서, 블록(1902 및 1904)은 유용하지만 패치 데이터 그룹을 사용하여 모션 추정 데이터를 전송하기 위한 향상을 필요로 한다. 따라서, 아래에서 설명하는 기술은 모션 벡터 후보 목록에 보조 정보를 추가함으로써 2 차원 패치 데이터에 대한 모션 추정을 사용하는 예측의 사용을 향상시킨다.
전송할 2-D 패치 간의 시간적 예측의 경우, 전송 중 최대 압축 효율을 보장하기 위해 유사한 패치에 대해 유효한 모션 벡터 후보가 제공된다. 기존의 모션 벡터 후보 목록 구성 방법은 기존 후보를 대체하거나 패치 보조 정보에서 생성된 추가 후보를 도입함으로써 개선될 수 있다.
일부 구현에서, 프레임의 특정 패치는 패치 메타 데이터에 의해 포인트 클라우드 미디어 내의 3D 좌표에 연결된 특정 2-D 좌표를 갖는다. 패치 데이터( "보조 정보"라고도 함)는 패치의 해당 3D 위치와 2D 평면의 관련 투영 위치를 기반으로 한다. 일부 구현에서, 보조 정보 또는 패치 메타 데이터는 패치 인덱스, u0, v0, u1, v1 및 d1을 포함할 수 있다. u0 및 v0은 2D 투영에서 패치의 왼쪽 상단 모서리에 대응한다. u1, v1 및 d1은 3 차원 도메인의 X, Y 및 Z 좌표를 나타낸다. 따라서 u0 및 v0 좌표는 u1, v1 및 d1 좌표에 연결된다. 연결은 u1, v1 및 d1 좌표와 u0 및 v0 좌표 간의 수학적 관계를 기반으로 한다. 2 차원과 3 차원 좌표 간의 이러한 연결은 모션 벡터 후보를 생성하고, 벡터 후보 목록을 업데이트하고, 모션 벡터 검색 프로세스를 업데이트하는 데 사용할 수 있다.
도 20은 현재 프레임의 패치와 참조 프레임의 패치 사이의 모션 벡터 후보를 나타내는 시스템의 일 예이다. 클라이언트 장치의 인코더, 예를 들어, V-PCC 인코더는 현재 패치 프레임을 이전에 인코딩된 참조 프레임으로 분석한다. 인코더는 현재 프레임과 비교하기 위해 먼저 이전에 인코딩된 참조 프레임을 디코딩해야 한다. 그런 다음 인코더는 현재 패치 프레임을 예측 단위(PU)라고 하는 하나 이상의 작은 블록에 제공한다. 각 PU에 저장되는 정보의 양이 중요하므로 전송 시 정보의 양을 줄이기 위해 인코더는 차등 코딩 방식을 사용한다. 인코더는 잔여 프레임을 생성한다. 예를 들어, 예측 유닛 PU(참조 프레임의 패치에 속함)는 현재 PU(현재 프레임에 속함), 예를 들어 현재 PU- 예측 유닛 PU에서 감산되어 잔여 프레임을 생성한다. 인코더는 이후에 전송에 사용될 잔여 프레임만 인코딩한다. 예를 들어 다음 코드는 이 프로세스를 설명한다:
1. Split current frame into N PU blocks
2. Generate PU_pred candidate list from the current auxiliary frame
3. for i = 0 to N-1
get the(x,y) coordinates for top left corner of the PU_cur[i]
perform search for predictor PU_pred in the reference image
cost[k] = max
while cost[k] > minCost[k-1] do
cost[k] = (PU_cur[i] - PU_pred[k]) + lambda * BitSize
encode in bitstream:
MV = PU_cur[i](x,y) - PU_pred[k](x,y)
ResidualUnit = Transform(PU_cur[i]-PU_pred[k])
위의 코드는 속도 왜곡 문제 최소화를 기반으로 하는 코딩 모드 선택 프로세스를 설명한다. 일부 구현들에서, 인코더는 이전에 인코딩된 참조 프레임에서 예측기 유닛 PU를 검색하고 잔여물을 인코딩하는 데 필요한 비트의 양에 대해 현재 PU에 대한 값에 매칭하기 위한 검색을 수행한다. 예측 단위(PU)를 선택하는 프로세스는 레이트 왜곡 최소화 문제를 포함하는데, 여기서 레이트는 코딩된 잔여의 비트 크기에 대응하고 왜곡은 잔여의 L2 노름에 대응하며 기원. 그런 다음 인코더는 잔여 정보와 해당 변위 정보를 인코딩하여 모션 벡터가 된다. 그러나 이 구현에는 포인트 클라우드 미디어를 인코딩하고 전송할 때 개선 사항이 필요하다.
인코더는 패치 데이터로부터 포함된 부가적인 보조 정보를 검토함으로써 향상된다. 현재 프레임의 경우 보조 정보는 현재 2D 패치 및 해당 3D 포인트 클라우드에서 생성된다. 참조 프레임의 경우 이전에 인코딩된 참조 2D 패치 및 해당 3D 포인트 클라우드에서 보조 정보가 생성된다. 인코더는 현재 프레임의 패치, 예를 들어, u0, v0, u1, v1, d1의 보조 정보를 참조 프레임의 패치, 예를 들어, u0, v0, u1, v1 및 d1의 보조 정보와 비교하여 블록 위치를 예측할 수 있다. 비교 결과 보조 정보를 기반으로 패치 간의 거리 m가 나타난다.
일부 구현에서, 인코더는 먼저 3-D 차이를 결정한다. 3 차원 차이는 CU의 시작 픽셀의 3 차원 위치가 다를 수 있으므로 현재 보조 정보 프레임과 기준 보조 정보 프레임 간의 3 차원 차이에 대응한다. 식에는 다음이 포함된다:
Figure 112021049832878-pct00002
그런 다음 인코딩은 2 차원 차이를 계산한다. 2 차원 차이는 점유 블록 해상도(OBR)를 고려할 때 현재 보조 정보 프레임과 참조 보조 정보 프레임 간의 2 차원 차이에 대응한다. OBR은 패치 데이터 그룹의 좌표 배율 대 패치 투영 크기에 대응한다. 예를 들어, 패치 너비는 패치 투영 크기에 OBR을 곱한 값과 같다. 그런 다음 인코더는 2D 도메인에서 모션 벡터를 생성한다. 식에는 다음이 포함된다:
Figure 112021049832878-pct00003
최종 유도된 모션 벡터는 이 두 모션 벡터 컴포넌트의 조합이다. 예를 들어, 최종 유도 모션 벡터는 다음에 대응한다:
Figure 112021049832878-pct00004
비 규범적 솔루션에서는 모션 벡터(MV)가 검색 범위 중심의 후보로 추정된다. 유도된 추정 MV를 후보로 추가한 후 인코더는 검색 범위의 중심을 결정하기 위해 RDO를 사용하여 파티션 2Nx2N의 예측 MV, 0 MV, 추정 MV 및 MV 중에서 선택할 것이다. 추정된 MV에 최소 속도 왜곡(R-D) 비용이 있는 경우 비디오 압축에 사용될 것이다.
도 21은 병합 후보 목록 구성을 위한 유도 프로세스(2100)를 예시한다. 일부 구현에서, 예측 단위가 병합 모드를 사용하여 예측될 때, 병합 후보 목록의 엔트리를 가리키는 인덱스가 비트스트림으로부터 파싱되고 모션 정보를 검색하는 데 사용된다. 이 목록의 구성은 HEVC 표준에 지정되어 있으며 다음 단계 순서에 따라 요약할 수 있다:
단계 1: 초기 후보 유도
단계 1.1: 공간 후보 유도
단계 1.2: 공간 후보에 대한 중복 검사
단계 1.3: 시간 후보 유도
단계 2: 추가 후보 삽입
단계 2.1: 양방향-예측 후보 생성
단계 2.2: 제로 모션 후보 삽입
이들 단계는 또한 도 21에 개략적으로 도시되어 있다. 공간 병합 후보 유도를 위해, 5 개의 상이한 위치에 위치한 후보들 중에서 최대 4 개의 병합 후보가 선택된다. 시간 병합 후보 유도의 경우 두 후보 중 최대 하나의 병합 후보가 선택된다. 디코더에서는 각 예측 단위에 대해 일정한 수의 후보를 가정하기 때문에 후보 수가 슬라이스 헤더에서 시그널링되는 최대 병합 후보(MaxNumMergeCand) 수에 도달하지 않으면 추가 후보가 생성된다. 후보의 수가 일정하기 때문에 최적 병합 후보의 인덱스는 절단된 단항 이진화(truncated unary binarization)(TU)를 사용하여 인코딩된다. CU의 크기가 8이면 현재 CU의 모든 PU는 2Nx2N 예측 단위의 병합 후보 목록과 동일한 단일 병합 후보 목록을 공유한다.
이하에서, 전술한 단계와 관련된 동작이 상세히 설명된다.
도 22는 공간 병합 후보들의 중복 검사를 위해 고려되는 공간 병합 후보들 및 후보 쌍들의 위치들의 시스템(2200)을 예시한다. 공간적 병합 후보의 도출에서는 도 22에 도시된 위치에 위치한 후보들 중에서 최대 4 개의 병합 후보가 선택된다. 도출 순서는 A1, B1, B0, A0, 및 B2이다. 위치 B2는 위치 A1, B1, B0, A0의 임의의 PU를 사용할 수 없거나(예를 들어, 다른 슬라이스 또는 타일에 속하기 때문이다) 인트라 코딩된 경우에만 고려된다. A1 위치의 후보가 추가된 후 나머지 후보의 추가는 중복 검사를 거치므로 동일한 모션 정보를 가진 후보가 목록에서 제외되어 코딩 효율성이 향상된다. 계산 복잡성을 줄이기 위해 언급된 중복 검사에서 가능한 모든 후보 쌍이 고려되는 것은 아니다. 대신, 도 22에서 화살표로 연결된 쌍만이 고려되고 중복 검사에 사용된 해당 후보가 동일한 모션 정보를 가지고 있지 않은 경우에만 후보를 목록에 추가한다. 중복 모션 정보의 또 다른 소스는 2Nx2N과는 다른 파티션과 관련된 "제2 PU"이다. 예를 들어, 도 23은 각각 Nx2N 및 2NxN의 경우에 대한 제2 PU를 도시한다. 현재 PU가 Nx2N으로 분할되면 위치 A1의 후보는 목록 구성에 고려되지 않는다. 사실, 이 후보를 추가함으로써 동일한 모션 정보를 갖는 2 개의 예측 단위로 이어질 것이고, 이는 코딩 단위에 단지 하나의 PU를 갖는 것에 중복된다. 마찬가지로 현재 PU가 2NxN으로 분할될 때 위치 B1은 고려되지 않는다.
도 23은 Nx2N 및 2NxN 파티션의 제2 PU에 대한 위치를 보여주는 시스템(2300)을 예시한다. 특히, 시스템(2300)은 시간 후보 유도 프로세스를 기술한다. 이 단계에서는 하나의 후보만 목록에 추가된다. 특히, 이 시간 병합 후보의 도출에 있어서, 주어진 참조 픽처 리스트 내에서 현재 픽처와 가장 작은 POC 차이를 갖는 픽처에 속하는 공존 PU를 기반으로 스케일링된 모션 벡터가 도출된다. 공존 PU의 유도에 사용될 참조 픽처 목록은 슬라이스 헤더에서 명시적으로 시그널링된다. 시간 병합 후보에 대한 스케일링된 모션 벡터는 도 24(시스템 2400)의 점선으로 나타낸 바와 같이 획득되고, POC 거리인 tb 및 td를 사용하여 공존 PU의 모션 벡터에서 스케일링되며, 여기서 tb는 현재 픽처의 참조 픽처와 현재 픽처 간의 POC 차이로 정의되고 td는 공존 픽처의 참조 픽처와 공존 픽처 간의 POC 차이로 정의된다. 시간 병합 후보의 참조 픽처 인덱스는 0으로 설정된다. B-슬라이스의 경우, 하나는 참조 픽처 리스트 0을 위한 것이고 다른 하나는 참조 픽처 리스트 1을 것인 2 개의 모션 벡터가 획득되고 결합되어 양방향-예측 병합 후보가 된다.
도 25는 시간 병합 후보에 대한 후보 위치를 나타내는 시스템(2500)이다. 참조 프레임에 속하는 공동 배치된 PU(Y)에서, 시스템(2500)에 묘사된 바와 같이 후보 C0 및 C1 사이에서 시간 후보에 대한 위치가 선택된다. 위치 C0에 있는 PU를 사용할 수 없거나, 인트라 코딩되거나 현재 CTU의 외부에 있으면, 위치 C1이 사용된다. 그렇지 않으면 위치 C0이 시간 병합 후보의 유도에 사용된다.
시공간 병합 후보 외에도 두 가지 추가 유형의 병합 후보: 결합된 양방향-예측 병합 후보와 제로 병합 후보가 있다. 결합된 양방향-예측 병합 후보는 시공간 병합 후보를 활용하여 생성된다. 결합된 양방향-예측 병합 후보는 B-슬라이스에만 사용된다. 결합된 양방향-예측 후보들은 초기 후보의 제1 참조 픽처 리스트 모션 파라미터와 다른 후보의 제2 참조 픽처 리스트 모션 파라미터를 결합함으로써 생성된다. 이 두 튜플이 다른 모션 가설을 제공하면 새로운 양방향-예측 후보를 형성할 것이다. 예를 들어, 시스템(2500)은 mvL0 및 refIdxL0 또는 mvL1 및 refIdxL1이 있는 (왼쪽 상의) 원본 목록의 두 후보가 (오른쪽 상의) 최종 목록에 추가된 결합된 양방향-예측 병합 후보를 생성하는 데 사용되는 경우를 나타낸다. 이러한 추가 병합 후보를 생성하기 위해 고려되는 조합에 관한 수많은 규칙이 있다.
도 26은 결합된 양방향-예측 병합 후보들의 예시적인 테이블(2600)을 도시한다. 제로 모션 후보가 삽입되어 병합 후보 목록의 나머지 항목을 채우므로 MaxNumMergeCand 용량에 도달한다. 이러한 후보는 0에서 시작하여 새로운 제로 모션 후보가 목록에 추가될 때마다 증가하는 제로 공간 변위 및 참조 픽처 인덱스를 갖는다. 이러한 후보에 의해 사용되는 참조 프레임의 수는 각각 단방향 및 양방향 예측에 대해 1 개와 2 개이다. 마지막으로 이러한 후보에 대해서는 중복 검사가 수행되지 않는다.
도 27은 보조 데이터를 사용하는 모션 추정 파이프 라인의 수정을 포함하는 시스템(2700)의 예이다. 시스템(2700)은 시스템(1900)의 컴포넌트(1902)에 예시된 모션 추정 파이프 라인의 인코더 부분에 대한 추가 컴포넌트를 예시한다. 예를 들어, 시스템(2700)은 보조 프레임(2702)(패치 프레임 데이터 유닛 또는 패치 프레임 데이터 그룹이라고도 함)을 포함한다. 시스템(2700)은 또한 새로운 프레임(2704), 모션 추정 컴포넌트(2706), 모션 엔트로피 코더(2708), 모션 보상된 보간(2710), 감산 모듈(2712), 잔여 인코더(2714), 잔여 디코더(2716) 및 가산기(2718)를 포함한다.
모션 추정 컴포넌트(2706)는 보조 프레임(2702), 새로운 프레임(2704) 및 잔여 디코더(2716) 및 가산기(2718)로부터 이전에 인코딩된(현재 디코딩된) 잔여 프레임을 수신한다.
일부 구현에서, 모션 추정 컴포넌트(2706)가 프레임에 대한 패치 데이터를 포함하는 새로운 프레임(2704)을 수신할 때, 모션 추정 컴포넌트(2706)는 보조 프레임(2702) 내의 패치와 연관된 3D 좌표를 비교한다. 이것은 각각의 보조 프레임(2702)이 바운딩 박스 내에서 포인트 클라우드 미디어의 3D 좌표로 패치 데이터의 2-D 좌표 사이의 전송을 설명할 자체 패치 메타데이터(또는 보조 데이터)를 포함하기 때문이다. 특히, 모션 추정(2706)은 보조 프레임(2702)의 패치 메타 데이터를 사용하여 참조 프레임을 생성한다. 그런 다음, 현재 프레임, 예를 들어, 새로운 프레임(2704)으로부터의 현재 3D 정보 및 이전 프레임, 예를 들어 참조 프레임으로부터의 3D 정보는 패치의 위치를 결정하는 데 사용될 수 있다. 예를 들어, 모션 추정(2706)은 새로운 프레임(2704)의 이 패치가 참조 프레임의 다른 패치와 3D 좌표의 동일한 위치에서 오는 것으로 결정할 수 있으며, 여기서 참조 프레임의 패치는 새로운 프레임(2704)의 다른 2-D 위치에 있다.
그런 다음, 모션 추정 컴포넌트(2706)는 새로운 프레임(2704)의 각 패치에 대해 이 프로세스를 실행하고 대응하는 3-D 정보를 얻기 위해 2-D 정보를 검색한다. 모션 추정 컴포넌트(2706)는 보조 프레임(2702)에서 패치에 대한 2-D 정보를 획득한다. 새로운 프레임(2704)에서의 패치의 2-D 정보와 보조 프레임(2702)에서의 패치의 2-D 정보를 사용하여, 모션 추정 컴포넌트(2706)는 예를 들어, 새로운 프레임(2704)으로부터 패치의 u0 및 v0 위치 좌표를 보조 프레임(2702)에서의 패치의 u0 및 v0 위치 좌표와 비교함으로써 이들 두 패치 사이의 2-D 거리를 결정하고, 이어서 보조 프레임(2702)의 위치로부터 새로운 프레임(2704)의 위치로 패치가 2-D로 이동한 방법을 결정한다. 보조 프레임(2702)에 있는 패치의 u0, v0과 새로운 프레임에 있는 패치의 u0, v0 간의 이 차이는 모션 벡터 후보에 대응한다. 모션 추정 컴포넌트(2706)는 이 생성된 모션 벡터 후보를 모션 벡터 후보 목록에 삽입한다. 모션 추정 컴포넌트(2706)는 새로운 프레임(2704)의 각 패치를 보조 프레임(2702)의 각 패치와 비교하는 이 프로세스를 수행한다. 일치가 발생하면, 이러한 일치된 패치 간의 2D 좌표 간의 차이가 모션 벡터 후보 목록에 추가된다.
일부 구현에서, 모션 벡터 후보가 모션 벡터 후보 목록에 추가되면, 3D 좌표 목록의 패치에 대해 3D 모션 검색이 수행된다.
일부 구현에서, 인코더는 필드 이웃의 후보 목록을 포함한다. 필드 이웃의 후보 목록에는 2D 이미지 내에서 움직임을 검토하기 위한 가능한 위치가 포함될 수 있다. 모션 추정 컴포넌트(2706)는 각 패치 프레임에 대한 필드 이웃의 후보 목록에서 위치를 구체화할 수 있다.
보조 정보를 사용하여 참조 프레임에서 매칭된 패치를 결정하는 프로세스는 아래 예시된 코드에 표시된다. 예를 들어, 참조 프레임에 대한 포인트 클라우드 압축 솔루션 버퍼에서 생성된 보조 3D 정보 파일의 기존 패치 2D 및 3D 정보를 사용한다. 예를 들어 코드에는 다음이 포함된다:
Algorithm. Find matched patches in reference frames
while frame k in GoP frames dofor each patch in patches list of reference frame [refIdx]
for each patch in patches list of frame [k]
estimate cost in RDO based on prediction
if(patchIdx[k] = patchIdx[refIdx])
do motion refinement
end if
if(dist < bestDist)
update pcMvFieldNeighbours
end if
end for
end for
end while
For k-th frame:
for(Int yCoorRef = 0; yCoorRef < picHeight; yCoorRef++) {
for(Int xCoorRef = 0; xCoorRef < picWidth; xCoorRef++) {
Double* refDepthX = m_pcPic->getDepthX(Int(eRefPicList) * MAX_NUM_REF + refIdx);
Double* refDepthY = m_pcPic->getDepthY(Int(eRefPicList) * MAX_NUM_REF + refIdx);
Double* refDepthZ = m_pcPic->getDepthZ(Int(eRefPicList) * MAX_NUM_REF + refIdx);
Double xCoorRef3D = refDepthX[yCoorRef * picWidth + xCoorRef];
Double yCoorRef3D = refDepthY[yCoorRef * picWidth + xCoorRef];
Double zCoorRef3D = refDepthZ[yCoorRef * picWidth + xCoorRef];
Double dist =(xCoor3D - xCoorRef3D) *(xCoor3D - xCoorRef3D) +(yCoor3D - yCoorRef3D) *
(yCoor3D - yCoorRef3D) +(zCoor3D - zCoorRef3D) *(zCoor3D - zCoorRef3D);
if(dist < bestDist) {
bestDist = dist;
bestXCoorRef = xCoorRef;
bestYCoorRef = yCoorRef;
}
}
}
TComMv depthMVP((bestXCoorRef - xCoor) << 2,(bestYCoorRef - yCoor) << 2);
pcMvFieldNeighbours[(iCount << 1) + 1].setMvField(depthMVP, refIdx);
위의 코드에서 V-PCC 인코더는 비디오 인코더에 대한 참조 프레임에서 일치하는 패치를 찾는다. V-PCC 인코더는 각 프레임의 패치에 대응하는 동일한 2-D 및 3-D 정보와 도 16에 대해 설명된 투영 정보를 사용한다. 이 단계에서 V-PCC 인코더는 동작 개선을 위한 새로운 후보를 생성한다. 알고리즘은 다음과 같은 방식으로 실행된다: V-PCC 인코더는 프레임 그룹의 각 프레임을 반복한다. V-PCC 인코더는 특정 참조 프레임의 패치 목록에서 패치를 검색한다. 그 후, V-PCC 인코더는 현재 프레임에서 특정 패치를 검색한다.
V-PCC 인코더는 모션 벡터 후보에 기초하여 레이트 왜곡 최적화에서 비용을 추정한다. 비용 또는 거리, 예를 들어 레이트 왜곡 최적화 함수의 추정 비용에 의해 반환되는 메트릭 또는 벡터 공간의 메트릭 거리는 모션 벡터 후보 목록으로부터의 최소 비용에 대응한다. 특히, 최소 비용은 X 차이, Y 차이 및 Z 차이의 제곱 값의 합에 대응한다. 예를 들어, 참조 프레임에 있는 패치의 X 좌표를 현재 프레임에 있는 패치의 X 좌표에서 빼서 X 차이("Xdif")를 생성하고; 참조 프레임에 있는 패치의 Y 좌표는 현재 프레임에 있는 패치의 Y 좌표에서 빼서 Y 차이("Ydif")를 생성하며; 그리고 참조 프레임에서 패치의 Z 좌표는 현재 프레임에서 패치의 Z 좌표에서 빼서 Z 차이("Zdif")를 생성한다. 그런 다음 PCC 인코더는 Xdif, Ydif 및 Zdif의 제곱을 합산하여 참조 프레임의 패치와 현재 프레임의 패치 사이의 특정 거리를 생성한다.
레이트 왜곡 최적화에서 비용을 추정하는 이러한 프로세스는 최소 비용 또는 거리가 발견될 때까지 반복된다. 최소 비용 또는 거리가 발견되면 pcMvFieldNeighbors 변수가 X 좌표, Y 좌표 및 참조 프레임의 패치와 연결된 올바른 패치에 대응하는 최소화된 비용 값으로 업데이트된다.
그런 다음 V-PCC 인코더는 정제된 모션 벡터 후보 및 병합 후보를 기반으로 모션 보상을 수행한다. 일부 구현에서, 새로운 엔티티는 병합 후보 목록에서 생성된다. 이 엔티티는 모션 추정을 위한 더 나은 예측을 찾기 위해 모션 추정을 수행하는 예측자로 사용된다. 예를 들어, 모션 벡터 후보 목록은 패치에 대한 3D 정보와 투사된 이미지의 해당 2D 패치 위치를 기반으로 업데이트된다. 또한 병합 후보 목록은 패치에 대한 3D 정보와 투영된 이미지의 해당 2D 위치를 기반으로 업데이트될 수 있다. 따라서 이 정보는 비디오 압축 및 압축 해제에 추가된다. 이 정보는 보조 정보를 기반으로 비디오 인코더에 대해 생성되며 비디오 디코더에 대해서도 동일한 정보가 생성된다. 모션 벡터 후보 목록은 전송되거나 계산되는 것이 아니라 패치 메타 데이터와 함께 2D 패치를 수신할 때 V-PCC 인코더에 의해 생성된다. 모션 벡터 후보 목록은 "비디오 코딩을 위한 추가 정보 생성" 코드 세트에 따라 생성된다. V-PCC 인코더와 V-PCC 디코더는 모두 "비디오 코딩을 위한 추가 정보 생성"을 수행하여 모션 벡터 후보 목록을 생성한다. 따라서, V-PCC 인코더와 V-PCC 디코더 간에 전송되는 추가 모션 벡터 후보 목록 또는 기타 정보가 필요하지 않다.
일부 구현에서, 보조 정보 파일은 포인트 클라우드 코딩된 비트스트림으로부터 생성된다. 포인트 클라우드 코딩된 비트스트림은 아래에서 더 설명되고 예시될 것이다. 보조 정보는 V-PCC 인코더와 V-PCC 디코더 모두에서 새로운 모션 벡터 후보를 생성하는 데 사용되며, 둘 다 동일한 방법을 사용하여 V-PCC 인코더와 V-PCC 디코더가 동일한 결과를 생성하도록 한다. 보조 정보를 사용하여 V-PCC 인코더 및 V-PCC 디코더는 새로운 모션 벡터 후보 및 병합 후보 목록 입력을 생성하였다. 그런 다음, 기존의 비디오 인코딩/디코딩 기술에 새로운 모션 벡터 후보 및 병합 후보 목록이 제공된다.
도 28은 V-PCC 유닛 페이로드의 패킷 스트림(2800) 표현의 예이다. 패킷 스트림(2800)은 V-PCC 비트스트림(2802)을 포함한다. V-PCC 비트스트림(2802)은 하나 이상의 V-PCC 유닛을 포함한다. 예를 들어, V-PCC 유닛(2804)은 V-PCC 유닛 헤더(2806) 및 V-PCC 유닛 페이로드(2808)를 포함한다. V-PCC 유닛 페이로드(2808)는 시퀀스 파라미터 세트(2810), 패치 데이터 그룹(2812), 점유 비디오 데이터(2814), 지오메트리 비디오 데이터(2818), 및 속성 비디오 데이터(2816)를 포함한다. 점유 비디오 데이터(2814)는 2-D 프레임 데이터를 포함한다. 속성 비디오 데이터(2816)는 2 개의 2-D 프레임 세트, 예를 들어 근거리 레이어 및 원거리 레이어를 포함한다. 지오메트리 비디오 데이터(2818)는 또한 2 개의 2-D 프레임 세트, 예를 들어 근거리 레이어 및 원거리 레이어를 포함한다.
패치 데이터 그룹 단위 유형은 복수의 데이터 세트를 포함한다. 예를 들어, 패치 데이터 그룹 단위 유형(2812)은 시퀀스 파라미터 세트(2820), 프레임 지오메트리 파라미터 세트(2822), 지오메트리 패치 파라미터 세트(2824), 프레임 파라미터 세트(2826), 프레임 속성 파라미터 세트 및 속성 패치 파라미터 세트(2830)를 포함한다. 추가로, 패치 데이터 그룹 유닛 유형(2812)은 복수의 패치 타일 그룹(2832)을 포함한다. 전술한 바와 같이, 패치 타일 그룹은 복수의 패치를 포함한다. 예를 들어, 패치 데이터 그룹은 T(i, 0) 내지 T(i, m)의 패치 타일 그룹의 한 세트를 포함한다. 이 정보는 V-PCC 유닛 페이로드의 점유, 속성 및 지오메트리 컴포넌트에서 포인트 클라우드 프레임을 재구성하는 데 필요하다. "I"는 3-D PCC 프레임 "I"에 대응하는 패치 데이터 그룹 인덱스이다. M+1은 3D 포인트 클라우드 프레임 "I"에 대해 생성된 3D 패치의 수이고; 이 문서에서는 T(i, j)를 패치라고 한다.
도 29는 V-PCC 유닛 페이로드의 시각적 표현(2900)의 또 다른 예이다. V-PCC 유닛 페이로드의 시각적 표현(2900)에 예시된 바와 같이, 화살표는 참조 프레임/데이터 유닛에서 현재 데이터 유닛으로의 예측 흐름을 나타낸다. 근거리 레이어와 원거리 레이어 간의 예측은 동일한 V-PCC 데이터 프레임 내에서만 허용된다. 예를 들어, 시각적 표현(2900)은 3-D 포인트 클라우드, 패치 데이터 그룹, 근거리 및 원거리 레이어의 기하학 비디오 데이터, 근거리 및 원거리 레이어의 속성 비디오 데이터 및 점유 비디오 데이터를 예시한다. 디
도 30은 3D 보조 데이터를 사용하여 모션 추정을 수행하기 위한 프로세스(3000)의 예를 예시하는 흐름도이다. 프로세스(3000)는 도 27에 도시된 컴포넌트를 포함하는 V-PCC 인코더 또는 V-PCC 디코더에 의해 수행될 수 있다.
V-PCC 인코더는 3 차원 포인트 클라우드 데이터의 연속성 데이터를 기반으로 기록 미디어의 3 차원 포인트 클라우드 데이터의 세그멘테이션을 생성한다(3002). V-PCC 인코더는 3 차원(3-D) 포인트 클라우드 데이터를 3 차원 패치 바운딩 박스 또는 3 차원 패치 바운딩 박스(1504)와 같은 분할 세트로 분할한다. 3D 포인트 클라우드 데이터의 프레임 내에서 객체를 덮는 3D 포인트 클라우드 데이터의 전체에 대해 다중 분할이 생성될 수 있다. 각 세그멘테이션 또는 3D 패치 바운딩 박스는 서로 근접하게 배치되거나 3D 포인트 클라우드 데이터로 객체를 덮을 때 서로 겹칠 수 있다.
V-PCC 인코더는 분할된 3 차원 포인트 클라우드 데이터의 표현(representation)을 3 차원 바운딩 박스의 하나 이상의 측면에 투영하고, 분할된 3 차원 포인트 클라우드 데이터의 표현은 3 차원 바운딩 박스의 투영된 측면에 기초하여 다르다(3004). V-PCC는 도 16에 도시된 바와 같이 3D 포인트 클라우드 데이터의 이미지를 3D 바운딩 박스의 각 측면에 투영하기 위해 3-D 바운딩 박스로 3D 포인트 클라우드 데이터를 둘러싼다. 일부 구현에서, V-PCC 인코더는 3-D 바운딩 박스의 측면 상의 투영 평면을 선택하기 위한 기준을 정의한다. 예를 들어, 기준은 매끄러운 연속 표면 기준을 포함할 수 있다. 따라서, 매끄러운 연속 표면 기준이 각 투영 방향 중 최대 영역이 되도록 바운딩 박스의 측면에 분할의 투영 영역을 포함하는 경우 특정 투영 평면이 선택된다. 부드러운 연속 표면은 하나 이상의 부드러운 연속 알고리즘을 사용하여 결정할 수 있다. 매끄러운 연속 표면은 최소한의 가려지거나 차단된 데이터 포인트가 있는 표면으로 정의할 수 있다. 그런 다음 V-PCC 인코더는 각 방향과 모든 방향의 각 매끄러운 표면을 비교하여 3D 바운딩 박스 측면의 최대 영역을 포함하는 투영을 생성하는 방향을 결정한다. 특정 투영 평면이 선택되면 V-PCC 인코더는 3D 포인트 클라우드 데이터의 특정 표면을 3D 바운딩 박스의 특정 투영 평면에 투영한다. 일부 구현에서, V-PCC 인코더는 3-D 포인트 클라우드 데이터의 다양한 표면을 3-D 바운딩 박스의 각 측면에 투영한다.
V-PCC 인코더는 분할된 3 차원 포인트 클라우드 데이터의 투영된 표현에 기초하여 하나 이상의 패치를 생성한다(3006). 이미지가 3D 바운딩 박스의 측면에 투영되면 V-PCC 인코더는 각 투영에서 패치를 생성한다. 3 차원 바운딩 박스 측면의 2 차원 바운딩 박스에 대응하는 각 패치에는 좌표 세트가 포함된다. 패치는 3D 바운딩 박스 측면의 투영 영역에 대응한다. 패치의 좌표에는 예를 들어 패치 인덱스 u0, v0, size_u0 및 size_v0이 포함된다. 패치 인덱스는 해당 바운딩 박스의 특정 면과 관련된 특정 패치를 식별한다. U0은 투영 평면에서 패치의 X 좌표를 정의한다. V0은 투영 평면에서 패치의 Y 좌표를 정의한다. Size_u0 및 size_v0은 각각 패치 u0 및 v0의 각 좌표에 대응하는 크기를 설명한다.
일부 구현에서, V-PCC 인코더는 "패치 타일 그룹"을 형성하기 위해 3-D 바운딩 박스의 각 측면으로부터의 패치와 그에 대응하는 좌표 정보를 결합한다. 패치 타일 그룹의 각 요소는 특정 패치에 대응하며, 여기에는 특정 고유 인덱스가 포함되며 3D 포인트 클라우드 프레임 내의 고유한 3D 바운딩 박스에 대응한다. 예를 들어, 패키징된 패치(1802)는 패치 데이터 그룹으로 알려진 패치 타일 그룹의 그룹을 포함한다.
패치 데이터 그룹의 각 패치로부터의 좌표 정보는 투영 맵에 포함된다. 프로젝션 맵(projection map)은 나중에 V-PCC 인코더에 의해 비디오 인코딩 솔루션에 제공되는 추가 파일이다. 투영 맵에는 각 패치에 대한 2D 및 3D 위치 정보가 포함된다. 특정 패치에 대한 2D 데이터, 예를 들어, u0, v0는 투영의 X 및 Y 좌표의 왼쪽 상단 모서리에 대응한다. Size_u0 및 size_v0은 해당 패치의 높이와 너비에 대응한다. 3D 패치 투영 데이터의 경우 투영 맵에는 X, Y 및 Z 축에 대응하는 u1, v1 및 d1 좌표가 포함된다. 특히 u1, v1 및 d1은 투영면의 인덱스 또는 법선 축에 대응하는 투영면에 대응한다.
V-PCC 인코더는 하나 이상의 패치의 제1 프레임을 생성한다(3008). V-PCC인코더는(3006)에서 생성된 패치 데이터 그룹의 프레임을 생성한다. 프레임은 인코딩되어 전송을 위해 비디오 압축 솔루션에 제공될 수 있다.
V-PCC 인코더는 제1 프레임에 대한 제1 보조 정보를 생성한다(3010). 제1 보조 정보는 제1 프레임의 특정 패치에 대한 패치 메타 데이터에 대응한다. 예를 들어, 제1 보조 정보는 특정 패치에 대한 패치 인덱스 u0, v0, u1, v1, d1을 포함할 수 있다.
V-PCC 인코더는 참조 프레임에 대한 제2 보조 정보를 생성한다(3012). V-PCC 인코더는 하나 이상의 패치를 포함하는 이전에 인코딩된 프레임인 참조 프레임을 검색한다. V-PCC 인코더는 참조 프레임을 디코딩한 후 참조 프레임에서 패치를 검색하고 참조 프레임에서 패치와 관련된 보조 정보를 검색한다. 참조 프레임의 패치와 관련된 보조 정보에는 특정 패치에 대한 패치 인덱스 u0, v0, u1, v1 및 d1이 포함된다.
V-PCC 인코더는 제1 보조 정보 및 제2 보조 정보에 기초하여 참조 프레임에서 제2 패치와 매칭되는 제1 프레임에서 제1 패치를 식별한다(3014). V-PCC는 제1 프레임과 관련된 보조 정보를 참조의 패치와 관련된 보조 정보와 비교한다. 예를 들어 V-PCC는 각 패치와 관련된 패치 인덱스, u0, v0, v1 및 d1을 비교하여 이 정보 간의 거리를 결정한다. V-PCC 인코더는 제1 프레임의 패치를 참조 프레임의 각 패치와 비교하여 최소 보조 정보 거리를 가진 일치하는 패치를 찾는다. 거리가 최소가 되면 V-PCC 인코더는 두 패치 간의 매칭 패치를 나타낸다.
V-PCC 인코더는 제1 보조 정보와 제2 보조 정보의 차이에 기초하여 제1 패치와 제2 패치 사이의 모션 벡터 후보를 생성한다(3016). 다른 패치에 비해 대응하는 보조 정보의 차이가 최소 일 때 제1 패치와 제2 패치 사이에 모션 벡터 후보가 생성된다. 모션 벡터 후보는 전송에 사용되는 모션 벡터 후보 목록에 추가된다. 차이는 속도 왜곡 최적화의 추정 비용에 기초할 수 있다. 비용 또는 거리, 예를 들어 레이트 왜곡 최적화 함수의 추정 비용에 의해 반환되는 메트릭 또는 벡터 공간의 메트릭 거리는 모션 벡터 후보 목록으로부터의 최소 비용에 대응한다. 최소 비용 또는 거리가 발견되면 pcMvFieldNeighbors 변수가 참조 프레임의 패치와 연결된 올바른 패치에 대응하는 X 좌표, Y 좌표 및 최소화된 비용 값으로 업데이트된다.
V-PCC 인코더는 모션 벡터 후보를 사용하여 모션 보상을 수행한다(3018). 그런 다음 V-PCC 인코더는 정제된 모션 벡터 후보 및 병합 후보를 기반으로 모션 보상을 수행한다. 일부 구현에서, 새로운 엔티티는 병합 후보 목록에서 생성된다. 이 엔티티는 모션 추정을 위한 더 나은 예측을 찾기 위해 모션 추정을 수행하는 예측 자로 사용된다. 예를 들어, 모션 벡터 후보 목록은 패치에 대한 3D 정보와 투사된 이미지의 해당 2D 패치 위치를 기반으로 업데이트된다. 또한 병합 후보 목록은 패치에 대한 3D 정보와 투영된 이미지의 해당 2D 위치를 기반으로 업데이트될 수 있다. 따라서 이 정보는 비디오 압축 및 압축 해제에 추가된다. 이 정보는 보조 정보를 기반으로 비디오 인코더에 대해 생성되며 비디오 디코더에 대해서도 동일한 정보가 생성된다. 모션 벡터 후보 목록은 전송되거나 계산되는 것이 아니라 패치 메타 데이터와 함께 2D 패치를 수신할 때 V-PCC 인코더에 의해 생성된다. 모션 벡터 후보 목록은 "비디오 코딩을 위한 추가 정보 생성" 코드 세트에 따라 생성된다. 이후, 기존의 비디오 인코딩/디코딩 기술에 새로운 모션 벡터 후보 및 병합 후보 목록이 제공된다.
제1 컴포넌트와 제2 컴포넌트 사이에 라인, 트레이스 또는 다른 미디어를 제외하고 개재 컴포넌트가 없을 때 제1 컴포넌트는 제2 컴포넌트에 직접 연결된다. 제1 컴포넌트와 제2 컴포넌트 사이에 라인, 트레이스 또는 다른 미디어 이외의 개재 컴포넌트가 있을 때 제1 컴포넌트는 제2 컴포넌트에 간접적으로 결합된다. 용어 "결합" 및 그 변형은 직접 결합 및 간접 결합을 모두 포함한다. 용어 "약"의 사용은 달리 명시되지 않는 한 후속 숫자의 ±10%를 포함하는 범위를 의미한다.
본 개시에서 여러 실시예가 제공되었지만, 개시된 시스템 및 방법은 본 개시의 사상 또는 범위를 벗어나지 않고 많은 다른 특정 형태로 구현될 수 있음을 이해할 수 있다. 본 실시예는 제한적인 것이 아니라 예시적인 것으로 간주되어야 하며, 의도는 여기에 제공된 자세한 내용에 제한되지 않는다. 예를 들어, 다양한 요소 또는 컴포넌트는 다른 시스템에서 결합 또는 통합될 수 있거나, 특정 기능이 생략되거나 구현되지 않을 수 있다.
추가로, 다양한 실시예에서 개별적이거나 별개로서 설명되고 예시된 기술, 시스템, 서브 시스템 및 방법은 본 개시의 범위를 벗어나지 않고 다른 시스템, 컴포넌트, 기술 또는 방법과 결합되거나 통합될 수 있다. 변경, 대체 및 변경의 다른 예는 당업자에 의해 확인될 수 있으며 여기에 개시된 정신 및 범위를 벗어나지 않고 이루어질 수 있다.
본 명세서에 기술된 본 발명의 실시예 및 모든 기능적 동작은 본 명세서 및 그 구조적 등가물에 개시된 구조 포함하는 디지털 전자 회로, 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어, 또는 이들 중 하나 이상의 조합으로 구현될 수 있다. 본 발명의 실시예는 하나 이상의 컴퓨터 프로그램 제품, 즉, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위해 컴퓨터 판독 가능 미디어 상에 인코딩된 컴퓨터 프로그램 명령의 하나 이상의 모듈로서 구현될 수 있다. 컴퓨터 판독 가능형 매체는 비 일시적 컴퓨터 판독 가능 저장 매체, 기계 판독 가능 저장 장치, 기계 판독 가능 저장 기판, 메모리 장치, 기계 판독 가능 전파 신호에 영향을 미치는 물질 구성, 또는 이들 중 하나 이상의 조합일 수 있다. "데이터 처리 장치"라는 용어는 데이터 처리를 위한 모든 장치, 장치 및 기계를 포함하며, 예를 들어 프로그램 가능한 프로세서, 컴퓨터 또는 다중 프로세서 또는 컴퓨터를 포함한다. 장치는 하드웨어에 추가하여 문제의 컴퓨터 프로그램에 대한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다. 전파된 신호는 인공적으로 생성된 신호, 예를 들어 적절한 수신기 장치로의 전송을 위해 정보를 인코딩하기 위해 생성되는 기계 생성 전기, 광학 또는 전자기 신호이다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트 또는 코드라고도 함)은 컴파일된 언어 또는 해석된 언어를 포함한 모든 형태의 프로그래밍 언어로 작성될 수 있으며 독립 실행형 프로그램으로서 또는 컴퓨팅 환경에서 사용하기에 적합한 모듈, 컴포넌트, 서브 루틴 또는 기타 장치로서 포함하는 모든 형태로 배포될 수 있다. 컴퓨터 프로그램이 반드시 파일 시스템의 파일에 대응하는 것은 아니다. 프로그램은 다른 프로그램 또는 데이터(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트)를 보유하는 파일의 일부, 해당 프로그램 전용 단일 파일 또는 여러 개의 조정된 파일(예를 들어, 하나 이상의 모듈, 하위 프로그램 또는 코드 일부를 저장하는 파일)에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 또는 한 사이트에 위치하거나 여러 사이트에 분산되고 통신 네트워크에 의해 상호 연결된 여러 컴퓨터에서 실행되도록 배포될 수 있다.
본 명세서에 설명된 프로세스 및 로직 흐름은 입력 데이터에 대해 동작하고 출력을 생성함으로써 기능을 수행하기 위해 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 프로그래밍 가능한 프로세서에 의해 수행될 수 있다. 프로세스 및 로직 흐름은 또한 수행될 수 있으며, 장치는 예를 들어 필드 프로그래머블 게이트 어레이(field programmable gate array, FPGA) 또는 애플리케이션 특정 집적 회로(application specific integrated circuit, ASIC)와 같은 특수 목적 로직 회로로 구현될 수 있다.
컴퓨터 프로그램의 실행에 적합한 프로세서는 예를 들어 범용 및 특수 목적의 마이크로프로세서, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로 프로세서는 읽기 전용 메모리 나 랜덤 액세스 메모리 또는 둘 다에서 명령과 데이터를 수신한다. 컴퓨터의 필수 요소는 명령을 수행하기 위한 프로세서와 명령 및 데이터를 저장하기 위한 하나 이상의 메모리 장치이다. 일반적으로, 컴퓨터는 또한 데이터를 저장하기 위한 하나 이상의 대용량 저장 장치, 예를 들어 자기, 광 자기 디스크 또는 광 디스크로부터 데이터를 수신하거나 데이터를 전송하거나 둘 모두를 포함하거나 작동 가능하게 결합된다. 그러나 컴퓨터에는 이러한 장치가 필요하지 않다. 더욱이, 컴퓨터는 태블릿 컴퓨터, 모바일 전화, 퍼스널 디지털 어시스턴트(Personal Digital Assistant, PDA), 모바일 오디오 플레이어, 글로벌 포지셔닝 시스템(Global Positioning System, GPS) 수신기와 같은 다른 장치에 내장될 수 있다. 컴퓨터 프로그램 명령 및 데이터를 저장하기에 적합한 컴퓨터 판독 가능 미디어는 예를 들어 EPROM, EEPROM 및 플래시 메모리 장치와 같은 반도체 메모리 장치를 포함하는 모든 형태의 비 휘발성 메모리, 미디어 및 메모리 장치를 포함한다. 자기 디스크, 예를 들어 내부 하드 디스크 또는 이동식 디스크; 광 자기 디스크; 및 CD ROM 및 DVD-ROM 디스크. 프로세서 및 메모리는 특수 목적 논리 회로에 의해 보완되거나 통합될 수 있다.
사용자와의 상호 작용을 제공하기 위해, 본 발명의 실시예는 사용자에게 정보를 표시하기 위한 음극선관(cathode ray tube, CRT) 또는 액정 디스플레이(liquid crystal display, LCD) 모니터와 같은 디스플레이 장치 및 사용자가 컴퓨터에 입력을 제공할 수 있는 키보드 및 포인팅 장치, 예를 들어 마우스 또는 트랙볼을 포함하는 컴퓨터에서 구현될 수 있다. 사용자와의 상호 작용을 제공하기 위해 다른 종류의 장치가 사용될 수도 있고; 예를 들어, 사용자에게 제공되는 피드백은 예를 들어 시각적 피드백, 청각적 피드백 또는 촉각적 피드백과 같은 모든 형태의 감각 피드백일 수 있으며; 그리고 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함한 임의의 형태로 수신될 수 있다.
본 발명의 실시예는 예를 들어 데이터 서버로서 백엔드 컴포넌트를 포함하거나, 예를 들어 애플리케이션 서버와 같은 미들웨어 컴포넌트를 포함하거나, 예를 들어 사용자가 본 발명의 구현과 상호 작용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터로서 프론트엔드 컴포넌트를 포함하거나, 또는 이러한 백 엔드, 미들웨어 또는 프런트 엔드 컴포넌트의 하나 이상의 조합을 포함하는 컴퓨팅 시스템에서 구현될 수 있다. 시스템의 컴포넌트는 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어 통신 네트워크에 의해 상호 연결될 수 있다. 통신 네트워크의 예로는 근거리 통신망("LAN")과 광역 통신망("WAN"), 예를 들어, 인터넷이 있다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트와 서버는 일반적으로 서로 떨어져 있으며 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는 각 컴퓨터에서 실행되고 서로 클라이언트-서버 관계를 갖는 컴퓨터 프로그램으로 인해 발생한다.
위에서 몇 가지 구현에 대해 자세히 설명했지만 다른 수정도 가능한다. 예를 들어, 클라이언트 애플리케이션이 델리게이트(들)에 액세스하는 것으로 설명되지만, 다른 구현에서 델리게이트(들)는 하나 이상의 서버에서 실행되는 애플리케이션과 같은 하나 이상의 프로세서에 의해 구현된 다른 애플리케이션에 의해 사용될 수 있다. 또한, 도면에 묘사된 논리 흐름은 원하는 결과를 얻기 위해 표시된 특정 순서 또는 순차적 순서를 필요로 하지 않는다. 또한, 설명된 흐름으로부터 다른 동작이 제공되거나 동작이 제거될 수 있으며, 설명된 시스템에 다른 컴포넌트가 추가되거나 제거될 수 있다. 따라서, 다른 구현은 다음 청구항의 범위 내에 있다.
본 명세서는 많은 특정 구현 세부 사항을 포함하지만, 이들은 임의의 발명의 범위 또는 청구될 수 있는 것에 대한 제한으로 해석되어서는 안 되며, 특정 발명의 특정 실시예에 특정될 수 있는 특징의 설명으로 해석되어야 한다. 별도의 실시예의 맥락에서 본 명세서에 설명된 특정 특징은 또한 단일 실시예에서 조합하여 구현될 수 있다. 반대로, 단일 실시예의 맥락에서 설명된 다양한 특징은 또한 다중 실시예에서 개별적으로 또는 임의의 적절한 하위 조합으로 구현될 수 있다. 더욱이, 특징이 특정 조합으로 작용하는 것으로 위에서 설명될 수 있고 심지어 처음에 그렇게 주장될 수도 있지만, 청구된 조합으로부터 하나 이상의 특징이 어떤 경우에는 조합으로부터 절제될 수 있고, 청구된 조합은 하위 조합 또는 하위 조합의 변형을 지향할 수 있다.
유사하게, 동작이 특정 순서로 도면에 도시되어 있지만, 이는 그러한 동작이 도시된 특정 순서 또는 순차적 순서로 수행되거나, 바람직한 결과를 달성을 위해 모든 예시된 동작이 수행될 것을 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서는 멀티태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 위에서 설명된 실시예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시예에서 그러한 분리를 요구하는 것으로 이해되어서는 안 되며, 설명된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품으로 통합될 수 있음을 이해해야 한다. 여러 소프트웨어 제품으로 패키징된다.
주제의 특정 실시예가 설명되었다. 다른 실시예는 다음 청구항의 범위 내에 있다. 예를 들어, 청구항에 언급된 동작은 다른 순서로 수행될 수 있으며 여전히 바람직한 결과를 얻을 수 있다. 일례로서, 첨부된 도면에 도시된 프로세스는 바람직한 결과를 얻기 위해 도시된 특정 순서 또는 순차적인 순서를 반드시 필요로 하지 않는다. 특정 구현에서, 멀티 태스킹 및 병렬 처리가 유리할 수 있다.

Claims (20)

  1. 컴퓨터 구현 방법으로서,
    인코더가 3 차원 포인트 클라우드 데이터의 연속성 데이터에 기초하여 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계;
    상기 인코더가 상기 분할된 3 차원 포인트 클라우드 데이터의 표현을 3 차원 바운딩 박스(three-dimensional bounding box)의 하나 이상의 측면에 투영하는 단계 - 상기 분할된 3 차원 포인트 클라우드 데이터의 표현은 상기 3 차원 바운딩 박스의 투영된 측면에 기초하여 상이함 -;
    상기 분할된 3 차원 포인트 클라우드 데이터의 표현을 3 차원 바운딩 박스의 하나 이상의 측면에 투영하는 것에 응답하여, 상기 인코더가 상기 분할된 3 차원 포인트 클라우드 데이터의 투영된 표현에 기초하여 하나 이상의 패치(patch)들을 생성하는 단계;
    상기 인코더가 상기 하나 이상의 패치들의 제1 프레임을 생성하는 단계;
    상기 인코더가 상기 제1 프레임에 대한 제1 보조 정보를 생성하는 단계;
    상기 인코더가 참조 프레임에 대한 제2 보조 정보를 생성하는 단계 - 상기 참조 프레임은 하나 이상의 제2 패치들을 포함하고, 상기 참조 프레임은 이전에 인코딩되어 전송된 프레임임 -;
    상기 인코더가 상기 제1 보조 정보 및 상기 제2 보조 정보에 기초하여 상기 참조 프레임의 하나 이상의 제2 패치들로부터 제2 패치와 매칭되는 제1 프레임으로부터의 제1 패치를 식별하는 단계;
    상기 인코더가 상기 제1 보조 정보와 상기 제2 보조 정보 사이의 차이에 기초하여 상기 제1 패치와 상기 제2 패치 사이의 모션 벡터 후보를 생성하는 단계; 및
    상기 인코더가 상기 모션 벡터 후보를 사용하여 모션 보상을 수행하는 단계
    를 포함하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 참조 프레임은 상기 제2 보조 정보를 생성하도록 디코딩되는, 컴퓨터 구현 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계는:
    상기 인코더가 복수의 분할의 각각의 분할을 후속적으로 투영하고 인코딩하기 위해 상기 3 차원 포인트 클라우드 미디어에 대한 복수의 분할을 생성하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  4. 제1항 또는 제2항에 있어서,
    상기 제1 보조 정보는 상기 하나 이상의 패치들 각각에 대한 인덱스 데이터, 상기 하나 이상의 패치들 각각에 대한 2 차원 데이터 및 상기 하나 이상의 패치들 각각에 대한 3 차원 데이터를 포함하는, 컴퓨터 구현 방법.
  5. 제4항에 있어서,
    상기 하나 이상의 패치들 각각에 대한 인덱스 데이터는 상기 3 차원 바운딩 박스의 대응하는 측면에 대응하는, 컴퓨터 구현 방법.
  6. 제4항에 있어서,
    상기 하나 이상의 패치들 각각에 대한 2 차원 데이터 및 상기 하나 이상의 패치들 각각에 대한 3 차원 데이터는 상기 3 차원 포인트 클라우드 데이터의 일부에 대응하고 연결되는, 컴퓨터 구현 방법.
  7. 제1항 또는 제2항에 있어서,
    상기 3 차원 포인트 클라우드 데이터의 연속성 데이터에 기초하여 상기 3 차원 포인트 클라우드 데이터에 대한 하나 이상의 패치들을 생성하는 단계는:
    상기 인코더가 각 방향으로부터 상기 3 차원 포인트 클라우드 데이터의 평활도 기준(smoothness criteria)을 결정하는 단계;
    상기 인코더가 상기 3 차원 포인트 클라우드 데이터의 각 방향으로부터 상기 평활도 기준을 비교하는 단계; 및
    상기 비교에 응답하여, 상기 인코더가 바운딩 박스의 측면에 더 큰 투영 영역을 갖는 상기 3 차원 포인트 클라우드 데이터의 평활도 기준의 방향을 선택하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  8. 제1항 또는 제2항에 있어서,
    상기 제1 패치와 상기 제2 패치 사이의 모션 벡터 후보를 생성하는 단계는:
    상기 인코더가 상기 제1 보조 정보의 2 차원 데이터와 상기 제2 보조 정보의 2 차원 데이터 사이의 거리를 결정하는 단계;
    상기 인코더가 상기 제1 보조 정보의 2 차원 데이터와 상기 제2 보조 정보의 2 차원 데이터 사이의 거리에 기초하여 상기 모션 벡터 후보를 생성하는 단계; 및
    상기 인코더가 상기 모션 벡터 후보를 모션 벡터 후보 목록에 추가하는 단계
    를 더 포함하는, 컴퓨터 구현 방법.
  9. 시스템으로서,
    하나 이상의 컴퓨터 및 연산 가능한 명령을 저장하는 하나 이상의 저장 장치를 포함하며, 상기 명령은 상기 하나 이상의 컴퓨터에 의해 실행될 때 상기 하나 이상의 컴퓨터로 하여금:
    3 차원 포인트 클라우드 데이터의 연속성 데이터에 기초하여 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계;
    상기 분할된 3 차원 포인트 클라우드 데이터의 표현을 3 차원 바운딩 박스(three-dimensional bounding box)의 하나 이상의 측면에 투영하는 단계 - 상기 분할된 3 차원 포인트 클라우드 데이터의 표현은 상기 3 차원 바운딩 박스의 투영된 측면에 기초하여 상이함 -;
    상기 분할된 3 차원 포인트 클라우드 데이터의 표현을 3 차원 바운딩 박스의 하나 이상의 측면에 투영하는 것에 응답하여, 상기 분할된 3 차원 포인트 클라우드 데이터의 투영된 표현에 기초하여 하나 이상의 패치들을 생성하는 단계;
    상기 하나 이상의 패치들의 제1 프레임을 생성하는 단계;
    상기 제1 프레임에 대한 제1 보조 정보를 생성하는 단계;
    참조 프레임에 대한 제2 보조 정보를 생성하는 단계 - 상기 참조 프레임은 하나 이상의 제2 패치들을 포함하고, 상기 참조 프레임은 이전에 인코딩되어 전송된 프레임임 -;
    상기 제1 보조 정보 및 상기 제2 보조 정보에 기초하여 상기 참조 프레임의 하나 이상의 제2 패치들로부터 제2 패치와 매칭되는 제1 프레임으로부터의 제1 패치를 식별하는 단계;
    상기 제1 보조 정보와 상기 제2 보조 정보 사이의 차이에 기초하여 상기 제1 패치와 상기 제2 패치 사이의 모션 벡터 후보를 생성하는 단계; 및
    상기 모션 벡터 후보를 사용하여 모션 보상을 수행하는 단계
    를 포함하는 동작을 수행하게 하는, 시스템.
  10. 제9항에 있어서,
    상기 참조 프레임은 상기 제2 보조 정보를 생성하도록 디코딩되는, 시스템.
  11. 제9항 또는 제10항에 있어서,
    상기 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계는:
    복수의 분할의 각각의 분할을 후속적으로 투영하고 인코딩하기 위해 상기 3 차원 포인트 클라우드 미디어에 대한 복수의 분할을 생성하는 단계
    를 더 포함하는, 시스템.
  12. 제9항 또는 제10항에 있어서,
    상기 제1 보조 정보는 상기 하나 이상의 패치들 각각에 대한 인덱스 데이터, 상기 하나 이상의 패치들 각각에 대한 2 차원 데이터 및 상기 하나 이상의 패치들 각각에 대한 3 차원 데이터를 포함하는, 시스템.
  13. 제12항에 있어서,
    상기 하나 이상의 패치들 각각에 대한 인덱스 데이터는 상기 3 차원 바운딩 박스의 대응하는 측면에 대응하는, 시스템.
  14. 제12항에 있어서,
    상기 하나 이상의 패치들 각각에 대한 2 차원 데이터 및 상기 하나 이상의 패치들 각각에 대한 3 차원 데이터는 상기 3 차원 포인트 클라우드 데이터의 일부에 대응하고 연결되는, 시스템.
  15. 제9항 또는 제10항에 있어서,
    상기 3 차원 포인트 클라우드 데이터의 연속성 데이터에 기초하여 상기 3 차원 포인트 클라우드 데이터에 대한 하나 이상의 패치들을 생성하는 단계는:
    각 방향으로부터 상기 3 차원 포인트 클라우드 데이터의 평활도 기준(smoothness criteria)을 결정하는 단계;
    상기 3 차원 포인트 클라우드 데이터의 각 방향으로부터 상기 평활도 기준을 비교하는 단계; 및
    상기 비교에 응답하여, 바운딩 박스의 측면에 더 큰 투영 영역을 갖는 상기 3 차원 포인트 클라우드 데이터의 평활도 기준의 방향을 선택하는 단계
    를 더 포함하는, 시스템.
  16. 제9항 또는 제10항에 있어서,
    상기 제1 패치와 상기 제2 패치 사이의 모션 벡터 후보를 생성하는 단계는:
    상기 제1 보조 정보의 2 차원 데이터와 상기 제2 보조 정보의 2 차원 데이터 사이의 거리를 결정하는 단계;
    상기 제1 보조 정보의 2 차원 데이터와 상기 제2 보조 정보의 2 차원 데이터 사이의 거리에 기초하여 상기 모션 벡터 후보를 생성하는 단계; 및
    상기 모션 벡터 후보를 모션 벡터 후보 목록에 추가하는 단계
    를 더 포함하는, 시스템.
  17. 비 일시적 컴퓨터 판독 가능형 저장 매체로서,
    하나 이상의 프로세싱 장치에 의해 실행될 수 있는 명령이 저장되며, 이러한 실행 시 상기 하나 이상의 프로세싱 장치로 하여금:
    3 차원 포인트 클라우드 데이터의 연속성 데이터에 기초하여 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계;
    상기 분할된 3 차원 포인트 클라우드 데이터의 표현을 3 차원 바운딩 박스(three-dimensional bounding box)의 하나 이상의 측면에 투영하는 단계 - 상기 분할된 3 차원 포인트 클라우드 데이터의 표현은 상기 3 차원 바운딩 박스의 투영된 측면에 기초하여 상이함 -;
    상기 분할된 3 차원 포인트 클라우드 데이터의 표현을 3 차원 바운딩 박스의 하나 이상의 측면에 투영하는 것에 응답하여, 상기 분할된 3 차원 포인트 클라우드 데이터의 투영된 표현에 기초하여 하나 이상의 패치들을 생성하는 단계;
    상기 하나 이상의 패치들의 제1 프레임을 생성하는 단계;
    상기 제1 프레임에 대한 제1 보조 정보를 생성하는 단계;
    참조 프레임에 대한 제2 보조 정보를 생성하는 단계 - 상기 참조 프레임은 하나 이상의 제2 패치들을 포함하고, 상기 참조 프레임은 이전에 인코딩되어 전송된 프레임임 -;
    상기 제1 보조 정보 및 상기 제2 보조 정보에 기초하여 상기 참조 프레임의 하나 이상의 제2 패치들로부터 제2 패치와 매칭되는 제1 프레임으로부터의 제1 패치를 식별하는 단계;
    상기 제1 보조 정보와 상기 제2 보조 정보 사이의 차이에 기초하여 상기 제1 패치와 상기 제2 패치 사이의 모션 벡터 후보를 생성하는 단계; 및
    상기 모션 벡터 후보를 사용하여 모션 보상을 수행하는 단계
    를 포함하는 동작을 수행하게 하는, 하나 이상의 비 일시적 컴퓨터 판독 가능형 저장 매체.
  18. 제17항에 있어서,
    상기 참조 프레임은 상기 제2 보조 정보를 생성하도록 디코딩되는, 비 일시적 컴퓨터 판독 가능형 저장 매체.
  19. 제17항 내지 제18항 중 어느 한 항에 있어서,
    상기 기록된 미디어의 3 차원 포인트 클라우드 데이터의 분할을 생성하는 단계는:
    복수의 분할의 각각의 분할을 후속적으로 투영하고 인코딩하기 위해 상기 3 차원 포인트 클라우드 미디어에 대한 복수의 분할을 생성하는 단계
    를 더 포함하는, 비 일시적 컴퓨터 판독 가능형 저장 매체.
  20. 제1항에 있어서, 상기 제1 프레임에 대한 제1 보조 정보는 상기 제1 프레임의 특정 패치에 대한 패치 메타데이터에 대응하는, 컴퓨터 구현 방법.
KR1020217012942A 2018-10-02 2019-10-02 3d 보조 데이터를 사용한 모션 추정 KR102537087B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862740237P 2018-10-02 2018-10-02
US62/740,237 2018-10-02
US201962863362P 2019-06-19 2019-06-19
US62/863,362 2019-06-19
PCT/US2019/054194 WO2020072579A1 (en) 2018-10-02 2019-10-02 Motion estimation using 3d auxiliary data

Publications (2)

Publication Number Publication Date
KR20210069683A KR20210069683A (ko) 2021-06-11
KR102537087B1 true KR102537087B1 (ko) 2023-05-26

Family

ID=70054789

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217012942A KR102537087B1 (ko) 2018-10-02 2019-10-02 3d 보조 데이터를 사용한 모션 추정

Country Status (9)

Country Link
US (1) US11688104B2 (ko)
EP (1) EP3850832A4 (ko)
JP (1) JP7187688B2 (ko)
KR (1) KR102537087B1 (ko)
CN (1) CN112771850B (ko)
BR (1) BR112021006256A2 (ko)
MX (1) MX2021003841A (ko)
SG (1) SG11202103302VA (ko)
WO (1) WO2020072579A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110114803B (zh) * 2016-12-28 2023-06-27 松下电器(美国)知识产权公司 三维模型分发方法、三维模型接收方法、三维模型分发装置以及三维模型接收装置
EP3881546A4 (en) * 2018-12-04 2022-01-26 Huawei Technologies Co., Ltd. VIDEO ENCODER, VIDEO DECODER, AND CORRESPONDING METHOD
CN110232741B (zh) * 2019-06-17 2022-11-25 腾讯科技(深圳)有限公司 多层包围盒确定方法、碰撞检测及运动控制方法与设备
US11669939B1 (en) * 2019-10-07 2023-06-06 Gopro, Inc. Burst deblurring with kernel estimation networks
US20230179797A1 (en) * 2020-03-25 2023-06-08 Sony Group Corporation Image processing apparatus and method
WO2021210837A1 (ko) * 2020-04-13 2021-10-21 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN112396703B (zh) * 2020-11-18 2024-01-12 北京工商大学 一种单图像三维点云模型重建方法
CN117121488A (zh) * 2021-04-15 2023-11-24 Lg电子株式会社 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
KR102343051B1 (ko) * 2021-06-17 2021-12-24 주식회사 인피닉 라이다 점군으로부터 카메라 이미지의 바운딩 박스를 조정하는 방법 및 이를 실행하기 위하여 기록매체에 기록된 컴퓨터 프로그램
WO2023050072A1 (en) * 2021-09-28 2023-04-06 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Methods and systems for video compression
WO2023090616A1 (ko) * 2021-11-19 2023-05-25 현대자동차주식회사 포인트 단위 예측을 이용하는 라이다 포인트 클라우드 코딩을 위한 방법 및 장치
US11954775B2 (en) * 2022-02-23 2024-04-09 International Business Machines Corporation Artboard element positioning in a series of computer-based artboards
WO2023182764A1 (ko) * 2022-03-21 2023-09-28 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법.
WO2023191252A1 (ko) * 2022-03-29 2023-10-05 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN115082512A (zh) * 2022-07-08 2022-09-20 北京大学深圳研究生院 一种点云运动的估计方法、装置、电子设备及存储介质
US20240078711A1 (en) * 2022-09-01 2024-03-07 Illuscio, Inc. Systems and Methods for Lossless Line Fit Data Compression
WO2024063608A1 (ko) * 2022-09-22 2024-03-28 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150009214A1 (en) 2013-07-08 2015-01-08 Vangogh Imaging, Inc. Real-time 3d computer vision processing engine for object recognition, reconstruction, and analysis
US20150178988A1 (en) * 2012-05-22 2015-06-25 Telefonica, S.A. Method and a system for generating a realistic 3d reconstruction model for an object or being
US20170347120A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds
WO2018162406A1 (en) * 2017-03-07 2018-09-13 Thomson Licensing Quality metric for point clouds

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008075359A2 (en) * 2006-12-21 2008-06-26 Yeda Research And Development Co. Ltd. Method and apparatus for matching local self-similarities
GB2520338A (en) * 2013-11-19 2015-05-20 Nokia Corp Automatic scene parsing
US9552633B2 (en) * 2014-03-07 2017-01-24 Qualcomm Incorporated Depth aware enhancement for stereo video
CN106600710B (zh) * 2016-10-18 2019-06-14 浙江大学 一种几何网格模型邻接拓扑关联的层切多连通域构建方法
US10909725B2 (en) * 2017-09-18 2021-02-02 Apple Inc. Point cloud compression
CN108053481B (zh) * 2017-12-26 2021-11-30 深圳市易尚展示股份有限公司 三维点云法向量的生成方法、装置和存储介质
US11900639B2 (en) * 2018-01-19 2024-02-13 Interdigital Vc Holdings, Inc. Processing a point cloud
MX2020007663A (es) * 2018-01-19 2020-09-14 Interdigital Vc Holdings Inc Procesamiento de una nube de puntos.
CN108171217A (zh) * 2018-01-29 2018-06-15 深圳市唯特视科技有限公司 一种基于点融合网络的三维物体检测方法
US10867414B2 (en) * 2018-04-10 2020-12-15 Apple Inc. Point cloud attribute transfer algorithm
US11288412B2 (en) * 2018-04-18 2022-03-29 The Board Of Trustees Of The University Of Illinois Computation of point clouds and joint display of point clouds and building information models with project schedules for monitoring construction progress, productivity, and risk for delays
US11501507B2 (en) * 2018-06-26 2022-11-15 Sony Group Corporation Motion compensation of geometry information
US11017566B1 (en) * 2018-07-02 2021-05-25 Apple Inc. Point cloud compression with adaptive filtering
US11044478B2 (en) * 2018-07-02 2021-06-22 Apple Inc. Compression with multi-level encoding
EP3591975A1 (en) * 2018-07-03 2020-01-08 Industrial Technology Research Institute Method and apparatus for processing patches of a point cloud
US11012713B2 (en) * 2018-07-12 2021-05-18 Apple Inc. Bit stream structure for compressed point cloud data
EP3633621A1 (en) * 2018-10-02 2020-04-08 BlackBerry Limited Predictive coding of point clouds using multiple frames of references
US11430155B2 (en) * 2018-10-05 2022-08-30 Apple Inc. Quantized depths for projection point cloud compression
US11284091B2 (en) * 2019-03-25 2022-03-22 Apple Inc. Video based point cloud compression-patch alignment and size determination in bounding box
CN113330490B (zh) * 2019-01-31 2024-04-23 华为技术有限公司 三维(3d)辅助个性化家庭对象检测
US11450030B2 (en) * 2019-09-24 2022-09-20 Apple Inc. Three-dimensional mesh compression using a video encoder
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150178988A1 (en) * 2012-05-22 2015-06-25 Telefonica, S.A. Method and a system for generating a realistic 3d reconstruction model for an object or being
US20150009214A1 (en) 2013-07-08 2015-01-08 Vangogh Imaging, Inc. Real-time 3d computer vision processing engine for object recognition, reconstruction, and analysis
US20170347120A1 (en) * 2016-05-28 2017-11-30 Microsoft Technology Licensing, Llc Motion-compensated compression of dynamic voxelized point clouds
WO2018162406A1 (en) * 2017-03-07 2018-09-13 Thomson Licensing Quality metric for point clouds

Also Published As

Publication number Publication date
US11688104B2 (en) 2023-06-27
SG11202103302VA (en) 2021-04-29
CN112771850B (zh) 2022-05-24
JP2022502961A (ja) 2022-01-11
WO2020072579A1 (en) 2020-04-09
JP7187688B2 (ja) 2022-12-12
US20210217202A1 (en) 2021-07-15
EP3850832A4 (en) 2021-11-10
EP3850832A1 (en) 2021-07-21
CN112771850A (zh) 2021-05-07
KR20210069683A (ko) 2021-06-11
BR112021006256A2 (pt) 2021-07-06
MX2021003841A (es) 2021-12-10

Similar Documents

Publication Publication Date Title
KR102537087B1 (ko) 3d 보조 데이터를 사용한 모션 추정
KR102608572B1 (ko) 포인트 클라우드 코딩에서의 개선된 속성 지원
US11575886B2 (en) Bitstream signaling of error mitigation in sub-picture bitstream based viewport dependent video coding
US11146809B2 (en) Adaptive interpolation filter
US11877006B2 (en) Intra-prediction using a cross-component linear model in video coding
KR102562209B1 (ko) 포인트 클라우드 코딩에서의 효율적인 패치 회전
CN114503164A (zh) 基于视频的点云压缩(v-pcc)分量同步
WO2020069652A1 (en) Candidate mv construction method for hmvp mode
CN110958452B (zh) 视频解码方法及视频解码器
RU2806278C2 (ru) Устройство и способ кодирования видео

Legal Events

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