halcon瓶身表面缺陷检测-滤波差值法

前言

在瓶子,灌装产业中,通常需要瓶子的瓶身进行检测,防止其出现划痕,破洞等情况。但是通常瓶身出现的缺陷都非常小,往往只是一些细小的划痕,这种情况就非常容易被误判为OK情况。
所以采用滤波差值法,可以有效的对瓶身细小的缺陷进行检测。
其核心在于,通过一个大卷积核的滤波程序将缺陷过滤,然后与低滤波的图像进行相减,得以突出缺陷所在位置。为什么不与原图相减?原因在于,低滤波的作用是在尽可能的保存缺陷所在位置的前提下,减少其他图像噪点的影响。所以使用低卷积核滤波时,可以根据实际情况将低卷积核的滤波调大。

1.halcon程序

read_image (Image, 'D:/2024Work/work/4.13瓶子异物检测/异物/10.bmp')
gen_rectangle1 (ROI_0, 152.494, 150.798, 906.861, 710)
reduce_domain (Image, ROI_0, ImageReduced)

binary_threshold (ImageReduced, Region1, ‘max_separability’, ‘dark’, UsedThreshold1)
shape_trans (Region1, RegionTrans, ‘convex’)

threshold (ImageReduced, Regions, 0, 243)
reduce_domain (ImageReduced, Regions, ImageReduced2)
smallest_rectangle2 (Regions, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2-10)
reduce_domain (ImageReduced, Rectangle, ImageReduced1)
*
mean_image (ImageReduced1, ImageMean, 1, 1)
mean_image (ImageReduced1, ImageMean1, 13, 13)
sub_image (ImageMean, ImageMean1, ImageSub, 20, 80)

threshold (ImageSub, Regions, 0, 60)
opening_circle (Regions, RegionOpening, 1)
closing_circle (RegionOpening, RegionClosing, 1)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ‘area’,and, 200, 2000)
dev_display (Image)
dev_display (SelectedRegions)

2.halcon程序解析

2.1定位产品位置

首先需要确定瓶子的所在位置。但是滤波差值法受到边缘的影响较大,所以在确定瓶身位置时,需要尽可能的剔除瓶身上的边缘
在这里插入图片描述
在这里插入图片描述

read_image (Image, 'D:/2024Work/work/4.13瓶子异物检测/异物/10.bmp')
gen_rectangle1 (ROI_0, 152.494, 150.798, 906.861, 710)
reduce_domain (Image, ROI_0, ImageReduced)

binary_threshold (ImageReduced, Region1, ‘max_separability’, ‘dark’, UsedThreshold1)
shape_trans (Region1, RegionTrans, ‘convex’)

threshold (ImageReduced, Regions, 0, 243)
reduce_domain (ImageReduced, Regions, ImageReduced2)
smallest_rectangle2 (Regions, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2-10)
reduce_domain (ImageReduced, Rectangle, ImageReduced1)

2.2滤波求差值

通常情况下滤波求差值可以使用均值,中值,高斯滤波都可以达到类似的效果,但是根据不同产品的不同,实际的差异可能比较大,通常在表面噪点少的情况,可以使用均值滤波
在这里插入图片描述

mean_image (ImageReduced1, ImageMean, 1, 1)
mean_image (ImageReduced1, ImageMean1, 13, 13)
sub_image (ImageMean, ImageMean1, ImageSub, 20, 80)

2.3形态学后处理

在这里插入图片描述

threshold (ImageSub, Regions, 0, 60)
opening_circle (Regions, RegionOpening, 1)
closing_circle (RegionOpening, RegionClosing, 1)
connection (RegionClosing, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 200, 2000)
dev_display (Image)
dev_display (SelectedRegions)

 
 

总结

滤波差值法的核心在于如何对滤波器的选择和测试参数。其中,在有大量噪点的缺陷检测项目和有大量边缘的项目中不适合使用。例如皮质表面脏污检测等。滤波差值法受到边缘和噪点的影响非常大,可以在实际使用中多加尝试即可。

转载自:https://blog.csdn.net/m0_51559565/article/details/137855877

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值