HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别
生活随笔
收集整理的這篇文章主要介紹了
HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
HALCON示例程序color_pieces.hdev通過MLP訓(xùn)練器對(duì)彩色棋子進(jìn)行分類識(shí)別;分別在彩色圖像下與灰度圖像下進(jìn)行,從而產(chǎn)生對(duì)比。
示例程序源碼(加注釋)
- 關(guān)于顯示類函數(shù)解釋
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 557, 416, ‘black’, WindowHandle)
set_display_font (WindowHandle, 14, ‘mono’, ‘true’, ‘false’)
dev_set_draw (‘margin’) - 初始化
ImageRootName := ‘color/color_pieces_0’
Regions := [‘yellow’,‘pink’,‘blue’,‘background’]
Highlight := [‘goldenrod’,‘magenta’,‘cyan’]
gen_empty_obj (Classes)
for Mode := 0 to 1 by 1
dev_set_color (‘black’)
read_image (Image, ImageRootName + ‘0’)- 生成灰度三通道圖像
if (Mode == 1)- rgb1_to_gray - 將RGB圖像轉(zhuǎn)換為灰度圖像。
- rgb1_to_gray(RGB圖:灰度圖 ::);轉(zhuǎn)換公式:灰色= 0.299 *R+ 0.587 *G+ 0.114 *B。
rgb1_to_gray (Image, GrayImage) - compose3 - 將3個(gè)圖像轉(zhuǎn)換為三通道圖像。
- compose3(圖1,圖2,圖3:多通道圖像 ::)
compose3 (GrayImage, GrayImage, GrayImage, Image)
dev_display (Image)
disp_message (WindowHandle, ‘Train and apply the classes again on gray images’, ‘window’, 12, 12, ‘black’, ‘false’)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
if (Mode == 0) - 指定顏色類
for I := 1 to 4 by 1
dev_display (Image)
dev_display (Classes)
disp_message (WindowHandle, [‘Drag rectangle inside ’ + Regions[I - 1] + ’ color’,‘Click right mouse button to confirm’], ‘window’, 24, 12, ‘black’, ‘false’)
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) - 帶有concat_obj解釋的貼子注意和union1的區(qū)別
concat_obj (Classes, Rectangle, Classes)
endfor
endif
- 創(chuàng)建MLP分類器并添加訓(xùn)練樣本;關(guān)于MLP分類器解釋的例子
create_class_mlp (3, 7, 4, ‘softmax’, ‘normalization’, 3, 42, MLPHandle)
add_samples_image_class_mlp (Image, Classes, MLPHandle)
disp_message (WindowHandle, ‘Training…’, ‘window’, 100, 12, ‘black’, ‘false’)
train_class_mlp (MLPHandle, 400, 0.5, 0.01, Error, ErrorLog)
for J := 0 to 3 by 1
read_image (Image, ImageRootName + J)
if (Mode == 1)
rgb1_to_gray (Image, GrayImage)
compose3 (GrayImage, GrayImage, GrayImage, Image)
endif
classify_image_class_mlp (Image, ClassRegions, MLPHandle, 0.5)
dev_display (Image)
disp_message (WindowHandle, ‘Looking for 4 game pieces of each color …’, ‘window’, 24, 12, ‘black’, ‘false’)
dev_set_line_width (2)
for Figure := 1 to 3 by 1
* copy_obj - 復(fù)制HALCON數(shù)據(jù)庫(kù)中的圖標(biāo)對(duì)象。
* copy_obj(要復(fù)制對(duì)象:復(fù)制出的對(duì)象,開始索引號(hào),對(duì)象數(shù)量:)
copy_obj (ClassRegions, ObjectsSelected, Figure, 1)
* 分割定義域
connection (ObjectsSelected, ConnectedRegions)
* 通過面積篩選區(qū)域
select_shape (ConnectedRegions, SelectedRegions, ‘a(chǎn)rea’, ‘a(chǎn)nd’, 400, 99999)
* 對(duì)區(qū)域進(jìn)行計(jì)數(shù)
count_obj (SelectedRegions, Number)
dev_set_color (Highlight[Figure - 1])
dev_display (SelectedRegions)
OutString := Regions[Figure - 1] + ': ’ + Number + ’ ’
dev_set_color (‘green’)
disp_message (WindowHandle, OutString, ‘window’, 24 + 30 * Figure, 12, ‘black’, ‘false’)
if (Number != 4)
disp_message (WindowHandle, ‘Not OK’, ‘window’, 24 + 30 * Figure, 120, ‘red’, ‘false’)
else
disp_message (WindowHandle, ‘OK’, ‘window’, 24 + 30 * Figure, 120, ‘green’, ‘false’)
endif
endfor
if (J < 3)
disp_continue_message (WindowHandle, ‘black’, ‘true’)
stop ()
endif
endfor
endfor
dev_clear_window ()
dev_display (Image)
Message := ‘The game pieces cannot be classified reliable on’
Message[1] := ‘gray images because the gray values of the’
Message[2] := ‘game pieces cannot always be distinguished from’
Message[3] := ‘the gray values of the background.’
disp_message (WindowHandle, Message, ‘window’, 12, 12, ‘black’, ‘true’)
- 生成灰度三通道圖像
處理思路
這個(gè)例子是將三通道的RGB圖像使用MLP分類器進(jìn)行分類,分別對(duì)灰度圖像與彩色圖像進(jìn)行了訓(xùn)練與識(shí)別,對(duì)比發(fā)現(xiàn)還是彩色圖像分類較為準(zhǔn)確,因?yàn)榛叶葓D像不能很好地分割出棋子與背景。
后記
大家有什么問題可以向我提問哈,我看到了第一時(shí)間回復(fù),希望在學(xué)習(xí)的路上多多結(jié)交良師益友。
總結(jié)
以上是生活随笔為你收集整理的HALCON示例程序color_pieces.hdev通过MLP训练器对彩色棋子进行分类识别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IOS+Android马甲包封装上架!
- 下一篇: java转账_JAVA实现银行转账功能