【图像识别】基于形态学算法实现道路缺陷的自动识别matlab源码含GUI

本文介绍了形态学处理的基本概念,包括膨胀、腐蚀、开运算和闭运算在二值图像中的应用,通过理论解释和实例展示说明这些操作如何改变图像形状,以及它们在噪声消除、边缘处理和特征检测中的作用。特别强调了结构元素的选择和非对称操作的注意事项。
摘要由CSDN通过智能技术生成

    一般图像处理是针对图像做形状的改变,而形态处理则是对图像进行结构性的改变,而常见的形态处理就是针对二值图像(图像中的任何像素灰度值不是0就是255)的膨胀(Dilation)、腐蚀(Erosion)、开运算(先腐蚀再膨胀)、闭运算(先膨胀再腐蚀)。

注意:如果对灰度图进行膨胀、腐蚀等,会起到增强图像对比度的效果

一、理论:

膨胀(dilation、dilation_rectangle1、dilation_circle)-增加像素:

        把结构元素B的中心元素(origin)扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“或”操作,即结构元素与其覆盖的二值图像的重合部分只要有黑色(0),则结构元素的中心点所在的二值图像灰度值就为黑色(0);

        如图所示:左边是需要被处理的图像X(二值图像,我们针对的是黑点),中间是结构元素B,右边是膨胀处理之后的图像。膨胀的方法是:拿B的中心点在X上从左到右,从上到下滑动,只要B上的黑点与X上的黑点有重合,则就将B的中心点所在位置的图像像素值置为黑;右边是膨胀后的结果。可以看出,它包括X的所有范围,就像X膨胀了一圈似的。
在这里插入图片描述
腐蚀(erosion、erosion_rectangle1、erosion_circle)-减少像素:

       把结构元素B的中心元素(origin)扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作,即结构元素与其覆盖的二值图像的重合部分全都为黑色(0),则结构元素的中心点所在的二值图像灰度值才为黑色(0);换而言之,两者重合部分只要有白色(1)则结构元素的中心点所在的二值图像灰度值就为白色(1)。

       如图所示:左边是被处理的图像X(二值图像,我们针对的是黑点),中间是结构元素B,那个标有origin的点是中心点,即当前处理元素的位置。腐蚀的方法是:拿B的中心点在X上从左到右,从上到下滑动,如果结构元素B与二值图像X有空白交集,则将B的中心点所在的二值图像黑点去掉(变为白—1)。
在这里插入图片描述
膨胀和腐蚀主要用途:

  • 删除噪声
  • 图中个别原素的隔离与不同原素的连接
  • 寻找图中浓密点与空洞

注:对标准矩形或圆形进行等比例扩大或缩小要用上面的算子,扩展比例为3:1,例:dilation_rectangle1 (RegionTrans, RegionDilation, 3, 3) 为对标准矩形区域RegionTrans的长和宽方向各增加一个像素

开运算(opening_rectangle1等)-减少像素:先进行腐蚀,然后再膨胀

       如图所示:左边是被处理的图像X(二值图像,我们针对的是黑点),右边是结构元素B,下面的两幅图中左边是腐蚀后的结果;右边是在此基础上膨胀的结果。可以看到,原图经过开运算后,一些孤立的小点被去掉了。一般来说,开运算能够去除孤立的小点、毛刺和小桥(即连通两块区域的小点),而总的位置和形状不变。这就是开运算的作用。要注意的是,如果B是非对称的,进行开运算时要用B的对称集Bv膨胀,否则,开运算的结果和原图相比要发生平移。
在这里插入图片描述
闭运算(closing_rectangle1等)-增加像素:先进行膨胀,然后进行腐蚀

       左边是被处理的图像X(二值图像,我们针对的是黑点),右边是结构元素B,下面的两幅图中左边是膨胀后的结果,右边是在此基础上腐蚀的结果可以看到,原图经过闭运算后,断裂的地方被弥合了。一般来说,闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变,比如在OCR字符识别、车牌识别等地方,需要对激光点打印的字体或有一些缺陷的字体进行闭运算,实现连接。同样要注意的是,如果B是非对称的,进行闭运算时要用B的对称集Bv膨胀,否则,闭运算的结果和原图相比要发生平移。
      在这里插入图片描述
注意:
1)要与原图像的像素点作比较,新增或去掉的像素点不算。
2)上面我们介绍的是对二值化图像的处理。如果是对灰度图像进行形态学处理,则膨胀和闭运算会使灰度图像变亮,腐蚀和开运算会使灰度图像变暗,这点大家注意下。
 
总结:

1)结构元素的形状(圆形,矩形)一般随着要处理的区域形状(圆形、矩形等)的不同而有所不同。比如圆形的结构元素对圆形区域的腐蚀、膨胀效果会更好。
2)结构元素的半径或边长越大,则膨胀、腐蚀效果越强。
3)如果想增加像素,用膨胀或闭运算;如果想减少像素,用腐蚀或开运算。区别在于膨胀和腐蚀的度要大于闭运算和开运算。
4)形态学对二值化区域是改变形状,而对灰度图像是改变图像明暗。
5)开运算一般适合去除边缘毛刺、孔洞等,如果需要对标准圆形或矩形区域四周进行等比例扩大或缩小,可以使用算子dilation_rectangle1、erosion_rectangle1、dilation_circle、erosion_circle算子。

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值