前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV中值滤波

OpenCV中值滤波

作者头像
zy010101
发布2020-03-18 17:16:46
1.2K0
发布2020-03-18 17:16:46
举报
文章被收录于专栏:程序员程序员

在数字图像处理常见的变换核及其用途中,已经说明了线性滤波。线性滤波是算术运算,有固定的模板,即:变换核。

中值滤波是非线性滤波,没有固定的变换核。它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。

百度百科中是这样描述中值滤波的原理:

中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号处理技术,中值滤波的基本原理是把数字图像或数字序列中一点的值用该点的一个邻域中各点值的中值代替,让周围的像素值接近的真实值,从而消除孤立的噪声点。方法是用某种结构的二维滑动模板,将板内像素按照像素值的大小进行排序,生成单调上升(或下降)的为二维数据序列。二维中值滤波输出为g(x,y)=med{f(x-k,y-l),(k,l∈W)} ,其中,f(x,y),g(x,y)分别为原始图像和处理后图像。W为二维模板,通常为3*3,5*5区域,也可以是不同的的形状,如线状,圆形,十字形,圆环形等。

在OpenCV中,我们都是去取一个奇数的正方形模板,例如:3*3,5*5,7*7等。

中值滤波对脉冲噪声(椒盐噪声)有良好的滤除作用,特别是在滤除噪声的同时,能够保护信号的边缘,使之不被模糊。这些优良特性是线性滤波方法所不具有的。此外,中值滤波的算法比较简单,也易于用硬件实现。(DSP芯片实现)

椒盐噪声:椒盐噪声也称为脉冲噪声,是图像中经常见到的一种噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。椒盐噪声的成因可能是影像讯号受到突如其来的强烈干扰而产生、类比数位转换器或位元传输错误等。例如失效的感应器导致像素值为最小值,饱和的感应器导致像素值为最大值。

中值滤波的原理和应用我们也搞明白了,下面来看一个实际的例子。例子中的图片仍旧是来自百度百科的。

代码语言:javascript
复制
#include<opencv2/opencv.hpp>

using namespace cv;

int main()
{
	Mat src = imread("C:/Users/zhou_/Desktop/3.jpg");
	imshow("src", src);

	Mat dst;
	//中值滤波,二维模版大小取13*13
	medianBlur(src, dst, 13);

	imshow("result", dst);
	waitKey(0);
	return 0;
}

可以看到中值滤波的效果还是非常显著的,它有效的去除了图中的椒盐噪声。

需要说明的一点是邻域的大小与平滑的效果直接相关,邻域越大平滑的效果越好,但邻域过大,平滑会使边缘和轮廓信息损失的越大,从而使输出的图像变得模糊,因此需合理选择邻域的大小。如果在这个程序中选择的邻域范围是3*3,那么几乎不会有什么效果。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档