机器视觉技术与应用实战(Chapter Two-04)

发布时间:2023年12月18日

2.6 图像形态学及常见的图像处理工具

图像形态学:是分析几何形状和结构的数字方法,是建立在集合代数的基础上用集合论方法定量描述几何结构的学科。基本的图像形态学算法有:腐蚀(Erode)、膨胀(Dilate)、开(Open)、闭(Close)、细化(Thinning)。(最好要记下这几个单词,图像处理时常以英文形式出现)

接下来就了解一下这些算法,它们的处理对象一般是二值图像,二值图像里面,白色为1,黑色为0。

我们先不直接讲,先看几张图,会有深刻的印象的,嘻嘻~

就拿这个“人”字了。

原图(有水印,请直接忽略):

开启神器visionpro,用一个CogIPOneimage工具进行简单的膨胀和腐蚀。

为了体现效果,我没用3X3的结构元素,不过这个不重要,我们直接看结果:

腐蚀:膨胀:

看到这里,你可能觉得,哦,腐蚀就是缩小嘛,膨胀就是变大嘛,撒撒水啦~

我想让你再看一组图片

原图(背景白色,为了效果,截图我截大了一些):

腐蚀:膨胀:

我们就直接说区别吧,同一个工具在两张灰度反转的图像似乎会因为灰度(亮度)的不同,展示出不同的效果,下面我们就开始研究腐蚀和膨胀,它们的原理就是和图像的灰度有关哦!

对了,这两张图片我是用matlab进行反转的,代码如下:

I=imread('02.png');
J=imadjust(I,[0,1],[1,0]);
imwrite(J,'image2.jpg');

我还是想强调一下:不要直接用matlab里面的保存图片,这样会导致图片这样(分辨率不对):

imwrite保存的图像是和原来一致的:

---------------------------------------------------------------------------------------------------------------------------------

腐蚀和膨胀

腐蚀和膨胀在中文词义上就是相反的,其实在这里也是的哦。腐蚀是减少图像中目标边界的像素膨胀是在增加图像中目标边界周围像素

在腐蚀和膨胀的处理过程中,需要一个结构元素(也叫内核)对图像进行处理,结构元素是一个由0或1值组成的矩阵,每一个结构元素有一个原点(也叫锚点)结构元素中的原点指定待处理像素的位置,结构元素形状可以是任意形状注意了,这个结构元素的定义非常重要

腐蚀处理流程:进行腐蚀操作时,将结构元素划过图像,将结构元素覆盖区域的最灰度值提取,并代替原点位置的灰度值。

膨胀处理流程:进行腐蚀操作时,将结构元素划过图像,将结构元素覆盖区域的最灰度值提取,并代替原点位置的灰度值。

举个膨胀和腐蚀的栗子:

我的结构元素是这个(一般设中心为原点,如果有其他情况,具体情况具体分析),深蓝色部分为1,其他颜色为0

处理图像是这个:

结构元素就是这么划的,原点一行行遍历这张图像,将结构元素覆盖区域的最灰度值提取,并代替原点位置的灰度值

最后得到的膨胀后的图像是这样的,绿色部分为膨胀增加的部分像素点

同理可以获得腐蚀后的图像,绿色部分为腐蚀缩小的像素点:

原理其实非常简单理解,如果你还没理解,我的建议是不妨再看一遍结构元素的定义和处理流程,然后在纸上手动模拟一遍。腐蚀和膨胀的处理过程是一样的 ,主要区别在于灰度值取大小区别。

哟西,我们可以回到最初的起点了,为什么会出现之前“人”字那种不同效果的情况呢?

答案就非常明确了,膨胀是取的最大灰度值的点,也就是亮点,腐蚀是取的最小灰度值的点,也就是暗点!腐蚀对于亮图部分是缩小的,膨胀对于亮图的部分是放大的,友友们可以去看看那几张“人”字。

最后就是腐蚀和膨胀的作用了。

腐蚀的作用是:缩小处理,减少区域像素,边缘连接断开。

膨胀的作用是:扩大处理,增加区域像素,建立边缘连接。

最后,任何事情的最佳理解是建立在实践后的基础上的,我们可能耳熟能详的说出腐蚀和膨胀,意味着缩小和扩大,但我们需要思考在什么情况下会有什么情况出现,涉及了什么处理流程等等。

最后的最后,发展是前进上升的运动,我们一直在前进的路上,互相勉励!欢迎各位佬对文章的错误进行指点和批评!

文章来源:https://blog.csdn.net/weixin_45987528/article/details/135003990
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。