Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include <gtest/gtest.h>
00039 #include <pcl/io/pcd_io.h>
00040 #include <pcl/registration/correspondence_estimation_normal_shooting.h>
00041 #include <pcl/features/normal_3d.h>
00042 #include <pcl/kdtree/kdtree.h>
00043
00045 TEST (CorrespondenceEstimation, CorrespondenceEstimationNormalShooting)
00046 {
00047 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud1 (new pcl::PointCloud<pcl::PointXYZ> ());
00048 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud2 (new pcl::PointCloud<pcl::PointXYZ> ());
00049
00050
00051 for (float i = 0; i < 10; i += 0.2)
00052 {
00053 for (float z = 0; z < 5; z += 0.2)
00054 {
00055 cloud1->points.push_back (pcl::PointXYZ (i, 0, z));
00056 cloud2->points.push_back (pcl::PointXYZ (i, 2, z));
00057 }
00058 }
00059
00060 pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> ne;
00061 ne.setInputCloud (cloud1);
00062
00063 pcl::search::KdTree<pcl::PointXYZ>::Ptr tree (new pcl::search::KdTree<pcl::PointXYZ> ());
00064 ne.setSearchMethod (tree);
00065
00066 pcl::PointCloud<pcl::Normal>::Ptr cloud1_normals (new pcl::PointCloud<pcl::Normal>);
00067 ne.setKSearch (5);
00068 ne.compute (*cloud1_normals);
00069
00070 pcl::CorrespondencesPtr corr (new pcl::Correspondences);
00071 pcl::registration::CorrespondenceEstimationNormalShooting <pcl::PointXYZ, pcl::PointXYZ, pcl::Normal> ce;
00072 ce.setInputCloud (cloud1);
00073 ce.setKSearch (10);
00074 ce.setSourceNormals (cloud1_normals);
00075 ce.setInputTarget (cloud2);
00076 ce.determineCorrespondences (*corr);
00077
00078
00079 for (unsigned int i = 0; i < corr->size (); i++)
00080 {
00081 EXPECT_EQ ((*corr)[i].index_query, (*corr)[i].index_match);
00082 }
00083 }
00084
00085
00086 int
00087 main (int argc, char** argv)
00088 {
00089 testing::InitGoogleTest (&argc, argv);
00090 return (RUN_ALL_TESTS ());
00091 }
00092