基于FPGA的双边滤波器设计

作者:张爱杰;刘士建;张瑞;李冰; 刊名:红外技术 上传者:李守亭

【摘要】针对串行架构的处理器如ARM和DSP等实现双边滤波算法消耗资源过多的情况,提出了一种基于FPGA加速的双边滤波去噪的实现方法。根据双边滤波算法的原理以及FPGA的硬件资源,充分发挥FPGA在并行计算上的优势,在滤波器的系数生成和除法操作上进行了优化。在减少了FPGA所消耗的资源的同时,保证了图像去除噪声的实时性,从而为后期的视频采集与传输系统奠定了一个良好的开端。

全文阅读

3.中国科学院红外探测与成像技术重点实验室,上海200083)0引言图像的产生和传输过程中,传感器自身的噪声、量化噪声或外部环境干扰等都会对图像产生噪声干扰,为了提高图像的识别效果,必须对图像进行滤波处理[1]。常用的滤波算法有高斯滤波、中值滤波和双边滤波等。而双边滤波算法结合邻域空间信息和像素值相似性对图像进行滤波处理,在平滑滤波的同时能够保留图像丰富的边缘特征,具有简单、非迭代、局部的特点[2]。但是在ARM或者DSP这类的串行结构的处理器上实现实时滤波的算法将会十分耗时,对于实时性要求比较高的系统,如果用软件实现会比较慢,因此采用硬件实现比较合适[1]。随着芯片制程、工艺和性能的提升,FPGA在功耗、性能和成本上的优势显著,用户可根据实际需求设计出所需的逻辑,也可以随时修改,大大降低了开发难度。同时由于FPGA并行和流水线的特点,可以有效提升算法的运行速度[3]。我们的工作主要创新内容是在FPGA上实现了双边滤波,提出了该算法在结合FPGA硬件的优化方法,提高图像处理的实时性,为未来实时图像采集与处理做了良好的铺垫。1双边滤波原理Tomasi和Manduchi于1998年提出图像双边滤波算法(Bilateral filtering,BF)[4]。双边滤波算法是基于高斯滤波方法,旨在解决高斯滤波带来的图像边缘模糊问题,利用强度的变化来保存边缘信息[5]。相比于其他滤波器,双边滤波器在平滑噪声的同时也保留了图像的边缘信息,因此非常适用于图像的噪声处理。双边滤波器的数学公式为:(7)(8)(7)(8)(7)(8)(7)(8)(7)(8)(7)(8),,,??(28)???k lk lf k l c k l i j s k l i jg i jc k l i j s k l i j(1)式中:(7)(8)(7)(8)(7)(8)2 22d2,,, ei k j lc k l i j?-(10)--(28),(7)(8)(7)(8)(7)(8)22r,,2,,, ef i j f k ls k l i j?--(28);(i, j)为中心点;(k, l)为中心点的邻域像素;f(i, j)为中心点的像素值;f(k, l)为中心点(i, j)的(k, l)邻域的像素值;?d、?r两个系数分别决定了空间位置对中心点的影响力度和像素差值对中心点的影响力度。双边滤波器的内核由c(k, l, i, j)空间域的滤波核和s(k, l, i, j)值域滤波核组成,前者表示距离中心像素越远的像素占得权重越少,后者表示灰度差异越大的像素占的权重越少,因此,双边滤波算法能更好地保护边缘信息[2]。2双边滤波器硬件实现滤波器的实现过程需要复杂的指数运算和除法运算,这两个部分将消耗许多的逻辑资源,因此本文提出了基于查找表的快速指数运算和移位相减的除法实现。指数计算需要涉及浮点数运算,但是根据指数的性质可知0<c(k, l, i, j)≤1, 0<s(k, l, i, j)≤1,因此可用只有小数部分的定点数代替浮点数来表示,这样可以直接使用整数乘法器和移位操作实现指数的运算,可以节省很多的逻辑资源。算法实现的总体框图如图1所示,输入的图像I经过N-1个行缓存后进入N×N的窗口寄存器中,经过行计算单元生成滤波器核系数与邻域像素值的积c(k, l, i, j)×s(k, l, i, j)×f(k, l)及核系数c(k, l, i, j)×s(k, l, i, j),最后对这两项分别求和后再相除,得到滤波后的像素值Q。ILine BufferLine BufferN×N Window

参考文献

引证文献

问答

我要提问