一种支持对图像随机访问的PNG编码和解码方法与流程

文档序号:29787962发布日期:2022-04-23 15:26阅读:243来源:国知局
一种支持对图像随机访问的PNG编码和解码方法与流程
一种支持对图像随机访问的png编码和解码方法
技术领域
1.本发明属于图像处理技术领域,具体涉及一种支持对图像随机访问的png编码和解码方法。


背景技术:

2.png是一种采用无损压缩算法的位图格式,其设计目的是试图替代gif和tiff文件格式,同时增加一些gif文件格式所不具备的特性。png的编码过程包括filter(滤波)、deflate(压缩)、chunk(数据分块)编码三个过程;png的解码过程包括chunk解码、inflate(解压缩)、un-filter(滤波还原)三个过程。
3.以编码过程为例,在滤波前,需要将png图像的像素安排成一些更小的图像,形成一系列的图像块,这些图像块以从左往右,从上到下的方式被扫描;像素的每一行,叫做一个扫描行,被表示为一个字节的序列;使得这些图像块的像素按照字节序列被顺序的存储;相应的,解码过程中,滤波还原后将会按照扫描行的字节序列顺序还原出png图像数据。
4.在实际的应用场景中,如果需要对png图像的某一数据块进行访问,那么就需要按照扫描行的解码顺序直至找到对应的数据块,显然这种方式将会读取不必要的数据块,带来大量的冗余运算,十分浪费资源。


技术实现要素:

5.基于现有技术存在的问题,本发明提出了一种支持对图像随机访问的png编码和解码方法,所述的方法能实现对任意行数分块独立编码,并在png头中增加分块索引机制;本发明基于分块独立编码和分块索引机制,使得解码可以实现部分对png图像的随机访问;本发明适用于支持png格式的mcu芯片及产品上,通过该发明能实现对png图像的随机访问,从而使得png图片在gui显示时应用场景更广泛,解决了png图片只能顺序解码带来的应用限制问题;采用本发明的方法同样适用于其他应用png的场景和cpu芯片的领域。
6.本发明通过如下方案用以解决上述问题:
7.在本发明的第一方面,本发明提供了一种支持随机访问的png编码方法,所述编码方法包括以下步骤:
8.s101、按照图像块的分块行数,对png图像进行块划分;
9.s102、在png图像的图像头部块中加入指定分块行数的分块索引机制;
10.s103、从所述图像头部块中调用指定的滤波算法、编码算法和压缩算法对每个图像块进行独立的处理;
11.s104、对所有图像块处理完成后,在最后一块图像块的尾部增加图像结束块,完成对png图像的数据编码。
12.在本发明的第二方面,本发明还提供了上述编码方法所对应的解码方法,一种支持随机访问的png解码方法,所述解码方法包括以下步骤:
13.s201、读取png图像的数据编码,完成对图像头部块、图像数据块和图像结束块的
识别;
14.s202、选择图像随机访问的指定区域;其中所述指定区域包括起始行列信息和结束行列信息;
15.s203、调用图像头部块中的分块索引机制确定所述指定区域所对应的某一块或者连续多块;
16.s204、从所述图像头部块中调用指定的解压缩算法、解码算法以及滤波还原算法对指定区域内的某一块或者连续多块进行解码。
17.本发明的有益效果:
18.本发明的编码过程中,按照指定分块行数的方式对png图像进行分块,在图像头部块中加入了分块索引机制,将分块与png图像进行对应,简化了传统技术中需要将扫描行与图像进行一一对应的过程;由于分块索引机制的设立,还可以对每个分块执行独立的编码处理,每个分块可以采用不完全一致的编码算法,让png图像更具有多样性;在解码过程中,先选择出随机访问的指定区域,从图像头部块的分块索引机制中可以确定出指定区域所位于的分块位置,进行访问时,则可以直接从对应的分块读取内容并调用指定的解码算法对分块进行解码;采用本发明的编码方法可以对每个分块进行独立编码,在使用本发明的解码方法时则可以实现对png图像的随机访问,解决了png图片只能顺序解码带来的应用限制问题;所以本发明能够广泛应用于支持png格式的mcu芯片及cpu芯片等产品。
附图说明
19.图1为本发明的一种支持随机访问的png编码方法的流程图;
20.图2为本发明的一种支持随机访问的png解码方法的流程图;
21.图3是本发明实施例给出的一个png图像的指定区域示意图。
具体实施方式
22.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
23.png图像是一种包含图像头部块、图像数据块以及图像结束块的数据结构;其中对于图像数据块,这些图像块以从左往右,从上到下的方式被扫描;像素的每一行,叫做一个扫描行,这些扫描行被表示为字节序列,并按照字节序列进行存储;这种方式下,如果要对png图像中的某一个随机的分块进行访问,则需要从第一个扫描行到该分块所对应的最后一个扫描行,这种方式下,将会带来大量的冗余运算,举个例子,如果png图像包含了100个扫描行,如果分块位于第80行,传统技术则需要从第1个扫描行一直读取到第80个扫描行才能访问该分块;那么从第1个扫描行到第79个扫描行所带来的大量冗余运算将不利于在mcu设备上执行。
24.基于此,本发明提出了按照分块索引的方式来解决随机访问的问题,能够减少大量不必要的运算。
25.图1是一种支持随机访问的png编码方法流程图,如图1所示,所述方法包括以下步
骤:
26.s101、按照图像块的分块行数,对png图像进行块划分;
27.在本发明实施例中,需要先预设一个指定分块的行数,这个指定分块的行数可以是10、20、30不等的数量,即表示一个分块中包含10、20、30个扫描行;如一副图像是502行,如果按照20行(就是“指定分块行数”)一个分块的方式进行划分,应该会被划成26分块。也就是,其中前500行划分为25个分块,每个分块有20行,最后两行划分为一分块,所以总共有26个分块。对于同一个png图像,其指定分块的行数是一定的,这个指定分块的行数可以根据实际需要进行设定,如果需要更细的粒度,那么一个分块包含较少的扫描行,如果需要更粗的粒度,那么一个分块包括较多的扫描行。
28.按照上述预设的指定分块的行数,按照如下公式对一个png图像进行块划分,表示如下:
[0029][0030]
其中,n表示png图像所划分的块数;q表示png图像中的总行数;p表示指定分块的行数;表示向下取整。
[0031]
s102、在png图像的图像头部块中加入指定分块行数的分块索引机制;
[0032]
在本实施例中,在png图像的图像头部块中加入指定分块行数、每个分块在png图像中的地址索引以及每个分块进行独立的处理时的索引。
[0033]
所述每个分块进行独立的处理的索引包括每个分块所调用的滤波算法、编码算法和压缩算法的索引。
[0034]
举个例子,如果将一个png图像划分为10个分块,那么在具体的编码过程中,我们需要对这10个分块需要分别进行编码处理,在一些可以实现的方式中,这10个分块中,第一个分块采用滤波算法a、编码算法b和压缩算法c;第十个分块采用滤波算法a1、编码算法b1和压缩算法c1;那么我们将在图像头部块中的索引机制中存储第一个分块-a-b-c的索引,第十个分块-a1-b1-c1的所以,从而在后续的解码过程中可以直接根据算法的索引确定每个分块所对应的解码方式。
[0035]
s103、从所述图像头部块中调用指定的滤波算法、编码算法和压缩算法对每个图像块进行独立的处理;
[0036]
在上一个过程中,确定好每个分块的算法索引后,直接从图像头部块中调用滤波算法a1、编码算法b1和压缩算法c1对第一个分块编码以及调用滤波算法a1、编码算法b1和压缩算法c1对第十个分块编码,其余分块同理。
[0037]
其中,对于压缩算法,可以直接采用lz77算法或者lz77压缩算法等。对于编码算法,可以直接采用huffman编码算法。对于滤波算法,可以采用png文件格式白皮书中的过滤方法,但是其中的过滤算法有多种过滤类型。过滤方法并不会影响数据的大小,也不会影响丢失任何信息,过滤的目的只有一个,为压缩方法提供更好压缩的数据,本实施例可以按照不同过滤类型对不同分块进行处理,比如第一个分块采用sub过滤类型,即记录当前像素和左边像素的差值,左边起第一个像素作为标准值不做任何过滤;第二个分块采用average过滤类型,记录当前像素与左边像素和上边像素的平均值的差值。如果当前行作为本分块的
第一行:做特殊的sub过滤,左边起第一个像素是标准值,不做任何过滤。其他像素记录该像素与左边像素的二分之一的值的差值。如果当前行不是本分块的第一行:左边起第一个像素记录该像素与上边像素的二分之一的值的差值,其他像素做正常的average过滤。当然,具体实施时,也可以采用其他过滤类型进行处理,本发明对此不作限定。
[0038]
s104、对所有图像块处理完成后,在最后一块图像块的尾部增加图像结束块,完成对png图像的数据编码。
[0039]
对图像块处理完成后,最后一个数据块作为结束标志,最终实现对png图像的分块编码。
[0040]
图2是一种支持随机访问的png解码方法流程图,如图2所示,所述方法包括以下步骤:
[0041]
s201、读取png图像的数据编码,完成对图像头部块、图像数据块和图像结束块的识别;
[0042]
主机端gpu获取待解码png图像,采用c语言等对png图像的文件格式进行解析,包括从png图像中读取文件标志信息、关键数据块信息、辅助数据块等内容,通过分析文件标志的判断是否为标准png图像文件。
[0043]
一种优选方式下,当文件标志显示当前图像不为标准png图像文件时,可将其先转化为标准的pnc图像。
[0044]
关键数据块信息中包含分析图像头部块、图像数据块和图像结束块,其中图像数据块可以包括调色板数据块及idat图像数据块等,当根据所述文件标志信息判定png图像为标准的png图像时,可从关键数据块信息中获取图像数据块,作为png图像的原始数据。
[0045]
s202、选择图像随机访问的指定区域;其中所述指定区域包括起始行列信息和结束行列信息;
[0046]
当一个独立分块的png图形存在的时候,我们需要指定出区域的起始行列信息和结束行列信息;指定区域由一个包含起始行、起始列、结束行和结束列四元组构成,表示为(start_row,start_col;end_row,end_col);如图3所示,以一个86行、96列png图像为例,选择的指定区域的起始行为23行,起始列为18列,结束行为65行,结束列为88列。
[0047]
s203、调用图像头部块中的分块索引机制确定所述指定区域所对应的某一块或者连续多块;
[0048]
在确定指定区域的起始行列和结束行列信息后,按照索引机制确定出起始行信息对应的第一分块编号以及结束行对应的第二分块编号,从而确定该指定区域为第一分块编号到第二分块编号的连续多块。
[0049]
与分块编号进行对应的计算公式表示为:
[0050][0051][0052]
其中,m1表示第一分块编号;r1表示指定区域的起始行信息;p'表示从分块索引机
制中获取的指定分块的行数;m2表示第二分块编号;r2表示指定区域的起始行信息;表示向下取整。
[0053]
图3中,r1=23,r2=65;p'=20,该值从分块索引机制中获得,所以m1=2,m2=4。
[0054]
将指定区域与分块号2和分块号4进行对应,后续解码时只需要对第二个分块到第四个分块中的数据进行解码,而不需对第一个分块的数据进行遍历。
[0055]
s204、从所述图像头部块中调用指定的解压缩算法、解码算法以及滤波还原算法对指定区域内的某一块或者连续多块进行解码。
[0056]
对应编码过程的设计,从图像头部块的分块索引机制确定出各个分块所采用的算法索引,按照这个索引确定出该分块实际采用的算法,对应该算法的逆算法,采用解压缩算法、解码算法以及滤波还原算法对指定区域内的第二个分块到第四个分块进行解码。
[0057]
在本发明的描述中,需要理解的是,术语“同轴”、“底部”、“一端”、“顶部”、“中部”、“另一端”、“上”、“一侧”、“顶部”、“内”、“外”、“前部”、“中央”、“两端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
[0058]
在本发明中,除非另有明确的规定和限定,术语“安装”、“设置”、“连接”、“固定”、“旋转”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定,对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
[0059]
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1