zoukankan      html  css  js  c++  java
  • 分析一则halcon抓边拟合直线的小案例

    例图:

    完整算法:

     1 read_image (Image, 'C:/Users/Administrator/Desktop/1.png') 
     2 threshold (Image, Regions, 0, 112) 
     3 
     4 skeleton(Regions,TriangleSkeleton) 
     5 
     6 gen_contours_skeleton_xld(TriangleSkeleton,TriangleContours,1,'filter') 
     7 
     8 segment_contours_xld(TriangleContours,ContoursSplit,'lines_circles', 5, 4, 2) 
     9 
    10 select_contours_xld(ContoursSplit,SelectedContours, 'contour_length',100, 999, -0.5, 0.5)
    11 
    12 fit_line_contour_xld (SelectedContours, 'tukey', -1, 10, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist) 
    13 
    14 *计算三个夹角
    15 angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], Angle1) 
    16 angle_ll (RowBegin[0], ColBegin[0], RowEnd[0], ColEnd[0], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle2) 
    17 angle_ll (RowBegin[1], ColBegin[1], RowEnd[1], ColEnd[1], RowBegin[2], ColBegin[2], RowEnd[2], ColEnd[2], Angle3) 
    18 
    19 Angle1:=abs(deg(Angle1)) 
    20 Angle2:=abs(deg(Angle2)) 
    21 Angle3:=abs(deg(Angle3)) 
    22 
    23 dev_display (Image)
    24 dev_display (SelectedContours)
    25 disp_message (3600, '角度:' + Angle1 + '°、 ' + Angle2 + '°、 ' + Angle3 + '°', 'image', 20, 20, 'red', 'true')

    结果:

    步骤分析:

    ① 图像三角形主要由3根直线构成;

    阈值化、skeleton提取骨架、将骨架(region)转为xld、将xld打散分割、筛选xld得到3条主xld、将这3条xld拟合成3条直线

    效果分析:

    这种算法虽然步骤简单,但是其实鲁棒性并不好。主要风险在“筛选xld得到3条主xld”这一步,有时候,它没办法准确筛选到我们想要的xld,这样后面的准确拟合也就无从谈起。

    用过VisionPro的都知道,VisionPro它有抓边的卡尺工具,它直接作用于图像,简单分析就知道鲁棒性好得多。可惜的是halcon并没有直接提供类似工具,不过网上有大神做了个halcon自己的卡尺工具——rake函数。

    除非线条特征特别明显的图片,不然不建议使用本例的算法去抓边,类似于rake的抓边工具鲁棒性更好,抓边能力也更强。

    当然,如果你足够有耐心,也可以根据本例以及halcon的测量(Measure)助手设计自己的抓边工具(函数)。

  • 相关阅读:
    Control Group(CGroup)资源限制组
    系统安全之用户认证
    如何在Linux中禁用和挂起休眠
    ubuntu18 virtualbox启动失败Kernel driver not installed (rc=-1908)
    C# Winform 多线程更新界面UI控件,解决界面卡顿问题(转)
    【573】LaTeX相关技巧
    程序计时函数
    王炸!!Spring 终于对 JVM 动手了…
    ThreadLocalRandom 是线程安全的吗?
    Spring Boot 应用可视化监控,一目了然!
  • 原文地址:https://www.cnblogs.com/xh6300/p/9782132.html
Copyright © 2011-2022 走看看