一种基于FPGA的摄像机海量图像压缩方法与流程

文档序号:13287378阅读:515来源:国知局
一种基于FPGA的摄像机海量图像压缩方法与流程

本发明主要涉及数字成像技术领域,尤其是高速成像技术领域,特指一种基于fpga的摄像机海量图像压缩方法。



背景技术:

视觉成像技术被广泛应用军事、工业、民用、消费等诸多领域。随着数字成像技术的快速发展,图像传感器成像分辨率越来越大,图像帧率越来越高,在成像过程中产生海量图像信号,给图像采集和存储带来巨大压力。图像数据是高度冗余的,这决定了其具有可压缩性。因此,通过图像压缩,可以在保证一定信息量前提下,大幅降低图像数据量,以利于图像存储与传输。

目前,在消费电子领域,多采用mpeg、h.264、h.265等压缩格式对成像图像进行压缩。在工业视觉领域,特别是高速成像技术领域,上述图像压缩方法很难满足摄像机海量图像实时压缩任务需求。



技术实现要素:

本发明要解决的技术问题在于:现有图像压缩方法,存在计算复杂度高,难以满足摄像机海量图像实时压缩需求。

为解决上述问题,本发明公开一种基于fpga的摄像机海量图像压缩方法,其特征是:其特征在于:fpga(1)与摄像机的图像传感器(2)直接连接,图像传感器(2)输出场同步信号v、行同步信号h、像素时钟clk、像素数据d;fpga(1)与存储器(3)连接,存储器(3)中存有图像压缩标记矩阵f,f的维数为w*h,其中w是采集图像宽度、h为采集图像高度,w、h的取值范围为1~100000,f中元素取值为0或1;fpga(1)以像素时钟clk作为图像压缩驱动时钟,根据场同步信号v、行同步信号h,对输入像素数量计数,并由此计算当前像素p的图像坐标(i,j),i的取值范围为0~w-1,j的取值范围为0~h-1;fpga(1)读取存储器(3)中图像压缩标记矩阵f中第(i,j)个元素:f(i,j),当f(i,j)=0时,不采样当前像素p,当f(i,j)=1时,采样当前像素p,其中f中元素的起始坐标为(0,0);当完成一行图像压缩后,把当前行压缩图像存入存储器(3)中;依次完成h行图像像素压缩,得到压缩图像;所述存储器(3)包括flash、ddr、sd存储芯片。

优选地,图像压缩标记矩阵f中元素f(i,j)取值是随机的。

优选地,图像压缩标记矩阵f中元素f(i,j)取值满足二项分布:

f(i,j)=b(r)(1)

其中,b是二项分布函数,r是二项分布函数输出值等于1的概率,r取值范围为0~1;图像压缩率与二项分布b()的输入参数r相等,通过调整r调整图像压缩率。

为保证每一行压缩图像中像素数量相等,使图像压缩标记矩阵f中所有行向量f(i,:)内元素之和s(i)相等,其中,f(i,:)是f第i行中所有元素构成的向量,i的取值范围为0~h-1。当二项分布生成的图像压缩标记矩阵f中h个s(i)不相等时,取h个s(i)的均值m,并对m取整数得到m';手动修改图像压缩标记矩阵f中行向量f(i,:)内元素,使f中所有s(i)=m';在修改过程中,修改的元素均匀散布于行向量f(i,:)中。

为提升fpga图像压缩效率,在fpga上设置2个双口blockram缓存:buffera、bufferb,其中buffera用于缓存图像压缩标记矩阵f中一行元素:f(i,:),bufferb用于缓存采集图像压缩后的一行像素;buffera的尺寸为:wbits;bufferb的尺寸为m*w*dbits,其中d是摄像机成像像素位宽,取值范围为1~100,m是图像压缩标记矩阵f中h个s(i)的最大值;buffera的第一个接口与存储器(3)连接,用于读取图像压缩标记矩阵f中一行元素f(i,:),buffera的第二个接口用于同步读取当前像素是否被丢弃的标记值f;bufferb的第一个接口用于存储压缩后图像,bufferb的第二个接口与存储器(3)连接,用于存储压缩的一行像素。

本发明fpga图像压缩工作过程是:

像素时钟clk驱动图像压缩过程,设置图像行计数器cr、设置图像列像素计数器cc、bufferb的第一接口地址计算器cd;

