1. 程式人生 > >PCL: Surface模組之MovingLeastSquares(滑動最小二乘法)

PCL: Surface模組之MovingLeastSquares(滑動最小二乘法)

  • inline void setUpsamplingMethod(UpsamplingMethodmethod)  這個函式比較特殊,他會呼叫不同的列舉變數, 每個列舉變數有對應的幾個不同的函式,因此這裡我將一一解釋。經過試驗證明:這個upsampling函式只能增加密度較小區域的密度對於holes的填補卻無能為力(本來想著用之填補點雲缺失的部分,卻發現此函式並沒有那麼強大)。接下來將會一一介紹四個不同的方法。

    a)       NONE——將不會進行upsampling

    b)       SAMPLE_LOCAL_PLANE——這個方法就是參考論文中採用的方法,當然此方法所需的計算強度也相當龐大。若使用此方法,將需要呼叫兩個函式:

    A.     Inline voidsetUpsamplingRadius(double radius) 此函式規定了點雲增長的區域。可以這樣理解:把整個點雲按照此半徑劃分成若干個子點雲,然後一一索引進行點雲增長。

    B.     Inline voidsetUpsamlingStepSize(double size) 對於每個子點雲處理時迭代的步長。

    c)       RANDOM_UNIFORM_DENSITY——也是使用上面子點雲的原理,只不過它使得稀疏區域的密度增加,從而使得整個點雲的密度均勻。它需要呼叫函式:inline void setPointDensity(int desired_num_po-ints_in_radius) 注意此函式輸入整型變數,意為半徑內點的個數。(這個半徑應該是search的半徑,不需要重新設定)。

    d)      VOXEL_GRID_DILATION——這個方法有兩個步驟:首先將點雲以voxels分割,然後進行迭代使得voxels的數目增加。它的結果是:填充空洞和平均化點雲的密度。它需要呼叫的函式為:

    A.     Inline voidsetDilationVoxelSize(float voxel_size) 設定voxel的大小。

    B.     Inline voidsetDilationIterations(int iterations) 設定迭代的次數。