第11章 HALCON标定方法
- 格式:pptx
- 大小:2.41 MB
- 文档页数:29
halcon棋盘格标定方法
Halcon棋盘格标定是非常流行的图像标定方法。
原理是检测图像中的棋盘格角点,并估计姿势参数相机内参和外参,从而实现三维空间点和二维图像点之间的映射,识别三维物体的形状和位置。
使用Halcon可以使棋盘格标定过程变得更加容易和便捷。
Halcon的棋盘格标定实现大致可分为以下几步:
1. 确定棋盘格大小:确定棋盘格的大小是棋盘格检测的第一步,使用者需要指定曲面上每一行和每一列的棋盘格的个数,这个参数将在棋盘格检测时使用。
2. 棋盘格检测:使用halcon的函数
find_checkerboard_corners()可以根据棋盘格参数检测棋盘格角点,返回棋盘格角点像素坐标。
3. 姿势估计:使用halcon的函数pose_ransac_single_greed()即可对棋盘格角点和已知实际坐标点进行姿势估计,估计出内参矩阵和外参矩阵。
4. 标定结果验证:使用halcon的函数pose_ms_error()可以根据估计出来的内参外参矩阵来计算实际坐标点和棋盘格像素坐标点的误差和拟合度,来验证标定的结果。
通过Halcon的棋盘格标定方法,可以轻松快捷地估计出相机的内参和外参,从而开启机器视觉的应用。
halcon标定计算像素的公式
Halcon标定计算像素的公式主要涉及到相机的成像几何模型,具体如下:
1. 针孔相机模型:
假设相机内参已知,则像素坐标系中的点(x, y)可以通过以下
公式计算对应的空间坐标(X, Y, Z):
X = (x - cx) * Z / fx
Y = (y - cy) * Z / fy
其中,(cx, cy)表示像素坐标原点的偏移量,(fx, fy)表示相机的焦距。
2. 多项式畸变模型:
在针孔相机模型的基础上,考虑到图像畸变的情况,可以使用多项式畸变模型来修正像素坐标。
具体公式如下:
x_corrected = x * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6)
y_corrected = y * (1 + k1 * r^2 + k2 * r^4 + k3 * r^6)
其中,(x, y)为未校正的像素坐标,(x_corrected, y_corrected)为
校正后的像素坐标,k1、k2、k3为畸变系数,r为像素点到图
像中心的距离。
3. 其他模型:
除了针孔相机模型和多项式畸变模型,Halcon还提供了其他
的相机模型,如广角相机模型、鱼眼相机模型等。
每种相机模型对应的像素计算公式略有不同,具体使用时需要根据实际情况进行调整。
需要注意的是,以上公式仅为参考,具体的像素计算公式可以根据具体任务和实际情况进行调整和优化。
halcon自标定方法Halcon自标定方法Halcon是一种常用的机器视觉软件,用于开发和实现各种图像处理和机器视觉应用。
在机器视觉领域,相机的标定是非常重要的一步,它能够精确地确定相机的内部参数和外部参数,从而提高图像处理的精度和准确性。
Halcon提供了自标定方法,使相机的标定过程更加简便和高效。
自标定方法基于相机的特征点,通过在图像中检测和匹配特征点来确定相机的内部参数和外部参数。
下面将详细介绍Halcon的自标定方法。
1. 特征点提取在自标定过程中,首先需要从图像中提取特征点。
Halcon提供了多种特征点提取算法,如Harris角点检测、SIFT算法等。
根据实际应用场景的需求,选择合适的算法进行特征点提取。
2. 特征点匹配特征点提取后,需要进行特征点的匹配。
Halcon提供了多种特征点匹配算法,如基于描述子的匹配算法、基于相似性变换的匹配算法等。
通过计算特征点之间的相似性,确定它们之间的对应关系。
3. 相机标定特征点匹配完成后,即可进行相机的标定。
Halcon提供了基于特征点的标定方法,通过求解相机的内部参数和外部参数,得到相机的准确标定结果。
标定过程中需要提供已知的标定板,通过测量标定板上的特征点坐标和图像中对应特征点的像素坐标,计算相机的内部参数和外部参数。
4. 标定结果评估标定过程完成后,需要对标定结果进行评估。
Halcon提供了多种评估方法,如重投影误差、畸变系数等。
通过对比实际观测值和标定结果的差异,评估标定的准确性和精度。
5. 标定结果应用标定结果可以应用于各种机器视觉应用中,如图像校正、目标检测和跟踪等。
通过应用标定结果,可以提高图像处理和机器视觉算法的准确性和稳定性。
总结:Halcon的自标定方法是一种简便高效的相机标定方法,通过特征点提取和匹配,求解相机的内部参数和外部参数,从而实现对相机的准确标定。
标定结果可以应用于各种机器视觉应用中,提高图像处理和算法的准确性和稳定性。
halcon相机标定方法【实用版3篇】《halcon相机标定方法》篇1Halcon相机标定方法可以采用以下步骤:1. 确定畸变系数。
畸变系数表示相机成像过程中的畸变程度,其值介于0和0.00001之间。
在标定过程中,需要确定畸变系数。
2. 确定标定板。
标定板是用于相机标定的已知几何信息的板状物体。
标定板通常由一系列等边直角三角形组成,每条边上都有四个角,共12个点。
这些角可以用于计算相机的内部参数和畸变系数。
3. 获取标定板图像。
获取标定板图像并将其输入到Halcon中。
4. 提取角点信息。
使用Halcon中的“find_features”函数来提取标定板图像中的角点信息。
该函数将自动检测图像中的角点,并返回其坐标和类型。
5. 计算相机内部参数。
使用提取的角点信息,结合Halcon中的“find_feature_points”函数和“find_feature_matches”函数,可以计算相机的内部参数和畸变系数。
6. 验证标定结果。
为了验证标定结果,可以使用Halcon中的“check_calib”函数来检查相机内部参数和畸变系数是否正确。
以上是Halcon相机标定的基本步骤。
《halcon相机标定方法》篇2Halcon相机标定方法有:1. 传统六点标定法。
这种方法是通过一个平面上的六个点的位置来确定整个平面的几何参数,进而求得相机的内参数。
2. 棋盘格标定法。
棋盘格标定法是通过棋盘格上两组对应点的几何约束,解算出相机的畸变系数。
3. 标定板标定法。
《halcon相机标定方法》篇3Halcon相机标定方法有以下几个步骤:1. 建立棋盘格点在Halcon中,建立棋盘格点需要指定格点在图像中的实际坐标,这样可以正确计算出畸变系数。
如果只指定棋盘格在图像中的尺寸和数量,那么在畸变计算时会返回默认的(通常是不可靠的)畸变系数。
建立棋盘格点的方法如下:`2x2 to picture :诤友棋盘格(squareSize:[20,20], gridNum:25)`2. 确定相机位置和方向这里有两种方法:方法一:建立一个动态的目标,不断改变目标与相机的距离和角度,然后计算目标的成像位置,从而得到相机的位置和方向。
halcon标定例子Halcon标定是一种用于机器视觉系统中相机和图像采集设备的校准方法。
通过标定,可以获得相机的内部参数和外部参数,从而提高图像处理和计算机视觉系统的精度和稳定性。
下面是十个关于Halcon标定的例子:1. Halcon标定的基本原理Halcon标定是通过采集一系列已知位置和姿态的标定板图像,从而计算出相机的内部参数和外部参数。
这些参数可以用于图像校正、三维重建等应用。
2. Halcon标定的步骤Halcon标定的主要步骤包括:选择标定板、采集标定图像、提取标定板角点、计算相机参数、优化标定结果等。
3. Halcon标定的精度评估Halcon标定的精度可以通过重投影误差来评估,即将标定板上的角点投影到图像上,然后计算投影点与实际角点之间的距离。
4. Halcon标定的误差来源Halcon标定的误差来源主要包括相机畸变、标定板姿态误差、标定板角点检测误差等。
这些误差会影响标定结果的精度。
5. Halcon标定的应用场景Halcon标定广泛应用于机器视觉系统中的目标检测、定位、测量等任务。
通过标定,可以提高系统的测量精度和稳定性。
6. Halcon标定的优化方法Halcon标定可以通过优化算法来提高标定结果的精度。
常用的优化方法包括非线性最小二乘法、Bundle Adjustment等。
7. Halcon标定的注意事项在进行Halcon标定时,需要注意选择合适的标定板、保证标定板的平整度、正确设置相机参数等。
8. Halcon标定的挑战和解决方案Halcon标定在实际应用中可能面临光照变化、相机运动等挑战。
针对这些问题,可以采用多视角标定、动态标定等方法来解决。
9. Halcon标定的未来发展趋势随着机器视觉技术的不断发展,Halcon标定也在不断演进。
未来的发展趋势包括更精确的标定方法、更高效的标定算法等。
10. Halcon标定的局限性虽然Halcon标定可以提高机器视觉系统的精度和稳定性,但仍然存在一些局限性,如对标定板的要求较高、对标定图像的要求较严格等。
Halcon-双目视觉系统标定1.get_image_pointer1(Image: : : Pointer, Type, Width, Height)返回第一通道的点,图像数据类型,图像尺寸。
2.disp_image(Image : : WindowHandle : )在输出窗口显示灰度图像3.visualize_results_of_find_marks_and_pose (ImageL, WindowHandle1, RCoordL, CCoordL, StartPoseL, StartCamParL)内部函数,显示初步标定的坐标系和MARKS中心,MARKS中线用十字线标出。
4.set_calib_data_observ_points( : : CalibDataID, CameraIdx, CalibObjIdx, CalibObjPoseIdx, Row, Column, Index, Pose : ) 储存以点为基础的标定观测值,将观测值储存与标定数据句柄中。
5.calibrate_cameras( : : CalibDataID : Error)根据标定数据模型中的值标定摄像机。
6.get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName : DataValue)查询储存或计算得到的标定模型中的数据。
7.write_cam_par( : : CameraParam, CamParFile : )把相机内参数写入TXT文件8.write_pose( : : Pose, PoseFile : )把相机的位姿写入TXT文件9.gen_binocular_rectification_map( : Map1, Map2: CamParam1, CamParam2, RelPose, SubSampling, Method, MapType: CamParamRect1, CamParamRect2, CamPoseRect1, CamPoseRect2, RelPoseRect)把相机参数和姿态作为输入,输出为校正图像和矫正后的参数和姿态。
相机标定1 相机标定基本原理1.1 相机成像模型目前大多数相机模型都是基于针孔成像原理建立的,因为针孔成像原理简单,并且能满足建模的要求。
除此之外还有基于应用歪斜光线追踪法和近轴光线追踪法的成像模型[1]。
针孔成像虽然已经展示出了相机的成像原理,但是由于针孔成像是理想的物理模型,没有考虑相机本身的尺寸、镜头与相机轴心的偏斜等因素的影响,因此精度很低,不能满足工业机器视觉的要求。
为了使相机模型能高精度的反应相机的实际成像过程,需要再针孔成像模型的基础上考虑镜头畸变等的因素。
图1 针孔成像基于针孔成像原理建立的相机的成像模型,如下图所示。
在相机的成像模型中,包含有几个坐标系分别是世界坐标系、相机坐标系、图像坐标系,相机的成像过程的数学模型就是目标点在这几个坐标系中的转化过程。
图2 针孔成像模型(1)世界坐标系(X w,Y w,Z w),就是现实坐标系,是实际物体在现实世界中的数学描述,是一个三维的坐标空间。
(2)摄像机坐标系(X c, Y c),以针孔相机模型的聚焦中心为原点,以摄像机光学轴线为Z c轴(3)图像坐标系:分为图像像素坐标系和图像物理坐标系为了便于数学描述将图像平面移动到针孔与世界坐标系之间。
如下图所示。
图3 将相机平面移至针孔与目标物体之间后的模型1.2 坐标系间转换从世界坐标系到相机坐标系:P(X c ,Y c ,Z c )=R(α,β,γ)∗P(X w ,Y w ,Z w )+T每一个世界坐标的对象都可以通过旋转和平移转移到相机坐标系上。
将目标点旋转θ角度,等价于将坐标系方向旋转θ。
如下图所示,是二维坐标的旋转变换,对于三维坐标而言,旋转中绕某一个轴旋转,原理实际与二维坐标旋转相同。
如果,世界坐标分别绕X ,Y 和Z 轴旋转α,β,γ,那么旋转矩阵分别为R (α),R (β),R (γ)图4 坐标旋转原理R (α)=[1000cosα−sinα0sinαcosα] (1-1) R (β)=[cosβ0sinβ010−sinβ0cosβ] (1-2)R (γ)=[cosγsinγ0−sinγcosγ0001] (1-3)总的旋转矩阵就是三者的乘积:R(α,β,γ)=R (α)∗R (β)∗R(γ)平移矩阵T =(t x ,t y ,t z ),t x ,t y ,t z 是世界坐标系原点与摄相机坐标系原点之间的差值。
HALCON是一个强大的机器视觉软件,它支持各种相机的标定。
单目相机标定的主要目的是完成像素坐标到世界坐标之间的转换。
此外,标定还能帮助我们进行畸变矫正和一维二维图像测量,因为相机成像后往往会产生畸变和缩放。
在HALCON中,你可以使用标定助手来完成单相机的标定。
具体的步骤如下:
1. 打开HALCON并新建一个程序。
2. 在程序编辑中输入算子gen_caltab,然后右击打开算子窗口,输入相关参数,点击确定。
这一步会生成两个文件,一个是后缀为.descr的标定板描述文件,另一个是标定板的图像文件。
3. 打开助手里的标定助手。
4. 进入到标定助手界面,更改描述文件、摄像机模型以及相机相关参数。
5. 点击标定选项卡,然后点击图像采集助手,会立刻弹出图像采集助手对话框(如果之前打开过图像采集助手,在这里就不会弹出),接下里进行相机的连接。
点击自动检测接口,可以选择halcon自带的接口或者是相机的接口。
通过以上步骤,你便可以使用HALCON对单目相机进行标定了。
请注意,这只是一个基本流程,实际操作可能需要根据你的具体需求和设备进行调整。
使用halcon相机标定初始值确定富士伺服富士伺服初始参数是0.0195,注意halcon里单位是m k是畸变系数,可以初始为0 sx和sy是相邻像元的水平和垂直距离,1/4"可以查得分别宽和高尺寸是3.2和2.4mm,用320×240去除,得到sx和sy分别是0.01mm,那么应该初始为sx=1.0e-005和sy=1.0e-005,Cx和Cy分别是图像中心点行和列坐标,可以初始化为160和120,最后两个参数是ImageWidth和ImageHeight直接就用320和240。
Halcon 摄像机标定流程摄像机分两种,一种是面扫描摄像机(Area Scan Camera),一种是线扫描摄像机(Line Scan Camera)。
准确来说,叫摄像机系统比较正确。
所谓的面扫描摄像系统是指可以通过单纯曝光取得面积影像,而线扫描摄像机,必须利用运动速度才能取得影像。
两种不同的摄像系统由于成像的过程有区别,所以标定的过程也有区别,这里仅讨论面扫描摄像系统。
流程如下:1、初始摄像机参数:startCamPar:=[f,k,Sx,Sy,Cx,Cy,NumCol,NumRow]f 焦距k 初始为0.0Sx 两个相邻像素点的水平距离Sy 两个相邻像素点的垂直距离Cx、Cy 图像中心点的位置NumCol NumRow图像长和宽2、caltab_points读取标定板描述文件里面描述的点到X[],Y[],z[],描述文件由gen_caltab生成。
3、fin_caltab找到标定板的位置4、find_marks_and_pose 输出标定点的位置和外参startpose5、camera_calibration输出内参和所有外部参数到第五步时,工作已经完成了一半,计算出各个参数后可以用map_image来还原形变的图像或者用坐标转换参数将坐标转换到世界坐标中。
halcon标定计算像素的公式摘要:1.HALCON 相机标定的概念和方法2.HALCON 标定计算像素的公式3.实际应用和优势4.总结正文:一、HALCON 相机标定的概念和方法HALCON 是一种广泛应用于工业领域的机器视觉软件库,它能够帮助用户快速构建图像处理和分析系统。
在实际应用中,由于摄像头拍出来的原始图片存在畸变,我们需要通过标定来矫正这种畸变。
标定分为内参和外参,内参和相机本身的材质等有关,和其它无关,正常情况下只需标定一次即可。
外参和位姿(摄像头和成像平面的相对位置)有关,每次改变都需要重新标定。
二、HALCON 标定计算像素的公式在HALCON 中,标定计算像素的公式主要包括以下几个部分:1.畸变校正:通过设置相机内部参数(如焦距、畸变、像素尺寸等),可以对原始图像进行畸变校正,从而减少图像畸变。
2.创建标定板:在HALCON 中,需要创建一个标定板,用于设置标定板的数据,包括标定板的尺寸、标定板的网格点等。
3.设置相机内部参数的初始值:不同镜头的初始值可能不同,需要根据实际情况设置。
4.计算像素当量:通过放置一个参考物,可以计算出像素当量,从而构建XY 世界坐标系,用于测量、定位等应用。
三、实际应用和优势HALCON 的自标定算子可以在不用标定板的情况下,标定出相机内参(无焦距),相对于多幅标定无法获取相机的外参。
这样设备在现场更容易操作、维护。
此外,HALCON 的自标定算子具有速度快、精度高等优势,可以有效地提高图像处理的准确性和效率。
四、总结总之,HALCON 标定计算像素的公式是一种高效、准确的图像处理方法,它可以帮助用户快速地进行图像标定,提高图像处理的精度和速度。
详解Halcon相机标定相机标定简介首先镜头有畸变,也就是说照出的图像与实际不符产生了形变。
即使工业镜头也是有千分之几的畸变率的。
上个图告诉大家畸变这个图里,第一个图就是我们相机下的真实的形状,后边两个就是照出来有畸变的图片。
其次镜头与相机无论你的机械结构精度多高,也不容易或者说没办法将相机安装的特别正,那相机安装不正也是会导致误差的。
大家想知道具体数学模型的话可以搜一下相机标定的理论方面的知识,我侧重怎么做。
标定就是把上述两个东西转化成正常的。
无论是在图像测量或者机器视觉应用中,相机参数的标定都是非常关键的环节,其标定结果的精度及算法的稳定性直接影响相机工作产生结果的准确性。
深度说明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并非只能使用专用标定板,也可以使用自定义标定板就可以进行标定。
Halcon标定文件的生成Halcon标定文件的生成图一Halcon标定文件的生成,需要有以下几个步骤:1.创立一个标定数据模板,由create_calib_data算来完成。
2.指定相机的类型,初始化相机部参数,由set_calib_data_cam_param算子来完成。
3.指定标定板的描述文件,由set_calib_data_calib_object算子完成。
4.收集观察数据,有算子set_calib_data_observ_points完成。
也就是收集标定板上圆点的中心坐标,跟各个校正板的位置姿态。
5.配置校正过程。
由算子set_calib_data完成。
6.将数据整合进展标定计算。
calibrate_cameras7.获得标定参数。
get_calib_data8.记录标定参数,write_cam_parStartCamPar := [0.016, 0, 0.0000074, 0.0000074, 326, 247, 652, 494]解释一下这个数组的意思。
面阵相机有14或18个参数〔根据想相机的畸变模式〕,对于线阵相机有17个参数。
这些参数可以分开为部相机参数、外部相机参数。
面阵相机〔division模式〕:Focus〔焦距〕:远焦镜头镜头焦距的长度Kappa:扭曲系数Sx,Sy:两像素间距Cx,Cy:中心点坐标Whith,Height:图像的宽高面阵相机〔polynomia模式〕:Focus〔焦距〕:远焦镜头镜头焦距的长度K1, K2, K3, P1,P2:扭曲系数Sx,Sy:两像素间距Cx,Cy:中心点坐标Whith,Height:图像的宽高线阵相机不做具体介绍Halcon标定板规格2011-12-23 12:5668人阅读评论(1)收藏举报图一:30*30 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:30mm*30mm边框长度:28.125mm*28.125mm 即:黑色边框线宽为一个圆点半径〔0.9375〕黑色圆点半径:0.9375mm圆点中心间距: 3.75mm裁剪宽度:30.75mm*30.75mm 即:由黑色边框向外延伸0.375mm边角:由黑色外边框向缩进一个中心边距的长度40*40 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:40mm*40mm边框长度:37.5mm*37.5mm 即:黑色边框线宽为一个圆点半径〔0.125〕黑色圆点半径:0.125mm圆点中心间距:5mm裁剪宽度:21mm*21mm 即:由黑色边框向外延伸0.5mm边角:由黑色外边框向缩进一个中心边距的长度50*50 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:50mm*50mm边框长度:46.875mm*46.875mm 即:黑色边框线宽为一个圆点半径〔1.5625〕黑色圆点半径: 1.5625mm圆点中心间距: 6.25mm裁剪宽度:51.25mm*51.25mm 即:由黑色边框向外延伸0.625mm边角:由黑色外边框向缩进一个中心边距的长度60*60 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:60mm*60mm边框长度:56.25mm*56.25mm 即:黑色边框线宽为一个圆点半径〔1.875〕黑色圆点半径: 1.875mm圆点中心间距:7.5mm裁剪宽度:61.5mm*61.5mm 即:由黑色边框向外延伸0.75mm边角:由黑色外边框向缩进一个中心边距的长度Halcon如何制作标定板分类:Halcon2011-12-23 12:51151人阅读评论(2)收藏举报图1上图即为我自行制作的标定板的图样。
Halcon 标定板制作方法
•只看楼主倒序阅读发布于:2013-07-23 08:32
一、Halcon标定板标准文件制作
利用Halcon软件自制标定板。
程序命令:gen_caltab
该命令可以制作所需的标定板参数文件Caltab.descr和标定板图像文件Caltab.ps。
按确认后生成的命令gen_caltab (9, 9, 0.015, 0.5, 'caltab.descr', 'caltab.ps')
Caltab.ps文件可以用Photoshop打开。
图片如附录
图像尺寸的计算方式:按上述文件参数为标定板的点阵式9*9的,每个点之间的间距是
0.015米,原点直径与每个点之间距离的比值为0.5。
最后两个文件时输出,可以通过后面的文件夹符号来改变存储位置。
或者用./’caltab.descr’的方式存在当前目录下。
标定板黑边外延到黑边外延的距离计算式为:(Xnum+1)*MarkDist*1000
本文参数导出的标定板尺寸为(9+1)*0.015*1000=150mm 所以我们标定板为
150mm*150mm的。
但是算上白边的整个宽度为(Xnum+1)*MarkDist*1000*(1+0.0201)
图片:111.jpg。
Halcon单相机标定板标定⾸先得到相机的内参gen_cam_par_area_scan_division (0.012, 0, 0.00000375, 0.00000375, 640, 480, 1280, 960, StartCamPar)普通的畸变:’area_scan_division’ [’area_scan_division’, Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight⾼精度畸变(多项式⼦):’area_scan_polynomial’ [’area_scan_polynomial’, Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight然后建⽴标定对象:create_calib_data ('calibration_object', 1, 1, CalibDataID)//建⽴标定对象set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)//设置相机的参数set_calib_data_calib_object (CalibDataID, 0, 'calplate_80mm.cpd')//设置标定板的⽂件//查找标定板NumImages := 7for I := 1 to NumImages by 1read_image (Image, ImgPath + 'calib_image_' + I$'02d')dev_display (Image)find_calib_object (Image, CalibDataID, 0, 0, I, [], [])get_calib_data_observ_contours (Caltab, CalibDataID, 'caltab', 0, 0, I)get_calib_data_observ_points (CalibDataID, 0, 0, I, Row, Column, Index, StartPose)//获取标定板的位姿dev_set_color ('green')dev_display (Caltab)dev_set_color ('red')disp_circle (WindowHandle, Row, Column, gen_tuple_const(|Row|,1.5))endfor//纠正实际世界坐标位姿set_origin_pose (Pose, 0, 0, 0.002, Pose)//由于标定板的厚度是0.02,所以Z平移到相机坐标需要加上0.02//标定相机calibrate_cameras (CalibDataID, Errors)//标定相机get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)//得到相机标定后的相机内参,这个内参包含了畸变参数get_calib_data (CalibDataID, 'calib_obj_pose', [0,1], 'pose', Pose)//以第⼀张图作为参考平⾯,得到参考平⾯的坐标位姿//坐标转换image_points_to_world_plane (CamParam, Pose, Row, Col, 'mm', X1, Y1)//将相机平⾯映射到实际坐标位置位姿:描述是世界坐标转换到相机坐标的旋转平移参数,也就是该点在相机坐标系下的位姿。
halcon手眼标定例程详解Halcon手眼标定例程介绍本文将详细解释Halcon手眼标定例程的相关内容。
手眼标定是一种重要的计算机视觉技术,用于确定相机和机器人末端执行器之间的关系,从而实现准确的机器人视觉定位和姿态控制。
步骤以下是进行Halcon手眼标定的典型步骤:1.提前准备:确保相机、机器人和标定物之间存在良好的通信和连接。
确定标定物的大小和形状,选择合适的标定方法。
2.数据采集:在机器人的工作空间内,通过控制机器人探针或相机进行一系列的位姿采集。
位姿采集应尽可能覆盖工作范围内的不同姿态。
3.数据处理:将采集到的位姿数据导入Halcon软件中,使用相应的图像处理算法提取特征点,并关联每个特征点对应的机器人末端执行器位姿。
4.标定计算:通过使用Halcon的标定工具,根据采集到的位姿数据计算出相机和机器人末端执行器之间的变换矩阵。
5.验证和调试:使用标定得到的变换矩阵进行机器人视觉定位和姿态控制,进行验证和调试,确保标定结果的准确性和可靠性。
6.维护和更新:当环境、设备或应用需求发生变化时,需要重新进行手眼标定。
定期维护和更新手眼标定以确保系统的精度和性能。
注意事项在进行Halcon手眼标定时,需要注意以下几点:•标定物的合适性:标定物应具有高对比度、明确的特征和稳定的形状,以便于特征点的提取和匹配。
•位姿采集的准确性:机器人末端执行器位姿采集应准确无误,采集时要注意避免姿态重叠或重复采集的情况。
•数据处理的稳定性:在处理位姿数据时,要注意选择合适的图像处理算法和参数,保证特征点的稳定性和准确性。
•标定计算的可靠性:使用Halcon标定工具时,要选择合适的标定算法和参数,并进行恰当的结果验证和分析,确保标定结果的可靠性和准确性。
•维护和更新的及时性:定期检查和更新手眼标定,特别是在环境、设备或应用发生变化时,要及时进行标定更新,以确保系统的稳定性和性能。
结论Halcon手眼标定例程是实现机器人视觉定位和姿态控制的重要工具。
Halcon标定步骤Halcon标定步骤1.设置相机内部参数的初始值StartCamPar := [0.016,0,0.0000074,0.0000074,326,247,652,494]set_calib_data_cam_param (CalibDataID, 0, 'area_scan_division', StartCamPar)1.1 相机型号(1)⾯阵(2)线阵1.2 参数设置(这⾥只讲⾯阵相机)(1)Division畸变模型CameraParam:[Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight](2)Polynomial 畸变模型CameraParam:[Focus, K1, K2, K3, P1, P2, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]注:当镜头为远⼼镜头时,Focus=0;1.3 畸变类型的选择Division畸变模型只适⽤于进度要求不是很⾼,标定图⽚数量较少的情况;Polynomial 畸变模型对镜像畸变和切向畸变都校正,精度较⾼,花费时间长。
1.4 标定时个参数值的确定技巧Focus f:镜头的标称焦距, e.g., 0.016 m.;对于远⼼镜头为0.κ: ⼀般去0.0Or:K1, K2, K3,P1, P2:可全部初始化为0Sx: 由CCDCMOS确定建议取值如下:Full image (640*480) Subsampling (320*240)1/3"-Chip 0.0000055 m 0.0000110 m1/2"-Chip 0.0000086 m 0.0000172 m2/3"-Chip 0.0000110 m 0.0000220 mSy: 由CCDCMOS确定建议取值如下:for example:Full image (640*480) Subsampling (320*240)1/3"-Chip 0.0000055 m 0.0000110 m1/2"-Chip 0.0000086 m 0.0000172 m2/3"-Chip 0.0000110 m 0.0000220 mCx and Cy: 光⼼坐标初始值,建议取值如下:for example:Full image (640*480) Subsampling (320*240)Cx 320.0 160.0Cy 240.0 120.0ImageWidth,ImageHeight:有实际图⽚⼤⼩来初始化该值for example:Full image (640*480) Subsampling (320*240)ImageWidth 640 320ImageHeight 480 2402.标定板初始化CaltabName := 'caltab_30mm.descr'//标定板描述⽂件set_calib_data_calib_object (CalibDataID, 0, CaltabName)3.创建数据模型create_calib_data ('calibration_object', 1, 1, CalibDataID)4.获取标定图⽚相机拍摄不同位姿下图⽚8-15张,拍摄图⽚时标定板尽量覆盖整个视场(标定板要根据⼯作距离、视场⼤⼩定制);拍摄图⽚上的圆直径不得⼩于10个像素5.加载所有图像,寻找标定板区域,确定圆⼼,将结果加载到组元中for I := 1 to NumImages by 1... acquire image ...find_caltab (Image, Caltab, CaltabName, SizeGauss, MarkThresh, MinDiamMarks)find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, StartThresh,DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoord, CCoord, StartPose)set_calib_data_observ_points (CalibDataID, 0, 0, I, RCoord, CCoord, 'all', StartPose)endfor下⾯将Halcon中提取⽬标点的⼤致原理说⼀下:⾸先find_caltab 算⼦对图像⾼斯滤波(核⼤⼩为SizeGauss),接着阈值分割(与之⼤⼩为MarkThresh)将标定板的区域找出来,find_marks_and_pose 算⼦对区域中的圆进⾏分割,找到圆的个数,周长,坐标位置等应该和标定板描述⽂件中的⼀致,否则会⾃动调整StartThresh,使得StartThresh按照DeltaThresh步长减⼩到MinThresh,知道找到准确的圆⼼。
HALCON相机内外参标定**********************************相机内外参标定步骤****************************************1.caltab_points:从标定板中读取marks中⼼坐标,该坐标值是标定板坐标系统⾥的坐标值,该坐标系统以标定板为参照,向右为X正,下为Y正,垂直标定板向下为Z正。
该算⼦控制输出为标定板中⼼3D坐标。
2.create_calib_data:创建Halcon标定数据模型。
输出⼀个输出数据模型句柄。
3.set_calib_data_cam_param:设定相机标定数据模型中设置相机参数的原始值和类型。
设置索引,类型,以及相机的原始内参数等。
4.set_calib_data_calib_object:在标定模型中设定标定对象。
设定标定对象句柄索引,标定板坐标点储存地址。
5.find_caltab:分割出图像中的标准标定板区域。
输出为标准的标定区域,控制6.find_marks_and_pose:抽取标定点并计算相机的内参数。
输出MARKS坐标数组,以及估算的相机外参数。
即标定板在相机坐标系中的位姿,由3个平移量和3个旋转量构成。
7.set_calib_data_observ_points(:: CalibDataID, CameraIdx, CalibObjIdx,CalibObjPoseIdx, Row, Column, Index, Pose: )收集算⼦6的标定数据,将标定数据储存在标定数据模型中。
输⼊控制分别为标定数据模型句柄,相机索引,标定板索引,位姿索引,⾏列坐标,位姿。
8.calibrate_cameras( : : CalibDataID: Error) 标定⼀台或多台相机,依据CalibDataID中的数据。
控制输出平均误差。
9.get_calib_data( : : CalibDataID, ItemType, ItemIdx, DataName: DataValue) 获得标定数据。