所述计算器cr、cc、cd为寄存器变量,对它们的更新在下一个时钟周期才生效;

当检测到场同步信号v无效时,从存储器(3)中读取图像压缩标记矩阵f中第0行元素f(0,:),经buffera的第一接口存入buffera中;

当检测到场同步信号v的下降沿时,使cr=0、cc=0,cd=0;

当检测到行同步信号h的下降沿时,使cc=0、cd=0、累加cr;

当检测到行同步信号h有效时,累加cc,从buffera的第二接口读取buffera中第cc个bit;当读出的标记值f(cc)=1时,把当前像素经bufferb的第一接口存入bufferb中cd位置处、并累加cd;当读出的标记值f(cc)=0时,不存储、不累加cd;

当检测到行同步信号h的下降沿时,从存储器(3)中读取图像压缩标记矩阵f中第cr行元素f(cr,:)到buffera,并且将bufferb中存储的一行压缩图像存入存储器(3)中。

本发明有益效果是:与现有技术在图像频域(比如jpeg、h.264、h.265)进行图像压缩的算法原理是不同的,本发明方法直接在图像采集过程中,直接执行像素丢弃或保留操作,实现图像压缩。直接对像素进行丢弃操作实现压缩的优点是:通过fpga等硬件可以实现与像素时钟同步压缩,处理时间仅为1个像素时钟,与现有基于图像块的频域图像压缩方法相比,复杂度更低。这种单像素时钟的图像压缩方法所带来的好处是:成本低、功耗低,只要成像器件能够成像,即可实现任意分辨率、任意帧率的图像压缩。因此,本发明方法,不仅可以用于工业摄像机,还可以用于高速摄像机海量图像压缩。

附图说明

图1本发明图像压缩工作原理

其中,图1(a)是输入图像,图1(b)是图像压缩标记矩阵f,图1(c)是像素丢弃结果,图1(d)是压缩图像,图1(e)是原始像素,图1(f)是丢弃像素;

图2压缩图像重建原理

其中,图2(a)是压缩图像,图2(b)是图像压缩标记矩阵f,图2(c)是压缩图像重排序结果,图2(d)是压缩图像重建结果,图2(e)是压缩图像中已知像素,图2(f)是压缩图像中未知像素,图2(g)是压缩图像重建像素;

图3图像像素丢弃与修复效果示例

其中,图3(a)输入图像,图3(b)丢弃像素图像,图3(c)修复图像,为便于显示,图3(b)中丢弃像素设为0;

图4fpga图像压缩硬件原理图

其中,1、fpga,2、摄像机图像传感器,3、存储器,4、图像压缩标记矩阵f,5、压缩图像,6、buffera,7、bufferb,8图像压缩处理单元;

图5本发明图像压缩时序图

图6本发明图像压缩与重建结果实例

其中,图6(a)输入图像,图6(b)99%压缩率图像,图6(c)95%压缩率图像,图6(d)90%压缩图像,图6(e)99%压缩率图像重建结果,图6(f)95%压缩率图像重建结果,图6(g)90%压缩率图像重建结果,为便于显示,压缩图像中丢弃像素用0代替。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,下面结合附图及实施例,对本发明进行进一步详细说明。应当注意,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明提出的图像压缩基本原理是:图像是高度冗余、并且局部高度相似的,如图1所示,给定一幅输入图像(图1(a)),根据图像压缩标记矩阵f(图1(b)),在输入图像中丢弃部分像素(图1(c)),再对丢弃像素按行排序得到压缩图像(图1(c)),图中黑色圆盘(图1(e))为原始像素,图1(c)中空白区域(图1(f))表示该位置像素被丢弃。

图2给出了压缩图像重建过程:先根据图像压缩标记矩阵f(图2(b)),对压缩图像(图2(a))中像素进行重新排序,得到包含已知像素(图2(e))和未知像素(图2(f))的压缩图像重排序结果(图2(c)),再根据压缩图像中已知像素(图2(e)),利用图像局部相似性特征,采用局部邻域图像重建方法,估计出未知像素(图2(f))的取值(图2(g)),用于得到压缩图像重建图像(图2(d))。

