一种编解码方法、装置及电子设备与流程

文档序号:15685135发布日期:2018-10-16 20:58阅读:147来源:国知局

本发明涉及图像编解码技术领域,特别是涉及一种编解码方法、装置及电子设备。



背景技术:

在图像编解码技术中,通常需要对图像中的平面曲线进行编码,如图1所示图像,它是由大量曲线构成的二值图像,其像素值可以用0和1来表示。通常的编码方法是位平面编码,其中,位平面编码是一种将像素包含多个灰度值的图像分解成一系列二值图像,然后再对每一幅二值图像用二元压缩方法进行压缩的技术。其中,位平面编码方法包括:位平面分解和位平面编码。例如,jbig组织定义的二值图像编码方法,对于二值图像中的每个像素,首先,将该像素的左上相邻的已编码像素的集合构成一个内容;然后,根据该内容,选择自适应的内容模型进行算术编码。但是,由于上述位平面编码方法是逐像素的编码方法,因此,现有编码方法的压缩效率比较低。



技术实现要素:

本发明实施例的目的在于提供一种编解码方法、装置及电子设备,以提高图像中平面曲线编码的压缩效率。具体技术方案如下:

本发明实施例提供了一种编码方法,所述方法包括:

针对所获取图像中的每条平面曲线,获取该平面曲线的多个位置坐标,按照该平面曲线的起始顺序,分别对所述多个位置坐标中的x轴坐标以及所述多个位置坐标中的y轴坐标建立数组,得到两个数组;

针对所述两个数组中的每个数组,判断该数组的长度是否大于预设第一长度阈值;

如果该数组的长度大于所述预设第一长度阈值,按照该数组中元素的顺序,将该数组拆分为多个子数组,所述多个子数组中最后一个子数组之外的其他子数组的长度为预设第二长度阈值,所述多个子数组中最后一个子数组的长度小于或等于所述预设第二长度阈值,所述预设第二长度阈值不大于所述预设第一长度阈值;

针对所述多个子数组中的每个子数组,对该子数组进行离散余弦变换dct变换,得到dct变换后的子数组,对所述dct变换后的子数组进行量化,得到量化后的子数组,对该子数组的长度以及所述量化后的子数组进行编码;

在对所述两个数组中每个数组中的子数组的长度以及子数组进行编码之后,得到该平面曲线的码流。

可选的,在所述判断该数组的长度是否大于预设第一长度阈值之后,所述方法还包括:

如果该数组的长度不大于所述预设第一长度阈值,对该数组进行dct变换,得到dct变换后的数组,对所述dct变换后的数组进行量化,得到量化后的数组,对该数组的长度以及所述量化后的数组进行编码;

在对所述两个数组中每个数组的长度以及所述每个数组进行编码之后,得到该平面曲线的码流。

可选的,所述多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面所述预设数量个元素、与排列在后的子数组中前面所述预设数量个元素相同。

可选的,所述对所述dct变换后的子数组进行量化,包括:

将所述dct变换后的子数组中的每个元素除以量化系数,得到更新的子数组;

对所述更新的子数组中的每个元素进行四舍五入取值。

本发明实施例提供了一种解码方法,所述方法包括:

针对获取的每个平面曲线的码流,获取该码流对应的编码方法,按照与所述编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,所述两个数组的长度相同,该码流是对该平面曲线的多个位置坐标进行编码得到的;

判断是否存在该码流对应的分组大小;

如果存在该码流对应的分组大小,获取该码流对应的分组大小,针对所述两个数组中的每个数组,根据所述分组大小将该数组拆分为多个子数组,所述多个子数组中最后一个子数组之外的其他子数组的长度为所述分组大小,所述多个子数组中最后一个子数组的长度小于或等于所述分组大小;

针对所述多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化,得到反量化后的子数组,并对所述反量化后的子数组进行反离散余弦变换dct变换,得到反dct变换后的子数组;

在对所述两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

可选的,在所述判断是否存在该码流对应的分组大小之后,所述方法还包括:

如果不存在该码流对应分组大小,针对所述两个数组中的每个数组,根据获取的该码流对应的量化系数对该数组进行反量化,得到反量化后的数组,并对所述反量化后的数组进行反dct变换,得到反dct变换后的数组;

在对所述两个数组中每个数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

