PnP算法详解(超详细公式推导)

这篇具有很好参考价值的文章主要介绍了PnP算法详解(超详细公式推导)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


博主缺粉丝希望大家能给个关注!!!

PnP概述

PnP(Perspective-n-Point)是求解3D到2D点的对应方法。它描述了当知道n个3D空间点及其位置,如何估计相机的位姿。如果两张图像中的一张特征点3D位置已知,那么至少需要3个点对(以及至少一个额外验证点验证结果)就可以计算相机的运动。

  • PnP的应用范围很广比如两阶段法的6D姿态估计以及视觉SLAM等等。
  • 特征点的3D位置可以由三角化或者RGB-D相机的深度图确定,当然还有其他方法。

PnP数学模型

PnP问题的几何结构如下图所示,给定3D点的坐标以及对应2D点的坐标以及内参矩阵,求解相机的姿态。

pnp算法,3D视觉基础,计算机视觉,3d

已知:n个点在世界坐标系下的坐标 P 1 P_{1} P1 P 2 P_{2} P2、…、 P i P_{i} Pi、…、 P n P_{n} Pn
  对应像素的坐标 p 1 p_{1} p1 p 2 p_{2} p2、…、 p i p_{i} pi、…、 p n p_{n} pn
  相机内参 K K K
求解:相机坐标系( O c X c Y c Z c O_{c}X_{c}Y_{c}Z_{c} OcXcYcZc)相对于世界坐标系( O w X w Y w Z w O_{w}X_{w}Y_{w}Z_{w} OwXwYwZw)的位姿,公式中(1)中的[R t]
[ X c Y c Z c ] = [ R   t ] [ X w Y w Z w ] ( 1 ) \begin{bmatrix} X_{c}\\ Y_{c}\\ Z_{c}\\ \end{bmatrix} = [R\ t]\begin{bmatrix} X_{w}\\ Y_{w}\\ Z_{w}\\ \end{bmatrix} (1) XcYcZc=[R t]XwYwZw(1)

PnP求解方法

  • DLT直接线性变换
  • P3P三对点估计位姿
  • EPnP(Efficient Pnp)
  • BA(Bundle Adjustment)光速法平差

DLT直接线性变换法

假设:相机经过标定,也就是相机的内参K已知。
已知:空间中的3D点坐标: [ X w Y w Z w ] T \begin{bmatrix} X_{w} & Y_{w} &Z_{w} \\ \end{bmatrix}^{T} [XwYwZw]T 齐次坐标表示为 [ X w Y w Z w 1 ] T \begin{bmatrix} X_{w} & Y_{w} &Z_{w} & 1 \\ \end{bmatrix}^{T} [XwYwZw1]T
投影点的坐标:$\begin{bmatrix}
u & v \
\end{bmatrix}^{T} $ 齐次坐标的表示为: [ u v 1 ] T \begin{bmatrix} u & v & 1\\ \end{bmatrix}^{T} [uv1]T
详解的内参矩阵: K K K
求解:相机外参 R 、 t R、t Rt
以下在Ipad上进行手写推倒
pnp算法,3D视觉基础,计算机视觉,3d

pnp算法,3D视觉基础,计算机视觉,3dpnp算法,3D视觉基础,计算机视觉,3d

注意实际的R和t还应该乘以 K − 1 K^{-1} K1
字有点丑,大家见谅吧!!!
这 里 我 有 个 问 题 : \color{red}{这里我有个问题:} :我推倒的时候只推出了 R = U V T R=UV^{T} R=UVT,没有推出正负解,很多博客这里给的是正负解, R = ± U V T R=\pm UV^{T} R=±UVT,这里面怎么出现的负解呢?

EPnP

原论文:EPnP: An Accurate O(n) Solution to the PnP Problem

EPnP的特点

  • EPnP的复杂度是 O ( n ) O(n) O(n),其他算法的复杂度基本上是 O ( n 3 ) O(n^{3}) O(n3),所以对于特征点较多的PnP问题,非常高效。
  • 核心思想是将3D点表示为4个控制点的组合,优化也只针对4个控制点,所以速度很快,在求解 M x = 0 Mx=0 Mx=0时,最多考虑了4个奇异向量,因此精度也很高。

步骤

