KR102801168B1 - Processing Method for Video-based Point Cloud Data and an electronic device supporting the same - Google Patents
Processing Method for Video-based Point Cloud Data and an electronic device supporting the same Download PDFInfo
- Publication number
- KR102801168B1 KR102801168B1 KR1020210157142A KR20210157142A KR102801168B1 KR 102801168 B1 KR102801168 B1 KR 102801168B1 KR 1020210157142 A KR1020210157142 A KR 1020210157142A KR 20210157142 A KR20210157142 A KR 20210157142A KR 102801168 B1 KR102801168 B1 KR 102801168B1
- Authority
- KR
- South Korea
- Prior art keywords
- point cloud
- cloud data
- tree
- input point
- video
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/40—Tree coding, e.g. quadtree, octree
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/119—Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
- H04N19/423—Methods 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 characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/96—Tree coding, e.g. quad-tree coding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Generation (AREA)
Abstract
본 발명은 3개의 축을 가지는 3D 객체에 대한 입력 포인트 클라우드 데이터를 수신하는 단계, 상기 입력 포인트 클라우드 데이터들을 트리 구조로 변환하기 위한 트리 노드들을 생성하는 단계, 상기 생성된 트리 노드들을 배열하여 상기 입력 포인트 클라우드 데이터에 대해 실시간으로 법선을 추정하는 단계, 상기 추정된 법선을 기반으로 상기 입력 포인트 클라우드 데이터에 대한 비디오기반 포인트 클라우드 압축을 수행하는 단계를 포함하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축 방법 및 이를 지원하는 전자 장치를 개시한다.The present invention discloses a video-based point cloud compression method and an electronic device supporting the same, characterized in that it includes the steps of receiving input point cloud data for a 3D object having three axes, generating tree nodes for converting the input point cloud data into a tree structure, arranging the generated tree nodes to estimate a normal for the input point cloud data in real time, and performing video-based point cloud compression for the input point cloud data based on the estimated normal.
Description
본 발명은 포인트 클라우드 데이터 처리에 관한 것으로서, 더욱 상세하게는 실시간 Normal Estimation을 위한 비디오 기반 포인트 클라우드 데이터의 처리 방법 및 이를 지원하는 전자 장치에 관한 것이다.The present invention relates to point cloud data processing, and more particularly, to a method for processing video-based point cloud data for real-time Normal Estimation and an electronic device supporting the same.
3D 영상 데이터 중 하나인, 포인트 클라우드는 미디어 획득 및 처리 기술의 눈부신 발전으로 다양한 분야에서 각광받고 있다. 3D 영상 데이터는 3D 공간에서 속성값(예시: 색상, 반사도, 투명도)을 갖는 점들로 획득되지만, 제한된 그래픽 데이터 처리 속도를 보완하기 위해서 획득된 점들을 다각형으로 근사화하여 3D 데이터의 처리량을 줄이는 방법인 3D 메쉬 모델을 이용해왔다. 하지만, 급속도로 발전하는 하드웨어의 성능에 따라 3D의 점들을 모두 처리할 수 있게 되었고, 이에 따라 획득한 점들의 군집인 포인트 클라우드 데이터를 그대로 사용하기 시작했다. 특히, 포인트 클라우드는 3차원 데이터를 정밀하게 획득할 수 있다는 장점으로 인해 군사, 교육, 의료, 건축 등의 다양한 분야에서 활용되고 있다.Point cloud, one type of 3D image data, is attracting attention in various fields due to the remarkable development of media acquisition and processing technology. 3D image data is acquired as points with attribute values (e.g., color, reflectivity, transparency) in 3D space, but in order to supplement the limited graphic data processing speed, a 3D mesh model, which is a method of approximating the acquired points into polygons to reduce the amount of 3D data processed, has been used. However, with the rapidly developing performance of hardware, it has become possible to process all 3D points, and thus point cloud data, which is a cluster of acquired points, has begun to be used as is. In particular, point clouds are being utilized in various fields such as the military, education, medicine, and architecture due to their advantage of being able to precisely acquire 3D data.
그 중 자율 주행 분야에서는 포인트 클라우드를 기반으로 생성된 고정밀 대용량의 데이터를 활용하여 자율 주행에 필요한 동적 교통상황 정보를 획득한다. 동적 교통 상황 정보는 Lidar와 GPS, Camera 등의 센서를 활용하여 획득할 수 있으며, 이렇게 획득되는 포인트 클라우드를 동적 획득 포인트 클라우드라고 한다. 동적 획득 포인트 클라우드는 수십, 수백 만개의 포인트로 구성되어 표현 범위가 광범위하고 방대한 양의 데이터를 갖는다는 특징을 지니고 있어, 이를 송수신하기 위해서는 포인트 클라우드 데이터를 효율적으로 압축하는 방안이 필요하다. Among them, in the autonomous driving field, high-precision, large-capacity data generated based on point clouds are used to obtain dynamic traffic situation information required for autonomous driving. Dynamic traffic situation information can be obtained using sensors such as Lidar, GPS, and cameras, and the point cloud obtained in this way is called a dynamic acquisition point cloud. The dynamic acquisition point cloud is composed of tens or millions of points, and has the characteristics of a wide range of expressions and a large amount of data, so a method for efficiently compressing point cloud data is required to transmit and receive it.
상술한 문제점을 해결하기 위하여, 본 발명은 비디오 기반 포인트 클라우드 데이터의 압축 처리 과정에서 가장 많은 연상이 요구되는 normal estimation 과정에 트리 구조를 적용하여, 포인트 클라우드 데이터의 실시간 변환을 처리할 수 있도록 하는 비디오 기반 포인트 클라우드 데이터 처리 방법 및 이를 지원하는 전자 장치를 제공함에 있다.In order to solve the above-described problem, the present invention provides a video-based point cloud data processing method and an electronic device supporting the same, which enables real-time conversion of point cloud data by applying a tree structure to the normal estimation process, which requires the most associations in the compression processing of video-based point cloud data.
한편, 이러한 본 발명의 목적은 상기의 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 명확하게 이해될 수 있을 것이다.Meanwhile, the purpose of the present invention is not limited to the above purpose, and other purposes not mentioned can be clearly understood from the description below.
상술한 바와 같은 목적을 달성하기 위한 본 발명의 실시 예에 따른 전자 장치는 3개의 축을 가지는 3D 객체에 대한 입력 포인트 클라우드 데이터를 저장하는 메모리, 상기 입력 포인트 클라우드 데이터에 대한 압축을 처리하는 그래픽 프로세서를 포함하고, 상기 그래픽 프로세서는 상기 입력 포인트 클라우드 데이터들을 트리 구조로 변환하기 위한 트리 노드들을 생성하고, 상기 생성된 트리 노드들을 배열하여 상기 입력 포인트 클라우드 데이터에 대해 실시간으로 법선을 추정하고, 상기 추정된 법선을 기반으로 상기 입력 포인트 클라우드 데이터에 대한 비디오기반 포인트 클라우드 압축을 수행하도록 설정된 것을 특징으로 한다.According to an embodiment of the present invention for achieving the above-described object, an electronic device includes a memory for storing input point cloud data for a 3D object having three axes, a graphics processor for processing compression for the input point cloud data, wherein the graphics processor is configured to generate tree nodes for converting the input point cloud data into a tree structure, arrange the generated tree nodes to estimate a normal for the input point cloud data in real time, and perform video-based point cloud compression for the input point cloud data based on the estimated normal.
여기서, 상기 그래픽 프로세서는 상기 트리 구조의 깊이에 따른 하부 트리의 깊이 값을 정의하는 오프셋 생성부를 포함하고, 상기 오프셋 생성부는 상기 트리 구조의 깊이가 0 및 1인 경우 지정된 하부 트리에 지정된 오프셋 값을 할당하고, 상기 트리 구조의 깊이가 2이상인 경우, 상기 입력 포인트 클라우드 데이터들 각각에 대한 인덱스 값들을 기준으로, 트리 구조의 좌측 오프셋 값과 우측 오프셋 값을 결정하는 것을 특징으로 한다.Here, the graphic processor includes an offset generation unit that defines a depth value of a subtree according to the depth of the tree structure, and the offset generation unit assigns a specified offset value to a specified subtree when the depth of the tree structure is 0 and 1, and determines a left offset value and a right offset value of the tree structure based on index values for each of the input point cloud data when the depth of the tree structure is 2 or more.
또한, 상기 그래픽 프로세서는 상기 오프셋 생성부에 의해 결정된 오프셋 값에 따라 상기 입력 포인트 클라우드 데이터의 전체 목록을 상기 3개의 축 중 특정 축을 기준으로 구간 별로 정렬하는 세그먼트 정렬부를 더 포함하는 것을 특징으로 한다.In addition, the graphic processor is characterized by further including a segment alignment unit that aligns the entire list of the input point cloud data by section based on a specific axis among the three axes according to the offset value determined by the offset generation unit.
여기서, 상기 세그먼트 정렬부는 상기 전체 목록을 상기 특정 축 기준으로 구간 별로 정렬하되 상기 구간의 크기에 따라 서로 다른 정렬 방식으로 정렬하는 것을 특징으로 한다.Here, the segment sorting unit is characterized in that it sorts the entire list by section based on the specific axis, but sorts in different sorting methods depending on the size of the section.
한편, 상기 그래픽 프로세서는 상기 세그먼트 정렬부에 의해 정렬된 구간들을 재정렬하는 재정렬부를 더 포함하고, 상기 재정렬부는 상기 세그먼트 정렬부에 의해 정렬된 값을 분할하고, 상기 특정 축 이외 나머지 축의 값들을 상기 특정 축에 맞도록 재구성하되 상기 전체 목록의 크기가 지정된 값 이하가 되도록 처리하는 것을 특징으로 한다.Meanwhile, the graphic processor further includes a reordering unit that reorders the sections sorted by the segment sorting unit, and the reordering unit divides the values sorted by the segment sorting unit and reorganizes the values of the remaining axes other than the specific axis to fit the specific axis, while processing them so that the size of the entire list becomes less than a specified value.
또한, 상기 그래픽 프로세서는 상기 입력 포인트 클라우드 데이터를 위한 바운딩 박스 계산을 위한 세그먼트 최소-최대 계산부, 상기 재정렬부에 의해 정렬된 값들 및 상기 세그먼트 최소-최대 계산부에 의해 계산된 값들을 기반으로 상기 트리 구조에 이용할 트리 노드를 할당하는 노드 생성부를 포함하는 것을 특징으로 한다.In addition, the graphic processor is characterized by including a segment min-max calculation unit for calculating a bounding box for the input point cloud data, a node generation unit for allocating a tree node to be used in the tree structure based on the values sorted by the reordering unit and the values calculated by the segment min-max calculation unit.
본 발명의 실시 예에 따른 비디오기반 포인트 클라우드 압축 방법은 3개의 축을 가지는 3D 객체에 대한 입력 포인트 클라우드 데이터를 수신하는 단계, 상기 입력 포인트 클라우드 데이터들을 트리 구조로 변환하기 위한 트리 노드들을 생성하는 단계, 상기 생성된 트리 노드들을 배열하여 상기 입력 포인트 클라우드 데이터에 대해 실시간으로 법선을 추정하는 단계, 상기 추정된 법선을 기반으로 상기 입력 포인트 클라우드 데이터에 대한 비디오기반 포인트 클라우드 압축을 수행하는 단계를 포함하는 것을 특징으로 한다.A video-based point cloud compression method according to an embodiment of the present invention is characterized by including the steps of receiving input point cloud data for a 3D object having three axes, generating tree nodes for converting the input point cloud data into a tree structure, arranging the generated tree nodes to estimate a normal for the input point cloud data in real time, and performing video-based point cloud compression for the input point cloud data based on the estimated normal.
여기서, 상기 트리 노드를 생성하는 단계는 상기 트리 구조의 깊이가 0 및 1인 경우 지정된 하부 트리에 지정된 오프셋 값을 할당하고, 상기 트리 구조의 깊이가 2이상인 경우, 상기 입력 포인트 클라우드 데이터들 각각에 대한 인덱스 값들을 기준으로, 트리 구조의 좌측 오프셋 값과 우측 오프셋 값을 결정하는 단계를 포함하는 것을 특징으로 한다.Here, the step of generating the tree node is characterized by including a step of assigning a specified offset value to a specified subtree when the depth of the tree structure is 0 and 1, and determining a left offset value and a right offset value of the tree structure based on index values for each of the input point cloud data when the depth of the tree structure is 2 or more.
추가로, 상기 트리 노드를 생성하는 단계는 상기 결정된 오프셋 값에 따라 상기 입력 포인트 클라우드 데이터의 전체 목록을 상기 3개의 축 중 특정 축을 기준으로 구간 별로 정렬하되 상기 구간의 크기에 따라 서로 다른 정렬 방식으로 정렬하는 단계 및 상기 세그먼트 정렬부에 의해 정렬된 값을 분할하고, 상기 특정 축 이외 나머지 축의 값들을 상기 특정 축에 맞도록 재구성하되 상기 전체 목록의 크기가 지정된 값 이하가 되도록 처리하는 단계를 포함하는 것을 특징으로 한다.Additionally, the step of generating the tree node is characterized by including the step of arranging the entire list of the input point cloud data by section based on a specific axis among the three axes according to the determined offset value, while arranging in different sorting methods according to the size of the section, and the step of dividing the sorted values by the segment sorting unit, and reconstructing the values of the remaining axes other than the specific axis to fit the specific axis, while processing them so that the size of the entire list becomes less than a specified value.
또한, 상기 트리 노드를 생성하는 단계는 상기 입력 포인트 클라우드 데이터를 위한 바운딩 박스의 최대 값 및 최소 값을 계산하는 단계 및 상기 재정렬부에 의해 정렬된 값들 및 상기 최소 값과 상기 최대 값들을 기반으로 상기 트리 구조에 이용할 상기 트리 노드를 할당하는 단계를 포함하는 것을 특징으로 한다.In addition, the step of generating the tree node is characterized by including the step of calculating the maximum and minimum values of the bounding box for the input point cloud data, and the step of allocating the tree node to be used in the tree structure based on the values sorted by the reordering unit and the minimum and maximum values.
본 발명에 따르면, 본 발명은 포인트 클라우드 데이터의 압축 과정에서 각 포인트의 normal(법선) 계산을 보다 신속하게 처리함으로써, 비디오 기반 포인트 클라우드 데이터의 압축 시간을 줄이고 송수신되는 데이터 양을 저감할 수 있도록 지원한다. According to the present invention, the present invention supports reducing the compression time of video-based point cloud data and reducing the amount of data transmitted and received by processing normal calculation of each point more quickly during the compression process of point cloud data.
아울러, 상술한 효과 이외의 다양한 효과들이 후술될 본 발명의 실시 예에 따른 상세한 설명에서 직접적 또는 암시적으로 개시될 수 있다.In addition, various effects other than the effects described above may be directly or implicitly disclosed in the detailed description according to the embodiments of the present invention to be described later.
도 1은 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 데이터 처리를 지원하는 전자 장치 구성의 한 예를 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축 과정 중 트리 생성 단계를 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축 방법에서 법선 벡터 생성과 관련한 구성의 한 예를 나타낸 도면이다.
도 4는 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축 방법에서 트리 생성과 관련한 그래픽 프로세서 구현의 한 예를 나타낸 도면이다.
도 5는 본 발명의 실시 예에 따른 트리 생성과 관련한 연산자 정의의 한 예를 나타낸 도면이다.
도 6은 본 발명의 실시 예에 따른 오프셋 생성부의 운용을 정의하는 코드의 한 예를 나타낸 도면이다.
도 7은 본 발명의 실시 예에 따른 세그먼트 정렬부의 운용을 정의하는 코드의 한 예를 나타낸 도면이다.
도 8은 본 발명의 실시 예에 따른 재정렬부의 운용을 정의하는 코드의 한 예를 나타낸 도면이다.
도 9는 본 발명의 실시 예에 따른 세그먼트 최소-최대 계산부 운용을 정의하는 코드의 한 예를 나타낸 도면이다.
도 10은 본 발명의 실시 예에 따른 노드 생성부 운용을 정의하는 코드의 한 예를 나타낸 도면이다. FIG. 1 is a diagram illustrating an example of an electronic device configuration that supports video-based point cloud data processing according to an embodiment of the present invention.
FIG. 2 is a diagram for explaining a tree generation step during a video-based point cloud compression process according to an embodiment of the present invention.
FIG. 3 is a drawing showing an example of a configuration related to normal vector generation in a video-based point cloud compression method according to an embodiment of the present invention.
FIG. 4 is a diagram illustrating an example of a graphics processor implementation related to tree generation in a video-based point cloud compression method according to an embodiment of the present invention.
FIG. 5 is a diagram showing an example of operator definition related to tree creation according to an embodiment of the present invention.
FIG. 6 is a diagram showing an example of code defining the operation of an offset generation unit according to an embodiment of the present invention.
FIG. 7 is a diagram showing an example of code defining the operation of a segment alignment unit according to an embodiment of the present invention.
FIG. 8 is a diagram showing an example of code defining the operation of a reordering unit according to an embodiment of the present invention.
FIG. 9 is a diagram showing an example of code defining the operation of a segment minimum-maximum calculation unit according to an embodiment of the present invention.
FIG. 10 is a diagram showing an example of code defining the operation of a node creation unit according to an embodiment of the present invention.
본 발명의 과제 해결 수단의 특징 및 이점을 보다 명확히 하기 위하여, 첨부된 도면에 도시된 본 발명의 특정 실시 예를 참조하여 본 발명을 더 상세하게 설명한다.In order to make the features and advantages of the problem solving means of the present invention more clear, the present invention will be described in more detail with reference to specific embodiments of the present invention illustrated in the attached drawings.
다만, 하기의 설명 및 첨부된 도면에서 본 발명의 요지를 흐릴 수 있는 공지 기능 또는 구성에 대한 상세한 설명은 생략한다. 또한, 도면 전체에 걸쳐 동일한 구성 요소들은 가능한 한 동일한 도면 부호로 나타내고 있음에 유의하여야 한다.However, detailed descriptions of well-known functions or configurations that may obscure the gist of the present invention in the following description and attached drawings are omitted. In addition, it should be noted that identical components are indicated with the same drawing reference numerals as much as possible throughout the drawings.
이하의 설명 및 도면에서 사용된 용어나 단어는 통상적이거나 사전적인 의미로 한정해서 해석되어서는 아니 되며, 발명자는 그 자신의 발명을 가장 최선의 방법으로 설명하기 위한 용어의 개념으로 적절하게 정의할 수 있다는 원칙에 입각하여 본 발명의 기술적 사상에 부합하는 의미와 개념으로 해석되어야만 한다. 따라서 본 명세서에 기재된 실시 예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시 예에 불과할 뿐이고, 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형 예들이 있을 수 있음을 이해하여야 한다.The terms or words used in the following description and drawings should not be interpreted as limited to their conventional or dictionary meanings, but should be interpreted as meanings and concepts that conform to the technical idea of the present invention based on the principle that the inventor can appropriately define the concept of the terms to best describe his or her own invention. Therefore, the embodiments described in this specification and the configurations illustrated in the drawings are merely the most preferred embodiments of the present invention and do not represent all of the technical idea of the present invention. Therefore, it should be understood that there may be various equivalents and modified examples that can replace them at the time of filing this application.
또한, 제1, 제2 등과 같이 서수를 포함하는 용어는 다양한 구성요소들을 설명하기 위해 사용하는 것으로, 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용될 뿐, 상기 구성요소들을 한정하기 위해 사용되지 않는다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제2 구성요소는 제1 구성요소로 명명될 수 있고, 유사하게 제1 구성요소도 제2 구성요소로 명명될 수 있다.Also, terms including ordinal numbers such as first, second, etc. are used to describe various components, and are only used to distinguish one component from another, and are not used to limit said components. For example, without departing from the scope of the present invention, a second component may be referred to as a first component, and similarly, a first component may also be referred to as a second component.
또한, 본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 또한, 본 명세서에서 기술되는 "포함 한다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.In addition, the terminology used in this specification is only used to describe specific embodiments and is not intended to limit the present invention. The singular expression includes the plural expression unless the context clearly indicates otherwise. In addition, it should be understood that the terms "comprises" or "has" described in this specification are intended to specify the presence of a feature, number, step, operation, component, part or combination thereof described in the specification, but do not exclude in advance the possibility of the presence or addition of one or more other features, numbers, steps, operations, components, parts or combinations thereof.
또한, 명세서에 기재된 "부", "기", "모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 또한, "일(a 또는 an)", "하나(one)", "그(the)" 및 유사 관련어는 본 발명을 기술하는 문맥에 있어서(특히, 이하의 청구항의 문맥에서) 본 명세서에 달리 지시되거나 문맥에 의해 분명하게 반박되지 않는 한, 단수 및 복수 모두를 포함하는 의미로 사용될 수 있다.In addition, terms such as "unit," "device," and "module" described in the specification mean a unit that processes at least one function or operation, and this can be implemented by hardware, software, or a combination of hardware and software. In addition, "a or an," "one," "the," and similar related words can be used in the context of describing the present invention (especially, in the context of the claims below) to include both singular and plural meanings, unless otherwise indicated in the present specification or clearly contradicted by the context.
상술한 용어들 이외에, 이하의 설명에서 사용되는 특정 용어들은 본 발명의 이해를 돕기 위해서 제공된 것이며, 이러한 특정 용어의 사용은 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 형태로 변경될 수 있다.In addition to the terms described above, specific terms used in the following description are provided to help understanding of the present invention, and the use of these specific terms may be changed to other forms without departing from the technical spirit of the present invention.
아울러, 본 발명의 범위 내의 실시 예들은 컴퓨터 실행가능 명령어 또는 컴퓨터 판독가능 매체에 저장된 데이터 구조를 가지거나 전달하는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는, 범용 또는 특수 목적의 컴퓨터 시스템에 의해 액세스 가능한 임의의 이용 가능한 매체일 수 있다. 예로서, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EPROM, CD-ROM 또는 기타 광 디스크 저장장치, 자기 디스크 저장장치 또는 기타 자기 저장장치, 또는 컴퓨터 실행가능 명령어, 컴퓨터 판독가능 명령어 또는 데이터 구조의 형태로 된 소정의 프로그램 코드 수단을 저장하거나 전달하는 데에 이용될 수 있고, 범용 또는 특수 목적 컴퓨터 시스템에 의해 액세스 될 수 있는 임의의 기타 매체와 같은 물리적 저장 매체를 포함할 수 있지만, 이에 한정되지 않는다.In addition, embodiments within the scope of the present invention include computer-readable media having or carrying computer-executable instructions or data structures stored on a computer-readable medium. Such computer-readable media can be any available media that can be accessed by a general-purpose or special-purpose computer system. By way of example, and not limitation, such computer-readable media can include physical storage media such as RAM, ROM, EPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage, or any other medium that can be used to store or carry certain program code means in the form of computer-executable instructions, computer-readable instructions or data structures and that can be accessed by a general-purpose or special-purpose computer system.
이하, 각 도면들을 통하여, 본 발명을 구성하는 시스템과 장치 및 방법 등에 대해서 보다 상세히 설명하기로 한다.Hereinafter, the system, device, and method constituting the present invention will be described in more detail through each drawing.
도 1은 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 데이터 처리를 지원하는 전자 장치 구성의 한 예를 나타낸 도면이다.FIG. 1 is a diagram illustrating an example of an electronic device configuration that supports video-based point cloud data processing according to an embodiment of the present invention.
도 1을 참조하면, 한 실시 예에 따른 전자 장치(100)는 통신 인터페이스(110), 센서(120), 메모리(130), 프로세서(150) 및 그래픽 프로세서(160)를 포함할 수 있다. 한편, 상기 전자 장치(100) 설명을 위하여 프로세서(150) 및 그래픽 프로세서(160)를 포함하는 구조를 설명하였지만, 상기 전자 장치(100)는 포인트 클라우드 데이터에 대한 압축 처리를 위하여 그래픽 프로세서(160)만을 포함하거나, 상기 프로세서(160)가 상기 전자 장치(100)의 제어 및 이하에서 설명하는 포인트 클라우드 데이터에 대한 압축 처리를 위한 그래픽 프로세서(160)의 동작을 대체할 수 도 있다.Referring to FIG. 1, an electronic device (100) according to an embodiment may include a communication interface (110), a sensor (120), a memory (130), a processor (150), and a graphic processor (160). Meanwhile, although a structure including a processor (150) and a graphic processor (160) has been described for the purpose of explaining the electronic device (100), the electronic device (100) may include only a graphic processor (160) for compression processing of point cloud data, or the processor (160) may replace the operation of the graphic processor (160) for controlling the electronic device (100) and compression processing of point cloud data described below.
상기 센서(120)는 3D 객체 또는 전자 장치(100)의 주변 객체 등에 대한 3D 데이터 또는 원본 포인트 클라우드 데이터를 수집할 수 있다. 상기 센서(120)는 예컨대, 적어도 깊이 카메라를 포함할 수 있다. 또는, 상기 센서(120)는 객체 관련 깊이 정보를 획득할 수 있는 라이다 센서를 포함할 수 있다. 또는, 상기 센서(120)는 3D 객체 또는 주변 객체에 대한 RGB 이미지(또는 RGB-D 데이터)를 수집할 수 있다. 본 발명의 센서(120)는 센서의 종류에 한정되는 것은 아니며, 원본 포인트 클라우드 데이터를 수집하여 프로세서(150)에 전달하는 구성으로 이해될 수 있다. 한편, 본 발명의 전자 장치(100)는 상술한 센서(120)의 구성을 포함하지 않고, 별도로 마련된 센서(120) 또는 원본 포인트 클라우드 데이터를 수집하는 장치로부터 원본 포인트 클라우드 데이터를 수신하도록 구성될 수 도 있다. The sensor (120) can collect 3D data or original point cloud data for a 3D object or surrounding objects of the electronic device (100). The sensor (120) can include, for example, at least a depth camera. Alternatively, the sensor (120) can include a lidar sensor capable of obtaining object-related depth information. Alternatively, the sensor (120) can collect RGB images (or RGB-D data) for the 3D object or surrounding objects. The sensor (120) of the present invention is not limited to the type of sensor, and can be understood as a configuration that collects original point cloud data and transmits it to the processor (150). Meanwhile, the electronic device (100) of the present invention may not include the configuration of the above-described sensor (120), and may be configured to receive original point cloud data from a separately provided sensor (120) or a device that collects original point cloud data.
상기 통신 인터페이스(110)는 상기 전자 장치(100)의 통신 기능을 지원하는 구성일 수 있다. 상기 통신 인터페이스(110)는 상기 전자 장치(100)가 포인트 클라우드 데이터를 방송하기 위한 방송 통신 회로를 포함하거나 또는 상기 포인트 클라우드 데이터를 특정 단말기들에게 제공하는 서버를 위한 유선 통신 회로 또는 무선 통신 회로 중 적어도 하나를 포함할 수 있다. 상기 통신 인터페이스(110)는 본 발명의 실시 예에 따른 트리 구조로 정의된 포인트 클라우드 데이터를 압축하여 전송하는 전송 수단으로서의 역할을 수행할 수 있다. The above communication interface (110) may be a configuration that supports a communication function of the electronic device (100). The communication interface (110) may include a broadcast communication circuit for the electronic device (100) to broadcast point cloud data, or may include at least one of a wired communication circuit or a wireless communication circuit for a server that provides the point cloud data to specific terminals. The communication interface (110) may serve as a transmission means that compresses and transmits point cloud data defined in a tree structure according to an embodiment of the present invention.
상기 메모리(130)는 상기 전자 장치(100) 운용에 필요한 다양한 데이터 및 프로그램을 저장할 수 있다. 예컨대, 상기 메모리(130)는 상기 센서(120) 또는 외부 전자 장치로부터 수신된 원본 포인트 클라우드 데이터를 저장할 수 있다. 또한, 상기 메모리(130)는 수신된 원본 포인트 클라우드 데이터를 트리 구조로 변환한 데이터, 상기 트리 구조의 포인트 클라우드 데이터를 압축한 압축 데이터(또는 압축된 포인트 클라우드 데이터)를 임시 또는 반영구적으로 저장할 수 있다. 추가로, 상기 메모리(130)는 상기 원본 포인트 클라우드 데이터를 특정 트리 구조로 변환하기 위한 알고리즘 및 압축 알고리즘을 저장할 수 있다. The above memory (130) can store various data and programs required for operating the electronic device (100). For example, the memory (130) can store original point cloud data received from the sensor (120) or an external electronic device. In addition, the memory (130) can temporarily or semi-permanently store data converted from the received original point cloud data into a tree structure, and compressed data (or compressed point cloud data) compressed from the point cloud data of the tree structure. In addition, the memory (130) can store an algorithm for converting the original point cloud data into a specific tree structure and a compression algorithm.
상기 프로세서(150)는 상기 전자 장치(100) 운용에 필요한 데이터의 전달 및 데이터의 처리를 수행할 수 있다. 예컨대, 상기 프로세서(150)는 원본 포인트 클라우드 데이터를 수신하고, 수신된 원본 포인트 클라우드 데이터의 트리 구조 변환을 위해 수신된 데이터를 그래픽 프로세서(160)에 전달할 수 있다. 상기 프로세서(150)는 그래픽 프로세서(160)에 의해 압축된 비디오 기반 포인트 클라우드 데이터를 통신 인터페이스(110)를 통해 출력(또는 전송)할 수 있다. The processor (150) can perform data transmission and data processing required for the operation of the electronic device (100). For example, the processor (150) can receive original point cloud data and transmit the received data to the graphics processor (160) for tree structure conversion of the received original point cloud data. The processor (150) can output (or transmit) video-based point cloud data compressed by the graphics processor (160) through the communication interface (110).
상기 그래픽 프로세서(160)는 상기 원본 포인트 클라우드 데이터에 대한 압축 과정을 수행할 수 있다. 이 과정에서, 상기 그래픽 프로세서(160)는 원본 포인트 클라우드 데이터의 트리 구조화를 수행하고, 이를 기반으로 포인트 클라우드 데이터의 압축을 수행할 수 있다. 상기 그래픽 프로세서(160)는 트리 구조화된 포인트 클라우드 데이터에 대한 비디오 포인트 클라우드 압축(VPCC: Video-based points cloud compression)을 수행할 수 있다. 이와 관련하여, 상기 그래픽 프로세서(160)는 VPCC 인코더를 포함할 수 있다. 상기 VPCC 인코더는 포인트 클라우드를 2D 비디오 코덱으로 압축하기 위해서 3D를 2D로 변환하는 역할을 수행하며, 패치 생성부(patch generation), 패킹부(packing), geometry 이미지 생성부, 텍스처 이미지 생성부, 스무딩(smoothing), 이미지 패딩부, 비디오 압축부, geometry reconstruction, occupancy map compression, Auxiliary patch-info compression, multiplexer를 포함할 수 있다. 상기 VPCC 인코더는 입력(또는 원본) 포인트 클라우드를 패치 생성부로 분할하여 2D 영상으로 변환한다. 패치 생성부는 실시간 법선 벡터 처리를 위하여 포인트 클라우드 데이터의 트리 구조화를 수행할 수 있으며, 분할된 패치들을 2D 평면에 위치시켜 비디오 코덱으로 압축한다. geometry 이미지 생성부는 포인트 클라우드의 위치 정보를, texture 이미지 생성부는 색상 정보를 저장한다. 또한 occupancy map 압축부는 2D 평면 내 패치의 유무를 나타낸다. 압축된 geometry video, compressed texture video, compressed occupancy map, compressed auxiliary patch info는 멀티플렉서를 하나의 압축된 비트스트림으로 출력된다.The graphic processor (160) may perform a compression process on the original point cloud data. In this process, the graphic processor (160) may perform a tree structuring of the original point cloud data and may perform compression of the point cloud data based on the tree structuring. The graphic processor (160) may perform video point cloud compression (VPCC: Video-based points cloud compression) on the tree-structured point cloud data. In this regard, the graphic processor (160) may include a VPCC encoder. The VPCC encoder may perform a role of converting 3D into 2D in order to compress the point cloud with a 2D video codec, and may include a patch generation unit, a packing unit, a geometry image generation unit, a texture image generation unit, smoothing, an image padding unit, a video compression unit, geometry reconstruction, occupancy map compression, Auxiliary patch-info compression, and a multiplexer. The above VPCC encoder divides the input (or original) point cloud into a patch generation unit and converts it into a 2D image. The patch generation unit can perform a tree structure of point cloud data for real-time normal vector processing, and positions the divided patches on a 2D plane and compresses them with a video codec. The geometry image generation unit stores position information of the point cloud, and the texture image generation unit stores color information. In addition, the occupancy map compression unit indicates the presence or absence of a patch in the 2D plane. The compressed geometry video, compressed texture video, compressed occupancy map, and compressed auxiliary patch info are output as a single compressed bitstream through a multiplexer.
도 2는 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축 과정 중 트리 생성 단계를 설명하기 위한 도면이다.FIG. 2 is a diagram for explaining a tree generation step during a video-based point cloud compression process according to an embodiment of the present invention.
도 2를 참조하면, 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축은 그래픽 프로세서(160)를 통해 수행될 수 있다. 상기 그래픽 센서(120)는 도시된 바와 같이 3D 객체에 대하여, 원본(또는 입력) 포인트 클라우드 데이터에 해당하는 N개의 포인트를 X 축 기준으로 정렬하고, 중앙에 위치한 값 (N/2)을 key로 하는 트리 노드 생성(예: K-D Tree구조의 노드 생성)을 할 수 있다. 상기 그래픽 프로세서(160)는 정렬된 결과를 반으로 분할 [0…N/2)[N/2…N)한 후, 나머지 좌표축(YZ)의 값을 정렬된 X축에 맞도록 재구성하고, 분할된 목록 각각을 Y축 기준으로 정렬하는 동작을 수행할 수 있다. 상기 그래픽 프로세서(160)는 상술한 동작들에 대하여 분할된 목록의 크기가 2가 될 때까지 XYZ축 순서로 반복하여 정렬을 수행하고, 분할된 목록의 크기가 2가 되면 트리 노드 생성하여, 비디오 기반 포인트 클라우드 압축을 수행할 수 있다. 예컨대, 도시된 도면을 참조하면, 그래픽 프로세서(160)는 3D 객체에 해당하는 7개의 포인트를 X축 기준으로 정렬하고, 중앙 제1 포인트(1)를 key로 하며, 제1 포인트(1) 첫 번째 가지(또는 잎(leaf))로 제2 포인트(2) 및 제3 포인트(3)가 정렬되고, 이후 반복 정렬을 통해 제2 포인트(2)에 제4 포인트(4)와 제5 포인트(5)가 정렬되며 제3 포인트(3)에는 제3 포인트(3)와 제7 포인트(7)가 정렬되고, 다시 반복 정렬을 통해 제1 포인트 내지 제7 포인트(4, 1, 2, 5, 6, 3, 7)가 동일 깊이 값으로 정렬되는 트리 노드를 생성할 수 있다. Referring to FIG. 2, video-based point cloud compression according to an embodiment of the present invention can be performed through a graphic processor (160). As illustrated, the graphic sensor (120) can align N points corresponding to original (or input) point cloud data for a 3D object with respect to the X-axis, and create a tree node (e.g., create a node of a K-D Tree structure) with a value (N/2) located at the center as a key. The graphic processor (160) can perform an operation of dividing the sorted result in half [0… N/2)[N/2… N), reconstructing the values of the remaining coordinate axes (YZ) to match the sorted X-axis, and aligning each of the divided lists with respect to the Y-axis. The graphic processor (160) can perform sorting in the order of the XYZ axes repeatedly until the size of the divided list becomes 2 for the above-described operations, and create a tree node when the size of the divided list becomes 2, thereby performing video-based point cloud compression. For example, referring to the illustrated drawing, the graphic processor (160) aligns seven points corresponding to a 3D object with respect to the X-axis, uses the central first point (1) as a key, and aligns the second point (2) and the third point (3) with the first branch (or leaf) of the first point (1), and then through repeated alignment, the fourth point (4) and the fifth point (5) are aligned to the second point (2), and the third point (3) and the seventh point (7) are aligned to the third point (3), and again through repeated alignment, the first to seventh points (4, 1, 2, 5, 6, 3, 7) are aligned with the same depth value, thereby generating a tree node.
상술한 바와 같이, 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축은 압축에 필요한 모든 과정을 그래픽 프로세서(160)를 통해서 운용(또는 구현)함으로써, 실시간 압축 동작을 실행할 수 있다. 이러한 방법을 통해 생성된 트리 구조는 모든 가지(leaf) 노드가 같은 깊이를 가지기 때문에 그래픽 프로세서(160)에 최적화하기가 용이하다.As described above, the video-based point cloud compression according to the embodiment of the present invention can perform real-time compression operations by operating (or implementing) all processes necessary for compression through the graphics processor (160). The tree structure generated through this method is easy to optimize for the graphics processor (160) because all leaf nodes have the same depth.
도 3은 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축 방법에서 법선 벡터 생성과 관련한 구성의 한 예를 나타낸 도면이다.FIG. 3 is a drawing showing an example of a configuration related to normal vector generation in a video-based point cloud compression method according to an embodiment of the present invention.
도 3을 참조하면, 법선 벡터 생성 구조는 트리 생성기(163), 포인트 클라우드 트리 배열부(165), 입력 포인트 클라우드 데이터 제공부(161), 법선 추정부(167)를 포함할 수 있다. 상술한 법선 벡터 생성 구조에서 설명한 각 블록들의 적어도 일부는 소프트웨어 블록 또는 하드웨어 모듈 중 적어도 하나로 구성될 수 있다. Referring to FIG. 3, the normal vector generation structure may include a tree generator (163), a point cloud tree array unit (165), an input point cloud data provider unit (161), and a normal line estimation unit (167). At least some of the blocks described in the above-described normal vector generation structure may be configured as at least one of a software block or a hardware module.
상기 입력 포인트 클라우드 데이터 제공부(161)는 앞서 언급한 센서(120) 또는 외부 장치 또는 메모리(130)에 저장된 원본 포인트 클라우드 데이터를 수집하고, 이를 트리 생성기(163)에 전달하는 한편, 법선 추정부(167)에는 포인트 데이터를 전달할 수 있다. 상기 트리 생성기(163)는 수신된 원본 포인트 클라우드 데이터(또는 입력 포인트 클라우드 데이터)에 대한 트리 노드를 생성하여 포인트 클라우드 트리 배열부(165)에 전달한다.The above input point cloud data providing unit (161) collects original point cloud data stored in the aforementioned sensor (120) or an external device or memory (130), and transmits it to the tree generator (163), while also transmitting point data to the normal estimation unit (167). The tree generator (163) generates a tree node for the received original point cloud data (or input point cloud data) and transmits it to the point cloud tree arrangement unit (165).
상기 포인트 클라우드 트리 배열부(165)는 법선 추정부(167)로부터 포인트들의 좌표(Point coordinates)들을 수신하며, 트리 생성기(163)로부터 트리 노드들을 수신하여 트리 배열을 처리할 수 있다. 상기 포인트 클라우드 트리 배열부(165)는 노드들을 배열한 트리 구조 정보를 법선 추정부(167)에 제공하며, 인덱스에 의한 참조를 위해 입력 포인트 클라우드 데이터 제공부(161)에 전달할 수 있다. The above point cloud tree array unit (165) receives point coordinates from the normal estimation unit (167) and can process the tree array by receiving tree nodes from the tree generator (163). The above point cloud tree array unit (165) provides tree structure information arranging nodes to the normal estimation unit (167) and can transmit it to the input point cloud data providing unit (161) for reference by index.
도 4는 본 발명의 실시 예에 따른 비디오 기반 포인트 클라우드 압축 방법에서 트리 생성과 관련한 그래픽 프로세서 구현의 한 예를 나타낸 도면이다.FIG. 4 is a diagram illustrating an example of a graphics processor implementation related to tree generation in a video-based point cloud compression method according to an embodiment of the present invention.
도 4를 참조하면, 본 발명의 실시 예에 따른 그래픽 프로세서(160)는 오프셋 생성부(61)(Offset Generation), 세그먼트 정렬부(63)(Segmented Sort), 재정렬부(65)(Redistribution), 세그먼트 최소-최대 계산부(67)(Segmented Minmax Calculation), 노드 생성부(69)(Parallel Node Creation)를 포함할 수 있다. 한편, 상술한 그래픽 프로세서(160)의 각 블록들의 적어도 일부는 소프트웨어 모듈 또는 하드웨어 모듈 중 적어도 하나로 형성될 수 있다.Referring to FIG. 4, a graphic processor (160) according to an embodiment of the present invention may include an offset generation unit (61) (Offset Generation), a segment sorting unit (63) (Segmented Sort), a re-sorting unit (65) (Redistribution), a segment min-max calculation unit (67) (Segmented Minmax Calculation), and a node generation unit (69) (Parallel Node Creation). Meanwhile, at least some of the blocks of the above-described graphic processor (160) may be formed as at least one of a software module or a hardware module.
상기 오프셋 생성부(61)는 그래픽 프로세서(160)의 커널 함수로 구현될 수 있다. 상기 오프셋 생성부(61)는 포인트 클라우드 데이터 전체 목록을 구간별(segment 별)로 정렬하기 위한 Index들을 생성할 수 있다. The above offset generation unit (61) can be implemented as a kernel function of the graphic processor (160). The above offset generation unit (61) can generate indexes for sorting the entire list of point cloud data by segment.
상기 세그먼트 정렬부(63)는 그래픽 프로세서(160)의 커널 기반 Radix Sort로 운용될 수 있다. 상기 세그먼트 정렬부(63)는 Offset에 따라 전체 목록을 구간별(segment 별)로 정렬할 수 있다. Radix Sort 운용에 따라, 낮은 자릿수부터 비교하여 정렬해 감으로써, 비교 연산을 하지 않아 연산 속도를 개선할 수 있다. The above segment sorting unit (63) can be operated by the kernel-based Radix Sort of the graphic processor (160). The above segment sorting unit (63) can sort the entire list by segment according to the offset. By sorting by comparing from the low digits according to the Radix Sort operation, the operation speed can be improved by not performing a comparison operation.
상기 재정렬부(65)는 그래픽 프로세서(160)의 커널 함수로 구성될 수 있다. 상기 재정렬부(65)는 오프셋에 따라 구간별로 정렬된 데이터들이 특정 축에 맞도록 나머지 축의 데이터를 재구성하는 역할을 수행할 수 있다. The above rearrangement unit (65) may be configured as a kernel function of the graphic processor (160). The above rearrangement unit (65) may perform the role of reconstructing the data of the remaining axes so that the data sorted by section according to the offset fits a specific axis.
상기 세그먼트 최소-최대 계산부(67)는 그래픽 프로세서(160)의 커널 함수로 구성될 수 있다. 상기 세그먼트 최소-최대 계산부(67)는 포인트 클라우드 데이터 전체 목록을 구간별로 정렬했을 때, 각 구간의 최대 및 최소값을 구할 수 있다. The above segment minimum-maximum calculation unit (67) may be configured as a kernel function of the graphic processor (160). The above segment minimum-maximum calculation unit (67) can obtain the maximum and minimum values of each section when the entire list of point cloud data is sorted by section.
상기 노드 생성부(69)는 앞서 도 1에서 설명한 프로세서(150)로 구성할 수도 있으나, 그래픽 프로세서(160)의 커널 함수로 구성함으로써, 고속 연산이 가능하다. 상기 노드 생성부(69)는 기준 값을 이용하여 트리 노드 생성할 수 있다. 예컨대, 노드 생성부(69)는 100개의 포인트를 트리로 구성하는 경우 트리의 마지막 레벨 노드의 개수로서 약 50만개 이상의 노드를 생성할 수 있다. 상기 노드 생성부(69)는 노드 생성을 위해 미리 메모리(130)의 일정 공간을 할당할 수 있다. The node generation unit (69) may be configured with the processor (150) described above in Fig. 1, but high-speed operation is possible by configuring it with the kernel function of the graphic processor (160). The node generation unit (69) may generate a tree node using a reference value. For example, when configuring 100 points into a tree, the node generation unit (69) may generate about 500,000 or more nodes as the number of nodes at the last level of the tree. The node generation unit (69) may allocate a certain space of the memory (130) in advance for node generation.
도 5는 본 발명의 실시 예에 따른 트리 생성과 관련한 연산자 정의의 한 예를 나타낸 도면이다.FIG. 5 is a diagram showing an example of operator definition related to tree creation according to an embodiment of the present invention.
도 5를 참조하면, 본 발명의 실시 예에 따른 트리 생성기(163)는 TreeNode 구조체(struct)에 대한 연산자 정의로서, 축 중심선을 위한 axis, 가지 또는 잎을 정의하기 위한 isLeaf, 중앙값을 정의하는 medianValue, 인덱스를 정의하는 medianIndex, 트리 구조에서 부모 오프셋 정의를 위한 parentOffset, 트리 구조에서 좌측 오프셋 정의를 위한 leftOffset, 트리 구조에서 우측 오프셋 정의를 위한 rightOffset 및 바운딩 박스 정의를 위한 aabb(AABB)를 할당할 수 있다. Referring to FIG. 5, a tree generator (163) according to an embodiment of the present invention may allocate, as operator definitions for a TreeNode structure (struct), axis for an axis centerline, isLeaf for defining a branch or leaf, medianValue for defining a median value, medianIndex for defining an index, parentOffset for defining a parent offset in a tree structure, leftOffset for defining a left offset in a tree structure, rightOffset for defining a right offset in a tree structure, and aabb (AABB) for defining a bounding box.
또한, 구조체 AABB는 바운딩 박스의 3개의 축에서 최소 값들 및 최대 값들을 정의하는 minX, minY, minZ, maxX, maxY 및 maxZ를 할당할 수 있다. 추가로, 구조체 Point는 좌표 값 및 색 데이터 정의를 위하여 x, y, z, r, g, b 연산자를 할당할 수 있다. Additionally, the structure AABB can assign minX, minY, minZ, maxX, maxY, and maxZ, which define the minimum and maximum values along the three axes of the bounding box. Additionally, the structure Point can assign the operators x, y, z, r, g, and b, for defining coordinate values and color data.
상기 트리 생성기(163)는 데이터 준비 과정에서, 각 포인트의 XYZ 축 값을 개별 목록 및 인덱스 목록으로 변환할 수 있다. 예컨대, 트리 생성기(163)는 Indices[index] = index, Xs[index] = points[index].x, Ys[index] = points[index].y, Zs[index] = points[index].z 변환을 수행할 수 있다. The above tree generator (163) can convert the XYZ axis values of each point into individual lists and index lists during the data preparation process. For example, the tree generator (163) can perform the conversion Indices[index] = index, Xs[index] = points[index].x, Ys[index] = points[index].y, Zs[index] = points[index].z.
도 6은 본 발명의 실시 예에 따른 오프셋 생성부의 운용을 정의하는 코드의 한 예를 나타낸 도면이다.FIG. 6 is a diagram showing an example of code defining the operation of an offset generation unit according to an embodiment of the present invention.
본 발명의 실시 예에 따른 오프셋 생성부(61)는 트리 깊이가 0 및 1인 경우 고정된 형태로 트리를 생성할 수 있다. 예컨대, 오프셋 생성부(61)는 트리 깊이가 0인 경우, Depth 0: {0, N }으로 트리를 생성하고, 트리 깊이가 1인 경우 Depth 1: {0, N/2, N }으로 0의 하부 트리를 생성할 수 있다. The offset generation unit (61) according to an embodiment of the present invention can generate a tree in a fixed form when the tree depth is 0 and 1. For example, the offset generation unit (61) can generate a tree with Depth 0: {0, N} when the tree depth is 0, and can generate a subtree of 0 with Depth 1: {0, N/2, N} when the tree depth is 1.
한편, 오프셋 생성부(61)는 트리 깊이가 2 이상인 경우 도 6에 도시된 바와 같은 알고리즘을 그래픽 프로세서(160)의 커널 함수를 통하여 정의할 수 있다. 예를 들어, 오프셋 생성부(61)는 OffsetGenerationKernel 함수를 호출하거나 또는 정의할 수 있으며, OffsetGenerationKernel 함수의 변수는 in offsetsprev, out offsetscurr을 가질 수 있다. 오프셋 생성부(61)는 각각의 인덱스(0...N-1)들에 대하여, 이전 인덱스의 절반 값(예: index/2)을 indexparent로 정의하고, 현재 인덱스의 절반 값(예: (index+1)/2)을 indexparent+1로 정의하며, offsetleft는 offsetsprev[indexparent] 값으로 정의하고, offsetright는 offsetscurr[indexparent+1] 값으로 정의할 수 있다. 이에 따라, indexparent+1 값이 indexparent 값과 동일할 경우, offsetcurr[index] 값은 offsetleft 값이 되고, indexparent+1 값이 indexparent 값과 동일하지 않을 경우, offsetcurr[index] 값은 [offsetleft + (offsetright - offsetleft)/2] 값이 될 수 있다. Meanwhile, the offset generation unit (61) can define an algorithm as illustrated in FIG. 6 through a kernel function of the graphic processor (160) when the tree depth is 2 or more. For example, the offset generation unit (61) can call or define the OffsetGenerationKernel function, and the variables of the OffsetGenerationKernel function can have in offsets prev and out offsets curr . The offset generation unit (61) can define, for each index (0...N-1), a half value of the previous index (e.g., index/2) as index parent , a half value of the current index (e.g., (index+1)/2) as index parent+1 , and can define offset left as an offsets prev [index parent ] value, and can define offset right as an offsets curr [indexp arent+1 ] value. Accordingly, if the index parent+1 value is equal to the index parent value, the offset curr [index] value can be the offset left value, and if the index parent+1 value is not equal to the index parent value, the offset curr [index] value can be the [offset left + (offset right - offset left )/2] value.
도 7은 본 발명의 실시 예에 따른 세그먼트 정렬부의 운용을 정의하는 코드의 한 예를 나타낸 도면이다.FIG. 7 is a diagram showing an example of code defining the operation of a segment alignment unit according to an embodiment of the present invention.
도 7을 참조하면, 세그먼트 정렬부(63)는 최적화를 위해 segment의 개수마다 다른 알고리즘을 적용할 수 있다. 이와 관련하여, 상기 세그먼트 정렬부(63)는 in data, in indices, out sortedData, out sortedIndices를 인자로 하는 SegmentedSortKernel 함수로 정의될 수 있다. 상기 세그먼트 정렬부는 세그먼트 사이즈(sizeseg)가 64보다 크면, axis, indices, sortedAxis, sortedIndices를 인자로 하는 RadixSort(기수 정렬) 방식을 적용하고, 세그먼트 사이즈(sizeseg)가 2보다 크면, axis, indices, sortedAxis, sortedIndices를 인자로 하는 InsertionSort(삽입 정렬) 방식을 적용하고, 그렇지 않은 경우, 최대최소 비교 방식을 적용할 수 있다. 상술한 세그먼트 사이즈들에 관한 기준 값들은 변경될 수 있다. 예컨대, 기수 정렬 방식은 세그먼트 사이즈가 2 초과이면서 64 이하일 경우 적용되고, 삽입 정렬 방식은 세그먼트 사이즈가 2 이하인 경우에 적용되고, 최대최소 비교 방식은 세그먼트 사이즈가 64를 초과하는 경우 적용될 수 있다. 상기 세그먼트 정렬부(63)는 세그먼트 사이즈별로 정렬하는 과정에서 Index 목록도 함께 정렬할 수 있다.Referring to FIG. 7, the segment sorting unit (63) can apply different algorithms for each number of segments for optimization. In this regard, the segment sorting unit (63) can be defined as a SegmentedSortKernel function that takes in data, in indices, out sortedData, and out sortedIndices as arguments. If the segment size (size seg ) is greater than 64, the segment sorting unit applies a RadixSort method that takes axis, indices, sortedAxis, and sortedIndices as arguments, and if the segment size (size seg ) is greater than 2, it applies an InsertionSort method that takes axis, indices, sortedAxis, and sortedIndices as arguments, and otherwise, it can apply a maximum/minimum comparison method. The reference values for the above-described segment sizes can be changed. For example, the radix sort method can be applied when the segment size is greater than 2 and less than or equal to 64, the insertion sort method can be applied when the segment size is less than or equal to 2, and the maximum-minimum comparison method can be applied when the segment size exceeds 64. The segment sorting unit (63) can also sort the index list during the process of sorting by segment size.
도 8은 본 발명의 실시 예에 따른 재정렬부의 운용을 정의하는 코드의 한 예를 나타낸 도면이다.FIG. 8 is a diagram showing an example of code defining the operation of a reordering unit according to an embodiment of the present invention.
도 8을 참조하면, 상기 재정렬부(65)는 정렬된 축의 index에 맞추어 나머지 축을 재 정렬할 수 있다. 이와 관련하여 상기 재정렬부(65)는 in sortedIndices, in data1, in data2, out data1out, out data2out을 인자로 하는 RedistributionKernel 함수를 호출하거나 해당 함수로 정의될 수 있다. data1out[index]에는 data1[sortedIndices[Index]가 기입되고, data2out[index]에는 data2[sortedIndices[Index]가 기입된다.Referring to Fig. 8, the reordering unit (65) can reorder the remaining axes according to the index of the sorted axes. In this regard, the reordering unit (65) can call the RedistributionKernel function that takes in sortedIndices, in data1, in data2, out data1 out , and out data2 out as arguments, or can be defined as the corresponding function. In data1 out [index], data1[sortedIndices[Index] is written, and in data2 out [index], data2[sortedIndices[Index] is written.
도 9는 본 발명의 실시 예에 따른 세그먼트 최소-최대 계산부 운용을 정의하는 코드의 한 예를 나타낸 도면이다.FIG. 9 is a diagram showing an example of code defining the operation of a segment minimum-maximum calculation unit according to an embodiment of the present invention.
세그먼트 최소-최대 계산부(67)는 AABB(Axis Aligned Bounding Box) 계산을 위해 각 segment별 min, max 값을 계산할 수 있다. 이와 관련하여, 세그먼트 최소-최대 계산부(67)는 in data, out min, out max를 인자로 하는 사전 정의된 관련 함수 예컨대, SegmentedMinMaxKerenl 함수를 호출하거나 해당 함수를 정의할 수 있다. 상기 함수의 정의는 도 9에 나타낸 바와 같이 정의될 수 있다. 예를 들어, globalIndex 값이 세그먼트의 끝 값의 인덱스(indexsegEnd)보다 작은 경우, dataIndex를 인자로 하는 data 함수 값이 threadIndex를 인자로 하는 sharedMin 함수 값에 기입되고, threadIndex.x 값을 인자로 하는 sharedMin 함수 값이 threadIndex를 인자로 가지는 sharedMax 함수 값에 기입될 수 있다. 한편, (dataIndex + blockDim.x) 값이 세그먼트의 끝 값의 인덱스(indexsegEnd)보다 작은 경우, (dataIndex + blockDim.x)를 인자로 가지는 axis 함수 값이 v 값에 기입되고, sharedMin[threadIndex] 및 v 값 중 최소 값(min)이 sharedMin[ThreadIndex]에 기입되고, sharedMax[threadIndex] 및 v 값 중 최대 값(max)이 sharedMax[ThreadIndex]에 기입될 수 있다.The segment min-max calculation unit (67) can calculate the min and max values for each segment for AABB (Axis Aligned Bounding Box) calculation. In this regard, the segment min-max calculation unit (67) can call a predefined related function, for example, the SegmentedMinMaxKerenl function, which has in data, out min, and out max as arguments, or define the corresponding function. The definition of the above function can be defined as shown in Fig. 9. For example, when the globalIndex value is smaller than the index of the end value of the segment (index segEnd ), the data function value having dataIndex as an argument can be written to the sharedMin function value having threadIndex as an argument, and the sharedMin function value having threadIndex.x as an argument can be written to the sharedMax function value having threadIndex as an argument. Meanwhile, if the value (dataIndex + blockDim.x) is smaller than the index of the end value of the segment (index segEnd ), the axis function value that has (dataIndex + blockDim.x) as an argument is written to the v value, the minimum value (min) among sharedMin[threadIndex] and v values can be written to sharedMin[ThreadIndex], and the maximum value (max) among sharedMax[threadIndex] and v values can be written to sharedMax[ThreadIndex].
한편, threadIndex가 0이면, sharedMin[0] 및 sharedMax[0] 값이 각각 outMin 및 outMax 값이 될 수 있다.Meanwhile, if threadIndex is 0, the sharedMin[0] and sharedMax[0] values can be outMin and outMax values, respectively.
도 10은 본 발명의 실시 예에 따른 노드 생성부 운용을 정의하는 코드의 한 예를 나타낸 도면이다.FIG. 10 is a diagram showing an example of code defining the operation of a node creation unit according to an embodiment of the present invention.
도 10을 참조하면, 노드 생성부(69)는 정렬 결과를 이용하여 트리 노드를 생성할 수 있다. 이와 관련하여, 노드 생성부(69)는 in startOffset, in offsets, in axis, in indices, in data[3], in min[3], in max[3], in isLeaf, out nodes를 인자로 하는 사전 정의된 ParallelNodeCreationKernel 함수를 호출하거나 정의할 수 있다. 상기 ParallelNodeCreationKernel 함수에서 indexparent 값은 index/2 값으로 정의되고, offsetleft 값은 offsets[index]/2 값으로 정의되며, offsetright 값은 offset[index+1]/2 값으로 정의될 수 있다. 또한, 상기 ParallelNodeCreationKernel 함수에서 node는 nodes[startoffset.current + index] 값으로 정의될 수 있다. node.axis에는 axis 값이 기입되고, node.isLeaf에는 isLeaf 값이 기입되며, node.medianValue에는 data[axis][offsetmedian] 값이 기입되며, node.medianIndex에는 indices[offsetmedian] 값이 기입되고, node.parentOffset에는 startOffset.parent에서 startOffset.current를 뺀 값이 기입될 수 있다. node.aabb.minx에는 min[0][index] 값이 기입되고, node.aabb.miny에는 min[][index] 값이 기입되고, node.aabb.minz에는 min[2][index] 값이 기입되며, node.aabb.maxx에는 max[0][index] 값이 기입되고, node.aabb.maxy에는 max[1][index] 값이 기입되고, node.aabb.maxz에는 max[2][index] 값이 기입될 수 있다. 상술한 변수 정의 값들에 대하여, node.offsetleft 값은 isLeaf가 아닌 경우 NodeCountcurrent로 정의되며, isLeaf인 경우, node.offsetleft 값은 indices[offsetleft] 값으로 정의될 수 있다. node.offsetright 값은 isLeaf가 아닌 경우 NodeCountcurrent+1로 정의되며, isLeaf인 경우, node.offsetright 값은 indices[offsetleft-1] 값으로 정의될 수 있다.Referring to FIG. 10, the node creation unit (69) can create a tree node using the sorting result. In this regard, the node creation unit (69) can call or define a predefined ParallelNodeCreationKernel function that takes in startOffset, in offsets, in axis, in indices, in data[3], in min[3], in max[3], in isLeaf, and out nodes as arguments. In the ParallelNodeCreationKernel function, the index parent value can be defined as an index/2 value, the offset left value can be defined as an offsets[index]/2 value, and the offset right value can be defined as an offset[index+1]/2 value. In addition, in the ParallelNodeCreationKernel function, a node can be defined as a nodes[startoffset.current + index] value. node.axis can contain the axis value, node.isLeaf can contain the isLeaf value, node.medianValue can contain the data[axis][offset median ] value, node.medianIndex can contain the indices[offset median ] value, and node.parentOffset can contain the value of startOffset.parent minus startOffset.current. node.aabb.minx can contain the min[0][index] value, node.aabb.miny can contain the min[][index] value, node.aabb.minz can contain the min[2][index] value, node.aabb.maxx can contain the max[0][index] value, node.aabb.maxy can contain the max[1][index] value, and node.aabb.maxz can contain the max[2][index] value. For the above-mentioned variable definition values, the node.offset left value is defined as NodeCount current if it is not isLeaf, and if it is isLeaf, the node.offset left value can be defined as the indices[offset left ] value. The node.offset right value is defined as NodeCount current +1 if it is not isLeaf, and if it is isLeaf, the node.offset right value can be defined as the indices[offset left -1] value.
이상에서 설명한 바와 같이, 본 명세서는 다수의 특정한 구현물의 세부사항들을 포함하지만, 이들은 어떠한 발명이나 청구 가능한 것의 범위에 대해서도 제한적인 것으로서 이해되어서는 안 되며, 오히려 특정한 발명의 특정한 실시형태에 특유할 수 있는 특징들에 대한 설명으로서 이해되어야 한다. While this specification contains details of many specific implementations, these should not be construed as limitations on the scope of any invention or what may be claimed, but rather as descriptions of features that may be unique to particular embodiments of particular inventions.
또한, 특정한 순서로 도면에서 동작들을 묘사하고 있지만, 이는 바람직한 결과를 얻기 위하여 도시된 그 특정한 순서나 순차적인 순서대로 그러한 동작들을 수행하여야 한다거나 모든 도시된 동작들이 수행되어야 하는 것으로 이해되어서는 안 된다. 특정한 경우, 멀티태스킹과 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 실시형태의 다양한 시스템 컴포넌트의 분리는 그러한 분리를 모든 실시형태에서 요구하는 것으로 이해되어서는 안 되며, 설명한 프로그램 컴포넌트와 시스템들은 일반적으로 단일의 소프트웨어 제품으로 함께 통합되거나 다중 소프트웨어 제품에 패키징될 수 있다는 점을 이해하여야 한다.Also, although operations are depicted in the drawings in a particular order, this should not be understood to imply that the operations must be performed in the particular order illustrated or in any sequential order to achieve a desirable result, or that all of the illustrated operations must be performed. In certain cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of the various system components of the embodiments described above should not be understood to require such separation in all embodiments, and it should be understood that the program components and systems described may generally be integrated together in a single software product or packaged into multiple software products.
본 기술한 설명은 본 발명의 최상의 모드를 제시하고 있으며, 본 발명을 설명하기 위하여, 그리고 통상의 기술자가 본 발명을 제작 및 이용할 수 있도록 하기 위한 예를 제공하고 있다. 이렇게 작성된 명세서는 그 제시된 구체적인 용어에 본 발명을 제한하는 것이 아니다. 따라서, 상술한 예를 참조하여 본 발명을 상세하게 설명하였지만, 통상의 기술자라면 본 발명의 범위를 벗어나지 않으면서도 본 예들에 대한 개조, 변경 및 변형을 가할 수 있다.The present description has set forth the best mode of the invention and has provided examples to illustrate the invention and to enable those skilled in the art to make and use the invention. The specification, written in this manner, is not intended to limit the invention to the specific terms set forth. Accordingly, although the invention has been described in detail with reference to the examples set forth above, those skilled in the art can make modifications, changes, and variations to the examples without departing from the scope of the invention.
따라서 본 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.Therefore, the scope of the present invention should not be determined by the described embodiments but by the claims.
100: 전자 장치
110: 통신 인터페이스
120: 센서
130: 메모리
150: 프로세서
160: 그래픽 프로세서
161: 입력 포인트 클라우드 데이터 제공부
163: 트리 생성기
165: 포인트 클라우드 트리 배열부
167: 법선 추정부100: Electronic devices
110: Communication Interface
120: Sensor
130: Memory
150: Processor
160: Graphics Processor
161: Input Point Cloud Data Provider
163: Tree Generator
165: Point Cloud Tree Array
167: Normal Estimation Section
Claims (10)
상기 입력 포인트 클라우드 데이터에 대한 압축을 처리하는 그래픽 프로세서;를 포함하고,
상기 그래픽 프로세서는
상기 입력 포인트 클라우드 데이터들을 트리 구조로 변환하기 위한 트리 노드들을 생성하고,
상기 생성된 트리 노드들을 배열하여 상기 입력 포인트 클라우드 데이터에 대해 실시간으로 법선을 추정하고,
상기 추정된 법선을 기반으로 상기 입력 포인트 클라우드 데이터에 대한 비디오기반 포인트 클라우드 압축을 수행하도록 설정되며,
상기 그래픽 프로세서는
상기 트리 구조의 깊이에 따른 하부 트리의 깊이 값을 정의하는 오프셋 생성부;를 포함하고,
상기 오프셋 생성부는
상기 트리 구조의 깊이가 0 및 1인 경우 지정된 하부 트리에 지정된 오프셋 값을 할당하고,
상기 트리 구조의 깊이가 2이상인 경우, 상기 입력 포인트 클라우드 데이터들 각각에 대한 인덱스 값들을 기준으로, 트리 구조의 좌측 오프셋 값과 우측 오프셋 값을 결정하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축을 지원하는 전자 장치.Memory for storing input point cloud data for a 3D object with three axes;
A graphics processor for processing compression of the input point cloud data;
The above graphics processor
Generate tree nodes to convert the above input point cloud data into a tree structure,
By arranging the above-generated tree nodes, normal lines are estimated in real time for the input point cloud data,
It is set to perform video-based point cloud compression on the input point cloud data based on the above estimated normal,
The above graphics processor
An offset generation unit defining a depth value of a subtree according to the depth of the above tree structure is included;
The above offset generation part
If the depth of the above tree structure is 0 and 1, assign the specified offset value to the specified subtree,
An electronic device supporting video-based point cloud compression, characterized in that when the depth of the tree structure is 2 or more, the left offset value and the right offset value of the tree structure are determined based on the index values for each of the input point cloud data.
상기 그래픽 프로세서는
상기 오프셋 생성부에 의해 결정된 오프셋 값에 따라 상기 입력 포인트 클라우드 데이터의 전체 목록을 상기 3개의 축 중 특정 축을 기준으로 구간 별로 정렬하는 세그먼트 정렬부;를 포함하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축을 지원하는 전자 장치.In the first paragraph,
The above graphics processor
An electronic device supporting video-based point cloud compression, characterized in that it includes a segment alignment unit that aligns the entire list of the input point cloud data by section based on a specific axis among the three axes according to the offset value determined by the offset generation unit.
상기 세그먼트 정렬부는
상기 전체 목록을 상기 특정 축 기준으로 구간 별로 정렬하되 상기 구간의 크기에 따라 서로 다른 정렬 방식으로 정렬하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축을 지원하는 전자 장치.In the third paragraph,
The above segment alignment part
An electronic device supporting video-based point cloud compression, characterized in that the entire list is sorted by section based on the specific axis, and the sorting is performed in different sorting methods depending on the size of the section.
상기 그래픽 프로세서는
상기 세그먼트 정렬부에 의해 정렬된 구간들을 재정렬하는 재정렬부;를 포함하고,
상기 재정렬부는
상기 세그먼트 정렬부에 의해 정렬된 값을 분할하고, 상기 특정 축 이외 나머지 축의 값들을 상기 특정 축에 맞도록 재구성하되 상기 전체 목록의 크기가 지정된 값 이하가 되도록 처리하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축을 지원하는 전자 장치. In the third paragraph,
The above graphics processor
A reordering unit for reordering the segments sorted by the above segment sorting unit;
The above reordering part
An electronic device supporting video-based point cloud compression, characterized in that it divides the values sorted by the segment sorting unit, and reconstructs the values of the remaining axes excluding the specific axis to fit the specific axis, but processes them so that the size of the entire list is less than a specified value.
상기 그래픽 프로세서는
상기 입력 포인트 클라우드 데이터를 위한 바운딩 박스 계산을 위한 세그먼트 최소-최대 계산부;
상기 재정렬부에 의해 정렬된 값들 및 상기 세그먼트 최소-최대 계산부에 의해 계산된 값들을 기반으로 상기 트리 구조에 이용할 트리 노드를 할당하는 노드 생성부;를 포함하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축을 지원하는 전자 장치. In paragraph 5,
The above graphics processor
A segment min-max calculation unit for calculating bounding boxes for the above input point cloud data;
An electronic device supporting video-based point cloud compression, characterized in that it includes a node generation unit that allocates a tree node to be used in the tree structure based on the values sorted by the reordering unit and the values calculated by the segment minimum-maximum calculation unit.
상기 입력 포인트 클라우드 데이터들을 트리 구조로 변환하기 위한 트리 노드들을 생성하는 단계;
상기 생성된 트리 노드들을 배열하여 상기 입력 포인트 클라우드 데이터에 대해 실시간으로 법선을 추정하는 단계;
상기 추정된 법선을 기반으로 상기 입력 포인트 클라우드 데이터에 대한 비디오기반 포인트 클라우드 압축을 수행하는 단계;를 포함하고,
상기 트리 노드를 생성하는 단계는
상기 트리 구조의 깊이가 0 및 1인 경우 지정된 하부 트리에 지정된 오프셋 값을 할당하고, 상기 트리 구조의 깊이가 2이상인 경우, 상기 입력 포인트 클라우드 데이터들 각각에 대한 인덱스 값들을 기준으로, 트리 구조의 좌측 오프셋 값과 우측 오프셋 값을 결정하는 단계;를 포함하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축 방법. A step of receiving input point cloud data for a 3D object having three axes;
A step of creating tree nodes for converting the above input point cloud data into a tree structure;
A step of arranging the generated tree nodes to estimate normal lines in real time for the input point cloud data;
A step of performing video-based point cloud compression on the input point cloud data based on the estimated normal;
The steps to create the above tree node are
A video-based point cloud compression method, characterized in that it comprises the steps of: assigning a specified offset value to a specified subtree when the depth of the tree structure is 0 and 1, and determining a left offset value and a right offset value of the tree structure based on index values for each of the input point cloud data when the depth of the tree structure is 2 or more.
상기 트리 노드를 생성하는 단계는
세그먼트 정렬부가 상기 결정된 오프셋 값에 따라 상기 입력 포인트 클라우드 데이터의 전체 목록을 상기 3개의 축 중 특정 축을 기준으로 구간 별로 정렬하되 상기 구간의 크기에 따라 서로 다른 정렬 방식으로 정렬하는 단계; 및
재정렬부가 상기 세그먼트 정렬부에 의해 정렬된 값을 분할하고, 상기 특정 축 이외 나머지 축의 값들을 상기 특정 축에 맞도록 재구성하되 상기 전체 목록의 크기가 지정된 값 이하가 되도록 처리하는 단계;를 포함하는 것을 특징으로 하는 비디오기반 포인트 클라우드 압축 방법. In Article 7,
The steps to create the above tree node are
A step of the segment alignment unit aligning the entire list of the input point cloud data by section based on a specific axis among the three axes according to the determined offset value, and aligning them in different sorting methods according to the size of the section; and
A video-based point cloud compression method, characterized in that it includes a step of: a reordering unit dividing the values sorted by the segment sorting unit, and reconstructing the values of the remaining axes excluding the specific axis to fit the specific axis, while processing them so that the size of the entire list becomes less than a specified value.
상기 트리 노드를 생성하는 단계는
세그먼트 최소-최대 계산부가 상기 입력 포인트 클라우드 데이터를 위한 바운딩 박스의 최대 값 및 최소 값을 계산하는 단계; 및
노드 생성부가 상기 재정렬부에 의해 정렬된 값들 및 상기 최소 값과 상기 최대 값들을 기반으로 상기 트리 구조에 이용할 상기 트리 노드를 할당하는 단계;를 포함하는 것을 특징으로 하는 비디오 기반 포인트 클라우드 압축 방법.In Article 9,
The steps to create the above tree node are
A step for calculating the maximum and minimum values of a bounding box for the input point cloud data by a segment min-max calculation unit; and
A video-based point cloud compression method, characterized in that it includes a step of allocating the tree node to be used in the tree structure based on the values sorted by the re-sorting unit and the minimum and maximum values.
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020210157142A KR102801168B1 (en) | 2021-11-16 | 2021-11-16 | Processing Method for Video-based Point Cloud Data and an electronic device supporting the same |
| PCT/KR2021/017826 WO2023090508A1 (en) | 2021-11-16 | 2021-11-30 | Video-based point cloud data processing method and electronic device supporting same |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020210157142A KR102801168B1 (en) | 2021-11-16 | 2021-11-16 | Processing Method for Video-based Point Cloud Data and an electronic device supporting the same |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20230071866A KR20230071866A (en) | 2023-05-24 |
| KR102801168B1 true KR102801168B1 (en) | 2025-05-02 |
Family
ID=86397161
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020210157142A Active KR102801168B1 (en) | 2021-11-16 | 2021-11-16 | Processing Method for Video-based Point Cloud Data and an electronic device supporting the same |
Country Status (2)
| Country | Link |
|---|---|
| KR (1) | KR102801168B1 (en) |
| WO (1) | WO2023090508A1 (en) |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2016031764A (en) * | 2014-07-25 | 2016-03-07 | 株式会社東芝 | Image analysis method |
| US20200221134A1 (en) * | 2019-01-07 | 2020-07-09 | Samsung Electronics Co., Ltd. | Fast projection method in video-based point cloud compression codecs |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20170214943A1 (en) * | 2016-01-22 | 2017-07-27 | Mitsubishi Electric Research Laboratories, Inc. | Point Cloud Compression using Prediction and Shape-Adaptive Transforms |
| KR102537946B1 (en) * | 2018-04-17 | 2023-05-31 | 삼성전자주식회사 | Apparatus and method for processing data assoiciated with point cloud |
| EP3806474A4 (en) * | 2018-07-12 | 2021-04-14 | Samsung Electronics Co., Ltd. | METHOD AND DEVICE FOR ENCODING A THREE-DIMENSIONAL IMAGE, AND METHOD AND DEVICE FOR DECODING A THREE-DIMENSIONAL IMAGE |
| KR102596002B1 (en) * | 2019-03-21 | 2023-10-31 | 엘지전자 주식회사 | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method |
| US11348285B2 (en) * | 2019-12-10 | 2022-05-31 | Sony Group Corporation | Mesh compression via point cloud representation |
-
2021
- 2021-11-16 KR KR1020210157142A patent/KR102801168B1/en active Active
- 2021-11-30 WO PCT/KR2021/017826 patent/WO2023090508A1/en not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2016031764A (en) * | 2014-07-25 | 2016-03-07 | 株式会社東芝 | Image analysis method |
| US20200221134A1 (en) * | 2019-01-07 | 2020-07-09 | Samsung Electronics Co., Ltd. | Fast projection method in video-based point cloud compression codecs |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2023090508A1 (en) | 2023-05-25 |
| KR20230071866A (en) | 2023-05-24 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP7560021B2 (en) | Deep Learning Systems | |
| JP7711155B2 (en) | Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device | |
| Nguyen et al. | Multiscale deep context modeling for lossless point cloud geometry compression | |
| Zhu et al. | Lossless point cloud geometry compression via binary tree partition and intra prediction | |
| KR102519653B1 (en) | Apparatus and method for point cloud compression | |
| KR101271460B1 (en) | Video restoration apparatus and its method | |
| EP2947630A1 (en) | Method for compressing coordinate data | |
| JP7785744B2 (en) | Three-dimensional data encoding method, three-dimensional data decoding method, three-dimensional data encoding device, and three-dimensional data decoding device | |
| WO2021053270A1 (en) | Video-based point cloud compression model to world signalling information | |
| KR20210020815A (en) | An apparatus for transmitting point cloud data, a method for transmitting point cloud data, an apparatus for receiving point cloud data and a method for receiving point cloud data | |
| US20220012945A1 (en) | Point cloud geometry upsampling | |
| WO2014120281A1 (en) | Increasing frame rate of an image stream | |
| KR20240164514A (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method. | |
| WO2021245326A1 (en) | A method, an apparatus and a computer program product for video encoding and video decoding | |
| CN116310060B (en) | Method, device, equipment and storage medium for rendering data | |
| KR102801168B1 (en) | Processing Method for Video-based Point Cloud Data and an electronic device supporting the same | |
| WO2022131948A1 (en) | Devices and methods for sequential coding for point cloud compression | |
| Buder | Dense real-time stereo matching using memory efficient semi-global-matching variant based on FPGAs | |
| KR20240101564A (en) | Point cloud data transmission device, point cloud data transmission method, point cloud data reception device and point cloud data reception method | |
| Roriz et al. | FOG: Fast octree generator for LiDAR point clouds | |
| WO2024158570A1 (en) | Systems and methods for decompressing three-dimensional image data | |
| Höller et al. | Automatic object annotation in streamed and remotely explored large 3D reconstructions | |
| KR20240051511A (en) | System for 3d point cloud semantic segmentation using multi-view color images | |
| CN114332603A (en) | Appearance processing method and device for dialogue module and electronic equipment | |
| CN115486079A (en) | Method and apparatus for constructing three-dimensional geometry |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| PN2301 | Change of applicant |
St.27 status event code: A-3-3-R10-R13-asn-PN2301 St.27 status event code: A-3-3-R10-R11-asn-PN2301 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| E902 | Notification of reason for refusal | ||
| PE0902 | Notice of grounds for rejection |
St.27 status event code: A-1-2-D10-D21-exm-PE0902 |
|
| E13-X000 | Pre-grant limitation requested |
St.27 status event code: A-2-3-E10-E13-lim-X000 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |