相机标定精度研究

news2024/12/27 13:42:43

张建贺实验设计

1 外参重复性精度测试:

(同内参,不同外参特征点,9选择4,组合)

1 外参几乎没有什么重复性误差??? 只要4对都正确,则刚性匹配基本正确

解释:激光点云到相机 转换本身的刚性匹配,而相机坐标系到图像坐标系是非刚性匹配。

(不同内参,同特征点外参)

猜测结论:
1 内参重复性误差大的原因
内参的求解是非线性求解,标定时图像采样姿态分布不同,会导致覆盖不到的图像区域匹配误差大的情况。

2 点云投影图像局部不准,且主要出现在图像的边缘,是因为内参fxy cxy,k1,k2,p1,p2,而不是外参R,t,
解释: 因为畸变大矫正插值后出现横向拉伸,原因是内参是PnP重投影误差最小化求解的局部最优解

2 内参重复性精度测试:(多组照片,相差结果如何)

有人做过,利用不同棋盘格(大小,格子数量,)结果对比 fx,cx,k1,p1
在这里插入图片描述
实验设定:

每组测试,拍摄几十张图像,然后从中随机选择N幅图像用于标定。随机标定100次。标定使用MATLAB的工具包。将标定得到的参数,显示在四张图中(没显示k3参数)。图中每个点,代表某次参数的标定结果。不同形状的点代表不同的组。
opencv 内参返回fx,fy,cx,cy
D的排序
(k1,k2,p1,p2,k3)
在式(5.11)描述的纠正模型中,对于畸变较小的图像中心区域,畸变纠正主要是 k1
起作用。而对于畸变较大的边缘区域主要是 k2 起作用。

fy(494±10)
fx(492±10)
cx(387±7)
cy(282±7)
k1(-0.33±0.03)
k2(0.2±0.8)
p1(-0.5±3.5)
p2(1.5±1.5)

在这里插入图片描述
在这里插入图片描述

标定方法描述

相机固定,移动标定板

1 内外参标定重复性误差对比试验

主要是fx,fy,ux,uy的变化比较大,R,t的值比较稳定。应该是在单目标定那一步就出现了不稳定情况。

1 张正友棋盘格小孔成像模型 相机内参标定重复性精度测试

opencv内参标定沿袭了张正友方法,分4步骤:计算单应性矩阵,计算内参初值,外参初值,LM优化。

1 同一个组相片计算内参重复性误差几乎为0,且与同一个棋盘格不管设置边长1cm或10cm结果不变

好解释,因为
opencv内参标定沿袭了张正友方法,分4步骤:计算单应性矩阵,计算内参初值,外参初值,LM优化。
同一组相片角点数据来源相同,收敛结果相同

2 多组照片 分别计算内参外 K和d的重复性误差较大,为什么?

从计算角度来解释其中的原因

1.计算的内外参数的初值不同,又因为标定中的非线性优化,收敛到局部的极小值,但跟全局的极小值接近。
2.标定获得数据不稳定,首先可能采集图像的时候,不同的姿态下的图像不够多,或者图像的姿态分布的空间不够大,得到一个有偏的初值。
3·标定板的大小不合适,这个影响也很大,我的理解是这样的,因为计算homograph的时候内外参数耦合在一起,内外参数是依赖外参的单位正交性计算得出,一个不合适的标定板的大小产生过小或者过大的平面点,容易导致homography的数值不稳定。感觉实验中B的标定板是比较合适的,因此结果比较准确。

从成像角度解释

先给结论:这是由于感光器噪音引起的。

相机的感光器本身就是一个传感器,传感器的作用是将各种外界信号转化为电信号,这个转化过程存在许多噪音。

对于太便宜的相机,所得图像质量太差,导致标定精度低的情况,有一些工程解决方法:标定板姿态变化时的倾斜角度不要太多,尽量正对标定板。标定板太倾斜时,角点提取受光照的影响也会增大。2. 将opencv的cv::moment改成cv::FitEllipse,后者是通过角点轮廓拟合得到圆心的,相对稳定。

从成像模型

1.首先是相机模型,一般针孔相机模型是含有畸变的,包括径向畸变和切向畸变,但是标定算法一般只考虑低阶项,做了近似。之前尝试过用MEI和kannala-brandt模型去标定鱼眼相机,得到的重投影误差也是很接近的,但是模型的参数是不一样的;也尝试用SCARAMUZZA模型,但是标定的效果反而并不好,初步分析是因为参数太多出现过拟合。

2.标定板,常用的标定算法(OpenCV, ROS等)都会假设标定板上面的角点是共面的,但是实际的情况并不是如此,这个和材料的精度是有关系的。从材料上来说,标定板有铝基板,浮法玻璃板等,平整程度从0.01毫米到1mm;从打印材料来说,纸面的打印材料对成像的像素精度也是有很大的影响的;从尺寸上来说,标定板的尺寸从40cm到2米不等,对于汽车的相机的标定通常使用长宽都在1米以上的标定板。

3.角点提取算法及优化算法。角点提取算法和后端的优化算法也会带来系统误差,这个可以通过更多的测量数据来减小,即在不同角度采集更多的数据进行标定;如果有需要的话,也可以跟标定板打光,保证整个标定板光照的一致性,减小环境光对角点提取的影响。

总的来说,相机的内参标定需要选中合适的模型,模型太复杂会导致过拟合,模型太简单,不容易描述相机的真实内参;其次标定的材料都尽量选则比较好的,如果有需要,也可以采用打光等手段;系统误差,只能通过大量的数据多次测量来消除。

从采集图像的差异来看

如果标定板只占据图像的一小部分,比如说没有覆盖左上部分,如果这样的图像比较多,则可能导致最优化落入局部最优,最终的重投影误差可能不大,但是两组这样的图像的标定结果可能差很大。

以我的经验,我认为,想提高相机标定的精度和稳定性(同一相机的标定结果方差较小) 的最好方法是,用足够大的标定板,可以覆盖整个图像,并且控制点的数量较多,标定板位姿越多越好。

内参标定结论

1 背光板
2 大尺寸
3 多格子
4 多姿态,且位置拍摄数量均匀
5 提高特征检测精度

1 用高精度透明标定板配合背光源,相机用小光圈,短曝光时间,并严格安装于三脚架上使用,减少环境光与抖动的影响,提升拍摄得到的标定板角点特征的锐度;
2 采用合理的多角度拍摄,并且尽量让标定图片出现在相机画幅的各个位置,避免相同姿态下的大量拍摄;3 采用精度更高鲁棒性更好的特征检测算法,提升特征检测的精度。
https://www.bilibili.com/video/BV1eE411c7kr/?vd_source=f65e306d0af6803beb4c44df1a43e7af
作者:沈毅君
链接:https://www.zhihu.com/question/312986053/answer/2330621055
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/635796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Diffusion扩散模型学习2——Stable Diffusion结构解析-以文本生成图像为例

Diffusion扩散模型学习2——Stable Diffusion结构解析 学习前言源码下载地址网络构建一、什么是Stable Diffusion(SD)二、Stable Diffusion的组成三、生成流程1、文本编码2、采样流程a、生成初始噪声b、对噪声进行N次采样c、单次采样解析I、预测噪声II、…

转换vmware的vmdk格式为qcow2格式

一、系统环境 操作系统:Win11 虚机系统:VMware Workstation 16 Pro 16.2.3 build-19376536 转换工具:qemu 8.0.2 二、下载安装qemu模拟器 查看qemu版本 Download QEMU - QEMUhttps://www.qemu.org/download/ 下载windows版的安装文件&…

MySQL索引事务(二)

1、索引 1.1、索引的分类 1.1.1、按数据结构分类:Btree,Hash索引,Full-text索引。 InnoDBMylSAMMemmoryBtree索引√√√Hash索引Full-text索引√(MySQl-version5.6.4)√ Btree索引是MySQL中被存储引擎采用最多的索引类型。它适用于全键值、…

chatgpt赋能python:Python编程技巧之复制粘贴技巧

Python编程技巧之复制粘贴技巧 Python作为一种富有表达力的编程语言,已经成为越来越多人的选择。但在编写代码时,有时候我们需要将别人的代码复制粘贴到自己的代码中。如何正确地复制粘贴代码?下面让我们来探讨一下。 复制和粘贴 在复制和…

车载以太网 - 物理层

OSI模型与车载以太网对应关系 OSI标准模型: l、物理层 II、数据链路层 lll、网络层 IV、传输层 V、会话层 VI、表示层 VII、应用层 车载以太网的OSI 参考模型如图所示,该模型中没有对5-7层进行严格的区分;比如SOME/IP、DolP、XCP等协议则是将5、6、7层描…

ML算法——逻辑回归随笔【机器学习】

文章目录 3、逻辑回归3.1、理论部分3.2、sklearn 实现3.3、案例 3、逻辑回归 3.1、理论部分 Logic Regression (LR),逻辑回归的因变量是二分类的,而不是连续的。它的输出是一个概率值,表示输入数据属于某个类别的概率。如果该值为0.8&#x…

Building a Cloud Based Data Warehouse on Google Big Query Using Qlik Compose

Learn how to build a cloud based data warehouse using Qlik Compose on Google Big Query How to Build Data Integration Pipelines with Qlik and Databricks - YouTube Google BigQuery是一个具有成本效益、高度可扩展的无服务器数据仓库,专为业务敏捷性而设…

概率图简介

引言 本文介绍概率图模型的部分基础知识,希望学习完本文之后能更好地理解HMM和CRF模型。 概率论基础 本节简单回顾一下相关的概率论知识,概率论有两条重要的基本规则。 分别为乘法规则(product rule)和加和规则(sum rule),假设有两个随机…

chatgpt赋能python:Python3.9.7安装指南

Python 3.9.7安装指南 Python是一种高级编程语言,得到了越来越多的使用,并且在机器学习、数据科学和网络开发中变得越来越重要。本篇文章将向大家介绍如何安装Python 3.9.7版本。 下载Python 3.9.7 首先,我们需要下载Python 3.9.7。你可以…

chatgpt赋能python:Python怎么安装Flask

Python怎么安装Flask Python是一种高级编程语言,常用于 Web 开发、人工智能、机器学习等领域。同时,Flask也是一个十分著名的Python Web框架,具有灵活、轻量级、易于扩展等特点。那么,如何在Python环境中安装Flask呢?…

chatgpt赋能python:Python安装PySpark:从入门到精通

Python安装PySpark:从入门到精通 PySpark是使用Python编写的Apache Spark API。它提供了一个Python接口来与Spark的分布式计算引擎进行交互。本文将介绍如何在Python中安装PySpark。 环境准备 在安装PySpark之前,您需要先安装以下依赖项: …

chatgpt赋能python:如何安装Python3.4

如何安装Python 3.4 简介 Python是一种流行的编程语言。它易于学习,具有可读性,且适用于多种用例。Python的版本非常多,但是Python 3.4是最新的稳定版本之一。 在本文中,我们将介绍如何更轻松地安装Python 3.4。 步骤 安装Py…

NLP学习笔记七-多层RNN和双向RNN

NLP学习笔记七-多层RNN和双向RNN 接着之前写的博客内容,多层RNN,其实就是在,simple RNN的基础上,再套一层或多层RNN单元。 看如下网络结构图: 上图中A就是表示一个RNN网络,这里,其实有一个疑…

chatgpt赋能python:Python与前端连接:使用Python的Web框架构建后端API

Python与前端连接:使用Python的Web框架构建后端API Python是一种强大的编程语言,越来越受到开发者的欢迎。但是,对于Web开发,Python并不是一种前端语言。那么,如何将Python的后端与前端连接起来?本文将介绍…

Java ~ Reference ~ Cleaner【总结】

前言 文章 相关系列:《Java ~ Reference【目录】》(持续更新)相关系列:《Java ~ Reference ~ Cleaner【源码】》(学习过程/多有漏误/仅作参考/不再更新)相关系列:《Java ~ Reference ~ Cleaner…

[java]关于Session关于Token关于JWT

目录 关于Session 关于Token 关于JWT 关于Session HTTP协议是一种无状态协议,即:当某个客户端向服务器发起请求,服务器端进行处理,后续,此客户端再次发起请求,服务器端并不能直接知道它就是此前来访过的…

chatgpt赋能python:Python怎么多行输入?教你高效开发!

Python怎么多行输入?教你高效开发! 1. 介绍 Python是一种可读性高、可编程性强、拥有丰富的第三方模块和库的高级编程语言。作为典型的解释型语言,它可在多个平台上进行开发和运行,凭借其优雅、简洁、高效的语法风格和强大的功能…

Linux下C/C++ 多线程SSH扫描与暴力攻击

Secure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 为什么需要SSH 如果没有SSH,绝大…

chatgpt赋能python:Python怎么安装skimage?

Python怎么安装skimage? 如果你之前使用Python编程,你可能会遇到需要安装第三方库的情况。对于图像处理任务,你可能需要用到scikit-image(也称为skimage)这个库。本文将提供一个详细的指南来安装skimage。 1. 确保你…

【JVM篇】类加载过程详解

目录 1、类加载过程概述 2、加载 3、连接 3.1 验证 3.1.1 文件格式验证 3.1.2 元数据验证 3.1.3 字节码验证 3.1.4 符号引用验证 3.2 准备 3.3 解析 4、初始化 1、类加载过程概述 想必大家一般在网上看类加载过程的资料时,通常资料只会将类加载过程概括…