深度解析halcon双相机标定

一、基础概念:为什么要标定双相机?

1. 人眼 vs 双相机
  • 人眼:双眼看到的画面略有不同(比如闭上一只眼,手指左右移动时看到的画面差异),大脑通过这种差异判断物体的远近。
  • 双相机:类似人眼,两个相机从不同角度拍摄同一物体,通过计算画面差异(视差)得到物体的三维信息。但双相机需要标定,才能像人脑一样准确计算距离。
2. 标定的意义
  • 问题:相机镜头有畸变(类似哈哈镜),且两个相机的摆放位置不可能绝对精确。
  • 标定的目的
    • 矫正畸变:让图像看起来“不扭曲”。
    • 建立坐标系关系:明确两个相机的相对位置(比如左相机在右相机的左边10厘米,倾斜5度等)。
3. 什么是标定板?
  • 标定板的作用:像一把“尺子”,提供已知尺寸的参考图案(比如黑白棋盘格或圆形阵列)。通过检测标定板上的特征点(如棋盘格交点),计算相机的参数。
  • 生活中类比:如果你要测量一张桌子的长度,需要一把有刻度的尺子。标定板就是给相机的“刻度尺”。

二、双相机标定流程详解

步骤1:准备标定板
  • 标定板要求
    • 高对比度:黑白分明,便于相机清晰识别。
    • 规则图案:比如棋盘格的每个格子大小相同,圆点间距一致。
  • 物理尺寸已知:例如标定板上每个圆点之间的实际距离是30毫米(需要提前测量并输入到程序中)。
步骤2:拍摄多组标定板图像
  • 拍摄要求

    • 左右相机同步拍摄:同一时刻,左右相机各拍一张标定板的照片。
    • 多角度摆放:标定板需要出现在相机视野的不同位置(平放、倾斜、靠近左侧、靠近右侧等),覆盖整个视野。
  • 为什么需要多组图像?

Halcon相机标定代码.hdev 1.初始化 for example: Full image (640*480) Subsampling (320*240) ImageWidth 640 320 ImageHeight 480 240 2.标定板初始化 CaltabName := 'caltab_30mm.descr'//标定板描述文件 set_calib_data_calib_object (CalibDataID, 0, CaltabName) 3.创建数据模型 create_calib_data ('calibration_object', 1, 1, CalibDataID) 4.获取标定图片 相机拍摄不同位姿下图片8-15张,拍摄图片时标定板尽量覆盖整个视场(标定板要根据工作距离、视场大小定制);拍摄图片上的圆直径不得小于10个像素 5.加载所有图像,寻找标定板区域,确定圆心,将结果加载到组元中 for I := 1 to NumImages by 1 ... acquire image ... find_caltab (Image, Caltab, CaltabName, SizeGauss, MarkThresh, MinDiamMarks) find_marks_and_pose (Image, Caltab, CaltabName, StartCamPar, StartThresh, \ DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoord, CCoord, StartPose) set_calib_data_observ_points (CalibDataID, 0, 0, I, RCoord, CCoord, 'all', StartPose) endfor 下面将Halcon中提取目标点的大致原理说一下: 首先find_caltab 算子对图像高斯滤波(核大小为SizeGauss),接着阈值分割(与之大小为MarkThresh)将标定板的区域找出来, find_marks_and_pose 算子对区域中的圆进行分割,找到圆的个数,周长,坐标位置等应该和标定板描述文件中的一致,否则会自动调整StartThresh,使得StartThresh按照DeltaThresh步长减小到MinThresh,知道找到准确的圆心。 6.有了所有图像中的圆心就可以标定了 calibrate_cameras (CalibDataID, Errors) 返回平均投影误差Errors
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值