Point cloud data transmitting device, point cloud data transmitting method, point cloud data receiving device, and point cloud data receiving method
Patent Information
- Application Number
- JP2022525017
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2019-12-26
- Filing Date
- 2020-08-24
- Publication Date
- 2025-03-05
- Estimated Expiration
- 2040-08-24
AI Technical Summary
【0007】 実施例による装置及び方法は、高効率でポイントクラウドデータを処理することができる。
Smart Images

Figure 0007640542000007 
Figure 0007640542000008 
Figure 0007640542000009
Abstract
Description
[Technical field]
[0001] The embodiments relate to a method and apparatus for processing point cloud content. [Background technology]
[0002] Point cloud content is content represented by a point cloud, which is a collection of points belonging to a coordinate system that represents a three-dimensional space. Point cloud content can represent three-dimensional media and is used to provide various services such as VR (Virtual Reality), AR (Augmented Reality), MR (Mixed Reality) and autonomous driving services. However, to represent point cloud content, tens of thousands to hundreds of thousands of point data are required. Therefore, a method for efficiently processing a huge amount of point data is required. Summary of the Invention [Problem to be solved by the invention]
[0003] DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS The embodiments provide an apparatus and method for efficiently processing point cloud data.The embodiments provide a method and apparatus for processing point cloud data to address latency and encoding / decoding complexity.
[0004] However, the scope of the invention is not limited to the above-mentioned technical problems, and may be extended to other technical problems that a person skilled in the art can derive based on all the contents described herein. [Means for solving the problem]
[0005] As a technical solution, a point cloud data transmission method according to an embodiment includes the steps of encoding the point cloud data and transmitting a bitstream including the point cloud data.
[0006] A method for receiving point cloud data according to an embodiment also includes receiving a bitstream including the point cloud data, and decoding the point cloud data. Effect of the Invention
[0007] The apparatus and method according to the embodiment can process point cloud data with high efficiency.
[0008] The apparatus and method according to the embodiment can provide a high-quality point cloud service.
[0009] The apparatus and method according to the embodiment can provide point cloud content for providing general-purpose services such as VR services and autonomous driving services. [Brief description of the drawings]
[0010] The accompanying drawings are provided to aid in the understanding of the embodiments and, together with the associated description of the embodiments, illustrate the embodiments. For a better understanding of the various embodiments described below, reference should be made to the following description of the embodiments in conjunction with the following drawings, in which like reference numerals correspond to corresponding parts, and in which:
[0011]
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13
Figure 14
Figure 15
Figure 16
Figure 17
Figure 18
Figure 19
Figure 20
Figure 21
Figure 22
Figure 23
Figure 24
Figure 25
Figure 26
[0012] Preferred embodiments will be described in detail with reference to the accompanying drawings. The following detailed description with reference to the accompanying drawings is intended to illustrate preferred embodiments rather than to illustrate only embodiments that may be implemented by the embodiments. The following detailed description includes details to provide a thorough understanding of the embodiments. However, it will be apparent to those skilled in the art that the embodiments may be practiced without such details.
[0013] Most of the terms used in the examples are common and widely used in the relevant field, but some are arbitrarily selected by the applicant, and their meanings will be explained in detail below as necessary. Therefore, the examples should be understood based on the intended meaning of the terms, rather than the simple names and meanings of the terms.
[0014] FIG. 1 is a diagram illustrating an example of a point cloud content providing system according to an embodiment.
[0015] The point cloud content providing system shown in Fig. 1 includes a transmission device 10000 and a reception device 10004. The transmission device 10000 and the reception device 10004 are capable of wired or wireless communication to transmit and receive point cloud data.
[0016] The transmitting device 10000 according to the embodiment secures, processes, and transmits a point cloud video (or point cloud content). In the embodiment, the transmitting device 10000 includes a fixed station, a base transceiver system (BTS), a network, an AI (Artificial Intelligence) device and / or system, a robot, an AR / VR / XR device and / or server, etc. In the embodiment, the transmitting device 10000 includes a device that communicates with a base station and / or other wireless devices using a wireless connection technology (e.g., 5G NR (New RAT), LTE (Long Term Evolution)), a robot, a vehicle, an AR / VR / XR device, a mobile device, a home appliance, an IoT (Internet of Things) device, an AI device / server, etc.
[0017] The transmitting device 10000 according to the embodiment includes a Point Cloud Video Acquisition unit 10001, a Point Cloud Video Encoder 10002, and / or a Transmitter (or a communication module) 10003.
[0018] The point cloud video acquisition unit 10001 according to the embodiment acquires a point cloud video through a process such as capture, synthesis, or generation. The point cloud video is a point cloud content represented by a point cloud, which is a collection of points located in a three-dimensional space, and is also called point cloud video data. The point cloud video according to the embodiment includes one or more frames. One frame represents a still image / picture. Therefore, the point cloud video includes a point cloud image / frame / picture, and is called any of a point cloud image, a frame, and a picture.
[0019] The point cloud video encoder 10002 according to the embodiment encodes the secured point cloud video data. The point cloud video encoder 10002 encodes the point cloud video data based on point cloud compression coding. The point cloud compression coding according to the embodiment includes Geometry-based Point Cloud Compression (G-PCC) coding and / or Video based Point Cloud Compression (V-PCC) coding or next-generation coding. Note that the point cloud compression coding according to the embodiment is not limited to the above-mentioned embodiment. The point cloud video encoder 10002 can output a bitstream including encoded point cloud video data. The bitstream includes not only encoded point cloud video data but also signaling information related to the encoding of the point cloud video data.
[0020] The transmitter 10003 according to the embodiment transmits a bitstream including encoded point cloud video data. The bitstream according to the embodiment is encapsulated into a file or a segment (e.g., a streaming segment) and transmitted via various networks such as a broadcast network and / or a broadband network. Although not shown, the transmitter 10000 includes an encapsulation unit (or an encapsulation module) that performs an encapsulation operation. In the embodiment, the encapsulation unit is included in the transmitter 10003. In the embodiment, the file or segment is transmitted to the receiving device 10004 via a network or stored in a digital storage medium (e.g., USB, SD, CD, DVD, Blu-ray, HDD, SSD, etc.). The transmitter 10003 according to the embodiment can perform wired or wireless communication with the receiving device 10004 (or a receiver 10005) via a network such as 4G, 5G, or 6G. The transmitter 10003 can also perform a required data processing operation via a network system (e.g., a communication network system such as 4G, 5G, or 6G). The transmitting device 10000 can also transmit encapsulated data by an on-demand method.
[0021] The receiving device 10004 according to the embodiment includes a receiver 10005, a point cloud video decoder 10006, and / or a renderer 10007. In the embodiment, the receiving device 10004 includes a device, a robot, a vehicle, an AR / VR / XR device, a mobile device, a home appliance, an IoT (Internet of Things) device, an AI device / server, etc., that communicates with a base station and / or other wireless devices using a wireless connection technology (e.g., 5G NR (New RAT), LTE (Long Term Evolution)).
[0022] The receiver 10005 according to the embodiment receives a bitstream including point cloud video data or a file / segment in which the bitstream is encapsulated from a network or storage medium. The receiver 10005 performs a data processing operation required by a network system (e.g., a communication network system such as 4G, 5G, 6G, etc.). The receiver 10005 according to the embodiment decapsulates the received file / segment and outputs a bitstream. In the embodiment, the receiver 10005 also includes a decapsulation unit (or a decapsulation module) for performing the decapsulation operation. The decapsulation unit is also embodied as an element (or component) separate from the receiver 10005.
[0023] The point cloud video decoder 10006 decodes a bitstream including point cloud video data. The point cloud video decoder 10006 can decode the point cloud video data in the manner in which it was encoded (e.g., the reverse process of the operation of the point cloud video encoder 10002). Thus, the point cloud video decoder 10006 can decode the point cloud video data by performing point cloud reconstruction coding, which is the reverse process of point cloud compression. The point cloud reconstruction coding includes G-PCC coding.
[0024] The renderer 10007 renders the decoded point cloud video data. The renderer 10007 renders not only the point cloud video data but also audio data to output point cloud content. In an embodiment, the renderer 10007 includes a display for displaying the point cloud content. In an embodiment, the display is not included in the renderer 10007 and is embodied by a separate device or component.
[0025] In the drawing, the dotted arrow indicates a transmission path of feedback information obtained by the receiving device 10004. The feedback information is information for reflecting interaction with a user consuming point cloud content, and includes user information (e.g., head orientation information, viewport information, etc.). In particular, when the point cloud content is for a service requiring interaction with a user (e.g., an autonomous driving service, etc.), the feedback information may be transmitted to a content transmitting side (e.g., the transmitting device 10000) and / or a service provider. In an embodiment, the feedback information may be used not only by the transmitting device 10000 but also by the receiving device 10004, or may not be provided.
[0026] According to an embodiment, the head orientation information is information regarding the position, direction, angle, movement, etc. of the user's head. According to an embodiment, the receiving device 10004 calculates viewport information based on the head orientation information. The viewport information is information regarding the area of the point cloud video that the user is looking at. The viewpoint is the point at which the user is looking at the point cloud video, and means the center of the viewport area. That is, the viewport is an area centered on the viewpoint, and the size, shape, etc. of the area are determined by the FOV (Field Of View). Therefore, the receiving device 10004 can extract viewport information based on the vertical or horizontal FOV supported by the device in addition to the head orientation information. In addition, the receiving device 10004 performs gaze analysis, etc. to confirm the user's point cloud consumption manner, the point cloud video area that the user is gazing at, the gaze time, etc. In an embodiment, the receiving device 10004 can transmit feedback information including the result of the gaze analysis to the transmitting device 10000. According to an embodiment, the feedback information is obtained during the rendering and / or display process. According to the embodiment, the feedback information is obtained by one or more sensors included in the receiving device 10004. Also, in the embodiment, the feedback information is obtained by the renderer 10007 or another external element (or device, component, etc.). The dotted lines shown in FIG. 1 indicate the process of transmitting the feedback information obtained by the renderer 10007. The point cloud content providing system processes (encodes / decodes) point cloud data based on the feedback information. Thus, the point cloud video data decoder 10006 can perform a decoding operation based on the feedback information. Also, the receiving device 10004 can transmit the feedback information to the transmitting device 10000. The transmitting device 10000 (or the point cloud video data encoder 10002) can perform an encoding operation based on the feedback information.Therefore, the point cloud content providing system does not process (encode / decode) all point cloud data, but efficiently processes necessary data (e.g., point cloud data corresponding to the user's head position) based on feedback information, and can provide point cloud content to the user.
[0027] In an embodiment, the sending device 10000 may be referred to as an encoder, a sending device, a transmitter, etc., and the receiving device 10004 may be referred to as a decoder, a receiving device, a receiver, etc.
[0028] The point cloud data processed (processed in a series of steps of acquisition / encoding / transmission / decoding / rendering) in the point cloud content providing system of FIG. 1 according to the embodiment is also called point cloud content data or point cloud video data. In the embodiment, the point cloud content data can be used as a concept including metadata or signaling information related to the point cloud data.
[0029] The elements of the point cloud content providing system illustrated in FIG. 1 may be implemented in hardware, software, a processor, and / or a combination thereof.
[0030] FIG. 2 is a block diagram illustrating operations for providing point cloud content according to an embodiment.
[0031] Figure 2 is a block diagram showing the operation of the point cloud content providing system described in Figure 1. As described above, the point cloud content providing system processes point cloud data based on point cloud compression coding (eg, G-PCC).
[0032] In a point cloud content providing system (e.g., a point cloud transmitting device 10000 or a point cloud video acquiring unit 10001) according to an embodiment, a point cloud video is acquired (20000). The point cloud video is represented by a point cloud belonging to a coordinate system representing a three-dimensional space. The point cloud video according to an embodiment includes a Ply (Polygon File format or the Stanford Triangle format) file. When the point cloud video has one or more frames, the acquired point cloud video includes one or more Ply files. A Ply file includes point cloud data such as the geometry and / or attributes of a point. The geometry includes the position of the point. The position of each point is represented by parameters (e.g., values of each of the X-axis, Y-axis, and Z-axis) indicating a three-dimensional coordinate system (e.g., a coordinate system consisting of XYZ axes). The attributes include the attributes of the point (e.g., texture information of each point, hue (YCbCr or RGB), reflectance (r), transparency, etc.). One point has one or more attributes (or attributes). For example, one point may have one attribute of hue, or two attributes of hue and reflectance. In the embodiment, geometry may be referred to as position, geometry information, geometry data, etc., and attributes may be referred to as attributes, attribute information, attribute data, etc. In addition, the point cloud content providing system (e.g., the point cloud transmitting device 10000 or the point cloud video acquiring unit 10001) may obtain point cloud data from information related to the point cloud video acquiring process (e.g., depth information, hue information, etc.).
[0033] A point cloud content providing system (e.g., a transmitting device 10000 or a point cloud video encoder 10002) according to an embodiment encodes point cloud data (20001). The point cloud content providing system encodes point cloud data based on point cloud compression coding. As described above, point cloud data includes geometry and attributes of points. Thus, the point cloud content providing system can perform geometry encoding to encode the geometry and output a geometry bitstream. The point cloud content providing system can perform attribute encoding to encode the attributes and output an attribute bitstream. In an embodiment, the point cloud content providing system can perform attribute encoding based on the geometry encoding. The geometry bitstream and the attribute bitstream according to the embodiment are multiplexed and output as one bitstream. The bitstream according to the embodiment further includes signaling information related to the geometry encoding and the attribute encoding.
[0034] A point cloud content providing system (e.g., transmitting device 10000 or transmitter 10003) according to an embodiment transmits encoded point cloud data (20002). As described in FIG. 1, the encoded point cloud data is represented by a geometry bitstream and a feature bitstream. The encoded point cloud data is transmitted in the form of a bitstream together with signaling information related to the encoding of the point cloud data (e.g., signaling information related to geometry encoding and feature encoding). The point cloud content providing system also encapsulates the bitstream for transmitting the encoded point cloud data and transmits it in the form of a file or segment.
[0035] A point cloud content providing system (e.g., receiving device 10004 or receiver 10005) according to an embodiment receives a bitstream including encoded point cloud data, and the point cloud content providing system (e.g., receiving device 10004 or receiver 10005) can demultiplex the bitstream.
[0036] The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) decodes the encoded point cloud data (e.g., geometry bitstream, attribute bitstream) transmitted in a bitstream. The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) decodes the point cloud video data based on signaling information related to the encoding of the point cloud video data included in the bitstream. The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) decodes the geometry bitstream to restore the position (geometry) of the point. The point cloud content providing system decodes the attribute bitstream based on the restored geometry to restore the attribute of the point. The point cloud content providing system (e.g., the receiving device 10004 or the point cloud video decoder 10005) restores the point cloud video based on the position according to the restored geometry and the decoded attribute.
[0037] A point cloud content providing system (e.g., receiving device 10004 or renderer 10007) according to an embodiment renders the decoded point cloud data (20004). The point cloud content providing system (e.g., receiving device 10004 or renderer 10007) renders the geometry and characteristics decoded during the decoding process using various rendering methods. Points of the point cloud content are rendered as a fixed point with a certain thickness, a cube with a predetermined minimum size centered on the position of the fixed point, or a circle centered on the position of the fixed point. All or a part of the region of the rendered point cloud content is provided to a user via a display (e.g., a VR / AR display, a general display, etc.).
[0038] The point cloud content providing system according to the embodiment (e.g., receiving device 10004) can obtain feedback information (20005). The point cloud content providing system encodes and / or decodes point cloud data based on the feedback information. The feedback information and the operation of the point cloud content providing system according to the embodiment are the same as the feedback information and the operation described in FIG. 1, so a detailed description will be omitted.
[0039] FIG. 3 illustrates an example of a point cloud video capture process according to an embodiment.
[0040] FIG. 3 illustrates an example of a point cloud video capture process of the point cloud content providing system described in FIG. 1 and FIG.
[0041] Point cloud content includes point cloud videos (images and / or videos) showing objects and / or environments located in various 3D spaces (e.g., a 3D space showing a real environment, a 3D space showing a virtual environment, etc.). Thus, the point cloud content providing system according to the embodiment captures point cloud videos using one or more cameras (e.g., an infrared camera capable of obtaining depth information, an RGB camera capable of extracting color information corresponding to the depth information, etc.), projectors (e.g., an infrared pattern projector for obtaining depth information, etc.), LiDAR, etc. to generate point cloud content. The point cloud content providing system according to the embodiment extracts a geometric form composed of points in a 3D space from the depth information, and extracts characteristics of each point from the color information to obtain point cloud data. The images and / or videos according to the embodiment are captured based on either an inward-facing approach or an outward-facing approach.
[0042] The inward-looking method is shown on the left side of FIG. 3. The inward-looking method is a method in which one or more cameras (or camera sensors) positioned around a central object capture the central object. The inward-looking method is used to generate point cloud content that provides the user with a 360° image of a core object (e.g., VR / AR content that provides the user with a 360° image of an object (e.g., a core object such as a character, player, item, actor, etc.)).
[0043] The outward-looking approach is shown on the right side of Figure 3. In the outward-looking approach, one or more cameras (or camera sensors) positioned around a central object capture the environment of the central object that is not the central object. The outward-looking approach is used to generate point cloud content to provide the surrounding environment from a user's perspective (e.g., content showing the external environment provided to a user of an autonomous vehicle).
[0044] As shown in the figure, the point cloud content is generated based on the capture operation of one or more cameras. In this case, since the coordinate systems of the respective cameras are different, the point cloud content providing system performs calibration of one or more cameras to set a global coordinate system before the capture operation. The point cloud content providing system also generates point cloud content by combining the image and / or video captured by the above-mentioned capture method with an arbitrary image and / or video. When generating point cloud content representing a virtual space, the point cloud content providing system does not perform the capture operation described in FIG. 3. The point cloud content providing system according to the embodiment can also perform post-processing on the captured image and / or video. That is, the point cloud content providing system can remove undesired areas (e.g., background) or can recognize a space where the captured images and / or videos are connected and fill in a spatial hole if one exists.
[0045] The point cloud content providing system can also generate one point cloud content by performing coordinate system transformation on the points of the point cloud video acquired from each camera. The point cloud content providing system performs coordinate system transformation of the points based on the position coordinates of each camera. In this way, the point cloud content providing system can generate content showing a wide range or generate point cloud content with a high point density.
[0046] FIG. 4 is a diagram illustrating an example of a point cloud encoder according to an embodiment.
[0047] FIG. 4 shows an example of the point cloud video encoder 10002 of FIG. 1. The point cloud encoder performs encoding by reconstructing point cloud data (e.g., point positions and / or characteristics) to adjust the quality of the point cloud content (e.g., lossless, lossy, near-lossless) according to the network condition or application. If the overall size of the point cloud content is large (e.g., point cloud content of 60 Gbps for 30 fps), the point cloud content providing system cannot stream the corresponding content in real time. Therefore, the point cloud content providing system can reconstruct the point cloud content based on the maximum target bit rate to provide it according to the network environment, etc.
[0048] As shown in Figures 1 and 2, a point cloud encoder can perform geometry encoding and feature encoding, where the geometry encoding is performed before the feature encoding.
[0049] The point cloud encoder according to the embodiment includes a coordinate system transformation unit (Transformation Coordinates) 40000, a quantization unit (Quantize and Remove Points (Voxelize)) 40001, an octree analysis unit (Analyze Octree) 40002, a surface approximation analysis unit (Analyze Surface Approximation) 40003, an arithmetic encoder (Arithmetic Encode) 40004, a geometry reconstruction unit (Reconstruct Geometry) 40005, a color transformation unit (Transform Colors) 40006, a characteristic transformation unit (Transfer Attributes) 40007, a RAHT transformation unit 40008, an LOD generation unit (Generated LOD) 40009, a lift transformation unit (Lifting) 40010, a coefficient quantization unit (Quantize Coefficients) 40011 and / or an arithmetic encoder (Arithmetic Encode) 40012.
[0050] The coordinate system conversion unit 40000, the quantization unit 40001, the octree analysis unit 40002, the surface approximation analysis unit 40003, the arithmetic encoder 40004, and the geometry reconstruction unit 40005 can perform geometry encoding. The geometry encoding according to the embodiment includes octree geometry coding, direct coding, trisoup geometry encoding, and entropy coding. The direct coding and trisoup geometry encoding are applied selectively or in combination. Note that the geometry encoding is not limited to the above examples.
[0051] As shown in the figure, the coordinate system conversion unit 40000 according to the embodiment receives a position and converts it into a coordinate system. For example, the position is converted into position information in a three-dimensional space (e.g., a three-dimensional space expressed in an XYZ coordinate system). The position information in the three-dimensional space according to the embodiment is also referred to as geometry information.
[0052] The quantizer 40001 according to the embodiment quantizes the geometry. For example, the quantizer 40001 quantizes the points based on the minimum position value of all points (for example, the minimum value on each axis for the X-axis, Y-axis, and Z-axis). The quantizer 40001 performs a quantization operation by multiplying the difference between the minimum position value and the position value of each point by a predetermined quantization scale value, and then rounding down or up to find the closest integer value. Therefore, one or more points can have the same quantized position (or position value). The quantizer 40001 according to the embodiment performs voxelization based on the quantized position to reconstruct the quantized points. The smallest unit including 2D image / video information is a pixel, and the points of the point cloud content (or 3D point cloud video) according to the embodiment are included in one or more voxels. A voxel is a combination of the words volume and pixel, and refers to a three-dimensional cubic space that is generated when a three-dimensional space is divided into units (unit=1.0) based on an axis (e.g., X-axis, Y-axis, Z-axis) that represents the three-dimensional space. The quantization unit 40001 can match a group of points in the three-dimensional space with a voxel. In an embodiment, one voxel can include only one point. In an embodiment, one voxel includes one or more points. In addition, to represent one voxel with one point, the position of the center point of the corresponding voxel can be set based on the position of one or more points included in the voxel. In this case, the characteristics of all positions included in one voxel are combined and assigned to the corresponding voxel.
[0053] The octree analysis unit 40002 according to the embodiment performs octree geometry coding (or octree coding) to represent the voxels in an octree structure, which represents points matched to the voxels based on an octet structure.
[0054] The surface approximation analysis unit 40003 according to the embodiment analyzes and approximates the octree. The octree analysis and approximation according to the embodiment is a process of analyzing a region containing a large number of points to voxelize it in order to efficiently provide an octree and voxelization.
[0055] The arithmetic encoder 40004 according to the embodiment entropy encodes the octree and / or the approximated octree. For example, the encoding method includes an arithmetic encoding method. As a result of the encoding, a geometry bitstream is generated.
[0056] The color transform unit 40006, the feature transform unit 40007, the RAHT transform unit 40008, the LOD generating unit 40009, the lift transform unit 40010, the coefficient quantization unit 40011 and / or the arithmetic encoder 40012 perform feature coding. As described above, one point has one or more features. The feature coding according to the embodiment is equally applied to the features of one point. However, when one feature (e.g., hue) includes one or more elements, an independent feature coding is applied to each element. The feature coding according to the embodiment includes color transformation coding, feature transformation coding, RAHT (Region Adaptive Hierarchial Transform) coding, prediction transform (Interpolarization-based hierarchical nearest-neighbour prediction-Prediction Transform) coding, and lift transform (interpolation-based hierarchical nearest-neighbour prediction with an update / lifting step (Lifting Transform)) coding. Depending on the point cloud content, the above-mentioned RAHT coding, predictive transform coding, and lift transform coding may be selectively used, or a combination of one or more coding may be used. Furthermore, the feature coding according to the embodiment is not limited to the above examples.
[0057] The color converter 40006 according to the embodiment performs color conversion coding to convert the color values (or textures) included in the characteristics. For example, the color converter 40006 converts the format of the hue information (e.g., converts from RGB to YCbCr). The operation of the color converter 40006 according to the embodiment is optionally applied depending on the color values included in the characteristics.
[0058] The geometry reconstruction unit 40005 according to the embodiment reconstructs (restores) the octree and / or the approximated octree. The geometry reconstruction unit 40005 reconstructs the octree / voxel based on the result of analyzing the distribution of points. The reconstructed octree / voxel is also called the reconstructed geometry (or restored geometry).
[0059] The feature converter 40007 according to the embodiment performs feature conversion to convert features based on a position where geometry encoding has not been performed and / or a reconstructed geometry. As described above, features depend on geometry, so the feature converter 40007 can convert features based on reconstructed geometry information. For example, the feature converter 40007 can convert features of a point included in a voxel based on a position value of the point. As described above, when the position of the center point of a voxel is set based on the positions of one or more points included in the voxel, the feature converter 40007 converts features of one or more points. When trisoup geometry encoding is performed, the feature converter 40007 can convert features based on the trisoup geometry encoding.
[0060] The attribute conversion unit 40007 performs attribute conversion by calculating the average value of the attributes or attribute values (e.g., the hue or reflectance of each point) of adjacent points within a certain position / radius from the position (or position value) of the center point of each voxel. When calculating the average value, the attribute conversion unit 40007 applies a weighting value according to the distance from the center point to each point. Thus, each voxel has a position and a calculated attribute (or attribute value).
[0061] The feature conversion unit 40007 searches for adjacent points within a specific position / radius from the position of the center point of each voxel based on the KD tree or Moulton code. The KD tree supports a data structure that manages points based on their position so that a Nearest Neighbor Search (NNS) can be performed quickly using a binary search tree. The Moulton code is generated by mixing bits and expressing the coordinate values (e.g., (x, y, z)) indicating the three-dimensional position of all points. For example, if the coordinate value indicating the position of a point is (5, 9, 1), the bit value of the coordinate value is (0101, 1001, 0001). If the bit values are mixed according to the bit index in the order of z, y, and x, the result is 010001000111. This value is expressed as 1095 in decimal. In other words, the Moulton code value of a point with coordinate values (5, 9, 1) is 1095. The feature converter 40007 aligns points based on the Moulton code value and performs nearest neighbor search (NNS) through a depth-first traversal process. If nearest neighbor search (NNS) is required in other conversion processes for feature coding after the feature conversion operation, a KD tree or Moulton code is used.
[0062] As shown, the transformed attributes are input to a RAHT transformer 40008 and / or an LOD generator 40009 .
[0063] The RAHT converter 40008 according to the embodiment performs RAHT coding to predict feature information based on the reconstructed geometry information. For example, the RAHT converter 40008 can predict feature information of a node at a higher level of the octree based on feature information associated with a node at a lower level of the octree.
[0064] The LOD generating unit 40009 according to the embodiment generates LOD (Level of Detail) to perform predictive conversion coding. The LOD according to the embodiment indicates the degree of detail of the point cloud content, and it is indicated that the smaller the LOD value, the lower the detail of the point cloud content, and the larger the LOD value, the higher the detail of the point cloud content. Points can be classified according to the LOD.
[0065] The lift transform unit 40010 according to the embodiment performs lift transform coding, which transforms the characteristics of the point cloud based on weights. As described above, the lift transform coding is selectively applied.
[0066] The coefficient quantization unit 40011 according to the embodiment quantizes the feature-coded feature based on the coefficients.
[0067] The arithmetic encoder 40012 according to the embodiment encodes the quantized feature based on arithmetic coding.
[0068] The elements of the point cloud encoder of FIG. 4 may be implemented in hardware, software, firmware, or a combination thereof, including one or more processors or integrated circuits (not shown) configured to communicate with one or more memories included in the point cloud providing apparatus. The one or more processors may perform any one of the operations and / or functions of the elements of the point cloud encoder of FIG. 4 described above. The one or more processors may also operate or execute a software program and / or set of instructions to perform the operations and / or functions of the elements of the point cloud encoder of FIG. 4. According to an embodiment, the one or more memories may include high speed random access memory or may include non-volatile memory (e.g., one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state memory devices, etc.).
[0069] FIG. 5 is a diagram showing an example of a voxel according to the embodiment.
[0070] FIG. 5 shows a voxel located in a three-dimensional space expressed by a coordinate system consisting of three axes, the X-axis, the Y-axis, and the Z-axis. As shown in FIG. 4, a point cloud encoder (e.g., the quantization unit 40001, etc.) performs voxelization. A voxel means a three-dimensional cubic space that is generated when the three-dimensional space is divided into units (unit=1.0) based on the axes (e.g., the X-axis, the Y-axis, and the Z-axis) that represent the three-dimensional space. FIG. 5 shows two extreme points (0,0,0) and (2 d , 2 d , 2 d ) is generated by an octree structure that recursively subdivides a bounding box (cubical axis-aligned bounding box) defined by . A voxel contains at least one point. The spatial coordinates of a voxel can be estimated from its positional relationship with a voxel group. As mentioned above, a voxel has characteristics (such as hue or reflectance) just like a pixel in a 2D image / video. A detailed description of voxels is omitted here as it has been described in FIG. 4.
[0071] FIG. 6 is a diagram illustrating an example of an octree and occupancy code according to an embodiment.
[0072] As shown in Figures 1 to 4, a point cloud content providing system (point cloud video encoder 10002) or a point cloud encoder (e.g., octree analysis unit 40002) performs octree geometry coding (or octree coding) based on an octree structure to efficiently manage the area and / or position of voxels.
[0073] The upper part of FIG. 6 shows an octree structure. The three-dimensional space of the point cloud content according to the embodiment is represented by the axes of a coordinate system (e.g., X-axis, Y-axis, and Z-axis). The octree structure is represented by two extreme points (0,0,0) and (2 d , 2 d , 2 d ) is generated by recursively subdividing the bounding box defined by (x int n , y int n , z int n ) indicates the quantized position (or position value) of the point.
[0074] TIFF0007640542000001.tif10150
[0075] As shown in the upper center of Figure 6, the entire 3D space is divided into eight spaces through division. Each divided space is represented as a cube with six sides. As shown in the upper right of Figure 6, each of the eight spaces is again divided by the axes of the coordinate system (e.g., X-axis, Y-axis, Z-axis). Therefore, each space is again divided into eight smaller spaces. The divided smaller spaces are also represented as cubes with six sides. This division method is applied until the leaf nodes of the octree become voxels.
[0076] The lower part of FIG. 6 shows an occupancy code of an octree. The occupancy code of an octree is generated to indicate whether each of the eight divided spaces generated by dividing one space contains at least one point. Therefore, one occupancy code is expressed by eight child nodes. Each child node indicates the occupancy of the divided space, and has a 1-bit value. Therefore, the occupancy code is expressed by an 8-bit code. That is, if the space corresponding to a child node contains at least one point, the corresponding node has a value of 1. If the space corresponding to a node does not contain a point (empty), the corresponding node has a value of 0. The occupancy code shown in FIG. 6 is 00100001, which indicates that the spaces corresponding to the third and eighth child nodes of the eight child nodes each contain at least one point. As shown in the figure, the third and eighth child nodes each have eight child nodes, and each child node is expressed by an 8-bit occupancy code. The figure shows that the occupied code of the third child node is 10000111, and the occupied code of the eighth child node is 01001111. A point cloud encoder according to the embodiment (e.g., the arithmetic encoder 40004) can entropy code the occupied code. To improve compression efficiency, the point cloud encoder can also intra / inter code the occupied code. A receiving device according to the embodiment (e.g., the receiving device 10004 or the point cloud video decoder 10006) reconstructs an octree based on the occupied code.
[0077] A point cloud encoder according to an embodiment (e.g., the point cloud encoder or octree analyzer 40002 in FIG. 4) performs voxelization and octree coding to store the positions of points. However, since points in a 3D space are not always uniformly distributed, there may be certain areas where there are not many points. Therefore, it is inefficient to perform voxelization on the entire 3D space. For example, if there are almost no points in a certain area, there is no need to perform voxelization on that area.
[0078] Therefore, the point cloud encoder according to the embodiment does not perform voxelization for the above-mentioned specific region (or nodes other than the leaf nodes of the octree), but performs direct coding, which directly codes the positions of points included in the specific region. The coordinates of the direct coding points according to the embodiment are called a direct coding mode (DCM). The point cloud encoder according to the embodiment can also perform trisoup geometry encoding, which reconstructs the positions of points in a specific region (or node) based on voxels based on a surface model. Trisoup geometry encoding is a geometry encoding that represents an object as a series of triangle meshes. Therefore, the point cloud decoder can generate a point cloud from the mesh surface. The direct coding and trisoup geometry encoding according to the embodiment are selectively performed. The direct coding and trisoup geometry encoding according to the embodiment can also be combined with octree geometry coding (or octree coding).
[0079] To perform direct coding, an option to use direct mode for applying direct coding must be activated, and the node to which direct coding is applied must not be a leaf node, and points below a threshold must exist within a specific node. Also, the total number of points to be subject to direct coding must not exceed a predetermined threshold. If the above conditions are met, the point cloud encoder (or the computation encoder 40004) according to the embodiment can entropy code the positions (or position values) of the points.
[0080] The point cloud encoder (e.g., the surface approximation analysis unit 40003) according to the embodiment can determine a specific level of the octree (if the level is smaller than the depth d of the octree), and from that level, perform trisoup geometry encoding, which uses a surface model to reconstruct the positions of points in the node area based on voxels (trisoup mode). The point cloud encoder according to the embodiment can specify the level to which the trisoup geometry encoding is applied. For example, if the specified level is equal to the depth of the octree, the point cloud encoder does not operate in trisoup mode. That is, the point cloud encoder according to the embodiment can operate in trisoup mode only when the specified level is smaller than the depth value of the octree. The 3D cubic area of the node at a specified level according to the embodiment is called a block. One block includes one or more voxels. A block or a voxel can also correspond to a brick. Within each block, the geometry is represented as a surface. The surface according to the embodiment can intersect each edge of the block at most once.
[0081] Since a block has 12 edges, there are at least 12 intersections within a block. Each intersection is called a vertex. A vertex along an edge is detected if there is at least one occupied voxel adjacent to the edge among all blocks that share the edge. In this embodiment, an occupied voxel refers to a voxel that contains a point. The position of a vertex detected along an edge is the average position along the edge of all voxels adjacent to the edge among all blocks that share the edge.
[0082] When a vertex is detected, the point cloud encoder according to the embodiment can entropy code the edge start point (x, y, z), the edge direction vector (Δx, Δy, Δz), and the vertex position value (relative position value within the edge). When trisoup geometry encoding is applied, the point cloud encoder according to the embodiment (e.g., the geometry reconstruction unit 40005) can generate a restored geometry (reconstructed geometry) by performing triangle reconstruction, up-sampling, and voxelization processes.
[0083] The vertices located on the edges of the blocks determine the surface that passes through the blocks. In the embodiment, the surface is a non-planar polygon. The triangulation process reconstructs the surface represented by triangles based on the start points of the edges, the edge direction vectors, and the vertex positions. The triangulation process is as follows: (1) calculate the centroid value of each vertex, (2) subtract the centroid value from each vertex value, and (3) square the result to obtain a combined value.
[0084] TIFF0007640542000002.tif21151
[0085] The minimum of the added values is found, and a projection process is performed along the axis where the minimum value is. For example, if the x element is the minimum, each vertex is projected onto the x-axis based on the center of the block, and then onto the (y,z) plane. If the value obtained by projecting onto the (y,z) plane is (ai,bi), the θ value is found using atan2(bi,ai) and the vertices are aligned based on the θ value. The following table shows the combination of vertices to generate a triangle depending on the number of vertices. The vertices are aligned in order from 1 to n. The following table shows that for four vertices, two triangles are formed by combining the vertices. The first triangle is formed from the 1st, 2nd, and 3rd vertices of the aligned vertices, and the second triangle is formed from the 3rd, 4th, and 1st vertices of the aligned vertices.
[0086] Table 2-1.Triangles formed from vertices ordered 1,…,n n triangles 3 (1,2,3) 4 (1,2,3), (3,4,1) 5 (1,2,3), (3,4,5), (5,1,3) 6 (1,2,3), (3,4,5), (5,6,1), (1,3,5) 7 (1,2,3), (3,4,5), (5,6,7), (7,1,3), (3,5,7) 8 (1,2,3), (3,4,5), (5,6,7), (7,8,1), (1,3,5), (5,7,1) 9 (1,2,3), (3,4,5), (5,6,7), (7,8,9), (9,1,3), (3,5,7), (7,9,3) 10 (1,2,3), (3,4,5), (5,6,7), (7,8,9), (9,10,1), (1,3,5), (5,7,9), (9,1,5) 11 (1,2,3), (3,4,5), (5,6,7), (7,8,9), (9,10,11), (11,1,3), (3,5,7), (7,9,11), (11,3,7) 12 (1,2,3), (3,4,5), (5,6,7), (7,8,9), (9,10,11), (11,12,1), (1,3,5), (5,7,9), (9,11,1), (1,5,9)
[0087] The upsampling process is performed to add intermediate points along the edges of triangles for voxelization. The additional points are generated based on the upsampling factor and the block width. The additional points are called refined vertices. The point cloud encoder according to the embodiment can voxelize the refined vertices. The point cloud encoder can also perform feature encoding based on the voxelized positions (or position values).
[0088] FIG. 7 is a diagram illustrating an example of an adjacent node pattern according to the embodiment.
[0089] To increase the compression efficiency of the point cloud video, the point cloud encoder according to the embodiment performs entropy coding based on context adaptive arithmetic coding.
[0090] As described in FIG. 1 to FIG. 6, a point cloud content providing system or a point cloud encoder (e.g., a point cloud video encoder 10002, a point cloud encoder or an arithmetic encoder 40004 in FIG. 4) can immediately perform entropy coding on the occupancy code. In addition, the point cloud content providing system or the point cloud encoder can perform entropy coding (intra coding) based on the occupancy code of the current node and the occupancy rate of the neighboring node, or can perform entropy coding (inter coding) based on the occupancy code of the previous frame. A frame according to the embodiment means a collection of point cloud videos generated at the same time. The compression efficiency of intra coding / inter coding according to the embodiment varies depending on the number of neighboring nodes to be referenced. Although the complexity increases as the number of bits increases, the compression efficiency can be improved by leaning to one side. For example, if there is a 3-bit context, coding is performed in 8 ways, which is 2 to the power of 3. The part to be coded separately affects the complexity of the implementation. Therefore, it is necessary to match the compression efficiency and the appropriate level of the complexity.
[0091] FIG. 7 illustrates a process of determining an occupancy pattern based on the occupancy of adjacent nodes. The point cloud encoder according to the embodiment obtains a neighbor pattern value by determining the occupancy of adjacent nodes of each node in an occupancy tree. The neighbor pattern is used to infer the occupancy pattern of the corresponding node. The left side of FIG. 7 illustrates a cube corresponding to the node (the cube located in the middle) and six cubes (neighboring nodes) that share at least one side with the corresponding cube. The illustrated nodes are nodes at the same depth. The illustrated numbers indicate the weights (1, 2, 4, 8, 16, 32, etc.) associated with each of the six nodes. Each weight is assigned in order according to the position of the neighboring node.
[0092] The right side of FIG. 7 shows the adjacent node pattern value. The adjacent node pattern value is the sum of values multiplied by the weight values of occupied adjacent nodes (adjacent nodes having points). Therefore, the adjacent node pattern value has a value from 0 to 63. An adjacent node pattern value of 0 means that there is no node (occupied node) that has points among the adjacent nodes of the corresponding node. An adjacent node pattern value of 63 means that all adjacent nodes are occupied nodes. As shown in the figure, adjacent nodes to which weight values 1, 2, 4, and 8 are assigned are occupied nodes, so the adjacent node pattern value is 15, which is a value obtained by adding 1, 2, 4, and 8. The point cloud encoder can perform coding according to the adjacent node pattern value (e.g., if the adjacent node pattern value is 63, 64 coding is performed). In an embodiment, the point cloud encoder can reduce the coding complexity by changing the adjacent node pattern value (e.g., based on a table that changes 64 to 10 or 6).
[0093] FIG. 8 is a diagram illustrating an example of a point configuration for each LOD according to the embodiment.
[0094] As described in Figures 1 to 7, before feature coding is performed, the coded geometry is reconstructed (restored). When direct coding is applied, the operation of geometry reconstruction includes changing the placement of the direct coded points (e.g., placing the direct coded points in front of the point cloud data). When trisoup geometry coding is applied, the process of geometry reconstruction includes the processes of triangulation, upsampling, and voxelization. Since features are dependent on geometry, feature coding is performed based on the reconstructed geometry.
[0095] A point cloud encoder (e.g., LOD generator 40009) reorganizes points by LOD. The diagram shows point cloud content corresponding to LOD. The left side of the diagram shows the original point cloud content. The second from the left in the diagram shows the distribution of points with the lowest LOD, and the rightmost side shows the distribution of points with the highest LOD. That is, the points with the lowest LOD have a sparse distribution, and the points with the highest LOD have a fine distribution. That is, as the LOD increases along the direction of the arrow shown at the bottom of the diagram, the spacing (or distance) between points becomes shorter.
[0096] FIG. 9 is a diagram illustrating an example of a point configuration for each LOD according to the embodiment.
[0097] As described in FIG. 1 to FIG. 8, a point cloud content providing system or point cloud encoder (e.g., point cloud video encoder 10002, point cloud encoder or LOD generator 40009 in FIG. 4) generates LOD. The LOD is generated by realigning points with a set of refinement levels according to a set LOD distance value (or a set of Euclidean Distances). The LOD generation process is performed not only in the point cloud encoder but also in the point cloud decoder.
[0098] The upper part of Figure 9 shows an example of points (P0 to P9) of point cloud content distributed in 3D space. The original order in Figure 9 shows the order of points P0 to P9 before LOD generation. The LOD based order in Figure 9 shows the order of points after LOD generation. Points are re-ordered for each LOD. Also, higher LODs include points that belong to lower LODs. As shown in Figure 9, LOD0 includes P0, P5, P4, and P2. LOD1 includes points of LOD0, P1, P6, and P3. LOD2 includes points of LOD0, points of LOD1, and P9, P8, and P7.
[0099] As described in FIG. 4, the point cloud encoder according to the embodiment can selectively or in combination perform predictive transform coding, lift transform coding, and RAHT transform coding.
[0100] The point cloud encoder according to the embodiment generates a predictor for each point and performs predictive conversion coding to set a prediction characteristic (or a prediction characteristic value) for each point. That is, N predictors are generated for N points. The predictor according to the embodiment can calculate a weight (=1 / distance) based on the LOD value of each point, index information for adjacent points within a distance set for each LOD, and a distance value to the adjacent point.
[0101] The predicted feature (or feature value) according to the embodiment is set as an average value of the feature (or feature value, e.g., hue, reflectance, etc.) of the neighboring points set in the predictor of each point multiplied by the weight (or weight value) calculated based on the distance to each neighboring point. The point cloud encoder (e.g., the coefficient quantization unit 40011) according to the embodiment may quantize and inverse quantize residuals (also called residual features, residual feature values, feature predicted residual values, etc.) obtained by subtracting the predicted feature (feature value) from the feature (feature value) of each point. The quantization process is as shown in the following table.
[0102] Table.Attribute prediction residuals quantization pseudo code int PCCQuantization(inT value, inT quantStep) { if( value >= 0 ) { return floor(value / quantStep + 1.0 / 3.0); } else { return -floor(-value / quantStep + 1.0 / 3.0); } }
[0103] Attribute prediction residuals inverse quantization pseudo Code inT PCCInverseQuantization(inT value, inT quantStep) { if(quantStep == 0) { return value; } else { return value*quantStep; } }
[0104] The point cloud encoder (e.g., the arithmetic encoder 40012) according to the embodiment performs entropy coding on the quantized and dequantized residual values as described above if there are adjacent points in the predictor of each point. If there are no adjacent points in the predictor of each point, the point cloud encoder (e.g., the arithmetic encoder 40012) according to the embodiment does not perform the above process and performs entropy coding on the characteristics of the corresponding point.
[0105] The point cloud encoder (e.g., lift transform unit 40010) according to the embodiment generates a predictor for each point, sets the calculated LOD in the predictor, registers adjacent points, and sets weights according to the distance to the adjacent points to perform lift transform coding. The lift transform coding according to the embodiment is similar to the above-mentioned point transform coding, but differs in that weights are cumulatively applied to feature values. The process of cumulatively applying weights to feature values according to the embodiment is as follows.
[0106] 1) Create an array QW (QuantizationWeight) to store the weight value of each point. The initial value of all elements of QW is 1.0. The QW value of the predictor index of the adjacent node registered in the predictor is multiplied by the predictor weight value of the current point and added.
[0107] 2) Lift prediction process: To calculate the predicted attribute value, the attribute value of the point is multiplied by the weighting value and subtracted from the existing attribute value.
[0108] 3) Create temporary arrays called updateweight and update, and initialize the temporary arrays to 0.
[0109] 4) The calculated weights for all predictors are multiplied by the weights stored in the QW corresponding to the predictor index, and the calculated weights are accumulated and summed in the update weight array as the index of the adjacent node. The update array is accumulated and summed by multiplying the attribute values of the index of the adjacent node by the calculated weights.
[0110] 5) Lift update process: For every predictor, divide the feature value in the update array by the weight value in the update weight array for the predictor index, and then add the divided value back to the existing feature value.
[0111] 6) For all predictors, the feature values updated in the lift update process are further multiplied by the weights updated in the lift prediction process (stored in the QW) to calculate predicted feature values. A point cloud encoder (e.g., coefficient quantizer 40011) according to the embodiment quantizes the predicted feature values. In addition, a point cloud encoder (e.g., arithmetic encoder 40012) entropy codes the quantized feature values.
[0112] The point cloud encoder (e.g., the RAHT converter 40008) according to the embodiment performs RAHT transform coding, which predicts the features of higher level nodes using features associated with lower level nodes of the octree. RAHT transform coding is an example of feature intra-coding using octree backward scan. The point cloud encoder according to the embodiment scans the entire region from the voxel, and repeats the merging process up to the root node while combining the voxels into larger blocks at each step. The merging process according to the embodiment is performed only for occupied nodes. The merging process is not performed for empty nodes, but is performed for the nodes immediately above the empty nodes.
[0113] TIFF0007640542000003.tif23169
[0114] TIFF0007640542000004.tif15150
[0115] TIFF0007640542000005.tif30169
[0116] TIFF0007640542000006.tif14151
[0117] FIG. 10 is a diagram illustrating an example of a point cloud decoder according to an embodiment.
[0118] The point cloud decoder shown in FIG. 10 is an example of the point cloud video decoder 10006 shown in FIG. 1, and performs the same or similar operations as the point cloud video decoder 10006 described in FIG. 1. As shown, the point cloud decoder receives a geometry bitstream and an attribute bitstream included in one or more bitstreams. The point cloud decoder includes a geometry decoder and an attribute decoder. The geometry decoder performs geometry decoding on the geometry bitstream and outputs a decoded geometry. The attribute decoder performs attribute decoding based on the decoded geometry and attribute bitstream and outputs decoded attributes. The decoded geometry and decoded attributes are used to restore the point cloud content (decoded point cloud).
[0119] FIG. 11 is a diagram illustrating an example of a point cloud decoder according to an embodiment.
[0120] The point cloud decoder shown in FIG. 11 is an example of the point cloud decoder described in FIG. 10, and performs a decoding operation which is the reverse process of the encoding operation of the point cloud encoder described in FIGS. 1 to 9.
[0121] The point cloud decoder performs geometry decoding and feature decoding as explained in Figure 1 and Figure 10. Geometry decoding is performed before feature decoding.
[0122] The point cloud decoder according to the embodiment includes an arithmetic decoder 11000, an octree synthesis unit 11001, a surface approximation synthesis unit 11002, a reconstruct geometry unit 11003, an inverse transform coordinates unit 11004, an arithmetic decoder 11005, an inverse quantize unit 11006, a RAHT transform unit 11007, a generate LOD unit 11008, an inverse lifting unit 11009 and / or an inverse transform colors unit 11010.
[0123] The arithmetic decoder 11000, the octree synthesis unit 11001, the surface approximation synthesis unit 11002, the geometry reconstruction unit 11003, and the coordinate system inverse transformation unit 11004 perform geometry decoding. The geometry decoding according to the embodiment includes direct coding and trisoup geometry decoding. The direct coding and trisoup geometry decoding are selectively applied. Furthermore, the geometry decoding is not limited to the above examples, and is performed in the reverse process of the geometry encoding described in FIG. 1 to FIG. 9.
[0124] The arithmetic decoder 11000 according to the embodiment decodes the received geometry bitstream based on arithmetic coding. The operation of the arithmetic decoder 11000 corresponds to the inverse process of the arithmetic encoder 40004.
[0125] The octree synthesis unit 11001 according to the embodiment obtains an exclusive code from the decoded geometry bitstream (or from the decoded result, information on the secured geometry) to generate an octree. The exclusive code is described in detail in FIG. 1 to FIG. 9.
[0126] The surface approximation synthesis unit 11002 according to the embodiment synthesizes a surface based on the decoded geometry and / or the generated octree if trisoup geometry encoding is applied.
[0127] The geometry reconstruction unit 11003 according to the embodiment regenerates geometry based on the surface and / or the decoded geometry. As described in FIG. 1 to FIG. 9, direct coding and trisoup geometry coding are selectively applied. Therefore, the geometry reconstruction unit 11003 directly brings and adds position information of the point to which the direct coding is applied. Also, when the trisoup geometry coding is applied, the geometry reconstruction unit 11003 restores the geometry by performing the reconstruction operation of the geometry reconstruction unit 40005, for example, triangulation, upsampling, and voxelization operations. The detailed contents are omitted since they are the same as those described in FIG. 6. The restored geometry includes a point cloud picture or frame that does not include features.
[0128] A coordinate system inverse transformation unit 11004 according to the embodiment transforms the coordinate system based on the reconstructed geometry to obtain the position of the point.
[0129] The arithmetic decoder 11005, the inverse quantization unit 11006, the RAHT transform unit 11007, the LOD generating unit 11008, the inverse lift unit 11009 and / or the color inverse transform unit 11010 perform the feature decoding described in FIG. 10. The feature decoding according to the embodiment includes RAHT (Region Adaptive Hierarchial Transform) decoding, Interpolarization-based hierarchical nearest-neighbour prediction-Prediction Transform decoding, and Lift Transform (interpolation-based hierarchical nearest-neighbour prediction with an update / lifting step (Lifting Transform)) decoding. The above three decodings are used selectively, or one or more combinations of decodings are used. In addition, the feature decoding according to the embodiment is not limited to the above examples.
[0130] An arithmetic decoder 11005 according to an embodiment decodes the attribute bitstream into arithmetic coding.
[0131] The inverse quantization unit 11006 according to the embodiment inverse quantizes the decoded feature bitstream or the information on the feature acquired as a result of decoding, and outputs the inverse quantized feature (or feature value). The inverse quantization is selectively applied based on the feature coding of the point cloud encoder.
[0132] In an embodiment, the RAHT transformer 11007, LOD generator 11008 and / or inverse lifter 11009 process the reconstructed geometry and dequantized features. As described above, the RAHT transformer 11007, LOD generator 11008 and / or inverse lifter 11009 selectively perform decoding operations corresponding to the encoding of the point cloud encoder.
[0133] The color inverse converter 11010 according to the embodiment performs inverse coding to inversely convert color values (or textures) included in the decoded features. The operation of the color inverse converter 11010 is selectively performed based on the operation of the color converter 40006 of the point cloud encoder.
[0134] The elements of the point cloud decoder of Figure 11 may be implemented in hardware, software, firmware, or a combination thereof, including one or more processors or integrated circuits (not shown) configured to communicate with one or more memories included in the point cloud providing device. The one or more processors perform any of the operations and / or functions of the elements of the point cloud decoder of Figure 11 described above. Additionally, the one or more processors operate or execute a software program and / or set of instructions to perform the operations and / or functions of the elements of the point cloud decoder of Figure 11.
[0135] FIG. 12 illustrates an example of a transmitting device according to an embodiment.
[0136] The transmitting device shown in FIG. 12 is an example of the transmitting device 10000 in FIG. 1 (or the point cloud encoder in FIG. 4). The transmitting device shown in FIG. 12 performs any of the same or similar operations and methods as the operations and encoding methods of the point cloud encoder described in FIG. 1 to FIG. 9. The transmitting device according to the embodiment includes a data input unit 12000, a quantization processing unit 12001, a voxelization processing unit 12002, an octree occupation code generation unit 12003, a surface model processing unit 12004, an intra / inter coding processing unit 12005, an arithmetic coder 12006, a metadata processing unit 12007, a hue conversion processing unit 12008, a characteristic conversion processing unit (or attribute conversion processing unit) 12009, a prediction / lift / RAHT conversion processing unit 12010, an arithmetic coder 12011 and / or a transmission processing unit 12012.
[0137] According to the embodiment, the data input unit 12000 receives or acquires point cloud data. The data input unit 12000 performs an operation and / or an acquisition method that is the same as or similar to the operation and / or acquisition method of the point cloud video acquisition unit 10001 (or the acquisition process 20000 shown in FIG. 2).
[0138] Geometry encoding is performed by a data input unit 12000, a quantization processing unit 12001, a voxelization processing unit 12002, an octree occupation code generation unit 12003, a surface model processing unit 12004, an intra / inter coding processing unit 12005, and an arithmetic coder 12006. The geometry encoding according to the embodiment is the same as or similar to the geometry encoding described with reference to Figures 1 to 9, and therefore a detailed description thereof will be omitted.
[0139] The quantization unit 12001 according to the embodiment quantizes geometry (e.g., position values of points). The operation and / or quantization of the quantization unit 12001 is the same as or similar to the operation and / or quantization of the quantization unit 40001 shown in Fig. 4. The specific description is as described in Figs. 1 to 9.
[0140] The voxelization processing unit 12002 according to the embodiment voxels the position values of the quantized points. The voxelization processing unit 120002 performs operations and / or processes that are the same as or similar to the operations and / or voxelization processes of the quantization unit 40001 shown in Fig. 4. The details are as described in Figs. 1 to 9.
[0141] The octree occupation code generator 12003 according to the embodiment performs octree coding on the positions of the voxelized points based on the octree structure. The octree occupation code generator 12003 generates an occupation code. The octree occupation code generator 12003 performs operations and / or methods that are the same as or similar to the operations and / or methods of the point cloud encoder (or the octree analysis unit 40002) described in Figures 4 and 6. The details are as described in Figures 1 to 9.
[0142] The surface model processing unit 12004 according to the embodiment performs trisoup geometry encoding to reconstruct the positions of points within a specific region (or node) on a voxel basis based on a surface model. The surface model processing unit 12004 performs operations and / or methods that are the same as or similar to those of the point cloud encoder (e.g., the surface approximation analysis unit 40003) shown in Fig. 4. The details are as described in Figs. 1 to 9.
[0143] The intra / inter coding unit 12005 according to the embodiment performs intra / inter coding of the point cloud data. The intra / inter coding unit 12005 performs coding that is the same as or similar to the intra / inter coding described in FIG. 7. The details are as described in FIG. 7. In the embodiment, the intra / inter coding unit 12005 is included in the arithmetic coder 12006.
[0144] According to an embodiment, the arithmetic coder 12006 entropy codes the octree and / or the approximated octree of the point cloud data. For example, the encoding method includes an arithmetic encoding method. The arithmetic coder 12006 performs operations and / or methods that are the same as or similar to those of the arithmetic encoder 40004.
[0145] The metadata processing unit 12007 according to the embodiment processes metadata related to point cloud data, such as setting values, and provides the metadata to necessary processing such as geometry encoding and / or feature encoding. The metadata processing unit 12007 according to the embodiment also generates and / or processes signaling information related to geometry encoding and / or feature encoding. The signaling information according to the embodiment is encoded and processed separately from the geometry encoding and / or feature encoding. The signaling information according to the embodiment may also be interleaved.
[0146] The hue conversion processor 12008, the feature conversion processor 12009, the prediction / lift / RAHT conversion processor 12010, and the arithmetic coder 12011 perform feature coding. The feature coding according to the embodiment is the same as or similar to the feature coding described in Figs. 1 to 9, so a detailed description thereof will be omitted.
[0147] The hue conversion processing unit 12008 according to the embodiment performs hue conversion coding to convert a hue value included in a feature. The hue conversion processing unit 12008 performs hue conversion coding based on the reconstructed geometry. The reconstructed geometry is as described in FIG. 1 to FIG. 9. The hue conversion processing unit 12008 performs operations and / or methods that are the same as or similar to the operations and / or methods of the color conversion unit 40006 described in FIG. 4. Detailed description will be omitted.
[0148] The feature conversion processing unit 12009 according to the embodiment performs feature conversion to convert features based on positions where geometry coding has not been performed and / or reconstructed geometry. The feature conversion processing unit 12009 performs the same or similar operation and / or method as the feature conversion unit 40007 described in FIG. 4. Detailed description will be omitted. The prediction / lift / RAHT conversion processing unit 12010 according to the embodiment codes the converted features by one or a combination of RAHT coding, predictive conversion coding, and lift conversion coding. The prediction / lift / RAHT conversion processing unit 12010 performs one of the same or similar operations as the RAHT conversion unit 40008, the LOD generating unit 40009, and the lift conversion unit 40010 described in FIG. 4. In addition, the predictive conversion coding, lift conversion coding, and RAHT conversion coding are the same as those described in FIG. 1 to FIG. 9, so detailed description will be omitted.
[0149] The arithmetic coder 12011 according to the embodiment encodes the coded attribute based on arithmetic coding. The arithmetic coder 12011 performs operations and / or methods that are the same as or similar to the operations and / or methods of the arithmetic encoder 400012.
[0150] The transmission processing unit 12012 according to the embodiment transmits each bitstream including the coded geometry and / or coded attribute and metadata information, or transmits the coded geometry and / or coded attribute and metadata information in one bitstream. When the coded geometry and / or coded attribute and metadata information according to the embodiment is configured in one bitstream, the bitstream includes one or more sub-bitstreams. The bitstream according to the embodiment includes signaling information including a Sequence Parameter Set (SPS) for sequence level signaling, a Geometry Parameter Set (GPS) for signaling geometry information coding, an Attribute Parameter Set (APS) for signaling attribute information coding, and a Tile Parameter Set (TPS) for tile level signaling, and slice data. The slice data includes information about one or more slices. One slice according to the embodiment includes one geometry bitstream (Geometry Parameter Set (GPS) for signaling geometry information coding, an Attribute Parameter Set (APS) for signaling attribute information coding, and a Tile Parameter Set (TPS) for tile level signaling. 0 ) and one or more attribute bit streams (Attr0 0 , Attr1 0 ).
[0151] A slice refers to a series of syntax elements that represents all or a portion of a coded point cloud frame.
[0152] The TPS according to the embodiment includes information on each tile (e.g., bounding box coordinate information and height / size information, etc.) for one or more tiles. The geometry bitstream includes a header and a payload. The header of the geometry bitstream according to the embodiment includes identification information of a parameter set included in the GPS (geom_parameter_set_id), a tile identifier (geom_tile_id), a slice identifier (geom_slice_id), and information on data included in the payload. As described above, the metadata processing unit 12007 according to the embodiment can generate and / or process signaling information and transmit it to the transmission processing unit 12012. In the embodiment, the element performing geometry coding and the element performing attribute coding can share data / information with each other as shown by the dotted line. The transmission processing unit 12012 according to the embodiment performs an operation and / or a transmission method that is the same as or similar to the operation and / or transmission method of the transmitter 10003. A detailed description is omitted as it is the same as that described in FIG. 1 and FIG. 2.
[0153] FIG. 13 illustrates an example of a receiving device according to the embodiment.
[0154] The receiving device shown in Fig. 13 is an example of the receiving device 10004 in Fig. 1 (or the point cloud decoder in Figs. 10 and 11). The receiving device shown in Fig. 13 performs any of the same or similar operations and methods as the operations and decoding methods of the point cloud decoder described in Figs. 1 to 11.
[0155] The receiving device according to the embodiment includes a receiving unit 13000, a receiving processing unit 13001, an arithmetic decoder 13002, an occupancy code based octree reconstruction processing unit 13003, a surface model processing unit (triangle reconstruction, upsampling, voxelization) 13004, an inverse quantization processing unit 13005, a metadata analysis 13006, an arithmetic decoder 13007, an inverse quantization processing unit 13008, a prediction / lift / RAHT inverse transform processing unit 13009, a hue inverse transform processing unit 13010, and / or a renderer 13011. Each component of the decoding according to the embodiment performs the inverse process of the component of the encoding according to the embodiment.
[0156] The receiving unit 13000 according to the embodiment receives point cloud data. The receiving unit 13000 performs an operation and / or a receiving method that is the same as or similar to the operation and / or the receiving method of the receiver 10005 of Fig. 1. A detailed description will be omitted.
[0157] The receiving processor 13001 according to the embodiment obtains a geometry bit stream and / or an attribute bit stream from the received data. The receiving processor 13001 is included in the receiving unit 13000.
[0158] Geometry decoding is performed by an arithmetic decoder 13002, an exclusive code based octree reconstruction processor 13003, a surface model processor 13004, and an inverse quantization processor 13005. The geometry decoding according to the embodiment is the same as or similar to the geometry decoding described in Figures 1 to 10, so a detailed description will be omitted.
[0159] The computation decoder 13002 according to the embodiment decodes the geometry bitstream based on computation coding. The computation decoder 13002 performs operations and / or coding that are the same as or similar to those of the computation decoder 11000.
[0160] The exclusive code based octree reconstruction processor 13003 according to the embodiment obtains an exclusive code from the decoded geometry bitstream (or from the decoded result, information on the secured geometry) and reconstructs an octree. The exclusive code based octree reconstruction processor 13003 performs an operation and / or method identical or similar to the operation of the octree synthesis unit 11001 and / or an octree generation method. The surface model processor 13004 according to the embodiment performs trisoup geometry decoding and associated geometry reconstruction (e.g., triangle reconstruction, upsampling, voxelization) based on a surface model scheme when trisoup geometry encoding is applied. The surface model processor 13004 performs an operation identical or similar to the operation of the surface approximation synthesis unit 11002 and / or the geometry reconstruction unit 11003.
[0161] The inverse quantization unit 13005 according to the embodiment inverse quantizes the decoded geometry.
[0162] According to an embodiment, the metadata analysis 13006 analyzes metadata, such as setting values, included in the received point cloud data. The metadata analysis 13006 transmits the metadata to the geometry decoder and / or the feature decoder. A detailed description of the metadata is omitted here as it has been described in FIG. 12.
[0163] The arithmetic decoder 13007, the inverse quantization processor 13008, the prediction / lift / RAHT inverse transform processor 13009, and the hue inverse transform processor 13010 perform feature decoding. The feature decoding is the same as or similar to the feature decoding described in FIG. 1 to FIG. 10, so a detailed description thereof will be omitted.
[0164] The computation decoder 13007 according to the embodiment decodes the attribute bitstream into computation coding. The computation decoder 13007 performs decoding of the attribute bitstream based on the reconstructed geometry. The computation decoder 13007 performs operations and / or coding that are the same or similar to those of the computation decoder 11005.
[0165] The inverse quantization unit 13008 according to the embodiment inversely quantizes the decoded characteristic bit stream. The inverse quantization unit 13008 performs the same or similar operation and / or method as the inverse quantization unit 11006.
[0166] The prediction / lift / RAHT inverse transform processing unit 13009 according to the embodiment processes the reconstructed geometry and the inverse quantized features. The prediction / lift / RAHT inverse transform processing unit 13009 performs any of the same or similar operations and / or decoding as those of the RAHT transform unit 11007, the LOD generating unit 11008, and / or the inverse lift unit 11009. The hue inverse transform processing unit 13010 according to the embodiment performs inverse transform coding for inversely transforming color values (or textures) included in the decoded features. The hue inverse transform processing unit 13010 performs the same or similar operations and / or inverse transform coding as those of the color inverse transform unit 11010. The renderer 13011 according to the embodiment renders the point cloud data.
[0167] FIG. 14 is a diagram illustrating an example of a structure that can be linked to a method / apparatus for transmitting and receiving point cloud data according to an embodiment.
[0168] 14 illustrates a configuration in which any of a server 1460, a robot 1410, an autonomous vehicle 1420, an XR device 1430, a smartphone 1440, a home appliance 1450, and / or an HMD 1470 are connected to a cloud network 1410. The robot 1410, the autonomous vehicle 1420, the XR device 1430, the smartphone 1440, or the home appliance 1450 may also be referred to as an apparatus. The XR device 1430 may correspond to a point cloud data (PCC) device or may be linked to a PCC device according to an embodiment.
[0169] Cloud network 1400 refers to a network that constitutes a part of a cloud computing infrastructure or exists within a cloud computing infrastructure, where cloud network 1400 is configured using a 3G network, a 4G or LTE network, a 5G network, or the like.
[0170] The server 1460 may be coupled to any of the robot 1410, autonomous vehicle 1420, XR device 1430, smartphone 1440, home appliance 1450, and / or HMD 1470 via the cloud network 1400 and may assist with at least some of the processing of the coupled devices 1410-1470.
[0171] The HMD (Head-Mount Display) 1470 represents any of the types of XR devices and / or PCC devices according to the embodiment. The HMD type device according to the embodiment includes a communications unit, a control unit, a memory unit, an I / O unit, a sensor unit, and a power supply unit.
[0172] Various embodiments of the devices 1410 to 1450 to which the above-mentioned technology is applied will be described below. Here, the devices 1410 to 1450 shown in Fig. 14 can be linked / coupled to the point cloud data transmitting / receiving device according to the above-mentioned embodiment.
[0173] <PCC+XR>
[0174] The XR / PCC device 1430 may be embodied in a Head-Mount Display (HMD), a Head-Up Display (HUD) installed in a vehicle, a TV, a mobile phone, a smartphone, a computer, a wearable device, a home appliance, a digital sign, a vehicle, a fixed robot, a mobile robot, etc. by applying PCC and / or XR (AR+VR) technology.
[0175] The XR / PCC device 1430 may obtain information about the surrounding space or real objects by analyzing 3D point cloud data or image data obtained by various sensors or from an external device to generate position data and attribute data for 3D points, and may render and output the XR object to be output. For example, the XR / PCC device 1430 may output an XR object including additional information about the recognized object in correspondence with the corresponding recognized object.
[0176] <PCC+Self-propelled+XR>
[0177] The autonomous vehicle 1420 is realized as a mobile robot, a vehicle, an unmanned aerial vehicle, etc. by applying PCC technology and XR technology.
[0178] The autonomous vehicle 1420 to which the XR / PCC technology is applied refers to an autonomous vehicle equipped with a means for providing an XR image, an autonomous vehicle that is the target of control / interaction within the XR image, etc. In particular, the autonomous vehicle 1420 that is the target of control / interaction within the XR image may be separated from the XR device 1430 and may be linked to each other.
[0179] The autonomous vehicle 1420 equipped with a means for providing an XR / PCC image obtains sensor information from sensors including a camera, and outputs an XR / PCC image generated based on the obtained sensor information. For example, the autonomous vehicle 1420 may provide the passenger with an XR / PCC object corresponding to a real object or an object on a screen by outputting an XR / PCC image through a HUD.
[0180] At this time, when the XR / PCC object is output to the HUD, at least a part of the XR / PCC object is output to overlap with an actual object toward which the passenger's gaze is directed. On the other hand, when the XR / PCC object is output to a display provided in the autonomous vehicle, at least a part of the XR / PCC object is output to overlap with an object in the screen. For example, the autonomous vehicle 1220 may output XR / PCC objects corresponding to objects such as a road, another vehicle, a traffic light, a traffic sign, a motorcycle, a pedestrian, a building, etc.
[0181] The VR (Virtual Reality) technology, the AR (Augmented Reality) technology, the MR (Mixed Reality) technology, and / or the PCC (Point Cloud Compression) technology according to the embodiment can be applied to various devices.
[0182] That is, VR technology is a display technology that provides real objects and backgrounds only in CG images. On the other hand, AR technology is a technology that displays virtual CG images on top of images of real things. Also, MR technology is similar to the AR technology in that it mixes virtual objects into the real world. However, AR technology clearly distinguishes between real objects and virtual objects made of CG images, and uses virtual objects to complement real objects, while MR technology is different from AR technology in that virtual objects and real objects are considered to have the same characteristics. More specifically, for example, the MR technology is applied to hologram services.
[0183] However, recently, rather than clearly distinguishing between VR, AR, and MR technologies, they are also referred to as XR (extended reality) technology. Therefore, the embodiments of the present invention can be applied to any of VR, AR, MR, and XR technologies. These technologies are applied with encoding / decoding based on PCC, V-PCC, and G-PCC technologies.
[0184] The PCC method / apparatus according to the embodiment can be applied to vehicles providing autonomous driving services.
[0185] Vehicles providing autonomous driving services are connected to the PCC device via wired or wireless communication.
[0186] When the point cloud data (PCC) transceiver according to the embodiment is connected to a vehicle for wired or wireless communication, it can receive / process AR / VR / PCC service related content data that can be provided along with an autonomous driving service and transmit it to the vehicle. Also, when the point cloud data transceiver is installed in a vehicle, the point cloud transceiver can receive / process AR / VR / PCC service related content data according to a user input signal inputted to a user interface device and provide it to a user. The vehicle or user interface device according to the embodiment receives a user input signal. The user input signal according to the embodiment includes a signal instructing an autonomous driving service.
[0187] The PCC data encoder according to the embodiment corresponds to an encoder, an encoder, a point cloud transmitter, a point cloud data encoder, and the like.
[0188] A PCC data decoder according to an embodiment corresponds to a decoder, a decoder, a point cloud receiving device, a point cloud data decoder, etc.
[0189] Depending on the embodiment, the geometric information may also be referred to as geometry information, geometry data, etc., and the attribute information may also be referred to as characteristic information, characteristic data, etc.
[0190] The method / apparatus according to the embodiment means a method / apparatus for transmitting and receiving point cloud data according to the embodiment.
[0191] FIG. 15 illustrates a method for generating Moulton codes according to an embodiment.
[0192] The Moulton code generation according to the embodiment of Fig. 15 is performed by the transmitting device 10000, the point cloud video encoder 10002, the receiving device 10004, the point cloud video decoder 10006, the encoding 20001 and the decoding 20003 of Fig. 2, the PCC encoder (encoder) of Fig. 4, the PCC decoder (decoder) of Fig. 10 and Fig. 11, the point cloud data transmitting device of Fig. 12, the point cloud data receiving device of Fig. 13, the XR device 1730 of Fig. 14, the smartphone 1440, and the Moulton code generator 19000 of Fig. 19, etc. An apparatus and a method thereof that perform operations related to the Moulton code generation according to the embodiment are simply referred to as a method / apparatus according to the embodiment. Each component of the apparatus according to the embodiment corresponds to hardware, software, a processor, and / or a combination thereof.
[0193] The embodiment relates to a method for supporting efficient compression and / or improved decoding performance by using axis transformation for each sequence and / or slice in point cloud compression. When compressing point clouds, the axis transformation is used to increase the similarity between points so that attribute values are closest to each other, which has the effect of reducing the size of the bitstream and improving the quality of the decoded point cloud compared to the original.
[0194] The point cloud data transmitting / receiving method / apparatus according to the embodiment provides a Moulton code generation scheme that increases encoding / decoding performance.
[0195] The embodiment uses Moulton code generation, a spatial coordinate search method, to compress 3D point cloud data (data about the positions and attributes of points on objects).
[0196] In addition, the method / apparatus according to the embodiment can adaptively perform the Moulton code generation method according to the embodiment based on the attribute of the axis. The point cloud according to the embodiment is geometry compressed in xyz order, and the address value of the Moulton code is generated in xyz order. The order of the attribute value prediction is also determined by the xyz order of the geometry.
[0197] The method / apparatus according to the embodiment is not limited to such an xyz order, but can further complement the Moulton code of attribute values applied to the position in the 3D space of the point cloud. The Moulton code according to the embodiment plays a role of connecting the geometry value and the attribute value of the point cloud data as a spatial Z-order search. In this case, the geometry values are aligned as a spatial search, but the Moulton code has a drawback in that it cannot reflect the distance of the actual geometry values. Therefore, the method / apparatus according to the embodiment further proposes a method of generating an adaptive Moulton code using axis transformation.
[0198] The point cloud compression according to the embodiment searches for a nearby point as an adjacent node based on the distance in a three-dimensional space, and transmits an index to decode the closest value or the average value of three values based on the adjacent node. The decoder according to the embodiment checks the position of the adjacent node closest to the current point from the transmitted index, and predicts the attribute value of the adjacent node from the attribute value of the current point by weighted value calculation. Therefore, the encoder and decoder can increase the efficiency of compression, encoding, decoding, etc. by selecting adjacent nodes that have similar attributes and are close in distance in space.
[0199] Depending on the embodiment, the adaptive Moulton code method can be used as a method for searching for spatially adjacent nodes.
[0200] The Moulton code according to the embodiment is generated by a transmitting device, an encoder, a Moulton code generator, etc. according to the embodiment. In the Moulton code generation method according to the embodiment, a weighted value-based Moulton code is generated. For example, there are 1) an axis-based adaptive Moulton code generation method, 2) a bit allocation Moulton code generation method, and 3) a value distribution-based Moulton code generation method.
[0201] In relation to the axis-based adaptive Moulton code generation method according to the embodiment, the method / apparatus according to the embodiment performs an axis-based adaptive Moulton code generation scheme. The method / apparatus according to the embodiment calculates a bounding box of a point cloud and adjusts a bit interleaving unit based on the length of the axis. When there are binary bit values of coordinate values for x, y, and z axes for a point, the Moulton code is generated by bit interleaving in the order of zyxzyxzyx.... The method / apparatus according to the embodiment assigns the lengths of the x, y, and z axes to their respective max edge, mid edge, and min edge, and identifies the longest axis. The lengths of the long axis and the mid axis are divided based on the smallest axis, and the divided value is log2. Here, the calculated values are rounded up to become count Y (count y) and count Z (count z). Each count value indicates the number of times a bit is repeated. For example, if the length of the x axis is 10, the length of the y axis is 40, and the length of the z axis is 20, then count y is 2 and count z is 1. And the bit ordering of the Moulton code is like zzyyxzyyxzyxzyx.. i.e. z is repeated once and y is repeated twice and the Moulton code is generated based on the axis length.
[0202] In the method / apparatus according to the embodiment, the above process is performed for all points in the bounding box. Each point is one-to-one mapped to a Moulton code. The mapped Moulton codes are sorted in ascending order, and the points can be searched in a deep-first search order on an octree.
[0203] In relation to the bit allocation type Moulton code generation method according to the embodiment, the method / apparatus according to the embodiment applies a weighted value to any one of x, y, and z, regardless of the point cloud data, and bit interleaves the Moulton code. According to the embodiment, even if a bounding box related to the characteristics of the data is not calculated, the method / apparatus according to the embodiment can obtain data with a short or long length on a specific axis based on the width, height, and depth during the point cloud data acquisition process. That is, even if there is no particular bounding box information, the Moulton code can be generated.
[0204] For example, point cloud data may be widely distributed on the x-axis and z-axis in space, but the points may be concentrated on the y-axis. Also, in the case of lidar data, data is often spread to the left and right and in front and behind the difference, but the data above and below is less important.
[0205] Therefore, for such a data sequence, a Moulton code can be generated by allocating more bits for Moulton code generation to the x and z axes.
[0206] In relation to the method for generating a Moulton code based on value distribution according to the embodiment, the method / apparatus according to the embodiment generates a Moulton code based on value distribution. The method / apparatus according to the embodiment generates a Moulton code by bit interleaving the Moulton code based on the distribution degree obtained by scanning all of the x, y, and z values of the point cloud data. The difference between the Moulton code generation method based on value distribution and the Moulton code generation method based on the axis is that it is not necessary to calculate a weight value for a part without a value. For example, the bounding box of the y-axis has values from 0 to 100, but there may be cases where no points are actually distributed in the range of 10 to 50 within the bounding box. It is possible to generate a Moulton code based on value distribution taking into account even the part without points.
[0207] In addition to the adaptive Moulton code method according to the embodiment, the bounding box of the point cloud can be expanded to specify and diversify the calculation method of the adaptive Moulton code, and the effect of improving performance can be obtained when using the adaptive Moulton code method.
[0208] The embodiment can solve the problem that even if the Euclidean distances in space are the same, there is a difference in the Moulton code. The order of xyz axes by axis is variously changed, and various applicable conditions are presented based on content units, tile units, slice units, geometry value units, attribute value units, etc. The embodiment also defines whether or not to change the axis conversion based on a threshold value. Therefore, the embodiment performs adaptive space search in units of content, tile, slice, range, and attribute value, and proposes adaptive Moulton code mapping conditions for searching for nearby adjacent nodes. The point cloud encoding and decoding operation according to the embodiment provides an effect of being able to transform the Moulton code according to various data characteristics of point cloud data, rather than using only one Moulton code type.
[0209] The embodiment provides an adaptive Moulton code generation method for solving the problem of not being able to reflect the difference between the actual coordinate system and the Moulton code distance that occurs in the process of generating a Moulton code for point cloud data. That is, the method according to the embodiment has an effect of generating adaptive Moulton codes for each axis differently for each content, each tile, each slice, range, attribute value, and geometry value. In addition, the threshold setting method according to the embodiment can set different options for each axis / density to be applied to each content, each tile, each slice, attribute value, and geometry value.
[0210] For example, the axis order change operation according to the embodiment is performed before geometry encoding in a transmitting device or encoder according to the embodiment. Also, the axis order change operation according to the embodiment is performed in the process of changing the order of axes when encoding attributes after geometry encoding. Furthermore, when changing for each axis, both a threshold value and no threshold value are possible. Operations related to the presence or absence of a threshold value are performed before geometry encoding or when encoding attributes after geometry encoding.
[0211] The embodiment is implemented by combining the axis-based adaptive Moulton code generation method, the bit allocation type Moulton code generation method, and the value distribution-based Moulton code generation method.
[0212] The method / apparatus according to the embodiment generates Moulton codes based on the methods according to the embodiment (axis-based adaptive Moulton code generation method, bit allocation Moulton code generation method, and value distribution-based Moulton code generation method), and can further change the Moulton code generation order based on axis / density / threshold conditions, etc. The Moulton address can be changed based on conditions according to the embodiment to generate different Moulton codes according to ranges.
[0213] Referring to FIG. 15, a method for generating Moulton codes according to an embodiment is shown.
[0214] The Moulton code generation order according to the embodiment includes two methods: Moulton code generation order by axis length and Moulton code generation order by density.
[0215] A point has an XYZ coordinate value 15000, which is a position value of the geometry data. The X, Y, and Z coordinate values of each axis are represented by bits 15010. If the coordinate value of each axis has N bits, the bits of each axis are scanned and aligned into one bit stream 15020, and a Moulton code can be generated 15030. For example, if the order of aligning the bits is XYZ, the Moulton code can be generated in the order of the Nth bit of the X axis, the Nth bit of the Y axis, the Nth bit of the Z axis, ..., the second bit of the X axis, the second bit of the Y axis, the second bit of the Z axis, ..., the first bit of the X axis, the first bit of the Y axis, and the first bit of the Z axis.
[0216] Moulton code generation according to an embodiment may be performed within the PCC encoder of FIG. 4, during geometry and feature encoding within the PCC encoder of FIG. 4, by the feature converter 4007 of FIG. 4, by the PCC decoder of FIG. 11, during geometry and feature decoding of the PCC decoder of FIG. 11, and / or by an encoder / decoder corresponding to FIGS. 4 and 11, etc.
[0217] The coordinate system expressing the points of the point cloud data according to the embodiment may be an XYZ axis, and may further include other types of coordinate systems. The Moulton code generation method according to the embodiment can also be applied to the position values of points in various coordinate systems. In the following, for example, points are expressed by XYZ. XYZ can be interpreted by replacing it with other factors depending on the coordinate system type. For example, further coordinate systems include a cylindrical coordinate system or a spherical coordinate system, hereinafter, a converted coordinate system for expressing a point cloud from xyz.
[0218] FIG. 16 illustrates a method for generating Moulton codes according to an embodiment.
[0219] Figure 16 illustrates one or more Moulton code generation operations according to an embodiment that can be combined with the Moulton code generation method described in Figure 15. Each operation in Figure 16 can be performed by the method / apparatus according to the embodiment described in Figure 15.
[0220] The method / apparatus according to the embodiment generates a Moulton code based on an axis (S16000). The method / apparatus according to the embodiment generates a Moulton code based on an axis (S16010). The method / apparatus according to the embodiment generates a Moulton code based on an axis (S16020). The method / apparatus according to the embodiment may use any one of an axis-based approach (S16000), a density-based approach (S16010) and a threshold-based approach (S16020), or may use at least one of the approaches in combination with each other. Each approach will be described below. The order in which each approach is described does not limit the meaning of the embodiment.
[0221] For example, Moulton code generation methods according to embodiments include Moulton code generation only by axis, Moulton code generation only by density, Moulton code generation by both axis and density, a method that uses both Moulton code generation by axis and threshold application, a method that uses both Moulton code generation by density and threshold application, a method that uses both Moulton code generation by axis and density and threshold application, and the like.
[0222] Morton code generation by S16000 axis
[0223] Point cloud data according to an embodiment includes one or more frames. A frame includes points that exist on the x, y, and z axes. A unit that includes points distributed in space is called a bounding box. The bounding box is defined by a space that includes the max of x, y, and z values to the min of x, y, and z values. The length / size of the bounding box varies depending on the sequence. The length of each axis (length of the x-axis, length of the y-axis, length of the z-axis) indicates how long or short the distribution of points is. The order of the three axes xyz can be changed by sorting them in ascending and / or descending order. The order of the axes according to an embodiment can be determined per sequence, per tile, per slice, or based on a geometry unit, attribute unit, geometry and attribute unit, etc.
[0224] According to an embodiment, the same Moulton code can be generated for each axis. According to an embodiment, a different Moulton code can be generated for each axis. According to an embodiment, a bounding box has a width, a depth, and a height. The length of an axis can be confirmed based on each axis on which the bounding box is located. For example, the order of the y-axis, z-axis, and x-axis is the order of the longest axis in descending order to the shortest axis. When generating a Moulton code from three axes, the bits constituting the Moulton code can be generated in the order of the n-th bit of the y-axis, the n-th bit of the z-axis, and the n-th bit of the x-axis as the first bit. This is an operation of mixing the bit order of the Moulton code in ascending and / or descending order of the lengths of the three axes. That is, the Moulton code can be generated by bit interleaving the bits of each axis based on a method and criterion according to an embodiment.
[0225] Therefore, the method / apparatus according to the embodiment can compare the length of each axis of the bounding box and perform various bit interleaving based on the length characteristics. Such bit interleaving of the Moulton code provides a variation of the Moulton code that reflects the characteristics and distribution degree of the actual data, and thus provides an effect on efficient compression and restoration of the point cloud.
[0226] In relation to the operation of generating a Moulton code for a shaft base according to an embodiment,
[0227] Let (x_i,y_i,z_i) be the current location of point I, then the bounding box lengths in all three axes are calculated as length_x, length_y, length_z. When considering the direction of the longest axis, more relevant feature neighbor candidates can be found. We can consider the longest axis for the corresponding neighbor search. Especially for category 3 data, the density distribution in X-axis or Y-axis is denser. Searching X-axis and Y-axis rather than Z-axis can find the nearest neighbors faster.
[0228] The resulting length_x, length_y, and length_z are stored in ascending order. The lengths of each axis correspond to SortedAxisOrder[0], SortedAxisOrder[1], and SortedAxisOrder[2], respectively. The sorted order becomes the input in the Moulton code X, Y, and Z coordinate system order.
[0229] The sorted order according to the embodiment is the bit interleaving order. Currently, the z, y, x order can be changed by sorted axis SortedAxisOrder[2], SortedAxisOrder[1], SortedAxisOrder[0]. The order can be generated to have the same Moulton code implementation. The sorted axes can be adaptively changed to the order of MC_i, which corresponds to the spatial search order. For the first candidate of nearest neighbor weight prediction, the influence of the longest axis direction is considered. The method / apparatus according to the embodiment can provide a changed spatial order of yxz bit interleaving order.
[0230] The embodiment sets the order in which the space is searched according to the dynamic Moulton code.
[0231] The nearest neighbor candidates are modified by a modified adaptive Moulton code.
[0232] The neighbor candidates are closer along the longest axis. Therefore, the adaptive Moulton code prediction is more effective in terms of spatial presence.
[0233] The Moulton code generation operation according to the embodiment has the advantage that it can efficiently provide adaptive Moulton codes by modifying the Moulton address generation.
[0234] An embodiment may further apply a slice min / max length ratio threshold to alter the Moulton address order.
[0235] The use of the Moulton code according to the embodiment has the effect of reducing time complexity and increasing the time efficiency of encoding / decoding.
[0236] Morton code generation by density
[0237] There is a density for each axis of a space in which points constituting point cloud data are distributed. The method / apparatus according to the embodiment may generate the density of points for each axis based on an axis-based adaptive Moulton code generation method, a bit allocation Moulton code generation method, and a Moulton code generation method based on value distribution, etc.
[0238] Each axis may have a different density, for example the shorter the axis length the higher the density value.
[0239] Depending on the embodiment, the bits of the coordinate values for each axis may be arranged (bit interleaved) in order of decreasing density. Depending on the embodiment, the bits of the coordinate values for each axis may be arranged (bit interleaved) in order of decreasing density. When bit-arranging in order of decreasing density, depending on the embodiment, the points whose data are expressed in the order of the x-axis, y-axis, and z-axis may be arranged again by density. For example, if the density of the x-axis is 10, the density of the y-axis is 5, and the density of the z-axis is 8, the bits may be interleaved in ascending order of density, and when generating the Moulton code, the Moulton code may be generated in the order of y, z, and x.
[0240] The change position of the point can be changed by geometry unit, attribute unit, geometry and attribute unit, etc. Also, the unit of the axis order can be changed by sequence unit, tile unit, or slice unit.
[0241] Going further than the method of using the xyz order as the Moulton code according to the embodiment (FIG. 16), the xyz order is changed based on various criteria to generate the Moulton code. The point cloud data is compressed and restored using the Moulton code. As the point positions are changed, it is possible to easily find adjacent nodes of the associated geometry values and / or attribute values for the longest and / or shortest axes. That is, the Moulton code is bit-interleaved according to the characteristics of the points of the actual point cloud data, such as the axis or density, and has the effect of distributing the adjacent nodes so that they can be easily found.
[0242] That is, the efficiency of encoding / decoding can be improved by only changing the order of the xyz data of the point cloud input to the encoder and / or decoder according to the embodiment. The latency of the operation of changing the axis order is not an issue, and the efficiency of encoding / decoding is effectively increased.
[0243] In particular, point cloud data that falls under category 3 may be low-density data such as autonomous driving data, which has low correlation between adjacent data, or static data such as category 1, which has high density and high correlation between adjacent data. The reflectivity information of such data has a characteristic that a specific axis is short. The earlier a long axis is aligned to the 1's digit (the 1's digit in the order when constructing a Moulton code, the first bit on the right side of the bit stream), the earlier the search of the long axis can be performed. By searching a specific axis first, more adjacent nodes can be found within the search range, which can provide an efficient effect on attribute value prediction. Furthermore, by searching the longer axis first, the compression efficiency is increased. Therefore, the method / apparatus according to the embodiment uses a Moulton code alignment method that can search for more adjacent nodes within a range based on the axis, density, and other characteristics for fast compression and restoration of point cloud data.
[0244] FIG. 17 further illustrates a method for generating a Moulton code according to a condition according to an embodiment.
[0245] In the embodiment, the density-based Moulton code generation operation generates a ratio by performing projection on a specific plane in space based on xoy / yoz / xoz. At this time, the ratio is generated by dividing the number of points by the total number of points. Here, the threshold for the density-based Moulton code conversion is set to, for example, 20%.
[0246] According to the conditions of the embodiment, setting information regarding the Moulton code is generated by the encoder and transmitted to the decoder as signaling information of the bit stream.
[0247] S16020 Moulton code generation order threshold
[0248] For example, the shape of the bounding box varies depending on the distribution of points, i.e., data characteristics. If the bounding box is close to a cube, bit interleaving of the Moulton code may not be performed. Therefore, in order to cover such various scenarios, a method for determining whether the bounding box is close to a cube using a threshold according to an embodiment is further provided.
[0249] With respect to the characteristics of point cloud data according to the embodiment, there may be bounding boxes that have a rectangular parallelepiped shape where one axis of the bounding box is long or short.
[0250] The compression and restoration efficiency of the points of such a rectangular bounding box is higher than that of a non-rectangular bounding box.
[0251] Point cloud data according to the embodiment may have data characteristics such as those of category 1. The bounding box of such points may have a cubic type. That is, data obtained by 3D scanning a static object, high density and high correlation data, etc. may have a sequence of cubes. Partitioning the point cloud data may result in data in which the slices have cubes. Due to such data characteristics, it is difficult to increase the efficiency of data compression and restoration.
[0252] Therefore, after determining the ascending / descending order method based on axis / density according to the embodiment, the data type can be determined. For example, if the ratio of the shortest axis to the longest axis of the bounding box is smaller or larger than a certain threshold, the Moulton code generation order may not be changed. In addition to the axis-based (S16000) and / or density-based (S16010) according to the embodiment, there may be an additional threshold-based determination option. A threshold-based determination method according to the embodiment will be described with reference to FIG. 18.
[0253] A point cloud data transmission apparatus according to an embodiment includes: an encoder for encoding point cloud data; and a transmitter for transmitting a bitstream including the point cloud data.
[0254] An encoder according to an embodiment generates a Moulton code for point cloud data.
[0255] The encoder according to the embodiment generates a sequence of Moulton codes based on each axis for the geometry data of the point cloud data.
[0256] The geometry data includes coordinate values for each axis, a Moulton code is generated based on the binary bits of the coordinate values for each axis, and the binary bits of the Moulton code are aligned based on the length of each axis.
[0257] An encoder according to an embodiment generates a sequence of Moulton codes based on the density of the point cloud data relative to the geometry data.
[0258] The geometry data includes coordinate values for each axis, a Moulton code is generated based on the binary bits of the coordinate values, and the binary bits of the Moulton code are aligned based on a density magnitude of one or more points for each axis.
[0259] An encoder according to an embodiment generates a sequence of Moulton codes based on the density of the point cloud data relative to the geometry data.
[0260] The geometry data includes coordinate values for each axis, a Moulton code is generated based on the binary bits of the coordinate values, and the binary bits of the Moulton code are aligned based on a density magnitude of one or more points for each axis.
[0261] The Moulton code generation operation of the encoder according to the embodiment is performed based on a threshold value related to the distribution of one or more points of the point cloud data.
[0262] The embodiment includes a receiver or receiving interface for receiving a bitstream including point cloud data; and a decoder for decoding the point cloud data.
[0263] A decoder according to an embodiment generates Moulton codes for point cloud data.
[0264] FIG. 17 illustrates a method for generating Moulton codes according to an embodiment.
[0265] Figure 17 shows an implementation of the Moulton code generation by axis (S16000) and the Moulton code generation by density (S16010) of Figure 16. The method / apparatus according to the embodiment generates the Moulton code by axis, generates the Moulton code by density, and / or generates the Moulton code by axis + density.
[0266] Points of the point cloud data for the encoder and decoder according to the embodiment have a position value. This position value has a value represented in bits 17000. Every point in space has geometric coordinate values of x, y, z 17000. The coordinate values have binary bits 17000.
[0267] The method / apparatus according to the embodiment can determine the type of sorting method for x, y, z 17000 represented by binary bits from among ascending order, descending order of axis (S16000), ascending order, descending order of density (S16010), or a combination of axis + density. The position values of each axis are re-sorted 17010 based on the determined order.
[0268] For example, xyz bits sorted according to the above specific criteria from the order of x, y, z to the order of z, y, x are generated 17020.
[0269] In addition, depending on the embodiment, if the input is input to the encoder without any specific criteria (the user inputs the encoding in the order of zxy), sorting can be omitted. It is also possible to generate a Moulton code without sorting using only signaling.
[0270] After bit interleaving in the changed order 17020, a Moulton address for a coordinate value having one binary bit is generated 17030. The Moulton code 17030, which is one bit stream for the three axes, is generated by arranging one bit at a time in the order of z, x, and y.
[0271] The method / apparatus according to the embodiment encodes and decodes points based on the modified Moulton address.
[0272] The modified Moulton address allows the point on the longest axis to be searched first. To generate a Moulton address for efficient searching, the method / apparatus according to the embodiment uses information (axis length, density value) related to the bounding box that contains the point.
[0273] The method / apparatus according to the embodiment calculates density for each axis. The density is higher as the length of the axis is shorter. This is because the number of points contained in a certain space or bounding box is the same, not the number of points that differ for each axis. The bits of the Moulton code may be interleaved taking the density into consideration. Also, according to the embodiment, a threshold may be applied when interleaving the bits of the Moulton code (S16020).
[0274] Depending on the embodiment, it may not be necessary to search for adjacent nodes along an axis with a short length. Therefore, it is more efficient to search for adjacent nodes along a long axis. To improve the efficiency of such adjacent node search, the Moulton code is bit-interleaved.
[0275] FIG. 18 shows thresholds for the Moulton code generation sequence according to an embodiment.
[0276] FIG. 18 shows the operation (S16020) related to the thresholds of the Moulton code generation order in FIG.
[0277] As an example, the process of inputting a threshold value is shown in pseudo-code as follows:
[0278] inline void computeAxisOrder() { auto bbox = pointCloud.computeBoundingBox(); for(int i = 0; i < 3; i++) { axisInfo[i].length = bbox.max[i] - bbox.min[i]; axisInfo[i].order = i; } sort(axisInfo.begin(), axisInfo.end()); double minMaxAxisRatio = double(axisInfo[2].length) / double(axisInfo[0].length); if(minMaxAxisRatio < 5.0) { axisInfo[0].order = 0; axisInfo[1].order = 1; axisInfo[2].order = 2; } }
[0279] In accordance with the embodiment, the length for each axis (axisInfo[i].length) is obtained based on the difference between the long axis of the bounding box (bbox.max[i]) and the short axis of the bounding box (bbox.min[i]).
[0280] For each axis (for(int i=0;i<3;i++)), you can check the length and order of each axis (axisInfo[i].order).
[0281] The minimum and maximum axis ratio (minMaxAxisRatio) according to the embodiment indicates a threshold value. The threshold value according to the embodiment is the ratio of the long axis to the middle axis. In addition, according to the embodiment, the threshold value further includes the ratio of the short axis to the middle axis, the ratio of the short axis to the long axis, etc. Various ratio values relative to the length of the axis are applied as the threshold value according to the embodiment.
[0282] Depending on the implementation, calculate the ratio between the two axes (double minMaxAxisRatio=double(axisInfo[2].length) / double(axisInfo[0].length)).
[0283] The operation of comparing the threshold (minMaxAxisRatio) checks whether the min-max axis ratio is less than 5.0, for example, based on 5.0. If the min-max axis ratio is less than a certain value (other values besides 5.0 can be used), the axis order is determined as follows: axisInfo[0].order=0; axisInfo[1].order=1; axisInfo[2].order=2;. For example, if the bounding box is close to a cube, the Moulton code order does not need to be changed. If the bounding box is close to a rectangular parallelepiped, the Moulton code order can be changed.
[0284] Depending on the embodiment, the Moulton code generation order (S16000 and / or S16010) and the Moulton code generation order threshold (S16020) may be used together, and each operation (S16000, S16010, S16020) may be applied differently to each geometry, each attribute, or each geometry and attribute.
[0285] FIG. 19 illustrates a Moulton code generator according to an embodiment.
[0286] FIG. 19 shows a Moulton code generator 19000 according to an embodiment that performs the operations described in FIGS. 15 to 18, etc.
[0287] The Moulton code generator of Figure 19 corresponds to or is included in the transmitting device 10000, point cloud video encoder 10002, receiving device 10004, point cloud video decoder 10006, encoding 20001 and decoding 20003 of Figure 2, the PCC encoder (encoder) of Figure 4, the PCC decoder (decoder) of Figures 10 and 11, the point cloud data transmitting device of Figure 12, the point cloud data receiving device of Figure 13, and the XR device 1730 and smartphone 1440 of Figure 14, etc.
[0288] FIG. 19 illustrates components of an embodiment of a PCC encoder and decoder that performs related operations such as those of FIG.
[0289] The Moulton code generator 19000 performs an operation of generating a Moulton code according to conditions in accordance with an embodiment, checking a threshold value, and then generating a Moulton code for each geometry / attribute.
[0290] The Moulton code generator 19000 is included in the PCC encoder according to the embodiment. The Moulton code generator 19000 generates the Moulton code between the geometry coding unit and the feature coding unit in the PCC encoder. The method / apparatus according to the embodiment performs operations such as LOD generation based on the Moulton code generated by the embodiment.
[0291] The Moulton code generator 19000 according to the embodiment generates a Moulton code based on the condition for each axis / density. The condition for each axis / density according to the embodiment is a system setting value or a value input by a user. Also, the transmission method / apparatus according to the embodiment includes parameter information (see FIG. 21 to FIG. 24) related to the condition for each axis / density in a bit stream (see FIG. 20) and transmits it to the reception method / apparatus.
[0292] The Moulton code generator 19000 according to the embodiment is also referred to as a Moulton code generator, etc.
[0293] The Moulton code generator 19000 according to the embodiment is performed before geometry encoding (e.g., in the geometry encoding part of FIG. 4) and after geometry encoding (e.g., between the geometry encoding part and the attribute encoding part of FIG. 4). For example, the Moulton code generator according to the embodiment is connected to a geometry encoder according to the embodiment. Depending on the embodiment, there is a configuration such as Moulton code generator / geometry encoder and / or geometry encoder / Moulton code generator. Also, for the receiving side corresponding to the transmitting side, the Moulton code processor according to the embodiment is connected to a geometry decoder, and depending on the embodiment, there is a configuration such as Moulton code processor / geometry decoder and / or geometry decoder / Moulton code processor.
[0294] The receiving method / apparatus according to the embodiment decodes the point cloud data based on the inverse process of the Moulton code generator 19000.
[0295] The transmission method / apparatus according to the embodiment encodes point cloud data based on the following parameters (also referred to as signaling information or metadata):
[0296] The method / apparatus according to the embodiment performs an encoding operation according to the embodiment, generates parameters related to the encoding operation, such as the following, includes them in a bitstream (see Figures 20 to 24), and transmits them to the receiving method / apparatus according to the embodiment.
[0297] The transmission method / apparatus according to the embodiment determines the condition (axis_condition_selection) for each axis / density. A Moulton code generator 19000 performs bit interleaving of the Moulton code under the predetermined condition.
[0298] The transmission method / apparatus according to the embodiment defines the bit interleaving order based on ascending / descending order (ascending_order_flag). The bit interleaving order is transmitted from the encoder to the decoder by the bit stream (see Figs. 20 to 24). For example, an ascending order flag (ascending_order_flag) of 0 indicates ascending order, and an ascending order flag (ascending_order_flag) of 1 indicates descending order. Each integer value can be changed variously.
[0299] The method / apparatus according to the embodiment determines whether or not to perform Moulton generation based on a predetermined threshold (axis_ordering_threshold) according to data characteristics.
[0300] The Moulton code generation condition and whether or not to apply a threshold can be applied differently for each sequence / tile / slice. In this case, the values used can be defined as signaling information (see FIG. 20 to FIG. 24).
[0301] A decoder corresponding to the encoder according to the embodiment performs all the same steps of the encoder.
[0302] The conditional Moulton code generator 19000 and the threshold value-based order change enable / disable 19000 are applied before geometry coding, after geometry coding, or both.
[0303] FIG. 20 illustrates the composition of a point cloud bitstream according to an embodiment.
[0304] The method / apparatus according to the embodiment generates a point cloud bitstream as shown in Fig. 20. For example, a point cloud bitstream including parameters including geometry information, characteristic information, and / or metadata therefor is generated (encoded) and received (decoded) by the transmitting device 10000, point cloud video encoder 10002, receiving device 10004, point cloud video decoder 10006, encoding 20001 and decoding 20003 in Fig. 2, encoding process in Fig. 4, decoding process in Fig. 11, transmitting device in Fig. 12, receiving device in Fig. 13, XR device 1430 in Fig. 14, Moulton code generator 19000 in Fig. 19, and methods according to the embodiments in Fig. 25 and Fig. 26, etc.
[0305] Information for the embodiment can be signaled.
[0306] The meanings of each abbreviation are as follows: SPS: Sequence Parameter Set, GPS: Geometry Parameter Set, APS: Attribute Parameter Set, TPS: Tile Parameter Set, Geom: Geometry bitstream = Geometry slice header + Geometry slice data, Attr: Attribute bitstream = Attribute brick header + Attribute brick data. Here, brick is also called block, slice, etc.
[0307] The point cloud data according to the embodiment has a bit stream format as shown in FIG. 20. The point cloud data includes a sequence parameter set (SPS), a geometry parameter set (GPS), an attribute parameter set (APS), and a tile parameter set (TPS) including signaling information according to the embodiment. The point cloud data includes one or more geometries and / or attributes. The geometry and / or attributes of the point cloud data are divided into one or more slice units (or brick / block units). The geometry has a structure of a geometry slice header and geometry slice data. For example, the TPS including signaling information includes Tile(0). Tile_bounding_box_xyz0, Tile(0)_Tile_bounding_box_whd, etc. Geometry includes Geom_Geom_parameter_set_id, Geom_Tile_id, Geom_slice_id, GeomBoxOrigin, Geom_box_log2_scale, Geom_max_node_size_log2, Geom_num_points etc.
[0308] The signaling information according to the embodiment is added to the SPS, GPS, APS, TPS, etc. and then signaled.
[0309] Depending on the embodiment, the signaling information is signaled in addition to the TPS or the geometry (Geom) for each slice or the attributes (Attr) for each slice.
[0310] The structure of point cloud data according to the embodiment provides efficiency in terms of encoding / decoding / data access of parameter sets, geometry, attributes, including signaling information.
[0311] The point cloud data associated with the point cloud data transmitting / receiving device according to the embodiment includes any of a sequence parameter, a geometry parameter, a feature parameter, a tile parameter, a geometry bit stream, and a feature bit stream.
[0312] Hereinafter, the syntax of specific signaling information will be described with reference to the drawings. For reference, the name of the signaling information according to the embodiment can be modified / extended within the intended meaning / function of the signaling information. The fields of the signaling information are called first signaling information, second signaling information, etc.
[0313] As described above, a point cloud data transmitting apparatus (e.g., the point cloud data transmitting apparatus described in Figs. 1, 11, 14 and 1) transmits encoded point cloud data in the form of a bitstream. The bitstream according to the embodiment includes one or more sub-bitstreams.
[0314] A point cloud data transmitting apparatus (e.g., the point cloud data transmitting apparatus described in FIG. 1, FIG. 4, FIG. 12, FIG. 19, etc.) divides an image of point cloud data into one or more packets in consideration of an error of a transmission channel and transmits the image through a network. A bit stream according to an embodiment includes one or more packets (e.g., NAL (Network Abstraction Layer) units). Therefore, even if some packets are lost in a poor network environment, the point cloud data receiving apparatus can restore the corresponding image using the remaining packets. Point cloud data can be divided into one or more slices or one or more tiles for processing. The tiles and slices according to the embodiment are areas for partitioning a picture of point cloud data and performing point cloud compression encoding processing. The point cloud data transmitting apparatus processes data corresponding to each area according to the importance of each divided area of the point cloud data to provide high-quality point cloud content. That is, the point cloud data transmitting apparatus according to the embodiment can perform point cloud compression encoding processing of data corresponding to an area important to a user with better compression efficiency and appropriate latency.
[0315] According to the embodiment, an image (or picture) of a point cloud content is divided into basic processing units for point cloud compression encoding. The basic processing units for point cloud compression encoding according to the embodiment include, but are not limited to, a coding tree unit (CTU) and a brick (brick = slice).
[0316] A slice according to an embodiment is an area including one or more integer basic processing units for point cloud compression encoding, and is not a rectangular parallelepiped. A slice according to an embodiment includes data transmitted by packets. A tile according to an embodiment is an area divided into a rectangular shape in an image, and includes one or more basic processing units for point cloud compression encoding. One slice according to an embodiment is included in one or more tiles. Also, one tile according to an embodiment is included in one or more slices.
[0317] A bitstream according to an embodiment includes signaling information including a Sequence Parameter Set (SPS) for sequence level signaling, a Geometry Parameter Set (GPS) for signaling geometry information coding, an Attribute Parameter Set (APS) for signaling attribute information coding, and a Tile Parameter Set (TPS) for tile level signaling, and one or more slices.
[0318] The SPS according to the embodiment is coding information for the entire sequence, such as profile, level, etc., and includes global information for the entire file, such as picture resolution, video format, etc.
[0319] According to the embodiment, one slice (e.g., slice 0) includes a slice header and slice data. The slice data includes one geometry bitstream (Geom00) and one or more attribute bitstreams (Attr00, Attr10). The geometry bitstream includes a header (e.g., geometry slice header) and a payload (e.g., geometry slice data). According to the embodiment, the header of the geometry bitstream includes identification information of a parameter set included in the GPS (geom_geom_parameter_set_id), a tile identifier (geom_tile id), a slice identifier (geom_slice_id), geometry box origin information (geomBoxOrigin), geometry box scale (geom_box_log2_scale), geometry node max size (geom_max_node_size_log2), number of geometry points (geom_num_poins), and information on data included in the payload. The attribute bitstream includes a header (e.g., attribute slice header or attribute brick header) and a payload (e.g., attribute slice data or attribute brick data).
[0320] The parameter information associated with the embodiment is conveyed in various units such as sequences, geometries, characteristics, tiles, slices, etc., and the receiving method / apparatus according to the embodiment has the advantage that it can access the point cloud data statically / dynamically.
[0321] Related information may be signaled to perform the embodiment. The signaling information according to the embodiment may be used at a transmitting end or a receiving end.
[0322] Geometry data (Geom): Geometry bitstream = Geometry slice header + Geometry slice data
[0323] Attribute data (Attr): Attribute bitstream = Attribute slice header + Attribute brick data
[0324] The method / apparatus according to the embodiment provides tiles or slices so that the point cloud can be processed in separate regions, where each region has a different importance.
[0325] By providing the ability to apply different filters or different filter units depending on the importance, it is possible to provide a method in which a filtering method with high complexity but good quality results can be used in important regions.
[0326] When dividing point cloud data into regions, different adjacent point set generation options can be set for each region to provide a selection method with low complexity but slightly lower reliability of the results, or high complexity but high reliability. It can be set differently depending on the processing capacity of the receiver.
[0327] Instead of using complex filtering methods on the entire point cloud depending on the receiver's processing capacity, different filtering can be applied to each region (regions divided into tiles or slices) to ensure better image quality and appropriate latency in the system in areas that are important to the user.
[0328] When the method / apparatus according to the embodiment divides the point cloud data into tiles, a different filter, a different filter unit, can be applied to each tile.
[0329] When the method / apparatus according to the embodiment divides the point cloud data into slices, a different filter, a different filter unit, can be applied to each slice.
[0330] If the point cloud is divided into tiles, the signaling information can be transmitted for each tile, and if the point cloud is divided into slices, the signaling information can be transmitted for each slice.
[0331] Signaling information according to the embodiment may be included in various locations, alternatively or redundantly.
[0332] According to the embodiment, a sequence has multiple tiles, a tile has multiple slices, and one slice includes one octree. SPS is at the sequence level, and APS is also at the sequence level. SPS contains more general information. ASP contains more specific information in Attribute. TPS applies different techniques for each tile when dividing a sequence into tiles. If there is information set in APS and information set in TPS, APS can default. If there is no setting information in TPS, the default is used, and if there is setting information in TPS, the receiving method / apparatus according to the embodiment can use the TPS information. The Attribute Slice header can divide each tile into slices. That is, it is setting information for each slice.
[0333] Figures 21 to 24 show detailed syntax of signaling information included in the bit stream of point cloud data of Figure 20. The transceiver according to the embodiment provides a signaling scheme as follows to support the operation according to the embodiment. The names of the signaling information can be understood within the meaning and function of the signaling information.
[0334] Signaling information related to the criterion and threshold information of the Moulton code generation order according to the embodiment can be transmitted by the bit stream. To perform the criterion and threshold related operation of the Moulton code generation order, parameter information related to the generation criterion and threshold can be signaled.
[0335] Based on the parameter information according to the following embodiment, the signaling information of the encoder / decoder according to the Moulton code generation order will be described.
[0336] The threshold value of the Moulton code generation criterion allows for additional signaling operations to be performed by the encoder / decoder.
[0337] FIG. 21 shows a Tile Parameter Set (TPS) according to an embodiment.
[0338] FIG. 21 shows the TPS included in FIG.
[0339] The transmitting method / apparatus according to the embodiment can add information related to Moulton code generation to the TPS and transmit it, and the receiving method / apparatus according to the embodiment can obtain information related to Moulton code generation based on the TPS.
[0340] Axis condition selection (axis_condition_selection): Indicates the axis condition selection method for generating Moulton code. It indicates by axis / by density / other conditions, etc. For example, 0 indicates order sorting by axis (S16000), 1 indicates order sorting by density (S16010), and 2 indicates the use of other methods. Each integer value can be changed in various ways.
[0341] Ascending order flag (ascending_order_flag): Indicates whether the order according to the condition specified by the axis condition selection (axis_condition_selection) is ascending or descending, and indicates information about the sorting order. For example, 0 indicates ascending sorting, and 1 indicates descending sorting. Each integer value can be changed in various ways.
[0342] Axis_ordering_threshold: This indicates information related to whether or not to perform conditional Moulton interleaving by applying a predetermined conditional threshold in relation to the Moulton code.
[0343] Number of tiles (num_tiles): Indicates the number of tiles signalled for the bitstream. When not present, this value is inferred to be 0.
[0344] Depending on the number of tiles, the following tile-related parameter information is included in the TPS for each tile number.
[0345] Tile bounding box offset X (tile_bounding_box_offset_x[i]): The X offset of the i-th tile in the cartesian coordinates. When not present, the value of tile_bounding_box_offset_x[0] is inferred to be sps_bounding_box_offset_x.
[0346] Tile bounding box offset Y (tile_bounding_box_offset_y[i]): Indicates the Y offset of the i-th tile in the cartesian coordinates. When not present, the value of tile_bounding_box_offset_y[0] is inferred to be sps_bounding_box_offset_y.
[0347] Tile bounding box offset Z (tile_bounding_box_offset_z[i]): Indicates the z offset of the i-th tile in the Cartesian coordinates. When not present, the value of tile_bounding_box_offset_z[0] is inferred to be sps_bounding_box_offset_z.
[0348] Tile bounding box scale factor (tile_bounding_box_scale_factor[i]): Indicates the scale factor the i-th tile in the Cartesian coordinates. When not present, the value of tile_bounding_box_scale_factor[0] is inferred to be sps_bounding_box_scale_factor.
[0349] Tile bounding box size width (tile_bounding_box_size_width[i]): Indicates the width of the i-th tile in the Cartesian coordinates. When not present, the value of tile_bounding_box_size_width[0] is inferred to be sps_bounding_box_size_width.
[0350] Tile bounding box size height (tile_bounding_box_size_height[i]): Indicates the height of the i-th tile in the Cartesian coordinates. When not present, the value of tile_bounding_box_size_height[0] is inferred to be sps_bounding_box_size_height.
[0351] Tile bounding box size depth (tile_bounding_box_size_depth[i]): Indicates the depth of the i-th tile in the Cartesian coordinates. When not present, the value of tile_bounding_box_size_depth[0] is inferred to be sps_bounding_box_size_depth.
[0352] FIG. 22 shows a GPS (Geometry Parameter Set) according to an embodiment.
[0353] FIG. 22 shows the GPS included in FIG.
[0354] The transmitting method / apparatus according to the embodiment adds the Moulton code generation related information to the GPS and transmits it, and the receiving method / apparatus according to the embodiment obtains the Moulton code generation related information based on the GPS.
[0355] Axis condition selection (axis_condition_selection): Indicates the axis condition selection method for generating Moulton code. It indicates by axis / by density / other conditions, etc. For example, 0 indicates order sorting by axis (S16000), 1 indicates order sorting by density (S16010), and 2 indicates the use of other methods. Each integer value can be changed in various ways.
[0356] Ascending order flag (ascending_order_flag): Indicates whether the order according to the condition specified by the axis condition selection (axis_condition_selection) is ascending or descending, and indicates information about the sorting order. For example, 0 indicates ascending sorting, and 1 indicates descending sorting. Each integer value can be changed in various ways.
[0357] Axis_ordering_threshold: This indicates information related to whether or not to perform conditional Moulton interleaving by applying a predetermined conditional threshold in relation to the Moulton code.
[0358] GPS Geometry Parameter Set ID (gps_geom_parameter_set_id): provides an identifier for the GPS for reference by other syntax elements. The value of gps_seq_parameter_set_id shall be in the range of 0 to 15, inclusive.
[0359] GPS Sequence Parameter Set ID (gps_seq_parameter_set_id): Specifies the value of sps_seq_parameter_set_id for the active SPS. The value of gps_seq_parameter_set_id shall be in the range of 0 to 15, inclusive.
[0360] Geometry_coding_type: Indicates the coding type for the geometry. The geometry coding type is 0 or 1. 0 indicates Octree, 1 indicates Triangle Soup. Other values of geometry_coding_type may be reserved for future use.
[0361] GPS Box Present Flag (gps_box_present_flag): Indicates that additional bounding box information is provided in a geometry header that references the current GPS. gps_bounding_box_present_flag equal to 1 specifies an additional bounding box information is provided in a geometry header that references the current GPS. gps_bounding_box_present_flag equal to 0 specifies that additional bounding box information is not signalled in the geometry header.
[0362] unique_geometry_points_flag: A value of 1 indicates that all output points have unique positions. A value of 0 indicates that the output points may have same positions.
[0363] neighbor_context_restriction_flag: A value of 0 indicates that octree occupancy coding uses contexts determined from six neighbouring parent nodes. A value of 1 indicates that octree coding uses contexts determined from sibling nodes only.
[0364] inferred_direct_coding_mode_enabled_flag: A value of 0 indicates the octree coding uses inferred_direct_coding_mode. inferred_direct_coding_mode_enabled_flag equal to 0 indicates the octree coding uses inferred_direct_coding_mode. inferred_direct_coding_mode_enabled_flag equal to 1 indicates the octree coding uses multiple context determined from sibling neighbouring nodes.
[0365] bitwise_occupancy_coding_flag : indicates the presence or absence of occupancy coding. A value of 1 indicates that geometry node occupancy is encoded using bit-wise contextualisation of the syntax element ocupancy_map. bitwise_occupancy_coding_flag equal to 0 indicates that geometry node occupancy is encoded using the dictionary encoded syntax element occypancy_byte.
[0366] Child_neighbours_enabled_flag: Indicates whether adjacent child nodes are enabled or not.
[0367] adjacent_child_contextualisation_enabled_flag: equal to 1 indicates that the adjacent children of neighbouring octree nodes are used for bit-wise occupancy contextualization. Adjacent_child_contextualisation_enabled_flag equal to 0 indicates that the children of neighbouring octree nodes are not used for the occupancy contextualisation.
[0368] Geometry occupancy ctx reduction factor (geom_occupancy_ctx_reduction_factor): This indicates the reduction factor for the occupancy.
[0369] Neighbour Boundary (log2_neighbour_avail_boundary): specifies the value of the variable NeighbAvailBoundary that is used in the decoding process as follows: NeighbAvailBoundary=2log2_neighbour_avail_boundary.
[0370] If the neighbor context restriction flag (neighbour_context_restriction_flag) is 1, then NeighbAvailabilityMask(NeighbAvailBoundary) is set to 13. If the neighbor_context_restriction_flag is 0, then NeighbAvailabilityMask(NeighbAvailBoundary) is set to (1< <log2_neighbour_avail_boundary)にセットされる(When neighbour_context_restriction_flag is equal to 1、NeighbAvailabilityMask is set equal to 13. Otherwise、 neighbour_context_restriction_flag equal to 0、 NeighbAvailabilityMask is set equal to (1 << log2_neighbour_avail_boundary))。
[0371] Intra prediction max node size (log2_intra_pred_max_node_size): Indicates the octree node size for dedicated intra prediction.
[0372] trisoup_node_size: specifies the variable TrisoupNodeSize as the size of the triangle nodes as follows. TrisoupNodeSize=2log2_trisoup_node_size. The value of log2_trisoup_node_size shall be equal to or greater than 0. When log2_trisoup_node_size is equal to 0, the Geometry bitstream includes only the octree coding syntax.
[0373] trisoup_depth: Specifies the number of bits used to represent each component of a point coordinate. The value of trisoup_depth shall be in the range of 2 to 21. [Ed(df):21 should perhaps be a level limit].
[0374] trisoup_triangle_level: Specifies the level at which the octree is pruned. The value of trisoup_triangle_level shall be in the range of 1 to trisoup_depth-1.
[0375] GPS Extension Present Flag (gps_extension_present_flag): A value of 1 indicates that the gps_extension_data syntax structure in the GPS syntax structure is present. A value of 0 indicates that this syntax structure is not present. When not present, the value of gps_extension_present_flag is inferred to be equal to 0.
[0376] GSP Extension Data Flag (gps_extension_data_flag): Indicates the presence or absence of extension data (may have any value. Its presence and value do not affect decoder conformance to profiles specified in Annex A. Decoders conforming to a profile specified in Annex A).
[0377] FIG. 23 shows an Attribute Parameter Set (APS) according to an embodiment.
[0378] FIG. 23 shows the APS included in FIG.
[0379] The transmitting method / apparatus according to the embodiment can add information related to Moulton code generation to the APS and transmit it, and the receiving method / apparatus according to the embodiment can obtain information related to Moulton code generation based on the APS.
[0380] Axis condition selection (axis_condition_selection): Indicates the axis condition selection method for generating Moulton code. It indicates by axis / by density / other conditions, etc. For example, 0 indicates order sorting by axis (S16000), 1 indicates order sorting by density (S16010), and 2 indicates the use of other methods. Each integer value can be changed in various ways.
[0381] Ascending order flag (ascending_order_flag): Indicates whether the order according to the condition specified by the axis condition selection (axis_condition_selection) is ascending or descending, and indicates information about the sorting order. For example, 0 indicates ascending sorting, and 1 indicates descending sorting. Each integer value can be changed in various ways.
[0382] Axis_ordering_threshold: This indicates information related to whether or not to perform conditional Moulton interleaving by applying a predetermined conditional threshold in relation to the Moulton code.
[0383] APS Attribute Parameter Set ID (aps_attr_parameter_set_id): Provides an identifier for the APS for reference by other syntax elements. The value of aps_attr_parameter_set_id shall be in the range of 0 to 15, inclusive.
[0384] APS Sequence Parameter Set ID (aps_seq_parameter_set_id): Specifies the value of the SPS Sequence Parameter Set ID (sps_seq_parameter_set_id) for the active SPS. aps_seq_parameter_set_id has a range of 0 to 15, inclusive.
[0385] Attr_coding_type: Indicates the attribute coding type. Attr_coding_types are 0, 1, 2, etc., where 0 indicates predictive weight lifting, 1 indicates Region Adaptive Hierarchical Transferm (RAHT), and 2 indicates fixed weight lifting. Each integer value may vary. (indicates that the coding type for the Attribute in Table 7 2 for the given value of Attr_coding_type. The value of Attr_coding_type shall be equal to 0, 1, or 2 in bitstreams conforming to this version of this Specification. Other values of Attr_coding_type are reserved for future use by ISO / IEC. Decoders conforming to this version of this Specification shall ignore reserved valuesS of Attr_coding_type. 0=Predicting weight lifting, 1=Region Adaptive Hierarchical Transferm (RAHT), 2=Fixed weight lifting).
[0386] Number of nearest neighbors predicted (num_pred_nearest_neighbours): Specifies the maximum number of nearest neighbors to be used for prediction. The value of numberOfNearestNeighboursInPrediction shall be in the range of 1 to xx.
[0387] Maximum number of direct predictors (max_num_direct_predictors): indicates the maximum number of predictors used for direct prediction. The value of max_num_direct_predictors shall be range of 0 to num_pred_nearest_neighbours. The variable MaxNumPredictors is used in the decoding process as follows:MaxNumPredictors=max_num_direct_predicots+1.
[0388] lifting_search_range: Specifies the search range for the lifting.
[0389] lifting_quant_step_size: Attribute 1 st Specifies the quantization step size for the 1st component of the Attribute. The value of quant_step_size shall be in the range of 1 to xx.
[0390] lifting_quant_step_size_chroma : Specifies the quantization step size for the chroma component of the Attribute when the Attribute is colour. The value of quant_step_size_chroma shall be in the range of 1 to xx.
[0391] LOD binary tree enabled flag (lod_binary_tree_enabled_flag): Specifies whether binary tree is enable or not for the log generation.
[0392] Number of LODs (num_detail_levels_minus1): Specifies the number of LODs for the Attribute coding. The value of num_detail_levels_minus1 shall be in the range of 0 to xx.
[0393] sampling_distance_squared[idx]: Specifies the square of the sampling distance for idx. The value of sampling_distance_squared[] shall be in the range of 0 to xx.
[0394] adaptive_prediction_threshold: Specifies the threshold of prediction.
[0395] RAHT Depth (raht_depth): Indicates the number of LODs for RAHT. Specifies the number of levels of detail for RAHT. The value of depthRAHT shall be in the range of 1 to xx.
[0396] RAHT binary level threshold (raht_binarylevel_threshold): Indicates the LOD for cutting out the RAHT coefficient. The value of binaryLevelThresholdRAHT shall be in the range of 0 to xx.
[0397] RAHT quantization step size (raht_quant_step_size): Attribute 1 st Specifies the quantization step size for the 1st component of the Attribute. The value of quant_step_size shall be in the range of 1to xx.
[0398] APS Extension Present Flag (aps_extension_present_flag): A value of 1 indicates that the aps_extension_data syntax structure is present in the APS syntax structure. A value of 0 indicates that this syntax structure is not present. When not present, the value of aps_extension_present_flag is inferred to be equal to 0.
[0399] APS extension data flag (aps_extension_data_flag): Indicates the presence or absence of APS extension data (may have any value. Its presence and value do not affect decoder conformance to profiles specified in Annex A. Decoders conforming to a profile specified in Annex A).
[0400] FIG. 24 illustrates a Geometry Slice header (GSH) according to an embodiment.
[0401] The transmitting method / apparatus according to the embodiment can add information related to Moulton code generation to the GSH and transmit it, and the receiving method / apparatus according to the embodiment can obtain information related to Moulton code generation based on the GSH.
[0402] Axis condition selection (axis_condition_selection): Indicates the axis condition selection method for generating Moulton code. It indicates by axis / by density / other conditions, etc. For example, 0 indicates order sorting by axis (S16000), 1 indicates order sorting by density (S16010), and 2 indicates the use of other methods. Each integer value can be changed in various ways.
[0403] Ascending order flag (ascending_order_flag): Indicates whether the order according to the condition specified by the axis condition selection (axis_condition_selection) is ascending or descending, and indicates information about the sorting order. For example, 0 indicates ascending sorting, and 1 indicates descending sorting. Each integer value can be changed in various ways.
[0404] Axis ordering threshold (axis_ordering_threshold): This indicates information related to whether or not to perform conditional Moulton interleaving by applying a threshold based on a predetermined condition related to the Moulton code.
[0405] GSH Geometry Parameter Set ID (gsh_Geometry_parameter_set_id): Indicates the value of gps_Geom_parameter_set_id of the active GPS.
[0406] GSH Tile ID (gsh_Tile_id): Indicates the ID of the tile.
[0407] GSH Slice ID (gsh_slice_id): Indicates the ID of the slice.
[0408] Depending on the value of the GPS box present flag (gps_box_present_flag), the following parameters related to the box in the GSH are included in the geometry slice header:
[0409] GSH Box Log Scale (gsh_box_log2_scale): Scale value. Indicates the magnification of the origin of the slice bounding box. If not present, gsh_box_log2_scale is inferred to gps_gs_box_log2_scale.
[0410] GSH Box Origin X (gsh_box_origin_x): Gives the x value of the source bounding box in the coordinate system.
[0411] GSH Box Origin Y (gsh_box_origin_y): Gives the y value of the source bounding box in the coordinate system.
[0412] GSH Box Origin Z (gsh_box_origin_z): Indicates the z value of the source bounding box in the coordinate system.
[0413] GSH log node maximum size (gsh_log2_max_nodesize): This indicates the value of the variable MaxNodeSize used in the decryption process. The maximum node size (MaxNodeSize) may be equal to 2 (gbh_log2_max_nodesize).
[0414] Number of GSH points (gbh_points_number): indicates the number of coded points in the slice.
[0415] FIG. 25 illustrates a method for transmitting point cloud data according to an embodiment.
[0416] S25000, the point cloud data transmission method according to the embodiment includes a step of encoding point cloud data. The encoding operation according to the embodiment includes operations such as the transmitting device 10000 in Fig. 1, the point cloud video encoder 10002, the acquiring 20000 and encoding 20001 in Fig. 2, the position-to-geometry bitstream encoding and the attribute-to-attribute bitstream encoding in Fig. 4, encoding the position value of the point and / or the attribute value of the point in the transmitting device in Fig. 12, the XR device 1430 in Fig. 14, the Moulton code generation and the encoding of the point cloud data based on the Moulton code according to Figs. 15 to 19, and the generation of the bitstream in Figs. 20 to 24.
[0417] S25010, the point cloud data transmission method according to the embodiment further includes a step of transmitting a bit stream including the point cloud data. The transmission operation according to the embodiment includes the operation of the transmitter 10003 in Fig. 1, the transmission 20002 in Fig. 2, the transmission processing unit 12012 in Fig. 12, the XR device 1430 in Fig. 14, and the transmission of the bit stream in Fig. 20 to Fig. 24.
[0418] FIG. 26 illustrates a method for receiving point cloud data according to an embodiment.
[0419] S26000, a method for receiving point cloud data according to an embodiment includes receiving a bit stream including point cloud data. The receiving operation according to the embodiment includes operations such as receiving by the receiving device 10004 in Fig. 1 and the transmitting device 20002 in Fig. 2, receiving by the receiving unit 13000 and receiving processing unit 13001 in Fig. 13, receiving by the XR device 1430 in Fig. 14, and receiving the bit stream in Figs. 20 to 24.
[0420] S26010, the point cloud data receiving method according to the embodiment further includes a step of decoding the point cloud data. The decoding operation according to the embodiment includes operations such as the point cloud video decoder 10006 in Fig. 1, the decoder 20003 in Fig. 2, the decoding of position and / or attributes from the geometry bitstream and / or attribute bitstream in Fig. 10 and Fig. 11, the decoding of the geometry bitstream and attribute bitstream and rendering of the point cloud data in the receiving device in Fig. 13, the decoding of the XR device 1430 in Fig. 14, the Moulton code generation and the decoding of the point cloud data based on the Moulton code according to Fig. 15 to Fig. 19, and the parsing / decoding of the bitstream in Fig. 20 to Fig. 24.
[0421] The method / apparatus according to the embodiment provides an adaptive Moulton code generation method, and an operation related to criteria for changing the Moulton code order and thresholds therefor. In the operation of making the Moulton code generation different according to conditions, the conditions according to the embodiment include conditions such as ascending / descending order by axis / density. The conditions are applied differently according to the characteristics of the content, sequence / slice / tile, geometry, attributes, and geometry and attributes.
[0422] The method / apparatus according to the embodiment provides an effect of reducing the size of the bitstream and improving image quality when searching for distance-based / attribute-based neighboring nodes. Also, a Moulton code is generated according to the order and threshold value according to the same conditions in the encoding / decoding process by related signaling. Based on the Moulton code, an encoder / transmitter efficiently compresses point cloud data. Based on the Moulton code, a decoder / receiver efficiently restores and renders point cloud data.
[0423] The point cloud data transmission / reception method / apparatus and / or PCC encoder / decoder according to the embodiment solves the problem that even if the Euclidean distances between points of point cloud data are the same in space, there is a difference in the Moulton code.
[0424] In addition, by changing the order of xyz axes according to the axes, it is possible to perform encoding and decoding in units of content, tile, slice, geometry value, and attribute value. Furthermore, it is possible to provide whether or not to change the axis conversion according to a threshold value. Therefore, the embodiment can search the adaptive space in units of content, tile, slice, range, and attribute value, and provide a mapping condition of the adaptive Moulton code for searching for a nearby neighboring node.
[0425] The time and complexity of point cloud compression depending on the type of point cloud data and the PCC data encoding process, such as Moulton code generation processing, can be reduced. Also, a point cloud transmission / reception method / apparatus that improves compression performance can be provided.
[0426] Operation according to the embodiment may reduce the delay and increase the accuracy of neighbor node discovery, and may also reduce the burden on the size of the bitstream containing the point cloud data.
[0427] The method / apparatus according to the embodiment can change the bit interleaving order of the Moulton code to reflect the characteristics of various point cloud data.
[0428] In this specification, A / B can be interpreted as A and / or B.
[0429] The embodiments are described in terms of methods and / or apparatus, and method descriptions and apparatus descriptions may be applied in a complementary manner.
[0430] For convenience of explanation, the drawings are described separately, but it is also possible to design a new embodiment by combining the embodiments described in each drawing. In addition, it is also within the scope of the embodiment to design a computer readable recording medium in which a program for executing the previously described embodiment is recorded, according to the needs of a person skilled in the art. As described above, the apparatus and method according to the embodiment are not limited to the configuration and method of the described embodiment, and the embodiment can be configured by selectively combining all or a part of each embodiment so that it can be modified in various ways. Although the preferred embodiment has been shown and described, the embodiment is not limited to the specific embodiment described above, and various modifications can be made by a person having ordinary skill in the art to which the invention belongs without departing from the gist of the embodiment claimed in the claims, and such modifications should not be individually understood from the technical ideas and prospects of the embodiment.
[0431] Various components of the apparatus according to the embodiment may be implemented by hardware, software, firmware, or a combination thereof. Various components of the embodiment may be implemented by one chip, for example, one hardware circuit. In the embodiment, the components according to the embodiment may be implemented by individual chips. In the embodiment, any of the components of the apparatus according to the embodiment may be implemented by one or more processors capable of executing one or more programs, and the one or more programs may include instructions for performing or causing any one or more of the operations / methods according to the embodiment to be performed. Executable instructions for performing the method / operation of the apparatus according to the embodiment may be stored in a non-transitory CRM or other computer program product configured to be executed by one or more processors, or may be stored in a transitory CRM or other computer program product configured to be executed by one or more processors. In addition, the memory according to the embodiment is used as a concept including not only volatile memory (e.g., RAM, etc.) but also non-volatile memory, flash memory, PROM, etc. It may also be implemented in the form of a carrier wave, such as transmission over the Internet. In addition, the recording medium read by the processor may be distributed to computer systems connected by a network, and the code read by the processor may be stored and executed in a distributed manner.
[0432] In this specification, " / " and "," are interpreted as "and / or". For example, "A / B" is interpreted as "A and / or B", and "A, B" is interpreted as "A and / or B". Furthermore, "A / B / C" means "any of A, B and / or C". Also, "A, B, C" means "any of A, B and / or C". Furthermore, in this document, "or" is interpreted as "and / or". For example, "A or B" means 1) only "A", 2) only "B", or 3) "A and B". In other words, in this specification, "or" means "additionally or alternatively".
[0433] Terms such as first and second are used to describe various components of the embodiments. However, the various components according to the embodiments should not be limited in interpretation by the above terms. Such terms are merely used to distinguish one component from another. For example, a first user input signal can be referred to as a second user input signal. Similarly, a second user input signal can be referred to as a first user input signal. Use of such terms does not depart from the scope of various embodiments. Although the first user input signal and the second user input signal are both user input signals, they do not mean the same user input signal unless the context clearly indicates otherwise.
[0434] The terms used to describe the embodiments are used to describe specific embodiments and are not intended to limit the embodiments. As used in the description of the embodiments and the claims, the singular includes the plural unless the context clearly dictates otherwise. The term "and / or" is used to include all possible combinations between terms. "Comprises" describes the presence of a feature, number, step, element, and / or component, and does not mean that additional features, numbers, steps, elements, and / or components are not included. Conditional expressions such as "if" and "when" used to describe the embodiments are only intended to be interpreted as selective and limiting. It is intended that when a particular condition is met, a related action is performed in response to a particular condition, or a related definition is interpreted.
[0435] Moreover, the operations according to the embodiments described in this specification are performed by a transceiver device including a memory and / or a processor according to the embodiments. The memory stores a program for processing / controlling the operations according to the embodiments, and the processor controls various operations described in this specification. The processor is also referred to as a controller, etc. The operations of the embodiments are performed by firmware, software, and / or a combination thereof, and the firmware, software, and / or a combination thereof are stored in the processor or stored in the memory. [Mode for carrying out the invention]
[0436] As mentioned above, the relevant content will be described with respect to the best mode for carrying out the embodiment. [Industrial Applicability]
[0437] As described above, the embodiments may be applied in whole or in part to point cloud data transmitting and receiving devices and systems.
[0438] Those skilled in the art can make various changes and modifications to the embodiments within the scope of the embodiments.
[0439] The embodiments include modifications / variations that are within the scope of the claims and the equivalents thereof.
Claims
1. 1. A method for transmitting point cloud data, comprising: encoding the point cloud data; transmitting a bitstream including the point cloud data; encoding the point cloud data includes generating a Moulton code for the point cloud data; the Moulton code is generated by permuting an x-axis, a y-axis, and a z-axis for the point cloud data; A point cloud data transmission method, wherein the bit stream includes information for indicating a type for the axis order and information for indicating axis-related thresholds for geometry data.
2. the geometry data includes coordinate values for each axis; the Moulton code is generated based on binary bits of coordinate values for each axis; The point cloud data transmission method of claim 1 , wherein the binary bits of the Moulton code are aligned based on the length of each axis.
3. The step of generating a Moulton code comprises: The method of claim 1 , further comprising generating an order of the Moulton codes based on density of geometry data of the point cloud data.
4. the geometry data includes coordinate values for each axis; the Moulton code is generated based on binary bits of the coordinate values; 4. The method of claim 3, wherein the binary bits of the Moulton code are aligned based on a density measure of one or more points for each axis.
5. 1. An apparatus for transmitting point cloud data, comprising: an encoder configured to encode the point cloud data; a transmitter configured to transmit a bitstream including the point cloud data; The encoder generates a Moulton code for the point cloud data; the Moulton code is generated by permuting an x-axis, a y-axis, and a z-axis for the point cloud data; A point cloud data transmission device, wherein the bit stream includes information for indicating a type for the axis order and information for indicating axis-related thresholds for geometry data.
6. the geometry data includes coordinate values for each axis; the Moulton code is generated based on binary bits of coordinate values for each axis; The point cloud data transmission device of claim 5 , wherein the binary bits of the Moulton code are aligned based on the length of each axis.
7. The point cloud data transmission device of claim 5 , wherein the encoder generates the order of the Moulton codes based on density of geometry data of the point cloud data.
8. the geometry data includes coordinate values for each axis; the Moulton code is generated based on binary bits of the coordinate values; The point cloud data transmission device of claim 7, wherein the binary bits of the Moulton code are aligned based on a density measure of one or more points for each axis.
9. 1. A method for receiving point cloud data, comprising: receiving a bitstream including point cloud data; and decoding the point cloud data. Decoding the point cloud data includes generating a Moulton code for the point cloud data; the Moulton code is generated by permuting an x-axis, a y-axis, and a z-axis for the point cloud data; A method for receiving point cloud data, wherein the bit stream includes information for indicating a type for the axis order and information for indicating axis-related thresholds for geometry data.
10. 1. An apparatus for receiving point cloud data, comprising: a receiver configured to receive a bitstream including the point cloud data; a decoder configured to decode the point cloud data; the decoder generates a Moulton code for the point cloud data; the Moulton code is generated by permuting an x-axis, a y-axis, and a z-axis for the point cloud data; A point cloud data receiving device, wherein the bit stream includes information for indicating a type for the axis order and information for indicating axis-related thresholds for geometry data.
Citation Information
Patent Citations
Method and apparatus for generating acceleration structure
US20180130249A1
Point cloud compression using non-cubic projections and masks
US20190087978A1
Three-dimensional data coding method, three-dimensional data decoding method, three-dimensional data coding device, and three-dimensional data decoding device
WO2019198636A1