欢迎来到本博客
作者简介:⭐️⭐️⭐️目前计算机研究生在读。主要研究方向是人工智能和群智能算法方向。目前熟悉python网页爬虫、机器学习、计算机视觉(OpenCV)、群智能算法。然后正在学习深度学习的相关内容。以后可能会涉及到网络安全相关领域,毕竟这是每一个学习计算机的梦想嘛!
博主优势:博客内容尽量做到每一步都可以进行实操,做到极度细致,不仅仅可以满足自己复习,也方便大家进行学习!亲民!!!
目前更新:目前已经更新了关于网络爬虫得相关系列、机器学习得相关知识、目前正在更新计算机视觉-OpenCV,后续将继续更新其他知识。
个人主页:吃猫的鱼python个人主页
支持:如果觉得博主的文章还不错或者您用得到的话,可以免费的关注一下博主,如果三连收藏支持就更好啦!这就是给予我最大的支持!
本文摘要
本文我们将继续讲解相关计算机视觉的相关知识。具体包括以下几个内容。
1.图像形态学-腐蚀
2.图像形态学-膨胀
3.图像形态学-开运算
4.图像i形态学-闭运算
文章目录
- 前言
- 图像形态学-腐蚀
- 图像形态学-膨胀
- 图像形态学-开运算
- 图像形态学-闭运算
人工智能在全球范围内呈爆发式发展,根据麦肯锡全球研究院的预测,AI带来的社会革命,将比工业革命的速度快10倍,规模大300倍,影响几乎大3000倍。从2012年开始,AI算力的提升速度已超过摩尔定律的预测,平均每3-4个月翻一番。这就是人工智能的美好前景!所以我们正式开始我们今天的学习内容。
上次博客我们详细的讲解了,阈值分割和滤波的基本知识和相关操作。这里我们继续介绍计算机视觉中的图像形态学-本次相关知识我们分为两次博客进行讲解。我们现在就开始学习吧!
其实这里说的腐蚀吧,我们都可以想象的到,日常生活中有太多腐蚀的例子了,我们肉眼看到的就有很多。那么我们先来看一下图像形态学中的腐蚀到底长什么样子。 |
注意注意注意 1.图像形态学腐蚀操作针对的是二值图像。 2.两个输入对象。 一:二值图像 二:卷积核 |
我们设置了卷积核的大小,然后它遍历图像的每一个像素点,对应的腐蚀操作就是卷积核中的像素值,只要有一个为0也就是黑色,那么我就判定该像素新值为0,除非都为1,那么结果才为1。也就是说我把白色图像的边缘卷积核覆盖的部分全都给转变成了黑色。 |
腐蚀操作函数介绍
dst = cv2.erode ( src , kernel , iterations )
卷积核的设定
kernel = np.ones((5,5),np.uint8)
代码部分
import cv2
import numpy as np
o=cv2.imread("image\\erode.bmp",cv2.IMREAD_UNCHANGED)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(o,kernel)
cv2.imshow("orriginal",o)
cv2.imshow("erosion",erosion)
cv2.waitKey()
cv2.destroyAllWindows()
其实膨胀的操作在我理解就是腐蚀操作的逆向操作,说白了就是把图像按照一定的规则扩大一点。 |
1.图像被腐蚀后,去除了噪声,但是会压缩图像。
2.对腐蚀过的图像,进行膨胀处理,可以去除噪声,并保持原有形状。
同样我们需要注意的两点就是:第一膨胀操作也是针对于二值图像。然后就是卷积核的相关知识和操作。这里我们就不过多介绍。
卷积核遍历的时候只要有1,也就是白色像素值存在,那么我们就把该像素新值定为1。除非卷积核中所有的像素值都是0,才是0,也就是黑色。 |
膨胀操作函数介绍
dst = cv2.dilate ( src , kernel , iterations )
卷积核的设定
kernel = np.ones((5,5),np.uint8)
代码部分
import cv2
import numpy as np
o=cv2.imread("image\\dilate.bmp",cv2.IMREAD_UNCHANGED)
kernel = np.ones((5,5),np.uint8)
dilation = cv2.dilate(o,kernel,iterations=9)
cv2.imshow("orriginal",o)
cv2.imshow(“dilation",dilation)
cv2.waitKey()
cv2.destroyAllWindows()
在进行膨胀操作的时候我们介绍到了这个:
1.图像被腐蚀后,去除了噪声,但是会压缩图像。
2.对腐蚀过的图像,进行膨胀处理,可以去除噪声,并保持原有形状。
*开运算(image)=膨胀(腐蚀(image))* |
开运算就是先把图像进行腐蚀操作,然后进行膨胀操作的一个过程!
如果我们对于有噪声的图像单独的进行腐蚀操作,就会对图像进行压缩,如果我们想要恢复到原始图像就要进行相同程度上的膨胀,这个操作我们就成为开运算。 |
开运算操作函数介绍
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
img:原始图像
cv2.MORPH_OPEN:表示进行开运算,相同的我们所知道的还有闭运算。
kernel:卷积核,同样我们对开运算的卷积核要进行设定
卷积核的设定
kernel = np.ones((5,5),np.uint8)
代码部分
import cv2
import numpy as np
o=cv2.imread("image\\opening.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_OPEN,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
这里我们隐隐约约还可以看到有小刺刺,这个时候我们把卷积核设置的大一些就可以完美的解决这个问题。
kernel = np.ones((10,10),np.uint8)
闭运算我们可以称之为开运算的逆操作,我们刚才讲到了开运算的操作是对图像先腐蚀在膨胀,有利于我们消除图像边缘的小刺刺。那么我们推理一下就可以知道闭运算肯定是先膨胀再腐蚀,那么它有什么好处呢? |
很明显,他把我们图像内部的所有黑色气泡泡都给消除了!Wonderful!!
闭运算(image)=腐蚀(膨胀(image)) |
闭运算操作函数介绍
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
img:原始图像
cv2.MORPH_CLOSE:表示进行闭运算,相同的我们所知道的还有开运算。
kernel:卷积核,同样我们对开运算的卷积核要进行设定
卷积核的设定
kernel = np.ones((5,5),np.uint8)
代码部分
import cv2
import numpy as np
o=cv2.imread("image\\opening.bmp",cv2.IMREAD_UNCHANGED)
k=np.ones((5,5),np.uint8)
r=cv2.morphologyEx(o,cv2.MORPH_CLOSE,k)
cv2.imshow("original",o)
cv2.imshow("result",r)
cv2.waitKey()
cv2.destroyAllWindows()
如果我们想要消除气泡效果好一点的话,把卷积核设置的在大一点!
k=np.ones((10,10),np.uint8)
文章适合于所有的相关人士进行学习
各位看官看完了之后不要立刻转身呀
期待三连关注小小博主加收藏
小小博主回关快 会给你意想不到的惊喜呀
各位老板动动小手给小弟点赞收藏一下,多多支持是我更新得动力!!!