halcon 缺陷检测 穿孔检测(边缘点偏离检测)

请添加图片描述

图片文件

链接:https://pan.baidu.com/s/1nhv2EvknO4pmdxUp6D0kdQ
提取码:8nj1

处理流程

1、获取连通域 外边缘
2、计算边缘点 到四个角点的最短距离
3、计算边缘点 到对应最小外接矩形的距离
4、忽略四个角附近的点,其它点 距离外接矩形 >1.0判断为NG

完整代码

* 穿孔检测外接矩形与连通域点距离 检测产品

**** 1、读取图片 *********************************
dev_update_off ()
read_image (Image, './punched_holes.png')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)

**** 2、获取产品外接矩形 *********************************
* 二值化
fast_threshold (Image, Region, 128, 255, 10)
* 内部环状区域
boundary (Region, Border, 'inner')
* 矩形膨胀
dilation_rectangle1 (Border, EdgeROI, 7, 7)
* 聚焦边缘区域
reduce_domain (Image, EdgeROI, ImageReduced)
* canny算法 获取边缘
edges_sub_pix (ImageReduced, Edges, 'canny', 1.7, 40, 120)
* 通过长度过滤边缘
select_shape_xld (Edges, RectangleEdges, 'contlength', 'and', 500, 100000)
* 边缘拟合外接矩形
fit_rectangle2_contour_xld (RectangleEdges, 'tukey', -1, 0, 0, 3, 2, Row, Column, Phi, Length1, Length2, PointOrder)
* 生成外接矩形
gen_rectangle2_contour_xld (Rectangles, Row, Column, Phi, Length1, Length2)
dev_set_color ('yellow')
dev_display (Rectangles)

**** 3、循环处理边缘 *********************************
count_obj (RectangleEdges, Number)
for I := 0 to Number - 1 by 1
    *** a、获取区域边缘坐标点、外接矩形、四个角点坐标 *********
    * 选择区域的边缘
    select_obj (RectangleEdges, RectangleEdge, I + 1)
    * 获取连通域的坐标点
    get_contour_xld (RectangleEdge, Rows, Cols)
    * 生成对应的外接矩形
    gen_rectangle2_contour_xld (Rect, Row[I], Column[I], Phi[I], Length1[I], Length2[I])
    * 获取外接矩形 四个角点坐标 
    get_contour_xld (Rect, RowC, ColC)
*     gen_cross_contour_xld (Cross, RowC, ColC, 20, 0)
*     dev_display (Cross)
    
    *** b、计算所有边缘点与四个角点 最小距离 ********************
    * 所有连通域点与四个角点距离计算
    D1 := sqrt((Rows - RowC[0]) * (Rows - RowC[0]) + (Cols - ColC[0]) * (Cols - ColC[0]))
    D2 := sqrt((Rows - RowC[1]) * (Rows - RowC[1]) + (Cols - ColC[1]) * (Cols - ColC[1]))
    D3 := sqrt((Rows - RowC[2]) * (Rows - RowC[2]) + (Cols - ColC[2]) * (Cols - ColC[2]))
    D4 := sqrt((Rows - RowC[3]) * (Rows - RowC[3]) + (Cols - ColC[3]) * (Cols - ColC[3]))
    
    *(连通域左上点最近,连通域与右上点最近的点)(距离左下点最近,距离右下最近点)) 
    * 获取所有连通域点 到四个角点 最近的距离 (一维数组 使用最近的距离填入)
    DistCorner := min2(min2(D1,D2),min2(D3,D4))
    
    *** C、计算连通域点 与 外接矩形的距离
    dist_rectangle2_contour_points_xld (RectangleEdge, 0, Row[I], Column[I], Phi[I], Length1[I], Length2[I], Dist)
    
    *** d、忽略距离角点近的点,通过边缘点距离判断 OK NG ********************
*     RectangleOK := true
*     for J := 0 to |Dist| - 1 by 1
        * 过滤距离四个角点距离7的点 并且 连通域点距离外接矩形 > 1.
*         if (DistCorner[J] > 7.0 and Dist[J] > 1.0)
            * 检测结果为NG
*             RectangleOK := false 
*             break
*         endif
*     endfor
    * 距离小于70,符号判断 (-1.001.0)
    Mask := sgn(max2(DistCorner - 7.0,0.0))
    * mask 凸出外接矩形 -1, 近四角 0, 其它 1.0
    * 最大偏离置 > 1.0 以此判断OK NG
    RectangleOK := max(Dist * Mask) <= 1.0
    
    *** e、显示结果 ********************
    if (RectangleOK)
        dev_set_color ('green')
        get_string_extents (WindowHandle, 'OK', Ascent, Descent, Width, Height)
        set_tposition (WindowHandle, Row[I] - Height / 2, Column[I] - Width / 2)
        write_string (WindowHandle, 'OK')
    else
        dev_set_color ('red')
        get_string_extents (WindowHandle, 'Not OK', Ascent, Descent, Width, Height)
        set_tposition (WindowHandle, Row[I] - Height / 2, Column[I] - Width / 2)
        write_string (WindowHandle, 'Not OK')
    endif
endfor

在这里插入图片描述

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 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
发出的红包

打赏作者

廷益--飞鸟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值