-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.cpp
75 lines (61 loc) · 2.05 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <PCAD.h>
int main(int argc, const char* argv[])
{
using namespace std::chrono;
high_resolution_clock::time_point t1 = high_resolution_clock::now();
if (argc < 2)
{
printf("Usage: <input_name.pcd> <output_name.pcd> K alpha beta lamda miu");
return 0;
}
printf("Input .pcd file name: %s\n", argv[1]);
printf("Output .pcd file name: %s\n", argv[2]);
pcl::PointCloud<pcl::PointXYZ>::Ptr filter_cloud(new pcl::PointCloud<pcl::PointXYZ>);
filter_cloud->width=4;
filter_cloud->height=1;
filter_cloud->points.resize(filter_cloud->width *filter_cloud->height );
filter_cloud->points[0].x=0;
filter_cloud->points[0].y=0;
filter_cloud->points[0].z=1;
filter_cloud->points[1].x=1;
filter_cloud->points[1].y=0;
filter_cloud->points[1].z=0;
filter_cloud->points[2].x=0;
filter_cloud->points[2].y=1;
filter_cloud->points[2].z=0;
filter_cloud->points[3].x=0;
filter_cloud->points[3].y=-1;
filter_cloud->points[3].z=0;
int K = std::stoi(argv[3]);
//double alpha = std::stod(argv[4]);
//double beta = std::stod(argv[5]);
//double lamda = std::stod(argv[6]);
//double miu = std::stod(argv[7]);
double alpha =0.05;
double beta = 0.5;
double lamda = 0.5;
double miu = 0.0001;
printf("K = %d\n", std::stoi(argv[3]));
printf("alpha = %lf\n", alpha);
printf("beta = %lf\n", beta);
printf("lamda = %lf\n", lamda);
printf("miu = %lf\n", miu);
PCAD pcad;
printf("class define finished\n");
pcad.InputPointcloud(argv[1]);
//pcad.InputPointcloud(filter_cloud);
printf("input finished\n");
pcad.SetK(K);
printf("set finished\n");
pcad.SetOPTparameters(alpha, beta,lamda,miu);
printf("setopt finished\n");
pcad.Denoise();
printf("denoise finished\n");
pcad.OutputPointcloud(argv[2]);
high_resolution_clock::time_point t2 = high_resolution_clock::now();
duration<double, std::milli> time_span = t2 - t1;
std::cout << "Time Span" << time_span.count()/1000 << " seconds.";
std::cout << std::endl;
return 0;
}