可选的,若所述多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面所述预设数量个元素、与排列在后的子数组中前面所述预设数量个元素相同,

在对所述两个数组中每个数组中的子数组进行反dct变换之后,所述方法还包括:

对每两个相邻的子数组中所述预设数量个重合元素中的每个重合元素求平均值,将得到的平均值作为对应的重合元素的值。

可选的,所述根据所述量化系数对该子数组进行反量化,包括:

将该子数组中的每个元素乘以所述量化系数。

本发明实施例提供了一种编码装置,所述装置包括:

数组建立模块,用于针对所获取图像中的每条平面曲线,获取该平面曲线的多个位置坐标,按照该平面曲线的起始顺序,分别对所述多个位置坐标中的x轴坐标以及所述多个位置坐标中的y轴坐标建立数组,得到两个数组;

数组长度判断模块,用于针对所述两个数组中的每个数组,判断该数组的长度是否大于预设第一长度阈值;

数组拆分模块,用于如果该数组的长度大于所述预设第一长度阈值,按照该数组中元素的顺序,将该数组拆分为多个子数组,所述多个子数组中最后一个子数组之外的其他子数组的长度为预设第二长度阈值,所述多个子数组中最后一个子数组的长度小于或等于所述预设第二长度阈值,所述预设第二长度阈值不大于所述预设第一长度阈值;

子数组编码处理模块,用于针对所述多个子数组中的每个子数组,对该子数组进行离散余弦变换dct变换,得到dct变换后的子数组,对所述dct变换后的子数组进行量化,得到量化后的子数组,对该子数组的长度以及所述量化后的子数组进行编码;

第一码流确定模块,用于在对所述两个数组中每个数组中的子数组的长度以及子数组进行编码之后,得到该平面曲线的码流。

可选的,本发明实施例的编码装置,还包括:

数组编码处理模块,用于如果该数组的长度不大于所述预设第一长度阈值,对该数组进行dct变换,得到dct变换后的数组,对所述dct变换后的数组进行量化,得到量化后的数组,对该数组的长度以及所述量化后的数组进行编码;

第二码流确定模块,用于在对所述两个数组中每个数组的长度以及所述每个数组进行编码之后,得到该平面曲线的码流。

可选的,所述多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面所述预设数量个元素、与排列在后的子数组中前面所述预设数量个元素相同。

可选的,所述子数组编码处理模块,包括:

量化子模块,用于将所述dct变换后的子数组中的每个元素除以量化系数,得到更新的子数组;对所述更新的子数组中的每个元素进行四舍五入取值。

本发明实施例提供了一种解码装置,所述装置包括:

解码模块,用于针对获取的每个平面曲线的码流,获取该码流对应的编码方法,按照与所述编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,所述两个数组的长度相同,该码流是对该平面曲线的多个位置坐标进行编码得到的;

判断模块,用于判断是否存在该码流对应的分组大小;

拆分模块,用于如果存在该码流对应的分组大小,获取该码流对应的分组大小,针对所述两个数组中的每个数组,根据所述分组大小将该数组拆分为多个子数组,所述多个子数组中最后一个子数组之外的其他子数组的长度为所述分组大小,所述多个子数组中最后一个子数组的长度小于或等于所述分组大小;

子数组反变换模块,用于针对所述多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化,得到反量化后的子数组,并对所述反量化后的子数组进行反离散余弦变换dct变换,得到反dct变换后的子数组;

位置坐标第一确定模块,用于在对所述两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

可选的,本发明实施例的解码装置,还包括:

数组反变换模块,用于如果不存在该码流对应分组大小,针对所述两个数组中的每个数组,根据获取的该码流对应的量化系数对该数组进行反量化,得到反量化后的数组,并对所述反量化后的数组进行反dct变换,得到反dct变换后的数组;

位置坐标第二确定模块,用于在对所述两个数组中每个数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

可选的,若所述多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面所述预设数量个元素、与排列在后的子数组中前面所述预设数量个元素相同,

所述装置还包括:

均值处理模块,用于对每两个相邻的子数组中所述预设数量个重合元素中的每个重合元素求平均值,将得到的平均值作为对应的重合元素的值。

可选的,所述子数组反变换模块,包括:

反量化子模块,用于将该子数组中的每个元素乘以所述量化系数。

本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的编码方法的步骤。

