基于FPGA的图像压缩方法与流程

文档序号:17728350发布日期:2019-05-22 02:40阅读:429来源:国知局
基于FPGA的图像压缩方法与流程

本发明涉及数字信号处理领域,尤其涉及一种基于fpga的图像压缩方法。



背景技术:

小波变换是变换编码的一种,由于小波变换能有效的提取图像中的内容,在图像编码中得到广泛应用。随着基于小波变换的图像编码技术的发展,嵌入式小波零树图像编码(ewz)技术、分层小波树集合分割(spiht)技术和jpeg2000技术的相继出现,基于小波变换的图像压缩技术被认为是当前最有发展前途的图像压缩技术之一。

spiht和jpeg2000技术为目前两个比较成熟的技术。jpeg2000于2000年被确定为静态图像的新一代编码标准,取得了较好的图像压缩效果。基于分层树的集合分割技术也是spiht可实现任意码率的压缩,对sar图像实现任意码率的压缩也具有一定指导意义。jpeg2000技术效果虽然比spiht稍好,但jpeg2000技术的复杂性比spiht复杂度高:jpeg2000需要额外的码率控制,而在spiht中,超出编码的部分可以直接丢弃,不需要额外的控制模块,但在传输中的容错性不高,一个突发的错误可能会大规模影响图像解压质量,且传统的动态链表编码在现场可编程门阵列(field-programmablegatearray,fpga)中不易实现。



技术实现要素:

(一)要解决的技术问题

针对于现有的技术问题,本发明提出一种基于fpga的图像压缩方法,用于至少部分解决上述技术问题之一。

(二)技术方案

本发明提供一种基于fpga的图像压缩方法,图像压缩方法在fpga上进行,包括:根据图像尺寸大小计算小波变换的层数m,并根据小波变换的层数m对图像进行小波变换;根据小波变换的层数m得到图像中所有像素点的扫描顺序列表;根据小波变换后的图像中所有像素点的值的绝对值的最大值得到对图像像素点进行编码的编码层数,并根据编码层数得到编码的像素系数重要性列表和像素子集重要性列表;根据扫描顺序列表、像素系数重要性列表及像素子集重要性列表对图像的像素点进行分类编码,并进行容错控制编码,将分类编码结果与容错控制编码拼接,以压缩图像。

可选地,根据小波变换的层数得到图像中所有像素点的扫描顺序列表,包括:将原始图像分割为多个正方形图像,每个正方形图像的宽度为n;根据log2n-3计算小波变换的层数m;按照首先扫描第m层小波变换后的图像中的像素点,其次扫描第m-1层小波变换后的图像中的像素点,依次类推,最后扫描第1层小波变换后的图像中的像素点,生成扫描顺序列表。

可选地,根据小波变换后的图像中所有像素点的值的绝对值的最大值得到对图像像素点进行编码的编码层数,包括:根据floor(log2pmax)计算编码层数,其中,pmax为小波变换后的图像中所有像素点的值的绝对值的最大值,floor函数为向下取整函数。

可选地,根据编码层数得到编码的像素系数重要性列表,包括:设置当前编码阈值为2n,其中,n为floor(log2pmax);比较每个像素点的值的绝对值与阈值的大小,得到像素系数重要性列表;若像素点的值的绝对值大于阈值,则该像素点在像素系数重要性列表中的值为1,若像素点的值的绝对值小于阈值,则该像素点在像素系数重要性列表中的值为0,其中1表示重要系数像素点,0表示不重要系数像素点。

可选地,每个像素点包括多个像素子集,根据编码层数得到编码的像素系数重要性列表像素子集重要性列表,包括:设置当前编码阈值为2n,其中,n为floor(log2pmax);比较每个像素点所有像素子集的值的绝对值与阈值的大小,得到子集重要性列表;若一像素点的所有像素子集中的有一个像素子集的值大于阈值,该像素点在子集重要性列表的值为1;当一像素点的所有像素子集的值均小于阈值,则该像素点在子集重要性列表的值为0,其中1表示子集重要像素点,0表示子集不重要像素点。

可选地,根据扫描顺序列表、像素系数重要性列表及像素子集重要性列表对图像的像素点进行分类编码包括:首先根据扫描顺序列表及像素系数重要性列表对图像的像素点进行分类编码,得到不重要系数像素点变为重要系数像素点的编码和重要系数像素点的编码;其次根据扫描顺序列表及像素子集重要性列表对图像的像素点进行分类编码,得到子集重要性分类的编码。

可选地,将不重要系数像素点变为重要系数像素点的编码、重要系数像素点的编码、子集重要性分类的编码及容错控制编码进行拼接,得到图像压缩的编码结果,其中,拼接顺序依次为不重要系数像素点变为重要系数像素点的编码,子集重要性分类的编码,重要系数像素点的编码,容错控制编码。

可选地,根据扫描顺序列表及像素子集重要性列表对图像的像素点进行分类编码中,引入ctrl控制变量,用以控制编码过程中扫描过所有像素点且不重复扫描。

可选地,当图像大小固定时,将扫描顺序列表存储在fpga内存中。

可选地,根据扫描顺序列表、像素系数重要性列表及像素子集重要性列表对图像的像素点进行分类编码还包括:获取小波变换后图像中所有像素点的值的符号,并编入分类编码结果中,每个符号对应的像素点的编码中。

(三)有益效果

本发明提出一种基于fpga的图像压缩方法,有益效果为:

1、基于原始spiht图像压缩技术,添加了像素点的扫描顺序列表,根据生成的像素点的扫描顺序列表对图像进行压缩编码,解决了传统动态链表编码在在fpga中不易实现的问题,延续了spiht图像压缩的优点,能以任意编码率实时传输图像,或按照失真程度进行编码。

2、在图像压缩编码的过程中加入容错控制编码,提高了图像压缩时容错性。

3、图像压缩编码过程中使用的整数小波变换、spiht图像压缩技术及差错控制编码均比较简单,在fpga上实现时,在可靠性、性能的资源利用率均达到星载图像压缩标准的指标。

4、图像压缩编码完全基于http的流媒体网络传输协议(httplivestreaming,hls)实现在fpga上实现,实现图像实时低延时压缩,具有很好的可移植性和通用性。

附图说明

图1是本发明实施例基于fpga的图像压缩的原理图。

图2是本发明实施例基于fpga的图像压缩方法的流程图。

图3是本发明实施例图像的扫描顺序示意图。

图4是本发明实施例利用改进的spiht分类编码的流程图。

图5是本发明实施例像素在子集重要性中分类编码的流程图。

图6是本发明实施例差错控制编码与分类编码结果拼接的示意图。

图7是本发明实施例利用fpga并行运算和多流水结构特点设计的压缩图像的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

本发明提出一种基于fpga的图像压缩方法,通过对传统的spiht图像压缩技术进行改进,将改进的图像压缩技术在fpga实现,以实现图像的压缩,图像压缩的原理如图1所示,通过对原始图像进行整数小波变换,然后进行分类编码及差错控制,以输出图像压缩后的码流。下面做具体介绍。

图2示意性示出本发明实施例基于fpga的图像压缩方法的流程图,如图2所示,方法包括:

s1,根据图像尺寸大小计算小波变换的层数m,并根据小波变换的层数m对图像进行小波变换。

在对图像进行整数小波变换之前,需对图像进行均衡化处理,具体地,将图像分割给多个宽度为n的正方形图像,再对每个正方形图像进行小波变换,其中n指正方形图像一边上的像素点数。小波变换的层数m通过log2n-3计算,例如,分割后的正方形图像一边上的像素点数为1024,则小波变换的层数为7。其中,整数小波变换中,使用以离散小波变换为核心,9/7整数离散小波变换的方法。该算法结构简单,易于硬件设计实现,可实现无损图像压缩,且在fpga实现时,原始图像可以被快速小波变换的结果覆盖,因此不需要额外的储存单元,节省了储存空间。

s2,根据小波变换的层数m得到图像中所有像素点的扫描顺序列表。

传统的spiht图像压缩技术中,分类编码过程使用的是动态链表,而动态链表在fpga中不易实现。因此,在进行分类编码前,根据小波变换的结果生成像素点的扫描顺序列表,再根据生成像素点的扫描顺序列表中扫面像素点的先后顺序对小波变换提取的内容进行编码,以压缩图像,为传统的spiht图像压缩技术在fpga上实现困难的问题提供解决方法。

其中,图像扫描顺序根据小波变换的层数m得到,按照首先扫描第m层小波变换后的图像中的像素点,其次扫描第m-1层小波变换后的图像中的像素点,再次扫描第m-2层小波变换后的图像中的像素点,依次类推,最后扫描第1层小波变换后的图像中的像素点,生成扫描顺序列表。即编码的顺序为先编码第m层小波变换提取的图像内容,再编码第m-1层小波变换提取的内容,依次类推。

图像的扫描顺序如图3所示。图中数字代表相应像素点的排序顺序。图像扫描顺序包含图像所有像素。初始化列表时,按照扫描顺序将像素点前1-16位在像素重要性表中进行分类为不重要系数。将顺序为5-16的12个像素在子集重要性列表中进行分类为d。

s3,根据小波变换后的图像中所有像素点的值的绝对值的最大值得到对图像像素点进行编码的编码层数,并根据编码层数得到编码的像素系数重要性列表和像素子集重要性列表。

在上述操作s3中,利用改进的spiht分类编码步骤如图4所示,图像扫描顺序及初始分类列表作为spiht循环编码分类的列表。当图像大小固定时,即连续压缩的多张图像大小一定,图像扫描顺序和分类列表的初始化可以直接保存在内存里,在要压缩一样大小的图像时,无需重新生成,大大减少了生成图像扫描顺序及初始分类列表所需要的资源和时间。

整数小波变换后的图像在进行spiht扫描前需要将图像取绝对值并保存符号,保存的符号将按照图像像素的分类顺序依次编入编码。通过图像计算spiht分类编码的层数,编码层数的计算公式为floor(log2pmax),其中,pmax为小波变换后的图像中所有像素点的值的绝对值的最大值,floor函数为向下取整函数。

spiht分类编码是先根据最大的阈值进行分类编码,阈值为2n,其中阈值最大值时,n的值为floor(log2pmax),完成当前层数的编码时n递减。结束时阈值越大,图像失真度越高;结束时阈值越小,图像失真度越低。因此,spiht编码可以根据失真度选择结束编码。

在spiht分类编码前,根据编码层数得到编码的像素系数重要性列表和像素子集重要性列表,具体地,首先在确定当前编码阈值2n,比较小波变换后每个像素点的值的绝对值与当前阈值的大小,得到像素系数重要性列表;若像素点的值的绝对值大于当前阈值,则该像素点在像素系数重要性列表中的值为1,若像素点的值的绝对值小于当前阈值,则该像素点在所述像素系数重要性列表中的值为0,其中1表示重要系数像素点,0表示不重要系数像素点;比较小波变换后图像中每个像素点所有像素子集的值的绝对值与当前阈值的大小,得到子集重要性列表;若一像素点的所有像素子集中的有一个像素子集的值大于当前阈值,该像素点在子集重要性列表的值为1;当一像素点的所有像素子集的值均小于当前阈值,则该像素点在子集重要性列表的值为0,其中1表示子集重要像素点,0表示子集不重要像素点。在后面的系数分类编码和子集分类编码中通过查表法应用。

s4,根据扫描顺序列表、像素系数重要性列表及像素子集重要性列表对图像的像素点进行分类编码,并进行容错控制编码,将分类编码结果与容错控制编码拼接,以压缩图像。

在进入扫描循环后,在系数重要性分类编码模块和子集重要性分类编码模块中开始图像压缩的编码。首先根据扫描顺序列表及像素系数重要性列表对图像的像素点进行分类编码,得到不重要系数像素点变为重要系数像素点的编码和重要系数像素点的编码,具体地,在扫描过程中,对于当前像素点,首先判断当前像素在系数重要性中的分类。如果属于系数重要性分类中的不重要系数,则查找系数重要性列表,如果表中的值为1则在缓存1中输出1和该像素的符号,并将该像素标记为重要性系数,即不重要系数像素点变为重要系数像素点的编码。如果属于系数重要性分类中的重要系数,则查找系数重要性列表并输出到缓存2,即重要系数像素点的编码。

其次判断该像素在子集重要性中的分类。像素在子集重要性中分类编码的步骤如图5所示。图中n为正方形图像的宽度,可以看到每次完成分类编码之后i不变时,引入了ctrl控制变量,从而扫描图像时可以从头到尾的扫描过全部像素点并在编码中不重复进行像素点在子集重要性的分类编码并输出至缓存3。

得到分类编码结果后,将差错控制编码与分类编码结果拼接,如图6所示,其中,拼接顺序依次为不重要系数像素点变为重要系数像素点的编码,子集重要性分类的编码,重要系数像素点的编码,容错控制编码,即在每一层的编码中,排列顺序是先输出系数重要性分类中,将不重要系数变为重要系数的编码,再输出子集重要性分类中的编码,最后输出系数重要性分类中对重要系数的编码和差错控制编码。其原始是因为根据压缩率需求的不同,spiht编码可以随时停止编码,而排序后的编码比排序前的编码在解码时能达到更好的解码效果。

同时,因为系数重要性分类、子集重要性分类是按照扫描顺序编码的,任何一位的突发性错误有极大几率引起解码时的分类错误,从而导致解压图像质量严重下降。因此,在解码的分类过程中,子集重要性分类与系数重要性分类不混淆有着重要意义,加入差错控制码之后可以确定有没有发生这类错误,并能定位发生错误的编码层数。差错编码为当前编码层数的二进制码。

根据上述编码方法压缩图像,首先为当前spiht技术的容错率问题提供了一个解决方案。在原spiht压缩技术中,使用了动态链表,解决了动态链表在fpga中不易实现的问题。并对比当前技术中其他的改进spiht图像压缩技术,减少了循环次数,有较高的实时性,并能达到原spiht压缩技术的图像压缩性能。

本发明实施例中,上述s1-s4都是在fpga上实现的,fpga作为高性能并行处理器,可实现对优化后的spiht图像压缩技术进行实时低延时处理,极大的提高图像压缩在系统信息传输中的作用。高级语言综合(hls)作为fpga新型编程形式,正在逐渐被应用在广泛的fpga算法实现领域,该图像压缩方法就是利用hls开发和编译工具针对已优化设计后的算法进行编程实现。利用fpga并行运算和多流水结构特点设计压缩图像的流程图如图7所示,基于fpga,通过本发明实施例改进的spiht图像压缩技术对图像压缩处理,实施并行运算,实现了图像实时低延时压缩,且完全基于hls在fpga上实现图像压缩有很好的可移植性和通用性。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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