图3给出了一个图像丢弃与修复效果实例,用于证明本发明方法的有效性。如图3所示,其中图2(a)是lena图像,图像分辨率为512*512,位宽为8bits的灰度图像,随机丢弃lena图像中70%像素,为便于显示在被丢弃像素位置处设置为0,得到图3(b)所示丢弃像素图像,也是本发明的压缩图像,然后,利用丢弃像素图像(图3(b))中已知像素补偿丢弃像素,具体方法是:对于某一个丢弃像素p(i,j),(i,j)为图像坐标,以(i,j)为中心取s*s大小邻域,在邻域内,找出所有已知像素,并计算这些已知像素的中值,作为丢弃像素p(i,j)的估计值,并填充到丢弃图像的(i,j)位置处。图3(c)是采用3*3大小邻域修复效果图。从修复结果可以看出,本发明提出的通过丢弃部分像素以实现图像快速压缩的方法是可行的。

图6给出了在90%、95%、99%压缩率情况下图像压缩结果,以及采用9*9大小邻域重建结果。可以看出,本发明方法可在90%压缩率时,良好重建出原始图像。

本发明图像压缩标记矩阵f的生成方法包括:

方法1:

手动设定f中元素为0或1。

方法2:

采用二项分布b()生成图像压缩矩阵中元素f(i,j)=b(r),其中,r是二项分布函数的输入参数,r是二项分布函数b()输出值为1的概率。

与方法1相比,方法2的优点是:通过二项分布随机函数生成的f中元素值,在图像中分布更为均匀,有利于提升压缩图像重建效果。并且,可以通过调整输入参数r的取值,实现图像压缩率调整。

方法3:

先采用方法2生成图像压缩矩阵f,并判断f中行向量f(i,:)中元素之和s(i)是否相等,如果不相等,则计算所有行向量元素之和s(i)的均值m,并对m取整,得到m';再通过手动调整方法,改变行向量中元素取值,使f中所有行向量中元素之和等于m'。

本发明fpga进行图像压缩硬件结构原理如图4所示,fpga(1)与摄像机的图像传感器(2)直接连接,图像传感器(2)输出场同步信号v、行同步信号h、像素时钟clk、像素数据d;fpga(1)与存储器(3)连接,存储器(3)用于存储图像压缩标记矩阵(4)和压缩图像(5);fpga内部有两个双口blockram缓存:buffera(6)和bufferb(7);其中buffera用于缓存图像压缩标记矩阵f中的一行元素,bufferb用于缓存采集图像压缩后的一行像素;buffera的第一个接口与存储器(3)连接,用于读取图像压缩标记矩阵f中一行元素,buffera的第二个接口用于同步读取当前像素是否被丢弃的标记值;bufferb的第一个接口用于存储压缩后图像,bufferb的第二个接口与存储器(3)连接,用于存储所压缩的一行图像像素;fpga上有图像压缩处理单元(8)用于图像压缩。

图像压缩处理单元(8)的工作流程如下:

像素时钟clk驱动图像压缩过程,设置图像行计数器cr、设置图像列像素计数器cc、bufferb的第一接口地址计算器cd;

所述计算器cr、cc、cd为寄存器变量,在下一个时钟周期才更新;

当检测到场同步信号v无效时,从存储器(3)中读取图像压缩标记矩阵f中第0行元素f(0,:),经buffera的第一接口存入buffera中;

当检测到场同步信号v的上升沿和下降沿时,使cr=0、cc=0,cd=0;

当检测到行同步信号h的下降沿时,使cr=cr+1;

当检测到行同步信号h有效时,累加cc,从buffera的第二接口读取buffera中第cc个bit;当读出值为1时,把当前像素经bufferb的第一接口存入bufferb中cd位置处、并累加cd;当读出值为0时,不存储、cd不累加;

当检测到行同步信号h的下降沿时,从存储器(3)中读取图像压缩标记矩阵f中第cr行元素f(cr,:)到buffera,并且将bufferb中存储的一行压缩图像存入存储器(3)中。

图5给出了本发明方法的时序图,其中场同步信号v、行同步信号h都是高电平有效,压缩标记值f是buffera的第二接口读出值信号;当压缩标记值为高时,采样并保存当前像素值d,当压缩标记值为低时,不采样不保存当前像素值d,由此可实现与像素时钟同步的图像压缩,进而实现海量图像实时压缩。

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