当前位置: 首页 > article >正文

相机坐标系转换世界坐标系,zedimudepth

1.问题背景

相机的安装的是带一定的倾角,而且车辆是行驶在非铺装路面,车辆是会倾斜的。

1.1 根据内参消除畸变,修正焦点

转换关系

焦距(fx, fy):焦距参数表示成像平面与相机光心之间的距离,它们决定了成像的大小。在数学上,fx 和 fy
是归一化焦距,它们与相机的实际焦距 f 以及像素尺寸 dx 和 dy(单位通常为毫米/像素)有关,具体关系为 fx = f * dx,fy
= f * dy。焦距参数影响成像的视角和物体在图像中的大小。如果相机的分辨率提高,即像素数增加,而物理尺寸保持不变,则 fx 和 fy 会相应增加 。

主点(cx, cy):主点是成像平面上与相机光心投影点相对应的点,通常位于图像的中心位置。在像素坐标系中,cx 和 cy
表示这个点的位置,它们是图像的几何中心。如果图像被裁剪或缩放,这些值会相应地改变,因为它们与图像的原点有关

    def grab_depth(self , msg_depth , x  , y ):
        # 获取相机内参
        x = int(x)
        y = int(y)
        fx = self.get_parameter('fx').value
        fy = self.get_parameter('fy').value
        cx = self.get_parameter('cx').value
        cy = self.get_parameter('cy').value
        
        # 从深度图像消息中获取深度数据
        depths = np.frombuffer(msg_depth.data, dtype=np.float32)

        # 计算x,y像素在相机坐标系中的位置
        CenterIdx = x  + msg_depth.width * y
        z_l = float(depths[CenterIdx])
        if math.isnan(z_l) or math.isinf(z_l):
            return []
        x_l = (x - cx) / fx * z_l
        y_l = (y - cy) / fy * z_l
        return [x_l, y_l, z_l]

2.2四元数转换欧拉角

			float yaw = std::atan2(2 * (w * z + x * y), (1 - 2 * (x * x + y * y)));//偏航角
            float pitch = std::asin(-2 * (z * x - y * w));//俯仰角
            float roll = std::atan2(2 * (w * y + z * x), (1 - 2 * (y * y + z * z)));//翻滚角

3.另一个小问题

zed官方提供了一版conf文件,也就是内参文件,供你消除畸变,二维平面的深度值转换为三维世界的物理坐标。但是官方提供的文件有一定的误差,导致有误。


http://www.kler.cn/news/285316.html

相关文章:

  • 【C++ 第十八章】C++11 新增语法(4)
  • BMC lighttpd kvm数据分析(websocket)
  • 【Qt笔记】QCommandLinkButton控件详解
  • Unity编辑器扩展之Scene视图扩展
  • Windows Edge浏览器对Web Authentication API的支持分析与实践应用
  • 音频处理新纪元:深入探索PyTorch的torchaudio
  • vue新建按钮弹出选框
  • 【第0004页 · 递归】生成括号对
  • 缓存Mybatis一级缓存与二级缓存
  • 【Java设计模式】数据总线模式:高效统一组件通信
  • 【鬼灭之刃学英语 立志篇】2、义勇对炭治郎的怒斥
  • 4.1 版本管理器——2PL与MVCC
  • 第 20 章 DOM 进阶
  • 应用层协议(下)Https加密Http的秘密(含逻辑图解 简单易学 通俗易懂!)
  • DataSet和DataTable的关系
  • Python爬虫所需的技术及其原理(简单易懂)
  • 策略模式+模版方法模式+简单工厂模式混用优化代码复杂分支问题
  • 【软件测试】bug以及测试用例的设计方法
  • Taro 微信小程序 分页上拉加载
  • C语言程序设计(初识C语言后部分)
  • Java—可变参数、不可变集合
  • 单链表应用
  • 在Jtti服务器上怎么安装和配置Docker?
  • Pandas 绘图的强大之处:后端
  • Vue面试常见知识总结2——spa、vue按需加载、mvc与mvvm、vue的生命周期、Vue2与Vue3区别
  • 鸿蒙OS试题(6)
  • 自动驾驶---什么是Frenet坐标系?
  • AI学习指南深度学习篇-门控循环单元中的门控机制
  • jenkins发送html邮件配置步骤与注意事项?
  • 25. 蓝牙 - BLE相关2