一种二值图像编码、解码方法及装置与流程

文档序号:11145094
一种二值图像编码、解码方法及装置与制造工艺

本发明涉及图像编解码技术领域,特别涉及一种二值图像编码、解码方法及装置。



背景技术:

近年来随着计算机技术的快速发展,计算机视觉得到了越来越广泛应用,而常用的计算机视觉应用通常会涉及字符识别技术,为提高字符识别的准确率,通常需要利用大量二值图像样本对用于字符识别的分类器进行训练。

进一步的,作为样本的二值图像通常是以BMP等常用图像格式存储的,随着样本图像数量增多,二值图像样本的数量可能会达到数以万计,数以万计的二值图像样本占用的存储空间非常大,不便于用户使用。



技术实现要素:

本发明实施例公开了一种二值图像编码、解码方法及装置,以减小二值图像占用的存储空间。

为达到上述目的,本发明实施例公开了一种二值图像编码方法,所述方法包括:

获得待编码二值图像;

根据预设的编码长度L,从预设的编码表数据库中获得所述编码长度L对应的编码表TL,其中,所述编码表TL用于记录编码元素的索引与编码元素的取值之间的对应关系,所述编码表TL中包含2L个取值不同的编码元素,每一编码元素的取值为[0,2L-1]内的一个整数;

按照预设的像素点分组顺序,对所述待编码二值图像所包含的像素点进行分组,其中,分组后每一像素点分组中所包含像素点的数量相同,且不大于所述编码长度L;

根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组 在所述编码表TL中对应的编码元素的索引;

根据计算得到的编码元素的索引,从所述编码表TL中获得各个像素点分组在所述编码表TL中对应的编码元素的取值;

根据所获得的编码元素的取值,生成所述待编码二值图像对应的编码数据。

在本发明的一种具体实现方式中,所述根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在所述编码表TL中对应的编码元素的索引,包括:

对于分组后任一像素点分组G,按照以下表达式,计算所述像素点分组G在所述编码表TL中对应的编码元素的索引indexG

其中,t表示按照预设的像素点排列顺序所述像素点分组G中像素点的顺序号,it表示所述像素点分组G中顺序号为t的像素点的像素值。

在本发明的一种具体实现方式中,所述根据所获得的编码元素的取值,生成所述待编码二值图像对应的编码数据,包括:

获得所述待编码图像的图像信息;

根据所获得的图像信息和所获得的编码元素的取值,按照预设的信息排列规则,生成所述待编码二值图像对应的编码数据。

在本发明的一种具体实现方式中,在所述根据所述图像信息和所获得的编码元素的取值,按照预设的信息排列规则,生成所述待编码二值图像对应的编码数据之后,还包括:

将所生成的编码数据存储至预设的图像存储文件尾,其中,所述预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

在本发明的一种具体实现方式中,所述根据所获得的图像信息和所获得的编码元素的取值,按照预设的信息排列规则,生成所述待编码二值图像对应的编码数据,包括:

按照以下信息排列规则,生成所述待编码二值图像对应的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

在本发明的一种具体实现方式中,所述二值图像编码方法还包括:

接收针对所述预设的图像存储文件的数据修改指令,其中,所述数据修改指令中至少包括:待修改二值图像的标识、待修改图像信息的标识以及待修改图像信息的修改值;

根据所述数据修改指令中包括的所述待修改二值图像的标识,在所述预设的图像存储文件中查找所述待修改二值图像对应的编码数据;

根据所述数据修改指令中包括的所述待修改图像信息的标识以及所述待修改图像信息的修改值,修改查找到的编码数据。

为达到上述目的,本发明实施例公开了一种二值图像解码方法,所述方法包括:

获得待解码二值图像的编码数据;

根据预设的编码长度L,对所述编码数据进行解析,进而获得所述待解码二值图像的各个像素点分组对应的编码元素的取值,其中,像素点分组为:按照预设的像素点分组顺序,对所述待解码二值图像所包含的像素点进行分组得到的,各个像素点分组中所包含像素点的数量相同,且不大于所述预设的编码长度L;

