• halcon-思路整理


    halcon-blob分析

    blob将图像中具有相似颜色、纹理特征所组成的联通区域进行分析

    将图像进行二值化 然后进行连通区域检测。

    步骤:读取图像(read_image)-分割(threshold/bin_threshold/dyn_threshold/watersheds)-提取(connection)

    eg:

    read_image(Image,'particle')

    threshold(Image,Region, 128, 255)

    connection(Region,Regions)

    area_center(Regions,Area,Row,Column)

    halcon-边缘提取

    步骤:读取图像(read_image)-过滤图像(sobel_amp )-提取边缘(threshold)

    eg:

    read_image (Image, 'fuse') sobel_amp (Image, EdgeAmplitude, 'thin_sum_abs', 3) threshold (EdgeAmplitude, Region, 20, 255) skeleton (Region, Skeleton)

    应用threshold来选择具有数值高的边缘振幅。这一步的结果是一个包含所有边缘点的区域。使用skeleton,这些边缘可以被减薄到一个像素的宽度。作为阈值的一个高级版本,hysteresis_threshold可以用来消除不重要的边缘。另一个高级选项是在skeleton前调用运算符nonmax_suppression_dir,这在复杂情况下可能会产生更精确的边缘。请注意,为了使用这个运算符必须先计算边缘方向图像。相比之下,高级过滤器edges_image已经包括非最大抑制和滞后的阈值。因此,在这种情况下,一个简单的threshold就足以提取一个像素宽的边缘。如果只需要一个区域的边缘点,可以使用操作符inspect_shape_model。在这里,所有的步骤包括边缘过滤、非最大抑制和滞后阈值都在一个步骤中进行,效率很高。

    edges_sub_pix直接得到亚像素边缘

    *提取边缘
    edges_sub_pix (ImageReduced, Edges, 'canny', 1, 10, 20)
    *选择轮廓形状
    select_shape_xld (Edges, SelectedXLD, 'contlength', 'and', 80, 99999)

    halcon-几何测量

    测量包括物体大小的测量、距离的测量以及物体完整度的检测。工业机器视觉常用1D测量和2D测量。大部分测量基于标定之后。

    1D测量步骤 自定义测量模型(draw_rectangle2 /gen_rectangle2 )-创建测量句柄(gen_measure_rectangle2 )-开始测量(measure_pos )-显示测量结果(disp_message )-清除测量句柄(close_measure )

    2D测量步骤 创建测量句柄(create_metrology_model )-设置图片相对大小到句柄(set_metrology_model_image_size )-定义测量模型(draw_ellipse )-将测量模型添加到句柄(add_metrology_object_ellipse_measure )-开始测量(apply_metrology_model)-拟合被测模型(fit_ellipse_contour_xld )-显示测量结果(disp_message )-清除测量句柄(close_measure )

    halcon-模板匹配

    步骤:获取图像(read_image)-创建模板(create_ncc_model)-查找模板(find_ncc_model)-清除模板(clear_ncc_model)

    模板匹配在机器视觉工业现场是较为常用的一种方法,常用于定位通过算法在新的图像中找到模板图像位置

    基于灰度 ncc  

    基于形状 shape

    基于轻微变形 scaled_shape

    缺陷检测方法

    1、基于颜色的blob法+差分

    2、模板匹配+差分

    3、基于轮廓的边缘提取

    主要检测物品损坏,凸起,破洞,缺失等。先定位模板区域后,求得模板区域的坐标,创建物品的形状模板create_shape_model,注意把模板的旋转角度改为rad(0)和rad(360)。匹配模板find_shape_model时,由于物品的缺陷使形状有局部的改变,所以要把MinScore设置小一点,否则匹配不到模板。并求得匹配项的坐标。关键的一步,将模板区域仿射变换到匹配成功的区域。由于差集运算是在相同的区域内作用的,所以必须把模板区域转换到匹配项的区域。之后求差集,根据差集部分的面积判断该物品是否有缺陷。

    读取图像(read_image)-二值化(threshold)-根据面积剔除非回字形的region()-计算每个region的方向和中心(area_center)-画箭头,结果输出()

  • 相关阅读:
    PIC单片机3——外部中断
    【MATLAB教程案例32】基于matlab的交通标志检测分割算法的仿真——形态学处理,膨胀,腐蚀,形状检测,颜色模型,小波滤波等知识的综合应用
    Abnormal build process termination:错误解决
    C# ref用法,实现引用传递(地址传递)
    分享30个PHP源码,总有一款适合你
    Ubuntu工具-2 OBS Studio
    xss绕过:prompt(1)
    再谈线程池——深入剖析线程池的前世今生
    第4篇 vue的基本语法操作以及组件,声明周期,路由的操作
    【KBQA-2】 Learning To Retrieve Prompts for In-Context Learning
  • 原文地址:https://blog.csdn.net/qq_30807313/article/details/127746853