Content-aware point cloud compression method and apparatus using HEVC tiles

文档序号:639640 发布日期:2021-05-11 浏览:36次 中文

阅读说明:本技术 使用hevc图块的内容感知的点云压缩方法和装置 (Content-aware point cloud compression method and apparatus using HEVC tiles ) 是由 阿拉什·沃索基 芮世薰 刘杉 于 2019-09-27 设计创作,主要内容包括:一种方法,包括接收含有多个数据点的数据云。该方法还包括识别包括感兴趣区域(ROI)的每个数据点,以及将数据云划分为ROI云和一个或多个非ROI云。该方法包括对ROI云执行片生成处理,该片生成处理包括根据每个包括ROI的数据点生成ROI片。该方法包括对ROI云执行片封装处理,片封装处理包括:(i)将每个ROI片映射到二维(2D)图,(ii)确定多个ROI片中的至少两个ROI片是否位于该图的一个以上的图块中,以及(iii)响应于确定至少两个ROI片位于一个以上的图块中,将该ROI片中的每个ROI片移动到一个图块中。(A method includes receiving a data cloud containing a plurality of data points. The method also includes identifying each data point including a region of interest (ROI), and dividing the data cloud into a ROI cloud and one or more non-ROI clouds. The method includes performing a patch generation process on the ROI cloud, the patch generation process including generating an ROI patch from each data point that includes the ROI. The method comprises the steps of carrying out slice packaging processing on the ROI cloud, wherein the slice packaging processing comprises the following steps: (i) mapping each ROI slice to a two-dimensional (2D) map, (ii) determining whether at least two ROI slices of the plurality of ROI slices are located in more than one tile of the map, and (iii) moving each ROI slice of the ROI slices into one tile in response to determining that the at least two ROI slices are located in more than one tile.)

1. A method performed by a video encoder, comprising:

receiving a data cloud comprising a plurality of data points representing a three-dimensional (3D) space;

identifying each data point comprising a region of interest (ROI) associated with the data cloud;

dividing the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud comprising data points that each include the ROI;

performing a slice generation process on the ROI cloud, the slice generation process comprising generating an ROI slice from the each data point comprising the ROI; and

performing a tile encapsulation process on the ROI cloud, the tile encapsulation process comprising:

(i) mapping each ROI tile to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map,

(ii) determining whether at least two ROI slices of the plurality of ROI slices are located in more than one tile, an

(iii) In response to determining that the at least two ROI slices are located in more than one tile, moving each of the ROI slices from the plurality of tiles into one tile.

2. The method of claim 1, further comprising:

performing a slice generation process on each non-ROI cloud, the slice generation process comprising creating a non-ROI slice for each data point that does not include an ROI, and

performing a tile encapsulation process on each non-ROI cloud, the tile encapsulation process comprising mapping each of the non-ROI tiles to one or more white spaces in the two-dimensional map that do not include the ROI tile.

3. The method of claim 1, wherein the tile encapsulation processing for the ROI cloud and the tile encapsulation processing for each non-ROI cloud are performed in parallel.

4. The method of claim 2, further comprising:

compressing the tile containing each of the ROI slices according to a first compression rate; and

compressing respective tiles of the plurality of tiles that do not contain the ROI slice according to a second compression rate that is higher than the first compression rate.

5. The method of claim 1, further comprising:

determining whether the ROI is larger than each tile included in the 2D map; and

in response to determining that the ROI is larger than each tile included in the 2D map, partition the ROI cloud into one or more sub-ROI clouds,

wherein the tile generation process and the tile encapsulation process are performed on each of the one or more sub-ROI clouds.

6. The method of claim 5, wherein the tile encapsulation process is performed in parallel on the one or more sub-ROI clouds.

7. The method of claim 1, further comprising:

determining whether the video encoder specifies a size of each tile in the 2D map; and

in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a height of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

8. The method of claim 7, further comprising:

in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a width of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

9. The method of claim 2, wherein the data cloud includes a plurality of ROIs, the data cloud is divided into a plurality of ROI clouds, each ROI cloud corresponds to a respective ROI, and the tile generation process and the tile encapsulation process are performed on each ROI cloud.

10. The method of claim 9, wherein the tile encapsulation process performed on each ROI cloud causes each ROI to be mapped to a different tile in the 2D map.

11. A video encoder, comprising:

a processing circuit configured to:

receiving a data cloud comprising a plurality of data points representing a three-dimensional (3D) space;

identifying each data point comprising a region of interest (ROI) associated with the data cloud;

dividing the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud comprising data points that each include an ROI;

performing a slice generation process on the ROI cloud, the slice generation process comprising generating an ROI slice from the each ROI-comprising data point; and

performing a tile encapsulation process on the ROI cloud, the tile encapsulation process comprising:

(i) mapping each ROI tile to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map,

(ii) determining whether at least two ROI slices of the plurality of ROI slices are located in more than one tile, an

(iii) In response to determining that at least two ROI slices are located in more than one tile, moving each of the ROI slices from the plurality of tiles into one tile.

12. The video encoder of claim 11, wherein the processing circuit is further configured to:

performing a slice generation process on each non-ROI cloud, the slice generation process comprising creating a non-ROI slice for each data point that does not include an ROI, and

performing a tile encapsulation process on each non-ROI cloud, the tile encapsulation process comprising mapping each of the non-ROI tiles to one or more white spaces in the two-dimensional map that do not include the ROI tile.

13. The video encoder of claim 11, wherein the slice encapsulation processing for the ROI cloud and the slice encapsulation processing for each non-ROI cloud are performed in parallel.

14. The video encoder of claim 12, wherein the processing circuit is further configured to:

compressing the tile containing each of the ROI slices according to a first compression rate; and

compressing respective tiles of the plurality of tiles that do not contain the ROI slice according to a second compression rate that is higher than the first compression rate.

15. The video encoder of claim 11, wherein the processing circuit is further configured to:

