halcon相机标定和测量示例
Halcon算子笔记3_相机标定+矫正图像

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运⾏有问题,因为已经没有parameters_image_to_world_plane_centered这个函数了,知道现在版本替换它的函数的朋友⿇烦告知⼀下,万分感谢本⽂出处:/s/blog_442bfe0e0100yjce.html#commonComment1.get_image_size( : : : , )返回图像的尺⼨。
2.parameters_image_to_world_plane_centered (CamParam, Pose, CenterRow, CenterCol, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, PoseForCenteredImage)Halcon内部程序,输出为图像的⽐率和姿态。
3.gen_image_to_world_plane_map( : : , , , , , , , : )产⽣⼀个投影映射,该映射描述图像平⾯与Z=O的世界平⾯之间的关系,输出为图像MAP,是⼀个多通道的图像包含了映射数据。
4.map_image(, : : : )利⽤映射变换校正图像,输出为矫正后的图像。
5.image_to_world_plane( : : , , , , , : )把校正后的图像转换到Z=0的世界平⾯。
6.image_points_to_world_plane( : : , , , , : , )把图像上的点转换到Z=0的世界平⾯,输出为点坐标。
* This program provides procedures for the determination of the* parameters Pose and Scale of the operators image_to_world_plane* and gen_image_to_world_plane_map.** Read the imageImgPath := '3d_machine_vision/calib/'read_image (Image, ImgPath+'caliper_01')* Set the camera parameters for the imageCamParam := [0.0160728,-631.843,7.40077e-006,7.4e-006,326.369,246.785,652,494]Pose := [-41.2272,26.763,398.682,359.655,359.202,322.648,0]* Reopen the window appropriatelyget_image_size (Image, WidthOriginalImage, HeightOriginalImage)dev_open_window_fit_image (Image, 0, 0, WidthOriginalImage, HeightOriginalImage, WindowHandle)set_display_font (WindowHandle, 14, 'mono', 'true', 'false')dev_set_color ('red')WidthMappedImage := 652HeightMappedImage := 494* Transform the image such that a given point appears in the* center of the rectified image and the the scale of the rectified image* is similar to the scale of the original image (in the surroundings* of the given point)* Define the point that will appear in the center of the rectified imagedev_display (Image)disp_message (WindowHandle, 'Define the center of the mapped image', 'window', 12, 12, 'white', 'false')get_mbutton (WindowHandle, CenterRow, CenterCol, Button)* Determine scale and pose such that the given point appears* in the center of the rectified image and that the* scale of the two images is similar (in the surroundings* of the given point).parameters_image_to_world_plane_centered (CamParam, Pose, CenterRow, CenterCol, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, PoseForCenteredImage)* Rectify the imagegen_image_to_world_plane_map (Map, CamParam, PoseForCenteredImage, WidthOriginalImage, HeightOriginalImage, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, 'bilinear')map_image (Image, Map, ImageMapped)dev_open_window_fit_image (ImageMapped, 0, 0, WidthMappedImage, HeightMappedImage, WindowHandleMapped)set_display_font (WindowHandleMapped, 14, 'mono', 'true', 'false')dev_set_color ('red')dev_display (ImageMapped)* In case, only one image has to be mapped, the operator* image_to_world_plane can be used instead of the operators* gen_image_to_world_plane_map together with map_image.image_to_world_plane (Image, ImageMapped, CamParam, PoseForCenteredImage, WidthMappedImage, HeightMappedImage, ScaleForCenteredImage, 'bilinear')* Display the center pointimage_points_to_world_plane (CamParam, PoseForCenteredImage, CenterRow, CenterCol, ScaleForCenteredImage, CenterX, CenterY) disp_cross (WindowHandleMapped, CenterY, CenterX, 6, rad(45))disp_message (WindowHandleMapped, 'The selected point appears in the center', 'window', 12, 12, 'white', 'false')disp_message (WindowHandleMapped, 'of the rectified image', 'window', 36, 12, 'white', 'false')disp_continue_message (WindowHandleMapped, 'black', 'true')stop ()** Now determine scale and pose such that the entire image* fits into the rectified image.parameters_image_to_world_plane_entire (Image, CamParam, Pose, WidthMappedImage, HeightMappedImage, ScaleForEntireImage, PoseForEntireImage)* Rectify the imageimage_to_world_plane (Image, ImageMapped, CamParam, PoseForEntireImage, WidthMappedImage, HeightMappedImage, ScaleForEntireImage, 'bilinear')dev_clear_window ()dev_display (ImageMapped)disp_message (WindowHandleMapped, 'The entire image is visible in the rectified image', 'window', -1, -1, 'white', 'false')。
基于HALCON的双目摄像机标定

