KR20230003148A - 최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체 - Google Patents

최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체 Download PDF

Info

Publication number
KR20230003148A
KR20230003148A KR1020227041696A KR20227041696A KR20230003148A KR 20230003148 A KR20230003148 A KR 20230003148A KR 1020227041696 A KR1020227041696 A KR 1020227041696A KR 20227041696 A KR20227041696 A KR 20227041696A KR 20230003148 A KR20230003148 A KR 20230003148A
Authority
KR
South Korea
Prior art keywords
point
data
code
current
current layer
Prior art date
Application number
KR1020227041696A
Other languages
English (en)
Inventor
슈아이 완
푸쩡 양
리후이 양
저씽 쑨
Original Assignee
광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 filed Critical 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드
Publication of KR20230003148A publication Critical patent/KR20230003148A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/75Determining position or orientation of objects or cameras using feature-based methods involving models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

본 출원의 실시예는 최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체를 개시하고, 상기 방법은, 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계; 모튼 코드 집합 및 제1 거리 임계값에 따라, 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계; 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계; 현재 층 데이터의 모튼 코드에 따라, 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계; 이웃 영역에서, 현재 층 데이터의 최근접 이웃 포인트 집합을 얻는 단계; 및 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 현재 층 데이터의 검색 포인트를 결정하고, 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정하는 단계 - 제2 노드 집합은 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 를 포함한다.

Description

