Halcon 形態學膨脹腐蝕應用舉例


上圖中有一個硬幣和一把鑰匙,要求:計算出硬幣的面積和中心坐標

第一步用灰度直方圖選出硬幣的區域:threshold (GrayImage, Regions, 110, 250)

 

 第二步用開運算去掉圖像上半部分的雜質:opening_circle (Regions, RegionOpening, 10)

 

 開運算是把雜質去掉了,但是在硬幣上腐蝕出了一個小洞,沒關系,我們用填充算子把洞補上:fill_up (RegionOpening, RegionFillUp)

 

 把鑰匙和硬幣連通域斷開:connection (RegionFillUp, ConnectedRegions)

 

 用特征直方圖的圓度特征,把鑰匙和硬幣區別開來:select_shape (ConnectedRegions, SelectedRegions, 'circularity', 'and', 0.60367, 2)

 

 最終只留下了硬幣的區域,此時就可以計算面積和中心坐標:area_center (SelectedRegions, Area, Row, Column)

最后一步顯示信息:disp_message (WindowHandle, '面積:'+Area+'中心坐標:'+Row+' '+Column, 'window', 100, 20, 'black', 'true')

 

 完整的Halcon程序如下

dev_close_window ()//關閉窗體
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)//打開窗體

read_image (Ab, 'C:/Users/LiZhiqiang/Desktop/硬幣.png')//讀取圖像
rgb1_to_gray (Ab, GrayImage)//轉化為灰度圖像
threshold (GrayImage, Regions, 110, 250)//設置灰度范圍
opening_circle (Regions, RegionOpening, 10)//開運算處理,結構元素為圓形,半徑越大去掉的區域就越多(開運算形態學里先腐蝕后膨脹)
fill_up (RegionOpening, RegionFillUp)//填充硬幣中殘缺部分
connection (RegionFillUp, ConnectedRegions)//斷開區域,分成多個連通域
*select_shape (ConnectedRegions, SelectedRegions1, 'area', 'and', 16559.6, 30779.8)//特征選擇(面積)
select_shape (ConnectedRegions, SelectedRegions, 'circularity', 'and', 0.60367, 2)//特征選擇(圓度)
area_center (SelectedRegions, Area, Row, Column)//計算出面積,中心坐標
disp_message (WindowHandle, '面積:'+Area+'中心坐標:'+Row+' '+Column, 'window', 100, 20, 'black', 'true')//顯示信息

 


免責聲明!

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



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