当前位置: 首页 > ai >正文

机器人--相机

教程

畸变和校正

单目和双目标定

单双,rgb-d原理

单目相机

只有一个摄像头的相机。

原理

小孔成像。

缺点

单目相机无法测量物体点的深度信。

因为物体的Z轴坐标系无法测量。

双目相机

有两个摄像头的相机。

用两个单目相机组成的双目相机就可以测量深度信息,有些地方也把双目相机叫深度相机。

RGB-D相机

RGB-D相机一般有3个镜头:中间的镜头是普通的摄像头,采集彩色图像;另外两个镜头分别用来发射红外光和接收红外光。

RGB-D相机也利用和激光一样得到方法测距:

三角测距和TOF。

相机内参

相机内参通常用一个3×3的矩阵 K表示:

2,主点:定义了相机光轴(Optical Axis)与成像平面(Image Plane)的交点在图像像素坐标系中的位置。

3,倾斜系数(Skew Coefficient)

  • s:描述图像坐标系中x轴和y轴的不垂直程度(现代相机通常为0)。

-- 相机内参就是求解焦距和主点。

焦距

链接

链接

决定了相机的视角范围和成像大小。

  • 凸透镜:焦距为正,光线汇聚。

  • 凹透镜:焦距为负,光线发散。

焦距的含义和作用:

物理焦距:

镜头的光学中心感光元件之间的距离,用f表示。

像素焦距:

相机内参矩阵中的 fx​ 和 fy​ 是将物理焦距转换到像素坐标系的产物,可能不同。

主点

理想相机模型

传感器完全对准镜头,也就是像素坐标系原点完全对准相机坐标系(镜头中心坐标系)。

真实相机
由于制造误差(如传感器安装偏移、镜头与传感器未严格对齐),光轴可能不会精确穿过图像中心,因此主点 (cx,cy)会略微偏离理论中心。

内参成像模型

(x,y,z)是物体本身的一个点p相对于相机坐标系的位置。

K就是相机内参。

相机外参

在内参模型中,世界环境中的物体点P给的都是点P相对于相机坐标系下的坐标值:

实际情况下,世界环境中的物体点P给出的是点P相对于世界坐标系下的坐标值:

所以为了使用内参成像模型的公式,就需要将点P在世界坐标系下的位姿p^{w}转为点P在相机坐标系下的位姿

相机外参:

相机外参本质上就是一个变换矩阵,用于将世界坐标系中的3D点转换到相机坐标系

(关于变换矩阵以及坐标系变换--链接)

外参成像模型:

旋转矩阵R:

_{w}^{c}\textrm{R},我个人理解是世界坐标系到相机坐标系的旋转矩阵。

就是求解的是相机坐标系下的坐标。

T:_{w}^{c}\textrm{T}

我个人理解是世界坐标系到相机坐标系的变换矩阵。

T就是相机外参。

-- 相机外参就是世界坐标系到相机坐标系的变换矩阵。

成像畸变

径向畸变

  • 桶形畸变(Barrel Distortion):图像边缘向外膨胀,中心收缩(常见于广角镜头)。

  • 枕形畸变(Pincushion Distortion):图像边缘向内收缩,中心膨胀(常见于长焦镜头)。

原因:

光线穿过镜头时,边缘的光线比中心的光线折射更强烈(桶形畸变)或更弱(枕形畸变)。

桶形径向畸变会导致像素点在像素坐标系上的位姿(x,y)向中心靠拢。

需要通过校正,扩散像素点坐标。

枕形径向畸变会导致像素点在像素坐标系上的位姿(x,y)扩散。

校正

  • 点:即像素点,即像素坐标。

  • 图像中心(Principal Point)
    光轴与成像平面的交点,坐标为 (cx,cy)(cx​,cy​)(单位:像素),由相机内参定义。

切向畸变

相机镜头和图像传感器平面由于安装误差导致不平行,因此引入了切向畸变。

校正

径向畸变和切向畸变融合校正

相机标定

单目相机标定

目的:相机标定就是进行相机内参和畸变进行标定,利用标定得到的内参K和畸变系数k_{1},k_{2},k_{3},p_{1},p_{2}对原始图像进行修正。

一般相机出厂时就自带相机内参参数。

双目相机的标定

与单目标定不同的是,双目相机除了标定相机内参外,还要标定相机外参。

http://www.xdnf.cn/news/2797.html

相关文章:

  • 【MCP Node.js SDK 全栈进阶指南】高级篇(4):自定义传输层开发
  • 前端在平常的开发中高度还原ui图的思考规范
  • 阿里开源Qwen3:大语言模型的新突破
  • AI驱动软件工程:SoftEngine 方法论与 Lynx 平台实践分析
  • 「Mac畅玩AIGC与多模态08」开发篇04 - 基于 OpenAPI Schema 开发专用 Agent 插件
  • MySQL 8.4.4 安全升级指南:从漏洞修复到版本升级全流程解析
  • Spring MVC中自定义日期类型格式转换器
  • 单片机-89C51部分:8、定时器
  • 6.3 数据分析与决策支持:数据洞察生成与决策辅助系统
  • 机器学习实操 第一部分 机器学习基础 第6章 决策树
  • jmeter-Beashell获取http请求体json
  • 在K8S迁移节点kubelet数据存储目录
  • 道德经解读分析
  • Android 进阶开发:深入掌握 ProgressBar 的使用与高级技巧
  • 文献阅读(三)基于干旱强度和恢复时间的生态系统恢复力评估|《Agricultural and Forest Meteorology》
  • 在 Ubuntu 上离线安装 ClickHouse
  • 【数据结构】图论存储结构深度解析:邻接多重表如何实现无向图O(1)删边?邻接矩阵/链表/十字链对比
  • 无锡哲讯科技:SAP财务系统——赋能企业智慧财务管理
  • 开发iOS App时,我常用的一款性能监控小工具分享
  • 数据库中DDL、DML、DCL的区别是什么?
  • Webug4.0通关笔记04- 第6关宽字节注入
  • 洛谷P12238 [蓝桥杯 2023 国 Java A] 单词分类
  • 从车道检测项目入门open cv
  • 【图片识别成表格】批量图片识别成excel表格,批量识别图片区域文字保存到excel表格,基于WPF和腾讯OCR的识别方案
  • MyBatis 使用 POJO 参数动态查询教程
  • leetcode继续c++10/100
  • UDP数据报和TCP流套接字编程
  • BUUCTF——Online Tool
  • 日本IT行业|salesforce开发语言占据的地位
  • Java后端开发day39--方法引用