CN116156192A - 用于点云数据的点云块数据单元编码和解码 - Google Patents
用于点云数据的点云块数据单元编码和解码 Download PDFInfo
- Publication number
- CN116156192A CN116156192A CN202310092091.5A CN202310092091A CN116156192A CN 116156192 A CN116156192 A CN 116156192A CN 202310092091 A CN202310092091 A CN 202310092091A CN 116156192 A CN116156192 A CN 116156192A
- Authority
- CN
- China
- Prior art keywords
- point cloud
- block
- cloud block
- type
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/597—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/08—Volume rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/537—Motion estimation other than block-based
- H04N19/54—Motion estimation other than block-based using feature points or meshes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Communication Control (AREA)
Abstract
一种点云解码(PCC)的方法,包括:接收已编码点云块信息数据;获得与已编码点云块信息数据对应的点云块,该点云块具有点云块类型;确定点云块的点云块类型是否是末尾点云块类型;以及当点云块类型为末尾点云块类型时,终止与已编码点云块信息数据对应的重建过程。另一种方法包括相同的接收步骤和获得步骤,但是确定点云块的点云块类型是否为跳过点云块类型;当点云块类型为跳过点云块类型时,对与点云块对应的参考点云块索引进行解码;当点云块类型为跳过点云块类型时,基于与点云块对应的参考帧索引和解码的参考点云块索引确定点云块的参考索引;以及重建点云块的体积表示。
Description
本申请是分案申请,原申请的申请号是202080020566.4,原申请日是2020年03月12日,原申请的全部内容通过引用结合在本申请中。
技术领域
本公开内容一般涉及点云译码,并且具体涉及用于点云译码的高级语法。
背景技术
点云被应用于各种应用,包括娱乐行业、智能汽车导航、地理空间检查、真实世界对象的三维(three dimensional,3D)建模、可视化等。考虑到点云的非均匀采样几何形状,用于存储和传输这样的数据的紧凑表示是有用的。与其他3D演示相比,不规则点云更通用,并且适用于更广泛的传感器和数据采集策略。例如,当在虚拟现实世界中执行3D演示或在远程呈现环境中执行远程渲染时,虚拟人物的渲染和实时指令被处理为密集点云数据集。
发明内容
第一方面涉及一种由解码器实现的点云解码(point cloud coding,PCC)的方法。该方法包括:由解码器的接收器接收已编码点云块信息数据;由解码器的处理器获得与已编码点云块信息数据对应的点云块,该点云块具有点云块类型(patch_mode);由处理器确定点云块的点云块类型是否为末尾点云块类型;以及当点云块类型为末尾点云块类型时,由处理器终止与已编码点云块信息数据对应的重建过程。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(skip patch data unit type,spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(pulse coded modulation,PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
第二方面涉及一种由解码器实现的点云解码(PCC)的方法。该方法包括:由解码器的接收器接收已编码点云块信息数据;由解码器的处理器获得与已编码点云块信息数据对应的点云块,该点云块具有点云块类型(patch_mode);由处理器确定点云块的点云块类型是否为跳过点云块类型;当点云块类型为跳过点云块类型时,由处理器对与点云块对应的参考点云块索引(spdu_patch_index)进行解码;当点云块类型为跳过点云块类型时,由处理器基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引,确定点云块的参考索引(refIdx);以及当点云块类型为跳过点云块类型时,由处理器基于确定的参考索引来重建点云块的体积表示。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
在根据第二方面本身的方法的第一实现形式中,该方法还包括:确定点云块的点云块类型为帧内点云块类型;基于与点云块对应的帧索引([frmIdx])和递减的点云块索引确定点云块的参考索引(refIdx);使用与点云块对应的二维(two dimensional,2D)分量和与点云块对应的三维(3D)分量来对点云块进行解码;以及基于解码的点云块来重建体积表示。
在根据第二方面本身或第二方面的任何前述实现形式的方法的第二实现形式中,该方法还包括:确定点云块的点云块类型是帧间点云块类型;对与点云块对应的第二参考点云块索引(dpdu_patch_index)进行解码;基于与点云块对应的参考帧索引([refFrmIdx])和解码的第二参考点云块索引,确定点云块的参考索引(refIdx);使用与点云块对应的二维(2D)分量和与点云块对应的三维(3D)分量来对点云块进行解码;以及基于解码的点云块重建体积表示。
在根据第二方面本身或第二方面的任何前述实现形式的方法的第三实现形式中,该方法还包括:确定点云块的点云块类型是脉冲编码调制(PCM)点云块类型;基于与点云块对应的帧索引([frmIdx])和递减的点云块索引确定点云块的参考索引(refIdx);使用与点云块对应的关于独立点的二维(2D)分量和与点云块对应的关于独立点的三维(3D)分量来对点云块进行解码;以及基于解码的点云块重建体积表示。
在根据第二方面本身或第二方面的任何前述实现形式的方法的第四实现形式中,该方法还包括:接收与已编码点云块信息数据对应的输入,其中,该输入包括点云块模式、点云块索引、参考索引、帧索引和参考帧索引中的一者或更多者。
在根据第二方面本身或第二方面的任何前述实现形式的方法的第四实现形式中,该方法还包括:在电子设备的显示器上显示基于重建的体积表示生成的图像。
第三方面涉及一种由解码器实现的点云解码(PCC)的方法。该方法包括:由解码器的接收器接收已编码点云块信息数据;由解码器的处理器获得与已编码点云块信息数据对应的点云块,该点云块具有点云块类型(patch_mode);由处理器确定点云块的点云块类型是否为跳过点云块类型;当点云块类型为跳过点云块类型时,由处理器对与点云块对应的参考点云块索引(spdu_patch_index)进行解码;当点云块类型为跳过点云块类型时,由处理器基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引,确定点云块的参考索引(refIdx);当点云块类型为跳过点云块类型时,由处理器基于确定的参考索引来重建点云块的体积表示;由处理器确定更多点云块可用标志是具有第一值还是第二值;当更多点云块可用标志具有第一值时,在解码器的存储器中存储重建的体积表示;以及当更多点云块可用标志具有第二值时,由处理器终止已编码点云块信息数据的重建过程。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
在根据第三方面本身的方法的第一实现形式中,该方法还包括:确定点云块的点云块类型为帧内点云块类型;基于与点云块对应的帧索引([frmIdx])和递减的点云块索引确定点云块的参考索引(refIdx);使用与点云块对应的二维(2D)分量和与点云块对应的三维(3D)分量来对点云块进行解码;以及基于解码的点云块来重建体积表示。
在根据第三方面本身的方法的第二实现形式中,该方法还包括:确定点云块的点云块类型为帧间点云块类型;对与点云块对应的第二参考点云块索引(dpdu_patch_index)进行解码;基于与点云块对应的参考帧索引([refFrmIdx])和解码的第二参考点云块索引,确定点云块的参考索引(refIdx);使用与点云块对应的二维(2D)分量和与点云块对应的三维(3D)分量来对点云块进行解码;以及基于解码的点云块来重建体积表示。
在根据第三方面本身的方法的第三实现形式中,该方法还包括:确定点云块的点云块类型是脉冲编码调制(PCM)点云块类型;基于与点云块对应的帧索引([frmIdx])和递减的点云块索引来确定点云块的参考索引(refIdx);使用与点云块对应的关于独立点的二维(2D)分量和与点云块对应的关于独立点的三维(3D)分量来对点云块进行解码;以及基于解码的点云块来重建体积表示。
在根据第三方面本身的方法的第四实现形式中,该方法还包括:接收与已编码点云块信息数据对应的输入,其中,该输入包括点云块模式、点云块索引、参考索引、帧索引和参考帧索引中的一者或更多者。
在根据第三方面本身的方法的第五实现形式中,该方法还包括:在电子设备的显示器上显示基于重建的体积表示生成的图像。
第四方面涉及一种由编码器实现的点云编码(PCC)的方法。该方法包括:由编码器的接收器获得点云块帧数据单元(pfdu),该点云块帧数据单元用于标识多个点云块中的每一个的点云块类型(pdfu_patch_mode);由编码器的处理器确定来自多个点云块的点云块的点云块类型是否为末尾点云块类型;当点云块类型不是末尾点云块类型时,由编码器的处理器对点云块的点云块信息数据进行编码,该点云块信息数据包括点云块的点云块类型;以及当点云块类型被设置为末尾点云块类型时,由编码器的处理器对点云块的点云块信息数据进行编码,该点云块信息数据包括点云块的末尾点云块类型。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
在根据第四方面本身的方法的第一实现形式中,点云块类型是跳过点云块类型、帧间点云块类型、帧内点云块类型和脉冲编码调制(PCM)点云块类型之一。
在根据第四方面本身的方法的第二实现形式中,点云块帧数据单元包括帧索引(frmIdx)、与点云块对应的二维(2D)分量和与点云块对应的三维(3D)分量。
在根据第四方面本身的方法的第三实现形式中,点云块信息数据包括帧索引、与点云块对应的二维(2D)分量和与点云块对应的三维(3D)分量。
在根据第四方面本身的方法的第四实现形式中,该方法还包括对以下步骤进行迭代:确定点云块类型是否是末尾点云块类型;以及对来自多个点云块的后续点云块的点云块信息数据进行编码,直到来自多个点云块的点云块之一被确定为具有末尾点云块类型。
在根据第四方面本身的方法的第五实现形式中,该方法还包括:在所有点云块信息数据已经被编码之后执行字节对齐。
在根据第四方面本身的方法的第六实现形式中,该方法还包括:在所有点云块信息数据已经被编码之后生成压缩的点云块帧数据单元。
在根据第四方面本身的方法的第七实现形式中,该方法还包括:在编码器的存储器中存储压缩的点云块帧数据单元以用于向解码器传输。
第五方面涉及一种由编码器实现的点云编码(PCC)的方法。该方法包括:由编码器的接收器获得多个点云块中的每一个的点云块帧数据单元(patch frame data unit,pfdu);由编码器的处理器向多个点云块中的每一个添加末尾点云块标志;由编码器的处理器基于末尾点云块标志的值,确定来自多个点云块的点云块的点云块类型是否为末尾点云块类型;以及当点云块类型不是末尾点云块类型时,由编码器的处理器对点云块的点云块信息数据进行编码,该点云块信息数据包括点云块的点云块类型和末尾点云块标志。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
在根据第五方面本身的方法的第一实现形式中,点云块类型是跳过点云块类型、帧间点云块类型、帧内点云块类型和脉冲编码调制(PCM)点云块类型之一。
在根据第五方面本身的方法的第二实现形式中,点云块帧数据单元包括帧索引(frmIdx)、与点云块对应的二维(2D)分量和与点云块对应的三维(3D)分量。
在根据第五方面本身的方法的第三实现形式中,点云块信息数据包括帧索引、与点云块对应的二维(2D)分量和与点云块对应的三维(3D)分量。
在根据第五方面本身的方法的第四实现形式中,该方法还包括对以下步骤进行迭代:基于末尾点云块标志的值确定点云块类型是否为末尾点云块类型;以及对来自多个点云块的后续点云块的点云块信息数据进行编码,直到基于末尾点云块标志的值确定来自多个点云块的点云块之一具有末尾点云块类型。
在根据第五方面本身的方法的第五实现形式中,该方法还包括:在基于末尾点云块标志的值确定来自多个点云块的点云块之一具有末尾点云块类型之后执行字节对齐。
在根据第五方面本身的方法的第六实现形式中,该方法还包括:在所有点云块信息数据已经被编码之后生成压缩的点云块帧数据单元。
在根据第五方面本身的方法的第七实现形式中,该方法还包括:在编码器的存储器中存储压缩的点云块帧数据单元以用于向解码器传输。
第六方面涉及一种解码设备,其包括:被配置成接收已编码点云块信息的接收器;耦合至接收器的存储器,该存储器存储指令;以及耦合至存储器的处理器,该处理器被配置成执行指令以使解码设备进行以下操作:获得与已编码点云块信息数据对应的点云块,该点云块具有点云块类型(patch_mode);确定点云块的点云块类型是否为末尾点云块类型;当点云块类型为末尾点云块类型时,终止与已编码点云块信息数据对应的重建过程。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
第七方面涉及一种解码设备,其包括:被配置成接收已编码点云块信息的接收器;耦合至接收器的存储器,该存储器存储指令;以及耦合至存储器的处理器,该处理器被配置成执行指令以使解码设备进行以下操作:获得与已编码点云块信息数据对应的点云块,该点云块具有点云块类型(patch_mode);确定点云块的点云块类型是否为跳过点云块类型;当点云块类型为跳过点云块类型时,对与点云块对应的参考点云块索引(spdu_patch_index)进行解码;当点云块类型为跳过点云块类型时,基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引,确定点云块的参考索引(refIdx);以及当点云块类型为跳过点云块类型时,基于确定的参考索引来重建点云块的体积表示。
使用这种解码设备允许对点云块缓冲区中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块缓冲区中。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或完全匹配时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的列表进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块缓冲区中的点云块的整个列表。另外,译码技术消除了用信号通知点云块缓冲区中的点云块总数(例如,点云块缓冲区的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块缓冲区的末尾。因此,相对于当前的编解码器,视频译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的视频译码过程可以增强译码效率,这在发送、接收和/或查看视频时为用户提供更好的用户体验。
第八方面涉及一种解码设备,其包括:被配置成接收已编码点云块信息的接收器;耦合至接收器的存储器,该存储器存储指令;以及耦合至存储器的处理器,该处理器被配置成执行指令以使解码设备进行以下操作:获得与已编码点云块信息数据对应的点云块,该点云块具有点云块类型(patch_mode);确定点云块的点云块类型是否为跳过点云块类型;当点云块类型为跳过点云块类型时,对与点云块对应的参考点云块索引(spdu_patch_index)进行解码;当点云块类型为跳过点云块类型时,基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引,确定点云块的参考索引(refIdx);当点云块类型为跳过点云块类型时,基于确定的参考索引来重建点云块的体积表示;确定更多点云块可用标志是具有第一值还是第二值;当更多点云块可用标志具有第一值时,将重建的体积表示存储在存储器中;以及当更多点云块可用标志具有第二值时,终止已编码点云块信息数据的重建过程。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
在根据第六、第七和第八方面本身的解码设备的第一实现形式中,解码设备还包括显示器,该显示器被配置成显示基于重建的体积表示生成的图像。
第九方面涉及一种编码设备,包括:被配置成接收三维(3D)图像的接收器;耦合至接收器的存储器,该存储器包含指令;耦合至存储器的处理器,该处理器被配置成执行指令以使编码设备进行以下操作:获得点云块帧数据单元(pfdu),该点云块帧数据单元用于多个点云块中的每一个的点云块类型(pdfu_patch_mode)的;确定来自多个点云块的点云块的点云块类型是否为末尾点云块类型;当点云块类型不是末尾点云块类型时,对点云块的点云块信息数据进行编码,点云块信息数据包括该点云块的点云块类型;以及当点云块类型被设置为末尾点云块类型时,对点云块的点云块信息数据进行编码,点云块信息数据包括该点云块的末尾点云块类型。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
第十方面涉及一种编码设备,包括:被配置成接收三维(3D)图像的接收器;耦合至接收器的存储器,该存储器包含指令;耦合至存储器的处理器,该处理器被配置成执行指令以使编码设备进行以下操作:获得多个点云块中的每一个的点云块帧数据单元(pfdu);向多个点云块中的每一个添加末尾点云块标志;基于末尾点云块标志的值,确定来自多个点云块的点云块的点云块类型是否为末尾点云块类型;以及当点云块类型不是末尾点云块类型时,对点云块的点云块信息数据进行编码,点云块信息数据包括点云块的点云块类型和末尾点云块标志。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
在根据第九和第十方面本身的编码设备的第一实现形式中,编码设备还包括耦合至处理器的发送器,该发送器被配置成向解码器发送具有编码的点云块信息数据的比特流。
第十一方面涉及一种译码装备,包括:被配置成接收要编码的体积图片或接收要解码的比特流的接收器;耦合至接收器的发送器,该发送器被配置成将比特流发送至解码器或将已解码体积图像发送至被配置成重建已解码体积图片的重建设备;耦合至接收器或发送器中的至少一个的存储器,该存储器被配置成存储指令;以及耦合至存储器的处理器,该处理器被配置成执行存储器中存储的指令以执行本文中公开的方法中的任何方法。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
在根据第十一方面本身的译码装备的第一实现形式中,译码装备还包括显示器,该显示器被配置成显示基于重建的点云块的图像。
第十二方面涉及一种系统,包括:编码器;以及与编码器进行通信的解码器,其中,编码器或解码器包括本文中描述的编码设备、解码设备或译码装备。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
第十三方面涉及一种用于译码的装置,包括:接收装置,其被配置成接收要编码的体积图片或接收要解码、重建和投影的比特流;耦合至接收装置的发送装置,该发送装置被配置成将比特流发送至解码器或将已解码图像发送至显示装置;耦合至接收装置或发送装置中的至少一个的存储装置,该存储装置被配置成存储指令;以及耦合至存储装置的处理装置,该处理装置被配置成执行存储装置中存储的指令以执行本文中公开的方法中的任何方法。
使用这种译码方法允许对点云块帧数据单元中的点云块进行灵活排序。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。另外,可以向点云块帧数据单元添加额外的点云块。添加的补丁可以添加在点云块帧数据单元的末尾,或者添加在任何随机点云块索引位置。译码技术还允许使用跳过点云块数据单元类型(spdu)。当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或在可接受的容差内时,跳过点云块数据单元指示当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除对匹配点云块的数量进行指示的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的点云块的整个列表。此外,译码技术消除了用信号通知点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小)的需要,并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块被替换为PCM点云块类型指示,脉冲编码调制(PCM)点云块通常已经位于点云块帧数据单元的末尾。也允许多个PCM点云块。因此,相对于当前的编解码器,点云译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的点云译码过程可以增强译码效率,这在发送、接收和/或查看点云时为用户提供更好的用户体验。
为清楚起见,前述实施方式中的任一者可以与其他前述实施方式中的任一者或更多者结合以在本公开内容的范围内创建新的实施方式。
通过结合附图和权利要求进行的以下详细描述,将更清楚地理解这些和其他特征。
附图说明
为了更完整地理解本公开内容,现在参考以下结合附图和详细描述进行的简要描述,其中,相同的附图标记表示相同的部分。
图1是示出可以利用上下文建模技术的示例译码系统的框图。
图2是示出可以实现上下文建模技术的示例编码器的框图。
图3是示出可以实现上下文建模技术的示例解码器的框图。
图4是点云帧序列的表示,每个点云帧包含三维(3D)点云。
图5是图4的投影到边界框上以生成二维(2D)投影的3D点云之一的表示。
图6A至图6C是与来自图5的边界框的2D投影对应的占用图、几何图和属性图的表示。
图7是基于视频的点云译码(video-based point cloud coding,V-PCC)比特流的表示。
图8是针对多个帧的点云序列的已编码分解的表示。
图9是从图8的点云序列中的点云帧之一中提取的单个点云块数据单元的表示。
图10A至图10C是与图9的单个点云块数据单元对应的占用图、几何图和属性图的表示。
图11是点云块数据单元在2D边界框内的2D分量的表示。
图12A至图12B是图11的点云块数据单元的3D分量的示意图表示和数据集表示。
图13是点云块帧数据单元编码过程的实施方式。
图14是使用末尾点云块标志的点云块帧数据单元编码过程的实施方式。
图15是具有点云块单元类型描述的点云块信息数据帧的实施方式。
图16是点云块帧数据单元解码过程的实施方式。
图17是使用末尾点云块标志的点云块帧数据单元解码过程的实施方式。
图18是由解码器实现的点云解码(PCC)的方法的实施方式。
图19是由解码器实现的PCC的方法的实施方式。
图20是由解码器实现的PCC的方法的实施方式。
图21是由编码器实现的PCC的方法的实施方式。
图22是由编码器实现的PCC的方法的实施方式。
图23是译码设备的示意图。
图24是用于译码的装置的实施方式的示意图。
具体实施方式
在开始时应当理解,尽管下面提供了一个或更多个实施方式的说明性实现方式,但是可以使用无论是当前已知的还是存在的任何数量的技术来实现所公开的系统和/或方法。本公开内容不应以任何方式限于以下说明的说明性实现方式、附图和技术,包括在本文说明和描述的示例性设计和实现方式,而是可以在所附权利要求的范围连同其等效物的全部范围内进行修改。
在整个说明书和权利要求书中,以下术语采用与本文明确相关联的含义,除非上下文另有明确规定。参考点云块索引(例如,spdu_patch_index)指示当前点云块数据单元p[在当前点云块帧数据单元中]的索引与参考点云块数据单元[在参考点云块帧数据单元中]的索引之间的差异。参考索引(例如,refIdx)指示参考点云块数据单元在[在已解码点云块帧数据单元缓冲区中的]先前已解码点云块帧数据单元中的实际索引。参考帧索引(例如,refFrmIdx)指示[在已解码点云块帧数据单元缓冲区中的]先前已解码点云块帧数据单元的索引。
视频译码标准包括国际电信联盟电信标准化部门(InternationalTelecommunications Union Telecommunication Standardization Sector,ITU-T)H.261、国际标准化组织(International Organization for Standardization,ISO)/国际电工委员会(International Electrotechnical Commission,IEC)运动图像专家组(Moving Picture Experts Group,MPEG)-l第2部分、ITU-T H.262或ISO/IEC MPEG-2第2部分、ITU-T H.263、ISO/IEC MPEG-4第2部分、高级视频译码(Advanced Video Coding,AVC)——也称为ITU-T H.264或ISO/IEC MPEG-4第10部分以及高效视频译码(HighEfficiency Video Coding,HEVC)——也称为ITU-T H.265或MPEG-H第2部分。AVC包括诸如可扩展视频译码(Scalable Video Coding,SVC)、多视图视频译码(Multiview VideoCoding,MVC)和多视图视频译码加深度(Multiview Video Coding plus Depth,MVC+D)以及3D AVC(3D-AVC)的扩展。HEVC包括诸如可扩展HEVC(Scalable HEVC,SHVC)、多视图HEVC(Multiview HEVC,MV-HEVC)和3D HEVC(3D-HEVC)的扩展。
点云是3D空间中的一组数据点。每个数据点包括确定位置(例如,X,Y,Z)、颜色(例如,R、G、B或Y、U、V)以及可能的其他属性(如透明度、反射率、采集时间等)的参数。通常,云中的每个点具有相同数量的附加至其的属性。点云可以用于各种应用,诸如实时3D沉浸式远程呈现、具有交互式视差的内容虚拟现实(virtual reality,VR)观看、3D自由视点体育赛事回放播放、地理信息系统、文化遗产、基于大规模3D动态地图的自主导航和汽车应用。
ISO/IEC运动图像专家组(MPEG)于2016年开始开发关于点云译码的新编解码器标准,以用于无损和有损压缩点云数据,其具有显著的译码效率和对网络环境的鲁棒性。该编解码器标准的使用允许点云作为计算机数据的形式进行操作,并存储在各种存储介质上,通过现有和未来的网络进行发送和接收,并在现有和未来的广播频道上分发。
最近,点云译码(PCC)工作被分为三个类别:PCC类别1、PCC类别2和PCC类别3,其中,两个单独的工作草案正在开发,一个用于PCC类别2(PCC Cat2),以及另一个用于PCC类别1和PCC类别3(PCC Cat13)。PCC Cat2的最新工作草案(WD)包括在MPEG输出文档N17534中,以及PCC Cat13的最新WD包括在MPEG输出文档N17533中。
PCC Cat2 WD中的PCC Cat2编解码器设计背后的主要理念是利用现有的视频编解码器通过将点云数据压缩为一组不同的视频序列来压缩动态点云的几何信息和纹理信息。特别地,通过使用视频编解码器来生成和压缩两个视频序列,一个表示点云数据的几何信息,以及另一个表示纹理信息。解释两个视频序列的附加元数据即占用图和辅助点云块信息也被单独生成和压缩。
不幸的是,PCC的现有设计存在缺陷。例如,属于一个时间实例即一个访问单元(access unit,AU)的数据单元在解码顺序上不是连续的。在PCC Cat 2WD中,每个AU的纹理、几何、辅助信息和占用图的数据单元以帧组为单位交错。也就是说,组中所有帧的几何数据是在一起的。对于纹理数据等通常也是如此。在PCC Cat13 WD中,每个AU的一般属性和几何数据单元在整个PCC比特流的级别上交错(例如,当仅存在长度与整个PCC比特流相同的一个帧组时,与PCC Cat2 WD中的相同)。属于一个AU的数据单元的交错本质上会导致巨大的端到端延迟,该端到端延迟至少等于应用系统中呈现持续时间中帧组的长度。
另一个缺点与比特流格式有关。比特流格式允许如0x0003的起始码模式的仿真,并且因此不为MPEG-2传输流(transport stream,TS)上的传输工作,在该MPEG-2传输流中,起始码仿真防止被需要。对于PCC Cat2,当HEVC或AVC用于几何和纹理分量的译码时,当前只有group_of_frames_geometry_video_payload()和group_of_frames_texture_video_payload()处处具有起始码仿真防止。对于PCC Cat13,起始码仿真防止未处在比特流中的任何地方。
在PCC Cat 2WD中,几何和纹理比特流的编解码器信息(例如,编解码器中的哪个编解码器、简档、级别等)中的一些被深埋在结构group_of_frames_geometry_video_payload()和group_of_frames_texture_video_payload()的多个实例中。此外,缺少如简档和级别的信息中的一些,其指示关于辅助信息和占用图分量的解码的能力以及关于点云重建的能力。
提供了解决与点云译码相关联的前述问题中的一个或更多个的高级句法设计。如下文将更全面地解释的,本公开内容利用数据单元报头(也称为PCC网络接入层(networkaccess layer,NAL)报头)中的类型指示符来指定PCC NAL单元的有效载荷中的内容类型。另外,本公开内容利用帧报头NAL单元组来携带帧报头参数组。帧报头NAL单元组还可以用于用信号发送每个几何或纹理比特流的简档和级别。
图1是示出可以利用PCC视频译码技术的示例译码系统10的框图。如图1中所示,译码系统10包括源设备12,源设备提供稍后要由目的地设备14解码的已编码视频数据。特别地,源设备12可以经由计算机可读介质16将视频数据提供给目的地设备14。源设备12和目的地设备14可以包括如下多种设备中的任一种,包括台式计算机、笔记本(例如,膝上型)计算机、平板计算机、机顶盒、电话手机例如所谓的“智能”手机、所谓的“智能”平板、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。在一些情况下,源设备12和目的地设备14可以配备成用于无线通信。
目的地设备14可以经由计算机可读介质16接收要解码的已编码视频数据。计算机可读介质16可以包括能够将已编码视频数据从源设备12移动到目的地设备14的任何类型的介质或设备。在一个示例中,计算机可读介质16可以包括通信介质以使得源设备12能够实时地将已编码视频数据直接发送至目的地设备14。已编码视频数据可以根据诸如无线通信协议的通信标准被调制,并被发送至目的地设备14。通信介质可以包括任何无线或有线通信介质诸如射频(radio frequency,RF)频谱或一个或更多个物理传输线。通信介质可以形成基于分组的网络诸如局域网、广域网或全球网络诸如因特网的一部分。通信介质可以包括路由器、交换机、基站或可能对促进从源设备12到目的地设备14的通信有用的任何其他设备。
在一些示例中,已编码数据可以从输出接口24输出至存储设备。类似地,可以通过输入接口从存储设备访问已编码数据。存储设备可以包括如下用于存储已编码视频数据的各种分布式或本地访问的数据存储介质中的任一种,例如硬盘驱动器、蓝光光盘、数字视频磁盘(digital video disk,DVD)、紧密盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、闪存、易失性或非易失性存储器或任何其他合适的数字存储介质。在其他示例中,存储设备可以对应于可以存储由源设备12生成的已编码视频的文件服务器或其他中间存储设备。目的地设备14可以经由流传输或下载从存储设备访问所存储的视频数据。文件服务器可以是能够存储已编码视频数据并将该已编码视频数据发送至目的地设备14的任何类型的服务器。示例文件服务器包括网络服务器(例如,用于网站)、文件传输协议(filetransfer protocol,FTP)服务器、网络附加存储(network attached storage,NAS)设备或本地磁盘驱动器。目的地设备14可以通过任何标准数据连接(包括因特网连接)访问已编码视频数据。这可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如,数字用户线(digitalsubscriber line,DSL)、线缆调制解调器等)或者无线信道和有线连接的组合,其适合访问存储在文件服务器上的已编码视频数据。来自存储设备的已编码视频数据的传输可以是流传输、下载传输或其组合。
本公开内容的技术不必限于无线应用或设置。这些技术可以应用于视频译码以支持如下各种多媒体应用中的任一种,例如空中电视广播、线缆电视传输、卫星电视传输、因特网流视频传输例如基于HTTP的动态自适应流(dynamic adaptive streaming overHTTP,DASH)、编码到数据存储介质上的数字视频、存储在数据存储介质上的数字视频的解码、或其他应用。在一些示例中,译码系统10可以被配置成支持单向或双向视频传输以支持诸如视频流、视频回放、视频广播和/或视频电话的应用。
在图1的示例中,源设备12包括被配置成提供体积图像的视频源18、投影设备20、视频编码器22和输出接口24。目的地设备14包括输入接口26、视频解码器28、重建设备30和显示设备32。根据本公开内容,源设备12的编码器22和/或目的地设备14的解码器28可以被配置成应用用于视频译码的技术。在其他示例中,源设备和目的地设备可以包括其他组件或布置。例如,源设备12可以从外部视频源例如外部相机接收视频数据。同样,目的地设备14可以与外部显示设备进行对接,而不是包括集成显示设备。
图1的所示译码系统10只是一个示例。用于视频译码的技术可以由任何数字视频编码和/或解码设备执行。尽管本公开内容的技术通常由译码设备执行,但是这些技术也可以由编码器/解码器——通常称为“编解码器”执行。此外,本公开内容的技术也可以由视频预处理器执行。编码器和/或解码器可以是图形处理单元(graphics processing unit,GPU)或类似设备。
源设备12和目的地设备14仅仅是这样的译码设备的示例,其中源设备12生成已编码视频数据以传输至目的地设备14。在一些示例中,源设备12和目的地设备14可以以基本上对称的方式进行操作,使得源设备12和目的地设备14中的每一个包括视频编码和解码组件。因此,译码系统10可以支持视频设备12、14之间的单向或双向视频传输,例如用于视频流、视频回放、视频广播或视频电话。
源设备12的视频源18可以包括视频捕获设备,例如视频相机、包含先前捕获的视频的视频档案和/或用于从视频内容提供者接收体积图像或视频的视频馈送接口。作为其他替选方案,视频源18可以生成体积图像或基于计算机图形的数据作为源视频,或者实况视频、存档视频和计算机生成的视频的组合。
在一些情况下,当视频源18是视频相机时,源设备12和目的地设备14可以形成所谓的相机电话或视频电话。然而,如以上所提及的,本公开内容中描述的技术一般可以应用于视频译码,并且可以应用于无线和/或有线应用。
投影设备20被配置成将体积图像投影到平面表面(例如,边界框)上,如下面更充分地解释的。也就是说,投影设备20被配置成将三维(3D)图像转换为二维(2D)图像或图像。
在任何情况下,体积图像、捕获的视频、预先捕获的视频或计算机生成的视频可以由编码器22编码。已编码视频信息然后可以由输出接口24输出到计算机可读介质16上。
计算机可读介质16可以包括暂态介质例如无线广播或有线网络传输、或存储介质(即,非暂态存储介质)例如硬盘、闪存驱动器、紧密盘、数字视频光盘、蓝光光盘、或其他计算机可读介质。在一些示例中,网络服务器(未示出)可以例如经由网络传输从源设备12接收已编码视频数据并且将已编码视频数据提供给目的地设备14。类似地,诸如盘冲压设施的介质制作设施的计算设备可以从源设备12接收已编码视频数据并且制作包含已编码视频数据的盘。因此,在各种示例中,计算机可读介质16可以被理解为包括各种形式的一种或更多种计算机可读介质。
目的地设备14的输入接口26从计算机可读介质16接收信息。计算机可读介质16的信息可以包括由编码器22定义的语法信息,其也被解码器28使用,其包括描述块和其他已编码单元例如图片组(group of picture,GOP)的特性和/或处理的语法元素。
重建设备30被配置成将一个或多个平面图像转换回体积图像,如下面更充分地解释的。也就是说,重建设备30被配置成将一个或多个2D图像转换回3D图像。
显示设备32向用户显示体积图像或已解码视频数据,并且可以包括如下多种显示设备中的任一种,例如阴极射线管(cathode ray tube,CRT)、液晶显示器(liquid crystaldisplay,LCD)、等离子显示器、有机发光二极管(organic light emitting diode,OLED)显示器或其他类型的显示设备。
编码器22和解码器28可以根据视频译码标准例如目前正在开发的高效视频译码(High Efficiency Video Coding,HEVC)标准进行操作,并且可以符合HEVC测试模型(HEVCTest Model,HM)。可替选地,编码器22和解码器28可以根据如下其他专有或行业标准进行操作,例如国际电信联盟电信标准化部门(ITU-T)H.264标准——或者被称为运动图像专家组(MPEG)-4第10部分、高级视频译码(AVC)、H.265/HEVC或这样的标准的扩展。然而,本公开内容的技术不限于任何特定译码标准。视频译码标准的其他示例包括MPEG-2和ITU-TH.263。尽管图1中未示出,但是在一些方面,编码器22和解码器28可以各自与音频编码器和解码器集成,并且可以包括适当的多路复用器-解多路复用器(multiplexer-demultiplexer,MUX-DEMUX)单元或其他硬件和软件,以处理音频和视频二者在公共数据流或单独的数据流中的编码。如果适用,则MUX-DEMUX单元可以符合ITU H.223多路复用器协议或其他协议例如用户数据报协议(user datagram protocol,UDP)。
编码器22和解码器28各自可以实现为如下多种合适的编码器电路系统中的任一种,例如一个或更多个微处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)、离散逻辑、软件、硬件、固件或其任何组合。当这些技术部分地以软件实现时,设备可以将用于软件的指令存储在合适的非暂态计算机可读介质中并且使用一个或更多个处理器在硬件中执行指令以执行本公开内容的技术。编码器22和解码器28中的每一个可以被包括在一个或更多个编码器或解码器中,其中的任一个可以被集成为相应设备中的组合编码器/解码器(CODEC)的一部分。包括编码器22和/或解码器28的设备可以包括集成电路、微处理器和/或无线通信设备例如蜂窝电话。
图2是示出可以实现视频译码技术的编码器22的示例的框图。编码器22可以执行视频切片内的视频块的帧内编码和帧间编码。帧内编码依赖于空间预测来减少或去除给定视频帧或图片内的视频中的空间冗余。帧间编码依赖于时间预测来减少或去除视频序列的相邻帧或图片内的视频中的时间冗余。帧内模式(I模式)可以是指几种基于空间的编码模式中的任一种。诸如单向(也称为单向预测)预测(P模式)或双向预测(也称为双向预测)(B模式)的帧间模式可以是指几种基于时间的编码模式中的任一种。
如图2中所示,编码器22接收视频帧内要编码的当前视频块。在图2的示例中,编码器22包括模式选择单元40、参考帧存储器64、加法器50、变换处理单元52、量化单元54和熵编码单元56。模式选择单元40又包括运动补偿单元44、运动估计单元42、帧内预测(也称为帧内预测)单元46和分割单元48。对于视频块重建,编码器22还包括逆量化单元58、逆变换单元60和加法器62。去块滤波器(图2中未示出)也可以被包括以过滤块边界以从经重建的视频中去除块效应伪影。如果需要,则去块滤波器通常会过滤加法器62的输出。除了去块滤波器之外,还可以使用附加滤波器(在循环或后循环中)。为简洁起见,这样的滤波器未示出,但是如果需要,则可以(作为环路滤波器)过滤加法器50的输出。
在编码过程期间,编码器22接收要编码的视频帧或切片。帧或切片可以被划分为多个视频块。运动估计单元42和运动补偿单元44相对于一个或更多个参考帧中的一个或更多个块执行所接收的视频块的帧间预测性编码以提供时间预测。可替选地,帧内预测单元46可以相对于与要编码的块在同一帧或切片中的一个或更多个相邻块执行所接收的视频块的帧内预测性编码以提供空间预测。编码器22可以执行多个编码阶段,例如,以为每个视频数据块选择合适的编码模式。
此外,分割单元48可以基于对先前编码阶段中的先前分割方案的评估将视频数据块分割成子块。例如,分割单元48初始可以将帧或切片分割成最大编码单元(largestcoding unit,LCU),并且基于率失真分析(例如,率失真优化)将LCU中的每一个分割成子编码单元(sub-coding unit,子CU)。模式选择单元40还可以产生指示LCU到子CU的分割的四叉树数据结构。四叉树的叶节点CU可以包括一个或更多个预测单元(prediction unit,PU)和一个或更多个变换单元(transform unit,TU)。
本公开内容使用术语“块”来指代HEVC上下文中的CU、PU或TU中的任一个或其他标准上下文中的类似数据结构(例如,H.264/AVC中的宏块及其子块)。CU包括编码节点、与编码节点相关联的TU和PU。CU的大小对应于编码节点的大小并且形状为正方形。CU的大小范围可以从8x8像素直到最大为64x64像素或更大的树块的大小。每个CU可以包含一个或更多个PU和一个或更多个TU。与CU相关联的语法数据可以描述例如将CU分割成一个或更多个PU。分割模式可能在CU是跳过模式编码还是直接模式编码、帧内预测模式编码还是帧间预测(也称为帧间预测)模式编码之间不同。PU可以被分割为形状为非正方形。与CU相关联的语法数据还可以描述例如根据四叉树将CU分割成一个或更多个TU。TU的形状可以是正方形或非正方形(例如,矩形)。
模式选择单元40可以例如基于错误结果选择编码模式即帧内编码模式或帧间编码模式之一,并将得到的帧内编码块或帧间编码块提供给加法器50以生成残差块数据以及提供给加法器62以重建已编码块以用作参考帧。模式选择单元40还向熵编码单元56提供语法元素,例如运动向量、帧内模式指示符、分割信息和其他这样的语法信息。
运动估计单元42和运动补偿单元44可以高度集成,但是出于概念目的而分开说明。由运动估计单元42执行的运动估计是生成运动向量的过程,运动向量估计视频块的运动。例如,运动向量可以指示当前视频帧或图片内的视频块相对于参考帧(或其他已编码单元)内的预测性块相对于在当前帧(或其他已编码单元)内被编码的当前块的PU的位移。预测性块是发现在像素差方面与要编码的块紧密匹配的块,像素差可以由绝对差之和(sumof absolute difference,SAD)、平方差之和(sum of square difference,SSD)或其他差度量来确定。在一些示例中,编码器22可以计算参考帧存储器64中存储的参考图片的子整数像素位置的值。例如,编码器22可以插入参考图片的四分之一像素位置、八分之一像素位置或其他分数像素位置的值。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索并且输出具有分数像素精度的运动向量。
运动估计单元42通过将PU的位置与参考图片的预测性块的位置进行比较来计算帧间编码切片中的视频块的PU的运动向量。参考图片可以从第一参考图片列表(列表0)或第二参考图片列表(列表1)中选择,第一参考图片列表(列表0)或第二参考图片列表(列表1)中的每一个标识参考帧存储器64中存储的一个或更多个参考图片。运动估计单元42将计算的运动向量发送至熵编码单元56和运动补偿单元44。
由运动补偿单元44执行的运动补偿可以涉及基于由运动估计单元42确定的运动向量来获取或生成预测性块。此外,在一些示例中,运动估计单元42和运动补偿单元44可以在功能上集成。在接收到当前视频块的PU的运动向量后,运动补偿单元44可以在参考图片列表之一中定位运动向量指向的预测性块。加法器50通过从正被编码的当前视频块的像素值中减去预测性块的像素值来形成残差视频块,从而形成像素差值,如以下所讨论的。一般而言,运动估计单元42相对于亮度分量执行运动估计,并且运动补偿单元44使用基于关于色度分量和亮度分量二者的亮度分量计算的运动向量。模式选择单元40还可以生成与视频块和视频切片相关联的语法元素以供解码器28在对视频切片的视频块进行解码时使用。
帧内预测单元46可以对当前块进行帧内预测,作为对如上所述的由运动估计单元42和运动补偿单元44执行的帧间预测的替选方案。特别地,帧内预测单元46可以确定用于对当前块进行编码的帧内预测模式。在一些示例中,帧内预测单元46可以例如在单独的编码阶段期间使用各种帧内预测模式对当前块进行编码,并且帧内预测单元46(或在一些示例中,模式选择单元40)可以从测试的模式中选择适当的帧内预测模式以使用。
例如,帧内预测单元46可以使用针对各种测试的帧内预测模式的率失真分析来计算率失真值,并且在测试的模式中选择具有最佳率失真特性的帧内预测模式。率失真分析通常确定已编码块与原始未编码块之间的失真(或错误)量以及用于产生已编码块的比特率(即,比特数),该原始未编码块被编码以产生已编码块。帧内预测单元46可以根据各种已编码块的失真和速率计算比率以确定哪个帧内预测模式表现出块的最佳率失真值。
另外,帧内预测单元46可以被配置成使用深度建模模式(depth modeling mode,DMM)对深度图的深度块进行编码。模式选择单元40可以例如使用率失真优化(rate-distortion optimization,RDO)来确定可用的DMM模式是否产生比帧内预测模式和其他DMM模式更好的编码结果。与深度图对应的纹理图像的数据可以存储在参考帧存储器64中。运动估计单元42和运动补偿单元44还可以被配置成对深度图的深度块进行帧间预测。
在为块选择帧内预测模式(例如,DMM模式之一或常规帧内预测模式)之后,帧内预测单元46可以向熵编码单元56提供指示针对块所选择的帧内预测模式的信息。熵编码单元56可以对指示所选择的帧内预测模式的信息进行编码。编码器22可以在发送的比特流配置数据中包括各种块的编码上下文的定义以及用于上下文中的每一个的最可能的帧内预测模式、帧内预测模式索引表和修改后的帧内预测模式索引表的指示,所述比特流配置数据可以包括多个帧内预测模式索引表和多个修改后的帧内预测模式索引表(也称为码字映射表)。
编码器22通过从正被编码的原始视频块中减去来自模式选择单元40的预测数据来形成残差视频块。加法器50表示执行该减法操作的一个或多个组件。
变换处理单元52对残差块应用变换,例如离散余弦变换(discrete cosinetransform,DCT)或概念上类似的变换,从而产生包括残差变换系数值的视频块。变换处理单元52可以执行概念上类似于DCT的其他变换。也可以使用小波变换、整数变换、子带变换或其他类型的变换。
变换处理单元52对残差块应用变换,从而产生残差变换系数块。变换可以将残差信息从像素值域转换到变换域,例如频域。变换处理单元52可以将所得变换系数发送至量化单元54。量化单元54对变换系数进行量化以进一步降低比特率。量化过程可以减少与系数中的一些或所有系统相关联的位深度。可以通过调整量化参数来修改量化程度。在一些示例中,量化单元54然后可以执行对包括经量化的变换系数的矩阵的扫描。可替选地,熵编码单元56可以执行扫描。
在量化之后,熵编码单元56对经量化的变换系数进行熵编码。例如,熵编码单元56可以执行上下文自适应可变长度编码(context adaptive variable length coding,CAVLC)、上下文自适应二进制算术编码(context adaptive binary arithmetic coding,CABAC)、基于语法的上下文自适应二进制算术编码(syntax-based context-adaptivebinary arithmetic coding,SBAC)、概率区间分割熵(probability intervalpartitioning entropy,PIPE)编码或其他熵编码技术。在基于上下文的熵编码的情况下,上下文可以基于相邻块。在熵编码单元56进行熵编码之后,已编码比特流可以被发送至另一设备(例如,解码器28)或被存档以供稍后传输或检索。
逆量化单元58和逆变换单元60分别应用逆量化和逆变换,以重建像素域中的残差块,例如用于稍后用作参考块。运动补偿单元44可以通过将残差块添加到参考帧存储器64的帧之一的预测性块来计算参考块。运动补偿单元44还可以将一个或更多个插值滤波器应用于经重建的残差块以计算子整数像素值以用于运动估计。加法器62将经重建的残差块添加到由运动补偿单元44产生的运动补偿的预测块以产生经重建的视频块以存储在参考帧存储器64中。经重建的视频块可以由运动估计单元42和运动补偿单元44用作参考块以对后续视频帧中的块进行帧间编码。
图3是示出可以实现视频译码技术的解码器28的示例的框图。在图3的示例中,解码器28包括熵解码单元70、运动补偿单元72、帧内预测单元74、逆量化单元76、逆变换单元78、参考帧存储器82和加法器80。在一些示例中,解码器28可以执行与关于编码器22(图2)描述的编码阶段大体上相反的解码阶段。运动补偿单元72可以基于从熵解码单元70接收的运动向量生成预测数据,而帧内预测单元74可以基于从熵解码单元70接收的帧内预测模式指示符生成预测数据。
在解码过程期间,解码器28从编码器22接收已编码视频比特流,其表示已编码视频切片的视频块和相关联的语法元素。解码器28的熵解码单元70对比特流进行熵解码以生成量化系数、运动向量或帧内预测模式指示符以及其他语法元素。熵解码单元70将运动向量和其他语法元素转发到运动补偿单元72。解码器28可以在视频切片级别和/或视频块级别接收语法元素。
当视频切片被编码为帧内编码(I)切片时,帧内预测单元74可以基于用信号发送的帧内预测模式和来自当前帧或图片的先前解码的块的数据来生成当前视频切片的视频块的预测数据。当视频帧被编码为帧间编码(例如,B、P或GPB)切片时,运动补偿单元72基于从熵解码单元70接收的运动向量和其他语法元素来产生当前视频切片的视频块的预测性块。可以从参考图片列表之一内的参考图片之一产生预测性块。解码器28可以基于存储在参考帧存储器82中的参考图片使用默认构建技术来构建参考帧列表即列表0和列表1。
运动补偿单元72通过对运动向量和其他语法元素进行解析来确定当前视频切片的视频块的预测信息,并且使用预测信息来产生正被解码的当前视频块的预测性块。例如,运动补偿单元72使用所接收的语法元素中的一些来确定用于对视频切片的视频块进行编码的预测模式(例如,帧内预测或帧间预测)、帧间预测切片类型(例如,B切片、P切片或GPB切片)、切片的参考图片列表中的一个或更多个的构建信息、切片的每个帧间编码视频块的运动向量、切片的每个帧间编码视频块的帧间预测状态、以及用于对当前视频切片中的视频块进行解码的其他信息。
运动补偿单元72还可以基于插值滤波器执行插值。运动补偿单元72可以使用由编码器22在视频块的编码期间使用的插值滤波器来计算参考块的子整数像素的插入值。在这种情况下,运动补偿单元72可以根据所接收的语法元素确定由编码器22使用的插值滤波器并且使用插值滤波器来产生预测性块。
与深度图对应的纹理图像的数据可以存储在参考帧存储器82中。运动补偿单元72还可以被配置成对深度图的深度块进行帧间预测。
常规的译码技术需要根据点云块帧数据单元(也称为点云块缓冲区)中的点云块的点云块模式对点云块进行排序。也就是说,基于视频的点云译码(V-PCC)中的辅助信息点云块数据单元中的点云块数据单元类型的表示要求所有点云块相关信息在点云块帧数据单元内按一定顺序排列。首先,将匹配的点云块数据单元添加到点云块数据单元列表中,然后是不匹配的点云块数据单元。可以使用差分编码(帧间预测-dpdu)对匹配的点云块数据单元进行编码,并且使用绝对值(帧内预测)对不匹配的点云块数据单元进行编码。也就是说,所有帧间编码点云块必须首先列在点云块帧数据单元中,然后是所有帧内编码点云块,依此类推。因此,为了向点云块帧数据单元添加新的帧间编码点云块或新的帧内编码点云块,必须使用所需的顺序重建整个点云块帧数据单元,这导致译码效率低下。
本文中公开了允许灵活地对点云块帧数据单元中的点云块进行排序的译码技术。也就是说,具有不同点云块模式(例如,帧间、帧内、PCM等)的点云块可以以任何顺序被包括在点云块帧数据单元中。译码技术还允许使用跳过点云块数据单元类型(spdu)。跳过点云块数据单元指示当当前点云块数据单元和参考点云块数据单元的点云块数据单元元素相同或完美匹配时,当前点云块的所有参数可以从参考点云块继承。译码技术还允许从信令中去除指示匹配点云块的数量的语法元素,因为本文中描述的点云块类型信令足以表示点云块帧数据单元中的整个点云块列表。另外,译码技术不需要用信号发送点云块帧数据单元中的点云块总数(例如,点云块帧数据单元的大小),并用特殊的终止点云块类型代替该过程。此外,译码技术允许脉冲编码调制(PCM)点云块——其通常已经位于点云块帧数据单元的末尾——被替换为PCM点云块类型指示。因此,相对于当前编解码器,视频译码中的编码器/解码器(又名“编解码器”)得到改进(例如,V-PCC中的对点云块进行编码和解码的过程)。实际上,改进的视频译码过程可以增强译码效率,其在发送、接收和/或查看点云时为用户提供更好的用户体验。
图4是各自包含点云408的点云帧402、404、406(例如,帧PCC_0、帧PCC_1、帧PCC_4)的序列400的表示。点云408是常规3D网格上的空间的体积表示。也就是说,点云408是三维(3D)。如图4中所示,点云408包含3D空间412内的点云内容410。点云内容410由3D空间412内的一组点(例如,体素)表示。体素是表示某种数值量的体积元素,例如三维空间中的点的颜色,用于三维数据的可视化和分析。因此,体素可以被认为是2D图像中的像素的三维等价物。
图4的点云408中的每个体素具有坐标(例如,x y z坐标)和一个或更多个属性(例如,红/绿/蓝(red/green/blue,RGB)颜色分量、反射率等)。虽然图4中的点云内容410描绘人,但是点云内容410在实际应用中可以是任何其他体积对象或图像。
图5是图4的点云400投影到边界框500上的表示。如图5中所示,边界框500包含投影到二维(2D)表面或其平面504上的点云块502。因此,点云块502是3D图像的部分的2D表示。点云块502共同对应于图4的点云内容410。基于视频的点云译码(V-PCC)——也可以被称为点云压缩——中的数据表示依赖于这种3D到2D的转换。
V-PCC中的数据表示被描述为使用例如图6A的占用图610、图6B的几何图612和图6C的属性图614的一组平面2D图像(例如,点云块502)。
图6A是与来自图5的边界框500的2D投影(例如,点云块502)对应的占用图610的表示。占用图610以二进制形式进行编码。例如,零表示:边界框600的一部分未被点云块602之一占用。由零表示的边界框600的那些部分不参与体积表示(例如,点云内容410)的重建。相比之下,1表示:边界框600的一部分被点云块602之一占用。由1表示的边界框600的那些部分确实参与了体积表示(例如,点云内容410)的重建。
图6B是与来自图5的边界框500的2D投影(例如,点云块502)对应的几何图612的表示。几何图612提供或描绘点云块602中的每一个的轮廓或地形。也就是说,几何图612指示点云块602中的每个点远离边界框600的平面表面(例如,平面504)的距离。
图6C是与来自图5的边界框500的2D投影(例如,点云块502)对应的属性图614的表示。属性图614提供或描绘边界框600中的点云块602中的每个点的属性。属性图614中的属性可以是例如点的颜色分量。颜色分量可以基于RGB颜色模型、YUV颜色模型或基于其他已知颜色模型。
图7是V-PCC比特流700的表示。V-PCC比特流700可以用于携带重建点云(例如,图4的点云408)所需的已编码信息。如图所示,V-PCC比特流700包括多个V-PCC单元702。每个V-PCC单元702包含V-PCC单元报头704和V-PCC单元有效载荷706。V-PCC单元报头704描述由V-PCC单元702携带的V-PCC单元有效载荷706。
V-PCC单元有效载荷706包括序列参数集708、点云块序列数据710、占用视频数据712、几何视频数据714和属性视频数据716(例如,纹理视频数据)。序列参数集708包括与点云序列(例如,各自包含图4中的点云408的点云帧402、404、406的序列400)对应的参数和信息。占用视频数据712、几何视频数据714和属性视频数据716携带与点云或3D图像对应的占用数据、几何数据以及属性或纹理数据。
点云块序列数据710包括与点云块(例如,图5中的点云块502)的序列对应的参数和信息。点云块序列数据710包括序列参数集720、帧参数集722、几何参数集724、属性参数集726、几何点云块参数集728、属性点云块参数集730和点云块帧732。
序列参数集720包括与2D点云块(例如,图5中的点云块502)的序列对应的参数和信息,该序列持续了点云序列的整个持续时间或直到在比特流中用信号发送新的序列参数集。帧参数集722包含与在点云序列的单个帧的持续时间内持续的2D点云块序列对应的信息。几何参数集724包含与点云块序列数据的几何特征的重建过程对应的信息。属性参数集726包含与点云块序列数据的属性特征的重建过程对应的信息。几何点云块参数集728包含与点云块序列数据的几何特征的解码过程对应的信息。属性730包含与点云块序列数据的属性特征的解码过程对应的信息。
点云块帧数据单元732(称为点云块帧)包括一组点云块数据单元734。点云块数据单元734共同包含用于点云块(例如,点云块502)的点云块数据(例如,点云块数据F0,…,Fk)。点云块数据单元734中的每一个具有在本文中被称为点云块模式的点云块类型。如下文将更全面地解释的,点云块模式(例如,patch_mode)指示在译码过程期间应如何处理特定点云块。
图8是多个帧802的点云序列800的已编码分解的表示。图8中的帧802类似于图4中的点云帧402、404、406。因此,帧802中的每一个包含用于3D点云的点云内容810。图8的每个帧802中的点云内容810与用于重建点云内容810的2D投影中的占用图812、几何图814和属性图816对应。如图所示,2D投影可以包含多于一个属性图816。
如图所示,点云序列800还包含辅助信息点云块帧数据单元850(AUX_INF)。在实施方式中,辅助信息点云块帧数据单元850包含2D和3D边界框信息二者(例如,图12A中的点云块3D边界框1204和点云块2D投影边界框1208)。辅助信息点云块帧数据单元850的集合与图7中的点云块序列数据710对应。每个辅助信息点云块帧数据单元850包含序列参数集720、帧参数集722、几何参数集724、属性参数集726、几何点云块参数集728、属性点云块参数集730和点云块帧732。在实施方式中,点云块帧732被包括在辅助信息点云块帧数据单元850中并且点云块序列数据710中的其余分量是可选的。在实施方式中,占用图812的集合与占用视频数据712对应,几何图814的集合与几何视频数据714对应,属性图816的集合与属性视频数据716对应。值得注意的是,占用图在该图像上不存在。辅助信息点云块数据单元850各自与帧802之一中的点云内容810对应。点云块数据单元(例如,850)包含:用于基于2D投影中的占用图812、几何图814和属性图816在3D点云中重建点云内容810的信息;或者基于2D投影中的占用图812、几何图814和属性图816在3D点云中重建点云内容810所需的信息。
图9是从图8的点云序列800中的点云帧802之一中提取的单个点云块数据单元900的表示。单个点云块数据单元900类似于图7的点云块帧732中的点云块数据单元734或辅助信息点云块帧数据单元850。单个点云块数据单元900相对于周围的3D空间902被描绘。
图10A至图10C是与图9的单个点云块数据单元900对应的占用图1000、几何图1002和属性图1004的表示。占用图1000、几何图1002和属性图1004类似于图6A至图6C中的占用图610、几何图612和属性图614。然而,图10A至图10C中的占用图1000、几何图1002和属性图1004仅表示单个点云块数据单元900而不是来自整个边界框500的点云块502的集合。因此,图10A至图10C中的占用图1000、几何图1002和属性图1004仅包含与图9的单个点云块数据单元900对应的单个点云块1006。
图11是2D边界框1154内的点云块数据单元1152的2D分量的表示。图11中的点云块数据单元1152类似于图9的单个点云块数据单元900。如图11中所示,2D分量表示点云块数据单元1152的点云块坐标(例如,[u0,v0])和维度(例如,Size_u0,Size_v0)。这些2D分量被包括在点云块数据单元(例如,图7的点云块数据单元734或图8的点云块数据单元850)中。
图12A至图12B是图11的点云块数据单元1152的3D分量的示意性表示1200和数据集表示1252。如图所示,示意性表示1200包括点云3D边界框1202、点云块3D边界框1204、投影平面1206和点云块2D投影边界框1208。各种坐标(例如,[0,0,0])和维度(例如,x,y,z,u,v,d1,u1,v1)和向量(n,t,bt)用于描述点云3D边界框1202的内容到点云块2D投影边界框1208上的投影过程。数据集表示1252描绘了可以基于坐标(例如,[0,0,0]、[u1,v1,d1])和向量(例如,n,bt)将单个点云块数据单元1254(其类似于单个点云块数据单元900)投影到投影平面1206上的方式。这些3D分量也包括在点云块数据单元(例如,图7的点云块数据单元734或图8的点云块数据单元850)中。
点云块数据单元(例如,图7的点云块数据单元734或图8的点云块数据单元850)包含2D到3D重建过程所需的信息,并在下面被表示(参见图11):
2d相关分量
U0(Patch2dShiftU)
V0(Patch2dShiftV)
Size_u0(Patch2dSizeU)
Size_v0(Patch2dSizeV)
以及在下面被表示(参见图12A至图12B):
3d相关分量:
u1(Patch3dShiftTangentAxis)-从3d点云块边界框沿切线轴线(t)到点云边界框的距离
v1(Patch3dShiftBiTangentAxis)-从3d点云块边界框沿双切线轴线(bt)到点云边界框的距离
d1(Patch3dShiftNormalAxis)-从3d点云块边界框沿法线轴线(n)到点云边界框的距离
n(PatchNormalAxis)-与点云块投影平面(边界框的任何一侧可以是投影平面)垂直(法线)的轴线
t(Patch3dShiftTangentAxis)-与点云块表面相切并垂直于法线轴线的轴线
bt(Patch3dShiftBiTangentAxis)-垂直于法线和切线轴线的轴线
如上所述,常规译码技术需要根据点云块帧数据单元中的点云块的点云块模式对点云块(图7的点云块数据单元734)进行排序。也就是说,V-PCC中的点云块帧数据单元中的点云块数据单元类型的表示需要所有点云块相关信息在点云块帧数据单元内按一定顺序排列。首先,将匹配的点云块数据单元添加到点云块数据帧,然后是不匹配的点云块数据单元。可以使用差分编码(帧间预测-dpdu)对匹配的点云块数据单元进行编码,并且使用绝对值(帧内预测)对不匹配的点云块数据单元进行编码。也就是说,所有帧间编码点云块必须首先列在点云块帧数据单元中,然后是所有帧内编码点云块,依此类推。因此,为了向点云块帧数据单元添加新的帧间编码点云块或新的帧内编码点云块,必须使用所需的顺序重建整个点云块帧数据单元,这导致译码效率低下。下面详述的方法克服了这些译码效率低下。
图13是点云块帧数据单元编码过程1300的实施方式。点云块帧数据单元编码过程1300可以用于对多个点云块数据单元例如图7的点云块数据单元734进行编码(也称为压缩)。点云块帧数据单元编码过程1300可以由编码器实现。在此,与2D边界框1154对应的点云块帧数据单元是与点云块数据单元1152对应的点云块数据单元集合。在实施方式中,编码过程1300的输入是与点云块帧数据单元对应的点云块数据单元集合。
在框1302中,获得点云块帧数据单元(pfdu)。点云块帧数据单元可以由编码器的接收器接收。点云块帧数据单元包括点云块数据单元集合。点云块数据单元标识或包括多个点云块数据单元(例如,点云块502)中的每一个的点云块类型(pdfu_patch_mode)。在实施方式中,点云块类型是跳过、帧内、帧间、PCM或末尾之一。跳过点云块类型指示当前点云块与参考点云块相同。因此,来自参考点云块的参数用于对当前点云块进行编码。帧内点云块类型指示当前点云块将使用帧内预测(也称为帧内编码)进行编码。帧间点云块类型指示当前点云块将使用帧间预测(也称为帧间编码)进行编码。PCM点云块类型指示当前点云块表示来自3D点云的独立散点。末尾点云块类型指示当前点云块是要编码的末尾点云块,并且因此点云块帧数据单元的压缩过程应当结束或终止。
在框1304中,点云块数据单元索引(p)被递减。通过递减点云块数据单元索引,点云块数据单元索引可以以负值(例如,-1)开始。因此,当点云块数据单元索引在框1306中递增时,点云块数据单元索引被有效地初始化为从零开始。在实施方式中,过程1300还可以初始地将点云块数据单元索引设置为零,然后在执行该过程的循环或迭代部分之后递增点云块数据单元索引(如下文将解释的)。
在框1308中,进行对来自点云块帧数据单元中的多个点云块数据单元的当前点云块数据单元的点云块数据单元类型是否是末尾点云块类型的确定。当当前点云块数据单元不是末尾点云块时,过程1300进行到框1310。在框1310中,为当前点云块编码点云块信息数据。在实施方式中,点云块信息数据包括帧索引(frmIdx)、点云块索引(p)和点云块类型(pdfu_patch_mode)以及对应的2D和3D信息。在框1310中的编码之后,过程1300循环回到框1306。在那里,点云块数据单元索引递增。通过递增点云块索引,考虑新的当前点云块数据单元。迭代这些步骤,直到在框1308中确定当前点云块数据单元是末尾点云块。
当当前点云块数据单元被确定为末尾点云块数据单元时,过程1300进行到框1312。在框1312中,为当前点云块数据单元编码点云块信息数据。在实施方式中,点云块信息数据包括帧索引(frmIdx)、点云块索引(p)和点云块类型(pdfu_patch_mode),应提及的是末尾点云块数据单元没有与点云块数据单元相关联的2D或3D信息。与框1310中不同,框1312中的点云块类型被编码为末尾点云块类型。
在框1314中,执行字节对齐(byte_alignment)过程。在实施方式中,字节对齐将数据字节组织或排列成期望的取向或大小。然后,在框1316中,实现压缩的点云块帧数据单元。压缩的点云块帧数据单元可以被并入到比特流中以用于向解码器传输。
图14是使用末尾点云块标志的点云块帧数据单元编码过程1400的实施方式。点云块帧数据单元编码过程1400可以用于对多个点云块数据单元例如图7的点云块数据单元734进行编码(也称为压缩)。点云块帧数据单元编码过程1400可以由编码器实现。
在框1402中,获得点云块帧数据单元(pfdu)。点云块帧数据单元可以由编码器的接收器接收。点云块帧数据单元包括多个点云块数据单元(例如,点云块502)。
在框1404中,点云块索引(p)被递减。通过递减点云块索引,点云块索引可以以负值(例如,-1)开始。在框1406中,将末尾点云块标志添加到多个点云块中的每一个。在实施方式中,末尾点云块标志被指定为pfdu_is_last_patch_flag。可以根据每个点云块的点云块类型来向末尾点云块标志设置或分配值。例如,点云块标志可以指示点云块的点云块类型是跳过、帧内、帧间、PCM或末尾之一。
在框1408中,点云块索引被递增以有效地将点云块索引初始化为从零开始。在框1410中,基于末尾点云块标志的值来进行对来自与点云块帧数据单元对应的多个点云块数据单元的当前点云块数据单元的点云块类型是否为末尾点云块类型的确定。当当前点云块数据单元不是末尾点云块时,过程1400进行到框1412。在框1412中,为当前点云块数据单元编码点云块信息数据。在实施方式中,点云块信息数据包括帧索引(frmIdx)、点云块索引(p)和点云块类型(pdfu_patch_mode)以及对应的2D和3D信息。在过程1400的框1412中,点云块类型可以是跳过、帧间、帧内或PCM,但不是末尾。在框1414中,对末尾点云块标志进行编码。
在框1414中的编码之后,过程1400循环回到框1408。在那里,点云块索引递增。通过递增点云块索引,考虑新的当前点云块。迭代这些步骤,直到基于末尾点云块标志的值在框1410中确定当前点云块是末尾点云块。
当基于末尾点云块标志确定当前点云块是末尾点云块时,过程1400进行到框1416。在框1416中,执行字节对齐过程。然后,在框1418中,实现压缩的点云块帧数据单元。压缩的点云块帧数据单元可以被并入到比特流中以用于向解码器传输。
图15是具有点云块单元类型的描述的点云块信息数据帧1500的实施方式。点云块信息数据帧(点云块帧数据单元)1500类似于图7中的点云块帧(点云块帧数据单元)732。如图所示,点云块信息数据帧1500包括参考点云块帧数据单元(由refFrmIdx指示)1502、当前点云块帧数据单元(frmIdx)1504和点云块信息单元1506。参考点云块帧数据单元1502包括例如与帧间预测或跳过预测结合使用的参考帧。当前点云块帧数据单元1504包含正在编码或解码的多个点云块数据单元。点云块信息数据单元1506包括点云块数据单元(例如,点云块502),其具有可用点云块类型之一。在实施方式中,点云块数据单元可以是帧内点云块类型(intra patch type,pdu)1508、PCM点云块类型(ppdu)1510、帧间点云块类型(dpdu)1512和跳过点云块类型(spdu)1514。点云块信息单元1506中可以存在任意数量的点云块,并且点云块可以按照任意顺序。
图16是点云块帧数据单元解码过程1600的实施方式。点云块帧数据单元解码过程1600可以用于对由编码器编码的体积图像进行解码(也称为解压缩)。点云块帧数据单元解码过程1600可以由解码器(例如,熵解码单元70)实现。
在框1602中,接收并读取已编码点云块信息数据。已编码点云块信息数据可以作为比特流的一部分由解码器的接收器接收。已编码点云块信息数据包含对由编码器编码的体积图像进行解码所需的数据和信息。例如,已编码点云块信息数据包括已经被压缩并且需要从点云块重建体积图像(例如,3D点云)的多个点云块数据单元(例如,点云块502或点云块数据单元850)。作为框1602的一部分,一旦过程1600已经开始,就可以获得来自多个点云块的点云块(例如,初始点云块数据单元或当前点云块数据单元)。
在框1604中,接收与已编码点云块信息数据对应的输入。在实施方式中,输入与经压缩的点云块中的一个或更多个对应。在实施方式中,输入包括与点云块对应的参考帧索引、帧索引、参考索引、点云块索引和点云块模式中的一个或更多个。
在框1606中,进行对点云块的点云块类型是否是跳过点云块类型的确定。当点云块的点云块类型是跳过点云块类型时,过程1600进行到框1608。在框1608中,对与点云块对应的参考点云块索引(spdu_patch_index)进行解码。也就是说,对参考点云块索引的值进行解码。在实施方式中,spdu_patch_index是参考帧中的点云块的索引,由refFrmIdx指示。
在框1610中,当点云块类型是跳过点云块类型时,基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引来确定点云块的参考索引(refIdx)。在实施方式中,参考索引——也可以称为参考点云块索引(RefPatchIdx)——基于以下确定:RefPatchIdx=predictorIdx+spdu_patch_index[frmIdx][p],其中predictorIdx是预测器索引,spdu_patch_index是跳过类型点云块数据单元索引,frmIdx是帧索引,以及p是点云块索引。在实施方式中,当前点云块帧数据单元索引(frmIdx)和点云块索引(p)中指向正确点云块数据单元的指针指向多维阵列中的适当位置以找到点云块的实际参考索引。
在框1612中,当点云块类型是跳过点云块类型时,基于确定的参考索引来重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[frmIdx][p]=Patch2dShiftU[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch2dShiftV[frmIdx][p]=Patch2dShiftV[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch2dSizeU[frmIdx][p]=Patch2dSizeU[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch2dSizeV[frmIdx][p]=Patch2dSizeV[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch3dShiftTangentAxis[rfmIdx][p]=Patch3dShiftTangentAxis[refIdx][RefPatchIdx]
Patch3dShiftBiTangentAxis[frmIdx][p]=Patch3dShiftBiTangentAxis[refIdx][RefPatchIdx]
Patch3dShiftNormalAxis[frmIdx][p]=Patch3dShiftNormalAxis[refIdx][RefPatchIdx]
PatchNormalAxis[frmIdx][p]=PatchNormalAxis[refIdx][RefPatchIdx]
PatchTangentAxis[frmIdx][p]=PatchTangentAxis[refIdx][RefPatchIdx]
PatchBiTangentAxis[frmIdx][p]=PatchBiTangentAxis[refIdx][RefPatchIdx]
PatchOrientationSwapFlag[frmIdx][p]=PatchOrientationSwapFlag[refIdx][RefPatchIdx]
PatchLod[frmIdx][p]=PatchLod[refIdx][RefPatchIdx]
PatchProjectionMode[frmIdx][p]=dpdu_projection_mode[frmIdx][p]。
在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[refIdx]
Patch2dShiftV[p]=pdu_2d_shift_v[refIdx]
Patch2dSizeU[p]=Patch2dSizeU[refIdx]
Patch2dSizeV[p]=Patch2dSizeV[refIdx]
Patch3dShiftT[p]=Patch3dShiftT[refIdx]
Patch3dShiftBT[p]=Patch3dShiftBT[refIdx]
Patch3dShiftN[p]=Patch3dShiftN[refIdx]
PatchNormalAxis[p]=PatchNormalAxis[refIdx]
Orientation[p]=Orientation[refIdx]
PatchLod[p]=PatchLod[refIdx]。
在框1650中,收集经重建的点云块信息数据(例如,将经重建的点云块信息数据存储在存储器中)并且过程1600循环回到框1602,因此可以对新点云块进行解码。
在框1614中,进行对点云块数据单元的点云块类型是否是帧内点云块类型的确定。当点云块的点云块类型为帧内点云块类型时,过程1600进行到框1616。在框1616中,基于当前帧索引([frmIdx])中的先前点云块数据单元(对应于点云块和递减的点云块索引)确定针对点云块数据单元的参考点云块数据单元索引(refIdx)。在实施方式中,当前帧(例如,点云块帧数据单元)用于参考。
在框1618中,使用对应于点云块的二维(2D)分量和对应于点云块的三维(3D)分量来对点云块进行解码。在实施方式中,根据以下对点云块进行解码:
解码算法:
u0(pdu_2d_shift_u)
u1(pdu_2d_shift_v)
d_size_u0(pdu_2d_delta_size_u)
d_size_v0(pdu_2d_delta_size_v)
u1(pdu_3d_shift_tangent_axis)
v1(pdu_3d_shift_bitangent_axis)
d1(pdu_3d_shift_normaI_axis)
n(pdu_normI_axis)
swap(pdu_orientation_swap_flag)
L0D(pdu_Iod)。
在框1620中,基于被解码的点云块重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[p]
Patch2dShiftV[p]=pdu_2d_shift_v[p]
Patch2dSizeU[p]=pdu_2d_delta_size_u[p]++Patch2dSizeU[refldx]
Patch2dSizeV[p]=pdu_2d_deIta_size_v[p]++Patch2dsizeV[refldx]
Patch3dShiftT[p]=pdu_3d_shift_tan[p]
Patch3dShiftBT[p]=pdu_3d_shift_bitan[p]
Patch3dShiftN[p]=pdu_shift_norm[p]
PatchNormalAxis[p]=pdu_norm_axis[p]
Orientation[p]=pdu_orientation_swap_flag[p]
PatchLod[p]=pdu_Iod[p]。
在框1650中,收集经重建的点云块信息数据(例如,将经重建的点云块信息数据存储在存储器中)并且过程1600循环回到框1602,因此可以对新的点云块进行解码。
在框1622中,进行对点云块的点云块类型是否为帧间点云块类型的确定。当点云块的点云块类型是帧间点云块类型时,过程1600进行到框1624。在框1624中,对与点云块对应的参考点云块索引(dpdu_patch_index)进行解码。也就是说,对参考点云块索引的值进行解码。在框1626中,基于与点云块对应的参考帧索引([refFrmIdx])和被解码的参考点云块索引来确定点云块的参考索引(refIdx)。
在框1628中,使用对应于点云块的二维(2D)分量和对应于点云块的三维(3D)分量来对点云块进行解码。在实施方式中,根据以下对点云块进行解码:
解码算法:
d_u0(pdu_2d_shift_u)
d_u1(pdu_2d_shift_v)
d_size_u0(pdu_2d_delta_size_u)
d_size_v0(pdu_2d_delta_size_v)
d_u1(pdu_3d_shift_tangent_axis)
d_v1(pdu_3d_shift_bitangent_axis)
d_d1(pdu_3d_shift-normal_axis)。
在框1630中,基于解码的点云块来重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[p]++Patch2dShiftU[refldx]
Patch2dShiftVf[p]=pdu_2d_shift_v[p]++Patch2dshiftV[refldx]
Patch2dsizeU[p]=pdu_2d_delta_size_u[p]++Patch2dSizeU[refldx]
Patch2dSizeV[p]=pdu_2d_delta_size_v[p]++Patch2dSizeV[refldx]
Patch3dShiftT[p]=pdu_3d_shift_tan[p]++Patch3dshiftT[refldx]
Patch3dShiftBT[p]=pdu_3d_shift_bitan[p]++patch3dshiftBT[refldx]
Patch3dShiftN[p]=pdu_shifi_norm[p]++Patch3dShiftN[refldx]
PatchNormaIAxis[p]=PatchnormaIAxis[refldx]
Orientation[p]=Orientation[refldx]
PatchLod[p]=PatchLod[refldx]。
在框1650中,收集经重建的点云块信息数据(例如,将经重建的点云块信息数据存储在存储器中)并且过程1600循环回到框1602,因此可以对新的点云块进行解码。
在框1632中,进行对点云块的点云块类型是否是PCM点云块(或原始)点云块类型的确定。当点云块的点云块类型是PCM点云块类型时,过程1600进行到框1634。在框1634中,基于与点云块对应的帧索引([frmIdx])和递减的点云块索引确定点云块的参考索引(refIdx)。
在框1636中,使用对应于点云块的二维(2D)分量和对应于点云块的三维(3D)分量来对点云块进行解码。在实施方式中,2D和3D分量包括以下:
解码算法:
separate_video_flag(ppdu_patch...)
u0(ppdu_2d_shift_u)
u1(ppdu_2d_shift_y)
d_size_u0(ppdu_2d_delta_size_u)
d_sze_v0(ppdu_2d_delta_size_v)
PCM points(ppdu_pcm_points)。
在框1638中,基于解码的点云块来重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[p]
Patch2dShiftV[p]=pdu_2d_shifty[p]
Patch2dSizeU[p]=pdu_2d_deltasize_u[p]++Patch2dSizeU[refIdx]
Patch2dSizeV[p]=pdu_2d_deIta_sizev[p]++Patch2dSizeV[refldx]
PatchPcmPoints[p]=ppdu_pcm_points[p]。
在框1650中,收集经重建的点云块信息数据(例如,将经重建的点云块信息数据存储在存储器中)并且过程1600循环回到框1602,因此可以对新的点云块进行解码。
在框1640中,进行对点云块的点云块类型是否是末尾点云块类型的确定。当点云块的点云块类型为末尾点云块类型时,过程1600进行到框1642。在框1642中,当点云块类型为末尾点云块类型时,终止与已编码点云块信息数据对应的重建过程。也就是说,重建过程完成。在实施方式中,可以在终止点云块帧数据单元解码过程1600之前对在具有末尾点云块类型的点云块中包括的任何数据进行解码。
图17是点云块帧数据单元解码过程1700的实施方式。点云块帧数据单元解码过程1700可以用于对由编码器编码的体积图像进行解码(也称为解压缩)。帧点云块数据单元解码过程1700可以由解码器(例如,熵解码单元70)实现。
在框1702中,接收并读取已编码点云块信息数据。已编码点云块信息数据可以作为比特流的一部分由解码器的接收器接收。已编码点云块信息数据包含对由编码器编码的体积图像进行解码所需的数据和信息。例如,已编码点云块信息数据包括已经被压缩、需要从点云块重建体积图像(例如,3D点云)的多个点云块数据单元(例如,点云块502或点云块数据单元850)。作为框1702的一部分,一旦过程1700已经开始,就可以获得来自多个点云块的点云块(例如,初始点云块或当前点云块)。
在框1704中,接收与已编码点云块信息数据对应的输入。在实施方式中,输入对应于经压缩的点云块中的一个或更多个。在实施方式中,输入包括与点云块对应的参考帧索引、帧索引、参考索引、点云块索引和点云块模式中的一个或更多个。
在框1706中,进行对点云块的点云块类型是否是跳过点云块类型的确定。当点云块的点云块类型是跳过点云块类型时,过程1700进行到框1708。在框1708中,对与点云块对应的参考点云块索引(spdu_patch_index)进行解码(或确定)。也就是说,对参考点云块索引的值进行解码或确定。
在框1710中,当点云块类型是跳过点云块类型时,基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引来确定针对点云块的参考索引(refIdx)。在实施方式中,参考索引——也可以称为参考点云块索引(RefPatchIdx)——基于以下确定:RefPatchIdx=predictorIdx+spdu_patch_index[frmIdx][p],其中predictorIdx是预测器索引,spdu_patch_index是跳过类型点云块数据单元索引,frmIdx是帧索引,以及p是点云块索引。
在框1712中,当点云块类型是跳过点云块类型时,基于确定的参考索引来重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[frmIdx][p]=Patch2dShiftU[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch2dShiftV[frmIdx][p]=Patch2dShiftV[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch2dSizeU[frmIdx][p]=Patch2dSizeU[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch2dSizeV[frmIdx][p]=Patch2dSizeV[refIdx][RefPatchIdx]*ops_occupancy_packing_block_size
Patch3dShiftTangentAxis[frmIdx][p]=Patch3dShiftTangentAxis[refIdx][RefPatchIdx]
Patch3dShiftBiTangentAxis[frmIdx][p]=Patch3dShiftBiTangentAxis[refIdx][RefPatchIdx]
Patch3dShiftNormalAxis[frmIdx][p]=Patch3dShiftNormalAxis[refIdx][RefPatchIdx]
PatchNormalAxis[frmIdx][p]=PatchNormalAxis[refIdx][RefPatchIdx]
PatchTangentAxis[frmIdx][p]=PatchTangentAxis[refIdx][RefPatchIdx]
PatchBiTangentAxis[frmIdx][p]=PatchBiTangentAxis[refIdx][RefPatchIdx]
PatchOrientationSwapFlag[frmIdx][p]=PatchOrientationSwapFlag[refIdx][RefPatchIdx]
PatchLod[frmIdx][p]=PatchLod[refIdx][RefPatchIdx]
PatchProjectionMode[frmIdx][p]=dpdu_projection_mode[frmIdx][p]。
在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[refIdx]
Patch2dShiftV[p]=pdu_2d_shift_v[refIdx]
Patch2dSizeU[p]=Patch2dSizeU[refIdx]
Patch2dSizeV[p]=Patch2dSizeV[refIdx]
Patch3dShiftT[p]=Patch3dShiftT[refIdx]
Patch3dShiftBT[p]=Patch3dShiftBT[refIdx]
Patch3dShiftN[p]=Patch3dShiftN[refIdx]
PatchNormalAxis[p]=PatchNormalAxis[refIdx]
Orientation[p]=Orientation[refIdx]
PatchLod[p]=PatchLod[refIdx]。
在框1760中,对标志进行解码以确定是否存在更多点云块要考虑。在实施方式中,该标志被指定为more_patches_available_flag。在框1762中,确定标志的值。当标志具有第一值(例如,一)时,过程1700进行到框1764。在框1764中,存储经重建的点云块信息数据并且该过程循环回到框1702,因此可以对新的点云块进行解码。当标志具有第二值(例如,零)时,过程1700进行到框1742。在框1742中,当点云块类型是末尾点云块类型时,终止与已编码点云块信息数据对应的重建过程。也就是说,重建过程完成。
在框1714中,进行对点云块数据单元的点云块类型是否是帧内点云块类型的确定。当点云块的点云块类型为帧内点云块类型时,过程1700进行到框1716。在框1716中,基于当前帧索引([frmIdx])中的先前点云块数据单元(对应于点云块和递减的点云块索引)确定点云块数据单元的参考点云块数据单元索引(refIdx)。
在框1718中,使用对应于点云块的二维(2D)分量和对应于点云块的三维(3D)分量来对点云块进行解码。在实施方式中,根据以下对点云块进行解码:
解码算法:
u0(pdu_2d_shift_u)
u1(pdu_2d_shift_v)
d_size_u0(pdu_2d_delta_size_u)
d_size_v0(pdu_2d_delta_size_v)
u1(pdu_3d_shift_tangent_axis)
v1(pdu_3d_shift_bitangent_axis)
d1(pdu_3d_shift_normaI_axis)
n(pdu_normI_axis)
swap(pdu_orientation_swap_flag)
L0D(pdu_Iod)。
在框1720中,基于解码的点云块重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[p]
Patch2dShiftV[p]=pdu_2d_shift_v[p]
Patch2dSizeU[p]=pdu_2d_delta_size_u[p]++Patch2dSizeU[refldx]
Patch2dSizeV[p]=pdu_2d_deIta_size_v[p]++Patch2dsizeV[refldx]
Patch3dShiftT[p]=pdu_3d_shift_tan[p]
Patch3dShiftBT[p]=pdu_3d_shift_bitan[p]
Patch3dShiftN[p]=pdu_shift_norm[p]
PatchNormalAxis[p]=pdu_norm_axis[p]
Orientation[p]=pdu_orientation_swap_flag[p]
PatchLod[p]=pdu_Iod[p]。
在框1760中,对标志进行解码以确定是否存在更多点云块要考虑。在实施方式中,该标志被指定为more_patches_available_flag。在框1762中,确定标志的值。当标志具有第一值(例如,一)时,过程1700进行到框1764。在框1764中,存储经重建的点云块信息数据并且该过程1700循环回到框1702,因此可以对新的点云块进行解码。当标志具有第二值(例如,零)时,过程1700进行到框1742。在框1742中,当点云块类型是末尾点云块类型时,终止与已编码点云块信息数据对应的重建过程。也就是说,重建过程完成。
在框1722中,进行对点云块的点云块类型是否为帧间点云块类型的确定。当点云块的点云块类型是帧间点云块类型时,过程1700进行到框1724。在框1724中,对与点云块对应的参考点云块索引(dpdu_patch_index)进行解码。也就是说,对参考点云块索引的值进行解码。在框1726中,基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引来确定点云块的参考索引(refIdx)。
在框1728中,使用对应于点云块的二维(2D)分量和对应于点云块的三维(3D)分量来对点云块进行解码。在实施方式中,根据以下对点云块进行解码:
解码算法:
d_u0(pdu_2d_shift_u)
d_u1(pdu_2d_shift_v)
d_size_u0(pdu_2d_delta_size_u)
d_size_v0(pdu_2d_delta_size_v)
d_u1(pdu_3d_shift_tangent_axis)
d_v1(pdu_3d_shift_bitangent_axis)
d_d1(pdu_3d_shift-normal_axis)。
在框1730中,基于解码的点云块来重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[p]++Patch2dShiftU[refldx]
Patch2dShiftVf[p]=pdu_2d_shift_v[p]++Patch2dshiftV[refldx]
Patch2dsizeU[p]=pdu_2d_delta_size_u[p]++Patch2dSizeU[refldx]
Patch2dSizeV[p]=pdu_2d_delta_size_v[p]++Patch2dSizeV[refldx]
Patch3dShiftT[p]=pdu_3d_shift_tan[p]++Patch3dshiftT[refLdx]
Patch3dShiftBT[p]=pdu_3d_shift_bitan[p]++patch3dshiftBT[refldx]
Patch3dShiftN[p]=pdu_shift_norm[p]++Patch3 dShiftN[refldx]
PatchNormaIAxis[p]=PatchnormaIAxis[refldx]
Orientation[p]=Orientation[refldx]
PatchLod[p]=PatchLod[refldx]。
在框1760中,对标志进行解码以确定是否存在更多点云块要考虑。在实施方式中,该标志被指定为more_patches_available_flag。在框1762中,确定标志的值。当标志具有第一值(例如,一)时,过程1700进行到框1764。在框1764中,存储经重建的点云块信息数据并且该过程1700循环回到框1702,因此可以对新的点云块进行解码。当标志具有第二值(例如,零)时,过程1700进行到框1742。在框1742中,当点云块类型是末尾点云块类型时,终止与已编码点云块信息数据对应的重建过程。也就是说,重建过程完成。
在框1732中,进行对点云块的点云块类型是否是PCM点云块(或原始)点云块类型的确定。当点云块的点云块类型是PCM点云块类型时,过程1700进行到框1734。在框1734中,基于与点云块对应的帧索引([frmIdx])和递减的点云块索引确定点云块的参考索引(refIdx)。
在框1736中,使用对应于点云块的二维(2D)分量和对应于点云块的三维(3D)分量来对点云块进行解码。在实施方式中,2D和3D分量包括以下:
解码算法:
separate_video_flag(ppdu_patch...)
u0(ppdu_2d_shift_u)
u1(ppdu_2d_shift_y)
d_size_u0(ppdu_2d_delta_size_u)
d_sze_v0(ppdu_2d_delta_size_v)
PCM points(ppdu_pcm_points)。
在框1738中,基于解码的点云块来重建点云块。在实施方式中,根据以下重建点云块:
重建:
Patch2dShiftU[p]=pdu_2d_shift_u[p]
Patch2dShiftV[p]=pdu_2d_shifty[p]
Patch2dSizeU[p]=pdu_2d_deltasize_u[p]++Patch2dSizeU[refIdx]
Patch2dSizeV[p]=pdu_2d_deIta_sizev[p]++Patch2dSizeV[refldx]
PatchPcmPoints[p]=ppdu_pcm_points[p]。
在框1760中,对标志进行解码以确定是否存在更多点云块要考虑。在实施方式中,该标志被指定为more_patches_available_flag。在框1762中,确定标志的值。当标志具有第一值(例如,一)时,过程1700进行到框1764。在框1764中,存储经重建的点云块信息数据并且该过程1700循环回到框1702,因此可以对新的点云块进行解码。当标志具有第二值(例如,零)时,过程1700进行到框1742。在框1742中,当点云块类型是末尾点云块类型时,终止与已编码点云块信息数据对应的重建过程。也就是说,重建过程完成。
图18是由解码器(例如,熵解码单元70)实现的PCC的方法1800的实施方式。方法1800可以用于对已编码比特流进行解码以重建体积图像。在框1802中,解码器的接收器接收已编码点云块信息数据。已编码点云块信息可以包括与多个点云块(例如,点云块502)对应的信息。在框1804中,解码器的处理器获得与已编码点云块信息数据对应的点云块。点云块具有点云块类型(点云块模式)。点云块类型可以是例如跳过、帧内、帧间、PCM或末尾。
在框1806中,解码器的处理器确定点云块的点云块类型是否是末尾点云块类型。在框1808中,当点云块类型为末尾点云块类型时,解码器的处理器终止与已编码点云块信息数据对应的重建过程。
图19是由解码器(例如,熵解码单元70)实现的PCC的方法1900的实施方式。方法1900可以用于对已编码比特流进行解码以重建体积图像。在框1902中,解码器的接收器接收已编码点云块信息数据。已编码点云块信息可以包括与多个点云块(例如,点云块502)对应的信息。在框1904中,解码器的处理器获得与已编码点云块信息数据对应的点云块。点云块具有点云块类型(点云块模式)。点云块类型可以是例如跳过、帧内、帧间、PCM或末尾。
在框1906中,解码器的处理器确定点云块的点云块类型是否是跳过点云块类型。在框1908中,当点云块类型为跳过点云块类型时,解码器的处理器对与点云块对应的参考点云块索引(spdu_patch_index)进行解码。在框1910中,当点云块类型是跳过点云块类型时,解码器的处理器基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引来确定点云块的参考索引(refIdx)。在框1912中,当点云块类型是跳过点云块类型时,解码器的处理器基于确定的参考索引来重建点云块的体积表示。一旦重建,就可以在电子设备(例如,智能电话、平板电脑、膝上型计算机等)的显示器上为用户显示3D图像。
图20是由解码器(例如,熵解码单元70)实现的PCC的方法2000的实施方式。方法2000可以用于对已编码比特流进行解码以重建体积图像。在框2002中,解码器的接收器接收已编码点云块信息数据。已编码点云块信息可以包括与多个点云块(例如,点云块502)对应的信息。在框2004中,解码器的处理器获得与已编码点云块信息数据对应的点云块。点云块具有点云块类型(点云块模式)。点云块类型可以是例如跳过、帧内、帧间、PCM或末尾。
在框2006中,解码器的处理器确定点云块的点云块类型是否是跳过点云块类型。在框2008中,当点云块类型为跳过点云块类型时,解码器的处理器对与点云块对应的参考点云块索引(spdu_patch_index)进行解码。在框2010中,当点云块类型是跳过点云块类型时,解码器的处理器基于与点云块对应的参考帧索引([refFrmIdx])和解码的参考点云块索引来确定点云块的参考索引(refIdx)。在框2012中,当点云块类型是跳过点云块类型时,解码器的处理器基于确定的参考索引来重建点云块的体积表示。
在框2014中,解码器的处理器确定更多点云块可用标志是具有第一值还是第二值。在框2016中,当更多点云块可用标志具有第一值时,将经重建的体积表示存储在解码器的存储器中。一旦重建了点云块中的所有点云块,就可以在电子设备(例如,智能电话、平板电脑、膝上型计算机等)的显示器上为用户显示3D图像。
在框2018中,当更多点云块可用标志具有第二值时,解码器的处理器终止已编码点云块信息数据的重建过程。
图21是由编码器(例如,熵编码单元56)实现的PCC的方法2100的实施方式。可以执行方法2100以将体积图像编码成比特流以用于向解码器传输。在框2102中,编码器的接收器获得点云块帧数据单元(pfdu),该点云块帧数据单元(pfdu)用于标识多个点云块中的每一个的点云块类型(pdfu_patch_mode)的。在框2104中,编码器的处理器确定来自多个点云块的点云块的点云块类型是否是末尾点云块类型。
在框2106中,当点云块类型不是末尾点云块类型时,编码器的处理器对点云块的点云块信息数据进行编码,点云块信息数据包括点云块的点云块类型。在框2108中,当点云块类型被设置为末尾点云块类型时,编码器的处理器对点云块的点云块信息数据进行编码。点云块信息数据包括点云块的末尾点云块类型。
在实施方式中,点云块信息数据和末尾点云块类型被编码成向解码器发送的比特流。
图22是由编码器(例如,熵编码单元56)实现的PCC的方法2200的实施方式。可以执行方法2200以将体积图像编码成比特流以用于向解码器传输。在框2202中,编码器的接收器获得多个点云块中的每一个的点云块帧数据单元(pfdu)。在框2204中,编码器的处理器向多个点云块中的每一个添加末尾点云块标志。
在框2206中,编码器的处理器基于末尾点云块标志的值确定来自多个点云块的点云块的点云块类型是否是末尾点云块类型。在框2208中,当点云块类型不是末尾点云块类型时,编码器的处理器对点云块的点云块信息数据进行编码,点云块信息数据包括点云块的点云块类型和末尾点云块标志。
在实施方式中,包括点云块类型和末尾点云块标志的点云块信息数据被编码成向解码器发送的比特流。
图23是根据本公开内容的实施方式的译码设备2300(例如,编码器22、解码器28等)的示意图。译码设备2300适用于实现本文中公开的方法和过程。译码设备2300包括用于接收数据的进入端口2310和接收器单元(Rx)2320;用于处理数据的处理器、逻辑单元或中央处理单元(central processing unit,CPU)2330;用于发送数据的发送器单元(Tx)2340和离开端口2350;以及用于存储数据的存储器2360。译码设备2300还可以包括耦合至用于光信号或电信号的离开或进入的进入端口2310、接收器单元2320、发送器单元2340和离开端口2350的光电(optical-to-electrical,OE)组件和电光(electrical-to-optical,EO)组件。
处理器2330由硬件和软件实现。处理器2330可以实现为一个或多个CPU芯片、核(例如,多核处理器)、现场可编程门阵列(field-programmable gate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)和数字信号处理器(digitalsignal processor,DSP)。处理器2330与进入端口2310、接收器单元2320、发送器单元2340、离开端口2350和存储器2360进行通信。处理器2330包括译码模块2370。译码模块2370实现上述公开的实施方式。在实施方式中,译码模块2370是被配置成投影经重建的体积图像的重建模块。因此,对译码模块2370的包括对译码设备2300的功能性提供了实质性的改进并且实现了译码设备2300到不同状态的变换。可替选地,译码模块2370被实现为存储在存储器2360中并由处理器2330执行的指令。
译码设备2300还可以包括用于向用户传送数据和从用户传送数据的输入和/或输出(input and/or output,I/O)设备2380。I/O设备2380可以包括诸如用于显示视频数据的显示器、用于输出音频数据的扬声器等的输出设备。I/O设备2380还可以包括诸如键盘、鼠标、轨迹球等的输入设备和/或用于与这样的输出设备交互的相应接口。
存储器2360包括一个或更多个磁盘、磁带驱动器和固态驱动器,并且可以用作溢出数据存储设备,以在这样的程序被选择以进行执行时存储程序,并存储在程序执行期间读取的指令和数据。存储器2360可以是易失性和非易失性的,并且可以是只读存储器(read-only memory,ROM)、随机存取存储器(random-access memory,RAM)、三元内容可寻址存储器(ternary content-addressable memory,TCAM)和静态随机存取存储器(staticrandom-access memory,SRAM)。
图24是用于译码的装置2400的实施方式的示意图。在实施方式中,用于译码的装置2400在译码设备2402(例如,编码器22或解码器28)中实现。译码设备2402包括接收装置2401。接收装置2401被配置成接收要编码的图片或接收要解码的比特流。译码设备2402包括耦合至接收装置2401的发送装置2407。发送装置2407被配置成将比特流传输至解码器或将已解码图像传输至显示装置(例如,I/O设备2380之一)。
译码设备2402包括存储装置2403。存储装置2403耦合至接收装置2401或发送装置2407中的至少一个。存储装置2403被配置成存储指令。译码设备2402还包括处理装置2405。处理装置2405耦合至存储装置2403。处理装置2405被配置成执行存储装置2403中存储的指令以执行本文中公开的方法。
在实施方式中,提供了适合于实现本文中公开的概念的语法。
点云块帧数据单元(pfdu)。在实施方式中,引入特殊的终止点云块数据单元类型来指示点云块帧数据单元终止。
在实施方式中,向每个点云块数据单元添加特殊的一个比特(1-bit)标志以指示点云块帧数据单元终止。
在实施方式中,点云块信息数据如下。
在实施方式中,原始delta_patch_data_unit语法元素如下。
在实施方式中,添加的skip_patch_data_unit语法元素如下。
skip_patch_data_unit(frmIdx,patchIndex){ | 描述符 |
spdu_patch_index[frmIdx][patchIndex] | ae(v) |
} |
因为已经引入了跳过点云块数据单元类型,所以减少了已编码比特流表示中的开销量。
新添加的元素的语义如下。
spdu_patch_index[frmIdx][p]加上p指定点云块帧中点云块的索引PredIdx,其中索引ReFIdx对应于参考点云块帧列表中的第一点云块帧。
以跳过预测模式进行编码的点云块数据单元的解码过程如下。当pfdu_patch_mode[frmIdx][p]等于P_SKIP时,则使用用于对跳过已编码点云块数据单元进行解码的过程,其中frmIdx和p作为对该过程的输入,并且该过程的输出(Patch2dShiftU、Patch2dShiftV、Patch2dSizeU、Patch2dSizeV、Patch3dShiftT、Patch3dShiftBT、Patch3dShiftN、PatchNormalAxis、Orientation、PatchLod)被用作输出。
根据前述内容,应认识到,点云块的取向对于默认投影过程可能不同。可以使用1比特标志以简化的方式用信号通知点云块的取向。引入了在默认取向与优选取向之间切换的机制。
虽然在本公开内容中已经提供了几个实施方式,但是可以理解的是,所公开的系统和方法可以在不脱离本公开内容的精神或范围的情况下以许多其他特定形式来实施。本示例被认为是说明性的而非限制性的,并且意图不限于本文中给出的细节。例如,各种元件或组件可以组合或集成在另一系统中,或者可以省略或不实现某些特征。
另外,在不脱离本公开内容的范围的情况下,在各个实施方式中分立或分开地描述和示出的技术、系统、子系统和方法可以与其他系统、组件、技术或方法组合或集成。变化、替换和变更的其他示例可以由本领域技术人员确定,并且可以在不脱离本文中公开的精神和范围的情况下做出。
Claims (16)
1.一种点云解码(point cloud coding,PCC)的方法,其特征在于包括:
获取与点云块对应的点云块标志,所述点云块标志用于指示所述点云块的点云块类型(patch_mode)是否为跳过点云块类型、帧内点云块类型、帧间点云块类型或末尾点云块类型;
当所述点云块类型为所述末尾点云块类型时,终止所述点云块的重建过程。
2.一种点云解码(point cloud coding,PCC)的方法,其特征在于包括:
确定点云块的点云块类型(patch_mode)为帧间点云块类型;
对与所述点云块对应的第二参考点云块索引(dpdu_patch_index)进行解码;
基于与所述点云块对应的参考帧索引([refFrmIdx])和解码的所述第二参考点云块索引来确定所述点云块的参考索引(refIdx);
使用与所述点云块对应的二维(2D)分量和与所述点云块对应的三维(3D)分量来对所述点云块进行解码,其中所述二维(2D)分量和所述三维(3D)分量是基于所述点云块的参考索引(refIdx)而获得的;以及
基于解码的所述点云块来重建所述点云块的体积表示。
3.根据权利要求2所述的方法,其特征在于还包括:
确定所述点云块的点云块类型是帧内点云块类型;
基于与所述点云块对应的帧索引([frmIdx])和递减的点云块索引确定所述点云块的参考索引(refIdx);
使用与所述点云块对应的二维(2D)分量和与所述点云块对应的三维(3D)分量来对所述点云块进行解码;以及
基于解码的所述点云块来重建所述体积表示。
4.根据权利要求2至3中任一项所述的方法,其特征在于还包括:
确定所述点云块的点云块类型为跳过点云块类型;
当所述点云块类型为所述跳过点云块类型时,对与所述点云块对应的参考点云块索引(spdu_patch_index)进行解码;
当所述点云块类型为所述跳过点云块类型时,基于与所述点云块对应的所述参考帧索引([refFrmIdx])和解码的所述参考点云块索引,确定所述点云块的参考索引(refIdx);以及
当所述点云块类型为所述跳过点云块类型时,基于确定的所述参考索引来重建所述点云块的体积表示。
5.根据权利要求2至4中任一项所述的方法,其特征在于还包括:
确定所述点云块的点云块类型是脉冲编码调制(PCM)点云块类型;
基于与所述点云块对应的帧索引([frmIdx])和递减的点云块索引来确定所述点云块的参考索引(refIdx);
使用与所述点云块对应的关于独立点的二维(2D)分量和与所述点云块对应的关于所述独立点的三维(3D)分量来对所述点云块进行解码;以及
基于解码的所述点云块来重建所述体积表示。
6.根据权利要求2至5中任一项所述的方法,其特征在于还包括接收与所述点云块对应的输入,其中,所述输入包括点云块模式、点云块索引、所述参考索引、帧索引和参考帧索引中的一者或更多者。
7.根据权利要求2至6中任一项所述的方法,其特征在于还包括在电子设备的显示器上显示基于重建的体积表示生成的图像。
8.根据权利要求2至6中任一项所述的方法,其特征在于还包括:
确定更多点云块可用标志是具有第一值还是第二值;
当所述更多点云块可用标志具有所述第一值时,存储所述重建的体积表示;以及
当所述更多点云块可用标志具有所述第二值时,终止所述点云块的重建过程。
9.根据权利要求8所述的方法,其特征在于还包括:
确定所述点云块的点云块类型是帧内点云块类型;
基于与所述点云块对应的帧索引([frmIdx])和递减的点云块索引来确定所述点云块的参考索引(refIdx);
使用与所述点云块对应的二维(2D)分量和与所述点云块对应的三维(3D)分量来对所述点云块进行解码;以及
基于解码的所述点云块来重建所述体积表示。
10.一种点云编码(point cloud coding,PCC)的方法,其特征在于包括:
获得点云块帧数据单元(pfdu),所述点云块帧数据单元用于标识多个点云块中的每一个的点云块类型(pdfu_patch_mode);
对所述点云块对应的点云块标志进行编码,所述点云块标志用于指示所述点云块的点云块类型是否为跳过点云块类型、帧内点云块类型、帧间点云块类型或末尾点云块类型。
11.根据权利要求10所述的方法,其特征在于,所述点云块帧数据单元包括帧索引(frmIdx)、与所述点云块对应的二维(2D)分量和与所述点云块对应的三维(3D)分量。
12.根据权利要求10至11中任一项所述的方法,其特征在于,还包括编码帧索引、与所述点云块对应的二维(2D)分量和与所述点云块对应的三维(3D)分量。
13.根据权利要求10至12中任一项所述的方法,其特征在于还包括对以下步骤进行迭代:确定所述点云块类型是否是所述末尾点云块类型,以及对来自所述多个点云块的后续点云块的所述点云块标志进行编码,直到来自所述多个点云块的点云块之一被确定为具有所述末尾点云块类型。
14.一种解码设备,其特征在于包括:
接收器,其被配置成接收用于表示已编码点云块的数据;
存储器,其耦合至所述接收器,所述存储器存储指令;以及
处理器,其耦合至所述存储器,所述处理器被配置成执行所述指令以使所述解码设备执行根据权利要求1至9中任一项所述的方法。
15.一种编码设备,其特征在于包括:
接收器,其被配置成接收三维(3D)图像;
存储器,其耦合至所述接收器,所述存储器包含指令;
处理器,其耦合至所述存储器,所述处理器被配置成执行所述指令以使所述编码设备执行根据权利要求10至13中任一项所述的方法。
16.一种存储有比特流的计算机可读介质,其特征在于,所述比特流包括用于表示点云块的数据和用于表示所述点云块对应的点云块标志的数据,所述点云块标志用于指示所述点云块的点云块类型(patch_mode)是否为跳过点云块类型、帧内点云块类型、帧间点云块类型或末尾点云块类型。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962817391P | 2019-03-12 | 2019-03-12 | |
US62/817,391 | 2019-03-12 | ||
PCT/US2020/022395 WO2020186060A1 (en) | 2019-03-12 | 2020-03-12 | Patch data unit coding and decoding for point-cloud data |
CN202080020566.4A CN113906757B (zh) | 2019-03-12 | 2020-03-12 | 用于点云数据的点云块数据单元编码和解码 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080020566.4A Division CN113906757B (zh) | 2019-03-12 | 2020-03-12 | 用于点云数据的点云块数据单元编码和解码 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116156192A true CN116156192A (zh) | 2023-05-23 |
Family
ID=72427656
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310092091.5A Pending CN116156192A (zh) | 2019-03-12 | 2020-03-12 | 用于点云数据的点云块数据单元编码和解码 |
CN202080020566.4A Active CN113906757B (zh) | 2019-03-12 | 2020-03-12 | 用于点云数据的点云块数据单元编码和解码 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080020566.4A Active CN113906757B (zh) | 2019-03-12 | 2020-03-12 | 用于点云数据的点云块数据单元编码和解码 |
Country Status (8)
Country | Link |
---|---|
US (1) | US12002243B2 (zh) |
EP (1) | EP3932067A4 (zh) |
JP (2) | JP7267447B2 (zh) |
KR (1) | KR20210134391A (zh) |
CN (2) | CN116156192A (zh) |
BR (1) | BR112021018025A2 (zh) |
SG (1) | SG11202109967SA (zh) |
WO (1) | WO2020186060A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3713238A1 (en) | 2019-03-20 | 2020-09-23 | InterDigital VC Holdings, Inc. | Processing a point cloud |
KR20230074504A (ko) * | 2020-09-25 | 2023-05-30 | 광동 오포 모바일 텔레커뮤니케이션즈 코포레이션 리미티드 | 포인트 클라우드 인코딩 방법, 포인트 클라우드 디코딩 방법 및 관련 장치 |
WO2023201450A1 (zh) * | 2022-04-17 | 2023-10-26 | Oppo广东移动通信有限公司 | 编解码方法、码流、编码器、解码器以及存储介质 |
WO2024077637A1 (zh) * | 2022-10-14 | 2024-04-18 | 浙江大学 | 一种编解码方法、装置、编码器、解码器及存储介质 |
WO2024178632A1 (zh) * | 2023-02-28 | 2024-09-06 | Oppo广东移动通信有限公司 | 点云编解码方法、装置、设备及存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6215910B1 (en) * | 1996-03-28 | 2001-04-10 | Microsoft Corporation | Table-based compression with embedded coding |
US6499060B1 (en) * | 1999-03-12 | 2002-12-24 | Microsoft Corporation | Media coding for loss recovery with remotely predicted data units |
US7724827B2 (en) | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
US10607408B2 (en) * | 2016-06-04 | 2020-03-31 | Shape Labs Inc. | Method for rendering 2D and 3D data within a 3D virtual environment |
EP3349182A1 (en) | 2017-01-13 | 2018-07-18 | Thomson Licensing | Method, apparatus and stream for immersive video format |
US11514613B2 (en) | 2017-03-16 | 2022-11-29 | Samsung Electronics Co., Ltd. | Point cloud and mesh compression using image/video codecs |
EP3418976A1 (en) * | 2017-06-22 | 2018-12-26 | Thomson Licensing | Methods and devices for encoding and reconstructing a point cloud |
US11113845B2 (en) * | 2017-09-18 | 2021-09-07 | Apple Inc. | Point cloud compression using non-cubic projections and masks |
US10909725B2 (en) | 2017-09-18 | 2021-02-02 | Apple Inc. | Point cloud compression |
US10424083B2 (en) * | 2017-10-21 | 2019-09-24 | Samsung Electronics Co., Ltd. | Point cloud compression using hybrid transforms |
TWI815842B (zh) | 2018-01-16 | 2023-09-21 | 日商索尼股份有限公司 | 影像處理裝置及方法 |
US11012713B2 (en) * | 2018-07-12 | 2021-05-18 | Apple Inc. | Bit stream structure for compressed point cloud data |
US11190803B2 (en) | 2019-01-18 | 2021-11-30 | Sony Group Corporation | Point cloud coding using homography transform |
-
2020
- 2020-03-12 CN CN202310092091.5A patent/CN116156192A/zh active Pending
- 2020-03-12 SG SG11202109967S patent/SG11202109967SA/en unknown
- 2020-03-12 KR KR1020217032497A patent/KR20210134391A/ko active Search and Examination
- 2020-03-12 CN CN202080020566.4A patent/CN113906757B/zh active Active
- 2020-03-12 WO PCT/US2020/022395 patent/WO2020186060A1/en unknown
- 2020-03-12 BR BR112021018025A patent/BR112021018025A2/pt unknown
- 2020-03-12 EP EP20770121.0A patent/EP3932067A4/en active Pending
- 2020-03-12 JP JP2021555263A patent/JP7267447B2/ja active Active
-
2021
- 2021-09-03 US US17/466,844 patent/US12002243B2/en active Active
-
2023
- 2023-04-19 JP JP2023068788A patent/JP2023089230A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
SG11202109967SA (en) | 2021-10-28 |
US20210398324A1 (en) | 2021-12-23 |
EP3932067A4 (en) | 2022-08-24 |
CN113906757A (zh) | 2022-01-07 |
EP3932067A1 (en) | 2022-01-05 |
US12002243B2 (en) | 2024-06-04 |
BR112021018025A2 (pt) | 2021-11-23 |
WO2020186060A1 (en) | 2020-09-17 |
JP7267447B2 (ja) | 2023-05-01 |
JP2023089230A (ja) | 2023-06-27 |
CN113906757B (zh) | 2023-02-03 |
KR20210134391A (ko) | 2021-11-09 |
JP2022525599A (ja) | 2022-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7111846B2 (ja) | 点群符号化のための高レベルシンタックス設計 | |
WO2019199415A1 (en) | Differential coding method for patch side information | |
CN113906757B (zh) | 用于点云数据的点云块数据单元编码和解码 | |
CN113302663B (zh) | 点云译码中的有效patch旋转 | |
WO2020146341A1 (en) | Point cloud bitstream structure and auxiliary information differential coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |