Emgu学习之(五)——图像模糊处理
Visual Studio Community 2015 工程和代码:http://pan.baidu.com/s/1Qia0Q
内容
在这篇文章中将提到以下内容:
- 中值模糊
- 高斯模糊
图像模糊能有效的去除图像的噪点。
“平滑处理也称模糊处理,是一项简单且使用频率很高的图像处理方法。平滑处理的用途有很多,但最常见的是用来减少图像
上的噪点或者失真。”——《学习OpenCV(中文版)》
中值模糊
中值滤波是指以一个像素点为中心点,在这个中心点的正方形邻域内求所有像素的中间值,然后用这个中间值替换邻域内所有
点的像素值。中值滤波器可以有效的去除图像中的椒盐噪声和斑点噪声。
Emgu的Image类提供了SmoothMedian方法,这个方法只需要一个参数,即在执行中值滤波时的卷积核的大小。卷积核是
一个奇数行和列的矩阵,卷积核越大,滤波器的效果越明显。以下是使用SmoothMedian方法对一张满是椒盐噪声的图片进行处
理的代码和结果:
1 var image = new Image<Bgr, byte>(Properties.Resources.ai); 2 imageBox1.Image = image;//显示原图像 3 imageBox2.Image = image.SmoothMedian(5);//使用5*5的卷积核
代码效果如下:
高斯模糊
高斯滤波用卷积核与输入图像的每个点进行卷积,将最终计算的结果作为这个点的值。也就是说图像的每个点都是由其本身和
邻域内的点经过高斯滤波卷积核进行加权平均得到的。
高斯核其实就是一个矩阵,这个矩阵符合高斯分布,即矩阵中心的值最大,其余根据距离中心元素的距离递减,构成一个高斯
小山包:
在使用高斯模糊的方法时,我们需要指定高斯卷积核的高度和宽度(必须是奇数),还有高斯小山包的坡度参数,坡度参数分
为X方向和Y方向。如果坡度参数为0,那么方法会根据核的大小自动帮我们计算,如果只设置了X方向的值,那么Y方向采用X方向
的值。
Emgu的Image类提供了SmoothGaussian方法进行高斯模糊,SmoothGaussian有两种重载实现,一种我们只需要传入
卷积核大小参数,另外一个我们还需要传入X、Y方向的坡度参数。
1 var image = new Image<Bgr, byte>(Properties.Resources.ai); 2 imageBox1.Image = image;//显示原图像 3 imageBox1.Image = image.SmoothGaussian(5);
执行效果: