halcon学习之单相机标定和手眼标定

文章目录

      • 理解摄像机标定
      • 单相机标定
      • 手眼标定


理解摄像机标定

看了一篇讲得非常好的关于摄像机标定的文章,加深了我对摄像机标定的理解
摄像机标定文章的传输门

这是我边看文章边写的公式
(3)和(4)代入(5)得到的公式意思就是
世界坐标 乘 相机的内外餐参数 得到 像素坐标
而标定的过程就是要求出相机的内外参halcon学习之单相机标定和手眼标定_第1张图片


单相机标定

1、 作用: ①矫正畸变 ②进行一维和二维测量
2、 gen_caltab()用来生成描述文件和ps文件,这个ps文件是可以打印的
3、 标定步骤:
gen_catlab()生成描述文件
打开标定助手
安装选项卡 - 标定板 - 描述文件 - 投影模型 - 单个像元的宽、高,焦距(这几个值可以买相机的时候问到)
标定选项卡 - 图像源 - 标定 - 勾选实时图像 - 采集一二十张图像 - 将第一张图像设为参考位姿 - 采集完后取消实时图像 - 标定
结果选项卡 - 保存摄像机参数(内参) - 保存摄像机位姿(外参)
代码生成选项卡 - 生成模式 - 标定数据或标定函数
ps:标定选项卡中采集图像的状态:检测出品质问题,没关系仍可以标定,品质问题的百分数越小越好。但是状态:标志点提取失败,就不能进行标定,必须把采集的这张图像移除,否则无法标定。
ps:采集图像时,尽量各个方位采集到
4、 实战 - 测量硬币步骤:
先标定,步骤如上 - 再打开测量助手
输入选项卡 - 图像源 - 标定来源 - 标定文件 - 加载刚刚标定助手生成的内外两个文件(.dat)
边缘选项卡 - 边缘提取 - ROI宽↑ - 边缘选择 - 勾选将边缘组成边缘对
结果选项卡 - 得到测量结果
代码生成选项卡 - 定位方法:不进行定位(定位肯定要用到匹配+仿射变换) - 插入代码
5、 大体流程: 生成描述文件 → 标定助手 → 采集 → 保存内外参文件 → 测量助手 → 加载两个内外参文件 → 结果 → 插入代码


手眼标定

1、 手眼标定要掌握:
视觉算法、运动控制算法、手眼标定算法
2、 手眼标定中涉及的坐标系:
机械手基础坐标系、机械手末端工具坐标系、相机坐标系、工件坐标系
**3、**标定方法:
①九点标定 ②标定板标定
4、 九点标定:
就是将图像坐标系转换为机械手基础坐标系。
根据摄像机的固定位置,分为eye-in-hand和eye-to-hand。eye-in-hand相比eye-to-hand比较灵活。
如果是eye-in-hand,也需要在固定的地方拍摄九个点。
ps:要注意机械手的协议,就是要注意发什么格式的数据halcon学习之单相机标定和手眼标定_第2张图片
5、 标定板标定:
代码:
demo - 方法 - 手眼标定系统 - hand_eye_movingcam_calibration(eye in hand)
demo - 方法 - 手眼标定系统 - hand_eye_stationarycam_calibration(eye to hand)
demo - 方法 - 摄像机标定 - 3d_coordinates(摄像机标定)
方法:先标定,后求解
如果是eye-in-hand,标定板不动,机械手带着摄像机走一圈。
如果是eye-to-hand,摄像机不动,则改变标定板的位置。
ps:有了描述文件,则相当于知道世界坐标,可以求出摄像机内外参。
(再看一遍视频,之前没有完全看懂)
ps:多相机不一定是双目立体视觉,可能还是二维的。
双目立体视觉必须是两个相机看同一个地方,且两个相机建立了之间的联系,还有三维重建,都是三维的。

你可能感兴趣的:(计算机视觉)