腐蝕:利用n*n的結構元素掃描圖像的每一個像素,結構元素原點與掃描像素覆蓋,進行“與”運算,如果都為1,則結果圖像的該像素為1,否則為0。(收縮圖像)
膨脹:利用n*n的結構元素掃描圖像的每一個像素,結構元素原點與掃描像素覆蓋,進行“與”運算,如果都為0,則結果圖像的該像素為0,否則為1。(擴大圖像)
腐蝕是求局部最小值的操作,結構元沿着圖像逐像素滑動,計算結構元覆蓋的區域的像素點的最小值,並把這個最小值賦值給結構元原點覆蓋的像素點,這種操作可以將圖像中小於結構元的細節部分濾除掉。
膨脹操作則與腐蝕相反,結構元覆蓋的區域會被拓展。
region邊界應用:
原圖 - 腐蝕后 = 內邊界
原圖 - 膨脹后 = 外邊界
1.gen_disc_se
功能:創建橢圓形結構元素,用於圖像的腐蝕膨脹
2.gray_erosion
功能:使用結構元素對圖像做腐蝕操作
3.gray_dilation
功能:使用結構元素對圖像做膨脹操作
4.erosion_circle
功能:使用圓形結構元素對區域region做腐蝕操作
5.erosion_rectangle1
功能:使用矩形結構元素對區域region做腐蝕操作
6.dilation_circle
功能:使用圓形結構元素對區域region做膨脹操作
7.dilation_rectangle1
功能:使用矩形結構元素對區域region做膨脹操作
8.erosion1
功能:使用結構元素對區域region做迭代腐蝕操作
9.erosion2
功能:使用結構元素對區域region做迭代腐蝕操作(可設置結構元素原點)
10.dilation1
功能:使用結構元素對區域region做迭代膨脹操作
11.dilation2
功能:使用結構元素對區域region做迭代膨脹操作(可設置結構元素原點)
12.minkowski_add1
功能:使用結構元素對區域region做閔可夫斯基加法操作
13.minkowski_add2
功能:使用結構元素對區域region做閔可夫斯基加法操作(可設置結構元素原點)
如果結構元素對稱,則閔可夫斯基加法與膨脹效果一樣
如果結構元素不對稱,則閔可夫斯基加法與膨脹效果不一樣
14.minkowski_sub1
功能:使用結構元素對區域region做閔可夫斯基減法操作
15.minkowski_sub2
功能:使用結構元素對區域region做閔可夫斯基減法操作(可設置結構元素原點)
如果結構元素對稱,則閔可夫斯基減法與腐蝕效果一樣
如果結構元素不對稱,則閔可夫斯基減法與腐蝕效果不一樣
16.hit_or_miss
功能:對區域region做擊中與擊不中區域計算
****************************開運算****************************
先腐蝕后膨脹,用來消除小物體,分離物體,平滑較大物體的邊界,擴大暗背景,收縮亮前景。
1.opening
功能:使用結構元素對區域region做開運算
2.opening_circle
功能:使用圓形結構元素對區域region做開運算
3.opening_rectangle1
功能:使用矩形結構元素對區域region做開運算
4.gray_opening
功能:使用灰度值結構元素對圖像做開運算
5.gray_opening_rect
功能:使用矩形灰度值結構元素對圖像做開運算
6.gray_opening_shape
功能:使用多邊形灰度值結構元素對圖像做開運算
****************************閉運算****************************
先膨脹后腐蝕,用來填充物體內部細小孔洞,連接鄰近物體,平滑邊界,擴大亮前景,收縮暗背景。
1.closing
功能:使用結構元素對區域region做閉運算
2.closing_circle
功能:使用圓形結構元素對區域region做閉運算
3.closing_rectangle1
功能:使用矩形結構元素對區域region做閉運算
4.gray_closing
功能:使用灰度值結構元素對圖像做閉運算
5.gray_closing_rect
功能:使用矩形灰度值結構元素對圖像做閉運算
6.gray_closing_shape
功能:使用多邊形灰度值結構元素對圖像做閉運算
****************************頂帽(禮帽)變換****************************
頂帽運算往往用來分離比鄰近點亮一些的斑塊。(頂帽變換結果 = 原始圖像 - 開運算結果)
當一幅圖像具有大幅的背景的時候,而微小物品比較有規律的情況下,可以使用頂帽運算進行背景提取。
dev_close_window () read_image(Image, 'E:/MyHalcon/yzm.png') dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle) dev_display (Image) rgb1_to_gray (Image, GrayImage) threshold (GrayImage, Regions, 0, 223) gen_ellipse (Ellipse, 200, 200, 0, 3, 2) top_hat (Regions, Ellipse, RegionBottomHat) difference (Regions, RegionBottomHat, ImageSub) dev_clear_window () dev_display(RegionBottomHat) disp_message (WindowHandle, '頂帽結果', 'window', 12, 12, 'black', 'true') disp_continue_message (WindowHandle, 'black', 'true') stop() dev_clear_window () dev_display(ImageSub) disp_message (WindowHandle, '與原圖求差異,提取前景', 'window', 12, 12, 'black', 'true')
1.原圖
2.閾值圖
3.頂帽變換結果
4.提取前景
1.top_hat
功能:區域region頂帽變換操作
2.gray_tophat
功能:灰度圖像做頂帽變換操作,通過gen_disc_se生成灰度結構元素
3.bottom_hat
功能:區域region底帽(黑帽)變換操作
4.gray_bothat
功能:灰度圖像做底帽變換操作
底帽變換結果 = 閉運算結果 - 原始圖像
適用於在較亮的背景中求暗的像素點
5.morph_hat
功能:區域region形態帽變換操作(閉運算-開運算)