基於haclon的曲線針識別實例
本例子介紹了一個利用haclon對曲線針進行識別的例子,目標是計算並確定曲線針的位置和方向,曲線針如圖所示:
1.啓動HDevelop,新建一個程序:
2.讀入圖片:
在輸入算子函數處輸入read_image
輸入圖片變量名:Image1,圖片的路徑點擊filename.read選取圖片路徑。
點擊輸入會看到程序輸入區出現輸入圖片命令的代碼
運行程序:
窗口左側圖像變量區會出現相應的圖像變量,並且圖像窗口顯示讀入的圖像。
3.選取可視化-工具-灰度直方圖命令
點擊閾值旁邊的使能 。調整閾值的最小值和最大值,調整過程中可以看到閾值調整的實時圖:
當閾值爲10到55左右時圖像2值處理效果較好。
4.添加閾值分割函數threshold。
設置閾值最小值爲10,最大值爲55.點擊輸入插入代碼
5.添加後繼函數
選中剛插入的程序行,打開菜單欄中的 建議-後繼函數。選擇connection算子。目的是把選擇的像素分割成區域。
單擊確定。通過connection計算得到的區域用不同的顏色顯示。
6.鼠標移到圖形變量ConnectedRegions右鍵顯示目錄—選擇。出現如下圖所示,測量出來的區域。
發現區域數比曲線針數多了1個,因爲圖像左上角有干擾圖像。
7.根據特徵值選擇區域排除干擾區域
點擊可視化—工具—特徵值直方圖工具,它有助於選擇擁有共同屬性或特性的區域。
激活area旁邊的使能 。移動最小和最大值剔除干擾區域:
點擊插入代碼,運行程序查看區域,發現區域數爲13,干擾區域已經被剔除
添加orientation_region(SelectedRegions,Phi) 得到針的方向,返回的Phi爲針的方向角度
area_center(SelectedRegions,Area,Row,Cloumn)返回每個針區域的中心位置。
運行程序得到結果,結果在控制變量區域有顯示
8.在循環體中訪問檢測結果。
點擊菜單欄—算子—控制—for
設置參數:
|Phi|-1是HDevelop語言的一部分,|Phi|表示元組元素的個數。點擊輸入。
然後在for循環中添加如下代碼:
set_tposition(3600,Row[index],Cloumn[Index])
write_string(3600,deg(Phi[Index])+’degree’)
算子set_tposition把圖形窗口中的文本光標位置移至索引Index所對應的區域的中心位置。3600是目標圖形窗口的窗口句柄。顯示在窗口標題欄
Row[Index]是HDevelop語言的另外一個算子。通過它來訪問突破了元組的一個元素。
算子write_string的作用是在圖形窗口中,在當前光標位置輸出指定字符。deg()是把弧度轉換爲角度的意思。
9.最後結果如圖所示: