正態分佈變換演算法(3d-ndt)
正態分佈變換演算法應用於三維點的統計模型,使用標準最優化技術來確定兩個點雲間的最優的匹配,因為其在配準過程中不利用對應點的特徵計算和匹配,所以時間比其他方法快,可用於點較多時的配準過程。其原理可參考martin magnusson的the three-dimensional normal-distributions transform— an efficient representation for registration,su***ce analysis, and loop detection
3d-ndt演算法對引數敏感,主要涉及到以下四個引數:最小轉換差異(transformationepsilon)、more-thuente線搜尋的最大步長(stepsize)、ndt網格結構的解析度(resolution)、匹配迭代的最大次數(maximumiterations)。
在使用此演算法時,可以給定或者不給定初始變換矩陣。
還是直接上**吧:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using pcl::normalestimation;
using pcl::search
::kdtree;
typedef pcl::pointxyz pointt;
typedef pcl::pointcloud
pointcloud;
void visualize_pcd(pointcloud::ptr pcd_src,
pointcloud::ptr pcd_tgt,
pointcloud::ptr pcd_final)
}void matrix2angle (eigen::matrix4f
&result_trans,eigen::vector3f
&result_angle)
else
} else
result_angle<
}int
main (int argc, char** argv)
最後,附上效果圖:
對比來看,還是sac-ia+icp的方案效果好。
關於ndt在pcl中的應用的更詳細的解釋請參考:
點雲的粗配準和精配準
1.前言 點雲配準是點雲處理的重要技術之一,可以用來估計物體位姿,拼接多個視角下的點雲.分別用基於取樣一致性的粗配準,以及粗配準與icp精配準結合的方法進行配準實驗。粗配準流程圖如下,主要為精配準提供乙個比較好的初始位置。精配準採用icp配準,pcl庫實現思路 2.思考 以上可以看出無論是粗配準還是...
ITK elastix 剛性 配準
讀取資料設定 3d const unsigned int dimension 3 typedef float pixeltype typedef itk imageimagetype typedef itk imagefilereaderreadertype readertype pointer f...
ARCGIS影像配準
影像配準 step1.新增影像到mapgis並開啟中工具 georeferencing,工具被啟用 step2.去掉 auto adjust 前的 step3.作配準點 至少七個點,並均勻分布在圖中 在georeferencing工具條上,點選add control point按鈕.使用該工具在掃瞄...