根据所述预设的编码长度L,从预设的解码表数据库中获得所述编码长度L对应的解码表TL’,其中,所述解码表TL’用于记录编码元素的取值与编码元素的索引之间的对应关系,所述编码表TL’中包含2L个取值不同的编码元素,每一编码元素的取值为[0,2L-1]内的一个整数;

根据所获得的编码元素的取值,从所述解码表TL’中获得各个像素点分组在所述解码表TL’中对应的编码元素的索引;

根据所获得的编码元素的索引,获得各个像素点分组所包含像素点的像素 值;

根据所获得的像素值,生成所述待解码二值图像。

在本发明的一种具体实现方式中,所述根据所获得的编码元素的索引,获得各个像素点分组所包含像素点的像素值,包括:

对于所获得的任一编码元素的索引indexD,按照以下步骤获得所述索引ndexD对应的像素点分组GD所包含像素点的像素值:

确定所述索引indexD的二进制数值;

根据bt的取值以及所述编码长度L,获得所述像素点分组GD中按照预设的像素点排列顺序顺序号为t的像素点的像素值it,其中,bt表示所述二进制数值中从低位到高位标识为t的比特位的取值,所述索引

在本发明的一种具体实现方式中,所述获得待解码二值图像的编码数据,包括:

根据待解码二值图像的标识,从预设的图像存储文件中获得所述待解码二值图像的编码数据,其中,所述预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

在本发明的一种具体实现方式中,所述待解码二值图像的编码数据为:按照以下信息排列规则排列的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

为达到上述目的,本发明实施例公开了一种二值图像编码装置,所述装置包括:

图像获得模块,用于获得待编码二值图像;

编码表获得模块,用于根据预设的编码长度L,从预设的编码表数据库中获得所述编码长度L对应的编码表TL,其中,所述编码表TL用于记录编码元素的索引与编码元素的取值之间的对应关系,所述编码表TL中包含2L个取值不同的编码 元素,每一编码元素的取值为[0,2L-1]内的一个整数;

像素点分组模块,用于按照预设的像素点分组顺序,对所述待编码二值图像所包含的像素点进行分组,其中,分组后每一像素点分组中所包含像素点的数量相同,且不大于所述编码长度L;

索引计算模块,用于根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在所述编码表TL中对应的编码元素的索引;

第一取值获得模块,用于根据计算得到的编码元素的索引,从所述编码表TL中获得各个像素点分组在所述编码表TL中对应的编码元素的取值;

编码数据生成模块,用于根据所获得的编码元素的取值,生成所述待编码二值图像对应的编码数据。

在本发明的一种具体实现方式中,所述索引计算模块,具体用于对于分组后任一像素点分组G,按照以下表达式,计算所述像素点分组G在所述编码表TL中对应的编码元素的索引indexG

其中,t表示按照预设的像素点排列顺序所述像素点分组G中像素点的顺序号,it表示所述像素点分组G中顺序号为t的像素点的像素值。

在本发明的一种具体实现方式中,所述编码数据生成模块,包括:

图像信息获得子模块,用于获得所述待编码图像的图像信息;

编码数据获得子模块,用于根据所获得的图像信息和所获得的编码元素的取值,按照预设的信息排列规则,生成所述待编码二值图像对应的编码数据。

在本发明的一种具体实现方式中,所述二值图像编码装置还包括:

编码数据存储模块,用于在所述编码数据生成模块生成编码数据之后,将所生成的编码数据存储至预设的图像存储文件尾,其中,所述预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

在本发明的一种具体实现方式中,所述编码数据获得子模块,具体用于按照以下信息排列规则,生成所述待编码二值图像对应的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

在本发明的一种具体实现方式中,所述二值图像编码装置还包括:

数据修改指令接收模块,用于接收针对所述预设的图像存储文件的数据修改指令,其中,所述数据修改指令中至少包括:待修改二值图像的标识、待修改图像信息的标识以及待修改图像信息的修改值;

编码数据查找模块,用于根据所述数据修改指令中包括的所述待修改二值图像的标识,在所述预设的图像存储文件中查找所述待修改二值图像对应的编码数据;

编码数据修改模块,用于根据所述数据修改指令中包括的所述待修改图像信息的标识以及所述待修改图像信息的修改值,修改查找到的编码数据。

