CN114390285A - 压缩编码方法及数据封装方法和相关装置、设备、介质 - Google Patents
压缩编码方法及数据封装方法和相关装置、设备、介质 Download PDFInfo
- Publication number
- CN114390285A CN114390285A CN202111651192.9A CN202111651192A CN114390285A CN 114390285 A CN114390285 A CN 114390285A CN 202111651192 A CN202111651192 A CN 202111651192A CN 114390285 A CN114390285 A CN 114390285A
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- pixel
- image
- transparent channel
- 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.)
- Granted
Links
Images
Classifications
-
- 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/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- 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/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/136—Incoming video signal characteristics or properties
-
- 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/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请公开了一种压缩编码方法及数据封装方法和相关装置、设备、介质,其中,压缩编码方法包括:基于待编码图像各像素点的透明度,得到透明通道图像;对透明通道图像进行划分,得到若干子块;其中,子块中各像素点的像素值相同,且若干子块的集合覆盖透明通道图像;基于各子块的属性信息进行编码,得到透明通道图像的编码数据;其中,属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,且子块幅值表示子块中各像素点的像素值。上述方案,能够提升压缩编码的效率和质量,并降低压缩编码的功耗。
Description
技术领域
本申请涉及图像处理技术领域,特别是涉及一种压缩编码方法及数据封装方法和相关装置、设备、介质。
背景技术
现在智能移动设备的普及以及网络技术的不断发展,使得视频作为信息传递的媒介成为可能,并越来越得到广泛的应用。Alpha通道(以下将称为透明通道)通常用于表示一张图片中对应像素点的透明度。透明通道在图像处理软件、动画创作领域以及视频编辑软件等等应用场景,均具有重要作用。
基于此,提出高效的压缩编码算法用于透明通道具有十分现实的意义。然而,传统的压缩标准主要针对亮度分量与色度分量,无法应用于透明通道的压缩编码。有鉴于此,如何提升压缩编码的效率的质量,并降低压缩编码的功耗,成为亟待解决的问题。
发明内容
本申请主要解决的技术问题是提供一种压缩编码方法及数据封装方法和相关装置、设备、介质,能够提升压缩编码的效率和质量,并降低压缩编码的功耗。
为了解决上述技术问题,本申请第一方面提供了一种压缩编码方法,包括:基于待编码图像各像素点的透明度,得到透明通道图像;对透明通道图像进行划分,得到若干子块;其中,子块中各像素点的像素值相同,且若干子块的集合覆盖透明通道图像;基于各子块的属性信息进行编码,得到透明通道图像的编码数据;其中,属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,且子块幅值表示子块中各像素点的像素值。
为了解决上述技术问题,本申请第二方面提供了一种数据封装方法,包括:获取待编码图像的第一编码数据和第二编码数据;其中,第一编码数据为待编码图像的透明通道图像的编码数据,第二编码数据为待编码图像的色度和/或亮度的编码数据;基于第一编码数据的第一数据量,确定利用预设封包机制承载透明通道图像需要的第一载荷;基于第一载荷和第二编码数据的第二数据量,确定承载待编码图像所需数据包的第一数量;基于第一数据量和第一数量,确定各个数据包分别分配的第一编码数据的第三数据量;对于各个数据包,确定利用预设封包机制承载第三数据量所需的第二载荷,并基于第二载荷和数据包的有效载荷,将第二编码数据的未分配部分分配至数据包的剩余载荷。
为了解决上述技术问题,本申请第三方面提供了一种压缩编码装置,包括:通道获取模块、子块划分模块和属性编码模块,通道获取模块,用于基于待编码图像各像素点的透明度,得到透明通道图像;子块划分模块,用于对透明通道图像进行划分,得到若干子块;其中,子块中各像素点的像素值相同,且若干子块的集合覆盖透明通道图像;属性编码模块,用于基于各子块的属性信息进行编码,得到透明通道图像的编码数据;其中,属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,且子块幅值表示子块中各像素点的像素值。
为了解决上述技术问题,本申请第四方法提供了一种数据封装装置,包括:数据获取模块、载荷确定模块、数量确定模块、第一分配模块和第二分配模块,数据获取模块,用于获取待编码图像的第一编码数据和第二编码数据;其中,第一编码数据为待编码图像的透明通道图像的编码数据,第二编码数据为待编码图像的色度和/或亮度的编码数据;载荷确定模块,用于基于第一编码数据的第一数据量,确定利用预设封包机制承载透明通道图像需要的第一载荷;数量确定模块,用于基于第一载荷和第二编码数据的第二数据量,确定承载待编码图像所需数据包的第一数量;第一分配模块,用于基于第一数据量和第一数量,确定各个数据包分别分配的第一编码数据的第三数据量;第二分配模块,用于对于各个数据包,确定利用预设封包机制承载第三数据量所需的第二载荷,并基于第二载荷和数据包的有效载荷,将第二编码数据的未分配部分分配至数据包的剩余载荷。
为了解决上述技术问题,本申请第五方面提供了一种电子设备,包括相互耦接的存储器和处理器,存储器中存储有程序指令,处理器用于执行程序指令以实现上述第一方面的压缩编码方法,或实现上述第二方面的数据封装方法。
为了解决上述技术问题,本申请第六方面提供了一种计算机可读存储介质,存储有能够被处理器运行的程序指令,程序指令用于实现上述第一方面的压缩编码方法,或实现上述第二方面的数据封装方法。
上述方案,基于待编码图像各像素点的透明度,得到透明通道图像,并对透明通道图像进行划分,得到若干子块,且子块中各像素点的像素值相同,若干子块的集合覆盖透明通道图像,在此基础上,基于各子块的属性信息进行编码,得到透明通道图像的编码数据,且属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,子块幅值表示子块中各像素点的像素值,一方面在压缩编码过程中,能够充分利用透明通道其前景与背景通常具有锐利边缘且前景与背景通常各自集中于一个区域的特性,将透明通道图像划分为各自区域内像素值相同的若干子块,来实现压缩编码,能够尽可能地保留边缘信息,有利于提升压缩编码的质量,另一方面由于仅需通过子块划分即可实现压缩编码,无需其他复杂操作,有利于降低运算复杂度,从而能够提升压缩编码的效率,并降低压缩编码的功耗。
附图说明
图1是本申压缩编码方法一实施例的流程示意图;
图2是透明通道图像一实施例的应用示意图;
图3是透明通道图像一实施例的划分示意图;
图4是边长为1时子块划分一实施例的示意图;
图5是边长为2时子块划分一实施例的示意图;
图6是边长为3时子块划分一实施例的示意图;
图7是图1中步骤S12一实施例的流程示意图;
图8是透明通道图像另一实施例的划分示意图;
图9是像素扩展一实施例的示意图;
图10是本申请数据封装方法一实施例的流程示意图;
图11是RTP协议包一实施例的结构示意图;
图12是one-byte形式的头部扩展一实施例的结构示意图;
图13是two-byte形式的头部扩展一实施例的结构示意图;
图14是IP数据包一实施例的结构示意图;
图15是本申请压缩编码装置一实施例的框架示意图;
图16是本申请数据封装装置一实施例的框架示意图;
图17是本申请电子设备一实施例的框架示意图;
图18是本申请计算机可读存储介质一实施例的框架示意图。
具体实施方式
下面结合说明书附图,对本申请实施例的方案进行详细说明。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。
本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。此外,本文中的“多”表示两个或者多于两个。
请参阅图1,图1是本申请压缩编码方法一实施例的流程示意图。
具体而言,可以包括如下步骤:
步骤S11:基于待编码图像各像素点的透明度,得到透明通道图像。
在一个实施场景中,待编码图像可以为摄像器件单独拍摄的图像,示例性地,待编码图像可以为用户通过诸如手机、平板电脑、相机等拍摄设备拍摄的图像。或者,待编码图像也可以为摄像器件拍摄的视频数据中至少一帧图像,示例性地,手机、平板电脑、相机等设备可以拍摄到视频数据,则可以将视频数据中各帧图像分别作为待编码图像,从而可以分别对视频数据中各帧图像的透明通道图像进行压缩编码,当然,也可以从视频数据中选择至少一张图像作为待编码图像,在此不做限定。
在一个实施场景中,透明通道图像与待编码图像具有相同分辨率,且透明通道图像中像素点的像素值为待编码图像中对应位置处像素点的透明度。示例性地,为了便于描述,待编码图像和透明通道图像两者的分辨率可以均记为W*H,其中,W表示图像宽度,H表示图像高度,则透明通道图像中位于第i行第j列的像素点的像素值,即为待编码图像中位于第i行第j列的像素点的透明度。其他情况可以以此类推,在此不再一一举例。
在一个实施场景中,透明度可以以预设数值范围内的数值来表示。示例性地,预设数值范围可以为0至1。当然,预设数值范围也可以为其他数值范围,在此不做限定。此外,数值与透明度可以为正相关,即数值越大,透明度越高,反之,数值越小,透明度越低。以预设数值范围为0至1为例,在透明度为0时,可以表示完全不透明,透明度为1时,可以表示完全透明。当然,数值与透明度也可以为负相关,即数值越小,透明度越高,反之,数值越大,透明度越低。以预设数值范围为0至1为例,在透明度为0时,可以表示完全透明,透明度为1时,可以表示完全不透明。上述举例仅仅是实际应用过程中几种可能的实施方式,并不因此而限定实际应用过程中所采用的具体方式。
在一个实施场景中,请结合参阅图2,图2是透明通道图像一实施例的应用示意图。如图2所示,图像C由图像A的前景和图像B组成,即可以简单表示为C=A*α+B*(1-α),其中,0<α<1。如图2所示,由于图像A的透明通道的存在,使得图像A中物体可以从背景中分离出来,并将其添加到新图像(即图像B)中。正如图像A、图像B、图像C,透明通道α也是空间上变化的信号组成。在数字视频中,透明通道也是随时间变化,同RGB通道表现相同。如图2所述,透明通道一方面可以表示形状,另一方面也可以表示像素的透明度。透明通道其特质在于,背景与前景具有锐利的边缘,且通常背景与前景各自集中在一个区域,而不会像亮度分量和色度分量相对比较分散,而本申请公开实施例技术方案恰好可以尽可能地保留该边缘信息,从而能够有利于后端处理时尽可能地降低出现伪影的可能性,提升编码质量,具体过程,可以继续参阅下述描述。
步骤S12:对透明通道图像进行划分,得到若干子块。
本公开实施例中,子块中各像素点的像素值相同,且若干子块的集合可以覆盖透明通道图像。需要说明的是,子块的尺寸可以相同,也可以不同,也就是说,在若干子块中任意两个子块的尺寸可以相同,也可以不同,在此不做限定。此外,透明通道图像的具体划分方式,可以参阅下述相关描述,在此暂不赘述。
在一个实施场景中,各个子块的形状可以均为矩形,且矩形的长度和宽度可以不同。或者,各个子块的形状可以均为矩形,且矩形的长度和宽度也可以相同,在此情况下,子块的形状为正方形。或者,各个子块的形状可以均为矩形,且部分子块的长度和宽度相同,而部分子块的长度和宽度不同。需要说明的是,上述几种情况仅仅是实际应用过程中,可能的几种实施方式,并不因此而限定子块采用其他形状的可能性。
在一个实施场景中,各个子块可以互不相交,也就是说,透明通道图像中任一像素点仅存在于一个子块中,而不会同时存在于两个或两个以上的子块中。上述方式,划分透明通道图像所得到的各个子块互不相交,能够有利于尽可能地减少数据冗余,提升数据压缩程度。
在一个实施场景中,对于任一子块而言,其周围存在至少一个相邻子块,且该子块与其相邻子块两者存在至少一对彼此相邻的角点。示例性地,在子块的形状为矩形的情况下,矩形的顶点可以视为子块的角点,则可以在子块中找到至少一个角点,且该角点相邻于其相邻子块的角点。需要说明的是,对于透明通道图像中第i行第j列的像素点而言,为了便于描述,可以简单地记为像素点(i,j),其他位置处的像素点可以以此类推,与像素点(i,j)相邻的像素点可以包括:像素点(i+1,j)、(i-1,j)、(i,j+1)、(i,j-1)。上述方式,子块周围存在至少一个相邻子块,且子块与其相邻子块两者存在至少一对彼此相邻的角点,能够提升各个子块位置分布的有序性,有利于提高后续数据解码的效率。
步骤S13:基于各子块的属性信息进行编码,得到透明通道图像的编码数据。
本公开实施例中,属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,且子块幅值表示子块中各像素点的像素值。需要说明的是,由于子块中各像素点的像素值相同,故子块幅值可以视为子块内任一像素点的像素值。
在一个实施场景中,如前所述,子块的形状可以为矩形,在此情况下,子块位置可以表示矩形顶点的坐标,子块尺寸可以包括矩形的长度和宽度。上述方式,将子块设置为矩形,且子块位置表示矩形顶点的坐标,子块尺寸包括矩形的长度和宽度,有利于降低子块划分的难度,有利于提升压缩编码效率。
在一个具体的实施场景中,各子块的属性信息中的子块位置分别表示的坐标,均为矩形在第一方位处顶点的坐标。也就是说,在子块的形状为矩形的情况下,可以采用矩形同一方位处顶点的坐标来表示。示例性地,第一方位可以为:左上角、左下角、右上角、右下角中任一者,如可以选择各个子块左上角的顶点的坐标,来分别表示各个子块属性信息中的子块位置,当然也可以选择其他方位,在此不再一一举例。上述方式,各子块的属性信息中的子块位置分别表示的坐标,均为矩形在第一方位处顶点的坐标,第一方位为左上角、左下角、右上角、右下角中任一者,即采用同一方位顶点来表示子块位置,能够尽可能地降低编码复杂性,有利于提升压缩编码效率。
在一个具体的实施场景中,如前所述,矩形的长度和宽度也可以相同,在此情况下,子块的形状即为正方形,则对应地,子块尺寸可以为正方形的边长。上述方式,将子块设置为正方形,且子块尺寸为正方形的边长,能够进一步降低子块划分难度,有利于进一步提升压缩编码效率,此外,由于将子块形状设置为正方形,子块尺寸仅需编码正方形的边长,能够进一步减少数据量,有利于进一步提升压缩程度。
在一个实施场景中,请结合参阅图3,图3是透明通道图像一实施例的划分示意图。如图3所示,为了尽可能地提升压缩程度,子块的形状可以均为正方形,则对于每个子块而言,其属性信息可以采用四元组(X,Y,L,A)表示。其中,X,Y表示子块位置,如图3所示,对于左下角白色线条所示的子块而言,X,Y可以表示该子块左上角顶点的横坐标和纵坐标;L表示子块尺寸,如图3所示,对于左下角白色线条所示的子块而言,L可以表示该子块的边长;A可以表示子块幅值,如图3所示,对于左下角白色线条所示的子块而言,A可以表示该子块中个像素点的像素值。由此可见,在子块的形状设置为正方形时,采用四元组即可表示对各个子块进行编码,有利于提升压缩程度。
在一个实施场景中,示例性地,子块的属性信息中各个元素可以采用一个字节来表示。示例性地,对于子块的形状设置为正方形而言,可以采用一个字节表示横坐标X,可以采用一个字节表示纵坐标Y,可以采用一个字节表示边长L,可以采用一个字节表示子块幅值A。也就是说,在子块的形状设置为正方形时,每个子块编码后的数据量为四个字节。在子块的形状设置为其他形状的情况下,可以以此类推,在此不再一一举例。在此基础上,可以将所有子块的编码字节的集合,作为透明通道图像的编码数据。
在一个实施场景中,为了便于说明本申请基于子块划分来对透明通道图像进行压缩编码对于提升压缩程度的有效性,请结合参阅图4、图5和图6,图4是边长为1时子块划分一实施例的示意图,图5是边长为2时子块划分一实施例的示意图,图6是边长为3时子块划分一实施例的示意图。如图4所示,在边长L为1的情况下,子块(图3白色块所示)包含透明通道图像一个像素点,子块可以采用四元组(2,3,1,1)表示,对于子块中的元素编码前可以1个字节表示,编码后四元组需使用4个字节表示,此时压缩率R=4/1=400%;如图5所示,在边长L为2的情况下,子块(图4白色块所示)包含透明通道图像四个像素点,子块可以采用四元组(2,3,2,1)表示,对于子块中的元素编码前可以采用4个字节表示,编码后四元组需使用4个字节表示,此时压缩率R=4/4=100%;如图6所示,在边长L为3的情况下,子块(图4白色块所示)包含透明通道图像九个像素点,子块可以采用四元组(2,3,3,1)表示,对于子块中的元素编码前可以采用9个字节表示,编码后四元组需使用4个字节表示,此时压缩率R=4/9≈44.4%。故此,压缩率R与L的关系可以表示为:R=4/L2,也就是说,子块的尺寸越大,压缩率越低,压缩程度越高,故本申请通过子块划分来进行压缩编码,能够充分利用透明通道图像的数据集中特性,有利于尽可能地提升透明通道图像的压缩程度。
上述方案,基于待编码图像各像素点的透明度,得到透明通道图像,并对透明通道图像进行划分,得到若干子块,且子块中各像素点的像素值相同,若干子块的集合覆盖透明通道图像,在此基础上,基于各子块的属性信息进行编码,得到透明通道图像的编码数据,且属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,子块幅值表示子块中各像素点的像素值,一方面在压缩编码过程中,能够充分利用透明通道其前景与背景通常具有锐利边缘且前景与背景通常各自集中于一个区域的特性,将透明通道图像划分为各自区域内像素值相同的若干子块,来实现压缩编码,能够尽可能地保留边缘信息,有利于提升压缩编码的质量,另一方面由于仅需通过子块划分即可实现压缩编码,无需其他复杂操作,有利于降低运算复杂度,从而能够提升压缩编码的效率,并降低压缩编码的功耗。
请参阅图7,图7是图1中步骤S12一实施例的流程示意图。具体而言,可以包括如下步骤:
步骤S121:将透明通道图像的预设位置,作为参考点。
在一个实施场景中,预设位置位于透明通道图像在第二方向的角点处。具体而言,第二方位可以为左上角、左下角、右上角、右下角中任一者,也就是说,在首次划分时,可以选择透明通道图像任一角点,作为参考点。示例性地,请结合参阅图8,图8是透明通道图像另一实施例的划分示意图。如图8所示,在首次划分时,可以选择透明通道图像左上角的角点D1,作为参考点。
步骤S122:在透明通道图像,以参考点为起始点进行扩展,直至不满足预设条件为止,得到子块。
本公开实施例中,子块的角点为参考点,也就是说,扩展得到的子块其中一个角点即为参考点(也就是起始点)。示例性地,如图8所示,首次扩展,可以得到图8白色框所示的子块,为了便于区分,在白色框中标记数字“1”,以表示为在首次扩展得到。1号子块左上角的角点D1即为参考点。
在一个实施场景中,扩展的具体方式,可以根据预先规定的子块的形状来进行设置。例如,在预先规定子块的形状为矩形的情况下,每次可以在水平方向和垂直方向分别进行扩展若干像素宽度;或者,在预先规定子块的形状为正方形的情况下,每次可以在水平方向和垂直方向同时扩展相同像素宽度。其他情况可以以此类推,在此不再一一举例。
在一个实施场景中,如前所述,预设位置位于透明通道图像在第二方位的角点处。基于此,可以初始化第一像素宽度和第二像素宽度,并以参考点为起始点,向第一方向扩展第一像素宽度,向第二方向扩展第二像素宽度,得到候选扩展区域,且第一方向为水平且远离起始点的方向,第二方向为垂直且远离起始点的方向,在此基础上,可以基于当前扩展满足预设条件,将最新候选扩展区域作为目标扩展区域,并基于第一像素步长更新第一像素宽度,基于第二像素步长更新第二像素宽度,以及重新执行上述以参考点为起始点的步骤以及后续步骤,直至不满足预设条件为止,将最新目标扩展区域作为子块。上述方式,通过以参考点为起始点,并分别朝水平且远离起始点的第一方向以及垂直且远离起始点的第二方向进行像素扩展,从而根据当前扩展满足预设条件来将最新候选扩展区域作为目标扩展区域,并基于像素步长来更新扩展时的像素宽度,以重新进行扩展,进而能够尽可能地简化子块划分流程,有利于提升压缩编码效率。
在一个具体的实施场景中,以预先规定子块的形状为正方形为例,可以初始化第一像素宽度和第二像素宽度分别为1。其他情况可以以此类推,在此不再一一举例。需要说明的是,为了提升压缩编码的准确性,第一像素宽度和第二像素宽度可以默认设置为1。
在一个具体的实施场景中,在第二方位为左上角的情况下,第一方向为水平向右,第二方向为垂直向下;或者,在第二方位为左下角的情况下,第一方向为水平向右,第二方向为垂直向上;或者,在第二方位为右上角的情况下,第一方向为水平向左,第二方向为垂直向下;或者,在第二方位为右下角的情况下,第一方向为水平向左,第二方向为垂直向上。上述方式,通过选择透明通道图像的角点作为起始点,并向水平远离起始点的方向以及向垂直远离起始点的方向分别进行扩展,有利于提升扩展效率。
在一个具体的实施场景中,以预先规定子块的形状为正方形为例,第一像素步长和第二像素步长可以分别为1,即每次向第一方向和第二方向扩展1个像素宽度。其他情况可以以此类推,在此不再一一举例。需要说明的是,为了提升压缩编码的准确性,第一像素步长和第二像素步长可以默设置为1。
在一个具体的实施场景中,若在首次扩展时,当前扩展就不满足预设条件,则可以认为参考点为一孤立像素点,从而可以参考图4及其相关描述进行编码,进而实现无损压缩编码。当然,若在实际应用中,可以接受有损压缩,则考虑到单一像素点对于后续解码影响微乎其微,也可以不对该像素点进行编码,在后续解码过程中,可以采用插值等算法预测出该像素点的像素值。此外,若在第i(i大于1)次扩展时,当前扩展不满足预设条件,可以将第i-1次扩展所得到的目标扩展区域,作为子块。
在一个实施场景中,预设条件设置为包括:扩展的像素点的像素值均与起始点的像素值相同,扩展的像素点均不属于已划分出来的子块,扩展的像素点均属于透明通道图像,上述方式,从扩展像素点的像素值、是否已被占有、是否属于透明通道图像等三方面进行判断,有利于提升压缩编码的准确性。
在一个实施场景中,请结合参阅图9,图9是像素扩展一实施例的示意图。如图9所示,可以以透明通道图像左上角的角点为参考点,并在首次扩展时,可以将该参考点作为起始点进行扩展。具体而言,可以初始化第一像素宽度和第二像素宽度分别为1,并向水平向右和垂直向下方向分别扩展1个像素宽度,此时所得到的候选扩展区域即为左上角像素点的像素区域,由于当前扩展满足预设条件,故可以将该像素区域作为首次扩展对应的目标扩展区域,并根据第一像素步长1和第二像素步长1分别更新第一像素宽度和第二像素宽度,更新后的第一像素宽度和第二像素宽度分别为2;在第2次扩展时,可以向水平向右和垂直向下方向分别扩展2个像素宽度,此时所得到的候选扩展区域即为左上区域点状虚线箭头交叉表示的像素区域,由于当前扩展满足预设条件,故可以将该像素区域作为第2次扩展对应的目标扩展区域,并根据第一像素步长1和第二像素步长1分别更新第一像素宽度和第二像素宽度,更新后的第一像素宽度和第二像素宽度分别为3;在第3次扩展时,可以向水平向右和垂直向下方向分别扩展3个像素宽度,此时所得到的候选扩展区域即为左上区域条状虚线箭头交叉表示的像素区域,由于当前扩展满足预设条件,故可以将该像素区域作为第3次扩展对应的目标扩展区域,并根据第一像素步长1和第二像素步长1分别更新第一像素宽度和第二像素宽度,更新后的第一像素宽度和第二像素宽度分别为4;在第4次扩展时,可以向水平向右和垂直向下方向分别扩展4个像素宽度,此时所得到的候选扩展区域即为左上区域实线箭头交叉表示的像素区域,由于当前扩展满足预设条件,故可以将该像素区域作为第4次扩展对应的目标扩展区域,并根据第一像素步长1和第二像素步长1分别更新第一像素宽度和第二像素宽度,更新后的第一像素宽度和第二像素宽度分别为5;在第5次扩展时,可以向水平向右和垂直向下方向分别扩展5个像素宽度,由于当前扩展不满足预设条件(即扩展的像素点的像素值与起始点的像素值不再相同),此时可以结束扩展,并将最新目标扩展区域(即第4次扩展对应的目标扩展区域),作为子块。其他情况可以次类推,在此不再一一举例。
步骤S123:基于子块的其余角点,得到新的参考点,并重新执行在透明通道图像,以参考点为起始点进行扩展的步骤以及后续步骤,直至所有参考点均已作为起始点为止。
本公开实施例中,其余角点为起始点之外的角点。仍以图8所示的透明通道图像为例,在首次扩展得到1号子块之后,可以基于该1号子块的其余角点,得到新的参考点。其余角点可以包括角点D1之外的三个角点,其他情况可以以此类推,在此不再一一举例。需要说明的是,在重新进行像素扩展时,需要重新初始化前述第一像素宽度和第二像素宽度。示例性地,在前述例子中,在最后一次像素扩展时,第一像素宽度和第二像素宽度分别为5,则在得到子块,并重新进行像素扩展来寻找新的子块时,第一像素宽度和第二像素宽度重新初始化为1。其他情况可以以此类推,在此不再一一举例。
在一个实施场景中,在扩展得到子块之后,可以将透明通道图像中,分别与该子块的各个其余角点相邻且不属于该子块的像素点,作为新的参考点。上述方式,将透明通道图像中,分别与各个其余角点相邻且不属于子块的像素点,作为新的参考点,能够使任意两个子块不相交,有利于进一步提升压缩程度。
在一个实施场景中,在得到新的参考点之后,可以分别基于各个新的参考点,继续执行前述像素扩展的步骤,从而可以得到若干2号子块,在得到若干2号子块之后,又可以基于各个2号子块的其余角点,得到新的参考点,并分别基于各个新的参考点,继续执行前述像素扩展的步骤,从而可以得到若干3号子块,以此类推,在此不再一一举例。随着子块划分的不断进行,参考点越来越少,当不再有可用的参考点时,可以结束划分,即此时可以认为透明通道图像划分结束。
上述方案,将透明通道图像的预设位置,作为参考点,在透明通道图像,以参考点为起始点进行扩展,直至不满足预设条件为止,得到子块,且子块的角点为参考点,在此基础上,再基于子块的其余角点,得到新的参考点,并重新执行上述在透明通道图像,以参考点为起始点进行扩展的步骤,直至所有参考点均已作为起始点为止,且其余角点为起始点之外的角点,故能够有序、高效地通过像素扩展实现子块划分,有利于提升压缩编码的效率和质量。
请参阅图10,图10是本申请数据封装方法一实施例的流程示意图。
具体而言,可以包括如下步骤:
步骤S101:获取待编码图像的第一编码数据和第二编码数据。
本公开实施例中,第一编码数据为待编码图像的透明通道图像的编码数据,第二编码数据为待编码图像的色度和/或亮度的编码数据。
在一个实施场景中,第一编码数据可以通过前述任一压缩编码方法实施例中的步骤得到,具体编码过程,可以参阅前述公开实施例,在此不再赘述。当然,第一编码数据也不排除采用其他压缩编码方式编码得到,在此不做限定。
在一个实施场景中,第二编码数据可以通过诸如H.264等标准编码方式编码得到,在此不做限定。
在一个实施场景中,如前所述,待编码图像可以为摄像器件单独拍摄的图像,也可以为摄像器件拍摄的视频数据中至少一帧图像,具体可以参阅前述公开实施例中相关描述,在此不再赘述。
步骤S102:基于第一编码数据的第一数据量,确定利用预设封包机制承载透明通道图像需要的第一载荷。
在一个实施场景中,预设封包机制可以包括由RTP(Real-time TransportProtocol,实时传输协议)头部扩展进行封装。为了便于理解,请结合参阅图11,图11是RTP协议包一实施例的结构示意图。如图11所示,每个RTP协议包都会固定地包含前12个字节(即RTP报头)。需要说明的是,CSRC identifier(即特约信源标识符)仅在Mixer插入时才有。V表示版本(即Version),占2个比特,表示RTP的版本。P表示填充(即Padding),占1个比特,如果设定padding表示报文末端会包含一个或多个padding字节但是并不是属于负载部分。X表示扩展(即Extension),占1个比特,如果设定Extension,RTP报头后面会跟一个头部扩展,如果CSRC(即特约信源)存在,则该头部扩展可以跟随在CSRC之后。需要说明的是,在需跟随头部扩展的情况下,可以置字段X为1,否则可以置字段X为0。此外,M表示标记(即Marker),占1个比特,在报文流中可以通过字段M来划分每一帧的边界,PT表示负载类型(即Payload Type),占7个比特,表示RP负载类型,用于指定负载所采用的编码标准。Sequencenum表示序列编号,占16个比特,每发送一个RTP协议包,可以在将序列编号加1,接收方可以根据序列编号来检测是否丢包或者重建序列。Timestamp表示时间戳,占32个比特,时间戳反映了该RTP协议包第一个字节的采样时刻,接收方可以通过时间戳计算延迟和抖动。SSRCidentifier表示同步信源标识符,占32个比特,用于标识同步信源,该标识符随机选择,要求参加同一个视频会议的两个同步信源不可以具有相同的同步信源标识符。CSRCidentifier表示特约信源标识符,占32个比特,数量可以有0~15个,每个特约信源标识符标识了包含在该RTP协议包有效载荷中的所有特约信源。
在一个实施场景中,预设封包机制可以包括由RTP(Real-time TransportProtocol,实时传输协议)头部扩展进行封装。请结合参阅图12和图13,图12是one-byte形式的头部扩展一实施例的结构示意图,图13是two-byte形式的头部扩展一实施例的结构示意图。需要说明的是,one-byte(即单字节)形式的头部扩展与two-byte(即双字节)形式的头部扩展两者的主要区别在于字段ID、字段L占用的字节长度不同,one-byte形式的头部扩展中,字段ID、字段L分别占用一个字节,而two-byte形式的头部扩展中,字段ID、字段L分别占用两个字节。头部扩展的前两个字节表示头部扩展的类型,0xBEDE表示one-byte形式的头部扩展,0x1000表示two-byte形式的头部扩展。紧随其后的两个字节表示length(即除去4字节的头部,后续的长度),头部扩展由多个扩展元素组成,每个扩展元素同样分为头部与数据两部分,其中,扩展元素的头部由字段ID和字段L组成,字段ID用于标识不同类型的扩展元素,字段L用于指示扩展元素占用的字节长度(即去除字段ID和字段L后所占用的字节)。此外,如图12或图13所示,头部扩展需要按4字节对齐,因此不满足4字节对齐时会进行补零对齐。需要说明的是,为了提升数据传输效率,可以采用two-byte形式的头部扩展。
在一个实施场景中,RTP协议包可以封装于IP数据包进行传输,请结合参阅图14,图14是IP数据包一实施例的结构示意图。如图14所示,IP数据包通常不超过1500字节,去除IP报头、UDP(User Datagram Protocol,用户数据包协议)报头、RTP报头共40字节之后,还剩余1460字节,且由于透明通道图像的第一编码数据需要添加至RTP头部扩展,故还需去除4字节的扩展头部,也就是说,还可以剩余1456字节的有效载荷用于承载编码数据。需要说明的是,当采用其他协议的数据包来封装RTP协议包的情况下,可以以此类推计算出有效载荷,在此不再一一举例。
在一个实施场景中,可以基于待分配数据量和扩展元素的最大承载数据量,确定承载待分配数据量所需的扩展元素的第二数量,在此基础上,可以再基于待分配数据量、第二数量和扩展元素中元素头部所占的第四数据量,确定利用预设封包机制承载待分配数据量所消耗的实际载荷。需要说明的是,待分配数据量可以为第一数据量,此时实际载荷可以为第一载荷。为了便于描述,可以将第一数据量记为X字节,即待分配数据量为X字节,以采用two-byte形式的头部扩展为例,每个扩展元素最大可承载255个字节,即扩展元素的最大承载数据量为255字节,从而可以确定承载待分配数据量所需的扩展元素的第二数量为X/255,考虑到two-byte形式的头部扩展中每个扩展元素中元素头部所占的第四数据量为2字节,故基于待分配数据量X、第二数量X/255和扩展元素中元素头部所占的第四数据量(即2字节),可以确定需要消耗的载荷为X+(X/255)*2,为了便于描述,可以将上述需要消耗的载荷X+(X/255)*2记为T。当然,考虑到头部扩展需要按4字节进行补0。也就是说,当T可以被4整除时,此时表示无需补0,即此时实际载荷Q即为T;或者,当T不可以被4整除时,此时表示需要补0,即此时实际载荷Q可以表示为(T/4+1)*4,其中,()表示对运算结果下取整。例如,T为21字节时,实际载荷Q为24字节,即需要补3个字节。其他情况可以以此类推,在此不再一一举例。上述方式,预设封包机制包括由RTP头部扩展进行封装,且RTP头部扩展包含若干扩展元素,基于此基于待分配数据量和扩展元素的最大承载数据量,确定承载待分配数据量所需的扩展元素的第二数量,再基于待分配数据量、第二数量和扩展元素中元素头部所占的第四数据量,确定利用预设封包机制承载待分配数据量所消耗的实际载荷,且待分配数据量为第一数据量,实际载荷为第一载荷,故能够提升确定第一载荷的准确性。
步骤S103:基于第一载荷和第二编码数据的第二数据量,确定承载待编码图像所需数据包的第一数量。
具体而言,为了便于描述,可以将第一载荷记为Q,第二编码数据的第二数据量可以记为Y,则可以基于第一载荷Q和第二数据量Y,获取待编码图像的消耗载荷Q+Y,在此基础上,可以基于消耗载荷Q+Y和数据包(如,IP数据包)的有效载荷,确定第一数量。示例性地,以IP数据包为例,如前所述,IP数据包的有效载荷为1456字节,则可以判断消耗载荷Q+Y是否不大于有效载荷,若是,则确定编码数据仅需一帧数据包即可,反之,若消耗载荷Q+Y大于有效载荷,则可以确定编码数据需要多帧数据包,如可以将消耗载荷Q+Y除以有效载荷之后的商值加1。以IP数据包为例,第一数量N可以表示为(Q+Y)/1456+1。其他情况可以以此类推,在此不再一一举例。上述方式,基于第一载荷和第二数量,获取待编码图像的消耗载荷,并基于消耗载荷和数据包的有效载荷,确定第一数量,有利于降低确定第一数量的复杂度。
步骤S104:基于第一数据量和第一数量,确定各个数据包分别分配的第一编码数据的第三数据量。
在一个实施场景中,可以将第一编码数据随机分配到各个数据包,各个数据包剩余的有效载荷再分配第二编码数据。也就是说,各个数据包所分配的第三数据量可以是随机分配的。
在一个实施场景中,可以将第一数据量与第一数量之间的比值,作为第三数据量,各个数据包剩余的有效载荷再分配第二编码数据。也就是说,各个数据包所分配的第三数据量是平均分配的。示例性地,如前所述,第一数据量可以记为X,第一数量可以记为N,则第三数据量可以表示为X/N。上述方式,通过将第一数据量与第一数量之间的比值,作为第三数据量,能够将第一编码数据平均分配到各个数据包的有效载荷中,从而在后端解码过程中,能够每接收到一个数据包就解码出待编码图像的一部分,有利于提升后端处理效率。
步骤S105:对于各个数据包,确定利用预设封包机制承载第三数据量所需的第二载荷,并基于第二载荷和数据包的有效载荷,将第二编码数据的未分配部分分配至数据包的剩余载荷。
在一个实施场景中,可以基于待分配数据量和扩展元素的最大承载数据量,确定承载待分配数据量所需的扩展元素的第二数量,再基于待分配数据量、第二数量和扩展元素中元素头部所占的第四数据量,确定利用预设封包机制承载待分配数据量所消耗的实际载荷,且此时待分配数据量为第三数据量,实际载荷为第二载荷。示例性地,以平均分配为例,第三数据量表示为X/N,则可以参考前述第一载荷的计算过程,可以计算得到每个RTP需要消耗的载荷X/N+(X/N/255)*2。在此基础上,可以根据消耗的载荷X/N+(X/N/255)*2是否可以被4整除,来确定是否需要补零,以得到各个数据包承载第三数据量实际所需的第二载荷,具体可以参阅前述计算第一载荷的相关描述,在此不再赘述。也就是说,第一载荷和第二载荷,可以采用类似的计算步骤计算得到,故能够有利于进一步降低数据封装的复杂度,提升数据封装效率。
在一个实施场景中,在确定各个数据包承载第三数据量所需的第二载荷之后,对于每个数据包而言,基于第二载荷和数据包的有效载荷,将第二编码数据的未分配部分分配至数据包的剩余载荷。示例性地,对于1号数据包而言,根据第二载荷和数据包的有效载荷(如,对于IP数据包而言,其有效载荷为1456字节),可以计算出数据包有效的剩余载荷,并通过诸如H.264NAL(Network Abstract Layer,网络抽象层)单元分割机制将第二编码数据分包添加至剩余载荷,且分包后每个RTP协议包序列编号(即前述sequence num)依次递增1,RTP协议包时间戳相同且唯一。
上述方案,获取待编码图像的第一编码数据和第二编码数据,且第一编码数据为待编码图像的透明通道图像的编码数据,第二编码数据为待编码图像的色度和/或亮度的编码数据,并基于第一编码数据的第一数据量,确定利用预设封包机制承载透明通道图像需要的第一载荷,再基于第一载荷和第二编码数据的第二数据量,确定承载待编码图像所需数据包的第一数量,基于此再基于第一数据量和第一数量,确定各个数据包分别分配的第一编码数据的第三数据量,以及对于各个数据包,确定利用预设封包机制承载第三数据量所需的第二载荷,并基于第二载荷和数据包的有效载荷,将第二编码数据的未分配部分分配至数据包的剩余载荷,故能够针对透明通道图像经压缩编码之后的第一编码数据通过打包机制进行封装,有利于适应网络传输,且有利于提升后端处理的便利性。
请参阅图15,图15是本申请压缩编码装置150一实施例的框架示意图。压缩编码装置150包括:通道获取模块151、子块划分模块152和属性编码模块153,通道获取模块151,用于基于待编码图像各像素点的透明度,得到透明通道图像;子块划分模块152,用于对透明通道图像进行划分,得到若干子块;其中,子块中各像素点的像素值相同,且若干子块的集合覆盖透明通道图像;属性编码模块153,用于基于各子块的属性信息进行编码,得到透明通道图像的编码数据;其中,属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,且子块幅值表示子块中各像素点的像素值。
上述方案,一方面在压缩编码过程中,能够充分利用透明通道其前景与背景通常具有锐利边缘且前景与背景通常各自集中于一个区域的特性,将透明通道图像划分为各自区域内像素值相同的若干子块,来实现压缩编码,能够尽可能地保留边缘信息,有利于提升压缩编码的质量,另一方面由于仅需通过子块划分即可实现压缩编码,无需其他复杂操作,有利于降低运算复杂度,从而能够提升压缩编码的效率,并降低压缩编码的功耗。
在一些公开实施例中,子块为矩形,且子块位置表示矩形顶点的坐标,子块尺寸包括矩形的长度和宽度。
因此,将子块设置为矩形,且子块位置表示矩形顶点的坐标,子块尺寸包括矩形的长度和宽度,有利于降低子块划分的难度,有利于提升压缩编码效率。
在一些公开实施例中,各子块的属性信息中的子块位置分别表示的坐标,均为矩形在第一方位处顶点的坐标,第一方位为以下任一者:左上角、左下角、右上角、右下角。
因此,各子块的属性信息中的子块位置分别表示的坐标,均为矩形在第一方位处顶点的坐标,第一方位为左上角、左下角、右上角、右下角中任一者,即采用同一方位顶点来表示子块位置,能够尽可能地降低编码复杂性,有利于提升压缩编码效率。
在一些公开实施例中,子块为正方形,且子块尺寸为正方形的边长。
因此,将子块设置为正方形,且子块尺寸为正方形的边长,能够进一步降低子块划分难度,有利于进一步提升压缩编码效率,此外,由于将子块形状设置为正方形,子块尺寸仅需编码正方形的边长,能够进一步减少数据量,有利于进一步提升压缩程度。
在一些公开实施例中,子块互不相交。
因此,划分透明通道图像所得到的各个子块互不相交,能够有利于尽可能地减少数据冗余,提升数据压缩程度。
在一些公开实施例中,子块周围存在至少一个相邻子块,且子块与其相邻子块两者存在至少一对彼此相邻的角点。
因此,子块周围存在至少一个相邻子块,且子块与其相邻子块两者存在至少一对彼此相邻的角点,能够提升各个子块位置分布的有序性,有利于提高后续数据解码的效率。
在一些公开实施例中,子块划分模块152包括起始确定子模块,用于将透明通道图像的预设位置,作为参考点;子块划分模块152包括像素扩展子模块,用于在透明通道图像,以参考点为起始点进行扩展,直至不满足预设条件为止,得到子块;其中,子块的角点为参考点;子块划分模块152包括参考获取子模块,用于基于子块的其余角点,得到新的参考点;子块划分模块152包括重复执行子模块,用于结合像素扩展子模块、参考获取子模块重新执行在透明通道图像,以参考点为起始点进行扩展的步骤以及后续步骤,直至所有参考点均已作为起始点为止;其中,其余角点为起始点之外的角点。
因此,将透明通道图像的预设位置,作为参考点,在透明通道图像,以参考点为起始点进行扩展,直至不满足预设条件为止,得到子块,且子块的角点为参考点,在此基础上,再基于子块的其余角点,得到新的参考点,并重新执行上述在透明通道图像,以参考点为起始点进行扩展的步骤,直至所有参考点均已作为起始点为止,且其余角点为起始点之外的角点,故能够有序、高效地通过像素扩展实现子块划分,有利于提升压缩编码的效率和质量。
在一些公开实施例中,预设位置位于透明通道图像在第二方位的角点处;像素扩展子模块包括初始化单元,用于初始化第一像素宽度和第二像素宽度;像素扩展子模块包括候选扩展单元,用于以参考点为起始点,向第一方向扩展第一像素宽度,并向第二方向扩展第二像素宽度,得到候选扩展区域;其中,第一方向为水平且远离起始点的方向,第二方向为垂直且远离起始点的方向;像素扩展子模块包括目标扩展单元,用于基于当前扩展满足预设条件,将最新候选扩展区域作为目标扩展区域;像素扩展子模块包括宽度更新单元,用于基于第一像素步长更新第一像素宽度,并基于第二像素步长更新第二像素宽度;像素扩展子模块包括循环单元,用于结合候选扩展单元、目标扩展单元、宽度更新单元重新执行以参考点为起始点的步骤以及后续步骤,直至不满足预设条件为止,将最新目标扩展区域作为子块。
因此,通过以参考点为起始点,并分别朝水平且远离起始点的第一方向以及垂直且远离起始点的第二方向进行像素扩展,从而根据当前扩展满足预设条件来将最新候选扩展区域作为目标扩展区域,并基于像素步长来更新扩展时的像素宽度,以重新进行扩展,进而能够尽可能地简化子块划分流程,有利于提升压缩编码效率。
在一些公开实施例中,第二方位为左上角,第一方向为水平向右,第二方向为垂直向下;或者,第二方位为左下角,第一方向为水平向右,第二方向为垂直向上;或者,第二方位为右上角,第一方向为水平向左,第二方向为垂直向下;或者,第二方位为右下角,第一方向为水平向左,第二方向为垂直向上。
因此,通过选择透明通道图像的角点作为起始点,并向水平远离起始点的方向以及向垂直远离起始点的方向分别进行扩展,有利于提升扩展效率。
在一些公开实施例中,参考获取子模块具体用于将透明通道图像中,分别与各个其余角点相邻且不属于子块的像素点,作为新的参考点。
因此,将透明通道图像中,分别与各个其余角点相邻且不属于子块的像素点,作为新的参考点,能够使任意两个子块不相交,有利于进一步提升压缩程度。
在一些公开实施例中,预设条件包括:扩展的像素点的像素值均与起始点的像素值相同,扩展的像素点均不属于已划分出来的子块,扩展的像素点均属于透明通道图像。
因此,从扩展像素点的像素值、是否已被占有、是否属于透明通道图像等三方面进行判断,有利于提升压缩编码的准确性。
请参阅图16,图16是本申请数据封装装置160一实施例的框架示意图。数据封装装置160包括:数据获取模块161、载荷确定模块162、数量确定模块163、第一分配模块164和第二分配模块165,数据获取模块161,用于获取待编码图像的第一编码数据和第二编码数据;其中,第一编码数据为待编码图像的透明通道图像的编码数据,第二编码数据为待编码图像的色度和/或亮度的编码数据;载荷确定模块162,用于基于第一编码数据的第一数据量,确定利用预设封包机制承载透明通道图像需要的第一载荷;数量确定模块163,用于基于第一载荷和第二编码数据的第二数据量,确定承载待编码图像所需数据包的第一数量;第一分配模块164,用于基于第一数据量和第一数量,确定各个数据包分别分配的第一编码数据的第三数据量;第二分配模块165,用于对于各个数据包,确定利用预设封包机制承载第三数据量所需的第二载荷,并基于第二载荷和数据包的有效载荷,将第二编码数据的未分配部分分配至数据包的剩余载荷。
上述方案,获取待编码图像的第一编码数据和第二编码数据,且第一编码数据为待编码图像的透明通道图像的编码数据,第二编码数据为待编码图像的色度和/或亮度的编码数据,并基于第一编码数据的第一数据量,确定利用预设封包机制承载透明通道图像需要的第一载荷,再基于第一载荷和第二编码数据的第二数据量,确定承载待编码图像所需数据包的第一数量,基于此再基于第一数据量和第一数量,确定各个数据包分别分配的第一编码数据的第三数据量,以及对于各个数据包,确定利用预设封包机制承载第三数据量所需的第二载荷,并基于第二载荷和数据包的有效载荷,将第二编码数据的未分配部分分配至数据包的剩余载荷,故能够针对透明通道图像经压缩编码之后的第一编码数据通过打包机制进行封装,有利于适应网络传输,且有利于提升后端处理的便利性。
在一些公开实施例中,第一编码数据是利用上述任一压缩编码装置公开实施例中的压缩编码装置得到的。
因此,利用上述任一压缩编码装置编码得到第一编码数据,有利于提升数据封装效率,以及最终封装得到的数据包的质量。
在一些公开实施例中,预设封包机制包括由RTP头部扩展进行封装,且RTP头部扩展包含若干扩展元素;载荷确定模块162或第二分配模块165包括元素数量确定子模块、实际载荷计算子模块,元素数量确定子模块用于基于待分配数据量和扩展元素的最大承载数据量,确定承载待分配数据量所需的扩展元素的第二数量;实际载荷计算子模块用于基于待分配数据量、第二数量和扩展元素中元素头部所占的第四数据量,确定利用预设封包机制承载待分配数据量所消耗的实际载荷;其中,在待分配数据量为第一数据量的情况下,实际载荷为第一载荷,在待分配数据量为第三数据量的情况下,实际载荷为第二载荷。
因此,预设封包机制包括由RTP头部扩展进行封装,且RTP头部扩展包含若干扩展元素,基于此基于待分配数据量和扩展元素的最大承载数据量,确定承载待分配数据量所需的扩展元素的第二数量,再基于待分配数据量、第二数量和扩展元素中元素头部所占的第四数据量,确定利用预设封包机制承载待分配数据量所消耗的实际载荷,能够提升确定第一载荷和第二载荷的准确性,且第一载荷和第二载荷采用类似的计算步骤计算得到,故能够有利于进一步降低数据封装的复杂度,提升数据封装效率。
在一些公开实施例中,数量确定模块163包括消耗载荷计算子模块,用于基于第一载荷和第二数据量,获取待编码图像的消耗载荷;数量确定模块163包括第一数量确定子模块,用于基于消耗载荷和数据包的有效载荷,确定第一数量。
因此,基于第一载荷和第二数量,获取待编码图像的消耗载荷,并基于消耗载荷和数据包的有效载荷,确定第一数量,有利于降低确定第一数量的复杂度。
在一些公开实施例中,第一分配模块164具体用于将第一数据量与第一数量之间的比值,作为第三数据量。
因此,通过将第一数据量与第一数量之间的比值,作为第三数据量,能够将第一编码数据平均分配到各个数据包的有效载荷中,从而在后端解码过程中,能够每接收到一个数据包就解码出待编码图像的一部分,有利于提升后端处理效率。
请参阅图17,图17是本申请电子设备170一实施例的框架示意图。电子设备170包括相互耦接的存储器171和处理器172,存储器171中存储有程序指令,处理器172用于执行程序指令以实现上述任一压缩编码方法实施例中的步骤,或实现上述任一数据封装方法实施例中的步骤。具体地,电子设备170可以包括但不限于:台式计算机、笔记本电脑、服务器、手机、平板电脑等等,在此不做限定。
具体而言,处理器172用于控制其自身以及存储器171以实现上述任一压缩编码方法实施例中的步骤,或实现上述任一数据封装方法实施例中的步骤。处理器172还可以称为CPU(Central Processing Unit,中央处理单元)。处理器172可能是一种集成电路芯片,具有信号的处理能力。处理器172还可以是通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器172可以由集成电路芯片共同实现。
上述方案,一方面在压缩编码过程中,能够充分利用透明通道其前景与背景通常具有锐利边缘且前景与背景通常各自集中于一个区域的特性,将透明通道图像划分为各自区域内像素值相同的若干子块,来实现压缩编码,能够尽可能地保留边缘信息,有利于提升压缩编码的质量,另一方面由于仅需通过子块划分即可实现压缩编码,无需其他复杂操作,有利于降低运算复杂度,从而能够提升压缩编码的效率,并降低压缩编码的功耗。
请参阅图18,图8是本申请计算机可读存储介质180一实施例的框架示意图。计算机可读存储介质180存储有能够被处理器运行的程序指令181,程序指令181用于实现上述任一压缩编码方法实施例中的步骤,或实现上述任一数据封装方法实施例中的步骤。
上述方案,一方面在压缩编码过程中,能够充分利用透明通道其前景与背景通常具有锐利边缘且前景与背景通常各自集中于一个区域的特性,将透明通道图像划分为各自区域内像素值相同的若干子块,来实现压缩编码,能够尽可能地保留边缘信息,有利于提升压缩编码的质量,另一方面由于仅需通过子块划分即可实现压缩编码,无需其他复杂操作,有利于降低运算复杂度,从而能够提升压缩编码的效率,并降低压缩编码的功耗。
在一些实施例中,本公开实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述。
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (20)
1.一种压缩编码方法,其特征在于,包括:
基于待编码图像各像素点的透明度,得到透明通道图像;
对所述透明通道图像进行划分,得到若干子块;其中,所述子块中各像素点的像素值相同,且所述若干子块的集合覆盖所述透明通道图像;
基于各所述子块的属性信息进行编码,得到所述透明通道图像的编码数据;其中,所述属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,且所述子块幅值表示所述子块中各所述像素点的像素值。
2.根据权利要求1所述的方法,其特征在于,所述子块为矩形,且所述子块位置表示矩形顶点的坐标,所述子块尺寸包括所述矩形的长度和宽度。
3.根据权利要求2所述的方法,其特征在于,各所述子块的属性信息中的子块位置分别表示的坐标,均为所述矩形在第一方位处顶点的坐标,所述第一方位为以下任一者:左上角、左下角、右上角、右下角。
4.根据权利要求2所述的方法,其特征在于,所述子块为正方形,且所述子块尺寸为所述正方形的边长。
5.根据权利要求1所述的方法,其特征在于,所述子块互不相交。
6.根据权利要求5所述的方法,其特征在于,所述子块周围存在至少一个相邻子块,且所述子块与其相邻子块两者存在至少一对彼此相邻的角点。
7.根据权利要求1所述的方法,其特征在于,所述对所述透明通道图像进行划分,得到若干子块,包括:
将所述透明通道图像的预设位置,作为参考点;
在所述透明通道图像,以所述参考点为起始点进行扩展,直至不满足预设条件为止,得到所述子块;其中,所述子块的角点为所述参考点;
基于所述子块的其余角点,得到新的参考点,并重新执行在所述透明通道图像,以所述参考点为起始点进行扩展的步骤以及后续步骤,直至所有所述参考点均已作为所述起始点为止;
其中,所述其余角点为所述起始点之外的角点。
8.根据权利要求7所述的方法,其特征在于,所述预设位置位于所述透明通道图像在第二方位的角点处;以所述参考点为起始点进行扩展,直至不满足预设条件为止,得到所述子块,包括:
初始化第一像素宽度和第二像素宽度;
以所述参考点为所述起始点,向第一方向扩展所述第一像素宽度,并向第二方向扩展所述第二像素宽度,得到候选扩展区域;其中,所述第一方向为水平且远离所述起始点的方向,所述第二方向为垂直且远离所述起始点的方向;
基于当前扩展满足所述预设条件,将最新所述候选扩展区域作为目标扩展区域;
基于第一像素步长更新所述第一像素宽度,并基于第二像素步长更新所述第二像素宽度,以及重新执行以所述参考点为所述起始点的步骤以及后续步骤,直至不满足所述预设条件为止,将最新所述目标扩展区域作为所述子块。
9.根据权利要求8所述的方法,其特征在于,所述第二方位为左上角,所述第一方向为水平向右,所述第二方向为垂直向下;
或者,所述第二方位为左下角,所述第一方向为水平向右,所述第二方向为垂直向上;
或者,所述第二方位为右上角,所述第一方向为水平向左,所述第二方向为垂直向下;
或者,所述第二方位为右下角,所述第一方向为水平向左,所述第二方向为垂直向上。
10.根据权利要求7所述的方法,其特征在于,所述基于所述子块的其余角点,得到新的参考点,包括:
将所述透明通道图像中,分别与各个所述其余角点相邻且不属于所述子块的像素点,作为所述新的参考点。
11.根据权利要求7所述的方法,其特征在于,所述预设条件包括:扩展的像素点的像素值均与所述起始点的像素值相同,扩展的像素点均不属于已划分出来的子块,扩展的像素点均属于所述透明通道图像。
12.一种数据封装方法,其特征在于,包括:
获取所述待编码图像的第一编码数据和第二编码数据;其中,所述第一编码数据为所述待编码图像的透明通道图像的编码数据,所述第二编码数据为所述待编码图像的色度和/或亮度的编码数据;
基于所述第一编码数据的第一数据量,确定利用预设封包机制承载所述透明通道图像需要的第一载荷;
基于所述第一载荷和所述第二编码数据的第二数据量,确定承载所述待编码图像所需数据包的第一数量;
基于所述第一数据量和所述第一数量,确定各个所述数据包分别分配的第一编码数据的第三数据量;
对于各个所述数据包,确定利用所述预设封包机制承载所述第三数据量所需的第二载荷,并基于所述第二载荷和所述数据包的有效载荷,将所述第二编码数据的未分配部分分配至所述数据包的剩余载荷。
13.根据权利要求12所述的方法,其特征在于,所述第一编码数据是利用权利要求1至11任一项所述的压缩编码方法得到的。
14.根据权利要求12所述的方法,其特征在于,所述预设封包机制包括由RTP头部扩展进行封装,且所述RTP头部扩展包含若干扩展元素;所述第一载荷或所述第二载荷的确定步骤包括:
基于待分配数据量和所述扩展元素的最大承载数据量,确定承载所述待分配数据量所需的扩展元素的第二数量;
基于所述待分配数据量、所述第二数量和所述扩展元素中元素头部所占的第四数据量,确定利用所述预设封包机制承载所述待分配数据量所消耗的实际载荷;
其中,在所述待分配数据量为所述第一数据量的情况下,所述实际载荷为所述第一载荷,在所述待分配数据量为所述第三数据量的情况下,所述实际载荷为所述第二载荷。
15.根据权利要求12所述的方法,其特征在于,所述基于所述第一载荷和所述第二编码数据的第二数据量,获取承载所述待编码图像所需数据包的第一数量,包括:
基于所述第一载荷和所述第二数据量,获取所述待编码图像的消耗载荷;
基于所述消耗载荷和所述数据包的有效载荷,确定所述第一数量。
16.根据权利要求12所述的方法,其特征在于,所述基于所述第一数据量和所述第一数量,确定各个所述数据包各自承载的第一编码数据的第三数据量,包括:
将所述第一数据量与所述第一数量之间的比值,作为所述第三数据量。
17.一种压缩编码装置,其特征在于,包括:
通道获取模块,用于基于待编码图像各像素点的透明度,得到透明通道图像;
子块划分模块,用于对所述透明通道图像进行划分,得到若干子块;其中,所述子块中各像素点的像素值相同,且所述若干子块的集合覆盖所述透明通道图像;
属性编码模块,用于基于各所述子块的属性信息进行编码,得到所述透明通道图像的编码数据;其中,所述属性信息包括以下至少一者:子块位置、子块尺寸、子块幅值,且所述子块幅值表示所述子块中各所述像素点的像素值。
18.一种数据封装装置,其特征在于,包括:
数据获取模块,用于获取所述待编码图像的第一编码数据和第二编码数据;其中,所述第一编码数据为所述待编码图像的透明通道图像的编码数据,所述第二编码数据为所述待编码图像的色度和/或亮度的编码数据;
载荷确定模块,用于基于所述第一编码数据的第一数据量,确定利用预设封包机制承载所述透明通道图像需要的第一载荷;
数量确定模块,用于基于所述第一载荷和所述第二编码数据的第二数据量,确定承载所述待编码图像所需数据包的第一数量;
第一分配模块,用于基于所述第一数据量和所述第一数量,确定各个所述数据包分别分配的第一编码数据的第三数据量;
第二分配模块,用于对于各个所述数据包,确定利用所述预设封包机制承载所述第三数据量所需的第二载荷,并基于所述第二载荷和所述数据包的有效载荷,将所述第二编码数据的未分配部分分配至所述数据包的剩余载荷。
19.一种电子设备,其特征在于,包括相互耦接的存储器和处理器,所述存储器中存储有程序指令,所述处理器用于执行所述程序指令以实现权利要求1至11任一项所述的压缩编码方法,或权利要求12至16任一项所述的数据封装方法。
20.一种计算机可读存储介质,其特征在于,存储有能够被处理器运行的程序指令,所述程序指令用于实现权利要求1至11任一项所述的压缩编码方法,或权利要求12至16任一项所述的数据封装方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111651192.9A CN114390285B (zh) | 2021-12-30 | 2021-12-30 | 压缩编码方法及数据封装方法和相关装置、设备、介质 |
CN202310254647.6A CN116389753A (zh) | 2021-12-30 | 2021-12-30 | 数据封装方法和相关装置、设备、介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111651192.9A CN114390285B (zh) | 2021-12-30 | 2021-12-30 | 压缩编码方法及数据封装方法和相关装置、设备、介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310254647.6A Division CN116389753A (zh) | 2021-12-30 | 2021-12-30 | 数据封装方法和相关装置、设备、介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114390285A true CN114390285A (zh) | 2022-04-22 |
CN114390285B CN114390285B (zh) | 2023-04-04 |
Family
ID=81199401
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310254647.6A Pending CN116389753A (zh) | 2021-12-30 | 2021-12-30 | 数据封装方法和相关装置、设备、介质 |
CN202111651192.9A Active CN114390285B (zh) | 2021-12-30 | 2021-12-30 | 压缩编码方法及数据封装方法和相关装置、设备、介质 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310254647.6A Pending CN116389753A (zh) | 2021-12-30 | 2021-12-30 | 数据封装方法和相关装置、设备、介质 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN116389753A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110662049A (zh) * | 2018-06-29 | 2020-01-07 | 想象技术有限公司 | 有保证的数据压缩 |
CN111369581A (zh) * | 2020-02-18 | 2020-07-03 | Oppo广东移动通信有限公司 | 图像处理方法、装置、设备及存储介质 |
US20210287404A1 (en) * | 2020-03-16 | 2021-09-16 | Facebook Technologies, Llc | System and method for compressing and decompressing images using block-based compression format |
CN113645469A (zh) * | 2020-05-11 | 2021-11-12 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、智能终端及计算机可读存储介质 |
-
2021
- 2021-12-30 CN CN202310254647.6A patent/CN116389753A/zh active Pending
- 2021-12-30 CN CN202111651192.9A patent/CN114390285B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110662049A (zh) * | 2018-06-29 | 2020-01-07 | 想象技术有限公司 | 有保证的数据压缩 |
CN111369581A (zh) * | 2020-02-18 | 2020-07-03 | Oppo广东移动通信有限公司 | 图像处理方法、装置、设备及存储介质 |
US20210287404A1 (en) * | 2020-03-16 | 2021-09-16 | Facebook Technologies, Llc | System and method for compressing and decompressing images using block-based compression format |
CN113645469A (zh) * | 2020-05-11 | 2021-11-12 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、智能终端及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114390285B (zh) | 2023-04-04 |
CN116389753A (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11523135B2 (en) | Apparatus, a method and a computer program for volumetric video | |
US12101457B2 (en) | Apparatus, a method and a computer program for volumetric video | |
CN113615207A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
WO2019158821A1 (en) | An apparatus, a method and a computer program for volumetric video | |
US11651523B2 (en) | Apparatus, a method and a computer program for volumetric video | |
WO2019185985A1 (en) | An apparatus, a method and a computer program for volumetric video | |
KR20140021665A (ko) | 뷰 합성 동안 와핑 및 홀 충전을 위한 디바이스들 및 방법들 | |
WO2021176133A1 (en) | An apparatus, a method and a computer program for volumetric video | |
CN111434120A (zh) | 高效的沉浸式流传输 | |
CN115804096A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
WO2019115866A1 (en) | An apparatus, a method and a computer program for volumetric video | |
EP4399877A1 (en) | An apparatus, a method and a computer program for volumetric video | |
US11321878B2 (en) | Decoded tile hash SEI message for V3C/V-PCC | |
US12069314B2 (en) | Apparatus, a method and a computer program for volumetric video | |
CN108184101B (zh) | 处理视频的设备和方法 | |
CN110049379B (zh) | 一种视频延时检测方法及系统 | |
CN114390285B (zh) | 压缩编码方法及数据封装方法和相关装置、设备、介质 | |
US20220159297A1 (en) | An apparatus, a method and a computer program for volumetric video | |
WO2023221764A1 (zh) | 视频编码方法、视频解码方法及相关装置 | |
CN115428442A (zh) | 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法 | |
US8699804B2 (en) | Lossless image compression and decompression method for high definition image and electronic device using the same | |
EP4424008A1 (en) | A method, an apparatus and a computer program product for video encoding and video decoding | |
EP3987774A1 (en) | An apparatus, a method and a computer program for volumetric video | |
WO2021165566A1 (en) | An apparatus, a method and a computer program for volumetric video | |
EP3804334A1 (en) | An apparatus, a method and a computer program for volumetric video |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |