Halcon助手实现相机标定一 利用Halcon制作halcon的专用标定板Halcon标定板大小标定板的大小要大于全视野的1/3推荐使用2/3视野大小的标定板*7:x方向圆点数量*7:y方向圆点数量*0.007两个圆之间的距离 单位米*0.5比例值 Mark直径比上Mark中心距离*caltab.descr 描述文件用于标定文件的生成*caltab.ps 标定文件用于生产标定板 gen_caltab(7,7,0.007,0.5,D:/caltab.descr,D:/caltab.ps)该标定板圆点直径3.5mm,圆点到圆点的中心距离7mm.7x7个圆点二 使用Halcon的标定助手进行标定文件生成1 确定安装硬件配置厚度为标定板的厚度普通镜头投影一般相机面扫描除法像元亦称像素点或像元点。即影像单元picture element。CCD相机成像芯片中组成数字化影像的最小单元。焦距也称为焦长是光学系统中衡量光的聚集或发散的度量方式指从透镜中心到光聚集之焦点的距离。亦是照相机中从镜片光学中心到底片、CCD或CMOS等成像平面的距离https://www.hikrobotics.com/cn/https://www.hikrobotics.com/cn/machinevision/productdetail/?id8516https://www.hikrobotics.com/cn/machinevision/visionproduct?typeId40id49pageNumber1pageSize20showEolfalse2.拍照标定设为参考位姿把设为参考位姿的图像为物理世界原点000.001-xyz在Halcon相机标定中Kappa为正表示枕形畸变Kappa为负表示桶形畸变。Kappa参数的作用Kappa是描述镜头径向畸变的核心参数用于量化图像像点沿径向的偏移程度。它直接反映镜头制造误差导致的非理想成像特性。正负值的物理意义枕形畸变Kappa 0图像边缘向外膨胀形成类似枕头的形状。这种畸变使视场边缘的放大率高于中心区域导致直线在图像边缘呈现向外弯曲的形态。桶形畸变Kappa 0图像边缘向内收缩形成类似水桶的形状。此时视场边缘的放大率低于中心区域直线在图像边缘呈现向内弯曲的形态。Halcon中的参数模型在Halcon的area_scan_division模型中相机内参以[Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight]形式表示其中Kappa的符号直接决定畸变类型。例如Kappa0.001正对应枕形畸变Kappa-0.001负对应桶形畸变。畸变矫正的实践意义通过标定获取Kappa值后Halcon可生成反向映射图如gen_radial_distortion_map将畸变图像转换为无畸变图像。这一过程对高精度测量如尺寸检测、三维重建至关重要可消除镜头物理特性对成像结果的影响。在Halcon中相机坐标系的原点通常位于相机的光心即镜头的光学中心而不是像元平面或镜头表面。因此外参中的Z值表示的是标定板平面到相机光心的距离。*相机内参 CameraParameters:[area_scan_division,0.0423987,-20.7857,8.29704e-06,8.3e-06,1557.66,1034.39,3072,2048]*相机外参 CameraPose:[0.0449181,0.0338377,0.386435,1.44763,2.12759,269.708,0]stop()三 使用标定文件1 畸变矫正CameraParameters:[area_scan_division,0.0895538,-17.6889,8.29454e-06,8.3e-06,1703.09,1468.01,3840,2748]CameraPose:[0.0202819,-0.0078438,0.542075,2.49221,4.22066,178.885,0]stop()*获取畸变参数 change_radial_distortion_cam_par(adaptive,CameraParameters,0,CamParamChange)*生成畸变矫正Mapgen_radial_distortion_map(Map,CameraParameters,CamParamChange,bilinear)*读取图像 read_image(Image20250511114004720,C:/Users/Jumy/MVS/Data/Image_20250511114004720.bmp)*进行畸变矫正 map_image(Image20250511114004720,Map,ImageMapped)2 像素坐标转标定板的世界坐标系CameraParameters:[area_scan_division,0.0895538,-17.6889,8.29454e-06,8.3e-06,1703.09,1468.01,3840,2748]CameraPose:[0.0202819,-0.0078438,0.542075,2.49221,4.22066,178.885,0]stop()*获取畸变参数 change_radial_distortion_cam_par(adaptive,CameraParameters,0,CamParamChange)*生成畸变矫正Mapgen_radial_distortion_map(Map,CameraParameters,CamParamChange,bilinear)*读取图像 read_image(Image20250511114004720,C:/Users/Jumy/MVS/Data/Image_20250511114004720.bmp)*进行畸变矫正 map_image(Image20250511114004720,Map,ImageMapped)*计算圆心点的距离 rgb1_to_gray(ImageMapped,GrayImage)threshold(GrayImage,Region,0,190)connection(Region,ConnectedRegions)select_shape(ConnectedRegions,SelectedRegions,area,and,1500,1800)select_obj(SelectedRegions,ObjectSelected1,1)select_obj(SelectedRegions,ObjectSelected2,2)area_center(ObjectSelected1,Area,Row1,Column1)area_center(ObjectSelected2,Area,Row2,Column2)*像素转物理坐标*相机内参*外参*像素坐标*显示单位*输出 物理坐标 image_points_to_world_plane(CamParamChange,CameraPose,Row1,Column1,mm,X1,Y1)image_points_to_world_plane(CamParamChange,CameraPose,Row2,Column2,mm,X2,Y2)distance_pp(Y1,X1,Y2,X2,Distance)