最小化重投影误差求解PnP

news/2025/2/26 6:23:41

问题描述

已知n个空间点 P i = [ x i , y i , z i ] T P_i=[x_i,y_i,z_i]^T Pi=[xi,yi,zi]T,其投影的像素坐标 p i = [ u i , v i ] T p_i=[u_i,v_i]^T pi=[ui,vi]T求相机的位姿R,T。

问题分析

根据相机模型,像素点和空间点的位置关系:
s i [ u i v i 1 ] = K T [ x i y i z i 1 ] s_i\begin{bmatrix}u_i \\v_i \\1\\\end{bmatrix}=KT \begin{bmatrix} x_i \\ y_i \\ z_i\\ 1\\ \end{bmatrix} siuivi1=KTxiyizi1
即:
s i u i = K T P i s_iu_i=KTP_i siui=KTPi
由于存在噪声误差,因此以最小化误差平方和为目标构建最小二乘问题:
T ∗ = a r g min ⁡ T 1 2 ∑ i = 1 n ∥ u i − 1 s i K T P i ∥ 2 2 T^{*}=arg \min_{T} \frac{1}{2} \sum_{i=1}^{n} \begin{Vmatrix}u_i-\frac{1}{s_i}KTP_i\end{Vmatrix}_{2}^{2} T=argTmin21i=1nuisi1KTPi22
因为这个误差是将3D点的理论投影位置与观测到的实际投影位置之间的误差,因此称为重投影误差
e i = u i − 1 s i K T P i e_i=u_i-\frac{1}{s_i}KTP_i ei=uisi1KTPi
重投影误差
按照之前讲过的高斯牛顿法进行求解:
旋转矩阵本身带有约束,即正交且行列式为1。而有约束的优化问题比无约束的优化问题复杂的多。因为李代数的特点,李代数表示的天然满足旋转矩阵的约束,因此通常使用李代数进行表示来求解。


http://www.niftyadmin.cn/n/5868192.html

相关文章

BigDecimal线上异常解决方案:避免科学计数法输出的坑

文章目录 问题背景为什么BigDecimal会输出科学计数法?线上异常场景场景1:数据传递异常场景2:日志记录异常场景3:数据存储异常 解决方案1. 使用toPlainString()方法2. 设置格式化输出3. 自定义工具类 代码示例总结 在Java开发中&am…

BIO系统调用strace查看IO阻塞

BIO服务端例子 服务端监听8090端口,每一个客户端用一个线程处理,不断的获取客户端的输入数据并打印 import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.…

Kubernetes 1.29升级至1.31版本笔记

一、概述 之前安装了kubernetes 1.29(参见👉:使用kubeadm安装Kubernetes1.29)。 本次计划将该集群升级为👉1.31版本。 Kubernetes版本表示方式: Kubernetes版本表示为x.y.z,其中x是主版本&…

Django 视图函数中的 `response` 对象及类型扩写

Django 视图函数中的 response 对象及类型扩写 在 Django 中,视图函数不仅负责处理请求,还负责生成响应。响应可以是以多种格式返回给客户端的数据,包括 HTML 页面、重定向、JSON 数据、文件等。以下是关于 Django 中几种常见响应类型的详细…

那些排序算法和初始序列的状态有关

那些排序算法对序列的初始状态有关 比如,冒泡排序和插入排序,在最好情况下,也就是序列已经排好序的时候,时间复杂度是O(n),而最坏情况下是O(n)。这说明它们的性能确实和初始状态有关。快速排序的话,如果每次…

DeepSeek AI智能运营:重构企业效率的范式革命

文章目录 一、企业级智能运营的深度实践1. 智慧园区运营:AI驱动的全流程重构2. 金融行业:合规审核自动化 二、垂直行业场景突破1. 制造业智能质检系统2. 教育行业智能伴学 三、核心技术架构演进1. 推理加速架构2. 多模态数据处理 四、开发工具链实践1. V…

基于Prometheus与Grafana构建实时监控与告警体系,保障微服务稳定性!

全文目录: 开篇语前言为什么选择Prometheus和Grafana?Prometheus:功能强大,专注于时序数据Grafana:数据可视化的艺术 构建实时监控与告警体系的步骤1. 安装Prometheus1.1 安装Prometheus1.2 配置Prometheus监控目标1.3…

Flash-03

1-问题:Flash软件画两个图形,若有部分重合则变为一个整体 解决方法1:两个图形分属于不同的图层 解决方法2:将每个图形都转化为【元件】 问题2:元件是什么? 在 Adobe Flash(现在称为 Adobe Anim…