为达到上述目的,本发明实施例公开了一种二值图像解码装置,所述装置包括:

编码数据获得模块,用于获得待解码二值图像的编码数据;

第二取值获得模块,用于根据预设的编码长度L,对所述编码数据进行解析,进而获得所述待解码二值图像的各个像素点分组对应的编码元素的取值,其中,像素点分组为:按照预设的像素点分组顺序,对所述待解码二值图像所包含的像素点进行分组得到的,各个像素点分组中所包含像素点的数量相同,且不大于所述预设的编码长度L;

解码表获得模块,用于根据所述预设的编码长度L,从预设的解码表数据库中获得所述编码长度L对应的解码表TL’,其中,所述解码表TL’用于记录编码元素的取值与编码元素的索引之间的对应关系,所述编码表TL’中包含2L个取值不同的编码元素,每一编码元素的取值为[0,2L-1]内的一个整数;

索引获得模块,用于根据所获得的编码元素的取值,从所述解码表TL’中获得各个像素点分组在所述解码表TL’中对应的编码元素的索引;

像素值获得模块,用于根据所获得的编码元素的索引,获得各个像素点分组所包含像素点的像素值;

图像生成模块,用于根据所获得的像素值,生成所述待解码二值图像。

在本发明的一种具体实现方式中,所述像素值获得模块,具体用于获得所获得的任一编码元素的索引indexD对应的像素点分组GD所包含像素点的像素值;

其中,所述像素值获得模块,包括:

数值确定子模块,用于确定所述索引indexD的二进制数值;

像素值获得子模块,用于根据bt的取值以及所述编码长度L,获得所述像素点分组GD中按照预设的像素点排列顺序顺序号为t的像素点的像素值it,其中,bt表示所述二进制数值中从低位到高位标识为t的比特位的取值,所述索引

在本发明的一种具体实现方式中,所述编码数据获得模块,具体用于根据待解码二值图像的标识,从预设的图像存储文件中获得所述待解码二值图像的编码数据,其中,所述预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

在本发明的一种具体实现方式中,所述待解码二值图像的编码数据为:按照以下信息排列规则排列的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

由以上可见,本发明实施例提供的方案中,获得待编码二值图像后,根据预设的编码长度L,从预设的编码表数据库中获得编码长度L对应的编码表TL,按照预设的像素点分组顺序,对待编码二值图像所包含的像素点进行分组,根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在编码表TL中对应的编码元素的索引,根据计算得到的编码元素的索引,从编码表TL中获得各个像素点分组在编码表TL中对应的编码元素的取值,根据所获得的编码元素的取值,生成待编码二值图像对应的编码数据。由以上可以看出,一个 像素点分组中包含的多个像素点对应一个编码元素,因此,按照本发明实施例提供的方案对待编码二值图像编码后,得到的编码数据占用的存储空间要远远小于待编码二值图像占用的存储空间。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种二值图像编码方法的流程示意图;

图2为本发明实施例提供的另一种二值图像编码方法的流程示意图;

图3为本发明实施例提供的一种二值图像解码方法的流程示意图;

图4为本发明实施例提供的一种二值图像编码装置的结构示意图;

图5为本发明实施例提供的另一种二值图像编码装置的结构示意图;

图6为本发明实施例提供的一种二值图像解码装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例提供的一种二值图像编码方法的流程示意图,该方法包括:

S101:获得待编码二值图像。

二值图像可以理解为只包含黑色像素点和白色像素点的图像。像素点的像素值与开发人员设定的用于表示像素点像素值的变量的变量位数有关。

例如,若用于表示像素点像素值的变量的变量位数为1bit,则通常黑色像素点的像素值为“0”,以二进制表示为“0”,而白色像素点的像素值为“1”,以 二进制表示为“1”;

若用于表示像素点像素值的变量的变量位数为8bit,则通常黑色像素点的像素值为“0”,以二进制表示为“00000000”,而白色像素点的像素值为“255”,以二进制表示为“11111111”;

当然用于表示像素点像素值的变量的变量位数还可以是其他值,情况与上述情况类似,这里不再一一列举。

S102:根据预设的编码长度L,从预设的编码表数据库中获得编码长度L对应的编码表TL

其中,编码表TL用于记录编码元素的索引与编码元素的取值之间的对应关系,该编码表中包含2L个取值不同的编码元素,每一编码元素的取值为[0,2L-1]内的一个整数。

预设的编码长度可以理解为用于表示编码表中编码元素的变量的位数。具体的对待编码二值图像进行编码时,可以根据待编码二值图像的情况以及对压缩比的要求等因素调整预设的编码长度。预设的编码长度L的取值越大,应用本发明实施例提供的方案进行图像编码时,得到的编码数据的压缩比越高。

结合具体实际应用情况,开发过程中使用8bit整型变量较多,所以在本发明的一种较佳实现方式中L≤8,进一步的,考虑到后续步骤中需对待编码二值图像的像素点进行像素点分组处理,根据以下表达式来确定预设的编码长度的取值:

W/L=整数。

基于上述描述,在生成预设的编码长度L对应的编码表TL时,可以考虑基于ASCII字符生成该编码表。

S103:按照预设的像素点分组顺序,对待编码二值图像所包含的像素点进行分组。

其中,预设的像素点分组顺序可以是按照像素列从左到右的顺序、按照像素列从右到左的顺序、按照像素行从上到下的顺序、按照像素行从下到上的顺序等等,本申请并不对此进行限定。

具体的,分组后每一像素点分组中所包含像素点的数量相同,且不大于上述编码长度L,较佳的,分组后每一像素点分组中所包含像素点的数量等于上述编码长度L,这样可以在编码长度固定的情况下,能够得到最大的压缩比。

可以理解的,对待编码二值图像所包含的像素点进行分组时,可能会遇到最后一个像素点分组中包含的像素点的数量与其他像素点分组中包含的像素点的数量不同的情况,这时可以不对最后一个像素点分组进行任何处理,直接继续后续步骤,当然也可以根据预设的像素点对最后一个像素点分组进行像素点补齐处理,例如,预设的像素点可以是待编码二值图像的最后一个像素点等等,然后再对编码后的数据进行解码时丢弃补齐处理中补充的像素点,本申请并不对此进行限定。

S104:根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在编码表TL中对应的编码元素的索引。

在本发明的一种可选实现方式中,对于分组后任一像素点分组G,可以按照以下表达式,计算像素点分组G在编码表TL中对应的编码元素的索引indexG

其中,t表示按照预设的像素点排列顺序像素点分组G中像素点的顺序号,it表示像素点分组G中顺序号为t的像素点的像素值。

it<<t表示将it的二进制数值右移t位

假设,it是以1比特表示的,则it的取值可能为0或者1,L等于3,则

需要说明的是,上述it表示像素点分组G中顺序号为t的像素点的像素值,可以是直接从待编码二值图像读取到的像素点的像素值,也可以理解为是根据直接从待编码二值图像读取到的像素点的像素值变换得到的像素值,例如,直接从待编码二值图像读取到的像素点的像素值为255,其二进制表示为“11111111”, 则此时it可以取值为1,类似的,直接从待编码二值图像读取到的像素点的像素值为0,其二进制表示为“00000000”,则此时it可以取值为0。

另外,上述预设的像素点排列顺序可以是与前述预设的像素点分组顺序相关的排列顺序,例如,预设的像素点分组顺序为按照像素列从左到右的顺序以及按照像素行从上到下的顺序分组,则预设的像素点排列顺序可以对于同一像素行内的像素点按照从左到右的顺序排列,对于不同像素行之间的像素点,按照从上到下的顺序排列等等。

S105:根据计算得到的编码元素的索引,从编码表TL中获得各个像素点分组在编码表TL中对应的编码元素的取值。

S106:根据所获得的编码元素的取值,生成待编码二值图像对应的编码数据。

需要说明的是,本步骤中所生成的编码数据可以理解为以特定文件格式存储的编码数据,也可以理解为未以特定文件格式存储数据串。

在本发明的一种具体实现方式中,生成编码数据时除了需考虑所获得编码元素的取值外,还可以考虑待编码二值图像的标识、宽度、高度、类型、图像是否为有效图像等等图像信息,在编码数据中加入这些待编码二值图像的图像信息后,能够有助于后期使用待编码二值图像,本申请并不限定图像信息的具体表现形式。

