摄像头内参准确性验证方法

前言

摄像头内参标定出来后,标定结果是否准确?有些内参准确性的验证方案需要很大的场地,且有很多误差源不好控制(特别是对视野比较大的摄像头),惠州市华阳数码特电子有限公司发明了一种占用场地小测试精度高的方法,已投入实际使用,效果良好。(本文文稿由华阳数码特提供)

目录:

一.M公司的内参验证方案简介

二.M公司内参验证方案的实施难点

三.华阳的解决方案-测平行光管的夹角

四.方向误差分布的测量方法

附一.求光线方向的算法

M公司的内参验证方法简介

1.摄像头的入瞳中心与两个目标点之间的距离约20米,两个目标点之间的距离约10米,距离测量精度不低于2mm

图片

图片

2 让两目标点水平或垂直成像在摄像头不同的视野区域(共16图)

图片

3.提取两目标点的角点坐标(亚像素),根据内参值及摄像头入瞳中心与目标点的距离,计算出两目标点的距离(这与测两目标点与摄像头入瞳中心的夹角是等效的)

4.比较计算出的两目标点间的距离与实测距离的差异,用于判断内参的准确性

M公司内参验证方案的实施难点

  1. 需要很大的场地(20多米 x 10多米)

2. 比较难测准摄像头入瞳中心与目标的距离 --长度测量设备比较难对齐摄像头入瞳中心(一般在摄像头第一镜片下几毫米的地方,是一个设计值)

3. 对于视野较大的摄像头,由于摄像头需要较大幅度的转动,比较难控制摄像头入瞳中心相对于转动中心的平移量。

华阳的解决方案-测平行光管的夹角

图片

用两根或多根平行光管(模拟距离无穷远)代替M公司方案的成像目标点,通过平行光管内十字鞍点的像坐标及内参值计算出平行光的方向(计算方法见附一),从而算出两平行光管的夹角,此计算出的夹角与平行光管间的实际夹角进行对比,确认内参的准确性

优点如下:

1.占用场地小

2.摄像头入瞳中心的平移,不影响测量结果(当然要求平行光管内的目标鞍点在摄像头视野内)

3.对摄像头的安装要求低,摄像头的转动中心与摄像头入瞳中心的重合性要求较低

4.还可以在转动机构的精度下,计算视场内多点的方向误差(见第四节)

例子:两平行光管角度测量值及与实际值的差异:

例子中:-10000表示无效数值(目前只装了两只光管,没有装第三只光管),角度单位为“度”

图片

方向误差分布的测量方法

当摄像头转动一定角度时,平行光管相对摄像头的方向与通过像点坐标及内参计算出的方向是有差异的,差异程度反映了内参的准确性。

这种测量方法与重投影误差的区别:

A: 误差不是在像素坐标系(像空间)下表示,而是在相机坐标系下(物空间)表示,更能反映由于内参的偏差造成物体方向判断的偏差程度

B: 本方法中虽然摄像头转动时,会取多张图,但这些图只对应一组外参(而不是传统方法中每张图卡有一组外参),也就是平行光管组相对于相机的初始方向(三个自由度的转动向量)是待求的,摄像头转动时,平行光管组相对相机的方向是根据转动的角度确定的。由于大大减少了优化算法的自由度,计算出的结果比传统的重投影误差更能说明内参是否准确。

具体而言,优化算法只有如下几个自由度:

1.平行光管组相对于相机坐标的初始方向(三个自由度)

2.转轴X在相机坐标下的方向向量(单位向量,两个自由度)

3.转轴Y在相机坐标下的方向向量(单位向量,两个自由度)

测试结果例:

方向差异分布图(采用极坐标,下面圆的半径对应FOV)

角度单位是度,测试精度0.06度(转台的转角精度)

红色虚线表示Sensor边界,箭头表示按像点坐标及内参计算的光线方向与实际光线方向的差异(箭头的长度相比FOV的刻度放大了20倍)

图片


附一.利用像点坐标及内参计算光线方向的算法

1.光线方向可以用一个单位向量来表示,因此用两个参数来表示,视角θ与方位角φ,Xc/Yc/Zc为相机坐标系

图片

2.光线方向的单位向量为(sinθ*cosφ,sinθ*sinφ,cosθ),将此相机坐标代入畸变模型公式,就可列出两个方程,由于像点坐标(u, v)是已知的,通过解此两个非线性方程,可以求出θ与φ

以针孔模型为例,两个方程如下:

图片

3.两个光管的单位向量求出后,通过两向量的点乘算出两向量夹角的余弦,进而算出两向量的夹角。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何开发一个求职招聘小程序?详细步骤解析与教程

一、确定需求和功能 在开发求职招聘小程序之前,需要明确需求和功能。通过对市场和用户需求的调研和分析,确定小程序需要具备哪些功能,如职位发布、简历投递、在线沟通、面试安排等。 二、选择开发方式 求职招聘小程序的开发方式有多种选择…

Vim编辑器学习

B站学习vim指令链接 1:vim下有两种模式,一种是命令模式,一种是编辑模式 2:命令到编辑模式,按键盘i,编辑到命令格式按Esc 3::wq 保存并退出 :wq code.c保存并把文件命名为…

nginx发布vue项目

1、docker拉取nginx镜像 docker pull nginx:latest2、docker安装nginx # 第一个80端口是主机端口,第二个80端口是内部端口,主机的端口 80 映射到容器内部的端口80 docker run -d --name nginx -p 80:80 -p 443:443 nginx:lateste3、输入IP访问 说明我们…

docker形式简易部署kibana

文章目录 前言一、简易部署1.获取镜像2.启动应用4.访问页面5.总结 前言 记录下使用docker部署kibana服务的过程 一、简易部署 1.获取镜像 docker pull kibana:8.8.0[rootnginx ~]# docker pull kibana:8.8.0 8.8.0: Pulling from library/kibana Digest: sha256:a23d96ae0ae…

2023年11月在线IDE流行度最新排名

点击查看最新在线IDE流行度最新排名(每月更新) 2023年11月在线IDE流行度最新排名 TOP 在线IDE排名是通过分析在线ide名称在谷歌上被搜索的频率而创建的 在线IDE被搜索的次数越多,人们就会认为它越受欢迎。原始数据来自谷歌Trends 如果您相…

于道 - 前端项目启动步骤参考

1. 安装 启动过程有9个步骤: 1.1 安装 Node JS , V18版本的 (安装步骤省略) 1.2 安装 npm install -g yarn ,node JS里边好像自带npm ,通过npm的命令安装 yarn 1.3 切换到项目中去安装,npm install &a…

使用决策树预测隐形眼镜类型

任务描述 本关任务:编写一个例子讲解决策树如何预测患者需要佩戴的隐形眼镜类型。使用小数据集,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要佩戴的镜片类型,一旦理解了决策树的工作原理,我们甚至也…

mongodb分组查询

通过userId分组,得到结果字段为:_id和count db.my_solitaire.aggregate([{$group: {_id: "$userId", count: {$sum: 1}}}])通过userId分组得到分组字段和其他想要的字段,得到_id,userName,count userName 为…

【AICFD案例教程】汽车外气动-AI加速

AICFD是由天洑软件自主研发的通用智能热流体仿真软件,用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程,帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

Assertion `srcIndex < srcSelectDimSize` failed

报错如下&#xff1a; 将设备改为CPU&#xff0c;就定位到错误了&#xff1a; Traceback (most recent call last):File "./training.py", line 713, in <module>train_body_pixel()File "./training.py", line 685, in train_body_pixeltrainer.fi…

Linux下找出吃内存的方法

几个 个 Linux 内存查看方法 1、free命令 2、 vmstat命令 3、 /proc/meminfo 命令 4、 top命令 5、 htop 命令 6、查看进程内存信息 内存性能指标 系统内存使用情况&#xff0c;比如已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量等。 共享内存是通过 tmp…

RabbitMQ 消息中间件

消息中间件 1、简介 消息中间件也可以称消息队列&#xff0c;是指用高效可靠的消息传递机制进行与平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型&#xff0c;可以在分布式环境下扩展进程的通信。 当下主流的消息中间…

用Leangoo领歌免费敏捷工具做敏捷需求管理

传统的瀑布工作模式使用详细的需求说明书来表达需求&#xff0c;需求人员负责做需求调研&#xff0c;根据调研情况编制详细的需求说明书&#xff0c;进行需求评审&#xff0c;评审之后签字确认交给研发团队设计开发。在这样的环境下&#xff0c;需求文档是信息传递的主体&#…

Vue 将响应式数据转为普通对象

toRaw&#xff1a;将一个 reactive 生成的响应式数据转为普通对象。 toRaw 适用于&#xff1a;获取响应式数据对应的普通对象&#xff0c;对这个普通对象所有的操作&#xff0c;都不会引起页面的更新。 markRaw&#xff1a;标记一个对象&#xff0c;使其永远不会再成为响应式…

竞赛选题 深度学习火车票识别系统

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 图像识别 火车票识别系统 该项目较为新颖&#xff0c;适…

Samtec连接器技术前沿 | 全新对准功能确保测试和测量应用中的精确对准

【摘要/前言】 Samtec开发了一种创新的易于使用的对准技术&#xff0c;以确保测试和测量应用中的精密、高频压缩安装连接器的峰值性能。下面解释了我们所看到的趋势&#xff0c;并概述了我们针对出现的常见对准挑战所开发的解决方案。 【问题所在】 随着数据传输率的不断提高…

Unity地面交互效果——4、制作地面凹陷轨迹

大家好&#xff0c;我是阿赵。   上一篇介绍了曲面细分着色器的基本用法和思路&#xff0c;这一篇在曲面细分的基础上&#xff0c;制作地面凹陷的轨迹效果。 一、思路分析 这次需要达到的效果是这样的&#xff1a; 从效果上看&#xff0c;这个凹陷在地面下的轨迹&#xff0…

Android 13.0 Settings主页面去掉FocusRecyclerView相关功能

1.前言 在13.0的系统rom产品定制化开发中,在系统Settings主页面的主菜单中,在测试某些功能的时候,比如开启护眼模式和改变系统密度会在主菜单第一项的网络菜单头部增加 自定义您的设备和设置护眼模式时间安排 等等相关的设置模块 这对于菜单布局显示相当不美观,所以根据系…

libwebsockets入门

WebSocket是一种在单个TCP连接上进行全双工通讯的协议&#xff0c;用于在Web客户端和服务器之间建立持久连接&#xff0c;进行实时通信。它是HTML5开始提供的一种通讯方式&#xff0c;通过使用WebSocket连接&#xff0c;web应用程序可以执行实时的交互&#xff0c;而不是以前的…

【C++】stack | queue | priority_queue | deque

一、stack栈 介绍 1.栈是一种特殊的线性表&#xff0c;其元素遵循“后进先出”的原则&#xff0c;即仅允许在在表的一端进行插入、删除操作&#xff0c;这一模式被称为“后进先出”或LIFO&#xff08;last in fisrt out&#xff09;。 2.从底层实现来看&#xff0c;stack是作…