determining whether the ROI is larger than each tile included in the 2D map; and

in response to determining that the ROI is larger than each tile included in the 2D map, partition the ROI cloud into one or more sub-ROI clouds,

wherein the tile generation process and the tile encapsulation process are performed on each of the one or more sub-ROI clouds.

16. The video encoder of claim 15, wherein the slice encapsulation process is performed in parallel on the one or more sub-ROI clouds.

17. The video encoder of claim 11, wherein the processing circuit is further configured to:

determining whether the video encoder specifies a size of each tile in the 2D map; and

in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a height of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

18. The video encoder of claim 17, wherein the processing circuit is further configured to:

in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a width of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

19. The video encoder of claim 12, wherein the data cloud comprises a plurality of ROIs, the data cloud is divided into a plurality of ROI clouds, each ROI cloud corresponds to a respective ROI, and the slice generation process and the slice encapsulation process are performed on each ROI cloud.

20. A non-transitory computer-readable medium storing instructions that, when executed by a processor in a video encoder, cause the processor to perform a method comprising:

receiving a data cloud comprising a plurality of data points representing a three-dimensional (3D) space;

identifying each data point comprising a region of interest (ROI) associated with the data cloud;

dividing the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud comprising data points that each include the ROI;

performing a slice generation process on the ROI cloud, the slice generation process comprising generating an ROI slice from the each data point comprising the ROI; and

performing a tile encapsulation process on the ROI cloud, the tile encapsulation process comprising:

(i) mapping each ROI tile to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map,

(ii) determining whether at least two ROI slices of the plurality of ROI slices are located in more than one tile, an

(iii) In response to determining that the at least two ROI slices are located in more than one tile, moving each of the ROI slices from the plurality of tiles into one tile.

Technical Field

The present disclosure describes embodiments that relate generally to video encoding.

Background

The background description provided herein is for the purpose of generally presenting the context of the disclosure. Work of the presently named inventors, to the extent it is described in this background section, as well as aspects of the description that may not otherwise qualify as prior art at the time of filing, are neither expressly nor impliedly admitted as prior art against the present disclosure.

The three-dimensional (3D) representation of the world enables a more immersive form of interaction and communication, and also enables machines to understand, interpret, and explore the world. Point clouds have become one such form of 3D-enabled representation. The Motion Picture Experts Group (MPEG) has identified many use cases related to point cloud data and placed corresponding requirements on point cloud representation and compression.

Disclosure of Invention

According to an exemplary embodiment, a method performed by a video encoder includes receiving a data cloud comprising a plurality of data points representing a 3D space. The method also includes identifying each data point including a region of interest (ROI) associated with the data cloud. The method also includes partitioning the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud including each data point containing an ROI. The method also includes performing a slice generation process on the ROI cloud, the slice generation process including generating an ROI slice from each data point that includes the ROI. The method also includes performing a tile encapsulation process on the ROI cloud, the tile encapsulation process including: (i) mapping each ROI slice to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map, (ii) determining whether at least two of the plurality of ROI slices are located in more than one tile, and (iii) moving each of the ROI slices from the plurality of tiles to one tile in response to determining that the at least two ROI slices are located in more than one tile.

According to an exemplary embodiment, a video encoder includes processing circuitry configured to receive a data cloud including a plurality of data points representing a 3D space. The processing circuitry is further configured to identify each data point including a region of interest (ROI) associated with the data cloud. The processing circuitry is further configured to partition the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud including each data point containing an ROI. The processing circuitry is further configured to perform a slice generation process on the ROI cloud, the slice generation process including generating an ROI slice from each data point that includes the ROI. The processing circuitry is further configured to perform a slice encapsulation process on the ROI cloud, the slice encapsulation process comprising: (i) mapping each ROI slice to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map, (ii) determining whether at least two of the plurality of ROI slices are located in more than one tile, and (iii) moving each of the ROI slices from the plurality of tiles to one tile in response to determining that the at least two ROI slices are located in more than one tile.

According to an exemplary embodiment, a non-transitory computer readable medium is provided having instructions stored thereon, which when executed by a processor in a video encoder, cause the processor to perform a method. The method includes receiving a data cloud comprising a plurality of data points representing a 3D space. The method also includes identifying each data point including a region of interest (ROI) associated with the data cloud. The method also includes partitioning the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud including each data point containing an ROI. The method also includes performing a slice generation process on the ROI cloud, the slice generation process including generating an ROI slice from each data point that includes the ROI. The method also includes performing a tile encapsulation process on the ROI cloud, the tile encapsulation process including: (i) mapping each ROI slice to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map, (ii) determining whether at least two of the plurality of ROI slices are located in more than one tile, and (iii) moving each of the ROI slices from the plurality of tiles to one tile in response to determining that the at least two ROI slices are located in more than one tile.

Drawings

Other features, properties, and various advantages of the disclosed subject matter will become more apparent from the following detailed description and the accompanying drawings, in which:

FIG. 1A illustrates an exemplary point cloud.

FIG. 1B illustrates a recursive subdivision process according to one embodiment.

Fig. 2 shows an exemplary video codec according to an embodiment.

Fig. 3 shows an example of mapping tiles onto a 2D grid.

Fig. 4A and 4B illustrate an exemplary die package according to an embodiment of the present disclosure.

Fig. 5A and 5B illustrate an exemplary die package according to an embodiment of the present disclosure.

Fig. 6A and 6B illustrate an exemplary die package according to an embodiment of the present disclosure.

FIG. 7 shows an example 3D ROI according to one embodiment.

Fig. 8A and 8B illustrate an exemplary die package according to an embodiment of the present disclosure.

FIG. 9 illustrates an exemplary chip packaging sequence according to one embodiment.

Fig. 10 illustrates an exemplary process performed by a video codec according to one embodiment.

Fig. 11 shows an exemplary process performed by a video codec according to one embodiment.

Fig. 12 shows an exemplary process performed by a video codec according to one embodiment.

