1. 程式人生 > >程式練習3:MLP方法的物體顏色識別例程

程式練習3:MLP方法的物體顏色識別例程

************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的更新,很多新的機器學習演算法會加入進來。