zoukankan      html  css  js  c++  java
  • Halcon 笔记3 形态学

    Halcon 三大数据类型:

    (1)图像

    (2)区域

    (3)XLD

     查看时间工具

    如果想让图像减少,则进行腐蚀(或者使用开运算),反之,则进行膨胀(或闭运算)

    腐蚀后再进行膨胀,相当于进行开运算。因为腐蚀比膨胀去掉的更多。

    erosion_circle (WiresFilled, RegionErosion, 15.5)
    dilation_circle (RegionErosion, RegionDilation, 15.5)
    opening_circle (WiresFilled, Balls, 15.5)//使用圆形的腐蚀,对圆形的作用比较大,如果比较圆的话,则保留
    

    opening或者二值化得到的都是一个区域。

    Blob分析典型实例

    分割电路板焊点

    * ball.hdev: Inspection of Ball Bonding
    * 
    dev_update_window ('off')
    dev_close_window ()
    dev_open_window (0, 0, 728, 512, 'black', WindowID)
    read_image (Bond, 'die/die_03')
    dev_display (Bond)
    set_display_font (WindowID, 14, 'mono', 'true', 'false')
    disp_continue_message (WindowID, 'black', 'true')
    stop ()
    threshold (Bond, Bright, 100, 255) //二值化
    shape_trans (Bright, Die, 'rectangle2') //将区域进行形状转换,rectangle1表示不带方向
    dev_set_color ('green')
    dev_set_line_width (3)
    dev_set_draw ('margin') //使用边缘描述模式
    dev_display (Die)
    disp_continue_message (WindowID, 'black', 'true')
    stop ()
    reduce_domain (Bond, Die, DieGrey)//抠图,在抠出的图中进行处理
    threshold (DieGrey, Wires, 0, 50) //二值化
    *fill_up是不带特征的填充,不管空洞有多大,都会进行填充
    fill_up_shape (Wires, WiresFilled, 'area', 1, 100)//填充空洞,仅对面积在1到100之间的空洞进行填充
    dev_display (Bond)
    dev_set_draw ('fill')
    dev_set_color ('red')
    dev_display (WiresFilled)
    disp_continue_message (WindowID, 'black', 'true')
    stop ()
    *opening 开运算,对应图像腐蚀
    erosion_circle (WiresFilled, RegionErosion, 15.5)
    dilation_circle (RegionErosion, RegionDilation, 15.5)
    opening_circle (WiresFilled, Balls, 15.5)//使用圆形的腐蚀,对圆形的作用比较大,如果比较圆的话,则保留
    dev_set_color ('green')
    dev_display (Balls)
    *dev_display (RegionDilation)
    disp_continue_message (WindowID, 'black', 'true')
    stop ()
    connection (Balls, SingleBalls)//区域打散
    select_shape (SingleBalls, IntermediateBalls, 'circularity', 'and', 0.85, 1.0)//形状选择
    sort_region (IntermediateBalls, FinalBalls, 'first_point', 'true', 'column')//根据位置标定
    dev_display (Bond)
    dev_set_colored (12)
    dev_display (FinalBalls)
    disp_continue_message (WindowID, 'black', 'true')
    stop ()
    smallest_circle (FinalBalls, Row, Column, Radius) //根据像素直径标定
    NumBalls := |Radius|
    Diameter := 2 * Radius
    meanDiameter := sum(Diameter) / NumBalls
    mimDiameter := min(Diameter)
    dev_display (Bond)
    disp_circle (WindowID, Row, Column, Radius)
    dev_set_color ('white')
    disp_message (WindowID, 'D: ' + Diameter$'.4', 'image', Row - 2 * Radius, Column, 'white', 'false')
    dev_update_window ('on')

     

    实践是检验真理的唯一标准

  • 相关阅读:
    97. Interleaving String (String; DP)
    140. Word Break II (String; DP,DFS)
    139. Word Break (String; DP)
    120. Triangle(Array; DP)
    132. Palindrome Partitioning II (String; DP)
    91. Decode Ways (Array; DP)
    45. Jump Game II (Array; Two-Pointers,Greedy)
    LeetCode Excel Sheet Column Number
    LeetCode Factorial Trailing Zeroes
    LeetCode SQL: Second Highest Salary
  • 原文地址:https://www.cnblogs.com/my-cat/p/8145766.html
Copyright © 2011-2022 走看看