Fig. 13 shows an exemplary process performed by a video codec according to one embodiment.

Fig. 14A and 14B illustrate an exemplary sheet package having multiple ROIs according to an embodiment of the disclosure.

FIG. 15 is a schematic diagram of a computer system, according to one embodiment.

Detailed Description

Point cloud data is used to represent three-dimensional (3D) scenes or objects in some emerging applications, such as the following: immersive Virtual Reality (VR)/Augmented Reality (AR)/Mixed Reality (MR), automotive/robotic navigation, medical imaging, and so forth. The point cloud comprises a collection of individual 3D points. Each point is associated with a set of 3D coordinates indicating the 3D location of the point and a number of other attributes, such as color, surface normal, opacity, reflectivity, etc. In various embodiments, the input point cloud data may be quantized and then sorted into a 3D voxel grid that may be described using an octree data structure. The resulting voxelized octree facilitates traversal, search, and access to the quantized point cloud data.

A point cloud is a set of points in 3D space, each point having associated attributes, such as color, material attributes, and the like. FIG. 1A shows an exemplary point cloud having points P0 through P8. The point cloud may be used to reconstruct an object or scene as a combination of these points. Multiple cameras and depth sensors may be used in various settings to capture the point cloud, and the point cloud may be composed of thousands of points to truly represent the reconstructed scene.

Compression techniques are needed to reduce the amount of data required to represent a point cloud. Therefore, techniques are needed to lossy compress point clouds for real-time communication and six-degree-of-freedom (6DoF) virtual reality. In addition, techniques for lossless point cloud compression are sought in the context of dynamic mapping for autopilot and cultural heritage applications, among others. Furthermore, standards are needed to address compression of geometry and attributes (e.g., color and reflectivity), scalable/progressive encoding, encoding of a sequence of point clouds captured over time, and random access to subsets of point clouds.

Fig. 1B shows an example of the 2D occupancy map 110. The occupancy map may be a binary 2D image, where 1 and 0 represent occupied and unoccupied pixels, respectively. Backprojection may be used to reconstruct the point cloud using the 2D occupancy map 110 and the geometric video.

According to some embodiments, a video codec compresses the geometry, motion, and texture information of the dynamic point cloud into three separate video sequences. The additional metadata (i.e., the occupancy map and the auxiliary slice information) required to interpret the three video sequences can be compressed separately. The metadata information may represent a small amount of an overall bitstream and may be efficiently encoded/decoded by using a software implementation. Most of the information can be processed by the video codec.

Fig. 2 shows an embodiment of a video codec 200. The point cloud frame is input into the patch generation unit 202 to generate a patch from the point cloud frame. After performing tile generation, the packaging unit 204 receives an output from the tile generation unit 202 to perform packaging processing on the tiles. The output of the encapsulation unit 204 is fed to a texture image generation unit 208. The texture image generation unit 208 receives the smoothed geometry from the smoothing unit 210 and outputs the texture image to the image fill 212. For example, the geometry is first reconstructed using the decompressed geometry video and the decompressed occupancy map. Geometric smoothing is applied to the resulting cloud to mitigate distortion due to video codec compression artifacts at slice boundaries. The geometric image generation unit 206 receives an input of the point cloud frame, the slice information, and an output of the encapsulation unit 204. The slice information may include information such as the slice origin and offset from the image origin, slice size, and the like. The geometric image generation 206 outputs the geometric image to the image filling unit 212. The image fill unit 212 also receives an occupancy map. The image filling unit 212 outputs the filled geometric image and the filled texture image to the video compression unit 218. The video compression unit 218 outputs the compressed geometry video and the compressed texture video to the multiplexer 220. The video compression unit 218 also feeds the reconstructed geometric image back to the smoothing unit 210. The occupancy map compression unit 214 receives the slice information and outputs a compressed occupancy map to the multiplexer 220. The auxiliary slice information compressing unit 216 receives slice information and outputs the compressed auxiliary slice information to the multiplexer 220. The multiplexer 220 outputs a compressed bitstream.

According to some embodiments, the patch generation process decomposes the point cloud into a minimum number of patches with smooth boundaries, while also minimizing reconstruction errors. The encoder may implement various methods to generate this type of decomposition.

According to some embodiments, the encapsulation process maps tiles onto a 2D grid, as shown in fig. 3. While minimizing unused space and ensuring that each M × M (e.g., 16 × 16) block of the grid is associated with a unique tile. M may be an encoder-defined parameter that is encoded in the bitstream and sent to the decoder. In fig. 3, the patch can be easily distinguished from the background. In some examples, the occupancy map is a binary image having exactly the same size as the image in fig. 3. Where any pixel belonging to a slice is set to 1 and any pixel belonging to the background is set to 0. The aforementioned occupancy map may be a full resolution map. However, for lossy compression, the full resolution occupancy map may be downsampled and then compressed. At the decoder, the occupancy map can be compressed and upsampled back to the original full resolution. However, for lossless compression, the occupancy map will be encoded using the original full resolution format.

Some models use an encapsulation strategy that iteratively attempts to insert tiles into a w × h grid. w and h may be user-defined parameters corresponding to the resolution of the geometry/texture/motion of the video image to be encoded. The slice position may be determined by an exhaustive search applied in raster scan order. A first position may be selected that ensures that tiles are inserted without overlap and the grid cells covered by the tiles are marked as used. If there is no empty space in the current resolution image to accommodate the tile, the height h of the grid may be temporarily doubled and then the search performed again. At the end of the process, h may be clipped to fit the grid cells used. For a video sequence, a process of determining w and h for the entire GOP may be used.

Furthermore, some models segment the input cloud into several slices and encapsulate the slices into two 2D images (geometry and properties) which are then compressed using High Efficiency Video Coding (HEVC). Given the specification of the ROI in the form of a 3D bounding box, a content-aware point cloud compression system is needed to implement the following functions:

1. the ROI is encoded with higher quality than other portions of the point cloud.

2. The ROI is encoded independently of the rest of the point cloud to facilitate spatial random access without full decoding.

3. Independent encoding of ROIs needs to be coordinated with any system requirements regarding independent (parallel) encoding/decoding.

4. Multiple ROIs need to be supported.

Embodiments of the present disclosure use HEVC tiles to enable content-aware point cloud compression to provide the above desirable features. Embodiments of the present disclosure provide a significant advantageous feature of running only one instance of the compression model without having to enlarge the size of the packed image.

According to some embodiments, content-aware coding is achieved by using HEVC tiles, where a given 3D ROI is projected into a tile (or tiles) and the tile is coded with higher quality. One problem with current compression models is that there is no guarantee that the 3D ROI is projected to a neighboring location. In this regard, while it is possible to fit the ROI completely to a single tile, the projection of a given ROI may span multiple tiles. In video compression systems with content awareness, when this occurs, a lower Quantization Parameter (QP) is selected for more than one tile, which can lead to performance degradation given the limited bitrate budget.

In some embodiments, to use HEVC tiles for efficient content-aware point cloud compression, a given 3D ROI is fit into as few HEVC tiles as possible. A map of tiles (e.g., a map of 2 x 2 tiles) may be preferentially provided. The ROI may be fit to one or more tiles having one or more higher priorities. After the tiles are sorted by size, they can be packed into a 2D mesh.

In some embodiments, slices are found that intersect a given ROI specified by the 3D bounding box. This resulted in two sets of tablets: slices that intersect the ROI (e.g., ROI slices) and slices that do not intersect the ROI. The ROI slice and the non-ROI slice may be encapsulated according to a slice size. For example, a first ROI slice that is larger than a second ROI slice may be given a higher priority and therefore be encapsulated before the second ROI slice to more efficiently use the available space. A condition may be specified where the 2D bounding box of the ROI tile does not extend to neighboring tiles.

FIG. 4A shows an example chip package for a "soldier" picture. The boundaries of each tile are indicated by dashed lines. Furthermore, each slice is bounded by a 2D bounding box represented by solid black lines. Here, the ROI may be selected as the soldier's head. As shown in fig. 4A, there are three ROIs, each bounded by a 2D box, and the three ROIs span three different tiles. Fig. 5A and 6A show other examples in which an ROI patch spans more than one tile after encapsulation.

According to some embodiments, the ROI and the remaining points are both considered as a separate point cloud. For example, the point cloud is divided into an ROI cloud and a non-ROI cloud. The ROI cloud includes points in the point cloud that contain the ROI. The non-ROI cloud includes points in the point cloud that do not contain the ROI. The ROI cloud and the non-ROI cloud perform a slice generation process to generate an ROI slice and a non-ROI slice, respectively. After the tile generation process, the ROI tiles are fit into as few tiles as possible. After mapping the ROI slices, the non-ROI slices are mapped to the 2D mesh. Fig. 4B, 5B, and 6B illustrate the generated 2D mesh after performing an encapsulation process on ROI and non-ROI patches resulting from separate ROI and non-ROI clouds, respectively. As shown in fig. 4B, 5B, and 6B, grouping (i.e., placing) ROI slices together into a single tile results in more efficient compression since tiles that do not contain ROI slices may be compressed at a lower rate (lower quality), thereby saving more bits for tiles that contain ROI slices.

According to some embodiments, the point cloud includes a single ROI and has a map of tiles pre-specified by system requirements. The V-PCC anchor patch generation process and encapsulation scheme will typically project a given 3D ROI over the entire 2D mesh of the projection image. This behavior of anchor generation and encapsulation does not make efficient use of HEVC tiles. For example, fig. 7 shows a point cloud where the ROI is light gray (i.e., the region within box 700). Fig. 8A shows the resulting encapsulated image in which the ROI cloud is not separated from the non-ROI cloud, and fig. 8B shows the resulting encapsulated image in which the ROI cloud is separated from the non-ROI cloud. As shown in fig. 8A, the projected ROIs are spread over the entire 2D grid, while in 8B, the projected ROIs are placed in a single tile.

In some embodiments, the point cloud is divided into an ROI cloud and a non-ROI cloud. The ROI cloud includes all ROI points in the point cloud. The non-ROI cloud includes all non-ROI points in the point cloud. Slices for ROI clouds and non-ROI clouds may be generated independently, which provides a significant advantageous feature, i.e. it may be ensured that any single slice belongs either completely to the ROI cloud or completely to the non-ROI cloud. Thus, when the slice generation process is performed independently on the ROI cloud and the non-ROI cloud, two sets of slices are produced: (1) a set of ROI slices in which all points of any ROI slice belong to a ROI cloud, and (2) a set of non-ROI slices in which all points of any non-ROI slice belong to a non-ROI cloud.

Table 1 shows an example sheet process.

TABLE 1

ROI _ patch _ metadata _ enabled _ flag indicates whether or not the ROI slice is enabled. This flag is used to indicate that the point cloud has been separated into separate ROI and non-ROI clouds.

ROI _ patch _ metadata _ present _ flag indicates whether there is any ROI(s).

number_of_roi_patches[r]Indicating the number of slices belonging to the r-th ROI. number _ of _ roi _ schedules [ r)]Should be in the range of 1 to 232Range of-1 (including 1 and 2)32-1)。

According to some embodiments, the ROI tiles are packaged into as few tiles as possible based on the map of system-specified tiles. The size of the graph of an exemplary tile may be W × H, with H rows and W columns of tiles, respectively. H line may be set to tilegrowheightarray ═ H1,h2,...,hHW column is set to tileColumWidthAlrray ═ W1,w2,...,wW(see fig. 9). FIG. 9 shows the proposed chip packaging order (i.e., as shown by the dashed lines) when the system specifies a graph of tiles. As shown in fig. 9, an example of a graph of a 4 × 6 tile is shown, where W is 4 and H is 6. For the case where there are multiple ROIs, the slice packing order remains unchanged. When the point cloud has multiple ROIs, the slice packing order may remain unchanged for the multiple ROIs.

Based on the map of tiles, the ROI slice and the non-ROI slice may be encapsulated onto the map of tiles according to the process shown in fig. 10. The process shown in fig. 10 may be performed by the video codec 200. The process may begin at step S1000, where an input cloud having p points and an ROI specified by a 3D bounding box are specified in step S1000. The point cloud of p points may be divided into ROI clouds and non-ROI clouds. The process proceeds to step S1002, and in step S1002, a plurality of ROI slices are generated. The ROI patch may be generated according to the process shown in table 1. The process proceeds to step S1004, and in step S1004, a plurality of non-ROI slices are generated. In this regard, steps S1002 and S1004 result in separate generation of a ROI slice and a non-ROI slice.

The process proceeds from step S1004 to step S1006, and in step S1006, the variable k is set to 0. The process proceeds to step S1008, and in step S1008, the variable k is incremented by 1. The process proceeds to step S1010, and in step S1010, the k-th ROI patch is packaged in order as shown in fig. 9. The process proceeds to step S1012, and in step S1012, it is determined whether k is equal to the number of ROI slices. If k is not equal to the number of ROI slices, then processing returns from step 1012 to step 1008. Thus, steps S1006 to S1012 result in encapsulation of each ROI slice.

If k is equal to the number of ROI slices, the process proceeds to step S1014, where k is set to 0 in step S1014. The process proceeds to step S1016, and k is increased by 1 in step S1016. The process proceeds to step S1018, and in step S1018, the k-th non-ROI slice is packaged into a blank space. The process proceeds to step S1020, and in step S1020, it is determined whether k is equal to the number of non-ROI slices. If k is not equal to the number of non-ROI slices, the process returns from step S1020 to step S1016. Thus, steps S1014 to S1020 result in encapsulation of each non-ROI slice. If k is equal to the number of non-ROI slices, the process shown in FIG. 10 ends. Although the process illustrated in fig. 10 is performed for a single ROI, when the point cloud has a plurality of ROIs, steps S1002 to S1012 may be performed for each ROI included in the point cloud.

According to some embodiments, the ROI cloud is or is divided into several smaller sub-clouds, which may be referred to as chunking. For example, when the ROI cloud is determined to be larger than the tile, the ROI cloud is divided into smaller tiles. In some embodiments, the tile generation process is performed independently on each tile. The blocking generates smaller ROI patches, improving the encapsulation effect so that more space in the 2D mesh is filled by the projected ROI cloud.

In some embodiments, the ROI cloud is divided into tiles based on finding a feature vector of the ROI cloud and performing the tiling along an axis corresponding to the feature vector. In another embodiment, the blocking is performed based on finding a bounding box of the ROI point in the ROI cloud and finding the longest axis of the bounding box, along which the blocking may be performed. For example, referring to fig. 1B, the blocking may be performed in a direction along the longest axis of the bounding box. In another embodiment, the chunking may be performed along one, two, or all three axes of the bounding box. The chunking may be performed uniformly or non-uniformly based on criteria (e.g., local density of dots). For example, regions of ROI clouds with higher dot densities may be divided into smaller tiles than regions of ROI clouds with lower dot densities. Furthermore, one or more of the above embodiments may be combined. For example, the chunking may be performed uniformly or non-uniformly along the longest axis of the bounding box based on certain criteria.

FIG. 11 illustrates an embodiment of a process to perform encapsulation on ROI clouds divided into tiles. The process shown in fig. 11 may be performed by the video codec 200. The process may start at step S1100, where an input cloud of p points and an ROI specified by a 3D bounding box are specified in step S1100. The process may proceed to step S1102, and in step S1102, the ROI is divided into a plurality of partitions (C). The ROI may be partitioned when it is determined that the ROI cannot fit to the HEVC tile.

The process proceeds to step S1104, and in step S1104, an ROI slice is generated for each tile, and the variable c is set to 0. The ROI slice for each partition may be implemented according to the process shown in table 1. The process proceeds to step S1106, and in step S1106, the variable c is incremented by 1, and the variable k is set to 0. Steps S1108, S1110, and S1112 are performed in the same manner as steps S1008, S1010, and S1012, respectively. In step S1112, if k is equal to the number of slices of the C-th block, the process proceeds to step S1114, and in step S1114, it is determined whether C is equal to the number of blocks (C). Thus, steps S1106 to S1114 result in performing encapsulation for each ROI slice in each tile.

If C is equal to the number of blocks (C), the process proceeds from step S1114 to step S116. Steps S1116, S1118, S1120, and S1122 are performed in the same manner as described in steps S1014, S1016, S1018, and S1020, respectively. After step S1122 is executed, the process shown in fig. 11 ends. Although the process illustrated in fig. 11 is performed for a single ROI, when the point cloud has a plurality of ROIs, steps S1102 to S1114 may be performed for each ROI included in the point cloud.

According to some embodiments, the system does not specify a graph of tiles. In this respect, the diagram of the tiles is not fixed and can be designed flexibly. When the system does not specify a map of tiles, as described above, the point cloud may still be divided into ROI clouds and non-ROI clouds, with slice generation performed independently for each individual cloud.

When there is a single ROI, the map of tiles may include one horizontal tile that encompasses all ROI slices, and another horizontal tile that encompasses all non-ROI slices. Each horizontal tile may span the width of the image and be stacked on top of each other. In another example, when there is a single ROI, one tile may encompass all ROI tiles, while another tile may encompass all non-ROI tiles, where the tiles are connected together and the length of the connected tiles spans the width of the image.

