ICP變種Point-To-Plane算法推導

前言

接續ICP(Iterative Closest Point)算法推導,本篇介紹ICP的變種Point-To-Plane損失函數及其求解方法。

本文同樣整理自深藍學院三維點雲處理課程的Lecture 9 – Registration。

損失函數

在一般(Point-To-Point)的ICP中,是以多組點對距離的平方和當作損失函數,在Point-To-Plane中,則是以多組點對經轉換後的source點到target點法向量所定義的平面的距離平方和當作損失函數。

如下圖:
point-to-plane

將第 i i i組點對表示為 ( p i , q i ) (p_i,q_i) (pi,qi),其中 q i q_i qi的法向量為 n i n_i ni

R , t R,t R,t轉換後的 p i p_i pi q i q_i qi所在局部擬合平面的距離等於兩者連線 R p i + t − q i Rp_i+t - q_i Rpi+tqi n i n_i ni方向上的投影,也就是 ( R p i + t − q i ) T n i (Rp_i+t - q_i)^Tn_i (Rpi+tqi)Tni

考慮所有 1 1 1 n n n組點對,所以有以下損失函數:
E ( R , t ) = ∑ i = 1 n ( ( R p i + t − q i ) T n i ) 2 E(R,t) = \sum\limits^n_{i=1}((Rp_i+t - q_i)^Tn_i)^2 E(R,t)=i=1n((Rpi+tqi)Tni)2

R,t參數化

可以將 R R R拆成以 x x x為軸、以 y y y為軸和以 z z z為軸的旋轉,假設在這三個軸上各自旋轉 α , β , γ \alpha,\beta,\gamma α,β,γ度,則有:

R x ( α ) = [ 1 0 0 0 cos ⁡ ( α ) − sin ⁡ ( α ) 0 sin ⁡ ( α ) cos ⁡ ( α ) ] R_x(\alpha) = \begin{bmatrix}1 & 0 & 0 \\ 0 & \cos(\alpha) & -\sin(\alpha) \\ 0 & \sin(\alpha) & \cos(\alpha) \end{bmatrix} Rx(α)=1000cos(α)sin(α)0sin(α)cos(α)

R y ( β ) = [ cos ⁡ ( β ) 0 sin ⁡ ( β ) 0 1 0 − sin ⁡ ( β ) 0 cos ⁡ ( β ) ] R_y(\beta) = \begin{bmatrix}\cos(\beta) & 0 & \sin(\beta) \\ 0 & 1 & 0 \\ -\sin(\beta) & 0 & \cos(\beta) \end{bmatrix} Ry(β)=cos(β)0sin(β)010sin(β)0cos(β)

R z ( γ ) = [ cos ⁡ ( γ ) − sin ⁡ ( γ ) 0 sin ⁡ ( γ ) cos ⁡ ( γ ) 0 0 0 1 ] R_z(\gamma) = \begin{bmatrix}\cos(\gamma) & -\sin(\gamma) & 0 \\ \sin(\gamma) & \cos(\gamma) & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(γ)=cos(γ)sin(γ)0sin(γ)cos(γ)0001

旋轉矩陣為它們三者的乘積,先沿 x x x軸旋轉,然後依次沿 y , z y,z y,z軸旋轉:

R = R z ( γ ) R y ( β ) R x ( α ) ≜ [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] R = R_z(\gamma)R_y(\beta)R_x(\alpha) \triangleq \begin{bmatrix}r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33}\end{bmatrix} R=Rz(γ)Ry(β)Rx(α)r11r21r31r12r22r32r13r23r33

展開如下:

R = R z ( γ ) [ cos ⁡ ( β ) 0 sin ⁡ ( β ) 0 1 0 − sin ⁡ ( β ) 0 cos ⁡ ( β ) ] [ 1 0 0 0 cos ⁡ ( α ) − sin ⁡ ( α ) 0 sin ⁡ ( α ) cos ⁡ ( α ) ] = [ cos ⁡ ( γ ) − sin ⁡ ( γ ) 0 sin ⁡ ( γ ) cos ⁡ ( γ ) 0 0 0 1 ] [ cos ⁡ ( β ) sin ⁡ ( α ) sin ⁡ ( β ) cos ⁡ ( α ) sin ⁡ ( β ) 0 cos ⁡ ( α ) − sin ⁡ ( α ) − sin ⁡ ( β ) sin ⁡ ( α ) cos ⁡ ( β ) cos ⁡ ( α ) cos ⁡ ( β ) ] = [ cos ⁡ ( β ) cos ⁡ ( γ ) sin ⁡ ( α ) sin ⁡ ( β ) cos ⁡ ( γ ) − cos ⁡ ( α ) sin ⁡ ( γ ) cos ⁡ ( α ) sin ⁡ ( β ) cos ⁡ ( γ ) + sin ⁡ ( α ) sin ⁡ ( γ ) cos ⁡ ( β ) sin ⁡ ( γ ) sin ⁡ ( α ) sin ⁡ ( β ) sin ⁡ ( γ ) + cos ⁡ ( α ) cos ⁡ ( γ ) cos ⁡ ( α ) sin ⁡ ( β ) sin ⁡ ( γ ) − sin ⁡ ( α ) cos ⁡ ( γ ) − sin ⁡ ( β ) sin ⁡ ( α ) cos ⁡ ( β ) cos ⁡ ( α ) cos ⁡ ( β ) ] \begin{aligned} R &= R_z(\gamma)\begin{bmatrix}\cos(\beta) & 0 & \sin(\beta) \\ 0 & 1 & 0 \\ -\sin(\beta) & 0 & \cos(\beta) \end{bmatrix}\begin{bmatrix}1 & 0 & 0 \\ 0 & \cos(\alpha) & -\sin(\alpha) \\ 0 & \sin(\alpha) & \cos(\alpha) \end{bmatrix} \\&= \begin{bmatrix}\cos(\gamma) & -\sin(\gamma) & 0 \\ \sin(\gamma) & \cos(\gamma) & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix}\cos(\beta) & \sin(\alpha)\sin(\beta) & \cos(\alpha)\sin(\beta) \\ 0 & \cos(\alpha) & -\sin(\alpha) \\ -\sin(\beta) & \sin(\alpha)\cos(\beta) & \cos(\alpha)\cos(\beta) \end{bmatrix} \\&= \begin{bmatrix}\cos(\beta)\cos(\gamma) & \sin(\alpha)\sin(\beta)\cos(\gamma)-\cos(\alpha)\sin(\gamma) & \cos(\alpha)\sin(\beta)\cos(\gamma)+\sin(\alpha)\sin(\gamma) \\ \cos(\beta)\sin(\gamma) & \sin(\alpha)\sin(\beta)\sin(\gamma)+\cos(\alpha)\cos(\gamma) & \cos(\alpha)\sin(\beta)\sin(\gamma)-\sin(\alpha)\cos(\gamma) \\ -\sin(\beta) & \sin(\alpha)\cos(\beta) & \cos(\alpha)\cos(\beta) \end{bmatrix}\end{aligned} R=Rz(γ)cos(β)0sin(β)010sin(β)0cos(β)1000cos(α)sin(α)0sin(α)cos(α)=cos(γ)sin(γ)0sin(γ)cos(γ)0001cos(β)0sin(β)sin(α)sin(β)cos(α)sin(α)cos(β)cos(α)sin(β)sin(α)cos(α)cos(β)=cos(β)cos(γ)cos(β)sin(γ)sin(β)sin(α)sin(β)cos(γ)cos(α)sin(γ)sin(α)sin(β)sin(γ)+cos(α)cos(γ)sin(α)cos(β)cos(α)sin(β)cos(γ)+sin(α)sin(γ)cos(α)sin(β)sin(γ)sin(α)cos(γ)cos(α)cos(β)

