激光雷达角点检测 c语言,1.特征点检测与匹配

三维模型重建的流程:

三维点云获取——几何结构恢复——场景绘制

三维点云获取:

1.激光雷达

2.微软Kinect

有效距离比较短

3.单目多视角 :几乎很难实时

4.双目立体视觉

基于图像的三维模型重建:

1.输入图像

2.基于图像的点云生成

3.点云到模型的重建

4.纹理图像的创建与编辑

5.纹理模型

2155ab92ffd3

相关商业软件:

Acute3D,Altizure,Agisoft PhotoScan

图像特征点应用:

1.相机标定

2.图像拼接

3.稠密重建

4.场景理解

图像特征点的检测方法:

人工设计检测算法

基于深度学习的方法

场景中的人工标记点

图像特征点的基本要求:

1.差异性——可检测

特征点应该呈现出区别于非特征点的明显特征

2.重复性——可匹配

对应同一三维点的特征点应该在不同视角中被重复检测到

特征检测子(Feature Detector)

Harris 角点检测

基于LoG的多尺度特征检测子//拉普拉斯的高斯

基于DoG的多尺度特征检测子//高斯差分的一种方法

快速特征点检测方法

特征点具有局部差异性

动机:特征点具有局部差异性

math?formula=E(u%2Cv)%20%3D%20%5Csum_%7B(x%2Cy)%7Dw(x%2Cy)%7B%5BI(x%2Bu%2Cy%2Bv)-I(x%2Cy)%5D%20%7D%5E2%20%5C%5C%20%5Capprox%20%5Csum_%7B(x%2Cy)%7Dw(x%2Cy)%7B%5BI(x%2Cy)%2B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7Bx%7D%7D(x%2Cy)u%2B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7By%7D%7D(x%2Cy)v-I(x%2Cy)%5D%20%7D%5E2%20%5C%5C%3D%20%7B%5Cbegin%7Bbmatrix%7Du%5C%5Cv%20%5Cend%7Bbmatrix%7D%7D%5ET%20%7B%5Cbegin%7Bbmatrix%7Du%5C%5Cv%20%5Cend%7Bbmatrix%7D%7D

图像梯度

math?formula=%5CDelta%20I(x%2Cy)%3D%20(%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7Bx%7D%7D(x%2Cy)%2C%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7By%7D%7D(x%2Cy)

Harris矩阵

math?formula=H%20%3D%20%7B%5Cbegin%7Bbmatrix%7D%5Csum_%7B(x%2Cy)%7DW(x%2Cy)%7B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7Bx%7D%7D(x%2Cy)%7D%5E2%20%26%5Csum_%7B(x%2Cy)%7DW(x%2Cy)%7B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7Bx%7D%7D(x%2Cy)%7D)%7B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7By%7D%7D(x%2Cy)%7D%20%5C%5C%5Csum_%7B(x%2Cy)%7DW(x%2Cy)%7B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7Bx%7D%7D(x%2Cy)%7D)%7B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7By%7D%7D(x%2Cy)%7D%20%26%20%5Csum_%7B(x%2Cy)%7DW(x%2Cy)%7B%5Cfrac%7B%5Cpartial%7BI%7D%7D%7B%5Cpartial%7Bx%7D%7D(x%2Cy)%7D%5E2%20%5Cend%7Bbmatrix%7D%7D

2155ab92ffd3

以每个点为中心取一个窗口,窗口大小为55或者77,如果这个点具有差异性,往周围任意方向移动,周围的环境变化都是会比较大的,如果满足这个特性,我们就认为这个特征点具有明显的局部差异性。在工事中,I表示像素,如果是 彩色图像就是RGB,灰色图像就是灰度。(u,v)表示方向。然后对上式进行一阶泰勒展开。

Harris矩阵H的特征值分析:

math?formula=SVD(H)%3DU%20%5Csum%20V%EF%BC%8C(%20%5Clambda%20_1%2C%EF%81%AC%20%5Clambda%20_2%20)%2C%EF%81%AC%20%5Clambda%20_1%20%3E%20%5Clambda_2

矩阵特征值反应了两个垂直方向的变化情况,一个事变化最快的方向,一个事变化最慢的方向

2155ab92ffd3

math?formula=%5Clambda_1%20%5Capprox%20%5Clambda_2兴趣点位于光滑区域,不是特征点

math?formula=%5Clambda_1%3E0%2C%20%5Clambda_2%20%5Capprox%200,兴趣点位于边缘区域,

math?formula=%5Clambda_1%2C%5Clambda_2%20%3E0, 兴趣点位于角点区域

