halcon单相机标定详细说明
- 格式:pdf
- 大小:1.58 MB
- 文档页数:16
Halcon单相机标定和测量示例相机标定有很多方式:九点标定法、棋盘格标定法、圆形阵列标定法;本次采用圆形阵列标定法。
1Halcon相机标定1.1标定板描述文件编制此次相机标定采用的是网购的标定板(直接在万能的某宝搜halcon标定板),如图1。
采购的时候卖家会提供标定板的相应参数,如图2。
图1标定板图 2 标定板参数用halcon标定助手标定的时候需要用到标定板的描述文件,此文件可以用gen_caltab算子自己编制。
如下为函数说明:gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : ) 函数说明:创建一个标定文件和相应的脚本文件。
函数参数:Xnum:输入X方向标记(圆点)的数量,Xnum>1;Ynum:输入Y方向标记(圆点)的数量,Ynum>1;MarkDist:标记圆圆心间距离,单位“m”;(我看过一个资料翻译为标记点大小,差点被坑死)DiameterRatio:两标记点距离和标记直径的比值,默认:0.5。
0<DiameterRatio<1.0;CalPlateDescr:输入要保存的标定文件(此文件保存路径在算子窗口可更改),默认值: 'caltab.descr',参考: 'caltab.descr', 'caltab_100mm.descr', 'caltab_10mm.descr', 'caltab_200mm.descr', 'caltab_30mm.descr';CalPlatePSFile :标定板图像文件的文件路径(此文件保存路径在算子窗口可更改),默认: 'caltab.ps',后缀:ps。
此算子“XNum, YNum, MarkDist, DiameterRatio”这四个参数根据图2所示的标定板参数设置。
Halcon算子笔记3_相机标定+矫正图像Map_image.hdev: 矫正图像*关闭窗口dev_close_window ()dev_close_window ()*打开指定大小、颜色背景的窗口dev_open_window (0, 0, 768/2, 576/2, 'black', WindowHandle1)dev_update_pc ('off')dev_update_window ('off')dev_update_var ('off')dev_update_time ('off')dev_set_draw ('margin')dev_set_line_width (3)** Calibrate the camera.(标定相机)步骤一** 标定板描述文件CaltabName := 'caltab_big.descr'* make sure that the file 'CaltabDescrName' is in the current directory,* the HALCONROOT/calib directory, or use an absolut path *初始相机参数:焦距、畸变系数Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight StartCamPar := [0.008,0,0.0000086,0.0000086,384,288,768,576]*物体在空间坐标系中的位姿数组NStartPose := []*行角点数组NRow := []*列角点数组NCol := []*X、Y、Z从标定表文件获取计算值caltab_points (CaltabName, X, Y, Z)*创建空的图像元组gen_empty_obj (Images)*图像的数目NumImages := 10*接下来for循环,依次读取、处理NumImages张图像for I := 1 to NumImages by 1*读取图像:Image得到图像数据read_image (Image, 'calib/calib-3d-coord-'+I$'02d')*将单个Image加入元组Images中concat_obj (Images, Image, Images)*显示Imagedev_display (Image)*在图像中找到标定板的区域:图像,标定板描述文件,滤波核大小,二值化值find_caltab (Image, Caltab, CaltabName, 3, 112, 5)*设置区域颜色:绿色dev_set_color ('green')*显示图像中标定板的区域dev_display (Caltab)*(核心函数:搜寻图像的原始点)在图像中找到标定板的各个角点坐标和初始位姿find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, 128, 10, 18, 0.9, 15, 100, RCoord, CCoord, StartPose) *设置颜色:红色dev_set_color ('red')*在窗口上圆形标记角点的位置disp_circle (WindowHandle1, RCoord, CCoord, gen_tuple_const(|RCoord|,1.5))*一个图像位姿加入位姿元组NStartPose := [NStartPose,StartPose]*所有图像角点行坐标数组相连NRow := [NRow,RCoord]*所有图像角点列坐标数组相连NCol := [NCol,CCoord]endfordev_update_time ('on')disp_continue_message (WindowHandle1, 'black', 'true')stop ()** Calculate the mapping.(计算带矫正信息的图像)步骤二**(核心函数)标定相机参数,对步骤一的数据进行计算处理camera_calibration (X, Y, Z, NRow, NCol, StartCamPar, NStartPose, 'all', CamParam, NFinalPose, Errors)*生成空的对象:包含矫正映射信息的图像gen_empty_obj (Maps)*for循环一次处理一组对应的图像for NumImage := 1 to NumImages by 1* Obtain the pose of the calibration table.*获取标定出来的位姿3DPose := NFinalPose[(NumImage-1)*7:(NumImage-1)*7+6]*设置新的原始3D位姿set_origin_pose (Pose, -1.125, -1.0, 0, PoseNewOrigin)*(核心函数)生成带矫正映射信息的图像MapSinglegen_image_to_world_plane_map (MapSingle, CamParam, PoseNewOrigin, 768, 576, 900, 800, 0.0025, 'bilinear')*将单张图像加入图像元组Mapsconcat_obj (Maps, MapSingle, Maps)endfordisp_continue_message (WindowHandle1, 'black', 'true')stop ()*代码到此处:有了NumImages张标定的原图+ NumImages张带矫正映射信息的图像,*接下来While循环,一张一张的矫正图像** Map the images.(矫正图像)步骤三**窗口设置dev_open_window (0, 391, 900/2, 800/2, 'black', WindowHandle2)Button := 0NumImage := 1while (Button # 1)dev_set_window (WindowHandle1)dev_set_part (0, 0, 575, 767)dev_clear_window ()*从图像元组中选择一张图像select_obj (Images, Image, NumImage)*显示选择的图像dev_display (Image)disp_message (WindowHandle1, 'Press any mouse button to stop', 'image', -1, -1, 'black', 'true')*选择对应位置的带矫正信息的图像select_obj (Maps, MapSingle, NumImage)*(核心函数)矫正图像:原图,带矫正信息图,矫正结果图map_image (Image, MapSingle, ImageMapped)*以下为窗口、循环之类的处理,与图像处理没什么关系dev_set_window (WindowHandle2)dev_set_part (0, 0, 799, 899)dev_clear_window ()dev_display (ImageMapped)NumImage := NumImage + 1if (NumImage > NumImages)NumImage := 1endifdev_error_var (Error, 1)dev_set_check ('~give_error')get_mposition (WindowHandle1, R, C, Button)dev_error_var (Error, 0)dev_set_check ('give_error')if (Error#H_MSG_TRUE)Button := 0endifif (Button)breakendifendwhiledev_set_window (WindowHandle2) dev_close_window ()。
基于HALCON的双目立体视觉系统实现摘要双目立体视觉的研究一直是机器视觉中的热点和难点。
使用双目立体视觉系统可以确定任意物体的三维轮廓,并且可以得到轮廓上任意点的三维坐标。
因此双目立体视觉系统可以应用在多个领域。
本文将主要介绍如何基于HALCON实现双目立体视觉系统,以及立体视觉的基本理论、方法和相关技术,为搭建双目立体视觉系统和提高算法效率提供了参考。
关键词双目视觉三维重建立体匹配摄像机标定视差双目立体视觉是机器视觉的一种重要形式,它是基于视差原理并由多幅图像获取物体三维几何信息的方法。
双目立体视觉系统一般由双摄像机从不同角度同时获得被测物的两幅数字图像,或由单摄像机在不同时刻从不同角度获得被测物的两幅数字图像,并基于视差原理恢复出物体三维几何信息,重建物体三维轮廓及位置。
双目立体视觉系统在机器视觉领域有着广泛的应用前景。
HALCON是在世界范围内广泛使用的机器视觉软件。
它拥有满足您各类机器视觉应用需求的完善的开发库。
HALCON也包含Blob分析、形态学、模式识别、测量、三维摄像机定标、双目立体视觉等杰出的高级算法。
HALCON支持Linux和Windows,并且可以通过C、C++、C#、Visual Basic和Delphi语言访问。
另外HALCON与硬件无关,支持大多数图像采集卡及带有DirectShow和IEEE 1394驱动的采集设备,用户可以利用其开放式结构快速开发图像处理和机器视觉应用软件。
一.双目立体视觉相关基本理论介绍1.1 双目立体视觉原理双目立体视觉三维测量是基于视差原理,图1所示为简单的平视双目立体成像原理图,两摄像机的投影中心的连线的距离,即基线距为b。
摄像机坐标系的原点在摄像机镜头的光心处,坐标系如图1所示。
事实上摄像机的成像平面在镜头的光心后,图1中将左右成像平面绘制在镜头的光心前f处,这个虚拟的图像平面坐标系O1uv的u轴和v轴与和摄像机坐标系的x轴和y轴方向一致,这样可以简化计算过程。
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摄像机初始参数设置StartCamParam(input_control)数阵→(真实/整数)Camer type为:'area_scan_division''area_scan_polynomial''area_scan_telecentric_division''area_scan_telecentric_polynomial''line_scan'(类型不同,参数不同)相机内部参数的初始值。
元素数量:((StartCamParam==8)| |(StartCamParam==11))| |(StartCamParam== 12)一般,初值是8个时:(f,K,Sx,Sy,Cx,Cy, ImageWidth:, ImageHeight:)类型为:area_scan_divisionf——焦距K——畸变系数(泰勒级数的第1项)Sx——x方向像元间的距离Sy——y方向像元间的距离Cx——图片x方向光心坐标(初值为ImageWidth/2)Cy——图片y方向光心坐标(初值为ImageHeight /2)ImageWidth——图片宽度ImageHeight——图片高度初值是12个时:(f,K1,K2,K3,P1,P2,Sx,Sy,Cx,Cy, ImageWidth:, ImageHeight:)K1,K2,K3——畸变系数(泰勒级数的前三项)StartThresh(input_control)数量→(整数)轮廓检测的初始阈值。
默认值:128可设值:80,96,112,128,144,160限制:StartThresh> 0DeltaThresh(input_control)数量→(整数)StartThresh减少时的步长默认值:10可设值:6,8,10,12,14,16,18,20,22限制:DeltaThresh> 0MinThresh(input_control)数量→(整数)轮廓检测的最低值。
基于Halcon的单目相机标定方法与测量实验
李晓晓;吴昊荣;孙付春;杨涛
【期刊名称】《山东工业技术》
【年(卷),期】2022()5
【摘要】机器视觉已经在现代工业自动化生产中得到了广泛应用,尤其是在三维测量领域。
物体三维空间与二维图像间的关系求解离不开相机标定,尤其是相机标定结果的优劣直接决定了机器视觉的测量精度。
通过搭建单目相机视觉系统实验平台,先分析了相机标定的工作原理,再利用Halcon软件的标定助手功能对型号为
GB050-2-7×7的圆点标定板进行相机标定,获得了相机的内参和外参。
在进一步测量实验中验证了单个特征圆点测量偏差为0.03862 mm、多个特征圆点测量平均偏差为0.05655 mm,二者测量精度都高于0.1 mm,说明了利用机器视觉进行测量能够满足常用精度需求。
【总页数】5页(P8-12)
【作者】李晓晓;吴昊荣;孙付春;杨涛
【作者单位】成都大学机械工程学院;成都大学电子信息与电气工程学院;成都农业科技职业学院机电信息学院
【正文语种】中文
【中图分类】TP249
【相关文献】
1.基于天牛须搜索算法的单目相机标定方法
2.基于稀疏字典学习的单目相机标定方法
3.基于改进粒子群算法的单目相机标定算法
4.基于Halcon的单目相机标定案例实现
5.基于Halcon深度学习和线扫相机标定的闸片剩余厚度测量
因版权原因,仅展示原文概要,查看原文内容请购买。
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九点标定原理Halcon是世界领先的机器视觉软件,被广泛应用于制造、医疗、安全监控和智能交通等领域。
其中,九点标定原理是Halcon中常用的一种标定方法。
标定是指确定相机的内参和外参,以便于机器视觉系统进行三维重建、测量、定位和识别等操作。
而九点标定原理就是在已知相机内参的情况下,通过对标定板上九个已知点的像素坐标和实际坐标进行对应,来求解相机的外参。
下面,我将详细介绍Halcon九点标定原理的具体步骤:1. 准备标定板首先,我们需要准备一个标定板。
标定板可以是黑白底纹、格子图案或者其他规则的图案,这里以黑白相间的格子为例。
标定板上需要标注出九个已知点的实际坐标。
这里建议按照“从左到右、从上到下”的顺序依次标号,方便后续计算。
2. 摄像头拍摄标定板将标定板固定在平面上,并使用相机对其进行拍摄。
需要注意的是,拍摄时应保持相机固定不动,同时注意光照条件的稳定性,以避免影响标定精度。
3. 识别标定板上的九个点使用Halcon中的find_pattern函数对标定板上的九个点进行识别。
该函数的作用是匹配标定板的模板图案,返回每个点的像素坐标以及定位误差。
4. 求解相机的外参通过对比标定板上的实际坐标和相机拍摄得到的像素坐标,使用Halcon中的calibrate_cameras函数来求解相机的外参。
该函数会返回相机的旋转矩阵和平移向量,即可确定相机在世界坐标系下的位置。
5. 验证标定结果最后,我们需要对标定结果进行验证,以确保标定精度达到要求。
通常可以使用Halcon中的project_3d_point函数将三维对象投影到图像上,并与实际拍摄的图像进行对比,来判断标定误差是否在可接受的范围内。
总结:九点标定原理是一种简单、快速、精度较高的标定方法,适用于大部分机器视觉应用。
在实际操作过程中,需要注意拍摄条件的稳定性、标定板的精度以及标定结果的验证等问题,以确保标定精度达到要求。
一.halcon单摄像机标定从今天起,每天坚持学习10-15个halcon个算子,例程序,写做视觉项目的点滴心得。
说明:In the reference manual,operator signatures are visualized in the following way: operator ( iconic input : iconic output : control input : control output )在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的标定数据,将标定数据储存在标定数据模型中。
使用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学习(二十二)摄像机标定(函数详解)TmpCtrl_AllMarkRows := []TmpCtrl_AllMarkColumns := []TmpCtrl_StartPoses := []TmpCtrl_ReferenceIndex := 0StartParameters := [0.008,0,5.2e-006,5.2e-006,640,512,1280,1024]for Index := 0 to |ImageFiles|-1 by 1read_image (Image, ImageFiles[Index])find_caltab (Image, TmpObj_PlateRegion, 'E:/calibration_description/caltab_123mm.descr', 3, 112, 5) find_marks_and_pose (Image, TmpObj_PlateRegion, 'E:/calibration_description/caltab_123mm.descr', StartParameters, 128, 10, 18, 0.9, 15, 100, TmpCtrl_MarkRows, TmpCtrl_MarkColumns, TmpCtrl_EstimatedPose)TmpCtrl_AllMarkRows := [TmpCtrl_AllMarkRows, TmpCtrl_MarkRows]TmpCtrl_AllMarkColumns := [TmpCtrl_AllMarkColumns, TmpCtrl_MarkColumns]TmpCtrl_StartPoses := [TmpCtrl_StartPoses, TmpCtrl_EstimatedPose]endforcaltab_points('E:/calibration_description/caltab_123mm.descr', TmpCtrl_X, TmpCtrl_Y, TmpCtrl_Z)camera_calibration (TmpCtrl_X, TmpCtrl_Y, TmpCtrl_Z, TmpCtrl_AllMarkRows, TmpCtrl_AllMarkColumns, StartParameters, TmpCtrl_StartPoses, 'all', CameraParameters, TmpCtrl_FinalPoses, TmpCtrl_Errors)tuple_select_range (TmpCtrl_FinalPoses, 7*TmpCtrl_ReferenceIndex, 7*TmpCtrl_ReferenceIndex + 6, CameraPose)set_origin_pose (CameraPose, 0.0, 0.0, 0.001, CameraPose)stop ()一、读入图像,函数如下list_files ('E:/calibration_image', 'files', ImageFiles)for Index := 0 to |ImageFiles|-1 by 1read_image(Image, ImageFiles[Index])endfor注释:'E:/calibration_image':为图像路径,图像文件索引是从0开始的,所以|ImageFiles|(文件数量)减去1。
基于HALCON软件的摄像机标定HALCON是一种非常强大的计算机视觉软件,可以用于许多应用领域,包括自动化、机器视觉、医学成像等。
在这些不同的领域,HALCON用户需要对摄像机进行标定,以便准确地测量和分析图像。
在本文中,我们将探讨如何使用HALCON进行摄像机标定。
摄像机标定的基本原理摄像机标定是计算机视觉中的一个重要过程。
在这个过程中,我们需要找到摄像机内部的一些参数,以便能够准确地测量对象的大小、位置和方向。
这些参数包括内部参数和外部参数。
内部参数包括焦距、畸变和像素距离等,这些参数决定了光学系统如何将世界坐标系中的点映射到图像平面上。
外部参数包括摄像机的位置和朝向,这些参数决定了摄像机如何拍摄场景。
因此,摄像机标定的目标就是确定这些参数。
摄像机标定的步骤摄像机标定通常涉及到摄像机的内部参数和外部参数,因此标定的步骤通常包括两个部分。
第一步是内部参数标定,我们需要用一些已知的三维坐标对摄像机的成像进行测量,得到这些坐标在图像中的投影。
这些点的坐标通常以像素为单位,我们可以使用极线几何或者张正友标定法等方法来求解内部参数。
第二步是外部参数标定,我们需要知道摄像机对于目标的位置和朝向。
通常我们使用标定板或者其他点来测量这些参数。
标定板通常是一个具有已知格子的图案,我们可以测量这些格子在图像中的位置,然后使用PnP算法和非线性优化等数学方法计算摄像机的位置和朝向。
HALCON摄像机标定步骤和代码接下来我们将介绍如何使用HALCON进行摄像机标定。
首先我们需要准备一些标定板或者其他特殊图案。
这些标定板通常由黑白相间的正方形组成,我们需要利用这些正方形来求解内部参数和外部参数。
1. 导入图像首先,我们需要使用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上图即为我自行制作的标定板的图样。
相机标定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标定文件的生成图一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, , , 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:56 68人阅读评论(1) 收藏举报图一:30*30 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:30mm*30mm内边框长度:* 即:黑色边框线宽为一个圆点半径()黑色圆点半径:圆点中心间距:裁剪宽度:* 即:由黑色边框向外延伸边角:由黑色外边框向内缩进一个中心边距的长度40*40 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:40mm*40mm内边框长度:* 即:黑色边框线宽为一个圆点半径()黑色圆点半径:圆点中心间距:5mm裁剪宽度:21mm*21mm 即:由黑色边框向外延伸边角:由黑色外边框向内缩进一个中心边距的长度50*50 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:50mm*50mm内边框长度:* 即:黑色边框线宽为一个圆点半径()黑色圆点半径:圆点中心间距:裁剪宽度:* 即:由黑色边框向外延伸边角:由黑色外边框向内缩进一个中心边距的长度60*60 规格的标定板的规格黑色圆点行数:7黑色圆点列数:7外边框长度:60mm*60mm内边框长度:* 即:黑色边框线宽为一个圆点半径()黑色圆点半径:圆点中心间距:裁剪宽度:* 即:由黑色边框向外延伸边角:由黑色外边框向内缩进一个中心边距的长度Halcon如何制作标定板分类:Halcon 2011-12-23 12:51 151人阅读评论(2) 收藏举报图1上图即为我自行制作的标定板的图样。
halcon不规则点的标定1. 引言在计算机视觉领域,相机标定是一个常见且关键的问题。
在实际应用中,我们常常需要准确地计算出图片中的物体在三维空间中的位置和姿态信息。
然而,由于相机镜头的畸变以及多种误差的存在,仅仅依靠单张图片是无法准确还原物体的真实位置和姿态的。
为了解决这个问题,我们需要对相机进行标定。
在本文中,我将着重讨论一种特殊情况下的相机标定问题,即halcon不规则点的标定。
2. 概述不规则点标定是指使用不规则形状的标定板进行相机标定的一种方法。
相比于常规的纸质标定板,不规则点标定板更加有利于提升标定的准确性和鲁棒性。
halcon是一个强大的机器视觉库,提供了不规则点标定的相关功能。
3. 不规则点标定的原理不规则点标定的原理基于多视角几何理论和标定板的形状信息。
不规则点标定板通常是由一些特殊设计的点组成的,这些点通常具有不同的形状和颜色。
在使用halcon进行不规则点标定时,我们需要将标定板放置在不同的位置和姿态下,通过拍摄多张图像并提取出标定板上的点的坐标信息。
通过这些坐标信息,可以利用最小二乘法或其他标定算法计算出相机的内外参数。
4. halcon不规则点标定的步骤下面是halcon不规则点标定的基本步骤:- 步骤一:选择合适的不规则点标定板,该标定板应该具有一定的形状多样性和不规则性。
- 步骤二:在不同位置和姿态下,使用相机拍摄不同角度的图像,保证标定板占据图像的足够大的比例。
- 步骤三:使用halcon提供的相关函数,从每张图像中提取出标定板上各个点的坐标信息。
- 步骤四:根据每个点在三维世界坐标系中的实际坐标和图像中的像素坐标,使用标定算法计算出相机的内外参数。
- 步骤五:利用得到的内外参数,对其他图像进行校正和测量,得到准确的三维空间位置和姿态。
5. halcon不规则点标定的优势相较于传统的纸质标定板,halcon不规则点标定具有以下几个优势:- 准确性更高:不规则点标定板能够提供更多的信息,从而提升标定的准确性。
相机标定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 是世界坐标系原点与摄相机坐标系原点之间的差值。
相机坐标系到图像坐标系X d =f X c Z c ,Y d =f Y c Z c [X d Y d ]=f Z c [X c Y c] (1-4)(1-5)图5 相机成像坐标变换原理图图像物理坐标到图像像素坐标系图形坐标系是一个二维坐标系,又分为图像像素坐标系和图像物理坐标系。
图像像素坐标系X f -Y f 是以图像左上角为原点,以图像互为直角的两个边缘为坐标轴,满足右手准则而建立的。
图像是由一个个小的像素点组成的,图像像素坐标系的横纵坐标正是以像素点为单位,用来描述图像中每一个像素点在图像中的位置。
图像物理坐标系以光轴与像平面交点为圆心建立的,图像物理坐标系的两个坐标轴分别与图像像素坐标系的坐标轴平行,并且方向相同,如图3所示。
图像物理坐标系是以毫米为单位的直角坐标系X-Y 。
用(X f ,Y f )来描述图像像素坐标系中的点,用(X d ,Y d )来描述图像物理坐标系中的点。
图像物理坐标系的原点O 在图像像素坐标系中的坐标为(C x , C y ),用dx ,dy 来表示相邻像素点中心在X 轴方向和Y 轴方向的实际物理距离,则与图像像素坐标系的转化关系为:{ X f =X d dx +C x Y f =Y d dy +C y (1-6)1.4相机畸变模型相机畸变主要分为径向畸变和切向畸变,其中径向畸变是由透镜造成的,切向畸变是由成像仪与相机透镜的不平行造成的。
针孔模型是理想透镜的成像模型,但是实际中相机的透镜不可能是理想的模型,透镜形状的非理想特征造成像点会沿径向发生畸变。
一个像点沿径向内缩叫负畸变,或桶形畸变沿径向外延叫正畸变,或枕形畸变。
这种崎变相对于光轴严格对称的,也是畸变的主要分量[2]。
(X u ,Y u )为矫正后的坐标,(X d ,Y d )是受到镜头失真影响而偏移的像平面坐标,径向径向畸变模型:X u =X d +X d (k 1r 2+k 1r 4+⋯) Y u =Y d +Y d (k 1r 2+k 1r 4+⋯) (1-7)(1-8)其中k 1,k 2,⋯为径向畸变系数,r =√X d 2+Y d 2,一般只需要考虑一阶或二阶就可以满足要求。
切向畸变模型:X u =X d +P 1X d (3X d 2+Y d 2)+2P 2X d Y d +O[(X d ,Y d )4]Y u =Y d +P 2X d (3X d 2+Y d 2)+2P 1X d Y d +O[(X d ,Y d )4](1-9) (1-10) 其中P 1和P 2为切向畸变影响系数。
图7 径向畸变图8 切向畸变图6 图像像素坐标系和图像物理坐标系1.5需要标定的参数外部参数由前面可知,摄像机的外部参数是用来描述摄像机坐标系与世界坐标系的关系,它表明摄像机在世界坐标系中的位置和方位,可用的旋转矩阵和平移向量来表示,如式一所示。
其中由于为单位正交矩阵,必须满足个正交约束,故实质上旋转矩阵只有三个独立参数,加上平移向量的三个参数,故一共有个独立的外部参数。
内部参数内部参数只与摄像机内部结构有关,而与摄像机位置参数无关,主要包括图像主点坐标(c x,c y),单个像元的高宽s x,s y,摄像机的有效焦距f和透镜的畸变失真系数k等。
摄像机的内部参数有时也可以从制造商提供的说明书中查到,但是其精确性不能满足要求,仅可作为参考。
实际应用中需要对它们进行标定。
主点坐标(c x,c y),理论上主点坐标一般位于图像中心处,但实际上由于摄像机制作和使用摄像机的镜头可转动和拆卸等原因,使得面阵安装并不能保证以透镜光轴为中心,且图像采集数字化窗口的中心不一定与光学中心重合,这就使得主点不一定在图像的帧存中心,故需要标定,,的值。
单个像元的高宽s x,s y,该数据可以在制造商提供的技术文档中查到,但是该数据不是完全准确的。
单个像元的高宽理论上应该是相等的,但是由于制造的误差,两者不可能完全相等,因此需要根据实际情况对其进行修正。
透镜的畸变失真系数前面讲到理想的透镜成像才满足线性关系,实际上透镜存在多种非线性畸变,需要根据实际情况对它们进行修正。
1.6计算方法张正友标定法、Tsai两步标定法。
参考文献:1宋旗桂. 应用歪斜光线追踪法及近轴光线追踪法于照相机校正[D]. 台湾: 国立成功大学, 2007.2 邹凤娇. 摄像机标定及相关技术研究[D]. 成都:四川大学,硕士学位论文,2005.1.7目前设备中采用过的标定方法1、目前在RFID设备、LCR设备中标定都只采用一张,忽略相机畸变。
通过图像处理,提取标定板圆心的间距除以像素值得到。
该方法得到像素X方向和Y方向采用同一距离,忽略其误差。
2、Halcon的三维标定,是halcon默认的标定方法,消除径向畸变和视角畸变,在XYZ图9 Halcon三维标定采集图像示例3、Halcon的二维标定,只在XY平面内平移和旋转标定板,采集18张图像,减小Z的影响提高标定精度实验数据:图像坐标X方向像素物理距离图像坐标Y方向像素物理距离方法一15.5618um 15.5618um方法二15.7575um 15.7308um方法三采用方法一每个像素距离与方法二有0.2um的差距,当距离较小时,这个误差可能表现的并不明显,在目前的设备中基本能满足要求。
根据方法二知道X方向与Y方向像素物理差值是0.027um。
存在的问题:1、目前标定板相对视野范围显得有点大,会降低标定的精度。
考虑自己制作标定板,打印出来,但是遇到问题是,打印出来标定板大小与我设计的标定板大小有些许差距,可能是由于文件格式转换过程中导致像素改变使打印的大小出现偏差。
2、因尽量减小光圈,提高景深,提升标定精度。
后期采图时,尽量减小光圈。
2 使用Halcon标定助手进行标定2.1 标定描述机器视觉本质就是通过图像来获取三维世界的信息,然后基于该信息进行相应的图像处理手段,从中获取我们想要的信息。
标定的过程实际是建立图像世界与三维世界位姿的关系,只有准确地建立了该关系,才能从图像准确得知三维世界的真实状态。
但是镜头在拍摄物体时存在成像的畸变,镜头成像的畸变导致图像不能完全地反映真实的世界,对图像的后续处理会产生干扰。
尤其对于定位和检测,需要更高精度的矫正。
镜头成像的畸变分为径向畸变和切向畸变,相对切向畸变而言,径向畸变对图像影响较大,而径向畸变分为枕形畸变(Pincushion Distortion)和桶形畸变(Barrel Distortion),如图3所示。
因此,相机标定要矫正镜头的畸变,然后获取相机的内部参数和外部参数,建立起图像与三维世界的联系。
图3 枕形畸变与桶形畸变一个成功的标定,至少需要一个知道其精确尺寸的标定板。
在标定前需要采集不同姿态的标定板图像,确保每张图像都完整的包含了标定板。
标定图像的质量,很大程度上决定了标定是否能成功2.2 标定板标定的方法从原理上主要分为三大类:线性标定、非线性标定和二次标定。
使用的标定板有棋盘格也有原点阵列,如图4所示。
(a)棋盘格(b)原点阵列图4 标定板但是,halcon并非必须使用其特制的标定板才能进行相机标定,但是如果要使用Halcon 的标定算子进行标定,则必须使用Halcon特定的标定板,否则就需要自己去写标定板和特征点提取的算法了。
Halcon的标定板如图5所示,黑色的边框中有阵列分布的原点,在边框的左上角有个小三角用来确定其旋转的位置。
以30*30mm的标定板为例:黑色原点:7*7边框长度:30*30mm内边框长度:28.125mm*28.125mm黑色原点半径:0.9375mm原点中心间距:3.75mm裁剪宽度:30.75*30.75mm图5 halcon标定板标定板制作:Halcon的安装后的文件中含有部分型号标定板的描述文件,但是由于实际应用中的标定板尺寸与系统描述文件不一致,因此需要定制相应的描述文件。
Halcon中用gen_caltab(::XNum,YNum,MarkDist,DiameterRatio,CalTabDescrFile,CalTabPSFile:) 算子来制作一个标定板XNum 每行黑色标志圆点的数量。
YNum 每列黑色标志圆点的数量。
MarkDist 两个就近黑色圆点中心之间的距离。
单位是meterDiameterRatio 黑色圆点直径与两圆点中心距离的比值。