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)              
  • 相关阅读:
    Leetcode & CTCI ---Day 4
    Leetcode & CTCI ---Day 3
    Leetcode & CTCI ---Day 2
    Leetcode & CTCI ---Day 1
    编码格式坑之UTF-8
    15. 3Sum
    第十六周助教总结-第二组
    第十五周助教总结-第二组
    第十四周助教总结-第二组
    第十三周助教总结-第二组
  • 原文地址:https://www.cnblogs.com/chita/p/3620735.html
Copyright © 2011-2022 走看看