位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码

这篇具有很好参考价值的文章主要介绍了位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

本文接着分享空间目标位姿跟踪和滤波算法中用到的一些常用内容,希望为后来者减少一些基础性内容的工作时间。以往分享总结见文章:位姿跟踪 | 相关内容目录和链接总结(不断更新中~~~)

本文介绍如何利用特征点求解目标体坐标系相对于相机坐标系的位姿

技术流程

1. PNP介绍

PnP(Perspective-n-Point)是根据图像中特征点的二维像素坐标及其对应的三维空间坐标,来估计相机在参考坐标系中位姿的一类算法。

直观来讲,当相机观察到空间中的某一物体时,我们已经知道了该物体在某一参考坐标系下的位置和姿态,那么如何通过图片中物体的成像判断出相机此时在参考坐标系下的位姿

这正是PnP要解决的问题,即利用已知三维结构与图像的对应关系求解相机与参考坐标系的相对关系(相机的外参)。

总的来说,PNP问题求解的是相机相对于参考坐标系的位姿。需要已知特征点像素坐标,以及对应的参考坐标系下的坐标值。

一般来说,利用特征点的像素坐标,以及已知的相机内参,可以获取特征点在相机坐标系下的坐标。

在已知特征点在相机坐标系下的坐标和参考坐标系下的坐标位置后,利用ICP方法可以求解相机坐标系和参考坐标系之间的相对位姿!!

2. ICP介绍

迭代最近点算法ICP ( Iterative Closest Point):已知三维点在两个坐标系中的坐标,求这两个坐标系的变换关系,称为 ICP 问题。

ICP 算法的目的是要找到特征点匹配之间的旋转参数 R R R和平移参数 T T T,使得两点数据之间满足某种度量准则下的最优匹配。

位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码

设参考坐标系下特征点坐标集合为 S 1 S_1 S1,相机坐标系下特征点坐标集合为 S 2 S_2 S2 P i P_i Pi Q i Q_i Qi (又可记作 p 1 i p_1^i p1i p 2 i p_2^i p2i)分别表示特征点集 S 1 S_1 S1 S 2 S_2 S2中某个特征点坐标。

构造目标函数:
位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码
利用SVD分解求解ICP问题,具体步骤为:

  1. 首先计算特征点集的均值以及去中心点化的点坐标:
    位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码
  2. 定义矩阵 M M M
    位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码
  3. M M M进行奇异值分解:
    位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码
  4. 计算旋转矩阵 R R R的最优解为:
    位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码
  5. 计算平移矩阵 T T T
    位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码

ICP问题的应用包括两种:利用ICP求解相对位姿,利用ICP求解相机帧间运动。

a. 利用ICP求解目标相对相机的位姿

已知量:特征点坐标 在相机坐标系和目标坐标系下的坐标值

步骤奇异值分解(SVD),具体求解流程见上文。

输出:目标坐标系相对于参考坐标系的旋转矩阵 R R R和平移矩阵 T T T,即为求解目标相对位姿。

该方法适用于求解空间目标相对于相机坐标系的位姿,在基于特征的目标位姿估计方法中比较适用。

b. 利用ICP求解相机帧间运动

ICP算法还可以根据前后两帧图像中匹配好的特征点在相机坐标系下的三维坐标,求解相机帧间运动。

直观来讲,当相机在某处观察某一物体时,我们知道了相机此时与物体之间的相对位姿关系;当相机运动到另一处,我们亦知道此时相机与物体的相对位姿关系。

已知量 t 1 t_1 t1时刻相机与目标之间的相对位姿, t 2 t_2 t2时刻相机与目标之间的相对位姿。

步骤奇异值分解(SVD) 或者 非线性迭代等,具体求解流程见上文。

输出:ICP问题可以求解这两次相机与物体的相对位姿关系,从而确定相机发生了怎样的运动。

参考网址:

  1. ICP 问题之 SVD
  2. 视觉SLAM中的对极约束、三角测量、PnP、ICP问题

Python代码

功能:已知特征点在相机坐标系和目标坐标系的位置,利用SVD线性求解目标坐标系相对于相机坐标系的位姿,也即目标的相对位姿。(ICP问题)文章来源地址https://www.toymoban.com/news/detail-498202.html

import numpy as np
import math

def objpose(P, Q):
    n = P.shape[1]

    # 计算P' 和 Q' 的值
    P1 = P.copy()
    Q1 = Q.copy()
    pbar = sum(P.T)/n
    qbar = sum(Q.T)/n
    P = P - pbar.reshape((3,1))
    Q = Q - qbar.reshape((3,1))

    # SVD分解
    # 计算M矩阵
    M = np.zeros((3,3))
    for i in range(n):
        M += np.dot(P[:,i].reshape((3,1)), Q[:,i].reshape((3,1)).T)

    [U,S,V] = np.linalg.svd(M)

    # 计算旋转矩阵R
    R = np.dot(V, U.T)

    # 得到R值后, 计算t值
    Sum = np.dot(R, P1[:, 1])

    t = Q1[:, 1] - Sum

    # 方向判断
    if t[2] < 0:
        R = -R
        t = -t

    return R, t


