初探单目相机测距——相机标定

简介: 初探单目相机测距——相机标定

标定准备


  单目相机可以根据相似三角形原理进行图像测距,在测距之前需要作如下准备:


  1. 单目相机一个(实验用可任意购买,一般越便宜的精度自然就越差了)


  1. 标定版一个(可上OpenCv官网下载)


  1. MATLAB中CameraCalibrator工具箱(或者自行采用张氏标定法进行标定)


  1. 待测目标



标定步骤


  我们将准备好单目相机连接PC端测试验证是否连接好,固定好我们的标定板,使用单目相机对准标定板进行拍照,这里我拍摄了42组图像(如下图所示:)


image.png

打开matlab的CameraCalibrator工具箱点击AddImages,选择From file从你拍摄标定板图像,然后设置实体标定板上黑色方块的边长,点击确定等待导入。


在导入后选择普通相机(另一个选项是鱼眼相机),然后点击设置(Options) 在复选框这里点击2 Coefficients SKew Tangential Distortior 点击运行(Calibrate)待运行完毕后,导出数据,在工作区内查看KP内参矩阵和焦距。

image.png

image.png

image.png

image.png

image.png


image.png

image.png

image.png


标定结果


相机标定图像以及MSE图像(PDD9.9包邮相机,误差大了些哈哈)

image.png

image.png

根据张氏测距可得如下参数:

P值
P1 0.00770644
P1 0.014762425
焦距
FX 1321.395754
FY 1308.603399
K值
K1 0.080593716
K2 -0.0025207783
K3 0
内参矩阵:
1321.395754 0 0
13.90004046 1308.603399 0
1254.996814 621.1465241 1



相关文章
|
6月前
|
计算机视觉 Python
Yolov5双目测距-双目相机计数及测距教程(附代码)
Yolov5双目测距-双目相机计数及测距教程(附代码)
|
编解码 前端开发 算法
基于OpenCV的双目摄像头测距(误差小)
首先进行双目摄像头定标,获取双目摄像头内部的参数后,进行测距;本文的双目视觉测距是基于BM算法。注意:双目定标的效果会影响测距的精准度,建议大家在做双目定标时,做好一些(尽量让误差小)。
11041 3
基于OpenCV的双目摄像头测距(误差小)
|
3月前
|
存储 Ubuntu 机器人
机械臂手眼标定详解
这篇文章是关于机械臂手眼标定的详细教程,包括了使用ROS1 Noetic和Realsense D415相机在Ubuntu 20.04环境下进行标定的步骤和配置方法。
182 0
机械臂手眼标定详解
|
6月前
|
算法
[Halcon&标定] 相机自标定
[Halcon&标定] 相机自标定
161 1
|
6月前
|
编解码 对象存储 UED
[Halcon&标定] 单相机标定
[Halcon&标定] 单相机标定
233 1
|
6月前
|
机器人
[贴装专题] 基于多目视觉的手眼标定
[贴装专题] 基于多目视觉的手眼标定
70 0
|
机器学习/深度学习 传感器 算法
【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)
【红外与可见光图像融合】离散平稳小波变换域中基于离散余弦变换和局部空间频率的红外与视觉图像融合方法(Matlab代码实现)
|
机器学习/深度学习 传感器 数据采集
【卫星轨道】基于拉格朗日插值模拟卫星轨道含Matlab代码
【卫星轨道】基于拉格朗日插值模拟卫星轨道含Matlab代码
|
机器学习/深度学习 传感器 资源调度
【光学】基于FBG和高斯函数切趾光栅仿真附matlab代码
【光学】基于FBG和高斯函数切趾光栅仿真附matlab代码
|
算法 C语言
红外热成像仪测温模块 阵列插值-由 32*24 像素到 512*384 像素
MLX90640 的 32*24=768 像素虽然比以往的 8*8 或者 16*8 像素提高了很多,但若直接用这些像素还是不能很好的形成热像图,为了使用这些像素点平滑成像就需要对其进行插值,使用更多的像素来绘制图像。 看了一些别人的算法,感觉主要就是多项式插值,仅是插值方法的组合方式不同。
红外热成像仪测温模块 阵列插值-由 32*24 像素到 512*384 像素