德仓创机器人 Dechuang Robot 7.羽毛球机器人视觉软件系统 相机标定 相机标定与测距:机器视觉的本质是通过相机图像获取三维世界的真实信息,但需要解决相机坐标系与世界坐标 系的对应关系(变换矩阵)和畸变镜头的校正,这两个问题都由相机标定解决,基于多目相机的测距是立体视觉与 三维重建的基础。由前述知识可知,相机参数包括内部参数和外部参数。内部参数包括焦距、镜头畸变、像素尺 寸、成像中心坐标、图像尺寸等;外部参数是相机坐标系到世界坐标系的转换矩阵。相机标定分为标定板准备、 内部参数标定和外部参数标定。 标定板准备:HCON算子gen_caltab()生成各种规格的标定板。为保证标定精度,需 特别注意以下事项: (1)标定板表面平整、哑光; (2)标定板材料具有一定的热稳定性,不变形、不卷曲; (3)标定板图形几何尺寸精度不低于0.1m
7.羽毛球机器人视觉软件系统 12 相机标定 相机标定与测距:机器视觉的本质是通过相机图像获取三维世界的真实信息,但需要解决相机坐标系与世界坐标 系的对应关系(变换矩阵)和畸变镜头的校正,这两个问题都由相机标定解决,基于多目相机的测距是立体视觉与 三维重建的基础。由前述知识可知,相机参数包括内部参数和外部参数。内部参数包括焦距、镜头畸变、像素尺 寸、成像中心坐标、图像尺寸等;外部参数是相机坐标系到世界坐标系的转换矩阵。相机标定分为标定板准备、 内部参数标定和外部参数标定。 • 标定板准备:HALCON算子gen_caltab()生成各种规格的标定板。为保证标定精度,需 特别注意以下事项: (1)标定板表面平整、哑光; (2)标定板材料具有一定的热稳定性,不变形、不卷曲; (3)标定板图形几何尺寸精度不低于0.1mm
德仓创机器人 Dechuang Robot 7.羽毛球机器人视觉软件系统 相机标定 内部参数标定:相机内部参数标定主要包括图像采集和标定计算两个步骤。采集不小于10幅图像,一般为12幅图像。图像采集 涉及的HALCON算子有: grab_image_async(0:采集标定板图像 find_calib_object(0:从图像中寻找标定板,并计算相关参数 get_calib_data_observ_points():获得标定板特征点坐标及其它特征数值 sim_caltab0:根据特征点坐标及其它特征数值显示标定板 threshold(:二值化,显示特征点 region_features():计算标定板特征点、边线相关参数 get_current_dirO:获得当前目录 make_dirO:创建目录 select_obj(0:从标定板图像序列中选取一幅图像 write_image0:存储标定板图像 图像采集需注意以下事项: ()标定板离相机距离合适,标定板图像面积占相机画面不少于四分之一; (2)不断移动标定板,使其图像分布覆盖相机画面每个区域;
7.羽毛球机器人视觉软件系统 13 相机标定 • 内部参数标定:相机内部参数标定主要包括图像采集和标定计算两个步骤。采集不小于10幅图像,一般为12幅图像。图像采集 涉及的HALCON算子有: grab_image_async():采集标定板图像 find_calib_object():从图像中寻找标定板,并计算相关参数 get_calib_data_observ_points():获得标定板特征点坐标及其它特征数值 sim_caltab():根据特征点坐标及其它特征数值显示标定板 threshold():二值化,显示特征点 region_features():计算标定板特征点、边线相关参数 get_current_dir():获得当前目录 make_dir():创建目录 select_obj():从标定板图像序列中选取一幅图像 write_image():存储标定板图像 图像采集需注意以下事项: (1) 标定板离相机距离合适,标定板图像面积占相机画面不少于四分之一; (2) 不断移动标定板,使其图像分布覆盖相机画面每个区域;
德仓创机器人 Dechuang Robot 7.羽毛球机器人视觉软件系统 相机标定 D0 图像采集需注意以下多8Q飞,国和·图m,: 多众得Q代图恼密口·翻0·本 Rectified images (3)左右相机标定 (4)标定板与相机, (⑤)保持标定板光, Migtl 046 标定计算包括如下步 204 Edu 2046 lialntc0el 3690 create calib data( SFarICPL 【0.0,8,,,0,8,.5,5.5-6,124,124,24,04 StartCPM 【8.696,8,9,4,8,8,5,5e-t0%,5.5e-806,1024,1824,284g,2048] set calib data car Eeeeptimn set calib data cal r行rA ●.1850 【8.607957,2375,46,-2,38484e+887,1.35359+11,一-8,1886,.129485,5.5666c CaPurwd [0,00605344,2347,24,-2,5798e+907,8,50250e+919,0,14572,0,322699.5.502e-R find calib object( [1.32,-g.08057917..214g,5.1时,35.071.0,272657,D1 calibrate cameras LadtCun?L [8.60J8721,8.8,0.80.6,0.0,8:0,5.5父-则5,5.5-805,779,87%,1238,69.2261, [0,77291,8.8,9,,,,0,0,0,0,5,50-06,55t-00,169,45,1230,69,2341 CmPuzdBectL get_calib_data(): [00,0-0,8.0,359.757,5.250,59.06,0 C,sR特B [0.8,0.0,0.0.8.424877,12.1845,351.25,1 [1,1332,80,0.8,8.8,8.0,4.0, gen_binocular_rec Patris 【-7,326-099。-5,57197e-97,0,9628199。-4,69658e-97,3,1514e-95,9.160 map_image(0:极线 Cp用2p [0.691862,-0,110222,276.557,804855分,●.360393,222323,3.68489e-t05,-9.6 [1.1452,,22196,7.177630-14,-,0700967,1,36553,41,154,-4464e-6,0. rel_pose_to_funda -0.427037 -0.21538 2.344H gen binocular pro 0,044919 人边八用户八是
7.羽毛球机器人视觉软件系统 14 相机标定 图像采集需注意以下事项: (3) 左右相机标定板图像必须一一对应; (4) 标定板与相机成像面大致平行,不能倾斜太多; (5) 保持标定板光照均匀,以提高标定板成像质量。 标定计算包括如下步骤: create_calib_data():创建相机标定模型 set_calib_data_cam_param():初始化标定参数 set_calib_data_calib_object():设置标定板参数 find_calib_object():从图像中寻找标定板,并计算相关参数 calibrate_cameras():相机标定 get_calib_data():获得相机标定参数 gen_binocular_rectification_map():生成极线校正矩阵 map_image():极线校正变换 rel_pose_to_fundamental_matrix():计算基础矩阵(F矩阵) gen_binocular_proj_rectification():计算本质矩阵(H矩阵)
德仓创机器人 Dechuang Robot 7.羽毛球机器人视觉软件系统 相机标定 外部参数标定:就是建立相机坐标系到世界坐标系的转换矩阵。其大致步骤如下: ReadCameraSetupModelO,)/∥读取相机内部参数及两个相机的相对姿态 GetCameraSetupParam(hv CameraSetupModelID,0,"params",&hv_paramL); GetCameraSetupParam(hv CameraSetupModelID,1,"params",&hv_paramR); GetCameraSetupParam(hv CameraSetupModellD,1,"pose",&hv_pose); GenBinocularRectificationMap()∥生成极线校正映射矩阵ho_Mapl,ho_Map2,极线校正相机参数hv_CamParamRect1,hv_CamParamRect2 DH GrablmageAsync();,/采集标定板图像 MapImage(),/极线校正 CreateCalibData(); SetCalibDataCalibObject(); SetCalibDataCamParamO; FindCalibObject();/∥在左相机图像中找HALCON标定板,并执行标定 GetCalibDataObservPoints();/读取标定结果 PoseToHomMat3d(hv_Pose,&hv HomMat3.DN);/生成相机坐标--世界坐标系转换矩阵hv HomMat3.DInvert PoseToHomMat3d(hv CamPoseRect1,&hv HomMat3DRect); HomMat3dCompose(hv_HomMat3DRect,hv_HomMat3DN,&hv_HomMat3D); HomMat3dTranslateLocal(hv_HomMat3D,-(myObj->caltabX+(caltabWidth/2)),myObj->caltabY+(caltabHeight/2),0.005,&hv_HomMat3DTranslate), HomMat3 dRotateLocal(hv_HomMat3 DTranslate,HTuple(l8O).TupleRad(),."x",&hv_HomMat3 DRotate),∥坐标系移动和旋转 HomMat3dInvert(hv_HomMat3DRotate,&hv_HomMat3DInvert); 15
7.羽毛球机器人视觉软件系统 15 相机标定 • 外部参数标定:就是建立相机坐标系到世界坐标系的转换矩阵。其大致步骤如下: ReadCameraSetupModel();//读取相机内部参数及两个相机的相对姿态 GetCameraSetupParam(hv_CameraSetupModelID, 0, "params", &hv_paramL); GetCameraSetupParam(hv_CameraSetupModelID, 1, "params", &hv_paramR); GetCameraSetupParam(hv_CameraSetupModelID, 1, "pose", &hv_pose); GenBinocularRectificationMap() //生成极线校正映射矩阵ho_Map1,ho_Map2,极线校正相机参数hv_CamParamRect1,hv_CamParamRect2 DH_GrabImageAsync();//采集标定板图像 MapImage(); //极线校正 CreateCalibData(); SetCalibDataCalibObject(); SetCalibDataCamParam(); FindCalibObject();//在左相机图像中找HALCON标定板,并执行标定 GetCalibDataObservPoints ();//读取标定结果 PoseToHomMat3d(hv_Pose, &hv_HomMat3DN); //生成相机坐标----世界坐标系转换矩阵hv_HomMat3DInvert PoseToHomMat3d(hv_CamPoseRect1, &hv_HomMat3DRect); HomMat3dCompose(hv_HomMat3DRect, hv_HomMat3DN, &hv_HomMat3D); HomMat3dTranslateLocal(hv_HomMat3D, -(myObj->caltabX + (caltabWidth / 2)), myObj->caltabY + (caltabHeight / 2), 0.005, &hv_HomMat3DTranslate); HomMat3dRotateLocal(hv_HomMat3DTranslate, HTuple(180).TupleRad(), "x", &hv_HomMat3DRotate); //坐标系移动和旋转 HomMat3dInvert(hv_HomMat3DRotate, &hv_HomMat3DInvert);
德仓创机器人 Dechuang Robot 7.羽毛球机器人视觉软件系统 份出标板插飞文 由左相机标定板围像执行标定 相机标定 (e(gp toteraten).Apeend('alph")).Apeosd(skig rind ralta). 【Hn4n.Ael.oand广true)) 碳取立体视鹭相机标足参数(内银参数及相机阳对位) 年1m國 成功 读取标定枯果 从智机使型读表标定内留参规 GetCelibetmobmeryPotnts (hy Cnlthtalll,0.0.shv Ros,shy Colum,&hor Index,&h Pnoe): 品 失败 从和机楼使取和机相对位 生或场范标定矩阵:hy HonNit:3 Dinver可 生成左右相机极线校正映射矩料、相机参数 ,t (ealtablleight 2).0.006.&h ifomMat3DTranslate) h133 otntolec Ho3 nmnslate,中(83,Tp面dO。“大“,nBt3tan oelln13dInvert (hr_Hoallt3lkotaie.Ahe_Boallatshinvert) riteTople0wMoeatamort."../roboeinton/sre/porm/caltaldltatd Bem dat"): 左相机采美标足板丽像 从标定文件读取解定板中心坐标 三相机采集标定饭面象 DEGrsb InageAsyoc (ho Inagel,h_AcqandleL.1000): 生液标花配图厚风 Caltab(ho lengellapeed.ho心IPlate,.hy Caltateile,心O。e0】 左相机标定板用像投找校因 gTa0 e Trag.ho pl,。.no Ieagapped0更 例镜标尾模型 CreatecalilData(ealibration object".1.1.Whv CalssDataID) SetCalibDataCalibcb ject Chv CalibDataTD.D.h CaltabFile): SetCalibDatacoParand CalibDataID,0 "area scan polyromial',I CanPar ankect1) 成三债化网销r. Gruplliato(he Imgetoduced,ho TmageRedacet.thsolsteisto.Shv Helativellfato) 16
7.羽毛球机器人视觉软件系统 16 相机标定