首页 > 技术 > 内容

如何用FPGA并行高速运算实现实时的引导滤波算法?

时间:2026-01-01  作者:Diven  阅读:0

给出上篇中最后的matlab 引导滤波的代码,如下所示。

其中框框中为主要的计算过程,下一图为计算a/b的最后的公式(引导图=本身)。双边滤波由于其只是在空间距离及像素相似度上进行权重计算,加权滤波,相对算法不是特别复杂,FPGA也易于实现(某司的USB工业相机2D滤波就是双边滤波),但是确实效果上不如引导滤波,那么引导滤波FPGA计算真有那么难吗?为此我翻阅了一些资料,也从头到尾推到计算了一遍,略有所成,出来和大家分享下。

在Matlab/C的加速中,引导滤波采用了盒式滤波的方式去加速,将运算复杂度从O(MN)的降低到了O(4),其方法就是先计算当前像素到原点像素组成的矩形区域的和/平方和等,对于线程的Matlab/C而言确实有很大的加速作用

另附上架构实现图,但我估计这几个小朋友还没有想明白boxfilter是怎么回事,生搬硬套软件boxfilter加速的思维嘛???图中,计算均值,平方均值,a的均值,b的均值采用了4个boxfilter,也就是说如果输入1280*720的图像,那就需要缓存4个那么大地址空间的区域来存储中间变量,这显然是不适合FPGA加速运算的啊。FPGA的意义在于高速并行技术,尽可能的避免冲入进入缓存,而是以Pipeline的方式流水线完成运算,实现真正低延时+实时处理的目标。

所以为什么不能流水线完成所有的计算操作呢?

不服来战,没有啥难度的……下面开始我的表演。

【第一步】

以33的滤波为例(这里的引导图都是原图),按行从传感器或者DDR中读取原图,采用移位寄存后得到33的矩阵行,如下所示:如上图中,以P00-P22为例,这9个像素,我们可以通过计算得均值,以及平方的均值,紧接着继续计算得到a与吧,详见下图,其中相关的参数定义如下:从上图可知,通过三行组成的矩阵,以流水线方式,最快用了6个时钟得到了参数a与b;

由于全图流水线运行,因此从第6个时钟开始,将持续的输出每一个像素对应的a与b,等同于我们通过这一阶段的实现方式,得到了参数a/b阵列。

另外,上图中可知,除以9的运算我已经默默转换为乘法与移位,clk4中将涉及到的小数点,已经提前扩大了1024倍,同等的b中也做了变更(红/蓝色字体),这就是FPGA定点化的加速的方式。

再者,由于最后的计算还需要P的参与,因此上述步骤中,需要将输入的原始图像进行移位延时,最终能和后续am/bm对齐。

【第二步】

接下来,进一步计算am与bm,这个就简单的多了,类似第一步,直接缓存3行得到3*3的矩阵行,通过加权后得到am与bm。这个过程中am与bm的计算可以完全并行,每个am/bm的计算耗时3个时钟。

详见下图计算流:【第三步】

此时我们已经同时得到了am,bm,以及通过移位delay后和am/bm对齐的P,那么直接套用公式,我们就可以计算出每一个像素滤波后的值:

即输出Q=(am*P+bm)>>10

这里还需要右移10bit,是因为前面第一步中,由于涉及到了小数,我们提前进行了1024倍的扩大,来减少计算误差的损失。

至此,流水线操作,没有使用boxfilter,没有将数据回写入DDR,我们采用了若干行line buffer的形式,完成了实时引导滤波的FPGA加速实现。

整体流程再梳理一下,相关的依赖以及流水方式,如下图所示,应该可以看的更明白。其中绿色为第一步计,灰色为第二步计算,红色为最后一步计算。所以,这就是FPGA并行加速运算的价值与意义,按照我的实现方式,可以用最小的代码实现实时的引导滤波,甚至连低端的EP4CE6E都不是问题。

同样一个算法,可以有n种实现方式,你甚至可以把算法挪到MPSOC的PS中执行,然后忍受龟速的同时你可能还会抱怨FPGA跑的慢,CPU性能不足之类的,但是永远不要忘记,架构的意义。正如软件的优化,其实很多时候,并不是算法本身不行,而是你对系统底层,对计算优化的能力不行。

猜您喜欢


测试仪在现代科技和工业中是非常重要的配件,其应用领域而多样。在电子行业,测试仪用于检测电路板、元器件的性能,确保产品质量和可靠性。在通信领域,测试仪帮助工程师评...
2024-09-25 00:00:00
贴片电阻20R0,作为电子电路中不可或缺的元器件,扮演着稳定电流和分压的重要角色。它体积小巧,性能可靠,广泛应用于各种电子产品,从智能手机到家用电器,都能看到它...
2024-11-26 11:29:58
在工业和建筑领域,防爆锹和防爆镐是不可少的工具,其分类主要根据材质、用途和设计特点进行划分。根据材质,防爆锹和镐一般分为钢制和铝合金制。钢制工具因其耐用性和强度...
2009-10-01 00:00:00
薄膜电容作为电子元件中的重要组成部分,在各个领域发挥着关键作用。本文将为您盘点国内薄膜电容行业的佼佼者,介绍前十名品牌及其特点,帮助您更好地了解和选择。品牌与市...
2025-03-23 02:00:03
电阻器的性能需求也越来越高。特别是在恶劣环境下工作的电阻器,防硫化性能成为衡量其质量和可靠性的关键指标。TOKEN(德键)作为知名的电阻品牌,其防硫化电阻产品凭...
2015-08-16 22:04:30
贴片电阻通常以印在表面的数字或色带来表示阻值。对于三位数字的标识,前两位数字代表有效数字,第三位数字代表10的幂次方。例如,「472」表示47 × 10²,即4...
2024-11-26 11:29:48
引言在测量技术中,高速数字摄像机所拍摄到的大量数字图像需要高速、大容量的图像存储设备来实时快速地存储。用传统的磁带方式来记录数据,其效率和安全性不高;静态存储...
2020-07-21 17:45:00
十字槽圆头带介平尾自攻螺钉是常见的紧固件,应用于木材、塑料及轻金属等材料的连接。其独特的设计使得安装过程更加便捷。螺钉的十字槽头设计不仅提供了更好的抓握力,还能...
2012-12-05 00:00:00
整流桥二极管是电力电子领域中常用的元件,主要用于将交流电转化为直流电。随着电子技术的快速发展,整流桥二极管的应用越来越,因此了解其参数的计算对于设计和选型非常重...
2025-03-30 04:00:35
整流桥二极管是电力电子设备中不可少的元件,应用于电源转换、整流电路以及各种电子设备中。随着科技的发展和电力电子技术的进步,市场上出现了多种型号的整流桥二极管,满...
2025-04-09 13:00:37