1.在世界坐标系下确定4个控制点 c j w , j = 1 , 2 , 3 , 4 c^{w}_{j},j=1,2,3,4 cjw,j=1,2,3,4,理论上可以任意取这四个控制点,只要不共面就行(因为共面无法组成坐标系),但原论文给了一种方法,取所有点的质心为 c 1 w c^{w}_{1} c1w并作为原点,通过主成分分析PCA得到另外的三个点 c 2 w c^{w}_{2} c2w c 3 w c^{w}_{3} c3w c 4 w c^{w}_{4} c4w建立坐标系。
2.已知参考点(特征点)在世界坐标系的坐标, P i w , j = 1 , . . . , n P^{w}_{i},j=1,...,n Piw,j=1,...,n,以及控制点在世界坐标系下的坐标,计算权重因子$\alpha $
3.计算四个控制点在相机坐标系下的坐标 c j c , j = 1 , 2 , 3 , 4 c^{c}_{j},j=1,2,3,4 cjc,j=1,2,3,4(核心)
4.计算参考点在相机坐标系下的坐标 P i c , j = 1 , . . . , n P^{c}_{i},j=1,...,n Pic,j=1,...,n
5.根据ICP方法,计算R,t。
pnp算法,3D视觉基础,计算机视觉,3d

理论推倒

1.控制点及齐次重心坐标系

这里实际上是步骤2,为了表述清晰我先说明。
这里为什么叫Homogeneous Barycentric Coordinates(HB)呢?是因为使用步骤1的方法进行了控制点的选取,那么EPnP算法可以将参考点的坐标表示为控制点坐标的加权和:
P i w = ∑ j = 1 4 α i j c j w , ∑ j = 1 4 α i j = 1     ( 1 ) P^{w}_{i}=\sum_{j=1}^{4}\alpha_{ij}c^{w}_{j},\sum_{j=1}^{4}\alpha_{ij}=1 \ \ \ (1) Piw=j=14αijcjw,j=14αij=1   (1)
其中, α i j \alpha_{ij} αij是HB坐标,一旦控制点确定后, α i j \alpha_{ij} αij是唯一确定的。
在摄像头坐标系中存在同样的加权关系
P i c = ∑ j = 1 4 α i j c j c     ( 2 ) P^{c}_{i}=\sum_{j=1}^{4}\alpha_{ij}c^{c}_{j}\ \ \ (2) Pic=j=14αijcjc   (2)
那么为什么在摄像头坐标系中存在同样的加权关系,这里对(2)进行手写推导:
pnp算法,3D视觉基础,计算机视觉,3d

这里考虑一下为什么要四个控制点,要知道 P i w P^{w}_{i} Piw是非齐次的3D坐标, P i w ∈ R 3 P^{w}_{i}\in R^{3} PiwR3,假设3个控制点满足条件那么
P i w = [ x i w y i w z i w ] = [ c 1 w c 2 w c 3 w ] [ α i 1 α i 2 α i 3 ] , ∑ j = 1 4 α i j = 1 P^{w}_{i}=\begin{bmatrix} x^{w}_{i} \\ y^{w}_{i}\\ z^{w}_{i}\\ \end{bmatrix}=\begin{bmatrix} c^{w}_{1} &c^{w}_{2} & c^{w}_{3} \\ \end{bmatrix}\begin{bmatrix} \alpha_{i1}\\ \alpha_{i2}\\ \alpha_{i3}\\ \end{bmatrix},\sum_{j=1}^{4}\alpha_{ij}=1 Piw=xiwyiwziw=[c1wc2wc3w]αi1αi2αi3,j=14αij=1
一共是4个方程,而未知数是3个,这是一个超定方程组,只存在最小二乘意义上的解。换句话,在一般情形下,不存在精确满足4个方程的解。按照同样的思路,把4个控制点时的约束写成矩阵形式:
[ P i w 1 ] = C [ α i 1 α i 2 α i 3 α i 4 ] = [ c 1 w c 2 w c 3 w c 4 w 1 1 1 1 ] [ α i 1 α i 2 α i 3 α i 4 ]     ( 3 ) \begin{bmatrix} P^{w}_{i}\\ 1 \\ \end{bmatrix}=C\begin{bmatrix} \alpha_{i1}\\ \alpha_{i2}\\ \alpha_{i3}\\ \alpha_{i4}\\ \end{bmatrix}=\begin{bmatrix} c^{w}_{1} &c^{w}_{2} & c^{w}_{3} & c^{w}_{4} \\ 1& 1 &1& 1 \\ \end{bmatrix}\begin{bmatrix} \alpha_{i1}\\ \alpha_{i2}\\ \alpha_{i3}\\ \alpha_{i4}\\ \end{bmatrix} \ \ \ (3) [Piw1]=Cαi1αi2αi3αi4=[c1w1c2w1c3w1c4w1]αi1αi2αi3αi4   (3)

