相机内参标定和畸变校正以及张氏标定法

2024-01-20 08:20

本文主要是介绍相机内参标定和畸变校正以及张氏标定法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一些坐标系

       世界坐标系:是一个假想的坐标系,用作一般参考,可根据需要自由定义。
       在我们的双目相对位姿测量系统中,世界坐标系一般定义与左相机的摄像机坐标系重合,这样的话左相机的R为单位矩阵,T为零向量。双目视觉中一般将世界坐标系原点定在左相机或者右相机或者二者X轴方向的中点。

相机标定

       对于N张无畸变的图像来说,共有4个内参+6N个外参来标定,每张棋盘图上有4个有效的角点,可以提供8个约束,则需要8N>=4+6N8N>=4+6N8N>=4+6N,则至少需要2张无畸变的图像可以求出相机的内参和外参,实际上一般可以取10张,从而利用最小二乘得到更精确的解。在求出了内参和外参后,即可根据剩余的点坐标求出畸变相关参数。
图像坐标和像素坐标
       主要是定义的原点不同,图像坐标u,v原点在图像中心即光心,像素坐标x,y 原点一般在左上角;图像坐标系的单位是mm,属于物理单位,而像素坐标系的单位是pixel。
相机标定参数例子
       200万pixels工业摄像机为例:已知摄像头的焦距为4mm,像片的尺寸大小为640x480,传感器尺寸为5856 μm x 3276 μm,像素大小为3μm x 3μm。由上面已知条件可求得内参矩阵 f x , f y fx,fy fxfy为焦距,一般情况下,二者相等,u0、v0为主点坐标(相对于成像平面),beta为坐标轴倾斜参数,理想情况下为0。
在这里插入图片描述
       将内参矩阵分解为切变(shear,类似于将长方形压成平行四边形的变形方式)、缩放,平移变换,分别对应轴倾斜、焦距、主点偏移, 右边三个矩阵依次是:2D平移、2D缩放、2D切变。缩放和切变可改变顺序

透镜畸变及校正模型

径向畸变

       最常见的畸变,沿着成像镜头半径方向凹凸的坍缩和膨胀,即枕形或桶形。产生原因是光线在原理透镜中心的地方比靠近中心的地方更加弯曲。
在这里插入图片描述
       成像仪光轴中心的畸变为0,沿着镜头半径方向向边缘移动,畸变越来越严重。畸变的数学模型可以用主点(principle point)周围的泰勒级数展开式的前几项进行描述,通常使用前两项,即k1和k2,对于畸变很大的镜头,如鱼眼镜头,可以增加使用第三项k3来进行描述,成像仪上某点根据其在径向方向上的分布位置,调节公式为:

切向畸变
       切向畸变是由于透镜本身与相机传感器平面(成像平面)或图像平面不平行而产生的,这种情况多是由于透镜被粘贴到镜头模组上的安装偏差导致。
在这里插入图片描述

       综上,我们一共需要5个畸变参数(k1、k2、k3、p1和p2 )来描述透镜畸变。

张氏标定法

       只关注了影响最大的径向畸变(k1,k2),并忽略3阶以上的畸变量。(阶数,即求导次数,不同于数的几次幂数)
在这里插入图片描述

注意事项

  • Corners中的角点坐标顺序排列规律不一定是以行从左上到右下。
  • 如果一部相机的分辨率变为原来的n倍而其他地方不变,那么它的内参也将变为原来的n倍

这篇关于相机内参标定和畸变校正以及张氏标定法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625349

相关文章

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

如何给MySQL设置远程访问?(官方校正版)

