簡體   English   中英

如何使用點雲庫查找點雲的主要成分和方向

[英]how to find principal components and orientation of a point cloud using point cloud library

我有一個木塊的點雲。 我已經找到了該點雲的質心。 現在,我嘗試使用點雲庫查找主成分和方向。 以下是我嘗試過的代碼。 如果您還不了解,請指正我。

        Eigen::Vector4f centroid;
        Eigen::Matrix3f covariance_matrix;

        // Extract the eigenvalues and eigenvectors
        Eigen::Vector3f eigen_values;
        Eigen::Matrix3f eigen_vectors;

        pcl::compute3DCentroid(*cloud_filtered,cluster_indices,centroid);

        // Compute the 3x3 covariance matrix
        pcl::computeCovarianceMatrix (*cloud_filtered, centroid, covariance_matrix);
        pcl::eigen33 (covariance_matrix, eigen_vectors, eigen_values);
        std::cout << "centroid-x:"<<centroid[0]<<"centroid-y:"<<centroid[1]<<"centroid-z:"<<centroid[2]<<std::endl;

如果需要代表方向的旋轉矩陣,我們可以選擇對象的體積分布最高的軸(標准化的第一特征向量-與最大特征值相關的特征向量)作為矩陣的第一列。

對於矩陣的第二列,請選擇第二個特征向量,但是您必須從中減去它在第一個特征向量上的投影,以使其與第一個特征向量正交。 要計算其投影,您可以使用點積-如果特征向量已經歸一化,則可以使用點積計算要減去的向量的長度:因此,將兩個向量點積,然后將第一個向量乘以點積,然后從第一個特征向量中減去所得的向量。

對於第三列,只剩下一個選擇-上面計算出的兩個乘積。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM