python-opencv之形态学操作(腐蚀和膨胀)原理详解

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

形态学操作作用

  1. Removing noise.
  2. Isolation of individual elements and joining disparate elements in an image.
  3. Finding of intensity bumps or holes in an image.

最基本的形态操作是侵蚀和扩张。让我们更详细地了解这些操作。

Erosion 腐蚀

原理

它会侵蚀前景物体的边界,并从图像中移除小规模的细节,但同时会减少感兴趣区域的大小。

在该操作中,对图像中任意形状的奇数大小的卷积核进行卷积,如果核下的所有像素都为1,则认为原始图像中的像素(1或0)为1,否则将其侵蚀,即使其为零。

因此,根据内核的大小,所有靠近边界的像素都将被丢弃。因此前景物体的厚度或大小减小或者图像中的白色区域减小。

该方法适用于去除小的白噪声和分离两个连通的物体。

基本上,它计算给定核区域上的局部最小值。前景物体的厚度或大小会减少换句话说,图像中的白色区域会减少。

函数原型

cv2.erode(src, kernel, dst,anchor,iterations,borderType,borderValue)
src: 输入的图像

kernel: 用于腐蚀的结构元件如果element = Mat(),则使用3 × 3的矩形结构单元。内核可以使用getStructuringElement创建。

dst: 它是与src相同大小和类型的输出图像。

anchor: 它是一个整数类型的变量,表示锚点,它的默认值point是(-1,-1),这意味着锚点位于内核中心。

borderType: 是否应用边框,指定边框类型

iterations: 应用腐蚀的迭代次数

borderValue: 如果是constant边框类型,需要指定一个值

Return Value: 返回一个图像

实例
#腐蚀操作
import cv2
import matplotlib.pyplot as plt
import numpy as np

img =cv2.imread("./cycle.png",cv2.IMREAD_COLOR)
cv2.imshow("cycle",img)

kernel = np.ones((5,5),np.uint8)              #设置kenenel大小
erosion_1 = cv2.erode(img,kernel,iterations=2)
erosion_2 = cv2.erode(img,kernel,iterations=3)
erosion_3 = cv2.erode(img,kernel,iterations=4)
res = np.hstack((erosion_1,erosion_2,erosion_3)) # 参数的传入为tuple
cv2.imshow("res",res)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果显示

原图
python-opencv之形态学操作(腐蚀和膨胀)原理详解
结果
python-opencv之形态学操作(腐蚀和膨胀)原理详解

Dilation(膨胀)

原理

膨胀操作通常使用一种构造元素来探测和扩展输入图像中包含的形状。这种作用与侵蚀相反
在此操作中,对图像中任意形状的奇数大小的卷积核进行卷积,如果核下至少有一个像素为1,则该像素元素为1。

所以它增加了图像中的白色区域或者前景物体的大小增加了。

为了去除噪声,侵蚀之后是膨胀。因为,侵蚀会去除白噪声,但也会缩小我们的物体。所以我们把它扩张。因为噪音消失了,它们不会再回来,但我们的目标面积增加了。

它在连接对象的破碎部分时也很有用。

函数原型

cv2.dilate(src, kernel, dst,anchor,iterations,borderType,borderValue)
src: 输入的图像

kernel: 用于膨胀的结构元件如果element = Mat(),则使用3 × 3的矩形结构单元。内核可以使用getStructuringElement创建。

dst: 它是与src相同大小和类型的输出图像。

anchor: 它是一个整数类型的变量,表示锚点,它的默认值point是(-1,-1),这意味着锚点位于内核中心。

borderType: 是否应用边框,指定边框类型

iterations: 应用膨胀的迭代次数

borderValue: 如果是constant边框类型,需要指定一个值

Return Value: 返回一个图像

实例
#腐蚀还原
import cv2
import matplotlib.pyplot as plt
import numpy as np

img =cv2.imread("./cycle.png",cv2.IMREAD_COLOR)
cv2.imshow("cycle",img)

kernel = np.ones((5,5),np.uint8)              #设置kenenel大小
erosion = cv2.erode(img,kernel,iterations=3)  # 腐蚀去除白噪点
cv2.imshow("erosion",erosion)
dilate = cv2.dilate(erosion,kernel,iterations=3) # 膨胀还原图形
cv2.imshow("dilate",dilate)

#res = np.hstack((erosion_1,erosion_2,erosion_3)) # 参数的传入为tuple

cv2.waitKey(0)
cv2.destroyAllWindows()
结果展示

原图
python-opencv之形态学操作(腐蚀和膨胀)原理详解
腐蚀后
python-opencv之形态学操作(腐蚀和膨胀)原理详解
膨胀还原后
python-opencv之形态学操作(腐蚀和膨胀)原理详解文章来源地址https://www.toymoban.com/news/detail-446932.html

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

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

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

相关文章

  • 08- OpenCV:形态学操作(膨胀与腐蚀 、提取水平与垂直线)

    目录 前言 一、膨胀(Dilation)与 腐蚀(Erosion) 二、形态学操作 1、开操作(Opening) 2、闭操作(Closing) 3、形态学梯度(Morphological Gradient) 4、顶帽 ( top hat) 5、黑帽 ( black hat) 6、相关的API 7、代码演示 三、形态学操作应用-提取水平与垂直线 1、原理方法 2、实现步骤

    2024年01月17日
    浏览(51)
  • Python-OpenCV中的图像处理-形态学转换

    形态学操作:腐蚀,膨胀,开运算,闭运算,形态学梯度,礼帽,黑帽等 主要涉及函数:cv2.erode(), cv2.dilate(), cv2.morphologyEx() 原理:形态学操作是根据图像形状进行的简单操作。一般情况下对二值化图像进行的操作。需要输入两个参数,一个是原始图像,第二个被称为结构化

    2024年02月13日
    浏览(56)
  • 我在Vscode学OpenCV 图像处理一(阈值处理、形态学操作【连通性,腐蚀和膨胀,开闭运算,礼帽和黑帽,内核】)

    例如,设定阈值为127,然后:  将图像内所有像素值大于 127 的像素点的值设为 255。  将图像内所有像素值小于或等于 127 的像素点的值设为 0。 cv2.threshold() 和 cv2.adaptiveThreshold() 是 OpenCV 中用于实现阈值处理的两个函数,它们之间有以下区别: 1.1.1. cv2.threshold(): 这个函数

    2024年02月05日
    浏览(58)
  • 图像处理技巧形态学滤波之腐蚀操作

    欢迎回来,我的图像处理爱好者们!今天,让我们深入研究图像处理领域中的形态学计算。这些非线性的图像处理技术允许我们操纵图像中对象的形状和结构。在本系列中,我们将依次介绍四种基本的形态学操作:腐蚀、膨胀、开操作和闭操作。 闲话少说,我们直接开始吧!

    2024年02月13日
    浏览(51)
  • opencv基础-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

    闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接。 例如,在图 8-17 中,通过先膨胀后腐蚀的闭运算去除了原始图像内部的小孔(内部闭合的闭运算),其中: 左图是原始图像。 中间的图是对原

    2024年02月14日
    浏览(73)
  • Python轮廓追踪【OpenCV形态学操作】

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

    2024年02月22日
    浏览(52)
  • Python从0到1丨了解图像形态学运算中腐蚀和膨胀

    摘要: 这篇文章将详细讲解图像形态学知识,主要介绍图像腐蚀处理和膨胀处理。 本文分享自华为云社区《[Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解》,作者: eastmount 。 数学形态学的应用可以简化图像数据,保持它们基本的形状特征,并出去不相干的结

    2024年02月06日
    浏览(55)
  • OpenCV之形态学操作

    形态学操作包含以下操作: 腐蚀 (Erosion) 膨胀 (Dilation) 开运算 (Opening) 闭运算 (Closing) 形态梯度 (Morphological Gradient) 顶帽 (Top Hat)黑帽(Black Hat) 其中腐蚀和膨胀操作是最基本的操作,其他操作由这两个操作变换而来。         用一个结构元素扫描图像中每一个像素,结构元素

    2024年02月09日
    浏览(51)
  • OpenCV17-图像形态学操作

    图像腐蚀(Image erosion)可用于减小图像中物体的大小、填充孔洞或者分离邻近的物体。腐蚀操作通过对图像中的每个像素应用结构元素(也称为腐蚀内核)来实现。 腐蚀操作的原理是将结构元素与图像进行逐像素的比较。如果结构元素的所有像素与图像中对应位置的像素都

    2024年02月08日
    浏览(51)
  • OpenCV(三十一):形态学操作

    ​​​​​​1.形态学操作        OpenCV 提供了丰富的函数来进行形态学操作,包括腐蚀、膨胀、开运算、闭运算等。下面介绍一些常用的 OpenCV 形态学操作函数: 腐蚀操作(Erosion): erode(src, dst, kernel, anchor, iterations, borderType, borderValue) 该函数对输入图像中的前景区域进行

    2024年02月09日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包