Conditional recoloring for video-based point cloud coding
Through the video point cloud encoding method, geometric maps and texture maps are generated, and distortion encoding is used to generate reconstruction geometric maps and reconstruct texture maps. There is no need to recolor, which solves the problem of 3D point cloud data compression and achieves efficient and good-quality data compression.
Patent Information
- Application Number
- JP2022567066
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-10-06
- Filing Date
- 2021-10-12
- Publication Date
- 2025-04-21
- Estimated Expiration
- 2041-10-12
AI Technical Summary
The prior art is difficult to effectively compress 3D point cloud data, especially in maintaining high-quality geometric and texture information while reducing the amount of data.
Through the video point cloud encoding method, geometric maps and texture maps are generated, and distortion encoding is used to generate reconstructed geometric maps and reconstruct texture maps without re-coloring, and finally generate an encoded video stream.
It realizes efficient compression of 3D point cloud data, maintains the quality of geometric and texture information, and reduces the amount of data.
Smart Images

Figure 0007665654000004 
Figure 0007665654000005 
Figure 0007665654000006
Abstract
Description
[Technical field]
[0001] [CROSS REFERENCE TO RELATED APPLICATIONS] This application claims priority to U.S. Provisional Application No. 63 / 197,196, filed June 4, 2021, and U.S. Application No. 17 / 495,301, filed October 6, 2021, the disclosures of which are incorporated by reference in their entireties herein.
[0002] [Technical field] This disclosure is directed to a set of advanced video coding techniques, and more specifically, video-based point cloud compression, including conditional recoloring color transfer. [Background technology]
[0003] Advanced three-dimensional (3D) representations of the world are enabling more immersive interaction and communication. They also enable machines to understand, interpret, and navigate our world. Point clouds have been widely used as 3D representations of the world. They can be used, for example, in autonomous vehicles for object detection and localization, in geographic information systems (GIS) for mapping, and in cultural heritage to visualize and archive cultural heritage artifacts and collections, etc. Several use cases associated with point cloud data have been identified, and several corresponding requirements for point cloud representation and compression have been developed.
[0004] Point clouds include a collection of high-dimensional points, e.g., three-dimensional (3D), each of which contains 3D position information and additional attributes such as color, reflectance, etc. They can be captured using multiple cameras and depth sensors, or lidar in various setups, and can consist of thousands to billions of points to realistically represent the original scene.
[0005] Compression techniques are needed to reduce the amount of data needed to represent a point cloud for faster transmission or reduced storage. ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) established an ad-hoc group (MPEG-PCC) to standardize compression techniques for static or dynamic clouds. Summary of the Invention
[0006] In embodiments, a method for encoding a video stream using video point cloud coding is executed by at least one processor and includes the steps of obtaining a source point cloud; generating a geometry map and a texture map based on the source point cloud; generating a reconstructed geometry map and a reconstructed texture map using lossy coding and without recoloring, where a resolution of the reconstructed geometry map is the same as a resolution of the reconstructed texture map; obtaining points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map; selecting colors for the texture pixels based on colors of the obtained points; and generating an encoded video stream based on the selected colors, the geometry map, and the texture map.
[0007] In various embodiments, an apparatus for encoding a video stream using video point cloud coding includes at least one memory configured to store program code and at least one processor configured to read and operate as instructed by the program code, the program code including: a first acquisition code configured to cause the at least one processor to acquire a source point cloud; a first generation code configured to cause the at least one processor to generate a geometry map and a texture map based on the source point cloud; a second generation code configured to cause the at least one processor to generate a reconstructed geometry map and a reconstructed texture map using lossy coding and without re-coloring, where a resolution of the reconstructed geometry map is the same as a resolution of the reconstructed texture map; the second acquisition code configured to cause the at least one processor to acquire points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map; a selection code configured to cause the at least one processor to select colors for texture pixels based on colors of the acquired points; and a third generation code configured to cause the at least one processor to generate an encoded video stream based on the selected colors, the geometry map, and the texture map.
[0008] In various embodiments, a non-transitory computer-readable medium storing computer instructions for encoding a video stream using video point cloud coding, the computer instructions, when executed by at least one processor, cause the at least one processor to: obtain a source point cloud; generate a geometry map and a texture map based on the source point cloud; generate a reconstructed geometry map and a reconstructed texture map using lossy coding and without re-coloring, wherein a resolution of the reconstructed geometry map is the same as a resolution of the reconstructed texture map; obtain points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map; select colors for the texture pixels based on colors of the obtained points; and generate an encoded video stream based on the selected colors, the geometry map, and the texture map. [Brief description of the drawings]
[0009] Further features, nature and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings. [Figure 1] FIG. 1 is a schematic diagram of a simplified block diagram of a communication system according to one embodiment. [Diagram 2] FIG. 1 is a schematic diagram of a simplified block diagram of a streaming system according to one embodiment. [Diagram 3] FIG. 2 is a schematic diagram of a simplified block diagram of a video encoder according to one embodiment. [Figure 4] FIG. 2 is a schematic diagram of a simplified block diagram of a video decoder according to one embodiment. [Diagram 5] 1 illustrates an example of a forward search between a source point cloud and a reconstructed point cloud according to one embodiment. [Figure 6] 1 illustrates an example of a backward search between a source point cloud and a reconstructed point cloud according to one embodiment. [Figure 7A]1 illustrates an example of an encoder pipeline with recoloring, according to one embodiment. [Figure 7B] 1 illustrates an example of a no-recolor encoder pipeline, according to one embodiment. [Figure 8] 1 illustrates an example of a partially occupied block, according to one embodiment. [Figure 9A] FIG. 2 is a flow diagram illustrating a process performed by one embodiment. [Figure 9B] FIG. 2 is a flow diagram illustrating a process performed by one embodiment. [Figure 10] FIG. 2 illustrates a device according to one embodiment. [Figure 11] FIG. 1 illustrates a computer system suitable for implementing embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] The consideration behind video-based point cloud compression (V-PCC) is to leverage existing video codecs to compress the geometry, occupancy, and texture of a dynamic point cloud as three separate video sequences. The extra metadata needed to interpret the three video sequences can be compressed separately. Only a small portion of the overall bitstream is the metadata, which can be efficiently encoded / decoded using a software implementation. The bulk of the information can be handled by the video codec.
[0011] Embodiments of the present disclosure relate to annealing iterative geometry smoothing to avoid over-smoothing in an iterative smoothing framework.Embodiments of the present disclosure relate to deriving reference points using a combination of mean and median statistics to reduce the computational complexity of using pure medians.
[0012] An embodiment of the present disclosure for implementing the encoding structure and decoding structure of the present disclosure will be described with reference to Figures 1 to 4. The encoding structure and decoding structure of the present disclosure may implement aspects of the V-PCC described above.
[0013] 1 shows a simplified block diagram of a communication system 100 according to one embodiment of the present disclosure. The system 100 may include at least two terminals 110, 120 interconnected via a network 150. In the case of a unidirectional transmission of data, the first terminal 110 may code video data at a local location for transmission to the other terminal 120 via the network 150. The second terminal 120 may receive the coded video data of the other terminal from the network 150, decode the coded data, and display the recovered video data. The unidirectional data transmission may be common in media serving applications, etc.
[0014] 1 shows a second pair of terminals 130, 140 provided to support two-way transmission of coded video, such as might occur during a video conference. For two-way transmission of data, each terminal 130, 140 may code video data captured at a local location for transmission to the other terminal over network 150. Each terminal 130, 140 may also receive coded video data transmitted by the other terminal, decode the coded data, and display the recovered video data on a local display device.
[0015] In FIG. 1, terminals 110-140 may be, for example, servers, personal computers, and smartphones, and / or any other type of terminal. For example, terminals (110-140) may be laptop computers, tablet computers, media players, and / or dedicated videoconferencing equipment. Network 150 represents any number of networks that carry coded video data between terminals 110-140, including, for example, wireline and / or wireless communication networks. Communication network 150 may exchange data in circuit-switched and / or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks, and / or the Internet. For purposes of this discussion, the architecture and topology of network 150 may not be important to the operation of the present disclosure unless described below herein.
[0016] 2 shows an arrangement of video encoders and decoders in a streaming environment as an example of an application for the disclosed subject matter. The disclosed subject matter may be used in other video-enabled applications including, for example, video conferencing, digital TV, storage of compressed video on digital media including CDs, DVDs, memory sticks, etc.
[0017] 2, the streaming system 200 may include a capture subsystem 213 that includes a video source 201 and an encoder 203. The streaming system 200 may further include at least one streaming server 205 and / or at least one streaming client 206.
[0018] The video source 201 may create a stream 202 including a 3D point cloud corresponding to a 3D video, for example. The video source 201 may include, for example, a 3D sensor (e.g., a depth sensor) or a 3D imaging technology (e.g., a digital camera(s)) and a computing device configured to generate the 3D point cloud using data received from the 3D sensor or the 3D imaging technology. The sample stream 202, which may have a high amount of data compared to an encoded video bitstream, may be processed by an encoder 203 coupled to the video source 201. The encoder 203 may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. The encoder 203 may also generate an encoded video bitstream 204. The encoded video bitstream 204, which may have a lower amount of data compared to the uncompressed stream 202, may be stored in a streaming server 205 for future use. One or more streaming clients 206 can access the streaming server 205 to retrieve a video bitstream 209 , which may be a copy of the encoded video bitstream 204 .
[0019] The streaming client 206 may include a video decoder 210 and a display 212. The video decoder 210 may, for example, decode a video bitstream 209, which is a received copy of the incoming encoded video bitstream 204, and create an outgoing video sample stream 211 that may be rendered on a display 212 or another rendering device (not shown). In some streaming systems, the video bitstreams 204, 209 may be encoded according to a particular video coding / compression standard. Examples of such standards include, but are not limited to, ITU-T Recommendation H.265, Versatile Video Coding (VVC), and MPEG / V-PCC.
[0020] Several aspects of a V-PCC that may be implemented by embodiments of the present disclosure are described below with reference to FIGS.
[0021] FIG. 3 illustrates an exemplary functional block diagram of a video encoder 203 according to one embodiment of the present disclosure.
[0022] 3, the video encoder 203 may receive the point cloud frame(s) 350 and generate, based on the point cloud frame 350, a geometry image 352, a texture image 356, and an occupancy map 334. The video encoder 203 may compress the geometry image 352 into a compressed geometry image 362, the texture image 356 into a compressed texture image 364, and the occupancy map 334 into a compressed occupancy map 372. A multiplexer 328 of the video encoder 203 may form a compressed bitstream 374 including the compressed geometry image 362, the compressed texture image 364, and the compressed occupancy map 372.
[0023] More specifically, in embodiments, the video encoder 203 may include a patch generation module 302 that segments the point cloud frame 350 into patches. A patch is a useful entity of the V-PCC. The patch generation process involves decomposing the point cloud frame 350 into a minimum number of patches with smooth boundaries while minimizing reconstruction error. Encoders of this disclosure may implement various methods to generate such decompositions.
[0024] The video encoder 203 may include a patch packing module 304 that performs a packing process. The packing process involves mapping the extracted patches onto a 2D grid while minimizing unused space and ensuring that every M×M (e.g., 16×16) block of the grid is associated with a unique patch. Efficient patch packing directly impacts compression efficiency by minimizing unused space or ensuring temporal consistency. The patch packing module 304 may generate an occupancy map 334.
[0025] The video encoder 203 may include a geometry image generation module 306 and a texture image generation module 308. To better handle the case where multiple points are projected onto the same sample, each patch may be projected onto two images, called layers. For example, the geometry image generation module 306 and the texture image generation module 308 may leverage the 3D to 2D mapping calculated during the packing process of the patch packing module 304 to store the geometry and texture of the point cloud as images (also known as layers). The generated images / layers may be stored as video frame(s) and compressed using a video codec (e.g., HM video codec) according to a configuration provided as a parameter.
[0026] In embodiments, based on the input point cloud frame 350 and the occupancy map 334, the geometry image generation module 306 generates the geometry image 352 and the texture image generation module 308 generates the texture image 356. In one embodiment, the geometry image 352 may be represented by a W×H monochromatic frame in YUV420-8 bit format. In one embodiment, the occupancy map 334 image is composed of a binary map indicating for each cell of the grid whether it belongs to the free space or to the point cloud. To generate the texture image 356, the texture image generation module 308 may utilize the reconstructed / smoothed geometry 358 to calculate the colors to be associated with the resampled points.
[0027] The video encoder 203 may also include an image padding module 314 and an image padding module 316 for padding the geometry image 352 and the texture image 356, respectively, to form a padded geometry image 354 and a padded texture image 360. Image padding (also known as background filling) simply fills the unused space of an image with redundant information. A good background fill is one that has a minimal increase in bit rate and does not introduce significant coding distortion around patch boundaries. The image padding module 314 and the image padding module 316 may use the occupancy map 334 to form the padded geometry image 354 and the padded texture image 360, respectively. In one embodiment, the video encoder 203 may include a group expansion module 320 for forming the padded texture image 360.
[0028] The video encoder 203 may include a video compression module 322 and a video compression module 324 for compressing the padded geometry image 354 and the padded texture image 360 into a compressed geometry image 362 and a compressed texture image 364, respectively.
[0029] The video encoder 203 may include an entropy compression module 318 for lossless encoding 366 of the occupancy map 334 and a video compression module 326 for lossy encoding 368 of the occupancy map 334 .
[0030] In embodiments, the video encoder 203 may include a smoothing module 310 for generating a smoothed geometry 358 by using the reconstructed geometry image 365 and the patch information 332 provided by the video compression module 322. The smoothing procedure of the smoothing module 310 may aim to mitigate potential discontinuities that may occur at patch boundaries due to compression artifacts. The smoothed geometry 358 may be used by the texture image generation module 308 to generate a texture image 356.
[0031] The video encoder 203 may also include an auxiliary patch information compression module 312 for forming compressed auxiliary patch information 370 that is provided in a compressed bitstream 374 by the multiplexer 328.
[0032] FIG. 4 illustrates an exemplary functional block diagram of a video decoder 210 according to one embodiment of the present disclosure.
[0033] 4, the video decoder 210 may receive a coded bitstream 374 from the video encoder 203 to obtain a compressed texture image 362, a compressed geometry image 364, a compressed occupancy map 372, and a compressed auxiliary patch information 370. The video decoder 210 may decode the compressed texture image 362, the compressed geometry image 364, the compressed occupancy map 372, and the compressed auxiliary patch information 370 to obtain a decompressed texture image 460, a decompressed geometry image 462, a decompressed occupancy map 464, and a decompressed auxiliary patch information 466, respectively. Subsequently, the video decoder 210 may generate a reconstructed point cloud 474 based on the decompressed texture image 460, the decompressed geometry image 462, the decompressed occupancy map 464, and the decompressed auxiliary patch information 466.
[0034] In various embodiments, the video decoder 210 may include a demultiplexer 402 that separates the compressed texture images 362, the compressed geometry images 364, the compressed occupancy map 372, and the compressed auxiliary patch information 370 of a received compressed bitstream 374.
[0035] The video decoder 210 may include a video decompression module 404, a video decompression module 406, an occupancy map decompression module 408, and an auxiliary patch information decompression module 410, which decode the compressed texture image 362, the compressed geometry image 364, the compressed occupancy map 372, and the compressed auxiliary patch information 370, respectively.
[0036] The video decoder 210 may include a geometry reconstruction module 412 that obtains a reconstructed (three-dimensional) geometry 468 based on the decompressed geometry image 462, the decompressed occupancy map 464, and the decompressed auxiliary patch information 466.
[0037] The video decoder 210 may include a smoothing module 414 that smooths the reconstructed geometry 468 to obtain a smoothed geometry 470. The smoothing procedure may aim to mitigate potential discontinuities that may occur at patch boundaries due to compression artifacts.
[0038] The video decoder 210 may include a texture reconstruction module 416 to obtain a reconstructed texture 472 based on the decompressed texture image 460 and the smoothed geometry 470.
[0039] The video decoder 210 may include a color smoothing module 418 that smooths the colors of the reconstructed texture 472 in order to obtain the reconstructed point cloud 474. Non-adjacent patches in 3D space are often packed adjacent to each other in 2D video. This implies that pixel values from non-adjacent patches can be blended by a block-based video codec. The color smoothing of the color smoothing module 418 may aim to reduce visible artifacts that appear at patch boundaries.
[0040] Recoloring in Video-Based Point Cloud Compression (V-PCC) In the MPEG PCC Test Model Category 2 (TMC2) model that may support V-PCC, when the geometry is coded in a lossy manner and replicated positions are merged, a recoloring process sometimes called color transfer may be applied on the encoder side. An example of a recoloring algorithm is shown below with reference to FIGS. 5 and 6.
[0041] Given the source point cloud 502, attributes, and the target point p included in the reconstructed point cloud 504 r the color transfer procedure, i.e., the recoloring process, may determine the attribute values of the reconstructed point cloud that minimize the attribute distortion. This approach may be implemented as follows:
[0042] For each target point p r : 1 - Find N1 (1 < N1) nearest neighbor points up to p in the source point cloud 502 and create a set of points represented by Ψ1. This may correspond to a forward search as shown in FIG. 5. r 2 - Find the set of points in the source point cloud 502 such that p belongs to a set of N2 nearest neighbor points within the reconstructed point cloud 504. This set of points is represented by Ψ2. This may correspond to a forward search as shown in FIG. 6. r 3 - Calculate the distance weighted average of the points in Ψ1 and Ψ2 by the following equation: :
Equation
number
number
[0043] In the current design of TMC2, a K-dimensional (KD) tree data structure is utilized for the nearest neighbor search, and the recoloring operation is applied to every point in the reconstructed point cloud, so the recoloring process can be quite complex.
[0044] In embodiments, the recoloring process may be bypassed entirely by generating a texture map directly from the original point cloud. In embodiments, the recoloring process may be applied conditionally. For example, the recoloring process may be applied to areas with higher geometry distortion due to lossy geometry compression.
[0045] The embodiments disclosed herein may be used separately or combined in any order. Furthermore, each of the embodiments, e.g., the encoder and decoder, may be implemented by a processing circuit (e.g., one or more processors or one or more integrated circuits). In one example, the one or more processors execute a program stored in a non-transitory computer-readable medium.
[0046] Bypass Recolor As shown in Figure 7A, in V-PCC, recoloring may be applied when the geometry is lossy coded, and the colors in the reconstructed point cloud are recalculated or, for example, interpolated based on the reconstructed geometry. A texture map is then generated based on the recolored point cloud.
[0047] For example, as can be seen in FIG. 7A, in a process 700A where recoloring is used, an occupancy map 711 and a geometry map 712 may be generated from an input point cloud 710. Then, a reconstructed occupancy map 713 and a reconstructed geometry map 714 may be generated using lossy coding, and a geometry reconstructed point cloud 715 may be generated based on the reconstructed occupancy map 713 and the reconstructed geometry map 714. This geometry reconstructed point cloud 715 may be recolored using the input point cloud 710 to generate a recolored point cloud 716, which may be used with the occupancy map 711 to generate a texture map 717. A reconstructed texture map 718 may be generated using lossy coding, and a reconstructed point cloud 719 may be generated using the reconstructed texture map 718 and the geometry reconstructed point cloud 715.
[0048] In embodiments, texture maps may be generated directly from the input point cloud when generating the geometry map, and the generated occupancy, geometry, and texture maps may then be coded and reconstructed. An example of this is shown in Figure 7B, where the recoloring process can be completely eliminated, greatly simplifying the overall workflow.
[0049] 7B, in process 700B where recoloring is not used, occupancy map 721, geometry map 722, and texture map 723 may be generated directly from the input point cloud 710, and lossy coding may be used to generate reconstructed occupancy map 721, reconstructed geometry map 722, and reconstructed texture map 723. Reconstructed occupancy map 721, reconstructed geometry map 722, and reconstructed texture map 723 may then be used to generate reconstructed point cloud 727.
[0050] In embodiments, a texture map may be generated using the geometry map. The texture map may have the same resolution as the geometry map, and they share the same atlas information. x,y is the occupied pixel in the texture map, and G x,y Assume that P,T, and T,T,are corresponding pixels in the geometry map, and that they correspond to the same point P in 3D space. Then, we denote the original color value of P by T x,y can be assigned as a value of
[0051] If the occupancy map is lossy coded, the texture map generated by bypass recoloring may be further processed based on the reconstructed occupancy map. Thus, "half-occupied" pixels that are occupied in the reconstructed full-size occupancy map but not in the original full-size occupancy map may be filled with some value.
[0052] The distortion of the occupancy map can be caused by two main factors: occupancy map downsampling and lossy compression of the occupancy map. Assume that the occupancy map is losslessly coded with a precision of B×B blocks, where B>1 is an integer. In this case, when an occupancy map block is occupied by at least one point, all points of the block in the reconstructed occupancy map will be occupied.
[0053] Consider an example where B=4. As shown in FIG. 8, a 4×4 block is partially occupied, where the pixels marked with "X" are occupied and the corresponding pixels in the texture map are valid. The remaining pixels are defined as "half occupied" since they are unoccupied in the original occupancy map but occupied in the reconstructed occupancy map. Thus, in the reconstructed block, the "half occupied" pixels will be considered occupied. In embodiments, the "half occupied" pixels may be filled with an appropriate value to improve the reconstruction quality. The filled value may be determined by the occupied pixels in the image.
[0054] In embodiments, the filling process of "half occupied" pixels is performed on a BxB non-overlapping block basis: for each BxB block, the "half occupied" pixels are filled with the average value of the occupied pixels in the same block.
[0055] In embodiments, the filling process of "half-occupied" pixels is performed on a BxB non-overlapping block basis. For each BxB block, the "half-occupied" pixels are filled with the average value of the number of nearest neighboring pixels that are occupied in the same block. The averaging can be weighted by the distance to the filled pixel.
[0056] In embodiments, the process of filling "half-occupied" pixels is performed across the entire image. For each "half-occupied" pixel, it may be filled with the average value of the number of nearest neighboring pixels that are occupied in the image. The averaging may be weighted by the distance to the filled pixel.
[0057] Conditional recoloring Conditional recoloring is a combination of the normal recoloring method and the bypass recoloring method. The method may involve a trade-off between the bypass recoloring scheme and the occupancy map distortion. In embodiments, some of the pixels in the texture map may be derived directly from the original point cloud by the bypass recoloring scheme, and the rest of the pixels may be derived from the reconstructed point cloud by the regular recoloring algorithm. The decision as to which method to apply to a pixel may depend on the geometric distortion of the corresponding point in 3D. For example, if the geometric distortion is large, regular recoloring is applied, otherwise bypass recoloring is applied. Note that the geometric distortion is composed of the distortion of the geometry map and the distortion of the occupancy map.
[0058] In embodiments, if the geometry, e.g., the geometry map and the occupancy map, is losslessly coded, bypass recoloring may be applied to all pixels of the texture map and the normal recoloring scheme may be omitted.
[0059] In embodiments, the "half-occupied" pixels may be processed by the normal recoloring scheme.
[0060] In embodiments, all pixels in a BxB block that contain at least a "half-occupied" pixel may be processed by the normal recoloring scheme.
[0061] In embodiments, the original geometry map and the corresponding reconstructed geometry map after compression may be compared. For a given 2D location, if the corresponding pixel value in the geometry map is significantly different due to compression, the corresponding pixel in the texture map may be processed by the normal recoloring scheme, otherwise it may be processed by the bypass recoloring scheme. A threshold may be defined to determine whether the geometry change is significant or not. The threshold may be fixed for all sequences, or may be changed for each sequence, or may be adaptively updated for each sequence. The threshold may be sent in the bitstream as high-level syntax information or metadata.
[0062] It should be noted that any combination of the conditions in the embodiments disclosed herein may apply.
[0063] Thus, in embodiments, a texture map may be generated directly from the input point cloud without recoloring from the reconstructed point cloud, which may be referred to as a bypass recoloring scheme. If the occupancy map is lossy coded, the texture map generated by bypass recoloring may be further processed based on the reconstructed occupancy map. The goal may be to fill the "half-occupied" pixels that are occupied in the reconstructed full-size occupancy map but not in the original full-size occupancy map with some value. The value to be filled may be determined by the occupied pixels in the image. The "half-occupied" pixel filling process may be performed on a B×B non-overlapping block basis. The "half-occupied" pixel filling process may be performed over the entire image.
[0064] In embodiments, some of the pixels in the texture map may be derived directly from the original point cloud by the bypass recoloring scheme, and the rest of the pixels are derived from the reconstructed point cloud by a regular recoloring algorithm, which may be referred to as a conditional recoloring scheme. The decision as to which method to apply to a pixel may depend on the geometric distortion of the corresponding point in 3D. If the geometric distortion is large, regular recoloring may be applied, otherwise bypass recoloring may be applied. Note that the geometric distortion may include distortion of the geometry map and distortion of the occupancy map.
[0065] 9A is a flowchart of a method 900A for encoding a video stream using video point cloud coding. In some implementations, one or more process blocks of FIG. 9A may be performed by the encoder 203. In some implementations, one or more process blocks of FIG. 9A may be performed by another device or group of devices separate from or including the encoder 203, such as the decoder 210.
[0066] As shown in FIG. 9A, in operation 911, the method 900A may include obtaining a source point cloud.
[0067] At operation 912, the method 900A may include generating a geometry map and a texture map based on the source point cloud.
[0068] At operation 913, the method 900A may include generating a reconstructed geometry map and a reconstructed texture map using lossy coding, where a resolution of the reconstructed geometry map is the same as a resolution of the reconstructed texture map. In embodiments, the reconstructed geometry map and the reconstructed texture map may be generated without the use of recoloring.
[0069] At operation 914, the method 900A may include obtaining points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map.
[0070] At operation 915, the method 900A may include selecting a color for the texture pixel based on the color of the obtained point.
[0071] At operation 916, the method 900A may include generating an encoded video stream based on the selected color, the geometry map, and the texture map.
[0072] 9B is a flowchart of a method 900B for encoding a video stream using video point cloud coding. In some implementations, one or more process blocks of FIG. 9B may be performed by the encoder 203. In some implementations, one or more process blocks of FIG. 9B may be performed by another device or group of devices separate from or including the encoder 203, such as the decoder 210.
[0073] As shown in FIG. 9B, at operation 921, the method 900B may include generating an occupancy map based on the source point cloud.
[0074] At operation 922, the method 900B may include generating a reconstructed occupancy map using lossy coding, where a resolution of the reconstructed occupancy map is the same as a resolution of the reconstructed geometry map and a resolution of the reconstructed texture map. In embodiments, the reconstructed occupancy map may be generated without the use of recoloring.
[0075] In embodiments, the color of a texture pixel may be selected based on an occupancy map.
[0076] In embodiments, a texture pixel may correspond to a half-occupied pixel that is unoccupied in the occupancy map and occupied in the reconstructed occupancy map, and the color of the texture pixel may be selected based on the average value of multiple occupied pixels in the same block.
[0077] In embodiments, a texture pixel may correspond to a half-occupied pixel that is unoccupied in the occupancy map and occupied in the reconstructed occupancy map, and the color of the texture pixel may be selected based on a distance-weighted average of multiple nearest occupied pixels.
[0078] In embodiments, texture pixels may correspond to occupied pixels that are occupied in the occupancy map and occupied in the reconstructed occupancy map, and color values of half-occupied pixels that are unoccupied in the occupancy map and occupied in the reconstructed occupancy map may be determined using recoloring.
[0079] In embodiments, color values of pixels included in a block that includes half-occupied pixels may be determined using recoloring.
[0080] In embodiments, the points may be obtained based on a comparison between the geometry map and the reconstructed geometry map.
[0081] 9A-9B depict example blocks of methods 900A and 900B, in some implementations, methods 900A and 900B may include additional, fewer, different, or differently arranged blocks compared to the blocks depicted in FIGs. Additionally or alternatively, two or more of the blocks of method 900A may be performed in parallel. In embodiments, any block of FIGs. 9A-9B may be combined in any order or amount with any other block or blocks of FIGs. 9A-9B, as desired.
[0082] 10 is a diagram of an apparatus 1000 for encoding a video stream using video point cloud coding according to an embodiment. As shown in FIG. 10, the apparatus 800 includes a first acquisition code 1010, a first generation code 1020, a second generation code 1030, a second acquisition code 1040, a selection code 1050, and a third generation code 1060.
[0083] The first acquisition code 1010 may be configured to cause the at least one processor to acquire a source point cloud.
[0084] The first generation code 1020 may be configured to cause the at least one processor to generate a geometry map and a texture map based on the source point cloud.
[0085] The second generation code 1030 may be configured to cause the at least one processor to generate a reconstructed geometry map and a reconstructed texture map using lossy coding, where a resolution of the reconstructed geometry map is the same as a resolution of the reconstructed texture map.
[0086] The second obtaining code 1040 may be configured to cause the at least one processor to obtain points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map.
[0087] The selection code 1050 may be configured to cause the at least one processor to select a color for the texture pixel based on the color of the obtained point.
[0088] The third generation code 1060 may be configured to cause the at least one processor to generate an encoded video stream based on the selected color, geometry map, and texture map.
[0089] The techniques described above may be implemented as computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, FIG. 11 illustrates a computer system 1100 suitable for implementing certain embodiments of the present disclosure.
[0090] The computer software can be coded using any suitable machine code or computer language that can be subjected to assembly, compilation, linking, or similar mechanisms to create code containing instructions that can be executed by a computer central processing unit (CPU), graphics processing unit (GPU), etc., directly, or through interpretation, microcode execution, etc.
[0091] The instructions may be executed in various types of computers or components thereof including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, Internet of Things devices, and the like.
[0092] 11 for computer system 1100 are examples and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing the embodiments of the present disclosure, nor should the arrangement of components be interpreted as having any dependency or requirement regarding any one or combination of components illustrated in the non-limiting embodiment of computer system 1100.
[0093] The computer system 1100 may include certain human interface input devices. Such human interface input devices may respond to input by one or more human users through, for example, tactile input (keystrokes, swipes, data glove movements, etc.), audio input (voice, clapping, etc.), visual input (gestures, etc.), olfactory input (not shown). Human interface devices may also be used to capture certain media not necessarily directly associated with conscious human input, such as audio (speech, music, ambient sounds, etc.), images (scanned images, photographic images obtained from still image cameras, etc.), and video (two-dimensional video, three-dimensional video including stereoscopic video, etc.).
[0094] The input human interface devices may include one or more of a keyboard 1101, a mouse 1102, a trackpad 1103, a touch screen 1110, a data glove, a joystick 1105, a microphone 1106, a scanner 1107, a camera 1108 (only one of each shown).
[0095] The computer system 1100 may also include certain human interface output devices. Such human interface output devices may stimulate one or more of the human user's senses, for example, through haptic output, sound, light, and smell / taste. Such human interface output devices may include haptic output devices (e.g., haptic feedback via touch screen 1110, data gloves, or joystick 1105, although there may also be haptic feedback devices that do not function as input devices). For example, such devices may be audio output devices (such as speakers 1109, headphones (not shown)), visual output devices (such as screens 1110, including CRT screens, LCD screens, plasma screens, OLED screens, with or without touch screen input capabilities, with or without haptic feedback capabilities, some of which may be capable of outputting two-dimensional visual output or three-dimensional or higher output through such means as virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)), as well as printers (not shown).
[0096] The computer system 1100 may also include human accessible storage devices and associated media such as optical media including CD / DVD ROM / RW 1120 with CD / DVD or similar media 1121, thumb drives 1122, removable hard drives or solid state drives 1123, legacy magnetic media such as tapes and floppy disks (not shown), and dedicated ROM / ASIC / PLD based devices such as security dongles (not shown).
[0097] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter of this disclosure does not encompass transmission media, carrier waves, or other transitory signals.
[0098] The computer system 1100 may also include interfaces to one or more communication networks. The networks may be, for example, wireless, wireline, optical. The networks may further be local, wide area, metropolitan, vehicular and industrial, real-time, delay tolerant, etc. Examples of networks include local area networks such as Ethernet, wireless LAN, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., TV wireline or wireless wide area digital networks including cable TV, satellite TV, and terrestrial broadcast TV, vehicular and industrial networks including CANBus, etc. Certain networks generally require an external network interface adapter attached to a particular general-purpose data port or peripheral bus 1149 (e.g., a USB port of the computer system 1100, etc.), while others are generally integrated into the core of the computer system 1100 by attachment to a system bus (e.g., an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system), as described below. Using any of these networks, the computer system 1100 may communicate with other entities. Such communications may be unidirectional, receive only (e.g., broadcast TV), unidirectional transmit only (e.g., CANbus to a specific CANbus device), or bidirectional, for example, to other computer systems using local or wide area digital networks. Such communications may include communications to a cloud computing environment 1155. Several protocols and protocol stacks may be used in each of those networks and network interfaces, as described above.
[0099] The aforementioned human interface devices, human accessible storage devices, and network interface 1154 may be attached to the core 1140 of the computer system 1100 .
[0100] The core 1140 may include one or more central processing units (CPUs) 1141, graphics processing units (GPUs) 1142, dedicated programmable processing units in the form of field programmable gate areas (FPGAs) 1143, hardware accelerators 1144 for specific tasks, etc. These devices may be connected through a system bus 1148, along with read only memory (ROM) 1145, random access memory 1146, internal mass storage devices 1147 such as internal non-user accessible hard drives, SSDs, etc. In some computer systems, the system bus 1148 may be accessible in the form of one or more physical plugs to allow expansion with additional CPUs, GPUs, etc. Peripheral devices may be attached to the core's system bus 1148 directly or through a peripheral bus 1149. Peripheral bus architectures include PCI, USB, etc. A graphics adapter 1150 may be included in the core 1140.
[0101] The CPU 1141, GPU 1142, FPGA 1143, and accelerator 1144 may execute certain instructions that may combine to constitute the aforementioned computer code. This computer code may be stored in ROM 1145 or RAM 1146. Transient data may also be stored in RAM 1146, while permanent data may be stored, for example, in internal mass storage device 1147. Rapid storage and retrieval in any of the memory devices may be made possible through the use of cache memories that may be closely associated with one or more of the CPU 1141, GPU 1142, mass storage device 1147, ROM 1145, RAM 1146, etc.
[0102] The computer-readable medium can bear computer code for performing various computer-implemented operations. The medium and computer code may be those specially designed and constructed for the purposes of the present disclosure, or they may be of the kind well known and available to those skilled in the computer software arts.
[0103] By way of example and not limitation, the architecture, specifically computer system 1100 having core 1140 and processor(s) (including CPU, GPU, FPGA, accelerator, etc.) can provide functionality as a result of executing software embodied in one or more tangible computer-readable media. Such computer-readable media can be user-accessible mass storage devices as introduced above, as well as media associated with specific storage devices of the core 1140 that are non-transitory in nature, such as core internal mass storage device 1147 or ROM 1145. Software implementing various embodiments of the present disclosure can be stored in such devices and executed by the core 1140. The computer-readable media can include one or more memory devices or chips, depending on the particular needs. The software can cause the core 1140 and specifically the processors therein (including CPU, GPU, FPGA, etc.) to perform particular processes or particular portions of particular processes described herein, including defining data structures stored in RAM 1146 and modifying such data structures according to the software-defined processes. Additionally, or alternatively, a computer system may provide functionality as a result of logic hardwired or otherwise embodied in circuitry (e.g., accelerator 1144) that may operate in place of or in conjunction with software to perform particular processes or particular portions of particular processes described herein. References to software may encompass logic, and vice versa, where appropriate. References to computer-readable media may encompass, where appropriate, circuitry (such as an integrated circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure encompasses any appropriate combination of hardware and software.
[0104] While this disclosure has described several non-limiting embodiments, there are alterations, substitutions, and various substitute equivalents that fall within the scope of this disclosure. It should thus be understood that those skilled in the art can devise numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the present disclosure and are therefore within the spirit and scope of the present disclosure.
Claims
1. 1. A method for encoding a video stream using video point cloud coding, the method being executed by at least one processor, comprising: obtaining a source point cloud; generating an occupancy map, a geometry map and a texture map based on the source point cloud; generating a reconstructed occupancy map, a reconstructed geometry map and a reconstructed texture map using lossy coding and without recoloring, wherein the resolution of each of the reconstructed occupancy map, the reconstructed geometry map and the reconstructed texture map is the same; obtaining points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map; selecting a color for the texture pixel based on the obtained point color and the occupancy map; generating an encoded video stream based on the selected colors, the geometry map, and the texture map; Including, the texture pixels correspond to half-occupied pixels that are unoccupied in the occupancy map and occupied in the reconstructed occupancy map; the color of the texture pixel is selected based on an average value of a number of occupied pixels within the same block of the occupancy map. method.
2. A method for encoding a video stream using video point cloud coding, the method being performed by at least one processor, obtaining a source point cloud; generating an occupancy map, a geometry map and a texture map based on the source point cloud; generating a reconstructed occupancy map, a reconstructed geometry map and a reconstructed texture map using lossy coding and without recoloring, wherein the resolution of each of the reconstructed occupancy map, the reconstructed geometry map and the reconstructed texture map is the same; obtaining points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map; selecting a color for the texture pixel based on the obtained point color and the occupancy map; generating an encoded video stream based on the selected colors, the geometry map, and the texture map; Including, the texture pixels correspond to half-occupied pixels that are unoccupied in the occupancy map and occupied in the reconstructed occupancy map; the color of the texture pixel is selected based on a distance weighted average of a number of nearest occupied pixels of the same block of the occupancy map. method.
3. A method for encoding a video stream using video point cloud coding, the method being performed by at least one processor, comprising: obtaining a source point cloud; generating an occupancy map, a geometry map and a texture map based on the source point cloud; generating a reconstructed occupancy map, a reconstructed geometry map and a reconstructed texture map using lossy coding and without recoloring, wherein the resolution of each of the reconstructed occupancy map, the reconstructed geometry map and the reconstructed texture map is the same; obtaining points of the source point cloud that correspond to geometry pixels of the geometry map and texture pixels of the texture map; selecting a color for the texture pixel based on the obtained point color and the occupancy map; generating an encoded video stream based on the selected colors, the geometry map, and the texture map; Including, the texture pixels are occupied in the occupancy map and correspond to occupied pixels in the reconstructed occupancy map; color values of half-occupied pixels that are unoccupied in the occupancy map and that are occupied in the reconstructed occupancy map are determined using the recoloring. method.
4. The method of claim 3 , wherein color values of pixels included in the block containing the half-occupied pixel are determined using the recoloring.
5. The method according to claim 1 , wherein the points are obtained based on a comparison between the geometric map and the reconstructed geometric map.
6. 1. An apparatus for encoding a video stream using video point cloud coding, comprising: at least one memory configured to store program code; at least one processor configured to read said program code and to act as instructed by said program code; 6. An apparatus comprising: a processor configured to: generate a first program code for a first processor;
7. A computer program causing a computer to carry out the method according to any one of claims 1 to 5.
Citation Information
Patent Citations
Point Cloud Geometry Padding
JP2022524785A
Immersive Video Coding Technology for 3DoF+ / MIV and V-PCC
JP2022532302A
Point cloud compression
US20190313110A1
An apparatus, a method and a computer program for volumetric video
WO2019158821A1
Point cloud geometry padding
WO2020188403A1