当前位置:首页 > 嵌入式 > 嵌入式分享

相机标定的核心是建立“世界坐标→相机坐标→图像坐标→像素坐标”的四级映射模型,这也是所有标定算法的基础。其中,最核心、最常用的是针孔相机模型——尽管实际相机存在镜头畸变,但针孔模型是理解成像原理的基础,也是后续畸变校正的前提。

四级坐标系统解析

要理解映射过程,首先需要明确四个关键坐标系统的定义,这是建立标定模型的基础:

1. 世界坐标系(World Coordinate System):用于描述真实世界中物体的三维位置,是整个标定过程的参考基准,通常人为设定(如以标定靶标的某个角点为原点,X轴、Y轴平行于靶标平面,Z轴垂直于靶标平面)。世界坐标系的单位是实际物理单位(如毫米、米),比如棋盘格靶标中,每个格子的边长为20mm,那么靶标上每个角点的世界坐标就可以精准确定。

2. 相机坐标系(Camera Coordinate System):以相机的光学中心为原点,X轴、Y轴平行于相机成像平面的水平和垂直方向,Z轴为相机的光轴(垂直于成像平面,指向拍摄方向)。相机坐标系的单位也是物理单位,用于描述物体相对于相机光学中心的三维位置。

3. 图像坐标系(Image Coordinate System):二维坐标系,以成像平面的中心为原点,X轴、Y轴分别平行于成像平面的水平和垂直方向,单位是物理单位(如毫米)。它是连接三维相机坐标与二维像素坐标的桥梁,描述了物体在成像平面上的物理位置。

4. 像素坐标系(Pixel Coordinate System):二维坐标系,以图像的左上角为原点,X轴向右、Y轴向下,单位是像素(Pixel),也就是我们实际看到的图像中像素点的坐标(如一张1920×1080的图像,像素坐标范围为X∈[0,1919],Y∈[0,1079])。

针孔相机模型的映射关系

针孔相机模型假设相机的成像过程是“光线通过针孔投射到成像平面”,其核心映射关系分为两步:世界坐标→相机坐标,相机坐标→图像坐标→像素坐标。

第一步,世界坐标到相机坐标的转换:通过旋转矩阵R(3×3)和平移向量t(3×1)实现,这两个参数就是后续要讲的“外参”。旋转矩阵R描述了相机相对于世界坐标系的姿态(俯仰、偏航、滚转),平移向量t描述了相机光学中心相对于世界坐标系原点的位置。转换公式为:,其中是世界坐标系中的三维点,是该点在相机坐标系中的三维坐标。

第二步,相机坐标到图像坐标的转换:根据针孔成像的相似三角形原理,相机坐标系中的三维点(Z_c为该点到相机光学中心的距离,即深度),投射到图像坐标系中的二维点,公式为:,,其中f是相机的焦距(物理焦距,单位为毫米),是相机的核心内参之一。

第三步,图像坐标到像素坐标的转换:由于图像坐标系的原点的是成像平面中心,而像素坐标系的原点是图像左上角,且像素的物理尺寸(每个像素的宽度和高度,单位为毫米/像素)为dx、dy。

将三步合并,即可得到世界坐标到像素坐标的完整映射公式,这也是相机标定的核心数学基础。但需要注意的是,针孔模型是“理想模型”,实际相机镜头存在畸变,因此需要在该模型基础上加入畸变校正项,才能得到更精准的映射关系。

镜头畸变模型:修正实际成像偏差

实际相机镜头(尤其是广角镜头、鱼眼镜头)会存在畸变,导致成像后的图像出现“变形”——比如直线变成曲线、物体边缘拉伸或压缩。畸变主要分为两类:径向畸变和切向畸变,这也是相机标定中需要重点修正的误差。

1. 径向畸变:由镜头的光学特性导致,是最主要的畸变类型,表现为图像中心区域的畸变较小,边缘区域的畸变较大。根据变形方向,又可分为桶形畸变(图像边缘向内收缩)和枕形畸变(图像边缘向外拉伸)。径向畸变的校正公式通常采用多项式拟合,核心参数为径向畸变系数(高阶系数可根据精度需求增加),通过这些系数可以修正像素坐标的径向偏移。

2. 切向畸变:由镜头与感光元件之间的安装偏差(如倾斜、偏移)导致,表现为图像中物体的位置出现平移或倾斜。切向畸变的校正参数为切向畸变系数,用于修正像素坐标的切向偏移。

在实际标定中,畸变系数会与内参、外参一起通过算法求解,最终实现对图像的畸变校正,让修正后的图像更接近真实场景。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

嵌入式系统开发内存管理是影响系统性能和稳定性的关键因素。传统单一分配策略(如纯系统malloc或纯自定义分配器)往往难以兼顾灵活性、效率和确定性需求。混合分配策略通过组合系统malloc和自定义分配器,在关键路径使用确定...

关键字: 内存管理 malloc

在智能家居场景中,传统触控交互存在卫生隐患与操作距离限制,而基于STM32F4的低功耗手势识别节点通过毫米波雷达与机器学习算法的融合,实现了无需接触的精准操控。该方案在STM32F407VET6(168MHz主频,192...

关键字: 智能家居 隔空操控

物联网设备普遍面临内存资源高度受限的困境。以STM32F103为例,其20KB RAM需同时承载任务栈、通信协议栈及业务逻辑。传统FreeRTOS默认的heap_3策略(封装标准库malloc/free)存在三大致命缺陷...

关键字: 物联网 内存

嵌入式系统开发中,内存碎片化始终是困扰程序员的难题。以某工业控制器项目为例,系统需连续运行5年以上,期间频繁分配/释放不同大小的内存块(从16字节到4KB不等)。传统malloc/free机制在运行3年后导致内存利用率骤...

关键字: 自定义内存池设 C语言

在河南临颍县的智慧辣椒种植基地,一排排传感器正以每秒1次的频率采集土壤湿度数据。这些数据通过W5500以太网模块与LoRa无线模块的组合,经MQTT协议上传至云端。然而,当网络突然中断时,设备能否确保关键灌溉指令不丢失?...

关键字: MQTT QoS

在农业现代化进程中,物联网技术正成为提升生产效率、降低资源消耗的核心驱动力。针对传统农业物联网方案中存在的网络覆盖不足、设备功耗高、部署成本高昂等问题,本文提出一种基于W5500以太网模块与LoRa无线通信模块的低成本解...

关键字: 农业物联网 W5500 LoRa

Linux驱动寄存器操作是硬件交互的核心环节。然而,多核处理器架构、中断异步性以及编译器优化等因素,可能导致寄存器访问出现竞态条件(Race Condition)和内存乱序(Memory Reordering)问题。这些...

关键字: Linux驱动 寄存器

在嵌入式C项目开发中,传统调试方法依赖串口输出和人工检查,存在效率低、覆盖率不足等问题。以某医疗设备项目为例,开发团队曾花费40%工时在调试环节,其中60%时间用于重复验证基础功能。Unity测试框架通过自动化测试用例执...

关键字: printf Unity框架
关闭