文章目录

  • 1.腐蚀原理
    • (1)具体实现过程
    • (2).函数讲解
  • (3).代码实战
  • 2.膨胀原理
    • (1)具体实现过程
    • (2)函数讲解
    • (3)代码实现

1.腐蚀原理

(1)具体实现过程

腐蚀会把物体的边界腐蚀掉,卷积核沿着图像滑动,如果卷积核对应的原图的所有像素值为1,那么中心元素就保持原来的值,否则变为零。主要应用在去除白噪声,也可以断开连在一起的物体。


B(Element)对图像A进行腐蚀的整个过程如下:
⑴ 用结构元素B,扫描图像A的每一个像素
⑵ 用结构元素B与其覆盖的二值图像A做“与”操作
⑶ 如果都为1,结果图像的该像素为1。否则为0
腐蚀处理的结果是使原来的二值图像减小一圈。

通过上面的卷积过程其实也可以这样解释腐蚀:当我们对一张图像进行腐蚀的时候,也就是element单元区域内像素值的最小值要么是0(黑色),要么是1(白色);那么只要element区域中包含有黑色,那么最终得到黑色,只有当element区域内全为白色的,结果才是白色,所以对于白色的边缘区域都会变成黑色,和原来的图像相比,最终的图片白色区域减少,最后也就是达到了“腐蚀”的效果(图片的看上去像是被腐蚀了一样)。

图片来源:https://zhuanlan.zhihu.com/p/110787009


(2).函数讲解

:erode(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None):
Src:输入的原始图像
Kernel:结构单元(structuring element);
Dst:输出图像
Anchor:结构单元的锚点位置,默认值为(-1,-1),表示结构单元中心
Iterations:腐蚀迭代的次数
borderType:用于推断图像外部像素的某种边界模式。注意它有默认值 BORDER_DEFAULT
borderValue:边界值(如果是常量边界)。默认morphologyDefaultBorderValue具有特殊含义。对于侵蚀,它被转换为+\inf;对于膨胀,它被转换为-\inf,这意味着只有在图像内部的像素上才能有效地计算最小值(最大值)。


(3).代码实战

import os
import cv2
import numpy as npdef ErodeFilter(img_path='images/lenna.png'):img_src=cv2.imread(img_path)img=cv2.resize(src=img_src,dsize=(500,500))img=cv2.cvtColor(src=img,code=cv2.COLOR_BGR2GRAY)kernel=np.ones((7,7),dtype=np.uint8)img=cv2.erode(src=img,kernel=kernel,iterations=1)cv2.imshow('img_src',img_src)cv2.imshow('img',img)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')ErodeFilter()


2.膨胀原理

(1)具体实现过程

结构单元(structuring element)在原始图像上进行滑动,把结构元锚点位置的图像像素点的灰度值设置为结构元值为1的区域对应图像区域像素的最大值。

B(Element)对图像A进行膨胀的整个过程如下:
⑴ 用结构元素B,扫描图像A的每一个像素
⑵ 用结构元素B与其覆盖的二值图像A做“或”操作
⑶ 如果都为0,结果图像的该像素为0。否则为1;
腐蚀处理的结果是使原来的二值图像减小一圈。

(2)函数讲解

dilate(src, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None):

Src:输入的原始图像
Kernel:结构单元(structuring element);
Dst:输出图像
Anchor:结构单元的锚点位置,默认值为(-1,-1),表示结构单元中心
Iterations:腐蚀迭代的次数
borderType:用于推断图像外部像素的某种边界模式。注意它有默认值 BORDER_DEFAULT
borderValue:边界值(如果是常量边界)。默morphologyDefaultBorderValue具有特殊含义。对于侵蚀,它被转换为+\inf;对于膨胀,它被转换为-\inf,这意味着只有在图像内部的像素上才能有效地计算最小值(最大值)

获取卷积核:
https://mydreamambitious.blog.csdn.net/article/details/125265838

(3)代码实现

import os
import cv2
import numpy as npdef DilateFilter(img_path='images/Exen.png'):img_src=cv2.imread(img_path)img=cv2.resize(src=img_src,dsize=(500,500))img=cv2.cvtColor(src=img,code=cv2.COLOR_BGR2GRAY)kernel=cv2.getStructuringElement(shape=cv2.MORPH_RECT,ksize=(7,7))img=cv2.dilate(src=img,kernel=kernel,iterations=1)cv2.imshow('img_src',img_src)cv2.imshow('img',img)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ == '__main__':print('Pycharm')DilateFilter()

Opencv中的erode和dilate(腐蚀和膨胀-python实现)相关推荐

  1. OpenCV morphologyEx、erode、dilate、getStructuringElement (形态学算子)

    ::返回OpenCV算子速查表 OpenCV getStructuringElement 1. 函数 1.1 getStructuringElement 1.2 morphologyEx 1.3 er ...

  2. 基于python的opencv图像形态学处理(图像腐蚀与膨胀操作以及礼帽与黑帽)

    腐蚀与膨胀 图像的腐蚀与膨胀互为逆向操作,通常用于处理二值图像(黑白图,以黑色为底面背景),因此需要先进行二值化处理,腐蚀和膨胀通俗的理解就是,在指定大小的卷积核内,如果该卷积核内全为黑色或全为白色, ...

  3. Opencv学习笔记(十二):图片腐蚀和膨胀操作

    文章目录 腐蚀 代码 效果 膨胀 代码 效果 开运算/闭运算 代码 腐蚀 原理:是在原图的小区域内取局部最小值.因为是二值化图,只有 0 和 255,所以小区域内有一个是 0 该像素点就为 0: 作用 ...

  4. opencv 腐蚀 matlab,Opencv3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换...

    19      腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形 ...

  5. 详解图像形态学操作之图形的腐蚀和膨胀的概念和运算过程,并利用OpenCV的函数erode()和函数dilate()对图像进行腐蚀和膨胀操作

    图像形态学中两种最基本的操作就是对图形的腐蚀和膨胀,可以说,形态学中的中高级操作都是建立在这两种操作之上.通过这两种基本的运算可以去除图像中的噪声,分割出独立的区域或者将两个区域连接在一起. 关于图像 ...

  6. OpenCV入门系列 —— cv::erode、cv::dilate 图像腐蚀和膨胀

    OpenCV入门系列 -- cv::erode.cv::dilate 图像腐蚀和膨胀 前言 程序说明 输出结果 代码示例 前言 随着工业自动化.智能化的不断推进,机器视觉(2D/3D)在工业领域的应用 ...

  7. OpenCV 常用函数汇总(normalize、getStructuringElement、erode、dilate)

    简单认知 Mat 认知 取值类型和范围 CV_8U 8位无符号整数 0~255 CV_8S 8位符号整数 -128~127 CV_16U 16位无符号整数 0~65535 CV_16S 16位符号整数 ...

  8. OpenCV-Python教程:形态学变换~腐蚀和膨胀(erode,dilate)

    原文链接:http://www.juzicode.com/opencv-python-erode-dilate 返回Opencv-Python教程 形态学变换是基于图像形状的变换过程,通常用来处理二值 ...

  9. OpenCV-Python图像处理:腐蚀和膨胀原理及erode、dilate函数介绍

    ☞ ░ 前往老猿Python博客 https://blog.csdn.net/LaoYuanPython ░ 一.引言 关于图像的腐蚀和膨胀,网上介绍的资料非常多,老猿也看了很多,总体来说主要偏向于就 ...

最新文章

  1. python2异步编程_最新Python异步编程详解
  2. r语言中mpg数据_R语言常用的数据处理的包(1)
  3. linux拉取指定时间内,Linux 日期和时间操作详解
  4. Android如何回调编码后的音视频数据
  5. 终端软件_DMSTerminal现场管控终端软件正式发布
  6. 【Elasticsearch】 es watcher 视频 笔记
  7. jquery连续滚动
  8. bzoj 3751: [NOIP2014]解方程(同余系)
  9. Java知识积累——参数个数可变的函数(Varargs)
  10. VS真难用:好好的编译工程,换个机器完全不能编译;换高版本还是不能编译
  11. 07《基于深度学习的车标识别方法研究》学习总结
  12. php网易云随机音乐api源码开源,网易云音乐随机歌曲
  13. 在excel中如何快速准确录入身份证号码?
  14. 神仙道玄奇套装材料大全
  15. 新浪微创投狩猎季:5家LP皆VC大佬 人气日渐高涨
  16. 引用font-awesome图标库前端显示方框
  17. [安全] AD域解释 , 域和组的区别?
  18. 如何用html做计时器,如何用html做倒数计时器?
  19. 【简七理财笔记】第七课:巧用信用卡,该薅的羊毛就要薅
  20. python画圣诞树【方块圣诞树、线条圣诞树、豪华圣诞树】

热门文章

  1. 前端学习之CSS模块
  2. 爆款短视频速成技巧之视频发布篇,短视频介绍文案怎么写(下)
  3. CentOS7下安装jmeter5.3
  4. arcgis 字段计算方位角
  5. 用python代码实现 函数调用 烤红薯的例子
  6. setting多仓库写法
  7. 计算机软件著作权登记的申请流程是什么
  8. 华为苏箐被曝转投大众汽车:最狂智能车高管,因抨击特斯拉丢工作,任正非亲自签发罢免令...
  9. 电子束光刻胶(HSQXR-1541-006,mr-I 9000M)
  10. 直播倒计时android,直播代码,Android实现验证码倒计时