所以检测特征的任务转化为计算Harris矩阵,判断特征值大小。

在实际操作中,很少通过计算特征值来判断,因为计算特征值计算量比较大,取而代之的是Harris角点准则。

Harris角点准则

math?formula=C%20%3D%20det(H)-ktrace(H)%5E2%20%3D%20%5Clambda_1%5Clambda_2-k(%5Clambda_1%2B%5Clambda_2)%5E2%2Ck%3D0.04

行列式值为特征值相乘,行列式的迹为特征值相加

K的值越小,检测子越敏感

只有当

math?formula=%5Clambda_1

math?formula=%5Clambda_2同时取得最大值时,C才能取得较大值

避免了特征值分解,提高计策计算效率

非极大值抑制

在特征点附近,其他点的响应也比较大。

所以选取局部响应最大值,避免重复检测

Harris 角点检测

算法流程

计算图像水平和垂直方向的梯度

但是在计算梯度之前,需要对图像进行滤波,一般进行高斯平阀,避免出现变化剧烈的值

计算每个像素位置的Harris矩阵

每个角点的响应值

非极大值抑制

2155ab92ffd3

2155ab92ffd3

Harris角点检测一般用于快速检测,比如视频里面的跟踪

基于LoG的特征检测子

动机:Harris角点检测不具有尺度不变性

LoG算子:Lindeberg(1993)提出Laplacian of Gaussian

(LoG)函数的极值点对应着特征点

Lindeberg(1993)提出Laplacian of Gaussian

(LoG)函数的极值点对应着特征点

尺度空间:

对于一幅图像,用不同大小的滤波核进行滤波,一般用高斯滤波,得到一系列图像,这些图像就称之为尺度空间。然后把这些图像摞起来

math?formula=L(x%2Cy%2C%5Csigma_D)%20%3D%20I(x%2Cy)*G(x%2Cy%2C%5Csigma_D)%2C%5Csigma_D%20%5Cin%5C%7B%20%5Csigma_0%2Ck%5Csigma_0%2Ck%5E2%5Csigma_0%2C...%5C%7D

2155ab92ffd3

2155ab92ffd3

尺度归一化LoG算子:

2155ab92ffd3

不同尺度下的LoG响应值不具有可比性

构建尺度空间,同时在位置空间和尺度空间寻找归一化LoG极值(极大值/极小值)点作为特征点

LoG特征检测算法流程

2155ab92ffd3

LoG特征检测效果好,但是计算量比较大。

工程中也很少用。为了更好地利用LoG的性质,提出了一种近似的算法:基于DoG的特征检测子

LoG可以由DoG近似:

Lowe(2004)提出LoG近似等价于相邻尺度的高斯差分(DoG)

高斯空间:

math?formula=L(x%2C%20y%2C%20%5Csigma)%20%3DG(x%2C%20y%2C%5Csigma)

高斯差分(DoG)

math?formula=D(x%2C%20y%2C%20%5Csigma)%20%3D(G(x%2C%20y%2Ck%5Csigma)-G(x%2C%20y%2Ck%5Csigma))*I(x%2Cy)%20%5C%5C%20%3DL(x%2C%20y%2C%20k%5Csigma)%20-%20L(x%2C%20y%2C%20%5Csigma)

尺度空间构建

2155ab92ffd3

上图为3个Octive,每个octive的尺寸都会减小一半。

上图每个Octive中,左侧为高斯空间,相邻高斯空间做差得到DoG空间

特征点检测为在三维空间上做一个极值的比较,(三维空间为图像的二维空间+尺度的空间),必须需要两个方向有极值。在高斯差分,边界上的两层是无效的,只有中间的红色区域是有效的。

在Octive,

if 每阶有效差分数 S =3,则高斯空间层数为N = S+3

特征点位置确定:

在位置和尺度空间组成的三维空间中寻找极值点

2155ab92ffd3

亚像素特征点位置确定:

2155ab92ffd3

2155ab92ffd3

2155ab92ffd3

除去边缘点:

DoG在边缘处值较大,需要避免检测到边缘点

math?formula=%5Cfrac%7Btrace(H)%7D%7BDet(H)%7D%3D%20%5Cfrac%7B%5Clambda_1%5E2%2B%5Clambda_2%5E2%7D%7B%5Clambda_1%5Clambda_2%7D%20%3D%3C%5Cfrac%7B%7B(r%2B1)%7D%5E2%7D%7Br%7D%2C%20r%20%3D10

计算主方向

通过统计梯度直方图的方法确定主方向,使算法具有旋转不变性

2155ab92ffd3

