欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

用Python实现的图像过滤器设计与常用滤波算法概览

最编程 2024-02-09 14:05:09
...


中值滤波——非线性滤波

中值滤波:用像素点领域灰度值的中值来代替该像素点的灰度值,该方法在去除脉冲噪声,椒盐噪声的同时又能保留图像的边缘细节,中值滤波去除椒盐噪声和斑块噪声时,效果非常明显。

理解:选用一个模板[n,n],每次在图像中取出模板大小的矩阵,将所有元素进行排序,取中值代替原像素,而未被赋值的元素取原值。中值滤波通常采用一个含奇数个点的滑动窗口,用窗口的中的灰度值的中值来代替中心点的灰度值,其实就是对这个窗口中的灰度值进行排序,然后将其中值赋值给中心点即可。常用的中值滤波窗口形状有线状、方形、圆形以及十字形等

算法描述:

[1] 获得源图像的首地址及图像的宽和高
[2] 开辟一块内存缓冲区,用以暂存结果图像,并初始化为0
[3] 逐个扫描图像中的像素点,将其邻域各元素的像素值从小到大进行排序,将求得到的中间值赋值给目标图像中与当前点对应的像素点
[4] 循环步骤[3],直到处理完源图像的全部像素点
[5] 将结果从内存缓冲区复制到源图像的数据区

I=medfilt2(I0,[n,n]);%matlab中自带的中值滤波函数:

均值滤波
与中值滤波类似,用其像素点周围像素的平均值代替元像素值,在滤除噪声的同时也会滤掉图像的边缘信息。
A=fspecial(‘average’,[n,n]); %matlab中自带值滤波函数
I=imfilter(I0,A);

高斯模糊(高斯滤波)
所谓”模糊”,可以理解成每一个像素都取周边像素的平均值。“中间点”取”周围点”的平均值,在数值上,这是一种”平滑化”。在图形上,就相当于产生”模糊”效果,”中间点”失去细节。计算平均值时,取值范围越大,”模糊效果”越强烈。
与均值滤波不同的是,不是简单平均,而是依据距离来加权平均,距离越近的点权重越大,距离越远的点权重越小。采用二维的正态分布(高斯函数)的权重分配模式

双边滤波——非线性滤波

http://www.360doc.com/content/17/0306/14/28838452_634420847.shtml

双边滤波与高斯滤波器相比,对于图像的边缘信息能过更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。

图像滤波器的设计 python 图像滤波算法总结_中值滤波

对于高斯滤波,仅用空间距离的权值系数核与图像卷积后确定中心点的灰度值。即认为离中心点越近,其权值系数越大。

双边滤波中加入了对灰度信息的权重,即在领域内,灰度值越接近中心点灰度值的点的权值更大,灰度值相差大的点权重越小。其权重大小则由值域高斯函数确定。

两者权重系数相乘,得到最终的卷积模板,由于双边滤波需要每个中心点领域的灰度信息来确定其系数,所以速度比一般的滤波慢得多,而且计算量增长速度为核的大小的平方。

σ越大,边缘越模糊;σ越小,边缘越清晰。

图像滤波器的设计 python 图像滤波算法总结_中值滤波_02


推荐阅读