OPENCV3编程入门------掌握improc组件--第六章

掌握improc一共包含4个章节,图像处理,图像变换,图像轮廓与图像分割与修复以及直方图处理

OPENCV3入门------掌握improc组件(图像处理篇)

平滑处理的方法

三种线性滤波:

方框滤波:void boxFilter( InputArray src, OutputArray dst, int ddepth,Size ksize, Point anchor = Point(-1,-1),bool normalize = true,int borderType = BORDER_DEFAULT );

            输入图像,输出图像,图像的深度,卷积核的大小Size(Width, Height), 被平滑的点 ,是否归一化,外部像素点的处理方式

均值滤波:void blur( InputArray src, OutputArray dst,Size ksize, Point anchor = Point(-1,-1),int borderType = BORDER_DEFAULT );具体的定义跟上面的方框滤波类似

高斯滤波:高斯滤波就是图像与正太分布做卷积,正态分布又叫高斯分布

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

             kisze : 核的大小,宽度与高度必须是正奇数或者是0  sigmaX高斯核函数在X方向上的标准偏差 sigmaY是高斯核函数在Y方向的标准偏差 这两者都可以为0,如果为0那么由ksize算出。

个人在使用上面三种滤波的时候,随着kszie的增大,前两种滤波会变得更加模糊,而高斯滤波变化不是特别的大。

两种非线性滤波

中值滤波 :像素点邻域灰度值的中值代替该像素点的灰度值      void medianBlur( InputArray src, OutputArray dst, int ksize );

双边滤波:双边滤波采用了两个高斯滤波的结合。一个负责计算空间邻近度的权值,也就是常用的高斯滤波器原理。而另一个负责计算像素值相似度的权值。在两个高斯滤波的同时作用下,就是双边滤波     void bilateralFilter( InputArray src, OutputArray dst, int d,double sigmaColor, double sigmaSpace,int borderType = BORDER_DEFAULT );

形态学滤波

膨胀(dilate)与腐蚀(erode)

膨胀:求局部的最大值 ,增大了灰度值  腐蚀:求局部的最小值  降低了全体的灰度值 

void dilate( InputArray src, OutputArray dst, InputArray kernel,
                          Point anchor = Point(-1,-1), int iterations = 1,
                          int borderType = BORDER_CONSTANT,
                          const Scalar& borderValue = morphologyDefaultBorderValue() );

void erode( InputArray src, OutputArray dst, InputArray kernel,
                         Point anchor = Point(-1,-1), int iterations = 1,
                         int borderType = BORDER_CONSTANT,
                         const Scalar& borderValue = morphologyDefaultBorderValue() );

我们一般要配合自定义的核 Mat kernel= getStructuringElement(int shape, Size ksize, Point anchor = Point(-1,-1));

                            shape 有固定的枚举值 Size :核的大小  Point确定锚点的位置

erode ( src , dst ,kernel ) ; 

开运算: 先腐蚀后膨胀 闭运算 先膨胀后腐蚀 形态学梯度 :膨胀图与腐蚀图之差 

顶帽 :原图像与开运算后的图像之差  黑帽 :闭运算图像与原图像之差

void morphologyEx( InputArray src, OutputArray dst,
                                int op, InputArray kernel,
                                Point anchor = Point(-1,-1), int iterations = 1,
                                int borderType = BORDER_CONSTANT,
                                const Scalar& borderValue = morphologyDefaultBorderValue() );

通过不同的OP的值确定进行的操作, kernel 就是认定的核,用之前的getStructuringElement进行自定义

漫水填充:floodFill函数一共有两个版本,区别是是否使用掩膜,下面展示使用掩膜的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgyxjx.html