verilog 实现中值滤波

本文介绍了中值滤波的原理,通过3*3的滑动窗口对图像数据进行排序,替换中心值。文章详细阐述了采用6级比较电路实现中值滤波的过程,并提到了一种快速排序法来简化实现。此外,还讨论了一类和二类比较器的使用,并提供了快速排序法的步骤。
摘要由CSDN通过智能技术生成
图像信号在形成、传输和记录的过程中,由于成像系统、 传输介质、工作环境和记录设备等的固有缺陷,不可避免地产 生各种类型的噪声,降低了图像的质量,进而影响后续处理( 如边缘检测、图像分割、特征提取、模式识别等)的效果或 准确性。因此,对噪声图像进行滤波是必要预处理过程。但滤 波算法在去除噪声的同时难免对图像造成一定程度的模糊,造 成细节信息的丢失。
中值滤波是对一个滑动窗口内的诸像素灰度值排序,用其中值代替窗口中心象素的原来灰度值,它是一种非线性的图像平滑法,它对脉冲干扰级椒盐噪声的抑制效果好,在抑制随机噪声的同时能有效保护边缘少受模糊。

中值滤波

将 3*3 滑动块中的灰度值进行排序,然后用排序的中间值取代 3*3 滑块中心的值。示意图如下图所示。

 


 

实现原理(这是文献中的,理解起来比较复杂,最近我又学到一种更加简单快捷的方法,补充在最后)

通过如下图所示的6级比较电路路输出中值,其输人数据为图1所示的滤波掩膜所在的图像数据。第一级比较电路由3个三输入比较器C组成,每个比较器的输出数据依序排列(参见图示)。将3组比较结果中最小的3个数放在一起、中间的3个数放在一起、最大的3个数放在一起,参加第二级比较。第二级比较电路的原理与第一级类似,输出out1和out9,分别是输入数据中的最大值和最小值,这2个数据将被舍去不参加下一级比较。参加第三级比较的有7个数据,其原理类似于前两级比较电路,输出out2和out8分别是该7个数据的最大值和最小值,并且被舍去,仅留下5个数据参加第四级比较。剩下的几级比较电路以类似于先前的原理进行比较。如此,经过6级比较后即可得到9个数据的标准中值滤波输出值out5,而outl,out2,⋯,out9分别是这9个数据从最大到最小的顺序排列值。此外。为了保证流水线操作过程中数据的同步性,在第三级和第五级比较电路中需要插入数据寄存器R缓存当前该级中不参与比较的数据。

 

 

 


说明:中值滤波也是基于3*3的像素矩阵,有关3*3矩阵的实现,在上一篇文章中详细讲过链接如下:http://www.cnblogs.com/aslmer/p/5779079.html

此原理多次用到比较器,我将比较器分为两类,第一类:三个数进行比较,输出max、med、min。第二类:两个数进行比较,输出max、min。

第一类比较器的实现

module compare_1(
             data_a    ,
             data_b    ,
             data_c    ,
             data_max  ,
             data_min  ,
             data_med
             );

input    [5:0]   data_a  ;
input    [5:0]   data_b  ;
input    [5:0]   data_c  ;

output   [5:0]   data_max;
output   [5:0]   data_min;
output   [5:0]   data_med;

wire     [5:0]   data_max;
wire     [5:0]   data_min;
wire     [5:0]   data_med;

wire [5:0] a,b,c;//a,b,c代替三个输入,方便代码书写
assign a=data_a;
assign b=data_b;
assign c=data_c;

assign data_med =  (a<b)?(b<c)?b:(a>c)?a:c : (b>c)?b:(a<c)?a:c;
assign data_min =  (a<b)?(a<c)?a:c  :  (b>c)?c:b    ;
assign data_max =  (a>b)?(a>c)?a:c :  (b>c)?b:c    ;

endmodule

第二类比较器就是比较两个数大小,非常简单。

module compare_2 (
           dat_1   ,
           dat_2   ,
           dat_max ,
           dat_min
);
 
input   [
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值