图像处理之均值滤波3

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像处理之均值滤波3相关的知识,希望对你有一定的参考价值。

1 概述

均值滤波,是最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应像素的平均值(所有像素加权系数相等),其实说白了它就是归一化后的方框滤波。我们在下文进行源码剖析时会发现,blur函数内部中其实就是调用了一下boxFilter。

下面开始讲均值滤波的内容吧。

2 均值滤波的理论简析

均值滤波是典型的线性滤波算法,主要方法为邻域平均法,即用一片图像区域的各个像素的均值来代替原图像中的各个像素值。一般需要在图像上对目标像素给出一个模板(内核),该模板包括了其周围的临近像素(比如以目标像素为中心的周围8(3x3—1)个像素,构成一个滤波模板,即去掉目标像素本身)。再用模板中的全体像素的平均值来代替原来像素值。即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度点g (x,y),即

图像处理之均值滤波3_均值滤波

其中m为该模板中包含当前像素在内的像素总个数。

3 均值滤波的缺陷

均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。

4 均值滤波—blur函数

blur函数的作用是:对输入的图像src进行均值滤波后用dst输出。blur 函数在OpenCV 官方文档中,给出的其核是这样的:

图像处理之均值滤波3_均值滤波_02

这个内核一看就明了,就是在求均值,即blur函数封装的就是均值滤波。blur函数的原型如下。

图像处理之均值滤波3_均值滤波_03

  • 第一个参数, InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片。但需要注意的是,待处理的图片深度应该为CV_8U、CV_16U、CV_16S、CV_32F 以及 CV_64F之一。
  • 第二个参数, OutputArray类型的dst,即目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到如假包换的目标图。
  • 第三个参数,Size类型(对Size类型稍后有讲解)的ksize,内核的大小。一般写作Size(w,h)来表示内核的大小(其中,w为像素宽度,h为像素高度)。Size(3,3)就表示3x3的核大小, Size(5,5)就表示5x5的核大小
  • 第四个参数, Point类型的anchor,表示锚点(即被平滑的那个点),注意它有默认值Point(—1,—1)。如果这个点坐标是负值,就表示取核的中心为锚点,所以默认值Point(—1,—1)表示这个锚点在核的中心。
  • 第五个参数, int类型的borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT,我们一般不去管它。

5 示例

代码

//---------------------------------【头文件、命名空间包含部分】-------------------------------
// 描述:包含程序所使用的头文件和命名空间
//------------------------------------------------------------------------------------------
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
// 描述:控制台应用程序的入口函数,我们的程序从这里开始
//---------------------------------------------------------------------------------------------
int main( )

//【1】载入原始图
Mat srcImage=imread("1.jpg");

//【2】显示原始图
imshow( "均值滤波【原图】", srcImage );

//【3】进行均值滤波操作
Mat dstImage;
blur( srcImage, dstImage, Size(7, 7));

//【4】显示效果图
imshow( "均值滤波【效果图】" ,dstImage );

waitKey( 0 );

原图

图像处理之均值滤波3_均值滤波_04


效果图

图像处理之均值滤波3_均值滤波_05

对比图

图像处理之均值滤波3_均值滤波_06

以上是关于图像处理之均值滤波3的主要内容,如果未能解决你的问题,请参考以下文章

学习 opencv--- 线性邻域滤波专场:方框滤波,均值滤波,高斯滤波

matlab图像处理-中值滤波原理

matlab图像处理-中值滤波原理

图像处理一百题(11-20)

图像处理一百题(11-20)

图像处理一百题(11-20)