최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체
관련 출원의 상호 참조
본 출원은 출원 번호가 202010366795.3이고, 출원일이 2020년 4월 30일인 중국 특허 출원에 기반하여 제출하였고, 상기 중국 특허 출원의 우선권을 주장하는 바, 상기 중국 특허 출원의 모든 내용은 참조로서 본 출원에 인용된다.
본 출원은 비디오 인코딩 분야에 관한 것으로, 최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체에 관한 것이지만 이에 한정되지 않는다.
관련 기술에 있어서, 포인트 클라우드 속성 상세 레벨(Level of Detail, LOD)이 분할된 후, 한 층의 LOD 를 분할 완료할 때마다, 현재의 LOD 층에 대해 한 회의 최근접 이웃 검색을 수행한다. 검색 방법은, 모튼 코드에 따라 오름순으로 배열된 집합의 경우, 현재 포인트의 모튼 코드보다 큰 첫 번째 모튼 코드에 대응되는 포인트를 검색한 다음, 상기 포인트에 대응되는 인덱스 주위를 검색한 다음; 각 포인트와 현재 포인트의 거리를 계산함으로써, 세 개의 최근접 포인트를 얻는다.
그러나, 모튼 코드는 두 개의 포인트 간의 공간 거리를 잘 반영하지 못하기 때문에, 모튼 코드는 주기적인 점프 포인트가 존재한다. 그러나 모튼 코드가 인접해도 공간 위치의 근접함을 보장할 수 없으므로, 상기 첫 번째 포인트의 모튼 코드 주위에서 최근접 이웃을 찾는 것은 정확하지 않고; 또한, 검색 범위의 크기가 상이함에 따라, 성능 및 효율의 변화가 비교적 크므로, 최근접 포인트를 적응적으로 검색할 수 없어, 검색 정확도가 떨어지는 것을 초래한다.
본 출원의 실시예는 최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체를 제공하고, 검색의 정확도 및 성공률을 향상시킬 수 있다.
본 출원의 기술방안은 아래와 같이 구현될 수 있다.
본 출원의 실시예는 최근접 이웃 검색 방법을 제공하고, 인코더에 적용되고,
검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계;
상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계;
상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계;
상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하는 단계; 및
상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정하는 단계 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 를 포함한다.
본 출원의 실시예는 최근접 이웃 검색 방법을 제공하고, 디코더에 적용되고, 상기 방법은,
검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계;
상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계;
상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계;
상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하는 단계; 및
상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정하는 단계 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 를 포함한다.
본 출원의 실시예는 인코더를 제공하고,
상기 인코더는, 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하도록 구성된 제1 획득 유닛;
상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻도록 구성된 제1 분할 유닛;
상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻도록 구성된 제1 시프트 유닛; 및
상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하고; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하며; 상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 하도록 구성된 제1 결정 유닛을 포함한다.
본 출원의 실시예는 디코더를 제공하고,
상기 디코더는, 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하도록 구성된 제2 획득 유닛;
상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻도록 구성된 제2 분할 유닛;
상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드를 얻도록 구성된 제2 시프트 유닛; 및
상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하고; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하며; 상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 하도록 구성된 제2 결정 유닛을 포함한다.
본 출원의 실시예는 인코더를 더 제공하고, 상기 인코더는 제1 메모리 및 제1 프로세서를 포함하고,
상기 제1 메모리는 상기 제1 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하도록 구성되고;
상기 제1 프로세서는 상기 컴퓨터 프로그램을 작동할 경우, 인코더 측에서 전술한 최근접 이웃 검색 방법을 실행하도록 구성된다.
본 출원의 실시예는 디코더를 더 제공하고, 상기 디코더는 제2 메모리 및 제2 프로세서를 포함하고,
상기 제2 메모리는 상기 제2 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하도록 구성되고;
상기 제2 프로세서는 상기 컴퓨터 프로그램을 작동할 경우, 디코더 측에서 전술한 최근접 이웃 검색 방법을 실행하도록 구성된다.
본 출원의 실시예는 컴퓨터 판독 가능한 저장 매체를 제공하고, 상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되고, 상기 컴퓨터 프로그램이 제1 프로세서에 의해 실행될 경우 인코더 측에서 전술한 최근접 이웃 검색 방법을 구현하거나, 제2 프로세서에 의해 실행될 경우 디코더 측에서 전술한 최근접 이웃 검색 방법을 구현한다.
도 1은 본 출원의 일 예시적 실시예에서 제공한 G-PCC 인코딩의 흐름 블록도이다.
도 2는 본 출원의 일 예시적 실시예에서 제공한 G-PCC 디코딩의 흐름 블록도이다.
도 3은 본 출원의 일 예시적 실시예에서 제공한 최근접 이웃 검색 방법의 흐름 예시도이다.
도 4는 본 출원의 일 예시적 실시예에서 제공한 초기 우측 이동 비트수를 결정하는 흐름 예시도이다.
도 5는 본 출원의 일 예시적 실시예에서 제공한 현재 노드와 이웃 노드의 공간 관계 예시도이다.
도 6은 본 출원의 일 예시적 실시예에서 제공한 인코더의 구성 구조 예시도이다.
도 7은 본 출원의 일 예시적 실시예에서 제공한 인코더의 구체적인 하드웨어 구조 예시도이다.
도 8은 본 출원의 일 예시적 실시예의 디코더의 구성 구조 예시도이다.
도 9는 본 출원의 일 예시적 실시예에서 제공한 디코더의 구체적인 하드웨어 구조 예시도이다.
아래에, 본 출원의 일 예시적인 실시예에서의 도면을 결합하여 본 출원의 일 예시적인 실시예에서의 기술방안을 명확하고 완전하게 설명한다.
본 출원의 일 예시적인 실시예는 최근접 이웃 검색 방법을 제안하고, 상기 방법은 전면 카메라 또는 후면 카메라 기능을 구비한 모바일 기기에 적용되며, 상기 모바일 기기는 다양한 형태로 구현될 수 있다. 예를 들어, 본 출원의 일 예시적인 실시예에서 설명한 모바일 기기는, 휴대폰, 태블릿, 핸드헬드, 개인 휴대 정보 단말기(Personal Digital Assistant, PDA) 등을 포함할 수 있다. 또한, 상기 방법에서 구현된 기능은 모바일 기기에서의 프로세서에 의해 프로그램 코드를 호출하여 구현될 수 있으며, 물론 프로그램 코드는 컴퓨터 저장 매체에 저장될 수 있으며, 이로부터 알다시피, 상기 모바일 기기는 적어도 프로세서 및 저장 매체를 포함한다. 포인트 클라우드 G-PCC 인코더 프레임에서, 3차원 이미지 모델을 입력하는 포인트 클라우드를 slice로 분할한 후, 각 slice에 대해 독립적인 인코딩을 수행한다.
도 1을 참조하면, 관련 기술방안에서 제공한 G-PCC 인코딩의 흐름 블록도이다. 도 1에 도시된 G-PCC 인코딩의 흐름 블록도에 있어서, 포인트 클라우드 인코더(Encoder)에 적용되고, 인코딩될 포인트 클라우드 데이터의 경우, 먼저 slice 분할을 통해, 포인트 클라우드 데이터를 복수 개의 slice로 분할한다. 각 slice에 있어서, 포인트 클라우드의 기하학적 정보 및 각 포인트 클라우드에 대응되는 속성 정보는 분리되어 인코딩된다. 기하학적 인코딩 과정에 있어서, 먼저 기하학적 정보에 대해 좌표 전환을 수행하여, 포인트 클라우드로 하여금 모두 하나의 bounding box(포위 상자)에 포함되도록 한 다음, 다시 양자화를 수행하고, 이 단계의 양자화는 주로 스케일링의 역할을 하며, 양자화 라운드 업으로 인해, 일부의 포인트 클라우드의 기하학적 정보가 동일하기 때문에, 파라미터에 기반하여 중복 포인트를 제거할지 여부를 결정하고, 양자화 및 중복 포인트 제거의 과정을 복셀화 과정으로도 지칭된다. 다음 bounding box에 대해 팔진트리 분할을 수행한다. 팔진트리에 기반한 기하학적 정보 인코딩 플로우에서, 포위 상자를 8등분하여 8 개의 서브 입방체로 분할하고, 비어있지 않은(포인트 클라우드에서의 포인트를 포함함) 서브 입방체를 계속하여 8등분하고, 분할하여 얻은 잎 노드가 1×1×1의 단위 입방체일 때 분할을 멈추며, 잎 노드에서의 포인트에 대해 산술적으로 인코딩하여, 이진법의 기하 비트 스트림, 즉 기하 코드 스트림을 생성한다. 삼각 패치 세트(triangle soup, trisoup)에 기반한 기하학적 정보 인코딩 과정에서, 마찬가지로 먼저 팔진트리 분할을 수행하지만, 팔진트리에 기반한 기하학적 정보 인코딩과 달리, 상기 trisoup은 포인트 클라우드를 단계별로 변의 길이가 1×1×1인 단위 입방체로 나눌 필요가 없고, block(블록) 변의 길이가 W일 경우 분할을 멈추며, 각 block에서 포인트 클라우드의 분포에 의해 형성된 표면에 기반하여, 상기 표면과 block의 12 개의 변에 의해 생성된 vertex(교점)을 얻고, vertex에 대해 산술적으로 인코딩(교점에 기반하여 표면 피팅을 수행)하여, 이진 기하 비트 스트림, 즉 기하 코드 스트림을 생성한다. Vertex는 또한 기하학적 재구성 과정을 구현하기 위한 것이고, 재구성의 집합 정보는 포인트 클라우드의 속성을 인코딩할 경우 사용된다.
기하학적 인코딩이 완료된 후, 기하학적 정보에 대해 재구성을 수행한다. 현재, 속성 인코딩은 주로 색상 정보에 대해 수행된다. 속성 인코딩 과정에 있어서, 먼저 색상 정보(즉 속성 정보)를 RGB 색상 공간으로부터 YUV 색상 공간으로 전환한다. 다음, 재구성된 기하학적 정보를 이용하여 포인트 클라우드를 재착색하여, 인코딩되지 않은 속성 정보와 재구성된 기하학적 정보가 대응되도록 한다. 색상 정보 인코딩 과정에서, 주로 두 가지의 변환 방법이 존재하고, 하나는 레벨 디테일(Level of Detail, LOD) 분할에 의존한 거리에 기반한 향상 변환이고, 현재 LOD 분할은 주로 거리에 기반한 LOD 분할(주로 Category1 시퀀스) 및 고정 샘플링 비율에 기반한 LOD 분할(주로 Category3 시퀀스) 등 두 가지 방식으로 분할되며; 다른 하나는 영역 적응 계층 변환(Region Adaptive Hierarchal Transform, RAHT)을 직접 수행하는 것이다. 여기서, 이 두 가지 방법 모두는 색상 정보를 공간 도메인에서 주파수 도메인으로 전환하고, 변환을 통해 고주파 계수 및 저주파 계수를 얻고, 마지막으로 계수에 대해 양자화(즉 양자화 계수)를 수행하고, 마지막으로, 팔진트리 분할 및 표면 피팅을 거친 기하학적 인코딩 데이터와 양자화 처리 속성 인코딩 데이터에 대해 slice 합성을 수행한 후, 순차적으로 각 block의 vertex 좌표를 인코딩(즉 산술 인코딩)하여, 이진법의 속성 비트 스트림, 즉 속성 코드 스트림을 생성한다.
도 2를 참조하면, 관련 기술방안에서 제공한 G-PCC 디코딩의 흐름 블록도이다. 도 2에 도시된 G-PCC 디코딩의 흐름 블록도에 있어서, 포인트 클라우드 디코더(Decoder)에 적용되고, 획득된 이진법 코드 스트림의 경우, 먼저 이진법 코드 스트림에서의 기하 비트 스트림 및 속성 비트 스트림에 대해 각각 독립적인 디코딩을 수행한다. 기하 비트 스트림에 대해 디코딩을 수행할 경우, 산술 디코딩-팔진트리 합성-표면 피팅-기하 재구성-역좌표 전환을 통해, 포인트 클라우드의 기하학적 정보를 얻고; 속성 비트 스트림에 대해 디코딩을 수행할 경우, 산술 디코딩-역양자화-LOD에 기반한 향상 역변환 또는 RAHT에 기반한 역변환-역색상 전환을 통해, 포인트 클라우드의 속성 정보를 얻고, 기하학적 정보 및 속성 정보에 기반하여 인코딩될 포인트 클라우드 데이터의 3차원 이미지 모델을 환원한다.
관련 기술 방안에 있어서, 모튼 코드에 기반하여 LOD 분할을 수행하는 방안을 제안한다. 모든 포인트를 순회 검색하여 LOD 분할을 수행하는 원래의 방안에 비해, 모튼 코드에 기반하여 LOD를 분할하는 방안은 계산 복잡성을 저하시킬 수 있다.
구체적으로, 모튼 코드는 z-order code로도 지칭되며, 이는 인코딩 순서가 공간 z 순서이기 때문이다. 먼저 벡터
Figure pct00001
로 입력 포인트 클라우드에서의 포인트를 표시하고, 벡터
Figure pct00002
Figure pct00003
와 관련된 모튼 코드이고, 여기서,
Figure pct00004
이다. 모튼 코드를 계산하는 구체적인 과정 설명은 아래와 같고, 각 성분에 대해 d 비트 이진수로 표시되는 3차원 좌표에 대해, 세 개의 좌표 성분의 표시는 아래와 같이 구현된다.
Figure pct00005
,
Figure pct00006
,
Figure pct00007
.
여기서,
Figure pct00008
은 각각
Figure pct00009
,
Figure pct00010
,
Figure pct00011
의 가장 높은 비트(
Figure pct00012
)로부터 가장 낮은 비트(
Figure pct00013
)까지에 대응되는 이진값이다. 모튼 코드
Figure pct00014
Figure pct00015
,
Figure pct00016
,
Figure pct00017
의 가장 높은 비트로부터 시작하여, 가장 낮은 비트까지
Figure pct00018
를 순차적으로 교차 배열하여 얻은 것이고,
Figure pct00019
의 계산 공식(1)은 아래와 같다.
Figure pct00020
(1)
여기서,
Figure pct00021
은 각각
Figure pct00022
의 가장 높은 비트(
Figure pct00023
)로부터 가장 낮은 비트(
Figure pct00024
)까지의 값이다. 포인트 클라우드에서 각 포인트의 모튼 코드
Figure pct00025
을 얻은 후, 포인트 클라우드에서의 포인트를 모튼 코드의 오름순으로 배열한다.
본 출원의 실시예는 최근접 이웃 검색 방법을 제공하고, 인코더(포인트 클라우드 인코더일 수도 있음)거나 디코더(포인트 클라우드 디코더일 수도 있음)에 적용된다.
아래에 첨부 도면을 결합하여 본 출원의 각 실시예에 대해 상세히 설명한다.
도 3을 참조하면, 본 출원의 실시예에서 제공한 분할 방법의 흐름 예시도를 도시한다. 도 3에 도시된 바와 같이, 인코더 또는 디코더에 적용되고, 상기 방법은 아래와 같은 단계를 포함할 수 있다.
단계 S101에 있어서, 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득한다.
설명해야 할 것은, 포인트 클라우드에서, 포인트 클라우드 데이터는 포인트 클라우드에서의 모든 포인트일 수 있고, 포인트 클라우드에서의 일부 포인트일 수도 있으며, 이러한 포인트는 공간적으로 상대적으로 집중된다.
더 설명해야 할 것은, 본 출원의 실시예는 lifting 및 Predicting 속성 변환에서 LOD의 생성 과정에 대해 개진을 수행하고; 다시 말해, lifting 또는 Predicting 변환 전, 상기 분할 방법을 사용하여 LOD 층을 분할해야 한다. 구체적으로, 상기 분할 방법은 도 1에 도시된 G-PCC 인코딩의 흐름 블록도에 적용되어 LOD 부분을 생성할 수 있고, 도 2에 도시된 G-PCC 디코딩의 흐름 블록도에 적용되어 LOD 부분을 생성할 수도 있으며, 또한 동시에 도 1에 도시된 G-PCC 인코딩의 흐름 블록도에 적용되어 LOD 부분을 생성하고 도 2에 도시된 G-PCC 디코딩의 흐름 블록도에 적용되어 LOD 부분을 생성할 수도 있으며, 본 출원의 실시예는 이에 대해 구체적으로 한정하지 않는다.
본 출원의 실시예에 있어서, 검색될 포인트 클라우드 데이터는 최근접 이웃 포인트의 포인트 클라우드 데이터를 결정해야 하는 것으로 이해할 수 있고, 예를 들어, 포인트 클라우드 데이터에 대해 압축 인코딩을 수행하는 과정에서, 먼저 상기 포인트 클라우드 데이터의 모튼 코드 집합을 결정한다. 일부 가능한 구현 방식에 있어서, 먼저, 검색될 포인트 클라우드 데이터를 획득하고; 예를 들어, 3차원 영상을 형성하기 위한 포인트 클라우드 데이터를 획득한다. 다음, 상기 포인트 클라우드 데이터의 모튼 코드를 결정하고; 예를 들어, 먼저 포인트 클라우드 데이터의 이진법 인코딩 데이터 스트림을 결정한 다음, 상기 이진법 인코딩 데이터 스트림에 기반하여, 포인트 클라우드 데이터의 모튼 코드를 결정할 수 있다. 마지막으로, 상기 포인트 클라우드 데이터의 모튼 코드를 오름순에 따라 배열하여, 복수 개의 모튼 코드를 포함하는 상기 모튼 코드 집합을 얻는다. 다른 실시예에 있어서, 포인트 클라우드 데이터의 모튼 코드를 내림순에 따라 배열하여, 복수 개의 모튼 코드를 포함하는 상기 모튼 코드 집합을 얻을 수도 있으며; 또한 포인트 클라우드 데이터의 모튼 코드를 임의의 특정된 순서(예를 들어, 임의로 설정된 중간이 가장 크고, 양단으로 갈수록 순차적으로 줄어드는 순서)에 따라 배열하여, 모튼 코드 집합을 얻을 수 있다. 다시 말해, 모튼 코드 집합에서의 모튼 코드의 배열에는 순서가 존재한다.
이로써, 검색될 포인트 클라우드 데이터를 획득한 후, 먼저 검색될 포인트 클라우드 데이터에서 포인트의 모튼 코드를 계산하여, 모튼 코드 집합을 얻음으로써, 후속 반복 연산에서, 모튼 코드를 이용하여 현재 노드가 부모 노드에 대응되는 이웃 노드를 검색할 수 있는데 편리함으로써, LOD 계층을 분할할 경우 현재 노드를 샘플링 포인트로 사용하여 이웃 노드를 예측하는데 유리하다.
단계 S102에 있어서, 모튼 코드 집합 및 제1 거리 임계값에 따라, 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는다.
여기서, 상기 제1 거리 임계값에 따라, 모튼 코드 집합으로부터 현재 포인트까지의 거리가 제1 거리 임계값보다 작은 포인트를 선택하여, 현재 층 데이터를 얻고; 한 층의 데이터를 분할할 때마다, 제1 거리 임계값이 점차 커지고, 즉 현재 층 데이터의 다음 층 데이터를 분할할 경우 사용되는 제1 거리 임계값은 현재 층 데이터를 분할할 경우 사용되는 제1 거리 임계값보다 크다. 즉, 현재 층 데이터의 다음 층 데이터의 밀도는 현재 층 데이터의 밀도보다 작다.
일부 가능한 구현 방식에 있어서, 먼저, 모튼 코드 집합에 따라, 적어도 첫 번째 모튼 코드에 대응되는 포인트를 포함하는 제2 집합을 결정한다.
예를 들어, 오름순에 따라 배열된 모튼 코드 집합에서의 첫 번째 모튼 코드에 대응되는 포인트를, 제2 집합에서의 포인트로 사용한다.
다음, 포인트 클라우드 데이터에서 현재 처리되는 현재 포인트와 제2 집합에서의 포인트의 거리가 상기 제1 거리 임계값보다 작거나 같으면, 현재 포인트를 제1 집합에 넣는다.
설명해야 할 것은, 초기일 경우, 제1 집합을 빈 집합으로 초기화하고; 포인트 클라우드 데이터에서 현재 처리되는 현재 포인트와 제2 집합에서의 포인트의 거리가 제1 거리 임계값보다 작거나 같으면, 현재 포인트를 상기 제1 집합에 넣는다. 즉, 초기의 제1 집합은 빈 집합이다.
예를 들어, 모튼 코드 집합으로부터 현재 포인트와 비교적 가까운 포인트를 결정하고, 즉 얻은 제1 집합에서의 포인트의 밀집도는 비교적 크다. 모튼 코드 집합에서 두 번째에 배열된 모튼 코드에 대응되는 포인트와 제2 집합에서 모든 포인트의 거리를 판단하고, 어느 한 거리가 제1 거리 임계값보다 작거나 같으면, 현재 포인트를 제1 집합에 넣는다.
다음, 현재 포인트와 제2 집합에서의 포인트의 거리가 제1 거리 임계값보다 크면, 현재 포인트를 제2 집합에 넣는다.
하나의 구체적인 예에 있어서, 모튼 코드의 순서에 따라 포인트를 순회하고, 현재 포인트(P)를 순회할 경우, P와 제2 집합O(k)에서의 포인트의 거리가 제1 거리 임계값보다 작거나 같은지 여부를 판단하고, 작거나 같으면, P를 제1 집합(L(k))에 넣고, 그렇지 않으면 O(k)에 넣는다. 여기서, P와 O(k)에서의 포인트의 거리를 판단할 경우, O(k)에서의 포인트가 128개보다 크면, O(k)에서 끝부분에 위치하는 128개의 포인트만을 사용하여 포인트(P)와 이러한 포인트의 거리가 제1 거리 임계값보다 큰지 여부를 판단하여, 상기 포인트(P)를 제1 집합에 넣을지 제2 집합에 넣을지를 결정하고; 이러한 방식으로, 제2 집합에서 뒤에 배열된 기설정된 개수의 포인트와 현재 포인트의 거리를 판단하는 것을 통해, 상기 현재 포인트를 제1 집합에 넣어야 하는지 제2 집합에 넣어야 하는지를 결정하여, 복잡성을 저하시키고, 제2 집합에서 뒤에 배열된 포인트는 현재 포인트의 모튼 코드와 더욱 가깝기 때문에, 이러한 방식으로 얻은 최종적인 이웃 영역이 최근접 이웃 포인트를 포함할 가능성이 더욱 높다.
마지막으로, 제2 집합에서 현재 포인트와의 거리가 제2 거리 임계값보다 작거나 같은 포인트를 결정하여, 현재 층 데이터를 얻는다.
일부 가능한 구현 방식에 있어서, 제2 집합에는 복수 개의 포인트가 포함될 수 있고, 포인트 클라우드 데이터에서 현재 포인트와 제2 집합에서의 포인트의 거리가 제1 거리 임계값보다 작은 포인트를, 제1 층 데이터로 사용하고; 다음, 포인트 클라우드 데이터에서 나머지 포인트와 업데이트된 제2 집합에서의 포인트 간의 거리를 순차적으로 순회하여, 거리가 제2 거리 임계값보다 작은 포인트를, 제2 층 데이터로 사용하여, 재차 업데이트된 제2 집합을 얻으며; 다음, 포인트 클라우드 데이터에서 나머지 포인트와 재차 업데이트된 제2 집합에서의 포인트 간의 거리를 순차적으로 순회하여, 거리가 다른 거리 임계값(상기 다른 거리 임계값은 제2 거리 임계값보다 큼)보다 작은 포인트를, 제3 층 데이터로 사용하며; 포인트 클라우드 데이터를 다층 데이터로 나눌때까지 계속된다.
단계 S103에 있어서, 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는다.
여기서, 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하는 것은, 상기 예측 데이터의 모튼 코드에 대응되는 범위를 몇배로 확대한 것으로 이해할 수 있다.
설명해야 할 것은, 제1 기설정된 비트수는 기설정된 음이 아닌 정수이다. 여기에는 0, 즉 이동하지 않는 경우가 포함된다. 예를 들어, 현재 층이 첫 번째 층일 경우, 제1 기설정된 비트수는 0일 수 있고, 본 출원의 실시예는 이에 대해 한정하지 않는다.
예시적으로, 제1 기설정된 비트수는 3이고, 즉 확대이고, 본 출원의 실시예는 이에 대해 한정하지 않고; 따라서, 제1 부모 노드 집합은 우측으로 이동한 이후의 예측 데이터의 모튼 코드 집합이다.
이때, 제2 노드 집합은 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합이다. 예측 데이터는 현재 층 데이터에 대응되는 예측 포인트이고, 현재 층 데이터는 예측된 포인트이다.
본 출원의 일부 실시예에 있어서, 현재 층이 첫 번째 층이 아닌 경우, 제1 기설정된 비트수를 통해, 제1 부모 노드 집합을 얻고; 이전 층 데이터의 포인트는 포인트 클라우드 데이터에서 계층화된 데이터를 제외한 예측 데이터가 기설정된 것이다. 예를 들어, 3이며, 본 출원의 실시예는 이에 대해 한정하지 않는다.
본 출원의 실시예에 있어서, 인코더가 인코딩될 경우, 인코더는 제1 기설정된 비트수를 코드 스트림에 기입해야 한다. 여기서, 제1 기설정된 비트수는 기설정된 음이 아닌 정수이다.
여기서, 제1 기설정된 비트수를 코드 스트림에서의 파라미터 세트 데이터 유닛에 기입할 수 있다.
디코더를 디코딩하는 과정에서, 코드 스트림을 파싱하여, 제1 기설정된 비트수를 얻을 경우, 먼저 코드 스트림에서의 파라미터 세트 데이터 유닛을 파싱하여, 제1 기설정된 비트수를 얻어야 한다. 제1 기설정된 비트수는 음이 아닌 정수이다.
본 출원의 실시예에 있어서, 파라미터 세트 데이터 유닛은 디코딩 코드 스트림의 일부 또는 전부 데이터 유닛이 사용하는 파라미터를 포함한다.
본 출원의 실시예에 있어서, 파라미터 세트 데이터 유닛은 시퀀스 파라미터 세트 데이터 유닛(Sequence Parameter Set)이다.
본 출원의 실시예에 있어서, 파라미터 세트 데이터 유닛에는 포인트 클라우드 데이터의 속성 정보가 포함되고, 여기서, 속성 정보는 포인트 클라우드 데이터에서 포인트와 관련된 스칼라 또는 벡터 속성이다. 즉 파라미터 세트 데이터 유닛은 속성 파라미터 세트(Attribute parameter set)일 수 있다.
본 출원의 실시예에 있어서, 파라미터 세트 데이터 유닛에는 포인트 클라우드 데이터의 기하학적 정보가 포함되고, 여기서, 기하학적 정보는 포인트 클라우드 데이터에서 포인트와 관련된 데카르트 좌표이다. 즉 파라미터 세트 데이터 유닛은 기하학적 파라미터 세트(Geometry parameter set)일 수 있다.
본 출원의 일부 실시예에 있어서, 제1 기설정된 비트수를 획득하는 과정은 또한, 기설정된 간격에 따라 모튼 코드 집합에 대해 샘플링을 수행하여, 샘플링 포인트 집합을 얻는 단계 - 상기 모튼 코드 집합은 전부 또는 일부 상기 예측 데이터의 모튼 코드를 포함함 - ; 샘플링 포인트 집합에서의 포인트의 모튼 코드 비트를 n비트만큼 우측으로 이동하여, 샘플링 부모 노드 집합을 얻는 단계 - 각 샘플링 부모 노드는 하나의 우측으로 이동된 이후의 모튼 코드에 대응됨 - ; 샘플링 부모 노드 집합에 대응되는 영역에서, 샘플링 포인트를 제외한 이웃 포인트를 결정하는 단계; 및 샘플링 부모 노드 집합에서의 이웃 포인트의 평균 개수가 기설정된 평균값 임계값보다 크면, n 비트수를 제1 기설정된 비트수의 값으로 결정 - n은 음이 아닌 정수임 - 하는 단계를 포함할 수 있다.
여기서, 샘플링 포인트 집합에서 샘플링 포인트의 개수는 H개이고, H는 0보다 큰 양의 정수이고, 본 출원의 실시예는 이에 대해 한정하지 않는다.
본 출원의 일부 실시예에 있어서, 배열된 이후의 모튼 코드에 대해 샘플링을 수행하여, K 개의 샘플링 포인트의 모튼 코드를 얻고; 여기서, K는 0보다 큰 정수이고; K 개의 샘플링 포인트의 모튼 코드에 대해 우측 이동 처리를 수행하여, 모튼 코드가 우측으로 이동된 이후 대응되는 K 개의 샘플링 포인트를 얻고; 모튼 코드가 우측으로 이동된 이후 대응되는 K 개의 샘플링 포인트가 평균 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 조건을 구비하는지 여부를 판단하고; 모튼 코드가 우측으로 이동된 이후 대응되는 K 개의 샘플링 포인트가 평균 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 조건을 구비하지 않으면, 계속하여 K 개의 샘플링 포인트의 모튼 코드에 대해 우측 이동 처리를 수행하는 단계를 실행하고; 모튼 코드가 우측으로 이동된 이후 대응되는 K 개의 샘플링 포인트가 평균 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 조건을 구비하면, K 개의 샘플링 포인트의 우측 이동 비트수를 획득하고, 우측 이동 비트수를 분할될 포인트 클라우드에서 포인트의 모튼 코드의 초기 우측 이동 비트수로 결정하며; 여기서, 초기 우측 이동 비트수는 분할될 포인트 클라우드에서 포인트의 모튼 코드가 0 번째 LOD 층에 대응되는 우측 이동 비트수(N0)를 표시한다.
다시 말해, LOD 층을 초기 분할할 경우, 즉 0 번째 LOD 층을 분할할 경우, 먼저 배열된 이후의 모튼 코드에 대해 샘플링을 수행하는 것을 통해, K 개의 샘플링 포인트의 모튼 코드를 얻은 다음; 모튼 코드로 하여금 우측 이동된 이후 대응되는 이후 대응되는 K 개의 샘플링 포인트가 평균 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 조건을 구비할 때까지, 이 K 개의 샘플링 포인트의 모튼 코드에 대해 지속적인 우측 이동 처리를 수행하고, 마지막으로, 얻은 우측 이동 비트수를 초기 우측 이동 비트수(N0)로 사용한다.
예시적으로, 도 4에 도시된 바와 같이, 아래와 같이 구현된다.
단계 S1에 있어서, 포인트 클라우드를 모튼 코드의 오름순에 따라 배열한 다음, 모튼 코드로 배열된 인덱스를 샘플링한다.
예를 들어, H가 100이라고 가정할 때, 등간격으로 100 개의 포인트를 선택하여 샘플링 포인트로 사용한다.
단계 S2에 있어서, 초기 우측 이동 비트수를 0으로 설정한다.
여기서, 초기 우측 이동 비트수 n을 0으로 설정한다.
단계 S3에 있어서, 샘플링 포인트의 모튼 코드를 매회 우측으로 3 비트 이동한다.
여기서, 초기 우측 이동 비트수를 n=0으로 설정한 다음, 샘플링 포인트를 한 층마다 우측으로 3비트 이동한다.
단계 S4에 있어서, 우측으로 이동된 이후 모튼 코드에 대응되는 부모 노드에 포함된 이웃 포인트의 개수를 결정한다.
단계 S5에 있어서, 모든 모튼 코드의 이웃 포인트의 개수의 평균값이 1보다 큰지 여부를 결정한다.
여기서, 부모 노드에서의 포인트는, 현재 포인트를 제외한 나머지 포인트를 현재 포인트의 이웃으로 간주한다. 평균값이 1보다 크면, 단계 S6에 진입하고, 이때의 우측 이동 비트수(n)는 초기 우측 이동 비트수(N)이고, 순환 과정을 종료하며; 그렇지 않을 경우, 단계 S3에 진입하며, 계속하여 우측으로 3비트 이동한다.
단계 S6에 있어서, 우측 이동 비트수(n)는 초기 우측 이동 비트수(N)이다.
LOD 층을 분할한 후, 최근접 이웃을 검색할 경우, 예측된 포인트(P)의 경우, O(k)에서 부모 노드의 모튼 코드를 찾을 수 있다. 도 5에 도시된 바와 같이, 블록(701)은 현재 예측된 포인트(P)의 부모 노드이다. 현재 부모 노드의 경우, 26 개의 인접한 이웃 부모 노드가 존재한다. 인접한 부모 노드 및 현재 부모 노드의 좌표 차이값을 통해 하나의 검색 테이블을 구축하고, 이 검색 테이블에 따라 인접한 부모 노드의 모튼 코드를 계산하여 얻는다. 이러한 모튼 코드로, O(k)에서 이러한 이웃 모튼 코드에 대응되는 인덱스를 찾을 수 있음으로써, 이러한 인덱스에 대응되는 포인트를 순회하여 예측된 포인트(P)의 최근접 이웃을 찾을 수 있다. 일부 실시예에 있어서, 자체, 공통면, 공통선, 공통 포인트의 27 개의 이웃 부모 노드 외에도, 이웃 부모 노드의 범위는 또한 확장되거나 축소될 수 있다. 이러한 방식으로, 이웃의 개수는 바깥으로 확장될 수 있다. 마찬가지로, 이웃을 선택할 경우, 그중의 일부 이웃을 선택하여 최근접 이웃을 찾을 수도 있다.
단계 S104에 있어서, 현재 층 데이터의 모튼 코드에 따라, 제1 부모 노드 집합에서, 이웃 영역을 결정하고; 이웃 영역에서, 현재 층 데이터의 최근접 이웃 포인트 집합을 결정한다.
여기서, 이웃 영역은 현재 부모 노드 주위의 이웃 영역으로 이해할 수 있고, 이러한 방식으로, 모튼 코드를 통해 이웃 영역을 검색하고, 영역 내의 최근접 이웃 포인트를 정확하게 찾은 전제 하에서, 검색 범위를 축소할 수 있다.
여기서, 각 층의 데이터에 대한 최근접 이웃 포인트 집합을 모두 결정한다. 최근접 이웃 포인트 집합은 특정 데이터양을 포함한 최근접 이웃 포인트일 수 있다. 특정 데이터양의 개수는 본 출원의 실시예는 이에 대해 한정하지 않는다.
예시적으로, 특정 데이터양에는 3 개가 포함된다.
일부 가능한 구현 방식에 있어서, 먼저, 이웃 영역에서의 포인트와 현재 층 데이터에서의 포인트 간의 거리를 결정하여, 거리 집합을 얻고; 예를 들어, 현재 층 데이터에 M 개의 포인트가 존재하면, M 개 포인트와 이웃 영역에서의 포인트의 거리를 결정하여, 거리 집합을 얻는다. 다음, 거리 집합으로부터, 거리가 제3 거리 임계값보다 작은 타깃 거리를 결정하고; 일부 실시예에 있어서, 제3 거리 임계값을 비교적 작은 값으로 설정할 수 있고, 상기 제3 거리 임계값은 제1 거리 임계값보다 작다. 하나의 구체적인 예에 있어서, 거리 집합으로부터 거리가 가장 작은 K 개의(K는 0보다 큰 정수임) 타깃 거리를 결정할 수 있다. 마지막으로, 상기 타깃 거리에 대응되는 포인트에 따라, 현재 포인트의 최근접 이웃 포인트 집합을 결정한다. 예를 들어, 이 N 개의 타깃 거리에 대응되는 포인트를, 현재 포인트의 최근접 이웃 포인트 집합으로 사용한다. 또한, 이 N 개의 타깃 거리에 대응되는 포인트에서 더욱 작은 복수 개의 포인트를 결정하여, 현재 포인트의 최근접 이웃 포인트 집합으로 사용할 수 있다. 예를 들어, 상기 타깃 거리에 대응되는 포인트로부터, 기설정된 개수를 만족하는 최소 거리값에 대응되는 포인트를 결정하여, 상기 현재 포인트의 최근접 이웃 포인트 집합을 얻는다. 여기서, M은 0보다 큰 양의 정수이다.
하나의 구체적인 예에 있어서, 타깃 거리에 대응되는 포인트로부터, 특정된 개수의 최소 거리값에 대응되는 포인트를 결정하여, 현재 포인트의 최근접 이웃 포인트 집합을 얻고; 이로써, 정확하게 최근접 이웃 포인트를 찾음으로써, 포인트 클라우드 데이터에 대한 인코딩 성능을 향상시킨다.
일부 실시예에 있어서, 거리 집합에 거리가 제3 거리 임계값보다 작은 타깃 거리가 존재하지 않으면, 제2 집합으로부터, 기설정된 위치에 배열된 포인트를 현재 포인트의 최근접 이웃 포인트 집합으로 결정한다. 예를 들어, 현재 포인트와 가장 가까운 곳에 배열된 앞뒤 K 개의 포인트를 최근접 이웃 포인트 집합으로 사용한다.
본 출원의 일 예시적 실시예에 있어서, 현재 층 데이터의 모튼 코드를 통해 이웃 영역을 검색하고, 이웃 영역을 정확하게 찾은 전제 하에서, 최근접 이웃 포인트를 검색하는 범위를 축소함으로써, 거리를 계산하는 횟수를 줄여, 비교적 좋은 인코딩 성능 및 효율을 얻는다.
단계 S105에 있어서, 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 현재 층 데이터의 검색 포인트를 결정하고, 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정하고; 제2 노드 집합은 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합이다.
본 출원의 실시예에 있어서, 현재 층 데이터의 모튼 코드 및 제1 부모 노드 집합에 따라, 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하지 않은 경우, 제2 노드 집합에 따라, 현재 층 데이터의 검색 포인트를 결정할 수 있고, 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행함으로써, 후보 포인트 집합을 결정하고, 후보 포인트 집합으로부터, 현재 포인트와 가장 가까운 K 개의 포인트를, 최근접 이웃 포인트 집합으로 사용하며; 여기서, 제2 노드 집합은 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합이다. K는 0보다 큰 양의 정수이다.
설명해야 할 것은, 제2 노드 집합은 현재 층에서 획득된 제2 집합이다.
본 출원의 일부 실시예에 있어서, 제2 노드 집합으로부터, 현재 층 데이터의 현재 포인트의 현재 모튼 코드보다 큰 첫 번째 모튼 코드를 결정하고; 첫 번째 모튼 코드에 대응되는 포인트를 검색 포인트로 설정한다.
예시적으로, D0(초기 거리의 임계값) 및 ρ(인접한 LOD 층을 분할할 경우의 거리 임계값 비율)은 각각 사용자가 자체 정의한 초기 파라미터이고, ρ>1이다. I가 모든 포인트의 인덱스를 표시하는 것으로 가정하면, k 번째 반복에서, LODk에서의 포인트는 LOD0층으로부터 LODk-1 번째 층까지에서 최근접 이웃을 찾고, 즉 가장 가까운 포인트를 찾고; k=1, 2, ..., N-1이다. 여기서, N은 LOD 분할의 총 층수이고; k=0일 경우, 0 번째 반복에서, LOD0에서의 포인트는 직접 LOD0에서 최근접 이웃을 찾는다. 구체적인 과정은 아래와 같다.
(1) 초기화 분할 거리 임계값은 임계값은
Figure pct00026
이다.
(2) k 번째 반복일 경우, 집합 L(k)은 k 번째 층 LOD에 속하는 포인트를 저장하고, 집합 O(k)은 LODk 층보다 더욱 세분화된 포인트 집합을 저장한다. 여기서, L(k) 및 O(k)의 계산 과정은 아래와 같다.
먼저, O(k) 및 L(k)는 모두 빈 집합으로 초기화된다.
다음, 각 회의 반복은 집합(I)에 저장된 포인트의 인덱스 순서에 따라 순회한다. 구체적으로, 각 회의 순회는 모두 현재 포인트로부터 집합 O(k)에서 일정 범위 내의 모든 포인트까지의 기하학적 거리를 계산하고, I에서 현재 포인트에 대응되는 모튼 코드에 기반하여, 집합 O(k)에서 현재 포인트에 대응되는 모튼 코드보다 큰 첫 번째 포인트의 인덱스를 검색한 다음, 상기 인덱스의 하나의 검색 범위(SR1) 내에서 검색하고, (여기서, SR1은 모튼 코드에 기반한 검색 범위를 표시하고, 일반적인 값은 8, 16, 64이며; 상기 범위 내에서 현재 포인트와의 거리가 임계값(
Figure pct00027
)보다 작은 포인트를 검색하면, 현재 포인트를 집합 L(k)에 추가하고, 그렇지 않을 경우, 현재 포인트를 집합 O(k)에 추가함);
(3) 각 회의 반복 과정에서, 집합 L(k) 및 O(k)는 각각 계산하며, O(k)에서의 포인트는 집합 L(k)에서의 포인트를 예측하는데 사용된다. 집합 R(k)=L(k)\L(k-1)인 것으로 가정하면, 즉 R(k)는 LOD(k-1)와 LOD(k) 집합이 차이나는 부분의 포인트 집합을 표시한다. 집합 R(k)에 위치한 포인트는 집합 O(k)에서 가장 가까운 h 개의 예측 이웃을 찾는다. 최근접 이웃을 찾는 구체적인 과정은 아래와 같다.
a, 집합 R(k)에서의 포인트(Pi)의 경우, 상기 포인트에 대응되는 모튼 코드는 Mi이다.
b, 집합O(k)에서 현재 포인트(Pi)에 대응되는 모튼 코드(Mi)보다 큰 첫 번째 포인트의 인덱스(j)를 찾는다.
c, 인덱스(j)에 기반하여 집합O(k)에서의 하나의 검색 범위 [j-searchrange, j+ searchrange] 내에서 현재 포인트(Pi)의 최근접 이웃을 찾는다(여기서, searchrange는 하나의 검색 범위를 표시하고, 즉 제1 기설정된 검색 범위의 일반적인 값은 8, 16, 32, 64임).
(4), (1) 내지 (3)의 과정을 집합(I)에서 모든 포인트가 전부 순회될 때까지 지속적으로 반복함으로써, 후보 포인트 집합을 얻고, 이러한 후보 포인트 집합으로부터 예측된 포인트와 가장 가까운 K 개의 포인트를 찾고, 최근접 이웃 포인트 집합으로 사용하며, 즉 K 개의 최근접 이웃 포인트를 얻는다.
다시 말해, 본 출원의 실시예에 있어서, 입력 포인트 클라우드 집합(I)에는 모든 포인트의 인덱스가 저장되고, 첫 번째 LOD 분할의 입력 포인트 클라우드로 사용되며; 알고리즘은 지속적으로 반복되고, k 번째 반복일 경우, 먼저 LOD의 분할을 수행하고, 즉 입력 포인트 클라우드 집합(I)을 L(k) 및 O(k)로 분할한 다음, L(k)에 속한 포인트를 O(k)에서 최근접 이웃 검색을 수행한다. 여기서, O(k)를 다음 반복의 입력 포인트 클라우드 집합으로 사용한다.
이해할 수 있는 것은, 포인트 클라우드 데이터의 모튼 코드에 대해 계층화를 수행하는 것을 통해, 현재 층 데이터를 얻고; 다음, 현재 층 데이터의 모튼 코드에 기반하여 이웃 영역을 결정하고, 상기 이웃 영역에서 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하며; 이러한 방식으로, 현재 층 데이터의 모튼 코드를 통해 이웃 영역을 검색하여, 이웃 영역을 정확하게 찾은 전제 하에서, 최근접 이웃 포인트를 검색하는 범위를 축소하고, 현재 층 데이터의 모튼 코드를 통해 이웃 영역을 검색하지 못했을 경우, 또한 제2 노드 집합에 기반하여 이웃 영역의 검색을 수행하여, 검색 성공률을 향상시킬 수 있다.
본 출원의 일부 실시예에 있어서, 단계 S104의 구현은 디코더에 의해 실행되는 단계 S1041 내지 단계 S1047를 포함할 수 있거나; 인코더에 의해 실행되는 단계 S1041 내지 단계 S1044, 단계 S1046 내지 단계 S1048을 포함할 수 있다. 상기 내용은 다음과 같다.
단계 S1041에 있어서, 현재 층 데이터에서의 현재 포인트가 제1 부모 노드 집합에서 속한 현재 부모 노드를 결정한다.
단계 S1042에 있어서, 현재 부모 노드에 인접한 이웃 부모 노드 집합을 결정하고; 이웃 부모 노드 집합에는 모든 이웃 노드의 부모 노드 또는 일부 이웃의 부모 노드가 포함된다.
단계 S1043에 있어서, 기설정된 검색 테이블, 현재 부모 노드 및 현재 층 데이터의 모튼 코드에 따라, 이웃 부모 노드의 모튼 코드를 결정한다.
단계 S1044에 있어서, 이웃 부모 노드의 모튼 코드에 대응되는 영역을, 이웃 영역으로 결정한다.
본 출원의 실시예에 있어서, 현재 층 데이터는 복수 개의 현재 포인트를 포함하고, 여기서 현재 층 데이터에서의 각 현재 포인트가 제1 부모 노드 집합에서 속한 부모 노드를 결정하고, 상기 현재 부모 노드 주위에 인접한 이웃 부모 노드 집합을 결정한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 하나의 현재 포인트에 대응되는 부모 노드의 인접한 부모 노드는 복수 개가 존재하고, 본 출원의 실시예는 이에 대해 한정하지 않는다.
본 출원의 실시예에 있어서, 이웃 부모 노드 집합은 현재 포인트의 부모 노드에 대응되는 모든 이웃 노드의 부모 노드를 포함할 수 있고, 일부 이웃의 부모 노드일 수도 있으며, 본 출원의 실시예는 이에 대해 한정하지 않는다.
예시적으로, 도 5에 도시된 바와 같이, 블록(701)은 현재 예측된 포인트(P)의 부모 노드이다. 현재 부모 노드의 경우, 26 개의 인접한 이웃 부모 노드가 존재한다. 이웃 부모 노드의 개수는, 자체, 공통면, 공통선, 공통 포인트의 27 개의 이웃 부모 노드 외에도, 이웃 부모 노드의 범위는 또한 확장되거나 축소될 수 있다. 이러한 방식으로, 이웃의 개수는 바깥으로 확장될 수 있다.
본 출원의 실시예에 있어서, 기설정된 검색 테이블이 설정되고, 상기 기설정된 검색 테이블은 현재 부모 노드 및 이웃 부모 노드 집합 사이의 대응 관계를 나타낼 수 있고, 이웃 부모 노드의 모튼 코드를 결정하기 위한 것이다.
일부 실시예에 있어서, 검색 테이블을 구축하는 것은 아래의 여러 가지 방식을 통해 구현될 수 있다.
방식 1에 있어서, 먼저, 이웃 부모 노드의 좌표값과 현재 부모 노드의 좌표값 사이의 차이값을 결정하여, 차이값 집합을 얻는다.
예를 들어, 각 이웃 부모 노드의 3차원 좌표와 현재 부모 노드의 3차원 좌표 사이의 차이값을 결정하여, 차이값 집합을 얻는다.
다음, 차이값 집합 및 이웃 부모 노드 집합과 현재 부모 노드 사이의 소속 관계에 따라, 검색 테이블을 구축한다.
여기서, 소속 관계는 이웃 부모 노드 집합이 현재 부모 노드에 인접함을 나타내기 위한 것이다. 각 차이값은 하나의 이웃 부모 노드에 대응되고, 각 이웃 부모 노드는 모두 소속된 현재 부모 노드가 존재하기 때문에, 이러한 방식으로 검색 테이블을 구축하는 것은, 검색 테이블에서의 차이값 및 기지된 현재 부모 노드의 3차원 좌표에 기반하여, 이웃 부모 노드의 3차원 좌표를 결정할 수 있음으로써, 각 이웃 부모 노드의 모튼 코드를 얻을 수 있다.
방식 2에 있어서, 소속 관계 및 이웃 부모 노드 집합에서의 중심 포인트로부터 현재 부모 노드 중심까지의 거리값에 따라, 검색 테이블을 구축한다.
일부 가능한 구현 방식에 있어서, 이웃 노드의 가중치를 특정된 값으로 수정할 수 있고, 테이블 검색 방법을 사용하여, 알고리즘의 복잡성을 줄일 수 있다. 예를 들어, 각 이웃 포인트의 가중치를 이웃 부모 노드의 중심 포인트로부터 현재 포인트까지의 거리값으로 설정하고; 이를 가중치로 사용하여, 소속 관계와 결합하여 검색 테이블을 구축함으로써, 검색 테이블에서의 거리값 및 현재 부모 노드의 좌표값에 기반하여, 이웃 부모 노드의 3차원 좌표를 얻을 수 있음으로써, 이웃 부모 노드의 모튼 코드를 얻는다.
방식 3에 있어서, 먼저, 이웃 부모 노드의 모튼 코드 및 현재 부모 노드의 모튼 코드에 따라, 이웃 부모 노드와 현재 부모 노드 사이의 해밍 거리 및 모튼 코드 차이값을 결정한다. 다음, 해밍 거리, 모튼 코드 차이값 및 소속 관계에 따라, 검색 테이블을 구축한다. 이로써, 검색 테이블을 구축한 후, 상기 검색 테이블 및 기지된 현재 부모 노드의 좌표값에 기반하여, 이웃 부모 노드의 모튼 코드를 얻을 수 있다.
본 출원의 실시예에 있어서, 기설정된 검색 테이블, 현재 부모 노드 및 현재 층 데이터의 모튼 코드에 따라, 이웃 부모 노드의 모튼 코드를 결정하고; 이웃 부모 노드의 모튼 코드에 대응되는 영역을, 이웃 영역으로 결정한다.
설명해야 할 것은, 이웃 부모 노드의 모튼 코드가 차지하는 영역을, 이웃 영역으로 결정하고; 예를 들어, 먼저, 제2 집합에서, 이웃 부모 노드의 모튼 코드의 배열 번호를 결정한 다음; 배열 번호에 따라, 이웃 부모 노드의 모튼 코드에 대응되는 영역을 결정하고; 마지막으로, 이웃 부모 노드의 모튼 코드가 차지하는 영역에서의 적어도 일부 영역을, 이웃 영역으로 사용한다. 예를 들어, 전체 이웃 부모 노드의 모튼 코드가 차지하는 영역을 이웃 영역으로 사용하거나, 이웃 부모 노드의 모튼 코드가 차지하는 영역의 일부를, 이웃 영역으로 사용하며; 이러한 방식으로, 이웃 영역을 얻은 후 최근접 이웃 포인트를 검색하는 순서는 자체, 공통면, 공통선, 공통 포인트의 순서에 따라 찾는 것일 수 있고, 이 영역 내에 존재하는 복수 개의 이웃 포인트의 경우, 공간 위치의 분포에 따라 선택하고, 공간 분포가 균일한 세 개의 이웃 포인트를 선택하여, 세 개의 이웃 포인트가 예측된 포인트의 동일한 측에 위치하는 것을 방지할 수 있음으로써, 찾은 최근접 이웃 포인트 집합으로 하여금 더욱 정확하도록 한다.
단계 S1045에 있어서, 코드 스트림을 파싱하여, 기설정된 검색 횟수를 얻는다.
디코더에서 구현될 경우, 디코더는 먼저 코드 스트림으로부터 인코더가 인코딩할 경우 사용하는 기설정된 검색 횟수를 파싱해야 한다. 후속 처리에서 상기 기설정된 검색 횟수를 재사용한다. 인코더에는 상기 과정이 존재하지 않는다.
단계 S1046에 있어서, 이웃 영역에서, 기설정된 검색 횟수에 따라 이웃 부모 노드의 모튼 코드에 대응되는 포인트를 순회하여, 후보 이웃 집합을 얻는다.
단계 S1047에 있어서, 후보 이웃 집합으로부터, 현재 층 데이터의 현재 포인트에 대응되는 최근접 이웃 포인트 집합을 결정한다.
본 출원의 실시예에 있어서, 이웃 영역에서, 기설정된 검색 횟수에 따라 이웃 부모 노드의 모튼 코드에 대응되는 포인트를 순회하여, 후보 이웃 집합을 얻고, 즉 후보 포인트 집합을 얻고, 다음 후보 이웃 집합으로부터, 현재 포인트와 가장 가까운 K 개의 최근접 이웃 포인트를 찾고, 즉 최근접 이웃 포인트 집합을 찾는다. 여기서, K는 0보다 큰 양의 정수이다.
단계 S1048에 있어서, 기설정된 검색 횟수를 코드 스트림에 기입한다.
본 출원의 실시예에 있어서, 인코더가 현재 포인트에 대응되는 최근접 이웃 포인트를 결정하는 과정에서, 사용한 기설정된 검색 횟수를 코드 스트림에 기입하여, 디코더가 디코딩할 경우 사용하도록 해야 한다.
설명해야 할 것은, 본 출원의 실시예에 있어서, 기설정된 검색 횟수는 후보 포인트의 상한값이고, 상기 기설정된 검색 횟수를 초과한 이후에도 K 개의 최근접 이웃 포인트를 찾지 못할 경우, 단계 S105의 방식을 사용하여 K 개의 최근접 이웃 포인트를 처리한다.
본 출원의 실시예에 있어서, 기설정된 검색 횟수는 LiftingNeighborSearchTimes로 표시할 수 있다.
예시적으로, 현재 부모 노드의 경우, 26 개의 인접한 이웃 부모 노드가 존재한다. 인접한 부모 노드 및 현재 부모 노드의 좌표 차이값을 통해 하나의 검색 테이블을 구축하고, 이 검색 테이블에 따라 인접한 부모 노드의 모튼 코드를 계산하여 얻는다. 상기 모튼 코드에 기반하여, O(k)에서 현재 부모 노드 및 이러한 26 개의 이웃 또는 그중의 일부 이웃의 모튼 코드에 대응되는 인덱스를 찾을 수 있고, 이러한 인덱스에 대응되는 포인트를 순회하여 후보 포인트로 사용하고, 그중에서 예측된 포인트(P, 현재 포인트)의 K 개의 최근접 이웃 포인트를 찾는다.
본 출원의 일부 실시예에 있어서, 최근접 이웃을 결정하는 방법은, 예측 포인트 및 예측된 포인트의 거리를 계산하는 것을 통해, 거리가 가장 작은 K 개의 예측 포인트를 찾고, K 개의 예측 포인트를 예측된 포인트의 이웃으로 사용하고, 즉 최근접 이웃 포인트로 사용하고, 이와 동시에 최근접 이웃 포인트와 예측된 포인트의 거리를 예측된 포인트와 예측 포인트 간의 가중치로 기록한다.
도 6은 본 출원의 일 예시적 실시예에서 제공한 인코더의 구성 구조 예시도이고, 도 6에 도시된 바와 같이, 인코더(1)는,
검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하도록 구성된 제1 획득 유닛(10);
상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻도록 구성된 제1 분할 유닛(11);
상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻도록 구성된 제1 시프트 유닛(12); 및
상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하고; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하며; 상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 하도록 구성된 제1 결정 유닛(13)을 포함한다.
본 출원의 일부 실시예에 있어서, 상기 제1 결정 유닛(13)은 또한, 상기 현재 층 데이터에서의 현재 포인트가 상기 제1 부모 노드 집합에서 속하는 현재 부모 노드를 결정하고; 상기 현재 부모 노드에 인접한 이웃 부모 노드 집합을 결정하며; 기설정된 검색 테이블, 상기 현재 부모 노드 및 상기 현재 층 데이터의 모튼 코드에 따라, 이웃 부모 노드의 모튼 코드를 결정하고; 상기 이웃 부모 노드의 모튼 코드에 대응되는 영역을, 상기 이웃 영역으로 결정하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 인코더(1)는 기입 유닛(14)을 더 포함하고;
상기 제1 결정 유닛(13)은 또한, 상기 이웃 영역에서, 기설정된 검색 횟수에 따라 상기 이웃 부모 노드의 모튼 코드에 대응되는 포인트를 순회하여, 후보 이웃 집합을 얻고; 상기 후보 이웃 집합으로부터, 현재 층 데이터의 현재 포인트에 대응되는 상기 최근접 이웃 포인트 집합을 결정하도록 구성되고;
상기 기입 유닛(14)은, 상기 기설정된 검색 횟수를 코드 스트림에 기입하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 제1 결정 유닛(13)은 또한, 상기 제2 노드 집합으로부터, 상기 현재 층 데이터의 현재 포인트의 현재 모튼 코드보다 큰 첫 번째 모튼 코드를 결정하고; 상기 첫 번째 모튼 코드의 대응되는 포인트를 상기 검색 포인트로 설정하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 제1 분할 유닛(11)은 또한, 상기 모튼 코드 집합에 따라, 적어도 첫 번째 모튼 코드에 대응되는 포인트를 포함하는 제2 집합을 하고; 상기 포인트 클라우드 데이터에서 현재 처리되는 포인트와 상기 제2 집합에서의 포인트의 거리가 제1 거리 임계값보다 작거나 같으면, 현재 포인트를 제1 집합에 넣고; 상기 현재 포인트와 상기 제2 집합에서의 포인트의 거리가 상기 제1 거리 임계값보다 크면, 상기 현재 포인트를 상기 제2 집합에 넣으며; 제2 집합에서 상기 현재 포인트와의 거리가 제2 거리 임계값보다 작거나 같은 포인트를 결정하여, 상기 현재 층 데이터를 얻 - 상기 제1 거리 임계값은 상기 제2 거리 임계값보다 작음 - 도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 제1 기설정된 비트수는 기설정된 음이 아닌 정수이다.
본 출원의 일부 실시예에 있어서, 상기 제1 획득 유닛(10)은 또한, 기설정된 간격에 따라 모튼 코드 집합에 대해 샘플링을 수행하여, 샘플링 포인트 집합을 얻고 - 상기 모튼 코드 집합은 전부 또는 일부 상기 예측 데이터의 모튼 코드를 포함함 - ; 상기 샘플링 포인트 집합에서 포인트의 모튼 코드 비트를 n비트만큼 우측으로 이동하여, 샘플링 부모 노드 집합을 얻고; 상기 샘플링 부모 노드 집합에 대응되는 영역에서, 상기 샘플링 포인트를 제외한 이웃 포인트를 결정하며; 상기 샘플링 부모 노드 집합에서의 이웃 포인트의 평균 개수가 기설정된 평균값 임계값보다 크면, 상기 n비트수를 상기 제1 기설정된 비트수의 값으로 결정 - n은 음이 아닌 정수임 - 하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 제1 획득 유닛(10)은 또한, 검색될 포인트 클라우드 데이터를 획득하고; 상기 포인트 클라우드 데이터의 모튼 코드를 결정하고; 상기 포인트 클라우드 데이터의 모튼 코드를 오름순에 따라 배열하여, 복수 개의 모튼 코드를 포함한 상기 모튼 코드 집합을 얻도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 기입 유닛(14)은 또한, 상기 제1 기설정된 비트수를 코드 스트림에 기입하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 기입 유닛(14)은 또한, 상기 제1 기설정된 비트수를 코드 스트림에서의 파라미터 세트 데이터 유닛에 기입하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 파라미터 세트 데이터 유닛은 시퀀스 파라미터 세트 데이터 유닛이다.
본 출원의 일부 실시예에 있어서, 상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 속성 정보가 포함되고, 여기서, 상기 속성 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 스칼라 또는 벡터 속성이다.
본 출원의 일부 실시예에 있어서, 상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 기하학적 정보가 포함되고, 여기서, 상기 기하학적 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 데카르트 좌표이다.
본 출원의 일부 실시예에 있어서, 상기 이웃 부모 노드 집합에는 모든 이웃 노드의 부모 노드 또는 일부 이웃의 부모 노드가 포함된다.
실제 적용에 있어서, 도 7에 도시된 바와 같이, 본 출원의 일 예시적 실시예에서 제공한 인코더의 구체적인 하드웨어 엔티티 예시도이고; 상기 인코더는,
제1 프로세서(15) 및 상기 제1 프로세서(15)가 실행 가능한 컴퓨터 프로그램을 저장한 제1 메모리(16)를 포함하고, 상기 제1 메모리(16)는 제1 통신 버스(17)를 통해 상기 제1 프로세서(15)에 의존하여 동작을 실행하고, 상기 컴퓨터 프로그램이 상기 제1 프로세서(15)에 의해 실행될 경우, 상기 인코더 측의 최근접 이웃 검색 방법을 실행한다.
이해할 수 있는 것은, 본 실시예에 있어서, “유닛”은 부분 회로, 부분 프로세서, 부분 프로그램 또는 소프트웨어 등일 수 있으며, 물론 모듈일 수도 있고, 비모듈 방식일수도 있다는 것이다. 또한, 본 실시예에서의 각 구성 부분은 하나의 처리 유닛 중에 통합될 수 있거나, 각 유닛이 단독적 및 물리적으로 존재할 수도 있으며, 또는 2개 이상의 유닛이 하나의 유닛에 통합될 수 있다. 상기 통합된 유닛은 하드웨어 또는 소프트웨어 기능 모듈의 형태로 구현될 수 있다.
상기 통합된 유닛은 독립된 제품으로서 판매되거나 사용되는 것이 아닌 소프트웨어 기능 모듈의 형태로 구현될 경우, 하나의 컴퓨터 판독 가능 저장 매체에 저장될 수 있으며, 이러한 이해에 기반하여, 본 실시예의 기술방안은 본질적으로 또는 기존 기술에 기여하는 부분이나 상기 기술방안의 전부 또는 일부는 소프트웨어 제품의 형태로 구현될 수 있으며, 상기 컴퓨터 소프트웨어 제품은 하나의 저장 매체에 저장되며, 하나의 컴퓨터 기기(개인용 컴퓨터, 서버, 또는 네트워크 기기 등) 또는 프로세서(processor)로 하여금 본 실시예에서 설명한 방법의 전부 또는 일부 단계를 실행하도록 하는 몇 개의 명령어를 포함한다. 전술한 저장 매체는 U 디스크, 모바일 디스크, 판독 전용 메모리(Read Only Memory, ROM), 랜덤 액세스 메모리(Random Access Memory, RAM), 자기 디스크 또는 광 디스크 등 프로그램 코드를 저장할 수 있는 여러 가지 매체를 포함한다.
도 8은 본 출원의 일 예시적 실시예에서 제공한 디코더의 구성 구조 예시도이고, 도 8에 도시된 바와 같이, 디코더(2)는,
검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하도록 구성된 제2 획득 유닛(20);
상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻도록 구성된 제2 분할 유닛(21);
상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻도록 구성된 제2 시프트 유닛(22); 및
상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하고; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하며; 상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 하도록 구성된 제2 결정 유닛(23)을 포함한다.
본 출원의 일부 실시예에 있어서, 상기 제2 결정 유닛(23)은 또한, 상기 현재 층 데이터에서의 현재 포인트가 상기 제1 부모 노드 집합에서 속하는 현재 부모 노드를 결정하고; 상기 현재 부모 노드에 인접한 이웃 부모 노드 집합을 결정하며; 기설정된 검색 테이블, 상기 현재 부모 노드 및 상기 현재 층 데이터의 모튼 코드에 따라, 이웃 부모 노드의 모튼 코드를 결정하고; 상기 이웃 부모 노드의 모튼 코드에 대응되는 영역을, 상기 이웃 영역으로 결정하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 디코더(2)는 파싱 유닛(24)을 더 포함하고;
상기 파싱 유닛(24)은, 코드 스트림을 파싱하여, 기설정된 검색 횟수를 얻도록 구성되고;
상기 제2 결정 유닛(23)은 또한, 상기 이웃 영역에서, 기설정된 검색 횟수에 따라 상기 이웃 부모 노드의 모튼 코드에 대응되는 포인트를 순회하여, 후보 이웃 집합을 얻고; 상기 후보 이웃 집합으로부터, 현재 층 데이터의 현재 포인트에 대응되는 상기 최근접 이웃 포인트 집합을 결정하도록 구성되고;
본 출원의 일부 실시예에 있어서, 상기 제2 결정 유닛(23)은 또한, 상기 제2 노드 집합으로부터, 상기 현재 층 데이터의 현재 포인트의 현재 모튼 코드보다 큰 첫 번째 모튼 코드를 결정하고; 상기 첫 번째 모튼 코드의 대응되는 포인트를 상기 검색 포인트로 설정하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 제2 분할 유닛(21)은 또한, 상기 모튼 코드 집합에 따라, 적어도 첫 번째 모튼 코드에 대응되는 포인트를 포함하는 제2 집합을 결정하고; 상기 포인트 클라우드 데이터에서 현재 처리되는 포인트와 상기 제2 집합에서의 포인트의 거리가 제1 거리 임계값보다 작거나 같으면, 상기 현재 포인트를 제1 집합에 넣고; 상기 현재 포인트와 상기 제2 집합에서의 포인트의 거리가 상기 제1 거리 임계값보다 크면, 상기 현재 포인트를 상기 제2 집합에 넣으며; 상기 제2 집합에서 상기 현재 포인트와의 거리가 제2 거리 임계값보다 작거나 같은 포인트를 결정하여, 상기 현재 층 데이터를 얻 - 상기 제1 거리 임계값은 상기 제2 거리 임계값보다 작음 - 도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 파싱 유닛(24)은 또한 코드 스트림을 파싱하여, 상기 제1 기설정된 비트수를 얻도록 구성되고; 상기 제1 기설정된 비트수는 음이 아닌 정수이다.
상기 제2 시프트 유닛(22)은 또한, 상기 포인트 클라우드 데이터의 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드를, 상기 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 상기 제1 부모 노드 집합을 얻도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 제2 획득 유닛(20)은 또한, 기설정된 간격에 따라 모튼 코드 집합에 대해 샘플링을 수행하여, 샘플링 포인트 집합을 얻고 - 상기 모튼 코드 집합은 전부 또는 일부 상기 예측 데이터의 모튼 코드를 포함함 - ; 상기 샘플링 포인트 집합에서 포인트의 모튼 코드 비트를 n비트만큼 우측으로 이동하여, 샘플링 부모 노드 집합을 얻고; 상기 샘플링 부모 노드 집합에 대응되는 영역에서, 상기 샘플링 포인트를 제외한 이웃 포인트를 결정하며; 상기 샘플링 부모 노드 집합에서의 이웃 포인트의 평균 개수가 기설정된 평균값 임계값보다 크면, 상기 n비트수를 상기 제1 기설정된 비트수의 값으로 결정 - n은 음이 아닌 정수임 - 하도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 제2 획득 유닛(20)은 또한, 검색될 포인트 클라우드 데이터를 획득하고; 상기 포인트 클라우드 데이터의 모튼 코드를 결정하고; 상기 포인트 클라우드 데이터의 모튼 코드를 오름순에 따라 배열하여, 복수 개의 모튼 코드를 포함한 상기 모튼 코드 집합을 얻도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 파싱 유닛(24)은 또한, 코드 스트림에서의 파라미터 세트 데이터 유닛을 파싱하여, 상기 제1 기설정된 비트수를 얻도록 구성된다.
본 출원의 일부 실시예에 있어서, 상기 파라미터 세트 데이터 유닛은 시퀀스 파라미터 세트 데이터 유닛이다.
본 출원의 일부 실시예에 있어서, 상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 속성 정보가 포함되고, 여기서, 상기 속성 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 스칼라 또는 벡터 속성이다.
본 출원의 일부 실시예에 있어서, 상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 기하학적 정보가 포함되고, 여기서, 상기 기하학적 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 데카르트 좌표이다.
본 출원의 일부 실시예에 있어서, 상기 이웃 부모 노드 집합에는 모든 이웃 노드의 부모 노드 또는 일부 이웃의 부모 노드가 포함된다.
실제 적용에 있어서, 도 9에 도시된 바와 같이, 본 출원의 일 예시적 실시예에서 제공한 디코더의 구체적인 하드웨어 엔티티 예시도이고; 상기 디코더는,
제2 프로세서(25) 및 상기 제2 프로세서(25)가 실행 가능한 컴퓨터 프로그램을 저장한 제2 메모리(26)를 포함하고, 상기 제2 메모리(26)는 제2 통신 버스(27)를 통해 상기 제2 프로세서(25)에 의존하여 동작을 실행하고, 상기 컴퓨터 프로그램이 상기 제2 프로세서(25)에 의해 실행될 경우, 상기 디코더 측의 최근접 이웃 검색 방법을 실행한다.
프로세서는 신호 처리 능력을 구비하는 집적 회로 칩일 수 있다. 구현 과정에서, 상기 방법의 각 단계는 프로세서에서의 하드웨어의 집적 논리 회로 또는 소프트웨어 형태의 명령어를 통해 완료될 수 있다. 상기 프로세서는 범용 프로세서, 디지털 신호 프로세서(Digital Signal Processor, DSP), 응용 주문형 집적 회로(Application Specific Integrated Circuit, ASIC), 현장 프로그래머블 게이트 어레이(Field Programmable Gate Array, FPGA) 또는 다른 프로그래머블 논리 장치, 분리형 게이트 또는 트랜지스터 논리 장치, 분리형 하드웨어 컴포넌트일 수 있다. 본 출원의 실시예에서 개시된 각 방법, 단계 및 논리 블록도는 구현되거나 실행될 수 있다. 범용 프로세서는 마이크로 프로세서 또는 임의의 일반적인 프로세서 등일 수도 있다. 본 출원의 실시예를 결합하여 개시된 방법의 단계는, 하드웨어 디코딩 프로세서로 직접 반영되어 실행 및 완료될 수 있거나, 디코딩 프로세서에서의 하드웨어 및 소프트웨어 모듈의 조합에 의해 실행 및 완료될 수 있다. 소프트웨어 모듈은 랜덤 액세스 메모리, 플래시 메모리, 판독 전용 메모리, 프로그래머블 판독 전용 메모리 또는 전기적 소거 가능 프로그래머블 메모리, 레지스터 등 본 기술 분야에서 널리 알려진 저장 매체에 위치할 수 있다. 상기 저장 매체는 메모리에 위치하고, 프로세서는 제1 메모리의 정보를 판독한 후 하드웨어와 결합하여 상기 방법의 단계들을 완성한다.
본 출원의 실시예는 컴퓨터 판독 가능한 저장 매체를 제공하고, 상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되고, 상기 컴퓨터 프로그램이 제1 프로세서에 의해 실행될 경우 인코더 측에서 전술한 최근접 이웃 검색 방법을 구현하거나, 제2 프로세서에 의해 실행될 경우 디코더 측에서 전술한 최근접 이웃 검색 방법을 구현한다.
설명해야 할 것은, 본 출원에서, 용어 “포함” 또는 이의 임의의 다른 변형은 비배타적인 포함을 포함하도록 의도됨으로써, 일련의 요소를 포함하는 프로세스, 방법, 물품 또는 장치로 하여금 이러한 요소를 포함하도록 할 뿐만 아니라, 명시적으로 열거되지 않은 다른 요소를 포함하도록 할 수도 있으며, 또는 이러한 프로세스, 방법, 물품, 또는 장치에 고유한 요소를 포함하도록 한다. 더 많은 한정이 없는 경우, 어구 “하나의……을 포함하다”에 의해 정의된 요소는, 상기 요소를 포함하는 과정, 방법 , 물품 또는 장치에 다른 동일한 요소가 존재한다는 것을 배제하지 않는다.
상기 본 출원 실시예의 번호는 다만 설명을 위한 것일 뿐, 실시예의 우열을 나타내는 것은 아니다.
본 출원에서 제공한 몇 개의 방법 실시예에서 언급된 방법은, 충돌되지 않는 경우 임의로 조합되어, 새로운 방법 실시예를 얻을 수 있다.
본 출원에서 제공한 몇 개의 제품 실시예에서 언급된 특징은, 충돌되지 않는 경우 임의로 조합되어, 새로운 제품 실시예를 얻을 수 있다.
본 출원에 의해 제공되는 방법 또는 장치 실시예에 개시된 특징은 충돌을 일으키지 않고 임의로 결합되어 새로운 방법 또는 장치 실시예를 얻을 수 있다.
위의 설명은 본 발명의 바람직한 실시예일뿐이며, 본 발명의 범위를 한정하려는 것은 아니다.
본 출원의 실시예는 최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체를 개시하고, 상기 방법은, 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계; 모튼 코드 집합 및 제1 거리 임계값에 따라, 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계; 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계; 현재 층 데이터의 모튼 코드에 따라, 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계; 이웃 영역에서, 현재 층 데이터의 최근접 이웃 포인트 집합을 얻는 단계; 및 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 현재 층 데이터의 검색 포인트를 결정하고, 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정하는 단계 - 제2 노드 집합은 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 를 포함하고; 이러한 방식으로, 현재 층 데이터의 모튼 코드를 통해 이웃 영역을 검색하여, 이웃 영역을 정확하게 찾을 수 있는 전제 하에서, 최근접 이웃 포인트를 검색하는 범위를 축소하고, 현재 층 데이터의 모튼 코드를 통해 이웃 영역을 검색하지 못했을 경우, 또한 제2 집합에 기반하여 이웃 영역의 검색을 수행하여, 검색 성공률을 향상시킬 수 있다.

