Go to the documentation of this file.00001
00059
00060
00061
00062
00063
00064
00065
00066
00067 #include <cob_3d_mapping_filters/jump_edge_filter.h>
00068
00069
00070 #include <pcl/point_types.h>
00071 #include <pcl/io/pcd_io.h>
00072 #include <cob_3d_mapping_common/point_types.h>
00073
00074
00075 #include <boost/timer.hpp>
00076 #include "cob_3d_mapping_common/stop_watch.h"
00077 #include <iostream>
00078 #include <fstream>
00079
00080
00081
00082 double
00083 TestProcessingTimeOnce (unsigned int cloud_size, unsigned int iterations)
00084 {
00085 cob_3d_mapping_filters::JumpEdgeFilter<PointXYZ> filter;
00086 pcl::PointCloud<PointXYZ>::Ptr cloud (new pcl::PointCloud<PointXYZ> ());
00087 pcl::PointCloud<PointXYZ>::Ptr cloud_out (new pcl::PointCloud<PointXYZ> ());
00088
00089 cloud->points.resize (cloud_size);
00090 cloud->width = sqrt (cloud_size);
00091 cloud->height = sqrt (cloud_size);
00092 for (unsigned int i = 0; i < cloud_size; i++)
00093 {
00094 PointXYZ pt;
00095 pt.x = pt.y = pt.z = 1;
00096 cloud->points[i] = pt;
00097 }
00098 filter.setInputCloud (cloud);
00099
00100 double time = 0;
00101 for (unsigned int i = 0; i < iterations; i++)
00102 {
00103 PrecisionStopWatch sw;
00104 sw.precisionStart ();
00105 filter.filter (*cloud_out);
00106 time += sw.precisionStop ();
00107 }
00108 time /= iterations;
00109 std::cout << "Cloud size " << cloud_size << ": " << time << " s" << std::endl;
00110 return time;
00111 }
00112
00113 void
00114 TestProcessingTime ()
00115 {
00116 std::ofstream file;
00117 file.open ("/home/goa/tmp/jump_edge_filter_timing.dat");
00118 file << "#No. of points\ttime (s)\n";
00119 for (unsigned int cloud_size = 40000; cloud_size <= 400000; cloud_size += 40000)
00120 {
00121 double time = TestProcessingTimeOnce (cloud_size, 1000);
00122 file << cloud_size << "\t" << time << "\n";
00123 }
00124 file.close ();
00125 }
00126
00127 void
00128 DoSampleRun ()
00129 {
00130 cob_3d_mapping_filters::JumpEdgeFilter<PointXYZ> filter;
00131 pcl::PointCloud<PointXYZ>::Ptr cloud (new pcl::PointCloud<PointXYZ> ());
00132 pcl::PointCloud<PointXYZ>::Ptr cloud_out (new pcl::PointCloud<PointXYZ> ());
00133 pcl::io::loadPCDFile ("/home/goa/Ubuntu One/diss/images/raw/filter_sequence_input2.pcd", *cloud);
00134 filter.setInputCloud (cloud);
00135 filter.filter (*cloud_out);
00136 pcl::io::savePCDFileASCII ("/home/goa/Ubuntu One/diss/images/raw/filter_sequence_jumpedge2.pcd", *cloud_out);
00137 }
00138
00139 int
00140 main ()
00141 {
00142 DoSampleRun ();
00143
00144 }
00145