本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述任一所述的解码方法的步骤。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的编码方法的步骤。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的解码方法的步骤。

在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的编码方法的步骤。

在本发明实施的又一方面,本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的解码方法的步骤。

本发明实施例提供的编解码方法、装置及电子设备,在进行编码时,针对所获取图像中的每条平面曲线,获取该平面曲线的多个位置坐标,按照该平面曲线的起始顺序,分别对多个位置坐标中的x轴坐标以及多个位置坐标中的y轴坐标建立数组,得到两个数组;针对两个数组中的每个数组,判断该数组的长度是否大于预设第一长度阈值;如果该数组的长度大于预设第一长度阈值,按照该数组中元素的顺序,将该数组拆分为多个子数组;针对多个子数组中的每个子数组,对该子数组进行dct变换,得到dct变换后的子数组,对dct变换后的子数组进行量化,得到量化后的子数组,对该子数组的长度以及量化后的子数组进行编码;在对两个数组中每个数组中的子数组的长度以及子数组进行编码之后,得到该平面曲线的码流。本发明的编码方法,通过dct变换可以降低数据的空间冗余度,并且量化的过程是有损的,因此,提高了编码的压缩效率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为图像中的平面曲线图;

图2为本发明实施例的编码方法的一种流程图;

图3为本发明实施例的编码方法的另一种流程图;

图4为本发明实施例的解码方法的一种流程图;

图5为本发明实施例的解码方法的另一种流程图;

图6为本发明实施例的编码装置的一种结构图;

图7为本发明实施例的编码装置的另一种结构图;

图8为本发明实施例的解码装置的一种结构图;

图9为本发明实施例的解码装置的另一种结构图;

图10为本发明实施例的电子设备的结构图;

图11为本发明实施例的电子设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

为了解决图像中平面曲线编码时压缩效率较低的问题,本发明实施例提供了一种编解码方法、装置及电子设备,以提高图像中平面曲线编码的压缩效率。

下面首先对本发明实施例所提供的编码方法进行详细介绍。

参见图2,图2为本发明实施例的编码方法的一种流程图,包括以下步骤:

s201,针对所获取图像中的每条平面曲线,获取该平面曲线的多个位置坐标,按照该平面曲线的起始顺序,分别对多个位置坐标中的x轴坐标以及多个位置坐标中的y轴坐标建立数组,得到两个数组。

s202,针对两个数组中的每个数组,判断该数组的长度是否大于预设第一长度阈值。

s203,如果该数组的长度大于预设第一长度阈值,按照该数组中元素的顺序,将该数组拆分为多个子数组,多个子数组中最后一个子数组之外的其他子数组的长度为预设第二长度阈值,多个子数组中最后一个子数组的长度小于或等于预设第二长度阈值,预设第二长度阈值不大于预设第一长度阈值。

s204,针对多个子数组中的每个子数组,对该子数组进行dct变换,得到dct变换后的子数组,对dct变换后的子数组进行量化,得到量化后的子数组,对该子数组的长度以及量化后的子数组进行编码。

s205,在对两个数组中每个数组中的子数组的长度以及子数组进行编码之后,得到该平面曲线的码流。

图2所示实施例的有益效果在于,在对平面曲线进行编码过程中,通过dct变换可以降低数据的空间冗余度,并且由于量化的过程是有损的,因此,在编码之前对数据进行dct变换和量化,提高了平面曲线编码的压缩效率。并且,在数组长度大于预设第一长度阈值时,对数组进行拆分,可以降低数据的复杂度,提高数据计算效率。

参见图3,图3为本发明实施例的编码方法的另一种流程图,包括以下步骤:

s301,针对所获取图像中的每条平面曲线,获取该平面曲线的多个位置坐标,按照该平面曲线的起始顺序,分别对多个位置坐标中的x轴坐标以及多个位置坐标中的y轴坐标建立数组,得到两个数组。

具体的,对于平面中的图像,通常包括多条平面曲线,如图1所示图像中包括多条平面曲线,可以对每条平面曲线进行编码,当然每条平面曲线的编码方法可以相同。由于平面曲线是由多个点组成的,因此平面曲线包含多个位置坐标,每个位置坐标包含x轴坐标和y轴坐标,例如,(x0,y0)、(x1,y1)、(x2,y2)、...、(xn,yn)。那么,按照平面曲线的起始顺序,可以对x轴坐标和y轴坐标分别建立数组,得到两个数组,分别为:(x0,x1,x2,...xn)和(y0,y1,y2,...yn)。

