形態學相關算子


 

腐蝕:利用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形態帽變換操作(閉運算-開運算)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM