程式練習3:MLP方法的物體顏色識別例程
阿新 • • 發佈:2019-02-11
************MLP方法的物體顏色識別 dev_close_window () read_image (Image, 'F:/7.機器視覺/Halcon/halcon學習/顏色識別專題/糖豆4.jpg') get_image_size (Image, Width, Height) dev_open_window (0, 0, Width/10, Height/10, 'black', WindowHandle) dev_display (Image) *定義顏色陣列 Regions := ['黃','綠','淡紅','品紅','背景'] *生成空目標陣列(halcon中的obj指的是image,region和xld三種資料) gen_empty_obj (Classes) **生成顏色目標陣列 for i:=1 to |Regions| by 1 dev_display (Image) dev_display (Classes) disp_message (WindowHandle, '請指定區域:','window', 12, 12, 'black', 'true') **繪製水平矩形 draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2) **根據繪製的矩形生成對應的矩形 gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) **將兩個目標連線成一個 concat_obj (Rectangle, Classes, Classes) endfor
**建立訓練分類器 create_class_mlp (3, 7, 5, 'softmax', 'normalization', 3, 42, MLPHandle) **從影象中新增樣本到MLP的資料集中 add_samples_image_class_mlp (Image, Classes, MLPHandle) disp_message (WindowHandle, '開始訓練模型........', 'window', 12, 12, 'black', 'true') **訓練資料集 train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog) ***********************分類影象 read_image (Image2, 'F:/7.機器視覺/Halcon/halcon學習/顏色識別專題/糖豆14.jpg') ***應用MLP對影象目標物體顏色進行分類 classify_image_class_mlp (Image2, ClassRegions, MLPHandle, 0.5) **統計物體目標的數量 count_obj (ClassRegions, Number) for index := 1 to |Regions| by 1 dev_clear_window () **將目標複製給另外一個目標,用於顯示 copy_obj (ClassRegions, ObjectsSelected,index, 1) * select_shape (ObjectsSelected, ObjectsSelected1, 'area', 'and', 150, 99999) dev_display (Image2) dev_display (ObjectsSelected) **逆序顯示MLP顏色分類的結果:因為方法規定:分類後的順序與新增樣本的順序相反。 disp_message (WindowHandle, Regions[Number - index], 'window', 10, 10, 'black', 'true') endfor
執行結果如下:
MLP方法的基本步驟如下:
其實halcon中大多數的機器學習演算法,都是這個套路。可能細節上有一些不同,需要去學習和實踐。MLP、SVM、GMM、KNN四種演算法是必須掌握的,隨著halcon的更新,很多新的機器學習演算法會加入進來。