s302,针对两个数组中的每个数组,判断该数组的长度是否大于预设第一长度阈值。

本发明实施例中,对于s301得到的两个数组,由于处理方法相同,本发明实施例中仅以一个数组为例进行说明。显然,上述两个数组的长度是相同的。预设第一长度阈值是预先设定的值,可以为2048等,在此不做限定。通过设置预设第一长度阈值,可以对数组的长度进行设置,避免数组过长,因此,通过判断数组的长度是否大于预设第一长度阈值,在判断结果为是时,执行s303;在判断结果为否时,执行s306。也就是说,数组的长度不同,数组的编码方法也不同。

s303,按照该数组中元素的顺序,将该数组拆分为多个子数组,多个子数组中最后一个子数组之外的其他子数组的长度为预设第二长度阈值,多个子数组中最后一个子数组的长度小于或等于预设第二长度阈值,预设第二长度阈值不大于预设第一长度阈值。

具体的,若数组的长度大于预设第一长度阈值,表示该数组的长度过长,此时,需要对该数组进行拆分,即将该数组拆分为多个子数组。按照该数组中元素的顺序,将该数组按照预设第二长度阈值进行拆分,当然,预设第二长度阈值不大于预设第一长度阈值。具体的,若预设第二长度阈值为2048,那么,拆分数组的方法为,将该数组中前2048个元素为第一个子数组,之后的2048个元素为第二个子数组,以此类推,最后一个子数组的长度小于或等于2048。

本发明的一种实现方式中,在进行数组拆分时,可以将相邻的两个子数组之间设置重合的元素,使多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面预设数量个元素、与排列在后的子数组中前面预设数量个元素相同。其中,预设数量是数值较小的整数,例如,预设数量可以是2或3等,在此不做限定。例如,该数组的第一个子数组的元素为数组中的第1至2048个元素,那么,该数组的第二个子数组的元素为数组中的第2047至4094个元素,也就是说,第一个子数组的最后2个元素与第二个子数组的前2个元素相同。以此类推,这样,通过在子数组间设置相同的元素,可以避免两个子数组之间的边界效应。

s304,针对多个子数组中的每个子数组,对该子数组进行dct变换,得到dct变换后的子数组,对dct变换后的子数组进行量化,得到量化后的子数组,对该子数组的长度以及量化后的子数组进行编码。

本发明实施例中,每个数组可以拆分为多个子数组,而对于每个子数组,首先对该子数组进行dct变换,得到dct变换后的子数组,然后对dct变换后的子数组进行量化,得到量化后的子数组。其中,dct变换是与傅里叶变换相关的一种变换,它类似于离散傅里叶变换,但是只使用实数。本发明的一种实现方式中,对dct变换后的子数组进行量化,包括:将dct变换后的子数组中的每个元素除以量化系数,得到更新的子数组;对更新的子数组中的每个元素进行四舍五入取值。量化系数为根据子数组中的元素选取的整数,量化系数的选取并不唯一,而量化的目的是为了简化子数组中各元素的值,由于量化过程中对数值进行四舍五入操作,因此,量化的过程是有损的。

在得到量化后的子数组之后,可以对量化后的子数组进行编码,由于每个子数组的长度可能不同,因此,在对每个量化后的子数组进行编码时,首先对该量化后的子数组的长度进行编码,然后再对该量化后的子数组进行编码。

s305,在对两个数组中每个数组中的子数组的长度以及子数组进行编码之后,得到该平面曲线的码流。

具体的,由于s301中得到两个数组,分别经过s302、s303和s304,在对两个数组中每个数组中的子数组的长度以及子数组进行编码之后,即完成了对两个数组的编码,得到两个码流,也就是x轴坐标建立的数组对应的码流和y轴坐标建立的数组对应的码流。可以将两个码流进行拼接,即可得到该平面曲线的码流。

s306,对该数组进行dct变换,得到dct变换后的数组,对dct变换后的数组进行量化,得到量化后的数组,对该数组的长度以及量化后的数组进行编码。

本发明实施例中,如果该数组的长度不大于预设第一长度阈值,表示该数组的长度不是很长,那么,可以直接对该数组进行dct变换,得到dct变换后的数组,对dct变换后的数组进行量化,得到量化后的数组,对该数组的长度以及量化后的数组进行编码。

s307,在对两个数组中每个数组的长度以及每个数组进行编码之后,得到该平面曲线的码流。

具体的,在对两个数组中每个数组的长度以及每个数组进行编码之后,将得到的两个码流进行拼接,即可得到该平面曲线的码流。

本发明实施例的编码方法中,通过获取图像中的平面曲线,分别对平面曲线的x轴坐标和y轴坐标建立数组,得到两个数组,对于每个数组,判断该数组的长度是否大于预设第一长度阈值,如果该数组的长度大于预设第一长度阈值,对该数组进行拆分之后,分别对得到的多个子数组进行dct变换、量化和编码,得到该平面曲线的码流;如果该数组的长度不大于预设第一长度阈值,直接对该数组进行dct变换、量化和编码,得到该平面曲线的码流。本发明实施例通过dct变换可以降低数据的空间冗余度,并且由于量化的过程是有损的,因此,在编码之前对数据进行dct变换和量化,提高了平面曲线编码的压缩效率。并且,在数组长度大于预设第一长度阈值时,对数组进行拆分,可以降低数据的复杂度,提高数据计算效率。在数组拆分时,使相邻的两个子数组之间设置重合的元素,可以避免相邻的两个子数组之间的边界效应。

与上述编码实施例相对应,本发明实施例还提供了一种解码方法,参见图4,图4为本发明实施例的解码方法的一种流程图,包括以下步骤:

s401,针对获取的每个平面曲线的码流,获取该码流对应的编码方法,按照与编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,两个数组的长度相同,该码流是对该平面曲线的多个位置坐标进行编码得到的。

s402,判断是否存在该码流对应的分组大小。

s403,获取该码流对应的分组大小,针对两个数组中的每个数组,根据分组大小将该数组拆分为多个子数组,多个子数组中最后一个子数组之外的其他子数组的长度为分组大小,多个子数组中最后一个子数组的长度小于或等于分组大小。

s404,针对多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化,得到反量化后的子数组,并对反量化后的子数组进行反dct变换,得到反dct变换后的子数组。

s405,在对两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

图4所示实施例的有益效果在于,由于在编码过程中对数据进行dct变换和量化,提高了平面曲线编码的压缩效率。相应地,在进行解码时,通过解码、反量化和反dct变换,提高了对码流的解压缩效率。

参见图5,图5为本发明实施例的解码方法的另一种流程图,包括以下步骤:

s501,针对获取的每个平面曲线的码流,获取该码流对应的编码方法,按照与编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,两个数组的长度相同,该码流是对该平面曲线的多个位置坐标进行编码得到的。

本发明实施例中,每个平面曲线可以对应一条码流,该码流是对该平面曲线的多个位置坐标进行编码得到的。由于在编码过程中,可以使用多种不同的编码方法,因此,在进行解码时,首先需要获取该码流对应的编码方法,按照与编码方法相对应的解码方法对该码流进行解码。由于平面曲线的位置坐标包括x轴坐标和y轴坐标。在编码方法中,在得到x轴坐标和y轴坐标对应的数组的码流之后,可以将两个码流进行拼接,y轴坐标建立的数组对应的码流可以拼接在x轴坐标建立的数组对应的码流之后。因此,在解码之后,可以将解码后的数据拆分为两个数组,前面的一个数组用于确定平面曲线x轴坐标建立的数组,后面的一个数组用于确定平面曲线y轴坐标建立的数组。

s502,判断是否存在该码流对应的分组大小。

本发明实施例中,分组大小用于表示在编码过程中是否对平面曲线的x轴坐标建立的数组和y轴坐标建立的数组进行拆分,以及拆分后的每个子数组的长度。在判断结果为是时,表示在编码过程中对平面曲线的x轴坐标建立的数组和y轴坐标建立的数组进行拆分,执行s503;否则,表示在编码过程中没有对平面曲线的x轴坐标建立的数组和y轴坐标建立的数组进行拆分,执行s506。

s503,获取该码流对应的分组大小,针对两个数组中的每个数组,根据分组大小将该数组拆分为多个子数组,多个子数组中最后一个子数组之外的其他子数组的长度为分组大小,多个子数组中最后一个子数组的长度小于或等于分组大小。

具体的,由于对拆分得到的两个数组的处理方法相同,本步骤中以一个数组为例进行说明。获取该码流对应的分组大小(即子数组的长度)之后,可以根据分组大小对该数组进行拆分,由于编码过程中数组是按照分组大小进行拆分的,因此,多个子数组中最后一个子数组之外的其他子数组的长度为分组大小,多个子数组中最后一个子数组的长度小于或等于分组大小。需要说明的是,由于在编码时对分组大小也进行了编码,因此,在对数组拆分时,需要在分组大小的基础上加1,并且拆分后的子数组中的第一个元素表示子数组的长度。例如,如果分组大小为2048,那么,需要将数组拆分为长度为2049的子数组,长度为2049的子数组中的第一个元素是2048,表示该子数组的长度是2048。之后,可以将得到的每个子数组中的第一个元素删除,得到用于表示位置坐标的子数组。

s504,针对多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化,得到反量化后的子数组,并对反量化后的子数组进行反dct变换,得到反dct变换后的子数组。

本发明实施例中,对每个子数组进行反量化,得到反量化后的子数组,由于量化过程中对数组中的每个元素除以量化系数,相应地,反量化过程中,将该子数组中的每个元素乘以量化系数。对反量化后的子数组进行反dct变换之后,得到反dct变换后的子数组,该反dct变换后的子数组为位置坐标子数组,即平面曲线的x轴坐标建立的数组中的子数组或y轴坐标建立的数组中的子数组。

s505,在对两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

本发明实施例中,在对两个数组中每个数组中的子数组进行反dct变换之后,可以得到多个子数组,将该多个子数组进行拼接,可以得到平面曲线的x轴坐标建立的数组和y轴坐标建立的数组,从而得到该码流表示的平面曲线的位置坐标。

本发明的一种实现方式中,在编码过程中,在对x轴坐标建立的数组和y轴坐标建立的数组进行拆分时,可以设置重合的元素。那么,在解码过程中,若多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面预设数量个元素、与排列在后的子数组中前面预设数量个元素相同,对每两个相邻的子数组中预设数量个重合元素中的每个重合元素求平均值,将得到的平均值作为对应的重合元素的值。例如,对于两个数组中的任一数组,对该数组中的所有子数组进行反dct变换之后,第一个子数组的长度为2048,第二个子数组的长度也为2048,第一个子数组中的最后2个元素和第二个子数组中的前2个元素相同,那么,对该2个重合的元素分别求平均值,将得到的平均值作为对应的重合元素的值。之后,将多个子数组组合为一个数组时,删除重合的元素即可。

s506,针对两个数组中的每个数组,根据获取的该码流对应的量化系数对该数组进行反量化,得到反量化后的数组,并对反量化后的数组进行反dct变换,得到反dct变换后的数组。

本发明实施例中,如果不存在该码流对应的分组大小,表示在编码过程中没有对平面曲线的x轴坐标建立的数组和y轴坐标建立的数组进行拆分,可以直接根据获取的该码流对应的量化系数对该数组进行反量化,得到反量化后的数组,并对反量化后的数组进行反dct变换,得到反dct变换后的数组。得到的反dct变换后的数组即为平面曲线的x轴坐标建立的数组或平面曲线的y轴坐标建立的数组。

s507,在对两个数组中每个数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

具体的,在对两个数组中每个数组进行反dct变换之后,得到平面曲线的x轴坐标建立的数组和平面曲线的y轴坐标建立的数组,即得到该码流表示的平面曲线的位置坐标。

本发明实施例的解码方法中,通过获取平面曲线的码流,按照与编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,判断是否存在该码流对应的分组大小,如果存在该码流对应的分组大小,获取该码流对应的分组大小,针对两个数组中的每个数组,根据分组大小将该数组拆分为多个子数组;针对多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化和反dct变换,得到反dct变换后的子数组,在对两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。如果不存在该码流对应的分组大小,针对两个数组中的每个数组,根据获取的该码流对应的量化系数对该数组进行反量化和反dct变换,得到反dct变换后的数组,在对两个数组中每个数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。在进行解码时,通过解码、反量化和反dct变换,提高了解压缩效率。在相邻的两个子数组之间包含重合的元素时,对重合的元素求解平均值,可以避免相邻的两个子数组之间的边界效应。

相应于上述方法实施例,本发明实施例还提供了一种编码装置,参见图6,图6为本发明实施例的编码装置的一种结构图,包括:

数组建立模块601,用于针对所获取图像中的每条平面曲线,获取该平面曲线的多个位置坐标,按照该平面曲线的起始顺序,分别对多个位置坐标中的x轴坐标以及多个位置坐标中的y轴坐标建立数组,得到两个数组;

数组长度判断模块602,用于针对两个数组中的每个数组,判断该数组的长度是否大于预设第一长度阈值;

数组拆分模块603,用于如果该数组的长度大于预设第一长度阈值,按照该数组中元素的顺序,将该数组拆分为多个子数组,多个子数组中最后一个子数组之外的其他子数组的长度为预设第二长度阈值,多个子数组中最后一个子数组的长度小于或等于预设第二长度阈值,预设第二长度阈值不大于预设第一长度阈值;

子数组编码处理模块604,用于针对多个子数组中的每个子数组,对该子数组进行dct变换,得到dct变换后的子数组,对dct变换后的子数组进行量化,得到量化后的子数组,对该子数组的长度以及量化后的子数组进行编码;

第一码流确定模块605,用于在对两个数组中每个数组中的子数组的长度以及子数组进行编码之后,得到该平面曲线的码流。

本发明实施例的编码装置,通过获取图像中的平面曲线,分别对平面曲线的x轴坐标和y轴坐标建立数组,得到两个数组,对于每个数组,判断该数组的长度是否大于预设第一长度阈值,如果该数组的长度大于预设第一长度阈值,对该数组进行拆分之后,分别对得到的多个子数组进行dct变换、量化和编码;得到该平面曲线的码流。本发明实施例通过dct变换可以降低数据的空间冗余度,量化的过程是有损的,因此,在编码之前对数据进行dct变换和量化,提高了平面曲线编码的压缩效率。并且,在数组长度大于预设第一长度阈值时,对数组进行拆分,可以降低数据的复杂度,提高数据计算效率。在数组拆分时,使相邻的两个子数组之间设置重合的元素,可以避免相邻的两个子数组之间的边界效应。

参见图7,图7为本发明实施例的编码装置的另一种结构图,在图6实施例的基础上,还包括:

数组编码处理模块701,用于如果该数组的长度不大于预设第一长度阈值,对该数组进行dct变换,得到dct变换后的数组,对dct变换后的数组进行量化,得到量化后的数组,对该数组的长度以及量化后的数组进行编码;

第二码流确定模块702,用于在对两个数组中每个数组的长度以及每个数组进行编码之后,得到该平面曲线的码流。

可选的,本发明实施例的编码装置中,多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面预设数量个元素、与排列在后的子数组中前面预设数量个元素相同。

可选的,本发明实施例的编码装置中,子数组编码处理模块,包括:

量化子模块,用于将dct变换后的子数组中的每个元素除以量化系数,得到更新的子数组;对更新的子数组中的每个元素进行四舍五入取值。

发明实施例还提供了一种解码装置,参见图8,图8为本发明实施例的解码装置的一种结构图,包括:

解码模块801,用于针对获取的每个平面曲线的码流,获取该码流对应的编码方法,按照与编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,两个数组的长度相同,该码流是对该平面曲线的多个位置坐标进行编码得到的;

判断模块802,用于判断是否存在该码流对应的分组大小;

拆分模块803,用于如果存在该码流对应的分组大小,获取该码流对应的分组大小,针对两个数组中的每个数组,根据分组大小将该数组拆分为多个子数组,多个子数组中最后一个子数组之外的其他子数组的长度为分组大小,多个子数组中最后一个子数组的长度小于或等于分组大小;

子数组反变换模块804,用于针对多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化,得到反量化后的子数组,并对反量化后的子数组进行dct变换,得到反dct变换后的子数组;

位置坐标第一确定模块805,用于在对两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

本发明实施例的解码装置,通过获取平面曲线的码流,按照与编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,判断是否存在该码流对应的分组大小,如果存在该码流对应的分组大小,获取该码流对应的分组大小,针对两个数组中的每个数组,根据分组大小将该数组拆分为多个子数组;针对多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化和反dct变换,得到反dct变换后的子数组,在对两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。在进行解码时,通过解码、反量化和反dct变换,提高了解压缩效率。在相邻的两个子数组之间包含重合的元素时,对重合的元素求解平均值,可以避免相邻的两个子数组之间的边界效应。

