KR20220123655A - 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체 - Google Patents

분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체 Download PDF

Info

Publication number
KR20220123655A
KR20220123655A KR1020227023052A KR20227023052A KR20220123655A KR 20220123655 A KR20220123655 A KR 20220123655A KR 1020227023052 A KR1020227023052 A KR 1020227023052A KR 20227023052 A KR20227023052 A KR 20227023052A KR 20220123655 A KR20220123655 A KR 20220123655A
Authority
KR
South Korea
Prior art keywords
node
lod
code
divided
point
Prior art date
Application number
KR1020227023052A
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 KR20220123655A publication Critical patent/KR20220123655A/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/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/17Methods 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 an image region, e.g. an object
    • H04N19/174Methods 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 an image region, e.g. an object the region being a slice, e.g. a line of blocks or a group of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • 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/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • 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/124Quantisation
    • 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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/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/186Methods 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 a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • 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
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform 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/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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 출원의 실시예는 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체를 공개하는 바, 해당 방법은 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며; 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며; i가 M-1보다 작거나 같은지 여부를 판단하며; i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며; i번째 LOD 레이어의 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며; 결정된 부모 노드의 모턴 코드에 의해 사전 설정 저장 구역 내에서 부모 노드에 대응되는 이웃 노드를 검색하며; 현재 노드를 i번째 LOD 레이어로 분할하고, 이웃 노드를 i+1번째 LOD 레이어로 분할하며; i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며; i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하는 것이 포함된다.

Description