通过上面的推导可以发现, α i j \alpha_{ij} αij在世界坐标系和相机坐标系下相同,这就意味着,我们可以在世界坐标系下求出 α i j \alpha_{ij} αij,然后应用在相机坐标系下。根据公式(3),我们也可以得到 α i j \alpha_{ij} αij 的计算方法:
[ α i 1 α i 2 α i 3 α i 4 ] 4 × 1 = [ c 1 w c 2 w c 3 w c 4 w 1 1 1 1 ] 4 × 4 − 1 [ P i w 1 ] 4 × 1 = C − 1 [ P i w 1 ]     ( 4 ) \begin{bmatrix} \alpha_{i1}\\ \alpha_{i2}\\ \alpha_{i3}\\ \alpha_{i4}\\ \end{bmatrix}_{4\times 1}=\begin{bmatrix} c^{w}_{1} &c^{w}_{2} & c^{w}_{3} & c^{w}_{4} \\ 1& 1 &1& 1 \\ \end{bmatrix}^{-1}_{4\times 4}\begin{bmatrix} P^{w}_{i} \\ 1\\ \end{bmatrix}_{4\times 1}=C^{-1}\begin{bmatrix} P^{w}_{i} \\ 1\\ \end{bmatrix} \ \ \ (4) αi1αi2αi3αi44×1=[c1w1c2w1c3w1c4w1]4×41[Piw1]4×1=C1[Piw1]   (4)

2.控制点的选择

这里实际上是步骤1
原则上,只要控制点满足C可逆且不共面就可以,3D参考点集为 { P i w , i = 1 , 2 , . . . , n } \left\{ P_{i}^{w},i=1,2,...,n \right\} {Piw,i=1,2,...,n},选择3D参考点的重心为第一个控制点:
c 1 w = 1 n ∑ i = 1 n P i w c_{1}^{w}=\frac{1}{n}\sum_{i=1}^{n}P_{i}^{w} c1w=n1i=1nPiw
对参考点进行重心化,得到矩阵A:
A = [ P 1 w T − c 1 w T . . . P n w T − c n w T ] A=\begin{bmatrix} P_{1}^{w^{T}}-c_{1}^{w^{T}} \\ ...\\ P_{n}^{w^{T}}-c_{n}^{w^{T}}\\ \end{bmatrix} A=P1wTc1wT...PnwTcnwT