具体的,根据所获得的编码元素的取值,生成待编码二值图像对应的编码数据时,可以获得待编码图像的图像信息,并根据所获得的图像信息和所获得的编码元素的取值,按照预设的信息排列规则,生成待编码二值图像对应的编码数据。

按照上述方式生成编码数据后,若不想在后期使用中使用该编码数据,则可以将图像信息中表示图像是否为有效图像的标识位设置为“无效”状态,而无需将该编码数据删除,待可以使用该编码数据时,再将图像信息中表示图像是否为有效图像的标识位设置为“有效”状态,这样方便了用户对编码数据的管理。

可选的,根据所获得的图像信息和所获得的编码元素的取值,按照预设的 信息排列规则,生成待编码二值图像对应的编码数据时,可以按照以下信息排列规则,生成待编码二值图像对应的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

可选的,Id1可以是字符“$”,Id2可以是字符“@”,当然可以是其他值,本申请并不对此进行限定。

根据所获得的编码元素的取值组成数据串时,可以简单的按照顺序将所获得的编码元素排列在一起。

例如,按照上述方式生成的编码数据可以如下所示:

$@ID@W@H@L@type@valid@inf:C0C1…Clen-1

其中,C0C1…Clen-1即为上述的E。

应用本发明实施例提供的方案对二值图像进行编码后,其编码数据只有通过与本发明实施例提供的编码方法相对应的解码方法解码后才能正常向用户展示,因此,经编码后的二值图像具有更高的安全性。

由以上可见,本实施例提供的方案中,获得待编码二值图像后,根据预设的编码长度L,从预设的编码表数据库中获得编码长度L对应的编码表TL,按照预设的像素点分组顺序,对待编码二值图像所包含的像素点进行分组,根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在编码表TL中对应的编码元素的索引,根据计算得到的编码元素的索引,从编码表TL中获得各个像素点分组在编码表TL中对应的编码元素的取值,根据所获得的编码元素的取值,生成待编码二值图像对应的编码数据。由以上可以看出,一个像素点分组中包含的多个像素点对应一个编码元素,因此,按照本实施例提供的方案对待编码二值图像编码后,得到的编码数据占用的存储空间要远远小于待编码二值图像占用的存储空间。

本领域内的技术人员可以理解的,通常情况用大量的二值图像样本对分类器进行训练时,二值图像样本的数量可能会达到几万甚至几十万,若这些文件均以单个文件的形式存储,对于嵌入式系统而言,加载这些文件需要处理大量的I/O操作,几乎是不可能的。鉴于上述原因,在本发明的一种较佳实现方式中,参见图2,提供了另一种二值图像编码方法的流程示意图,与前述实施例相比,本实施例中,在根据图像信息和所获得的编码元素的取值,按照预设的信息排列规则,生成待编码二值图像对应的编码数据之后,还包括:

S107:将所生成的编码数据存储至预设的图像存储文件尾。

其中,预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

基于上述将所生成的编码数据存储至预设的图像存储文件尾的情况,在本发明的一种具体实现方式中,上述二值图像编码方法还可以包括:

接收针对预设的图像存储文件的数据修改指令,其中,数据修改指令中至少包括:待修改二值图像的标识、待修改图像信息的标识以及待修改图像信息的修改值;

根据数据修改指令中包括的待修改二值图像的标识,在预设的图像存储文件中查找待修改二值图像对应的编码数据;

根据数据修改指令中包括的待修改图像信息的标识以及待修改图像信息的修改值,修改查找到的编码数据。

由前面的描述可以知道,编码数据中可以包含多种图像信息,这里不再一一列举。

下面以图像信息为:图像是否为有效图像为例进行说明。

接收到包含待修改二值图像的标识、图像是否为有效图像的标识以及该标识的修改值的数据修改指令后,先根据待修改二值图像的标识从预设的图像存储文件中找到该二值图像的编码数据,然后从找到的编码数据中定位图像是否为有效图像的标识,并修改该标识的取值。