基于HALCON的双目摄像机标定于春和;祁乐阳【摘要】Based on the binocular stereo vision system for the purpose of calibration. The internal and external parameters of stereo vision system of binocular camera are obtained by using HALCON calibration board and comparative experiment by software rich operator platform. The results are accurate and simple. The program is robust and efficient, and can be applied to binocular stereoscopic vision system effectively, which provides a solid foundation for 3D reconstruction of human face based on binocular stereoscopic vision.%基于对双目摄像机立体视觉系统进行标定的目的.采用HALCON标定板,通过软件丰富算子平台进行对比实验得到双目摄像机立体视觉系统的内部参数以及外部参数.算法结果准确,简单易行.其程序鲁棒性强,运算效率高,能够高效的运用到双目立体视觉系统中,为基于双目立体视觉的人脸三维重建提供了坚实的基础.【期刊名称】《电子设计工程》【年(卷),期】2017(025)019【总页数】4页(P190-193)【关键词】刚性转换;双目标定;机器视觉;HALCON标定板【作者】于春和;祁乐阳【作者单位】沈阳航空航天大学电子信息工程学院,辽宁沈阳 110136;沈阳航空航天大学电子信息工程学院,辽宁沈阳 110136【正文语种】中文【中图分类】TN391Abstract:Based on the binocular stereo vision system for the purpose of calibration.The internal and external parameters of stereo vision system of binocular camera are obtained by using HALCON calibration board and comparative experiment by software rich operator platform.The results are accurate and simple.The program is robust and efficient,and can be applied to binocular stereoscopic vision system effectively,which provides a solid foundation for 3D reconstruction of human face based on binocular stereoscopic vision.Key words:rigidity conversion;binocular calibration;machine vision;HALCON calibration plate摄像机标定是机器视觉和摄像测量领域相对基础的工作,同时也是最复杂、困难的工作。
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相机标定方法【实用版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单相机标定板标定⾸先得到相机的内参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的单目相机标定方法与测量实验
李晓晓;吴昊荣;孙付春;杨涛
【期刊名称】《山东工业技术》
【年(卷),期】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标定是一种用于机器视觉系统中相机和图像采集设备的校准方法。
通过标定,可以获得相机的内部参数和外部参数,从而提高图像处理和计算机视觉系统的精度和稳定性。
下面是十个关于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标定可以提高机器视觉系统的精度和稳定性,但仍然存在一些局限性,如对标定板的要求较高、对标定图像的要求较严格等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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所示的标定板参数设置。
图3中可设置CalPlateDescr, CalPlatePSFile 文件保存目录。
图 3 gen_caltab算子
完成后最好将'caltab.descr'拷贝到C:\Program Files\MVTec\HALCON-18.05-Progress\calib文件下,以方便后面调用。
1.2相机参数标定
此处通过HALCON标定助手标定。
标定助手打开如下:
图 4 标定助手
标定参数设置如下。
描述文件是第一步编制的标定板描述文件,像元宽高可查相机参数,焦距为镜头参数。
图 5 标定参数设置
此处通过加载的方式采用采集好的图像标定,没有实时采集。
可能会出现提取标志点失败的问题,可调整参数采集尝试。
(尝试多次若发现始终错误,可回到上一步查一下标定板描述文件有没有调用错误!!!若调用错误,没法识别或者我们标定的结果会出错!!!!)
图 6 标定图像加载1
图7 标定图像加载2
当图像加载完毕,“标定”按钮显示可选时即可点击标定。
此次我们用了11张图标定,但是按照理论最好12张以上。
有时会提示各种图像品质问题,此时尽量调整图像,实在调整不好可忽略。
下图为点击“标定”按钮后的标定结果,摄像机参数为相机内参,摄像机位姿为相机外参,此两个参数是可以单独保存。
图8下图为保存的两个相机内外参,“.cal”的为相机内参,“.dat”的为相机外参。
图8 标定结果
如下图所示,可以导出标定函数和标定数据。
标定函数是通过代码的形式将标定过程重复,一般也没有意义。
导出标定数据主要是两部分:CameraParameters(相机内参)和CameraPose(相机外参),如图9下。
图9 参数导出
以上标定工作完成。
2图像尺寸测量
2.1测量助手测量
打开测量助手。
图10 打开测量助手
此处以测量图像文件为示例说明。
选择要测量的图像,然后选择上一步标定生成的相机内参和相机外参文件。
图11 测量助手图像参数输入
之后,通过划线选取要测量的基线,包括圆弧基线和直线基线。
如图先绘制基线然后右键单击即可确认(基线一定不要太长,够用就行,因为太长会识别出很多干扰边缘)。
选择是否勾选“将边缘组成边缘对”。
再之后通过调整最小边缘幅度、平滑、ROI宽来选取要测量的边缘。
之后,查看测量结果。