if __name__ == '__main__':

    P = np.array([[-2,0,0],[-2,2,0],[2,0,0],[2,2,0]]).T # 3D point
    Q = np.array([[-2,0,2],[-2,2,2],[2,0,2],[2,2,2]]).T# 3D point

    [R, t] = objpose(P,Q)
    print(R)
    print(t)

到了这里,关于位姿估计 | 目标体坐标系相对于相机坐标系的位姿估计及其Python代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 世界坐标系、相机坐标系、图像坐标系、像素坐标系

    四个坐标系都是什么? 1.世界坐标系-相机坐标系-图像坐标系-像素坐标系 2.像素坐标系-图像坐标系-相机坐标系-世界坐标系 图像处理、立体视觉等等方向常常涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系                     构建世界坐标系只是

    2024年01月21日
    浏览(69)
  • 坐标转换(相机坐标系、世界坐标系、图像物理坐标系、图像像素坐标系)

    一般情况下我们所涉及到的坐标包括四个,即相机坐标系、世界坐标系、图像物理坐标系、图像像素坐标系。我们本文的讲解思路是在讲解每个坐标转换之前先讲清楚每个坐标系所表示的含义。本文主要参考由高翔主编的视觉SLAM十四讲第五章相机模型。 相机将三维世界的坐

    2024年02月09日
    浏览(73)
  • 6_相机坐标系_相机4个坐标系详述

            相机系列文章是用来记录使用opencv3来完成单目相机和6轴机械臂手眼标定。本人吃饭的主职是linux下6轴机械臂相关应用开发。但对于机械臂运动学、相机应用等都非常感兴趣,所以对一些线性代数基础薄弱又想深入了解机械臂内部运算的同志比较有体会。由于是探

    2024年04月09日
    浏览(55)
  • 相机坐标系、像素坐标系转换

    相机内参矩阵是相机的重要参数之一,它描述了相机光学系统的内部性质,例如焦距、光学中心和图像畸变等信息。在计算机视觉和图形学中,相机内参矩阵通常用于将图像坐标系中的像素坐标转换为相机坐标系中的三维坐标,或者将相机坐标系中的三维坐标投影到图像坐标

    2024年02月13日
    浏览(48)
  • 世界坐标系、相机坐标系和图像坐标系的转换

    之前只是停留在会用的阶段,一直没去读懂计算的原理,今天通读了大佬的文章,写的言简意赅,感谢感谢~~特此记录一下,仅用作个人笔记 贴链接,十分感谢~ https://blog.csdn.net/weixin_44278406/article/details/112986651 https://blog.csdn.net/guyuealian/article/details/104184551 将三维物体转换成照

    2023年04月15日
    浏览(65)
  • 关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解

    在项目中,研究标定时,像素坐标与轴位置的关系时,需要用到关于坐标系的转换。在此也就是找到世界坐标系与像素坐标系的转换关系。想理清楚故做如下记录。 四坐标关系图如下: 图中: 世界坐标系(O W —X W Y W Z W ): 一个三维直角坐标系,以其为基准可以描述相机

    2024年02月09日
    浏览(72)
  • 图像坐标系如何转换到相机坐标系。

    问题描述:图像坐标系如何转换到相机坐标系。 问题解答: 图像坐标系的定义: 图像坐标系是用于描述数字图像中像素位置的坐标系。图像坐标系的原点是相机光轴与成像平面的交点。X轴沿着成像平面的水平方向正向,Y轴沿着成像平面的垂直方向正向。 相机坐标系的定义

    2024年02月04日
    浏览(51)
  • 激光雷达坐标系和相机坐标系相互变换(易懂不详细)

    码字不易,路过的朋友动动小手点点赞吧 传感器融合少不了的就是联合标定,最近大火的激光雷达和相机传感器融合算法,让很多工程师学者投入精力学习,本文简单介绍一下激光雷达和相机传感器坐标系转换的原理。         传感器安装位置不同,而且每个传感器都有

    2024年02月11日
    浏览(51)
  • 相机坐标系

    相机坐标系——像素坐标系 本文所述的相机坐标系的意思是以该相机为参考,也就是世界坐标系的原点为该相机,来观测P的坐标。 在通俗理解下的相机坐标系与像素坐标系之间只差一个cx和cy。一定要注意 一个相机A的坐标系为L1,此时一个空间的点P距离相机50m,x方向偏10

    2024年02月09日
    浏览(48)
  • 双相机坐标系标定

    在工业应用中,常常会遇到双相机定位的项目,下面就介绍双相机如何标定才能做到精准定位。 1,产品  如上图所示,玻璃上对角有两个mark点,由于mark点的间距太远只能用两个相机去拍。 2,相机布局  两个相机分别拍产品的对角。 3,标定流程   1,根据n点标的规则获取

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包