目录
|
最近有的人私信我,说看了我的《HALCON相机标定相机内参相机外参》https://blog.csdn.net/cashmood/article/details/100089295一文后,还是有不懂的地方,这里给大家做一个深入的教程。
相机标定简介
首先镜头有畸变,也就是说照出的图像与实际不符产生了形变。即使工业镜头也是有千分之几的畸变率的。
上个图告诉大家畸变

这个图里,第一个图就是我们相机下的真实的形状,后边两个就是照出来有畸变的图片。
其次镜头与相机无论你的机械结构精度多高,也不容易或者说没办法将相机安装的特别正,那相机安装不正也是会导致误差的。大家想知道具体数学模型的话可以搜一下相机标定的理论方面的知识,我侧重怎么做。
标定就是把上述两个东西转化成正常的。
无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。
深度说明
1、相机标定参数介绍

内参:确定摄像机从三维空间到二维空间的投影关系。
针孔相机(FA镜头相机)模型为6个参数(f,kSx,Sy,Cx,Cy);远心镜头相机模型为5个参数(f,Sx,Sy,Cx,Cy);线阵相机为11个参数(f,k,Sx,Sy,Cx,Cy,Width,Highth,Vx,Vy,Vz)。
其中:
f为焦距;
k表示径向畸变量级。如果k为负值,畸变为桶形畸变,如果为正值,那么畸变为枕形畸变。
Sx,Sy是缩放比例因子。对于针孔摄像机(FA镜头)表示图像传感器水平和垂直方向上相邻像素之间的距离,初始值与真实值越接近计算速度越快。对于远心摄像机模型,表示像素在世界坐标系中的尺寸。
Cx,Cy是图像的主点,对于针孔相机,这个点是投影中心在成像平面上的垂直投影,同时也是径向畸变的中心。对于远心摄像机模型,只表示畸变的中心。
Vx,Vy,Vz:线阵相机必须与被拍摄物体之间有相对移动才能拍摄到一幅有用的图像。这是运动向量。Sx,Sy对于线阵相机是相邻像元的水平和垂直距离。
2、标定板详细介绍
问题1:halcon是否只能使用halcon专用的标定板?
halcon提供了简便、精准的标定算子与标定助手,这在实际使用中极大地方便了使用者
在halcon中有两种标定方式:
halcon自带例程中出现的,用halcon定义的标定板,如下图:

用户自定义标定板,用户可以制作任何形状、形式的标定板,如下图:

所以,halcon并非只能使用专用标定板,也可以使用自定义标定板就可以进行标定。
问题2:halcon标定板如何生成?
使用gen_caltab算子来制作一个标定板
gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )
XNum:每行黑色标志圆点的数量
YNum:每列黑色标志圆点的数量
MarkDist:两个就近黑色圆点中心之间的距离,单位是m
DiameterRatio:黑色圆点直径与两圆点中心距离的比值
CalPlateDescr:标定板描述文件的文件路径
CalPlatePSFile :标定板图像文件路径,可以用ps打开
示例:
gen_caltab( 7, 7, 0.1, 0.5, ‘caltab.descr’, ‘caltab.ps’)
大家可以自己思考一下每个参数的含义
行数:7
列数:7
黑色圆点半径:0.05m
圆点中心间距:0.1m
问题3:halcon标定板如何摆放,拍照数量有无限制?
并非拍照标定数量越多,越能取得高的精度,halcon建议拍摄数量在9-16张,并且对摆放位置做了建议。标定板占标定视野的1/3-1/4,对于标定板成像灰度值应大于128,以便顺利提取。如下图所示:

标定步骤
注意只介绍面阵相机,其他的相机和面阵道理想同。
1、设置相机内部初始值
使用set_calib_data_cam_param 算子设置相机内部初始值
set_calib_data_cam_param( : : CalibDataID, CameraIdx, CameraType, CameraParam : )
CalibDataID:标定句柄
CameraIdx:相机序号
CameraType:相机模型种类;面阵相机Division畸变模型’area_scan_division’;polynomial畸变模型’area_scan_polynomial’。。。。。。
CameraParam :与相机模型种类相对应的参数;面阵相机Division畸变模型’area_scan_division’([Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]);polynomial畸变模型’area_scan_polynomial’([Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight])。。。。。。
相机模型种类与相机参数对应表:

畸变类型选择与参数确定技巧
畸变模型选择
division畸变模型只适用于精度不高的,标定图片数量较少的情况:
polynomial畸变模型对径向畸变、切向畸变都进行矫正,精度较高,花费时间较长。
参数确定技巧
Focus代表焦距,按照我们镜头参数进行填写,远心镜头填写0
Kappa为畸变大小,因为在标定之前,所以默认填写0
Sx, Sy像元的宽高填写相机的像元尺寸。可以查相机手册,或者咨询相机厂家。
Cx, Cy填写图像的中心坐标
ImageWidth, ImageHeight填写图像的宽高
2、标定板初始化
使用算子 set_calib_data_calib_object
例如:
CaltabDescr := ‘caltab_100mm.descr’
set_calib_data_calib_object (Cal

本文详细介绍了使用Halcon进行相机标定的过程,包括相机内外参数的解释、标定板的制作与使用、标定步骤及代码示例,旨在帮助读者理解和掌握相机标定的技术细节。

323

被折叠的 条评论
为什么被折叠?