实际应用中,若想从预设的图像存储文件中删除某一二值图像的编码数据,可以通过修改该值来实现,这样无需真正删除二值图像的编码数据,当用户发现还想使用该二值图像时,只需修改该二值图像的上述是否为有效图像的标识 的取值即可,无需再去其他地方寻找该二值图像的图像数据,也无需再往预设的图像存储文件中添加该二值图像的编码数据,能够方便用户管理大量的二值图像的编码数据。

由以上可见,本实施例提供的方案中,将所生成的编码数据存储至预设的图像存储文件尾,而预设的图像存储文件中可以存储多个二值图像对应的编码数据,那么需要加载多个文件时,只需加载该预设的图像存储文件即可,显然由多次I/O操作简化为一次I/O操作,应用本发明实施例提供的方案在需要加载多个文件的情况下,能够大大减少I/O操作的次数。

与上述二值图像编码方法相对应,本发明实施例还提供了一种二值图像解码方法。

图3为本发明实施例提供的一种二值图像解码方法的流程示意图,该方法包括:

S301:获得待解码二值图像的编码数据。

一种具体实现方式中,可以直接从待解码二值图像对应的单一编码文件中获得该二值图像的编码数据。

另一种具体实现方式中,还可以根据待解码二值图像的标识,从预设的图像存储文件中获得待解码二值图像的编码数据,其中,预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

这种情况下,多个二值图像对应的编码数据存储在一个文件中,实际应用中需要加载多个二值图像时,只加载一个文件即可,减少了I/O操作的次数。

S302:根据预设的编码长度L,对编码数据进行解析,进而获得待解码二值图像的各个像素点分组对应的编码元素的取值。

其中,预设的编码长度可以理解为用于表示编码表中编码元素的变量的位数,该参数是在编码过程中设定好的。具体的对待解码二值图像进行编码时,可以根据待解码二值图像的情况以及对压缩比的要求等因素调整预设的编码长度。预设的编码长度L的取值越大,应用本发明实施例提供的方案进行图像编码时,得到的编码数据的压缩比越高。

另外,像素点分组也是在编码过程中进行的,具体的,像素点分组为:按照预设的像素点分组顺序,对待解码二值图像所包含的像素点进行分组得到的,各个像素点分组中所包含像素点的数量相同,且不大于预设的编码长度L。

S303:根据预设的编码长度L,从预设的解码表数据库中获得编码长度L对应的解码表TL'。

其中,解码表TL'用于记录编码元素的取值与编码元素的索引之间的对应关系,编码表TL'中包含2L个取值不同的编码元素,每一编码元素的取值为[0,2L-1]内的一个整数。

需要说明的是,本实施例中涉及的解码表为与前述实施例中涉及的编码表相对应的表,两者之间是互逆的关系。

S304:根据所获得的编码元素的取值,从所述解码表TL'中获得各个像素点分组在所述解码表TL'中对应的编码元素的索引。

S305:根据所获得的编码元素的索引,获得各个像素点分组所包含像素点的像素值。

具体的,在本发明的一种具体实现方式中,对于所获得的任一编码元素的索引indexD,可以按照以下步骤获得索引indexD对应的像素点分组GD所包含像素点的像素值:

确定索引indexD的二进制数值;

根据bt的取值以及所述编码长度L,获得像素点分组GD中按照预设的像素点排列顺序顺序号为t的像素点的像素值it,其中,bt表示二进制数值中从低位到高位标识为t的比特位的取值,索引

具体的,根据bt的取值以及编码长度L,获得像素点分组GD中按照预设的像素点排列顺序标识为t的像素点的像素值it时,获得bt的取值的取值后,先根据bt的取值判断标识为t的像素点是黑点还是白点,若bt的取值为0,则表示上述像素点为黑点,若bt的取值为1,则表示上述像素点为白点,然后根据该像素点的颜色以及编码长度L确定该像素点的像素值。

例如,假设编码长度L等于1,则

该像素点为黑点时,其像素值为0;

该像素点为白点时,其像素值为1。

假设编码长度L等于8,则

该像素点为黑点时,其像素值为0;

该像素点为白点时,其像素值为255。

