OpenCV之形态学操作

这篇具有很好参考价值的文章主要介绍了OpenCV之形态学操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

形态学操作包含以下操作:

  • 腐蚀 (Erosion)
  • 膨胀 (Dilation)
  • 开运算 (Opening)
  • 闭运算 (Closing)
  • 形态梯度 (Morphological Gradient)
  • 顶帽 (Top Hat)黑帽(Black Hat)

其中腐蚀和膨胀操作是最基本的操作,其他操作由这两个操作变换而来。

腐蚀

        用一个结构元素扫描图像中每一个像素,结构元素中的每一个像素与其覆盖像素与操作,都为1,则该像素为1,否则为0,腐蚀的作用是消除物体边界点,消除小于结构元素的噪声点。

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

src,dst:输入输出图像,可以相同;

kernel:结构元素,一般使用Ma来确定结构元素;

anchor:结构元素的描点;

iterations:操作次数;

borderType:边界类型;

borderValue:边界值,当borderType=BORDER_CONSTANT时有效;

实例:

    Mat kernal = Mat::ones(3,3,CV_8UC1);
    kernal.at<uchar>(0,1) = 0;
    kernal.at<uchar>(1,1) = 0;
    kernal.at<uchar>(2,1) = 0;
    cv::erode(_src,_src,kernal,Point(-1,-1),3);

OpenCV之形态学操作,OpenCV,qt,开发语言

                                                                        原始图像 

 OpenCV之形态学操作,OpenCV,qt,开发语言

                                                                        腐蚀图像 

膨胀

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

参数意义与腐蚀完全相同

实例

    Mat kernal = Mat::ones(3,3,CV_8UC1);
    kernal.at<uchar>(1,0) = 0;
    kernal.at<uchar>(1,1) = 0;
    kernal.at<uchar>(1,2) = 0;
    cv::dilate(_src,_src,kernal,Point(-1,-1),3);

OpenCV之形态学操作,OpenCV,qt,开发语言

膨胀图像

开运算

        开运算是先腐蚀后膨胀,作用是分离物体,消除小区域,消除噪点,而不影响原来图像

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设置为MORPH_OPEN

实例:

Mat kernal = Mat::ones(3,3,CV_8UC1);
cv::morphologyEx(src,src,MORPH_OPEN,kernal,Point(-1,-1),2);

原图:

OpenCV之形态学操作,OpenCV,qt,开发语言

开运算后的图像:

OpenCV之形态学操作,OpenCV,qt,开发语言

 闭运算

闭运算是先膨胀后腐蚀,作用是消除闭合物体里面的孔洞,可以填充闭合区域。

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设置为MORPH_CLOSE

形态梯度

        膨胀图与腐蚀图之差,能够保留物体的边缘轮廓。

 cv.morphologyEx(img,cv.MORPH_TOPHAT)

礼帽运算

        原图像与开运算的结果差,开运算放大了裂缝或者局部低亮度的区域,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,操作和选择的核的大小相关。礼帽运算用来分离比邻近点亮一些的斑块。 当一幅图像具有大幅的背景的时候,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。

 cv.morphologyEx(img,cv.MORPH_TOPHAT)

黑帽运算

        闭运算的结果图与原图像之差,闭运算填充了裂缝或者扩大局部高亮度的区域,因此,从结果图中减去原图后,得到的效果图突出了比原图区域更暗的区域,且这一操作和选择的核的大小相关,黑帽运算用来分离比邻近点暗一些的斑块。

 cv.morphologyEx(img,cv.MORPH_BLACKHAT)文章来源地址https://www.toymoban.com/news/detail-706473.html

到了这里,关于OpenCV之形态学操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python轮廓追踪【OpenCV形态学操作】

    一些理论知识 OpenCV形态学操作理论1 OpenCV形态学操作理论2 OpenCV轮廓操作|轮廓类似详解 代码如下,可以直接运行

    2024年02月22日
    浏览(34)
  • C++OpenCV(7):图像形态学基础操作

    🔆 文章首发于我的个人博客:欢迎大佬们来逛逛 🔆 OpenCV项目地址及源代码:点击这里 膨胀与腐蚀是 数学形态学在图像处理中最基础的操作 。 膨胀操作是取 每个位置领域内最大值 ,所以膨胀后输出图像的总体亮度的平均值比起原图会有所升高,图像中比较亮的区域的面

    2024年02月16日
    浏览(39)
  • 基于OpenCV [c++]——形态学操作(分析和应用)

    形态学一般指生物学中研究动物和植物结构的一个分支。用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具。 基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。 形态学图像处理的基本运算有:

    2024年02月08日
    浏览(37)
  • 【OpenCv • c++】形态学技术操作 —— 腐蚀与膨胀

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月04日
    浏览(34)
  • OPENCV C++(四)形态学操作+连通域统计

    第一个是形状 第二个是卷积核大小 tips:这些都是针对于二值化图像操作的 单独的也有 例如腐蚀函数 这个-1 -1是默认的 不变 2是做两次腐蚀的意思 先定义返回的值 stats :记录了每个连通区域的信息,是一个5列的矩阵,每一行对应一个连通区域,分别为连通区域外接矩形的

    2024年02月14日
    浏览(29)
  • OpenCV基础操作(5)图像平滑、形态学转换、图像梯度

    1、2D卷积 我们可以对 2D 图像实施低通滤波(LPF),高通滤波(HPF)等。 LPF 帮助我们去除噪音,模糊图像。HPF 帮助我们找到图像的边缘。 OpenCV 提供的函数 cv.filter2D() 可以让我们对一幅图像进行卷积操作。 ​ ​ ​ ​ 2、图像模糊 使用低通滤波器可以达到图像模糊的目的。

    2024年02月07日
    浏览(39)
  • 【OpenCv • c++】形态学技术操作 —— 顶帽操作与黑帽操作

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月06日
    浏览(43)
  • OpenCV基本图像处理操作(一)——图像基本操作与形态学操作

    图像显示 转hsv图像 颜色表示为三个组成部分:色调(Hue)、饱和度(Saturation)和亮度(Value)。常用于图像处理中,因为它允许调整颜色的感知特性,如色彩和亮度,这些在RGB颜色模型中不那么直观。 HSV模型特别适用于任务如图像分割和对象追踪,因为它可以更好地处理光

    2024年04月22日
    浏览(37)
  • opencv36-形态学操作-膨胀 cv2.dilate()

    膨胀操作是形态学中另外一种基本的操作。膨胀操作和腐蚀操作的作用是相反的,膨胀操作能对图像的边界进行扩张。膨胀操作将与当前对象(前景)接触到的背景点合并到当前对象内,从而实现将图像的边界点向外扩张。如果图像内两个对象的距离较近,那么在膨胀的过程

    2024年02月14日
    浏览(27)
  • opencv35-形态学操作-腐蚀cv2.erode()

    形态学,即数学形态学(Mathematical Morphology),是图像处理过程中一个非常重要的研 究方向。形态学主要从图像内提取分量信息,该分量信息通常对于表达和描绘图像的形状具有 重要意义,通常是图像理解时所使用的最本质的形状特征。例如,在识别手写数字时,能够通 过

    2024年02月14日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包