Halcon可變匹配

2021-09-26 10:09:09 字數 2811 閱讀 9220

如下圖所示,印刷品有較大變形,在用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區域...