如下圖所示,印刷品有較大變形,在用shape-based matching時,定位結果就不盡如人意,因為
shape-based matching本身得到的匹配結果只是乙個點(row,col),我們根據匹配結果通過仿射變換
將模板轉換到匹配位置時就這個熊樣。
怎麼辦?怎麼辦?如果有一種匹配模式,匹配結果可以根據待匹配物體自動進行變形多好!
如下圖所示,簡直完美,有木有?有木有!這就是我們今天要介紹的local deformable matching (區域性變形匹配)
local deformable matching的基本流程和 shape-based matching相似:
所以在此之前閉上眼睛好好感受一下, shape-based matching掌握的怎麼樣,要不要回顧一下歷史文章,相似引數不做介紹。
(1)create_local_deformable_model 建立變形模板
scalemin、scalemax、scalestep:
指定行列最小最大變形尺度例(0.9,1.1,0.01)用於指定相對於原圖的變形範圍
(2)find_local_deformable_model 匹配
imagerectified :
匹配到的變形後模板影象
vectorfield:
變形向量區,裡面儲存了匹配區域每個點變形後的位置,之所以叫vector是因為每個點為儲存了行列座標(x,y),動態圖中的網格就是以此算出的.
返回的區域大小是建立模板時domain的最小外界矩形大小,當然你可以通過paramname引數中的expand_border擴充套件區域等到更大的區域。
deformedcontours:
匹配到的輪廓,非模板輪廓而是經過變形得出的輪廓,動態圖中的綠色輪廓即是此
resulttype:『deformed_contours』, 『image_rectified』, 'vector_field』可指定需要得出的結果分別對應imagerectified vectorfiedl deformedcontours,
paramname:
deformation_smoothness:平滑的度,對於變形越大引數越大
expand_border:擴充套件imagerecfified vectorfield 區域
附註:生成變形網格的函式,此函式隔10個畫素取值
複製**
gen_warped_mesh (vectorfield, warpedmesh, 10)
gen_empty_obj (warpedmesh)
count_obj (vectorfield, number)
for index := 1 to number by 1
select_obj (vectorfield, objectselected, index)
*把vector轉換成儲存行座標和列座標影象
vector_field_to_real (objectselected, drow, dcol)
get_image_size (vectorfield, width, height)
*取行座標
for contr := 0.5 to height[0] - 1 by step
col1 := [0.5:width[0] - 1]
tuple_gen_const (width[0] - 1, contr, row1)
get_grayval_interpolated (drow, row1, col1, 'bilinear', grayrow)
get_grayval_interpolated (dcol, row1, col1, 'bilinear', graycol)
gen_contour_polygon_xld (contour, grayrow, graycol)
concat_obj (warpedmesh, contour, warpedmesh)
endfor
*取列座標
for contc := 0.5 to width[0] - 1 by step
row1 := [0.5:height[0] - 1]
tuple_gen_const (height[0] - 1, contc, col1)
get_grayval_interpolated (drow, row1, col1, 'bilinear', grayrow)
get_grayval_interpolated (dcol, row1, col1, 'bilinear', graycol)
gen_contour_polygon_xld (contour, grayrow, graycol)
concat_obj (warpedmesh, contour, warpedmesh)
endfor
endfor
return ()
隨便貼點**:
public void create_deformablemodel(hobject ho_image, hobject ho_roi_0, htuple hv_index,
out htuple hv_result)
else
}// catch (exception)
catch (halconexception hdevexpdefaultexception1)
ho_imagereduced.dispose();
return;
}catch (halconexception hdevexpdefaultexception)
}總結:一句話形容halcon的區域性變形匹配功能,那就是「屌炸天」,本人也在多個專案中應用取得了極其好的效果
模板匹配 HALCON
使用範圍 gray value based matching 要求照明不變的,內部灰度值和模板相同,應用極少 correlation based matching 不變性體現在 散焦 輕微的形變,線性光源,可以很好地處理紋理。僅僅可以處理灰度影象,不支援雜點 遮擋 縮放 非線性照明變換 以及多通道影...
Halcon 模版匹配
1.建立模板 create shape model template numlevels,anglestart,angleextent,anglestep,optimization,metric,contrast,mincontrast modelid template 模板影象 numlevels...
Halcon 關於形狀匹配
create shape model template numlevels,anglestart,angleextent,anglestep,optimization,metric,contrast,mincontrast modelid template 一般是經過預處理的模板,盡量選取roi區域...