医疗图像配准-点云配准总结
近期主要在做一個關于將三維CT影像和點云數據做配準的項目,通過前期調研,業內主要的方法是將CT影像使用MarchingCubes(移動立方體)生成等值面三角網格,然后再使用點云配準的方法。
1、三維圖像轉三角網格(STL)
三維圖像轉stl網格,在vtk中已經實現,主要使用MarchingCubes算法,簡單而有效,算法介紹詳見下面篇博文,對比眾多水文,這篇講的比較明白。
圖像數據到網格數據-1——MarchingCubes算法 - 止戰 - 博客園原文:http://blog.csdn.net/u013339596/article/details/19167907概述 之前的博文已經完整的介紹了三維圖像數據和三角形網格數據。在實際應用中,利用遙https://www.cnblogs.com/zhizhan/p/3987254.html
2.配準工具選擇
在配準工具選擇中,先后使用了vtk和itk,其內部都包含了icp算法的模塊,但都是經典的point-to-point算法,而且只適宜對數據量較少的點進行配準,如果點太多,那么耗時太久,雖然itk官方例子中有可以通過構建距離圖的例子加快運算,但通過實際使用,并沒有起到很好的加速作用,綜合比較之后,最終還是選用點云專門處理庫PCL做。
3.PCL配準庫基本介紹
PCL配準庫中集成了很多針對點云配準的精配準及粗配準方法,主要類如下:
(1)CorrespondenceEstimation類,用來確定兩點云中的對應匹配關系。
(2)CorrespondenceRejectorFeatures類,能夠實現基于特征匹配的對應點對提取。
(3)SampleConsensusPrerejective類,實現了基于RANSAC方法的對應點對外點去除,用于姿態評估和點云配準中的幾何一致性限制,從而保證后續算法的準確和高效。
(4)TransformationEstimation3Point類,實現使用三個匹配點計算兩點云變換矩陣。
(5)TransformationFromCorrespondences類,實現三個及以上匹配點間變換矩陣的計算。
(6)TransformationEstimationDQ類和TransformationEstimationDualQuaternion類
實現基于對偶四元數的點云姿態估計。
(7)TransformationEstimationLM類,實現基于對應匹配點對,用Levenberg-Marquardt優化的變換矩陣估計。
(8)TransformationEstimationPointToPlane類,實現基于Levenberg-Marquardt優化的匹配點對間最小點到平面距離的最優變換矩陣計算。
(9)TransformationEstimationPointToPlaneWeighted類,在TransformationEstimationPointToPlane類的基礎上加入了對應匹配點的權重,以適應更為復雜場景點云配準任務。
(10)TransformationEstimationPointToPlaneLLS 類,基于線性最小二乘的點到平面距離累計最小化約束,對應點到平面的距離計算加入法向量約束,具體內容參照論文:Linear Least-Squares Optimization for Point-to-Plane ICP surface registration 2014
(11)TransformationEstimationPointToPlaneLLSWeighted類,在TransformationEstimationPointToPlaneLLS 類基礎上加入了對應點匹配權重,從而更合理的計算匹配點間變換矩陣。
(12)TransformationEstimationSVD類,使用SVD分解策略完成匹配點對的變換矩陣計算。
(13)TransformationValidationEuclidean類,實現了給定對應匹配的變換,并計算可靠性得分。
(14)IterativeClosestPoint類,實現迭代最近點算法(ICP)。
(15)IterativeClosestPointNonLinear類,ICP算法的變體,后端使用Levenberg-Marquardt作為優化。
(16)GeneralizedIterativeClosestPoint類,ICP算法的變體,實現了一般化的ICP算法,具體參考Generalized-ICP論文。
(17)GeneralizedIterativeClosestPoint6D類,集成了L*a*b*顏色空間到Generalized-ICP算法中。
(18)IterativeClosestPointWithNormals 類,ICP算法的變體,以點到平面的最小距離作為迭代優化對象,實現點云配準。
(19)FPCSInitialAlignment 類,實現《4-points congruent sets for robust pairwise surface registration》中的4PCS算法;
(20)KFPCSInitialAlignment類,實現《Markerless point cloud registration with keypoint-based 4-points congruent sets》中的k4PCS算法。
(21)NormalDistributionsTransform(NDT)類,統計分析點云中法向量分布,來實現點云的轉化和配準。具體參考The Three-Dimensional Normal-Distributions Transform an Efficient Representation for Registration(2009)
4.配準方法介紹
4.1采樣一致性初始配準算法SAC-IA(Sample Consensus Initial Aligment?)
4.1.1介紹
? ? ? ?采樣一致性初始配準算法通常基于特征描述子PFH和FPFH進行配準。
????????PFH(Point Feature Histograms)是一種點云特征點的特征描述子,是一種的姿態不變的局部特征,其目標是編碼k鄰域中的幾何特征,關于PFH描述子生成的原理,網上有很多介紹,在此不再贅述,在PCL中PFH經常會生成125維的向量,有些同學可能不太明白這個特征描述子為什么是125維,其實可以這樣想,PCL中主要使用經典的PFH描述子k個鄰域內兩兩點之間的四聯體(三個角度一個距離)中的三個角度變量(先叫三聯體),然后每個角度變量分成五份,我們可以先不要想125維的一維向量,先生成一個具有5*5*5維度的125個小格子的三維直方圖,然后每計算一個三聯體,在三維直方圖中符合的位置加1,然后計算結束之后,攤開,即成為了125維的一維向量。
????????FPFH特征描述子,對PFH特征進一步優化升級就得到了快速點特征直方圖(FPFH)。其計算過程如下:
(1)為查詢點求得它和其k鄰域內每個點之間的三個特征元素值,然后統計成一個SPFH;
(2)分別對k鄰域中的每個點確定k鄰域,按第一步分別形成自己的SPFH;
(3)加權統計生成最終的33維度的特征向量(每個特征維度生成一個直方圖,最后連在一起)
????????PFH和FPFH的主要區別
????????(1)FPFH沒有對全互聯點Pq的所有鄰近點的計算參數進行統計,因此可能漏掉了一些重要的點對,而這些漏掉的點對可能對捕捉查詢點周圍的幾何特征有貢獻。
????????(2)PFH特征模型是對查詢點周圍的一個精確的鄰域半徑內,而FPFH還包括r范圍以外2r以內的額外點對。
????????(3)因為重新計算權重的方式,FPFH通過結合SFPH的值,重新捕獲鄰近重要點對的幾何信息。
????????(4)FPFH的整體復雜性低,FPFH在實際的應用中更為常見。
4.1.2流程
(1)計算PFH或者FPFH特征描述子
(2)SAC配準(配準的采樣記錄要大于某個閾值,保證采樣點具有不同的特征),使用Huber作為罰函數
(3)進行精配準
4.1.3算法適用范圍
粗配準,可以看到該配準方法還是基于局部特征描述子的一種配準方法。在醫療圖像軟件中基于特征描述子配準方法使用較少,更多的是先人工選擇一些特征點,完成粗配準。
?4.1.4參考資料:
(1)PFH和FPFH_xinxiangwangzhi_的博客-CSDN博客
(2)SAC-IA粗配準+ICP精配準_peach_blossom的博客-CSDN博客_sac-ia
4.2 Point to Point ICP算法
4.2.1算法介紹
方法來自論文《A method for registration of 3-D shapes》,網上介紹比較多,在后續項目中也使用了該算法,總體來說效果還可以,主要公式如下:
算法主要包含兩個步驟
(1)在moving點云在fixed點云中每個點的最近點,在PCL中默認會構建fixed點云KD-tree,所以在配準時,速度比ITK要快很多
(2)基于找到的最近點對,求解最優變換矩陣,在PCL中使用SVD來求解。
4.2.2算法中設置需要設置的變量說明
(1)setMaximumIterations,設置最大迭代次數
(2)setEuclideanFitnessEpsilon,收斂條件,均方誤差小于此值就停止迭代。
(3)setTransformtionEpsilon,收斂條件,設置兩次變化矩陣之間的差值小于此值就停止迭代。
(4)setMaxCorrespondenaceDistance,設置對應點對之間的最大距離,在步驟1中使用。
4.2.3算法使用中需要注意的問題
(1)ICP算法對初始值很敏感,極容易陷入局部最優解,所以在迭代之前最好設計好初始值。
(2)ICP算法原來上來講要對moving中找到在fixed點云中的對應點,然后來計算轉換矩陣,如果在moving點云中包含了不應該配對的點,這會導致計算誤差,這種情況應該避免
(3)ICP的moving點云中最好少用一些平面或者掃描面的點,這種類型點太多的話,對結果影響較大,對于ICP算法來講,moving點云中盡量包含較多有一定曲率,并且距離較遠的點,這樣可能會提高精度。
(4)如果moving點云中包含了太多點,可以使用降采樣來過濾一些點。
4.2.4適用范圍
地球人都知道在精配準中使用.
?????
4.3 Point to Plane ICP
4.3.1算法介紹
???出自《Object Modeling by Registration of Multiple Range Images》,基本原理如下:
后續由《Linear Least-Squares Optimization for. Point-to-Plane ICP Surface Registration》這篇論文將該問題轉換成了近似的線性最小二乘問題,可以使用SVD求解
4.3.2算法適用范圍
(1)算法比point to point 方法可以提高收斂速度,但論文中提到不一定會收斂到全局最優解
(2)算法中主要使用了法向量來計算,所以在配準中使用準確的法向量至關重要,主要可以通過兩個方法來保證①對比較平滑、質量較好的點云使用該方法②如果原始點云質量不太好,那么在相對smooth區域采樣,然后進行配準。
參考文獻
【1】https://blog.csdn.net/pingjun5579/article/details/118546565
4.4 Plane to Plane ICP
4.4.1介紹
該方法在論文《Generalized-ICP》中最先提出來,Generalized-ICP其實是一種基于概率論的算法框架,將point to point 和point to plane作為該框架中的一種特例,并且又提出了plane to plane方法,該方法的特點是綜合考慮了距離和法向量,收斂效果較好,可以糾正最大匹配距離設的值比較大的情況,具體算法介紹可以參照如下文章:
[論文閱讀][ICP變種] Generalized-ICP_你代碼像一首詩的博客-CSDN博客
4.4.2適用范圍
由于該方法也使用了法向量,如果點云中噪聲比較多,那么計算的法向量就不太準確,也會影響最終精度,對于醫療圖像來說,如果骨質成像不好,直接使用移動立方體生成的stl網格是及其不平滑的,這時候可以先平滑后再使用該方法,綜合icp三種方法,油管有個up主建議generalized icp應該是使用icp算法時首選的方法。
4.5 NDT算法
4.5.1原理介紹
NDT(Normal Distribution Transformation)算法主要有三篇論文:
1. <A new approach to laser scan matching> 認為是它首先提出的,不過是2D2. <The Three-Dimensional Normal-Distributions Transform - an Efficient Representation for Registration,Surface Analysis, and Loop>領域應用到了3D3. <A 3-D Scan Matching using Improved 3-D Normal Distributions Transform for Mobile Robotic Mapping>做了全面的總結和拓展,博士論文網上寫該算法原理的最多是第二篇,這也是激光點云配準中經常使用的一種方法,通過學習該算法,可以知道,該算法的思想與Generalized ICP算法非常類似,都使用了概率分布,而且都假設點主要分布服從正態分布,不同的是Generalized ICP直接假設點的位置符合高斯分布,而在NDT算法中假設每個分成的小格子內部的點符合高斯概率分布(實現時會加入均勻分布),這樣做我個人感覺會減少計算時間,加快計算速度。NDT基本原理和步驟如下:
(1)分成小格子,計算每個小格子中的高斯分布參數,主要是均值和協方差矩陣(協方差矩陣表征了當前小格子中點分布的平滑性和方向)
(2)通過轉換矩陣T將浮動點云(moving cloud)變換到(1)中分成的小格子中,然后計算每個變換點在小格子中的概率,這個概率是該變換點在周圍鄰近小格子中概率之和,最后通過最大似然估計原理,將每個變換點的概率相乘得到最終的目標函數。
(3)使用牛頓迭代法求解變換矩陣,查看是否滿足收斂條件,不滿足,則轉到(2)中。
4.5.2適用范圍
這種方法相對于icp等算法,具有更好的魯棒性,但也會受到初始條件的影響,主要通過計算概率分布作為主要的收斂目標,其應該能達到較好的形狀匹配,可用于精確配準。
4.5.3一些質量較高的參考鏈接
(1)學習教程:點云匹配-正態分布變換NDT(Normal Distributions Transform)算法_嗶哩嗶哩_bilibili
(2)
點云 | 配準之NDT算法漫談 - 墨天輪
(3)https://www.youtube.com/watch?v=MLpaC-ZG2RA
4.6 4PCS算法
沒時間寫了,有時間再寫。
5.總結
通過這個項目,把點云配準中幾個具有代表性的算法進行了梳理,小有收獲。
?
6.其他參考文獻:
[1] Lorensen, W. E. and H. E. Cline(1987). “Marching cubes: A high resolution 3D surface construction algorithm.” Computers & Graphics.
[2]【泡泡點云時空-PCL源碼解讀】PCL中的點云配準方法_算法
總結
以上是生活随笔為你收集整理的医疗图像配准-点云配准总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用 bat 脚本强制杀死 Window
- 下一篇: RDKit基础操作