-
Notifications
You must be signed in to change notification settings - Fork 12
/
optimizeCost.m
75 lines (72 loc) · 2.3 KB
/
optimizeCost.m
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
function opt = optimizeCost(opt, X, target_size)
R_init = rotx(opt.rpy_init(1)) * roty(opt.rpy_init(2)) * rotz(opt.rpy_init(3));
opt.H_init(1:3, 1:3) = R_init;
if opt.UseCentroid
centroid = mean(X, 2);
opt.H_init(1:3, 4) = -centroid(1:3);
else
opt.H_init(1:3, 4) = opt.T_init;
end
switch opt.method
case 'Customize'
opt.metric = "PointToAxis";
opt.unit = "L1-inspired";
tic;
optimizeCustomizedCost(opt);
opt.computation_time = toc;
case 'Constraint Customize'
opt.metric = "PointToAxis";
opt.unit = "L1-inspired";
tic;
opt = optimizeConstraintCustomizedCost(opt, X, target_size);
opt.computation_time = toc;
case 'Coherent Point Drift'
opt.metric = "--";
opt.unit = "RMSE";
tic;
optimizeCPD(opt);
opt.computation_time = toc;
case 'Iterative Closest Point (point)'
opt.metric = "PointToPoint";
opt.unit = "RMSE";
tic;
optimizeICPPoint(opt);
opt.computation_time = toc;
case 'Iterative Closest Point (plane)'
opt.metric = "PointToPlane";
opt.unit = "RMSE";
tic;
optimizeICPPlane(opt);
opt.computation_time = toc;
case 'Normal-distributions Transform'
opt.metric = "--";
opt.unit = "RMSE";
tic;
optimizeNDT(opt);
opt.computation_time = toc;
case 'GICP-SE3'
tic;
optimizeGICP_SE3(opt)
opt.computation_time = toc;
case 'GICP-SE3 (plane)'
tic;
optimizeGICPPlane_SE3(opt)
opt.computation_time = toc;
case 'GICP-SE3-costimized'
tic;
optimizeCustomizedGICP_SE3(opt);
opt.computation_time = toc;
case 'Two Hollow Strips'
tic;
optimizeHollowStrips(opt);
opt.computation_time = toc;
case '3D IoU'
case 'Project'
tic;
OptimizeUsingRobustNormalVector(opt);
opt.computation_time = toc;
otherwise
disp('no such optimization method')
return
end
end