WO2021025251A1 - 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 - Google Patents

포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 Download PDF

Info

Publication number
WO2021025251A1
WO2021025251A1 PCT/KR2020/002953 KR2020002953W WO2021025251A1 WO 2021025251 A1 WO2021025251 A1 WO 2021025251A1 KR 2020002953 W KR2020002953 W KR 2020002953W WO 2021025251 A1 WO2021025251 A1 WO 2021025251A1
Authority
WO
WIPO (PCT)
Prior art keywords
point cloud
cloud data
octree
information
block
Prior art date
Application number
PCT/KR2020/002953
Other languages
English (en)
French (fr)
Inventor
허혜정
오세진
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to US17/281,482 priority Critical patent/US11803986B2/en
Publication of WO2021025251A1 publication Critical patent/WO2021025251A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/001Model-based coding, e.g. wire frame
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability

Definitions

  • the embodiments provide Point Cloud content to provide users with various services such as VR (Virtual Reality, Virtual Reality), AR (Augmented Reality, Augmented Reality), MR (Mixed Reality, Mixed Reality), and autonomous driving service. Provide a plan.
  • VR Virtual Reality, Virtual Reality
  • AR Algmented Reality, Augmented Reality
  • MR Magnetic Reality, Mixed Reality
  • autonomous driving service Provide a plan.
  • a point cloud is a set of points in 3D space. There is a problem in that it is difficult to generate point cloud data because the amount of points in the 3D space is large.
  • the technical problem according to the embodiments is to provide a point cloud data transmission apparatus, a transmission method, a point cloud data reception apparatus, and a reception method for efficiently transmitting and receiving a point cloud in order to solve the above-described problems.
  • a technical problem according to embodiments is to provide a point cloud data transmission apparatus, a transmission method, a point cloud data reception apparatus, and a reception method for solving latency and encoding/decoding complexity.
  • a method for transmitting point cloud data includes: encoding point cloud data, transmitting a bitstream including point cloud data; Includes.
  • a method of receiving point cloud data includes receiving a bitstream including point cloud data, decoding point cloud data, and rendering point cloud data.
  • a point cloud data transmission method, a transmission device, a point cloud data reception method, and a reception device may provide a point cloud service with high quality.
  • the point cloud data transmission method, the transmission device, the point cloud data reception method, and the reception device may achieve various video codec methods.
  • a point cloud data transmission method, a transmission device, a point cloud data reception method, and a reception device may provide general-purpose point cloud content such as an autonomous driving service.
  • FIG. 1 shows a system for providing point cloud content according to embodiments.
  • FIG. 2 shows a process for providing Point Cloud content according to embodiments.
  • FIG 3 shows an arrangement of Point Cloud capture equipment according to embodiments.
  • FIG. 4 shows a point cloud encoder according to embodiments.
  • FIG. 5 illustrates voxels in a 3D space according to embodiments.
  • FIG. 6 shows an example of an octree and an occupancy code according to embodiments.
  • FIG. 7 illustrates an example of a neighbor node pattern according to embodiments.
  • FIG. 8 shows an example of a point configuration of Point Cloud content for each LOD according to embodiments.
  • FIG 9 shows an example of a point configuration of Point Cloud content for each LOD according to embodiments.
  • FIG. 10 shows an example of a block diagram of a point cloud decoder according to embodiments.
  • FIG. 11 shows an example of a point cloud decoder according to embodiments.
  • FIG. 12 shows components for encoding Point Cloud video of a transmitter according to embodiments.
  • FIG. 13 shows components for decoding Point Cloud video of a receiver according to embodiments.
  • FIG. 14 shows an architecture for G-PCC-based point cloud data storage and streaming according to embodiments.
  • 15 shows point cloud data storage and transmission according to embodiments.
  • 16 shows a device for receiving point cloud data according to embodiments.
  • FIG. 17 shows an example of a structure capable of interworking with a method/device for transmitting and receiving point cloud data according to embodiments.
  • FIG. 19 illustrates an example of repositioning a virtual block according to embodiments.
  • 21 illustrates an example of geometry decoding and attribute decoding according to embodiments.
  • FIG. 22 shows an example of a configuration of an encoded point cloud according to embodiments.
  • FIG. 23 illustrates an example of overlapping processing method information when generating/reconfiguring an octree according to embodiments.
  • FIG. 24 illustrates an example of information on an overlap processing method when generating/reconfiguring an octree according to embodiments.
  • 25 illustrates an example of overlapping processing method information when generating/reconfiguring an octree according to embodiments.
  • 26 illustrates an example of overlap processing method information when an octree is generated/reconfigured according to embodiments.
  • FIG. 27 illustrates an example of information on an overlap processing method when generating/reconstructing an octree and information about a virtual bounding box for position adjustment according to an overlap processing method when generating/reconstructing an octree according to embodiments.
  • FIG. 28 illustrates an example of block ID information according to an overlap processing method when generating/reconfiguring an octree according to embodiments.
  • FIG. 29 shows an example of a point cloud data transmission method according to embodiments.
  • FIG. 30 shows an example of a method for receiving point cloud data according to embodiments.
  • FIG. 1 shows an example of a system for providing point cloud content according to embodiments.
  • the point cloud data transmission device 10000 includes a point cloud video acquisition unit (Point Cloud Video Acquisition, 10001), a point cloud video encoder (Point Cloud Video Encoder, 10002) and/or a transmitter (Transmitter ( or Communication module), 10003).
  • a point cloud video acquisition unit Point Cloud Video Acquisition, 10001
  • a point cloud video encoder Point Cloud Video Encoder, 10002
  • a transmitter Transmitter ( or Communication module), 10003
  • a point cloud video acquisition unit (Point Cloud Video Acquisition, 10001) according to embodiments acquires a Point Cloud video through a process of capturing, synthesizing, or generating a Point Cloud video.
  • a point cloud video encoder 10002 encodes point cloud video data.
  • a transmitter (or communication module) 10003 transmits the encoded point cloud video data in the form of a bitstream.
  • the point cloud data receiving device 10004 includes a receiver 10005, a point cloud video decoder 10006, and/or a renderer 10007.
  • a receiver 10005 receives a bitstream including point cloud video data. According to embodiments, the receiver 10005 may transmit feedback information to the point cloud data transmission device 10000.
  • a point cloud video decoder (Point Cloud Decoder, 10006) decodes the received point cloud video data.
  • the renderer 10007 renders the decoded point cloud video data. According to embodiments, the renderer 10007 may transmit the feedback information acquired at the receiving end to the point cloud video decoder 10006.
  • the point cloud video data may transmit feedback information to the receiver. According to embodiments, the feedback information received by the point cloud transmission device may be provided to the point cloud video encoder.
  • the embodiments are point cloud content to provide users with various services such as VR (Virtual Reality), AR (Augmented Reality, Augmented Reality), MR (Mixed Reality, Mixed Reality), and autonomous driving service. Can provide.
  • VR Virtual Reality
  • AR Augmented Reality
  • MR Mated Reality
  • Mixed Reality Mixed Reality
  • autonomous driving service Can provide.
  • a Point Cloud video may be obtained first.
  • the acquired Point Cloud video is transmitted through a series of processes, and the receiving side can process and render the received data back into the original Point Cloud video.
  • This allows Point Cloud videos to be presented to users.
  • the embodiments provide a method necessary to effectively perform this series of processes.
  • the overall process (point cloud data transmission method and/or point cloud data reception method) for providing the Point Cloud content service may include an acquisition process, an encoding process, a transmission process, a decoding process, a rendering process, and/or a feedback process. have.
  • a process of providing point cloud content may be referred to as a point cloud compression process.
  • the point cloud compression process may mean a geometry-based point cloud compression process.
  • Each element of the point cloud data transmission device and the point cloud data reception device may mean hardware, software, a processor, and/or a combination thereof.
  • Point cloud data transmission method comprises the steps of encoding point cloud data; Transmitting a bitstream including point cloud data; Includes.
  • a method for receiving point cloud data includes: receiving a bitstream including point cloud data; Decoding the point cloud data; Rendering the point cloud data; Includes.
  • FIG. 2 shows a process for providing Point Cloud content according to embodiments.
  • Point cloud data transmission method and point cloud data reception method include acquisition (20000), encoding (20001), transmission (20002), decoding (20003), rendering (20004) and/or feedback (20005). do.
  • the Acquisition 20000 is a step of acquiring point cloud data.
  • the point cloud data according to embodiments may be a Ply (Polygon File format or the Stanford Triangle format) file.
  • the Ply file according to the embodiments includes geometry and/or attribute. Geometry according to embodiments represents points in a three-dimensional space. Attributes according to embodiments represent properties such as color and reflection of each point in a 3D space according to geometry.
  • the encoding 20001 is a step of encoding point cloud data including geometry and/or attributes.
  • the encoded data according to the embodiments may be in the form of a bitstream.
  • Transmission 20002 is a step of transmitting encoded data.
  • the transmitting device receives feedback information from the receiving device according to the embodiments.
  • the received feedback information may be delivered to encoding according to embodiments.
  • the decoding 20003 is a step of receiving a bitstream and decoding point cloud data included in the bitstream.
  • the decoding step may obtain feedback information about a user according to embodiments.
  • the rendering 20004 is a step of rendering decoded data including geometry and/or attributes.
  • the feedback 20005 is a step of obtaining feedback information from a receiving end and/or a user, and providing the obtained feedback information to the point cloud data transmission method and the point cloud data reception method according to the embodiments.
  • Feedback information includes information about a user.
  • the feedback information includes head orientation information related to the user, viewport information related to the user, and the like.
  • Feedback information according to embodiments may be provided to a decoder and/or a transmitter of a receiver according to the embodiments. It is possible to encode/decode point cloud data corresponding to the user's head orientation and/or viewport. There is an effect of efficiently encoding/decoding user-related data without the need to encode/decode data for all viewpoints.
  • a process for providing a Point Cloud content service is as follows.
  • Point cloud compression processing may include a geometry-based point cloud compression process.
  • the Point Cloud Compression system may include a transmitting device and a receiving device according to embodiments.
  • the transmission device may be referred to as an encoder, a transmission device, a transmitter, and the like.
  • the receiving device may be referred to as a decoder, a receiving device, a receiver, or the like.
  • the transmitting device can encode the Point Cloud video and output the bitstream, and can deliver it to the receiving device through a digital storage medium or network in the form of a file or streaming (streaming segment).
  • the digital storage medium may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD.
  • the transmission device may schematically include a Point Cloud video acquisition unit, a Point Cloud video encoder, and a transmission unit.
  • the receiving device may schematically include a receiving unit, a Point Cloud video decoder, and a renderer.
  • the encoder may be referred to as a Point Cloud video/image/picture/frame encoding device, and the decoder may be referred to as a Point Cloud video/image/picture/frame decoding device.
  • the transmitter can be included in the Point Cloud video encoder.
  • the receiver can be included in the Point Cloud video decoder.
  • the renderer may include a display unit, and the renderer and/or display unit may be configured as a separate device or an external component.
  • the transmitting device and the receiving device may further include separate internal or external modules/units/components for a feedback process.
  • Each element included in the transmitting device and the receiving device according to the embodiments may be configured with hardware, software and/or a processor.
  • the point cloud video acquisition unit may perform a process of acquiring a point cloud video through a process of capturing, synthesizing, or generating a point cloud video.
  • 3D location (x, y, z)/property (color, reflectance, transparency, etc.) data for multiple points for example, PLY (Polygon File format or the Stanford Triangle format) file, is created by the acquisition process Can be.
  • PLY Polygon File format or the Stanford Triangle format
  • point cloud related metadata eg, metadata related to capture
  • the Point Cloud video encoder can encode the input Point Cloud video.
  • One video may include a plurality of frames, and one frame may correspond to a still image/picture.
  • a Point Cloud video may include a Point Cloud image/frame/picture, and the Point Cloud video may be used interchangeably with a Point Cloud image/frame/picture.
  • the Point Cloud video encoder may perform a Geometry-based Point Cloud Compression (G-PCC) procedure.
  • G-PCC Geometry-based Point Cloud Compression
  • the Point Cloud video encoder can perform a series of procedures such as prediction, transform, quantization, and entropy coding for compression and coding efficiency.
  • the encoded data (encoded video/video information) may be output in the form of a bitstream.
  • the Point Cloud video encoder can encode the Point Cloud video by dividing it into geometry and attributes as described later.
  • the output bitstream may include a geometry bitstream and/or an attribute bitstream.
  • the attribute may include (color) texture information.
  • the encapsulation unit may encapsulate the encoded video/video information or data output in the form of a bitstream in the form of a file or streaming.
  • the transmission unit may transmit the point cloud bitstream or a file/segment including the corresponding bitstream to the reception unit of the reception device through a digital storage medium or a network.
  • the digital storage media may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD.
  • the transmission unit may include an element for generating a media file through a predetermined file format, and may include an element for transmission through a broadcast/communication network.
  • the receiver may extract the bitstream and transmit it to a decoding device.
  • the Point Cloud video decoder may receive the bitstream and perform an operation corresponding to the operation of the Point Cloud video encoder to decode the video/video.
  • the Point Cloud video decoder can decode the Point Cloud video by dividing it into geometry and attributes, as described later.
  • the Point Cloud video decoder may restore (decode) geometry from the geometry bitstream included in the input bitstream, and restore attributes based on the attribute bitstream included in the input bitstream and the restored geometry. You can (decode) it.
  • a 3D Point Cloud video/image may be reconstructed based on the location information according to the reconstructed geometry and the (color) texture attribute according to the decoded attribute.
  • the attribute may include (color) texture information.
  • the renderer can render decoded Point Cloud video/video.
  • the rendered video/image may be displayed through the display unit.
  • the user can view all or part of the rendered result through a VR/AR display or a general display.
  • the feedback process may include a process of transferring various feedback information that can be obtained during the rendering/display process to a transmitter or a decoder at a receiver. Interactivity can be provided in Point Cloud video consumption through the feedback process.
  • head orientation information, viewport information indicating an area currently viewed by the user, and the like may be transmitted in the feedback process.
  • the user may interact with those implemented in the VR/AR/MR/autonomous driving environment.In this case, information related to the interaction may be transmitted to the transmitting side or the service provider side in the feedback process. have.
  • the feedback process may not be performed.
  • Embodiments relate to Point Cloud video compression as described above.
  • the method described in the embodiments is based on a point cloud compression or point cloud coding (PCC) standard (ex.G-PCC or V-PCC standard) of MPEG (Moving Picture Experts Group) or a next-generation video/image coding standard. Can be applied.
  • PCC point cloud compression or point cloud coding
  • MPEG Motion Picture Experts Group
  • next-generation video/image coding standard can be applied.
  • FIG 3 shows the arrangement of Point Cloud capture equipment according to embodiments.
  • Point cloud data may be obtained by a camera or the like.
  • the capture method according to embodiments may include, for example, in-word-facing and/or out-of-facing.
  • one or more cameras may photograph an object of point cloud data from the outside to the inside of the object.
  • one or more cameras may photograph an object of point cloud data from the inside to the outside of the object.
  • Point cloud data or point cloud content may be video or still images of objects/environments expressed in various types of 3D space.
  • Point Cloud refers to the process of acquiring a Point Cloud video through the process of capturing, synthesizing or creating a Point Cloud video.
  • 3D location (x, y, z)/property (color, reflectance, transparency, etc.) data for multiple points for example, PLY (Polygon File format or the Stanford Triangle format) file, is created by the acquisition process Can be.
  • PLY Polygon File format or the Stanford Triangle format
  • one or more files may be obtained.
  • metadata related to the capture may be generated.
  • It can be composed of a combination of camera equipment (a combination of an infrared pattern projector and an infrared camera) that can acquire depth for capturing Point Cloud content and RGB cameras that can extract color information corresponding to the depth information.
  • depth information can be extracted through LiDAR, which uses a radar system that measures the position coordinates of the reflector by shooting a laser pulse and measuring the return time.
  • a shape of a geometry composed of points in a three-dimensional space may be extracted from depth information, and an attribute representing the color/reflection of each point may be extracted from RGB information.
  • Point Cloud content may be composed of information about the location (x, y, z) and color (YCbCr or RGB) or reflectance (r) of the points.
  • Point Cloud content may include an outward-facing method for capturing an external environment and an inward-facing method for capturing a central object.
  • objects e.g., key objects such as characters, players, objects, actors, etc.
  • the composition of the capture camera uses the in-word-facing method. Can be used.
  • the configuration of the capture camera may use the outward-facing method. Since Point Cloud content can be captured through multiple cameras, it may be necessary to calibrate the camera before capturing the content in order to set up a global coordinate system between the cameras.
  • Point cloud content may be a video or still image of an object/environment displayed on various types of 3D space.
  • an arbitrary Point Cloud video can be synthesized based on the captured Point Cloud video.
  • Point Cloud video for a virtual space created by a computer
  • capture through an actual camera may not be performed.
  • the capture process may be replaced with a process in which related data is simply generated.
  • Captured Point Cloud video may require post-processing to improve the quality of the content.
  • the maximum/minimum depth value can be adjusted within the range provided by the camera equipment, but point data of the unwanted area may be included even after that, removing the unwanted area (eg, background) or recognizing the connected space. Post-treatment of filling the spatial hole can be performed.
  • the Point Cloud extracted from the cameras sharing the spatial coordinate system can be integrated into a single content through the conversion process to the global coordinate system for each point based on the position coordinates of each camera acquired through the calibration process.
  • a wide range of Point Cloud contents can be created, or Point Cloud contents with a high density of points can be obtained.
  • FIG. 4 shows a point cloud encoder according to embodiments.
  • the point cloud encoder includes a coordinate system transform unit (Transformation Coordinates, 40000), a quantization (Quantize and Remove Points (Voxelize), 40001), an octree analysis unit (Analyze Octree, 40002), and a surface aproximate analysis unit (Analyze Surface Approximation, 40003), Arithmetic Encode (40004), Reconstruct Geometry (40005), Transform Colors (40006), Transfer Attributes (40007), RATH Transformation A unit 40008, an LOD generation unit (Generated LOD) 40009, a Lifting transform unit (40010), a coefficient quantization unit (Quantize Coefficients, 40011), and/or an Arithmetic Encode (40012).
  • a coordinate system transform unit Transformation Coordinates, 40000
  • a quantization Quantization and Remove Points (Voxelize)
  • An octree analysis unit Analyze Octree, 40002
  • a coordinate system transformation unit receives positions and converts them into a coordinate system. For example, positions may be converted into three-dimensional (XYZ) position information. Position information in a 3D space according to embodiments may be referred to as geometry information.
  • Quantize and Remove Points 40001 according to embodiments quantizes geometry information. For example, it is possible to quantize by adjusting the position values of the points based on the minimum position values of the points.
  • the quantization 40001 according to embodiments may voxelize points. Voxelization refers to the minimum unit expressing position information in 3D space.
  • the octree analysis unit 40002 represents a voxel in an octree structure.
  • the octree according to the embodiments represents points based on a tree structure in which voxel space is occupied.
  • An Analyze Surfacce Approximation 40003 may analyze and approximate an octree.
  • the octree analysis and approximation according to the embodiments is a process of analyzing to voxelize a region including a plurality of points in order to efficiently provide octree and voxelization.
  • the Arithmetic Encode 40004 encodes an octree and/or an approximated octree.
  • the encoding method includes an Arithmetic encoding method.
  • a geometry bitstream is generated.
  • the Reconstruct Geometry 40005 reconstructs an octree and/or an approximated octree.
  • the geometry reconstruction unit 40005 reconstructs an octree/voxel based on a result of analyzing the distribution of points.
  • the color converting unit 40006 converts color values (or textures) included in attributes. For example, the format of color information may be converted.
  • the color conversion unit (number) according to the embodiments may be optional according to a color value.
  • the color transformation 40006 according to the embodiments is one of the point cloud attribute coding schemes.
  • the attribute conversion unit (Transfer Attributes 40007) converts attribute information based on positions and/or reconstructed geometry information. For example, the attribute conversion unit (number) may convert an attribute value of a point at that position based on the position value of a point included in the voxel.
  • the attribute transformation 40007 according to the embodiments is one of the point cloud attribute coding schemes.
  • the RATH converter 40008 is an encoding method that measures attribute information based on reconstructed geometry information. For example, the RATH conversion unit 40008 may predict attribute information of a node at a higher level of the octree based on attribute information associated with a node at a lower level of the octree.
  • the RATH transform 40008 according to embodiments is one of point cloud attribute coding schemes.
  • the LOD generation unit (Generated LOD 40009) according to the embodiments generates a level of detail (LOD) for points.
  • LOD level of detail
  • the LOD according to the embodiments is a unit of a group that distinguishes points. Points can be classified by LOD.
  • the attribute coding scheme using the LOD scheme according to the embodiments may be referred to as prediction transformation (Prediction Transformation).
  • the lifting conversion unit 40010 refers to a method of organizing points for each LOD and converting an attribute value of a point cloud based on a weight.
  • the Lifting transform 40010 according to embodiments is one of point cloud attribute coding schemes.
  • the point cloud attribute coding method may use RAHT transformation, LOD generation and lifting transformation, or a method according to a RAHT/LOD/Lifting combination.
  • the coefficient quantization unit 40011 quantizes attribute-coded point cloud data based on coefficients.
  • An Arithmetic Encode 40012 encodes the quantized point cloud data based on an Arithmetic coding scheme.
  • Each component of the point cloud encoder according to the embodiments may be performed by hardware, software, a processor, and/or a combination thereof. Detailed operations of each component of the point cloud encoder according to the embodiments will be described below.
  • the acquired Point Cloud data is encoded by reconstructing the location/color information of the points in order to adjust the quality of the Point Cloud content (for example, lossless-lossless, loss-lossy, near-lossless) according to network conditions or applications. Can go through.
  • the quality of the Point Cloud content for example, lossless-lossless, loss-lossy, near-lossless
  • a process of reconstructing/encoding location information of points may be referred to as geometry coding, and a process of reconstructing/encoding information on attributes (eg, color) associated with each point may be referred to as attribute coding.
  • attributes eg, color
  • Each point of the acquired point cloud can be transmitted without loss, but in that case, real-time streaming is not possible because the size of the content data is large.
  • there is Point Cloud content that is 60 Gbps at 30 fps.
  • the content data size may vary depending on the capture device. In order to provide a Point Cloud content service, it is necessary to reconstruct the content according to the maximum target bitrate.
  • the first step in reconstructing the location information of each point of the entire acquired point cloud is the quantization process for the location information. Find the minimum x, y, z position values of all points, subtract them from the position values of each point, multiply by the set quantization scale value, and lower or increase the nearest integer value.
  • octree-based voxelization is performed based on the location information of the points.
  • the 3D space is a unit based on each axis (x, y, z axis).
  • Voxel is a hybrid word that combines volume and pixel.
  • a voxel can estimate spatial coordinates in a positional relationship with a voxel group, and, like a pixel, can have color or reflectance information.
  • FIG. 5 illustrates voxels in a 3D space according to embodiments.
  • One voxel can have multiple point-related information. Alternatively, one voxel can be integrated into one point information to have it. This adjustment can be performed selectively.
  • the position value of the center point of the voxel can be set based on the position values of points existing in the voxel, and an attribute transform process related thereto needs to be performed. There is. For example, the attribute conversion process may be adjusted to the average value of the points included in the voxel or the center position value of the voxel and the color or reflectance of the neighboring points within a specific radius (see Section 2.2.2).
  • FIG. 6 shows an example of an octree and an occupancy code according to embodiments.
  • Point Cloud contents use octrees.
  • the total volume of the octree should be set to (0,0,0) ⁇ (2d, 2d,2d).
  • 2d is set to a value constituting the smallest bounding box surrounding the entire point of the Point Cloud video
  • d is the depth of the octree.
  • the formula to find the d value can be as follows. (x_n ⁇ int,y_n ⁇ int,z_n ⁇ int) is the position value of the points to which the quantization process is applied.
  • the octree can be expressed as an occupancy code. If point is included in each node, it is expressed as 1, and if there is no point, it is expressed as 0. Each node has an 8-bit bitmap indicating occupancy for 8 child nodes. Entropy coding of occupancy code through arithmetic coder. The generated occupancy code may be directly encoded or may be encoded through an intra/inter coding process to increase compression efficiency. In the receiver, the occupancy code can be used to reconstruct the octree.
  • the voxelization and octree are used to store the location information of the points of the Point Cloud video
  • a specific area that is, a specific node of the octree (but the node is not a leaf node)
  • the location of the points directly for that area only. Either by transmitting the s, or by using a surface model, the position of the point in the node area can be reconstructed based on voxels.
  • direct mode which directly transmits the location of each point to a specific node
  • the option to use direct mode must be enabled, the node must not be a leaf node, and points below the threshold must exist within a specific node, and the total number of points that can directly transmit the point location. Do not exceed the limit of. If all of these cases are satisfied, the position value of the point can be directly entropy-coded with an arithmetic coder for the corresponding node and transmitted.
  • a trisoup mode that sets a specific level of the octree (if the level is less than the depth d of the octree), and from that level, uses a surface model to reconstruct the position of points in the node area based on voxels. ) Can also be selectively applied.
  • the level to which the try-soup method is applied is designated. For example, if the specified level is equal to the depth of the octree, the try-soup mode is not applied. The specified level must be smaller than the depth value of the octree to apply the try-soup method.
  • the three-dimensional cube area of nodes of a designated level is called a block.
  • One block may include one or more voxels.
  • the block or voxel may correspond to a brick.
  • Each block may have 12 edges, and it is checked whether each edge is adjacent to an occupied voxel having a point.
  • Each edge can be adjacent to multiple occupied voxels.
  • a specific position of an edge adjacent to the voxel is called a vertex, and when several occupied voxels are adjacent to one edge, the average position of the corresponding positions may be determined as a vertex.
  • a geometry restoration process may be performed through a process of triangle reconstruction, up-sampling, and voxelization.
  • the direction vector of the edge, and the position value of the vertex In order to reconstruct a triangle based on the starting point of the edge, the direction vector of the edge, and the position value of the vertex, first, calculate the centroid value of each vertex, and 2 add the square to the values subtracting the center value from each vertex value. And find the sum of all the values.
  • the minimum value of the added value is obtained, and the projection process is performed along the axis with the minimum value.
  • each vertex is projected on the x-axis based on the center of the block, and is projected on the (y, z) plane.
  • the projected value on the (y, z) plane is (ai, bi)
  • is calculated through atan2(bi, ai)
  • vertices are aligned based on the ⁇ value.
  • the method of composing triangles according to the number of vertices is to create triangles by combining them according to the sorted order as shown in the following table. For example, if there are 4 vertices, you can construct two triangles. The first triangle consists of the first, second, and third vertices from the aligned vertices, and the second triangle consists of the third, fourth and first vertices.
  • the upsampling process is performed to voxelize by adding points in the middle along the edge of the triangle. Additional points are created based on the upsampling factor and the width of the block. These points are called refined vertices. Refined vertices are voxelized, and attributes (eg, colors) are coded based on the voxelized position value when attribute coding.
  • the try-soup process is an optional process.
  • FIG. 7 illustrates an example of a neighbor node pattern according to embodiments.
  • the location/color data of the point of the point cloud content is reconstructed, and entropy coding can be performed using an arithmetic coder. Because the data size of Point Cloud video is large, compression efficiency can be an important factor. Therefore, a method of increasing compression efficiency can be applied by applying context adaptive arithmetic coding.
  • Geometry coding encodes the occupancy code of each node in the octree.
  • the occupancy code can be entropy coded using the arithmetic code directly, but it may be adaptively encoded based on occupancy of neighboring nodes (intra-based) or based on the occupancy code of the previous frame (inter-based).
  • the frame may refer to a set of point cloud data generated at the same time.
  • coding can be adaptively performed through occupancy of neighboring nodes.
  • a value of a neighbor pattern is obtained based on occupancy of the neighboring node.
  • the order of bits for each location of neighboring nodes is shown in the figure. For example, if neighboring nodes corresponding to 1, 2, 4, and 8 are occupied, 15, which is the sum of 1, 2, 4, and 8, becomes the neighboring node pattern value of the corresponding node.
  • it refers to six neighboring nodes that share a plane around the node.
  • it is possible to reduce complexity by changing the neighboring node pattern value through a table that internally changes 64 to 10 or 6. Compression efficiency can be improved by performing encoding using the occupied code of the current node and the neighboring node pattern value.
  • the intra/inter coding process is an optional process and may be omitted.
  • Voxelization is applied, and in the direct mode, the point cloud data is rearranged to the front of the point cloud data, and in the tri-soup mode, a triangle reconstruction, upsampling, and voxelization are added to perform the encoding process for the associated attribute information based on the reconstructed geometry. Can be done. Since attribute information is dependent on geometry, a process of coding attribute information based on the reconstructed geometry may be necessary.
  • Point Cloud attribute data may be composed of color (YCbCr or RGB) or reflectance (r) information. In both cases, the same method of coding can be applied. However, the difference is that the color has 3 elements and the reflectance has 1 element, and each element can be treated independently.
  • Attribute coding methods include prediction transform, lifting transform, and region adaptive hierarchical transform (RAHT), and can be selectively applied.
  • RAHT region adaptive hierarchical transform
  • Color conversion refers to such a color format conversion process.
  • the position values for points existing in the voxel are set as the center point of the voxel in order to integrate and indicate one point information in one voxel, and the associated attribute value accordingly It may be necessary to convert.
  • the attribute conversion process is performed even when performed in the try-soup mode.
  • the attribute conversion process may be calculated as an average value of attribute values such as the central position value of the voxel and the color or reflectance of neighboring points within a specific radius, or an average value applied with a weight according to the distance from the central position.
  • each voxel has a position and a calculated attribute value.
  • a K-D tree or Molton code When searching for neighboring points existing within a specific location/radius, a K-D tree or Molton code can be used.
  • the K-D tree is a binary search tree and supports a data structure that can manage points based on location so that Nearest Neighbor Search (NNS) is possible.
  • the Molton code can be generated by mixing bits of 3D location information (x, y, z) for all points. For example, if the value of (x, y, z) is (5, 9, 1), it becomes (0101, 1001, 0001) when expressed as a bit, and this value is matched to the bit index in the order of z, y, x. When mixed, it becomes 010001000111, which is 1095. 1095 is the Molton code value of (5, 9, 1). Points are sorted based on the Morton code, and shortest neighbor search (NNS) is possible through a depth-first traversal process.
  • the shortest neighbor search is sometimes required in another transformation process for attribute coding, and for this, a K-D tree or a Molton code may be used.
  • FIG. 8 shows an example of a point configuration of Point Cloud content for each LOD according to embodiments.
  • Point clouds according to embodiments may be classified into groups according to a level of detail (LOD). As shown in the figure, the degree of detail increases from left to right. In other words, the closer the distance between the points to the left is, the sparse it is, and the closer to the right, the closer the distances between the points.
  • LOD level of detail
  • Predictive transformation is a method to which the Level Of Detail (LOD) technique is applied.
  • LOD Level Of Detail
  • Each point is set by calculating the LOD value based on the set LOD distance value.
  • the composition of points according to the LOD value can be as follows.
  • FIG 9 shows an example of a point configuration of Point Cloud content for each LOD according to embodiments.
  • the original order indicates, for example, the order of points P0 to P9.
  • LOD-based order represents the order of LOD groups.
  • Each point in the point cloud can be separated by LOD, and the composition of points by LOD includes points belonging to the LOD lower than the corresponding LOD value. For example, if LOD level 2, it corresponds to all points belonging to LOD level 1 and 2.
  • a predictor For predictive transformation, a predictor is created for each point in the Point Cloud. Therefore, if there are N points, N predictors can be generated.
  • the property (color or reflectance) values of neighboring points set in the predictor of each point are multiplied by a weight value calculated based on the distance of each neighboring point.
  • the color or reflectance values multiplied by the weights of neighboring points are averaged and set as the predicted attribute value of the corresponding point.
  • a quantization process is performed on the residual attribute value obtained by subtracting the predicted attribute value from the color or reflectance value of each point.
  • the quantization process for properties is as follows.
  • entropy coding is performed using an arithmetic coder directly for the color/reflectance value of the current point, and if there are neighboring points, the property value predicted through the neighboring points from the color or reflectance value of the point Entropy coding is performed on the residual attribute value minus the quantization process using an arithmetic coder.
  • the predictive transformation and lifting transformation process reconstruct points into a set of detail levels through a level of detail (LOD) generation process.
  • LOD level of detail
  • Lifting transformation generates a predictor for each point, sets the calculated LOD in the predictor, registers the neighboring points, and sets weights according to the distances to the neighboring points.
  • the difference from prediction transformation is a method of accumulating and applying weights to attribute values. The method is as follows.
  • QW Quadrature Wieght
  • the weight calculated by additionally multiplying the calculated weight for all predictors by the weight stored in the QW corresponding to the predictor index is cumulatively added to the updateweight by the index of the neighboring node, and for update, the value multiplied by the attribute value of the index of the neighboring node. Is cumulatively summed.
  • the attribute value of update is divided by the weight value of the updateweight of the predictor index, and then added to the existing attribute value. This process is a lift update process.
  • the attribute value updated through the lift update process is additionally multiplied by the weight updated through the lift prediction process (stored in QW), and the quantized value is quantized using an arithmetic coder. Entropy coding.
  • RAHT transformation is a method of predicting attribute information of nodes at a higher level using attribute information associated with a node at a lower level of an octree, and is an intra coding method for attribute information through octree backward scan.
  • the voxel is scanned from the voxel to the entire area, and in each step, the voxel is combined into a larger block and performed up to the root node. Since the merging process is performed only for occupied nodes, in the case of an empty node that is not occupied, merging is performed with the node of the higher level immediately.
  • the average attribute value of voxels at level l is denoted as g lx, y, z .
  • g l-1 x, y, z are low-pass values and are used to perform the merge process at the next higher level.
  • h l-1 x, y, z are high-pass coefficients, and high-pass coefficients in each step are quantized and coded through an arithmetic coder.
  • Root node is the last
  • the gDC value is also quantized like the high-pass coefficient, and entropy coding is performed using an arithmetic coder at the end.
  • the transmission process may be a process of processing and transmitting the encoded geometry and attribute data and metadata of the Point Cloud content that has undergone an encoding process.
  • processing according to any transmission protocol may be performed.
  • Geometry and attribute data of the generated point cloud content, and related metadata bitstreams may be created as one or more track data, or may be encapsulated into segments.
  • Data processed for transmission may be delivered through a broadcasting network and/or a broadband. These data may be delivered to the receiving side in an on-demand manner. The receiving side can receive the data through various paths.
  • the encoded geometry and attribute data and metadata of the Point Cloud content that has gone through the encoding process may be stored in a digital storage medium in the form of a media file and transmitted to the receiving side.
  • FIG. 10 shows an example of a block diagram of a point cloud decoder according to embodiments.
  • the point cloud decoder receives a bitstream including geometry and/or attributes for point cloud data.
  • the geometry decoder decodes the geometry
  • the attribute decoder decodes the attribute.
  • the attribute decoder decodes the attribute based on the decoded geometry.
  • the decoder may generate a point cloud based on the decoded geometry and/or decoded attributes.
  • the decoding process may include a process of reconstructing (decoding) a Point Cloud video/video by receiving a bitstream and performing an operation corresponding to the encoding operation.
  • FIG. 11 shows an example of a point cloud decoder according to embodiments.
  • the point cloud decoder according to the embodiments may perform the reverse process of the point cloud encoder according to the embodiments.
  • Point cloud decoders include an arithmetic decoder (11000), an octree synthesis unit (synthesize octree, 11001), a surface opoxidation synthesis unit (synthesize surface approximation, 11002), and a geometry reconstruction unit (reconstruct geometry, 11003), inverse transform coordinates (11004), arithmetic decode (11005), inverse quantize (11006), RAHT (11007), generate LOD (generate LOD, 11008) , Inverse lifting unit (11009), and / or color inverse transform unit (inverse transform colors, 11010).
  • the arithmetic decoder 11000 decodes the geometry included in the received bitstream based on an arithmetic method.
  • the octree synthesizer 11001 may generate an octree from geometry.
  • the surface opoxidation synthesis unit 11002 may synthesize a surface based on the decoded geometry and/or octree.
  • the geometry reconstructing unit 11003 may regenerate a geometry based on a surface and/or decoded geometry.
  • the inverse transform coordinates 11004 may obtain positions (positions) by inverse transforming a coordinate system based on geometry.
  • An arithmetic decoder 11005 decodes an attribute included in a received bitstream based on an arithmetic method.
  • the inverse quantize 11006 performs inverse quantization on the decoded attribute.
  • the RAHT 11007 according to the embodiments, the generate LOD 11008 according to the embodiments, and/or the inverse lifting 11009 according to the embodiments correspond to the encoder according to the embodiments.
  • the reverse process of the operation can be performed.
  • the inverse transform colors 11010 may obtain an attribute (for example, a color value) by inversely transforming colors.
  • the decoding process may include a geometry decoding process and an attribute decoding process.
  • the decoder may reconstruct (decode) geometry from the geometry bitstream included in the input bitstream, and reconstruct (decode) attributes based on the attribute bitstream included in the input bitstream and the restored geometry.
  • a 3D Point Cloud video/image may be reconstructed based on the location information according to the reconstructed geometry and the (color) texture attribute according to the decoded attribute.
  • the decoder acquires information about the geometry by decoding the geometry bitstream with an arithmetic coder, creates an occupancy code based on the information about the geometry, and reconstructs the geometry.
  • the direct mode is applied, the location information value of the point is directly imported and added, and when the tri-soup mode is applied, the geometry is restored through triangle reconstruction, up-sampling, and voxelization.
  • the restored geometry may include restored (decoded) point cloud picture/frame without (any) attributes.
  • the decoder obtains information on the attribute by decoding the received attribute bitstream with an arithmetic coder, and based on the information on the obtained attribute and the associated location information derived from the geometry coding process. You can create a restored (decoded) point cloud picture/frame with attributes.
  • an inverse quantization process is performed, an inverse transformation process for prediction/lifting/RAHT is selectively performed according to a method applied during encoding, and then, if necessary, color conversion may be performed to restore attributes.
  • the rendering process refers to the process of rendering and displaying Point Cloud content data in 3D space. It can be rendered according to a desired rendering method with the location and property information of the decoded points through the decoding process. Points of the Point Cloud content may be rendered as a vertex with a certain thickness, a cube with a specific minimum size centered on the vertex position, or a circle centered on the vertex position. The user can view all or part of the rendered result through a VR/AR display or a general display.
  • the feedback process may include a process of transferring various feedback information that can be obtained during the display process to a transmitting side or a receiving side decoding. Through the feedback process, interactivity can be provided in Point Cloud video consumption. Depending on the embodiment, head orientation information, viewport information indicating an area currently viewed by the user, and the like may be transmitted in the feedback process. Depending on the embodiment, the user may interact with those implemented in the VR/AR/MR/autonomous driving environment.In this case, information related to the interaction may be transmitted to the transmitting side or the service provider side in the feedback process. have. Depending on the embodiment, the feedback process may not be performed.
  • the head orientation information may mean information on the position, angle, and movement of the user's head. Based on this information, information on the area that the user is currently viewing in the Point Cloud video, that is, viewport information can be calculated.
  • the viewport information may be information on an area currently viewed by the user in the Point Cloud video. Through this, a gaze analysis is performed, which allows you to check how the user consumes the Point Cloud video, which area of the Point Cloud video and how much they gaze at. Gaze analysis may be performed at the receiving side and transmitted to the transmitting side through a feedback channel.
  • a device such as a VR/AR/MR display may extract a viewport area based on the position/direction of the user's head and a vertical or horizontal FOV supported by the device.
  • the above-described feedback information is not only transmitted to the transmitting side, but may be consumed by the receiving side. That is, decoding and rendering of the receiver may be performed using the above-described feedback information. For example, using head orientation information and/or viewport information, only a point cloud video for a region currently viewed by the user may be preferentially decoded and rendered.
  • the viewport or the viewport area may mean an area that the user is viewing in the Point Cloud video.
  • a viewpoint is a point that a user is viewing in a Point Cloud video, and may mean a center point of a viewport area. That is, the viewport is an area centered on the viewpoint, and the size, shape, etc. occupied by the area may be determined by a field of view (FOV).
  • FOV field of view
  • FIG. 12 shows components for encoding Point Cloud video of a transmitter according to embodiments.
  • Components for video encoding of point cloud data include a data input unit 12000, a quantization processing unit 12001, a voxelization processing unit 12002, an octree occupancy code generation unit 12003, and a front surface model processing unit 12004.
  • Intra/inter coding processing unit (12005), Arithmetic coder (12006), metadata processing unit (12007), color conversion processing unit (12008), attribute conversion processing unit (12009), prediction/lifting/RAHT conversion processing unit 12010, Arithmetic coder (12011) and/or a transmission processing unit 12012 may be included.
  • the data input unit 12000 receives or acquires point cloud data.
  • the data input unit 12000 may correspond to the point cloud acquisition unit 10001 of FIG. 1 according to embodiments.
  • the quantization processing unit 12001 quantizes a geometry of point cloud data, for example, position value information of points.
  • the voxelization processing unit 12002 voxelsizes position value information of quantized points.
  • the octree occupancy code generation unit 12003 may display position value information of voxelized points in an octree based on an octree accupancy code.
  • the front surface model processing unit 12004 may express and process an octree for position value information of points of a point cloud based on a surface model method.
  • the intra/inter coding processor 12005 may intra/inter code point cloud data.
  • the Arithmetic coder 12006 may encode point cloud data based on an Arithmetic coding method.
  • the metadata processing unit 12007 processes metadata about point cloud data, for example, a set value, and provides it to a necessary process such as a geometry encoding process and/or an attribute encoding process.
  • the color conversion processing unit 12008 may convert a color of the point cloud data based on an attribute of the point cloud data, for example, attribute value information of points and/or a reconstructed position value.
  • the attribute conversion processing unit 12009 may convert an attribute value of point cloud data.
  • the prediction/lifting/RAHT conversion processing unit 12010 may attribute-code the point cloud data based on a combination of a prediction method, a lifting method, and/or a RAHT method.
  • the Arithmetic coder 12011 may encode point cloud data based on an Arithmetic coding method.
  • the above processes may correspond to the point cloud encoder 10002 of FIG. 1 according to embodiments.
  • the transmission processing unit 12012 may transmit the encoded geometry and/or the encoded attribute.
  • a process for a position value of points and a process for an attribute value of points may perform each process by sharing data/information of each other.
  • FIG. 12 is a diagram illustrating a transmitter equipment for providing a Point Cloud content service according to embodiments.
  • Embodiments at the transmitting side may be related to the Point Cloud content transmission device.
  • the Point Cloud content transmission device includes a data input unit, a quantization processing unit, a voxelization processing unit, an occupancy code generation unit, a surface model processing unit, an intra/inter coding processing unit, an arithmetic coder, a metadata processing unit, and a reconstructed position value for the point position values.
  • the stream and attribute bitstream are transmitted to the receiving side through the transmission processing unit.
  • the function of each component is described in Chapter 2 Encoding Process and Chapter 3 Transmission Process.
  • FIG. 13 shows components for decoding Point Cloud video of a receiver according to embodiments.
  • Components for video decoding of point cloud data include a receiving unit 13000, a receiving processing unit 13001, an Arithmetic decoder 13002, an octree reconstruction processing unit 13003 based on an occupancy code, and a surface model processing unit (triangle reconstruction, Up-sampling, voxelization) (13004), inverse quantization processor (13005), metadata parser (13006), arithmetic decoder (13007), inverse quantization processor (13008), prediction/lifting/RAHT inverse transform processor (13009), color An inverse transform processing unit 13010 and/or a renderer 13011 may be included.
  • Each component of decoding according to the embodiments may perform a reverse process of the component of encoding according to the embodiments.
  • the receiving unit 13000 receives point cloud data.
  • the receiver 13000 may correspond to the receiver 10007 of FIG. 1 according to embodiments.
  • the reception processing unit 13001 may obtain a geometry bitstream and/or an attribute bitstream included in the received point cloud data.
  • the Arithmetic decoder 13002 may decode a geometry bitstream based on an Arithmetic method.
  • the octree reconstruction processing unit 13003 based on the Occupancy code may reconstruct the decoded geometry into an octree based on the Occupancy code.
  • the surface model processing unit 13004 performs triangular reconstruction, up-sampling, voxelization, and/or a combination thereof for point cloud data based on a surface model method.
  • the following treatment can be performed.
  • the inverse quantization processing unit 13005 may inverse quantize point cloud data.
  • the metadata parser 13006 may parse metadata included in the received point cloud data, for example, a setting value.
  • the metadata parser 13006 may deliver metadata to each process of a geometry decoding process and/or an attribute decoding process. Each process according to embodiments may be performed based on necessary metadata.
  • the arithmetic decoder 13007 may decode the attribute bitstream of point cloud data based on an arithmetic method based on the reconstructed position value.
  • the inverse quantization processing unit 13008 may inverse quantize point cloud data.
  • the prediction/lifting/RAHT inverse transform processing unit 13009 may process point cloud data based on a prediction/lifting/RAHT method and/or a method according to a combination thereof.
  • the color inverse transform processing unit 13010 may inversely transform a color value of point cloud data.
  • the above-described processes may correspond to the point cloud decoder 10006 of FIG. 1 according to embodiments.
  • the renderer 13011 may render point cloud data.
  • the drawing is a diagram illustrating receiver equipment for providing Point Cloud content services according to embodiments.
  • Embodiments at the receiving side may be related to the Point Cloud content receiving device.
  • the Point Cloud content receiving device includes a receiving unit, a receiving processing unit, a metadata parser, an arithmetic decoder for the geometry bitstream of a point, an occupancy code-based octree reconstruction processing unit, a surface model processing unit, an inverse quantization processing unit, and a point location based on the reconstructed position value.
  • Point Cloud data that undergoes a series of processes of acquisition/encoding/transmission/decoding/rendering may be referred to as point cloud content data or point cloud video data.
  • Point Cloud Content Data may also be used as a concept including metadata or signaling information related to these Point Cloud data.
  • FIG. 14 shows an architecture for G-PCC-based point cloud data storage and streaming according to embodiments.
  • the embodiments provide a method for storing and streaming Point Cloud data that supports various services such as VR (Virtual Reality, Virtual Reality), AR (Augmented Reality, Augmented Reality), MR (Mixed Reality, Mixed Reality), and autonomous driving. to provide.
  • VR Virtual Reality, Virtual Reality
  • AR Augmented Reality
  • MR Mated Reality, Mixed Reality
  • autonomous driving to provide.
  • G-PCC Geometry-based Point Cloud Compression
  • Embodiments propose a method of effectively providing point cloud media/contents/data.
  • Point cloud In order to effectively provide media/contents/data, first, a point cloud can be acquired.
  • point cloud data may be acquired through the process of capturing, synthesizing, or creating a point cloud through one or more cameras.
  • point cloud data including the 3D position (x, y, z position values, etc.) of each point (hereinafter referred to as geometry) and the attributes of each point (color, reflectance, transparency, etc.) It can be obtained, and can be created as a PLY (Polygon File format or the Stanford Triangle format) file including the same.
  • PLY Polygon File format or the Stanford Triangle format
  • point cloud related metadata eg, metadata related to capture, etc.
  • the Point Cloud encoder performs a Geometry-based Point Cloud Compression (G-PCC) procedure, which performs a series of procedures such as prediction, transformation, quantization, and entropy coding, and the encoded data (encoded video/video information) is a bitstream. It can be output in (bitstream) format. This can be encoded by dividing into geometry and attributes as described later, and point cloud related metadata can be included in the bit stream. In this case, the output bit stream may include a geometry bit stream and/or an attribute bit stream.
  • G-PCC Geometry-based Point Cloud Compression
  • Encapsulation may encapsulate encoded point cloud data and/or point cloud related metadata in the form of a file or a segment for streaming.
  • the metadata related to the point cloud may be transmitted from a metadata processing unit.
  • the metadata processing unit may be included in the point cloud video encoder, or may be configured as a separate component/module.
  • the encapsulation processing unit may encapsulate the data in a file format such as ISOBMFF, or may process the data in the form of other DASH segments.
  • the encapsulation processor may include point cloud related metadata on a file format according to an embodiment. Point cloud metadata may be included in boxes of various levels in the ISOBMFF file format, for example, or may be included as data in separate tracks within the file.
  • the encapsulation processing unit may encapsulate the point cloud related metadata itself as a file.
  • the transmission processing unit may apply processing for transmission to the encapsulated point cloud data according to the file format.
  • the transmission processing unit may be included in the transmission unit or may be configured as a separate component/module.
  • the transmission processing unit can process point cloud data according to any transmission protocol.
  • the processing for transmission may include processing for transmission through a broadcasting network and processing for transmission through a broadband.
  • the transmission processing unit may receive not only the point cloud data, but also the point cloud related metadata from the metadata processing unit, and may apply processing for transmission to this.
  • the transmission unit may transmit the point cloud bitstream or the file/segment including the corresponding bitstream to the reception unit of the receiving device through a digital storage medium or a network.
  • processing according to any transmission protocol can be performed.
  • Data processed for transmission may be delivered through a broadcasting network and/or a broadband. These data may be delivered to the receiving side in an on-demand manner.
  • Digital storage media may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD.
  • the transmission unit may include an element for generating a media file through a predetermined file format, and may include an element for transmission through a broadcast/communication network.
  • the receiver may extract the bitstream and transmit it to a decoding device.
  • the receiver may receive point cloud data transmitted by the point cloud data transmission device according to the embodiments. Depending on the transmitted channel, the receiver may receive point cloud data through a broadcasting network or may receive point cloud data through a broadband. Alternatively, point cloud video data can be received through a digital storage medium. The receiver may include a process of decoding the received data and rendering it according to a user's viewport.
  • the reception processing unit may perform processing according to a transmission protocol on the received point cloud data.
  • the receiving processing unit may be included in the receiving unit, or may be configured as a separate component/module.
  • the reception processing unit may perform the reverse process of the transmission processing unit described above so as to correspond to the transmission processing performed by the transmission side.
  • the receiving processing unit may transmit the acquired point cloud data to the decapsulation processing unit, and the acquired point cloud related metadata may be transmitted to the metadata parser.
  • the decapsulation processing unit may decapsulate the point cloud data in the form of a file transmitted from the reception processing unit.
  • the decapsulation processor may decapsulate files according to ISOBMFF or the like to obtain a point cloud bitstream or point cloud related metadata (or a separate metadata bitstream).
  • the acquired point cloud bitstream may be transmitted to the point cloud decoder, and the acquired point cloud related metadata (or metadata bitstream) may be transmitted to the metadata processing unit.
  • the point cloud bitstream may include the metadata (metadata bitstream).
  • the metadata processing unit may be included in the point cloud video decoder, or may be configured as a separate component/module.
  • the point cloud related metadata acquired by the decapsulation processing unit may be in the form of a box or track in a file format. If necessary, the decapsulation processing unit may receive metadata required for decapsulation from the metadata processing unit.
  • the point cloud related metadata may be transmitted to the point cloud decoder and used for a point cloud decoding procedure, or may be transmitted to a renderer and used for a point cloud rendering procedure.
  • the Point Cloud decoder may decode data by receiving the bitstream and performing an operation corresponding to the operation of the Point Cloud encoder.
  • the Point Cloud decoder can decode the Point Cloud data by dividing it into geometry and attributes, as described later.
  • the Point Cloud decoder can restore (decode) geometry from the geometry bitstream included in the input bitstream, and restore the attribute value based on the attribute bitstream included in the input bitstream and the restored geometry. You can (decode) it.
  • a point cloud may be restored by restoring the position of each point and attribute information of each point in 3D based on the location information according to the restored geometry and the (color) texture attribute according to the decoded attribute value.
  • the sensing/tracking unit obtains orientation information and/or user viewport information from the user or the receiving side and transmits it to the receiving unit and/or the transmitting unit.
  • the orientation information provides information on the position, angle, and movement of the user's head. It can be displayed or information about the location, angle, and movement of the device that the user is viewing. Based on this information, information on an area that the user is currently viewing in the 3D space, that is, user viewport information may be calculated.
  • the user viewport information may be information on a region currently viewed by the user through a device or an HMD in a 3D space.
  • a device such as a display may extract a viewport area based on orientation information and a vertical or horizontal FOV supported by the device.
  • Orientation or viewport information can be extracted or calculated at the receiving end.
  • the orientation or viewport information analyzed by the receiving side may be transmitted to the transmitting side through a feedback channel.
  • the receiving unit uses the orientation information acquired by the sensing/tracking unit and/or the viewport information indicating the area currently being viewed by the user, and efficiently extracts only the media data of the specific area, that is, the area indicated by the orientation information and/or the viewport information. It can be extracted or decoded.
  • the transmitter can efficiently encode only media data of a specific area, that is, an area indicated by orientation information and/or viewport information, or generate and transmit a file, using orientation information and/or viewport information acquired by the sensing/track unit. .
  • the renderer can render decoded Point Cloud data in 3D space.
  • the rendered video/image may be displayed through the display unit.
  • the user can view all or part of the rendered result through a VR/AR display or a general display.
  • the feedback process may include a process of transferring various feedback information that can be obtained during the rendering/display process to a transmitter or a decoder at a receiver. Interactivity in Point Cloud data consumption can be provided through the feedback process.
  • head orientation information, viewport information indicating an area currently viewed by the user, and the like may be transmitted in the feedback process.
  • the user may interact with those implemented in the VR/AR/MR/autonomous driving environment.In this case, information related to the interaction may be transmitted to the transmitting side or the service provider side in the feedback process. have.
  • the feedback process may not be performed.
  • the above-described feedback information is not only transmitted to the transmitting side, but may be consumed by the receiving side. That is, a decapsulation process, decoding, rendering process, etc. of the receiver may be performed using the above-described feedback information. For example, point cloud data for a region currently viewed by a user may be preferentially decapsulated, decoded, and rendered using orientation information and/or viewport information.
  • 15 shows point cloud data storage and transmission according to embodiments.
  • the drawing shows a point cloud data transmission apparatus according to embodiments.
  • Point Cloud data storage and transmission device is a Point Cloud acquisition unit (Point Cloud Acquisition), a Point Cloud encoding unit (Point Cloud Encoding), a file / segment encapsulation unit (File / Segment Encapsulation), and / or It includes a delivery part (Delivery).
  • Each configuration of the transmission device may be a module/unit/component/hardware/software/processor.
  • Point cloud geometry, attributes, auxiliary data, mesh data, etc. can be configured as separate streams or can be stored in different tracks in the file. Furthermore, it can be included in a separate segment.
  • the Point Cloud Acquisition acquires a point cloud.
  • point cloud data may be acquired through a process of capturing, synthesizing, or creating a point cloud through one or more cameras.
  • point cloud data including the 3D position (x, y, z position values, etc.) of each point (hereinafter referred to as geometry) and the attributes of each point (color, reflectance, transparency, etc.) It can be obtained, and can be created as a PLY (Polygon File format or the Stanford Triangle format) file including the same.
  • PLY Polygon File format or the Stanford Triangle format
  • point cloud related metadata eg, metadata related to capture, etc.
  • Point Cloud Encoding the Point Cloud Encoder performs a Geometry-based Point Cloud Compression (G-PCC) procedure, which performs a series of procedures such as prediction, transformation, quantization, and entropy coding, and the encoded data (
  • the encoded video/video information) may be output in the form of a bitstream. This can be encoded by dividing into geometry and attributes as described later, and point cloud related metadata can be included in the bit stream. In this case, the output bit stream may include a geometry bit stream and/or an attribute bit stream.
  • the point cloud encoding unit may receive metadata. Metadata represents metadata related to content for Point Cloud. For example, there may be initial viewing orientation metadata. The metadata indicates whether the point cloud data is data representing the front or the data representing the back.
  • the point cloud encoding unit may receive orientation information and/or viewport information. Point Cloud Encoding Unit Encoding may be performed based on metadata, orientation information, and/or viewport information.
  • the Point Cloud Encoding unit performs geometry compression, attribute compression, Auxiliary data compression, and Mesh data compression.
  • Geometry compression encodes point cloud geometry information. Geometry represents a point in three-dimensional space.
  • Attribute compression encodes the attributes of a point cloud.
  • An attribute represents one or more attributes. For example, there may be N attributes including attributes such as color and reflectance.
  • Auxiliary data compression encodes Auxiliary data associated with a point cloud.
  • Auxiliary data represents metadata about Point Cloud.
  • Mesh data compression encodes mesh data.
  • Mesh represents connection information between point clouds. For example, it may be triangular data.
  • the Point Cloud encoding unit encodes the geometry, attributes, auxiliary data, and mesh data of the point, which are information necessary to render the point.
  • the Point Cloud encoding unit may encode geometry, attributes, auxiliary data, and mesh data and deliver them as one bitstream.
  • the point cloud encoding unit may encode geometry, attributes, auxiliary data, and mesh data and transmit them as a plurality of bitstreams. Each operation of the point cloud encoding unit may be performed in parallel.
  • the file/segment encapsulation unit performs media track encapsulation and/or metadata track encapsulation.
  • the file/segment encapsulation unit creates a track for delivering the encoded geometry, encoded attributes, encoded auxiliary data, and encoded mesh data in a file format.
  • the bitstream including the encoded geometry, the bitstream including the encoded attribute, the bitstream including the encoded auxiliary data, and the bitstream including the encoded mesh data may be included in one or more tracks. .
  • the file/segment encapsulation unit encapsulates geometry, attributes, auxiliary data, and mesh data into one or more media tracks.
  • the file/segment encapsulation unit includes metadata in a media track or encapsulates the metadata in a separate metadata track.
  • the file/segment encapsulation unit encapsulates the point cloud stream(s) in the form of files and/or segments. When the point cloud stream(s) is encapsulated and delivered in the form of segment(s), it is delivered in the DASH format.
  • the file/segment encapsulation unit delivers the file when encapsulating the point cloud stream(s) in the form of a file.
  • the delivery unit may deliver a point cloud bitstream or a file/segment including the corresponding bitstream to a receiving unit of a receiving device through a digital storage medium or a network. For transmission, processing according to any transmission protocol can be performed. Data processed for transmission may be delivered through a broadcasting network and/or a broadband. These data may be delivered to the receiving side in an on-demand manner. Digital storage media may include various storage media such as USB, SD, CD, DVD, Blu-ray, HDD, and SSD.
  • the delivery unit may include an element for generating a media file through a predetermined file format, and may include an element for transmission through a broadcast/communication network. The delivery unit receives orientation information and/or viewport information from the reception unit.
  • the delivery unit may transmit the obtained orientation information and/or viewport information (or information selected by the user) to the file/segment encapsulation unit and/or the point cloud encoding unit.
  • the point cloud encoding unit may encode all point cloud data or the point cloud data indicated by the orientation information and/or the viewport information.
  • the file/segment encapsulation unit may encapsulate all point cloud data or the point cloud data indicated by the orientation information and/or the viewport information.
  • the delivery unit may deliver all point cloud data or the point cloud data indicated by the orientation information and/or the viewport information.
  • 16 shows a device for receiving point cloud data according to embodiments.
  • the drawing shows a device for receiving point cloud data.
  • the Point Cloud data receiving device includes a delivery client, a sensing/tracking unit, a file/segment decapsulation unit, and a point cloud decoding unit. ) And/or a Point Cloud rendering unit (Point Cloud Rendering), and a display.
  • Each configuration of the receiving device may be a module/unit/component/hardware/software/processor.
  • the delivery client may receive point cloud data, a point cloud bitstream, or a file/segment including the corresponding bitstream, transmitted by the point cloud data transmission device according to the embodiments.
  • the receiver may receive point cloud data through a broadcasting network or may receive point cloud data through a broadband.
  • point cloud video data can be received through a digital storage medium.
  • the receiver may include a process of decoding the received data and rendering it according to a user's viewport.
  • the reception processing unit may perform processing according to a transmission protocol on the received point cloud data.
  • the receiving processing unit may be included in the receiving unit, or may be configured as a separate component/module.
  • the reception processing unit may perform the reverse process of the transmission processing unit described above so as to correspond to the transmission processing performed by the transmission side.
  • the receiving processing unit may transmit the acquired point cloud data to the decapsulation processing unit, and the acquired point cloud related metadata may be transmitted to the metadata parser.
  • the sensing/tracking unit acquires orientation information and/or viewport information.
  • the sensing/tracking unit may transmit the obtained orientation information and/or viewport information to a delivery client, a file/segment decapsulation unit, and a point cloud decoding unit.
  • the delivery client may receive all point cloud data or point cloud data indicated by the orientation information and/or the viewport information based on the orientation information and/or the viewport information.
  • the file/segment decapsulation unit may decapsulate all point cloud data or decapsulate point cloud data indicated by orientation information and/or viewport information based on orientation information and/or viewport information.
  • the point cloud decoding unit may decode all point cloud data or decode point cloud data indicated by the orientation information and/or the viewport information, based on the orientation information and/or the viewport information.
  • the file/segment decapsulation unit performs media track decapsulation and/or metadata track decapsulation.
  • the decapsulation processing unit (file/segment decapsulation) may decapsulate the point cloud data in the form of a file transmitted from the reception processing unit.
  • the decapsulation processor may decapsulate files or segments according to ISOBMFF or the like to obtain a point cloud bitstream or point cloud related metadata (or a separate metadata bitstream).
  • the acquired point cloud bitstream may be transmitted to the point cloud decoder, and the acquired point cloud related metadata (or metadata bitstream) may be transmitted to the metadata processing unit.
  • the point cloud bitstream may include the metadata (metadata bitstream).
  • the metadata processing unit may be included in the point cloud video decoder, or may be configured as a separate component/module.
  • the point cloud related metadata acquired by the decapsulation processing unit may be in the form of a box or track in a file format. If necessary, the decapsulation processing unit may receive metadata required for decapsulation from the metadata processing unit.
  • the point cloud related metadata may be transmitted to the point cloud decoder and used for a point cloud decoding procedure, or may be transmitted to a renderer and used for a point cloud rendering procedure.
  • the Point Cloud Decoding unit performs geometry decompression, attribute decompression, Auxiliary data decompression, and/or mesh data decompression.
  • the Point Cloud decoder may decode data by receiving the bitstream and performing an operation corresponding to the operation of the Point Cloud encoder.
  • the Point Cloud decoder can decode the Point Cloud data by dividing it into geometry and attributes, as described later.
  • the Point Cloud decoder can restore (decode) geometry from the geometry bitstream included in the input bitstream, and restore the attribute value based on the attribute bitstream included in the input bitstream and the restored geometry. You can (decode) it.
  • a mesh may be reconstructed (decoded) based on the mesh bitstream included in the input bitstream and the restored geometry.
  • the point cloud can be restored by restoring the location of each point in 3D and the attribute information of each point.
  • Each operation of the point cloud decoding unit may be performed in parallel.
  • Geometry decompression decodes geometry data from the point cloud stream(s). Attribute decompression decodes attribute data from the point cloud stream(s). Auxiliary data decompression decodes the auxiliary data from the point cloud stream(s). Mesh data decompression decodes the mesh data from the point cloud stream(s).
  • Point Cloud Rendering restores the position of each point in the point cloud and the attributes of the point based on the decoded geometry, attributes, auxiliary data, and mesh data, and renders the point cloud data.
  • the point cloud rendering unit generates and renders mesh (connection) data between point clouds based on the restored geometry, the restored attributes, the restored auxiliary data, and/or the restored mesh data.
  • the point cloud rendering unit receives metadata from the file/segment encapsulation unit and/or the point cloud decoding unit.
  • the point cloud rendering unit may render point cloud data based on metadata according to an orientation or viewport.
  • the display displays the rendered result on an actual display device.
  • FIG. 17 shows an example of a structure capable of interworking with a method/device for transmitting and receiving point cloud data according to embodiments.
  • the structure according to the embodiments is a server 1760, a robot 1710, an autonomous vehicle 1720, an XR device 1730, a smartphone 1740, a home appliance 1750 and/or an HMD. At least one or more of 1770 is connected to the cloud network 1710.
  • a robot 1710, an autonomous vehicle 1720, an XR device 1730, a smartphone 1740, or a home appliance 1750 may be referred to as a device.
  • the XR device 1730 may correspond to a point cloud data (PCC) device according to embodiments or may be interlocked with a PCC device.
  • PCC point cloud data
  • the cloud network 1700 may constitute a part of a cloud computing infrastructure or may mean a network that exists in the cloud computing infrastructure.
  • the cloud network 1700 may be configured using a 3G network, a 4G or long term evolution (LTE) network, or a 5G network.
  • LTE long term evolution
  • the server 1760 includes at least one of a robot 1710, an autonomous vehicle 1720, an XR device 1730, a smartphone 1740, a home appliance 1750, and/or an HMD 1770, and a cloud network 1700.
  • the connected devices 1710 to 1770 may be connected through, and may help at least part of the processing of the connected devices.
  • the HMD (Head-Mount Display) 1770 represents one of types in which an XR device and/or a PCC device according to embodiments may be implemented.
  • the HMD type device according to the embodiments includes a communication unit, a control unit, a memory unit, an I/O unit, a sensor unit, and a power supply unit.
  • the devices 1710 to 1750 shown in FIG. 17 may be interlocked/coupled with the point cloud data transmission/reception apparatus according to the above-described embodiments.
  • the XR/PCC device 1730 is applied with PCC and/or XR (AR+VR) technology to provide a head-mount display (HMD), a head-up display (HUD) provided in a vehicle, a television, a mobile phone, a smart phone, It may be implemented as a computer, wearable device, home appliance, digital signage, vehicle, fixed robot or mobile robot.
  • HMD head-mount display
  • HUD head-up display
  • vehicle a television
  • mobile phone a smart phone
  • It may be implemented as a computer, wearable device, home appliance, digital signage, vehicle, fixed robot or mobile robot.
  • the XR/PCC device 1730 analyzes 3D point cloud data or image data acquired through various sensors or from an external device to generate positional data and attribute data for 3D points, thereby Information can be obtained, and the XR object to be output can be rendered and output.
  • the XR/PCC device 1730 may output an XR object including additional information on the recognized object in correspondence with the recognized object.
  • the autonomous vehicle 1720 may be implemented as a mobile robot, a vehicle, or an unmanned aerial vehicle by applying PCC technology and XR technology.
  • the autonomous driving vehicle 1720 to which the XR/PCC technology is applied may refer to an autonomous driving vehicle having a means for providing an XR image, an autonomous driving vehicle that is an object of control/interaction within the XR image.
  • the autonomous vehicle 1720 which is the object of control/interaction in the XR image, is distinguished from the XR device 1730 and may be interlocked with each other.
  • the autonomous vehicle 1720 having a means for providing an XR/PCC image may acquire sensor information from sensors including a camera, and may output an XR/PCC image generated based on the acquired sensor information.
  • the autonomous vehicle 1720 may provide an XR/PCC object corresponding to a real object or an object in a screen to the occupant by outputting an XR/PCC image with a HUD.
  • the XR/PCC object when the XR/PCC object is output to the HUD, at least a part of the XR/PCC object may be output to overlap the actual object facing the occupant's gaze.
  • the XR/PCC object when the XR/PCC object is output on a display provided inside the autonomous vehicle, at least a part of the XR/PCC object may be output to overlap the object in the screen.
  • the autonomous vehicle 1220 may output XR/PCC objects corresponding to objects such as lanes, other vehicles, traffic lights, traffic signs, motorcycles, pedestrians, and buildings.
  • VR Virtual Reality
  • AR Augmented Reality
  • MR Magnetic Reality
  • PCC Point Cloud Compression
  • VR technology is a display technology that provides objects or backgrounds in the real world only as CG images.
  • AR technology refers to a technology that shows a virtually created CG image on a real object image.
  • MR technology is similar to the AR technology described above in that virtual objects are mixed and combined in the real world.
  • real objects and virtual objects made from CG images are clear, and virtual objects are used in a form that complements the real objects, whereas in MR technology, the virtual objects are regarded as having the same characteristics as the real objects. It is distinct from technology. More specifically, for example, it is a hologram service to which the aforementioned MR technology is applied.
  • VR, AR, and MR technologies are sometimes referred to as XR (extended reality) technology rather than clearly distinguishing between them. Therefore, embodiments of the present invention are applicable to all of VR, AR, MR, and XR technologies.
  • One such technology can be applied to encoding/decoding based on PCC, V-PCC, and G-PCC technologies.
  • the PCC method/apparatus according to the embodiments may be applied to a vehicle providing an autonomous driving service.
  • Vehicles providing autonomous driving service are connected to PCC devices to enable wired/wireless communication.
  • the vehicle receives/processes AR/VR/PCC service related content data that can be provided together with the autonomous driving service. Can be transferred to.
  • the point cloud transmission/reception device may receive/process AR/VR/PCC service related content data according to a user input signal input through the user interface device and provide it to the user.
  • the vehicle or user interface device may receive a user input signal.
  • the user input signal may include a signal indicating an autonomous driving service.
  • a method/apparatus refers to a method/device for transmitting point cloud data and/or a method/device for receiving point cloud data according to the embodiments.
  • the point cloud data transmission apparatus refers to a PCC encoder and/or encoder
  • the point cloud data reception apparatus refers to a PCC decoder and/or decoder.
  • Point cloud data according to embodiments may be referred to as point cloud or point cloud content
  • geometric information according to embodiments may be referred to as geometry information
  • attribute information according to embodiments may be referred to as attribute information.
  • the method/apparatus provides a method for applying geometry and attribute quantization of Geometry-based Point Cloud Compression (G-PCC) for compressing 3D point cloud data.
  • G-PCC Geometry-based Point Cloud Compression
  • the method/apparatus provides a method for applying/adjusting adaptive quantization for each area according to a characteristic of a content and a characteristic of a service in relation to a point cloud.
  • the method/apparatus according to the embodiments divides into regions smaller than slices according to the degree of distribution of content in the G-PCC geometry/attribute encoding/decoding process, and adjusts the quality of compression of the divided regions according to the type of service. It is possible to provide an adaptive quantization control/application method for each area by allocating the geometry/attribute QP to be used, setting whether to merge overlapping points, modifying/applying the geometry coding method based on the set, and applying the overlap processing method when configuring octrees. have.
  • the method/apparatus according to the embodiments may apply a geometry second-order quantization step, configure a divided region-based octree, and provide an efficient signaling scheme for this.
  • the present invention adjusts the geometry and attribute compression quality of Geometry-based Point Cloud Compression (G-PCC) for compressing 3D point cloud data according to the distribution of the point cloud. It is about how to do it.
  • G-PCC Geometry-based Point Cloud Compression
  • an encoder and an encoder are referred to as an encoder, and a decoder and a decoder are referred to as a decoder.
  • a point cloud is composed of a set of points, and each point may include geometry information and attribute information.
  • Geometry information is 3D position (XYZ) information
  • attribute information is color (RGB, YUV, etc.) and/or reflection value.
  • the G-PCC decoding process is a process of receiving an encoded geometry bitstream and an attribute bitstream, decoding the geometry, and decoding attribute information based on the geometry reconstructed through the decoding process. It may include. (Details are as described above in Fig. 1, etc.)
  • an octree technique or a trisoup technique may be used.
  • an octree technique for managing occupied voxels, and a tri-forest a process of converting information into information of vertex segments for forming a triangle may be included. (Details are as described above in Fig. 4, etc.)
  • the attribute information compression process may include a Prediction transform scheme, a Lift transform scheme, and/or a RAHT scheme. (Details are as described above in Fig. 4, etc.)
  • the point cloud encoding process includes geometry coding and attribute coding. Therefore, in terms of the quality of compression, geometry coding and attribute coding may be applied differently, and since a point cloud reconstructed as a result of geometry compression is used as an input for attribute coding, the quality of geometry compression may affect attribute coding.
  • the quality control of geometry and attribute compression can be controlled by quantization values. Also, geometry query control can be adjusted according to overlapping point processing.
  • the point cloud encoding process may require adaptive quantization adjustment/application for each region according to the characteristics of the point cloud content and the service. For example, it is important to preserve important areas as much as possible because an area close to the captured equipment is important for data captured during autonomous driving on a road. In the case of the terrain of the flight simulation, the problem of quickly loading the point cloud of a large area may be a bigger problem than preserving the close area of the terrain. This may be possible because the plane and terrain are far apart. In this case, it may be necessary to quantize a larger value in a region with a high distribution. Therefore, it may be necessary to adjust the quality by adjusting the quantization value for each area according to the point distribution of the content and the characteristics of the service.
  • a tile and a slice may exist.
  • an ideal slice can be divided based on about 1,100,000 points, and tiles can be made up of more than one slice, which can be a larger criterion. Since slices are performed in parallel, related information cannot be exchanged between slices during compression. Therefore, a method of dividing a region may require a method of dividing a point cloud into a unit (block) smaller than a slice and in addition to a tile and a slice, and performing compression while exchanging information about different regions during block division and compression.
  • the method/apparatus provides a method for applying/adjusting adaptive quantization for each region according to the characteristics of the content and the service.
  • a method of applying a geometry second quantization step, a method of constructing a divided region-based octree, and/or a signaling method to support the method will be described.
  • changes and combinations between the embodiments are possible, and terms used in this document may be understood based on the intended meaning of the term within a range widely used in the relevant field.
  • the method of applying adaptive quantization for each region based on point cloud distribution is performed in PCC attribute coding of a PCC encoder, and may be reconstructed through a PCC attribute decoding process of a PCC decoder.
  • the transmission side may process adaptive quantization for each region based on point cloud distribution according to embodiments to be described later.
  • the above-described components may be abbreviated as a method/apparatus according to embodiments.
  • the receiving side may process adaptive quantization for each area based on point cloud distribution according to embodiments.
  • the above-described components may be abbreviated as a method/apparatus according to embodiments.
  • a point cloud data encoder including a geometry encoder and/or an attribute encoder includes: 1) adjusting position values for points, and 2) point cloud distribution in relation to region division and preparation for setting QP.
  • An analysis step, 3) a region segmentation step, 4) a geometry and attribute QP adjustment step of the segmented region, and/or 5) a step of setting whether to merge duplicated points of the segmented region, and the like may be performed.
  • a point cloud data encoder including a geometry encoder and/or an attribute encoder includes: 1) a second-order quantization step for points, 2) in relation to a region-specific adaptive quantization application/adjustment scheme. A voxelization step for points, and/or 3) an octree construction step, and the like may be performed.
  • 1) a method of overlapping an area may be performed.
  • a detailed process of preparing for region division and QP setting related to geometry and/or attribute encoding according to embodiments is as follows.
  • the encoder may find the minimum x, y, and z position values of all points and subtract them from the position values of each point. Through this process, the position at the bottom left and front of the point cloud content can be adjusted as the origin (0, 0, 0). In addition, it is also possible to receive movement or rotation information as user information and apply the received movement value or rotation value of points of the point cloud to all points. In addition, it is possible to apply a scale value to the position values of points by receiving a full scale value.
  • the scale value may be considered as an overall geometry quantization parameter. Therefore, in lossless geometry coding, the scale value may be fixed to 1, and in lossy geometry, the scale value may be designated as a number less than 1.
  • a first-order geometry quantization step can be applied by applying a full scale value.
  • a location variance analysis process for content may be performed.
  • the content point cloud variance analysis process can inform the variance of points for each axis, and the subsequent encoding process can automatically set the geometric QP value for each area by using the corresponding information. Alternatively, you can automatically set the attribute QP value.
  • the set QP information may be signaled to the decoder as signal information (or metadata).
  • the method/apparatus may analyze the number of points for each x, y, and z axis of the point cloud data to analyze the degree of dispersion (or density) of points according to distances for each axis.
  • the QP value may be applied based on the degree of variance when the geometry information and attribute information of the point cloud data are quantized. This is because, depending on the type of point cloud content, a large value of QP or a small value of QP can be applied to a place with high dispersion according to distance such as road driving data or flight driving data.
  • regions may be automatically segmented according to point distribution.
  • related information can be input from the user and the division criteria can be generated for each axis step by step. The degree of division can be input and applied.
  • the divided area unit may be set as a tile, a slice, and/or a block (a small area obtained by dividing a slice).
  • a setting of a division area range for uniform division setting a division area range according to a distribution ratio, an octree node area + division area range setting according to a distribution ratio, and the like.
  • Each area may include point density value and bounding-box (location, size) information.
  • an order value such as breadth-first/depth-first set of the octree node can be used instead of the bounding box.
  • the method/apparatus according to the embodiments may divide point cloud data into tiles/slices/blocks, and the like.
  • a tile is a divided area of a space, and, for example, one room may correspond to a tile.
  • a slice is a division area of a tile, and a tile may be divided into a plurality of slices based on the number of predetermined points in the tile. In addition to the tile unit, tiles can be further divided into slice units for parallel and fast processing. PCC encoding/decoding may be performed in units of slices.
  • a block is a divided area of a slice.
  • the purpose of the block is to process the PCC encoding/decoding process in slice units in more detail.
  • a slice may be divided into one or more blocks, and different parameters may be applied in various ways for each block while encoding/decoding one slice.
  • the unit of region division may be various, such as tiles, slices, and blocks.
  • a range of one area may come out by dividing the area where points exist based on the number of divisions for each axis.
  • the method/apparatus according to the embodiments may uniformly obtain the range of the area for each axis.
  • the area with the highest distribution of all points is divided into area ranges for each axis. Repeat for each axis. It can be applied by inputting the number of divisions.
  • the area can be divided in 50% variance units.
  • a range corresponding to 50% of the X-axis, 50% of the y-axis, and 50% of the z-axis may be obtained, and regions may be divided by a combination of the x, y, and z-axis regions.
  • the method/device may receive and divide the division reference information on the distribution ratio of points for each axis. For example, if partition block 1 is transmitted to the top 50% of the x-axis, blocks belonging to block 1 are divided according to the percentage of the total number of points versus the number of points belonging to the area based on the area with the highest distribution of all points. You can calculate the extent of the area. When the divided area for each axis is obtained, the point cloud area may be divided according to the area division criterion for each axis to form blocks.
  • the configuration method is the same as the example described in the previous uniform division.
  • the method/device In the case of division based on octree node area + distribution rate, the method/device according to the embodiments receives reference information on the point distribution rate for each axis, checks the distribution rate around the octree nodes, and received reference information Based on, the range of the distribution ratio of the octree nodes can be checked and partitioned based on the octree node.
  • the content may be divided according to a division method, and the divided area may be set as one tile, slice, or block according to the selected area unit.
  • the segmentation method may be signaled for reconstruction in the decoder.
  • each tile, slice and block may have a point density value, and the density can be calculated as the number of points / area area.
  • Each tile, slice, and block may have bounding-box (location, size) information of each block.
  • an order value such as breadth-first/depth-first set of the octree node can be used instead of the bounding box.
  • the point cloud data encoding process may adjust the geometry QP and the attribute QP for each block.
  • the QP set for each block may be automatically set according to the point density of the block, or may be set by receiving a QP value according to each point density.
  • the method/device according to the embodiments may variously adjust the QP value according to the point cloud service, such as applying a large QP value to a high density area or applying a small QP to a high density area when performing quantization (secondary quantization). .
  • the QP value can be applied in the second-order geometry quantization step and the attribute value quantization step.
  • geometry QP it may have one QP value, or it may be applied differently to each of x, y, and z.
  • the quantization parameter value of the block with the highest detail may be 1. As the detail decreases, the quantization parameter value is a number less than 1.
  • the point cloud data encoding process of the method/apparatus may set whether to merge duplicate points into each block differently. It may be automatically set according to the point density, or it may be set by receiving whether to merge duplicate points according to each point density. If it is set automatically, it can be set so that it can have different policies depending on the service, like QP settings. When real-time is important, the number of points can be reduced by performing merging on blocks with high density, and when the geometry of the core area is important, points can be preserved without performing merging points.
  • a specific operation of the method for applying and/or adjusting adaptive quantization for each region related to geometry and/or attribute encoding is as follows:
  • the point cloud data encoding process according to the embodiments by the geometric information encoder, etc. may perform a second quantization process on the geometry information. Quantization can be performed by applying a set or designated geometric QP value to points in an area. Quantized geometry position information can be made integer.
  • the process of encoding point cloud data according to embodiments by a voxelization processor, etc. may voxelize the second-order quantized geometry information.
  • a cube having a width, height, and height of 1 may be set as one voxel.
  • the integerized point position value may be a voxel position information value having a point.
  • points may belong to one voxel. Depending on whether overlapping is allowed for each tile, slice, or block, points may be integrated into a corresponding voxel, or point location information may be directly coded for an additional point.
  • the encoder of the point cloud data transmission apparatus e.g., the point cloud video encoder 10002 of Fig. 1), the encoding process (e.g., the encoding of Fig. 2) (20001)), the geometry encoding process of the point cloud data (e.g., the coordinate transformation unit 40000 and/or the voxelization unit 40001 in FIG. 4, etc.), a quantizer, a voxelizer, and/or an octree of the encoding process Generator, attribute transformation processing unit (e.g., quantization processing unit 12001 in Fig.
  • voxelization processing unit 12002, octree generation unit 12003, attribute transformation processing unit 12009), and/or a point cloud encoder may perform geometry encoding, for example, quantization, voxelization, and/or octree generation.
  • the decoder of the point cloud data receiving apparatus e.g., the point cloud decoder 10006 of Fig. 1
  • the decoding process e.g., the decoding of Fig. 2 ( 20003)
  • the geometry decoding process of the point cloud data e.g., the Arismatic decoding unit 11000 and/or the octree synthesis unit 11001 of FIG. 11, etc.
  • the octree reconstruction unit and/or the reverse of the point cloud decoding process e.g., A quantization processing unit (e.g., an octree reconstruction unit 13003 and/or an inverse quantization processing unit 13008 in Fig. 13) and a point cloud decoder (e.g., a point cloud decoding unit in Fig. 16) are used to decode geometry, for example, , Octree reconstruction, and inverse quantization processing can be performed.
  • a geometry encoding, a geometry encoder, and/or an octree generator may voxelize points and generate octrees for the points. After the number of points is adjusted, the process of dividing the entire area by dividing the x-axis, y-axis, and z-axis into 8 sub-areas is repeated, and occupancy bits are determined by whether or not a point exists in each area. ) Means the process of representing.
  • an octree for each divided region may be generated as one.
  • Blocks according to embodiments may be classified and referred to as a first block and a second block in the present specification.
  • a block which is a unit of spatial division, may correspond to a bounding box and may be included in a bounding box. The block may be referred to as a bounding box.
  • each tile or slice is independently encoded, each is configured as an octree, and thus occupancy bits due to overlap may not be affected.
  • a method of processing the overlapping area is required, and the processing method may vary:
  • the octree construction unit (or may be referred to as an octree generator, an octree generator, etc.) according to the embodiments may configure each block into a respective octree. In this case, occupied bits due to overlap may not be affected.
  • the method/apparatus according to the embodiments may configure all blocks belonging to a slice based on one octree. That is, it is possible to ignore the overlapping area and maintain the previous octree configuration method. Therefore, artifacts may occur in overlapping areas.
  • the reason is that there is no problem in the case of points belonging to block-1, but in the case of points belonging to block-2, points belonging to block-2 belong to block-2, but the position information changed through second-order quantization (or first-order quantization, etc.) Can be adjusted to belong. Accordingly, in decoding, since the position at the time of restoration belongs to block-1, a second-order dequantization process corresponding to block-1 may be performed.
  • the left half of block-2 cannot be restored in the drawing.
  • the difference in the QP value between adjacent regions may not be very large. Accordingly, there will be an overlapping area with respect to the adjacent area, but it may be negligible because the overlapping area may not be large. In this case, the position of the block due to overlap is not adjusted, and additional information is not stored due to this.
  • the method/apparatus according to the embodiments may configure all blocks belonging to a slice based on one octree. That is, it is possible to ignore the overlapping area and maintain the previous octree configuration method. Therefore, artifacts may occur in overlapping areas.
  • the reason is that there is no problem in the case of points belonging to block-1, but if the points belong to block-2 but are adjusted to belong to block-1 through position information changed through second-order quantization, the position at the time of restoration in decoding is in block-1. Because it belongs to, the second inverse quantization process corresponding to block-1 can be performed. Therefore, referring to the drawings, there may be a possibility that the left half of block-2 cannot be restored.
  • the method/apparatus according to the embodiments for example, the octree constructing unit according to the embodiments, performs secondary quantization, and adds block IDs of points existing in the voxel to the voxels in the overlapping region. can do.
  • the number of overlapping points may be coded as the number of overlapping blocks, and block information belonging to information of each overlapping point may be added. In this method, additional block information can be stored without adjusting the position of the block due to overlap.
  • the method/apparatus according to the embodiments provides an effect of encoding/decoding with low latency by spatially dividing the point cloud data in consideration of the type of point cloud data and/or the service provision environment, and further, the division And an effect of signaling while processing a phenomenon in which overlap occurs due to quantization.
  • FIG. 19 illustrates an example of repositioning a virtual block according to embodiments.
  • a method/apparatus according to the embodiments may configure all blocks belonging to a slice on a single octree basis.
  • a virtual location of each block may be required.
  • the virtual position is an offset to virtually readjust the area of each area based on the virtual high QP, and bring all blocks to the position of the left, bottom, front of the virtually readjusted area. Can be set.
  • the reference position for adjustment does not necessarily have to be a position in the lower left and front, and may be variously set according to embodiments. Since only the geometry of the current block can exist in the virtual area, it can be adjusted to keep the octree compact, such as the lower right, front, and upper left.
  • the drawing shows a process of processing a bounding box-1 corresponding to block-1 and a bounding box2 corresponding to block-2 by a virtual position adjusting unit and an octree configuration unit of an octree generator. After the virtual position readjustment, the position of the block-2 overlapping with a partial area of the block-1 (bounding box 1) is adjusted to a new virtual bounding box.
  • the octree may be constructed based on the adjusted virtual position by adjusting the position of the block.
  • occupancy bits may be formed after overlapping an area.
  • the region overlap processing method may be signaled to the decoder and transmitted, and may be used when the point cloud data receiving apparatus according to the embodiments reconstructs the octree.
  • the set attribute QP value may be applied during attribute compression.
  • the divided region (tile/slice/block) in which overlap occurs in the quantization step may be processed according to the above-described embodiments.
  • the method/apparatus according to the embodiments can prevent data loss or deterioration of the quality of point cloud content by preventing the occurrence of an overlapping area due to a change in an area that can be represented by a plurality of blocks/bounding boxes in the quantization process. It provides a good effect.
  • the method/apparatus according to the embodiments provides an effect of quickly and efficiently providing point cloud content to a user through an operation configuration and a signaling structure therefor according to the embodiments.
  • the point cloud content is partially accessed according to the necessity of the data and the provision environment, and the data is quickly encoded/decoded with various settings. have.
  • the virtual block virtual bounding box
  • the virtual block can solve a problem that points are incorrectly encoded/decoded/rendered due to overlap of data (points).
  • the data input unit 20000 may receive data including geometry information, attribute information, and/or parameter(s) for geometry/attributes of point cloud data.
  • the coordinate system conversion unit 20010 may convert the coordinate system by receiving geometry information. For example, it is possible to convert an existing coordinate system to another coordinate system. Alternatively, the coordinate system transformation may not be performed.
  • the geometric information converted by the coordinate system may be input to the geometric information conversion quantization unit.
  • the quantization processing unit may first quantize the geometry information. For example, it finds the minimum x, y, and z position values of all points, subtracts them from the position values of each point, multiplies them by the set quantization scale, and lowers or raises them to the nearest integer value.
  • the space division unit 20030 may perform the above-described region division and/or the QP setting preparation operation.
  • the spatial divider 20030 may set whether to divide a tile based on variance analysis. When the variance analysis-based tile division is performed, an variance analysis operation is performed, and when the variance analysis-based tile division is not performed, the tile division operation may be performed without the variance analysis operation.
  • the variance analysis unit checks whether to perform variance analysis from the user and/or the PCC system and analyzes the degree of variance of the point cloud when performing variance analysis. For example, point cloud data is analyzed for the degree of variance (density) of points for each axis.
  • the variance analysis unit may check the number/dispersion/density of points by distance for each axis.
  • the tile dividing unit divides the point cloud data based on the tile.
  • a tile means a space division unit. For example, one room may correspond to one tile.
  • the space of the point cloud data may be divided into tile(s) in consideration of the degree of variance for each axis analyzed by the variance analysis unit, and/or a partitioning policy other than the variance analysis unit or
  • the space of the point cloud data can be divided into tile(s) according to the PCC system setting value.
  • the spatial division unit may perform variance analysis and set whether to divide the slice.
  • an variance analysis operation may be performed, and when the variance analysis-based slice division is not performed, the slice division operation may be performed without the variance analysis operation.
  • the variance analysis unit analyzes the number of points, density, and variance for each axis and distance of the point cloud data.
  • the slice division unit divides the point cloud data based on the slice.
  • a slice means a unit that divides a tile. For example, a unit for dividing one tile into a set of points corresponding to a predetermined number may be a slice.
  • the space of the point cloud data can be divided into slice(s) in consideration of the degree of variance analyzed by the variance analysis unit, and/or the partitioning policy or PCC system setting other than the variance analysis degree
  • the space of the point cloud data can be divided into slice(s) according to the value.
  • the spatial division unit may determine whether to divide the block by analyzing variance. When the variance analysis-based block division is performed, an variance analysis operation may be performed, and when the variance analysis-based block division is not performed, the block division operation may be performed without the variance analysis operation.
  • the variance analysis unit analyzes the number of points, density, and variance for each axis and distance of the point cloud data.
  • the block divider divides the point cloud data based on the block.
  • a block means a unit that divides a slice.
  • a unit divided to encode/decode one slice in detail may be a block.
  • the space of the point cloud data can be divided into block(s) in consideration of the degree of variance analyzed by the variance analysis unit, and/or the partitioning policy or PCC system setting other than the variance analysis degree
  • the space of the point cloud data can be divided into block(s) according to the value.
  • tile/slice/block division unit described above may divide the space of the point cloud data based on each division unit (tile/slice/block), and in this case, the divided area may be expressed as a bounding box.
  • the tile/slice/block dividing unit may generate information on each tile/slice/block, include it in a parameter of a bitstream, and transmit it. For example, there may be signaling information such as a location of a bounding box, a size of a bounding box, a density (number of points/area area), and an order value of an octree node.
  • the spatial division unit may set a tile/slice/block-specific geometry/attribute QP value without a block division operation, and may set whether to perform overlapping point merging.
  • the spatial division unit may set a tile/slice/block-specific geometry/attribute QP value, and set whether to perform overlapping point merging.
  • the spatial division unit may set a QP to be applied for a quantization operation to the divided geometry information and attribute information. Furthermore, there is a case in which points overlap according to division and QP, and whether to merge these overlapping points can be set.
  • the spatial division unit may generate information on each tile/slice/block, include it in a parameter of a bitstream, and transmit it.
  • the signaling information may include information indicating whether to merge geometry QP, attribute QP, and overlapping points.
  • the geometry information encoder 20040 encodes geometry information of point cloud data. Specifically, it may include a secondary geometric information transformation quantization processing unit, a voxelization processing unit, an octree generation unit, a geometric information prediction unit, a geometric information inverse quantization processing unit, a geometric information entropy encoding unit, and/or a geometric information restoration unit.
  • the secondary geometric information transformation quantization processor may apply a geometry quantization value to points according to a geometry QP for each tile, slice, and/or block.
  • Quantization is a process of reconstructing the location information of each point in the acquired entire point cloud, and refers to an operation of performing quantization on location information. It finds the minimum x, y, and z position values of all points, subtracts them from the position values of each point, multiplies them by the set quantization scale, and lowers or raises them to the nearest integer value.
  • the voxelization processor may determine a point value for geometry encoding according to whether overlapping points are merged for each tile, slice, and/or block.
  • Voxelization refers to octree-based voxelization based on location information of points in order to reconstruct each point of the point cloud to which the quantization process is applied.
  • Voxel is a hybrid word that combines volume and pixel.
  • a voxel can estimate spatial coordinates in a positional relationship with a voxel group, and like a pixel, can have color or reflectance information.
  • One voxel can have multiple point-related information. Alternatively, one voxel can be integrated into one point information to have it. This adjustment can be performed selectively.
  • the position value of the center point of the voxel can be set based on the position values of points existing in the voxel, and an attribute transform process related thereto needs to be performed. There is. For example, the attribute conversion process may be adjusted to the average value of the color or reflectance of points included in the voxel or the center position value of the voxel and the neighboring points within a specific radius.
  • the octree generator may configure point cloud data into an octree.
  • the octree generation refers to a process of configuring point cloud content into an octree in order to efficiently manage the area/location of the voxel described above.
  • the octree can be expressed as an occupancy code. If a point is included in each node, it is expressed as 1, and if there is no point, it is expressed as 0. Each node has an 8-bit bitmap indicating occupancy for 8 child nodes. Entropy coding of occupancy code through arithmetic coder. The generated occupancy code may be directly encoded or may be encoded through an intra/inter coding process to increase compression efficiency. In the receiver, the occupancy code can be used to reconstruct the octree.
  • the octree generator checks whether to apply tile/slice division. In the case of applying tile/slice division, the operation of the octree construction unit is processed, and in the case of applying block division, not the tile/slice division application, the overlap processing type is checked.
  • the overlap processing type is the above-described A) independent octree configuration type, B) one octree-position adjustment X (no position adjustment), additional information X (no additional information), C) one octree-position adjustment It includes X (no position adjustment), additional block information, D) one octree-position adjustment, etc.
  • A) Independent octree configuration type B) One octree-position adjustment X (no position adjustment), additional information X (no additional information), C) one octree-position adjustment X (no position adjustment), and additional block information
  • the octree generating unit performs an operation of the octree constructing unit
  • the octree constructing unit constructs an octree of spatially divided point cloud data based on a tile/slice/block (A, B, C type).
  • the virtual position adjustment unit adjusts the octree position to a virtual position in order to process the overlap of the point cloud data.
  • the virtual position adjustment unit may generate information on each block and transmit it through a parameter of a bitstream.
  • the signaling information for each block may include the location of the virtual bounding box, the size of the virtual bounding box, and the like.
  • the octree constructing unit constructs an octree based on the point cloud data adjusted to the virtual position.
  • the octree generator may receive an octree overlap processing method.
  • Independent octree composition method one octree composition but no position adjustment and no additional information, one octree composition but a method of adding block ID information to the overlap area without position adjustment, one octree composition and position control There could be a way.
  • the overlap processing method may be signaled to the decoder.
  • the virtual position adjusting unit when configuring a single octree and adjusting the position, the virtual position adjusting unit readjusts the area based on the highest QP for each block, and sets the reference position to create a virtual bounding box (position, size). Configurable.
  • the reference position may be the lower left and the front (for example, as shown in Fig. 19), or may be another position.
  • the virtual bounding box can be signaled to the decoder.
  • the virtual position adjusting unit may remove the redundant area and configure the octree in a state composed of one area.
  • the geometry information prediction unit predicts the geometric information through the geometric information of the points in the memory and generates the predicted geometric information.
  • the prediction information used for prediction is encoded through an entropy encoding process.
  • the geometry information prediction unit performs the same/similar operation as the in-tree/inter coding processing unit.
  • the geometry inverse quantization processing unit receives the geometry information (eg, residual geometry information) and restores the geometry information (residual geometry information) by scaling the quantization value.
  • the restored residual geometric information may be restored as geometric information in addition to the geometric information predicted by the geometric information predictor and stored in a memory.
  • the restored geometry information (residual geometry information) is input to the attribute encoding unit.
  • the geometry entropy encoder may receive quantized residual geometry information and perform entropy encoding.
  • Entropy coding may use various coding methods such as Exponential Golomb, Context-Adaptive Variable Length Coding (CAVLC), and Context-Adaptive Binary Arithmetic Coding (CABAC).
  • the geometry information encoder 20040 generates a geometry information bitstream.
  • the attribute information encoder 20050 may include a residual attribute information quantization processor or may perform a residual attribute information quantization process.
  • the residual attribute information quantization processor of the attribute information encoding unit may quantize attribute information by applying attribute quantization values to points according to attribute QPs for each tile, slice, and/or block.
  • the attribute information encoding unit generates an attribute information bitstream.
  • the point cloud data transmission method further includes the step of dividing the space of the point cloud data based on the division unit, the encoding step of encoding the geometry information of the spatially divided point cloud data; And encoding attribute information of the point cloud data, and encoding the geometry information includes generating an octree for the point cloud data.
  • the decoding of the method for receiving point cloud data includes: decoding geometric information of the point cloud data; And decoding attribute information of the point cloud data, and decoding the geometry information includes reconfiguring an octree for the point cloud data.
  • an octree is constructed for each block, or an octree is constructed (generated) for each slice including a block.
  • an octree is formed for each slice including a block, and the first block and the second block included in the slice overlap.
  • the ID information may be delivered as signaling information in the bitstream.
  • the step of generating the octree in the point cloud data transmission method is when the division unit is a block, an octree is formed for each slice including a block, and the first block and the second block included in the slice overlap. , The position of the second block is adjusted based on the offset value to the area of the virtual block that does not overlap with the first block.
  • Reconfiguring the octree of the method for receiving point cloud data includes determining whether the point cloud data is divided data based on a tile or a slice.
  • Reconfiguring the octree of the method for receiving point cloud data includes, when the point cloud data is divided based on a block, the type of overlap applied to the point cloud data does not include an independent octree or position adjustment and additional information. It includes the step of checking if it is one octree that does not exist.
  • the type of overlap applied to the point cloud data does not include position adjustment, but one octree or position adjustment including additional block information. It is checked whether it is one octree including, and the virtual position of the block for point cloud data is restored based on signaling information for each block included in the bitstream.
  • the method/apparatus according to the embodiments in particular, the spatial division unit, the geometric information encoding unit, and/or the attribute information encoding unit, performs the operation according to the above-described embodiments, and thus, according to the characteristics of the content and the service. It provides the effect of applying/adjusting adaptive quantization for each region.
  • 21 shows an example of geometry decoding and attribute decoding (decoder) according to embodiments.
  • the geometric information entropy decoder 21000 receives the geometry information bitstream and performs entropy decoding.
  • the geometric information entropy decoder 21000 may perform all/part of the arithmetic decoder.
  • the geometric information entropy decoder 21000 may perform an inverse process under the geometry entropy code.
  • the geometric information decoding unit 21010 may decode (decode) geometric information of point cloud data. Specifically, it may include an octree reconstruction unit, a second geometric information transformation inverse quantization processing unit, a geometric information prediction unit, a geometric information inverse quantization processing unit, a geometric information restoration unit, a first geometric information transformation inverse quantization processing unit, and/or a coordinate system inverse transformation unit. have.
  • the octree reconstruction unit may perform the reverse process of the octree construction unit. Specifically, the octree reconstructing unit reconstructs an octree from the decoded geometry information bitstream.
  • the octree reconstruction unit checks whether tile/slice division is applied. When the tile/slice division is applied to the geometry information, the second geometry information transformation dequantization processing unit performs an operation with the restored octree. If tile/slice division is not applied and block division is applied, the octree reconstruction unit checks the overlap processing type.
  • the overlap processing type is A) independent octree configuration type, B) one octree-position adjustment X (no position adjustment), additional information X (no additional information), C) one octree-position adjustment X (no position adjustment) ), additional block information, D) one octree-position adjustment, etc.
  • the octree reconstruction unit performs the operation of the octree integration unit.
  • the octree reconstruction unit performs the operation of the virtual position restoration unit.
  • the virtual position restoration unit restores the position virtually adjusted for overlap processing.
  • the restoration operation will be performed based on information about the block included in the parameter of the bitstream, for example, the location of the bounding box, the size of the bounding box, the location of the virtual bounding box, and information about the size of the virtual bounding box.
  • the virtual position restoration unit may perform a reverse process of the virtual position adjustment unit.
  • the octree integrator may reconstruct the octree by integrating blocks according to each overlap processing type.
  • the reconstruction (restoration) process may be performed based on a parameter (signaling information) of a bitstream.
  • the signaling information may include a location of a bounding box, a size of a bounding box, an octree node order value, information indicating whether to merge duplicate points, and the like.
  • the second-order geometry transformation inverse quantization processing unit transforms the geometry information and performs inverse quantization.
  • the second-order geometry transformation inverse quantization processing unit may perform a process of the geometry inverse quantization processing unit or an inverse process of the second-order geometry transformation quantization processing unit.
  • the geometry information prediction unit generates a predicted value of geometry information.
  • the predicted value of the geometry may be generated to be provided to the geometry inverse quantization processing unit.
  • the geometry information prediction unit may perform the above-described process or inverse process of the geometry prediction unit of the encoder.
  • the geometry inverse quantization processing unit may inversely quantize the geometry information based on the geometry prediction value.
  • the geometry inverse quantization processing unit may generate and provide reconstructed geometry information for decoding attribute information.
  • the geometry inverse quantization processing unit may perform a process or an inverse process of the geometry information inverse quantization processing unit of the above-described encoder.
  • the first-order geometry transformation dequantization processing unit may transform geometry information and perform inverse quantization.
  • the first-order geometry transformation dequantization processing unit may perform the above-described process of the geometry information inverse quantization processing unit of the encoder or an inverse process of the second-order geometry information transformation quantization processing unit.
  • a coordinate system of inverse quantized geometry information can be inversely transformed.
  • the inverse coordinate system transform unit may perform an inverse process of the coordinate system transform unit of the encoder described above.
  • the inverse coordinate system transform unit generates geometry information.
  • the attribute decoder 21020 decodes attribute information based on the reconstructed geometry information.
  • the attribute decoding unit 21020 may further include a residual attribute information inverse quantization processing unit.
  • the residual attribute information inverse quantization processor may inversely quantize the residual attribute information included in the attribute information bitstream.
  • signaling information included in the bitstream can be used. For example, as information on each tile/slice/block, inverse quantization is performed based on an attribute QP value.
  • the residual attribute information inverse quantization processing unit may perform an inverse process of the residual attribute information quantization processing unit of the above-described encoder.
  • the method/apparatus according to the embodiments perform the operation according to the described embodiments, and thereby, It is possible to provide an effect of applying/adjusting adaptive quantization for each region according to characteristics and service characteristics.
  • FIG. 22 shows an example of a configuration of an encoded point cloud according to embodiments.
  • the method/apparatus according to the embodiments may generate and obtain a point cloud bitstream as shown in the figure.
  • a point cloud bitstream including parameters including geometry information, attribute information, and/or metadata for the same may be generated (encoded) and received (decoded).
  • SPS Sequence Parameter Set
  • GPS Geometry Parameter Set
  • APS Attribute Parameter Set
  • TPS Tile Parameter Set
  • Point cloud data may have a bitstream form as shown in the drawing.
  • the point cloud data may include 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 embodiments.
  • Point cloud data may include one or more geometry and/or attributes.
  • the point cloud data may include geometry and/or attributes in units of one or more slices.
  • the geometry may have a structure of a geometry slice header and geometry slice data.
  • the TPS including signaling information is Tile(0). It may include tile_bounding_box_xyz0, Tile(0)_tile_bounding_box_whd, and the like.
  • the geometry may include geom_geom_parameter_set_id, geom_tile_id, geom_slice_id, geomBoxOrigin, geom_box_log2_scale, geom_max_node_size_log2, geom_num_points, and the like.
  • Signaling information may be signaled by being added to SPS, GPS, APS, TPS, and the like.
  • the signaling information may be signaled by being added to a TPS, a Geom for each Slice, or an Attr for each Slice.
  • the structure of the point cloud data may provide an efficient effect in terms of encoding/decoding/data accessing parameter set(s), geometry(s), and attribute(s) including signaling information.
  • Point cloud data related to the point cloud data transmitting/receiving apparatus may include at least one of a sequence parameter, a geometry parameter, an attribute parameter, a tile parameter, a geometry bitstream, or an attribute bitstream.
  • the region division related option information may be added to the SPS, TPS, or a geometry header for each slice for signaling.
  • Quantization-related information can be added to each tile, slice, and block for signaling.
  • Blocks can be signaled by creating a Block Parameter Set (BPS).
  • BPS Block Parameter Set
  • the method/apparatus according to the embodiments may transmit information signaling an operation according to the above-described embodiments by using a structure of a bitstream as shown in the figure.
  • additional information on an overlap processing method may be added to SPS, TPS, or a geometry header for each slice for signaling.
  • signals may be added to other positions of the bitstream to be signaled.
  • the virtual bounding box additional information for the position adjustment according to the overlap processing method may be added to the block parameter information Block Parameter Set (BPS) for signaling.
  • BPS Block Parameter Set
  • signals may be added to other positions of the bitstream to be signaled.
  • block ID information according to the overlap processing method can be added to the geometry node for signaling.
  • signals may be added to other positions of the bitstream to be signaled.
  • the method/apparatus according to the embodiments may signal an operation according to the embodiments by using the bitstream of FIG. 22 and the signaling information of FIG. 23 or less.
  • the method/apparatus according to the embodiments may signal an operation according to the embodiments by using the bitstream of FIG. 22 and the signaling information of FIG. 23 or less.
  • the point cloud data transmission device may transmit the encoded point cloud data in the form of the bitstream 3000.
  • the bitstream 3000 may include one or more sub-bitstreams.
  • the point cloud data transmission device (for example, the point cloud data transmission device described in FIGS. 1, 11, 14, and 1) divides the image of the point cloud data into one or more packets in consideration of the error of the transmission channel. Can be transmitted over the network.
  • the bitstream 3000 may include one or more packets (for example, a Network Abstraction Layer (NAL) unit). Therefore, even if some packets are lost in a poor network environment, the device for receiving point cloud data may restore a corresponding image using the remaining packets.
  • the point cloud data may be processed by dividing it into one or more slices or one or more tiles. Tiles and slices according to embodiments are areas for processing point cloud compression coding by partitioning a picture of point cloud data.
  • the point cloud data transmission apparatus may provide high-quality point cloud content by processing data corresponding to each region according to the importance of each divided region of the point cloud data. That is, the point cloud data transmission apparatus according to the embodiments may perform point cloud compression coding processing of data corresponding to an area important to a user having better compression efficiency and appropriate latency.
  • An image (or picture) of point cloud content is divided into units of basic processing units for point cloud compression coding.
  • a basic processing unit for point cloud compression coding according to embodiments is a coding tree (CTU). unit), brick, etc., and are not limited to this example.
  • a slice according to the embodiments does not have a rectangular shape as an area including basic processing units for one or more integer number of point cloud compression coding.
  • a slice according to embodiments includes data transmitted through a packet.
  • a tile according to embodiments includes one or more basic processing units for coding a point cloud compression as an area divided into a rectangular shape in an image.
  • One slice according to embodiments may be included in one or more tiles. Also, one tile according to embodiments may be included in one or more slices.
  • the bitstream 3000 includes a Sequence Parameter Set (SPS) for signaling of a sequence level, a Geometry Parameter Set (GPS) for signaling of geometry information coding, and an Attribute Parameter Set (APS) for signaling of attribute information coding. ), signaling information including a Tile Parameter Set (TPS) for signaling of a tile level, and one or more slices.
  • SPS Sequence Parameter Set
  • GPS Geometry Parameter Set
  • APS Attribute Parameter Set
  • TPS Tile Parameter Set
  • the SPS according to the embodiments is encoding information on the entire sequence such as a profile and a level, and may include comprehensive information on the entire file, such as a picture resolution and a video format.
  • One slice includes a slice header and slice data.
  • Slice data may include one geometry bitstream (Geom0 0 ) and one or more attribute bitstreams (Attr0 0 and Attr1 0 ).
  • the geometry bitstream may include a header (eg, a geometry slice header) and a payload (eg, geometry slice data).
  • the header of the geometry bitstream may include identification information of a parameter set included in GPS (geom_geom_parameter_set_id), a tile identifier (geom_tile id), a slice identifier (geom_slice_id), and information on data included in the payload.
  • the attribute bitstream may include a header (eg, attribute slice header or attribute brick header) and a payload (eg, attribute slice data or attribute brick data).
  • FIG. 23 illustrates an example of overlapping processing method information when generating/reconfiguring an octree according to embodiments.
  • Signaling information may deliver signaling information related to analysis segmentation and signaling information related to an overlap processing method when octree generation/reconfiguration.
  • Region division-based partition flag (area_distribution_based_partition_flag): Indicates whether region division based on variance analysis is applied.
  • Area division-based partition absolute value QP flag (area_distribution_based_partition_absolute_QP_flag): This indicates whether the QP value of a block is an absolute value or a relative value (offset, delta).
  • Profile IDC represents a standard (eg, ISO/IEC) profile followed by a bitstream.
  • the bitstream may not include a profile IDC value that is not described in the standard document, and other values of the profile IDC may be reserved for future use of ISO/IEC (indicates a profile to which the bitstream conforms as specified in Annex A. Bitstreams shall not contain values of profile_idc other than those specified in Annex A. Other values of profile_idc are reserved for future use by ISO/IEC).
  • profile compatibility flag (profile_compatibility_flags) is 1, it indicates that the bitstream follows a profile identified by a profile IDCD having a value of J described in the standard.
  • the profile_compatibility_flag[ j] value may be equal to 0 (equal to 1, indicates that the bitstream conforms to the profile indicated by profile_idc equal to j as specified in Annex A.
  • the value of profile_compatibility_flag[ j] shall be equal to 0 for any value of j that is not specified as an allowed value of profile_idc in Annex A).
  • Level IDC indicates a level followed by a bitstream as described in the standard.
  • bitstream may not include other level_idc values.
  • Other values of level_idc may be reserved for future use of ISO/IEC (indicates a level to which the bitstream conforms as specified in Annex A. Bitstreams shall not contain values of level_idc other than those specified in Annex A. Other values of level_idc are reserved for future use by ISO/IEC).
  • the SPS bounding box presence flag (sps_bounding_box_present_flag) is 1, it indicates that information on the size of the offset of the source bounding box is signaled within the SPS.
  • the source bounding box refers to a box that is the source of the bounding box. If this value is 0, it indicates that the source bounding box information is not signaled (equal to 1 indicates the source bounding box offset and the size information is signaled in the SPS.
  • sps_bounding_box_present_flag equal to 0 indicates the source bounding box information is not signaled ).
  • FIG. 24 illustrates an example of information on an overlap processing method when generating/reconfiguring an octree according to embodiments.
  • the method/apparatus according to the embodiments may deliver signaling information related to analysis segmentation and signaling information regarding an octree generation/reconfiguration overlap processing method through a bitstream.
  • the figure shows the configuration of the SPS.
  • profile_idc profile_compatibility_flags, level_idc, sps_bounding_box_present_flag, area_distribution_based_partition_flag, area_distribution_based_partition_unit, refer to the foregoing.
  • 25 illustrates an example of overlapping processing method information when generating/reconfiguring an octree according to embodiments.
  • the method/apparatus according to the embodiments may deliver signaling information related to analysis segmentation and signaling information regarding an octree generation/reconfiguration overlap processing method through a bitstream.
  • the figure shows a structure for signaling through TPS, not SPS.
  • Area partitioning-based partition octree traverse index indicates an order value according to the octree traverse method used during encoding.
  • Area division-based partition density Indicates the density of an area.
  • Region division-based partition redundancy point merge flag (area_distribution_based_partition_duplicated_point_merge_flag): Indicates whether duplicate points are allowed.
  • Area division-based partition geometry QP (area_distribution_based_partition_geometryQP): Represents geometry secondary QP. It is applied when the above-described second-order geometry quantization of the encoder and/or the second-order geometry inverse quantization of the decoder.
  • Area division-based partition attribute QP (area_distribution_based_partition_attributeQP): indicates the attribute QP.
  • Number of BPS sets (num_bps_set): This indicates the number of Block Parameter Sets (BPS) belonging to the tile.
  • BPS block IDS (bps_block_ids): represents the BPS ID belonging to the tile.
  • Number of tiles Indicates the number of tiles signaled for the bitstream. If not present, this value is inferred as 0 (specifies the number of tiles signaled for the bitstream.When not present, num_tiles is inferred to be 0).
  • Tile bounding box offset X (tile_bounding_box_offset_x[i]): represents the X offset of the I-th tile in the coordinate system (eg Cartesian). If not present, the value of tile_bounding_box_offset_x[ 0] is inferred to be sps_bounding_box_offset_x (indicates 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).
  • Tile bounding box offset Y indicates the Y offset of the I-th tile in the coordinate system (eg, decaf). If not present, the value of tile_bounding_box_offset_y[ 0] is sps_bounding_box_offset_y. (Indicates 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).
  • Tile bounding box offset Z indicates the Z offset of the I-th tile in the coordinate system (eg Cartesian). If not present, the value of tile_bounding_box_offset_z[ 0] is inferred as sps_bounding_box_offset_z (indicates 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) .
  • Tile bounding box size width (tile_bounding_box_size_width[ i] ): This indicates the width of the I-th tile in the coordinate system (eg, decaf). If not present, the value of tile_bounding_box_size_width[ 0] is inferred to be sps_bounding_box_size_width (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).
  • Tile bounding box size height indicates the height of the I-th tile in the coordinate system (eg Cartesian). If not present, the value of tile_bounding_box_size_height[ 0] is inferred to be sps_bounding_box_size_height (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).
  • Tile bounding box size depth indicates the depth of the I-th tile in the coordinate system (eg Cartesian). If not present, the value of tile_bounding_box_size_depth[ 0] is inferred as sps_bounding_box_size_depth (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_depth_box_size_depth).
  • 26 illustrates an example of overlap processing method information when an octree is generated/reconfigured according to embodiments.
  • the method/apparatus according to the embodiments may deliver signaling information related to analysis segmentation and signaling information regarding an octree generation/reconfiguration overlap processing method through a bitstream.
  • the figure shows a structure for signaling through GSH (Geometry Slice Header).
  • Geometry parameter set ID indicates the identifier value of the geometry parameter setter in the active GPS (specifies the value of the gps_geom_parameter_set_id of the active GPS).
  • Tile ID (gsh_tile_id): Represents the value of the tile identifier referenced by GSH.
  • the value of gsh_tile_id may be in the range of 0 to XX (inclusive) (specifies the value of the tile id that is referred to by the GSH.
  • the value of gsh_tile_id shall be in the range of 0 to XX, inclusive).
  • Slice ID Represents an identifier of a slice header for reference by other syntax elements.
  • the value of gsh_slice_id may have a range of 0 to XX (inclusive) (identifies the slice header for reference by other syntax elements.
  • the value of gsh_slice_id shall be in the range of 0 to XX, inclusive).
  • Box log scale indicates the scaling factor of the bounding box origin for the slice (specifies the scaling factor of bounding box origin for the slice).
  • Box Origin X indicates the x value of bounding box origin that scaled by gsh_box_log2_scale value.
  • Box Origin Y (gsh_box_origin_y): Specifies the y value of bounding box origin that scaled by gsh_box_log2_scale value.
  • Box Origin Z indicates the z value of bounding box origin that scaled by gsh_box_log2_scale value.
  • Max node size indicates the value of the variable MaxNodeSize used in the decoding process (specifies the value of the variable MaxNodeSize that is used in the decoding process)
  • Number of points indicates the number of coded points in the slice (specifies the number of coded points in the slice).
  • Box existence flag Indicates whether a box exists.
  • Box log scale presence flag (gps_gsh_box_log2_scale_present_flag ): Indicates whether the box log scale (gsh_box_log2_scale) exists.
  • FIG. 27 illustrates an example of information on an overlap processing method when generating/reconstructing an octree and information about a virtual bounding box for position adjustment according to an overlap processing method when generating/reconstructing an octree according to embodiments.
  • the method/apparatus according to the embodiments may deliver signaling information related to analysis segmentation, an octree generation/reconfiguration overlap processing method, and signaling information about a virtual bounding box for position adjustment through a bitstream.
  • the figure shows a structure for signaling through BPS (Block Paremeter Set).
  • BPS Block Paremeter Set
  • the overlap processing method is a method of configuring one octree and adjusting the position
  • virtual bounding box information for position adjustment may be added to the BPS.
  • Block virtual (virtual) bounding box offset X, Y, Z (block_virtual_bounding_box_offset_x/block_virtual_bounding_box_offset_y/block_virtual_bounding_box_offset_z): Indicates the position of a virtual bounding box for adjusting the position of each block when coding occupied bits using one octree.
  • Block virtual bounding box size width, height, and depth (block_virtual_bounding_box_size_width/block_virtual_bounding_box_size_height/block_virtual_bounding_box_size_depth): When coding occupied bits using one octree, the virtual bounding box size (e.g., width, height, and height to adjust the position of each block) ).
  • Reference tile addi (gsh_reference_tile_id): Indicates the connected tile ID.
  • Reference slice ID (gsh_reference_slice_id): Indicates the connected slice ID.
  • Block ID represents the unique ID of the BPS.
  • Number of blocks indicates the number of blocks.
  • Block ID (block_id): Represents the block ID.
  • Block bounding box X, Y, Z (block_bounding_box_x/block_bounding_box_y/block_bounding_box_z): indicates the left/bottom/front reference position of the block bounding box.
  • Block bounding box size width, height, and depth Represents the block bounding box size (eg, width, height, depth).
  • area_distribution_based_partition_method area_distribution_based_partition_octree_traverse_index [i] area_octree_overlap_handling_type, area_octree_overlap_handling_type, area_distribution_based_partition_density [i], area_distribution_based_partition_duplicated_point_merge_flag [i], area_distribution_based_partition_geometryQP [i], area_distribution_based_partition_attributeQP [i] and the like, refer to the above description.
  • FIG. 28 illustrates an example of block ID information according to an overlap processing method when generating/reconfiguring an octree according to embodiments.
  • the method/apparatus according to the embodiments may transmit signaling information about an analysis octree generation/reconstruction overlap processing method and a block ID according to the overlap processing method through a bitstream.
  • the figure shows a structure for signaling through a geometry node.
  • Reference block set block ID (bps_reference_block_set_block_id): When a redundant point exists in a voxel, indicates the ID of a block to which the redundant point belongs.
  • the single accupancy flag indicates that the current node includes a single child node
  • the single_occupancy_flag indicates that the current node includes multiple child nodes (equal to 1 indicates that the current node contains a single child node.single_occupancy_flag equal to 0 indicates the current node may contain multiple child nodes).
  • Accupancy IDX (occupancy_idx): identifies index of the single occupied child of the current node in the geometry octree child node traversal order in the geometry octree of the child node traversal order .
  • OccupancyMap 1 ⁇ occupancy_idx.
  • num_points_eq1_flag When the number of points flag (num_points_eq1_flag) is 1, it indicates that the current node includes a single point. If num_points_eq1_flag is 0, it indicates that the current child node includes at least two points. If not present, the value of num_points_eq1_flag is inferred as 1 (equal to 1 indicates that the current child node contains a single point.num_points_eq1_flag equal to 0 indicates that the current child node contains at least two points.When not present, the value of num_points_eq1_flag is inferred equal to 1).
  • the value obtained by adding 2 to the number of points represents the number of points represented by the current child node (plus 2 indicates the number of points represented by the current child node).
  • NeighbourPattern The variable NeighbourPattern can be set as follows:
  • NeighborPattern rN
  • the single accupancy flag indicates that the current node includes a single child node
  • the single_occupancy_flag indicates that the current node includes multiple child nodes (equal to 1 indicates that the current node) contains a single child node.single_occupancy_flag equal to 0 indicates the current node may contain multiple child nodes).
  • MaxGeometryOctreeDepth represents the octree depth
  • unique_geometry_points_flag When the unit geometry points flag (unique_geometry_points_flag) is 1, it indicates that all output points have unique positions. If unique_geometry_points_flag is 0, it indicates that the output points have the same positions (equal to 1 indicates that all output points have unique positions. unique_geometry_points_flag equal to 0 indicates that the output points may have same positions).
  • GeometryNodeChildrenCnt This indicates the number of child nodes in the array GeometryNodeChildren[ ].
  • the array GeometryNodeChildren[ i] identifies the index of the i-th occupied child node (GeometryNodeChildrenCnt identifies the number of child nodes in the array GeometryNodeChildren[ ]. child node of the current node)
  • FIG. 29 shows an example of a point cloud data transmission method according to embodiments.
  • the point cloud data transmission method may encode point cloud data.
  • the detailed encoding process includes the transmission device 10000 of FIG. 1, the point cloud video encoder 10002, the encoding 20001 of FIG. 2, the point cloud encoders 40000 to 40012 of FIG. 4, and the point cloud encoder of FIG. 12000 to 12011, etc.), the point cloud encoding process of Figs. 14 to 16, XR device linkage of Fig. 17, and the like.
  • the point cloud data transmission method may transmit a bitstream including point cloud data.
  • the specific transmission process is the transmitter 10003 of Fig. 1, the transmission 20002 of Fig. 2, the point cloud decoder of Fig. 10, the point cloud decoder of Fig. 11, the point cloud encoder 12012 of Fig. 12, and the points of Figs. 14 to 16. See the cloud delivery process, XR device linkage in FIG. 17, and the like.
  • Each step may generate and transmit the bitstream/signaling information according to FIGS. 22 to 28 described above.
  • the point cloud data transmission method is combined with the embodiments described in the present specification to provide an effect of applying/adjusting adaptive quantization for each area according to a characteristic of a content and a characteristic of a service.
  • FIG. 30 shows an example of a method for receiving point cloud data according to embodiments.
  • the point cloud data receiving method may receive a bitstream including point cloud data.
  • the specific reception process may refer to the reception device 10004 of FIG. 1, the receiver 10005, the transmission 20002 of FIG. 2, the reception unit 13000 of FIG. 13, and the delivery and reception processes of FIGS. 14 to 16.
  • the point cloud data receiving method may decode the point cloud data.
  • the detailed decoding process includes the point cloud video decoder 10006 of FIG. 1, the decoding 20003 of FIG. 2, the point cloud decoder of FIG. 10, the point cloud decoder of FIG. 11, and the point cloud decoders 13000 to 13011 of FIG. Refer to the point cloud decoder of Fig. 21, etc.
  • the point cloud data receiving method may render the point cloud data.
  • the specific rendering process may refer to the renderer 10007 of FIG. 1, the rendering 20004 of FIG. 2, the renderer 13011 of FIG. 13, the display/rendering process of FIGS. 14-16, the XR device linking process of FIG. 17, and the like. have.
  • Each step may receive the bitstream/signaling information according to FIGS. 22 to 28 described above, and process each operation based thereon.
  • the point cloud data receiving method is combined with the embodiments described in the present specification to provide an effect of applying/adjusting adaptive quantization for each area according to the characteristics of the content and the service.
  • the description of the present specification refers to both a method and/or an apparatus, and the description of the method and the description of the apparatus may complement each other and be applied.
  • Each of the above-described parts, modules or units may be software, processor, or hardware parts that execute successive processes stored in a memory (or storage unit). Each of the steps described in the above-described embodiment may be performed by processor, software, and hardware parts. Each module/block/unit described in the above-described embodiment may operate as a processor, software, or hardware. In addition, the methods suggested by the embodiments may be executed as code. This code can be written to a storage medium that can be read by the processor, and thus can be read by a processor provided by the apparatus.
  • A/B may mean “A and/or B.”
  • A, B may mean “A and/or B.”
  • A/B/C may mean “at least one of A, B, and/or C.”
  • A/B/C may mean “ at least one of A, B, and/or C.”
  • Various components of the apparatus of the embodiments may be implemented by hardware, software, firmware, or a combination thereof.
  • Various components of the embodiments may be implemented as one chip, for example, one hardware circuit.
  • the components according to the embodiments may be implemented as separate chips.
  • at least one or more of the components of the device according to the embodiments may be composed of one or more processors capable of executing one or more programs, and one or more programs may be implemented. It may include instructions for performing or performing any one or more of the operations/methods according to the examples.
  • Executable instructions for performing the method/operations of the apparatus may be stored in a non-transitory CRM or other computer program products configured to be executed by one or more processors, or may be stored in one or more It may be stored in a temporary CRM or other computer program products configured for execution by the processors.
  • the memory according to the embodiments may be used as a concept including not only volatile memory (eg, RAM, etc.) but also non-volatile memory, flash memory, PROM, and the like.
  • it may be implemented in the form of a carrier wave such as transmission through the Internet.
  • the processor-readable recording medium is distributed over a computer system connected through a network, so that the processor-readable code can be stored and executed in a distributed manner.
  • first and second may be used to describe various elements of the embodiments. However, the interpretation of various components according to the embodiments should not be limited by the above terms. These terms are only used to distinguish one component from another. It's just a thing.
  • a first user input signal may be referred to as a second user input signal.
  • the second user input signal may be referred to as a first user input signal.
  • the use of these terms should be construed as not departing from the scope of various embodiments.
  • the first user input signal and the second user input signal are both user input signals, but do not mean the same user input signals unless clearly indicated in context.
  • Conditional expressions such as when, when, and when used to describe the embodiments are not limited to an optional case. When a specific condition is satisfied, it is intended to perform a related operation in response to a specific condition or to interpret the related definition.
  • the embodiments may be applied wholly or partially to the point cloud data transmission/reception apparatus and system.
  • Embodiments may include changes/modifications, and changes/modifications do not depart from the scope of the claims and the same.

Landscapes

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

Abstract

실시예들에 따른 포인트 클라우드 데이터 송신 방법은 포인트 클라우드 데이터를 인코딩하는 단계, 포인트 클라우드 데이터를 포함하는 비트스트림을 전송하는 단계; 를 포함한다. 실시예들에 따른 포인트 클라우드 데이터 수신 방법은 포인트 클라우드 데이터를 포함하는 비트스트림을 수신하는 단계, 포인트 클라우드 데이터를 디코딩하는 단계, 포인트 클라우드 데이터를 렌더링하는 단계를 포함한다.

Description

포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
실시예들은 사용자에게 VR (Virtual Reality, 가상현실), AR (Augmented Reality, 증강현실), MR (Mixed Reality, 혼합현실), 및 자율 주행 서비스 등의 다양한 서비스를 제공하기 위하여 Point Cloud 콘텐츠를 제공하는 방안을 제공한다.
포인트 클라우드는 3D공간 상의 포인트들의 집합이다. 3D공간 상의 포인트들의 양이 많아서 포인트 클라우드 데이터를 생성하기 어려운 문제점이 있다.
포인트 클라우드의 데이터를 전송하고 수신하기 위해서 많은 처리량이 요구되는 문제점이 있다.
실시예들에 따른 기술적 과제는, 전술한 문제점 등을 해결하기 위해서, 포인트 클라우드를 효율적으로 송수신하기 위한 포인트 클라우드 데이터 전송 장치, 전송 방법, 포인트 클라우드 데이터 수신 장치 및 수신 방법을 제공하는데 있다.
실시예들에 따른 기술적 과제는, 지연시간(latency) 및 인코딩/디코딩 복잡도를 해결하기 위한 포인트 클라우드 데이터 전송 장치, 전송 방법, 포인트 클라우드 데이터 수신 장치 및 수신 방법을 제공하는데 있다.
다만, 전술한 기술적 과제만으로 제한되는 것은 아니고, 본 문서 전체 내용에 기초하여 당업자가 유추할 수 있는 다른 기술적 과제로 실시예들의 권리범위가 확장될 수 있다.
상술한 목적 및 다른 이점을 달성하기 위해서, 실시예들에 따른 포인트 클라우드 데이터 송신 방법은 포인트 클라우드 데이터를 인코딩하는 단계, 포인트 클라우드 데이터를 포함하는 비트스트림을 전송하는 단계; 를 포함한다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법은 포인트 클라우드 데이터를 포함하는 비트스트림을 수신하는 단계, 포인트 클라우드 데이터를 디코딩하는 단계, 포인트 클라우드 데이터를 렌더링하는 단계를 포함한다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법, 송신 장치, 포인트 클라우드 데이터 수신 방법, 수신 장치는 퀄리티 있는 포인트 클라우드 서비스를 제공할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법, 송신 장치, 포인트 클라우드 데이터 수신 방법, 수신 장치는 다양한 비디오 코덱 방식을 달성할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법, 송신 장치, 포인트 클라우드 데이터 수신 방법, 수신 장치는 자율주행 서비스 등 범용적인 포인트 클라우드 콘텐츠를 제공할 수 있다.
도면은 실시예들을 더욱 이해하기 위해서 포함되며, 도면은 실시예들에 관련된 설명과 함께 실시예들을 나타낸다.
도1은 실시예들에 따른 포인트 클라우드(Point Cloud) 콘텐츠 제공을 위한 시스템을 나타낸다.
도2는 실시예들에 따른 Point Cloud 콘텐츠 제공을 위한 과정을 나타낸다.
도3은 실시예들에 따른 Point Cloud 캡처 장비 배열 구성을 나타낸다.
도4는 실시예들에 따른 포인트 클라우드 인코더(Point Cloud Encoder)를 나타낸다.
도5는 실시예들에 따른 3차원 공간상의 복셀을 나타낸다.
도6은 실시예들에 따른 옥트리와 occupancy 코드의 예시를 나타낸다.
도7은 실시예들에 따른 이웃 노드 패턴의 예시를 나타낸다.
도8은 실시예들에 따른 LOD별 Point Cloud 콘텐츠의 Point 구성의 예시를 나타낸다.
도9는 실시예들에 따른 LOD별 Point Cloud 콘텐츠의 Point 구성의 예시를 나타낸다.
도10은 실시예들에 따른 포인트 클라우드 디코더(Point Cloud Decoder)의 블록 다이어그램(block diagram) 예시를 나타낸다.
도11은 실시예들에 따른 포인트 클라우드 디코더(Point Cloud Decoder) 예시를 나타낸다.
도12는 실시예들에 따른 송신기의 Point Cloud 비디오 인코딩을 위한 구성요소를 나타낸다.
도13은 실시예들에 따른 수신기의 Point Cloud 비디오 디코딩을 위한 구성요소를 나타낸다.
도14는 실시예들에 따른 G-PCC 기반 point cloud 데이터 저장 및 스트리밍을 위한 아키텍쳐를 나타낸다.
도15는 실시예들에 따른 point cloud 데이터 저장 및 전송을 나타낸다.
도16은 실시예들에 따른 point cloud 데이터 수신 장치를 나타낸다.
도17은 실시예들에 따른 포인트 클라우드 데이터 송수신 방법/장치와 연동 가능한 구조의 예시를 나타낸다.
도 18은 실시예들에 따른 블록의 양자화 및 영역 변화의 예시를 나타낸다.
도 19는 실시예들에 따른 블록의 가상 위치 재조정의 예시를 나타낸다.
도 20은 실시예들에 따른 지오메트리 인코딩 및 어트리뷰트 인코딩의 예시를 나타낸다.
도 21은 실시예들에 따른 지오메트리 디코딩 및 어트리뷰트 디코딩의 예시를 나타낸다.
도 22는 실시예들에 따른 인코딩된 포인트 클라우드의 구성의 예시를 나타낸다.
도 23은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
도 24는 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
도 25는 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
도 26은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
도 27은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보 및 옥트리 생성/재구성시 오버랩 처리 방안에 따른 위치 조정에 대한 가상 바운딩 박스 정보의 예시를 나타낸다.
도 28은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안에 따른 블록 아이디 정보의 예시를 나타낸다.
도 29은 실시예들에 따른 포인트 클라우드 데이터 송신 방법의 예시를 나타낸다.
도 30은 실시예들에 따른 포인트 클라우드 데이터 수신 방법의 예시를 나타낸다.
실시예들의 바람직한 실시예에 대해 구체적으로 설명하며, 그 예는 첨부된 도면에 나타낸다. 첨부된 도면을 참조한 아래의 상세한 설명은 실시예들의 실시예에 따라 구현될 수 있는 실시예만을 나타내기보다는 실시예들의 바람직한 실시예를 설명하기 위한 것이다. 다음의 상세한 설명은 실시예들에 대한 철저한 이해를 제공하기 위해 세부 사항을 포함한다. 그러나 실시예들이 이러한 세부 사항 없이 실행될 수 있다는 것은 당업자에게 자명하다.
실시예들에서 사용되는 대부분의 용어는 해당 분야에서 널리 사용되는 일반적인 것들에서 선택되지만, 일부 용어는 출원인에 의해 임의로 선택되며 그 의미는 필요에 따라 다음 설명에서 자세히 서술한다. 따라서 실시예들은 용어의 단순한 명칭이나 의미가 아닌 용어의 의도된 의미에 근거하여 이해되어야 한다.
도1은 실시예들에 따른 포인트 클라우드(Point Cloud) 콘텐츠 제공을 위한 시스템의 예시를 나타낸다.
실시예들에 따른 포인트 클라우드 데이터 전송 장치(Transmission device, 10000)는 포인트 클라우드 비디오 획득부(Point Cloud Video Acquisition, 10001), 포인트 클라우드 비디오 인코더(Point Cloud Video Encoder, 10002) 및/또는 트랜스미터(Transmitter (or Communication module), 10003)를 포함한다.
실시예들에 따른 포인트 클라우드 비디오 획득부(Point Cloud Video Acquisition, 10001)는 Point Cloud 비디오의 캡처, 합성 또는 생성 과정 등을 통한 Point Cloud 비디오를 획득한다.
실시예들에 따른 포인트 클라우드 비디오 인코더(Point Cloud Video Encoder, 10002)는 포인트 클라우드 비디오 데이터를 인코딩한다.
실시예들에 따른 트랜스미터(Transmitter (or Communication module), 10003)는 인코딩된 포인트 클라우드 비디오 데이터를 비트스트림의 형태로 전송한다.
실시예들에 따른 포인트 클라우드 데이터 수신 장치(Reception device, 10004)는 리시버(Receiver, 10005), 포인트 클라우드 비디오 디코더(Point Cloud Decoder, 10006) 및/또는 렌더러(Renderer, 10007)를 포함한다.
실시예들에 따른 리시버(Receiver, 10005)는 포인트 클라우드 비디오 데이터를 포함하는 비트스트림을 수신한다. 실시예들에 따라 리시버(10005)는 피드백 정보(Feedback Information)을 포인트 클라우드 데이터 전송 장치(10000)에 전송할 수 있다.
포인트 클라우드 비디오 디코더(Point Cloud Decoder, 10006)는 수신된 포인트 클라우드 비디오 데이터를 디코딩한다.
렌더러(Renderer, 10007)는 디코딩된 포인트 클라우드 비디오 데이터를 렌더링한다. 실시예들에 따라 렌더러(10007)는 수신단 측에서 획득된 피드백 정보를 포인트 클라우드 비디오 디코더(10006)에 전송할 수 있다. 실시예들에 따른 포인트 클라우드 비디오 데이터는 피드백 정보를 리시버에 전송할 수 있다. 실시예들에 따라 포인트 클라우드 전송 장치가 수신한 피드백 정보는 포인트 클라우드 비디오 인코더에 제공될 수 있다.
실시예들은 사용자에게 VR (Virtual Reality, 가상현실), AR (Augmented Reality, 증강현실), MR (Mixed Reality, 혼합현실), 및 자율 주행 서비스 등 다양한 서비스를 제공하기 위하여 포인트 클라우드(Point Cloud) 콘텐츠를 제공할 수 있다.
Point Cloud 콘텐츠 서비스를 제공하기 위하여, 먼저 Point Cloud 비디오가 획득될 수 있다. 획득된 Point Cloud 비디오는 일련의 과정을 거쳐 전송되고, 수신측에서는 수신된 데이터를 다시 원래의 Point Cloud 비디오로 가공하여 렌더링 할 수 있다. 이를 통해 Point Cloud 비디오가 사용자에게 제공될 수 있다. 실시예들은 이러한 일련의 과정을 효과적으로 수행하기 위해 필요한 방안을 제공한다.
Point Cloud 콘텐츠 서비스를 제공하기 위한 전체의 과정(포인트 클라우드 데이터 전송 방법 및/또는 포인트 클라우드 데이터 수신 방법)은 획득 과정, 인코딩 과정, 전송 과정, 디코딩 과정, 렌더링 과정 및/또는 피드백 과정을 포함할 수 있다.
실시예들에 따라 포인트 클라우드 콘텐츠 (또는 포인트 클라우드 데이터)를 제공하는 과정은 포인트 클라우드 컴프레션(Point Cloud Compression) 과정이라고 호칭할 수 있다. 실시예들에 따라 포인트 클라우드 컴프레션 과정은 지오메트리 기반 포인트 클라우드 컴프레션(Geometry-based Point Cloud Compression) 과정을 의미할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 전송 장치 및 포인트 클라우드 데이터 수신 장치의 각 엘리먼트는 하드웨어, 소프트웨어, 프로세서 및/또는 그것들의 결합 등을 의미할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법은 포인트 클라우드 데이터를 인코딩하는 단계; 포인트 클라우드 데이터를 포함하는 비트스트림을 전송하는 단계; 를 포함한다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법은 포인트 클라우드 데이터를 포함하는 비트스트림을 수신하는 단계; 포인트 클라우드 데이터를 디코딩하는 단계; 포인트 클라우드 데이터를 렌더링하는 단계; 를 포함한다.
도2는 실시예들에 따른 Point Cloud 콘텐츠 제공을 위한 과정을 나타낸다.
실시예들에 따른 포인트 클라우드 데이터 전송 방법 및 포인트 클라우드 데이터 수신 방법은 획득(20000), 인코딩(20001), 전송(20002), 디코딩(20003), 렌더링(20004) 및/또는 피드백(20005)을 포함한다.
실시예들에 따른 획득(20000)은 포인트 클라우드 데이터를 획득하는 단계이다. 실시예들에 따른 포인트 클라우드 데이터는 Ply (Polygon File format or the Stanford Triangle format) 파일일 수 있다. 실시예들에 따른 Ply 파일은 지오메트리(Geometry) 및/또는 어트리뷰트(Attribute)를 포함한다. 실시예들에 따른 지오메트리는 3차원 공간 상의 점들을 나타낸다. 실시예들에 따른 어트리뷰트는 지오메트리에 따른 3차원 공간 상의 각 점에 대한 색상, 반사 등의 속성을 나타낸다.
실시예들에 따른 인코딩(20001)은 지오메트리 및/또는 어트리뷰트를 포함하는 포인트 클라우드 데이터를 인코딩하는 단계이다. 실시예들에 따른 인코딩된 데이터는 비트스트림의 형태일 수 있다.
실시예들에 따른 전송(20002)은 인코딩된 데이터를 전송하는 단계이다. 실시예들에 따른 전송 장치는 실시예들에 따른 실시예들에 따른 수신 장치로부터 피드백 정보를 수신한다. 수신된 피드백 정보는 실시예들에 따른 인코딩에 전달될 수 있다.
실시예들에 따른 디코딩(20003)은 비트스트림을 수신하고, 비트스트림에 포함된 포인트 클라우드 데이터를 디코딩하는 단계이다. 디코딩하는 단계는 실시예들에 따라 사용자에 관한 피드백 정보를 획득할 수 있다.
실시예들에 따른 렌더링(20004)은 지오메트리 및/또는 어트리뷰트를 포함하는 디코딩된 데이터를 렌더링하는 단계이다.
실시예들에 따른 피드백(20005)은 수신단 및/또는 사용자로부터 피드백 정보를 획득하고, 실시예들에 따른 포인트 클라우드 데이터 전송 방법 및 포인트 클라우드 데이터 수신 방법에 획득된 피드백 정보를 제공하는 단계이다. 실시예들에 따른 피드백 정보는 사용자에 관한 정보를 포함한다. 예를 들어, 피드백 정보는 사용자에 관련된 헤드 오리엔테이션 정보, 사용자에 관련된 뷰포트 정보 등을 포함한다. 실시예들에 따른 피드백 정보는 실시예들에 따른 수신기의 디코더 및/또는 전송기에 제공될 수 있다. 사용자의 헤드 오리엔테이션 및/또는 뷰포트에 대응하는 포인트 클라우드 데이터를 인코딩/디코딩할 수 있다. 모든 시점에 대한 데이터를 인코딩/디코딩할 필요 없이, 사용자에 관련된 데이터를 효율적으로 인코딩/디코딩할 수 있는 효과가 있다.
실시예에 따른 Point Cloud 콘텐츠 서비스 제공을 위한 과정은 다음과 같다.
포인트 클라우드 컴프레션(Point Cloud Compression) 처리는 지오메트리 기반 포인트 클라우드 컴프레션(Geometry-based Point Cloud Compression) 과정을 포함할 수 있다.
Point Cloud Compression 시스템은 실시예들에 따른 전송 디바이스 및 수신 디바이스를 포함할 수 있다. 실시예들에 따라 전송 디바이스는 인코더, 전송 장치, 전송기 등으로 호칭될 수 있다. 실시예들에 따라 수신 디바이스는 디코더, 수신 장치, 수신기 등으로 호칭될 수 있다. 전송 디바이스는 Point Cloud 비디오를 인코딩하여 비트스트림을 출력할 수 있으며, 이를 파일 또는 스트리밍 (스트리밍 세그먼트) 형태로 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스로 전달할 수 있다. 예를 들어, 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다.
전송 디바이스는 개략적으로 Point Cloud 비디오 획득부, Point Cloud 비디오 인코더, 전송부를 포함할 수 있다. 수신 디바이스는 개략적으로 수신부, Point Cloud 비디오 디코더 및 렌더러를 포함할 수 있다. 인코더는 Point Cloud 비디오/영상/픽처/프레임 인코딩 장치라고 불릴 수 있고, 디코더는 Point Cloud 비디오/영상/픽처/프레임 디코딩 장치라고 불릴 수 있다. 송신기는 Point Cloud 비디오 인코더에 포함될 수 있다. 수신기는 Point Cloud 비디오 디코더에 포함될 수 있다. 렌더러는 디스플레이부를 포함할 수도 있고, 렌더러 및/또는 디스플레이부는 별개의 디바이스 또는 외부 컴포넌트로 구성될 수도 있다. 상기 전송 디바이스 및 상기 수신 디바이스는 피드백 과정을 위한 별도의 내부 또는 외부의 모듈/유닛/컴포넌트를 더 포함할 수도 있다. 실시예들에 따른 전송 디바이스 및 수신 디바이스에 포함된 각 엘리먼트는 하드웨어, 소프트웨어 및/또는 프로세서로 구성될 수 있다.
Point Cloud 비디오 획득부는 Point Cloud 비디오의 캡처, 합성 또는 생성 과정 등을 통한 Point Cloud 비디오를 획득하는 과정을 수행할 수 있다. 획득 과정에 의해 다수의 Point들에 대한 3D 위치(x, y, z)/속성 (color, reflectance, transparency 등) 데이터, 예를 들어, PLY(Polygon File format or the Stanford Triangle format) 파일 등이 생성 될 수 있다. 여러 개의 프레임을 갖는 비디오의 경우 하나 이상의 파일들이 획득될 수 있다. 캡처 과정에서 point cloud 관련 메타데이터 (예를 들어 캡처와 관련된 메타데이터 등)가 생성될 수 있다.
Point Cloud 비디오 인코더는 입력 Point Cloud 비디오를 인코딩할 수 있다. 하나의 비디오는 다수의 프레임을 포함할 수 있으며, 하나의 프레임은 정지 영상/픽처에 대응될 수 있다. 본 문서에서, Point Cloud 비디오라 함은 Point Cloud 영상/프레임/픽처를 포함할 수 있으며, Point Cloud 비디오는 Point Cloud 영상/프레임/픽처와 혼용되어 사용될 수 있다. Point Cloud 비디오 인코더는 Geometry-based Point Cloud Compression (G-PCC) 절차를 수행할 수 있다. Point Cloud 비디오 인코더는 압축 및 코딩 효율을 위하여 예측, 변환, 양자화, 엔트로피 코딩 등의 일련의 절차를 수행할 수 있다. 인코딩된 데이터(인코딩된 비디오/영상 정보)는 비트스트림(bitstream) 형태로 출력될 수 있다. G-PCC 절차에 기반하는 경우 Point Cloud 비디오 인코더는 Point Cloud 비디오를 후술하는 바와 같이 지오메트리 및 어트리뷰트(attribute)로 나누어 인코딩할 수 있다. 이 경우 출력 비트스트림은 지오메트리 비트스트림 및/또는 어트리뷰트 비트스트림을 포함할 수 있다. 상기 어트리뷰트는 (컬러) 텍스쳐 정보를 포함할 수 있다.
인캡슐레이션부는 비트스트림 형태로 출력된 인코딩된 비디오/영상 정보 또는 데이터를 파일 또는 스트리밍 형태로 인캡슐레이션 할 수 있다. 전송부는 point cloud 비트스트림 혹은 해당 비트스트림을 포함하는 파일/세그먼트를 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스의 수신부로 전달할 수 있다. 디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다. 전송부는 미리 정해진 파일 포멧을 통하여 미디어 파일을 생성하기 위한 엘리먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘레멘트를 포함할 수 있다. 수신부는 상기 비트스트림을 추출하여 디코딩 장치로 전달할 수 있다.
Point Cloud 비디오 디코더는 상기 비트스트림을 입력받아 상기 Point Cloud 비디오 인코더의 동작에 대응하는 동작을 수행하여 비디오/영상을 디코딩할 수 있다. 이 경우 Point Cloud 비디오 디코더는 Point Cloud 비디오를 후술하는 바와 같이 지오메트리 및 어트리뷰트(attribute)로 나누어 디코딩할 수 있다. 예를 들어, Point Cloud 비디오 디코더는 입력 비트스트림 내 포함된 지오메트리 비트스트림으로부터 지오메트리를 복원(디코딩)할 수 있고, 상기 입력 비트스트림 내 포함된 어트리뷰트 비트스트림 및 상기 복원된 지오메트리를 기반으로 어트리뷰트를 복원(디코딩)할 수 있다. 상기 복원된 지오메트리에 따른 위치 정보 및 상기 디코딩된 어트리뷰트에 따른 (컬러) 텍스처 어트리뷰트를 기반으로 3차원의 Point Cloud 비디오/영상을 복원할 수 있다. 상술한 바와 같이 상기 어트리뷰트는 (컬러) 텍스쳐 정보를 포함할 수 있다.
렌더러는 디코딩된 Point Cloud 비디오/영상을 렌더링할 수 있다. 렌더링된 비디오/영상은 디스플레이부를 통하여 디스플레이될 수 있다. 사용자는 VR/AR 디스플레이 또는 일반 디스플레이 등을 통하여 렌더링 된 결과의 전부 또는 일부 영역을 볼 수 있다.
피드백 과정은 렌더링/디스플레이 과정에서 획득될 수 있는 다양한 피드백 정보들을 송신측으로 전달하거나 수신측의 디코더에 전달하는 과정을 포함할 수 있다. 피드백 과정을 통해 Point Cloud 비디오 소비에 있어 인터랙티비티(interactivity)가 제공될 수 있다. 실시예에 따라, 피드백 과정에서 헤드 오리엔테이션(Head Orientation) 정보, 사용자가 현재 보고 있는 영역을 나타내는 뷰포트(Viewport) 정보 등이 전달될 수 있다. 실시예에 따라, 사용자는 VR/AR/MR/자율주행 환경 상에 구현된 것들과 상호작용 할 수도 있는데, 이 경우 그 상호작용과 관련된 정보가 피드백 과정에서 송신측 내지 서비스 프로바이더 측으로 전달될 수도 있다. 실시예에 따라 피드백 과정은 수행되지 않을 수도 있다.
실시예들은 상술한 바와 같이 Point Cloud 비디오 압축에 관한 것이다. 예를 들어, 실시예들이 설명하는 방법은 MPEG (Moving Picture Experts Group)의 PCC (point cloud compression or point cloud coding) 표준 (ex. G-PCC or V-PCC 표준) 또는 차세대 비디오/이미지 코딩 표준에 적용될 수 있다.
도3은 실시예들에 따른 Point Cloud 캡처 장비 배열 구성을 나타낸다.
실시예들에 따른 포인트 클라우드 데이터는 카메라 등에 의해 획득될 수 있다. 실시예들에 따른 캡쳐 방법은 예를 들어 인워드-페이싱 및/또는 아웃워드-페이싱이 있을 수 있다.
실시예들에 따른 인워드-페이싱은 포인트 클라우드 데이터의 오브젝트(Object)를 하나 또는 하나 이상의 카메라들이 오브젝트의 바깥에서 안쪽 방향으로 촬영할 수 있다.
실시예들에 따른 아웃워드-페이싱은 포인트 클라우드 데이터의 오브젝트를 하나 또는 하나 이상의 카메라들이 오브젝트의 안쪽에서 바깥 방향으로 촬영할 수 있다. 예를 들어, 실시예들에 따라 카메라는 4개일 수 있다.
실시예들에 따른 포인트 클라우드 데이터 또는 포인트 클라우드 콘텐츠는 다양한 형태의 3D 공간상에 표현되는 객체/환경의 비디오 또는 정지 영상일 수 있다.
1. 실시예들에 따른 Point Cloud 콘텐츠 획득 과정:
Point Cloud 비디오의 캡처, 합성 또는 생성 과정 등을 통한 Point Cloud 비디오를 획득하는 과정을 의미한다. 획득 과정에 의해 다수의 Point들에 대한 3D 위치(x, y, z)/속성 (color, reflectance, transparency 등) 데이터, 예를 들어, PLY(Polygon File format or the Stanford Triangle format) 파일 등이 생성 될 수 있다. 여러 개의 프레임을 갖는 비디오의 경우 하나 이상의 파일들이 획득될 수 있다. 캡처 과정에서 캡처와 관련된 메타데이터가 생성될 수 있다.
1.1 실시예들에 따른 장비를 통한 Point Cloud 비디오 캡처:
Point Cloud 콘텐츠 캡처를 위해서 깊이(depth)를 획득 할 수 있는 카메라 장비(적외선 패턴 프로젝터와 적외선 카메라의 조합)와 깊이 정보에 대응되는 색상 정보를 추출 할 수 있는 RGB 카메라들의 조합으로 구성될 수 있다. 또는 레이저 펄스를 쏘고 반사되어 돌아오는 시간을 측정하여 반사체의 위치 좌표를 측정하는 레이더 시스템을 이용하는 라이다(LiDAR)를 통해 깊이 정보를 추출할 수 있다. 깊이 정보로부터 3차원 공간상의 점들로 구성된 지오메트리(geometry)의 형태를 추출하고, RGB 정보로부터 각 점의 색상/반사를 표현하는 속성(attribute)을 추출할 수 있다. Point Cloud 콘텐츠는 점들에 대한 위치(x, y, z)와 색상(YCbCr 또는 RGB) 또는 반사율(r) 정보로 구성될 수 있다.
Point Cloud 콘텐츠는 외부 환경을 캡처하는 아웃워드-페이싱(outward-facing) 방식과, 중심 객체를 캡처하는 인워드-페이싱(inward-facing) 방식이 있을 수 있다. VR/AR 환경에서 객체(예-캐릭터, 선수, 물건, 배우 등 핵심이 되는 객체)를 360도로 사용자가 자유롭게 볼 수 있는 Point Cloud 콘텐츠로 구성할 경우, 캡처 카메라의 구성은 인워드-페이싱 방식을 사용하게 될 수 있다. 자율 주행과 같이 자동차에서 현재 주변 환경을 Point Cloud 콘텐츠로 구성할 경우, 캡처 카메라의 구성은 아웃워드-페이싱 방식을 사용하게 될 수 있다. 여러대의 카메라를 통해 Point Cloud 콘텐츠가 캡처 될 수 있기 때문에, 카메라들 사이의 글로벌 공간 좌표계(global coordinate system)를 설정하기 위해 콘텐츠를 캡처 하기 전에 카메라의 캘리브레이션 과정이 필요할 수도 있다.
1.2 실시예들에 따른 장비 외 Point Cloud 비디오 합성:
실시예들에 따른 Point Cloud 콘텐츠는 다양한 형태의 3D 공간상에 나타내어지는 객체/환경의 비디오 또는 정지 영상일 수 있다.
그 외에 Point Cloud 콘텐츠의 획득 방법은 캡처 된 Point Cloud 비디오를 기반으로 임의의 Point Cloud 비디오가 합성 될 수 있다.
또는 컴퓨터로 생성된 가상의 공간에 대한 Point Cloud 비디오를 제공하고자 하는 경우, 실제 카메라를 통한 캡처가 수행되지 않을 수 있다. 이 경우 단순히 관련 데이터가 생성되는 과정으로 해당 캡처 과정이 갈음될 수 있다.
1.3 실시예들에 따른 Point Cloud 비디오 후처리:
캡처된 Point Cloud 비디오는 콘텐츠의 질을 향상시키기 위한 후처리가 필요할 수 있다.
영상 캡처 과정에서 카메라 장비가 제공하는 범위에서 최대/최소 깊이 값을 조정할 수 있지만 그 이후에도 원하지 않는 영역의 points 데이터들이 포함될 수 있어서 원하지 않는 영역(예, 배경)을 제거 한다거나, 또는 연결된 공간을 인식하고 구멍(spatial hole)을 메우는 후처리를 수행할 수 있다.
또한 공간 좌표계를 공유하는 카메라들로부터 추출된 Point Cloud는 캘리브레이션 과정을 통해 획득된 각 카메라의 위치 좌표를 기준으로 각 point들에 대한 글로벌 좌표계로의 변환 과정을 통해 하나의 콘텐츠로 통합될 수 있다. 이를 통해 하나의 넓은 범위의 Point Cloud 콘텐츠를 생성할 수도 있고, 또는 point들의 밀도가 높은 Point Cloud 콘텐츠를 획득할 수도 있다.
도4는 실시예들에 따른 포인트 클라우드 인코더(Point Cloud Encoder)를 나타낸다.
실시예들에 따른 포인트 클라우드 인코더는 좌표계 변환부(Transformation Coordinates, 40000), 양자화(Quantize and Remove Points (Voxelize), 40001), 옥트리 분석부(Analyze Octree, 40002), 서페이스 어프록시메이션 분석부(Analyze Surface Approximation, 40003), 아리스메틱 인코더(Arithmetic Encode, 40004), 지오메트리 리컨스럭션부(Reconstruct Geometry, 40005), 컬러 변환부(Transform Colors, 40006), 속성 변환부(Transfer Attributes, 40007), RATH 변환부(40008), LOD생성부(Generated LOD, 40009), Lifting 변환부(40010), 계수 양자화부(Quantize Coefficients, 40011) 및/또는 아리스메틱 인코딩부(Arithmetic Encode, 40012)를 포함한다.
실시예들에 따른 좌표계 변환부(Transformation Coordinates, 40000)는 포지션들(positions)을 수신하여 좌표계(coordinate)로 변환한다. 예를 들어, 포지션들이 3차원 (XYZ) 위치 정보로 변환될 수 있다. 실시예들에 따른 3차원 공간 상의 위치 정보는 지오메트리 정보로 지칭될 수 있다.
실시예들에 따른 양자화(Quantize and Remove Points (Voxelize), 40001)는 지오메트리 정보를 양자화한다. 예를 들어, 포인트들의 최소 위치 값을 기준으로 포인트들의 위치 값을 조정하여 양자화할 수 있다. 실시예들에 따른 양자화(40001)는 포인트들을 복셀화(voxelization)할 수 있다. 복셀화는 3차원 공간 상의 위치정보를 표현하는 최소한의 유닛을 의미한다.
실시예들에 따른 옥트리 분석부(Analyze Octree, 40002)는 복셀을 옥트리(octree) 구조로 나타낸다. 실시예들에 따른 옥트리는 복셀 공간을 팔진 트리 구조에 기반하여 포인트들을 표현한다.
실시예들에 따른 서페이스 어프록시메이션 분석부(Analyze Surfacce Approximation, 40003)는 옥트리를 분석하고, 근사화할 수 있다. 실시예들에 따른 옥트리 분석 및 근사화는 효율적으로 옥트리 및 복셀화를 제공하기 위해서 다수의 포인트들을 포함하는 영역에 대해 복셀화하기 위해 분석하는 과정이다.
실시예들에 따른 아리스메틱 인코더(Arithmetic Encode, 40004)는 옥트리 및/또는 근사화된 옥트리를 인코딩한다. 예를 들어, 인코딩 방식은 Arithmetic 인코딩 방법을 포함한다. 인코딩의 결과로 지오메트리 비트스트림(Geometry bitstream)이 생성된다.
실시예들에 따른 지오메트리 리컨스럭션부(Reconstruct Geometry, 40005)는 옥트리 및/또는 근사화된 옥트리를 재구성한다. 지오메트리 리컨스럭션부(40005)는 포인트들의 분포를 분석한 결과에 기반하여 옥트리/복셀을 재구성한다.
실시예들에 따른 컬러 변환부(Transform Colors, 40006)는 속성들(Attribute)에 포함된 컬러 값(또는 텍스쳐)을 변환한다. 예를 들어, 색상 정보의 포맷이 변환될 수 있다. 실시예들에 따른 컬러 변환부(번호)는 컬러 값에 따라 옵셔널할 수 있다. 실시예들에 따른 컬러 변환(40006)은 포인트 클라우드 속성 코딩 방식 중의 하나이다.
실시예들에 따른 속성 변환부(Transfer Attributes, 40007)는 포지션들 및/또는 재구성된 지오메트리 정보에 기반하여 속성 정보를 변환한다. 예를 들어, 속성 변환부(번호)는 복셀에 포함된 포인트의 위치 값을 기반으로 그 위치의 포인트가 가지는 속성값을 변환할 수 있다. 실시예들에 따른 속성 변환(40007)은 포인트 클라우드 속성 코딩 방식 중의 하나이다.
실시예들에 따른 RATH 변환부(40008)는 재구성된 지오메트리 정보에 기반하여 속성 정보를 얘측하는 인코딩 방식이다. 예를 들어, RATH 변환부(40008)는 옥트리의 하위 레벨에 있는 노드와 연관된 속성 정보에 기반하여 옥트리의 상위 레벨에 있는 노드의 속성 정보를 예측할 수 있다. 실시예들에 따른 RATH 변환(40008)은 포인트 클라우드 속성 코딩 방식 중의 하나이다.
실시예들에 따른 LOD생성부(Generated LOD, 40009)는 포인트들에 대한 LOD(Level of Detail)을 생성한다. 실시예들에 따른 LOD는 포인트들을 구별하는 그룹의 유닛이다. 포인트들은 LOD 별로 분류될 수 있다. 실시예들에 따른 LOD 방식을 사용한 속성 코딩 방식을 예측 변환(Prediction Transformation)이라고 지칭할 수 있다.
실시예들에 따른 Lifting 변환부(40010)는 포인트들을 LOD별로 구성하고, 포인트 클라우드의 속성값을 가중치에 기반하여 변환하는 방법을 말한다. 실시예들에 따른 Lifting 변환(40010)은 포인트 클라우드 속성 코딩 방식 중의 하나이다.
실시예들에 따른 포인트 클라우드 속성 코딩 방식은 RAHT변환을 사용하거나, LOD생성 및 리프팅 변환을 사용하거나, RAHT/LOD/Lifting 조합에 따른 방식을 사용할 수 있다.
실시예들에 따른 계수 양자화부(Quantize Coefficients, 40011)은 속성 코딩된 포인트 클라우드 데이터를 계수에 기반하여 양자화한다.
실시예들에 따른 아리스메틱 인코딩부(Arithmetic Encode, 40012)는 양자화된 포인트 클라우드 데이터를 아리스메틱 코딩 스킴에 기반하여 인코딩한다.
실시예들에 따른 포인트 클라우드 인코더의 각 구성요소는 하드웨어, 소프트웨어, 프로세서 및/또는 그것들의 조합 등에 의해 수행될 수 있다. 실시예들에 따른 포인트 클라우드 인코더의 각 구성요소의 상세 동작은 이하에서 설명한다.
2. 실시예들에 따른 Point Cloud 데이터 인코딩 과정:
획득된 Point Cloud 데이터는 네트워크의 상황 혹은 애플리케이션 등에 따라 Point Cloud 콘텐츠의 질(예를 들어 무손실-lossless, 손실-lossy, near-lossless)을 조절하기 위하여 점들을 위치/색상 정보를 재구성하여 인코딩 과정 등을 거칠 수 있다.
Point들의 위치 정보 재구성/인코딩 과정을 지오메트리 코딩이라고 하고, 각 point 들과 연관된 속성 (예를 들어 색상) 정보 재구성/인코딩 과정을 속성(attribute) 코딩이라고 지칭할 수 있다.
2.1 실시예들에 따른 Point Cloud 지오메트리 코딩:
획득된 전체 Point Cloud의 각 point들을 손실 없이 전송할 수도 있지만, 그럴 경우 콘텐츠 데이터 크기가 크기 때문에 리얼타임 스트리밍이 가능하지 않다. 사례중에 30 fps의 경우 60 Gbps인 Point Cloud 콘텐츠가 있다. 콘텐츠 데이터 사이즈는 캡처 장비에 따라 다를 수 있다. Point Cloud 콘텐츠 서비스를 제공하기 위해서는 최대 타깃 비트율(bitrate)에 맞추어 콘텐츠를 재구성 하는 과정이 필요하다.
2.1.1 실시예들에 따른 Point들의 위치에 대한 양자화(quantization):
획득된 전체 Point Cloud의 각 point들의 위치 정보를 재구성하는 첫번째 단계는 위치 정보에 대한 양자화 과정이다. 전체 point들의 최소 x, y, z 위치 값을 찾아서 각 point들의 위치 값에서 빼주고, 설정된 양자 스케일(quantization scale)값을 곱해준 후, 가까운 정수(integer) 값으로 내리거나 올려준다.
2.1.2 실시예들에 따른 Point들의 복셀화(voxelization):
양자화 과정이 적용된 Point Cloud의 각 point들을 재구성하기 위해서 point들의 위치 정보를 기반으로 옥트리(octree)기반 복셀화(voxelization)를 수행한다.
2차원 이미지/비디오의 정보를 가지고 있는 최소 단위인 픽셀(pixel)과 마찬가지로 3차원에 존재하는 Point들의 정보를 저장하기 위하여 3차원 공간을 각각의 축(x, y, z축)을 기반으로 유닛(unit=1.0)이 되도록 나누어 생기는 3차원 큐빅(cubic) 공간을 복셀(voxel)이라고 하며 3차원 공간 상에 존재하는 point을 특정 복셀로 매칭하는 과정을 복셀화 한다고 한다. 복셀은 볼륨(volume)과 픽셀(pixel)을 조합한 혼성어이다. 복셀은 복셀군(voxel group)과의 위치 관계에서 공간 좌표를 추정 할 수 있으며, 픽셀과 마찬가지로 색상 또는 반사율 정보를 가지고 있을 수 있다.
도5는 실시예들에 따른 3차원 공간상의 복셀을 나타낸다.
하나의 복셀에 하나의 point만 존재하지 않을 수 있다. 하나의 복셀에 여러 개의 point 관련 정보를 가지고 있을 수 있다. 또는 하나의 복셀에 하나의 포인트 정보로 통합해서 가지고 있게 할 수도 있다. 이러한 조절은 선택적으로 수행될 수 있다. 하나의 복셀에 하나의 포인트로 표현되는 경우, 복셀 내에 존재하는 point들에 대한 위치 값을 기반으로 복셀의 중앙점의 위치값이 설정될 수 있으며 이와 연관된 속성 변환 (attribute transform) 과정을 수행할 필요가 있다. 예를 들어 속성 변환 과정은 복셀에 포함된 포인트들 또는 복셀의 중앙 위치 값과 특정 반경 내에 이웃하고 있는 포인트들의 색상 또는 반사율의 평균값으로 조정할 수도 있다(2.2.2절 참조).
도6은 실시예들에 따른 옥트리와 occupancy 코드의 예시를 나타낸다.
2.1.3 실시예들에 따른 Occupied 복셀 관리를 위한 옥트리(octree):
이러한 복셀의 영역/위치를 효율적으로 관리하기 위해서 Point Cloud 콘텐츠는 옥트리를 사용한다.
2차원 이미지의 공간을 효율적으로 관리하기 위해서 전체 공간을 x축, y축 기반으로 나누면 4개의 공간이 생기고, 4개의 각각의 공간을 다시 x축, y축 기반으로 나누면 다시 각각의 작은 공간에 대해서 4개의 공간이 생기게 된다. 리프 노드(leaf node)가 픽셀이 될 때까지 영역을 나눠주고, 영역의 크기 및 위치 별로 효율적으로 관리하기 위해 쿼드트리(quadtree)를 자료구조를 사용할 수 있다. 이와 마찬가지로 3차원 공간을 공간의 위치 및 크기 별로 효율적으로 관리하기 위해 같은 방식을 적용한다. 단, z축이 추가 되기 때문에, x축, y축, z축 기반으로 나누면 8개의 공간이 생기고, 8개의 각각의 공간을 다시 x축, y축, z축 기반으로 나누면 다시 각각의 작은 공간에 대해서 8개의 공간이 생기게 된다. 리프 노드가 복셀이 될 때까지 영역을 나눠주고, 영역의 크기 및 위치 별로 효율적으로 관리하기 위해 8개의 자식 노드(children node) 영역을 관리할 수 있는 옥트리(octree) 자료구조를 사용할 수 있다.
옥트리를 사용하여 point들의 위치가 반영된 복셀을 관리하기 때문에 옥트리의 전체 볼륨은(0,0,0) ~ (2d, 2d,2d)로 설정 되어야 한다. 2d는 Point Cloud 비디오의 전체 포인트를 감싸는 가장 작은 바운딩 박스를 구성하는 값으로 설정되고, d는 옥트리의 깊이(depth)가 된다. d값을 구하는 식은 다음과 같을 수 있다. (x_n^int,y_n^int,z_n^int )는 양자화 과정이 적용된 point들의 위치 값이다.
d =Ceil(Log2(Max(x_n^int,y_n^int,z_n^int,n=1,…,N)+1))
옥트리는 occupancy 코드로 표현될 수 있다. 각 노드 내에 point가 포함되어 있으면 1로, point가 없으면 0으로 표현 된다. 각 노드는 8개의 자식 노드에 대한 occupancy 여부를 나타내는 8bit의 비트맵(bitmap)을 가지고 있다. occupancy 코드를 arithmetic 코더를 통해 엔트로피 코딩을 수행한다. 생성된 occupancy 코드를 바로 인코딩 할 수도 있고, 압축 효율을 높이기 위해 인트라/인터 코딩과정을 통해서 인코딩 될 수도 있다. 수신기에서는 occupancy 코드를 통해서 옥트리를 재구성 할 수 있다.
2.1.4 실시예들에 따른 Sparse 옥트리(octree)를 위한 처리 방안:
Point Cloud 비디오의 point들에 대한 위치 정보 저장을 위해 복셀화 및 옥트리를 사용하지만 point들이 많은 없는 특정 영역의 경우, 모든 영역을 복셀화 시키는 것이 비효율적일 수도 있다. 예를 들어, 특정 영역에는 point들이 거의 존재하지 않아서 전체 옥트리를 구성할 필요가 없을 수 있다. 이러한 경우는 조기 종료(early termination) 방안이 필요하다. 이러한 경우에 대비해서, 특정 영역의 경우, 즉 옥트리의 특정 노드의 경우(그러나 노드가 리프 노드가 아닌 경우), 노드를 8개의 서브 노드(자식 노드)로 나누는 대신 해당 영역에 대해서만 직접 point들의 위치를 전송할 수도 있고, 또는 표면 모델(surface model)을 사용해서 노드 영역 내의 포인트의 위치를 복셀 기반으로 재구성할 수 있다.
특정 노드에 대해서 직접 각 point들의 위치를 전송하는 직접 모드(direct mode)의 경우를 가능하게 하기 위해서 조건 만족 여부를 체크할 수 있다. 직접 모드 사용 옵션이 활성화 되어 있어야 하며, 해당 노드는 리프 노드여서는 안 되고, 특정 노드 내에 한계치(threshold) 이하의 points들이 존재하는 경우이어야만 하며, 그리고 전체적으로 포인트의 위치를 직접 전송할 수 있는 총 points개수의 한계를 넘으면 안 된다. 이 모든 경우는 만족하는 경우, 해당 노드에 대해서 직접적으로 point의 위치 값을 arithmetic 코더로 엔트로피 코딩하여 전송할 수 있다.
2.1.5 실시예들에 따른 지오메트리 트라이숩 적용 방안:
옥트리의 특정 레벨(레벨은 옥트리의 깊이 d보다는 작은 경우)을 정하고, 그 레벨부터는 표면 모델(surface model)을 사용하여 노드 영역내의 point의 위치를 복셀 기반으로 재구성할 수 있는 트라이숩 모드(trisoup mode)를 선택적으로 적용할 수도 있다.트라이숩 모드 사용시, 트라이숩 방법이 적용될 레벨을 지정한다. 예를 들어, 지정된 레벨이 옥트리의 깊이와 같으면 트라이숩 모드는 적용되지 않는다. 지정된 레벨은 옥트리의 깊이값 보다 작아야 트라이숩 방법이 적용된다. 지정된 레벨의 노드들의 3차원 정육면체 영역을 블록(block)이라고 한다. 하나의 블록은 하나 이상의 복셀을 포함할 수 있다. 상기 블록 또는 복셀은 브릭(brick)에 대응될 수도 있다. 각 블록은 12개의 엣지(edge)를 가지고 있을 수 있으며, 각 엣지가 point를 가진 복셀(occupied voxel)과 인접했는지 여부에 체크한다. 각 엣지는 여러 개의 occupied 복셀들과 인접할 수 있다. 복셀과 인접한 edge의 특정 위치를 vertex라고 하며, 하나의 엣지에 여러 개의 occupied 복셀들과 인접한 경우에는 해당 위치들의 평균 위치를 vertex로 정할 수 있다. Vertex 가 존재하는 경우 엣지의 시작점(x, y, z), 엣지의 방향벡터(Δx, Δy, Δz), vertex 위치 값 (엣지 내의 상대적 위치 값)들을 arithmetic 코더로 엔트로피(entropy) 코딩할 수 있다.
이와 같은 방법을 적용하는 경우, 삼각형 재구성(triangle reconstruction), 업-샘플링(up-sampling), 복셀화 과정을 통하여 지오메트리 복원 과정을 수행할 수 있다.
엣지의 시작점, 엣지의 방향 벡터와 vertex의 위치값을 기반으로 삼각형을 재구성하기 위해서는, 우선 ①각 vertex들의 중심(centroid)값을 계산하고, ②각 vertex 값에서 중심 값을 뺀 값들에 ③자승을 수행하고 그 값을 모두 더한 값을 구한다.
Figure PCTKR2020002953-appb-img-000001
더해진 값의 최소값을 구하고, 최소값이 있는 축에 따라서 프로젝션 과정을 수행한다. 예를 들어 x 요소(element)가 최소인 경우, 각 vertex를 블록의 중심으로 기준으로 x축으로 프로젝션 시키고, (y, z) 평면으로 프로젝션 시킨다. (y, z)평면으로 프로젝션 시키면 나오는 값이 (ai, bi)라면 atan2(bi, ai)를 통해 θ값을 구하고, θ값을 기준으로 vertex들을 정렬한다. Vertex의 수에 따라서 삼각형을 구성하는 방식은 정렬된 순서에 맞춰서 다음 테이블과 같이 조합하여 삼각형들을 생성한다. 예를 들어, 4개의 vertices가 존재한다면, 두 개의 삼각형을 구성할 수 있다. 첫번째 삼각형은 정렬된 vertices로부터 첫번째, 두번재, 세번째 vertex로 구성되며, 두번째 삼각형은 세번째, 네번째, 첫번째 vertex로 구성된다.
표. Triangles formed from vertices ordered 1,…
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)
업샘플링 과정은 삼각형의 엣지를 따라서 중간에 점들을 추가하여 복셀화 하기 위해서 수행된다. 업샘플링 요소 값(upsampling factor)과 블록의 너비를 기준으로 추가 점들을 생성한다. 이러한 점들을 refined vertices라고 한다. Refined vertices들을 복셀화 하고, 속성 코딩 시 이렇게 복셀화 된 위치 값을 기준으로 이후 속성 (예, 색상) 코딩한다.
실시예들에 따라 트라이 숩 과정은 선택적(optional) 과정이다.
도7은 실시예들에 따른 이웃 노드 패턴의 예시를 나타낸다.
2.1.6 실시예들에 따른 지오메트리 코딩:
Point cloud 콘텐츠의 point의 위치/색상 데이터는 재구성되어 arithmetic 코더를 사용하여 엔트로피 코딩을 수행할 수 있다. Point Cloud 비디오의 데이터 크기가 크기 때문에, 압축 효율은 중요한 요소가 될 수 있다. 따라서 context adaptive arithmetic 코딩을 적용을 통해 압축 효율을 높이는 방안이 적용될 수 있다.
지오메트리 코딩은 옥트리 각 노드의 occupancy 코드를 인코딩 한다. Occupancy 코드를 바로 arithmetic 코드를 사용하여 엔트로피 코딩을 할 수 있지만, 주변 이웃 노드들의 occupancy 여부를 기반(인트라 기반)으로 또는 이전 프레임의 occupancy 코드를 기반(인터 기반)으로 adaptive하게 인코딩 될 수도 있다. 여기에서 프레임은 같은 시간에 생성된 point cloud 데이터의 집합을 지칭할 수 있다. 몇 개의 이웃 노드들을 참조하는지에 따라 압축 효율이 달라질 수 있다.비트가 커지면 복잡해지지만 한쪽으로 치우치게 만들어서 압축 효율이 높아질 수 있다. 예를 들어 3-bit context를 가지면, 23 = 8가지로 나누어 코딩 해야 한다. 나누어 코딩을 하는 부분은 구현의 복잡도에 영향을 준다. 따라서 압축의 효율과 복잡도의 적정 수준을 맞출 필요가 있다.
옥트리의 각 노드에서 이웃 노드들의 occupancy 여부를 통해 adaptive하게 코딩을 수행할 수 있다. 이를 위해, 우선, 이웃 노드의 occupancy 여부로 이웃 노드 패턴(neighbor pattern) 값을 구한다. 이웃 노드의 위치별 bit 순서는 도면과 같다. 예를 들어, 1, 2, 4, 8에 해당하는 이웃 노드가 occupied되어 있다면, 1, 2, 4, 8을 더한값인 15가 해당 노드의 이웃 노드 패턴 값이 된다. 일반적으로 노드를 중심으로 면을 공유하는 6개의 이웃 노드를 참조한다. 6개의 이웃 노드들의 occupancy 여부에 따라 구해진 이웃 노드 패턴은 26=64값으로 구성되어 64가지 서로 다른 코딩을 수행할 수도 있다. 또는 내부적으로 64를 10 또는 6으로 변경하는 테이블을 통해서 이웃노드 패턴 값을 변경하여 복잡도를 줄여서 인코딩 할 수 있다. 현재 노드의 occupied 코드와 이웃 노드 패턴 값을 통해 인코딩을 수행하여 압축 효율을 높일 수 있다.
실시예들에 따라 인트라/인터 코딩 과정은 선택적(optional) 과정으로써, 생략될 수 있다.
2.2 실시예들에 따른 Point Cloud 속성 코딩:
복셀화가 적용되고, 직접 모드 시에는 Point Cloud 데이터의 앞쪽으로 재배치하고, 트라이숩 모드 시에는 삼각형으로 재구성, 업샘플링, 복셀화 과정이 추가되어 재구성된 지오메트리를 기반으로 연관된 속성 정보에 대한 인코딩 과정을 수행할 수 있다. 속성 정보는 지오메트리에 종속적이기 때문에, 재구성된 지오메트리 기반으로 속성 정보를 코딩 하는 과정이 필요할 수 있다.
Point Cloud 속성 데이터는 색상(YCbCr 또는 RGB) 또는 반사율(r) 정보 등으로 구성될 수 있다. 두 가지 모두 같은 방법의 코딩이 적용될 수 있다. 단지, 색상은 3 요소(elements)를 가지고 반사율은 1개의 요소를 가진다는 차이이며, 각 요소마다 독립적으로 처리 될 수 있다.
속성 코딩 방법은 예측 변환(prediction transform), 리프팅 변환(lifting transform), RAHT(Region Adaptive Hierarchical transform) 방법이 있으며, 선택적으로 적용할수 있다.
2.2.1 실시예들에 따른 색상 변환 (Transform Color):
색상을 RGB에서 YCbCr로 변경하여 코딩 작업을 수행할 수 있다. 색상 변환이란 이와 같은 색상 포맷의 변환 과정을 의미한다.
2.2.2 실시예들에 따른 속성 변환 (Attribute Transform):
하나의 복셀에 하나의 point만 존재하는 경우, 하나의 복셀에 하나의 point 정보로 통합하여 나타내기 위해 복셀 내에 존재하는 point들에 대한 위치 값은 복셀의 중앙점으로 설정되고, 그에 따라 연관된 속성 값을 변환하는 과정이 필요할 수 있다. 또한 트라이숩 모드로 수행된 경우도 속성 변환 과정을 수행한다.
속성 변환 과정은 복셀의 중앙 위치 값과 특정 반경 내에 이웃하고 있는 point들의 색상 또는 반사율 등 속성 값들의 평균값 또는 중앙 위치와의 거리에 따른 가중치가 적용된 평균값으로 계산 될 수도 있다. 이 경우, 각 복셀은 위치와 계산된 속성값을 갖게 된다.
특정 위치/반경 내에 존재하는 이웃 point들을 탐색시, K-D 트리 또는 몰톤 코드를 활용할 수 있다. K-D 트리는 이진 탐색 트리(binary search tree)로 빠르게 최단 이웃점 탐색(Nearest Neighbor Search-NNS)이 가능하도록 point들을 위치 기반으로 관리할 수 있는 자료 구조를 지원한다. 몰튼 코드는 모든 point들에 대한 3차원 위치 정보(x, y, z) 의 bit들 믹싱하여 생성할 수 있다. 예를 들어 (x, y, z)값이 (5, 9, 1)일 경우 bit로 나타내면 (0101, 1001, 0001)이 되고, 이 값을 z, y, x 순서로 bit를 bit 인덱스에 맞춰 믹싱하면 010001000111이 되고, 이 값은 1095이다. 1095가 (5, 9, 1)의 몰톤 코드 값이 된다. 몰튼 코드 기준으로 point들을 정렬하고 depth-first traversal 과정을 통해 최단 이웃점 탐색(NNS)이 가능하다.
속성 변환 과정 이후, 속성 코딩을 위한 다른 변환 과정에서도 최단 이웃점 탐색(NNS)이 요구되는 경우가 있으며, 이를 위해 K-D 트리 또는 몰톤 코드를 활용할 수 있다.
도8은 실시예들에 따른 LOD별 Point Cloud 콘텐츠의 Point 구성의 예시를 나타낸다.
실시예들에 따른 포인트 클라우드는 상세 정도 LOD(Level Of Detail)에 따라서 그룹 별로 분류될 수 있다. 도면과 같이 좌측에서 우측으로 갈수록 상세 정도가 증가한다. 다시 말해, 포인트들 간의 거리가 좌측에 가까울수록 스파스(sparse)하고, 우측으로 갈수록 포인트들 간의 거리가 가까워진다.
2.2.2.1실시예들에 따른 예측 변환:
예측 변환은 LOD(Level Of Detail) 기법이 적용된 방법이다. 각 point는 설정된 LOD 거리값을 기준으로 LOD 값을 계산하여 설정한다. 예를 들어, LOD 값에 따른 Point들의 구성은 다음 그림과 같을 수 있다.
도9는 실시예들에 따른 LOD별 Point Cloud 콘텐츠의 Point 구성의 예시를 나타낸다.
실시예들에 따른 포인트 클라우드가 분포되어 있는 경우, Original order는 예를 들어 포인트들 P0 내지 P9의 순서를 나타낸다.
실시예들에 따라 LOD생성에 의해 LOD별로 포인트 클라우드를 분리하면, 예를 들어, P0, P5, P4, P1를 포함하는 그룹은 LOD0에 속하고, P1, P6, P3까지 포함하는 그룹은 LOD1에 속하고, P9, P8, P7까지 포함하는 그룹은 LOD2에 속할 수 있다. LOD-based order는 LOD그룹의 순서를 나타낸다.
Point Cloud 내에 있는 각 point들은 LOD 별로 분리될 수 있고, LOD별 Point들의 구성은 해당 LOD 값 보다 더 낮은 LOD에 속한 point들도 함께 포함한다. 예를 들어 LOD 레벨 2이면, LOD 레벨1과 2에 속하는 모든 point들에 해당한다.
예측 변환을 위해, Point Cloud의 각 point들에 대한 예측기(predictor)를 생성한다. 따라서 N개의 point들이 있다면, N개의 예측기가 생성될 수 있다. 예측기는 각 point들에 대한 LOD 값과 LOD별 설정된 거리 내에 존재하는 이웃 point들에 대한 인덱싱 정보와 이웃 point들과의 거리 값을 기반으로 가중치(=1/거리) 값을 계산하여 설정할 수 있다.
각 point의 예측기에 설정된 이웃 point들의 속성(색상 또는 반사율) 값들에 각 이웃 point들의 거리 기반으로 계산된 가중치 값을 곱한다. 이웃 point들의 가중치가 곱해진 색상 또는 반사율 값을 평균하여 해당 point의 예측된 속성 값으로 설정한다. 각 point의 색상 또는 반사율 값에서 예측된 속성값을 뺀 잔여(residual) 속성 값에 대한 양자화 과정을 수행한다. 속성에 대한 양자화 과정은 다음과 같다.
표. 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);
}
}
표. Attribute prediction residuals inverse quantization pseudo code
int PCCInverseQuantization(int value, int quantStep) {
if( quantStep ==0) {
return value;
} else {
return value * quantStep;
}
}
각 point의 예측기에 이웃 point들이 없으면, 현재 point의 색상/반사율 값을 직접 arithmetic 코더를 사용하여 엔트로피 코딩을 수행하고, 이웃 point들이 존재하면 point의 색상 또는 반사율 값에서 이웃 point들을 통해 예측된 속성값을 뺀 잔여 속성 값에 양자화 과정을 수행한 값을 arithmetic 코더를 사용하여 엔트로피 코딩 한다.
2.2.2.2 실시예들에 따른 리프팅 변환:
예측 변환과 리프팅 변환 과정은 LOD(Level of detail) 생성 과정을 통해 point들을 디테일 레벨의 집합으로 재구성한다. 재구성 방법은 앞서 설명하였다.
리프팅 변환은 각 point에 대한 예측기를 생성하고, 예측기에 계산된 LOD 설정하고, 이웃 point 등록하고, 이웃 point들과의 거리에 따른 가중치 설정하는 과정은 모두 수행한다. 예측 변환과의 차이점은 속성값에 가중치를 누적 적용하는 방법이다. 방법은 다음과 같다.
1) 각 point들에 대한 가중치 값을 저장하는 배열 QW(QuantizationWieght)가 별도로 존재한다. QW의 모든 요소들의 초기값은 1.0이다. 예측기에 등록된 이웃 노드의 예측기 인덱스의 QW 값에 현재 point의 예측기의 가중치를 곱한 값을 더한다.
2) 예측된 속성 값을 계산하기 위하여 point의 속성값에 가중치를 곱한 값을 기존 속성값에서 뺀다. 이 과정이 리프트 예측(lift prediction) 과정이다.
3) updateweight와 update라는 임시 배열을 생성하고 0으로 초기화한다.
4) 모든 예측기에 대해서 계산된 가중치에 예측기 인덱스에 해당하는 QW에 저장된 가중치를 추가로 곱해서 나온 가중치를 updateweight에 이웃 노드의 인덱스로 누적으로 합산하고, update에는 이웃 노드의 인덱스의 속성값에 곱한 값을 누적 합산한다.
5) 모든 예측기에 대해서 예측기 인덱스의 updateweight의 가중치 값으로 update의 속성 값을 나누고, 다시 기존 속성값에 더한다. 이 과정이 리프트 업데이트(lift update) 과정이다.
6) 모든 예측기에 대해서, 리프트 업데이트 과정을 통해 업데이트된 속성값에 리프트 예측 과정을 통해 업데이트 된(QW에 저장된) 가중치를 추가로 곱해서 나온 값을 양자화 하고, 양자화 수행한 값을 arithmetic 코더를 사용하여 엔트로피 코딩 한다.
2.2.2.3 실시예들에 따른 RAHT 변환:
RAHT 변환은 옥트리의 lower 레벨에 있는 노드와 연관된 속성 정보를 사용해서 상위 레벨에 있는 노드들의 속성 정보를 예측하는 방법으로 옥트리 백워드 스캔을 통한 속성 정보 인트라 코딩 방법이다. 복셀에서 전체 영역으로 스캔하며 각 스텝에서 복셀을 더 큰 블록으로 합치면서 루트 노드까지 수행한다. Occupied 노드에 대해서만 병합 과정을 수행하기 때문에 occupied되지 않은 empty 노드의 경우 바로 상위 레벨의 노드를 가지고 병합을 수행한다.
레벨 l에서의 복셀들의 평균 속성값을 g l x, y, z 라고 한다. g l x, y, z 는 g l+1 2x, y, z와 g l+1 2x+1, y, z로부터 계산될 수 있다. g l 2x, y, z 와 g l 2x+1, y, z 의 가중치를 W1=W l 2x, y, z 과 W2=W l 2x+1, y, z 라고 하면, 다음과 같은 RAHT 변환 행렬을 구할 수 있다.
Figure PCTKR2020002953-appb-img-000002
g l-1 x, y, z는 low-pass 값이고 다음 상위 레벨에서의 병합 과정 수행에 사용된다. h l-1 x, y, z은 high-pass 계수(coefficients)이며, 각 스텝에서의 high-pass 계수들은 양자화되어 arithmetic 코더를 통해 코딩 된다.
가중치는 W l-1 x, y, z =W l 2x, y, z+ W l 2x+1, y, z로 계산된다. 루트 노드는 마지막
g 1 0, 0, 0 과 g 1 0, 0, 1 을 통해서 다음과 같이 생성되고,
Figure PCTKR2020002953-appb-img-000003
gDC값 또한 high-pass 계수와 같이 양자화되어 마지막에 arithmetic 코더를 사용하여 엔트로피 코딩 한다.
3. 실시예들에 따른 전송 과정:
전송 과정은 인코딩 과정을 거친 Point Cloud 콘텐츠의 인코딩 된 지오메트리 및 속성 데이터와 메타데이터들을 처리하여 전송하는 과정일 수 있다. 전송을 위해 임의의 전송 프로토콜에 따른 처리가 수행될 수 있다.생성된 point cloud 콘텐츠의 지오메트리 및 속성 데이터, 관련 메타데이터 비트스트림들은 하나 이상의 트랙 데이터로 파일이 생성되거나 세그먼트로 인캡슐레이션될 수 있다. 전송을 위한 처리를 마친 데이터들은 방송망 및/또는 브로드밴드를 통해 전달될 수 있다. 이 데이터들은 온 디맨드(On Demand) 방식으로 수신측으로 전달될 수도 있다. 수신측에서는 다양한 경로를 통해 해당 데이터를 수신할 수 있다. 한편, 인코딩 과정을 거친 Point Cloud 콘텐츠의 인코딩 된 지오메트리 및 속성 데이터와 메타데이터들은 미디어 파일 형태로 디지털 저장매체에 저장되어 수신측으로 전달될 수도 있다.
도10은 실시예들에 따른 포인트 클라우드 디코더(Point Cloud Decoder)의 블록 다이어그램(block diagram) 예시를 나타낸다.
실시예들에 따른 포인트 클라우드 디코더는 포인트 클라우드 데이터에 대한 지오메트리 및/또는 어트리뷰트를 포함하는 비트스트림을 수신한다. 실시예들에 따른 지오메트리 디코더는 지오메트리를 디코딩하고, 실시예들에 따른 어트리뷰트 디코더는 어트리뷰트를 디코딩한다. 어트리뷰트 디코더는 디코딩된 지오메트리에 기반하여 어트리뷰트를 디코딩한다. 디코더는 디코딩된 지오메트리 및/또는 디코딩된 어트리뷰트에 기반하여 포인크 클라우드를 생성할 수 있다.
4. 실시예들에 따른 디코딩 과정:
디코딩 과정은 비트스트림을 입력받아 인코딩 동작에 대응하는 동작을 수행하여 Point Cloud 비디오/영상을 복원(디코딩)하는 과정을 포함할 수 있다.
도11은 실시예들에 따른 포인트 클라우드 디코더(Point Cloud Decoder) 예시를 나타낸다.
실시예들에 따른 포인트 클라우드 디코더는 실시예들에 따른 포인트 클라우드 인코더의 역과정을 수행할 수 있다.
실시예들에 따른 포인트 클라우드 디코더는 아리스메틱 디코더(arithmetic decode, 11000), 옥트리 합성부(synthesize octree, 11001), 서페이스 오프록시메이션 합성부(synthesize surface approximation, 11002), 지오메트리 리컨스럭션부(reconstruct geometry, 11003), 좌표계 역변환부(inverse transform coordinates, 11004), 아리스메틱 디코더(arithmetic decode, 11005), 역양자화부(inverse quantize, 11006), RAHT(11007), LOD생성부(generate LOD, 11008), 인버스 리프팅부(Inverse lifting, 11009), 및/또는 컬러 역변환부(inverse transform colors, 11010)를 포함한다.
실시예들에 따른 아리스메틱 디코더(arithmetic decode, 11000)는 수신한 비트스트림에 포함된 지오메트리를 아리스메틱 방식에 기반하여 디코딩한다.
실시예들에 따른 옥트리 합성부(synthesize octree, 11001)는 지오메트리로부터 옥트리를 생성할 수 있다.
실시예들에 따른 서페이스 오프록시메이션 합성부(synthesize surface approximation, 11002)는 디코딩된 지오메트리 및/또는 옥트리에 기반하여 서페이스를 합성할 수 있다.
실시예들에 따른 지오메트리 리컨스럭션부(reconstruct geometry, 11003)는 서페이스 및또는 디코딩된 지오메트리에 기반하여 지오메트릭을 재생성할 수 있다.
실시예들에 따른 좌표계 역변환부(inverse transform coordinates, 11004)는 지오메트리에 기반하여 좌표계를 인버스 변환하여 위치(포지션들, positions)를 획득할 수 있다.
실시예들에 따른 아리스메틱 디코더(arithmetic decode, 11005)는 수신한 비트스트림에 포함된 어트리뷰트를 아리스메틱 방식에 기반하여 디코딩한다.
실시예들에 따른 역양자화부(inverse quantize, 11006)는 디코딩된 어트리뷰트를 인버스 양자화를 한다.
실시예들에 따른 RAHT(11007), 실시예들에 따른 LOD생성부(generate LOD, 11008) 및/또는 실시예들에 따른 인버스 리프팅부(Inverse lifting, 11009)는 실시예들에 따른 인코더의 대응하는 동작의 역과정을 수행할 수 있다.
실시예들에 따른 컬러 역변환부(inverse transform colors, 11010)는 컬러를 역변환하여 어트리뷰트(얘를 들어, 컬러값 등)을 획득할 수 있다.
디코딩 과정은 지오메트리 디코딩 과정 및 속성 디코딩 과정을 포함할 수 있다. 디코더는 입력 비트스트림 내 포함된 지오메트리 비트스트림으로부터 지오메트리를 복원(디코딩)할 수 있고, 상기 입력 비트스트림 내 포함된 어트리뷰트 비트스트림 및 상기 복원된 지오메트리를 기반으로 어트리뷰트를 복원(디코딩)할 수 있다. 상기 복원된 지오메트리에 따른 위치 정보 및 상기 디코딩된 어트리뷰트에 따른 (컬러) 텍스처 어트리뷰트를 기반으로 3차원의 Point Cloud 비디오/영상을 복원할 수 있다.
구체적으로, 디코더는 geometry bitstream을 arithmetic 코더로 디코딩 하여 지오메트리에 관한 정보를 획득하고, 지오메트리에 관한 정보를 기반으로 획득한 occupancy 코드를 통해 옥트리를 생성하고, 지오메트리를 재구성한다. 직접 모드가 적용된 경우, point의 위치 정보 값을 직접 가져와서 추가하고, 트라이숩 모드가 적용된 경우는 삼각형 재구성(triangle reconstruction), 업-샘플링(up-sampling), 복셀화 과정을 거쳐서 지오메트리를 복원한다(상세 내용은 2.1.3절 참고). 상기 복원된 지오메트리는 복원된(디코딩된) point cloud picture/frame without (any) attributes를 포함할 수 있다.
또한, 디코더는 수신한 attribute bitstream을 arithmetic 코더로 디코딩하여 속성(attribute)에 관한 정보를 획득하고, 상기 획득한 속성에 관한 정보 및 상기 지오메트리 코딩 과정에서 도출한 연관 위치(associated location) 정보를 기반으로 복원된(디코딩된) point cloud picture/frame with attributes를 생성할 수 있다. 속성 디코딩 과정에서 필요한 경우 inverse 양자화 과정을 수행하고, 예측/리프팅/RAHT에 대한 역변환 과정을 인코딩시 적용된 방법에 따라서 선택적으로 수행한 후, 필요한 경우 색상 변환을 수행하여 attributes를 복원할 수 있다.
5. 실시예들에 따른 렌더링 과정:
렌더링 과정은 3D 공간상에 Point Cloud 콘텐츠 데이터를 렌더링하고 디스플레이 하는 과정을 의미한다. 디코딩 과정을 통해 디코딩 된 point들의 위치 및 속성 정보를 가지고 원하는 렌더링 방식에 따라 렌더링 될 수 있다. Point Cloud 콘텐츠의 point들은 일정 두께를 갖는 정점, 해당 정점 위치를 중앙으로 하는 특정 최소 크기를 갖는 정육면체, 또는 정점 위치를 중앙으로 하는 원 등으로 렌더링 될 수도 있다. 사용자는 VR/AR 디스플레이 또는 일반 디스플레이 등을 통하여 렌더링 된 결과의 전부 또는 일부 영역을 볼 수 있다.
6. 실시예들에 따른 피드백 과정:
피드백 과정은 디스플레이 과정에서 획득될 수 있는 다양한 피드백 정보들을 송신측으로 전달하거나 수신측의 디코딩에 전달하는 과정을 포함할 수 있다. 피드백 과정을 통해 Point Cloud 비디오 소비에 있어 인터랙티비티(interactivity) 가 제공될 수 있다. 실시예에 따라, 피드백 과정에서 헤드 오리엔테이션(Head Orientation) 정보, 사용자가 현재 보고 있는 영역을 나타내는 뷰포트(Viewport) 정보 등이 전달될 수 있다. 실시예에 따라, 사용자는 VR/AR/MR/자율주행 환경 상에 구현된 것들과 상호작용 할 수도 있는데, 이 경우 그 상호작용과 관련된 정보가 피드백 과정에서 송신측 내지 서비스 프로바이더 측으로 전달될 수도 있다. 실시예에 따라 피드백 과정은 수행되지 않을 수도 있다.
헤드 오리엔테이션 정보는 사용자의 머리 위치, 각도, 움직임 등에 대한 정보를 의미할 수 있다. 이 정보를 기반으로 사용자가 현재 Point Cloud 비디오 내에서 보고 있는 영역에 대한 정보, 즉 뷰포트 정보가 계산될 수 있다.
뷰포트 정보는 현재 사용자가 Point Cloud 비디오에서 보고 있는 영역에 대한 정보일 수 있다. 이를 통해 게이즈 분석(Gaze Analysis) 이 수행되어, 사용자가 어떠한 방식으로 Point Cloud 비디오를 소비하는지, Point Cloud 비디오의 어느 영역을 얼마나 응시하는지 등을 확인할 수도 있다. 게이즈 분석은 수신측에서 수행되어 송신측으로 피드백 채널을 통해 전달될 수도 있다. VR/AR/MR 디스플레이 등의 장치는 사용자의 머리 위치/방향, 장치가 지원하는 수직(vertical) 혹은 수평(horizontal) FOV 등에 근거하여 뷰포트 영역을 추출할 수 있다.
실시예에 따라, 전술한 피드백 정보는 송신측으로 전달되는 것 뿐 아니라, 수신측에서 소비될 수도 있다. 즉, 전술한 피드백 정보를 이용하여 수신측의 디코딩, 렌더링 과정 등이 수행될 수 있다. 예를 들어, 헤드 오리엔테이션 정보 및/또는 뷰포트 정보를 이용하여 현재 사용자가 보고 있는 영역에 대한 Point Cloud 비디오만 우선적으로 디코딩 및 렌더링 될 수도 있다.
여기서 뷰포트(viewport) 내지 뷰포트 영역이란, 사용자가 Point Cloud 비디오에서 보고 있는 영역을 의미할 수 있다. 시점(viewpoint) 는 사용자가 Point Cloud 비디오에서 보고 있는 지점으로서, 뷰포트 영역의 정중앙 지점을 의미할 수 있다. 즉, 뷰포트는 시점을 중심으로 한 영역인데, 그 영역이 차지하는 크기 형태 등은 FOV(Field Of View) 에 의해 결정될 수 있다.
도12는 실시예들에 따른 송신기의 Point Cloud 비디오 인코딩을 위한 구성요소를 나타낸다.
실시예들에 따른 포인트 클라우드 데이터의 비디오 인코딩을 위한 구성요소는 데이터 입력부(12000), 양자화 처리부(12001), 복셀화 처리부(12002), 옥트리 Occupancy 코드 생성부(12003), 포면 모델 처리부(12004), 인트라/인터 코딩 처리부(12005), Arithmetic 코더(12006), 메타데이터 처리부(12007), 색상 변환 처리부(12008), 속성 변환 처리부(12009), 예측/리프팅/RAHT 변환 처리부(12010), Arithmetic 코더(12011) 및/또는 전송 처리부(12012)를 포함할 수 있다.
실시예들에 따른 데이터 입력부(12000)는 포인트 클라우드 데이터를 수신 또는 획득한다. 데이터 입력부(12000)는 실시예들에 따른 도1의 포인트 클라우드 획득부(10001)에 대응될 수 있다.
실시예들에 따른 양자화 처리부(12001)는 포인트 클라우드 데이터의 지오메트리, 예를 들어, 포인트들의 위치값 정보를 양자화한다.
실시예들에 따른 복셀화 처리부(12002)는 양자화된 포인트들의 위치값 정보를 복셀화한다.
실시예들에 따른 옥트리 Occupancy 코드 생성부(12003)는 복셀화된 포인트들의 위치값 정보를 옥트리 어큐판시 코드에 기반하여 옥트리로 나타낼 수 있다.
실시예들에 따른 포면 모델 처리부(12004)는 포인트 클라우드의 포인트들의 위치값 정보에 대한 옥트리를 표면 모델 방식에 기반하여 표현 처리할 수 있다
실시예들에 따른 인트라/인터 코딩 처리부(12005)는 포인트 클라우드 데이터를 인트라/인터 코딩할 수 있다.
실시예들에 따른 Arithmetic 코더(12006)는 포인트 클라우드 데이터를 아리스메틱 코딩 방식에 기반하여 인코딩할 수 있다.
실시예들에 따른 메타데이터 처리부(12007)는 포인트 클라우드 데이터에 관한 메타데이터, 예를 들어 설정 값 등을 처리하여 지오메트리 인코딩 프로세스 및/또는 어트리뷰트 인코딩 프로세스 등 필요한 과정에 제공한다.
실시예들에 따른 색상 변환 처리부(12008)는 포인트 클라우드 데이터의 어트리뷰트, 예를 들어, 포인트들의 속성값 정보 및/또는 재구성된 위치값에 기반하여 포인트 클라우드 데이터의 컬러를 변환할 수 있다.
실시예들에 따른 속성 변환 처리부(12009)는 포인트 클라우드 데이터의 속성값을 변환할 수 있다.
실시예들에 따른 예측/리프팅/RAHT 변환 처리부(12010)는 포인트 클라우드 데이터를 예측 방법, 리프팅 방법 및/또는 RAHT 방법 등의 조합 등에 기반하여 속성 코딩할 수 있다.
실시예들에 따른 Arithmetic 코더(12011)는 포인트 클라우드 데이터를 아리스메틱 코딩 방식에 기반하여 인코딩할 수 있다.
위 과정들은 실시예들에 따른 도1의 포인트 클라우드 인코더(10002)에 대응될 수 있다.
실시예들에 따른 전송 처리부(12012)는 인코딩된 지오메트리 및/또는 인코딩된 어트리뷰트를 전송할 수 있다.
실시예들에 따라, 포인트들의 위치값에 대한 프로세스 및 포인트들의 속성값에 대한 프로세스는 서로의 데이터/정보를 공유하여 각 과정을 수행할 수 있다.
도12는 실시예들의 Point Cloud 콘텐츠 서비스를 제공하기 위한 송신기 장비를 도시한 도면이다.
송신측에서의 실시예들은 Point Cloud 콘텐츠 전송 장치와 관련될 수 있다. Point Cloud 콘텐츠 전송 장치는 데이터 입력부, Point 위치 값들에 대해 양자화 처리부, 복셀화 처리부, 옥트리 occupancy 코드 생성부, 표면 모델 처리부, 인트라/인터 코딩 처리부, arithmetic 코더, 메타데이터 처리부, 또한 재구성된 위치 값을 기반으로 point 위치/복셀 값에 대한 속성 값들을 처리하기 위해 색상 변환 처리부, 속성 변환 처리부, 사용된 속성 인코딩 방식에 따라서 예측 변환 처리부, 리프팅 변환 처리부, RAHT 변환 처리부, arithmetic 코더를 거쳐서 인코딩된 지오메트리 비트스트림과 속성 비트스트림을 전송 처리부를 통해 수신측에 전송한다. 각 컴포넌트의 기능은 2장 인코딩 과정, 3장 전송과정에 설명되어 있다.
도13은 실시예들에 따른 수신기의 Point Cloud 비디오 디코딩을 위한 구성요소를 나타낸다.
실시예들에 따른 포인트 클라우드 데이터의 비디오 디코딩을 위한 구성요소는 수신부(13000), 수신 처리부(13001), Arithmetic 디코더(13002), Occupancy코드 기반 옥트리 재구성 처리부(13003), 표면 모델 처리부(삼각형 재구성, 업-샘플링, 복셀화)( 13004), inverse 양자화 처리부(13005), 메타데이터 파서(13006), arithmetic 디코더(13007), inverse양자화 처리부(13008), 예측/리프팅/RAHT 역변환 처리부(13009), 색상 역변환 처리부(13010) 및/또는 렌더러(13011)를 포함할 수 있다. 실시예들에 따른 디코딩의 각 구성요소는 실시예들에 따른 인코딩의 구성요소의 역과정을 수행할 수 있다.
실시예들에 따른 수신부(13000)는 포인트 클라우드 데이터를 수신한다. 수신부(13000)는 실시예들에 따른 도1의 리시버(10007)에 대응될 수 있다.
실시예들에 따른 수신 처리부(13001)는 수신한 포인트 클라우드 데이터에 포함된 지오메트리 비트스트림 및/또는 속성 비트스트림을 획득할 수 있다.
실시예들에 따른 Arithmetic 디코더(13002)는 지오메트리 비트스트림을 아리스메틱 방식에 기반하여 디코딩할 수 있다.
실시예들에 따른 Occupancy코드 기반 옥트리 재구성 처리부(13003)는 디코딩된 지오메트리를 Occupancy 코드에 기반하여 옥트리로 재구성할 수 있다.
실시예들에 따른 표면 모델 처리부(삼각형 재구성, 업-샘플링, 복셀화)(13004)는 표면 모델 방식에 기반하여 포인트 클라우드 데이터에 대해 삼각형 재구성, 업-샘플링, 복셀화 및/또는 그것들의 조합에 따른 처리를 수행할 수 있다.
실시예들에 따른 inverse 양자화 처리부(13005)는 포인트 클라우드 데이터를 인버스 양자화할 수 있다.
실시예들에 따른 메타데이터 파서(13006)는 수신한 포인트 클라우드 데이터에 포함된 메타데이터, 예를 들어 설정 값 등을 파싱할 수 있다. 메타데이터 파서(13006)는 메타데이터를 지오메트리 디코딩 프로세스 및/또는 속성 디코딩 프로세스의 각 과정에 전달할 수 있다. 실시예들에 따른 각 프로세스는 필요한 메타데이터에 기반하여 수행될 수 있다.
실시예들에 따른 arithmetic 디코더(13007)는 포인트 클라우드 데이터의 속성 비트스트림을 재구성된 위치값에 기반하여 아리스메틱 방식에 기반하여 디코딩할 수 있다.
실시예들에 따른 inverse양자화 처리부(13008)는 포인트 클라우드 데이터를 인버스 양자화할 수 있다.
실시예들에 따른 예측/리프팅/RAHT 역변환 처리부(13009)는 포인트 클라우드 데이터를 예측/리프팅/RAHT 방식 및/또는 그것들의 조합에 따른 방식에 기반하여 처리할 수 있다.
실시예들에 따른 색상 역변환 처리부(13010)는 포인트 클라우드 데이터의 색상 값을 역변환할 수 있다.
상술한 과정들은 실시예들에 따른 도1의 포인트 클라우드 디코더(10006)에 대응될 수 있다.
실시예들에 따른 렌더러(13011)는 포인트 클라우드 데이터를 렌더링할 수 있다.
도면은 실시예들의 Point Cloud 콘텐츠 서비스를 제공하기 위한 수신기 장비를 도시한 도면이다.
수신측에서의 실시예들은 Point Cloud 콘텐츠 수신 장치와 관련될 수 있다. Point Cloud 콘텐츠 수신 장치는 수신부, 수신 처리부, 메타데이터 파서, Point의 지오메트리 비트스트림에 대해 arithmetic 디코더, occupancy 코드 기반 옥트리 재구성 처리부, 표면 모델 처리부, inverse 양자화 처리부, 또한 재구성된 위치 값을 기반으로 point 위치/복셀 값에 대한 속성 값들을 디코딩하기 위해 arithmetic 디코더, inverse 양자화 처리부, 사용된 속성 인코딩 방식에 따라서 예측 역변환 처리부, 리프팅 역변환 처리부, RAHT 역변환 처리부를 거쳐서 색상 역변환 처리부를 통해 렌더러에게 전달되어 렌더링되어 유저에게 VR/AR/MR/자율주행과 같은 경험을 제공한다. 각 컴포넌트의 기능은 3장 전송과정, 4장 디코딩 과정, 5장 렌더링 과정에 설명되어 있다.
전술한 Point Cloud 비디오 제공을 위한 전체 아키텍처 내에서, 획득/인코딩/전송/디코딩/렌더링의 일련의 과정을 거치게 되는 Point Cloud 데이터들을 Point Cloud 콘텐츠 데이터 또는 Point Cloud 비디오 데이터라고 부를 수 있다. Point Cloud 콘텐츠 데이터라는 용어는 또한 이러한 Point Cloud 데이터들과 관련되는 메타데이터 내지 시그널링 정보를 포함하는 개념으로 쓰일 수도 있다.
도14는 실시예들에 따른 G-PCC 기반 point cloud 데이터 저장 및 스트리밍을 위한 아키텍쳐를 나타낸다.
실시예들은 사용자에게 VR (Virtual Reality, 가상현실), AR (Augmented Reality, 증강현실), MR (Mixed Reality, 혼합현실), 및 자율 주행 등 다양한 서비스를 지원하는Point Cloud 데이터를 저장 및 스트리밍 방안을 제공한다.
도14는 Geometry-based Point Cloud Compression(이하 G-PCC) 를 기반으로 압축되는 point cloud 데이터를 저장 혹은 스트리밍을 위한 전체 아키텍쳐를 도시한 도면이다. Point cloud 데이터 저장 및 스트리밍의 과정은 획득 과정, 인코딩 과정, 전송 과정, 디코딩 과정, 랜더링 과정 및/또는 피드백 과정을 포함할 수 있다.
실시예들은 point cloud 미디어/콘텐츠/데이터를 효과적으로 제공하는 방안을 제안한다. Point cloud 미디어/콘텐츠/데이터를 효과적으로 제공하기 위하여 먼저, point cloud 가 획득될 수 있다. 예를 들어 하나 이상의 카메라를 통하여 Point Cloud의 캡처, 합성 또는 생성 과정 등을 통한 Point Cloud 데이터를 획득할 수 있다. 이러한 획득 과정에 의해 각 포인트의 3D 위치(x, y, z 위치 값 등으로 나타낼 수 있다. 이하 이를 지오메트리라고 일컫는다), 각 포인트의 속성 (color, reflectance, transparency 등)을 포함하는 point cloud 데이터를 획득할 수 있으며 이를 포함하는, 예를 들어, PLY(Polygon File format or the Stanford Triangle format) 파일 등으로 생성 될 수 있다. 여러 개의 프레임을 갖는 point cloud 데이터의 경우 하나 이상의 파일들이 획득될 수 있다. 이러한 과정에서 point cloud 관련 메타데이터 (예를 들어 캡처 등과 관련된 메타데이터 등)가 생성될 수 있다.
Point Cloud인코더는 Geometry-based Point Cloud Compression (G-PCC) 절차를 수행하며 이는 예측, 변환, 양자화, 엔트로피 코딩 등의 일련의 절차를 수행하고 인코딩된 데이터(인코딩된 비디오/영상 정보)는 비트스트림(bitstream) 형태로 출력될 수 있다. 이는 후술하는 바와 같이 지오메트리 및 속성(attribute) 로 나누어 인코딩 할 수 있으며 비트 스트림 상에 포인트 클라우드 관련 메타데이터가 포함될 수 있다. 이 경우 출력 비트 스트림은 지오메트리 비트스트림 및/또는 어트리뷰트 비트스트림 을 포함할 수 있다.
인캡슐레이션(file/segment encapsulation)는 인코딩된 Point cloud데이터 및/또는 Point cloud관련 메타데이터를 파일 또는 스트리밍을 위한 세그먼트 등의 형태로 인캡슐레이션할 수 있다. 여기서 Point cloud 관련 메타데이터는 메타데이터 처리부 등으로부터 전달받은 것일 수 있다. 메타데이터 처리부는 상기 point cloud 비디오 인코더에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 인캡슐레이션 처리부는 해당 데이터들을 ISOBMFF 등의 파일 포맷으로 인캡슐레이션하거나, 기타 DASH 세그먼트 등의 형태로 처리할 수 있다. 인캡슐레이션 처리부는 실시 예에 따라 Point cloud관련 메타데이터를 파일 포맷 상에 포함시킬 수 있다. Point cloud 메타데이터는 예를 들어 ISOBMFF 파일 포맷 상의 다양한 레벨의 박스(box)에 포함되거나 파일 내에서 별도의 트랙내의 데이터로 포함될 수 있다. 실시 예에 따라, 인캡슐레이션 처리부는 Point cloud관련 메타데이터 자체를 파일로 인캡슐레이션할 수 있다.
전송 처리부는 파일 포맷에 따라 인캡슐레이션된 Point cloud데이터에 전송을 위한 처리를 가할 수 있다. 전송 처리부는 전송부에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 전송 처리부는 임의의 전송 프로토콜에 따라 Point cloud데이터를 처리할 수 있다. 전송을 위한 처리에는 방송망을 통한 전달을 위한 처리, 브로드밴드를 통한 전달을 위한 처리를 포함할 수 있다. 실시 예에 따라 전송 처리부는 Point cloud 데이터 뿐 아니라, 메타데이터 처리부로부터 Point cloud 관련 메타데이터를 전달받아, 이 것에 전송을 위한 처리를 가할 수도 있다.
전송부는 point cloud 비트스트림 혹은 해당 비트스트림을 포함하는 파일/세그먼트를 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스의 수신부로 전달할 수 있다. 전송을 위해 임의의 전송 프로토콜에 따른 처리가 수행될 수 있다. 전송을 위한 처리를 마친 데이터들은 방송망 및/또는 브로드밴드를 통해 전달될 수 있다. 이 데이터들은 온 디맨드(On Demand) 방식으로 수신측으로 전달될 수도 있다.디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다. 전송부는 미리 정해진 파일 포멧을 통하여 미디어 파일을 생성하기 위한 엘리먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘레멘트를 포함할 수 있다. 수신부는 상기 비트스트림을 추출하여 디코딩 장치로 전달할 수 있다.
수신부는 실시예들에 따른 point cloud 데이터 전송 장치가 전송한 point cloud 데이터를 수신할 수 있다. 전송되는 채널에 따라 수신부는 방송망을 통하여 point cloud데이터를 수신할 수도 있고, 브로드밴드를 통하여 point cloud데이터를 수신할 수도 있다. 혹은 디지털 저장 매체를 통하여 point cloud 비디오 데이터를 수신할 수도 있다. 수신부는 수신한 데이터를 디코딩 하고 이를 사용자의 뷰포트 등에 따라 랜더링하는 과정을 포함할 수 있다.
수신 처리부는 수신된 point cloud데이터에 대해 전송 프로토콜에 따른 처리를 수행할 수 있다. 수신 처리부는 수신부에 포함될 수 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 전송측에서 전송을 위한 처리가 수행된 것에 대응되도록, 수신 처리부는 전술한 전송 처리부의 역과정을 수행할 수 있다. 수신 처리부는 획득한 point cloud 데이터는 디캡슐레이션 처리부로 전달하고, 획득한 point cloud 관련 메타데이터는 메타데이터 파서로 전달할 수 있다.
디캡슐레이션 처리부(file/segment decapsulation)는 수신 처리부로부터 전달받은 파일 형태의 point cloud데이터를 디캡슐레이션할 수 있다. 디캡슐레이션 처리부는 ISOBMFF 등에 따른 파일들을 디캡슐레이션하여, point cloud비트스트림 내지 point cloud 관련 메타데이터(혹은 별도의 메타데이터 비트스트림)를 획득할 수 있다. 획득된 point cloud비트스트림은 상기 point cloud디코더로, 획득된 point cloud관련 메타데이터(혹은 메타데이터 비트스트림)는 메타데이터 처리부로 전달할 수 있다. 상기 point cloud비트스트림은 상기 메타데이터(메타데이터 비트스트림)를 포함할 수도 있다. 상기 메타데이터 처리부는 상기 point cloud 비디오 디코더에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 디캡슐레이션 처리부가 획득하는 point cloud관련 메타데이터는 파일 포맷 내의 박스 혹은 트랙 형태일 수 있다. 디캡슐레이션 처리부는 필요한 경우 메타데이터 처리부로부터 디캡슐레이션에 필요한 메타데이터를 전달받을 수도 있다. 상기 point cloud관련 메타데이터는 상기 point cloud디코더에 전달되어 point cloud디코딩 절차에 사용될 수도 있고, 또는 렌더러에 전달되어 point cloud렌더링 절차에 사용될 수도 있다.
Point Cloud디코더는 상기 비트스트림을 입력 받아 상기 Point Cloud인코더의 동작에 대응하는 동작을 수행하여 데이터를 디코딩할 수 있다. 이 경우 Point Cloud디코더는 Point Cloud데이터를 후술하는 바와 같이 지오메트리 및 속성(attribute)로 나누어 디코딩할 수 있다. 예를 들어, Point Cloud디코더는 입력 비트스트림 내 포함된 지오메트리 비트스트림으로부터 지오메트리를 복원(디코딩)할 수 있고, 상기 입력 비트스트림 내 포함된 속성 비트스트림 및 상기 복원된 지오메트리를 기반으로 속성값을 복원(디코딩)할 수 있다. 상기 복원된 지오메트리에 따른 위치 정보 및 상기 디코딩된 속성값에 따른 (컬러) 텍스처 어트리뷰트를 기반으로 3차원의 각 포인트의 위치와 각 포인트의 속성정보를 복원하여 point cloud을 복원할 수 있다.
센싱/트랙킹부(Sensing/Tracking)는 사용자 또는 수신측로부터 오리엔테이션 정보 및/또는 사용자 뷰포트 정보를 획득하여 수신부 및/또는 송신부에 전달한다.오리엔테이션 정보는 사용자의 머리 위치, 각도, 움직임 등에 대한 정보를 나타내거나 혹은 사용자가 보고 있는 장치의 위치, 각도, 움직임 등에 대한 정보를 나타낼 수 있다. 이 정보를 기반으로 사용자가 현재 3차원 공간 상에서 보고 있는 영역에 대한 정보, 즉 사용자 뷰포트 정보가 계산될 수 있다.
사용자 뷰포트 정보는 현재 사용자가 3차원 공간 상에서 디바이스 혹은 HMD 등을 통하여 보고 있는 영역에 대한 정보일 수 있다. 디스플레이 등의 장치는 오리엔테이션 정보, 장치가 지원하는 수직(vertical) 혹은 수평(horizontal) FOV 등에 근거하여 뷰포트 영역을 추출할 수 있다. 오리엔테이션 혹은 뷰포트 정보는 수신측에서 추출 혹은 계산될 수 있다. 수신측에서 분석된 오리엔테이션 혹은 뷰포트 정보는 송신측으로 피드백 채널을 통해 전달될 수도 있다.
수신부는 센싱/트랙킹부에 의해 획득된 오리엔테이션 정보 및/또는사용자가 현재 보고 있는 영역을 나타내는뷰포트 정보를 사용하여 특정 영역, 즉 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 영역의 미디어 데이터만 효율적으로 파일에서 추출하거나 디코딩할 수 있다. 또한, 송신부는 센싱/트랙부에 의해 획득된 오리엔테이션 정보 및/또는 뷰포트 정보를 사용하여 특정 영역, 즉 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 영역의 미디어 데이터만 효율적으로 인코딩하거나 파일 생성 및 전송할 수 있다.
렌더러는 3차원 공간 상에 디코딩된 Point Cloud 데이터를 렌더링 할 수 있다. 렌더링된 비디오/영상은 디스플레이부를 통하여 디스플레이될 수 있다. 사용자는 VR/AR 디스플레이 또는 일반 디스플레이 등을 통하여 렌더링 된 결과의 전부 또는 일부 영역을 볼 수 있다.
피드백 과정은 렌더링/디스플레이 과정에서 획득될 수 있는 다양한 피드백 정보들을 송신측으로 전달하거나 수신측의 디코더에 전달하는 과정을 포함할 수 있다. 피드백 과정을 통해 Point Cloud 데이터 소비에 있어 인터랙티비티(interactivity)가 제공될 수 있다. 실시예에 따라, 피드백 과정에서 헤드 오리엔테이션(Head Orientation) 정보, 사용자가 현재 보고 있는 영역을 나타내는 뷰포트(Viewport) 정보 등이 전달될 수 있다. 실시 예에 따라, 사용자는 VR/AR/MR/자율주행 환경 상에 구현된 것들과 상호작용 할 수도 있는데, 이 경우 그 상호작용과 관련된 정보가 피드백 과정에서 송신측 내지 서비스 프로바이더 측으로 전달될 수도 있다. 실시 예에 따라 피드백 과정은 수행되지 않을 수도 있다.
실시예에 따라 전술한 피드백 정보는 송신측으로 전달되는 것 뿐아니라, 수신측에서 소비될 수도 있다. 즉, 전술한 피드백 정보를 이용하여 수신측의 디캡슐레이션 처리, 디코딩, 렌더링 과정 등이 수행될 수 있다. 예를 들어, 오리엔테이션 정보 및/또는 뷰포트 정보를 이용하여 현재 사용자가 보고 있는 영역에 대한 point cloud 데이터가 우선적으로 디캡슐레이션, 디코딩 및 렌더링될 수도 있다.
도15는 실시예들에 따른 point cloud 데이터 저장 및 전송을 나타낸다.
도면은 실시예들에 따른 point cloud 데이터 전송 장치를 나타낸다.
실시예들에 따른 Point Cloud 데이터 저장 및 전송 장치는 Point Cloud 획득부(Point Cloud Acquisition), Point Cloud 인코딩부(Point Cloud Encoding), 파일/세그먼트 인캡슐레이션부(File/Segment Encapsulation),및/또는 딜리버리부(Delivery)를 포함한다. 전송 장치의 각 구성은 모듈/유닛/컴포넌트/하드웨어/소프트웨어/프로세서 등일 수 있다.
Point cloud 의 geometry, attribute, auxiliary data, mesh data 등은 각각 별도의 스트림으로 구성되거나 혹은 파일 내 각각 다른 트랙에 저장될 수 있다. 더 나아가 별도의 세그먼트에 포함될 수 있다.
Point Cloud 획득부(Point Cloud Acquisition)은 point cloud 를 획득한다. 예를 들어 하나 이상의 카메라를 통하여 Point Cloud의 캡쳐, 합성 또는 생성 과정 등을 통한 Point Cloud 데이터를 획득할 수 있다. 이러한 획득 과정에 의해 각 포인트의 3D 위치(x, y, z 위치 값 등으로 나타낼 수 있다. 이하 이를 지오메트리라고 일컫는다), 각 포인트의 속성 (color, reflectance, transparency 등)을 포함하는 point cloud 데이터를 획득할 수 있으며 이를 포함하는, 예를 들어, PLY(Polygon File format or the Stanford Triangle format) 파일 등으로 생성 될 수 있다. 여러 개의 프레임을 갖는 point cloud 데이터의 경우 하나 이상의 파일들이 획득될 수 있다. 이러한 과정에서 point cloud 관련 메타데이터 (예를 들어 캡처 등과 관련된 메타데이터 등)가 생성될 수 있다.
Point Cloud 인코딩부(Point Cloud Encoding)는 Point Cloud인코더는 Geometry-based Point Cloud Compression (G-PCC) 절차를 수행하며 이는 예측, 변환, 양자화, 엔트로피 코딩 등의 일련의 절차를 수행하고 인코딩된 데이터(인코딩된 비디오/영상 정보)는 비트스트림(bitstream) 형태로 출력될 수 있다. 이는 후술하는 바와 같이 지오메트리 및 속성(attribute) 로 나누어 인코딩 할 수 있으며 비트 스트림 상에 포인트 클라우드 관련 메타데이터가 포함될 수 있다. 이 경우 출력 비트 스트림은 지오메트리 비트스트림 및/또는 어트리뷰트 비트스트림 을 포함할 수 있다. Point Cloud 인코딩부는 메타데이터(Metadata)를 수신할 수 있다. 메타데이터는 Point Cloud를 위한 콘텐츠에 관련된 메타데이터를 나타낸다. 예를 들어 이니셜 뷰잉 오리엔테이션 메타데이터(Initial viewing orientation metadata)가 있을 수 있다. 메타데이터는 포인트 클라우드 데이터가 앞을 나타내는 데이터인지 뒤를 나타내는 데이터인지 등을 나타낸다. Point Cloud 인코딩부는 오리엔테이션 정보 및/또는 뷰포트 정보를 수신할 수 있다. Point Cloud 인코딩부 메타데이터, 오리엔테이션 정보 및/또는 뷰포트 정보에 기반하여 인코딩을 수행할 수 있다.
구체적으로, Point Cloud 인코딩부(Point Cloud Encoding)는 지오메트리 컴프레션(Geometry compression), 어트리뷰트 컴프레션(Attribute compression), Auxiliary 데이터 컴프레션(Auxiliary data compression), Mesh 데이터 컴프레션(Mesh data compression)을 수행한다.
지오메트리 컴프레션(Geometry compression)은 point cloud 지오메트리 정보를 인코딩한다. 지오메트리는 3차원 공간상의 포인트를 나타낸다.
어트리뷰트 컴프레션(Attribute compression)은 point cloud 의 어트리뷰트를 인코딩한다. 어트리뷰트는 하나 또는 하나 이상의 어트리뷰트를 나타낸다. 예를 들어, color, reflectance 등의 속성을 포함하는N개의 어트리뷰트가 있을 수 있다.
Auxiliary 데이터 컴프레션(Auxiliary data compression)은, point cloud 와 연관된 Auxiliary 데이터를 인코딩한다. Auxiliary 데이터는 Point Cloud에 관한 메타데이터를 나타낸다.
Mesh 데이터 컴프레션(Mesh data compression)은 Mesh 데이터를 인코딩한다. Mesh 는 Point Cloud간의 연결 정보를 나타낸다. 예를 들어, 삼각형 형태의 데이터일 수 있다.
Point Cloud 인코딩부는 포인트를 렌더링하기 위해 필요한 정보들인 포인트에 관한 지오메트리, 어트리뷰트, Auxiliary 데이터, Mesh데이터를 인코딩한다. Point Cloud 인코딩부는 지오메트리, 어트리뷰트, Auxiliary 데이터, Mesh 데이터를 인코딩하여 하나의 비트스트림으로 전달할 수 있다. 또는, Point Cloud 인코딩부는 지오메트리, 어트리뷰트, Auxiliary 데이터, Mesh 데이터를 인코딩하여 복수의 비트스트림으로 전달할 수 있다. 포인트 클라우드 인코딩부의 각 동작은 병렬적으로 수행될 수 있다.
파일/세그먼트 인캡슐레이션부(File/Segment Encapsulation)는 미디어 트랙 인캡슐레이션(Media track encapsulation) 및/또는 메타데이터 트랙 인캡슐레이션(metadata track encapsulation)을 수행한다. 파일/세그먼트 인캡슐레이션부는 인코딩된 지오메트리, 인코딩된 어트리뷰트, 인코딩된 Auxiliary 데이터, 인코딩된 Mesh데이터를 파일 형태로 전달하기 위한 트랙을 생성한다. 인코딩된 지오메트리를 포함하는 비트스트림, 인코딩된 어트리뷰트를 포함하는 비트스트림, 인코딩된 Auxiliary데이터를 포함하는 비트스트림, 인코딩된 Mesh데이터를 포함하는 비트스트림을 하나 또는 하나 이상의 복수의 트랙에 포함시킬 수 있다. 파일/세그먼트 인캡슐레이션부는 지오메트리, 어트리뷰트, Auxiliary 데이터, Mesh 데이터를 하나 또는 하나 이상의 미디어 트랙으로 인캡슐레이션한다. 또한, 파일/세그먼트 인캡슐레이션부는 메타데이터를 미디어 트랙에 포함하거나 별도의 메타데이터 트랙으로 인캡슐레이션한다. 파일/세그먼트 인캡슐레이션부는 포인트 클라우드 스트림(들)을 파일 및/또는 세그먼트의 형태로 인캡슐레이션한다. 포인트 클라우드 스트림(들)을 세그먼트(들) 형태로 인캡슐레이션하여 전달하는 경우 DASH포맷으로 딜리버리한다. 파일/세그먼트 인캡슐레이션부는 포인트 클라우드 스트림(들)을 파일 형태로 인캡슐레이션하는 경우 파일을 딜리버리한다.
딜리버리부(Delivery)는 point cloud 비트스트림 혹은 해당 비트스트림을 포함하는 파일/세그먼트를 디지털 저장매체 또는 네트워크를 통하여 수신 디바이스의 수신부로 전달할 수 있다. 전송을 위해 임의의 전송 프로토콜에 따른 처리가 수행될 수 있다. 전송을 위한 처리를 마친 데이터들은 방송망 및/또는 브로드밴드를 통해 전달될 수 있다. 이 데이터들은 온 디맨드(On Demand) 방식으로 수신측으로 전달될 수도 있다.디지털 저장 매체는 USB, SD, CD, DVD, 블루레이, HDD, SSD 등 다양한 저장 매체를 포함할 수 있다. 딜리버리부는 미리 정해진 파일 포멧을 통하여 미디어 파일을 생성하기 위한 엘리먼트를 포함할 수 있고, 방송/통신 네트워크를 통한 전송을 위한 엘레멘트를 포함할 수 있다. 딜리버리부는 수신부로부터 오리엔테이션 정보 및/또는 뷰포트 정보를 수신한다. 딜리버리부는 획득한 오리엔테이션 정보 및/또는 뷰포트 정보(또는 사용자가 선택한 정보)를 파일/세그먼트 인캡슐레이션부 및/또는 포인트 클라우드 인코딩부에 전달할 수 있다. 오리엔테이션 정보 및/또는 뷰포트 정보에 기반하여, 포인트 클라우드 인코딩부는 모든 포인트 클라우드 데이터를 인코딩하거나 또는 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 포인트 클라우드 데이터를 인코딩할 수 있다. 오리엔테이션 정보 및/또는 뷰포트 정보에 기반하여, 파일/세그먼트 인캡슐레이션부는 모든 포인트 클라우드 데이터를 인캡슐레이션하거나 또는 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 포인트 클라우드 데이터를 인캡슐레이션할 수 있다. 오리엔테이션 정보 및/또는 뷰포트 정보에 기반하여, 딜리버리부는 모든 포인트 클라우드 데이터를 딜리버리하거나 또는 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 포인트 클라우드 데이터를 딜리버리할 수 있다.
도16은 실시예들에 따른 point cloud 데이터 수신 장치를 나타낸다.
도면은 point cloud 데이터 수신 장치를 나타낸다.
실시예들에 따른 Point Cloud 데이터 수신 장치는 딜리버리 클라이언트(Delivery Client), 센싱/트랙킹부(Sensing/Tracking), 파일/세그먼트 디캡슐레이션부(File/Segment decapsulation), Point Cloud 디코딩부(Point Cloud Decoding) 및/또는 Point Cloud 렌더링부(Point Cloud Rendering), 디스플레이를 포함한다. 수신 장치의 각 구성은 모듈/유닛/컴포넌트/하드웨어/소프트웨어/프로세서 등일 수 있다.
딜리버리 클라이언트(Delivery Client)는 실시예들에 따른 point cloud 데이터 전송 장치가 전송한 point cloud 데이터, point cloud 비트스트림 혹은 해당 비트스트림을 포함하는 파일/세그먼트를 수신할 수 있다. 전송되는 채널에 따라 수신부는 방송망을 통하여 point cloud데이터를 수신할 수도 있고, 브로드밴드를 통하여 point cloud데이터를 수신할 수도 있다. 혹은 디지털 저장 매체를 통하여 point cloud 비디오 데이터를 수신할 수도 있다. 수신부는 수신한 데이터를 디코딩 하고 이를 사용자의 뷰포트 등에 따라 랜더링하는 과정을 포함할 수 있다. 수신 처리부는 수신된 point cloud데이터에 대해 전송 프로토콜에 따른 처리를 수행할 수 있다. 수신 처리부는 수신부에 포함될 수 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 전송측에서 전송을 위한 처리가 수행된 것에 대응되도록, 수신 처리부는 전술한 전송 처리부의 역과정을 수행할 수 있다. 수신 처리부는 획득한 point cloud 데이터는 디캡슐레이션 처리부로 전달하고, 획득한 point cloud 관련 메타데이터는 메타데이터 파서로 전달할 수 있다.
센싱/트랙킹부(Sensing/Tracking)는 오리엔테이션 정보 및/또는 뷰포트 정보를 획득한다. 센싱/트랙킹부는 획득한 오리엔테이션 정보 및/또는 뷰포트 정보를 딜리버리 클라이언트, 파일/세그먼트 디캡슐레이션부, 포인트 클라우드 디코딩부에 전달할 수 있다.
딜리버리 클라이언트는 오리엔테이션 정보 및/또는 뷰포트 정보에 기반하여, 모든 포인트 클라우드 데이터를 수신하거나 또는 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 포인트 클라우드 데이터를 수신할 수 있다. 파일/세그먼트 디캡슐레이션부는 오리엔테이션 정보 및/또는 뷰포트 정보에 기반하여, 모든 포인트 클라우드 데이터를 디캡슐레이션하거나 또는 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 포인트 클라우드 데이터를 디캡슐레이션할 수 있다. 포인트 클라우드 디코딩부는 오리엔테이션 정보 및/또는 뷰포트 정보에 기반하여, 모든 포인트 클라우드 데이터를 디코딩하거나 또는 오리엔테이션 정보 및/또는 뷰포트 정보가 나타내는 포인트 클라우드 데이터를 디코딩할 수 있다.
파일/세그먼트 디캡슐레이션부(File/Segment decapsulation)는 미디어 트랙 디캡슐레이션(Media track decapsulation) 및/또는 메타데이터 트랙 디캡슐레이션(Metadata track decapsulation)을 수행한다. 디캡슐레이션 처리부(file/segment decapsulation)는 수신 처리부로부터 전달받은 파일 형태의 point cloud데이터를 디캡슐레이션할 수 있다. 디캡슐레이션 처리부는 ISOBMFF 등에 따른 파일 혹은 세그먼트들을 디캡슐레이션하여, point cloud비트스트림 내지 point cloud 관련 메타데이터(혹은 별도의 메타데이터 비트스트림)를 획득할 수 있다. 획득된 point cloud비트스트림은 상기 point cloud디코더로, 획득된 point cloud관련 메타데이터(혹은 메타데이터 비트스트림)는 메타데이터 처리부로 전달할 수 있다. 상기 point cloud비트스트림은 상기 메타데이터(메타데이터 비트스트림)를 포함할 수도 있다. 상기 메타데이터 처리부는 상기 point cloud 비디오 디코더에 포함될 수도 있고, 또는 별도의 컴포넌트/모듈로 구성될 수도 있다. 디캡슐레이션 처리부가 획득하는 point cloud관련 메타데이터는 파일 포맷 내의 박스 혹은 트랙 형태일 수 있다. 디캡슐레이션 처리부는 필요한 경우 메타데이터 처리부로부터 디캡슐레이션에 필요한 메타데이터를 전달받을 수도 있다. 상기 point cloud관련 메타데이터는 상기 point cloud디코더에 전달되어 point cloud디코딩 절차에 사용될 수도 있고, 또는 렌더러에 전달되어 point cloud렌더링 절차에 사용될 수도 있다.
Point Cloud 디코딩부(Point Cloud Decoding)는 지오메트리 디컴프레션(Geometry decompression), 어트리뷰트 디컴프레션(Attribute decompression), Auxiliary 데이터 디컴프레션(Auxiliary data decompression) 및/또는 Mesh 데이터 디컴프레션(Mesh data decompression)을 수행한다. Point Cloud디코더는 상기 비트스트림을 입력 받아 상기 Point Cloud인코더의 동작에 대응하는 동작을 수행하여 데이터를 디코딩할 수 있다. 이 경우 Point Cloud디코더는 Point Cloud데이터를 후술하는 바와 같이 지오메트리 및 속성(attribute)로 나누어 디코딩할 수 있다. 예를 들어, Point Cloud디코더는 입력 비트스트림 내 포함된 지오메트리 비트스트림으로부터 지오메트리를 복원(디코딩)할 수 있고, 상기 입력 비트스트림 내 포함된 속성 비트스트림 및 상기 복원된 지오메트리를 기반으로 속성값을 복원(디코딩)할 수 있다. 상기 입력 비트스트림 내 포함된 메쉬 비트스트림 및 상기 복원된 지오메트리를 기반으로 메쉬를 복원(디코딩)할 수 있다.상기 복원된 지오메트리에 따른 위치 정보 및 상기 디코딩된 속성값에 따른 (컬러) 텍스처 어트리뷰트를 기반으로 3차원의 각 포인트의 위치와 각 포인트의 속성정보를 복원하여 point cloud을 복원할 수 있다. 포인트 클라우드 디코딩부의 각 동작은 병렬적으로 수행될 수 있다.
지오메트리 디컴프레션은 포인트 클라우드 스트림(들)으로부터 지오메트리 데이터를 디코딩한다. 어트리뷰트 디컴프레션은 포인트 클라우드 스트림(들)으로부터 어트리뷰트 데이터를 디코딩한다. Auxiliary 데이터 디컴프레션은 포인트 클라우드 스트림(들)으로부터 Auxiliary 데이터를 디코딩한다. Mesh데이터 디컴프레션은 포인트 클라우드 스트림(들) 으로부터 Mesh 데이터를 디코딩한다.
Point Cloud 렌더링부(Point Cloud Rendering)는 디코딩된 지오메트리, 에투리뷰트, auxiliary 데이터, 메쉬데이터를 기반으로 포인트 클라우드의 각 포인트의 위치 및 해당 포인트의 에트리뷰티를 복원하고 해당 포인트 클라우드 데이터를 렌더링한다. 포인트 클라우드 렌더링부는 복원된 지오메트리, 복원된 어트리뷰트, 복원된Auxiliary데이터 및/또는 복원된Mesh데이터에 기초하여 포인트 클라우드 간의 메쉬(연결) 데이터를 생성하고 렌더링한다. 포인트 클라우드 렌더링부는 파일/세그먼트 인캡슐레이션부 및/또는 포인트 클라우드 디코딩부로부터 메타데이터를 수신한다. 포인트 클라우드 렌더링부는 오리엔테이션 혹은 뷰포트에 따라 메타데이터에 기반하여 포인트 클라우드 데이터를 렌더링할 수 있다.
디스플레이는 랜더링된 결과를 실제 디스플레이 장치 상에 디스플레이한다.
도17은 실시예들에 따른 포인트 클라우드 데이터 송수신 방법/장치와 연동 가능한 구조의 예시를 나타낸다.
도 17를 참조하면, 실시예들에 따른 구조는 서버(1760), 로봇(1710), 자율 주행 차량(1720), XR 장치(1730), 스마트폰(1740), 가전(1750) 및/또는 HMD(1770) 중에서 적어도 하나 이상이 클라우드 네트워크(1710)와 연결된다. 여기서, 로봇(1710), 자율 주행 차량(1720), XR 장치(1730), 스마트폰(1740) 또는 가전(1750) 등을 장치라 칭할 수 있다. 또한, XR 장치(1730)는 실시예들에 따른 포인트 클라우드 데이터 (PCC) 장치에 대응되거나 PCC장치와 연동될 수 있다.
클라우드 네트워크(1700)는 클라우드 컴퓨팅 인프라의 일부를 구성하거나 클라우드 컴퓨팅 인프라 안에 존재하는 네트워크를 의미할 수 있다. 여기서, 클라우드 네트워크(1700)는 3G 네트워크, 4G 또는 LTE(Long Term Evolution) 네트워크 또는 5G 네트워크 등을 이용하여 구성될 수 있다.
서버(1760)는 로봇(1710), 자율 주행 차량(1720), XR 장치(1730), 스마트폰(1740), 가전(1750) 및/또는 HMD(1770) 중에서 적어도 하나 이상과 클라우드 네트워크(1700)을 통하여 연결되고, 연결된 장치들(1710 내지 1770)의 프로세싱을 적어도 일부를 도울 수 있다.
HMD (Head-Mount Display)(1770)는 실시예들에 따른 XR 디바이스 및/또는 PCC 디바이스가 구현될 수 있는 타입 중 하나를 나타낸다. 실시예들에 따른HMD 타입의 디바이스는, 커뮤니케이션 유닛, 컨트롤 유닛, 메모리 유닛, I/O 유닛, 센서 유닛, 그리고 파워 공급 유닛 등을 포함한다.
이하에서는, 상술한 기술이 적용되는 장치(1710 내지 1750)의 다양한 실시 예들을 설명한다. 여기서, 도 17에 도시된 장치(1710 내지 1750)는 상술한 실시예들에 따른 포인트 클라우드 데이터 송수신 장치와 연동/결합될 수 있다.
<PCC+XR>
XR/PCC 장치(1730)는 PCC 및/또는 XR(AR+VR) 기술이 적용되어, HMD(Head-Mount Display), 차량에 구비된 HUD(Head-Up Display), 텔레비전, 휴대폰, 스마트 폰, 컴퓨터, 웨어러블 디바이스, 가전 기기, 디지털 사이니지, 차량, 고정형 로봇이나 이동형 로봇 등으로 구현될 수도 있다.
XR/PCC 장치(1730)는 다양한 센서들을 통해 또는 외부 장치로부터 획득한 3차원 포인트 클라우드 데이터 또는 이미지 데이터를 분석하여 3차원 포인트들에 대한 위치 데이터 및 속성 데이터를 생성함으로써 주변 공간 또는 현실 객체에 대한 정보를 획득하고, 출력할 XR 객체를 렌더링하여 출력할 수 있다. 예컨대, XR/PCC 장치(1730)는 인식된 물체에 대한 추가 정보를 포함하는 XR 객체를 해당 인식된 물체에 대응시켜 출력할 수 있다.
<PCC+자율주행+XR>
자율 주행 차량(1720)은 PCC 기술 및 XR 기술이 적용되어, 이동형 로봇, 차량, 무인 비행체 등으로 구현될 수 있다.
XR/PCC 기술이 적용된 자율 주행 차량(1720)은 XR 영상을 제공하는 수단을 구비한 자율 주행 차량이나, XR 영상 내에서의 제어/상호작용의 대상이 되는 자율 주행 차량 등을 의미할 수 있다. 특히, XR 영상 내에서의 제어/상호작용의 대상이 되는 자율 주행 차량(1720)은 XR 장치(1730)와 구분되며 서로 연동될 수 있다.
XR/PCC영상을 제공하는 수단을 구비한 자율 주행 차량(1720)은 카메라를 포함하는 센서들로부터 센서 정보를 획득하고, 획득한 센서 정보에 기초하여 생성된 XR/PCC 영상을 출력할 수 있다. 예컨대, 자율 주행 차량(1720)은 HUD를 구비하여 XR/PCC 영상을 출력함으로써, 탑승자에게 현실 객체 또는 화면 속의 객체에 대응되는 XR/PCC 객체를 제공할 수 있다.
이때, XR/PCC 객체가 HUD에 출력되는 경우에는 XR/PCC 객체의 적어도 일부가 탑승자의 시선이 향하는 실제 객체에 오버랩되도록 출력될 수 있다. 반면, XR/PCC 객체가 자율 주행 차량의 내부에 구비되는 디스플레이에 출력되는 경우에는 XR/PCC 객체의 적어도 일부가 화면 속의 객체에 오버랩되도록 출력될 수 있다. 예컨대, 자율 주행 차량(1220)은 차로, 타 차량, 신호등, 교통 표지판, 이륜차, 보행자, 건물 등과 같은 객체와 대응되는 XR/PCC 객체들을 출력할 수 있다.
실시예들에 의한 VR (Virtual Reality) 기술, AR (Augmented Reality) 기술, MR (Mixed Reality) 기술 및/또는 PCC(Point Cloud Compression)기술은, 다양한 디바이스에 적용 가능하다.
즉, VR 기술은, 현실 세계의 객체나 배경 등을 CG 영상으로만 제공하는 디스플레이 기술이다. 반면, AR 기술은, 실제 사물 영상 위에 가상으로 만들어진 CG 영상을 함께 보여 주는 기술을 의미한다. 나아가, MR 기술은, 현실세계에 가상 객체들을 섞고 결합시켜서 보여준다는 점에서 전술한 AR 기술과 유사하다. 그러나, AR 기술에서는 현실 객체와 CG 영상으로 만들어진 가상 객체의 구별이 뚜렷하고, 현실 객체를 보완하는 형태로 가상 객체를 사용하는 반면, MR 기술에서는 가상 객체가 현실 객체와 동등한 성격으로 간주된다는 점에서 AR 기술과는 구별이 된다. 보다 구체적으로 예를 들면, 전술한 MR 기술이 적용된 것이 홀로그램 서비스 이다.
다만, 최근에는 VR, AR, MR 기술을 명확히 구별하기 보다는 XR (extended Reality) 기술로 부르기도 한다. 따라서, 본 발명의 실시예들은 VR, AR, MR, XR 기술 모두에 적용 가능하다. 이런 한 기술은 PCC, V-PCC, G-PCC 기술 기반 인코딩/디코딩이 적용될 수 있다.
실시예들에 따른 PCC방법/장치는 자율 주행 서비스를 제공하는 차량에 적용될 수 있다.
자율 주행 서비스를 제공하는 차량은 PCC 디바이스와 유/무선 통신이 가능하도록 연결된다.
실시예들에 따른 포인트 클라우드 데이터 (PCC) 송수신 장치는 차량과 유/무선 통신이 가능하도록 연결된 경우, 자율 주행 서비스와 함께 제공할 수 있는 AR/VR/PCC 서비스 관련 콘텐트 데이터를 수신/처리하여 차량에 전송할 수 있다. 또한 포인트 클라우드 데이터 송수신 장치 차량에 탑재된 경우, 포인트 클라우드 송수신 장치는 사용자 인터페이스 장치를 통해 입력된 사용자 입력 신호에 따라 AR/VR/PCC 서비스 관련 콘텐트 데이터를 수신/처리하여 사용자에게 제공할 수 있다. 실시예들에 따른 차량 또는 사용자 인터페이스 장치는 사용자 입력 신호를 수신할 수 있다. 실시예들에 따른 사용자 입력 신호는 자율 주행 서비스를 지시하는 신호를 포함할 수 있다.
본 명세서에서 실시예들에 따른 방법/장치는 실시예들에 따른 포인트 클라우드 데이터 송신 방법/장치 및/도는 포인트 클라우드 데이터 수신 방법/장치를 지칭한다. 또한, 실시예들에 따른 포인트 클라우드 데이터 송신 장치는 PCC 부호화기 및/또는 인코더를 지칭하고, 실시예들에 따른 포인트 클라우드 데이터 수신 장치는 PCC 복호화기 및/또는 디코더를 지칭한다.
실시예들에 따른 포인트 클라우드 데이터는 포인트 클라우드 또는 포인트 클라우드 콘텐츠로 지칭될 수 있고, 실시예들에 따른 기하정보는 지오메트리 정보, 실시예들에 따른 속성정보는 어트리뷰트 정보로 지칭될 수 있다.
실시예들에 따른 방법/장치는 3차원 포인트 클라우드(point cloud) 데이터 압축을 위한 Geometry-based Point Cloud Compression (G-PCC)의 지오메트리 및 속성 양자화 적용 방안을 제공한다.
실시예들에 따른 방법/장치는 포인트 클라우드 관련하여, 콘텐츠의 특성과 서비스의 특성에 따른 영역별 적응형(adaptive) 양자화 적용/조절을 위한 방안을 제공한다.
또한, 실시예들에 따른 방법/장치는 G-PCC 지오메트리/속성 부호화/복호화 과정에서 콘텐츠의 분산 정도에 따라서 슬라이스보다 작은 영역으로 분할하고, 서비스의 종류에 따라 분할된 영역의 압축의 질을 조절하기 위한 지오메트리/속성 QP를 할당하고 중복 포인트 병합 여부를 설정하고, 설정된 기반으로 지오메트리 코딩 방법을 수정/적용하고 옥트리 구성시 오버랩 처리방법을 적용하여 영역별 적응형 양자화 조절/적용 방안을 제공할 수 있다.
따라서, 실시예들에 따른 방법/장치는 지오메트리 2차 양자화 단계를 적용할 수 있고, 분할된 영역기반 옥트리를 구성할 수 있고, 이를 위한 효율적인 시그널링 방안을 제공할 수 있는 효과가 있다.
본 발명은 3차원 포인트 클라우드(point cloud) 데이터 압축을 위한 Geometry-based Point Cloud Compression (G-PCC)의 지오메트리(geometry)와 속성(attribute) 압축의 질(quality)을 포인트 클라우드의 분포에 따라 조절하는 방안에 관한 것이다.
이하 인코더(encoder), 부호화기는 부호화기로 디코더(decoder), 복호화기는 복호화기로 지칭한다.
실시예들에 따른 포인트 클라우드는 포인트(point)들의 집합으로 구성되며, 각 포인트는 지오메트리(geometry) 정보와 속성(attributes) 정보를 포함할 수 있다. 지오메트리 정보는 3차원 위치(XYZ) 정보이며, 속성 정보는 색상 (RGB, YUV 등) 및/또는 반사(Reflectance) 값이다.
실시예들에 따른G-PCC 부호화(encoding) 과정은 지오메트리를 압축하고, 압축을 통해 변경된 위치 정보들로 재구성 된 지오메트리(reconstructed geometry=복호화된 지오메트리)를 바탕으로 속성 정보를 압축하는 과정을 포함할 수 있다.
실시예들에 따른G-PCC 복호화(decoding) 과정은 부호화된 지오메트리 비트스트림(bitstream)과 속성 비트스트림을 전송 받아서 지오메트리를 복호화하고, 복호화 과정을 통해 재구성된 지오메트리를 기반으로 속성 정보를 복호화하는 과정을 포함할 수 있다. (상세 내용은 도1등에서 상술한 바와 같다)
실시예들에 따른 지오메트리 정보 압축 과정에서 옥트리 기법 또는 트라이숲(trisoup) 기법을 사용할 수 있다. 지오메트리 정보 복셀화(voxelization), 점유된 복셀(occupied voxel) 관리를 위한 옥트리 기법, 트라이숲을 사용하는 경우, 삼각형을 만들기 위한 정점 세그먼트들의 정보로 정보를 변환하는 과정이 포함될 수 있다. (상세 내용은 도4 등에서 상술한 바와 같다)
실시예들에 따른 속성 정보 압축 과정은 Prediction transform scheme, Lift transform scheme 및/또는 RAHT 기법을 포함할 수 있다. (상세 내용은 도4 등에서 상술한 바와 같다)
실시예들에 따른 포인트 클라우드 인코딩 프로세스는 지오메트리 코딩과 속성 코딩을 포함한다. 따라서, 압축의 질 측면에서도 지오메트리 코딩과 속성 코딩이 다르게 적용될 수 있고, 지오메트리 압축된 결과로 재구성된 포인트 클라우드가 속성 코딩의 입력이 되기 때문에 지오메트리 압축의 질은 속성 코딩에 영향을 줄 수도 있다.
지오메트리 및 속성 압축의 질의 조절은 양자화 값으로 조절될 수 있다. 또한 지오메트리 질의 조절은 중복 포인트 처리에 따라서도 조절될 수 있다.
지오메트리 및 속성 압축의 질(quality) 조절시 다음을 고려할 필요가 있을 수 있다.
실시예들에 따른 포인트 클라우드 인코딩 프로세스는 포인트 클라우드 콘텐츠의 특성과 서비스의 특성에 따라서 영역별 적응형(adaptive) 양자화 조절/적용이 필요할 수 있다. 예를 들어, 도로 자율 주행 시에 캡쳐되는 데이터는 캡쳐된 장비와 가까운 영역이 중요하기 때문에 중요한 영역은 가능한 보존하는 것은 중요하다. 비행 시뮬레이션의 지형의 경우, 넓은 영역의 포인트 클라우드를 빨리 로딩해야하는 문제가 지형의 가까운 영역 보존보다 더 큰 문제일 수 있다. 비행기와 지형이 멀리 떨어져 있기때문에 가능할 수 있다. 이러한 경우, 분포가 높은 영역에 더 큰 값으로 양자화 해 주는 것이 필요할 수 있다. 따라서 콘텐츠의 포인트 분포와 서비스의 특성에 따라서 영역별로 양자화 값을 조절하여 질을 조절할 필요가 있을 수 있다.
실시예들에 따른 포인트 클라우드 인코딩 프로세스에서 영역을 나누는 방법에는 타일(tile)과 슬라이스(slice)가 존재할 수 있다. 그러나 이상적인 슬라이스는 약 1,100,000개의 포인트를 기준으로 나눌 수 있고 타일들은 하나 이상의 슬라이스로 구성될 수 있어서 더 큰 기준일 수 있다. 슬라이스는 병렬적으로 수행되기 때문에 슬라이스 간에는 압축시 관련 정보를 교환할 수 없다. 따라서 영역을 나누는 방식을 타일, 슬라이스와 추가로, 슬라이스 보다 작은 단위(블록)로 포인트 클라우드를 분할하고 블록 분할 압축시 서로 다른 영역에 대한 정보를 교환하면서 압축을 할 수 있는 방법이 필요할 수 있다.
상술한 과제와 관련하여, 실시예들에 따른 방법/장치는 콘텐츠의 특성과 서비스의 특성에 따른 영역별 적응형(adaptive) 양자화 적용/조절을 위한 방안을 제공한다. 구체적으로, 본 명세서에서 지오메트리 2차 양자화 단계 적용 방안, 분할된 영역기반 옥트리 구성 방안 및/또는 위 방법을 지원하기 위한 시그널링 방안을 설명한다. 이와 관련하여, 실시예들 간 변경 및 결합이 가능하고, 본 문서에서 사용되는 용어는 해당 분야에서 널리 사용되는 범위 내에서, 용어의 의도된 의미에 근거하여 이해될 수 있다.
실시예들에 따른 포인트 클라우드 분산 기반 영역별 적응형(adaptive) 양자화 적용 방안은 PCC 부호화기의 PCC 속성 부호화에서 수행되고, PCC 복호화기의 PCC 속성 복호화 과정을 통해 복원될 수 있다
예를 들어, 도1의 송신 장치(10000), 포인트 클라우드 비디오 인코더(10002), 도2의 인코딩(20001), 도4의 지오메트리/어트리뷰트 인코딩 프로세스, 도12의 포인트 클라우드 인코더의 전부/일부(12000 내지 12012), 도14-15의 PCC 시스템의 포인트 클라우드 인코딩, 파일/세그먼트 인캡슐레이션 등, 도17의 XR디바이스(1730), 도20의 포인트 클라우드 인코더의 전부/일부(20000 내지 20050) 등이 후술할 실시예들에 따른 포인트 클라우드 분산 기반 영역별 적응형 양자화를 송신 측에서 처리할 수 있다. 이하에서, 상술한 구성요소들은 실시예들에 따른 방법/장치로 줄여서 지칭될 수 있다.
또한, 도1의 수신 장치(10004), 포인트 클라우드 비디오 디코더(10006), 도2의 디코딩(20003), 도11의 지오메트리/어트리뷰트 디코딩 프로세스, 도13의 포인트 클라우드 디코더의 전부/일부(13000 내지 13011), 도14, 16의 PCC 시스템의 포인트 클라우드 디코딩, 파일/세그먼트 디캡슐레이션 등, 도17의 XR디바이스(1730), 도21의 포인트 클라우드 디코더의 전부/일부(21000 내지 21020) 등이 후술할 실시예들에 따른 포인트 클라우드 분산 기반 영역별 적응형 양자화를 수신 측에서 처리할 수 있다. 이하에서, 상술한 구성요소들은 실시예들에 따른 방법/장치로 줄여서 지칭될 수 있다.
실시예들에 따른 지오메트리 인코더 및/또는 어트리뷰트 인코더를 포함하는 포인트 클라우드 데이터 인코더는 영역 분할 및 QP 설정 준비 관련하여, 1) 포인트들에 대한 위치 값 조정 단계, 2) 포인트 클라우드 분산(point cloud distribution) 분석 단계, 3) 영역 분할 단계, 4) 분할된 영역의 지오메트리 및 속성 QP 조정 단계, 및/또는 5) 분할된 영역의 중복 포인트 병합(Duplicated Point Merge) 여부 설정 단계 등을 수행할 수 있다.
또한, 실시예들에 따른 지오메트리 인코더 및/또는 어트리뷰트 인코더를 포함하는 포인트 클라우드 데이터 인코더는 영역별 적응형(adaptive) 양자화 적용/조절 방안 관련하여, 1) 포인트들에 대한 2차 양자화 단계, 2) 포인트들에 대한 복셀화 단계, 및/또는 3) 옥트리 구성 단계 등을 수행할 수 있다.
또한, 실시예들에 따른 옥트리 구성 단계는 1) 영역의 오버랩 처리 방안 등을 수행할 수 있다.
상술한 각 실시예들에 상세 동작을 이하에서 설명한다.
실시예들에 따른 지오메트리 및/또는 어트리뷰트 인코딩 관련한 영역 분할 및 QP 설정 준비의 상세 과정은 다음과 같다.
1) 실시예들에 따른 포인트들에 대한 위치 값 조정 단계
실시예들에 따른 인코더는 전체 포인트들의 최소 x, y, z 위치 값을 찾아 각 포인트들의 위치 값에서 빼줄 수 있다. 이 과정을 통해 해당 포인트 클라우드 콘텐츠의 왼쪽 하단 앞쪽의 위치를 원점(0, 0, 0)으로 조절될 수 있다. 또한, 사용자 정보로서 이동 또는 회전 정보를 수신하여 포인트 클라우드의 포인트들을 입력 받은 이동 값, 또는 회전 값을 전체 포인트에 적용할 수도 있다. 또한 전체 스케일(scale) 값을 입력받아 포인트들의 위치값에 스케일 값을 적용할 수 있다. 스케일 값은 전체 지오메트리 양자화(geometry quantization parameter) 값으로 고려될 수 있다. 따라서, 무손실 지오메트리 코딩에서는 스케일 값을 1로 고정하고, 손실 지오메트리에서는 스케일 값은 1보다 작은 수로 지정될 수 있다. 전체 스케일 값 적용으로 1차 지오메트리 양자화 단계가 적용될 수 있다.
2) 실시예들에 따른 포인트 클라우드 분산(point cloud distribution) 분석 단계
포인트 클라우드 데이터 인코딩 과정은 자동 영역별 QP 조정 플래그가 설정되어 있을 경우, 콘텐츠에 대한 위치 분산 분석 과정을 수행할 수 있다. 콘텐츠 포인트 클라우드 분산 분석 과정은 각 축에 대한 포인트들의 분산을 알려줄 수 있고, 해당 정보를 활용하여 이후 인코딩 과정은 영역별 지오메트리 QP 값을 자동으로 설정할 수 있다. 또는 속성 QP 값을 자동으로 설정할 수 있다. 설정된 QP 정보는 복호화기에 시그널 정보(또는 메타데이터)로서 시그널링될 수 있다.
예를 들어, 실시예들에 따른 방법/장치는 포인트 클라우드 데이터를 x, y, z축 별로 포인트의 개수를 분석하여 축마다 거리에 따른 포인트의 분산도(또는 밀집도)를 분석할 수 있다.
포인트 클라우드 서비스의 환경에 따라서, 포인트 클라우드 데이터의 지오메트리 정보 및 어트리뷰트 정보의 양자화 수행 시 분산도에 기반하여 QP값을 적용할 수 있다. 포인트 클라우드 콘텐츠의 종류에 따라서, 예를 들어, 도로 주행 데이터 또는 비행 주행 데이터 등과 같이 거리에 따라서 분산도가 높은 곳에 큰 값의 QP를 적용하거나, 작은 값의 QP를 적용할 수 있기 때문입니다.
3) 실시예들에 따른 영역 분할 단계
포인트 클라우드 데이터 인코딩 과정은 자동 영역별 QP 조정 플래그가 설정되어 있을 경우, 포인트 분산에 따라서 영역을 자동으로 분할할 수 있다. 각 축의 포인트 분포에 따라서 사용자로부터 관련 정보를 입력 받아 각 축 별 단계별로 분할 기준을 생성할 수 있다. 분할 정도는 입력 받아 적용할 수 있다.
분할되는 영역 유닛(unit)은 타일, 슬라이스, 및/또는 블록(슬라이스를 분할한 작은 영역)으로 설정 될 수 있다.
각 축에서 분할 영역 범위를 구하는 방법은 다양할 수 있다.
예를 들어, 균일 분할을 위한 분할 영역 범위 설정, 분포율에 따른 분할 영역 범위 설정, 옥트리 노드 영역 + 분포율에 따른 분할 영역 범위 설정 등이 있다.
각 영역은 포인트 밀집도(point density) 값, 바운딩박스(bounding-box, 위치, 크기) 정보를 포함할 수 있다.
옥트리 노드 + 분포율로 분할된 경우, 바운딩박스 대신 옥트리 노드의 설정된 breadth-first/depth-first 등 순서 값을 사용할 수 있다.
예를 들어, 실시예들에 따른 방법/장치는 포인트 클라우드 데이터를 타일/슬라이스/블록 등으로 분할할 수 있다.
타일이란, 공간의 분할 영역으로, 예를 들어, 방 하나가 타일에 해당할 수 있다.
슬라이스란, 타일의 분할 역역으로, 타일 내 일정 포인트의 개수를 기준으로 타일을 복수의 슬라이스로 구분할 수 있다. 타일 단위에서 더 나아가, 병렬적 빠른 처리를 위해서 타일을 슬라이스 단위로 더 나눌 수 있다. 슬라이스 단위로 PCC 인코딩/디코딩이 수행될 수 있다.
블록이란, 슬라이스의 분할 영역이다. 블록의 목적은 슬라이스 단위의 PCC인코딩/디코딩 과정을 더 상세하게 처리하기 위함이다. 슬라이스를 하나 또는 하나 이상의 블록으로 분할할 수 있고, 하나의 슬라이스를 인코딩/디코딩하는 동안 블록 단위로 서로 다른 파라미터를 다양하게 적용할 수 있다.
영역 분할의 유닛은, 타일, 슬라이스, 블록 등 다양할 수 있다.
영역 분할의 방법 관련하여, A) 균할 분할의 경우, 포인트가 존재하는 영역을 각 축에 대한 분할 수를 기준으로 나누게 되면 한 영역의 범위가 나올 수 있다. 실시예들에 따른 방법/장치는 각 축에 대해 영역의 범위를 균일하게 구할 수 있다. 분할 방법으로 전체 포인트의 가장 분포가 높은 영역을 기준으로 각축에 대한 영역 범위로 분할한다. 각 축에 대해 반복한다. 분할 수를 입력 받아 적용할 수 있다.
예를 들어, 각축에 대한 분할 수가 모두 2라면 50% 분산 단위로 영역을 분할할 수 있다. X축 기준 50%, y축 기준 50%, z축 기준 50%에 해당하는 범위를 구하고, x, y, z축 영역의 조합으로 영역들을 분할할 수 있다.
B) 분포율에 기반한 분할의 경우, 실시예들에 따른 방법/장치는 각 축에 대한 포인트의 분포율에 대한 분할 기준 정보를 입력 받아 분할할 수 있다. 예를 들어, x축에 대해서 분할 블락 1은 상위 50%로 전달 받으면, 전체 포인트의 가장 분포가 높은 영역을 기준으로 전체 포인트 개수 대 영역에 속하는 포인트 개수의 퍼센트에 따라 블락 1에 속하는 블록의 분할 영역의 범위를 계산할 수 있다. 각 축에 대한 분할 영역이 구해지면, 각 축의 영역 분할 기준에 맞추어 포인트 클라우드 영역을 분할하여 블록들로 구성할 수 있다. 구성하는 방법은 앞 균일 분할에서 설명한 예시와 같다.
C) 옥트리 노드 영역+분포율에 기반한 분할의 경우, 실시예들에 따른 방법/장치는 각 축에 대한 포인트 분포율에 대한 기준 정보를 입력 받고, 옥트리 노드들을 중심으로 분포율을 체크하고, 입력받은 기준 정보를 기반으로 옥트리 노드의 분포율의 범위를 체크해서 옥트리 노드 기반으로 분할할 수 있다. 콘텐츠는 분할 방법에 따라 분할될 수 있으며, 분할된 영역은 선택된 영역 유닛에 따라 하나의 타일, 슬라이스 또는 블록으로 설정될 수 있다. 분할 방법은 복호화기에서 재구성을 위해 시그널링 될 수 있다. 분할 영역 구성 시, x, y, z 축 순서 기준이 아닌, 축의 순서 변경이 가능하며(y,z,x 등) 변경된 순서는 시그널링 될 수 있다. 각 타일, 슬라이스와 블록에 대한 추가 정보는 시그널링 될 수 있다. 포인트 밀집도(point density) 값을 가질 수 있으며, 밀집도는 포인트 수 / 영역 면적으로 구할 수 있다. 각 타일, 슬라이스와 블록은 각 블록의 바운딩박스(bounding-box, 위치, 크기) 정보를 갖을 수 있다. 옥트리 노드 + 분포율로 분할된 경우, 바운딩박스 대신 옥트리 노드의 설정된 breadth-first/depth-first 등 순서 값을 사용할 수 있다.
4) 실시예들에 따른 분할된 영역의 지오메트리 및 속성 QP (Quantization Point or Quantization Parameter) 조정 단계
영역 분할 단계를 통해 영역이 분할 되어 블록(또는 타일/슬라이스 등)들이 생성된 후, 포인트 클라우드 데이터 인코딩 과정은 각 블록에 지오메트리 QP와 속성 QP를 조정할 수 있다. 각 블록에 설정되는 QP는 블록의 포인트 밀집도에 따라 자동으로 설정될 수도 있고, 각 포인트 밀집도에 따른 QP값을 입력받아서 설정할 수도 있다. 실시예들에 따른 방법/장치는 양자화(2차 양자화) 수행 시 밀집도가 큰 곳에 큰 QP 값을 적용하거나 밀집도가 큰 곳에 작은 QP를 적용하는 등 포인트 클라우드 서비스에 따라서 다양하게 QP값을 조절할 수 있다.
QP값은 2차 지오메트리 양자화 단계와 속성 값 양자화 단계에서 적용될 수 있다. 지오메트리 QP의 경우, 하나의 QP값을 가질 수도 있고, 각 x, y, z,에 다르게 적용할 수도 있다. 가장 상세도가 높은 블록의 양자화 파라메터 값은 1일 수 있다. 상세도가 작아질 수록 양자화 파라메타 값은 1보다 작은 수이다.
5) 실시예들에 따른 분할된 영역의 중복 포인트 병합(Duplicated Point Merge) 여부 설정 단계
영역 분할 단계를 통해 영역이 분할 되어 블록들이 생성된 후, 실시예들에 따른 방법/장치의 포인트 클라우드 데이터 인코딩 과정은 각 블록에 중복 포인트에 대한 병합 여부 설정을 다르게 할 수 있다. 포인트 밀집도에 따라 자동으로 설정될 수도 있고, 각 포인트 밀집도에 따른 중복 포인트 병합 여부를 입력받아 설정할 수도 있다. 자동으로 설정할 경우, QP설정과 마찬가지로 서비스에 따라 다른 정책을 가질 수 있도록 설정 할 수 있다. 실시간이 중요할 경우, 밀집도가 높은 블록에 병합을 수행해서 포인트 수를 줄일 수 있고, 핵심 영역의 지오메트리 형태가 중요할 경우 병합 포인트를 수행하지 않고, 포인트를 보존할 수도 있다.
실시예들에 따른 지오메트리 및/또는 어트리뷰트 인코딩 관련한 영역별 적응형 양자화 적용 및/또는 조절 방법의 구체적인 동작은 다음과 같다:
1) 실시예들에 따른 포인트들에 대한 2차 양자화 단계
실시예들에 따른 방법/장치, 기하정보 부호화부 등에 의한 실시예들에 따른 포인트 클라우드 데이터 인코딩 과정은, 예를 들어, 지오메트리 인코딩 과정은 지오메트리 정보에 대한 2차 양자화 과정을 수행할 수 있다. 설정된 또는 지정된 지오메트리 QP 값을 영역의 포인트들에 적용하여 양자화 시킬 수 있다. 양자화된 지오메트리 위치 정보를 정수화 시킬 수 있다.
2) 실시예들에 따른 포인트들에 대한 복셀화 단계
실시예들에 따른 방법/장치, 복셀화 처리부 등에 의한 실시예들에 따른 포인트 클라우드 데이터 인코딩 과정은 2차 양자화된 지오메트리 정보를 복셀화할 수 있다. 예를 들어, 가로, 세로, 높이가 1인 큐브를 하나의 복셀(voxel)로 정할 수 있다. 정수화된 포인트 위치 값은 포인트를 가지고 있는 복셀(voxel) 위치 정보 값일 수 있다. 1개의 복셀에는 여러 개의 포인트들이 속할 수 있다. 타일, 슬라이스, 또는 블록별로 설정된 중복 허용 여부에 따라서 해당 복셀에 포인트들을 하나로 통합할 수도 있고, 추가 포인트에 대해서 포인트 위치 정보를 직접 코딩할 수도 있다. 포인트를 하나로 통합하는 경우, 이후 단계에서 포인트에 대한 대표 색상을 설정하는 작업이 포함되어, 지오메트리 측면에서 손실이 발생하고, 속성(어트리뷰트) 측면에서도 손실이 일어날 수 있다. 복셀화 이후의 동작은 다음 도면들을 참조하여 설명한다.
도 18은 실시예들에 따른 블록의 양자화 및 영역 변화의 예시를 나타낸다.
이하에서, 도18내지 도28을 참조하여 블록에 기반한 포인트 클라우드 데이터의 인코딩/디코딩 프로세스를 설명한다.
도18내지 19의 블록에 기반하여, 실시예들에 따른 포인트 클라우드 데이터 송신 장치의 인코더(예를 들어, 도1의 포인트 클라우드 비디오 인코더(10002)), 인코딩 프로세스(예를 들어, 도2의 인코딩(20001)), 포인트 클라우드 데이터의 지오메트리 인코딩 프로세스(예를 들어, 도4의 좌표 변환부(40000) 및/또는 복셀화부(40001) 등), 인코딩 프로세스의 양자화기, 복셀화기, 및/또는 옥트리 생성기, 속성 변환 처리부(예를 들어, 도12의 양자화 처리부(12001), 복셀화 처리부(12002), 옥트리 생성부(12003), 속성 변환 처리부(12009)), 및/또는 포인트 클라우드 인코더(예를 들어, 도14의 포인트 클라우드 인코더 및/또는 도15의 포인트 클라우드 인코딩부)가 지오메트리 인코딩, 예를 들어, 양자화, 복셀화, 및/또는 옥트리 생성을 수행할 수 있다.
도18내지 19의 블록에 기반하여, 실시예들에 따른 포인트 클라우드 데이터 수신 장치의 디코더(예를 들어, 도1의 포인트 클라우드 디코더(10006)), 디코딩 프로세스(예를 들어, 도2의 디코딩(20003)), 포인트 클라우드 데이터의 지오메트리 디코딩 프로세스(예를 들어, 도11의 아리스메틱 디코딩부(11000) 및/도는 옥트리 합성부(11001) 등), 포인트 클라우드 디코딩 프로세스의 옥트리 재구성부 및/또는 역양자화 처리부(예를 들어, 도13의 옥트리 재구성부(13003) 및/또는 인버스 양자화 처리부(13008)), 포인트 클라우드 디코더(예를 들어, 도16의 포인트 클라우드 디코딩부)가 지오메트리 디코딩, 예를 들어, 옥트리 재구성, 역양자화 처리를 수행할 수 있다.
3) 실시예들에 따른 옥트리 구성 단계
지오메트리 인코딩, 지오메트리 인코더 및/또는 옥트리 생성부가 포인트들을 복셀화하고, 포인트들에 대한 옥트리를 생성할 수 있다. 옥트리 구성이란, 포인트 개수가 조정된 후, 전체 영역을 x축, y축 , z 축을 나누어 8개의 서브 영역으로 나누는 과정을 반복하고, 각각의 영역에 포인트가 존재하는지 여부로 점유 비트들(occupancy bits)을 나타내는 과정을 의미한다.
한편, 여기서 분할 영역 유닛이 타일이거나, 슬라일스 일때는 독립적으로 부호화되기때문에 분할 영역에 대한 옥트리는 각각 하나로 생성될 수 있다.
다만, 슬라이스 보다 작은 단위의 블록으로 분할되었을 경우, 옥트리 구성 단계 시 2차 양자화로 인해 발생하는 영역의 오버랩처리를 고려할 필요가 있다. 예를 들어, 도면과 같이 블록-1에 대해서는 QP값이 1이고, 블록-2에 대해서 QP값이 0.5인 경우, 두개의 블록이 오버랩되는 구간이 발생할 수 있다. 블록-1에 속하는 블록-2의 영역을 처리하는 실시예들에 따른 방법을 이하에서 설명한다. 실시예들에 따른 블록은 본 명세서에서 제1블록, 제2블록 등으로 구별되어 지칭될 수 있다. 또한, 공간 분할의 유닛인 블록은 바운딩 박스에 대응될 수 있고, 바운딩 박스에 포함될 수 있다. 블록은 바운딩 박스로 지칭될 수 있다.
4) 옥트리 구성 단계 관련하여, 실시예들에 따른 영역의 오버랩 처리 방안
2차 양자화로 인해 발생하는 영역간의 오버랩은 타일이나 슬라이스에서는 이슈가 되지 않는다. 각각의 타일이나 슬라이스는 독립적으로 부호화되기 때문에 각각이 하나의 옥트리로 구성되게 되어 있어서 오버랩으로 인한 점유 비트(occupancy bit)에 영향을 주지 않을 수 있다. 그러나 블록의 경우는 오버랩 되는 영역에 대한 처리 방법이 필요하고, 그 처리 방법은 다양할 수 있다:
<독립적 옥트리 구성>
실시예들에 따른 방법/장치, 예를 들어, 실시예들에 따른 옥트리 구성부(또는 옥트리 생성부, 옥트리 생성기 등으로 지칭 가능함)는 각 블록을 각각의 옥트리로 구성할 수 있다. 이 경우, 오버랩으로 인한 점유 비트에 영향을 주지 않을 수 있다.
<하나의 옥트리 구성- 위치 조정 없음, 추가 정보 저장 없음>
실시예들에 따른 방법/장치, 예를 들어, 실시예들에 따른 옥트리 구성부는 슬라이스에 속한 모든 블록들을 하나의 옥트리 기반으로 구성할 수 있다. 즉, 오버랩되는 영역을 무시하고 이전의 옥트리 구성방식을 유지할 수 있다. 따라서, 중복되는 영역에 대해서는 아티팩트(artifact)가 발생할 수 있다. 이유는 블록-1에 속하는 포인트들의 경우 문제가 없지만, 블록-2에 속하는 포인트들의 경우, 블록-2에 속하지만 2차 양자화(또는 1차 양자화 등)를 통해 변화된 위치 정보를 통해 블록-1에 속하도록 조정될 수 다. 따라서, 복호화에서 복원시 위치는 블록-1에 속하기 때문에 블록-1에 해당하는 2차 역양자화 과정이 수행될 수 있다. 결과적으로, 도면에서 보면 블록-2의 왼쪽 절반이 복원되지 못 할 가능성이 있을 수 있다. 단, 실시예들에 따라 블록별 QP값이 앞 예와 같이 0.5 정도의 차이가 나는 경우가 드문 경우 인접한 영역간의 QP값 차이는 많이 크지 않을 수 있다. 따라서, 인접한 영역에 대해서 오버랩 되는 영역은 존재하겠지만 오버랩되는 영역이 크지 않을 수 있기 때문에 무시할 수 있을 수도 있다. 이러한 방법의 경우, 오버랩으로 인한 블록의 위치를 조정하지 않고, 이로 인한 추가 정보 저장이 필요 없다.
<하나의 옥트리 구성-위치 조정 없음, 추가 블록 정보 저장 >
실시예들에 따른 방법/장치, 예를 들어, 실시예들에 따른 옥트리 구성부는 슬라이스에 속한 모든 블록들을 하나의 옥트리 기반으로 구성할 수 있다. 즉, 오버랩되는 영역을 무시하고 이전의 옥트리 구성방식을 유지할 수 있다. 따라서, 중복되는 영역에 대해서는 아티팩트(artifact)가 발생할 수 있다. 이유는 블록-1에 속하는 포인트들의 경우 문제가 없지만, 블록-2에 속하지만 2차 양자화를 통해 변화된 위치 정보를 통해 블록-1에 속하도록 조정된 경우, 복호화에서 복원시 위치는 블록-1에 속하기 때문에 블록-1에 해당하는 2차 역양자화 과정이 수행될 수 있다. 따라서 도면을 참조하면, 블록-2의 왼쪽 절반이 복원되지 못 할 가능성이 있을 수 있다.
이를 방지하기 위해서, 실시예들에 따른 방법/장치, 예를 들어, 실시예들에 따른 옥트리 구성부는 2차 양자화가 진행되고, 오버랩되는 영역의 복셀에 대해서 복셀에 존재하는 포인트들의 블록 아이디를 추가할 수 있다. 서로 다른 블록에 속한 포인트가 있는 경우, 중복 포인트 개수를 중복된 블록의 개수로 코딩하고, 각 중복 포인트의 정보에 속하는 블록 정보를 추가할 수 있다. 이러한 방법의 경우, 오버랩으로 인한 블록의 위치를 조정하지 않고, 추가 블록 정보를 저장할 수 있다.
따라서, 실시예들에 따른 방법/장치는 포인트 클라우드 데이터의 종류 및/또는 서비스 제공 환경을 고려하여, 포인트 클라우드 데이터를 공간 분할하여 저지연으로 인코딩/디코딩할 수 있는 효과를 제공하고, 나아가, 분할 및 양자화에 따른 오버랩이 발생하는 현상을 처리하면서 시그널링할 수 있는 효과를 제공한다.
도 19는 실시예들에 따른 블록의 가상 위치 재조정의 예시를 나타낸다.
이어서, 블록의 경우는 오버랩 되는 영역에 대한 처리 방법을 도19를 참조하여 설명한다.
<하나의 옥트리 구성-위치 조정>
실시예들에 따른 방법/장치, 예를 들어, 실시예들에 따른 옥트리 구성부는 슬라이스에 속한 모든 블록들을 하나의 옥트리 기반으로 구성할 수 있다. 하나의 옥트리 기반으로 구성하는 경우, 각 블록의 가상 위치가 필요할 수 있다. 가상 위치는 가상 높은 QP를 기준으로 각 영역의 영역을 가상으로 재조정하고, 모든 블록을 가상으로 재조정된 영역의 왼쪽 아래 앞쪽(left, bottom, front)의 위치로 가져오기 위한 위치 조정값(offset)을 설정할 수 있다. 조정하기 위한 기준 위치는 꼭 왼쪽 아래 앞쪽의 위치일 필요는 없고 실시예들에 따라서 다양하게 설정될 수 있다. 가상 영역내에서는 현재 블록의 지오메트리만 존재할 수 있기 때문에, 오른쪽 아래 앞쪽, 왼쪽 위 뒤쪽 등 옥트리를 컴팩트하게 유지하기 위해 조절이 가능할 수 있다.
도면과 같이, 2차 양자화 이후 블록-1, 블록-2가 서로 겹치는 영역이 발생할 수 있다. 도면은 옥트리 생성부의 가상 위치 조정부 및 옥트리 구성부가 블록-1에 대응하는 바운딩 박스-1, 블록-2에 대응하는 바운딩 박스2를 처리하는 과정을 나타낸다. 가상 위치 재조정 이후, 블록-1(바운딩 박스1)의 일부 영역과 오버랩된 블록-2의 위치를 새로운 가상의 바운딩 박스로 조정한다.
이러한 방법의 경우, 블록의 위치를 조정하여 조정된 가상 위치를 기준으로 옥트리가 구성될 수 있다.
포인트들이 블록으로 분할된 경우, 영역의 오버랩 처리 후, 옥트리 점유 비트들(occupancy bits)을 구성할 수 있다.
영역의 오버랩 처리 방안은 복호화기에 시그널링 되어 전송될 수 있고, 실시예들에 따른 포인트 클라우드 데이터 수신 장치가 옥트리를 재구성할 때 사용될 수 있다. 또한, 설정된 속성 QP값은 속성 압축시 적용될 수 있다.
블록 뿐만 아니라, 분할 영역이 타일/슬라이스/블록인 경우, 양자화 단계에서 중복이 발생하는 분할 영역(타일/슬라이스/블록)을 상술한 실시예들에 따라서 처리할 수 있다.
이하에서, 실시예들에 따른 포인트 클라우드 부호화기 및/또는 포인트 클라우드 복호화기 측면에서, 상술한 실시예들의 동작을 설명한다.
따라서, 실시예들에 따른 방법/장치는 복수의 블록/바운딩 박스가 양자화 과정에서 나타낼 수 있는 영역 변화로 인해 중복 영역이 발생하는 현상을 방지하여 데이터가 손실되거나 포인트 클라우드 콘텐츠의 화질 열화를 막을 수 있는 효과를 제공한다.
실시예들에 따른 방법/장치는 실시예들에 따른 동작 구성 및 이를 위한 시그널링 구조를 통해서, 빠르고 효율적으로 포인트 클라우드 콘텐츠를 사용자에게 제공할 수 있는 효과를 제공한다. 블록 등으로 분할하는 과정은 포인트 클라우드 콘텐츠를 데이터의 필요성 및 제공 환경에 따라서 부분적으로 엑세스하여 빠르게 다양한 설정으로 데이터를 인코딩/디코딩하게 하고, 양자화로 인해 오버랩 되는 경우까지 오버랩 방안을 통해 효과적으로 처리할 수 있다. 또한, 가상 블록(가상 바운딩 박스)는 데이터(포인트)의 오버랩으로 인해 포인트가 잘못 인코딩/디코딩/렌더링되는 문제를 해결할 수 있다.
도 20은 실시예들에 따른 지오메트리 인코딩 및 어트리뷰트 인코딩의 예시를 나타낸다.
실시예들에 따른 지오메트리 인코딩 및 어트리뷰트 인코딩 및/또는 인코더의 각 구성요소를 설명하면 다음과 같다.
데이터 입력부(20000)는 포인트 클라우드 데이터의 지오메트리 정보, 어트리뷰트 정보 및/또는 지오메트리/어트리뷰트에 대한 파라미터(들)을 포함하는 데이터를 수신할 수 있다.
좌표계 변환부(20010)는 지오메트리 정보를 수신하여 좌표계를 변환할 수 있다. 예를 들어, 기존 좌표계를 다른 좌표계로 변환할 수 있다. 또는 좌표계 변환을 수행하지 않을 수 있다. 좌표계 변환된 기하정보는 기하정보 변환양자화부로 입력될 수 있다.
양자화 처리부(또는 1차 지오메트리 정보 양자화 처리부, 20020)는 지오메트리 정보를 1차적으로 양자화할 수 있다. 예를 들어, 전체 포인트들의 최소 x, y, z 위치 값을 찾아서 각 point들의 위치 값에서 빼주고, 설정된 양자 스케일(quantization scale)값을 곱해준 후, 가까운 정수(integer) 값으로 내리거나 올려준다.
공간 분할부(20030)는 상술한 영역 분할 및/또는 QP설정 준비 동작을 수행할 수 있다.
공간 분할부(20030)는 분산 분석 기반의 타일 분할 여부를 설정할 수 있다. 분산 분석 기반의 타일 분할을 수행하는 경우 분산 분석 동작을 수행하고, 분산 분석 기반의 타일 분할을 수행하지 않는 경우 분산 분석 동작 없이 타일 분할 동작을 수행할 수 있다.
분산 분석부는 분산 분석을 수행할지 여부를 사용자 및/또는 PCC시스템으부터 확인하여 분산 분석을 수행하는 경우, 포인트 클라우드의 분산도를 분석한다. 예를 들어, 포인트 클라우드 데이터를 각 축 별로 포인트의 분산도(밀집도)를 분석한다. 분산 분석부는 축마다 거리 별 포인트들의 개수/분산도/밀집도를 확인할 수 있다.
타일 분할부는 포인트 클라우드 데이터를 타일에 기반하여 분할한다. 타일이란, 공간 분할 단위를 의미한다. 예를 들어, 방 하나가 하나의 타일에 해당할 수 있다. 또한, 분산 분석부의 수행 여부에 따라서, 분산 분석부에 의해 분석된 축 별 분산도를 고려하여 타일(들)로 포인트 클라우드 데이터의 공간을 분할할 수 있고, 및/또는 분산 분석부가 아닌 분할 정책 또는 PCC시스템 설정값에 따라서 타일(들)로 포인트 클라우드 데이터의 공간을 분할할 수 있다.
또한, 공간 분할부는 분산 분석하여 슬라이스 분할할지 여부를 설정할 수 있다. 분산 분석 기반의 슬라이스 분할을 수행하는 경우 분산 분석 동작을 수행하고, 분산 분석 기반의 슬라이스 분할을 수행하지 않는 경우 분산 분석 동작 없이 슬라이스 분할 동작을 수행할 수 있다.
분산 분석부는 상술한 바와 같이, 포인트 클라우드 데이터의 축 별, 거리 별 포인트 개수, 밀집도, 분산도를 분석한다.
슬라이스 분할부는 포인트 클라우드 데이터를 슬라이스에 기반하여 분할한다. 슬라이스란, 타일을 나누는 유닛을 의미한다. 예를 들어, 하나의 타일을 일정 개수에 해당하는 포인트들의 집합으로 나누는 단위가 슬라이스일 수 있다. 분산 분석부의 수행 여부에 따라서, 분산 분석부에 의해 분석된 분산도를 고려하여 슬라이스(들)로 포인트 클라우드 데이터의 공간을 분할할 수 있고, 및/또는 분산 분석도가 아닌 분할 정책 또는 PCC시스템 설정값에 따라서 슬라이스(들)로 포인트 클라우드 데이터의 공간을 분할할 수 있다.
또한, 공간 분할부는 분산 분석하여 블록 분할 여부를 설정할 수 있다. 분산 분석 기반의 블록 분할을 수행하는 경우 분산 분석 동작을 수행하고, 분산 분석 기반의 블록 분할을 수행하지 않는 경우 분산 분석 동작 없이 블록 분할 동작을 수행할 수 있다.
분산 분석부는 상술한 바와 같이, 포인트 클라우드 데이터의 축 별, 거리 별 포인트 개수, 밀집도, 분산도를 분석한다.
블록 분할부는 포인트 클라우드 데이터를 블록에 기반하여 분할한다. 블록이란, 슬라이스를 나누는 유닛을 의미한다. 예를 들어, 하나의 슬라이스를 상세하게 인코딩/디코딩하기 위해 나누는 단위가 블록일 수 있다. 분산 분석부의 수행 여부에 따라서, 분산 분석부에 의해 분석된 분산도를 고려하여 블록(들)로 포인트 클라우드 데이터의 공간을 분할할 수 있고, 및/또는 분산 분석도가 아닌 분할 정책 또는 PCC 시스템 설정값에 따라서 블록(들)로 포인트 클라우드 데이터의 공간을 분할할 수 있다.
또한, 상술한 타일/슬라이스/블록 분할부는 각 분할 유닛(타일/슬라이스/블록)에 기반하여 포인트 클라우드 데이터의 공간을 분할할 수 있고, 이 때 분할 영역은 바운딩 박스로 표현될 수 있다.
타일/슬라이스/블록 분할부는 각 타일/슬라이스/블록에 대한 정보를 생성하고 비트스트림의 파라미터에 포함시켜서 전달할 수 있다. 예를 들어, 바운딩 박스의 위치, 바운딩 박스의 크기, 밀집도(포인트 수/영역 면적), 옥트리 노드 순서값 등의 시그널링 정보가 있을 수 있다.
또는, 분산 분석 블록 분할을 수행하지 않는 경우, 공간 분할부는 블록 분할 동작 없이 타일/슬라이스/블록 별 지오메트리/어트리뷰트 QP 값을 설정하고, 중복 포인트 병합을 수행하지 여부를 설정할 수 있다.
또는, 공간 분할부는 블록 분할 동작을 수행한 뒤, 타일/슬라이스/블록 별 지오메트리/어트리뷰트 QP 값을 설정하고, 중복 포인트 병합을 수행하지 여부를 설정할 수 있다.
공간 분할부는 분할 영역(타일/슬라이스/블록) 별 바운딩 박스로 포인트 클라우드 데이터의 공간을 분할한 뒤, 분할된 지오메트리 정보 및 어트리뷰트 정보에 양자화 동작을 위해 적용할 QP를 설정할 수 있다. 나아가, 분할 및 QP에 따라서 포인트들이 중복되는 경우가 발생하는데, 이러한 중복 포인트들을 병합할지 여부를 설정할 수 있다.
또한, 공간 분할부는 각 타일/슬라이스/블록에 대한 정보를 생성하고, 비트스트림의 파라미터에 포함시켜서 전달할 수 있다. 예를 들어, 시그널링 정보는 지오메트리 QP, 어트리뷰트QP, 중복 포인트 병합 여부를 나타내는 정보를 포함할 수 있다.
지오메트리 정보 부호화부(20040)는 포인트 클라우드 데이터의 지오메트리 정보를 인코딩한다. 구체적으로, 2차 기하정보 변환 양자화 처리부, 복셀화 처리부, 옥트리 생성부, 기하정보 예측부, 기하정보 역양자화 처리부, 기하정보 엔트로피 부호화부, 및/또는 기하정보 복원부 등을 포함할 수 있다.
2차 기하정보 변환 양자화 처리부는 타일, 슬라이스 및/또는 블록 별 지오메트리 QP에 따라 지오메트리 양자화값을 포인트들에 적용할 수 있다. 양자화란, 획득된 전체 포인트 클라우드의 각 포인트의 위치 정보를 재구성하는 과정으로, 위치 정보에 대한 양자화를 수행하는 동작을 말한다. 전체 포인트들의 최소 x, y, z 위치 값을 찾아서 각 point들의 위치 값에서 빼주고, 설정된 양자 스케일(quantization scale)값을 곱해준 후, 가까운 정수(integer) 값으로 내리거나 올려준다.
복셀화 처리부는 각 타일, 슬라이스, 및/또는 블록 별 중복 포인트 병합 여부에 따라 지오메트리 인코딩할 포인트 값을 정할 수 있다. 복셀화란, 양자화 과정이 적용된 포인트 클라우드의 각 포인트를 재구성하기 위해서 포인트들의 위치 정보를 기반으로 옥트리(octree)기반 의 복셀화(voxelization)를 나타낸다. 구체적으로, 2차원 이미지/비디오의 정보를 가지고 있는 최소 단위인 픽셀(pixel)과 마찬가지로 3차원에 존재하는 포인트들의 정보를 저장하기 위하여 3차원 공간을 각각의 축(x, y, z축)을 기반으로 유닛(unit=1.0)이 되도록 나누어 생기는 3차원 큐빅(cubic) 공간을 복셀(voxel)이라고 하며 3차원 공간 상에 존재하는 point을 특정 복셀로 매칭하는 과정을 복셀화 한다고 한다. 복셀은 볼륨(volume)과 픽셀(pixel)을 조합한 혼성어이다. 복셀은 복셀군(voxel group)과의 위치 관계에서 공간 좌표를 추정 할 수 있으며, 픽셀과 마찬가지로 색상 또는 반사율 정보를 가지고 있을 수 있다.
하나의 복셀에 하나의 point만 존재하지 않을 수 있다. 하나의 복셀에 여러 개의 point 관련 정보를 가지고 있을 수 있다. 또는 하나의 복셀에 하나의 포인트 정보로 통합해서 가지고 있게 할 수도 있다. 이러한 조절은 선택적으로수행될 수 있다. 하나의 복셀에 하나의 포인트로 표현되는 경우, 복셀 내에 존재하는 point들에 대한 위치 값을 기반으로 복셀의 중앙점의 위치값이 설정될 수 있으며 이와 연관된 속성 변환 (attribute transform) 과정을 수행할 필요가 있다. 예를 들어 속성 변환 과정은 복셀에 포함된 포인트들 또는 복셀의 중앙 위치 값과 특정 반경 내에 이웃하고 있는 포인트들의 색상 또는 반사율의 평균값으로 조정할 수도 있다
옥트리 생성부는 포인트 클라우드 데이터를 옥트리로 구성할 수 있다. 옥트리 생성이란, 상술한 복셀의 영역/위치를 효율적으로 관리하기 위해서 포인트 클라우드 콘텐츠를 옥트리로 구성하는 과정을 말한다.
구쳊거으로, 2차원 이미지의 공간을 효율적으로 관리하기 위해서 전체 공간을 x축, y축 기반으로 나누면 4개의 공간이 생기고, 4개의 각각의 공간을 다시 x축, y축 기반으로 나누면 다시 각각의 작은 공간에 대해서 4개의 공간이 생기게 된다. 리프 노드(leaf node)가 픽셀이 될 때까지 영역을 나눠주고, 영역의 크기 및 위치 별로 효율적으로 관리하기 위해 쿼드트리(quadtree)를 자료구조를 사용할 수 있다. 이와 마찬가지로 3차원 공간을 공간의 위치 및 크기 별로 효율적으로 관리하기 위해 같은 방식을 적용한다. 단, z축이 추가 되기 때문에, x축, y축, z축 기반으로 나누면 8개의 공간이 생기고, 8개의 각각의 공간을 다시 x축, y축, z축 기반으로 나누면 다시 각각의 작은 공간에 대해서 8개의 공간이 생기게 된다. 리프 노드가 복셀이 될 때까지 영역을 나눠주고, 영역의 크기 및 위치 별로 효율적으로 관리하기 위해 8개의 자식 노드(children node) 영역을 관리할 수 있는 옥트리(octree) 자료구조를 사용할 수 있다.
옥트리는 occupancy 코드로 표현될 수 있다. 각 노드 내에 point가 포함되어 있으면 1로, point가 없으면 0으로 표현 된다. 각 노드는 8개의 자식 노드에 대한 occupancy 여부를 나타내는 8bit의 비트맵(bitmap)을 가지고 있다. occupancy 코드를 arithmetic 코더를 통해 엔트로피 코딩을 수행한다. 생성된 occupancy 코드를 바로 인코딩 할 수도 있고, 압축 효율을 높이기 위해 인트라/인터 코딩과정을 통해서 인코딩 될 수도 있다. 수신기에서는 occupancy 코드를 통해서 옥트리를 재구성 할 수 있다.
도면을 참조하면, 옥트리 생성부는 타일/슬라이스 분할 적용 여부를 확인한다. 타일/슬라이스 분할 적용인 경우, 옥트리 구성부의 동작을 처리하고, 타일/슬라이스 분할 적용이 아닌, 블록 분할 적용인 경우 오버랩 처리 타입을 확인한다.
블록 분할인 경우, 오버랩 처리 타입은 상술한 A) 독립적 옥트리 구성 타입, B) 하나의 옥트리- 위치 조정X(위치 조정 없음), 추가정보X(추가 정보 없음), C) 하나의 옥트리-위치조정X(위치 조정 없음), 추가블록 정보, D) 하나의 옥트리-위치 조정 등을 포함한다.
A) 독립적 옥트리 구성 타입, B) 하나의 옥트리- 위치 조정X(위치 조정 없음), 추가정보X(추가 정보 없음), C) 하나의 옥트리-위치조정X(위치 조정 없음), 추가블록 정보인 경우, 옥트리 생성부는 옥트리 구성부의 동작을 수행하고, D) 하나의 옥트리-위치 조정인 경우, 옥트리 생성부는 가상 위치 조정부의 동작을 수행한다.
옥트리 구성부는 타일/슬라이스/블록(A, B, C타입)에 기반하여 공간 분할된 포인트 클라우드 데이터의 옥트리를 구성한다.
가상 위치 조정부는 포인트 클라우드 데이터의 오버랩을 처리하기 위해서, 옥트리의 위치를 가상의 위치로 조정한다. 가상 위치 조정부는 각 블록에 대한 정보를 생성하고 비트스트림의 파라미터를 통해 전달할 수 있다. 예를 들어, 각 블록에 대한 시그널링 정보는 가상 바운딩 박스의 위치, 가상 바운딩 박스의 크기 등을 포함할 수 있다. 이어서, 옥트리 구성부는 가상 위치 조정된 포인트 클라우드 데이터를 기반으로, 옥트리를 구성한다.
옥트리 생성부는 블록 분할의 경우, 옥트리 오버랩처리 방식을 입력 받을 수 있다. 독립적 옥트리 구성 방식, 하나의 옥트리 구성되나 위치 조정되지 않고 추가 정보 없이 진행하는 방식, 하나의 옥트리 구성되나 위치 조정하지 않고 오버랩영역에 블록 아이디 정보를 추가하는 방식, 하나의 옥트리 구성하고 위치를 조절하는 방식이 있을 수 있다. 오버랩 처리 방식은 복호화기에 시그널링 될 수 있다.
또한, 블록 분할의 경우, 하나의 옥트리로 구성하고 위치 조정을 하지 않는 경우, 중복 영역의 복셀에 해당 복셀에 속하는 포인트가 어떤 블록에 속하는지 여부를 시그널링 할 수 있다.
또한, 블록 분할의 경우, 하나의 옥트리로 구성하고 위치를 조절하는 경우, 가상 위치 조정부는 각 블록들을 가장 높은 QP 기준으로 영역을 재조정하고, 기준 위치를 설정하여 가상 바운딩 박스(위치, 크기)를 구성할 수 있다. 기준 위치는 왼쪽 아래 앞쪽일 수도 있고(예를 들어, 도19와 같이), 다른 위치 일 수도 있다. 가상 바운딩 박스는 복호화기에 시그널링 될 수 있다.
또한, 블록 분할의 경우, 하나의 옥트리로 구성하고 위치를 조절하는 경우, 가상 위치 조정부는 중복 영역을 제거 하고, 하나의 영역으로 구성된 상태에서 옥트리를 구성할 수 있다.
지오메트리 정보 예측부는 메모리의 포인트들의 기하정보를 통해 기하정보를 예측 하여 예측된 기하정보를 생성한다. 예측에 사용된 예측 정보는 엔트로피 부호화 과정을 통해 부호화된다. 지오메트리 정보 예측부는 인트리/인터 코딩 처리부와 동일/유사 동작을 수행한다.
지오메트리 역양자화 처리부는 지오메트리 정보(예를 들어, 잔차기하정보)를 입력받아 양자화 값으로 스케일링 하여 지오메트리 정보(잔차기하정보)를 복원한다. 복원된 잔차기하정보는 지오메트리 정보 예측부에 의해서 예측된 기하정보와 더하여 기하정보로 복원되어 메모리에 저장 될 수 있다. 복원된 지오메트리 정보(잔차 기하정보)는 어트리뷰트 부호화부에 입력된다.
지오메트리 엔트로피 부호화부는 양자화된 잔차기하정보를 입력 받아 엔트로피 부호화를 수행 할 수 있다. 엔트로피 부호화는 예를 들어, 지수 골롬(Exponential Golomb), CAVLC(Context-Adaptive Variable Length Coding), CABAC(Context-Adaptive Binary Arithmetic Coding)과 같은 다양한 부호화 방법을 사용할 수 있다.
지오메트리 정보 부호화부(20040)는 지오메트리 정보 비트스트림을 생성한다.
어트리뷰트 정보 부호화부(20050)는 잔차 속성 정보 양자화 처리부를 포함하거나 또는 잔차 속성 정보 양자화 처리를 수행할 수 있다.
속성정보부호화부의 잔차 속성 정보 양자화 처리부는 각 타일, 슬라이스 및/또는 블록 별 속성 QP에 따라 속성 양자화 값을 포인트들에 적용하여 어트리뷰트 정보를 양자화할 수 있다.
어트리뷰트 정보 부호화부는 어트리뷰트 정보 비트스트림을 생성한다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법은 포인트 클라우드 데이터의 공간을 분할 유닛에 기반하여 분할하는 단계를 더 포함하고, 인코딩하는 단계는 공간 분할된 포인트 클라우드 데이터의 지오메트리 정보를 인코딩하는 단계; 및 포인트 클라우드 데이터의 어트리뷰트 정보를 인코딩하는 단계를 포함하고, 지오메트리 정보를 인코딩하는 단계는 포인트 클라우드 데이터에 대한 옥트리를 생성하는 단계를 포함한다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법의 디코딩하는 단계는 포인트 클라우드 데이터의 지오메트리 정보를 디코딩하는 단계; 및 포인트 클라우드 데이터의 어트리뷰트 정보를 디코딩하는 단계를 포함하고, 지오메트리 정보를 디코딩하는 단계는, 포인트 클라우드 데이터에 대한 옥트리를 재구성하는 단계를 포함한다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법의 옥트리를 생성하는 단계는 분할 유닛이 블록인 경우, 블록 마다 옥트리를 구성하거나, 또는 블록을 포함하는 슬라이스 마다 옥트리를 구성(생성)한다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법의 옥트리를 생성하는 단계는 분할 유닛이 블록인 경우, 블록을 포함하는 슬라이스 마다 옥트리를 구성하고, 슬라이스에 포함된 제1블록 및 제2블록이 오버랩되는 경우, 오버랩되는 영역의 포인트들에 대한 아이디 정보를 생성한다. 아이디 정보는 비트스트림에 시그널링 정보로서 전달될 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법의 옥트리를 생성하는 단게는 분할 유닛이 블록인 경우, 블록을 포함하는 슬라이스 마다 옥트리를 구성하고, 슬라이스에 포함된 제1블록 및 제2블록이 오버랩되는 경우, 제2블록의 위치를 상기 제1블록과 오버랩되지 않는 가상 블록의 영역으로 오프셋 값에 기반하여 조정한다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법의 옥트리를 재구성하는 단계는, 포인트 클라우드 데이터가 타일 또는 슬라이스에 기반하여 분할된 데이터인지 확인하는 단계를 포함한다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법의 옥트리를 재구성하는 단계는, 포인트 클라우드 데이터가 블록에 기반하여 분할된 경우, 포인트 클라우드 데이터에 적용된 오버랩의 타입이 독립적 옥트리 또는 위치 조정 및 추가 정보를 포함하지 않는 하나의 옥트리인지 확인하는 단계를 포함한다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법은 포인트 클라우드 데이터가 블록에 기반하여 분할된 경우, 포인트 클라우드 데이터에 적용된 오버랩의 타입이 위치 조정을 포함하지 않고 추가 블록 정보를 포함하는 하나의 옥트리 또는 위치 조정을 포함하는 하나의 옥트리인지 확인하고, 포인트 클라우드 데이터에 대한 상기 블록의 가상 위치를 비트스트림에 포함된 각 블록에 대한 시그널링 정보에 기반하여 복원한다.
실시예들에 따른 방법/장치, 특히, 공간 분할부, 기하정보 부호화부, 및/또는 속성정보 부호화부는 상술한 실시예들에 따른 동작을 수행하고, 이로 인하여 콘텐츠의 특성과 서비스의 특성에 따른 영역별 적응형(adaptive) 양자화 적용/조절하는 효과를 제공한다.
도 21은 실시예들에 따른 지오메트리 디코딩 및 어트리뷰트 디코딩(디코더)의 예시를 나타낸다.
실시예들에 따른 각 구성요소는 다음과 같다.
기하정보 엔트로피 복호화부(21000)는 지오메트리 정보 비트스트림을 수신하여 엔트로피 디코딩한다. 기하정보 엔트로피 복호화부(21000)는 아리스메틱 디코더의 전체/일부 동작을 수행할 수 있다. 기하정보 엔트로피 복호화부(21000)는 지오메트리 엔트로피 부호하부의 역과정을 수행할 수 있다.
기하정보 복호화부(21010)는 포인트 클라우드 데이터의 지오메트리 정보를 디코딩(복호화)할 수 있다. 구체적으로, 옥트리 재구성부, 2차 기하정보 변환 역양자화 처리부, 기하정보 예측부, 기하정보 역양자화 처리부, 기하정보 복원부, 1차 기하정보 변환 역양자화 처리부, 및/또는 좌표계 역변환부를 포함할 수 있다.
옥트리 재구성부는 옥트리 구성부의 역과정을 수행할 수 있다. 구체적으로, 옥트리 복원부는 디코딩된 지오메트리 정보 비트스트림으로부터 옥트리를 복원한다.
옥트리 재구성부는 타일/슬라이스 분할 적용 여부를 확인한다. 타일/슬라이스 분할이 지오메트리 정보에 적용된 경우, 복원된 옥트리를 가지고 2차 지오메트리 정보 변환 역양자화 처리부의 동작을 수행한다. 타일/슬라이스 분할이 적용되지 않고, 블록 분할이 적용된 경우, 옥트리 재구성부는 오버랩 처리 타입을 확인한다. 오버랩 처리 타입은 상술한 A) 독립적 옥트리 구성 타입, B) 하나의 옥트리- 위치 조정X(위치 조정 없음), 추가정보X(추가 정보 없음), C) 하나의 옥트리-위치조정X(위치 조정 없음), 추가블록 정보, D) 하나의 옥트리-위치 조정 등을 포함한다.
A) 독립적 옥트리 구성 타입, B) 하나의 옥트리- 위치 조정X(위치 조정 없음), 추가정보X(추가 정보 없음) 인 경우, 옥트리 재구성부는 옥트리 통합부의 동작을 수행한다.
C) 하나의 옥트리-위치조정X(위치 조정 없음), 추가블록 정보, D) 하나의 옥트리-위치 조정인 경우, 옥트리 재구성부는 가상 위치 복원부의 동작을 수행한다. 가상 위치 복원부는 오버랩 처리를 위해 가상으로 조정된 위치를 다시 복원한다. 여기서 비트스트림의 파라미터에 포함된 블록에 대한 정보, 예를 들어 바운딩 박스의 위치, 바운딩 박스의 크기, 가상의 바운딩 박스의 위치, 가상의 바운딩 박스의 크기에 관한 정보에 기반하여 복원 동작이 수행될 수 있다. 가상 위치 복원부는 가상 위치 조정부의 역과정을 수행할 수 있다.
옥트리 통합부는 각 오버랩 처리 타입에 따른 블록을 통합하여 옥트리를 재구성할 수 있다. 재구성(복원) 과정은 비트스트림의 파라미터(시그널링 정보)에 기반하여 수행될 수 있다. 예를 들어, 시그널링 정보는 바운딩 박스의 위치, 바운딩 박스의 크기, 옥트리 노드 순서 값, 중복 포인트 병합 여부를 나타내는 정보 등을 포함할 수 있다.
2차 지오메트리 변환 역양자화 처리부는 지오메트리 정보를 변환하여 역양자화한다. 2차 지오메트리 변환 역양자화 처리부는 지오메트리 역양자화 처리부의 과정 또는 2차 지오메트리 변환 양자화 처리부의 역과정을 수행할 수 있다.
지오메트리 정보 예측부는 지오메트리 정보의 예측 값을 생성한다. 지오메트리의 예측값은 지오메트리 역양자화 처리부에 제공되기 위해 생성될 수 있다. 지오메트리 정보 예측부는 상술한 인코더의 지오메트리 예측부의 과정 또는 역과정을 수행할 수 있다.
지오메트리 역양자화 처리부는 지오메트리 에측 값에 기반하여, 지오메트리 정보를 역으로 양자화할 수 있다. 지오메트리 역양자화 처리부는 어트리뷰트 정보 디코딩을 위한 복원된 지오메트리 정보를 생성하여 제공할 수 있다. 지오메트리 역양자화 처리부는 상술한 인코더의 지오메트리 정보 역양자화 처리부의 과정 또는 역과정을 수행할 수 있다.
1차 지오메트리 변환 역양자화 처리부는 지오메트리 정보를 변환하여 역양자화할 수 있다. 1차 지오메트리 변환 역양자화 처리부는 상술한 인코더의 지오메트리 정보 역양자화 처리부의 과정 또는 2차 지오메트리 정보 변환 양자화 처리부의 역과정을 수행할 수 있다.
좌표계 역변환부 역양자화된 지오메트리 정보의 좌표계를 역으로 변환할 수 있다. 좌표계 역변환부는 상술한 인코더의 좌표계 변환부의 역과정을 수행할 수 있다. 좌표계 역변환부는 지오메트리 정보를 생성한다.
어트리뷰트 복호화부(21020)는 복원된 지오메트리 정보에 기반하여 어트리뷰트 정보를 디코딩한다. 어트리뷰트 복호화부(21020)는 잔차 속성 정보 역양자화 처리부를 더 포함할 수 있다. 잔차 속성 정보 역양자화 처리부는 어트리뷰트 정보 비트스트림에 포함된 잔차 속성 정보를 역으로 양자화할 수 있다. 여기서 비트스트림에 포함된 시그널링 정보를 이용할 수 있다. 예를 들어, 각 타일/슬라이스/블록에 대한 정보로서 어트리뷰트QP값 등에 기반하여 역양자화를 수행한다. 잔차 속성 정보 역양자화 처리부는 상술한 인코더의 잔차 속성 정보 양자화 처리부의 역과정을 수행할 수 있다.
따라서, 실시예들에 따른 방법/장치, 특히 기하정보 복호화부, 옥트리 재구성부, 역양자화 처리부, 및/또는 속성정보 복호화부 등은 설명한 실시예들에 따른 동작을 수행하고, 이로 인하여, 콘텐츠의 특성과 서비스의 특성에 따른 영역별 적응형(adaptive) 양자화 적용/조절하는 효과를 제공할 수 있다.
도 22는 실시예들에 따른 인코딩된 포인트 클라우드의 구성의 예시를 나타낸다.
실시예들에 따른 방법/장치는 도면과 같은 포인트 클라우드 비트스트림을 생성하고 획득될 수 있다. 예를 들어, 도1의 전송장치(10000), 포인트 클라우드 비디오 인코더(10002), 수신장치(10004), 포인트 클라우드 비디오 디코더(10006), 도2의 인코딩(20001, 디코딩(20003), 도4의 인코딩 프로세스, 도11의 디코딩 프로세스, 도12의 전송 장치, 도13의 수신 장치, 도14내지16의 PCC시스템, 도17의 XR디바이스(2230), 도20내지21의 PCC인코더/디코더 등에 의해서, 지오메트리 정보, 어트리뷰트 정보 및/또는 이를 위한 메타데이터를 포함하는 파라미터들을 포함하는 포인트 클라우드 비트스트림이 생성(인코딩)되고, 수신(디코딩)될 수 있다.
실시예들을 위한 정보를 시그널링할 수 있다.
각 약어는 다음을 의미한다. 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.
실시예들에 따른 포인트 클라우드 데이터는 도면과 같은 비트스트림의 형태를 가질 수 있다. 포인트 클라우드 데이터는 실시예들에 따른 시그널링정보 등을 포함하는 SPS(Sequence Parameter Set), GPS(Geometry Parameter Set), APS(Attribute Parameter Set), TPS(Tile Parameter Set)를 포함할 수 있다. 포인트 클라우드 데이터는 하나 또는 하나 이상의 지오메트리 및/또는 어트리뷰트를 포함할 수 있다. 포인트 클라우드 데이터는 지오메트리 및/또는 어트리뷰트는 하나 또는 하나 이상의 슬라이스 단위로 포함할 수 있다. 지오메트리는 지오메트리 슬라이스 헤더 및 지오메트리 슬라이스 데이터의 구조를 가질 수 있다. 예를 들어, 시그널링 정보를 포함하는 TPS는 Tile(0). tile_bounding_box_xyz0, Tile(0)_tile_bounding_box_whd 등을 포함할 수 있다. 지오메트리는 geom_geom_parameter_set_id, geom_tile_id, geom_slice_id, geomBoxOrigin, geom_box_log2_scale, geom_max_node_size_log2, geom_num_points 등을 포함할 수 있다.
실시예들에 따른 시그널링 정보는 SPS, GPS, APS, TPS 등에 추가되어 시그널링될 수 있다.
실시예들에 따라, 시그널링 정보는 TPS 또는 각 Slice별 Geom 또는 Slice별 Attr에 추가되어 시그널링될 수 있다.
실시예들에 따른 포인트 클라우드 데이터의 구조는 시그널링 정보를 포함하는 파라미터 세트(들), 지오메트리(들), 어트리뷰트(들)을 인코딩/디코딩/데이터 어세스 관점에서 효율적인 효과를 제공할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신/수신 장치에 관련된 포인트 클라우드 데이터는 시퀀스 파라미터, 지오메트리 파라미터, 어트리뷰트 파라미터, 타일 파라미터, 지오메트리 비트스트림 또는 어트리뷰트 비트스트림 중 적어도 하나를 포함할 수 있다.
또한, 공간 분할부 및/또는 공간 재구성부의 동작과 관련한 시그널링 정보 관련하여, 영역 분할 관련 옵션 정보는 SPS, TPS, 또는 각 Slice별 Geometry header에 추가되어 시그널링 할 수 있다. 각 타일, 슬라이스, 블록에 양자화 관련 정보 추가되어 시그널링 할 수 있다. 블록은 Block Parameter Set (BPS)을 생성하여 시그널링 할 수 있다. 이하에서, 구체적인 시그널링 정보의 신택스를 도면을 참조하여 설명한다. 참고로, 실시예들에 따른 시그널링 정보의 명칭은 시그널링 정보가 의도하는 의미/기능 범위 내에서 변형/확장되어 이해될 수 있다. 시그널링 정보의 필드는 제1시그널링 정보, 제2시그널링 정보 등으로 구별되어 호칭될 수 있다.
실시예들에 따른 방법/장치는 도면과 같은 비트스트림의 구조를 이용하여 상술한 실시예들에 따른 동작을 시그널링하는 정보를 전달할 수 있다.
예를 들어, 옥트리 생성/재구성시 오버랩 처리 방안에 대한 추가 정보는 SPS, TPS, 또는 각 Slice별 Geometry header에 추가되어 시그널링 할 수 있다. 또한, 실시예들에 따라서 비트스트림의 다른 위치에도 추가되어 시그널링될 수 있다.
옥트리 생성/재구성시 오버랩 처리 방안에 따른 위치 조정에 대한 가상 바운딩 박스 추가 정보는 블록 파라미터 정보 Block Parameter Set (BPS)에 추가되어 시그널링 할 수 있다. 또한, 실시예들에 따라서 비트스트림의 다른 위치에도 추가되어 시그널링될 수 있다.
옥트리 생성/재구성시 오버랩 처리 방안에 따른 블록 아이디 정보는 Geometry node에 추가되어 시그널링 할 수 있다. 또한, 실시예들에 따라서 비트스트림의 다른 위치에도 추가되어 시그널링될 수 있다.
구체적인 시그널링 정보의 구성은 이하에서 각 도면을 참조하여 설명한다. 또한, 같은 시그널링 정보라도 비트스트림 내에서 여러 파라미터 세트 위치 상에 포함될 수 있다.
따라서, 실시예들에 따른 방법/장치는 도22의 비트스트림 그리고 구체적으로 도23 이하의 시그널링 정보를 이용하여 실시예들에 따른 동작을 시그널링할 수 있다. 결과적으로, 콘텐츠의 특성과 서비스의 특성에 따른 영역별 적응형(adaptive) 양자화 적용/조절하는 효과를 제공할 수 있다.
상술한 바와 같이, 포인트 클라우드 데이터 송신 장치(예를 들면 도 1, 도 11, 도 14 및 도 1에서 설명한 포인트 클라우드 데이터 송신 장치)는 부호화된 포인트 클라우드 데이터를 비트스트림(3000)의 형태로 전송할 수 있다. 실시예들에 따른 비트스트림(3000)은 하나 또는 그 이상의 서브 비트스트림들을 포함할 수 있다.
포인트 클라우드 데이터 송신 장치(예를 들면 도 1, 도 11, 도 14 및 도 1에서 설명한 포인트 클라우드 데이터 송신 장치)는 전송 채널의 에러를 고려하여 포인트 클라우드 데이터의 영상을 하나 또는 그 이상의 패킷들로 나누어 네트워크를 통해 전송할 수 있다. 실시예들에 따른 비트스트림(3000)은 하나 또는 그 이상의 패킷(예를 들면 NAL (Network Abstraction Layer) 유닛)들을 포함할 수 있다. 따라서 열악한 네트워크 환경에서 일부 패킷이 손실되더라도 포인트 클라우드 데이터 수신 장치는 나머지 패킷들을 이용하여 해당 영상을 복원할 수 있다. 포인트 클라우드 데이터를 하나 또는 그 이상의 슬라이스(slice)들 또는 하나 또는 그 이상의 타일(tile)들로 분할하여 처리할 수 있다. 실시예들에 따른 타일 및 슬라이스는 포인트 클라우드 데이터의 픽처를 파티셔닝(partitioning)하여 포인트 클라우드 컴프레션 코딩 처리하기 위한 영역이다. 포인트 클라우드 데이터 송신 장치는 포인트 클라우드 데이터의 나누어진 영역별 중요도에 따라 각 영역에 대응하는 데이터를 처리하여 고품질의 포인트 클라우드 콘텐트를 제공할 수 있다. 즉, 실시예들에 따른 포인트 클라우드 데이터 송신 장치는 사용자에게 중요한 영역에 대응하는 데이터를 더 좋은 압축 효율과 적절한 레이턴시를 갖는 포인트 클라우드 컴프레션 코딩 처리할 수 있다.
실시예들에 따른 포인트 클라우드 콘텐트의 영상(또는 픽처(picture)은 포인트 클라우드 컴프레션 코딩을 위한 기본 프로세싱 유닛 단위로 분할된다. 실시예들에 따른 포인트 클라우드 컴프레션 코딩을 위한 기본 프로세싱 유닛은 CTU(Coding Tree unit), 브릭(brick)등을 포함할 수 있으며 본 예시에 국한되지 않는다.
실시예들에 따른 슬라이스는 하나 또는 그 이상의 정수개의 포인트 클라우드 컴프레션 코딩을 위한 기본 프로세싱 유닛들을 포함하는 영역으로 직사각형의 형태를 가지지 않는다. 실시예들에 따른 슬라이스는 패킷을 통해 전송되는 데이터를 포함한다. 실시예들에 따른 타일은 영상 내에 직사각형 형태로 분할된 영역으로 하나 또는 그 이상의 포인트 클라우드 컴프레션 코딩을 위한 기본 프로세싱 유닛들을 포함한다. 실시예들에 따른 하나의 슬라이스는 하나 또는 그 이상의 타일들에 포함될 수 있다. 또한 실시예들에 따른 하나의 타일은 하나 또는 그 이상의 슬라이스들에 포함될 수 있다.
실시예들에 따른 비트스트림(3000)은 시퀀스 레벨의 시그널링을 위한 SPS (Sequence Parameter Set), 지오메트리 정보 코딩의 시그널링을 위한 GPS(Geometry Parameter Set), 어트리뷰트 정보 코딩의 시그널링을 위한 APS(Attribute Parameter Set), 타일 레벨의 시그널링을 위한 TPS (Tile Parameter Set)를 포함하는 시그널링 정보 및 하나 또는 그 이상의 슬라이스들을 포함할 수 있다.
실시예들에 따른 SPS는 프로파일, 레벨 등 시퀀스 전체에 대한 인코딩 정보로서, 픽처 해상도, 비디오 포멧 등 파일 전체에 대한 포괄적인 정보를 포함할 수 있다.
실시예들에 따른 하나의 슬라이스(예를 들면 도 25의 slice 0)는 슬라이스 헤더 및 슬라이스 데이터를 포함한다. 슬라이스 데이터는 하나의 지오메트리 비트스트림 (Geom0 0) 및 하나 또는 그 이상의 어트리뷰트 비트스트림들(Attr0 0, Attr1 0)을 포함할 수 있다. 지오메트리 비트스트림은 헤더(예를 들면 지오메트리 슬라이스 헤더) 및 페이로드(예를 들면 지오메트리 슬라이스 데이터)를 포함할 수 있다. 실시예들에 따른 지오메트리 비트스트림의 헤더는 GPS에 포함된 파라미터 세트의 식별 정보(geom_geom_parameter_set_id), 타일 식별자(geom_tile id), 슬라이스 식별자(geom_slice_id) 및 페이로드에 포함된 데이터에 관한 정보 등을 포함할 수 있다. 어트리뷰트 비트스트림은 헤더 (예를 들면 어트리뷰트 슬라이스 헤더 또는 어트리뷰트 브릭 헤더) 및 페이로드 (예를 들면 어트리뷰트 슬라이스 데이터 또는 어트리뷰트 브릭 데이터)를 포함할 수 있다.
도 23은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
실시예들에 따른 시그널링 정보, 예를 들어 SPS(Sequence Paremeter Set)가 분석 분할에 관한 시그널링 정보 및 옥트리 생성/재구성 시 오버랩 처리 방안에 관련된 시그널링 정보를 전달할 수 있다.
영역 옥트리 오버랩 핸들링 타입(area_octree_overlap_handling_type): 옥트리 생성/재구성시 오버랩을 처리하는 방법을 나타낸다. 예를 들어, 1= 독립적 옥트리 구성 방식, 2= 하나의 옥트리 구성되나 위치 조정되지 않고 추가 정보 없이 진행하는 방식, 3= 하나의 옥트리 구성되나 위치 조정하지 않고 오버랩 영역에 블록 아이디 정보를 추가하는 방식, 4= 하나의 옥트리 구성하고 위치를 조절하는 방식 등과 같이 시그널링될 수 있고, 각 지시 타입을 나타내는 숫자 또는 숫자의 순서는 실시예들에 따라 변형될 수 있다.
영역 분할 기반 파티션 플래그(area_distribution_based_partition_flag): 분산 분석에 따른 영역 영역 분할 적용 여부를 나타낸다.
영역 분할 기반 파티션 유닛(area_distribution_based_partition_unit): 영역 분할이 적용될 단위를 나타낸다. 예를 들어, 1= 타일, 2= 슬라이스, 3= 블록 등과 같이 시그널링될 수 있고, 각 유닛을 나타내는 숫자 또는 숫자의 순서는 실시예들에 따라 변형될 수 있다.
영역 분할 기반 파티션 정책(area_distribution_based_partition_policy): 분할된 영역에 적용된 정책을 나타낸다. 예를 들어, 1= 높은 밀집도, 높은 QP 적용, 2= 높은 밀집도, 낮은 QP 적용, 3= 매뉴얼 등과 같이 시그널링될 수 있고, 각 정책을 나타내는 숫자 또는 숫자의 순서는 실시예들에 따라 변형될 수 있다.
영역 분할 기반 파티션 방법(area_distribution_based_partition_method): 분할 방법을 나타낸다. 예를 들어, 1= 균일 분할을 위한 분할 영역 범위 기반 설정 방식, 2= 분포율에 따른 분할 영역 범위 설정 방식, 3= 옥트리 노드 영역 + 분포율에 따른 분할 영역 범위 설정 방식 등과 같이 시그널링될 수 있고, 각 방법을 나타내는 숫자 또는 숫자의 순서는 실시예들에 따라 변형될 수 있다.
영역 분할 기반 파티션 축 순서(area_distribution_based_partition_axes_order): 분할 영역 구성시 축 순서를 나타낸다. 예를 들어, 1= xyz, 2= xzy, 3= yxz, 4= yzx, 5= zxy, 6= zyx 등과 같이 시그널링될 수 있고, 각 순서를 나타내는 숫자 또는 숫자의 순서는 실시예들에 따라 변형될 수 있다.
영역 분할 기반 파티션 절대값QP플래그(area_distribution_based_partition_absolute_QP_flag): 블록의 QP값이 절대값인지 상대값(offset, delta)인지 여부를 나타낸다.
프로파일 IDC(profile_idc)는 비트스트림이 따르는 표준(예를 들어, ISO/IEC) 프로파일을 나타낸다. 표준문서에 기재되지 않는 프로파일 IDC의 값을 비트스트림이 포함하지 않을 수 있고, 프로파일 IDC의 다른 값들은 ISO/IEC의 미래 사용을 위해 예약될 수 있다( indicates a profile to which the bitstream conforms as specified in Annex A. Bitstreams shall not contain values of profile_idc other than those specified in Annex A. Other values of profile_idc are reserved for future use by ISO/IEC).
프로파일 호환성 플래그(profile_compatibility_flags)이 1이면, 표준에 기재된 J 값을 갖는 프로파일 IDCD에 의해 식별되는 프로파일을 비트스트림이 따르는 것을 나타낸다. 표준의 프로파일IDC의 허용된 값으로 기술되지 않은 어느J값에 대해서는 profile_compatibility_flag[ j ] 값이 0과 같을 수 있다( equal to 1, indicates that the bitstream conforms to the profile indicated by profile_idc equal to j as specified in Annex A. The value of profile_compatibility_flag[ j ] shall be equal to 0 for any value of j that is not specified as an allowed value of profile_idc in Annex A).
레벨IDC(level_idc)는 표준에 기술된 바와 같이 비트스트림이 따르는 레벨을 나타낸다.
표준에 기술된 바와 달리 다른 level_idc의 값을 비트스트림이 포함하지 않을 수 있다. level_idc의 다른 값들은 ISO/IEC의 미래 사용을 위해 예약될 수 있다( indicates a level to which the bitstream conforms as specified in Annex A. Bitstreams shall not contain values of level_idc other than those specified in Annex A. Other values of level_idc are reserved for future use by ISO/IEC).
SPS 바운딩 박스 존재 플래그(sps_bounding_box_present_flag)가 1인 경우, 소스 바운딩 박스의 오프셋의 사이즈 정보가 SPS 내에서 시그널링됨을 나타낸다. 소스 바운딩 박스란, 바운딩 박스의 근원이 되는 박스를 의미한다. 이 값이 0인 경우, 소스 바운딩 박스 정보가 시그널링되지 않음을 나타낸다( equal to 1 indicates the source bounding box offset and the size information is signalled in the SPS. sps_bounding_box_present_flag equal to 0 indicates the source bounding box information is not signaled).
도 24는 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
실시예들에 따른 방법/장치는 비트스트림을 통해 분석 분할 관련 시그널링 정보 및 옥트리 생성/재구성 오버랩 처리 방안에 관한 시그널링 정보를 전달할 수 있다.
도면은 SPS의 구성을 나타낸다.
profile_idc, profile_compatibility_flags, level_idc, sps_bounding_box_present_flag, area_distribution_based_partition_flag, area_distribution_based_partition_unit 의 설명은 상술한 바를 참조한다.
도 25는 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
실시예들에 따른 방법/장치는 비트스트림을 통해 분석 분할 관련 시그널링 정보 및 옥트리 생성/재구성 오버랩 처리 방안에 관한 시그널링 정보를 전달할 수 있다.
도면은 SPS 이 아닌, TPS를 통해 시그널링하는 구조를 나타낸다.
영역 분할 기반 파티션 옥트리 트라버스 인덱스(area_distribution_based_partition_octree_traverse_index): 인코딩시 사용된 옥트리 traverse 방식에 따른 순서값을 나타낸다.
영역 분할 기반 파티션 밀도(area_distribution_based_partition_density): 영역의 밀집도를 나타낸다.
영역 분할 기반 파티션 중복 포인트 머지 플래그(area_distribution_based_partition_duplicated_point_merge_flag): 중복 포인트 허용 여부를 나타낸다.
영역 분할 기반 파티션 지오메트리 QP(area_distribution_based_partition_geometryQP): 지오메트리 2차 QP 를 나타낸다. 상술한 인코더의 2차 지오메트리 양자화, 및/또는 디코더의 2차 지오메트리 역양자화때 적용된다.
영역 분할 기반 파티션 어트리뷰트 QP(area_distribution_based_partition_attributeQP): 속성 QP 를 나타낸다.
BPS 세트 개수(num_bps_set): 타일에 속한 BPS(Block Parameter Set) 수를 나타낸다.
BPS 블록 IDS(bps_block_ids): 타일에 속한 BPS 아이디를 나타낸다.
타일 개수(num_tiles): 비트스트림을 위해 시그널링되는 타일들의 개수를 나타낸다. 존재하지 않는 경우, 이 값은 0으로 추론된다( specifies the number of tiles signalled for the bitstream. When not present, num_tiles is inferred to be 0).
타일 바운딩 박스 오프셋X(tile_bounding_box_offset_x[ i ]): 좌표계(예, 데카르트) 내 I번째 타일의 X오프셋을 나타낸다. 존재하지 않는 경우, tile_bounding_box_offset_x[ 0 ] 의 값은 sps_bounding_box_offset_x 으로 추론된다( indicates 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).
타일 바운딩 박스 오프셋 Y(tile_bounding_box_offset_y[ i ]): 좌표게(예, 데카프트) 내 I번째 타일의 Y오프셋을 나타낸다. 존재하지 않는 경우, tile_bounding_box_offset_y[ 0 ] 의 값은 sps_bounding_box_offset_y. 으로 추론된다(indicates 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).
타일 바운딩 박스 오프셋Z(tile_bounding_box_offset_z[ i ]): 좌표계(예, 데카르트) 내 I번째 타일의 Z오프셋을 나타낸다. 존재하지 않는 경우, tile_bounding_box_offset_z[ 0 ] 의 값은 sps_bounding_box_offset_z 으로 추론된다( indicates 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).
타일 바운딩 박스 사이즈 너비(tile_bounding_box_size_width[ i ] ): 좌표계(예, 데카프트) 내 I번째 타일의 너비를 나타낸다. 존재하지 않는 경우, tile_bounding_box_size_width[ 0 ] 의 값은 sps_bounding_box_size_width 으로 추론된다(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).
타일 바운딩 박스 사이즈 높이(tile_bounding_box_size_height[ i ]): 좌표계 (예, 데카르트) 내 I번째 타일의 높이를 나타낸다. 존재하지 않는 경우, tile_bounding_box_size_height[ 0 ] 의 값은 sps_bounding_box_size_height 으로 추론된다( 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).
타일 바운딩 박스 사이즈 뎁스(tile_bounding_box_size_depth[ i ]): 좌표계(예, 데카르트) 내 I번째 타일의 깊이를 나타낸다. 존재하지 않는 경우, tile_bounding_box_size_depth[ 0 ] 의 값은 sps_bounding_box_size_depth 으로 추론된다( 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).
area_distribution_based_partition_flag, area_distribution_based_partition_policy, area_distribution_based_partition_method, area_distribution_based_partition_axes_order, area_distribution_based_partition_absolute_QP_flag, area_octree_overlap_handling_type, num_tiles, area_distribution_based_partition_unit , area_distribution_based_partition_method, area_distribution_based_partition_octree_traverse_index[ i ], area_distribution_based_partition_density[i], area_distribution_based_partition_duplicated_point_merge_flag[ i ], area_distribution_based_partition_geometryQP[ i ], area_distribution_based_partition_attributeQP[ i ], num_bps_set[i], bps_block_ids[i][j] 등은 상술한 설명을 참조한다.
도 26은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보의 예시를 나타낸다.
실시예들에 따른 방법/장치는 비트스트림을 통해 분석 분할 관련 시그널링 정보 및 옥트리 생성/재구성 오버랩 처리 방안에 관한 시그널링 정보를 전달할 수 있다.
도면은 GSH(Geometry Slice Header)를 통해 시그널링하는 구조를 나타낸다.
지오메트리 파라미터 세트 아이디( gsh_geometry_parameter_set_id): 액티브 GPS 내 지오메트리 파라미터 세터의 식별자 값을 나타낸다( specifies the value of the gps_geom_parameter_set_id of the active GPS).
타일 아이디(gsh_tile_id): GSH에 의해 참조되는 타일 식별자의 값을 나타낸다. gsh_tile_id 의 값은 0 내지 XX(포함)의 범위를 가질 수 있다( specifies the value of the tile id that is referred to by the GSH . The value of gsh_tile_id shall be in the range of 0 to XX, inclusive).
슬라이스 아이디(gsh_slice_id): 다른 신택스 엘리먼트들에 의한 참조를 위한 슬라이스 헤더의 식별자를 나타낸다. gsh_slice_id 의 값은 0 내지 XX(포함)의 범위를 가질 수 있다( identifies the slice header for reference by other syntax elements. The value of gsh_slice_id shall be in the range of 0 to XX, inclusive).
박스 로그 스케일(gsh_box_log2_scale): 슬라이스를 위한 바운딩 박스 오리진의 스케일링 팩터를 나타낸다( specifies the scaling factor of bounding box origin for the slice).
박스 오리진 X(gsh_box_origin_x): gsh_box_log2_scale 값에 의해 스케일된 바운딩 박스 오리진의 X값을 나타낸다( specifies the x value of bounding box origin that scaled by gsh_box_log2_scale value).
박스 오리진 Y(gsh_box_origin_y): gsh_box_log2_scale 값에 의해 스케일된 바운딩 박스 오리진의 Y값을 나타낸다( specifies the y value of bounding box origin that scaled by gsh_box_log2_scale value)
박스 오리진 Z(gsh_box_origin_z): gsh_box_log2_scale 값에 의해 스케일된 바운딩 박스 오리진의 Z값을 나타낸다( specifies the z value of bounding box origin that scaled by gsh_box_log2_scale value).
맥스 노드 사이즈(gsh_log2_max_nodesize): 디코딩 프로세스 내 사용되는 변수 MaxNodeSize 의 값을 나타낸다( specifies the value of the variable MaxNodeSize that is used in the decoding process )
포인트들 개수(gsh_points_number): 슬라이스 내 코딩된 포인트들의 개수를 나타낸다( specifies the number of coded points in the slice).
박스 존재 플래그(gps_box_present_flag ): 박스가 존재하는지 여부를 나타낸다.
박스 로그 스케일 존재 플래그( gps_gsh_box_log2_scale_present_flag ): 박스 로그 스케일(gsh_box_log2_scale) 의 존재 여부를 나타낸다.
area_distribution_based_partition_flag, area_distribution_based_partition_method, area_distribution_based_partition_octree_traverse_index[ i ], area_distribution_based_partition_unit, area_distribution_based_partition_density[i], area_distribution_based_partition_duplicated_point_merge_flag, area_distribution_based_partition_geometryQP, area_distribution_based_partition_unit, area_octree_overlap_handling_type, num_bps_set[i], bps_block_ids[i][j] 등은 상술한 설명을 참조한다.
도 27은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안 정보 및 옥트리 생성/재구성시 오버랩 처리 방안에 따른 위치 조정에 대한 가상 바운딩 박스 정보의 예시를 나타낸다.
실시예들에 따른 방법/장치는 비트스트림을 통해 분석 분할 관련 시그널링 정보 및 옥트리 생성/재구성 오버랩 처리 방안 및 위치 조정에 대한 가상 바운딩 박스에 관한 시그널링 정보를 전달할 수 있다.
도면은 BPS(Block Paremeter Set)를 통해 시그널링하는 구조를 나타낸다. 또한, 오버랩 처리 방안이 하나의 옥트리 구성하고 위치를 조절하는 방식인 경우, 위치 조절을 위한 가상 바운딩 박스 정보가 BPS에 추가 될 수 있다.
블록 가상(버츄얼) 바운딩 박스 오프셋 X, Y, Z (block_virtual_bounding_box_offset_x/block_virtual_bounding_box_offset_y/block_virtual_bounding_box_offset_z): 하나의 옥트리를 사용해서 점유비트를 코딩시에 각 블록의 위치를 조절하기 위한 가상 바운딩박스 위치를 나타낸다.
블록 가상 바운딩 박스 사이즈 너비, 높이, 뎁스(block_virtual_bounding_box_size_width/block_virtual_bounding_box_size_height/block_virtual_bounding_box_size_depth): 하나의 옥트리를 사용해서 점유비트를 코딩시에 각 블록의 위치를 조절하기 위한 가상 바운딩박스 사이즈(예, 너비, 높이, 뎁스)를 나타낸다.
레퍼런스 타일 아디디(gsh_reference_tile_id): 연결된 타일 아이디를 나타낸다.
레퍼런스 슬라이스 아이디(gsh_reference_slice_id): 연결된 슬라이스 아이디를 나타낸다.
블록 아이디(bps_blocks_id): BPS의 unique 아이디를 나타낸다.
블록 개수(num_blocks): 블록의 개수를 나타낸다.
블록 아이디(block_id): 블록 아이디를 나타낸다.
블록 바운딩 박스X, Y, Z(block_bounding_box_x/block_bounding_box_y/block_bounding_box_z): 블록 바운딩 박스 왼쪽/하단/앞쪽 기준 위치를 나타낸다.
블록 바운딩 박스 사이즈 너비, 높이, 뎁스(block_bounding_box_size_width/block_bounding_box_size_height/block_bounding_box_size_depth): 블록 바운딩 박스 크기(예, 너비, 높이, 뎁스)를 나타낸다.
area_distribution_based_partition_method, area_distribution_based_partition_octree_traverse_index[ i ], area_octree_overlap_handling_type, area_octree_overlap_handling_type , area_distribution_based_partition_density[i], area_distribution_based_partition_duplicated_point_merge_flag[ i ], area_distribution_based_partition_geometryQP[ i ], area_distribution_based_partition_attributeQP[ i ] 등은 상술한 설명을 참조한다.
도 28은 실시예들에 따른 옥트리 생성/재구성시 오버랩 처리 방안에 따른 블록 아이디 정보의 예시를 나타낸다.
실시예들에 따른 방법/장치는 비트스트림을 통해 분석 옥트리 생성/재구성 오버랩 처리 방안 및 오버랩 처리 방안에 따른 블록 아이디 등에 관한 시그널링 정보를 전달할 수 있다.
도면은 지오메트리 노드(Geometry Node)를 통해 시그널링하는 구조를 나타낸다.
레퍼런스 블록 세트 블록 아이디(bps_reference_block_set_block_id) : 복셀에 중복 포인트가 존재할 때, 중복 포인트가 속한 블록의 아이디를 나타낸다.
싱글 어큐판시 플래그(single_occupancy_flag)가 1인 경우, 현재 노드가 싱글 차일드 노드를 포함함을 나타내고, single_occupancy_flag equal이 0인 경우, 현재 노드가 멀티플 차일드 노드들을 포함함을 나타낸다( equal to 1 indicates that the current node contains a single child node. single_occupancy_flag equal to 0 indicates the current node may contain multiple child nodes).
어큐판시 IDX(occupancy_idx): 차일드 노드 트라버설 오더의 지오메트리 옥트리 내 현재 노드의 차일드의 싱글 점유된 차일드의 인덱스를 나타낸다( identifies index of the single occupied child of the current node in the geometry octree child node traversal order). 존재하지 않는 경우 다음이 적용될 수 있다(When present, the following applies): OccupancyMap = 1 << occupancy_idx.
포인트들 수 플래그(num_points_eq1_flag)가 1이면, 현재 노드가 싱글 포인트를 포함함을 나타낸다. num_points_eq1_flag가 0이면, 현재 차일드 노드가 적어도 두 개의 포인트들을 포함함을 나타낸다. 존재하지 않는 경우, num_points_eq1_flag 의 값은 1 으로 추론된다( equal to 1 indicates that the current child node contains a single point. num_points_eq1_flag equal to 0 indicates that the current child node contains at least two points. When not present, the value of num_points_eq1_flag is inferred equal to 1).
포인트 수(num_points_minus2)에 2를 더한 값은 현재 차일드 노드에 의해 표현되는 포인트들의 개수를 나타낸다( plus 2 indicates the number of points represented by the current child node).
이웃 패턴(NeighbourPattern): 변수 NeighbourPattern가 다음과 같이 세팅될 수 있다(the variable NeighbourPattern is set as follows):
NeighbourPattern=rN|(IN<<1)|(fN<<2)|(bN<<3)|(dN<<4)|(uN<<5)
각 노드에 대해, 변수들 rN, lN, fN, bN, uN, and dN 는 다음과 같이 유도된다:
rN=GeometryNodeOccupancyCnt[depth][xN+1][yN][zN]!=0
IN= GeometryNodeOccupancyCnt[depth][xN-1][yN][zN]!=0
bN= GeometryNodeOccupancyCnt[depth][xN][yN+1][zN]!=0
fN= GeometryNodeOccupancyCnt[depth][xN][yN-1][zN]!=0
uN= GeometryNodeOccupancyCnt[depth][xN][yN][zN+1]!=0
dN= GeometryNodeOccupancyCnt[depth][xN][yN][zN-1]!=0
싱글 어큐판시 플래그(single_occupancy_flag)가 1인 경우, 현재 노드가 싱글 차일드 노드를 포함함을 나타내고, single_occupancy_flag가 0인 경우, 현재 노드가 멀티플 차일드 노드들을 포함함을 나타낸다( equal to 1 indicates that the current node contains a single child node. single_occupancy_flag equal to 0 indicates the current node may contain multiple child nodes).
맥스 지오메트리 옥트리 젭스(MaxGeometryOctreeDepth): 옥트리 뎁스를 나타낸다
유니트 지오메트리 포인트들 플래그(unique_geometry_points_flag)가 1인 경우, 모든 아웃풋 포인트들이 유니크 위치들을 가짐을 나타낸다. unique_geometry_points_flag가 0인 경우, 아웃풋 포인트들이 같은 위치들을 가짐을 나타낸다( equal to 1 indicates that all output points have unique positions. unique_geometry_points_flag equal to 0 indicates that the output points may have same positions).
지오메트리 노드 칠드런 카운트(GeometryNodeChildrenCnt): 어레이 GeometryNodeChildren[ ] 내 차일드 노드들의 개수를 나타낸다. 어레이 GeometryNodeChildren[ i ]는 현재 노드의 I번째 점유된 차일드 노드의 인덱스를 식별한다(GeometryNodeChildrenCnt identifies the number of child nodes in the array GeometryNodeChildren[ ]. The array GeometryNodeChildren[ i ] identifies the index of the i-th occupied child node of the current node)
unique_geometry_points_flag , area_distribution_based_partition_flag, area_distribution_based_partition_unit, area_octree_overlap_handling_type 등은 상술한 설명을 참조한다.
도 29은 실시예들에 따른 포인트 클라우드 데이터 송신 방법의 예시를 나타낸다.
S2900, 실시예들에 따른 포인트 클라우드 데이터 송신 방법은 포인트 클라우드 데이터를 인코딩할 수 있다. 구체적인 인코딩 과정은 상술한 도1의 전송 장치(10000), 포인트 클라우드 비디오 인코더(10002), 도2의 인코딩(20001), 도4의 포인트 클라우드 인코더(40000 내지 40012), 도12의 포인트 클라우드 인코더(12000 내지 12011 등), 도14 내지 16의 포인트 클라우드 인코딩 프로세스, 도17의 XR디비아스 연계 등을 참조한다.
S2910, 실시예들에 따른 포인트 클라우드 데이터 송신 방법은 포인트 클라우드 데이터를 포함하는 비트스트림을 전송할 수 있다. 구체적인 전송 과정은 도1의 트랜스미터(10003), 도2의 전송(20002), 도10의 포인트 클라우드 디코더, 도11의 포인트 클라우드 디코더, 도12의 포인트 클라우드 인코더(12012), 도14 내지 16의 포인트 클라우드 딜리버리 프로세스, 도17의 XR디비아스 연계 등을 참조한다.
각 단계는 상술한 도22 내지 28에 따른 비트스트림/시그널링 정보를 생성하여 전송할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 송신 방법은 본 명세서에서 설명한 실시예들과 결합되어 콘텐츠의 특성과 서비스의 특성에 따른 영역별 적응형(adaptive) 양자화 적용/조절하는 효과를 제공한다.
도 30은 실시예들에 따른 포인트 클라우드 데이터 수신 방법의 예시를 나타낸다.
S3000, 실시예들에 따른 포인트 클라우드 데이터 수신 방법은 포인트 클라우드 데이터를 포함하는 비트스트림을 수신할 수 있다. 구체적인 수신 과정은 도1의 수신 장치(10004), 리시버(10005), 도2의 전송(20002), 도13의 수신부(13000), 도14내지16의 딜리버리 및 수신 프로세스 등을 참조할 수 있다.
S3010, 실시예들에 따른 포인트 클라우드 데이터 수신 방법은 포인트 클라우드 데이터를 디코딩할 수 있다. 구체적인 디코딩 과정은 도1의 포인트 클라우드 비디오 디코더(10006), 도2의 디코딩(20003), 도10의 포인트 클라우드 디코더, 도11의 포인트 클라우드 디코더, 도13의 포인트 클라우드 디코더(13000 내지 13011 등), 도21의 포인트 클라우드 디코더 등을 참조할 수 있다
S3020, 실시예들에 따른 포인트 클라우드 데이터 수신 방법은 포인트 클라우드 데이터를 렌더링할 수 있다. 구체적인 렌더링 과정은 도1의 렌더러(10007), 도2의 렌더링(20004), 도13의 렌더러(13011), 도14내지16의 디스플레이/렌더링 프로세스, 도17의 XR디바이스 연계 프로세스 등을 참조할 수 있다.
각 단계는 상술한 도22 내지 28에 따른 비트스트림/시그널링 정보를 수신하여 이에 기반하여 각 동작을 처리할 수 있다.
실시예들에 따른 포인트 클라우드 데이터 수신 방법은 본 명세서에서 설명한 실시예들과 결합되어 콘텐츠의 특성과 서비스의 특성에 따른 영역별 적응형(adaptive) 양자화 적용/조절하는 효과를 제공한다.
본 명세서의 설명은 방법 및/또는 장치를 모두 언급하고, 방법의 설명 및 장치의 설명은 상호 보완하여 적용될 수 있다.
전술한 각각의 파트, 모듈 또는 유닛은 메모리(또는 저장 유닛)에 저장된 연속된 수행과정들을 실행하는 소프트웨어, 프로세서, 하드웨어 파트일 수 있다. 전술한 실시예에 기술된 각 단계들은 프로세서, 소프트웨어, 하드웨어 파트들에 의해 수행될 수 있다. 전술한 실시예에 기술된 각 모듈/블락/유닛들은 프로세서, 소프트웨어, 하드웨어로서 동작할 수 있다. 또한, 실시예들이 제시하는 방법들은 코드로서 실행될 수 있다. 이 코드는 프로세서가 읽을 수 있는 저장매체에 쓰여질 수 있고, 따라서 장치(apparatus)가 제공하는 프로세서에 의해 읽혀질 수 있다.
설명의 편의를 위하여 각 도면을 나누어 설명하였으나, 각 도면에 서술되어 있는 실시 예들을 병합하여 새로운 실시 예를 구현하도록 설계하는 것도 가능하다. 그리고, 통상의 기술자의 필요에 따라, 이전에 설명된 실시 예들을 실행하기 위한 프로그램이 기록되어 있는 컴퓨터에서 판독 가능한 기록 매체를 설계하는 것도 실시예들의 권리범위에 속한다.
실시예들에 따른 장치 및 방법은 상술한 바와 같이 설명된 실시 예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상술한 실시 예들은 다양한 변형이 이루어질 수 있도록 각 실시 예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
실시예들의 바람직한 실시 예에 대하여 도시하고 설명하였지만, 실시예들은 상술한 특정의 실시 예에 한정되지 아니하며, 청구범위에서 청구하는 실시예들의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 실시예들의 기술적 사상이나 전망으로부터 개별적으로 이해돼서는 안 될 것이다.
실시예들의 사상이나 범위를 벗어나지 않고 실시예들에서 다양한 변경 및 변형이 가능함은 당업자에게 이해된다. 따라서, 실시예들은 첨부된 청구항 및 그 동등 범위 내에서 제공되는 실시예들의 변경 및 변형을 포함하는 것으로 의도된다.
본 명세서에서 장치 및 방법 발명이 모두 언급되고, 장치 및 방법 발명 모두의 설명은 서로 보완하여 적용될 수 있다.
이 문서에서 “/”와 “,”는 “및/또는”으로 해석된다. 예를 들어, “A/B”는 “A 및/또는 B”로 해석되고, “A, B”는 “A 및/또는 B”로 해석된다. 추가적으로, “A/B/C”는 “A, B 및/또는 C 중 적어도 하나”를 의미한다. 또한, “A, B, C”도 “A, B 및/또는 C 중 적어도 하나”를 의미한다. (In this document, the term “/” and “,” should be interpreted to indicate “and/or.” For instance, the expression “A/B” may mean “A and/or B.” Further, “A, B” may mean “A and/or B.” Further, “A/B/C” may mean “at least one of A, B, and/or C.” Also, “A/B/C” may mean “at least one of A, B, and/or C.”)
추가적으로, 이 문서에서 “또는”는 “및/또는”으로 해석된다. 예를 들어, “A 또는 B”은, 1) “A” 만을 의미하고, 2) “B” 만을 의미하거나, 3) “A 및 B”를 의미할 수 있다. 달리 표현하면, 본 문서의 “또는”은 “추가적으로 또는 대체적으로(additionally or alternatively)”를 의미할 수 있다. (Further, in the document, the term “or” should be interpreted to indicate “and/or.” For instance, the expression “A or B” may comprise 1) only A, 2) only B, and/or 3) both A and B. In other words, the term “or” in this document should be interpreted to indicate “additionally or alternatively.”)
실시예들의 장치의 다양한 구성요소들은 하드웨어, 소프트웨어, 펌웨어 또는 그것들의 조합에 의해 수행될 수 있다. 실시예들의 다양한 구성요소들은 하나의 칩, 예를 들면 하나의 하드웨어 서킷으로 구현될 수 있다 실시예들에 따라, 실시예들에 따른 구성요소들은 각각 별도의 칩들로 구현될 수 있다. 실시예들에 따라, 실시예들에 따른 장치의 구성요소들 중 적어도 하나 이상은 하나 또는 그 이상의 프로그램들을 실행 할 수 있는 하나 또는 그 이상의 프로세서들로 구성될 수 있으며, 하나 또는 그 이상의 프로그램들은 실시예들에 따른 동작/방법들 중 어느 하나 또는 그이상의 동작/방법들을 수행시키거나, 수행시키기 위한 인스트럭션들을 포함할 수 있다. 실시예들에 따른 장치의 방법/동작들을 수행하기 위한 실행 가능한 인스트럭션들은 하나 또는 그 이상의 프로세서들에 의해 실행되기 위해 구성된 일시적이지 않은 CRM 또는 다른 컴퓨터 프로그램 제품들에 저장될 수 있거나, 하나 또는 그 이상의 프로세서들에 의해 실행되기 위해 구성된 일시적인 CRM 또는 다른 컴퓨터 프로그램 제품들에 저장될 수 있다. 또한 실시예들에 따른 메모리는 휘발성 메모리(예를 들면 RAM 등)뿐 만 아니라 비휘발성 메모리, 플래쉬 메모리, PROM등을 전부 포함하는 개념으로 사용될 수 있다. 또한, 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함될 수 있다. 또한, 프로세서가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
제1, 제2 등과 같은 용어는 실시예들의 다양한 구성요소들을 설명하기 위해 사용될 수 있다. 하지만 실시예들에 따른 다양한 구성요소들은 위 용어들에 의해 해석이 제한되어서는 안된다. 이러한 용어는 하나의 구성요소를 다른 구성요소와 구별하기 위해 사욛외는 것에 불과하다. 것에 불과하다. 예를 들어, 제1 사용자 인풋 시그널은 제2사용자 인풋 시그널로 지칭될 수 있다. 이와 유사하게, 제2사용자 인풋 시그널은 제1사용자 인풋시그널로 지칭될 수 있다. 이러한 용어의 사용은 다양한 실시예들의 범위 내에서 벗어나지 않는 것으로 해석되어야만 한다. 제1사용자 인풋 시그널 및 제2사용자 인풋 시그널은 모두 사용자 인풋 시그널들이지만, 문맥 상 명확하게 나타내지 않는 한 동일한 사용자 인풋 시그널들을 의미하지 않는다.
실시예들을 설명하기 위해 사용된 용어는 특정 실시예들을 설명하기 위한 목적으로 사용되고, 실시예들을 제한하기 위해서 의도되지 않는다. 실시예들의 설명 및 청구항에서 사용된 바와 같이, 문맥 상 명확하게 지칭하지 않는 한 단수는 복수를 포함하는 것으로 의도된다. 및/또는 표현은 용어 간의 모든 가능한 결합을 포함하는 의미로 사용된다. 포함한다 표현은 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들이 존재하는 것을 설명하고, 추가적인 특징들, 수들, 단계들, 엘리먼트들, 및/또는 컴포넌트들을 포함하지 않는 것을 의미하지 않는다.
실시예들을 설명하기 위해 사용되는, ~인 경우, ~때 등의 조건 표현은 선택적인 경우로만 제한 해석되지 않는다. 특정 조건을 만족하는 때, 특정 조건에 대응하여 관련 동작을 수행하거나, 관련 정의가 해석되도록 의도되었다.
상술한 바와 같이, 실시예들을 실시하기 위한 최선의 형태에서 관련 내용을 설명하였다.
상술한 바와 같이, 실시예들은 포인트 클라우드 데이터 송수신 장치 및 시스템에 전체적 또는 부분적으로 적용될 수 있다.
당업자는 실시예들의 범위 내에서 실시예들을 다양하게 변경 또는 변형할 수 있다.
실시예들은 변경/변형들을 포함할 수 있고, 변경/변형은 청구항들 및 그 와 동일한 것들의 범위를 벗어나지 않는다.

Claims (20)

  1. 포인트 클라우드 데이터를 인코딩하는 단계;
    상기 포인트 클라우드 데이터를 포함하는 비트스트림을 전송하는 단계; 를 포함하는,
    포인트 클라우드 데이터 송신 방법.
  2. 제1항에 있어서, 상기 방법은,
    상기 포인트 클라우드 데이터의 공간을 분할 유닛에 기반하여 분할하는 단계를 더 포함하고,
    상기 인코딩하는 단계는 상기 공간 분할된 포인트 클라우드 데이터의 지오메트리 정보를 인코딩하는 단계; 및
    상기 포인트 클라우드 데이터의 어트리뷰트 정보를 인코딩하는 단계를 포함하고,
    상기 지오메트리 정보를 인코딩하는 단계는 상기 포인트 클라우드 데이터에 대한 옥트리를 생성하는 단계를 포함하는,
    포인트 클라우드 데이터 송신 방법.
  3. 제2항에 있어서,
    상기 옥트리를 생성하는 단계는 상기 분할 유닛이 블록인 경우, 상기 블록 마다 옥트리를 구성하거나, 또는
    상기 블록을 포함하는 슬라이스 마다 옥트리를 구성하는,
    포인트 클라우드 데이터 송신 방법.
  4. 제2항에 있어서,
    상기 옥트리를 생성하는 단계는 상기 분할 유닛이 블록인 경우, 상기 블록을 포함하는 슬라이스 마다 옥트리를 구성하고,
    상기 슬라이스에 포함된 제1블록 및 제2블록이 오버랩되는 경우,
    오버랩되는 영역의 포인트들에 대한 아이디 정보를 생성하는,
    포인트 클라우드 데이터 송신 방법.
  5. 제2항에 있어서,
    상기 옥트리를 생성하는 단게는 상기 분할 유닛이 블록인 경우, 상기 블록을 포함하는 슬라이스 마다 옥트리를 구성하고,
    상기 슬라이스에 포함된 제1블록 및 제2블록이 오버랩되는 경우,
    상기 제2블록의 위치를 상기 제1블록과 오버랩되지 않는 가상 블록의 영역으로 오프셋 값에 기반하여 조정하는,
    포인트 클라우드 데이터 송신 방법.
  6. 포인트 클라우드 데이터를 인코딩하는 인코더;
    상기 포인트 클라우드 데이터를 포함하는 비트스트림을 전송하는 트랜스미터; 를 포함하는,
    포인트 클라우드 데이터 송신 장치.
  7. 제6항에 있어서, 상기 장치는,
    상기 포인트 클라우드 데이터의 공간을 분할 유닛에 기반하여 분할하는 공간 분할부를 더 포함하고,
    상기 인코더는 상기 공간 분할된 포인트 클라우드 데이터의 지오메트리 정보를 인코딩하는 지오메트리 인코더; 및
    상기 포인트 클라우드 데이터의 어트리뷰트 정보를 인코딩하는 어트리뷰트 인코더를 포함하고,
    상기 지오메트리 인코더는 상기 포인트 클라우드 데이터에 대한 옥트리를 생성하는 옥트리 생성부를 포함하는,
    포인트 클라우드 데이터 송신 장치.
  8. 제7항에 있어서,
    상기 옥트리 생성부는 상기 분할 유닛이 블록인 경우, 상기 블록 마다 옥트리를 구성하거나, 또는
    상기 블록을 포함하는 슬라이스 마다 옥트리를 구성하는,
    포인트 클라우드 데이터 송신 장치.
  9. 제7항에 있어서,
    상기 옥트리 생성부는 상기 분할 유닛이 블록인 경우, 상기 블록을 포함하는 슬라이스 마다 옥트리를 구성하고,
    상기 슬라이스에 포함된 제1블록 및 제2블록이 오버랩되는 경우,
    오버랩되는 영역의 포인트들에 대한 아이디 정보를 생성하는,
    포인트 클라우드 데이터 송신 장치.
  10. 제7항에 있어서,
    상기 옥트리 생성부는 상기 분할 유닛이 블록인 경우, 상기 블록을 포함하는 슬라이스 마다 옥트리를 구성하고,
    상기 슬라이스에 포함된 제1블록 및 제2블록이 오버랩되는 경우,
    상기 제2블록의 위치를 상기 제1블록과 오버랩되지 않는 가상 블록의 영역으로 오프셋 값에 기반하여 조정하는,
    포인트 클라우드 데이터 송신 장치.
  11. 포인트 클라우드 데이터를 포함하는 비트스트림을 수신하는 단계;
    상기 포인트 클라우드 데이터를 디코딩하는 단계;
    상기 포인트 클라우드 데이터를 렌더링하는 단계; 를 포함하는,
    포인트 클라우드 데이터 수신 방법.
  12. 제11항에 있어서,
    상기 디코딩하는 단계는 상기 포인트 클라우드 데이터의 지오메트리 정보를 디코딩하는 단계; 및
    상기 포인트 클라우드 데이터의 어트리뷰트 정보를 디코딩하는 단계를 포함하고,
    상기 지오메트리 정보를 디코딩하는 단계는,
    상기 포인트 클라우드 데이터에 대한 옥트리를 재구성하는 단계를 포함하는,
    포인트 클라우드 데이터 수신 방법.
  13. 제12항에 있어서,
    상기 옥트리를 재구성하는 단계는,
    상기 포인트 클라우드 데이터가 타일 또는 슬라이스에 기반하여 분할된 데이터인지 확인하는 단계를 포함하는,
    포인트 클라우드 데이터 수신 방법.
  14. 제12항에 있어서,
    상기 옥트리를 재구성하는 단계는,
    상기 포인트 클라우드 데이터가 블록에 기반하여 분할된 경우,
    상기 포인트 클라우드 데이터에 적용된 오버랩의 타입이 독립적 옥트리 또는 위치 조정 및 추가 정보를 포함하지 않는 하나의 옥트리인지 확인하는 단계를 포함하는,
    포인트 클라우드 데이터 수신 방법.
  15. 제12항에 있어서,
    상기 포인트 클라우드 데이터가 블록에 기반하여 분할된 경우,
    상기 포인트 클라우드 데이터에 적용된 오버랩의 타입이 위치 조정을 포함하지 않고 추가 블록 정보를 포함하는 하나의 옥트리 또는 위치 조정을 포함하는 하나의 옥트리인지 확인하고,
    상기 포인트 클라우드 데이터에 대한 상기 블록의 가상 위치를 상기 비트스트림에 포함된 각 블록에 대한 시그널링 정보에 기반하여 복원하는,
    포인트 클라우드 데이터 수신 방법.
  16. 포인트 클라우드 데이터를 포함하는 비트스트림을 수신하는 리시버;
    상기 포인트 클라우드 데이터를 디코딩하는 디코더;
    상기 포인트 클라우드 데이터를 렌더링하는 렌더러; 를 포함하는,
    포인트 클라우드 데이터 수신 장치.
  17. 제16항에 있어서,
    상기 디코더는 상기 포인트 클라우드 데이터의 지오메트리 정보를 지오메트리 디코더; 및
    상기 포인트 클라우드 데이터의 어트리뷰트 정보를 디코딩하는 어트리뷰트 디코더를 포함하고,
    상기 지오메트리 디코더는,
    상기 포인트 클라우드 데이터에 대한 옥트리를 재구성하는 옥트리 재구성부를 포함하는,
    포인트 클라우드 데이터 수신 장치.
  18. 제17항에 있어서,
    상기 옥트리 재구성부는,
    상기 포인트 클라우드 데이터가 타일 또는 슬라이스에 기반하여 분할된 데이터인지 확인하는,
    포인트 클라우드 데이터 수신 장치.
  19. 제17항에 있어서,
    상기 옥트리 재구성부는,
    상기 포인트 클라우드 데이터가 블록에 기반하여 분할된 경우,
    상기 포인트 클라우드 데이터에 적용된 오버랩의 타입이 독립적 옥트리 또는 위치 조정 및 추가 정보를 포함하지 않는 하나의 옥트리인지 확인하는,
    포인트 클라우드 데이터 수신 장치.
  20. 제17항에 있어서,
    상기 포인트 클라우드 데이터가 블록에 기반하여 분할된 경우,
    상기 포인트 클라우드 데이터에 적용된 오버랩의 타입이 위치 조정을 포함하지 않고 추가 블록 정보를 포함하는 하나의 옥트리 또는 위치 조정을 포함하는 하나의 옥트리인지 확인하고,
    상기 포인트 클라우드 데이터에 대한 상기 블록의 가상 위치를 상기 비트스트림에 포함된 각 블록에 대한 시그널링 정보에 기반하여 복원하는,
    포인트 클라우드 데이터 수신 장치.
PCT/KR2020/002953 2019-08-08 2020-03-02 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법 WO2021025251A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/281,482 US11803986B2 (en) 2019-08-08 2020-03-02 Point cloud data transmission device, point cloud data transmission method, point cloud data reception device, and point cloud data reception method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2019-0096894 2019-08-08
KR20190096894 2019-08-08

Publications (1)

Publication Number Publication Date
WO2021025251A1 true WO2021025251A1 (ko) 2021-02-11

Family

ID=74503126

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2020/002953 WO2021025251A1 (ko) 2019-08-08 2020-03-02 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Country Status (2)

Country Link
US (1) US11803986B2 (ko)
WO (1) WO2021025251A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113395603A (zh) * 2021-06-25 2021-09-14 合肥工业大学 一种基于模型预测控制的点云视频流自适应传输方法

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11403784B2 (en) * 2019-03-19 2022-08-02 Tencent America LLC Method and apparatus for tree-based point cloud compression (PCC) media stream using moving picture experts group (MPEG)-dynamic adaptive streaming over HTTP (DASH)
CN112188199B (zh) * 2019-07-03 2024-05-10 腾讯美国有限责任公司 自适应点云属性编码的方法、装置、电子设备和存储介质
US11368717B2 (en) * 2019-09-16 2022-06-21 Tencent America LLC Method and apparatus for point cloud compression
US11803989B2 (en) * 2020-01-08 2023-10-31 Qualcomm Incorporated Quantization for geometry-based point cloud compression
US11551334B2 (en) * 2020-01-09 2023-01-10 Tencent America LLC Techniques and apparatus for coarse granularity scalable lifting for point-cloud attribute coding
US11956470B2 (en) * 2020-04-07 2024-04-09 Qualcomm Incorporated Predictor index signaling for predicting transform in geometry-based point cloud compression
US11743501B2 (en) * 2020-04-07 2023-08-29 Qualcomm Incorporated High-level syntax design for geometry-based point cloud compression
US11657543B2 (en) * 2020-04-08 2023-05-23 Qualcomm Incorporated Trisoup syntax signaling for geometry-based point cloud compression
US11770562B2 (en) * 2020-06-23 2023-09-26 Qualcomm Incorporated High-level syntax for geometry-based point cloud compression
US20240071009A1 (en) * 2022-08-24 2024-02-29 Worcester Polytechnic Institute Visually coherent lighting for mobile augmented reality

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180081034A1 (en) * 2016-09-22 2018-03-22 Beijing Greenvalley Technology Co., Ltd. Method and device for constructing spatial index of massive point cloud data
KR20180087348A (ko) * 2016-01-22 2018-08-01 미쓰비시덴키 가부시키가이샤 점군을 압축하는 방법
WO2019011637A1 (en) * 2017-07-13 2019-01-17 Interdigital Vc Holdings, Inc. METHOD AND APPARATUS FOR ENCODING / DECODING A CLOUD OF COLORED POINTS REPRESENTING THE GEOMETRY AND COLORS OF A 3D OBJECT
KR20190053129A (ko) * 2017-11-09 2019-05-17 삼성전자주식회사 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11454710B2 (en) * 2019-01-08 2022-09-27 Apple Inc. Point cloud compression using a space filling curve for level of detail generation
WO2020189976A1 (ko) * 2019-03-16 2020-09-24 엘지전자 주식회사 포인트 클라우드 데이터 처리 장치 및 방법
KR102609776B1 (ko) * 2019-05-30 2023-12-05 엘지전자 주식회사 포인트 클라우드 데이터 처리 방법 및 장치
WO2021049758A1 (ko) * 2019-09-11 2021-03-18 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
US11475605B2 (en) * 2020-01-09 2022-10-18 Apple Inc. Geometry encoding of duplicate points
CN114981842A (zh) * 2020-01-09 2022-08-30 苹果公司 点云的树内几何量化
JP7490921B2 (ja) * 2020-04-30 2024-05-28 ホアウェイ・テクノロジーズ・カンパニー・リミテッド リチウムメッキを検出するための方法及び装置、並びに分極比率を取得するための方法及び装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180087348A (ko) * 2016-01-22 2018-08-01 미쓰비시덴키 가부시키가이샤 점군을 압축하는 방법
US20180081034A1 (en) * 2016-09-22 2018-03-22 Beijing Greenvalley Technology Co., Ltd. Method and device for constructing spatial index of massive point cloud data
WO2019011637A1 (en) * 2017-07-13 2019-01-17 Interdigital Vc Holdings, Inc. METHOD AND APPARATUS FOR ENCODING / DECODING A CLOUD OF COLORED POINTS REPRESENTING THE GEOMETRY AND COLORS OF A 3D OBJECT
KR20190053129A (ko) * 2017-11-09 2019-05-17 삼성전자주식회사 비-직교 투영을 이용한 포인트 클라우드 압축을 위한 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Evaluation of a Point Cloud Codec Rufael et and Evaluation of a Point Clound Codec MEKURIA, . Implementation, for Tele-Immersive Video", IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY, 1 April 2017 (2017-04-01), pages 828 - 842, Retrieved from the Internet <URL:https:/www.semanticscholar.org> [retrieved on 20200609] *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113395603A (zh) * 2021-06-25 2021-09-14 合肥工业大学 一种基于模型预测控制的点云视频流自适应传输方法
CN113395603B (zh) * 2021-06-25 2022-04-01 合肥工业大学 一种基于模型预测控制的点云视频流自适应传输方法

Also Published As

Publication number Publication date
US20210407142A1 (en) 2021-12-30
US11803986B2 (en) 2023-10-31

Similar Documents

Publication Publication Date Title
WO2021066312A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021025251A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020190075A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021187839A1 (ko) 포인트 클라우드 데이터 전송 장치, 전송 방법, 처리 장치 및 처리 방법
WO2021049758A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020189943A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020197086A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021060850A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020262831A1 (ko) 포인트 클라우드 데이터 처리 장치 및 방법
WO2021210743A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021002592A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021002558A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법.
WO2021141218A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2022019713A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020189876A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2022098152A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2022015006A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021242064A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2022050650A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021029575A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2021206291A1 (ko) 포인트 클라우드 데이터 전송 장치, 전송 방법, 처리 장치 및 처리 방법
WO2021002636A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2020190097A1 (ko) 포인트 클라우드 데이터 수신 장치, 포인트 클라우드 데이터 수신 방법, 포인트 클라우드 데이터 처리 장치 및 포인트 클라우드 데이터 처리 방법
WO2020256244A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
WO2022075753A1 (ko) 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20849454

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20849454

Country of ref document: EP

Kind code of ref document: A1