FPGA图像处理(8)常用算法:中值滤波去噪

版权声明:本文为CSDN博主「bt_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/botao_li/article/details/100551095

中值滤波去噪
中值滤波是一种算法简单,效果较好的“高性价比”去噪算法。

算法原理是使用图像内二维滑窗的中值(全部像素点数值排序位于中间位置的数值为中值)代替当前像素点值。

如下图的 3×3滑窗内,处于滑窗中心的当前像素点值为 8,滑窗内全部 9 个像素点的中值为 5,中值滤波即用数值 5 代替当前像素点值 8:

以 3×3中值滤波为例,首先将图像数据送入 3×3二维缓冲,再将并行输出的 9 个像素点进行冒泡排序找到中值后输出:

冒泡排序的基本原理是多个数值间两两顺序比较找到最大值,称为一轮冒泡。

两数值比较模块设计如下:

将模块作 Subsystem 封装后组成冒泡模块:

经过 8 次比较后,最大值出现在输出端口 9。

5 个冒泡模块串联,5 轮冒泡之后在输出端口 5 找到中值 median:

实际上图中的方法出现了部分逻辑资源浪费,bubble0 的输出中 out9 已是最大值,在 bubble1 中只要找到 in1 至 in8 的最大值即可,同理,下级的 bubble 模块都可以减少一次两两比较,一直到 bubble4 中只要找到 in1 至 in5 之间的最大值即可。但是为了设计直观,仍然使用上图的设计方法。

注意整个冒泡排序找中值的延迟为5级冒泡完整的时延 8×5=40

最新文章

最新文章