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

news2024/11/26 13:29:02

前言

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

目录:

一.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.两个光管的单位向量求出后,通过两向量的点乘算出两向量夹角的余弦,进而算出两向量的夹角。

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

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

相关文章

uniapp u-tabs表单如何默认选中

首先先了解该组件;该组件,是一个tabs标签组件,在标签多的时候,可以配置为左右滑动,标签少的时候,可以禁止滑动。 该组件的一个特点是配置为滚动模式时,激活的tab会自动移动到组件的中间位置。 …

【Java初阶习题】 -- 类和对象

目录 1.局部变量必须先初始化才能使用2. this的两种用法3. import语句不能导入一个指定的包4.代码块的执行顺序5.静态变量的调用6 . 现有一个Data类,内部定义了属性x和y,在main方法中实例化了Data类,并计算了data对象中x和y的和。 1.局部变量…

11月第1周榜单丨飞瓜数据B站UP主排行榜榜单(B站平台)发布!

飞瓜轻数发布2023年10月30日-11月5日飞瓜数据UP主排行榜(B站平台),通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况,为用户提供B站号综合价值的数据参考,根据UP主成长情况用户能够快速找到运营…

【分布式事务】深入探索 Seata 的四种分布式事务解决方案的原理,优缺点以及在微服务中的实现

文章目录 前言一、XA 模式1.1 XA 模式原理1.2 XA 模式的优缺点及应用场景1.3 Seata XA 模式在微服务中的实现 二、AT 模式2.1 Seata AT 模式原理2.2 AT 模式的脏写问题和写隔离3.3 AT 模式的优缺点3.4 Seata AT 模式在微服务中的实现 三、TCC 模式3.1 TCC 模式原理3.2 Seata 的…

洛谷 P1020 [NOIP1999 普及组] 导弹拦截【一题掌握三种方法:动态规划+贪心+二分】最长上升子序列LIS解法详解

P1020 [NOIP1999 普及组] 导弹拦截 前言题目题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题目分析注意事项 代码动态规划(NOIP要求:时间复杂度O(n^2^))贪心二分(O(nlgn)) 后话额外测试用例样例输入 #1…

数据结构:Map和Set(2):相关OJ题目

目录 136. 只出现一次的数字 - 力扣(LeetCode) 771. 宝石与石头 - 力扣(LeetCode) 旧键盘 (20)__牛客网 (nowcoder.com) 138. 随机链表的复制 - 力扣(LeetCode) 692. 前K个高频单词 - 力扣&#xff08…

“百人专家团”背书 袋鼠妈妈“双十一”蓄势待发

从万千商家的角度来看,“双十一”实际上就是一场没有硝烟的“战争”,只有用心做产品的品牌才能成为常胜将军,要想在双十一脱颖而出在同品类榜单上占据有利位置,品牌力和产品力二者缺一不可。而专注母婴护肤10年的袋鼠妈妈品牌便是如此,从品牌诞生以来,始终专注母婴用户需求,打造…

STM32MPU6050角度的读取(STM32驱动MPU6050)

注:文末附STM32驱动MPU6050代码工程链接,需要的读者请自取。 一、MPU6050介绍 MPU6050是一款集成了三轴陀螺仪和三轴加速度计的传感器芯片,由英国飞利浦半导体(现为恩智浦半导体)公司生产。它通过电子接口&#xff08…

面包屑实现

背景:面包屑根据菜单内容显示不同内容。首页永远存在,后面的活动管理及多级菜单的面包屑展示。 实现原理: 通过this.$route.matched获取所有匹配路由,将处理首页外的其他路由设置到一个数组中,再通过数组循环方式显示…

Linux/centos上如何配置管理Web服务器?

Linux/centos上如何配置管理Web服务器? 1 Web简单了解2 关于Apache3 如何安装Apache服务器?3.1 Apache服务安装3.2 httpd服务的基本操作 4 如何配置Apache服务器?4.1 关于httpd.conf配置4.2 常用指令 5 简单实例 1 Web简单了解 Web服务器称为…

一篇文章让你Docker从入门到精通

一篇文章让你Docker从入门到精通 Docker简介docker的3要素docker安装--centos7示例docker底层原理docker常用命令docker镜像原理数据共享--容器数据卷数据卷容器dockerfile解析Dockerfile实战一 使用dockerfile构建ubuntu镜像,并在里面安装vim及网络工具 一张图展示…

2023 年微服务后端开发的 11 个最佳工具

前言 微服务架构以将复杂的应用程序分解为易管理的服务而闻名,然而,管理微服务是一项具有挑战性的任务。为了确保开发工作流程的高效性,需要采用特定的工具。 在本文中,小编将为您介绍2023年最热的11款后端微服务开发工具&#…

什么是CE认证?蓝牙耳机出口欧盟CE认证如何办理?CE-RED认证办理

蓝牙耳机是一种基于蓝牙技术的一种小型设备,只需要把这种轻巧的设备藏在耳机边而不需要直接使用通讯设备(手机、电脑等)就可以实现自由通话。蓝牙耳机就是将蓝牙技术应用在免持耳机上,让使用者可以免除恼人电线的牵绊,…

软件测试/测试开发丨接口自动化测试学习笔记,整体结构响应断言

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27982 一、结构断言介绍 针对于“大响应数据”如何断言 针对主要且少量的业务断言其他字段不做数据正确性断言,只做类型与整体结构校验与前面…

【Ruoyi管理后台】用户登录强制修改密码

近期有个需求,就是需要调整Ruoyi管理后台:用户如果三个月(长时间)未修改过密码,需要在登录时强制修改密码,否则不能登录系统。 一、后端项目调整 从需求来看,我们需要在用户表增加一个字段,用于标记用户最…

转换流详解

问题引出:不同编码读取乱码问题 1、之前我们使用字符流读取中文是否有乱码? 没有的,因为创建字符流时如果不指定编码,那么使用的编码是jvm的默认编码,和文件编码都是UTF-8。 Creates a new FileReader, given the n…

MybatisPlus之新增操作并返回主键ID

在应用mybatisplus持久层框架的项目中&#xff0c;经常遇到执行新增操作后需要获取主键ID的场景&#xff0c;下面将分析及测试过程记录分享出来。 1、MybatisPlus新增方法 持久层新增方法源码如下&#xff1a; public interface BaseMapper<T> extends Mapper<T> …

RxJava/RxAndroid的操作符使用(二)

文章目录 一、创建操作1、基本创建2、快速创建2.1 empty2.2 never2.3 error2.4 from2.5 just 3、定时与延时创建操作3.1 defer3.2 timer3.3 interval3.4 intervalRange3.5 range3.6 repeat 二、过滤操作1、skip/skipLast2、debounce3、distinct——去重4、elementAt——获取指定…

xshell是什么软件,1000字让你完全了解xshell

很多从事开发或网络安全的人都或多或少知道xshell是什么软件&#xff0c;但是如果没有试用过的话可能对它的功能并不完全了解。今天小编就带你详细了解一下Xshell究竟是什么。 xshell是什么软件 一、xshell是什么软件 Xshell是一款功能强大的SSH&#xff08;Secure Shell&…

Jdk 1.8 for mac 详细安装教程(含版本切换)

Jdk 1.8 for mac 详细安装教程&#xff08;含版本切换&#xff09; 官网下载链接 https://www.oracle.com/cn/java/technologies/downloads/#java8-mac 一、选择我们需要安装的jdk版本&#xff0c;这里以jdk8为例&#xff0c;下载 macOS 版本&#xff0c;M芯片下载ARM64版本…