Halcon摄像机标定流程:
第一步:初始化摄像机参数(内参)
startCamPar=[f,k,Sx,Sy,Cx,Cy,NumCol,NumRow]
f 焦距 即成像中心到成像平面之间的距离
k 畸变,初始化为0.0
Sx 两个相邻像素点之间的水平距离
Sy 两个相邻像素点之间的垂直距离
Cx Cy 图像中心点位置
NumCol NumRow 图像的长和宽
第二步:caltab_points读取标定板描述文件里面描述的点到X[],Y[],Z[],描述文件由gen_caltab生成
第三步:find_caltab找到标定板的位置
第四步:find_masks_and_pose输出标定点的位置和外参startpose
第五步:camera_calibration 输出内参和所有外部参数
标定板描述文件制作方法有以下两种:
方法一:使用Hdevelop的gen_caltab( : :XNum,YNum,MarkDist,DiameterRatio,CalTabDescrFile,CalTabPSFile : ) 算子来制作一个标定板
XNum 每行黑色标志圆点的数量。
YNum 每列黑色标志圆点的数量。
MarkDist 两个就近黑色圆点中心之间的距离。单位是meter
DiameterRatio 黑色圆点半径与圆点中心距离的比值。
CalTabDescrFile 标定板描述文件的文件路径(.descr)。这两个文件路径是用来存放文件的
CalTabPSFile 标定板图像文件的文件路径(.ps),
然后复位(F2),点击运行(F5)
其中,.descr文件为标定板描述文件,.ps文件为标定板图形文件,可以用photoshop(PS)打开
方法一是最常用的方法
备注一个30*30的标准标定板的halcon源代码。
gen_caltab(7,7,0.00375,0.5,'F:/halcon程序/gencaltab/30_30.descr','F:/halcon程序/gencaltab/40_40.ps')
规格的标定板的规格
黑色圆点行数: 7
黑色圆点列数: 7
外边框长度: 30mm*30mm
内边框长度: 28.125mm*28.125mm 即:黑色边框线宽为一个圆点半径(0.9375)
黑色圆点半径: 0.9375mm
圆点中心间距: 3.75mm
裁剪宽度: 30.75mm*30.75mm 即:由黑色边框向外延伸0.375mm
边角: 由黑色外边框向内缩进一个中心边距的长度
方法二:也可以借助现有的标定板文件.descr来改写,从而得到我们所需要的标定板文件。只需要改写其中的参数信息即可。descr文件需要用写字板打开(注意要用写字板,记事本打开会有一些数据不可见,一般windowsXP在C:\Program Files\Windows NT\Accessories就有写字板软件wordpad.exe)打开后的文件基本如下:
以40*40为例:
# Plate Description Version 2
# HALCON Version 10.0 -- Mon Dec 19 11:08:07 2011
# Description of the standard calibration plate 标准标定板的描述
# used for the CCD camera calibration in HALCON
# (generated by gen_caltab) (由)gen_caltab算子生成
#
#
# 7 rows x 7 columns 7行*7列
# Width, height of calibration plate [meter]: 0.04, 0.04
标定板的宽和高:0.04米,0.04米
# Distance between mark centers [meter]: 0.005
标志圆点中心间距:0.005米
# Number of marks in y-dimension (rows)
r 7
Y方向标志圆点的数量。
# Number of marks in x-dimension (columns)
c 7
X方向标志圆点的数量。
# offset of coordinate system in z-dimension [meter] (optional):
z 0
Z坐标偏移
# Rectangular border (rim and black frame) of calibration plate
标定板的矩形边框(边缘和黑色边框)
# rim of the calibration plate (min x, max y, max x, min y) [meter]:
o -0.0205 0.0205 0.0205 -0.0205
标定板的剪切边缘【-0.0205 0.0205 0.0205 -0.0205】(以标定板中心为坐标圆点)
# outer border of the black frame (min x, max y, max x, min y) [meter]:
i -0.02 0.02 0.02 -0.02
黑色边框的外边缘【-0.02 0.02 0.02 -0.02】
# triangular corner mark given by two corner points (x,y, x,y) [meter]
# (optional):
t -0.02 -0.015 -0.015 -0.02
三角形标志【-0.02 -0.015 -0.015 -0.02】
# width of the black frame [meter]:
w 0.00125
黑色边框线的宽度:0.00125米。
# calibration marks: x y radius [meter]
一下是各个矫正板黑色圆点在标定板上的坐标(共7*7个)
# calibration marks at y = -0.015 m
-0.015 -0.015 0.00125
-0.01 -0.015 0.00125
-0.005 -0.015 0.00125
0 -0.015 0.00125
0.005 -0.015 0.00125
0.01 -0.015 0.00125
0.015 -0.015 0.00125
# calibration marks at y = -0.01 m
-0.015 -0.01 0.00125
-0.01 -0.01 0.00125
-0.005 -0.01 0.00125
0 -0.01 0.00125
0.005 -0.01 0.00125
0.01 -0.01 0.00125
0.015 -0.01 0.00125
# calibration marks at y = -0.005 m
-0.015 -0.005 0.00125
-0.01 -0.005 0.00125
-0.005 -0.005 0.00125
0 -0.005 0.00125
0.005 -0.005 0.00125
0.01 -0.005 0.00125
0.015 -0.005 0.00125
# calibration marks at y = 0 m
-0.015 0 0.00125
-0.01 0 0.00125
-0.005 0 0.00125
0 0 0.00125
0.005 0 0.00125
0.01 0 0.00125
0.015 0 0.00125
# calibration marks at y = 0.005 m
-0.015 0.005 0.00125
-0.01 0.005 0.00125
-0.005 0.005 0.00125
0 0.005 0.00125
0.005 0.005 0.00125
0.01 0.005 0.00125
0.015 0.005 0.00125
# calibration marks at y = 0.01 m
-0.015 0.01 0.00125
-0.01 0.01 0.00125
-0.005 0.01 0.00125
0 0.01 0.00125
0.005 0.01 0.00125
0.01 0.01 0.00125
0.015 0.01 0.00125
# calibration marks at y = 0.015 m
-0.015 0.015 0.00125
-0.01 0.015 0.00125
-0.005 0.015 0.00125
0 0.015 0.00125
0.005 0.015 0.00125
0.01 0.015 0.00125
0.015 0.015 0.00125
注意:1.关于标定板大小选择问题:标定板的选择是以视野镜头大小为基准的。一般是能够两排即可填充视野的所有范围。譬如,80X60mm的视野范围。我们只需要一个30X30mm的标定板即可,通过移动标定板的位置,从而可以填充视野范围的四个角落。制作标定板得到摄像机外参时候,需要取至少十张标定板在视野范围不同地方的但是组合起来可以覆盖整个视野镜头的图像,经过标定可以得到摄像机外部参数。在焦距,镜头等均不改变的情况下,可以直接用所得到的摄像机外部参数来计算相机坐标系下的图像位置转换为世界坐标系下的位置坐标。