2155ab92ffd3

旋转 不变性、 尺度 不变性 、亮度 变化 不变性 ,对视角变化、 仿射 变换有一定程度的稳性

SIFT特征点非常稳定和鲁棒,但是计算量很大,对于要求稳定的图像建模可以采用。

针对实时要求比较高的应用提出了快速特征检测。

快速特征检测

FAST特征点(Feature from Accelerated Segment Test)

通过检测局部像素灰度变化来确认特征点的位置

2155ab92ffd3

2155ab92ffd3

速度快,SIFT的一百倍,不具有尺度和旋转不变性

Oriented FAST(ORB)

为了获取尺度不变性

构建图像金字塔,在金字塔每一层上上检测关键点。

获取旋转不变性

通过灰度质心法(Intensity Centroid)确定图像主方向

2155ab92ffd3

特征描述子(Feature Descriptor)

基于直方图的描述子

基于不变性的描述子

二进制描述子

每个特征点独特的身份认证

同一空间点在不同视角的特征点具有高度相似的描述子

不同特征点的描述子差异性尽量大

通常描述子是一个具有固定长度的向量(可以理解为一个特征)

特征支持区域:

以特征点为中心取一块区域,有圆形或者矩形,称之为特征支持区域

主方向:进行旋转并重新插值

特征尺度:影响支持区域的大小

2155ab92ffd3

基于直方图的描述子

用于微小运动的描述子

以特征点为中心的矩形区域内所有

像素的灰度值作为描述子,拉成一个向量,计算向量间距离

math?formula=E_%7BSSD%7D%20%3D%20%5Csum_%7Bi%3D1%7D%5E%7BN%7D%5Csum_%7Bj%3D1%7D%5E%7BN%7D%7B%7C%7C%20I_1(x%2Cy)-I_2(x%2Cy)%20%7C%7C%7D%5E2

适用于微小变化的图像

对图像存在明显的旋转、尺度、光照和透视变换时不稳定

SIFT描述子--旋转主方向

根据主方向对支持区域进行旋转,并通过双线性插值重构

math?formula=I%20%3D%20%5Cfrac%7BI-u%7D%7Bs%7D 减去均值再除以方差

图像归一化处理,去除光照变化

2155ab92ffd3

过程:

1.统计局部梯度信息

将区域划分成44的block

每个 block 内统计梯度方向 的直方图 (高斯加权梯度 作为系数 )

2155ab92ffd3

高斯加权保证距离特征点近的像素作用更大,梯度直方图计算8个方向

每个block,统计8个方向的直方图,将16个block拉成一列,那就是168 = 128

SIFT描述子——生成描述子

2155ab92ffd3

SIFT描述子——归一化处理

门限处理—直方图每个方向的梯度幅值不超过0.2

描述子长度归一化

归一化处理提升了特征点光度变化的不变性

SIFT描述子变种:PCA-SIFT/SURF

二进制描述子

描述子形式:

描述向量由N个0或者1组成

N= 128,256,512

生成速度快,匹配效率高,不具有旋转不变性

2155ab92ffd3

为了使其具有旋转不变性

N对采样点

math?formula=S%3D%20%5Cbegin%7Bbmatrix%7Dx_1%20%26...%26x_n%20%5C%5Cy_1%26...%26y_n%20%5Cend%7Bbmatrix%7D

根据特征点的主方向计算旋转

math?formula=S_%5Ctheta%20%3D%20R_%5Ctheta%20S

在新的采样点上进行BRIEF描述子生成

2155ab92ffd3

特征匹配

距离度量

匹配策略

高效匹配

特征匹配验证

问题描述:

计算两幅图中特征描述子的匹配关系

距离度量

2155ab92ffd3

匹配策略

最近邻搜索

math?formula=b%5E*%3Darg%5C%20min_%7Bb%5Cin%20B%7DD(a%2Cb)%2CD(a%2Cb%5E*)%20%3C%20%5Cbeta

最近邻距离比(lowe-ratio)

math?formula=%5Cfrac%7BD(a%2Cb%5E*)%7D%7BD(a%2Cb%5E%7B**%7D)%7D%20%3C%20%5Calpha

最近邻距离和次近邻距离比小于一定值

2155ab92ffd3

高效匹配

快速最近邻搜索

哈希表

多维Kd-tree

特征匹配

BFM(Bruce Force Mather)匹配ORB的结果

2155ab92ffd3

选择最好的 50 个匹配结果进行显示

错误的匹配可以通过估计相机模型方式去除

估计 Homography Homography 矩阵之前最好的 50 对匹配对

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值