(五) 三维点云课程---Harris特征点介绍

三维点云课程—Harris特征点介绍


在讲解三维的 H a r r i s Harris Harris之前,先来介绍一下图片二维的 H a r r i s Harris Harris的原理

1.图片的Harris特征值介绍

给与一张图片,考虑一个 p a t c h patch patch x , y ∈ Ω x,y \in \Omega x,yΩ。此时在 [ u , v ] [u,v] [u,v]单位下移动这个 p a t c h patch patch,图片的 i n t e n s i t y intensity intensity变化( i n t e n s i t y intensity intensity此时为像素)为
E ( u , v ) = ∑ x , y ∈ Ω w ( x , y ) [ I ( x + u , y + v ) − I ( x , y ) ] 2 E(u,v)=\sum \limits_{x,y\in \Omega}{w(x,y)[I(x+u,y+v)-I(x,y)]^2} E(u,v)=x,yΩw(x,y)[I(x+u,y+v)I(x,y)]2
其中 w ( x , y ) w(x,y) w(x,y)表示强度变化的权重,通常用均值或者高斯表示,如下

在这里插入图片描述

左图为权重按照均值分布,表示当 x , y ∈ Ω x,y\in \Omega x,yΩ w ( x , y ) = 1 w(x,y)=1 w(x,y)=1,否则 w ( x , y ) = 0 w(x,y)=0 w(x,y)=0右图为权重按照高斯分布。为了推导方便,本文采用均值分布的方式进行介绍。

I ( x + u , y + v ) I(x+u,y+v) I(x+u,y+v) x , y x,y x,y处进行泰勒公式展开
I ( x + u , y + v ) = I ( x , y ) + u f x ( x , y ) + v f y ( x , y ) + 1 2 ! [ u 2 f x x ( x , y ) + u v f x y ( x , y ) ] + v 2 f y y ( x , y ) + . . . I(x+u,y+v)=I(x,y)+uf_x(x,y)+vf_y(x,y)+\frac{1}{2!}[u^2f_{xx}(x,y)+uvf_{xy}(x,y)]+v^2f_{yy}(x,y)+... I(x+u,y+v)=I(x,y)+ufx(x,y)+vfy(x,y)+2!1[u2fxx(x,y)+uvfxy(x,y)]+v2fyy(x,y)+...
取一阶泰勒公式
I ( x + u , y + v ) ≈ I ( x , y ) + u f x ( x , y ) + v f y ( x , y ) I(x+u,y+v) \approx I(x,y)+uf_x(x,y)+vf_y(x,y) I(x+u,y+v)I(x,y)+ufx(x,y)+vfy(x,y)
那么
E ( u , v ) = ∑ x , y ∈ Ω ( I ( x + u , y + v ) − I ( x , y ) ) 2 ≈ ∑ x , y ∈ Ω ( u f x ( x , y ) + v f y ( x , y ) ) 2 = ∑ x , y ∈ Ω u 2 I x 2 + 2 u v I x I y + v 2 I y 2 = ∑ x , y ∈ Ω [ u v ] [ I x 2 I x I y I x I y I y 2 ] [ u v ] = [ u v ] ( ∑ x , y ∈ Ω [ I x 2 I x I y I x I y I y 2 ] ) [ u v ] = [ u v ] M [ u v ] E(u,v) =\sum \limits_{x,y\in \Omega}{(I(x+u,y+v)-I(x,y))^2}\\ \approx \sum \limits_{x,y\in \Omega}{(uf_x(x,y)+vf_y(x,y))^2} \\ =\sum \limits_{x,y\in \Omega} {u^2I_x^2+2uvI_xI_y+v^2I_y^2}\\ =\sum\limits_{x,y \in \Omega } {\begin{bmatrix} u&v \end{bmatrix}\begin{bmatrix} {I_x^2}&{{I_x}{I_y}}\\ {{I_x}{I_y}}&{I_y^2} \end{bmatrix} \begin{bmatrix} u\\ v \end{bmatrix}} \\ =\begin{bmatrix} u&v \end{bmatrix}(\sum\limits_{x,y \in \Omega } {\begin{bmatrix} {I_x^2}&{{I_x}{I_y}}\\ {{I_x}{I_y}}&{I_y^2} \end{bmatrix})\begin{bmatrix} u\\ v \end{bmatrix}}\\ =\begin{bmatrix} u&v \end{bmatrix}M\begin{bmatrix} u\\ v \end{bmatrix} E(u,v)=x,yΩ(I(x+u,y+v)I(x,y))2x,yΩ(ufx(x,y)+vfy(x,y))2=x,yΩu2Ix2+2uvIxIy+v2Iy2=x,yΩ[uv][Ix2IxIyIxIyIy2][uv]=[uv](x,yΩ[Ix2IxIyIxIyIy2])[uv]=[uv]M[uv]

其中 M = ∑ x , y ∈ Ω [ I x 2 I x I y I x I y I y 2 ] M=\sum\limits_{x,y \in \Omega } {\begin{bmatrix} {I_x^2}&{{I_x}{I_y}}\\ {{I_x}{I_y}}&{I_y^2} \end{bmatrix}} M=x,yΩ[Ix2IxIyIxIyIy2]表示为图片梯度的协方差矩阵。定义 I i = [ I x i , I y i ] T I_i=[I_{xi},I_{yi}]^T Ii=[Ixi,Iyi]T,那么 M = ∑ i I i I i T M=\sum_i{I_iI_i^T} M=iIiIiT

注意:由于图像是离散的,因此不能通过求导的方式来求像素的梯度,通过差商来表示像素的梯度,差商分为前向差商 ∂ f ( x , y ) ∂ x = f ( x + 1 , y ) − f ( x , y ) \frac{{\partial f(x,y)}}{{\partial x}} = f(x + 1,y) - f(x,y) xf(x,y)=f(x+1,y)f(x,y),后向差商 ∂ f ( x , y ) ∂ x = f ( x , y ) − f ( x − 1 , y ) \frac{{\partial f(x,y)}}{{\partial x}} = f(x,y) - f(x - 1,y) xf(x,y)=f(x,y)f(x1,y),中心差商 ∂ f ( x , y ) ∂ x = f ( x + 1 , y ) − f ( x − 1 , y ) 2 \frac{{\partial f(x,y)}}{{\partial x}} = \frac{{f(x + 1,y) - f(x - 1,y)}}{2} xf(x,y)=2f(x+1,y)f(x1,y)等方法。
在这里插入图片描述

对于上述图片中经常遇到的三种情况,对应的 I i I_i Ii如下

Liner Edge: I i = [ I x i , 0 ] T I_i=[I_{xi},0]^T Ii=[Ixi,0]T

Flat: I i = [ 0 , 0 ] T I_i=[0,0]^T Ii=[0,0]T

Corner: I i = [ I x i , I y i ] T I_i=[I_{xi},I_{yi}]^T Ii=[Ixi,Iyi]T

以每一个像素点的 I x I_x Ix x x x轴, I y I_y Iy y y y轴,得到
在这里插入图片描述

分析如下,求解协方差矩阵 M M M的两个特征值 λ 1 , λ 2 \lambda_1,\lambda_2 λ1,λ2,如果其中一个特征值远远大于另一个特征值,则表示为Linear Edge,类似于上图椭圆的两个轴;如果两个特征值都比较小,则表示为Flat,类似于上图小圆的半径;如果两个特征值都比较大,则表示为Corner,类似于上图大圆的半径。图形表示如下
在这里插入图片描述

那么如何判断一个特征的大小呢,采用响应函数(Response Function) R R R来表达

Harris & Stephens(1988):
R = d e t ( M ) − k ( t r a c e ( M ) ) 2 d e t ( M ) = λ 1 λ 2 t r a c e ( M ) = λ 1 + l a m b d a 2 k ∈ [ 0.04 , 0.06 ] R=det(M)-k(trace(M))^2\\ det(M)=\lambda_1 \lambda_2 \\ trace(M)=\lambda_1+lambda_2 \\ k \in [0.04,0.06] R=det(M)k(trace(M))2det(M)=λ1λ2trace(M)=λ1+lambda2k[0.04,0.06]
Kanade & Tomasi(1994):
R = m i n ( λ 1 , λ 2 ) R=min(\lambda_1,\lambda_2) R=min(λ1,λ2)
Nobel(1994):
R = d e t ( M ) t r a c e ( M ) + ε R=\frac{det(M)}{trace(M)+\varepsilon } R=trace(M)+εdet(M)
在实际应用中采用上述三种的任何一种都可以表示特征值的阈值,但为了方便起见,通常采用第二种方式,记作Tomasi Response