所以 R R R α , β , γ \alpha,\beta,\gamma α,β,γ的(非線性)函數。

假設每次迭代估計出來的旋轉角度都很小 α , β , γ → 0 \alpha,\beta,\gamma \rightarrow 0 α,β,γ0,那麼:
cos ⁡ ( θ ) → 1 \cos(\theta) \rightarrow 1 cos(θ)1 sin ⁡ ( θ ) → θ \sin(\theta) \rightarrow \theta sin(θ)θ θ 2 → 0  if  θ → 0 \theta^2 \rightarrow 0 \text{ if } \theta \rightarrow 0 θ20 if θ0

將上面得到的前兩個近似代入矩陣 R R R

R ≈ [ 1 ∗ 1 α ∗ β ∗ 1 − 1 ∗ γ 1 ∗ β ∗ 1 + α ∗ γ 1 ∗ γ α ∗ β ∗ γ + 1 ∗ 1 1 ∗ β ∗ γ − α ∗ 1 − β α ∗ 1 1 ∗ 1 ] R \approx \begin{bmatrix}1*1 & \alpha*\beta*1-1*\gamma & 1*\beta*1+\alpha*\gamma \\ 1*\gamma & \alpha*\beta*\gamma+1*1 & 1*\beta*\gamma-\alpha*1 \\ -\beta & \alpha*1 & 1*1 \end{bmatrix} R111γβαβ11γαβγ+11α11β1+αγ1βγα111

接著套用最後一個近似 θ 2 → 0  if  θ → 0 \theta^2 \rightarrow 0 \text{ if } \theta \rightarrow 0 θ20 if θ0,得到:

R ≈ [ 1 − γ β γ 1 − α − β α 1 ] R \approx \begin{bmatrix}1 & -\gamma & \beta \\ \gamma & 1 & -\alpha \\ -\beta & \alpha & 1 \end{bmatrix} R1γβγ1αβα1

至此, R R R已經變為 α , β , γ \alpha,\beta,\gamma α,β,γ的線性函數了。

t t t的參數化很簡單,也是用三個變數來表達: t = [ t x t y t z ] t = \begin{bmatrix}t_x \\ t_y \\ t_z \end{bmatrix} t=txtytz

如此一來損失函數就變成未知數的線性函數了(?)

最小二乘問題

此處的目標是將損失函數表示成 ∥ A x − b ∥ 2 \|Ax-b\|^2 Axb2的形式,接下來就可以把它當成最小二乘問題,套用現成的方法求解。