Fig. 12 shows an embodiment in which ROI tiles and non-ROI tiles are encapsulated onto a 2D mesh of an unspecified tile map. As shown in fig. 12, all the steps of the process shown in fig. 10 are included. Further, if it is determined in step S1012 that all ROI slices have been encapsulated (i.e., k-N)ROI) Then the process proceeds to step S1200 to set the bottom tile boundary to the maximum height of the ROI slice bounding box. In this regard, in step S1200, the size of the tile containing all ROI patches may be set such that the tile includes all ROI patches. Further, if it is determined in step S1020 that all non-ROI slices have been packaged (i.e., k-N)non-ROI) The process proceeds to step S1202 where it is determined whether additional tiles need to be added to the 2D mesh in step S1202. For example, when a graph of tiles is not specified, the graph of tiles may be designed to efficiently use the available space. The graph design of efficient tiles may be a graph of 2 x 1 tiles, with the top tile including an ROI slice and the bottom tile having a non-ROI slice (e.g., the design shown in fig. 12). To further benefit from the design flexibility available, the ROI tiles may be packaged into tiles having the smallest size possible. In this case, if the ROI tile does not span the entire width of the canvas, a vertical line may be placed immediately after the rightmost ROI tile to create one additional tile on the right side, which is empty. The advantage of this approach is better compression efficiency, since the texture/geometry image is background filled with redundant information and background filling of the empty tile is avoided when each tile is encoded/decoded independently. If it is determined that additional tiles need to be added to the 2D mesh, the process proceeds to step S1204, in step S1204, the maximum bounding box width of the ROI patch is derived, and the vertical tiles are placed at the derived bounding box. Although the process illustrated in fig. 12 is performed for a single ROI, when the point cloud has a plurality of ROIs, steps S1102 to S1012 and S1200 may be performed for each ROI included in the point cloud.

FIG. 13 shows an embodiment in which ROI tiling is performed and no tile is specified. As shown in fig. 13, all the steps of the process shown in fig. 11 are included. Further, fig. 13 includes steps S1300 and S1304, which are performed in the same manner as steps S1200 and S1204, respectively, as described above. Although the process illustrated in fig. 11 is performed for a single ROI, when the point cloud has a plurality of ROIs, steps S1102 to S1114 and step S1300 may be performed for each ROI included in the point cloud.

In some embodiments, to support the random access feature for a single ROI, the index of the ROI slice is sent to the decoder such that the decoder only decodes the ROI slice to reconstruct the ROI cloud. Using the index of the ROI slice, the decoder can determine the tiles populated by the ROI slice and decode only those tiles. Instead of an index, a flag is encoded for each slice to indicate whether the slice is a ROI slice or a non-ROI slice. As another alternative, the index of the ROI slices is changed to [0, number of ROI slices-1 ], where only the "number of ROI slices" is sent to the decoder, which knows that the first "number of ROI slices" slices are all ROI slices, and reconstructs the ROI cloud by decoding these slices.

According to some embodiments, the point cloud may include a plurality of ROIs. When multiple ROIs are included in the point cloud, rather than creating only one set of ROI patches, multiple sets of ROI patches may be created (e.g., one set of ROI patches per ROI cloud). When a graph of tiles is designated, the groups may be packed group by group according to the process shown in fig. 10, or when a graph of tiles is not designated, the groups may be packed group by group according to the process shown in fig. 12. When a map of tiles is designated, the tiles may be applied to each ROI cloud and packaged according to the process shown in fig. 11, or when a map of tiles is not designated, the tiles may be applied to each ROI cloud and packaged according to the process shown in fig. 13.

Fig. 14A shows an embodiment in which each ROI of multiple ROIs is placed in a tile across the width of the image. Fig. 14B shows an embodiment in which each ROI is placed in vertically stacked tiles and the white space is divided into additional tiles. The tile boundaries in fig. 14A and 14B are depicted in dashed lines.

According to some embodiments, in order to support random access features for multiple ROIs, the indices of the ROI slices are modified. Slices of ROI #1 may be indexed by [0, number of slices of ROI # 1], slices of ROI #2 may be indexed by [ number of slices of ROI #1, number of slices of ROI #1 + number of slices of ROI # 2-1 ], and so on. The number of slices per ROI may be sent only to the decoder, where the decoder may determine the slice index of a particular ROI and reconstruct the ROI accordingly.

In an exemplary decoding process, an integer array indicating the number of slices per ROI may be specified as an integer array as shown below:

A=[n_0,n_1,n_2,…,n_(R-1)],

where n _ r indicates the number of slices for the r-th ROI.

The decoder knows that the slice index of the r-th ROI is in the following range:

B=[n_0+n_1+…+n_(r-1)-1,n_0+n_1+…+n_r-1]。

thus, in some embodiments, to decode the r-th ROI, the decoder only needs to decode slices with indices given in range B.

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. 15 illustrates a computer system (1500) suitable for implementing certain embodiments of the disclosed subject matter.

The computer software may be encoded using any suitable machine code or computer language, which may be compiled, linked, or otherwise processed to create code comprising instructions that may be executed directly or by interpretation, microcode, or the like. E.g., by one or more computer Central Processing Units (CPUs), Graphics Processing Units (GPUs), etc.

The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smart phones, gaming devices, internet of things devices, and so forth.

The components of computer system (1500) shown in FIG. 15 are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. Neither should the configuration of the components be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary embodiments of the computer system (1500).

The computer system (1500) may include some human interface input devices. Such human interface input devices may be responsive to input by one or more human users, for example by: tactile input (e.g., keystrokes, strokes, data glove movements), audio input (e.g., voice, clapping hands), visual input (e.g., gestures), olfactory input (not depicted). The human interface device may also be used to capture certain media that are not necessarily directly related to human conscious input, such as audio (e.g., voice, music, ambient sounds), images (e.g., scanned images, captured images from a still image camera), video (e.g., two-dimensional video, three-dimensional video including stereoscopic video), and so forth.

The input human interface device may comprise one or more of the following (only one of each shown): keyboard (1501), mouse (1502), touch pad (1503), touch screen (1510), data glove (not shown), joystick (1505), microphone (1506), scanner (1507), camera (1508).