2.点云中的Harris特征值介绍

因为 H a r r i s Harris Harris算法工作在一个连续的函数上面(要进行泰勒公式的展开,对应于2维就是图像的像素),而对于点云来说,分为有intensity的点云,如激光雷达的反射率,和没有intensity的点云,如点云数据中只有 x , y , z , ( r , g , b ) x,y,z,(r,g,b) x,y,z,(r,g,b)

2.1 Harris3D With Intensity

假设 i n t e n s i t y intensity intensity是一个连续的函数
I ( x , y , z ) : R 3 → R , [ x , y , z ] ∈ Ω I(x,y,z):R^3 \to R,[x,y,z] \in \Omega I(x,y,z):R3R,[x,y,z]Ω
假设存在一个小的"位移" [ u , v , w ] [u,v,w] [u,v,w]

那么 i n t e n s i t y intensity intensity的变化如下
E ( u , v , w ) = ∑ x , y , z ∈ Ω [ I ( x + u , y + v , z + w ) − I ( x , y , z ) ] 2 E(u,v,w)=\sum \limits_{x,y,z\in \Omega}{[I(x+u,y+v,z+w)-I(x,y,z)]^2} E(u,v,w)=x,y,zΩ[I(x+u,y+v,z+w)I(x,y,z)]2
泰勒公式化简得
E ( u , v , w ) = [ u v w ] M [ u v w ] , M = ∑ x , y , z ∈ Ω [ I x 2 I x I y I x I z I x I y I y 2 I y I z I x I z I y I z I z 2 ] E(u,v,w)=\begin{bmatrix} u&v&w \end{bmatrix}M\begin{bmatrix} u\\ v\\ w \end{bmatrix},M = \sum\limits_{x,y,z \in \Omega } {\begin{bmatrix} {I_x^2}&{{I_x}{I_y}}&{{I_x}{I_z}}\\ {{I_x}{I_y}}&{I_y^2}&{{I_y}{I_z}}\\ {{I_x}{I_z}}&{{I_y}{I_z}}&{I_z^2} \end{bmatrix}} E(u,v,w)=[uvw]Muvw,M=x,y,zΩIx2IxIyIxIzIxIyIy2IyIzIxIzIyIzIz2
**其中 M M M是表面Intensity的协方差矩阵。**但是不同于图像的是,三维点云中的点是离散的,那么怎么去求一个点的梯度呢?

  • 定义我们要求的一个点 p = [ p x , p y , p z ] T p=[p_x,p_y,p_z]^T p=[px,py,pz]T
  • 在领域 Ω \Omega Ω内,有一些点 { x i = [ x i , y i , z i ] } \{x_i=[x_i,y_i,z_i]\} {xi=[xi,yi,zi]}
  • p p p周围的 i n t e n s i t y intensity intensity梯度是一个向量,记作 e = [ e x , e y , e z ] T e=[e_x,e_y,e_z]^T e=[ex,ey,ez]T
    • e e e方向为 i n t e n s i t y intensity intensity增加最大方向
    • ∣ ∣ e ∣ ∣ ||e|| e表示 i n t e n s i t y intensity intensity变化的速率
  • 理论上,我们有

