参考文章:剖析Halcon 9点标定旋转中心标定与使用_william9987的博客-CSDN博客_halcon旋转标定
一、XY轴九点标定:
使用仿射变换:
夹具夹取产品或者标定块,选取一个特征,开始进行标定
X轴、Y轴移动一个位置,记录轴的物理坐标:(Qx1,Qy1)
提取图像中对应特征点,图像像素坐标:(Px1,Py1)
运动第N位置,记录下点位轴轴坐标(QxN,QyN),t提取像素坐标:(PxN,PyN)
使用vector_to_hom_mat2d (Px, Py, Qx , Qy, HomMat2D)得到图像坐标和世界坐标的转换关系矩阵。这种简单的标定方法不能消除镜头和相机畸变。
*创建空数组用来存放模板在图像坐标系的位置
ImageXPix:=[]
ImageYPix:=[]
*****************************
*确定好相机移动的九个物理坐标数组
WorldX:=[8,8,8,0,0,0,-8,-8,-8]
WorldY:=[-8,0,8,8,0,-8,-8,0,8]
*开始标定
i:=0
* 打开相机
open_framegrabber ('GigEVision', 0, 0, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'default', 'ccd1', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
*采集图像 获取9个像素坐标
for i:=1 to 9 by 1
grab_image (Image, AcqHandle)
*用第一张图片创建模板
if(i=1)
disp_message(3600, '创建模板区域,右键确定', 'window', 12, 12, 'red', 'false')
draw_region(Region, 3600)
reduce_domain(Image, Region, ImageReduced)
create_shape_model(ImageReduced, 'auto', rad(-180), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
endif
find_shape_m