The computer system (1500) may also include some human interface output devices. Such human interface output devices may stimulate one or more human user's senses, for example, through tactile output, sound, light, and smell/taste. Such human interface output devices may include tactile output devices (e.g., touch screen (1510), data glove (not shown), or tactile feedback from joystick (1505), but may also be tactile feedback devices that do not act as input devices), audio output devices (e.g., speakers (1509), headphones (not shown)), visual output devices (e.g., screens (1510) including CRT screens, LCD screens, plasma screens, OLED screens, each with or without touch screen input functionality, each with or without tactile feedback functionality), some of which are capable of outputting two-dimensional or more than three-dimensional visual output through devices such as stereoscopic image output, virtual reality glasses (not depicted), holographic displays and smoke boxes (not depicted), and printers (not depicted).

The computer system (1500) may also include human-accessible storage devices and their associated media: such as optical media including CD/DVD ROM/RW (1520) with CD/DVD like media (1521), finger drives (1522), removable hard drives or solid state drives (1523), conventional magnetic media (not shown) such as tapes and floppy disks, dedicated ROM/ASIC/PLD based devices (not shown) such as security dongle, and so forth.

Those skilled in the art will also appreciate that the term "computer-readable medium" used in connection with the presently disclosed subject matter does not encompass transmission media, carrier waves, or other transitory signals.

The computer system (1500) may also include an interface to one or more communication networks. The network may be, for example, a wireless network, a wired network, an optical network. The network may further be a local network, a wide area network, a metropolitan area network, a vehicle and industrial network, a real time network, a delay tolerant network, etc. Examples of networks include local area networks such as ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., television wired or wireless wide area digital networks including cable television, satellite television, and terrestrial broadcast television, automotive and industrial television including CANBus, and so forth. Certain networks typically require external network interface adapters (e.g., USB ports of computer system (1500)) that connect to certain universal data ports or peripheral buses (1549); as described below, other network interfaces are typically integrated into the core of the computer system (1500) by connecting to a system bus (e.g., connecting to an Ethernet interface in a PC computer system or to a cellular network interface in a smartphone computer system). Computer system (1500) may communicate with other entities using any of these networks. Such communications may be received only one way (e.g., broadcast television), transmitted only one way (e.g., CANbus connected to certain CANbus devices), or bi-directional, e.g., connected to other computer systems using a local or wide area network digital network. As described above, certain protocols and protocol stacks may be used on each of those networks and network interfaces.

The human interface device, human-accessible storage device, and network interface described above may be attached to the kernel 1540 of the computer system 1500.

The core (1540) may include one or more Central Processing Units (CPUs) (1541), Graphics Processing Units (GPUs) (1542), special purpose programmable processing units in the form of Field Programmable Gate Arrays (FPGAs) (1543), hardware accelerators (1544) for certain tasks, and so forth. These devices, as well as Read Only Memory (ROM) (1545), random access memory (1546), internal mass storage (1547), such as internal non-user accessible hard drives, SSDs, etc., may be connected by a system bus (1548). In some computer systems, the system bus (1548) may be accessed in the form of one or more physical plugs to enable expansion by additional CPUs, GPUs, and the like. The peripheral devices may be connected directly to the system bus (1548) of the core or through a peripheral bus (1549). The architecture of the peripheral bus includes PCI, USB, etc.

The CPU (1541), GPU (1542), FPGA (1543) and accelerator (1544) may execute certain instructions, which may be combined to make up the computer code described above. The computer code may be stored in ROM (1545) or RAM (1546). Transitional data may also be stored in RAM (1546), while persistent data may be stored, for example, in internal mass storage (1547). Fast storage and retrieval to any storage device may be done by using a cache, which may be closely associated with: one or more CPUs (1541), GPUs (1542), mass storage (1547), ROMs (1545), RAMs (1546), and the like.

The computer-readable medium may have thereon computer code for performing various computer-implemented operations. The media 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 having skill in the computer software arts.

By way of non-limiting example, a computer system having an architecture (1500), and in particular a core (1540), may provide functionality as a result of one or more processors (including CPUs, GPUs, FPGAs, accelerators, etc.) executing software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with user-accessible mass storage as described above, as well as some non-transitory memory of the kernel (1540), such as kernel internal mass storage (1547) or ROM (1545). Software implementing various embodiments of the present disclosure may be stored in such devices and executed by the kernel 1540. The computer readable medium may include one or more memory devices or chips, according to particular needs. The software may cause the core (1540), and in particular the processors therein (including CPUs, GPUs, FPGAs, etc.), to perform certain processes or certain portions of certain processes described herein, including defining data structures stored in RAM (1546) and modifying such data structures according to processes defined by the software. Additionally or alternatively, the functionality provided by the computer system may be caused by logic hardwired or otherwise embodied in circuitry (e.g., accelerator (1544)) that may operate in place of or in conjunction with software to perform certain processes or certain portions of certain processes described herein. Where appropriate, reference to portions of software may encompass logic and vice versa. Where appropriate, reference to portions of a computer-readable medium may include circuitry (e.g., an Integrated Circuit (IC)) that stores software for execution, circuitry that embodies logic for execution, or both. The present disclosure includes any suitable combination of hardware and software.

While this disclosure has described several exemplary embodiments, there are alterations, permutations, and various substitute equivalents, which fall within the scope of this disclosure. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods which, although not explicitly shown or described herein, embody the principles of the disclosure and are thus within the spirit and scope of the disclosure.

(1) A method performed by a video encoder, comprising: receiving a data cloud comprising a plurality of data points representing a three-dimensional (3D) space; identifying each data point comprising a region of interest (ROI) associated with the data cloud; dividing the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud comprising data points that each include the ROI; performing a slice generation process on the ROI cloud, the slice generation process comprising generating an ROI slice from the each data point comprising the ROI; and performing a tile encapsulation process on the ROI cloud, the tile encapsulation process comprising: (i) mapping each ROI slice to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map, (ii) determining whether at least two ROI slices of the plurality of ROI slices are located in more than one tile, and (iii) moving each of the ROI slices from the plurality of tiles to one tile in response to determining that the at least two ROI slices are located in more than one tile.

