opnecv日记_GaussianBlur函数——高斯滤波 中文解释参数含义

参考:http://m.blog.csdn.net/blog/cau_eric/27710423

函数原型:

void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT);

参数详解如下:

src,输入图像,即源图像,填Mat类的对象即可。它可以是单独的任意通道数的图片,但需要注意,图片深度应该为CV_8U,CV_16U, CV_16S, CV_32F 以及 CV_64F之一。

dst,即目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到如假包换的目标图。

ksize,高斯内核的大小。其中ksize.width和ksize.height可以不同,但他们都必须为正数和奇数(并不能理解)。或者,它们可以是零的,它们都是由sigma计算而来。

sigmaX,表示高斯核函数在X方向的的标准偏差。

sigmaY,表示高斯核函数在Y方向的的标准偏差。若sigmaY为零,就将它设为sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height计算出来。

为了结果的正确性着想,最好是把第三个参数Size,第四个参数sigmaX和第五个参数sigmaY全部指定到。

borderType,用于推断图像外部像素的某种边界模式。注意它有默认值BORDER_DEFAULT。

ps:

高斯核函数:自己找找看,其实看上去就是普通的正态分布函数形式。

我猜ksize是模糊半径的意思,水平方向和竖直方向的半径不一样,需要指定。

标准偏差就是标准偏差……

英文:

Parameters:

src – input image; the image can have any number of channels, which are processed independently, but the depth should be CV_8U, CV_16U, CV_16S, CV_32F or CV_64F.

dst – output image of the same size and type as src.

ksize – Gaussian kernel size. ksize.width and ksize.height can differ but they both must be positive and odd. Or, they can be zero’s and then they are computed from sigma* .

sigmaX – Gaussian kernel standard deviation in X direction.

sigmaY – Gaussian kernel standard deviation in Y direction; if sigmaY is zero, it is set to be equal to sigmaX, if both sigmas are zeros, they are computed from ksize.width and ksize.height , respectively (see getGaussianKernel() for details); to fully control the result regardless of possible future modifications of all this semantics, it is recommended to specify all of ksize, sigmaX, and sigmaY.

borderType – pixel extrapolation method (see borderInterpolate() for details).

Demo:

#include "cv.h"

#include "highgui.h"

using namespace cv;

int main(int argc, char** argv) {

Mat img, gray, edges;

img = imread(argv[1]);

cvtColor(img, gray, CV_BGR2GRAY);

GaussianBlur(gray, gray, Size(13, 13), 2, 2);

imshow("gray", gray);

waitKey(0);

return 0;

}

运行方法:

> g++ demo.cpp -o demo `pkg-config --cflags --libs opencv`

> ./demo 1.png

结果:

当ksize:(5, 5) -> (9, 9) -> (13, 13)时,


后两者差别已经很小了。

当sigmaX, sigmaY由(1, 1) -> (2, 2) -> (3, 3)时,

变化会明显很多~

时间: 2024-08-15 10:37:42

opnecv日记_GaussianBlur函数——高斯滤波 中文解释参数含义的相关文章

LoadRunner函数大全之中文解释

LoadRunner函数大全之中文解释

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

本篇文章中,我们一起仔细探讨了OpenCV图像处理技术中比较热门的图像滤波操作.图像滤波系列文章浅墨准备花两次更新的时间来讲,此为上篇,为大家剖析了"方框滤波","均值滤波","高斯滤波"三种常见的邻域滤波操作.而作为非线性滤波的"中值滤波"和"双边滤波",我们下次再分析. 因为文章很长,如果详细啃的话,或许会消化不良.在这里给大家一个指引,如果是单单想要掌握这篇文章中讲解的OpenCV线性滤波相关的三个函

【opencv入门之五】线性滤波(方框滤波、均值滤波、高斯滤波)

参考网站:http://blog.csdn.net/poem_qianmo/article/details/22745559 1.boxFilter函数--方框滤波 void boxFilter(InputArray src, //输入图像 OutputArray dst, //输出图像 int ddepth, //输出图像的深度,-1表示使用原图深度,即 src.depth() Size ksize, //内核的大小,Size(w,h) Point anchor=Point(-1,-1), /

快速高斯滤波函数[修正完善版]

原文地址:http://blog.csdn.net/markl22222/article/details/10313565 进行了修正和变量优化.原来作者的函数只支持2次方图片,这次修正了(windows的bitmap行宽是4字节对齐的). 基本完善了,但是在某些条件下,Y方向的底边还是会出现偏差,一时找不到原因,暂且发表,希望有人能提醒一下. 函数结构我规整了一下,很清晰,很好阅读. int gauss_blur( byte_t* image, //位图数据 int linebytes, //

SIFT四部曲之——高斯滤波

本文为原创作品,未经本人同意,禁止转载 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/ 或许网络上有各位牛人已经对sift算法进行各种的详解和说明,我(小菜鸟)在翻阅各种资料和对opencv中的代码进行反推之后,终于理解该算法.并记录之,供大家一起交流学习!这个博文主要记录了我的学习历程,或许对你有帮助,或许可以启发你,或许你只是一笑而过!没关系,至少自己总结过. 这篇文章主要是对sif

图像平滑技术之盒滤波、均值滤波、中值滤波、高斯滤波、双边滤波的原理概要及OpenCV代码实现

图像平滑是指直接对源图像的每个像素数据做邻域运算以达到平滑图像的目的.实质上主要就是通达卷积核算子实现的,卷积核算子的相关知识大家可以参考我写的博文http://blog.csdn.net/wenhao_ir/article/details/51691410 图像平滑也称为模糊或滤波,是图像处理中常用的技术之一,进行平滑处理时需要用到滤波器核(其实就是卷积核算子),根据滤波器核函数来实现不同的滤波技术.下面介绍几种 常用的图像平滑方法的大概原理及OpenCV下的实现代码. 一.盒滤波(均值滤波)

基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存

如题:使用opencv打开摄像头或视频文件,实时显示原始视频,将视频每一帧依次做灰度转换.高斯滤波.canny边缘检测处理(原始视频和这3个中间步骤处理结果分别在一个窗口显示),最后将边缘检测结果保存为一个视频avi文件. 这里问题综合性比较大,这里进行分治. 该类问题可分为四个方面的处理: (1)打开 视频或者是摄像头,并播放视频 (2)对视频的每一帧做处理 (3)同窗体显示四个结果 (4)保存视频文件 以下分为这三个方面进行处理: (1)打开 视频或者摄像头,并播放视频 这个利用opencv

【3.15】matlab 高斯滤波,快速滤波

Gauss滤波快速实现方法(转) 二维高斯函数具有旋转对称性,处理后不会对哪一个方向上的边缘进行了过多的滤波,因此相对其他滤波器,具有无法比拟的优越性.但是传统Gauss滤波随着图像尺寸的增加,运算复杂度呈平方上涨,因此需要对其优化改进.下面,分别介绍传统型,分解型和递归迭代型三种实现方法. 1 传统型 Gauss滤波首先需要构建一个Gauss滤波核,公式为: Matlab实现代码: dSigma =0.8; fK1=1.0/(2*dSigma*dSigma); fK2=fK1/pi; iSiz

Opencv学习(1):高斯滤波

快乐虾@http://blog.csdn.net/lights_joy/ 欢迎转载,但请保留作者信息 本文适用于opencv3.0.0, vs2013 Opencv中提供了高斯滤波函数: /** @brief Blurs an image using a Gaussian filter. The function convolves the source image with the specified Gaussian kernel. In-place filtering is support