来源:DeepHub IMBA本文约1400字,建议阅读5分钟 形态学的操作主要是去除影响图像形状和信息的噪声。形态学运算在图像分割中非常有用,可以得到无噪声的二值图像。

形态学方法

当图像经过预处理进行增强和阈值等性能操作时,图像就有可能得到一些噪声。从而导致图像中存在像素信息不平衡的问题。

形态学的操作主要是去除影响图像形状和信息的噪声。形态学运算在图像分割中非常有用,可以得到无噪声的二值图像。

基本的形态操作是侵蚀和膨胀。下面对这两种操作进行说明:

膨胀

在放大操作中,如果物体是白色的,那么白色像素周围的像素就会增大。它增加的区域取决于物体像素的形状。膨胀过程增加了对象的像素数,减少了非对象的像素数。

具有不同内核大小和迭代的膨胀的Python代码

 import numpy as npimport imutilsimport cv2#reading the input imageimg = cv2.imread('thumb.png') #reads the image#cv2.imwrite('Input_image.jpg',image)#Resizing the imagescale_percent = 70width = int(img.shape[1] * scale_percent / 100)height = int(img.shape[0] * scale_percent / 100)dim = (width, height)# resize the input imageimage = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)kernel = np.ones((1,1), dtype = "uint8")/9dilation = cv2.dilate(image,kernel,iterations = 1)cv2.imwrite('dilation.jpg', dilation)kernel = np.ones((2,2), dtype = "uint8")/9dilation = cv2.dilate(image,kernel,iterations = 1)cv2.imwrite('dilation.jpg', dilation)kernel = np.ones((2,2), dtype = "uint8")/9dilation = cv2.dilate(image,kernel,iterations = 3)cv2.imwrite('dilation.jpg', dilation)kernel = np.ones((2,2), dtype = "uint8")/9dilation = cv2.dilate(image,kernel,iterations = 5)cv2.imwrite('dilation.jpg', dilation)kernel = np.ones((3,3), dtype = "uint8")/9dilation = cv2.dilate(image,kernel,iterations = 2)cv2.imwrite('dilation.jpg', dilation)

侵蚀

侵蚀函数正好与膨胀功函数相反。侵蚀作用使物体体积变小。侵蚀过程增加了非目标像素,减少了目标像素。

具有不同内核大小和迭代的侵蚀的Python代码

 import numpy as npimport imutilsimport cv2#reading the input imageimg = cv2.imread('thumb.png')#cv2.imwrite('Input_image.jpg',image)#Resizing the imagescale_percent = 70width = int(img.shape[1] * scale_percent / 100)height = int(img.shape[0] * scale_percent / 100)dim = (width, height)# resize the input imageimage = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)kernel = np.ones((1,1), dtype = "uint8")/9erosion = cv2.erode(image, kernel, iterations = 1)cv2.imwrite('erosion.jpg', erosion)kernel = np.ones((2,2), dtype = "uint8")/9erosion = cv2.erode(image, kernel, iterations = 2)cv2.imwrite('erosion.jpg', erosion)kernel = np.ones((2,2), dtype = "uint8")/9erosion = cv2.erode(image, kernel, iterations = 3)cv2.imwrite('erosion.jpg', erosion)kernel = np.ones((2,2), dtype = "uint8")/9erosion = cv2.erode(image, kernel, iterations = 5)cv2.imwrite('erosion.jpg', erosion)kernel = np.ones((5,5), dtype = "uint8")/9erosion = cv2.erode(image, kernel, iterations = 2)cv2.imwrite('erosion.jpg', erosion)

开操作

此方法可用于从图像中去除噪声。该方法的工作功能是先腐蚀再膨胀,以保持物体像素的原始性,去除背景中的小噪声。

 import numpy as npimport imutilsimport cv2#reading the input imageimg = cv2.imread('11.png')kernel = np.ones((5,5), dtype = "uint8")/9opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)cv2.imwrite('opening.jpg', opening)

闭操作

此方法可用于从图像中去除噪声。这种方法的工作功能是先膨胀再腐蚀,去除内部的小噪声。

 import numpy as npimport imutilsimport cv2#reading the input imageimg = cv2.imread('thumb.png')kernel = np.ones((9,9), dtype = "uint8")/9closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)cv2.imwrite('closing.jpg', closing)

形态学梯度

这种方法是膨胀图与腐蚀图之差。

 import numpy as npimport imutilsimport cv2#reading the input imageimg = cv2.imread('g1.png')kernel = np.ones((6,6), dtype = "uint8")/9gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)cv2.imwrite('gradient.jpg', gradient)