Claims (32)

  1. 최근접 이웃 검색 방법으로서,
    인코더에 적용되고,
    상기 최근접 이웃 검색 방법은, 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계;
    상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계;
    상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계;
    상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하는 단계; 및
    상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정하는 단계 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - ;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  2. 제1항에 있어서,
    상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계는,
    상기 현재 층 데이터에서의 현재 포인트가 상기 제1 부모 노드 집합에서 속한 현재 부모 노드를 결정하는 단계;
    상기 현재 부모 노드에 인접한 이웃 부모 노드 집합을 결정하는 단계;
    기설정된 검색 테이블, 상기 현재 부모 노드 및 상기 현재 층 데이터의 모튼 코드에 따라, 이웃 부모 노드의 모튼 코드를 결정하는 단계; 및
    상기 이웃 부모 노드의 모튼 코드에 대응되는 영역을, 상기 이웃 영역으로 결정하는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법
  3. 제2항에 있어서,
    상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하는 단계는,
    상기 이웃 영역에서, 기설정된 검색 횟수에 따라 상기 이웃 부모 노드의 모튼 코드에 대응되는 포인트를 순회하여, 후보 이웃 집합을 얻는 단계;
    상기 후보 이웃 집합으로부터, 현재 층 데이터의 현재 포인트에 대응되는 상기 최근접 이웃 포인트 집합을 결정하는 단계; 및
    상기 기설정된 검색 횟수를 코드 스트림에 기입하는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  4. 제1항에 있어서,
    상기 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하는 단계는,
    상기 제2 노드 집합으로부터, 상기 현재 층 데이터의 현재 포인트의 현재 모튼 코드보다 큰 첫 번째 모튼 코드를 결정하는 단계; 및
    상기 첫 번째 모튼 코드의 대응되는 포인트를 상기 검색 포인트로 설정하는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  5. 제1항에 있어서,
    상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계는,
    상기 모튼 코드 집합에 따라, 적어도 첫 번째 모튼 코드에 대응되는 포인트를 포함하는 제2 집합을 결정하는 단계;
    상기 포인트 클라우드 데이터에서 현재 처리되는 현재 포인트와 상기 제2 집합에서의 포인트의 거리가 상기 제1 거리 임계값보다 작거나 같으면, 상기 현재 포인트를 제1 집합에 넣는 단계;
    상기 현재 포인트와 상기 제2 집합에서의 포인트의 거리가 상기 제1 거리 임계값보다 크면, 상기 현재 포인트를 상기 제2 집합에 넣는 단계; 및
    상기 제2 집합에서 상기 현재 포인트와의 거리가 제2 거리 임계값보다 작거나 같은 포인트를 결정하여, 상기 현재 층 데이터를 얻는 단계 - 상기 제1 거리 임계값은 상기 제2 거리 임계값보다 작음 - ;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  6. 제1항에 있어서,
    상기 제1 기설정된 비트수는 기설정된 음이 아닌 정수인 것을 특징으로 하는 최근접 이웃 검색 방법.
  7. 제1항에 있어서,
    상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계는,
    기설정된 간격에 따라 모튼 코드 집합에 대해 샘플링을 수행하여, 샘플링 포인트 집합을 얻는 단계 - 상기 모튼 코드 집합은 전부 또는 일부의 상기 예측 데이터의 모튼 코드를 포함함 - ;
    상기 샘플링 포인트 집합에서 포인트의 모튼 코드 비트를 n비트만큼 우측으로 이동하여, 샘플링 부모 노드 집합을 얻는 단계; 상기 샘플링 부모 노드 집합에 대응되는 영역에서, 상기 샘플링 포인트를 제외한 이웃 포인트를 결정하는 단계; 및
    상기 샘플링 부모 노드 집합에서의 이웃 포인트의 평균 개수가 기설정된 평균값 임계값보다 크면, 상기 n비트수를 상기 제1 기설정된 비트수의 값으로 결정하는 단계 - n은 음이 아닌 정수임 - ;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  8. 제1항에 있어서,
    상기 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계는,
    검색될 포인트 클라우드 데이터를 획득하는 단계;
    상기 포인트 클라우드 데이터의 모튼 코드를 결정하는 단계; 및
    상기 포인트 클라우드 데이터의 모튼 코드를 오름순에 따라 배열하여, 복수 개의 모튼 코드를 포함한 상기 모튼 코드 집합을 얻는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  9. 제1항에 있어서,
    상기 최근접 이웃 검색 방법은,
    상기 제1 기설정된 비트수를 코드 스트림에 기입하는 단계;
    를 더 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  10. 제9항에 있어서,
    상기 제1 기설정된 비트수를 코드 스트림에 기입하는 단계는,
    상기 제1 기설정된 비트수를 코드 스트림에서의 파라미터 세트 데이터 유닛에 기입하는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  11. 제10항에 있어서,
    상기 파라미터 세트 데이터 유닛은 시퀀스 파라미터 세트 데이터 유닛인 것을 특징으로 하는 최근접 이웃 검색 방법.
  12. 제10항에 있어서,
    상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 속성 정보가 포함되고,
    상기 속성 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 스칼라 또는 벡터 속성인 것을 특징으로 하는 최근접 이웃 검색 방법.
  13. 제10항에 있어서,
    상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 기하학적 정보가 포함되고,
    상기 기하학적 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 데카르트 좌표인 것을 특징으로 하는 최근접 이웃 검색 방법.
  14. 제2항에 있어서,
    상기 이웃 부모 노드 집합에는 모든 이웃 노드의 부모 노드 또는 일부 이웃의 부모 노드가 포함되는 것을 특징으로 하는 최근접 이웃 검색 방법.
  15. 최근접 이웃 검색 방법으로서,
    디코더에 적용되고,
    상기 최근접 이웃 검색 방법은,
    검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계;
    상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계;
    상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계;
    상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하는 단계; 및
    상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정하는 단계 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - ;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  16. 제15항에 있어서,
    상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하는 단계는,
    상기 현재 층 데이터에서의 현재 포인트가 상기 제1 부모 노드 집합에서 속한 현재 부모 노드를 결정하는 단계;
    상기 현재 부모 노드에 인접한 이웃 부모 노드 집합을 결정하는 단계;
    기설정된 검색 테이블, 상기 현재 부모 노드 및 상기 현재 층 데이터의 모튼 코드에 따라, 이웃 부모 노드의 모튼 코드를 결정하는 단계; 및
    상기 이웃 부모 노드의 모튼 코드에 대응되는 영역을, 상기 이웃 영역으로 결정하는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  17. 제16항에 있어서,
    상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하는 단계는,
    코드 스트림을 파싱하여, 기설정된 검색 횟수를 얻는 단계;
    상기 이웃 영역에서, 상기 기설정된 검색 횟수에 따라 상기 이웃 부모 노드의 모튼 코드에 대응되는 포인트를 순회하여, 후보 이웃 집합을 얻는 단계; 및
    상기 후보 이웃 집합으로부터, 현재 층 데이터의 현재 포인트에 대응되는 상기 최근접 이웃 포인트 집합을 결정하는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  18. 제15항에 있어서,
    상기 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하는 단계는,
    상기 제2 노드 집합으로부터, 상기 현재 층 데이터의 현재 포인트의 현재 모튼 코드보다 큰 첫 번째 모튼 코드를 결정하는 단계; 및
    상기 첫 번째 모튼 코드의 대응되는 포인트를 상기 검색 포인트로 설정하는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  19. 제15항에 있어서,
    상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻는 단계는,
    상기 모튼 코드 집합에 따라, 적어도 첫 번째 모튼 코드에 대응되는 포인트를 포함하는 제2 집합을 결정하는 단계;
    상기 포인트 클라우드 데이터에서 현재 처리되는 현재 포인트와 상기 제2 집합에서의 포인트의 거리가 상기 제1 거리 임계값보다 작거나 같으면, 상기 현재 포인트를 제1 집합에 넣는 단계;
    상기 현재 포인트와 상기 제2 집합에서의 포인트의 거리가 상기 제1 거리 임계값보다 크면, 상기 현재 포인트를 상기 제2 집합에 넣는 단계; 및
    상기 제2 집합에서 상기 현재 포인트와의 거리가 제2 거리 임계값보다 작거나 같은 포인트를 결정하여, 상기 현재 층 데이터를 얻는 단계 - 상기 제1 거리 임계값은 상기 제2 거리 임계값보다 작음 - ;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  20. 제15항에 있어서,
    상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계는,
    코드 스트림을 파싱하여, 상기 제1 기설정된 비트수를 얻는 단계 - 상기 제1 기설정된 비트수는 음이 아닌 정수임 - ; 및
    상기 포인트 클라우드 데이터의 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드를, 상기 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 상기 제1 부모 노드 집합을 얻는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  21. 제15항에 있어서,
    상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻는 단계는,
    기설정된 간격에 따라 모튼 코드 집합에 대해 샘플링을 수행하여, 샘플링 포인트 집합을 얻는 단계 - 상기 모튼 코드 집합은 전부 또는 일부의 상기 예측 데이터의 모튼 코드를 포함함 - ;
    상기 샘플링 포인트 집합에서의 포인트의 모튼 코드 비트를 n비트만큼 우측으로 이동하여, 샘플링 부모 노드 집합을 얻는 단계;
    상기 샘플링 부모 노드 집합에 대응되는 영역에서, 상기 샘플링 포인트를 제외한 이웃 포인트를 결정하는 단계; 및
    상기 샘플링 부모 노드 집합에서의 이웃 포인트의 평균 개수가 기설정된 평균값 임계값보다 크면, 상기 n비트수를 상기 제1 기설정된 비트수의 값으로 결정하는 단계 - n은 음이 아닌 정수임 - ;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  22. 제15항에 있어서,
    상기 검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하는 단계는,
    검색될 포인트 클라우드 데이터를 획득하는 단계;
    상기 포인트 클라우드 데이터의 모튼 코드를 결정하는 단계; 및
    상기 포인트 클라우드 데이터의 모튼 코드를 오름순에 따라 배열하여, 복수 개의 모튼 코드를 포함한 상기 모튼 코드 집합을 얻는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  23. 제20항에 있어서,
    상기 코드 스트림을 파싱하여, 상기 제1 기설정된 비트수를 얻는 단계는,
    코드 스트림에서의 파라미터 세트 데이터 유닛을 파싱하여, 상기 제1 기설정된 비트수를 얻는 단계;
    를 포함하는 것을 특징으로 하는 최근접 이웃 검색 방법.
  24. 제23항에 있어서,
    상기 파라미터 세트 데이터 유닛은 시퀀스 파라미터 세트 데이터 유닛인 것을 특징으로 하는 최근접 이웃 검색 방법.
  25. 제23항에 있어서,
    상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 속성 정보가 포함되고,
    상기 속성 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 스칼라 또는 벡터 속성인 것을 특징으로 하는 최근접 이웃 검색 방법.
  26. 제23항에 있어서,
    상기 파라미터 세트 데이터 유닛에는 상기 포인트 클라우드 데이터의 기하학적 정보가 포함되고,
    상기 기하학적 정보는 상기 포인트 클라우드 데이터에서 포인트와 관련된 데카르트 좌표인 것을 특징으로 하는 최근접 이웃 검색 방법.
  27. 제16항에 있어서,
    상기 이웃 부모 노드 집합에는 모든 이웃 노드의 부모 노드 또는 일부 이웃의 부모 노드가 포함되는 것을 특징으로 하는 최근접 이웃 검색 방법.
  28. 인코더로서,
    검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하도록 구성된 제1 획득 유닛;
    상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻도록 구성된 제1 분할 유닛;
    상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻도록 구성된 제1 시프트 유닛; 및
    상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하고; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하며; 상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 하도록 구성된 제1 결정 유닛;
    을 포함하는 것을 특징으로 하는 인코더.
  29. 디코더로서,
    검색될 포인트 클라우드 데이터의 모튼 코드 집합을 획득하도록 구성된 제2 획득 유닛;
    상기 모튼 코드 집합 및 제1 거리 임계값에 따라, 상기 포인트 클라우드 데이터에 대해 계층화를 수행하여, 현재 층 데이터를 얻도록 구성된 제2 분할 유닛;
    상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터의 모튼 코드 비트를 제1 기설정된 비트수만큼 우측으로 이동하여, 대응되는 제1 부모 노드 집합을 얻도록 구성된 제2 시프트 유닛; 및
    상기 현재 층 데이터의 모튼 코드에 따라, 상기 제1 부모 노드 집합에서, 이웃 영역을 결정하고; 상기 이웃 영역에서, 상기 현재 층 데이터의 최근접 이웃 포인트 집합을 결정하며; 상기 이웃 영역이 결정되지 않으면, 제2 노드 집합에 따라, 상기 현재 층 데이터의 검색 포인트를 결정하고, 상기 검색 포인트에 대응되는 제1 기설정된 검색 범위 내에서 검색을 수행하여, 최근접 이웃 포인트 집합을 결정 - 상기 제2 노드 집합은 상기 포인트 클라우드 데이터에서 현재 층 데이터에 대응되는 예측 데이터 집합임 - 하도록 구성된 제2 결정 유닛;
    을 포함하는 것을 특징으로 하는 디코더.
  30. 인코더로서,
    상기 인코더는 제1 메모리 및 제1 프로세서를 포함하고,
    상기 제1 메모리는 상기 제1 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하도록 구성되고,
    상기 제1 프로세서는 상기 컴퓨터 프로그램을 작동할 경우, 제1항 내지 제14항 중 어느 한 항에 따른 최근접 이웃 검색 방법을 실행하도록 구성되는 것을 특징으로 하는 인코더.
  31. 디코더로서,
    상기 디코더는 제2 메모리 및 제2 프로세서를 포함하고,
    상기 제2 메모리는 상기 제2 프로세서에서 작동 가능한 컴퓨터 프로그램을 저장하도록 구성되고,
    상기 제2 프로세서는 상기 컴퓨터 프로그램을 작동할 경우, 제15항 내지 제27항 중 어느 한 항에 따른 최근접 이웃 검색 방법을 실행하도록 구성되는 것을 특징으로 하는 디코더.
  32. 컴퓨터 판독 가능한 저장 매체로서,
    상기 컴퓨터 저장 매체에는 컴퓨터 프로그램이 저장되고,
    상기 컴퓨터 프로그램은 제1 프로세서에 의해 실행될 경우, 제1항 내지 제14항 중 어느 한 항에 따른 최근접 이웃 검색 방법을 구현하거나, 또는,
    제2 프로세서에 의해 실행될 경우, 제15항 내지 제27항 중 어느 한 항에 따른 최근접 이웃 검색 방법을 구현하는 것을 특징으로 하는 컴퓨터 판독 가능한 저장 매체.
