python-opencv第七期:开运算与闭运算详解(上)

目录


概要:

嗦粥汁所周知,在如今计算机视觉(Computer Version short for CV)是人工智能与机器人技术发展的一个重大研究方向,而opencv作为一个专门为机计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究的内容。

本期首先要谈谈什么是图像的开运算与闭运算以及开运算与闭运算都能用在什么地方。

话不多说,我是Kamen Black ,让我们开始今天的学习!

正文部分:

print("祝大家每天快乐,love and peace!")

概念介绍: 

— —初 窥 门 道

何谓“开”与“闭”:

在最开始,大家首先要对开运算与闭运算有个基础的概念理解。

其实开运算与闭运算,大家可以对应数学当中的开集和闭集— —开即意味着未连通,闭则意味着已连通,就好像门的开闭一样。

开门,意味着门的两个门板没有连通,对于外界是敞开的,对应“开”;

而闭门,意味着门的两个门板连通到了一起,对于外界是关闭的状态,对应“闭”。

门“开”与门“闭”

在数学当中,开集即意味着集合中的内容与边界的内容不连通,对于全集是开放的,闭集即意味着集合中的内容与边界的内容是连通着的,对于全集是闭合的;

在图像处理当中,开运算即意味着图像中的内容之间是不连通的,对于整幅图像是开放的状态,闭运算即意味着图像中的内容之间相互连通了,对于整幅图像是闭合的状态。

如何实现开运算与闭运算:

而我们知道,在数轴上的开集与闭集是通过小括号与中括号(小括号表示“开”,中括号表示“闭”)来表示的,而开运算与闭运算也是通过两个操作来实现的— —膨胀(dilate)腐蚀(erode)

为了形象地理解如何通过膨胀与腐蚀来完成图像内容的开运算与闭运算,我们首先来举一个简单的例子。

假设某个地区有两片相邻的湖泊,在它们之间有一条连接它们俩的天然河渠,河渠的宽度和湖泊的宽度相比要小很多,但是长度较大。

现在出现了两种可能的情况(都比较极端):

一种是— —

首先,这个地区经历了一场百年一遇的干旱,两个湖泊的面积都大幅缩减,只剩下各自中心点周围的一片区域,那条较窄的河渠更不用说,早就全部变成了水蒸气,两个湖泊间的连接自然;

然后,这个地区又经历了一场千年难遇的大雨,两个湖泊又渐渐恢复到了之前的规模,但是连接它们的那条河渠却就此消失了。最后的结果就是剩下了两片湖泊,互相不连通。

湖泊开运算的演示

另一种是— —

首先,这个地区经历了一场千年难遇的大雨,两个湖泊的面积都得到极大的扩张,以至于两个湖泊都大范围地连接到了一起,进而形成了一个湖泊,那条河渠自然也成为了湖泊的一部分;

然后,这个地区又经历了一场百年一遇的干旱,湖泊的面积又不可避免地变小,变成了之前两片湖泊之和的大小,但最后仍然还是保持着一个湖泊的形状。最后的结果就是剩下了一片大的湖泊,相当于之前的两片湖泊相互连通了。

湖泊闭运算的演示

在上面的例子当中,降雨就相当于膨胀操作干旱就相当于腐蚀操作

1、开运算的基本流程就是— —先腐蚀,再膨胀。就像两个湖泊先缩小,再扩大,最后形成两个独立不连通的湖泊一样,

图像中的内容先经过腐蚀操作,原本较细与较小的内容都会消失,只有较大的内容会呈现围绕中心点的范围减小,而不会消失;

再经过膨胀操作,留下来的内容会围绕中心点呈现范围增大的情况;

最后的结果就是,原本较细与较小的内容会被消除,而较大的内容会被保留下来

2、闭运算的基本流程就是— —先膨胀,再腐蚀。就像两个湖泊先扩大,再缩小,最后形成一个兼并的湖泊一样,

图像中的内容先经过膨胀操作,不仅原本较大的内容的面积会增大,较细与较小的内容也会增大,图像中所有的内容都会被扩大;

再经过腐蚀操作,图像中的内容都会出现缩小的情况,但是在上一步膨胀操作过程中连通的内容不会轻易地消失,而是会被保留下来;

最后的结果就是,原图像中的大多数内容都会被保留下来,而且更容易形成一个统一的整体

应用场景:

— —小 试 牛 刀

开运算和闭运算是二值图像处理中常用的两种形态学操作,都能保留图像中的大物体与边缘信息。它们可以通过对图像进行一系列的形态学变换,来改变图像的形状、大小、结构等特征,从而达到对图像进行分割、去噪、增强等目的。

分开来说:

开运算的主要作用是去除图像中的小孔洞和细小的物体。开运算可以用于图像去噪、分割、边缘检测等方面。

例如,在医学图像处理中,可以使用开运算来去除图像中的小斑点和噪声,从而更好地显示出医学图像中的重要信息。

闭运算的主要作用是填补图像中的小孔洞和连接细小的物体,达到平滑图像边缘的作用。闭运算可以用于图像增强、分割、形态学重建等方面。

例如,在数字图像处理中,可以使用闭运算来填补数字图像中的小孔洞和连接数字,从而更好地显示出数字图像中的数字信息。

综合两者:

我们可以做到以下几点:

  1. 去除图像中的噪声:在图像处理中,常常会出现一些噪声点,这些噪声点会影响图像的质量和准确性。使用开运算可以去除这些噪声点,使得图像更加清晰和准确。

  2. 分离图像中的物体:在计算机视觉和模式识别中,常常需要对图像中的物体进行分离和识别。使用开运算可以去除图像中的小物体和细节,使得图像中的大物体更加突出和明显。

  3. 平滑图像边缘:在图像处理中,常常需要对图像进行平滑处理,使得图像更加自然和美观。使用闭运算可以平滑图像边缘,使得图像更加平滑和自然。

  4. 填补图像中的空洞和断裂:在图像处理中,常常会出现一些空洞和断裂,这些空洞和断裂会影响图像的质量和准确性。使用闭运算可以填补这些空洞和断裂,使得图像更加完整和准确。

结语:

在今天的文章当中,我们学习了什么是图像的开运算与闭运算,以及它们的应用场景。相信大家一定对开运算与闭运算有了一定的了解与想法,但是受限于篇幅,

目前我们也只能先简单带大家了解一下开运算与闭运算的概念与用处,而在下一期的文章当中,我将向大家介绍怎么使用python-opencv中的函数实现开运算与闭运算,以及进行我们“惯常”的实例操作,请大家拭目以待。

好了以上就是所有的内容,希望大家多多关注点赞收藏,这对我有很大的帮助。谢谢大家了!

 好了,这里是Kamen Black 。祝国康家安,大家下次再见喽!!!溜溜球~~

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月11日
下一篇 2023年12月11日

相关推荐