先關注第 i i i項的距離(未做平方):
( R p i + t − q i ) T n i = ( [ 1 − γ β γ 1 − α − β α 1 ] [ p i x p i y p i z ] + [ t x t y t z ] − [ q i x q i y q i z ] ) T n i = [ p i x − p i y γ + p i z β + t x − q i x p i x γ + p i y − p i z α + t y − q i y − p i x β + p i y α + p i z + t z − q i z ] T [ n i x n i y n i z ] = n i x ( p i x − p i y γ + p i z β + t x − q i x ) + n i y ( p i x γ + p i y − p i z α + t y − q i y ) + n i z ( − p i x β + p i y α + p i z + t z − q i z ) = ( n i z p i y − n i y p i z ) α + ( n i x p i z − n i z p i x ) β + ( n i y p i x − n i x p i y ) γ + n i x t x + n i y t y + n i z t z − ( n i x q i x + n i y q i y + n i z q i z − n i x p i x − n i y p i y − n i z p i z ) \begin{aligned}(Rp_i+t - q_i)^Tn_i &= (\begin{bmatrix}1 & -\gamma & \beta \\ \gamma & 1 & -\alpha \\ -\beta & \alpha & 1 \end{bmatrix}\begin{bmatrix}p_{ix}\\p_{iy}\\p_{iz}\end{bmatrix}+\begin{bmatrix}t_{x}\\t_{y}\\t_{z}\end{bmatrix}-\begin{bmatrix}q_{ix}\\q_{iy}\\q_{iz}\end{bmatrix})^Tn_i \\&= \begin{bmatrix} p_{ix}- p_{iy}\gamma+ p_{iz}\beta+t_{x}-q_{ix} \\ p_{ix}\gamma+p_{iy}-p_{iz}\alpha+t_{y}-q_{iy} \\ -p_{ix}\beta +p_{iy} \alpha + p_{iz}+t_{z}-q_{iz}\end{bmatrix}^T\begin{bmatrix}n_{ix} \\ n_{iy} \\ n_{iz} \end{bmatrix} \\&= n_{ix}(p_{ix}- p_{iy}\gamma+ p_{iz}\beta+t_{x}-q_{ix}) \\&+ n_{iy}(p_{ix}\gamma+p_{iy}-p_{iz}\alpha+t_{y}-q_{iy}) \\&+ n_{iz}(-p_{ix}\beta +p_{iy} \alpha + p_{iz}+t_{z}-q_{iz}) \\&= (n_{iz}p_{iy} -n_{iy}p_{iz})\alpha+(n_{ix}p_{iz}-n_{iz}p_{ix})\beta+(n_{iy}p_{ix}-n_{ix}p_{iy})\gamma \\&+n_{ix}t_{x}+n_{iy}t_{y}+n_{iz}t_{z} \\&- (n_{ix}q_{ix}+n_{iy}q_{iy}+n_{iz}q_{iz}-n_{ix}p_{ix}-n_{iy}p_{iy}-n_{iz}p_{iz}) \end{aligned} (Rpi+tqi)Tni=(1γβγ1αβα1pixpiypiz+txtytzqixqiyqiz)Tni=pixpiyγ+pizβ+txqixpixγ+piypizα+tyqiypixβ+piyα+piz+tzqizTnixniyniz=nix(pixpiyγ+pizβ+txqix)+niy(pixγ+piypizα+tyqiy)+niz(pixβ+piyα+piz+tzqiz)=(nizpiyniypiz)α+(nixpiznizpix)β+(niypixnixpiy)γ+nixtx+niyty+niztz(nixqix+niyqiy+nizqiznixpixniypiynizpiz)

注意因為我們希望將損失函數表示為 ∥ A x − b ∥ 2 \|Ax-b\|^2 Axb2的形式,所以最後一個符號是減。

定義未知數向量 x ≜ [ α β γ t x t y t z ] T x \triangleq \begin{bmatrix}\alpha & \beta & \gamma & t_{x} & t_{y} & t_{z}\end{bmatrix}^T x[αβγtxtytz]T

將所有 i = 1 ~ n i=1~n i=1n的各項納入考慮,定義矩陣 A ≜ [ a 11 a 12 a 13 n 1 x n 1 y n 1 z . . . a i 1 a i 2 a i 3 n i x n i y n i z . . . a N 1 a N 2 a N 3 n N x n N y n N z ] A \triangleq \begin{bmatrix}a_{11} & a_{12} & a_{13} & n_{1x} & n_{1y} & n_{1z} \\ ... \\ a_{i1} & a_{i2} & a_{i3} & n_{ix} & n_{iy} & n_{iz} \\... \\ a_{N1} & a_{N2} & a_{N3} & n_{Nx} & n_{Ny} & n_{Nz} \end{bmatrix} Aa11...ai1...aN1a12ai2aN2a13ai3aN3n1xnixnNxn1yniynNyn1zniznNz

其中 a i 1 = n i z p i y − n i y p i z a_{i1} = n_{iz}p_{iy} -n_{iy}p_{iz} ai1=nizpiyniypiz a i 2 = n i x p i z − n i z p i x a_{i2} = n_{ix}p_{iz}-n_{iz}p_{ix} ai2=nixpiznizpix a i 3 = n i y p i x − n i x p i y a_{i3} = n_{iy}p_{ix}-n_{ix}p_{iy} ai3=niypixnixpiy

