7模板匹配

7.1 模板匹配原理

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

7.2 ncc模板匹配

在這裏插入圖片描述

7.3 形狀模板匹配

在這裏插入圖片描述

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

read_image (Image1, 'C:/Users/haokunlee/Desktop/《halcon機器視覺教程》素材及程序/7-2/1.jpg')
rgb1_to_gray (Image1, GrayImage)


draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
reduce_domain (GrayImage, Rectangle, ImageReduced)

*先創建形狀模板
create_shape_model (ImageReduced, 'auto', -0.2, 0.2, 0.1, 'auto', 'use_polarity', 'auto', 'auto', ModelID)

find_shape_model (GrayImage, ModelID, -0.2, 0.2, 0.5, 4, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)

get_domain (ImageReduced, Domain)
area_center (Domain, Area, Row3, Column3)
for i := 0 to |Angle|-1 by 1
    vector_angle_to_rigid (Row3, Column3, 0, Row[i], Column[i], Angle[i], HomMat2D)
    affine_trans_region (Domain, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
    stop ()
endfor

7.4 xld模板匹配

在這裏插入圖片描述

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image1, 'C:/Users/haokunlee/Desktop/《halcon機器視覺教程》素材及程序/7-5/1.bmp')
rgb1_to_gray (Image1, GrayImage)

draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
smallest_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
gen_rectangle2_contour_xld (Rectangle1, Row, Column, Phi, Length1, Length2)

*創建xld模板
create_shape_model_xld (Rectangle1, 'auto', -0.2, 0.2, 0.05, 'auto', 'ignore_local_polarity', 5, ModelID)

*模板匹配
find_shape_model (GrayImage, ModelID, -0.2, 0.2, 0.5, 7, 0.5, 'least_squares', 0, 0.9, Row3, Column3, Angle, Score)

area_center_xld (Rectangle1, Area, Row4, Column4, PointOrder)

gen_empty_obj (Obj)
for i := 0 to |Row3|-1 by 1
    vector_angle_to_rigid (Row4, Column4, 0, Row3[i], Column3[i], Angle[i], HomMat2D)
    affine_trans_contour_xld (Rectangle1, ContoursAffineTrans, HomMat2D)
    concat_obj (Obj, ContoursAffineTrans, Obj)
endfor

1 模板創建

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
read_image (Image1, 'C:/Users/haokunlee/Desktop/《halcon機器視覺教程》素材及程序/7-5/1.bmp')
rgb1_to_gray (Image1, GrayImage)

draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
smallest_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
gen_rectangle2_contour_xld (Rectangle1, Row, Column, Phi, Length1, Length2)

*創建xld模板
create_shape_model_xld (Rectangle1, 'auto', -0.2, 0.2, 0.01, 'auto', 'ignore_local_polarity', 5, ModelID)

*shm
write_shape_model (ModelID, '1.shm')
write_object (Rectangle1, '1.hobj')

2 模板匹配

dev_update_off ()
read_image (Image1, 'C:/Users/haokunlee/Desktop/《halcon機器視覺教程》素材及程序/7-5/1.bmp')
rgb1_to_gray (Image1, GrayImage)


read_shape_model ('1.shm', ModelID)
read_object (Rectangle1, '1.hobj')

gen_rectangle1 (Rectangle, 10, 33, 309, 1561)
reduce_domain (GrayImage, Rectangle, ImageReduced)

*模板匹配
find_shape_model (ImageReduced, ModelID, -0.2, 0.2, 0.5, 7, 0.5, 'least_squares', 0, 0.9, Row3, Column3, Angle, Score)


area_center_xld (Rectangle1, Area, Row4, Column4, PointOrder)

gen_empty_obj (Obj)
for i := 0 to |Row3|-1 by 1
    vector_angle_to_rigid (Row4, Column4, 0, Row3[i], Column3[i], Angle[i], HomMat2D)
    affine_trans_contour_xld (Rectangle1, ContoursAffineTrans, HomMat2D)
    concat_obj (Obj, ContoursAffineTrans, Obj)
endfor
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章