분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체
본 출원의 실시예는 비디오 인코딩/디코딩 기술 분야에서 세부 수준(Level of detail, LOD)의 분할 기술을 관한 것으로, 특히 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체에 관한 것이다.
지오메트리를 기반으로 한 포인트 클라우드 압축(Geometry-based Point Cloud Compression, G-PCC) 인코더 프레임에서, 포인트 클라우드의 지오메트리 정보와 각 포인트 클라우드에 대응되는 속성 정보는 별도 인코딩을 수행한 것이다. 지오메트리 인코딩은 완성한 후, 지오메트리 정보에 대해 재구성을 수행하며, 속성 정보의 인코딩은 재구성된 지오메트리 정보에 의존한다. 여기에서, 속성 정보 인코딩은 주로 컬러 정보의 인코딩에 관한 것이고, 컬러 정보의 인코딩에서 주로 두 가지 변환 방법이 있는 바, 즉 하나는 거리를 기반으로 LOD 분할을 수행하는 향상 변환이고, 다른 하나는 직접적으로 수행하는 구역 대응형 레이어 변환(Region Adaptive Hierarchal Transform, RAHT)이며, 이 두 가지 방법은 모두 컬러 정보를 공간 도메인으로부터 주파수 도메인으로 전환하고, 변환을 통해 높은 주파수 계수와 낮은 주파수 계수를 취득하고, 마지막으로 계수에 대해 양자화를 수행하고 인코딩하여 2 진수 비트 스트림을 생성한다.
현재 포인트 클라우드에 대해 거리를 기반으로 LOD 분할을 수행할 경우, 한편으로는 컴퓨팅 복잡성이 높고, 다른 한편으로는 요인에 대한 불완전한 고려로 인해 탐색으로 취득된 이웃 노드가 충분히 정확하지 않아 예측 잔여가 더 크며, 이는 인코딩의 비트 수를 증가시켜 인코딩 효율을 감소시킨다.
본 출원의 실시예는 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체를 제공하며, 이웃 노드 예측 속성의 정확성을 높일 수 있고, 인코딩 비트 오버헤드를 효과적으로 줄일 수 있어 인코딩/디코딩 효율을 높일 수 있다.
본 출원의 실시예의 기술 방안은 다음과 같이 구현될 수 있다.
제1 방면으로, 본 출원의 실시예가 분할 방법을 제공하는 바, 인코더 또는 디코더에 적용되며, 해당 방법에는,
분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며;
상기 분할하고자 하는 포인트 클라우드 중 i 번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며; 여기에서, i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며;
i가 M-1보다 작거나 같은지 여부를 판단하며; 여기에서 M은 LOD 분할의 사전 설정 레이어 수를 나타내며;
i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며;
i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며;
결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하며;
상기 현재 노드를 i번째 LOD 레이어로 분할하고, 상기 이웃 노드를 i+1번째 LOD 레이어로 분할하며;
i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며;
i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응된 LOD 레이어로 결정하는 것이 포함된다.
제2 방면으로, 본 출원의 실시예가 인코더를 제공하는 바, 해당 인코더는 제1 컴퓨팅 유닛, 제1결정 유닛, 제1판단 유닛, 제1 오른쪽 시프트 유닛, 제1 검색 유닛 및 제1 분할 유닛을 포함하며, 여기에서,
제1 컴퓨팅 유닛은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며;
제1 결정 유닛은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며;
제1 판단 유닛은 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; 여기에서, M은 LOD 분할의 사전 설정 레이어 수를 나타내며;
제1 오른쪽 시프트 유닛은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며;
제1 결정 유닛은 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며;
제1 검색 유닛은 결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며;
제1 분할 유닛은 상기 현재 노드를 i번째 LOD 레이어로 분할하고 상기 이웃 노드를 i+1 번째 LOD 레이어로 분할하도록 구성되며;
제1 판단 유닛은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하도록 구성되며;
제1 결정 유닛은 또한 i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응된 LOD 레이어로 결정하도록 구성된다.
제3 방면으로 본 출원의 실시예가 인코더를 제공하는 바, 해당 인코더에는, 제1 기억장치와 제1 프로세서가 포함되며, 여기에서,
제1 기억장치는 제1 프로세서에서 운행될 수 있는 컴퓨터 프로그램을 저장하며;
제1 프로세서는, 컴퓨터 프로그램을 운행할 때, 제1 방면의 상기 방법을 실행한다.
제4 방면으로, 본 출원의 실시예가 디코더를 제공하는 바, 해당 디코더는 제2 컴퓨팅 유닛, 제2 결정 유닛, 제2 판단 유닛, 제2 오른쪽 시프트 유닛, 제2 검색 유닛 및 제2 분할 유닛을 포함하며, 여기에서,
제2 컴퓨팅 유닛은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며;
제2 결정 유닛은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며;
제2 판단 유닛은 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; 여기에서, M은 LOD 분할의 사전 설정 레이어 수를 나타내며;
제2 오른쪽 시프트 유닛은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며;
제2 결정 유닛은 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며;
제2 검색 유닛은 결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며;
제2 분할 유닛은 상기 현재 노드를 i번째 LOD 레이어로 분할하고, 상기 이웃 노드를 i+1번째 LOD 레이어로 분할하도록 구성되며;
제2 판단 유닛은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하도록 구성되며;
제2 결정 유닛은 또한 i가 M-1보다 클 때, 0번째 LOD 레이어부터 M-1번째 LOD 레이어를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응된 LOD 레이어로 결정하도록 구성된다.
제5 방면으로, 본 출원의 실시예가 디코더를 제공하는 바, 해당 디코더에는 제2 기억장치와 제2 프로세서가 포함되며, 여기에서,
제2 기억장치는 제2 프로세서에서 운행될 수 있는 컴퓨터 프로그램을 저장하며;
제2 프로세서는 컴퓨터 프로그램을 운행할 때 제1 방면의 상기 방법을 실행한다.
제6 방면으로, 본 출원의 실시예가 컴퓨터 저장 매체를 제공하는 바, 해당 컴퓨터 저장 매체에 컴퓨터 프로그램이 저장되고, 컴퓨터 프로그램이 제1 프로세서에 의해 실행될 때, 제1 방면의 상기 방법을 구현하거나, 또는 제2 프로세서에 의해 실행될 때, 제1 방면의 상기 방법을 구현한다.
본 출원의 실시예는 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체를 제공하고, 분할하고자 하는 포인트 클라우드를 기반으로 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하는 것을 통해 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며, i는 0보다 크거나 같은 정수이고, Ni는 0보다 큰 정수이며; i가 M-1보다 작거나 같은지 여부를 판단하며, M은 LOD 분할의 사전 설정 레이어 수를 나타내며; i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며; i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며; 결정된 부모 노드의 모턴 코드에 의해 사전 설정 저장 구역 내에서 부모 노드에 대응되는 이웃 노드를 검색하며; 현재 노드를 i번째 LOD 레이어로 분할하고, 이웃 노드를 i+1번째 LOD 레이어로 분할하며; i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며; i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응된 LOD 레이어로 결정하며; 이렇게 하면 본 출원의 기술 방안은 더는 현재 노드와 이웃 노드 사이의 공간적 거리를 컴퓨팅하지 않고, LOD 레이어를 분할할 때마다, 모턴 코드를 이용하여 현재 노드에 대응되는 부모 노드의 이웃 노드를 검색하고, 또한 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측함으로써 컴퓨팅 복잡성을 줄일 수 있을 뿐만 아니라, 또한 포인트 클라우드의 공간 분포 특성을 고려하기 때문에 이웃 노드의 예측 속성의 정확성을 높이고 속성 부분의 재구성 품질을 향상시키며, 이는 인코딩 비트의 오버헤드를 효과적으로 줄일 수 있어 나아가 인코딩/디코딩 효율을 향상시킨다.
도1은 관련 기술 방안에 제공된 G-PCC 인코딩의 흐름 블럭도이다.
도2는 관련 기술 방안에 제공된 G-PCC 디코딩의 흐름 블럭도이다.
도3A는 관련 기술 방안에 제공된 LOD 생성 과정의 구조 도면이다.
도3B는 관련 기술 방안에 제공된 다른 LOD 생성 과정의 구조 도면이다.
도4는 본 출원의 실시예가 제공하는 분할 방법의 흐름 도면이다.
도5는 본 출원의 실시예가 제공하는 초기 오른쪽 시프트 비트 수를 결정하는 흐름 도면이다.
도6은 본 출원의 실시예가 제공하는 현재 노드와 이웃 노드의 공간 관계 도면이다.
도7은 본 출원의 실시예가 제공하는 분할 방법의 상세한 흐름 도면이다.
도8은 본 출원의 실시예가 제공하는 인코더의 구성 구조 도면이다.
도9는 본 출원의 실시예가 제공하는 인코더의 구체적인 하드웨어 구조 도면이다.
도10은 본 출원의 실시예가 제공하는 디코더의 구성 구조 도면이다.
도11은 본 출원의 실시예가 제공하는 디코더의 구체적인 하드웨어 구조 도면이다.
본 출원의 실시예의 특정과 기술 내용을 더 자세히 알아보기 위하여 아래는 도면을 참조하여 본 출원의 실시예의 구현에 대해 상세하게 설명하도록 하여, 상기 첨부된 도면은 단지 참조 설명을 위한 것일 뿐, 본 출원의 실시예에 대해 제한하는 것이 아니다.
포인트 클라우드 G-PCC 인코더 프레임에서, 3 차원 픽처 모델을 입력하는 포인트 클라우드에 대해 slice 분할을 수행한 후, 각 slice에 대해 독립적인 인코딩을 수행한다.
도1을 참조하여 이에 관련 기술 방안의 제공된 G-PCC 인코딩의 흐름 블럭도를 도시한다. 도1에 도시된 G-PCC 인코딩의 흐름 블럭도에서, 포인트 클라우드 인코더(Encoder)에 적용되며, 인코딩하고자 하는 포인트 클라우드 데이터에 대해, 먼저 slice 분할을 통해 포인트 클라우드 데이터를 다수의 slice로 분할한다. 각 slice에서, 포인트 클라우드의 지오메트리 정보와 각 포인트 클라우드에 대응되는 속성 정보는 별도로 인코딩을 수행하는 것이다. 지오메트리 인코딩 과정에서, 먼저 지오메트리 정보에 대해 좌표 전환을 수행하고, 포인트 클라우드를 전부 하나의 bounding box(바운딩 박스)에 포함하게 하고, 그 후 양자화를 수행하고, 이 단계의 양자화가 주요 줌의 역할을 하며, 양자화의 반올림으로 인해 일부 포인트 클라우드의 지오메트리 정보를 같게 하기 때문에 파라미터를 기반으로 반복 포인트를 제거할지 여부를 결정하며, 양자화와 반복 포인트를 제거하는 과정은 또한 복셀화 과정이라고 칭한다. 이어서 bounding box에 대해 팔진 트리 분할을 수행한다. 팔진 트리를 기반으로 하는 지오메트리 정보 인코딩 흐름에서, 바운딩 박스를 8 개의 서브 입방체로 등분하고, 비어 있지 않은(포인트 클라우드 중 포인트가 포함) 서브 입방체에 대해 계속하여8등분으로 분할하며, 분할에 의해 취득한 잎 노드가 1x1x1인 단위 입방체가 되면 분할을 정지하고, 잎 노드 중의 포인트에 대해 산술 인코딩을 수행하고, 2 진수의 지오메트리 비트 스트림, 즉 지오메트리 비트 스트림을 생성한다. 삼각형 면 세트(triangle soup, trisoup)를 기반으로 하는 지오메트리 정보 인코딩 과정에서, 마찬가지로 8진 트리 분할을 먼저 수행해야 하지만 8진 트리를 기반으로 하는 지오메트리 정보 인코딩과 달리, 해당 trisoup는 포인트 클라우드를 단계별로 변의 길이가 1x1x1인 단위 입방체로 분할할 필요가 없고, block(서브 블록) 변의 길이가 W인 것으로 분할할 때 분할을 중지하며, 각 block 중 포인트 클라우드의 분포에 의해 형성된 표면을 기반으로 해당 표면 및 block의 12개 변의 길이에 의해 생성된 최대 12개의 vertex(교차점)를 취득하고, vertex에 대해 산술 인코딩(교차점을 기반으로 표면 맞춤을 수행)을 수행하고, 이진수의 지오메트리 비트 스트림, 즉 지오메트리 비트 스트림을 생성한다. Vertex는 또한 지오메트리 재구성에 대한 과정의 구현에 이용되고, 재구성의 세트 정보는 포인트 클라우드의 속성에 대해 인코딩할 때 이용된다.
지오메트리 인코딩이 완료되면 지오메트리 정보를 재구성한다. 현재, 속성 인코딩은 주로 컬러 정보에 대해 수행한다. 속성 인코딩 과정에서 먼저 컬러 정보(즉 속성 정보)를 RGB 컬러 공간에서 YUV 컬러 공간으로 전환한다. 그 다음에 재구성한 지오메트리 정보를 이용하여 포인트 클라우드에 대해 재차 착색하고, 인코딩되지 않는 속성 정보와 재구성된 지오메트리 정보를 대응하게 한다. 컬러 정보 인코딩 과정에는 주로 두 가지 전환 방법이 있는데, 하나는 세부 수준(Level of Detail, LOD) 분할에 의존한 거리를 기반으로 한 향상 변환이며, 현재 LOD 분할은 주로 거리를 기반으로 LOD 분할을 수행(주로 Category1 시퀀스에 대해)하고 고정적인 샘플링 비율을 기반으로 LOD 분할을 수행(주로 Category3 시퀀스에 대해)하는 것과 같은 등 두 가지 방식이며; 다른 하나는 직접적으로 구역 대응형 레이어 변환(Region Adaptive Hierarchal Transform,RAHT)을 수행하는 변환이다. 여기에서, 이 두 가지 방법은 모두 컬러 정보를 공간 도메인에서 주파수 도메인으로 변환하고, 변환을 통해 높은 주파수 계수와 낮은 주파수 계수를 취득하며, 마지막으로 계수에 대하여 양자화를 진행(즉 계수 양자화)하고, 마지막으로 8진수 트리 분할 및 표면 피팅을 거친 지오메트리 인코딩 데이터와 양자화 계수 처리 속성 인코딩 데이터를 slice 합성을 수행한 후, 각 block의 vertex 좌표를 순차적으로 인코딩(즉 산술 인코딩)하고, 이진법의 속성 비트 스트림, 즉 속성 비트 스트림을 생성한다.
도2를 참조하며, 이에 관련 기술 방안에 제공된 G-PCC 디코딩의 흐름 블럭도를 도시한다. 도2에 도시된 G-PCC 디코딩의 흐름 블럭도에서 포인트 클라우드 디코더(Decoder)에 적용되며, 취득된 이진법 비트 스트림에 대해 먼저 이진법 비트 스트림 중의 지오메트리 비트 스트림과 속성 비트 스트림에 대해 각각 독립적으로 디코딩을 수행한다. 지오메트리 비트 스트림에 대한 디코딩을 수행할 때, 산술 디코딩-8진 트리 합성-표면 피팅-재구성 지오메트리-역좌표 변환을 통해 포인트 클라우드의 지오메트리 정보를 취득하며; 속성 비트 스트림에 대한 디코딩을 수행할 때, 산술 디코딩-역양자화-LOD를 기반으로 하는 역변환 향상 또는 RAHT를 기반으로 하는 역변환-역컬러 전환을 통해 포인트 클라우드의 속성 정보를 취득하며, 지오메트리 정보와 속성 정보를 기반으로 인코딩하고자 하는 포인트 클라우드 데이터의 3 차원 픽처 모델을 복원한다.
도1에 도시된 G-PCC 인코딩의 흐름 블럭도에서 LOD 분할은 주로 포인트 클라우드 속성 변환에서 Predicting(예측) 및 lifting(향상) 두 가지 방식에 이용된다. 아래에서는 거리를 기반으로 LOD 분할을 수행하는 것에 대해 상세한 설명을 수행하도록 한다.
구체적으로 LOD 분할은 한 그룹의 거리 임계값(
Figure pct00001
로 표시,
Figure pct00002
)을 통해, 입력된 포인트 클라우드를 다른 세부 수준 (
Figure pct00003
로 표시,
Figure pct00004
)으로 분할하며, 즉 포인트 클라우드 중 포인트를 다른 세트(
Figure pct00005
)에 분할한다. 여기에서 해당 거리 임계값은 이용자 정의의 값일 수 있다. 거리 임계값(
Figure pct00006
)은
Figure pct00007
Figure pct00008
두 가지 조건을 충족해야 한다.
LOD 분할의 과정은 포인트 클라우드 지오메트리 재구성한 후, 이 때에 포인트 클라우드의 지오메트리 좌표 정보를 직접 취득할 수 있는 것이다. LOD를 분할하는 과정은 다음과 같이 포인트 클라우드 인코더와 포인트 클라우드 디코더 동시에 적용될 수 있다.
(1) 포인트 클라우드의 모든 포인트를 "방문하지 않은" 포인트 세트에 배치하고 "방문된" 포인트 세트(V로 표시)를 빈 세트로 초기화한다.
(2) 끊임없이 반복하여 LOD 레이어를 분할하고, 제
Figure pct00009
회 반복에 대응되는 세부 수준 (
Figure pct00010
) 생성 과정은 다음과 같다.
a, 반복을 통해 포인트 클라우드 중 모든 포인트를 순회하며;
b, 만일 현재 포인트는 이미 순회되면, 해당 포인트를 무시하며;
c, 그렇지 않으면 해당 포인트에서 세트(V)의 각 포인트까지의 거리를 각각 컴퓨팅하며, 그 중의 가장 가까운 거리를 D로 기록하며;
d, 거리(D)가 임계값(
Figure pct00011
)보다 크거나 같은 경우, 해당 포인트를 세부 수준(
Figure pct00012
)와 세트(V)에 추가하며;
e, 포인트 클라우드 중 모든 포인트가 순회될 때까지 a부터 d까지의 과정을 반복하며;
(3),
Figure pct00013
번째 LOD 세트에 대해 즉
Figure pct00014
는 세분 수준
Figure pct00015
,
Figure pct00016
, …,
Figure pct00017
중의 포인트를 병합하고 취득되며;
(4), (1)부터 (3)까지의 과정을 반복하는 것을 통해 모든 LOD 레이어가 생성되거나 모든 포인트가 모두 순회될 때까지 끊임없이 반복한다.
도3A를 참조하며, 이에 관련 기술 방안의 제공된 LOD 생성 과정의 구조 도면을 도시한다. 도3A에서 포인트 클라우드에는 P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 등 10개의 포인트가 포함되어 있으며, 거리 임계값을 기반으로 LOD 분할을 수행하기 때문에 LOD0 세트 중의 순서적으로 P0, P5, P4, P2가 포함되고, LOD1 세트 중의 순서적으로 P0, P5, P4, P2, P1, P6, P3이 포함되고, LOD2 세트 중의 순서적으로 P0, P5, P4, P2, P1, P6, P3, P9, P8, P7이 포함된다.
관련 기술 방안에서는 모턴 코드를 기반으로 LOD 분할을 수행하는 방안을 제시한다. 오리지널 모든 포인트를 검색하고 순회하여 LOD 분할을 수행하는 방안과 비교하면, 모턴 코드를 기반으로 LOD 분할을 수행하는 방안은 컴퓨팅의 복잡성을 줄일 수 있다.
구체적으로 말하면, 모턴 인코딩은 또한 z-order code라고 칭하기 때문에 이의 인코딩 순서는 공간 z 순서에 따른다. 먼저 변수(
Figure pct00018
)로 입력 포인트 클라우드 중 포인트를 나타내고, 변수(
Figure pct00019
)는
Figure pct00020
와 관련된 모턴 코드이며, 여기에서,
Figure pct00021
이다. 모턴 코드를 컴퓨팅하는 구체적인 과정의 설명은 다음에 도시된 바와 같이, 각 컴포넌트가 d 비트 2진수로 표시된 3 차원 좌표에 대해 이의 세 개의 좌표 컴포넌트의 표시는 다음과 같은 방식으로 구현된다.
Figure pct00022
Figure pct00023
Figure pct00024
여기에서,
Figure pct00025
는 각각
Figure pct00026
,
Figure pct00027
,
Figure pct00028
의 최고 비트(
Figure pct00029
)로부터 최하 비트(
Figure pct00030
)에 대응되는 2진수 수치이다. 모튼 코드(
Figure pct00031
)는
Figure pct00032
,
Figure pct00033
,
Figure pct00034
에 대해 최고 비트로부터 시작하고, 순차적으로
Figure pct00035
를 최하 비트로 교차 배열하며, M의 계산 공식은 다음과 도시된 바와 같다.
Figure pct00036
(1)
여기에서,
Figure pct00037
는 각각
Figure pct00038
의 최고 비트(
Figure pct00039
)로부터 최하 비트(
Figure pct00040
)로의 값이다. 포인트 클라우드 중 각 포인트의 모턴 코드(
Figure pct00041
)를 취득한 후, 포인트 클라우드 중의 포인트를 작은 모턴 코드부터 큰 모턴 코드 순으로 랭킹한다.
나아가 D0(초기 거리의 임계값)과 ρ(인접한 LOD 레이어 분할할 때의 거리 임계값 비율)는 각각 이용자 정의한 초기 파라미터이고, 또한 ρ>1이다. I가 모든 포인트의 인덱스를 나타내며, 제k 회 반복할 때 LODk 중의 포인트는 LOD0부터 LODk-1까지의 레이어에서 가장 가까운 이웃, 즉 거리가 가장 가까운 포인트를 찾는다고 가정하며; k=1,2,...,N-1이다. 여기에서, N은 LOD 분할의 총 레이어 수이며; 그리고 k=0일 때, 제0 회 반복할 때, LOD0 중의 포인트는 LOD0에서 가장 가까운 이웃을 직접 찾는다. 구체적인 과정은 다음과 같다.
(1), 초기화 분할 거리 임계값은
Figure pct00042
이며;
(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 pct00043
)보다 작은 포인트를 찾은 경우, 현재 포인트를 세트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(일반적으로 h는 3으로 설정될 수 있음) 개의 예측 이웃을 조회한다. 가장 가까운 이웃을 찾는 구체적인 과정은 다음과 같다.
a, 세트R(k)의 포인트(Pi)에 대해, 해당 포인트에 대응되는 모턴 코드는 Mi이며;
b, 세트O(k)에서 현재 포인트(Pi)에 대응되는 모턴 코드(Mi)보다 첫 번째 큰 포인트의 인덱스(j)를 조회하며;
c, 인덱스(j)를 기반으로 세트O(k) 중의 하나의 검색 범위[j-SR2, j+SR2] (여기에서 SR2는 하나의 검색 범위를 나타내며 일반적으로 8, 16, 32, 64 값으로 한다)에서 현재 포인트(Pi)의 가장 가까운 이웃을 조회하며;
(4), (1)부터 (3)까지의 과정을 반복하는 것을 통해 세트(I) 중의 모든 포인트가 순회될 때까지 끊임없이 반복한다.
도3B를 참조하며, 이에 관련 기술 방안이 제공하는 다른 LOD 생성 과정의 구조 도면을 도시한다. 도3B에서 포인트 클라우드에는 P0, P1, P2, P3, P4, P5, P6, P7, P8, P9 등 10개의 포인트가 포함되어 있으며, 모턴 코드를 기반으로 LOD 분할을 수행하며, 먼저 모턴 코드의 오름차순, 즉 P4, P1, P9, P5, P0, P6, P8, P2, P7, P3 순서로 랭킹되며; 그 다음에 가장 가까운 이웃을 조회하며, 그러면 LOD0 세트에 순서적으로 여전히 P0, P5, P4, P2이 포함되고, LOD1 세트에 순서적으로 여전히 P0, P5, P4, P2, P1, P6, P3이 포함되고, LOD2 세트의 순서에는 여전히 P0, P5, P4, P2, P1, P6, P3, P9, P8, P7이 포함된다.
그러나 현재 해결 방안은 포인트 클라우드 속성 변환 Predicting 및 lifting 전에 먼저 다른 거리 임계값을 기반으로 LOD 분할을 수행한다. 구체적으로, 현재의 LOD의 분할은 모든 포인트 사이의 거리를 매번 컴퓨팅하며, 해당 포인트와 모든 포인트와의 거리가 모두 거리 임계값보다 작을 때, 해당 포인트를 현재 LOD 레이어에 추가할 수 있으며, 그렇지 않으면 해당 포인트를 다음 레이어에 배치하여 LOD 분할을 수행하고 모든 포인트가 순회되거나 모든 LOD 레이어가 분할되어 완성될 때까지 다른 임계값 범위에 의해 끊임없이 반복하여 컴퓨팅의 복잡성이 높게 된다. 또한 다른 포인트 클라우드가 다른 공간 분포가 있어 다른 포인트 클라우드의 물체의 밀도가 다르게 하기 때문에, 거리 임계값을 기반으로 LOD 분할을 수행할 때, 포인트 클라우드의 공간 분포 특성을 고려하지 않으므로써 검색으로 취득된 이웃 노드가 정확하지 않게 하며, 결과적으로 이웃 노드 예측을 기반으로 취득된 예측의 잔여가 더 크게 되어, 속성 정보가 여전히 큰 중복이 존재하고 인코딩된 비트 수가 증가하므로 최적한 인코딩/디코딩 효율을 보장할 수 없다.
본 출원의 실시예는 분할 방법을 제공하는 바, 해당 방법은 인코더(또한 포인트 클라우드 인코더라고도 함) 또는 디코더(또한 포인트 클라우드 디코더라고도 함)에 적용할 수 있다. 여기에서, 분할하고자 하는 포인트 클라우드를 기반으로 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며; 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며, i는 0보다 크거나 같은 정수이고, Ni는 0보다 큰 정수이며; i가 M-1보다 작거나 같은지 여부를 판단하며, M은 LOD 분할의 사전 설정 레이어 수를 나타내며; i가 M-1보다 작거나 같을 때, i 번째의 LOD 레이어에 대해 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드가 사전 설정 캐시 구역에 저장되며; i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며; 결정된 부모 노드의 모턴 코드를 기반으로 사전 설정 저장 구역 내에서 부모 노드에 대응되는 이웃 노드를 검색하며; 현재 노드를 i번째 LOD 레이어로 분할하고, 이웃 노드를 i+1번째 LOD 레이어로 분할하며; i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며; i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하며; 그러면 본 출원의 기술 방안은 더는 현재 노드와 이웃 노드 사이의 공간적 거리를 컴퓨팅하지 않고, LOD 레이어를 분할할 때마다, 모턴 코드를 이용하여 현재 노드에 대응되는 부모 노드의 이웃 노드를 검색하고, 또한 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측함으로써 컴퓨팅 복잡성을 줄일 수 있을 뿐만 아니라 또한 포인트 클라우드의 공간 분포 특성을 고려하기 때문에 이웃 노드의 예측 속성의 정확성을 높이고 속성 부분의 재구성 품질을 향상시키며, 이는 인코딩 비트 오버헤드를 효과적으로 줄일 수 있어 나아가 인코딩/디코딩 효율을 높일 수 있다.
아래에서는 도면을 결합시켜 본 출원의 실시예에 대해 상세한 설명을 수행하도록 한다.
도4를 참조하여, 이에 본 출원의 실시예가 제공하는 분할 방법의 흐름 도면을 도시한다. 도4와 도시된 바와 같이, 인코더 또는 디코더에 적용하며, 해당 방법에는 다음과 같은 것이 포함될 수 있다.
S401, 분할하고자 하는 포인트 클라우드를 기반으로, 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며;
설명해야 할 바로는, 포인트 클라우드에서 포인트는 포인트 클라우드 중의 모든 포인트일 수 있거나 또한 포인트 클라우드 중의 부분 포인트일 수 있으며, 이 포인트들은 공간에서 상대적으로 집중되어 있다.
또한 설명해야 할바로는, 본 출원의 실시예가 제공하는 분할 방법은 lifting 및 Predicting 속성 변환에서 LOD의 생성 과정을 개선하기 위한 것이며; 다시 말하면, lifting 또는 Predicting 변환을 수행하기 전에 먼저 해당 분할 방법을 이용하여 LOD 레이어의 분할을 수행해야 한다. 구체적으로, 해당 분할 방법은 도1에 도시된 G-PCC 인코딩의 흐름 블럭도에서 LOD를 생성하는 부분에 적용할 수 있으며, 또한 도 2에 도시된 G-PCC 디코딩의 흐름 블럭도에서 LOD를 생성하는 부분에 적용할 수 있으며, 또한 도1에 도시된 G-PCC 인코딩의 흐름 블럭도에서 LOD를 생성하는 부분과 도2도시된 G-PCC 디코딩의 흐름 블럭도에서 LOD를 생성하는 부분에 동시에 적용할 수 있으며, 본 출원의 실시예가 구체적으로 제한하지 않는다.
이렇게 하면 분할하고자 하는 포인트 클라우드를 취득한 후 먼저 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하여 후속 반복 연산에서 모턴 코드를 이용하여 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색할 수 있으므로 LOD 레이어 분할을 수행할 때 현재 노드를 샘플링 포인트로 이용하여 이웃 노드에 대한 예측에 유리하다.
S402, 상기 분할하고자 하는 포인트 클라우드의 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며;
설명해야 할 바로는, i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이다. 분할하고자 하는 포인트 클라우드를 다수의 LOD 레이어로 분할하기 위해 반복적 방법을 이용하여 분할을 수행한다. 여기에서 분할하고자 하는 포인트 클라우드가 LOD 분할을 수행하는 레이어 수를 미리 설정할 수 있으며, 일반적으로 LOD 분할에 대한 사전 설정 레이어 수는 0보다 큰 정수인 M으로 표시될 수 있다.
이렇게 하면 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 결정한 후, 각 LOD 레이어에 대응되는 오른쪽 시프트 바트 수를 결정하기 위해 또한 본할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드에 대해 랭킹을 수행한다. 그러므로, 일부 실시예에서, 해당 방법에는 또한,
사전 설정 랭킹 정책에 의해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드에 대해 랭킹을 수행하고 랭킹된 후의 모턴 코드를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드로 결정하는 것이 포함된다.
설명해야 할 바로는, 사전 설정 랭킹 정책은 작은 순서에서 큰 순서로 오름차순 정책일 수 있고, 또한 큰 순서에서 작은 순서로 내림차순 정책일 수 있으며, 또한 다른 랭킹 정책(예를 들면, 무작위 랭킹 정책 등)일 수 있으며; 우선적으로, 사전 설정 랭킹 정책은 오름차순 정책이다. 다시 말하면, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드에 대하여 작은 순서부터 큰 순서까지의 오름차순으로 랭킹을 수행하고, 또한 랭킹된 후의 모턴 코드를 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드로 결정한다.
이렇게 하면, 모턴 코드를 랭킹한 후, 랭킹된 후의 모턴 코드에 의해 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 초기 오른쪽 시프트 비트 수를 결정하며; 여기에서 초기 오른쪽 시프트 비트 수는 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드가 0번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(N0으로 포시될 수 있음)를 나타낸다. 구체적으로, 일부 실시예에서 i가 0과 같을 때, S402의 경우, 상기 분할하고자 하는 포인트 클라우드의 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하는 것은 다음을 포함할 수 있다.
랭킹된 후의 모턴 코드에 대해 샘플링을 수행하여 K 개의 샘플링 포인트의 모턴 코드를 취득하며; 여기에서 K는 0보다 큰 정수이며;
상기 K개의 샘플링 포인트의 모턴 코드에 대해 오른쪽 시프트 처리를 수행하여 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트를 취득하며;
상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나에 의 이웃 노드에 대응되는 것을 갖는지 판단하며;
만약 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖지 않으면, 상기 K 개의 샘플링 포인트의 모턴 코드에 대해 오른쪽 시프트 처리를 수행하는 단계를 계속하게 수행하며;
만약 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖는다면, 상기 K개의 샘플링 포인트의 오른쪽 시프트 비트 수를 취득하며, 상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 초기 오른쪽 시프트 비트 수로 결정하며; 여기에서 상기 초기 오른쪽 시프트 비트 수는 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드가 0번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(N0)을 나타낸다.
다시 말하면, 초기 LOD 레이어 분할, 즉 0번째 LOD 레이어를 분할할 때, 먼저 랭킹된 후의 모턴 코드를 샘플링하여 K개의 샘플링 포인트의 모턴 코드를 취득하며; 그리고 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖을 때까지 이 K개의 샘플링 포인트의 모턴 코드에 대해 끊임없이 오른쪽 시프트 처리를 수행하며, 마지막으로 취득된 오른쪽 시프트 비트 수를 초기 오른쪽 시프트 비트 수(N0)로 한다. 구체적으로, 해당 초기 오른쪽 시프트 비트 수(N0)에 대한 획득 과정은 도5에 도시된 바와 같이 다음을 포함할 수 있다.
S501, 랭킹된 후의 모턴 코드를 샘플링하여 K개 샘플링 포인트의 모턴 코드를 취득하며;
S502, n = 0;
S503, n = n + 3;
S504, K개의 샘플링 포인트의 모턴 코드를 n 비트로 오른쪽 시프트 처리를 수행하며;
S505, 평균적으로 각 샘플링 포인트에 대응되는 이웃 노드 수량이 1보다 큰지 여부를 판단하며;
S506, N0 = n.
설명해야 할 바로는, n은 사전 설정 변수이고, n의 초기값은 0으로 설정되어 있으며, n+3을 이용하여 n의 값을 매번 업데이트시켜 후속 단계(S504), 즉 K 개의 샘플링 포인트의 모턴 코드를 n비트로 오른쪽 시프트 처리를 수행한다.
또한 단계(S505)의 경우, 만일 판단 결과가 예라고 판단한 경우 단계(S506)를 수행하여, 즉 초기 오른쪽 시프트 비트 수(N0)를 취득할 수 있으며; 만일 판단 결과가 아니오라고 판단한 경우 단계(S505)의 판단 결과가 예가 될 때까지 단계(S503)를 실행하도록 리턴하여 최종적으로 초기 오른쪽 시프트 비트 수(N0)를 취득해야한다.
또한 설명해야 할 바로는, K가 0보다 큰 정수라는 것이며, 예를 들어 K의 값을 100으로 설정할 수 있지만, 본 출원의 실시예는 구체적으로 제한하지 않는다. 다시 말하면, 초기 오른쪽 시프트 비트 수(N0)를 결정하는 과정에서 K의 값은 일반적으로 무작위로 설정된 것이며; 그러나 K가 값을 가지는 방식에는 또한 분할하고자 하는 포인트 클라우드에 대해 특성 분석을 수행하여 K의 값을 결정하는 것이 포함될 수 있다.
여기에서 K의 값은 일반적으로 분할하고자 하는 포인트 클라우드 중 포인트 수량, 공간 밀도 등 분할하고자 하는 포인트 클라우드의 특성 정보와 관련되며; 이렇게 하면 분할하고자 하는 포인트 클라우드를 특성 분석하여 K의 값을 결정하며, 나아가 초기 오른쪽 시프트 비트 수(N0)를 결정할 수 있다. K의 값은 분할하고자 하는 전체 포인트 클라우드의 특성과 결합되어 있기 때문에 인코딩/디코딩 효율을 높일 수 있다.
모턴 코드를 랭킹하고 나면 또한 최대 모턴 코드와 최소 모턴 코드 사이의 차이값에 의해 끊임없이 오른쪽 시프트 처리를 수행하여 초기 오른쪽 시프트 비트 수(N0)를 결정할 수 있다는 것을 이해할 수 있다. 구체적으로, 일부 실시예에서 i가 0과 같을 때, S402의 경우, 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하는 것은 다음을 포함할 수 있다.
랭킹된 후의 모턴 코드를 기반으로 최대 모턴 코드와 최소 모턴 코드를 결정하며;
상기 최대 모턴 코드와 상기 최소 모턴 코드의 차이값을 컴퓨팅하며;
상기 차이값에 대해 오른쪽 시프트 처리를 수행하며, 오른쪽으로 시프트한 후의 차이값이 사전 설정 범위를 만족할 때 상기 차이값의 오른쪽 시프트 비트 수를 취득하며;
상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드의 초기 오른쪽 시프트 비트 수로 결정한다.
설명해야 할 바로는, 모턴 코드가 작은 순서부터 큰 순서까지의 오름차순으로 랭킹되기 때문에, 랭킹된 후의 모턴 코드에 의해 최대 모턴 코드와 최소 모턴 코드가 결정되며, 나아가 최대 모턴 코드와 최소 모턴 코드의 차이값(delta로 표시될 수 있음)을 컴퓨팅할 수 있다.
delta 비트를 오른쪽으로 시프트함으로써, delta 비트가 오른쪽으로 N 비트를 시프트하면, 시프트한 후의 delta를 취득할 수 있어 시프트한 후의 delta가 사전 설정 범위를 만족시킬 수 있으며, 이때 N을 초기 오른쪽 시프트 비트 수(N0)로 결정할 수 있다. 여기에서 delta 비트가 오른쪽으로 N 비트로 시프트하면, 최대 모턴 비트가 오른쪽으로 N 비트로 시프트하고, 최소 모턴 비트가 오른쪽으로 N 비트로 시프트한 후, 이 둘의 차이값을 컴퓨팅하여 취득된 차이값은 바로 delta 비트가 오른쪽으로 N 비트를 시프트하는 것으로 볼 수 있다.
또한 설명해야 할 바로는, 사전 설정 범위는 평균적으로 각 샘플링 포인트에 대응되는 이웃 노드 수량이 1보다 큰지 여부를 나타낸다. 이렇게 하면 오른쪽으로 N비트로 시프트한 후의 차이값이 사전 설정 범위를 만족할 때 이때 오른쪽 시프트 비트 수(N)를 초기 오른쪽 시프트 비트 수(N0)로 결정하여 인코딩/디코딩 효율을 높일 수 있다.
나아가 초기 오른쪽 시프트 비트 수(N0), 즉 분할하고자 하는 포인트 클라우드 중 0번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수가 결정된 후 또한 초기 오른쪽 시프트 비트 수(N0)에 의해 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정할 수 있으며, 여기에서 i는 0과 같지 않는다. 구체적으로, 일부 실시예에서 i가 0과 같을 때, S402의 경우, 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하는 것에는
제1 사전 설정 컴퓨팅 모델을 이용하여 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하는 것이 포함될 수 있다.
나아가, 일부 실시예에서 상기 제1 사전 설정 컴퓨팅 모델을 이용하여 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하는 것에는,
i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 취득하며;
i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 사전 설정값과 겹쳐서 중첩값을 취득하며;
상기 중첩값을 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)로 결정하는 것이 포함될 수 있다.
다시 말하면, 후속으로 LOD 레이어를 분할할 때 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수는 이전 LOD 레이어(i-1번째 LOD 레이어)에 대응되는 오른쪽 시프트 비트 수에 의해 결정된다. 여기에서 제1 사전 설정 컴퓨팅 모델은 다음과 같으며,
Figure pct00044
(2)
여기에서 ,
Figure pct00045
는 현재 LOD 레이어의 오른쪽 시프트 비트 수, 즉 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수를 나타내며;
Figure pct00046
는 이전 LOD 레이어의 오른쪽 시프트 비트 수, 즉 i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수를 내타내며; m은 사전 설정값이다.
설명해야 할 바로는, 사전 설정값은 실제의 포인트 클라우드 공간 상황에 의해 구체적인 설정을 수행할 수 있으며; 바람직하게 사전 설정값은 3과 같을 수 있지만, 본 출원의 실시예는 이에 대해 제한하지 않는다.
나아가 일부 실시예에서, 해당 방법에는 또한
상기 분할하고자 하는 포인트 클라우드에 대해 특성 분석을 수행하여 상기 사전 설정값을 결정하는 것이 포함될 수 있다.
여기에서 사전 설정값은 일반적으로 분할하고자 하는 포인트 클라우드 중 포인트의 수량, 공간 밀도 등 분할하고자 하는 포인트 클라우드의 특성 정보와 관련되며; 이렇게 하면 분할하고자 하는 포인트 클라우드를 특성 분석하여 사전 설정값을 결정할 수 있다. 여기에서, 각 LOD 레이어에 대응되는 사전 설정값은 동일할 수 있고 각 LOD 레이어에 대응되는 사전 설정값도 다를 수 있으며; 예를 들면 분할하고자 하는 포인트 클라우드의 특성을 기반으로 서로 다른 LOD 레이어의 오른쪽 시프트 비트 수를 컴퓨팅할 때 대응되는 사전 설정값을 대응형으로 조정할 수 있어 서로 다른 구역에 대응되는 인접 구역을 더 정확하게 조회할 수 있어 예측 성능을 더욱 향상시킬 수 있다.
이렇게 하면 각 LOD 레이어에 대응되는 오른쪽 시프트 비트 수를 결정한 후, 각 LOD 레이어에 대응되는 오른쪽 시프트 비트 수에 의해 오른쪽 시프트 처리를 하여 각 LOD 레이어의 분할을 수행할 수 있다.
S403, i가 M-1보다 작거나 같은지 여부를 판단하며;
설명해야 할 바로는, M은 LOD 분할의 사전 설정 레이어 수를 나타내며, 여기에서 M은 0보다 큰 정수이다. i가 M-1보다 작거나 같을 때 각 LOD 레이어를 분할해야 하며, 즉 단계(S404 내지 S408)를 수행하며; i가 M-1보다 클 때 각 LOD에 대한 분할이 완료되며, 즉 단계(S409)를 수행한다.
S404, i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해, 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽으로Ni 비트로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며;
S405, i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며;
S406, 결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하며;
S407, 상기 현재 노드를 i번째 LOD 레이어로 분할하고 상기 이웃 노드를 i+1번째 LOD 레이어로 분할하며;
설명해야 할 바로는, 사전 설정 캐시 구역은 inputMorton으로 표시될 수 있다. 주로 각 LOD 레이어를 분할하기 전에, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽으로 시프트 처리를 수행한 후, 이를 inputMorton에 저장하여 후속으로 모턴 코드를 통해 대응되는 이웃 노드를 조회할 수 있도록 한다.
설명해야 할 바로는, 모턴 코드를 통해 대응되는 이웃 노드를 조회하기 전에 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 먼저 결정해야 한다. 구체적으로, 일부 실시예에서, S405의 경우 상기 i 번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하는 것에는,
i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 기반으로, 상기 i번째 LOD 레이어 중 현재 노드의 모턴 코드에 대해 오른쪽 시프트 처리를 수행하며;
오른쪽으로 시프트한 후의 모턴 코드를 상기 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드로 결정하는 것이 포함될 수 있다.
여기에서 현재 노드의 모턴 코드는 childrenMorton로 표시되고, 부모 노드의 모턴 코드는 parentMorton으로 표시되며, 둘 사이의 대응 관계는 다음과 같다.
Figure pct00047
(3)
다시 말하면, i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 기반으로 i번째 LOD레이어 중 현재 노드의 모턴 코드(childrenMorton로 표시)에 대해 오른쪽으로Ni 비트로 시프트 처리한 후 오른쪽 시프트한 후의 모턴 코드를 i번째 LOD레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드(parentMorton으로 표시)로 결정할 수 있다.
나아가, 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정한 후, 또한 부모 노드의 모턴 코드에 의해 부모 노드에 대응되는 이웃 노드를 검색할 수 있다. 구체적으로, 일부 실시예에서, S406의 경우, 결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하는 것에는,
결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드를 결정하며;
상기 이웃 노드의 모턴 코드에 의해, 상기 사전 설정 저장 구역 내에서 상기 이웃 노드의 모턴 코드에 대응되는 이웃 노드를 검색하는 것이 포함될 수 있다.
나아가, 결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드가 결정되는 것에는,
결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드와 동일 평면, 동일 선상 및 동일 포인트에 있는 모든 이웃 노드의 모턴 코드를 컴퓨팅하여 제1 수량 개의 이웃 노드의 모턴 코드를 취득하며;
상기 제1 수량 개의 이웃 노드의 모턴 코드를 각각 현재 노드의 모턴 코드와 비교하며;
이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 작을 때, 상기 이웃 노드의 모턴 코드를 폐기하며;
이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 크거나 같을 때, 상기 이웃 노드의 모턴 코드를 보류하여 제2 수량 개의 이웃 노드의 모턴 코드를 취득하며; 여기에서 상기 제2 수량은 상기 제1 수량보다 작거나 같으며;
상기 제2 수량 개의 이웃 노드의 모턴 코드를 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드로 결정하는 것이 포함될 수 있다.
설명해야 할 바로는, 부모 노드의 모턴 코드가 결정된 후, 부모 노드와 동일 평면(총 6개의 이웃 노드), 동일 선상(총 12개의 이웃 노드) 및 동일 포인트(총 8개의 이웃 노드)의 모턴 코드를 컴퓨팅할 수 있으며, 부모 노드 자체의 모턴 코드를 더하면 제1 수량(예를 들면 27) 개의 이웃 노드의 모턴 코드를 취득할 수 있다. 모턴 코드의 오름차순으로 LOD 레이어를 분할하기 때문에 27 개의 이웃 노드를 제2 수량(예를 들면 20) 개의 이웃 노드로 축소할 수 있으며; 구체적으로 27개의 이웃 노드의 모턴 코드를 각각 현재 노드의 모턴 코드와 비교하며, 만일 이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 작다면, 해당 이웃 노드의 모턴 코드를 폐기할 수 있으며, 예를 들어 7개의 이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 작다면, 이 7개의 이웃 노드의 모턴 코드를 없애고 나머지 20개의 이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 크거나 같으므로 이 나머지 20개의 이웃 노드의 모턴 코드만 보류하며; 여기에서 나머지 20개의 이웃 노드에는 현재 노드에 대응되는 부모 노드, 동일 평면에 있는 이웃 노드(3개 이웃 노드), 동일 선상에 있는 이웃 노드(9개 이웃 노드) 및 동일 포인트에 있는 이웃 노드(7개 이웃 노드)가 포함될 수 있다.
예시적으로, 도6을 참조하여, 이에 본 출원의 실시예가 제공한 현재 노드와 이웃 노드의 공간 관계 도면을 도시한다. 도6에서 굵게 표시된 공간 블록은 현재 노드이며; 도6에서 알 수 있는 바와 같이, 해당 공간 블록과 동일 평면에 6개의 이웃 노드가 존재하고, 해당 공간 블록과 동일 선상에 12개의 이웃 노드가 존재하며, 해당 공간 블록과 동일 포인트에 8개의 이웃 노드가 존재한다. 이와 같이, 결정된 부모 노드의 모턴 코드에 의해 부모 노드에 대응되는 이웃 노드의 모턴 코드를 결정할 수 있으며; 이웃 노드의 모턴 코드를 이용하여 사전 설정 저장 구역(inputMorton) 내에서 대응되는 이웃 노드를 검색할 수 있다.
이렇게 하면 i번째 LOD레이어에 대해 이웃 노드를 검색하여 취득한 후 현재 노드를 i번째 LOD레이어에 분할하며, 즉 세트O(k)에 넣으며, 이웃 노드를 i+1번째 LOD레이어로 분할하며, 즉 세트L(k)에 넣으며; 여기에서 k는 0보다 크거나 같은 정수이며; i번째 LOD레이어에 대한 분할을 구현할 수 있다.
나아가 이웃 노드의 예측 속성의 효과를 향상시키기 위해 또한 인접 구역의 센트로이드를 컴퓨팅한 다음 센트로이드에 가장 가까운 포인트를 타겟 노드로 하여 이웃 노드를 예측할 수 있다. 따라서 일부 실시예에서는 제1 수량 개의 이웃 노드의 모턴 코드를 취득한 후 해당 방법은 또한,
상기 분할하고자 하는 포인트 클라우드를 기반으로 상기 i번째 LOD 레이어에서 현재 노드에 대응되는 인접 구역을 결정하며;
상기 인접 구역의 센트로이드를 컴퓨팅하고, 상기 현재 노드 및 상기 제1 수량 개의 이웃 노드에서 상기 센트로이드에 가장 가까운 노드를 선택하여 타겟 노드로 하며;
상기 타겟 노드를 i번째 LOD 레이어로 분할하고 나머지 노드를 i+1 번째 LOD 레이어로 분할하는 것이 포함될 수 있다.
설명해야 할 바로는, 나머지 노드는 현재 노드와 제1 수량 개의 이웃 노드 중 타켓 노드를 제외한 노드를 나타낸다. 이렇게 하면 현재 노드의 부모 노드에 대응되는 이웃 노드에 의해 i번째 LOD 레이어에서 현재 노드에 대응되는 이웃 구역을 결정할 수 있으며; 그런 다음 해당 인접 구역의 센트로이드를 컴퓨팅하고 나서 현재 노드 및 제1 수량 개의 이웃 노드에서 해당 센트로이드에 가장 가까운 노드를 선택하여 타겟 노드로 하며; 이렇게 하면 타겟 노드를 i번째 LOD 레이어로 분할하고 나머지 노드를 i+1번째 LOD 레이어로 분할하며, 또한 i번째 LOD 레이어에 대한 분할을 구현할 수 있다.
또한 설명해야 할 바로는, 현재 노드에 대응되는 부모 노드의 이웃 노드에 의해, i번째 LOD 레이어에서 현재 노드에 대응되는 인접 구역이 결정된 후 또한 인접 구역을 다른 공간 구역으로 분할하고, 다음 다른 공간 구역에서 대응되는 포인트를 선택하여 타켓 노드로 할 수 있으며; 이렇게 하면 타겟 노드를 i번째 LOD 레이어로 분할하고 나머지 노드를 i+1번째 LOD 레이어로 분할하며, 또한 i번째 LOD 레이어의 분할을 구현할 수 있으며; 또한 인접 구역을 더 공간적으로 분할하기 때문에 예측 성능을 더욱 향상시킬 수 있다.
S408, i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며;
S409, i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정한다.
설명해야 할 바로는, i번째 LOD 레이어를 분할한 후 i=i+1을 이용하여 i의 값을 업데이트한 다음 단계(S403)를 실행하도록 리턴하며, 즉 i가 M-1보다 작거나 같은지 여부를 판단하며; M-1번째 LOD 레이어에 대한 분할이 완료될 때까지, 즉 i가 M과 같을 때 분할하고자 하는 포인트 클라우드의 LOD 레이어 분할이 완료되었음을 나타내며, 이 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정할 수 있다.
또한 설명해야 할 바로는, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽 시프트 처리한 후, 다른 세트를 취득할 수 있으며, 즉 분할하고자 하는 포인트 클라우드 중 포인트를 클러스터링하고, 공간의 인접한 구역(즉 공간이 상대적으로 집중)의 포인트를 동일한 세트로 분할하며; 그리고 각 세트에 대해 LOD 레이어의 분할을 수행한다. 구체적으로 일부 실시예에서, 해당 방법에는 또한,
상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽으로 시프트 처리하여 다수의 세트를 취득하며; 여기에서 각 세트에는 상기 분할하고자 하는 포인트 클라우드 중의 분할하고자 하는 포인트 클라우드의 일부가 포함되며;
상기 다수의 세트 중 각 세트에 대해, 각 세트에 포함된 분할하고자 하는 포인트 클라우드의 일부에 대해 LOD 레이어 분할을 수행하는 단계를 각각 수행하는 것이 포함될 수 있다.
다시 말하면, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 오른쪽 시프트 비트 수를 조정하는 것을 통해 분할하고자 하는 포인트 클라우드를 다수의 세트로 분할하며, 각 세트에 분할하고자 하는 포인트 클라우드 중의 분할하고자 하는 포인트 클라우드의 일부, 즉 일부의 포인트가 포함되며; 각 세트에 대해, 본 출원의 실시예의 분할 방법을 이용하여, 모턴 코드를 기반으로 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하고, 또한 이러한 분할 방식은 공간의 인접한 구역의 포인트 클라우드를 동일한 세트로 분할함으로써 예측 성능을 더 향상시킬 수 있다.
본 출원의 실시예에서, 모턴 코드를 기반으로 이웃 노드를 찾는 방식으로 LOD 레이어의 분할을 수행할 수 있다. 구체적으로, 현재 노드의 모턴 코드를 이용하여 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하며, 즉 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측하는 방식이든, 또는 현재 노드의 모턴 코드를 이용하여 포인트 클라우드 공간의 인접 구역을 분할하며, 즉 포인트 클라우드 공간 중 공간 인접한 부분을 분할하여 다른 세트(또는 클러스터링)를 취득하든, 모두 이웃 노드를 기반으로 속성 예측을 수행하는 효과를 향상시켜 인코딩 효율을 높일 수 있다.
다시 말하면, 모턴 코드를 기반으로 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하고 현재 노드를 샘플링 포인트로 이용하여 이웃 노드를 예측하며; 이렇게 하면 포인트 클라우드의 공간 분포 특성과 포인트 클라우드 사이의 공간 거리를 종합적으로 고려하여 이웃 노드를 기반으로 속성 예측을 수행하는 효과를 높일 수 있다. 다시 말하면, 성능에 거의 영향을 주지 않는 전제 하에서 속성 부분의 재구성 품질을 향상시킬 수 있고, 또한 예측 속성의 인코딩/디코딩 시간과 컴퓨팅 복잡성을 줄여 인코딩/디코딩 효율을 높일 수 있다. 여기에서, 피크 신호 대 잡음비(Peak Signal to Noise Ratio, PSNR)는 픽처 평가의 객관적인 기준이 될 수 있으며, 또한 PSNR이 클수록 픽처의 품질이 좋아지며; 또한 BD-rate는 성능의 좋고 나쁨을 측정하는 파라미터로 이용될 수 있으며, BD-rate가 음수일 경우 동일한 PSNR 조건에서 코드 비율이 감소하고 성능이 향상됨을 나타내며; 이 기초 상에서, BD-rate의 절대값이 클수록 성능의 이득이 커진다. 표1에 도시된 바와 같이, 성능에 영향을 주지 않는 전제 하에서, 속성 부분의 컬러 채널(U와 V로 표시)의 비트 레이트를 줄여 재구성 포인트 클라우드의 BD-rate를 더 크게 향상시킬 수 있다.
포인트 클라우드 파일 초기 오른쪽 시프트 비트 수 BD-속성 time
U V Encoder_time Decoder_time
frog_00067_vox12 6 -7.4% -16.6% 95% 89%
facade_00064_vox11 6 13.3% -4.5% 96% 86%
house_without_roof_vox12 6 -3.4% -3.3% 88% 78%
평균 이득(Average) 6 -0.8% -8.1% 93% 84%
본 출원의 실시예가 분할 방법을 제공하는 바, 분할하고자 하는 포인트 클라우드를 기반으로 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며; 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며, i는 0보다 크거나 같은 정수이고, Ni는 0보다 큰 정수이며; i가 M-1보다 작거나 같은지 여부를 판단하고, M은 LOD 분할의 사전 설정 레이어 수를 나타내며; i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며; i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며; 결정된 부모 노드의 모턴 코드에 의해 사전 설정 저장 구역 내에서 부모 노드에 대응되는 이웃 노드를 검색하며; 현재 노드를 i번째 LOD 레이어로 분할하고, 이웃 노드를 i+1번째 LOD 레이어로 분할하며; i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며; i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하며; 이렇게하면, 본 출원의 기술 방안은 현재 노드와 이웃 노드 사이의 공간적 거리를 컴퓨팅하지 않고, LOD 레이어를 분할할 때마다, 모턴 코드를 이용하여 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하고, 또한 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측함으로써 컴퓨팅 복잡성을 줄일 수 있을 뿐만 아니라 또한 포인트 클라우드의 공간적 분포 특성을 고려하기 때문에 이웃 노드의 예측 속성의 정확성을 높이고 속성 부분의 재구성 품질을 향상시키며, 이는 인코딩 비트 오버헤드를 효과적으로 줄일 수 있어 나아가 인코딩/디코딩 효율을 향상시킨다.
전술한 실시예와 같은 발명 구상을 기반으로, 도7을 참조하여, 이에 본 출원의 실시예가 제공하는 분할 방법의 상세한 흐름 도면을 도시한다. 도7에 도시된 바와 같이, 인코더 또는 디코더에 적용하며, 해당 상세한 흐름에는 다음과 같은 과정이 포함될 수 있다.
S701, 분할하고자 하는 포인트 클라우드를 기반으로 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며;
S702, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오름차순으로 랭킹하며;
설명해야 할 바로는, 분할하고자 하는 포인트 클라우드의 경우 해당 분할하고자 하는 포인트 클라우드에 N 개의 포인트를 포함하고, 각 포인트가Pi로 표시되고 각 포인트Pi에 대응되는 모턴 코드가 Mi이고, i=0,1,2,…,N-1이라고 가정한다. 다시 말하면 분할하고자 하는 포인트 클라우드 중 포인트에 대응되는 모턴 코드(packVoxel로 표시될 수 있음)를 먼저 컴퓨팅할 수 있으며; 그런 다음 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 작은 것부터 큰 것까지의 오름차순으로 랭킹하고 랭킹된 후의 모턴 코드를 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드로 결정한다.
S703, lodindex < lodcount인지 여부를 판단하며;
설명해야 할 바로는, lodindex는 제lodindex 개의 LOD 레이어과 같이 현재 분할된 몇 번째 LOD 레이어를 나타내며; lodcount는 사전 설정된 분할하고자 하는 포인트 클라우드의 총 분할 레이어 수를 나타내며; 여기에서 lodcount는 0보다 큰 정수이고 lodindex는 0보다 크거나 같고 또한 lodcount-1보다 작거나 같은 정수이다.
설명해야 할 바로는, lodindex 가 < lodcount 인 경우 결과가 예로 판단될 때 단계(S704)를 수행할 수 있으며; lodindex ≥lodcount인 경우 즉 결과가 아니오로 판단될 때 흐름을 종료할 수 있다.
S704, 만일 결과가 예로 판단되면, lodindex==0인지 여부를 판단하며;
S705, 만일 결과가 예로 판단되면, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 초기 오른쪽 시프트 비트 수(N)를 컴퓨팅하며;
S706, 만일 결과가 아니오로 판단되면, Ncurlod=Nlastlod+3이고, Ncurlod를 N으로 결정하며;
설명해야 할 바로는, Ncurlod는 현재 처리된 LOD 레이어에 대응되는 오른쪽 시프트 비트 수를 나타내고, Nlastlod는 이전에 처리된 LOD 레이어에 대응되는 오른쪽 시프트 비트 수를 나타내며; 예를 들어 0 번째 LOD 레이어에 대응되는 초기 오른쪽 시프트 비트 수가 4라면, 첫 번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수는 7이고, 두 번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수는 10이고, 세 번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수는 13 등등이며, 순차적으로 각 LOD 레이어에 대응되는 오른쪽 시프트 비트 수를 취득할 수 있다.
이렇게 하면 lodindex 가 < lodcount 일 때 또한 나아가 lodindex가 0과 같은지 여부를 판단하며; 만일 lodindex가 0과 같으면, 즉 결과가 예로 판단될 때 단계(S705), 즉 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 초기 오른쪽 시프트 비트 수(N)를 컴퓨팅할 수 있으며; 만일 lodindex가 0과 다르면, 즉 결과가 아니오로 판단될 때 단계(S706), 즉Ncurlod=Nlastlod+3을 수행한 다음 Ncurlod를 N으로 결정하여 후속으로 단계(S707)를 수행할 수 있다.
S707, 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽으로 N 비트로 시프트하고 오른쪽으로 시프트한 후의 모턴 코드를 inputMorton에 저장하며;
S708, pointindex < inputMorton.size 인지 여부를 판단하며;
설명해야 할 바로는, pointindex는 inputMorton에 있는 현재 노드의 인덱스 번호를 나타내고, inputMorton.size는 inputMorton의 길이를 나타낸다. 이렇게 하면 pointindex < inputMorton.size일 때, 즉 결과가 예로 판단되면 현재 노드가 여전히 제 lodindex 개의 LOD 레이어에 있음을 나타내며, 이 때 단계(S709)를 수행해야 하며; pointindex ≥inputMorton.size일 때, 즉 결과가 아니오로 판단되면 현재 노드가 제 lodindex 개의 LOD 레이어에 없음을 나타내며, 이 때 단계(S710)를 수행해야 한다.
S709, 만일 결과가 예로 판단되면, 현재 노드를 세트(O(lodindex)에 추가하고, 현재 노드에 대응되는 이웃 노드를 세트L(lodindex)에 추가하며;
S710, pointindex=pointindex+1이고 또한 단계(S708)를 실행하도록 리턴하며;
S711, 만일 결과가 아니오로 판단되면 lodindex=lodindex+1이고 또한 단계(S703)를 실행하도록 리턴한다.
설명해야 할 바로는, pointindex < inputMorton.size 일 때 현재 노드를 세트O (lodindex) 에 추가하며, 즉 현재 노드를 lodindex 번째 LOD 레이어로 분할하며; 동시에 현재 노드에 대응하는 이웃 노드를 세트L(lodindex)에 추가하며, 즉 현재 노드에 대응하는 이웃 노드를 lodindex+1 번째의 LOD 레이어로 분할하며; 그런 다음 pointindex=pointindex+1이고 또한 pointindex=inputMorton.size-1까지 단계(S708)를 실행하도록 리턴하며, lodindex 번째 LOD 레이어의 분할을 구현한다. 나아가 pointindex ≥inputMorton.size일 때 lodindex 번째 LOD 레이어의 분할이 완료되었음을 나타내며, 이 경우 lodindex=lodindex+1이고 또한 lodindex=lodcount-1 까지 단계(S703)를 실행하도록 리턴해야 하여lodcount-1 번째 LOD 레이어의 분할을 구현하며; 이렇게 하면 분할하고자 하는 포인트 클라우드의LOD 분할을 구현하며; 여기에서 0번째 LOD 레이어부터 lodcount-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정한다.
구체적으로, 분할하고자 하는 포인트 클라우드를 랭킹한 후의 모턴 코드를 샘플링하여 K 개의 샘플링 포인트의 모턴 코드를 취득할 수 있고 또한 이 K 개의 샘플링 포인트의 모턴 코드를 오른쪽으로 시프트하는 것을 통해, 분할하고자 하는 포인트 클라우드에 대응되는 초기 오른쪽 시프트 비트 수(N)를 취득할 수 있으며, 나아가 각 LOD 레이어에 대응되는 오른쪽 시프트 비트 수를 결정할 수 있다. 그리고 각 LOD 레이어에 대해 분할할 때, 입력된 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽으로 N 비트로 시프트하고 또한 오른쪽으로 시프트한 후의 모턴 코드를 inputMorton에 저장한다. 이때 현재 노드의 부모 노드에 대응되는 모턴 코드를 컴퓨팅하고, 부모 노드를 통해 이의 이웃 노드의 모턴 코드를 컴퓨팅할 수 있으며, 마지막으로 inputMorton에서 이웃 노드의 모턴 코드에 대응되는 이웃 노드를 조회하여 현재 노드를 O(lodindex)로 분할하고, 동시에 조회된 이웃 노드를 L(lodindex)로 분할한다.
본 출원의 실시예에서, 현재 포인트와 이웃 포인트 사이의 공간 거리를 컴퓨팅할 필요가 없으며, 일반적으로, 공간에서 현재 노드와 동일한 부모 노드에 있고 또한 현재 노드와 동일 평면 또는 동일 선상 및 동일 포인트에 있는 이웃 노드가 현재 노드와의 공간 거리가 모두 매우 가까운 것으로 간주할 수 있고 같은 이웃 구역에 속한다고 볼 수 있으며, 이 때 모턴 코드를 기반으로 현재 노드의 부모 노드에 대응되는 이웃 노드를 조회할 수 있으며, 다른 거리 임계값을 기반으로 이웃 노드를 조회하는 기존의 방식보다, 본 출원의 실시례의 분할 방법은 서로 다른 임계값 파라미터를 설정할 필요가 없고, 매번 포인트와 포인트 사이의 공간 거리를 컴퓨팅할 필요가 없어 컴퓨팅의 복잡성을 크게 줄일 수 있다.
더 나아가, 본 출원의 실시예에서, LOD 레이어를 분할할 때마다, 현재 노드의 부모 노드에 대응되는 이웃 노드를 판단하고 또한 현재 노드를 세트O(k)에 추가하고, 현재 노드에 대응하는 이웃 노드를 세트L(k)에 추가하기 때문에, 단순히 포인트와 포인트 사이의 공간 지오메트리 거리만 고려하는 것이 아니라, 공간 분포의 기초에서 포인트 클라우드의 공간 분포 특성도 고려해야 하며, 즉 공간 중 포인트의 공간 지오메트리 거리와 공간 중 포인트 클라우드의 공간 분포 특성을 종합적으로 고려함으로써 예측 성능을 향상시킬 수 있고 더 좋은 인코딩/디코딩 성능을 취득할 수 있다. 특히 주의해야 할 바로는, 본 출원의 실시예의 분할 방법은 단지 오리지널 포인트 클라우드의 모턴 코드를 기반으로 현재 노드의 이웃 노드를 조회하고 샘플링을 수행하는 것일 뿐, 매번 모턴 코드의 인덱스를 통해 일정한 범위 내에서 가장 가까운 이웃을 조회하는 오리지널 분할 방식에 비해 컴퓨팅의 복잡성을 크게 줄일 수 있다.
본 실시예가 분할 방법을 제공하는 바, 해당 분할 방법은 인코더 또는 디코더에 적용할 수 있다. 상술한 실시예를 통해 전술한 실시예의 구체적인 구현을 상세히 설명하며, 여기에서 알 수 있는 바와 같이, 본 출원의 기술 방안는 현재 노드와 이웃 노드 사이의 공간 거리를 컴퓨팅하지 않고, LOD 레이어를 분할할 때마다, 모턴 코드를 이용하여 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하고, 또한 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측함으로써 컴퓨팅 복잡성을 줄일 수 있을 뿐만 아니라, 또한 포인트 클라우드의 공간 분포 특성을 고려하기 때문에 이웃 노드의 예측 속성의 정확성을 높이고 속성 부분의 재구성 품질을 향상시키며, 이는 인코딩 비트 오버헤드를 효과적으로 줄일 수 있어 나아가 인코딩/디코딩 효율을 더 향상시킨다.
전술한 실시예와 같은 발명 구상을 기반으로, 도8을 참조하여, 이에 본 출원의 실시예가 제공하는 인코더(80)의 구성 구조 도면을 도시한다. 도8에 도시된 바와 같이, 해당 인코더(80)는 제1 컴퓨팅 유닛(801), 제2 결정 유닛(802), 제1 판단 유닛(803), 제1 오른쪽 시프트 유닛(804), 제1 검색 유닛(805) 및 제1 분할 유닛(806)을 포함할 수 있으며, 여기에서,
제1 컴퓨팅 유닛(801)은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며;
제1 결정 유닛(802)은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며;
제1 판단 유닛(803)은 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; 여기에서 M은 LOD 분할의 사전 설정 레이어 수를 나타내며;
제1 오른쪽 시프트 유닛(804)은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며;
제1 결정 유닛(802)은 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며;
제1 검색 유닛(805)은 결정된 부모 노드의 모턴 코드를 기반으로 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며;
제1 분할 유닛(806)은 상기 현재 노드를 i번째 LOD 레이어로 분할하고, 상기 이웃 노드를 i+1 번째 LOD 레이어로 분할하도록 구성되며;
제1 판단 유닛(803)은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하도록 구성되며;
제1 결정 유닛(802)은 또한 i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정되도록 구성된다.
상술한 방안에서 도8을 참조하면, 인코더(80)는 또한 제1 랭킹 유닛(807)을 포함할 수 있으며, 사전 설정 랭킹 정책에 의해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 랭킹하여 랭킹된 후의 모턴 코드를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드로 결정하도록 구성된다.
상술한 방안에서 도8을 참조하면 인코더(80)는 또한 제1 샘플링 유닛(808)을 포함할 수 있으며, 랭킹된 후의 모턴 코드를 샘플링하여 K 개의 샘플링 포인트의 모턴 코드를 취득하도록 구성되며; 여기에서 K는 0보다 큰 정수이며;
제1 오른쪽 시프트 유닛(804)은 또한 상기 K 개의 샘플링 포인트의 모턴 코드를 오른쪽 시프트 처리하여 모턴 코드의 오른쪽 시프트한 후에 대응되는 K개의 샘플링 포인트를 취득하도록 구성되며;
제1 판단 유닛(803)은 또한 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖는지 여부를 판단하며; 및 만일 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖지 않으면, 상기 K 개의 샘플링 포인트의 모턴 코드에 대해 오른쪽 시프트 처리를 수행하는 단계를 계속하게 수행하며; 및 만약 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K 개의 샘플링 포인트가. 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖는다면, 상기 K 개의 샘플링 포인트의 오른쪽 시프트 비트 수를 취득하며, 상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 초기 오른쪽 시프트 비트 수로 결정하도록 구성되며; 여기에서 상기 초기 오른쪽 시프트 비트 수는 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드가 0번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(N0)를 나타낸다.
상술한 방안에서 도8을 참조하면, 인코더(80)는 또한 제1 분석 유닛(809)을 포함할 수 있으며, 상기 분할하고자 하는 포인트 클라우드의 특성을 분석하여 K의 값을 결정하도록 구성된다.
상술한 방안에서, 제1 결정 유닛(802)은 또한 랭킹된 후의 모턴 코드를 기반으로 최대 모턴 코드와 최소 모턴 코드를 결정하도록 구성되며;
제1 컴퓨팅 유닛(801)은 또한 상기 최대 모턴 코드와 상기 최소 모턴 코드의 차이값을 컴퓨팅하도록 구성되며;
제1 오른쪽 시프트 유닛(804)은 또한 상기 차이값을 오른쪽으로 시프트하며, 오른쪽 시프트한 후의 차이값이 사전 설정 범위를 만족할 때 상기 차이값의 오른쪽 시프트 비트 수를 취득하도록 구성되며;
제1 결정 유닛(802)은 또한 상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드의 초기 오른쪽 시프트 비트 수로 결정하도록 구성된다.
상술한 방안에서 제1 결정 유닛(802)은 또한 i가 0과 같지 않을 때 제1 사전 설정 컴퓨팅 모델을 이용하여 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성된다.
상술한 방안에서 제1 결정 유닛(802)은 구체적으로 i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 취득하며; 및 i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 사전 설정값과 겹쳐서 중첩값을 취득하며; 및 상기 중첩값을 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)로 결정하도록 구성된다.
상술한 방안에서, 제1 분석 유닛(809)은 또한 상기 분할하고자 하는 포인트 클라우드에 대해 특성 분석을 수행하고, 상기 사전 설정값을 결정하도록 구성된다.
상술한 방안에서 상기 사전 설정값은 3과 같다.
상술한 방안에서 제1 오른쪽 시프트 유닛(804)은 또한 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 기반으로 상기 i번째 LOD 레이어 중 현재 노드의 모턴 코드를 오른쪽 시프트 처리를 수행하도록 구성되며;
제1 결정 유닛(802)은 또한 오른쪽으로 시프트한 후의 모턴 코드를 상기 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드로 결정하도록 구성된다.
상술한 방안에서, 제1 결정 유닛(802)은 또한 결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드를 결정하도록 구성되며;
제1 검색 유닛(805)은 구체적으로 상기 이웃 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 이웃 노드의 모턴 코드에 대응되는 이웃 노드를 검색하도록 구성된다.
상술한 방안에서 제1 컴퓨팅 유닛(801)은 또한 결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드와 동일 평면, 동일 선상 및 동일 포인트에 있는 모든 이웃 노드의 모턴 코드를 컴퓨팅하여 제1 수량 개의 이웃 노드의 모턴 코드를 취득하도록 구성되며;
제1 결정 유닛(802)은 구체적으로 상기 제1 수량 개의 이웃 노드의 모턴 코드를 각각 현재 노드의 모턴 코드와 비교하며; 및 이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 작을 때, 상기 이웃 노드의 모턴 코드를 폐기하며; 및 이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 크거나 같을 때, 상기 이웃 노드의 모턴 코드를 보류하여 제2 수량 개의 이웃 노드의 모턴 코드를 취득하도록 구성되며; 여기에서 상기 제2 수량은 상기 제1 수량보다 작거나 같으며; 및 상기 제2 수량 개의 이웃 노드의 모턴 코드를 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드로 결정한다.
상술한 방안에서, 제1 결정 유닛(802)은 또한 상기 분할하고자 하는 포인트 클라우드를 기반으로 상기 i번째 LOD 레이어 중 현재 노드에 대응되는 인접 구역을 결정하도록 구성되며;
제1 컴퓨팅 유닛(801)은 또한 상기 인접 구역의 센트로이드를 컴퓨팅하며, 상기 현재 노드와 상기 제1 수량 개의 이웃 노드 중에서 상기 센트로이드에 가장 가까운 노드를 선택하여 타겟 노드로 하도록 구성되며;
제1 분할 유닛(806)은 또한 상기 타겟 노드를 i번째 LOD 레이어로 분할하고 나머지 노드를 i+1 번째 LOD 레이어로 분할하도록 구성되며; 여기에서 상기 나머지 노드는 상기 현재 노드와 상기 제1 수량 개의 이웃 노드에서 상기 타겟 노드를 제외한 노드를 나타낸다.
상술한 방안에서 제1 오른쪽 시프트 유닛(804)은 또한 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽 시프트하여 다수의 세트를 취득하도록 구성되며; 여기에서 각 세트에는 상기 분할하고자 하는 포인트 클라우드 중의 분할하고자 하는 포인트 클라우드의 일부가 포함되며;
제1 분할 유닛(806)은 또한 상기 다수의 세트 중 각 세트에 대해, 각 세트에 포함된 분할하고자 하는 포인트 클라우드의 일부에 대해 LOD 레이어를 분할을 수행하는 단계를 각각 수행하도록 구성된다.
본 실시예에서, “유닛”은 일부 회로, 일부 프로세서, 일부 프로그램 또는 소프트웨어 등일 수 인 것을 이해할 것이며, 또한 모듈일 수 있도 있고, 비모듈일 수도 있는 것은 자명하다. 그리고, 본 실시예 중의 각 구성 부분은 하나의 처리 유닛 중에 집적될 수도 있고, 또한 각 유닛의 독립적인 물리적 존재일 수 있으며, 또한 두 개 또는 두 개 이상의 유닛이 하나의 유닛에 집적되어 있을 수 있다. 상술한 집적된 유닛은 하드웨어의 형식으로 구현될 수도 있고, 또한 소프트웨어 기능 모듈의 형식으로 구현될 수도 있다.
만일 집적된 유닛은 소프트웨어 기능 모듈의 형식으로 구현되고 또한 독립적인 제품으로 판매 또는 이용될 때, 하나의 컴퓨터 판독가능한 저장 매체에 저장할 수 있어, 이를 기반으로 본 실시예의 기술방안의 본질적이나 또는 종래 기술에 대해 공헌이 있는 부분 또는 해당 기술방안의 전부 또는 일부는 소프트웨어 제품의 형식으로 구현될 수 있고, 해당 컴퓨터 소프트웨어 제품은 하나의 저장 매체에 저장될 수 있는 바, 일부 명령이 포함되어 한 컴퓨터 설비(개인용 컴퓨터, 서버 또는 네트워크 설비 등일 수 있음) 또는 processor(프로세서)로 하여금 본 출원의 각 실시예의 방법의 전부 또는 일부 단계를 구현하게 할 수 있다. 전술한 저장 매체에는 USB 메모리, 시프트 하드, 읽기전용 메모리(Read Only Memory, ROM), 무작위 접속 메모리(Random Access Memory, RAM), 자기 디스크 또는 광 디스크 등 여러 가지 프로그램 코드를 저장할 수 있는 매체가 포함된다.
따라서 본 실시예가 컴퓨터 저장 매체를 제공하는 바, 인코더(80)에 적용되며, 해당 컴퓨터 저장 매체가 분할 프로그램을 저장하며, 상기 분할 프로그램이 제1 프로세서에 의해 실행될 때, 전술한 실시예의 어느 한 상기 방법을 실행한다.
상술한 인코더(80)의 구성 및 컴퓨터 저장 매체를 기반으로, 도9를 참조하여, 이에 본 출원의 실시예가 제공하는 인코더(80)의 구체적인 하드웨어 구조를 도시하는 바, 제1 통신 인터페이스(901), 제1 기억장치(902) 및 제1 프로세서(903)가 포함될 수 있으며; 각 조립은 제1 버스 시스템(904)을 통해 커플링된다. 제1 버스 시스템(904)은 이러한 조립 간의 연결 통신을 구현하는 것을 이해할 것이다. 제1 버스 시스템(904)에 데이터 버스가 포함되는 외에, 또한 전원 버스, 제어 버스와 상태 신호 버스가 포함된다. 하지만 명확하기 위하여 도9에서 여러가지 버스를 제1 버스 시스템(904)이라고 표시한다. 여기에서,
제1 통신 인터페이스(901)는 기타 외부 네트워크 요소과 정보 송수신을 수행하는 과정에서 신호의 수신과 송신에 이용되며;
제1 기억장치(902)는 제1 프로세서(903)에서 운행될 수 있는 컴퓨터 프로그램을 저장하며;
제1 프로세서(903)는 상기 컴퓨터 프로그램을 운행할 때, 다음과 같은 단계를 실행한다.
분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며;
상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며;
i가 M-1보다 작거나 같은지 여부를 판단하며; 여기에서 M은 LOD 분할의 사전 설정 레이어 수를 나타내며;
i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며;
i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며;
결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하며;
상기 현재 노드를 i번째 LOD 레이어로 분할하고, 상기 이웃 노드를 i+1번째 LOD 레이어로 분할하며;
i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며;
i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정한다.
본 출원의 실시예 중의 제1 기억장치(902)는 휘발성 기억장치 또는 비휘발성 기억장치일 수 있거나, 또는 휘발성과 비휘발성 기억장치 두 가지를 포함할 수 있는 것을 이해할 것이다. 여기에서, 비휘발성 기억장치는 읽기전용 메모리(Read-Only Memory, ROM), 프로그래머블 메모리(Programmable ROM, PROM), 휘발성 프로그래머블 메모리(Erasable PROM, EPROM), 전기 휘발성 프로그래머블 메모리(Electrically EPROM, EEPROM) 또는 플래시 일 수 있다. 휘발성 메모리는 무작위 접속 메모리(Random Access Memory, RAM)일 수 있으며, 이는 외부 고속 캐시로 이용된다. 예시적이지만 제한적이지 않은 설명을 통해, 많은 형식의 RAM가 이용가능한 것이며, 예를 들면, 정적 램(Static RAM, SRAM), 동적 램(Dynamic RAM, DRAM), 동기화 동적 램(Synchronous DRAM, SDRAM), 이중 데이터 속도 동적 램(Double Data Rate SDRAM, DDR SDRAM), 향상된 동기화 동적 램(Enhanced SDRAM, ESDRAM), 동기화 링크 동적 램(Synchlink DRAM, SLDRAM)과 직접 램버스 램(Direct Rambus RAM, DR RAM) 등이다. 본 출원에 기재된 시스템과 방법의 제1 기억장치(902)는 이러한 것과 임의의 기타 적합한 유형의 기억장치를 포함하나 이에 제한되지 않기 위한 것이다.
제1 프로세서(903)는 집적회로 칩일 수 있고, 신호의 처리 능력을 갖는다. 구현 과정에서, 상술한 방법의 각 단계는 제1 프로세서(903) 중의 하드웨어의 집적 논리회로 또는 소프트웨어 형식의 명령을 통해 완성될 수 있다. 상기 제1 프로세서(903)는 범용 프로세서, 디지털 신호 프로세서(Digital Signal Processor, DSP), 응용 주문형 집적 회로(Application Specific Integrated Circuit, ASIC), 필드 프로그래머블 게이트 어레이(Field-Programmable Gate Array, FPGA) 또는 기타 프로그램가능 논리 소자, 개별 게이트 또는 트랜지스터 논리 소자, 개별 하드웨어 컴포넌트 등일 수 있다. 본 출원의 실시예에 공개된 각 방법, 단계 및 논리 블럭도를 구현 또는 실행할 수 있다. 범용 프로세서는 마이크로프로세서일 수 있고, 해당 프로세서는 또한 임의의 일반적인 프로세서 등일 수 있다. 본 출원의 실시예에 공개된 방법의 단계와 결합시켜 직접 하드웨어 디코딩 프로세서로 실행하여 완성한 것으로 구현되거나, 또는 디코딩 프로세서 중의 하드웨어 및 소프트웨어 모듈 조합으로 실행하여 완성할 수 있다. 소프트웨어 모듈은 무작위 메모리, 플래시 메모리, 읽기전용 메모리, 프로그래머블 읽기전용 메모리 또는 전기 휘발성 프로그래머블 메모리, 레지스터 등 당업계의 성숙된 저장 매체에 위치할 수 있다. 해당 저장 매체는 제1 기억장치(902)에 위치하고, 제1 프로세서(903)가 제1 기억장치(902) 중의 정보를 읽으며, 그 하드웨어와 결합시켜 상기 방법의 단계를 완성한다.
본 출원에 기재된 이러한 실시예는 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드 또는 이의 조합을 이용하여 구현될 수 있는 것을 이해할 것이다. 하드웨어의 구현에 있어서, 처리 유닛은 하나 또는 다수 개의 주문형 집적회로 (Application Specific Integrated Circuit,ASIC), 디지털 신호 처리기(Digital Signal Processor,DSP), 디지털 신호 처리 장치( DSP Device,DSPD), 프로그램 가능 논리 소자(Programmable Logic Device,PLD), 필드 프로그래머블 게이트 어레이(Field ProgRAMmable Gate Array,FPGA), 범용 프로세서, 제어기, 마이크로 제어기, 마이크로 프로세서, 본 출원의 상기 기능을 실행하는 기타 전자 유닛 또는 이의 조합에 구현될 수 있다. 소프트웨어 구현에 있어서, 본 출원의 상기 기능을 실행하는 모듈(예를 들면 과정, 함수 등)을 통해 본 출원의 상기 기능을 구현한다. 소프트웨어 코드는 기억장치에 저장되고 프로세서에 의해 실행될 수 있다. 기억장치는 프로세서 또는 포로세서 외부에서 구현될 수 있다.
선택적으로, 다른 일 실시예로서, 제1 프로세서(903)는 또한 상기 컴퓨터 프로그램을 운행할 때, 전술한 실시예 중의 어느 한 상기 방법을 실행하도록 구성된다.
본 실시예가 인코더를 제공하는 바, 해당 인코더는 제1 컴퓨팅 유닛, 제1 결정 유닛, 제1 판단 유닛, 제1 오른쪽 시프트 유닛, 제1 검색 유닛 및 제1 분할 유닛을 포함할 수 있으며; 여기에서 제1 컴퓨팅 유닛은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며; 제1 결정 유닛은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며; 제1 판단 유닛은 i가 M-1보다 작거나 같은 여부를 판단하도록 구성되며; 여기에서 M은 LOD 분할에 대한 사전 설정 레이어 수를 나타내며; 제1 오른쪽 시프트 유닛은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트를 오른쪽으로 시프트하고 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며; 제1 결정 유닛은 또한 i번째 LOD 레이어의 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며; 제1 검색 유닛은 결정된 부모 노드의 모턴 코드를 기반으로 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며; 제1 분할 유닛은 상기 현재 노드를 i번째 LOD 레이어로 분할하고 상기 이웃 노드를 i+1 번째 LOD 레이어로 분할하도록 구성되며; 제1 판단 유닛은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; 제1 결정 유닛은 또한 i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하도록 구성된다. 이렇게 하면, 본 출원의 기술 방안은 현재 노드와 이웃 노드 사이의 공간적 거리를 컴퓨팅하지 않고, LOD 레이어를 분할할 때마다, 모턴 코드를 이용하여 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하고, 또한 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측함으로써 컴퓨팅 복잡성을 줄일 수 있을 뿐만 아니라, 또한 포인트 클라우드의 공간적 분포 특성을 고려하기 때문에 이웃 노드의 예측 속성의 정확성을 높이고 속성 부분의 재구성 품질을 향상시키며, 이는 인코딩 비트 오버헤드를 효과적으로 줄일 수 있어 코딩 효율을 향상시킨다.
전술한 실시예와 같은 발명 구상을 기반으로, 도10을 참조하여, 이에 본 출원의 실시예가 제공하는 디코더(100)의 구성 구조 도면을 도시한다. 도10에 도시된 바와 같이, 해당 디코더(100)는 제2 컴퓨팅 유닛(1001), 제2 결정 유닛(1002), 제2 판단 유닛(1003), 제2 오른쪽 시프트 유닛(1004), 제2 검색 유닛(1005) 및 제2 분할 유닛(1006)을 포함할 수 있으며, 여기에서,
제2 컴퓨팅 유닛(1001)은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며;
제2 결정 유닛(1002)은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며;
제2 판단 유닛(1003)은 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; 여기에서 M은 LOD 분할에 대한 사전 설정 레이어 수를 나타내며;
제2 오른쪽 시프트 유닛(1004)은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트를 오른쪽으로 시프트하고 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며;
제2 결정 유닛(1002)은 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며;
제2 검색 유닛(1005)은 결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며;
제2 분할 유닛(1006)은 상기 현재 노드를 i번째 LOD 레이어로 분할하고 상기 이웃 노드를 i+1 번째 LOD 레이어로 분할하도록 구성되며;
제2 판단 유닛(1003)은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하도록 구성되며;
제2 결정 유닛(1002)은 또한 i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하도록 구성된다.
상술한 방안에서 도10을 참고하면, 디코더(100)는 또한 제2 랭킹 유닛(1007)을 포함할 수 있으며, 사전 설정 랭킹 정책에 의해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 랭킹하고 랭킹된 후의 모턴 코드를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드로 결정하도록 구성된다.
상술한 방안에서 도10을 참조하면 디코더(100)에는 또한 제2 샘플링 유닛(1008)을 포함할 수 있으며, 랭킹된 후의 모턴 코드를 샘플링하여 K 개의 샘플링 포인트의 모턴 코드를 취득하도록 구성되며; 여기에서 K는 0보다 큰 정수이며;
제2 오른쪽 시프트 유닛(1004)은 또한 상기 K 개의 샘플링 포인트의 모턴 코드를 오른쪽 시프트 처리하여 모턴 코드를 오른쪽 시프트 후에 대응되는 K 개의 샘플링 포인트를 취득하도록 구성되며;
제2 판단 유닛(1003)은 또한 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응하는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖는지 여부를 판단하며; 및 만일 모턴 코드가 오른쪽으로 시프트한 후에 대응하는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖지 않는 경우, 상기 K 개의 샘플링 포인트의 모턴 코드에 대해 오른쪽 시프트 처리를 수행하는 단계를 계속하게 수행하며; 및 만약 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응하는 K 개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖는다면, 상기 K 개의 샘플링 포인트의 오른쪽 시프트 비트 수를 취득하며, 상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 초기 오른쪽 시프트 비트 수로 결정하도록 구성되며; 여기에서 상기 초기 오른쪽 시프트 비트 수는 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드가 0번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(N0)를 나타낸다.
상술한 방안에서 도10을 참고하면, 디코더(100)에는 또한 제2 분석 유닛(1009)이 포함될 수 있으며, 상기 분할하고자 하는 포인트 클라우드의 특성을 분석하여 K의 값을 결정하도록 구성된다.
상술한 방안에서, 제2 결정 유닛(1002)은 또한 랭킹된 후의 모턴 코드를 기반으로 최대 모턴 코드와 최소 모턴 코드를 결정하도록 구성되며;
제2 컴퓨팅 유닛(1001)은 또한 상기 최대 모턴 코드와 상기 최소 모턴 코드 사이의 차이값을 컴퓨팅하도록 구성되며;
제2 오른쪽 시프트 유닛(1004)은 또한 상기 차이값을 오른쪽으로 시프트하며, 오른쪽 시프트한 후의 차이값이 사전 설정 범위를 만족할 때 상기 차이값의 오른쪽 시프트 비트 수를 취득하도록 구성되며;
제2 결정 유닛(1002)은 또한 상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드의 초기 오른쪽 시프트 비트 수로 결정하도록 구성된다.
상술한 방안에서 제2 결정 유닛(1002)은 또한 i가 0과 같지 않을 때 제1 사전 설정 컴퓨팅 모델을 이용하여 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성된다.
상술한 방안에서 제2 결정 유닛(1002)은 구체적으로 i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 취득하며; 및 i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 사전 설정값과 겹쳐서 중첩값을 취득하며; 및 상기 중첩값을 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)로 결정하도록 구성된다.
상술한 방안에서 제2 분석 유닛(1009)은 또한 상기 분할하고자 하는 포인트 클라우드에 대해 특성 분석을 수행하고 상기 사전 설정값을 결정하도록 구성된다.
상술한 방안에서 상기 사전 설정값은 3과 같다.
상술한 방안에서 제2 오른쪽 시프트 유닛(1004)은 또한 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 기반으로 상기 i번째 LOD 레이어의 현재 노드의 모턴 코드를 오른쪽으로 시프트하도록 구성되며;
제2 결정 유닛(1002)은 또한 오른쪽으로 시프트한 후의 모턴 코드를 상기 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드로 결정하도록 구성된다.
상술한 방안에서 제2 결정 유닛(1002)은 또한 결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드를 결정하도록 구성된다.
제2 검색 유닛(1005)은 구체적으로 상기 이웃 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 이웃 노드의 모턴 코드에 대응되는 이웃 노드를 검색하도록 구성된다.
상술한 방안에서 제2 컴퓨팅 유닛(1001)은 또한 결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드와 동일 평면, 동일 선상 및 동일 포인트에 있는 모든 이웃 노드의 모턴 코드를 컴퓨팅하여 제1 수량 개의 이웃 노드의 모턴 코드를 취득하도록 구성되며;
제2 결정 유닛(1002)은 구체적으로 상기 제1 수량 개의 이웃 노드의 모턴 코드를 각각 현재 노드의 모턴 코드와 비교하며; 및 이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 작을 때 상기 이웃 노드의 모턴 코드를 폐기하며; 및 이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 크거나 같을 때, 상기 이웃 노드의 모턴 코드를 보류하여 제2 수량 개의 이웃 노드의 모턴 코드를 취득하도록 구성되며; 여기에서 상기 제2 수량은 상기 제1 수량보다 작거나 같으며; 및 상기 제2 수량 개의 이웃 노드의 모턴 코드를 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드로 결정한다.
상술한 방안에서 제2 결정 유닛(1002)은 또한 상기 분할하고자 하는 포인트 클라우드를 기반으로 상기 i번째 LOD 레이어 중 현재 노드에 대응되는 인접 구역을 결정하도록 구성되며;
제2 컴퓨팅 유닛(1001)은 또한 상기 인접 구역의 센트로이드를 컴퓨팅하여 상기 현재 노드와 상기 제1 수량 개의 이웃 노드 중에서 상기 센트로이드에 가장 가까운 노드를 선택하여 타겟 노드로 하도록 구성되며;
제2 분할 유닛(1006)은 또한 상기 타겟 노드를 i번째 LOD 레이어로 분할하고 나머지 노드를 i+1 번째 LOD 레이어로 분할하도록 구성되며; 여기에서 상기 나머지 노드는 상기 현재 노드와 상기 제1 수량 개의 이웃 노드에서 상기 타겟 노드를 제외한 노드를 나타낸다.
상술한 방안에서 제2 오른쪽 시프트 유닛(1004)은 또한 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽 시프트하여 다수의 세트를 취득하도록 구성되며; 여기에서 각 세트에는 상기 분할하고자 하는 포인트 클라우드의 분할하고자 하는 포인트 클라우드의 일부가 포함되며;
제2 분할 유닛(1006)은 또한 상기 다수의 세트 중 각 세트에 대해 각 세트에 포함된 분할하고자 하는 포인트 클라우드의 일부에 대해 LOD 레이어 분할을 수행하는 단계를 각각 수행하도록 구성된다.
본 실시예에서, “유닛”은 일부 회로, 일부 프로세서, 일부 프로그램 또는 소프트웨어 등일 수 인 것을 이해할 것이며, 또한 모듈일 수 있도 있고, 비모듈일 수도 있는 것은 자명하다. 그리고, 본 실시예 중의 각 구성 부분은 하나의 처리 유닛 중에 집적될 수도 있고, 또한 각 유닛의 독립적인 물리적 존재일 수 있으며, 또한 두 개 또는 두 개 이상의 유닛이 하나의 유닛에 집적되어 있을 수 있다. 상술한 집적된 유닛은 하드웨어의 형식으로 구현될 수도 있고, 또한 소프트웨어 기능 모듈의 형식으로 구현될 수도 있다.
상기 집적된 유닛은 만일 소프트웨어 기능 모듈의 형식으로 구현되고 독립적인 제품으로 판매 또는 이용될 때, 하나의 컴퓨터 판독가능한 저장 매체에 저장될 수 있다. 이를 기반으로, 본 실시예가 컴퓨터 저장 매체를 제공하는 바, 디코더(100)에 응용되며, 해당 컴퓨터 저장 매체가 분할 프로그램을 저장하고, 상기 분할 프로그램이 제2 프로세서에 의해 실행될 때, 전술한 실시예의 어느 한 상기 방법을 실행한다.
상술한 디코더(100)의 구성 및 컴퓨터 저장 매체를 기반으로, 도11을 참조하여, 이에 본 출원의 실시예가 제공하는 디코더(100)의 구체적인 하드웨어 구조를 도시하는 바, 제2 통신 인터페이스(1101), 제2 기억장치(1102) 및 제2 프로세서(1103)가 포함될 수 있으며; 각 조립은 제2 버스 시스템(1104)을 통해 커플링된다. 제2 버스 시스템(1104)은 이러한 조립 간의 연결 통신을 구현하는 것을 이해할 것이다. 제2 버스 시스템(1104)에 데이터 버스가 포함되는 외에, 또한 전원 버스, 제어 버스와 상태 신호 버스가 포함된다. 하지만 명확하기 위하여 도11에서 여러가지 버스를 모두 제2 버스 시스템(1104)이라고 표시한다. 여기에서,
제2 통신 인터페이스(1101)는, 기타 외부 네트워크 요소 간에 정보 송수신을 수행하는 과정에서 신호의 수신과 송신에 이용되며;
제2 기억장치(1102)는, 제2 프로세서(1103)에서 운행될 수 있는 컴퓨터 프로그램을 저장하며;
제2 프로세서(1103)는, 상기 컴퓨터 프로그램을 운행할 때, 다음과 같은 단계를 실행한다.
분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며;
상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며;
i가 M-1보다 작거나 같은지 여부를 판단하며; 여기에서 M은 LOD 분할에 대한 사전 설정 레이어 수를 나타내며;
i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장한다.
i번째 LOD 레이어의 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며;
결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하며;
상기 현재 노드를 i번째 LOD 레이어로 분할하고 상기 이웃 노드를 i+1번째 LOD 레이어로 분할하며;
i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며;
i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정한다.
선택적으로, 다른 일 실시예로서, 제2 프로세서(1103)는 또한 상기 컴퓨터 프로그램을 운행할 때, 전술한 실시예 중의 어느 한 상기 방법을 실행하도록 구성된다.
제2 기억장치(1002)와 제1 기억 장치(902)의 하드웨어 기능과 유사하고, 제2 프로세서(1003)와 제1 포르세서(903)의 하드웨어 기능이 유사하며; 여기에서, 상세한 설명을 생략하도록 한다.
본 실시예가 디코더를 제공하는 바, 해당 디코더는 제2 컴퓨팅 유닛, 제2 결정 유닛, 제2 판단 유닛, 제2 오른쪽 시프트 유닛, 제2 검색 유닛 및 제2 분할 유닛을 포함할 수 있으며; 여기에서 제2 컴퓨팅 유닛은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며; 제2 결정 유닛은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; 여기에서 i는 0보다 크거나 같은 정수이고Ni는 0보다 큰 정수이며; 제2 판단 유닛은 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; 여기에서 M은 LOD 분할에 대한 사전 설정 레이어 수를 나타내며; 제2 오른쪽 시프트 유닛은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드에 대해Ni 비트를 오른쪽으로 시프트하고 오른쪽으로 시프트한 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며; 제2 결정 유닛은 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며; 제2 검색 유닛은 결정된 부모 노드의 모턴 코드에 의해 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며; 제2 분할 유닛은 상기 현재 노드를 i번째 LOD 레이어로 분할하고, 이웃 노드를 i+1번째 LOD 레이어로 분할하도록 구성되며; 제2 판단 유닛은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하도록 구성되며; 제2 결정 유닛은 또한 i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하도록 구성된다. 이렇게 하면, 본 출원의 기술 방안은 현재 노드와 이웃 노드 사이의 공간적 거리를 컴퓨팅하지 않고, LOD 레이어를 분할할 때마다, 모턴 코드를 이용하여 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하고, 또한 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측함으로써 컴퓨팅 복잡성을 줄일 수 있을 뿐만 아니라, 또한 포인트 클라우드의 공간적 분포 특성을 고려하기 때문에 이웃 노드의 예측 속성의 정확도를 높이고 속성 부분의 재구성 품질을 향상시키며, 이는 인코딩 비트 오버헤드를 효과적으로 줄일 수 있어 코딩 효율을 향상시킨다.
설명해야 할 바로는, 본 출원에서, 용어 “포함” 또는 이의 임의의 기타 변체는 비 배타성의 포함을 포함되고, 일련의 요소가 포함된 과정, 방법, 물품 또는 장치에 그런 요소가 포함되게 할 뿐 아니라, 또한 명확히 열거하지 못한 기타 요소가 포함되고, 또는 이런 과정, 방법, 물품 또는 장치에 고유된 요소가 포함된다. 더 많은 제한이 없는 상황 하에서, 용어 “하나가 포함……”가 제한한 요소는, 해당 요소가 포함된 과정, 방법, 물품 또는 장치 중에 또한 다른 같은 요소가 존재하는 것을 제거하지 않는다.
상술한 본 출원의 실시예 번호는 단지 설명하기 위한 것일 뿐, 실시예의 우열을 대표하지 않는다.
본 출원이 제공하는 몇 개의 방법 실시예 중 공개된 방법은, 상충되지 않는 상황 하에서 임의로 조합되어, 새로운 방법 실시예를 취득할 수 있다.
본 출원이 제공하는 몇 제품 실시예 중 공개된 특징은, 상충되지 않는 상황 하에서 임의로 조합되어, 새로운 제품 실시예를 취득할 수 있다.
본 출원이 제공하는 몇 개의 방법 또는 장치 실시예 중 공개된 특징은, 상충되지 않는 상황 하에서 임의로 조합되어, 새로운 방법 실시예 또는 장치 실시예를 취득할 수 있다.
상술한 것은, 단지 본 출원의 구체적인 실시 방식일 뿐, 본 출원의 보호 범위는 이에 한정되는 것이 아니며, 본 발명의 속하는 기술분야에서 통상의 지식을 가진 자라면 본 출원에 개시된 기술 범위안에서 얼마든지 다양하게 변경하여 실시할 수 있어, 이는 본 출원의 보호범위 안에 포함되어야 한다. 그러므로 본 출원의 보호 범위는 청구항의 보호 범위를 기반으로 하여야 한다.
본 출원의 실시예에서 해당 방법은 인코더에 적용되며, 분할하고자 하는 포인트 클라우드를 기반으로 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하는 것을 통해 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며, i는 0보다 크거나 같은 정수이고, Ni는 0보다 큰 정수이며; i가 M-1보다 작거나 같은지 여부를 판단하고, M은 LOD 분할의 사전 설정 레이어 수를 나타내며; i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고, 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며; i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며; 결정된 부모 노드의 모턴 코드에 의해 사전 설정 저장 구역 내에서 부모 노드에 대응되는 이웃 노드를 검색하며; 현재 노드를 i번째 LOD 레이어로 분할하고, 이웃 노드를 i+1번째 LOD 레이어로 분할하며; i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며; i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하며; 이렇하 게하면, 본 출원의 기술 방안은 현재 노드와 이웃 노드 사이의 공간적 거리를 컴퓨팅하지 않고, LOD 레이어를 분할할 때마다, 모턴 코드를 이용하여 현재 노드의 부모 노드에 대응되는 이웃 노드를 검색하고, 또한 현재 노드를 샘플링 포인트로 하여 이웃 노드를 예측함으로써 컴퓨팅 복잡성을 줄일 수 있을 뿐만 아니라 또한 포인트 클라우드의 공간적 분포 특성을 고려하기 때문에 이웃 노드의 예측 속성의 정확성을 높이고 속성 부분의 재구성 품질을 향상시키며, 이는 인코딩 비트 오버헤드를 효과적으로 줄일 수 있어 나아가 인코딩/디코딩 효율을 향상시킨다.

Claims (19)

  1. 분할 방법에 있어서,
    인코더 또는 디코더에 적용되며,
    상기 방법에는,
    분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하며,
    상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하며, i는 0보다 크거나 같은 정수이고 Ni는 0보다 큰 정수이며,
    i가 M-1보다 작거나 같은지 여부를 판단하며; M은 LOD 분할의 사전 설정 레이어 수를 나타내며,
    i가 M-1보다 작거나 같을 때, i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고 또한 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하며,
    i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하며,
    결정된 부모 노드의 모턴 코드에 의해 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하며,
    상기 현재 노드를 i번째 LOD 레이어로 분할하고, 상기 이웃 노드를 i+1번째 LOD 레이어로 분할하며,
    i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하며,
    i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  2. 제1항에 있어서,
    상기 방법에는 또한,
    사전 설정된 랭킹 정책에 의해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 랭킹하고 랭킹된 후의 모턴 코드를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드로 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  3. 제2항에 있어서,
    i가 0과 같을 때 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하는 것에는,
    랭킹된 후의 모턴 코드를 샘플링하여 K 개의 샘플링 포인트의 모턴 코드를 취득하며; K는 0보다 큰 정수이며,
    상기 K개의 샘플링 포인트의 모턴 코드를 오른쪽으로 시프트하여 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K 개의 샘플링 포인트를 취득하며,
    상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는지 여부를 갖는지 판단하며,
    만일 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응되는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖지 않는 경우 상기 K개의 샘플링 포인트의 모턴 코드에 대해 오른쪽으로 시프트 처리를 수행하는 단계를 계속하게 수행하며,
    만약 상기 모턴 코드가 오른쪽으로 시프트한 후에 대응하는 K개의 샘플링 포인트가, 평균적으로 각 샘플링 포인트가 적어도 하나의 이웃 노드에 대응되는 것을 갖는다면, K개의 샘플링 포인트의 오른쪽 시프트 비트 수를 취득하며, 상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드의 초기 오른쪽 시프트 비트 수로 결정하며, 상기 초기 오른쪽 시프트 비트 수는 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드가 0번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(N0)를 나타내는 것이 포함되는 것을 특징으로 하는 분할 방법.
  4. 제3항에 있어서,
    상기 방법에는 또한,
    상기 분할하고자 하는 포인트 클라우드에 대하여 특성 분석을 수행하여 K의 값을 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  5. 제3항에 있어서,
    상기 방법에는 또한,
    랭킹된 후의 모턴 코드를 기반으로 최대 모턴 코드와 최소 모턴 코드를 결정하며;
    상기 최대 모턴 코드와 상기 최소 모턴 코드 사이의 차이값을 컴퓨팅하며;
    상기 차이값에 대해 오른쪽으로 시프트 처리하며, 오른쪽 시프트한 후의 차이값이 사전 설정 범위를 만족할 때 상기 차이값의 오른쪽 시프트 비트 수를 취득하며,
    상기 오른쪽 시프트 비트 수를 상기 분할하고자 하는 포인트 클라우드의 초기 오른쪽 시프트 비트 수로 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  6. 제1항에 있어서,
    i 가 0과 같지 않을 때 상기 분할하고자 하는 포인트 클라우드 중 i 번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni) 를 결정하는 것에는,
    제1 사전 설정 컴퓨팅 모델을 이용하여 상기 분할하고자 하는 포인트 클라우드 중 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  7. 제6항에 있어서,
    상기 제1 사전 설정 컴퓨팅 모델을 이용하여 상기 분할하고자 하는 포인트 클라우드 중 i 번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni) 를 결정하는 것에는,
    i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 취득하며,
    i-1번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni-1)를 사전 설정값과 겹쳐서 중첩값을 취득하며,
    상기 중첩값을 i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)로 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  8. 제7항에 있어서,
    상기 방법에는 또한,
    상기 분할하고자 하는 포인트 클라우드에 대하여 특성 분석을 수행하여 사전 설정값을 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  9. 제7항에 있어서,
    상기 사전 설정값은 3과 같은 것을 특징으로 하는 분할 방법.
  10. 제1항에 있어서,
    상기 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하는 것에는,
    i번째 LOD 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 기반으로, 상기 i번째 LOD 레이어 중 현재 노드의 모턴 코드를 오른쪽 시프트 처리하며,
    오른쪽으로 시프트한 후의 모턴 코드를 상기 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드로 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  11. 제1항에 있어서,
    결정된 부모 노드의 모턴 코드에 의해, 상기 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하는 것에는
    결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드를 결정하며,
    상기 이웃 노드의 모턴 코드에 의해, 상기 사전 설정 저장 구역 내에서 상기 이웃 노드의 모턴 코드에 대응되는 이웃 노드를 검색하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  12. 제11항에 있어서,
    결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드를 결정하는 것에는,
    결정된 부모 노드의 모턴 코드에 의해 상기 부모 노드와 동일 평면, 동일 선상 및 동일 포인트에 있는 모든 이웃 노드의 모턴 코드를 컴퓨팅하여 제1 수량 개의 이웃 노드의 모턴 코드를 취득하며,
    상기 제1 수량 개의 이웃 노드의 모턴 코드를 각각 현재 노드의 모턴 코드와 비교하며,
    이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 작을 때, 상기 이웃 노드의 모턴 코드를 폐기하며,
    이웃 노드의 모턴 코드가 현재 노드의 모턴 코드보다 크거나 같을 때, 상기 이웃 노드의 모턴 코드를 보류하여 제2 수량 개의 이웃 노드의 모턴 코드를 취득하며; 상기 제2 수량이 상기 제1 수량보다 작거나 같으며,
    상기 제2 수량 개의 이웃 노드의 모턴 코드를 상기 부모 노드에 대응되는 이웃 노드의 모턴 코드로 결정하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  13. 제12항에 있어서,
    상기 방법에는 또한,
    상기 분할하고자 하는 포인트 클라우드를 기반으로 상기 i번째 LOD 레이어 중 현재 노드에 대응되는 인접 구역을 결정하며,
    상기 인접 구역의 센트로이드를 컴퓨팅하고 상기 현재 노드 및 상기 제1 수량 개의 이웃 노드 중에서 상기 센트로이드에 가장 가까운 노드를 선택하여 타겟 노드로 하며,
    상기 타겟 노드를 i번째 LOD 레이어로 분할하고, 나머지 노드를 i+1번째 LOD 레이어로 분할하며, 상기 나머지 노드는 상기 현재 노드와 상기 제1 수량 개의 이웃 노드에서 상기 타겟 노드를 제외한 노드를 나타내는 것이 포함되는 것을 특징으로 하는 분할 방법.
  14. 제1항에 있어서,
    상기 방법에는 또한,
    상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 오른쪽으로 시프트하여 다수의 세트를 취득하며, 각 세트에는 상기 분할하고자 하는 포인트 클라우드 중의 분할하고자 하는 포인트 클라우드의 일부가 포함되며,
    상기 다수의 세트 중 각 세트에 대해, 각 세트에 포함된 분할하고자 하는 포인트 클라우드의 일부에 대해 LOD 레이어 분할을 수행하는 단계를 각각 수행하는 것이 포함되는 것을 특징으로 하는 분할 방법.
  15. 인코더에 있어서,
    상기 인코더는 제1 컴퓨팅 유닛, 제1 결정 유닛, 제1 판단 유닛, 제1 오른쪽 시프트 유닛, 제1 검색 유닛 및 제1 분할 유닛을 포함하며,
    상기 제1 컴퓨팅 유닛은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며,
    상기 제1 결정 유닛은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; i는 0보다 크거나 같은 정수이고 Ni는 0보다 큰 정수이며,
    상기 제1 판단 유닛은 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; M은 LOD 분할의 사전 설정 레이어 수를 나타내며,
    제1 오른쪽 시프트 유닛은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트 오른쪽으로 시프트하고 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며,
    상기 제1 결정 유닛은 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며,
    상기 제1 검색 유닛은 결정된 부모 노드의 모턴 코드에 의해 사전 설정 저장 구역 내에세 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며,
    제1 분할 유닛은 상기 현재 노드를 i번째 LOD 레이어로 분할하고 상기 이웃 노드를 i+1 번째 LOD 레이어로 분할하도록 구성되며,
    상기 제1 판단 유닛은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하도록 구성되며,
    상기 제1 결정 유닛은 또한 i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하도록 구성되는 것을 특징으로 하는 인코더.
  16. 인코더에 있어서,
    상기 인코더에는 제1 기억장치와 제1 프로세서가 포함되며,
    상기 제1 기억장치는 상기 제1 프로세서에서 운행될 수 있는 컴퓨터 프로그램을 저장하며,
    상기 제1 프로세서는 상기 컴퓨터 프로그램을 운행할 때, 제1항 내지 제14항 중 어느 한 항의 상기 방법을 실행하는 것을 특징으로 하는 인코더.
  17. 디코더에 있어서,
    상기 디코더에는 제2 컴퓨팅 유닛, 제2 결정 유닛, 제2 판단 유닛, 제2 오른쪽 시프트 유닛, 제2 검색 유닛 및 제2 분할 유닛을 포함하며,
    상기 제2 컴퓨팅 유닛은 분할하고자 하는 포인트 클라우드를 기반으로 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를 컴퓨팅하도록 구성되며,
    상기 제2 결정 유닛은 상기 분할하고자 하는 포인트 클라우드 중 i번째 세부 수준 (LOD) 레이어에 대응되는 오른쪽 시프트 비트 수(Ni)를 결정하도록 구성되며; i는 0보다 크거나 같은 정수이고 Ni는 0보다 큰 정수이며,
    상기 제2 판단 유닛은 i가 M-1보다 작거나 같은지 여부를 판단하도록 구성되며; M은 LOD 분할의 사전 설정 레이어 수를 나타내며,
    상기 제2 오른쪽 유닛은 i가 M-1보다 작거나 같을 때 i번째 LOD 레이어에 대해 상기 분할하고자 하는 포인트 클라우드 중 포인트의 모턴 코드를Ni 비트로 오른쪽으로 시프트하고 오른쪽으로 시프트한 후의 모턴 코드를 사전 설정 캐시 구역에 저장하도록 구성되며,
    상기 제2 결정 유닛은 또한 i번째 LOD 레이어 중 현재 노드에 대응되는 부모 노드의 모턴 코드를 결정하도록 구성되며,
    상기 제2 검색 유닛은 결정된 부모 노드의 모턴 코드에 의해 사전 설정 저장 구역 내에서 상기 부모 노드에 대응되는 이웃 노드를 검색하도록 구성되며,
    상기 제2 분할 유닛은 상기 현재 노드를 i번째 LOD 레이어로 분할하고 상기 이웃 노드를 i+1번째 LOD 레이어로 분할하도록 구성되며,
    상기 제2 판단 유닛은 또한 i+1에 의해 i를 업데이트하고 i가 M-1보다 작거나 같은지 여부의 판단을 리턴하도록 구성되며,
    상기 제2 결정 유닛은 또한 i가 M-1보다 클 때 0번째 LOD 레이어부터 M-1번째 LOD 레이어까지를 상기 분할하고자 하는 포인트 클라우드의 분할에 대응되는 LOD 레이어로 결정하도록 구성되는 것을 특징으로 하는 디코더.
  18. 디코더에 있어서,
    상기 디코더에는 제2 기억장치와 제2 프로세서가 포함되며,
    여기에서,
    상기 제2 기억장치는 상기 제2 프로세서에서 운행될 수 있는 컴퓨터 프로그램을 저장하며,
    상기 제2 프로세서는 상기 컴퓨터 프로그램을 운행할 때, 제1항 내지 제14항 중 어느 한 항의 상기 방법을 실행하는 것을 특징으로 하는 디코더.
  19. 컴퓨터 저장 매체에 있어서,
    상기 컴퓨터 저장 매체는 컴퓨터 프로그램을 저장하고,
    상기 컴퓨터 프로그램이 제1 프로세서에 의해 실행될 때, 제1항 내지 제14항 중 어느 한 항의 상기 방법을 구현하거나, 또는
    제2 프로세서에 의해 실행될 때 제1항 내지 제14항 중 어느 한 항의 상기 방법을 구현하는 것을 특징으로 하는 컴퓨터 저장 매체.
KR1020227023052A 2020-01-06 2020-01-06 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체 KR20220123655A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2020/070554 WO2021138785A1 (zh) 2020-01-06 2020-01-06 划分方法、编码器、解码器及计算机存储介质

Publications (1)

Publication Number Publication Date
KR20220123655A true KR20220123655A (ko) 2022-09-08

Family

ID=76787411

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227023052A KR20220123655A (ko) 2020-01-06 2020-01-06 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체

Country Status (5)

Country Link
US (1) US20220343550A1 (ko)
JP (2) JP7511010B2 (ko)
KR (1) KR20220123655A (ko)
CN (2) CN114731425A (ko)
WO (1) WO2021138785A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024155169A1 (ko) * 2023-01-20 2024-07-25 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060041818A1 (en) * 2004-08-23 2006-02-23 Texas Instruments Inc Method and apparatus for mitigating fading in a communication system
US11514613B2 (en) * 2017-03-16 2022-11-29 Samsung Electronics Co., Ltd. Point cloud and mesh compression using image/video codecs
US10861196B2 (en) * 2017-09-14 2020-12-08 Apple Inc. Point cloud compression
US11113845B2 (en) * 2017-09-18 2021-09-07 Apple Inc. Point cloud compression using non-cubic projections and masks
CN118314303A (zh) 2017-10-16 2024-07-09 索尼公司 编码装置、编码方法、解码装置及解码方法
US10853447B2 (en) 2018-01-19 2020-12-01 8i Limited Bezier volume representation of point cloud attributes
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 北京大学深圳研究生院 点云编码和解码的方法、编码设备和解码设备
CN111699697B (zh) * 2019-06-14 2023-07-11 深圳市大疆创新科技有限公司 一种用于点云处理、解码的方法、设备及存储介质
AU2020303920B2 (en) 2019-06-26 2023-02-02 Tencent America LLC Implicit quadtree or binary-tree geometry partition for point cloud coding
WO2020262824A1 (ko) * 2019-06-26 2020-12-30 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN110418135B (zh) * 2019-08-05 2022-05-27 北京大学深圳研究生院 一种基于邻居的权重优化的点云帧内预测方法及设备
JP7386337B2 (ja) 2019-09-30 2023-11-24 オッポ広東移動通信有限公司 分割方法、符号器、復号器及びコンピュータ記憶媒体
WO2021206291A1 (ko) * 2020-04-08 2021-10-14 엘지전자 주식회사 포인트 클라우드 데이터 전송 장치, 전송 방법, 처리 장치 및 처리 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024155169A1 (ko) * 2023-01-20 2024-07-25 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Also Published As

