halcon实现ICP算法

read_object(Title_MapX,'./data/ho_Title_MapX.hobj')
read_object(Title_MapY,'./data/ho_Title_MapY.hobj')
get_image_size (Title_MapX, Width, Height)
gen_image_const (Image, 'real', Width, Height)
Id_Row:=0
get_contour_from_xy_COPY_1 (Title_MapX, Title_MapY, Contour, Id_Row, Rows, Columns)

get_contour_xld (Contour, y, x)
Indices := [y [<] 0] 
tuple_find (Indices, 1, Indices)
y := y[Indices]
x := x[Indices]
gen_contour_polygon_xld (Contour1, y, x)
X_Model:=x
Y_Model:=y

hom_mat2d_identity (HomMat2D)
hom_mat2d_translate (HomMat2D, -10, -20, HomMat2D)
hom_mat2d_rotate (HomMat2D, rad(-90), 0, 0, HomMat2D)
affine_trans_contour_xld (Contour1, Contour2, HomMat2D)
get_contour_xld (Contour2, y2, x2)
X_Index:=x2
Y_Index:=y2

*误区   a和b  !=  Y_ModelOut和X_ModelOut,容易想当然的认为,
* area_center_xld (Contour2, Area, a, b, PointOrder)
* get_contour_xld (Contour2, Y_ModelOut, X_ModelOut)
* tuple_mean (X_ModelOut, Model_CenterX)
* tuple_mean (Y_ModelOut, Model_CenterY)
*迭代终止没加
itermax:=20
for iter := 1 to itermax by 1
    *有效解决,二维icp算法
    hom_mat2d_transform_icp (X_Model, Y_Model, X_Index, Y_Index, HomMat2D)
    *有效解决,对应点求解变换关系
*   vector_to_hom_mat2d (X_Index, Y_Index, X_Model, Y_Model, HomMat2D)
    affine_trans_contour_xld (Contour1, Contour_index, HomMat2D)
    affine_trans_point_2d (HomMat2D, X_Index, Y_Index,  X_Index, Y_Index)
endfor
https://download.csdn.net/download/qq_22904277/10593661

猜你喜欢

转载自blog.csdn.net/xuyi1218037/article/details/86644621