一种基于fpga的引导滤波器及其实现方法
【专利摘要】本发明公开了一种基于FPGA的引导滤波器及其实现方法,该基于FPGA的引导滤波器包括:信号控制器、均值滤波模块、参数计算模块、寻址取值模块、状态判别器、数据缓存器、综合运算模块;该基于FPGA的引导滤波器实现方法通过结合FPGA芯片,充分利用了FPGA易于实现大规模并行运算的特点,在保证滤波效果的同时提高运算速度,降低了引导滤波器硬件设计的复杂度。本发明从总体上给出了滤波处理的并行结构,提高了滤波的速度;通过寻址取值的方式改进了二进制除法运算,便于硬件实现,提高了系统运行时间;通过判别器设置改进了二进制减法算法,提高了系统可靠性。
【专利说明】-种基于FPGA的引导滤波器及其实现方法
【技术领域】
[0001] 本发明属于引导滤波器【技术领域】,尤其涉及一种基于FPGA的引导滤波器及其实 现方法。
【背景技术】
[0002] 引导滤波器是一种边缘平滑滤波器,它可以实现图像边缘的平滑、细节增强、以及 图像融合去噪等功能,是一种功能强大的滤波器。它的原理是通过一幅引导图像对输入图 像进行滤波,输出的图像在保留输入图像整体特征的同时,能充分获取引导图像的变化细 节。引导滤波器在图像去噪,图像细节平滑、增强,抠图,羽化等等方面均取得了不错的效 果,应用比较广泛。
[0003] 但是引导滤波算法比较复杂,运算量比较大,从而导致引导滤波器的实时性很差, 阻碍了其实际应用。考虑到算法内部并行模块的独立性,硬件实现不失为提高滤波实时性 的有效途径之一。目前,绝大部分引导滤波文献是关于其理论研究以及在软件算法仿真的, 而关于其硬件实现的则很少。
[0004] FPGA是基于查找表结构的可编程器件,具有大容量的BlockRAM资源,而且可以通 过系统内的重新配置来改变逻辑功能,为引导滤波器的硬件设计与实现提供了可能。如何 利用FPGA实现引导滤波器的硬件设计,达到引导滤波快速处理的目标,从而实现引导滤波 器在图像处理等领域的实时应用,具有十分重要的意义。
【发明内容】
[0005] 本发明实施例的目的在于提供一种基于FPGA的引导滤波器及其实现方法,旨在 解决引导滤波算法比较复杂,运算量比较大,从而导致引导滤波器的实时性很差的问题。
[0006] 本发明实施例是这样实现的,一种基于FPGA的引导滤波器,该基于FPGA的引导滤 波器包括:信号控制器、均值滤波模块、参数计算模块、寻址取值模块、状态判别器、数据缓 存器、综合运算模块;
[0007] 信号控制器,由行列计数器和比较器构成,用于对数据实时监控,通过输入的系统 控制信号分析数据状态,及时标记并发送行信号及场信号工作指令,确保能够依据指令正 确处理数据;
[0008] 均值滤波模块,与信号控制器连接,用于对数据进行均值化滤波处理,由局部窗口 生成模块和均值计算器模块构成,其中局部窗口生成模块由系统快速生成的FIFO和移位 寄存器组成,用于将串行数据并行化输出,均值计算模块由加法器和乘法器组成,用于数据 处理,在二进制除法改进算法的基础上,对并行输入到均值计算模块的数据求取总和值,然 后进入到乘法器,计算并行输入数据的均值;
[0009] 参数计算模块,与均值滤波模块连接,由多个加法器、减法器、乘法器、比较器和寄 存器组成,用于收集数据,完成初步数据处理,计算过程中与寻址取值模块互相调用,经计 算获取方差值以及局部线性系数值;
[0010] 寻址取值模块,与均值滤波模块和参数计算模块连接,用于对二进制除法算法的 改进,充分利用FPGA具有大容量的BI0CKRAM资源,用于存储大量数据和实现快速查找表功 能的特点,将除法运算改为一次寄存器寻址过程和一次乘法运算过程,通过改进生成寻址 取值模块,为参数计算模块及均值滤波模块提供所需数据;
[0011] 状态判别器,与参数计算模块连接,由比较器、加法器、减法器和寄存器组成,是基 于改进计算过程中带有符号形式的二进制数不易于分辨及处理的情况所设置,用于对输入 数据对比产生状态使能信号,驱动参数计算模块和综合运算模块按照使能状态智能数据处 理,减少系统计算复杂度;
[0012] 数据缓存器,与综合运算模块连接,由系统快速生成的FIFO和移位寄存器组成, 用于协调数据时序,确保数据能够同步处理;
[0013] 综合运算模块,与均值滤波模块、状态判别器和数据缓存器连接,用于数据综合处 理,结合数据缓存器和参数计算模块的数据综合处理,最终输出通过导向滤波器滤波之后 的图像数据信息。
[0014] 本发明实施例的另一目的在于提供一种基于FPGA的引导滤波器实现方法,该基 于FPGA的引导滤波器实现方法包括以下步骤:
[0015] 步骤一:信号控制器:
[0016] 按照流水线设计方法,局部窗口生成后会随着数据的不断输入逐步右移,利用加 法器构成一款计数器,在同步时钟的控制下对系统输入控制信号进行标记、判断并发送状 态息;
[0017] 步骤二:均值滤波:
[0018] 均值滤波模块中局部生成窗口为3*3模块,输入图像为P_in,引导图像为I_in,以 数据串的形式在同步时钟激励下按行分别输入到局部生成窗口模块,在经过两个FIFO和6 个寄存器后,输出数据组1 :P1、P2……P9和数据组2 :11、12……19,利用乘法器获取数据 组3 :IP1、IP2……IP9以及数据组4 :ΙΙ1、ΙΙ2……119,将四组数据分别送到4个均值计算 模块,通过计算分别得到数据组均值:ave_P、ave_I、ave_IP和ave_II ;
[0019] 步骤三:变量计算:
[0020] 第一步,参数计算:
[0021] 在得到ave_P、ave_I、ave_IP及ave_II四组数据,通过分析整理,对(ak,b k)计算;
[0022] 第二步,寻址取值:基于FPGA对二进制除法改进算法的设计,用被除数乘以除数 的倒数,将除法转为乘法来简化计算过程;
[0023] 第三步,状态判别器:
[0024] 步骤三和步骤六的计算过程中涉及到二进制减法运算,计算过程中会产生负数, 基于对带符号二进制数的状态判别器进行处理;
[0025] 步骤四:均值滤波:
[0026] 用于对步骤三中得到的(ak,bk)分别进行均值滤波,具体方法见步骤二,局部窗口 生成模块C、D分别生成数据组5:akl,ak2......ak9和数据组6 :bkl,bk2......bk9到均值计算模 块,输出数据组均值ave_a和ave_b ;
[0027] 步骤五:数据缓存器:
[0028] 步骤二和步骤四分别调用了局部窗口生成模块,所以行缓存设计中需要用到4个 FIFO, FIFO深度与局部生成窗口中用到的FIFO深度一致,设计期间由于部分公式计算会引 起时延,所以在数据缓存器的设计中还需要用到寄存器组,I_in在经过数据缓存器缓存后 输出 I_in_delay ;
[0029] 步骤六:综合运算:
[0030] 如公式
【权利要求】
1. 一种基于FPGA的引导滤波器,其特征在于,该基于FPGA的引导滤波器包括:信号控 制器、均值滤波模块、参数计算模块、寻址取值模块、状态判别器、数据缓存器、综合运算模 块; 信号控制器,由行列计数器和比较器构成,用于对数据实时监控,通过输入的系统控制 信号分析数据状态,及时标记并发送行信号及场信号工作指令,确保能够依据指令正确处 理数据; 均值滤波模块,与信号控制器连接,用于对数据进行均值化滤波处理,由局部窗口生 成模块和均值计算器模块构成,其中局部窗口生成模块由系统快速生成的FIFO和移位寄 存器组成,用于将串行数据并行化输出,均值计算模块由加法器和乘法器组成,用于数据处 理,在二进制除法改进算法的基础上,对并行输入到均值计算模块的数据求取总和值,然后 进入到乘法器,计算并行输入数据的均值; 参数计算模块,与均值滤波模块连接,由多个加法器、减法器、乘法器、比较器和寄存器 组成,用于收集数据,完成初步数据处理,计算过程中与寻址取值模块互相调用,经计算获 取方差值以及局部线性系数值; 寻址取值模块,与均值滤波模块和参数计算模块连接,用于对二进制除法算法的改进, 充分利用FPGA具有大容量的BI0CKRAM资源,用于存储大量数据和实现快速查找表功能的 特点,将除法运算改为一次寄存器寻址过程和一次乘法运算过程,通过改进生成寻址取值 模块,为参数计算模块及均值滤波模块提供所需数据; 状态判别器,与参数计算模块连接,由比较器、加法器、减法器和寄存器组成,是基于改 进计算过程中带有符号形式的二进制数不易于分辨及处理的情况所设置,用于对输入数据 对比产生状态使能信号,驱动参数计算模块和综合运算模块按照使能状态智能数据处理, 减少系统计算复杂度; 数据缓存器,与综合运算模块连接,由系统快速生成的FIFO和移位寄存器组成,用于 协调数据时序,确保数据能够同步处理; 综合运算模块,与均值滤波模块、状态判别器和数据缓存器连接,用于数据综合处理, 结合数据缓存器和参数计算模块的数据综合处理,最终输出通过导向滤波器滤波之后的图 像数据信息。
2. -种基于FPGA的引导滤波器实现方法,其特征在于,该基于FPGA的引导滤波器实现 方法包括以下步骤: 步骤一:信号控制器: 按照流水线设计方法,局部窗口生成后会随着数据的不断输入逐步右移,利用加法器 构成一款计数器,在同步时钟的控制下对系统输入控制信号进行标记、判断并发送状态信 息; 步骤二:均值滤波: 均值滤波模块中局部生成窗口为3*3模块,输入图像为P_in,引导图像为I_in,以数据 串的形式在同步时钟激励下按行分别输入到局部生成窗口模块,在经过两个FIFO和6个寄 存器后,输出数据组1 :P1、P2……P9和数据组2 :11、12……19,利用乘法器获取数据组3 : IPUIP2……IP9以及数据组4 :ΙΙ1、ΙΙ2……119,将四组数据分别送到4个均值计算模块, 通过计算分别得到数据组均值:ave_P、ave_I、ave_IP和ave_II ; 步骤三:变量计算: 第一步,参数计算: 在得到ave_P、ave_I、ave_IP及ave_II四组数据,通过分析整理,对(ak,bk)计算; 第二步,寻址取值:基于FPGA对二进制除法改进算法的设计,用被除数乘以除数的倒 数,将除法转为乘法来简化计算过程; 第三步,状态判别器: 步骤三和步骤六的计算过程中涉及到二进制减法运算,计算过程中会产生负数,基于 对带符号二进制数的状态判别器进行处理; 步骤四:均值滤波: 用于对步骤三中得到的(ak,bk)分别进行均值滤波,具体方法见步骤二,局部窗口生成 模块C、D分别生成数据组5: akl,ak2......ak9和数据组6 :bkl,bk2......bk9到均值计算模块,输 出数据组均值ave_a和ave_b ; 步骤五:数据缓存器: 步骤二和步骤四分别调用了局部窗口生成模块,所以行缓存设计中需要用到4个 FIFO, FIFO深度与局部生成窗口中用到的FIFO深度一致,设计期间由于部分公式计算会引 起时延,所以在数据缓存器的设计中还需要用到寄存器组,I_in在经过数据缓存器缓存后 输出 I_in_delay ; 步骤六:综合运算: 如公式
所示,利用步骤四得到数据协同步骤五输出的1_ in_delay综合运算后输出,所得到的数据即为经过引导滤波器处理后输出的最终图像数 据,设计过程中利用状态判别器选择输出。
3.如权利要求2所述的基于FPGA的引导滤波器实现方法,其特征在于,在步骤二中的 具体步骤如下: 第一步,窗口生成: 在FIFO控制器的作用下,?_化和I_in数据被写入FIFO和从FIFO中读出,第(i-2) 行数据在同步时钟作用下,先按序存入FIF01中,存满后按时间顺序存到FIF02中,同时第 (i-1)行数据存入FIF01中,当FIF01和FIF02充满数据且第i行数据到来时,利用流水线 设计原理,窗口每行设置两个寄存器用于缓存相同列坐标的数据,等待窗口填满后同时将9 个数据并行输出,即得到数据组1 :P1、P2……P9和数据组2 :11、12……19,获取数据组3 : IP1、IP2……IP9以及数据组4 :111、112……119,所得到的的四组数据送到均值计算模块 中; 第二步,均值计算: 均值计算分为两个过程,即求和过程和除法运算过程,如公式(7)、(8)所示: ave = Sum/N (7)
(8) 其中,ave为计算得到的均值,Sum为滑动模板内所有像素值总和,Ν为模板内像素个数 总数,Ν为9 ; a、 求和,依照公式(8),分别对数据组1-4求和,得到Suml,Sum2, Sum3, Sum4 ; b、 求均值,求均值是FPGA处理二进制除法运算的过程,通过均值计算后得到4个数据 组的均值,分别为 ave_P、ave_I、ave_IP 和 ave_II。
4. 如权利要求2所述的基于FPGA的引导滤波器实现方法,其特征在于,在步骤三的第 一步中,对(ak,b k)的计算过程如下: 1) 依据公式
将ak的计算过程并行分解计算如下: a、 分子
即ave_IP_ave_I*ave_P,直接通过乘法器和减法器获得,分 子中存在有二进制减法运算,采取状态判别器进行优化; b、 分母。k2+e,其中ε为定值,。k2为引导图像在局部窗口内的方差,利用数学概念 对方差的定义,可以知道方差和均值如公式(9)所示关系: σ k2 = E (X2) -E2 (X) (9) 即aVe_II-aVe_I*aVe_I,计算过程中需要用到1个减法器、1个乘法器以及1个加法 器; c、 利用2寻址取值中原理整合公式,获取得到局部窗口内ak值; 2) 由公式
可知,bk的计算依赖于ak,a k计算过程中存在计算时 延,需要用到3个寄存器对数据时序进行缓存,bk计算过程还要用到1个乘法器以及1个减 法器。
5. 如权利要求2所述的基于FPGA的引导滤波器实现方法,其特征在于,在步骤三的第 二步中,寻址取值具体方法如下: 当给定除数,便通过计算得到其倒数,由于除数的倒数是小数形式,并且值不大于1,因 此取小数部分进行二值化后的高16位,连同整数部分最后1位,形成一个位宽为17的二进 制数据,记做除数的倒数,通过乘法运算实现除法功能。
6. 如权利要求2所述的基于FPGA的引导滤波器实现方法,其特征在于,在步骤三的第 三步中,基于对带符号二进制数的状态判别器具体方法如下: 计算η = A-B及m = n+k,其中k为常数,A,B为输入值; 1) 数值计算与状态判别,对需要涉及到减法的数据A和B进行比较判别,若A大于等于 B则记做状态S1,否则记做S2,与此同时做计算nl = A-B和n2 = B-A ;状态S1情况下η = nl,状态S2情况下η = η2 ; 2) 状态保留,后续处理,做计算ml = n+k和m2 = k-n,如若状态S1情况下m = ml,否 贝lj m = m2。
【文档编号】G06T5/00GK104063847SQ201410272948
【公开日】2014年9月24日 申请日期:2014年6月18日 优先权日:2014年6月18日
【发明者】朴燕, 任伟杰, 刘硕, 孙荣春, 王宇 申请人:长春理工大学