( x 1 − p x ) e x + ( y 1 − p y ) e y + ( z 1 − p z ) e z = I ( x 1 , y 1 , z 1 ) − I ( p x , p y , p z ) . . . = . . . ( x i − p x ) e x + ( y i − p y ) e y + ( z i − p z ) e z = I ( x i , y i , z i ) − I ( p x , p y , p z ) . . . = . . . (x_1-p_x)e_x+(y_1-p_y)e_y+(z_1-p_z)e_z=I(x_1,y_1,z_1)-I(p_x,p_y,p_z)\\ \quad \quad \quad \quad \quad \quad...=...\\ (x_i-p_x)e_x+(y_i-p_y)e_y+(z_i-p_z)e_z=I(x_i,y_i,z_i)-I(p_x,p_y,p_z) \\ \quad \quad \quad \quad \quad \quad...=...\\ (x1px)ex+(y1py)ey+(z1pz)ez=I(x1,y1,z1)I(px,py,pz)...=...(xipx)ex+(yipy)ey+(zipz)ez=I(xi,yi,zi)I(px,py,pz)...=...

标量形式
( x i − p x ) e x + ( y i − p y ) e y + ( z i − p z ) e z = I ( x i , y i , z i ) − I ( p x , p y , p z ) (x_i-p_x)e_x+(y_i-p_y)e_y+(z_i-p_z)e_z=I(x_i,y_i,z_i)-I(p_x,p_y,p_z) (xipx)ex+(yipy)ey+(zipz)ez=I(xi,yi,zi)I(px,py,pz)
向量形式
x i ′ T e = Δ I i x i ′ = [ x i ′ , y i ′ , z i ′ ] T = [ x i − p x , y i − p y , z i − p z ] T x_i^{'T}e=\Delta I_i \\ x_i^{'}=[x_i^{'},y_i^{'},z_i^{'}]^T=[x_i-p_x,y_i-p_y,z_i-p_z]^T xiTe=ΔIixi=[xi,yi,zi]T=[xipx,yipy,zipz]T
矩阵形式
A e = b , A = [ x 1 ′ y 1 ′ z 1 ′ . . . . . . . . . x i ′ y i ′ z i ′ . . . . . . . . . ] , b = [ Δ I 1 . . . Δ I i . . . ] Ae=b,A=\begin{bmatrix} {{x_1^{'}}}&{{y_1^{'}}}&{{z_1^{'}}}\\ {...}&{...}&{...}\\ {{x_i^{'}}}&{{y_i^{'}}}&{{z_i^{'}}}\\ {...}&{...}&{...} \end{bmatrix},b = \begin{bmatrix} {\Delta {I_1}}\\ {...}\\ {\Delta {I_i}}\\ {...} \end{bmatrix} Ae=b,A=x1...xi...y1...yi...z1...zi...,b=ΔI1...ΔIi...
显然采用最小二乘的解法
e = ( A T A ) − 1 A T b = [ I x , I y , I z ] T e=(A^TA)^{-1}A^Tb=[I_x,I_y,I_z]^T e=(ATA)1ATb=[Ix,Iy,Iz]T
其实在实际应用中,需要将上式计算的e投影到点p的表面上

在这里插入图片描述

其中点颜色的变化表示该点的 i n t e n s i t y intensity intensity的变化,红色表示很高,黑色表示很低。蓝线表示上式计算出来的 e e e,黑线表示该点的单位法向量 n n n, n = [ n x , n y , n z ] T n=[n_x,n_y,n_z]^T n=[nx,ny,nz]T,绿线表示在该表面投影后的向量 e ’ e^{’} e
e ’ = e − n ( n T e ) = e − n ( e T n ) e^{’}=e-n(n^Te)=e-n(e^Tn) e=en(nTe)=en(eTn)
最后将 e ’ e^{’} e代替上式的 e e e,这样可以降低噪声的灵感度。

最后一个问题,Tomasi Response怎么确定,是取M矩阵的最小特征值吗?答案并不是
在这里插入图片描述

通过上图可知,公路上车道线的终点也是一个特征点,但在平面上 i n t e n s i t y intensity intensity是按照 x , y x,y x,y的方向分布的, z z z方向分布为零,即平面上的变化也能产生特征点,因次Tomasi Response R = λ 2 R=\lambda_2 R=λ2并不是 λ 3 \lambda_3 λ3


2.2 Harris3D Without Intensity

点云中的某点 p p p的的曲面方程为
f ( x , y , z ) = 0 f(x,y,z)=0 f(x,y,z)=0
同样地,我们构建了一个代价函数
E ( u , v , w ) = ∑ x , y , z ∈ Ω [ f ( x + u , y + v , z + w ) − f ( x , y , z ) ] 2 E(u,v,w)=\sum \limits_{x,y,z\in \Omega}{[f(x+u,y+v,z+w)-f(x,y,z)]^2} E(u,v,w)=x,y,zΩ[f(x+u,y+v,z+w)f(x,y,z)]2
p p p的表面会变成一个平面
在这里插入图片描述

此时平面方程为
a x + b y + c z + d = 0 ax+by+cz+d=0 ax+by+cz+d=0
此时点 p p p的法向量 n = [ n x , n y , n z ] T n=[n_x,n_y,n_z]^T n=[nx,ny,nz]T, a = n x , b = n y , c = n z a=n_x,b=n_y,c=n_z a=nx,b=ny,c=nz

那么
f ( x + u , y + v , z + w ) = a ( x + u ) + b ( y + v ) + c ( z + w ) + d = a x ’ + b y ’ + c z ’ + d f(x+u,y+v,z+w)=a(x+u)+b(y+v)+c(z+w)+d=ax^{’}+by^{’}+cz^{’}+d f(x+u,y+v,z+w)=a(x+u)+b(y+v)+c(z+w)+d=ax+by+cz+d
其实
d i s t ( p o i n t , p l a n e ) = a x ′ + b y ′ + c z ′ + d a 2 + b 2 + c 2 = a x ′ + b y ′ + c z ′ + d 1 dist(point,plane)=\frac{{ax' + by' + cz' + d}}{{\sqrt {{a^2} + {b^2} + {c^2}} }} = \frac{{ax' + by' + cz' + d}}{1} dist(point,plane)=a2+b2+c2 ax+by+cz+d=1ax+by+cz+d
f ( x + u , y + v , z + w ) f(x+u,y+v,z+w) f(x+u,y+v,z+w)可以直观地理解为,点 p = [ x , y , z ] p=[x,y,z] p=[x,y,z]在移动 [ u , v , w ] [u,v,w] [u,v,w]后,距离以点 p p p构建的平面的距离。

那么,结合代价函数和 f ( x , y , z ) f(x,y,z) f(x,y,z)表示,可以将代价函数 E ( u , v , w ) E(u,v,w) E(u,v,w)变换为
E ( u , v , w ) = ∑ x , y , z ∈ Ω [ f ( x + u , y + v , z + w ) − f ( x , y , z ) ] 2 f ( x , y , z ) = a x + b y + c z + d f ( x + u , y + v , z + w ) = a ( x + u ) + b ( y + v ) + c ( z + w ) + d E(u,v,w)=\sum \limits_{x,y,z\in \Omega}{[f(x+u,y+v,z+w)-f(x,y,z)]^2}\\ f(x,y,z)=ax+by+cz+d\\ f(x+u,y+v,z+w)=a(x+u)+b(y+v)+c(z+w)+d\\ E(u,v,w)=x,y,zΩ[f(x+u,y+v,z+w)f(x,y,z)]2f(x,y,z)=ax+by+cz+df(x+u,y+v,z+w)=a(x+u)+b(y+v)+c(z+w)+d
推导出
E ( u , v , w ) = [ u v w ] M [ u v w ] = [ u v w ] ∑ x , y , z ∈ Ω [ n x 2 n x n y n x n z n x n y n y 2 n y n z n x n z n y n z n z 2 ] [ u v w ] E(u,v,w) = \begin{bmatrix} u&v&w \end{bmatrix}M \begin{bmatrix} u\\ v\\ w \end{bmatrix} = \begin{bmatrix} u&v&w \end{bmatrix}\sum\limits_{x,y,z \in \Omega } {\begin{bmatrix} {n_x^2}&{{n_x}{n_y}}&{{n_x}{n_z}}\\ {{n_x}{n_y}}&{n_y^2}&{{n_y}{n_z}}\\ {{n_x}{n_z}}&{{n_y}{n_z}}&{n_z^2} \end{bmatrix}} \begin{bmatrix} u\\ v\\ w \end{bmatrix} E(u,v,w)=[uvw]Muvw=[uvw]x,y,zΩnx2nxnynxnznxnyny2nynznxnznynznz2uvw
此时 M M M是曲面法线在曲面上的协方差矩阵,同样的此时Tomasi Response R = λ 3 R=\lambda_3 R=λ3


2.3 扩展 Harris 6D

结合上述有 i n t e n s i t y intensity intensity和无 i n t e n s i t y intensity intensity M M M矩阵,其中 I = [ I x , I y , I z , n x , n y , n z ] I=[I_x,I_y,I_z,n_x,n_y,n_z] I=[Ix,Iy,Iz,nx,ny,nz]
M = ∑ x , y , z ∈ Ω [ I x 2 I x I y I x I z I x n x I x n y I x n z I x I y I y 2 I y I z I y n x I y n y I y n z I x I z I y I z I z 2 I z n x I z n y I z n z n x I x n x I y n x I z n x 2 n x n y n x n z n y I x n y I y n y I z n x n y n y 2 n y n z n z I x n z I y n z I z n x n z n y n z n z 2 ] M = \sum\limits_{x,y,z \in \Omega } {\begin{bmatrix} {I_x^2}&{{I_x}{I_y}}&{{I_x}{I_z}}&{{I_x}{n_x}}&{{I_x}{n_y}}&{{I_x}{n_z}}\\ {{I_x}{I_y}}&{I_y^2}&{{I_y}{I_z}}&{{I_y}{n_x}}&{{I_y}{n_y}}&{{I_y}{n_z}}\\ {{I_x}{I_z}}&{{I_y}{I_z}}&{I_z^2}&{{I_z}{n_x}}&{{I_z}{n_y}}&{{I_z}{n_z}}\\ {{n_x}{I_x}}&{{n_x}{I_y}}&{{n_x}{I_z}}&{n_x^2}&{{n_x}{n_y}}&{{n_x}{n_z}}\\ {{n_y}{I_x}}&{{n_y}{I_y}}&{{n_y}{I_z}}&{{n_x}{n_y}}&{n_y^2}&{{n_y}{n_z}}\\ {{n_z}{I_x}}&{{n_z}{I_y}}&{{n_z}{I_z}}&{{n_x}{n_z}}&{{n_y}{n_z}}&{n_z^2} \end{bmatrix}} M=x,y,zΩIx2IxIyIxIznxIxnyIxnzIxIxIyIy2IyIznxIynyIynzIyIxIzIyIzIz2nxIznyIznzIzIxnxIynxIznxnx2nxnynxnzIxnyIynyIznynxnyny2nynzIxnzIynzIznznxnznynznz2
此时Tomasi Response R = λ 4 R=\lambda_4 R=λ4

因为 R = λ 3 R=\lambda_3 R=λ3表示 H a r r i s 6 D Harris 6D Harris6D是{ H a r r i s 3 D Harris 3D Harris3D i n t e n s i t y intensity intensity}的子集,此时并没有{ H a r r i s 3 D Harris 3D Harris3D i n t e n s i t y intensity intensity}的信息,条件太松懈; R = λ 5 R=\lambda_5 R=λ5表示一个特征点必须同时是一个几何点( H a r r i s 3 D Harris 3D Harris3D i n t e n s i t y intensity intensity)和强度点( H a r r i s 3 D Harris 3D Harris3D i n t e n s i t y intensity intensity),条件太苛刻。故 R = λ 4 R=\lambda_4 R=λ4

3.总结

输入协方差矩阵响应函数R
H a r r i s Harris Harris I m a g e Image ImageImage像素梯度 R = λ 2 R=\lambda_2 R=λ2
H a r r i s 3 D Harris 3D Harris3DPC with IntensityIntensity 梯度 R = λ 2 R=\lambda_2 R=λ2
H a r r i s 3 D Harris 3D Harris3DPC without Intensity法向量 R = λ 3 R=\lambda_3 R=λ3
H a r r i s 6 D Harris 6D Harris6DPC with IntensityIntensity 梯度+法向量 R = λ 4 R=\lambda_4 R=λ4
  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值