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

news2024/11/18 13:49:38

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

像素坐标系

        像素坐标系(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.coloradmin.cn/o/1036025.html

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

相关文章

【Java 基础篇】Java函数式接口详解

Java是一门强类型、面向对象的编程语言,但在Java 8引入了函数式编程的概念,这为我们提供了更多灵活的编程方式。函数式接口是函数式编程的核心概念之一,本文将详细介绍Java函数式接口的概念、用法以及一些实际应用。 什么是函数式接口&#…

JUC第八讲:Condition源码分析

JUC第八讲:Condition源码分析 本文是JUC第八讲,Condition详解。任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括 wait()、wait(long timeout)、notify()以及notifyAll()方法&am…

【LeetCode-中等题】513. 找树左下角的值

文章目录 题目方法一:前序递归方法二:层序遍历 题目 方法一:前序递归 在递归遍历到叶子结点时,对比此时的节点深度,若当前节点深度大于当前最大深度,就更新value值,最后记录下的value即为最下最…

elementui 菜单选中优化

/** 父级菜单悬浮样式**/ .el-submenu__title:hover {color:#1890ff!important; } /** 父级菜单箭头悬浮样式**/ .el-submenu__title:hover>.el-submenu__icon-arrow{font-size: 13px!important;} /** 子菜单悬浮样式**/ .el-menu-item:hover{color:#1890ff!important; } /*…

Linux操作系统基础详解,计算机专业必看!

目录 Linux操作系统 Linux 简介 Linux 接口 Linux 组成部分 Shell Linux 应用程序 Linux 内核结构 Linux 进程和线程 基本概念 Linux 进程间通信 Linux 中进程管理系统调用 Linux 进程和线程的实现 Linux 调度 Linux 启动 Linux 内存管理 基本概念 Linux 内存…

【owt】 Intel® Media SDK for Windows: MSDK2021R1

https://www.intel.com/content/www/us/en/developer/articles/tool/media-sdk.html官方网不提供下载了: 2021地址 直接下载: MSDK2021R1.exe老版本 Intel Media SDK(Windows版本) 大神的介绍:owt-client-native 需要 https://github.com/open-webrtc-toolkit/owt-client…

spring security auth2.0实现

OAuth 2.0 的认证/授权流程 jwt只是认证中的一步 4中角色 资源拥有者(resource owner)、客户端(client 第三方)、授权服务器(authorization server)和资源服务器(resource server)。…

vue 使用cornerstone解析 .dcm 文件

// 首先下载依赖 npm install --save cornerstone-core cornerstone-math cornerstone-tools hammerjs cornerstone-web-image-loader 下载之后再package.json中可以看到最后图片的依赖// 下面是完成的组件代码 <template><div id"dicom_canvas" refdicom_c…

FL Studio21.1无限试用版体验新功能变化介绍

许多刚刚接触音乐创作的新朋友&#xff0c;通过各种渠道了解到FL Studio&#xff0c;但并不知道我们的历史以及在音乐创作方面所产生的影响&#xff0c;今天分享一篇来自coco玛奇朵博主Rio的深度科普文章&#xff0c;相信对新人会有很大启发。 FL Studio 21.1 通过钢琴卷中的音…

C++:类中的静态成员函数以及静态成员变量

一、静态成员变量 静态成员&#xff1a;在类定义中&#xff0c;它的成员&#xff08;包括成员变量和成员函数&#xff09;&#xff0c;这些成员可以用关键字static声明为静态的&#xff0c;称为静态成员。 静态成员变量需要在类外分配空间&#xff0c;static 成员变量是在初始…

速码!!BGP最全学习笔记:IBGP和EBGP基本配置

实验1&#xff1a;配置IBGP和EBGP 实验目的 熟悉IBGP和EBGP的应用场景掌握IBGP和EBGP的配置方法 实验拓扑 想要华为数通配套实验拓扑和配置笔记的朋友们点赞关注&#xff0c;评论区留下邮箱发给你! 实验步骤 1.IP地址的配置 R1的配置 <Huawei>system-view …

基于单片机火灾报警器仿真设计

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20采集温度值送到液晶1602显示。 3、MQ2采集烟雾值&#xff0c;送到液晶1602显示。 4、按键设置温度报警值&#xff0c;大于报警值&#xff0c;声光报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计…

微信小程序快速入门01(含案例)

文章目录 前言一、组件1.常用视图容器类组件viewscroll-viewswiper、swiper-item 2.text、rich-text3.其他常用组件buttonimagenavigator 二、小程序API三、数据绑定1.定义页面数据2.绑定数据 四、事件绑定1.什么是事件2.小程序中常用的事件3.事件对象 的属性列表target和curre…

Seata--分布式事务

1 分布式事务基础 1.1 事务 事务指的就是一个操作单元&#xff0c;在这个操作单元中的所有操作最终要保持一致的行为&#xff0c;要么所有操作都成功&#xff0c;要么所有的操作都被撤销。简单地说&#xff0c;事务提供一种“要么什么都不做&#xff0c;要么做全套”机制。 1…

代码随想录算法训练营day60|84.柱状图中最大的矩形 |完结撒花~

84.柱状图中最大的矩形 力扣题目链接 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 1 < heights.length <10^5 0 < heights[i] < 10^…

ChatGPT WPS AI 一键核对两表数据差异

业务需求,找出两个表中不相同的内容。如下图: 像这样的表格中,要找出不同的值,手动核对效率不高。 现在我们有了ChatGPT,可以由人工智能来完成这一操作,高效,快速,准确定位差异值。 指令:请找出A1:G14 单元格区域和I1:O14单元格区域的不相同部分,将两部数据区域不相…

10.1网站编写(Tomcat和servlet基础)

一.Tomcat: 1.Tomcat是java写的,运行时需要依赖jre,所以要装jdk. 2.建议配置好环境变量. 3.默认端口号8080(业务端口)可能会被占用,建议改一下(本人改成了9999). 4.另一个默认端口是8005(管理端口). 二Servlet基础(编写一个hello world代码): 整体分为7个步骤,分别是创建…

精品Python比赛报名系统竞赛

《[含文档PPT源码等]精品基于Python实现的比赛报名系统设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技术&#xff1a;JavaScript…

LeetCode 接雨水 木桶理论、dp预处理

原题链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 题面&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a…

C语言之字符函数字符串函数篇(2)

目录 字符串查找 strstr strstr的使用 strstr的模拟实现 分析 考虑点 代码 strt strtok的使用 循环改进 错误信息报告 strerror 错误码的错误信息 strerror的使用 perror 字符操作 字符分类函数 字符转化函数 今天我们接着讲字符串函数&#xff0c;也…