基于FPGA的均值滤波算法的实现

我们为了实现动态图像的滤波算法,用串口发送图像数据到fpga开发板,经fpga进行图像处理算法后,动态显示到vga显示屏上,前面我们把硬件平台已经搭建完成了,后面我们将利用这个硬件基础平台上来实现基于fpga的一系列图像处理基础算法。
椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。椒盐噪声是一种因为信号脉冲强度引起的噪声,产生清楚该噪声的算法也比较简单。
均值滤波的方法将数据存储成3x3的矩阵,然后求这个矩阵。在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标象素为中心的周围 8 个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。
均值滤波
如图所示,我们要进行均值滤波首先要生成一个3x3矩阵。算法运算窗口一般采用奇数点的邻域来计算中值,最常用的窗口有3x3和5x5模型。下面介绍3x3窗口的verilog实现方法。
(1) 通过2个或者3个ram的存储来实现3x3像素窗口;
(2) 通过2个或者3个fifo的存储来实现3x3像素窗口;
(3) 通过2行或者3行shift_ram的存储来实现3x3像素窗口;
要想用实现均值滤波和中值滤波,必须要先生成3x3阵列,在altera系列里,可以用quatusii调用ip核——shift_ram,具体设置参数如图所示。
如上图所示,其中shiftin是实时输入的数据,taps1x,taps2x输入数据的第二三行,当数据输入成一行三个时,自动跳到下一行,最终形成每行是三列的一个矩阵,用均值滤波和中值滤波的处理方法即可,这样基本是每一个目标都可以找到自己对应的一个3x3矩阵,最后进行处理。先进入ip核里面的是最开始的的数据,所以在读出的时候也是要放在第一行。
xilinx vivado也有自己的shift_ram ip core,不过这里只能缓存出来一行数据,我们这里需要两个shift_ram ip core和正在输入的一行数据共同组成3行数据。这里调用两个shift_ram ip core将这两个ip级联起来就行了。
本系统主要用通过调用两个shift_register ip核来生成3x3矩阵实现3x3像素窗口。shift_register ip核可定义数据宽度、移位的行数、每行的深度。这里我们需要8bit。640个数据每行,同事移位寄存2行即可。同时选择时钟使能端口clken。如图所示。
像素数据移位寄存
我们这里将行设置为12,所以可以明显的看到,当数据缓存到一行时,就会移位寄存到下一行,缓存两行后便会生成3x3矩阵。
缓存的数据
比较缓存的第一行的数据在3x3矩阵中,占第一行,结果相同,显然是正确的。最终生成的3x3矩阵结果显然是正确的。
求总值
求均值
我们在计算均值的时候采用两级流水线消耗了2个时钟周期,所以最后要将输给写ram使能的数据缓存使能延时两个时钟周期!学到一个延时的新写法。
将3x3矩阵的中心像素的周围八个点求和,我们这里还是采取流水线的设计方法,来增加吞吐量,然后再求平均值代替目标像素的值,这里读者可以自己思考怎么设计,从波形图上观察,计算的结果显然是正确的。这样便完成了均值滤波的仿真。
我们来看一下板级测试视频:http://t.cn/rcjxigf
最后我们来比较一下显示效果,上图为灰度图像,下图为均值滤波后的图像,可以看出滤波后的图像有一些模糊,这是因为均值滤波就是将图像做平滑处理,像素值高的像素会被拉低,像素值低像素会被拉高,趋向于一个平均值,所以图像会变模糊一些。而且细心的人可以把图片放大会看到,图片上会有几个白黑点,这其实就是椒盐噪声,我们文章开头也说过了,椒盐噪声(salt & pepper noise)是数字图像的一个常见噪声,所谓椒盐,椒就是黑,盐就是白,椒盐噪声就是在图像上随机出现黑色白色的像素。均值滤波相当于低通滤波,有将图像模糊化的趋势,对椒盐噪声基本无能力,所以显示的图片上会留下一些黑白点。

电动自行车的常见故障及解决方法
薄膜瑕疵在线检测系统的原理及特点说明
Lite.im在加密货币行业里是怎样工作的?
卡萨帝烤箱:烤熟不烤干,烤披萨不再难
区块链驱动的供给融资机会有哪些
基于FPGA的均值滤波算法的实现
线注入法检测车载高压同轴电缆的屏蔽性能
Vishay推出针对无线调制解调器的固钽贴片电容器-592W
Neopact直接电镀工艺的应用
高通骁龙835一加5要搞事情!美版一加5出现一神奇Bug,拨打911后自动重启
沃菲斯为M005耳机评测 低频弹性很好适合听摇滚
WR_FDB将值间接写入F- DB中
300PLC mpi转以太网与海得软件modbusTCP客户端通讯
“动力与储能协奏曲”主题演讲
EtherCAT与RTEX驱动器轴回零的配置与实现
全球珠宝协会正在使用区块链技术为钻石和黄金打造了一个追踪系统
芯片上晶体管的密度增长无法满足通用人工智能的发展需要?
大数据开发和软件开发哪个前景好?需要做什么工作?
CMOS Sensor的调试经验
开发以更加实用、灵活性高性能 ADAS 应用模块