HALCON示例程序distance_transform.hdev通过distance_transform检测线的缺陷

HALCON示例程序distance_transform.hdev通过distance_transform检测线的缺陷

示例程序源码(加注释)

  • 关于显示类函数解释
    dev_close_window ()
    dev_open_window (0, 0, 400, 400, ‘black’, WindowHandle)
  • 通过一系列的坐标点生成多边形像素轮廓
    gen_region_polygon (Line1, [300,300,200,0], [0,200,300,300])
    gen_region_polygon (Line2, [350,350,250,0], [0,250,350,350])
  • 合并两个轮廓
    union2 (Line1, Line2, Lines)
  • 使用圆形元素对区域进行膨胀
    dilation_circle (Lines, ThickLines, 7.5)
  • 生成圆形
    gen_circle (Error1, 120, 347, 7.5)
    gen_circle (Error2, 90, 287, 7.5)
    gen_circle (Error3, 302, 202, 7.5)
    gen_circle (Error4, 242, 337, 7.5)
    gen_circle (Error5, 346, 248, 7.5)
    gen_circle (Error6, 204, 312, 7.5)
  • 合并生成的圆形区域
    union2 (Error1, Error3, Errors1)
    union2 (Errors1, Error5, ErrorsAdd)
    union2 (Error2, Error4, Errors2)
    union2 (Errors2, Error6, ErrorsRem)
    union2 (ThickLines, ErrorsAdd, ThichLinesAdd)
    union2 (ThickLines, ErrorsAdd, ThichLinesAdd)
  • 求两个区域不相交的区域
    difference (ThichLinesAdd, ErrorsRem, ThickLinesError)
  • distance_transform - 计算区域的距离变换;每个像素点到边界的距离。
  • distance_transform(区域:距离图像:方式,是否区域内所有点,宽度,高度:)
    distance_transform (ThickLines, LinesDistance, ‘chamfer-3-4’, ‘true’, 400, 400)
  • 提取区域的骨架
    skeleton (ThickLines, Skeleton)
  • 减少定义域
    reduce_domain (LinesDistance, Skeleton, LinesDistanceReduced)
  • 二值化
    threshold (LinesDistanceReduced, NoErrors, [0,9], [6,20])
  • 计算每个像素点到边界的距离
    distance_transform (ThickLinesError, LinesDistanceError, ‘chamfer-3-4’, ‘true’, 400, 400)
    skeleton (ThickLinesError, SkeletonError)
    reduce_domain (LinesDistanceError, SkeletonError, LinesDistanceErrorReduced)
    threshold (LinesDistanceErrorReduced, Errors, [0,9], [6,20])
    dilation_circle (Errors, ErrorsDilation, 5.5)
    connection (ErrorsDilation, ConnectedRegions)
    area_center (ConnectedRegions, Area, Row, Column)
    dev_clear_window ()
    dev_set_draw (‘fill’)
    dev_set_color (‘gray’)
    dev_display (ThickLinesError)
    dev_set_draw (‘margin’)
    dev_set_color (‘red’)
    dev_set_line_width (3)
    disp_circle (WindowHandle, Row, Column, gen_tuple_const(|Row|,15.5))
    dev_set_draw (‘fill’)

处理思路

这个例子是主要讲解了distance_transform算子的应用。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

你可能感兴趣的:(#,Halcon示例程序解读与剖析,halcon,缺陷检测)