Python图像处理:形态学操作
来源: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. 预备知识--结构元 2. 形态学基本操作 2.1 腐蚀和膨胀 2.2 开操作与闭操作 2.3 击中和击不中变换(hit and miss transform) 3. 基本的 ...
- 图像处理-形态学操作
形态学有四个基本操作:腐蚀.膨胀.开.闭. opencv笔记(十七)--形态学操作(膨胀.腐蚀.开.闭操作)_马大哈先生的博客-CSDN博客一.设置结构元素:getStructuringElement ...
- 【学习笔记】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, ...
- opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽
Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...
- OpenCV图像处理形态学操作腐蚀Erode与膨胀Dilate
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 通俗的说 ...
- OpenCV+python图像处理基础操作
1.读写图像(建议使用绝对路径) import cv2 from cv2 im = cv2.imread('C:/Users/admin/Desktop/test/1.jpg') cv2.imwrit ...
- Python图像处理库PIL -- 学习资源
Resources 官方指南PIL Handbook(建议看英文,翻译) pil下载 安装中文指南 from the PythonWare PIL home page 推荐先看Python Imagi ...
- 【python OpenCV3.3 图像处理教程:直线检测、圆检测、对象测量、腐蚀、膨胀等形态学操作、数字验证码识别、人脸检测
1. 直线检测 Hough Line Transform:前提:边缘检测已经完成,基于霍夫变换 1.1 原理 可以通过(theta,r)唯一表示一个点. 把过三个点的全部直线以某一角度全部计算出来,如 ...
- 使用Python,OpenCV进行形态学操作
使用Python,OpenCV进行形态学操作) 1. 效果图 2. 原理 3. 源码 3.1 [制作logo源码](https://blog.csdn.net/qq_40985985/article/ ...
- 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度、形态平滑、高帽变换、低帽变换)
9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形态平滑.高帽变换.低帽变换) 文章目录 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形 ...
最新文章
- Unity 2021人工智能导论 Introduction to Artificial Intelligence in Unity 2021
- 20175317 《Java程序设计》第一周学习总结
- 【Flutter】Flutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )
- 一天学完spark的Scala基础语法教程八、集合(idea版本)
- 《时间管理:如何充分利用你的24小时》—让你时间发挥最大效用
- 听说你在学习算法?清华教授为你准备了一份独家秘籍!
- protocol(协议) 和 delegate(委托)也叫(代理)---辨析
- 关于Java中被static修饰的静态变量 (类变量)
- 《俄罗斯方块》正版授权手游开启预约:支持QQ、微信双平台
- 未捕获的错误:始终违反:元素类型无效:预期为字符串(对于内置组件)或类/函数,但得到了:对象
- linux du命令参数及用法详解---linux统计磁盘空间大小命令
- CodeForce 855B 暴力or线段树
- Vue中v-model和checkbook的使用
- 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(二) Logstash简介及常见配置语法
- 2.任何一个自然数m的立方均可写成m个连续奇数之和
- 将网页保存为mht文件
- 电视剧《花千骨》开机 霍建华赵丽颖演绎绝美爱情
- Struts2的运行流程
- 技术爱好者更换域名重要通知
- RxJava 3.x 使用总结