其他情况类似这里不再一一列举。

需要说明的是,假设,一二进制数值为“1101”,则从低位到高位各个位的取值分别为:1、0、1、1,从低位到高位各个位的标识可以为:0、1、2、3,当然,这里上述标识的初始值为从0开始的,当然其初始值也可以从1开始,本申请并不对此进行限定,另外,二进制数值中从低位到高位各个位的标识也可以简单的理解为按照从低位到高位的顺序二进制数值中各个位对应的顺序号。

S306:根据所获得的像素值,生成待解码二值图像。

待解码二值图像的编码数据为:按照以下信息排列规则排列的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

由以上可见,本实施例提供的方案中,所解码的编码数据为对待解码二值图像所包含的像素点进行分组,根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在编码表中对应的编码元素的索引,根据计算得到的编码元素的索引,从编码表中获得各个像素点分组在编码表中对应的编码元素的取值,根据所获得的编码元素的取值,生成的编码数据。一个像素点分组中包含的多个像素点对应一个编码元素,因此,应用本实施例提供的方案解码的编码数据占用的存储空间要远远小于待解码二值图像占用的存储空间。

与上述的二值图像编码方法相对应,本发明实施例还提供了一种二值图像编码装置。

图4为本发明实施例提供的一种二值图像编码装置的结构示意图,该装置包括:

图像获得模块401,用于获得待编码二值图像;

编码表获得模块402,用于根据预设的编码长度L,从预设的编码表数据库中获得所述编码长度L对应的编码表TL,其中,所述编码表TL用于记录编码元素的索引与编码元素的取值之间的对应关系,所述编码表TL中包含2L个取值不同的编码元素,每一编码元素的取值为[0,2L-1]内的一个整数;

像素点分组模块403,用于按照预设的像素点分组顺序,对所述待编码二值图像所包含的像素点进行分组,其中,分组后每一像素点分组中所包含像素点的数量相同,且不大于所述编码长度L;

索引计算模块404,用于根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在所述编码表TL中对应的编码元素的索引;

第一取值获得模块405,用于根据计算得到的编码元素的索引,从所述编码表TL中获得各个像素点分组在所述编码表TL中对应的编码元素的取值;

编码数据生成模块406,用于根据所获得的编码元素的取值,生成所述待编码二值图像对应的编码数据。

具体的,所述索引计算模块404,具体用于对于分组后任一像素点分组G,按照以下表达式,计算所述像素点分组G在所述编码表TL中对应的编码元素的索引indexG

其中,t表示按照预设的像素点排列顺序所述像素点分组G中像素点的顺序号,it表示所述像素点分组G中顺序号为t的像素点的像素值。

具体的,所述编码数据生成模块406可以包括:

图像信息获得子模块,用于获得所述待编码图像的图像信息;

编码数据获得子模块,用于根据所获得的图像信息和所获得的编码元素的取值,按照预设的信息排列规则,生成所述待编码二值图像对应的编码数据。

具体的,所述编码数据获得子模块,具体用于按照以下信息排列规则,生 成所述待编码二值图像对应的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

由以上可见,本实施例提供的方案中,获得待编码二值图像后,根据预设的编码长度L,从预设的编码表数据库中获得编码长度L对应的编码表TL,按照预设的像素点分组顺序,对待编码二值图像所包含的像素点进行分组,根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在编码表TL中对应的编码元素的索引,根据计算得到的编码元素的索引,从编码表TL中获得各个像素点分组在编码表TL中对应的编码元素的取值,根据所获得的编码元素的取值,生成待编码二值图像对应的编码数据。由以上可以看出,一个像素点分组中包含的多个像素点对应一个编码元素,因此,按照本实施例提供的方案对待编码二值图像编码后,得到的编码数据占用的存储空间要远远小于待编码二值图像占用的存储空间。

在本发明的一种较佳实现方式中,参见图5,提供了另一种二值图像编码装置的结构示意图,与前述实施例相比,本实施例中,上述装置还包括:

编码数据存储模块407,用于在所述编码数据生成模块生成编码数据之后,将所生成的编码数据存储至预设的图像存储文件尾,其中,所述预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

可选的,上述二值图像编码装置还可以包括:

数据修改指令接收模块,用于接收针对所述预设的图像存储文件的数据修改指令,其中,所述数据修改指令中至少包括:待修改二值图像的标识、待修改图像信息的标识以及待修改图像信息的修改值;

编码数据查找模块,用于根据所述数据修改指令中包括的所述待修改二值图像的标识,在所述预设的图像存储文件中查找所述待修改二值图像对应的编码数据;

编码数据修改模块,用于根据所述数据修改指令中包括的所述待修改图像信息的标识以及所述待修改图像信息的修改值,修改查找到的编码数据。

由以上可见,本实施例提供的方案中,将所生成的编码数据存储至预设的图像存储文件尾,而预设的图像存储文件中可以存储多个二值图像对应的编码数据,那么需要加载多个文件时,只需加载该预设的图像存储文件即可,显然由多次I/O操作简化为一次I/O操作,应用本发明实施例提供的方案在需要加载多个文件的情况下,能够大大减少I/O操作的次数。

与上述的二值图像解码方法相对应,本发明实施例还提供了一种二值图像解码装置。

图6为本发明实施例提供的一种二值图像解码装置的结构示意图,该装置包括:

编码数据获得模块601,用于获得待解码二值图像的编码数据;

第二取值获得模块602,用于根据预设的编码长度L,对所述编码数据进行解析,进而获得所述待解码二值图像的各个像素点分组对应的编码元素的取值,其中,像素点分组为:按照预设的像素点分组顺序,对所述待解码二值图像所包含的像素点进行分组得到的,各个像素点分组中所包含像素点的数量相同,且不大于所述预设的编码长度L;

解码表获得模块603,用于根据所述预设的编码长度L,从预设的解码表数据库中获得所述编码长度L对应的解码表TL',其中,所述解码表TL'用于记录编码元素的取值与编码元素的索引之间的对应关系,所述编码表TL'中包含2L个取值不同的编码元素,每一编码元素的取值为[0,2L-1]内的一个整数;

索引获得模块604,用于根据所获得的编码元素的取值,从所述解码表TL'中获得各个像素点分组在所述解码表TL'中对应的编码元素的索引;

像素值获得模块605,用于根据所获得的编码元素的索引,获得各个像素点分组所包含像素点的像素值;

图像生成模块606,用于根据所获得的像素值,生成所述待解码二值图像。

具体的,所述像素值获得模块605,具体用于获得所获得的任一编码元素的索引indexD对应的像素点分组GD所包含像素点的像素值;

其中,所述像素值获得模块,包括:

数值确定子模块,用于确定所述索引indexD的二进制数值;

像素值获得子模块,用于根据bt的取值以及所述编码长度L,获得所述像素点分组GD中按照预设的像素点排列顺序顺序号为t的像素点的像素值it,其中,bt表示所述二进制数值中从低位到高位标识为t的比特位的取值,所述索引

具体的,所述编码数据获得模块601,具体用于根据待解码二值图像的标识,从预设的图像存储文件中获得所述待解码二值图像的编码数据,其中,所述预设的图像存储文件用于存储至少一个二值图像对应的编码数据。

具体的,所述待解码二值图像的编码数据为:按照以下信息排列规则排列的编码数据,

Id1Id2Ii1Id2Ii2…Id2Iij…Id2Iin:E,

其中,Id1表示预设的二值图像对应的编码数据的起始标识,Id2表示预设的二值图像的图像信息之间的分隔标识,Iij表示二值图像的一个图像信息,E表示由所获得的编码元素的取值组成的数据串。

由以上可见,本实施例提供的方案中,所解码的编码数据为对待解码二值图像所包含的像素点进行分组,根据分组后每一像素点分组中所包含像素点的像素值,计算该像素点分组在编码表中对应的编码元素的索引,根据计算得到的编码元素的索引,从编码表中获得各个像素点分组在编码表中对应的编码元素的取值,根据所获得的编码元素的取值,生成的编码数据。一个像素点分组中包含的多个像素点对应一个编码元素,因此,应用本实施例提供的方案解码的编码数据占用的存储空间要远远小于待解码二值图像占用的存储空间。

对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

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

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

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

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