Halcon标定板标定流程

本文详细介绍了Halcon相机的内参和外参标定过程。相机内参标定旨在消除镜头畸变,包括焦点、像元尺寸和图像中心等参数的设置。外参标定则确定相机在世界坐标系中的位置和姿态,用于像素坐标到世界坐标的转换。文中还提供了参考代码和获取标定板描述文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、相机内参标定

目的:标定内参的目的是消除镜头的畸变。

面阵相机的内参由一个8位的数组组成包括:

startCamPar:=[Focus,Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight]

Focus代表焦距,按照我们镜头参数进行填写,远心镜头填写0
Kappa为畸变大小,因为在标定之前,所以默认填写0
Sx, Sy像元的宽高填写相机的像元尺寸。可以查相机手册,或者咨询相机厂家。
Cx, Cy填写图像的中心坐标
ImageWidth, ImageHeight填写图像的宽高

通过查阅手册我们可以知道除Kappa以外的其他参数,将已知信息填入进去,就是未标定的初始相机内参。

有了初始内参就可以用下面算子设置进去:

set_calib_data_cam_param (CalibDataID, 0, [], startCamPar)

标定完成之后我的会得到标定后的相机内参,和标定前的区别是计算出了Kappa的值,不再是0,其他参数大致不变,所以内参标定就是计算出畸变系数的过程。

二、相机外参标定

目的:决定摄像机坐标系与世界坐标系之间相对位置关系,有了位置关系Pose,就可以将像素坐标系和世界坐标系的点进行互相转化,达到了标定的应用目的,所以外参标定就是求解要定位的产品相对于相机的位姿(位置)

3D姿态中的7个参数代表的意义:[0,0,0,0,0,0,0]
前六个代表平移和旋转量,最后一个代表OrderOfTransform,OrderOfRotform,ViewOfTransform的组合类型。

位姿pose的参考文章:HALCON中create_pose和位姿中7个参数_m0_37833782的博客-优快云博客

相机pose的理解-halcon标定-少有人走的路

三、参考代码

一、获取内参,参考例程camera_calibration_internal

ImgPath := '3d_machine_vision/calib/'
dev_close_window ()
dev_open_window (0, 0, 652, 494, 'black', WindowHandle)
dev_update_off ()
dev_set_draw ('margin')
dev_set_line_width (3)
set_display_font (WindowHandle, 14, 'mono', '
<think>好的,用户想了解Halcon中使用标定进行标定的方法。我需要结合提供的引用内容来组织回答。首先,我需要明确Halcon标定的基本流程,然后分步骤说明每个环节的关键点。 首先,用户提到的三个引用分别涉及自制标定标定厚度的影响以及标定助手的使用流程。这些内容需要整合成一个连贯的教程。我应该从准备标定开始,强调用户可以选择自制或购买,并注意标定厚度的重要性,如引用[2]提到的坐标系原点位置。接着,按照引用[3]中的步骤,分阶段讲解标定助手的设置、参数配置、图像加载和标定执行。每个步骤需要详细说明,例如标定描述文件的添加、摄像机参数的填写,以及如何处理提取失败的情况。 另外,需要注意用户可能对某些术语不熟悉,比如标定厚度的影响,需要解释清楚,如引用[2]所述,标定厚度会影响坐标系的确定。同时,代码生成部分也很重要,用户可能希望将标定结果应用到实际项目中,所以需要提到插入代码的步骤。 还需要检查是否有遗漏的步骤或注意事项,比如标定的规格是否符合Halcon要求,图像加载时的最佳实践,以及标定后的验证方法。可能的问题点包括标定点提取失败的原因及解决方法,如何确保标定精度等,这些都应该在回答中涵盖。 最后,生成的相关问题需要与标定过程相关,可能涉及优化方法、厚度影响、标定失败处理和应用场景等,确保问题有针对性,帮助用户深入理解。</think>以下是Halcon使用标定进行标定的分步教程,结合关键参数设置与实际操作注意事项: ### 一、标定前准备 1. **获取标定** - 可购买Halcon官方标定(如12×12圆点阵列)或通过`gen_caltab`算子生成自定义标定描述文件[^1] - 自制标定需注意:尺寸精度需控制在$±0.01mm$,棋盘格/圆点边缘需清晰无毛刺 2. **设置标定厚度** - 在标定助手中输入的标定厚度必须与实际物理厚度一致(例如1mm),否则坐标系原点会偏移到错误平面[^2] - 公式验证:$Z_{offset} = thickness \times \sqrt{2}/2$(当标定倾斜时) ### 二、标定流程(通过标定助手) ```python * Halcon标定代码示例(自动生成) open_framegrabber('DirectShow', 1, 1, 0, 0, 0, 0, 'default', -1, 'rgb', -1, 'false', 'default', '[0]', 0, -1, AcqHandle) calibrate_cameras(CalibDataID, Error) get_calib_data (CalibDataID, 'camera', 0, 'params', CameraParameters) ``` 1. **硬件配置** - 固定相机与镜头焦距,确保$f/\#(光圈值)$不变 - 测量传感器尺寸(单位:$μm$)和像素尺寸(单位:$μm/pixel$) 2. **参数设置** | 参数类型 | 必填项 | 典型值示例 | 单位 | |---|---|---|---| | 焦距 | 8mm | 8 | mm | | 像元尺寸 | 3.45 | 3.45 | μm | | 图像分辨率 | 1920×1200 | - | pixel | 3. **图像采集** - 至少采集15组不同位姿图像(推荐20-30组),满足以下条件: - 标定覆盖$70\%$以上视场 - 包含$±45°$倾斜角度 - 示例位姿分布: $$ \theta_x \in [-45°,45°], \theta_y \in [-30°,30°], Z \in [200mm,500mm] $$ 4. **标定验证** - 检查重投影误差:$RMS < 0.1pixel$ - 验证公式: $$ \epsilon = \frac{1}{N}\sum_{i=1}^{N}\sqrt{(x_i-\hat{x}_i)^2 + (y_i-\hat{y}_i)^2} $$ ### 三、常见问题处理 - **标定点提取失败**: 检查光照均匀性(建议照度≥500lux),或调整`find_caltab`参数: ```python find_caltab(Image : CalPlate : SizeGauss, MarkThresh, MinDiamMarks : ) ``` - **标定厚度误差影响**: 厚度误差$\Delta t$会导致测量误差$\Delta Z = \Delta t \times \tanθ$(θ为倾斜角)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stephon_100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值