在现代数据驱动的世界中,数据库的灵活性和可访问性变得尤为重要。设置MySQL的远程访问不仅仅是为了方便,还为企业和开发者提供了多种优势。无论是在分布式团队协作、跨地域数据管理,还是在系统集成和实时数据访问方面,远程访问都能显著提升效率和生产力。 目录 1. 修改MySQL配置文件 2. 重启MySQL服务 3. 创建远程访问用户 4. 配置防火墙 a. 使用UFW(适用于Ubun

LabVIEW 控制 Tucsen 相机

LabVIEW 控制 Tucsen 相机 ucsen 是一家知名的显微镜相机制造商,其相机产品广泛应用于科研、工业和医疗等领域。本文将介绍如何使用 LabVIEW 软件来控制 Tucsen 相机,涵盖相机的基本情况、硬件和软件要求、具体的控制步骤和编程示例。通过使用 LabVIEW,可以实现相机的图像采集、处理和分析,增强实验和工业应用的效率和精度。 一、Tucsen 相机概况 1.1 相机

ABB机器人教程:工具载荷与有效载荷数据自动标定操作方法

目录 概述 工具载荷自动标定前的准备工作 进入载荷识别服务例行程序 工具载荷识别与标定操作 有效载荷识别与标定操作要点 4轴码垛类型机器人载荷数据标定说明 概述 在使用ABB机器人前需要正确标定一些关键数据,其中就包含载荷数据。理论上讲,安装在机器人上的所有设备均需标定其载荷数据。如果没有标定或没有准确标定载荷数据,会导致机器人机械结构过载,这样不仅机器人无法发挥其最大能力,而

[每周一更]-(第102期):认识相机格式Exif

文章目录 EXIF数据包含的信息读取EXIF数据的工具和库EXIF数据读取示例(Go语言)想法参考 相机拍摄的照片,在照片展示行无水印信息,但是照片属性中会包含比较丰富的信息,相机品牌、型号、镜头信息等,这些我们就可以利用起来, 采用程序形式来进行构造属于自己的水印,市面上常见的水印相机是类似流程,那么我们就看看什么是Exif 可交换图像文件格式(英语:Exchan

Matlab 单目相机标定(内置函数,棋盘格)

文章目录 一、简介二、实现代码三、实现效果参考资料 一、简介 具体的标定原理可以参阅之前的博客Matlab 单目相机标定(内置函数),这里实现对棋盘格数据的标定过程。 二、实现代码 getCameraCorners.m function [camCorners, usedImIdx, imCheckerboard] = getCameraCorners(cali

去水印助手,小熊录屏,OldRoll复古胶片相机

我们将带大家了解三款特色应用,软件是经过大佬处理过的,都非常的好用!今天分享给大家!如果你也喜欢这几款软件不要忘记给博主点击点赞和再看哦! 软件获取链接在链接的底部: 一键去水印助手 无论您是在各大社交平台上寻找视频无水印,还是需要处理图片中的水印烦恼,这款助手都能为您解决燃眉之急,更重要的是,一次登录即可成为终身会员,让您尽情享受无水印世界的精彩。 【资源名称】:一键去水印助手 【资源

【MATLAB源码-第229期】基于matlab的有源功率因数校正仿真,采用PI调节改善功率因数;改善后达到99%.

操作环境: MATLAB 2022a 1、算法描述 一、整体结构概述 有源功率因数校正(APFC)是一种用于提高电力系统功率因数的技术,通过控制电流的波形,使其与电压的波形保持一致,从而减少无功功率的产生,提高系统的效率。该仿真模型采用PI调节器来实现功率因数的校正。以下将对图中各个模块和其连接进行详细描述。 二、输入电源部分 交流输入电压(Vg):这是系统的输入电源,通常为交流电源

手把手教你实现条纹结构光三维重建(3)——相机投影仪标定

我们都知道,投影仪其实就是个反向相机,如果我们了解双目标定的原理,那么相机和投影仪的标定就不难,关键是我们怎么得到投影仪在图像特征点(比如棋盘格角点)上的像素位置。 投影仪也类似于一个cmos,图像有像素位置(u,v),那么通过我们上一讲的条纹解码,给图像添加水平方向和垂直方向的投影,就可以通过解码,得到图像对应的投影相位值,此相位值就是投影的像素坐标(xp,yp)。如下图所示,具体的原理可以参

小程序自定义相机

1.要求相机是圆形的,因为小程序调用原生相机,永远在屏幕最顶层,只能在camera标签里使用cover-view和cover-image标签,用一张图片盖在相机上,效果如下图: <!-- 调用摄像头的组件--> <view class='cameraBox' > <camera class='camera' device-position="front" flash="off" bind