halcon 缺陷检测--形状匹配+差分

一、前言

    本篇主要总结使用halcon 做缺陷检测的一个常用思路,当一张图片拍摄多个待检测工件,常用方法是由预先建立好的模版图像,采用 形状匹配+查分方法抠下每个工件,逐个检测。

    形状匹配比灰度值匹配要更为可靠

二、代码

  代码是对一张有10个茶杯的图片进行演示

取第一个茶杯ROI作为模版,提取边缘作为形状匹配对的模版

  

set_system ('clip_region', 'false') //设置剪切为false
read_image (Image, 'E:/halcon-study/test_shape_match/002.jpg')

rgb1_to_gray(Image,ImageGray) 


***对截取的ROI滤波去除干扰
mean_image (ImageGray, ImageMean, 3, 3)

***选取ROI区域
*gen_rectangle2 (ModelRegion, 24.29, 20.63, rad(0), 40, 60)
gen_rectangle1 (ModelRegion, 94, 45, 177,131)
reduce_domain (ImageMean, ModelRegion, ImageROI)



***创建模型
create_shape_model (ImageROI, 1, -rad(120), rad(240), 'auto', 'auto', 'use_polarity', 70, 65, ModelID)

inspect_shape_model (ImageROI, ShapeModelImage, ShapeModelRegion,1, 70)


ModelFile := 'model.shm'

write_shape_model (ModelID, ModelFile)
clear_shape_model (ModelID)

*读取形状模板
read_shape_model (ModelFile, ReusedModelID)

*获取新装模板的轮廓,区域坐标等信息
*并在最后变换至原图去
get_shape_model_contours (ModelContours, ReusedModelID, 1)


get_shape_model_params (ReusedModelID[0], _, AngleStart, AngleExtent, _, _, _, _, _, mincon)
minScore := 0.7
*匹配数量,先验知识
numMatches := 10


*max_deformation 5表示的是允许变形5个像素值,0-32,0表示不允许变形,数字越大越耗时间
SubPix := ['least_squares','max_deformation 5']

NumLevels := 4
bFind := false
for Index4 := 1 to 2 by 1
    if(Index4 > 1)
        if(bFind)
            break
        endif
        NumLevels := 2
    endif
    for minScoreSelect := minScore to 0.2 by -0.1
        *AngleStart,AngleExtent必须使用文件导出的
        find_shape_models (ImageMean, ReusedModelID, AngleStart, AngleExtent, minScoreSelect,\
                numMatches, 0.0001, SubPix, min2(NumLevels,7),\
                   0.9, RowCheck, ColumnCheck, AngleCheck, Score, Model)
        if(|ColumnCheck| == numMatches)
            bFind := true
            break
        endif
    endfor

endfor

*由模版外部轮廓生成眼膜mask
select_obj (ModelContours, ModelCont0, 1) 
get_contour_xld (ModelCont0, Row, Col)   
gen_region_polygon (Region, Row, Col)
shape_trans (Region,RegionTrans,'convex')


gen_empty_obj (RegionWaits)

*将模型轮廓变换为检测到的位置
dev_display (Image)
for I := 0 to |Score| - 1 by 1
    hom_mat2d_identity (HomMat2D)
    hom_mat2d_rotate (HomMat2D, AngleCheck[I], 0, 0, HomMat2D)
    hom_mat2d_translate (HomMat2D, RowCheck[I], ColumnCheck[I], HomMat2D)
    affine_trans_contour_xld (ModelContours, TransContours, HomMat2D)
    affine_trans_region( RegionTrans,RegionTransNew ,HomMat2D ,'false'  )
    
    reduce_domain( ImageGray ,RegionTransNew , ImageReduce )
    
    concat_obj (RegionWaits, ImageReduce, RegionWaits)
    
    dev_set_color ('green')
    dev_display (RegionTransNew)
    dev_set_color ('red')
    dev_display (TransContours)
    
endfor
stop ()  

三、效果

   最后将边缘匹配到各个茶杯的效果

并且可以把每个茶杯使用掩膜仿射变换到各个匹配好的茶杯位置,并由reduce_domain 抠取下来保存在 RegionWaits 中

 

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Halcon是一种常用的图像处理软件,可以用于各种缺陷检测任务。在Halcon中,可以使用不同的算法和技术来进行缺陷检测。根据引用\[1\]中提供的实例,Halcon可以用于背景网格产品刮伤缺陷检测、不均匀表面刮伤检测、产品表面三角缺陷检测、产品毛刺检测、产品上凹坑检测、产品周围缺口检测、电路板短路、断路检测、找出所有网格顶点的位置、化妆品标签褶皱检测、皮革纹理表面缺陷检测、手机摄像头图像表面的轻微缺陷检测、网状产品表面破损检测、铣刀刀口破损缺陷检测和检测印刷数字是否完整等任务。 根据引用\[2\]中的描述,缺陷检测是一项具有挑战性的任务,需要保证稳定性和精度。传统的算法检测缺陷通常需要进行复杂的调试和参数调整,而且容易出现检测不稳定和误测的情况。机器学习和深度学习成为缺陷检测领域的重要技术难点。机器学习方法通常使用类似MLP的神经网络对缺陷特征进行训练和分类。深度学习方法则需要大量的缺陷样本进行训练,并且需要手动标注缺陷位置,训练周期较长。迁移学习法是一种新兴的方法,可以利用已经训练好的网络模型进行缺陷检测。 在日常工程应用中,Halcon通常使用形状匹配进行定位,但当待匹配物体有较大变形时,形状匹配的结果可能不准确,特别是在塑料产品成形时变形或纺织产品因褶皱而变形的情况下。这时需要采用其他方法来获得精确的定位结果。 综上所述,Halcon可以应用于各种缺陷检测任务,并且可以根据具体情况选择合适的算法和技术来实现精确的检测结果。 #### 引用[.reference_title] - *1* [【愚公系列】2023年04月 Halcon机器视觉-15种常用缺陷检测实例](https://blog.csdn.net/aa2528877987/article/details/129943049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [基于halcon缺陷检测常用方法与示例总结](https://blog.csdn.net/weixin_50016546/article/details/124981131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值