MCPcopy Create free account
hub / github.com/PointCloudLibrary/pcl / TEST

Function TEST

test/keypoints/test_keypoints.cpp:66–122  ·  view source on GitHub ↗

/////////////////////////////////////////////////////////////////////////////////////////

Source from the content-addressed store, hash-verified

64
65//////////////////////////////////////////////////////////////////////////////////////////////
66TEST (PCL, SIFTKeypoint)
67{
68 PointCloud<KeypointT> keypoints;
69
70 // Compute the SIFT keypoints
71 SIFTKeypoint<PointXYZI, KeypointT> sift_detector;
72 search::KdTree<PointXYZI>::Ptr tree (new search::KdTree<PointXYZI>);
73 sift_detector.setSearchMethod (tree);
74 sift_detector.setScales (0.02f, 5, 3);
75 sift_detector.setMinimumContrast (0.03f);
76
77 sift_detector.setInputCloud (cloud_xyzi);
78 sift_detector.compute (keypoints);
79
80 ASSERT_EQ (keypoints.width, keypoints.size ());
81 ASSERT_EQ (keypoints.height, 1);
82 EXPECT_EQ (keypoints.size (), static_cast<std::size_t> (169));
83 EXPECT_EQ (keypoints.header, cloud_xyzi->header);
84 EXPECT_EQ (keypoints.sensor_origin_ (0), cloud_xyzi->sensor_origin_ (0));
85 EXPECT_EQ (keypoints.sensor_origin_ (1), cloud_xyzi->sensor_origin_ (1));
86 EXPECT_EQ (keypoints.sensor_origin_ (2), cloud_xyzi->sensor_origin_ (2));
87 EXPECT_EQ (keypoints.sensor_origin_ (3), cloud_xyzi->sensor_origin_ (3));
88 EXPECT_EQ (keypoints.sensor_orientation_.w (), cloud_xyzi->sensor_orientation_.w ());
89 EXPECT_EQ (keypoints.sensor_orientation_.x (), cloud_xyzi->sensor_orientation_.x ());
90 EXPECT_EQ (keypoints.sensor_orientation_.y (), cloud_xyzi->sensor_orientation_.y ());
91 EXPECT_EQ (keypoints.sensor_orientation_.z (), cloud_xyzi->sensor_orientation_.z ());
92
93 // Change the values and re-compute
94 sift_detector.setScales (0.05f, 5, 3);
95 sift_detector.setMinimumContrast (0.06f);
96 sift_detector.compute (keypoints);
97
98 ASSERT_EQ (keypoints.width, keypoints.size ());
99 ASSERT_EQ (keypoints.height, 1);
100
101 // Compare to previously validated output
102 constexpr std::size_t correct_nr_keypoints = 5;
103 const float correct_keypoints[correct_nr_keypoints][4] =
104 {
105 // { x, y, z, scale }
106 {-0.9425f, -0.6381f, 1.6445f, 0.0794f},
107 {-0.5083f, -0.5587f, 1.8519f, 0.0500f},
108 { 1.0265f, 0.0500f, 1.7154f, 0.1000f},
109 { 0.3005f, -0.3007f, 1.9526f, 0.2000f},
110 {-0.1002f, -0.1002f, 1.9933f, 0.3175f}
111 };
112
113 ASSERT_EQ (keypoints.size (), correct_nr_keypoints);
114 for (std::size_t i = 0; i < correct_nr_keypoints; ++i)
115 {
116 EXPECT_NEAR (keypoints[i].x, correct_keypoints[i][0], 1e-4);
117 EXPECT_NEAR (keypoints[i].y, correct_keypoints[i][1], 1e-4);
118 EXPECT_NEAR (keypoints[i].z, correct_keypoints[i][2], 1e-4);
119 EXPECT_NEAR (keypoints[i].scale, correct_keypoints[i][3], 1e-4);
120 }
121
122}
123

Callers

nothing calls this directly

Calls 13

setScalesMethod · 0.80
setMinimumContrastMethod · 0.80
setLeafSizeMethod · 0.80
setSearchMethodMethod · 0.45
setInputCloudMethod · 0.45
computeMethod · 0.45
sizeMethod · 0.45
xMethod · 0.45
makeSharedMethod · 0.45
filterMethod · 0.45
resizeMethod · 0.45
radiusSearchMethod · 0.45

Tested by

no test coverage detected