计算 A T A A^{T}A ATA的三个特征值 λ 1 , λ 2 , λ 3 \lambda_{1},\lambda_{2},\lambda_{3} λ1,λ2,λ3对应的特征向量 v 1 , v 2 , v 3 v_{1},v_{2},v_{3} v1,v2,v3,
那么剩余的三个控制点可以按照下面的公式来确定:
{ c 2 w = c 1 w + λ 1 v 1 c 3 w = c 1 w + λ 2 v 2 c 4 w = c 1 w + λ 3 v 3 \left\{\begin{matrix} c_{2}^{w}=c_{1}^{w} + \sqrt{\lambda_{1}}v_{1} \\ c_{3}^{w}=c_{1}^{w} + \sqrt{\lambda_{2}}v_{2}\\ c_{4}^{w}=c_{1}^{w} + \sqrt{\lambda_{3}}v_{3}\\ \end{matrix}\right. c2w=c1w+λ1 v1c3w=c1w+λ2 v2c4w=c1w+λ3 v3

世界坐标系下控制点的计算:第一步找到点云的重心作为坐标系的原点,然后通过主成分分析(PCA)确定坐标轴的三个方向。

3.计算控制点在相机坐标系下的坐标

手推公式:
pnp算法,3D视觉基础,计算机视觉,3d

图中最后的矩阵,齐次重心坐标 α i j \alpha_{ij} αij,相机内参数和2D投影的像素坐标都是已知量,未知量是4个控制点在相机坐标系下的坐标。共12个位置参数,一个像点可以列2个方程,n 个像点可以列出2n 个方程。
M 2 n × 12 X 12 × 1     ( 5 ) M_{2n\times12}X_{12 \times 1} \ \ \ (5) M2n×12X12×1   (5)

公式(5)中即为4个待求的3D控制点坐标,共有12个未知数维度是12×1。M的大小为 2 n × 12 2n\times12 2n×12,类比于前面讲的DLT方法,可以直接进行SVD分解。

M = U ∑ V T , O ( n 3 ) M=U \sum V^{T},O(n^{3}) M=UVT,O(n3)

这里计算一下直接对M进行SVD分解的复杂度 O ( S V D ( M ) ) = 2 n × 2 n × 2 n = 8 n 3 = O ( n 3 ) O(SVD(M))=2n \times 2n \times 2n=8n^{3}=O(n^{3}) O(SVD(M))=2n×2n×2n=8n3=O(n3),这里解释一下由于矩阵的乘法先进行每一行与每一列相乘,假设是第一行与第一列,那么会有2nx2n个参数,一共有2n行,所以是2nx2nx2n。
EPnP采用了一种复杂度更低更为高效的方法,即对 M T M M^{T}M MTM进行特征值分解
pnp算法,3D视觉基础,计算机视觉,3d
这里的复杂度为O(n),计算公式为2nx12x12。
由此可以解出
X = ∑ i = 1 N β i v i      ( 6 ) X=\sum_{i=1}^{N}\beta_{i}v_{i} \ \ \ \ (6) X=i=1Nβivi    (6)
(6)式中, v i v_{i} vi是M的N个零特征值对应的特征向量 ( 这 块 是 为 什 么 不 太 懂 ? 懂 得 可 以 评 论 ! ! ! ! ) \color{red}{(这块是为什么不太懂?懂得可以评论!!!!)} ()。对于第i个控制点-:
c i c = ∑ k = 1 N β k v k [ i ]     ( 7 ) c_{i}^{c}=\sum_{k=1}^{N}\beta_{k}v_{k}^{[i]} \ \ \ (7) cic=k=1Nβkvk[i]   (7)
可以写成展开形式
pnp算法,3D视觉基础,计算机视觉,3d

上式中, v k [ i ] v_{k}^{[i]} vk[i]是特征向量 v k v_{k} vk的第i个子向量,一共四个控制点,所以是四个。
通过对 M T M M^{T}M MTM进行特征值分解我们能够求出N个 V k V_{k} Vk 。但还需要求出 { β k } , k = 1 , 2 , 3 , . . . , N \left\{\beta_{k} \right\}, k=1,2,3,...,N {βk},k=1,2,3,...,N。才能最终求出在相机坐标系下的控制点坐标。
在原始论文中指出, M T M M^{T}M MTM特征值的个数与点对的数量以及焦距有关,EPnP算法建议只考虑N=1, 2, 3, 4的情况。

控制点在相机坐标系和世界坐标系的相对位置关系是不会发生改变的,引入相对位置约束条件:
∥ c i c − c j c ∥ = ∥ c i w − c j w ∥    ( 8 ) \left\| c_{i}^{c}-c_{j}^{c}\right\|=\left\|c_{i}^{w}-c_{j}^{w} \right\| \ \ (8) ciccjc=ciwcjw  (8)

该公式的含义是在4个控制点中任取两个点,一个为i,一个为j,进行相对位置关系计算。
将式(7)代入式(8)中:
∥ ∑ k = 1 N β k v k [ i ] − ∑ k = 1 N β k v k [ j ] ∥ = ∥ c i w − c j w ∥     ( 9 ) \left\| \sum_{k=1}^{N}\beta_{k}v_{k}^{[i]}-\sum_{k=1}^{N}\beta_{k}v_{k}^{[j]} \right\|=\left\|c_{i}^{w}-c_{j}^{w} \right\| \ \ \ (9) k=1Nβkvk[i]k=1Nβkvk[j]=ciwcjw   (9)
对于4个控制点,根据排列组合可以得到 C 4 2 C_{4}^{2} C42个这样的方程,分别是1-2,1-3,1-4,2-3, 2-4,3-4。

pnp算法,3D视觉基础,计算机视觉,3d

对N=1,N=2,N=3,N=4的情况进行手写推导:
pnp算法,3D视觉基础,计算机视觉,3d

pnp算法,3D视觉基础,计算机视觉,3d

pnp算法,3D视觉基础,计算机视觉,3d

在N=4的情况下,有10个未知数,6个方程。在Opencv中实现EPnP算法很简单:

solvePnP(pts_3d, pts_2d, K, Mat(), r, t, CV_EPNP); // 调用OpenCV 的 PnP 求解,可选择EPNP,DLS等方法,默认采用迭代法(最小化重投影)

在OpenCV中开源代码并没按照上述4种情况的方法去求解,而是采用了近似的解法,具体的可以去看一下源码。
值得说明的是,在代码中 L L L β \beta β 的排序有点不同,但不影响求解只要 L L L β \beta β 的顺序对应即可,以 β \beta β 为例说明。

pnp算法,3D视觉基础,计算机视觉,3d

Opencv的解法:
因为 β 11 \beta_{11} β11 β 12 \beta_{12} β12 β 13 \beta_{13} β13 β 14 \beta_{14} β14 β 22 \beta_{22} β22 β 23 \beta_{23} β23 β 24 \beta_{24} β24 β 33 \beta_{33} β33 β 34 \beta_{34} β34 β 44 \beta_{44} β44这10个未知数是相关的,所以我们只需求出 β 11 \beta_{11} β11 β 12 \beta_{12} β12 β 13 \beta_{13} β13 β 14 \beta_{14} β14,就能从中解出 β 1 \beta_{1} β1 β 2 \beta_{2} β2 β 3 \beta_{3} β3 β 4 \beta_{4} β4的值。

在OpenCV的源码中取 的0,1,3,6列组成了新的矩阵,,然后进行SVD分解。由于,我们写出的公式跟代码列出的公式顺序不一样。因此我们对应的选择 的0,1,2,3列组成了新的矩阵 L 6 × 4 L_{6\times 4} L6×4

上述方程可以列出6个,所以表示如下:
[ S 1 T S 1 2 S 1 T S 2 2 S 1 T S 3 2 S 1 T S 4 ] [ β 11 β 12 β 13 β 14 ] = c    ( 10 ) \begin{bmatrix} S_{1}^{T}S1& 2S_{1}^{T}S2 & 2S_{1}^{T}S3 & 2S_{1}^{T}S4 \\ \end{bmatrix}\begin{bmatrix} \beta_{11} \\ \beta_{12} \\ \beta_{13} \\ \beta_{14} \end{bmatrix}=c \ \ (10) [S1TS12S1TS22S1TS32S1TS4]β11β12β13β14=c  (10)
上述方程可以列出6个,因为i与j的不同组合有6种,所以表示如下:
L 6 × 4 β 4 × 1 = ρ 6 × 1    ( 11 ) L_{6 \times 4}\beta_{4 \times 1}=\rho_{6 \times 1} \ \ (11) L6×4β4×1=ρ6×1  (11)
这有变成了与N=2一样的问题,只不过N=2的未知数是三个,这里面是4个,同理可以用SVD方法求解,得到 β 11 \beta_{11} β11 β 12 \beta_{12} β12 β 13 \beta_{13} β13 β 14 \beta_{14} β14,就可以求出 β 1 \beta_{1} β1 β 2 \beta_{2} β2 β 3 \beta_{3} β3 β 4 \beta_{4} β4

  • Gauss-Newton(高斯-牛顿法)优化参数 β \beta β
    如果大家需要经常研究优化问题,那么我强烈建议不要仅仅去看高翔老师的视觉SLAM14讲,特别是搞研究的,一定要去看最优化理论,推荐陈宝林老师的书,我在后续的博客可能也会从数学的角度写一些基础的算法。

进入正题:
优化目标: 缩小两个坐标系下控制点间距差。
优化的目标函数:
E r r o r ( β ) i j = ∥ c i c − c j c ∥ 2 − ∥ c i w − c j w ∥ 2    ( 12 ) Error(\beta)_{ij}=\left\|c_{i}^{c}-c_{j}^{c} \right\|^{2}-\left\|c_{i}^{w}-c_{j}^{w} \right\|^{2} \ \ (12) Error(β)ij=ciccjc2ciwcjw2  (12)

β ∗ = a r g m i n β ∑ ( i , j ) s . t . i < j ∥ E r r o r i j ( β ) ∥ 2   ( 13 ) \beta^{*}=arg min_{\beta}\sum_{(i,j)s.t.i<j}^{}\left\|Error_{ij}(\beta) \right\|^{2} \ (13) β=argminβ(i,j)s.t.i<jErrorij(β)2 (13)

这是一个无约束的非线性最优化问题,Gauss-Newton求解式,首先求解 E r r o r ( β ) Error(\beta) Error(β)相对于 β \beta β的雅克比矩阵。

pnp算法,3D视觉基础,计算机视觉,3d

pnp算法,3D视觉基础,计算机视觉,3d

J i j J_{ij} Jij的维度为1×4,将6个小雅克比矩阵 J i j J_{ij} Jij合成为6×4的大雅克比矩阵
J = [ J 12 J 13 J 14 J 23 J 24 J 34 ] J=\begin{bmatrix} J_{12}\\ J_{13}\\ J_{14}\\ J_{23}\\ J_{24}\\ J_{34} \end{bmatrix} J=J12J13J14J23J24J34,记残差为 e = E r r o r = [ E r r o r 12 ( β ) E r r o r 13 ( β ) E r r o r 14 ( β ) E r r o r 23 ( β ) E r r o r 24 ( β ) E r r o r 34 ( β ) ] e=Error=\begin{bmatrix} Error_{12}(\beta)\\ Error_{13}(\beta)\\ Error_{14}(\beta)\\ Error_{23}(\beta)\\ Error_{24}(\beta)\\ Error_{34}(\beta) \end{bmatrix} e=Error=Error12(β)Error13(β)Error14(β)Error23(β)Error24(β)Error34(β)
增量方程:
J T J δ β = − J T e J^{T}J\delta \beta=-J^{T}e JTJδβ=JTe
δ β \delta\beta δβ的求解在OpenCV中没有采用 δ β = − ( J T J ) − 1 J T e \delta\beta=-(J^{T}J)^{-1}J^{T}e δβ=(JTJ)1JTe的方式求解,而是对 J δ β = − e J\delta\beta=-e Jδβ=e进行QR分解,从而得到 δ β \delta\beta δβ
因为J是一个超定矩阵,求线性最小二乘问题时,正规方程的解是不稳定的,所以用QR分解。
之后更新 β \beta β, β : = β + δ β \beta:=\beta+\delta\beta β:=β+δβ

至此我们通过N=1,N=2,N=3,N=4可以确定四组 β \beta β v v v,最后通过公式(6)计算控制点在相机坐标下的坐标。 ( 具 体 选 择 哪 种 情 况 需 要 根 据 恢 复 影 像 的 外 方 位 元 素 后 , 计 算 的 反 投 影 误 差 决 定 ! , 不 太 理 解 , 欢 迎 讨 论 ) \color{red}{(具体选择哪种情况需要根据恢复影像的外方位元素后,计算的反投影误差决定!,不太理解,欢迎讨论)} ()

4.求解R,t(ICP方法)

转变成了已知一组3D点在不同坐标系下的坐标求位姿R,t的问题,也就是典型的ICP问题。
ICP(迭代最近点)算法推导详解这篇文章进行了详细推导与解释。

参考文章

https://zhuanlan.zhihu.com/p/361791835
https://blog.csdn.net/jessecw79/article/details/82945918#control_points_64
[泡泡机器人公开课]第三十九课:PnP 算法简介&代码解析-柴政文章来源地址https://www.toymoban.com/news/detail-779301.html

到了这里,关于PnP算法详解(超详细公式推导)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • PnP解算及SolvePnp用法

    PnP问题:Perspective-n-Point问题。 参考下图, 给定n个3D空间参考点,以及各点在相机图像上对应的成像点,求参考点所在坐标系与相机的空间关系。 即: 已知条件1:给定匹配点对:世界坐标系(图中OwXwYwZw)下的n个3D点坐标及其对应在图像坐标系(图中ouv)下的2D点坐标。 已

    2024年02月03日
    浏览(35)
  • pnp单目相机标定测距

    参考:opencv 单目相机pnp测距(Cpp)-CSDN博客

    2024年02月08日
    浏览(37)
  • PNP结算方法(后面可能有空再补充了)

    一些pnp的实验结论: (1)yaw角稳定性上: 在opencv中, SOLVEPNP_UPNP=SOLVEPNP_EPNP=SOLVEPNP_DLSSOLVEPNP_IPPESOLVEPNP_AP3PSOLVEPNP_ITERATIVE 固定一个识别物体检查结算的yaw角 在这张图中l1是ippe,l2是AP3P,l3,l4分别是UPNP,EPNP,两者基本重叠 第二张图l1,l2,l3,l4分别是IPPE,DLS,UPNP,EPNP,后三者基本

    2024年02月12日
    浏览(71)
  • opencv 单目相机pnp测距(Cpp)

    单目相机pnp测距是通过单目相机拍摄的一张2d图片,来测量图片中某物与相机的距离。 需要知道被测物的实际尺寸 测距前 需要先 相机标定 ,需要使用哪个相机进行测距就标定哪个。一旦换成了其他相机, 就要重新标定最终相机。 为什么要相机标定? 相机标定是为了得到从

    2024年02月04日
    浏览(41)
  • pnp4nagios 配置 nagios

    /root/software/pnp4nagios-0.6.26/sample-config/nagios.cfg-sample.in /root/software/pnp4nagios-0.6.26/sample-config/misccommands.cfg-sample.in /root/software/pnp4nagios-0.6.26/sample-config/nagios.cfg-sample /root/software/pnp4nagios-0.6.26/sample-config/misccommands.cfg-sample /root/software/pnp4nagios-0.6.26/sample-config/pnp/rra.cfg-sample /root/software/p

    2024年01月25日
    浏览(31)
  • 【大道至简】机器学习算法之隐马尔科夫模型(Hidden Markov Model, HMM)详解(2)---计算问题:前向算法和后向算法原理详解公式推导及Python实现

    ☕️ 本文系列文章汇总: (1)HMM开篇:基本概念和几个要素 (2)HMM计算问题:前后向算法 (3)HMM学习问题:Baum-Welch算法 (4) HMM预测问题:维特比算法 ☕️ 本文来自专栏: 大道至简之机器学习系列专栏 ❤️各位小伙伴们关注我的大道至简之机器学习系列专栏,一起学

    2024年02月05日
    浏览(49)
  • 【opencv3】详述PnP测距完整流程(附C++代码)

    我们只要获得 特征点的世界坐标(三维坐标)、2D坐标(像素坐标)、相机内参矩阵、相机畸变参数矩阵 以上四个参数即可以解得相机与标志物之间的外参( 旋转矩阵R、平移矩阵T ),并以此求得相机的世界坐标(以标志物为世界坐标平面,且原点为标志物已知某一点)。

    2024年02月11日
    浏览(41)
  • 一文读懂PnP问题及opencv solvePnP、solvePnPRansac函数

    参考资料:一文了解PnP算法 PnP问题 对极约束:2D-2D,通过二维图像点的对应关系,恢复两帧之间相机的运动。 PnP:3D-2D,求解3D到2D点对运动的方法。已知3D空间点及其在相机投影位置时,求解相机运动。 ICP:3D-3D,配对好的3D点,已知世界坐标系下的3D点和相机坐标系下的3

    2024年02月16日
    浏览(39)
  • PnP and Perspective Projection and Pose Computation

    Review PnP problem from a computer graphics rendering view 首先从一个 StackExchange 问题出发,下面是本人的回答摘录。 What is the difference between Intrinsic Matrix( K ) and Perspective Projection Matrix(call it P Matrix later)? For K Matrix it transform 3D points to 2D pixels in image space. And during this procedure only x and y value

    2024年02月13日
    浏览(43)
  • Smoothieware_best-for-pnp 工具链的升级尝试

    正在迁移Smoothieware_best-for-pnp到MCUXPresso的失败实验中徘徊. 现在已知2者的工具链版本是不一样的. 通过2进制比对, 知道2家用的都是公版的gcc for arm的版本. MCUXPresso 是10.3, NXP家并没有改gcc, 是公版的实现. gcc-arm-none-eabi-10.3-2021.10-win32.zip Smoothieware_best-for-pnp 是4.8, 也是公版的实现

    2024年02月05日
    浏览(39)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包