定義矩陣 b ≜ [ b 1 . . . b i . . . b N ] b \triangleq \begin{bmatrix}b_1 \\ ... \\ b_i \\ ... \\ b_N \end{bmatrix} bb1...bi...bN

其中 b i = n i x q i x + n i y q i y + n i z q i z − n i x p i x − n i y p i y − n i z p i z b_i = n_{ix}q_{ix}+n_{iy}q_{iy}+n_{iz}q_{iz}-n_{ix}p_{ix}-n_{iy}p_{iy}-n_{iz}p_{iz} bi=nixqix+niyqiy+nizqiznixpixniypiynizpiz

於是我們就可以將損失函數表示為:

E ( R , t ) = ∑ i = 1 n ( ( R p i + t − q i ) T n i ) 2 = ∥ A x − b ∥ 2 E(R,t) = \sum\limits^n_{i=1}((Rp_i+t - q_i)^Tn_i)^2 = \|Ax-b\|^2 E(R,t)=i=1n((Rpi+tqi)Tni)2=Axb2

求解

將損失函數表達為最小二乘問題後,接下來就可以用以下方式來求解:

  1. Moore–Penrose偽逆
  2. SVD矩陣分解

Moore–Penrose偽逆

根據Moore–Penrose inverse, 假設有 A ∈ R m × n , m > = n A \in \R^{m \times n}, m >=n ARm×n,m>=n,在 A A A的每個column都是線性獨立(column full-rank),即 A T A A^TA ATA是可逆的情況下,有: A + = ( A T A ) − 1 A T A^+=(A^TA)^{-1}A^T A+=(ATA)1AT,其中 A + A = I A^+A = I A+A=I A + A^+ A+稱為 A A A的left inverse。

對於 A x = b Ax=b Ax=b這個方程來說,取 x ^ = A + b = ( A T A ) − 1 A T b \hat{x} = A^+b = (A^TA)^{-1}A^Tb x^=A+b=(ATA)1ATb可以使得 ∥ A x − b ∥ \|Ax-b\| Axb為最小,即最小二乘解。證明可以參考stanford - Least-squares的第二到第四頁。

欲計算 x ^ \hat{x} x^,可以先分別計算 ( A T A ) − 1 (A^TA)^{-1} (ATA)1 A T b A^Tb ATb,再將它們相乘即可。

首先計算 ( A T A ) − 1 (A^TA)^{-1} (ATA)1

A T A = [ a 11 . . . a i 1 . . . a N 1 a 12 . . . a i 2 . . . a N 2 a 13 . . . a i 3 . . . a N 3 n 1 x . . . n i x . . . n N x n 1 y . . . n i y . . . n N y n 1 z . . . n i z . . . n N z ] [ a 11 a 12 a 13 n 1 x n 1 y n 1 z . . . a i 1 a i 2 a i 3 n i x n i y n i z . . . a N 1 a N 2 a N 3 n N x n N y n N z ] \begin{aligned}A^TA &= \begin{bmatrix}a_{11} & ... & a_{i1} & ... & a_{N1} \\ a_{12} & ... & a_{i2} & ... & a_{N2} \\ a_{13} & ... & a_{i3} & ... & a_{N3} \\ n_{1x} & ... & n_{ix} & ... & n_{Nx} \\ n_{1y} & ... & n_{iy} & ... & n_{Ny} \\ n_{1z} & ... & n_{iz} & ... & n_{Nz} \end{bmatrix} \begin{bmatrix}a_{11} & a_{12} & a_{13} & n_{1x} & n_{1y} & n_{1z} \\ ... \\ a_{i1} & a_{i2} & a_{i3} & n_{ix} & n_{iy} & n_{iz} \\... \\ a_{N1} & a_{N2} & a_{N3} & n_{Nx} & n_{Ny} & n_{Nz} \end{bmatrix} \end{aligned} ATA=a11a12a13n1xn1yn1z..................ai1ai2ai3nixniyniz..................aN1aN2aN3nNxnNynNza11...ai1...aN1a12ai2aN2a13ai3aN3n1xnixnNxn1yniynNyn1zniznNz