参见图9,图9为本发明实施例的解码装置的一种结构图,在图8实施例的基础上,还包括:

数组反变换模块901,用于如果不存在该码流对应分组大小,针对两个数组中的每个数组,根据获取的该码流对应的量化系数对该数组进行反量化,得到反量化后的数组,并对反量化后的数组进行反dct变换,得到反dct变换后的数组;

位置坐标第二确定模块902,用于在对两个数组中每个数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。

可选的,本发明实施例的解码装置中,若多个子数组中每两个相邻的子数组中包含预设数量个重合的元素,并且每两个相邻的子数组中排列在前的子数组中后面预设数量个元素、与排列在后的子数组中前面预设数量个元素相同,

解码装置还包括:

均值处理模块,用于对每两个相邻的子数组中预设数量个重合元素中的每个重合元素求平均值,将得到的平均值作为对应的重合元素的值。

可选的,本发明实施例的解码装置中,子数组反变换模块,包括:

反量化子模块,用于将该子数组中的每个元素乘以量化系数。

本发明实施例还提供了一种电子设备,参见图10,图10为本发明实施例的电子设备的结构图,包括:处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001、通信接口1002、存储器1003通过通信总线1004完成相互间的通信;

存储器1003,用于存放计算机程序;

处理器1001,用于执行存储器1003上所存放的程序时,实现上述实施例中任一编码方法的步骤。

本发明实施例的电子设备中,处理器通过执行存储器上所存放的程序,通过获取图像中的平面曲线,分别对平面曲线的x轴坐标和y轴坐标建立数组,得到两个数组,对于每个数组,判断该数组的长度是否大于预设第一长度阈值,如果该数组的长度大于预设第一长度阈值,对该数组进行拆分之后,分别对得到的多个子数组进行dct变换、量化和编码;得到该平面曲线的码流。本发明实施例通过dct变换可以降低数据的空间冗余度,量化的过程是有损的,因此,在编码之前对数据进行dct变换和量化,提高了平面曲线编码的压缩效率。并且,在数组长度大于预设第一长度阈值时,对数组进行拆分,可以降低数据的复杂度,提高数据计算效率。在数组拆分时,使相邻的两个子数组之间设置重合的元素,可以避免相邻的两个子数组之间的边界效应。

本发明实施例还提供了一种电子设备,参见图11,图11为本发明实施例的电子设备的结构图,包括:处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101、通信接口1102、存储器1103通过通信总线1104完成相互间的通信;

存储器1103,用于存放计算机程序;

处理器1101,用于执行存储器1103上所存放的程序时,实现上述实施例中任一解码方法的步骤。

本发明实施例的电子设备中,处理器通过执行存储器上所存放的程序,通过获取平面曲线的码流,按照与编码方法相对应的解码方法对该码流进行解码,并将解码后的数据拆分为两个数组,判断是否存在该码流对应的分组大小,如果存在该码流对应的分组大小,获取该码流对应的分组大小,针对两个数组中的每个数组,根据分组大小将该数组拆分为多个子数组;针对多个子数组中的每个子数组,根据获取的该码流对应的量化系数对该子数组进行反量化和反dct变换,得到反dct变换后的子数组,在对两个数组中每个数组中的子数组进行反dct变换之后,得到该码流表示的平面曲线的位置坐标。在进行解码时,通过解码、反量化和反dct变换,提高了解压缩效率。在相邻的两个子数组之间包含重合的元素时,对重合的元素求解平均值,可以避免相邻的两个子数组之间的边界效应。

需要说明的是,上述电子设备提到的通信总线1004和通信总线1104可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。通信总线1004和通信总线1104可以分为地址总线、数据总线、控制总线等。为便于表示,图10和图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口1002和通信接口1102用于上述电子设备与其他设备之间的通信。

存储器1003和存储器1103可以包括ram(randomaccessmemory,随机存取存储器),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器1003和存储器1103还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器1001和处理器1101可以是通用处理器,包括:cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一编码方法的步骤。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一解码方法的步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一编码方法的步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一解码方法的步骤。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置及电子设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1