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')

實踐是檢驗真理的唯一標準

浙公網安備 33010602011771號