來看看其中的幾項:

A T A ( 1 , 1 ) = [ a 11 . . . a i 1 . . . a N 1 ] [ a 11 . . . a i 1 . . . a N 1 ] = ∑ i = 1 N a i 1 2 A^TA(1,1) = \begin{bmatrix}a_{11} & ... & a_{i1} & ... & a_{N1}\end{bmatrix} \begin{bmatrix}a_{11} \\ ... \\ a_{i1} \\... \\ a_{N1} \end{bmatrix} = \sum\limits_{i=1}^Na_{i1}^2 ATA(1,1)=[a11...ai1...aN1]a11...ai1...aN1=i=1Nai12

A T A ( 1 , 2 ) = [ a 11 . . . a i 1 . . . a N 1 ] [ a 12 . . . a i 2 . . . a N 2 ] = ∑ i = 1 N a i 1 a i 2 A^TA(1,2) = \begin{bmatrix}a_{11} & ... & a_{i1} & ... & a_{N1}\end{bmatrix} \begin{bmatrix}a_{12} \\ ... \\ a_{i2} \\... \\ a_{N2} \end{bmatrix} = \sum\limits_{i=1}^Na_{i1}a_{i2} ATA(1,2)=[a11...ai1...aN1]a12...ai2...aN2=i=1Nai1ai2

A T A ( 1 , 4 ) = [ a 11 . . . a i 1 . . . a N 1 ] [ n 1 x . . . n i x . . . n N x ] = ∑ i = 1 N a i 1 n i x A^TA(1,4) = \begin{bmatrix}a_{11} & ... & a_{i1} & ... & a_{N1}\end{bmatrix} \begin{bmatrix}n_{1x} \\ ... \\ n_{ix} \\... \\ n_{Nx} \end{bmatrix} = \sum\limits_{i=1}^Na_{i1}n_{ix} ATA(1,4)=[a11...ai1...aN1]n1x...nix...nNx=i=1Nai1nix

A T A ( 5 , 6 ) = [ n 1 y . . . n i y . . . n N y ] [ n 1 z . . . n i z . . . n N z ] = ∑ i = 1 N n i y n i z A^TA(5,6) = \begin{bmatrix}n_{1y} & ... & n_{iy} & ... & n_{Ny}\end{bmatrix} \begin{bmatrix}n_{1z} \\ ... \\ n_{iz} \\... \\ n_{Nz} \end{bmatrix} = \sum\limits_{i=1}^Nn_{iy}n_{iz} ATA(5,6)=[n1y...niy...nNy]n1z...niz...nNz=i=1Nniyniz

所以:

A T A = [ ∑ i = 1 N a i 1 2 ∑ i = 1 N a i 1 a i 2 ∑ i = 1 N a i 1 a i 3 ∑ i = 1 N a i 1 n i x ∑ i = 1 N a i 1 n i y ∑ i = 1 N a i 1 n i z ∑ i = 1 N a i 2 a i 1 ∑ i = 1 N a i 2 2 ∑ i = 1 N a i 1 a i 3 ∑ i = 1 N a i 1 n i x ∑ i = 1 N a i 1 n i y ∑ i = 1 N a i 1 n i z ∑ i = 1 N a i 3 a i 1 ∑ i = 1 N a i 3 a i 2 ∑ i = 1 N a i 3 2 ∑ i = 1 N a i 3 n i x ∑ i = 1 N a i 3 n i y ∑ i = 1 N a i 3 n i z ∑ i = 1 N n i x a i 1 ∑ i = 1 N n i x a i 2 ∑ i = 1 N n i x a i 3 ∑ i = 1 N n i x 2 ∑ i = 1 N n i x n i y ∑ i = 1 N n i x n i z ∑ i = 1 N n i y a i 1 ∑ i = 1 N n i y a i 2 ∑ i = 1 N n i y a i 3 ∑ i = 1 N n i y n i x ∑ i = 1 N n i y 2 ∑ i = 1 N n i y n i z ∑ i = 1 N n i z a i 1 ∑ i = 1 N n i z a i 2 ∑ i = 1 N n i z a i 3 ∑ i = 1 N n i z n i x ∑ i = 1 N n i z n i y ∑ i = 1 N n i z 2 ] A^TA = \begin{bmatrix}\sum\limits_{i=1}^Na_{i1}^2 & \sum\limits_{i=1}^Na_{i1}a_{i2} & \sum\limits_{i=1}^Na_{i1}a_{i3} & \sum\limits_{i=1}^Na_{i1}n_{ix} & \sum\limits_{i=1}^Na_{i1}n_{iy} & \sum\limits_{i=1}^Na_{i1}n_{iz} \\ \sum\limits_{i=1}^Na_{i2}a_{i1} & \sum\limits_{i=1}^Na_{i2}^2 & \sum\limits_{i=1}^Na_{i1}a_{i3} & \sum\limits_{i=1}^Na_{i1}n_{ix} & \sum\limits_{i=1}^Na_{i1}n_{iy} & \sum\limits_{i=1}^Na_{i1}n_{iz} \\ \sum\limits_{i=1}^Na_{i3}a_{i1} & \sum\limits_{i=1}^Na_{i3}a_{i2} & \sum\limits_{i=1}^Na_{i3}^2 & \sum\limits_{i=1}^Na_{i3}n_{ix} & \sum\limits_{i=1}^Na_{i3}n_{iy} & \sum\limits_{i=1}^Na_{i3}n_{iz} \\ \sum\limits_{i=1}^Nn_{ix}a_{i1} & \sum\limits_{i=1}^Nn_{ix}a_{i2} & \sum\limits_{i=1}^Nn_{ix}a_{i3} & \sum\limits_{i=1}^Nn_{ix}^2 & \sum\limits_{i=1}^Nn_{ix}n_{iy} & \sum\limits_{i=1}^Nn_{ix}n_{iz} \\ \sum\limits_{i=1}^Nn_{iy}a_{i1} & \sum\limits_{i=1}^Nn_{iy}a_{i2} & \sum\limits_{i=1}^Nn_{iy}a_{i3} & \sum\limits_{i=1}^Nn_{iy}n_{ix} & \sum\limits_{i=1}^Nn_{iy}^2 & \sum\limits_{i=1}^Nn_{iy}n_{iz} \\ \sum\limits_{i=1}^Nn_{iz}a_{i1} & \sum\limits_{i=1}^Nn_{iz}a_{i2} & \sum\limits_{i=1}^Nn_{iz}a_{i3} & \sum\limits_{i=1}^Nn_{iz}n_{ix} & \sum\limits_{i=1}^Nn_{iz}n_{iy} & \sum\limits_{i=1}^Nn_{iz}^2 \end{bmatrix} ATA=i=1Nai12i=1Nai2ai1i=1Nai3ai1i=1Nnixai1i=1Nniyai1i=1Nnizai1i=1Nai1ai2i=1Nai22i=1Nai3ai2i=1Nnixai2i=1Nniyai2i=1Nnizai2i=1Nai1ai3i=1Nai1ai3i=1Nai32i=1Nnixai3i=1Nniyai3i=1Nnizai3i=1Nai1nixi=1Nai1nixi=1Nai3nixi=1Nnix2i=1Nniynixi=1Nniznixi=1Nai1niyi=1Nai1niyi=1Nai3niyi=1Nnixniyi=1Nniy2i=1Nnizniyi=1Nai1nizi=1Nai1nizi=1Nai3nizi=1Nnixnizi=1Nniynizi=1Nniz2

接著看 A T b A^Tb ATb