KR1020227041696A 2020-04-30 2021-03-25 최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체 KR20230003148A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202010366795.3A CN113596466A (zh) 2020-04-30 2020-04-30 一种最近邻搜索方法、编码器、解码器及存储介质
CN202010366795.3 2020-04-30
PCT/CN2021/083102 WO2021218509A1 (zh) 2020-04-30 2021-03-25 一种最近邻搜索方法、编码器、解码器及存储介质

Publications (1)

Publication Number Publication Date
KR20230003148A true KR20230003148A (ko) 2023-01-05

Family

ID=78237560

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227041696A KR20230003148A (ko) 2020-04-30 2021-03-25 최근접 이웃 검색 방법, 인코더, 디코더 및 저장 매체

Country Status (6)

Country Link
US (1) US20230101072A1 (ko)
JP (1) JP2023523272A (ko)
KR (1) KR20230003148A (ko)
CN (2) CN113596466A (ko)
TW (1) TW202143723A (ko)
WO (1) WO2021218509A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116781908A (zh) * 2022-03-11 2023-09-19 腾讯科技(深圳)有限公司 点云预测处理方法、装置、计算机、存储介质
CN117669474B (zh) * 2024-01-30 2024-05-14 全智芯(上海)技术有限公司 用于多重曝光的版图生成方法、电子设备及存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103136535A (zh) * 2011-11-29 2013-06-05 南京理工大学常熟研究院有限公司 一种用于点云简化的k近邻搜索方法
EP3579194A1 (en) * 2018-06-08 2019-12-11 My Virtual Reality Software AS Indexation of massive point cloud data for efficient visualization
CN109889840B (zh) * 2019-03-20 2022-11-22 北京大学深圳研究生院 点云编码和解码的方法、编码设备和解码设备
CN110572655B (zh) * 2019-09-30 2023-01-10 北京大学深圳研究生院 一种基于邻居权重的参数选取和传递的点云属性编码和解码的方法及设备

