zoukankan      html  css  js  c++  java
  • 跟我学机器视觉HALCON学习例程中文详解FUZZY检测用于开关引脚测量

           

    跟我学机器视觉-HALCON学习例程中文详解-FUZZY检测用于开关引脚测量
    * This example program demonstrates the basic usage of a fuzzy measure object.
    * Here, the task is to determine the width of and the distance between the
    * pins of a switch.
    *
    * First, read in the image and initialize the program.
    ***********************打开图像,获取图像宽度,高度***********************
    read_image (Image, 'bin_switch/bin_switch_2')
    get_image_size (Image, Width, Height)
    p_reopen_window_fit (0, 0, Width, Height, 640, WindowHandle)
    p_set_font (WindowHandle)
    dev_display (Image)
    ************************显示图像如下:注意中间引脚反光**********************
                           
    * Define the rectangular ROI within which the edges will be detected
    * and create the measure.
    Row := 290
    Column := 170
    Phi := rad(-130)
    Length1 := 60
    Length2 := 10
    Interpolation := 'nearest_neighbor'
    *************************生成测量矩形ROI,注意角度为-130度*********************
     
    gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, Interpolation, MeasureHandle)
    *
    * Determine all edge pairs that have a negative transition, i.e., edge pairs
    * that enclose dark regions.
    Sigma := 0.9
    Threshold := 10
    Transition := 'all'
     
     
    Select := 'all'
    **************进行测量,并显示检测结果,可以看出,中间的引脚检测结果不正确****
    measure_pairs (Image, MeasureHandle, Sigma, Threshold, Transition, Select, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, IntraDistance, InterDistance)
    *
    * Visualize the results
    dev_display (Image)
    dev_set_draw ('margin')
    dev_set_color ('black')
    gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
    p_disp_dimensions (RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond, IntraDistance, InterDistance, Phi, Length2, WindowHandle)
    *
    ***************************放大后图像如下**************************************
     
    *******************************检测框角度为-130时,Threshold怎么变都不行,*******************************Transition改为*****negative_strongest也不行*******
    *****************Any question,  Contact Q:        1613985351*******************
    ************************解决方法一:检测角度为50度时,检测结果正常**********
    ********解决方法二:使用FUZZY检测,已知引脚宽度为9个像素左右****************
    stop ()
    * Due to the reflections on the middle pin, its width cannot be determined correctly.
    *
    * As we know that the pins appear approximately 9 pixels wide, it is very easy to expand the measure to a
    * fuzzy measure that will only return pairs that have a width of approximately the given size.
    *
    * First, create a fuzzy function that returns 1.0 for the given pair size and 0.0 for values that
    * deviate more than 2 pixels from the given pair size.
     
    *************************创建SIZE范围函数**********************************
    create_funct_1d_pairs ([7,9,11], [0.0,1.0,0.0], SizeFunction)
    *
    * Then, expand the measure to a fuzzy measure that will return only pairs of approximately the given size.
    SetType := 'size'
    *************************创建测量句柄****************************************
    set_fuzzy_measure (MeasureHandle, SetType, SizeFunction)
    *
    ************设为Fuzzy检测时,中间引脚找到第一条边时,再找另一条边,宽度必须在8-10之间,因此中间那条边界被忽略,刚好找的正确边缘,否则找不到****************
    * Finally, determine all edge pairs that have a negative transition and approximately the given size.
    Sigma := 0.9
    AmpThresh := 12
    FuzzyThresh := 0.5
    Transition := 'negative'
    Select := 'all'
    ******************************fuzzy检测,使用创建的测量句柄*******************
    fuzzy_measure_pairs (Image, MeasureHandle, Sigma, AmpThresh, FuzzyThresh, Transition, RowEdgeFirst, ColumnEdgeFirst, AmplitudeFirst, RowEdgeSecond, ColumnEdgeSecond, AmplitudeSecond, RowEdgeCenter, ColumnEdgeCenter, FuzzyScore, IntraDistance, InterDistance)
    ********************将检测结果显示出来,可以看出现在测量结果正确了*************
    * And again, visualize the results
    dev_display (Image)
    dev_set_draw ('margin')
    dev_set_color ('black')
    gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
    p_disp_dimensions (RowEdgeFirst, ColumnEdgeFirst, RowEdgeSecond, ColumnEdgeSecond, IntraDistance, InterDistance, Phi, Length2, WindowHandle)
    *
    * Free the memory that has been allocated for the measure.
    close_measure (MeasureHandle)              
  • 相关阅读:
    Android UI ActionBar功能-ActionBarProvider的使用
    Android UI ActionBar功能-自动隐藏 Action Bar
    Android UI ActionBar功能-Action Bar 左上角的向上或返回按钮
    Android UI ActionBar功能-自定义Tab功能
    Android UI ActionBar功能-自定义 Action Bar 样式
    Android UI ActionBar功能-在 Action Bar 上添加按钮
    Android UI ActionBar功能-启动ActionBar
    AndroidUI 侧滑菜单 DrawerLayout的使用
    AndroidUI 引导页面的使用
    AndroidUI 布局动画-点九PNG技术
  • 原文地址:https://www.cnblogs.com/chita/p/3620735.html
Copyright © 2011-2022 走看看