Halcon--差异模型完整性检测

本文详细介绍了如何利用Halcon的差异模型进行完整性检测。首先,通过获取和预处理图像创建差异模型,接着进行图像对齐并训练模型。然后,设置模型参数并进行比对,最后清除模型。在实际应用中,对多张测试图像进行检测,找出与参考模型存在差异的区域,以此判断产品的质量。


前言

基于Halcon的差异模型完整性检测


一、思路

①获取图像
使用的图像分为两类,一类是用于训练差异模型的图像;另一类是用于测试的图像,即实际检测图像。其中,图像如果是彩色的,需要将其转换成灰度图。如果存在一定的噪声,需要通过平滑去噪等预处理。当然,如果图片质量不佳或者ROI细节不够突出,也可以考虑重新采集,使图像的检测细节更为清晰。
②创建差异模型
图像预处理完之后,使用create_veriation_model算子创建一个用于对比的差异模型。
③图像对齐
由于用于训练差异模型的图像对每个点的灰度偏差都要进行计算,因此,参考图像或者是待检测的ROI需要先经过严格的对齐,避免可能的旋转和位移影响准确性,同样地,测试图像也需要对齐,只有对齐后的图像才可以进行点对点的灰度值比较。
具体过程为,确定一个ROI,再根据ROI建立形状模型,并在待对齐图像上通过形状模板匹配获得该ROI及其仿射参数。而后使用affine_trans_image算子将图像进行仿射变换,可使图像与ROI进行重合,便于后续的对比点的灰度值。
④训练差异模型
为了使理想的差异模型适应正常的容错范围,可以使用train_variation_model算子对多张良品样本对差异模型进行训练。
⑤准备差异模型参数
如果是多张图像的话,就使用prepare_variation_model算子设置模型参数,若是单张图像的话,则可使用prepare_direct_model算子将理想图像与差异模型图像关联起来。
⑥差异模型的比对
先对检测图像进行形状匹配,找到ROI,而后应用仿射变换使之与参考图像的ROI对齐,使用compare_variation_model将ROI跟差异模型进行对比,得到存在差异的局部区域。
⑦清除模型
待检查完毕,使用clear_variation_model算子清除模型,释放系统资源。

二、实现

原图

结果

三、源码

*清空显示窗口。
dev_close_window ()
*读取参考图像。这里读取图像是为了创建模板。
read_image (Image, 'D:/USER/Desktop/design/dataset/pen01.jpg')
*因为参考图像因为拍摄的原因会有一些噪声,因此使用均值滤波对图像进行平滑。
mean_image (Image, ImageMean, 3, 3)
*获取图像的宽和高用于窗口显示
get_image_size (Image, Width, Height)
*设置窗口显示参数,包括设置绘制线条的颜色和线宽等
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_set_color ('red')
dev_display (Image)
dev_set_draw ('margin')
dev_set_line_width(3)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值