【只谈干货】单目相机和激光雷达联合标定

本教程所使用标定工具为一个9x7的棋盘格,单格尺寸123mm。

1. 单目相机的内参标定

参考https://blog.csdn.net/ys578676728/article/details/88623138

2. 单目相机和激光雷达的外参标定

所有传感器外参标定的目的都是获取它们之间的旋转平移矩阵。单目相机和激光雷达的外参标定问题其实就是2D-3D点的匹配优化求解问题。
这里我们采用PnP(Perspective-n-Point)来求解,总共可以分为三个阶段:

  1. 相机提取棋盘格角点的像素坐标
  1. 激光雷达提取棋盘格角点的三维坐标
  • 提取棋盘格平面
  • 在平面上提取四条边
  • 计算棋盘格四个顶点的三维坐标
  • 推算出棋盘格角点的三维坐标
  1. PnP求解旋转平移向量

to be continue…

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
单目相机测距的方法有很多种,本文介绍一种基于OpenCV库的方法。 首先需要安装OpenCV库,并将其与C#项目进行集成。可以使用OpenCVSharp或Emgu.CV等开源库来实现。本文以OpenCVSharp为例。 接下来,需要进行以下步骤: 1. 获取相机视频流,并将其转换为灰度图像。 ```csharp VideoCapture capture = new VideoCapture(0); // 0表示默认相机 Mat frame = new Mat(); capture.Read(frame); Mat grayFrame = new Mat(); Cv2.CvtColor(frame, grayFrame, ColorConversionCodes.BGR2GRAY); ``` 2. 对灰度图像进行图像处理,提取出目标物体的轮廓。 ```csharp Mat thresholdedFrame = new Mat(); Cv2.Threshold(grayFrame, thresholdedFrame, 100, 255, ThresholdTypes.Binary); Mat cannyFrame = new Mat(); Cv2.Canny(thresholdedFrame, cannyFrame, 100, 200); Point[][] contours; HierarchyIndex[] hierarchy; Cv2.FindContours(cannyFrame, out contours, out hierarchy, RetrievalModes.List, ContourApproximationModes.ApproxSimple); ``` 3. 对轮廓进行筛选,找到最大的轮廓。 ```csharp double maxArea = 0; Point[] maxContour = null; foreach (var contour in contours) { double area = Cv2.ContourArea(contour); if (area > maxArea) { maxArea = area; maxContour = contour; } } ``` 4. 计算目标物体的中心点。 ```csharp Moments moments = Cv2.Moments(maxContour); Point2f center = new Point2f((float)(moments.M10 / moments.M00), (float)(moments.M01 / moments.M00)); ``` 5. 根据相机的内参和外参,以及目标物体在图像中的位置,计算出目标物体的实际距离。 ```csharp // 相机内参 double fx = 1000; // 焦距 double fy = 1000; double cx = grayFrame.Cols / 2; // 光心 double cy = grayFrame.Rows / 2; // 相机外参(假设相机位于世界坐标系的原点,且朝向Z轴正方向) double cameraHeight = 1.5; // 相机高度 double objectHeight = 0.2; // 目标物体高度 double objectPixelHeight = maxContour.Max(p => p.Y) - maxContour.Min(p => p.Y); // 目标物体在图像中的像素高度 double distance = fy * objectHeight * cameraHeight / objectPixelHeight; // 目标物体到相机的距离 ``` 以上就是使用OpenCVSharp进行单目相机实时测距的基本步骤。需要注意的是,相机的内参和外参需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值