相机有俯仰角时如何将像素坐标正确转换到其他坐标系

一般像素坐标系转相机坐标系都是默认相机是水平的,没有考虑相机有俯仰角的情况,大致的过程是:像素坐标系统-->图像坐标系-->相机坐标系 ->世界坐标系或雷达坐标系:

像素坐标系

        像素坐标系(u,v)是以pixel为单位的离散图像坐标,原点在图片的左上角

图像坐标系

        图像坐标系(x,y)是以米或毫米为单位(真实的物理尺寸)的连续图像坐标,以图片对角线交点作为基准原点

相机坐标系

        相机坐标系(Xc,Yc,Zc)原点在相机的光心上,Z轴与相机光轴平行,即相机的镜头拍摄方向

世界坐标系

        世界坐标系(Xw,Yw,Zw)是标示目标物体空间位置的参考系,可根据需要自由设置原点位置      

雷达坐标系

       雷达坐标系通常是以前进方向为x轴正向,左侧为y轴正向,向上为z轴正向

像素坐标系和图像坐标系的关系

其中,dx指一个像素代表的物理尺寸上的宽度,与x同单位,x/dx表示像素点在x轴方向偏离图像坐标系中心多少个像素,同样y/dy表示像素点在y轴方向偏离图像坐标系中心多少个像素,(u0,v0)是图像平面中心,是图像坐标系的原点。

图像坐标系和相机坐标系的关系

根据相似三角形边长等比原理可推导出相机坐标系下的空间物理点P(Xc,Yc,Zc)在图像坐标系下的投影点p(x,y)之间的关系:

世界坐标系或雷达坐标系和相机坐标系的关系

世界坐标系或雷达坐标系和相机坐标系之都是空间3D坐标系,因此他们之间只需要通过旋转和平移来转换,例如相机坐标系和世界坐标系之间的转换可以表示成:

其中旋转可能分别需要拆解为分别绕x、y、z轴旋转来完成(也可能只需要其中一部分就完成了旋转,根据实际需要定):

假如分别绕x、y、z轴旋转都需要,则最终的旋转矩阵R = R1*R2*R3,维度为3x3。T为平移矩阵,维度为3x1。用齐次坐标表示相机坐标系和世界坐标系之间的关系为:

上述转换方法对相机坐标系转雷达坐标系同样适用。

如果是将世界坐标系转相机坐标系,上面的旋转矩阵为逆矩阵,平移矩阵里各元素取相反值而已。

当相机有俯仰角时,像素坐标系转世界坐标系或雷达坐标系,关键在于测出相机俯仰角然后将坐标乘以旋转矩阵转换到相机为水平时的坐标系下去,可参见这篇博文:相机安装位置之相对于地面的俯仰角的标定_相机俯仰角_AndyCheng_hgcc的博客-CSDN博客

如果对精度要求不高,且有相机坐标系或雷达坐标系下的可视化效果看转换后的效果,可以直接调节图像坐标系下的坐标值,因为当相机有俯仰角时,物体在图像上的成像像素点和相机水平时的对应成像像素点比发生了向上或向下的偏移,在转换为图像坐标系之前试着对物体的每个成像像素点减去或加上这些偏移量,可以看到,图像上的物体点投到到雷达坐标系下后能比较准确地和物体在3D空间中的位置贴合。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIX360-CEMExplainer: MNIST Example

CEMExplainer: MNIST Example 这一部分屁话有点多,导包没问题的话可以跳过加载MNIST数据集加载经过训练的MNIST模型加载经过训练的卷积自动编码器模型(可选)初始化CEM解释程序以解释模型预测解释输入实例获得相关否定(Pertinent N…

停车场系统源码

源码下载地址(小程序开源地址):停车场系统小程序,新能源电动车充电系统,智慧社区物业人脸门禁小程序: 【涵盖内容】:城市智慧停车系统,汽车新能源充电,两轮电动车充电,物…

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 数据增强3. 模型构建4. 模型训练及保存1)模型训练2)模型保存 5. 模型评估 相关其它博客工程源代码下载其它资料下载 前言 本项目依赖于Keras深度学习模型,旨在对…

雷达编程实战之静态杂波滤除与到达角估计

雷达中经过混频的中频信号常常混有直流分量等一系列硬件设计引入的固定频率杂波,我们称之位静态杂波,雷达信号处理需要把这些静态杂波滤除从而有效的提高信噪比,实现准确的目标检测功能。 目标的到达角估计作为常规车载雷达信号处理的末端&am…

机器视觉康耐视Visionpro-脚本编写标记标识:点,直线,矩形,圆

显示标记标识的重要作用就是,对NG或者OK对操作机器视觉的人去看到具体位置缺陷或者NG坐标。 一.点CogPointMarker CogPointMarker PointMarker1 = new CogPointMarker();//创建对象,点CogPointMarker //注意运行工具 PointMarker1.X = 100; PointMarker1

多线程带来的的风险-线程安全

多线程带来的的风险-线程安全 ~~ 多线程编程中,最难的地方,也是一个最重要的地方,还是一个最容易出错的地方,更是一个面试中特别爱考的地方.❤️❤️❤️ 线程安全的概念 万恶之源,罪魁祸首是多线程的抢占式执行,带来的随机性.~~😕😕&…

人与机器只能感知到可以分类的事物?

众所周知,人与机器都能够感知和分类事物。人类拥有感官系统,如视觉、听觉、嗅觉、触觉和味觉,可以通过感知事物的外部特征和属性来进行分类。机器可以通过传感器和算法来感知和分类事物,比如计算机视觉技术可以通过图像和视频数据…

基于PLE结合卡尔曼滤波的RSSI定位算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ............................................................... for Num_xb Num_xb2Num_…

银行家算法——C语言实现

算法思路 将操作系统看作是银行家,操作系统所拥有的资源就相当于银行家所拥有的资产,进程向操作系统申请资源就相当于资产家向银行贷款,规定资产家在向银行贷款之前,先申明其所贷数额的最大值,申明之后其贷款的数额不…

【Verilog语法】比较不同计数器的运算方式,其中有一个数是延迟打一拍的效果,目的是使得两个计数器的结果相同。

比较不同计数器的运算方式,其中有一个数是延迟打一拍的效果,目的是使得两个计数器的结果相同。 1,第一种2,第二种3,第三种 第三种方案,完成实现。 1,第一种 (1)RTL modu…

深度学习自学笔记一:神经网络和深度学习

神经网络是一种模拟人脑神经元之间相互连接的计算模型,它由多个节点(或称为神经元)组成,并通过调整节点之间的连接权重来学习和处理数据。深度学习则是指利用深层次的神经网络进行学习和建模的机器学习方法。 假设有一个数据集&a…

SAP Service服务重注册技术手册

当SAP服务被卸载后,或SAP虚拟机整机copy后(可能还需要涉及主机名更改),需要对SAP服务重注册。 在路径 \sapmnt\<SID>\ DVEBMGS00\exe下使用程序sapstartsrv.exe来卸载、安装SAP服务: 其中<SID>、NR参考Service中需要卸载的服务名(卸载后,Services列表中的SA…