Also Published As

Publication number Publication date
TW202143723A (zh) 2021-11-16
US20230101072A1 (en) 2023-03-30
JP2023523272A (ja) 2023-06-02
CN113596466A (zh) 2021-11-02
CN115443657A (zh) 2022-12-06
WO2021218509A1 (zh) 2021-11-04

Similar Documents

Publication Publication Date Title
CN111095929B (zh) 一种压缩针对点云的属性信息的系统、方法及计算机可读介质
CN114631118A (zh) 修整用于点云压缩中的最近邻确定的搜索空间
JP7386337B2 (ja) 分割方法、符号器、復号器及びコンピュータ記憶媒体
JP7330306B2 (ja) 変換方法、逆変換方法、エンコーダ、デコーダ及び記憶媒体
US20230101072A1 (en) Nearest neighbour search method, encoder, decoder and storage medium
US20220329833A1 (en) Nearest neighbor search method, apparatus, device, and storage medium
US11936909B2 (en) Prediction method, encoder, decoder, and computer storage medium
WO2022109810A1 (zh) 点云编码方法、点云解码方法、装置及存储介质
CN113544747B (zh) 用于点云编解码的几何合并模式的方法和装置
CN114785998A (zh) 一种点云的压缩方法、装置、电子设备及存储介质
JP2023549447A (ja) 点群階層化方法、デコーダ、エンコーダ及び記憶媒体
US20230086264A1 (en) Decoding method, encoding method, decoder, and encoder based on point cloud attribute prediction
WO2022120594A1 (zh) 点云编解码方法、编码器、解码器及计算机存储介质
JPWO2021218509A5 (ko)
WO2022217611A1 (zh) 编解码方法及相关设备、存储介质
US20220343550A1 (en) Partitioning method, encoder, decoder and computer storage medium
WO2023155045A1 (zh) 预测的方法和装置、编码器、解码器和编解码系统
US20220327746A1 (en) Method for constructing morton codes, encoder, decoder, and storage medium
WO2023023914A1 (zh) 帧内预测、编解码方法及装置、编解码器、设备、介质
WO2022067782A1 (zh) 一种点云数据的层次划分方法、编码器及存储介质
CN112017292A (zh) 网格译码方法和装置
CN118175319A (zh) 点云编码方法、点云解码方法及相关设备

Legal Events

Date Code Title Description
A201 Request for examination