A T b = [ a 11 . . . a i 1 . . . a N 1 a 12 . . . a i 2 . . . a N 2 a 13 . . . a i 3 . . . a N 3 n 1 x . . . n i x . . . n N x n 1 y . . . n i y . . . n N y n 1 z . . . n i z . . . n N z ] [ b 1 . . . b i . . . b N ] = [ ∑ i = 1 N a i 1 b i ∑ i = 1 N a i 2 b i ∑ i = 1 N a i 3 b i ∑ i = 1 N n i x b i ∑ i = 1 N n i y b i ∑ i = 1 N n i z b i ] \begin{aligned}A^Tb &= \begin{bmatrix}a_{11} & ... & a_{i1} & ... & a_{N1} \\ a_{12} & ... & a_{i2} & ... & a_{N2} \\ a_{13} & ... & a_{i3} & ... & a_{N3} \\ n_{1x} & ... & n_{ix} & ... & n_{Nx} \\ n_{1y} & ... & n_{iy} & ... & n_{Ny} \\ n_{1z} & ... & n_{iz} & ... & n_{Nz} \end{bmatrix}\begin{bmatrix}b_1 \\ ... \\ b_i \\ ... \\ b_N \end{bmatrix} \\&= \begin{bmatrix}\sum\limits_{i=1}^Na_{i1}b_i \\ \sum\limits_{i=1}^Na_{i2}b_i \\ \sum\limits_{i=1}^Na_{i3}b_i \\ \sum\limits_{i=1}^Nn_{ix}b_i \\ \sum\limits_{i=1}^Nn_{iy}b_i \\ \sum\limits_{i=1}^Nn_{iz}b_i \end{bmatrix}\end{aligned} ATb=a11a12a13n1xn1yn1z..................ai1ai2ai3nixniyniz..................aN1aN2aN3nNxnNynNzb1...bi...bN=i=1Nai1bii=1Nai2bii=1Nai3bii=1Nnixbii=1Nniybii=1Nnizbi

最後對 ( A T A ) (A^TA) (ATA)取逆,然後左乘 A T b A^Tb ATb,即可得到最小二乘解 x ^ = ( A T A ) − 1 A T b \hat{x} = (A^TA)^{-1}A^Tb x^=(ATA)1ATb

SVD矩陣分解

假設矩陣 A A A的奇異值分解為 A = U Σ V ∗ A = U\Sigma V^* A=UΣV,那麼 A + = V Σ + U ∗ A^+=V\Sigma^+ U^* A+=VΣ+U。證明參考Pseudoinverse matrix and SVD

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于point-based的3D目标检测是一种使用点云数据进行目标检测和定位的方法。点云数据是由激光雷达等传感器获取的,可以提供物体的三维信息。在这种目标检测方法中,我们主要通过以下步骤实现: 首先,需要对点云数据进行预处理。这包括点云滤波、下采样和聚类等操作,以去除噪音并减少点云数量,以便更高效地进行目标检测。 其次,通过基于点的特征提取方法,从点云数据中提取特征。这些特征可以是点的位置、法向量、颜色或其他任何能够描述点特征的属性。通过使用这些特征,我们可以更好地区分不同的物体,并提高目标检测的准确性。 接下来,采用机器学习或深度学习的方法,训练一个目标检测模型。可以使用传统的机器学习算法,如支持向量机(SVM)或随机森林,也可以使用深度学习算法,如卷积神经网络(CNN)或点云的变种网络,如PointNet或PointNet++。训练模型时,需要使用带有标注的点云数据进行监督学习,以便模型能够学习到不同物体的特征。 最后,在测试阶段,将经过预处理和特征提取的点云数据输入到训练好的模型中。模型会根据学习到的特征,对点云进行分类和定位,将不同的目标物体与背景区分开来,并计算出它们的位置、形状和尺寸等信息。 基于point-based的3D目标检测方法具有高度的灵活性和准确性,可以应用于自动驾驶、智能安防等领域,有助于提高系统的感知能力和决策准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值