总结

这些操作是处理二进制图像的一种非常简单的方法,也是图像处理应用程序中预处理的一部分。

编辑:文婧

Python图像处理:形态学操作相关推荐

  1. 数字图像处理——形态学操作(二值图像篇)

    形态学操作 内容简介 1. 预备知识--结构元 2. 形态学基本操作 2.1 腐蚀和膨胀 2.2 开操作与闭操作 2.3 击中和击不中变换(hit and miss transform) 3. 基本的 ...

  2. 图像处理-形态学操作

    形态学有四个基本操作:腐蚀.膨胀.开.闭. opencv笔记(十七)--形态学操作(膨胀.腐蚀.开.闭操作)_马大哈先生的博客-CSDN博客一.设置结构元素:getStructuringElement ...

  3. 【学习笔记】opencv的python接口 形态学操作 腐蚀 膨胀 通用形态学函数

    腐蚀 img=np.zeros((5,5),np.uint8) img[1:4,1:4]=1 kernel=np.ones((3,1),np.uint8) erosion=cv2.erode(img, ...

  4. opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽

    Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...

  5. OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 通俗的说 ...

  6. OpenCV+python图像处理基础操作

    1.读写图像(建议使用绝对路径) import cv2 from cv2 im = cv2.imread('C:/Users/admin/Desktop/test/1.jpg') cv2.imwrit ...

  7. Python图像处理库PIL -- 学习资源

    Resources 官方指南PIL Handbook(建议看英文,翻译) pil下载 安装中文指南 from the PythonWare PIL home page 推荐先看Python Imagi ...

  8. 【python OpenCV3.3 图像处理教程:直线检测、圆检测、对象测量、腐蚀、膨胀等形态学操作、数字验证码识别、人脸检测

    1. 直线检测 Hough Line Transform:前提:边缘检测已经完成,基于霍夫变换 1.1 原理 可以通过(theta,r)唯一表示一个点. 把过三个点的全部直线以某一角度全部计算出来,如 ...

  9. 使用Python,OpenCV进行形态学操作

    使用Python,OpenCV进行形态学操作) 1. 效果图 2. 原理 3. 源码 3.1 [制作logo源码](https://blog.csdn.net/qq_40985985/article/ ...

  10. 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度、形态平滑、高帽变换、低帽变换)

    9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形态平滑.高帽变换.低帽变换) 文章目录 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形 ...

最新文章

  1. Unity 2021人工智能导论 Introduction to Artificial Intelligence in Unity 2021
  2. 20175317 《Java程序设计》第一周学习总结
  3. 【Flutter】Flutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )
  4. 一天学完spark的Scala基础语法教程八、集合(idea版本)
  5. 《时间管理:如何充分利用你的24小时》—让你时间发挥最大效用
  6. 听说你在学习算法?清华教授为你准备了一份独家秘籍!
  7. protocol(协议) 和 delegate(委托)也叫(代理)---辨析
  8. 关于Java中被static修饰的静态变量 (类变量)
  9. 《俄罗斯方块》正版授权手游开启预约:支持QQ、微信双平台
  10. 未捕获的错误:始终违反:元素类型无效:预期为字符串(对于内置组件)或类/函数,但得到了:对象
  11. linux du命令参数及用法详解---linux统计磁盘空间大小命令
  12. CodeForce 855B 暴力or线段树
  13. Vue中v-model和checkbook的使用
  14. 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(二) Logstash简介及常见配置语法
  15. 2.任何一个自然数m的立方均可写成m个连续奇数之和
  16. 将网页保存为mht文件
  17. 电视剧《花千骨》开机 霍建华赵丽颖演绎绝美爱情
  18. Struts2的运行流程
  19. 技术爱好者更换域名重要通知
  20. RxJava 3.x 使用总结

热门文章

  1. 如何取小数点前两位并四舍五入?
  2. 结构体数组与指针习题
  3. 用指针实现删除数组中小于10的数据
  4. C# 的tcp Socket设置自定义超时时间
  5. yum安装nginx+PHP+Mysql
  6. 【IOS】ios之httpServer
  7. python 学习笔记 运算符优先级(8)
  8. win7 dll怎么在xp运行_win7电脑安装软件提示缺少vcruntime140.dll如何解决
  9. python元素定位的八种方法_selenium webdriver基于Python系列之八种元素定位方法
  10. 如何写好数据分析师简历