(2) The method according to feature (1), further comprising: performing a tile generation process on each non-ROI cloud, the tile generation process comprising creating a non-ROI tile for each data point that does not include an ROI, and performing a tile encapsulation process on each non-ROI cloud, the tile encapsulation process comprising mapping each of the non-ROI tiles to one or more empty spaces in the two-dimensional map that do not include the ROI tile.

(3) The method according to feature (1) or (2), wherein the slice encapsulation processing for the ROI cloud and the slice encapsulation processing for each non-ROI cloud are performed in parallel.

(4) The method according to feature (2) or (3), further comprising: compressing the tile containing each of the ROI slices according to a first compression rate; and compressing respective tiles of the plurality of tiles that do not contain the ROI patch according to a second compression rate higher than the first compression rate.

(5) The method according to any one of the features (1) to (4), further comprising: determining whether the ROI is larger than each tile included in the 2D map; and in response to determining that the ROI is larger than each tile included in the 2D map, dividing the ROI cloud into one or more sub-ROI clouds, wherein the tile generation process and the tile encapsulation process are performed on each of the one or more sub-ROI clouds.

The method of feature (5), wherein the slice encapsulation process is performed in parallel on the one or more sub-ROI clouds

(7) The method according to any one of the features (1) to (6), further comprising: determining whether the video encoder specifies a size of each tile in the 2D map; and in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a height of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

(8) The method according to feature (7), further comprising: in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a width of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

(9) The method of any of features (2) to (8), wherein the data cloud includes a plurality of ROIs, the data cloud is divided into a plurality of ROI clouds, each ROI cloud corresponds to a respective ROI, and the slice generation process and the slice encapsulation process are performed on each ROI cloud.

(10) The method of feature (9), wherein the tile encapsulation process performed on each ROI cloud causes each ROI to be mapped to a different tile in the 2D map.

(11) A video encoder comprising processing circuitry configured to: receiving a data cloud comprising a plurality of data points representing a three-dimensional (3D) space; identifying each data point comprising a region of interest (ROI) associated with the data cloud; dividing the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud comprising data points that each include an ROI; performing a slice generation process on the ROI cloud, the slice generation process comprising generating an ROI slice from the each ROI-comprising data point; and performing a tile encapsulation process on the ROI cloud, the tile encapsulation process comprising: (i) mapping each ROI slice to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map, (ii) determining whether at least two ROI slices of the plurality of ROI slices are located in more than one tile, and (iii) moving each of the ROI slices from the plurality of tiles to one tile in response to determining that at least two ROI slices are located in more than one tile.

(12) The video encoder of feature (11), wherein the processing circuit is further configured to: performing a tile generation process on each non-ROI cloud, the tile generation process comprising creating a non-ROI tile for each data point that does not include an ROI, and performing a tile encapsulation process on each non-ROI cloud, the tile encapsulation process comprising mapping each of the non-ROI tiles to one or more empty spaces in the two-dimensional map that do not include the ROI tile.

(13) The video encoder according to feature (11) or (12), wherein the slice encapsulation processing for the ROI cloud and the slice encapsulation processing for each non-ROI cloud are performed in parallel.

(14) The video encoder of feature (12) or (13), wherein the processing circuit is further configured to: compressing the tile containing each of the ROI slices according to a first compression rate; and compressing respective tiles of the plurality of tiles that do not contain the ROI patch according to a second compression rate higher than the first compression rate.

(15) The video encoder of any of the features (11) to (14), wherein the processing circuit is further configured to: determining whether the ROI is larger than each tile included in the 2D map; and in response to determining that the ROI is larger than each tile included in the 2D map, dividing the ROI cloud into one or more sub-ROI clouds, wherein the tile generation process and the tile encapsulation process are performed on each of the one or more sub-ROI clouds.

(16) The video encoder of feature (15), wherein the slice encapsulation process is performed in parallel on the one or more sub-ROI clouds.

(17) The video encoder of any of features (11) to (16), wherein the processing circuitry is further configured to: determining whether the video encoder specifies a size of each tile in the 2D map; and in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a height of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

(18) The video encoder of feature (17), wherein the processing circuit is further configured to: in response to determining that the video encoder does not specify a size of each tile in the 2D picture, setting a width of the tile including the ROI slice such that the ROI slice is bounded by the tile including the ROI slice.

(19) The video encoder of any of the features (12) to (18), wherein the data cloud comprises a plurality of ROIs, the data cloud is divided into a plurality of ROI clouds, each ROI cloud corresponds to a respective ROI, and the slice generation process and the slice encapsulation process are performed on each ROI cloud. .

(20) A non-transitory computer-readable medium storing instructions that, when executed by a processor in a video encoder, cause the processor to perform a method comprising: receiving a data cloud comprising a plurality of data points representing a three-dimensional (3D) space; identifying each data point comprising a region of interest (ROI) associated with the data cloud; dividing the data cloud into an ROI cloud and one or more non-ROI clouds, the ROI cloud comprising data points that each include the ROI; performing a slice generation process on the ROI cloud, the slice generation process comprising generating an ROI slice from the each data point comprising the ROI; and performing a tile encapsulation process on the ROI cloud, the tile encapsulation process comprising: (i) mapping each ROI slice to a two-dimensional (2D) map, the 2D map comprising a plurality of tiles arranged as a grid in the 2D map, (ii) determining whether at least two ROI slices of the plurality of ROI slices are located in more than one tile, and (iii) moving each of the ROI slices from the plurality of tiles to one tile in response to determining that the at least two ROI slices are located in more than one tile.

31页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:使用图块上进行的循环以信号传送的图片图块属性

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类