author@jason_ql http://blog.csdn.net/lql0716
平滑处理(smoothing)也称模糊处理(bluring),常用来减少图像上的噪点或者失真。
方框滤波一般用来模糊一张图片。
C++:void bosFilter(InputArray src, OutputArray dst, int ddepth, Size ksize, Point anchor=Point(-1,-1), boolnormalize=true, int borderType=BORDER_DEFAULT)
参数: 第一个参数
:InputArray类型的src,输入图像,即原图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片。但需注意,待处理的图片深度应该是CV_8U、CV_16U、CV_16S、CV_32F、CV_64F之一。 第二个参数
:OutputArray类型的dst,即目标图像,需要和原图片有一样的尺寸和类型。 第三个参数
:int类型的ddepth,输出图像的深度。“-1”代表使用原图深度,即src.depth()。 第四个参数
:Size类型的ksize,内核的大小。一般用Size(w,h)的写法来表示内核的大小(其中,w为像素宽度,h为像素高度)。例如Size(3,3)表示3x3的核大小;Size(5,5)表示5x5的核大小。 第五个参数
:Point类型的anchor,表示锚点(即被平滑的那个点),注意,它有默认值Point(-1,-1)。如果这个点坐标是负值的话,就表示取核的中心为锚点,所以默认值Point(-1,-1)表示这个锚点在核的中心。 第六个参数
:bool类型的normalize,默认值为true,一个标识符,表示内核是否被其区域归一化(normalized)了。 第七个参数
:int类型的borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT,我们一般不去管它。
C++: void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT)
第一个参数
:InputArray类型的src,输入图像,即原图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片。但需注意,待处理的图片深度应该是CV_8U、CV_16U、CV_16S、CV_32F、CV_64F之一。 第二个参数
:OutputArray类型的dst,即目标图像,需要和原图片有一样的尺寸和类型。 第三个参数
: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,我们一般不去管它。
高斯滤波一般用来模糊一张图片。
C++: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)
第一个参数
:InputArray类型的src,输入图像,即原图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片。但需注意,待处理的图片深度应该是CV_8U、CV_16U、CV_16S、CV_32F、CV_64F之一。 第二个参数
:OutputArray类型的dst,即目标图像,需要和原图片有一样的尺寸和类型。 第三个参数
:Size类型的ksize,内核的大小。一般用Size(w,h)的写法来表示内核的大小(其中,w为像素宽度,h为像素高度)。例如Size(3,3)表示3x3的核大小;Size(5,5)表示5x5的核大小。 第四个参数
:double类型的sigmaX,表示高斯函数在X方向的标准偏差。 第五个参数
:double类型的sigmaY,表示高斯核函数在Y方向的标准差。若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么久有ksize.width和ksize.height计算出来。为了结果的正确性着想,最好把第三个参数Size、第四个参数sigmaX和第五个参数sigmaY全部指定到。 第六个参数
:int类型的borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT,我们一般不去管它。
中值滤波一般用来平滑(模糊)处理一张图片。
C++: void medianBlur(InputArray src, OutputArray dst, int ksize)
第一个参数
:InputArray类型的src,函数的输入参数,填1、3或4通道的Mat类型的图像。当ksize为3或5的时候,图像深度需为CV_8U、CV_16U、CV_32F其中之一,而对于较大孔径尺寸的图片,它只能是CV_8U。 第二个参数
:OutputArray类型的dst,即目标图像,函数的输出参数,需要和原图像有一样的尺寸和类型。我们可以用Mat::Clone,以原图片为模板,来初始化得到如假包换的目标图。 第三个参数
:int类型的ksize,孔径的线性尺寸(aperture linear size),注意这个参数必须是大于1的奇数,比如3、5、7、9……
双边滤波一般用来模糊处理一张图片。
C++: void bilateralFilter(InputArray src, OutputArray dst, int d, double sigmaColor, double sigmaspace, int borderType=BORDER_DEFAULT)
第一个参数
:InputArray类型的src,输入图像,即原图像,需要为8为或浮点型单通道、三通道的图像。 第二个参数
:OutputArray类型的dst,即目标图像,需要和原图片有一样的尺寸和类型。 第三个参数
:int类型的d,表示在过滤过程中每个像素邻域的直径。如果这个值被设为非正数,那么Opencv会从第五个参数sigmaSpace来计算出它。 第四个参数
:double类型的sigmaColor,颜色空间滤波器的sigma值。这个参数的值越大,就表明该像素邻域内越宽广的颜色会被混合到一起,产生较大的半相等颜色区域。 第五个参数
:double类型的sigmaSpace,坐标空间中值滤波器的sigma值,坐标空间的标准方差。它的数值越大,意味着越远的像素会相互影响,从而使更大的区域中足够相似的颜色获取相同的颜色。当第六个参数
:int类型的borderType,用于推断图像外部像素的某种边界模式。注意它有默认值BORDER_DEFAULT。
新闻热点
疑难解答