形态学滤波:腐蚀与膨胀(浅谈)

3DCVer 专栏收录该内容
135 篇文章 39 订阅

形态学滤波:腐蚀与膨胀(浅谈)

一 关于二值化、膨胀、腐蚀以及拟合椭圆中心的代码如下**

 bool  detectEllipse(const Mat  &img, vector<RotatedRect> &data)
{
    vector<vector<Point>>  contours;
    vector<Vec4i> hierarchy;
    ///STEP1:图像二值化处理
    Mat thresholdImg;
    threshold(img, thresholdImg, 100, 255, 0);///此处阈值的设定如果较小的话,如果噪声添加较大,将影响最终结果。
    //STEP2:图像的形态学处理(腐蚀和膨胀)(开运算:先腐蚀再膨胀)
    /STEP2.1:先腐蚀;
    int dilateKernelSize = 1;///定义膨胀的内核大小
    Mat element = getStructuringElement(MORPH_RECT, Size(2 * dilateKernelSize + 1, 2 * dilateKernelSize + 1), Point(-1, -1));///此处的Point(-1,-1)表示锚位于中心,为默认值,可以不写。
    Mat erodeImg;
    erode(thresholdImg, erodeImg, element);
    //STEP2.2:再膨胀;
    Mat dilateImg;
    dilate(erodeImg, dilateImg, element);
    //STEP3:寻找椭圆轮廓
    findContours(dilateImg, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_NONE, Point(0, 0));
    if (!contours.size())
    {
        return false;
    }
    else
    {
        ///STEP4:用椭圆拟合二维点集
        for (int i = 0; i < contours.size(); i++)
        {
            data.push_back(fitEllipse(contours[i]));
        }
    }
    return true;
}

二 关于腐蚀和膨胀,在此做一些浅显的总结。

  形态学操作就是基于形状的一系列图像处理操作。OpenCV为进行图像的形态学变换提供了快捷、方便的函数。最基本的形态学操作有两种,分别是:膨胀与腐蚀。
膨胀与腐蚀能实现多种多样的功能,主要如下:
   1)消除噪声;
   2)分割出独立的图像元素,在图像中连接相邻的元素;
   3)寻找图像中的明显的极大值区域或极小值区域;
   4)求出图像的梯度。


三 对于上述代码中所生成的图片,进行一些说明。

  二值化后的图片(thresholdImg):
这里写图片描述
  使用imageWatch插件放大后可见其边缘:
这里写图片描述
  内核大小为:
这里写图片描述
  腐蚀后的图片为:
这里写图片描述
  膨胀后的图片为:
这里写图片描述
 注:此处经过二值化后,图像的边缘比较特殊,腐蚀膨胀操作对它影响不大。、


四 接下来谈谈自己对腐蚀膨胀的理解与认知

 1) 膨胀与腐蚀是对白色部分(高亮部分)而言的。
    膨胀——>膨胀后的图比原图有更大的高亮区域。
   腐蚀——>与上述相反。
  2)膨胀就是求局部最大值的操作。从数学角度来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,称之为A)与核(称之为B)进行卷积。
  而腐蚀与膨胀是相反的一对操作,所以腐蚀就是求局部最小值的操作。
 核(element )可以是任何形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点。多数情况下,核是一个小的,中间带有参考点和实心正方形或者圆盘。其实,可以把核视为模板或者掩码。

五 关于OPENCV中的膨胀和腐蚀函数

   膨胀:dilate()函数;腐蚀函数:erode()。可以参考opencv documentation中的函数参数进行调用。
   值得说一下的是:我们一般使用函数getStructuringElement配合这个参数的使用。
   getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。其中,getStructuringElement函数的第一个参数表示内核的形状,有如下三种形状可以选择:

  • 矩形:MORPH_RECT;
  • 交叉形:MORPH_CROSS;
  • 椭圆形:MORPH_ELLIPSE。

  个人公众号:

这里写图片描述

  • 4
    点赞
  • 4
    评论
  • 8
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值