學習PCL心得領會——構造點雲(Organized PointClouds)。本站提示廣大學習愛好者:(學習PCL心得領會——構造點雲(Organized PointClouds))文章只能為提供參考,不一定能成為您想要的結果。以下是學習PCL心得領會——構造點雲(Organized PointClouds)正文
有在學習PCL的冤家們,或多或少會接觸到構造點雲(Organized PointClouds)。
構造點雲的定義
什麼是構造點雲?上面援用PCL官網的一段解釋。
1 構造點雲:An organized point cloud dataset is the name given to point clouds that resemble
an organized image (or matrix) like structure, where the data is split into rows and columns.
也就是說,像往常的照片一樣,有行列順序的點雲,叫構造點雲。
例如:
cloud.width = 640; // Image-like organized structure, with 640 rows and 480 columns,
cloud.height = 480; // thus 640*480=307200 points total in the dataset
相反,構造點雲以外的點雲,就叫無構造點雲。
例如:
cloud.width = 307200;
cloud.height = 1; // unorganized point cloud dataset with 307200 points
構造點雲的重要性
由Kinect等支持OpenNI接口的相機獲取的點雲為構造點雲,但是構造點雲經過某些人為操作後,會變為無構造點雲,比方濾波操作等。
而PCL算法庫外面的某些重要算法,僅支持構造點雲,比方多平米聯系算法(OrganizedMultiPlaneSegmentation)。
想必有不少冤家遇到過這樣的問題:
[pcl::IntegralImageNormalEstimation::setInputCloud] Input dataset is not organized (height=1).
上面,我們以直通濾波為例,解釋如何讓構造點雲經過操作之後,仍為構造點雲。閒話不多說,直接上代碼:
pcl::PassThrough<pcl::PointXYZ> pass;
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1(new pcl::PointCloud<pcl::PointXYZ>);
pass.setInputCloud(cloud);
pass.setFilterFieldName("z");
pass.setFilterLimits(0.4, 0.94);
pass.setKeepOrganized(true);
pass.filter(*cloud1);
我們只需求在停止濾波的時分,將點雲設置為KeepOrganized即可,也就是pass.setKeepOrganized(true);這條語句。
上面附上一幅OrganizedMultiPlaneSegmentation的效果圖,祝大家學習愉快!