Publication number Publication date
WO2021138785A1 (zh) 2021-07-15
CN115174922A (zh) 2022-10-11
US20220343550A1 (en) 2022-10-27
JP2024123172A (ja) 2024-09-10
JP7511010B2 (ja) 2024-07-04
JP2023516246A (ja) 2023-04-19
CN114731425A (zh) 2022-07-08

Similar Documents

Publication Publication Date Title
KR102692779B1 (ko) 분할 방법, 인코더, 디코더 및 컴퓨터 저장 매체
JP7330306B2 (ja) 変換方法、逆変換方法、エンコーダ、デコーダ及び記憶媒体
US11936909B2 (en) Prediction method, encoder, decoder, and computer storage medium
US20230101072A1 (en) Nearest neighbour search method, encoder, decoder and storage medium
US20220329833A1 (en) Nearest neighbor search method, apparatus, device, and storage medium
US20240070872A1 (en) Point cloud segmentation method and device, and computer readable storage medium
US20230086264A1 (en) Decoding method, encoding method, decoder, and encoder based on point cloud attribute prediction
JP2024123172A (ja) 区分方法、エンコーダー、デコーダー、及びコンピュータ記憶媒体
WO2022120594A1 (zh) 点云编解码方法、编码器、解码器及计算机存储介质
WO2021108969A1 (zh) 属性信息的预测方法、编码器、解码器、及存储介质
TWI854112B (zh) 一種最近鄰搜索方法、編碼器、解碼器及儲存媒介
CN114071138A (zh) 帧内预测编码方法、帧内预测编码装置和计算机可读介质
WO2022217611A1 (zh) 编解码方法及相关设备、存储介质
JPWO2021218509A5 (ko)
WO2023155045A1 (zh) 预测的方法和装置、编码器、解码器和编解码系统
CN114868153A (zh) 莫顿码的构建方法、编码器、解码器、及存储介质