前言
图像处理的三种滤波 中值滤波应用较为广泛 综合膨胀和腐蚀可以实现边缘检测
一、中值滤波
1.原理
用于去除椒盐噪声
因为黑白像素为0或255 利用3×3矩阵构造可以排序 消除噪声 对于较大的噪声 可以改用5×5矩阵
注意:后续技术分享,第一时间更新,以及缩放、白平衡及各种滤波算法完整代码,将在VX群发布,请添加VX:Zeus20010223
2.fpga实现
通过该模块实现排序算法 总共消耗4个周期得到 目标中值
sort_3 u1_sort_3 (
.clk (clk ),
.rst_n (rst_n ),
.data1 (matrix11 ),
.data2 (matrix12 ),
.data3 (matrix13 ),
.min_data (min_data1 ),
.mid_data (mid_data1 ),
.max_data (max_data1 )
);
使用img_gen模块模拟时序
3.仿真验证
可以看到从第一个矩阵构建完成到输出结果共耗费3个周期 与代码逻辑一致
此后 连续输出6个周期的中值 240 与matlab结果一致
再看max_sub和min_sub的值 均为0 说明fpga与matlab处理结果一致
效果图 可以看到图片变模糊了 去除了一些椒盐噪声
二、膨胀滤波
1.原理
用于去除白点
因为白像素为255 利用3×3矩阵构造可以排序 消除噪声 对于较大的噪声 可以改用5×5矩阵
2.fpga实现
通过该模块实现排序算法 总共消耗2个周期得到 最小值
sort_3 u4_sort_3 (
.clk (clk ),
.rst_n (rst_n ),
.data1 (min_data1 ),
.data2 (min_data2 ),
.data3 (min_data3 ),
.min_data (target_data ),
.mid_data ( ),
.max_data ( )
);
使用img_gen模块模拟时序
3.仿真验证
与matlab结果一致
效果图 可以看到去除了白点噪声
三、腐蚀滤波
与膨胀滤波相反 去除黑点噪声 其他略
总结
主要应用img_gen视频流 修改图像处理模块 中值滤波涉及到排序算法 用sort模块实现排序