MTF
register.h
1 #ifndef MTF_REGISTER_H
2 #define MTF_REGISTER_H
3 
5 
7 #include "mtf/AM/SSD.h"
8 #include "mtf/AM//NSSD.h"
9 #include "mtf/AM//ZNCC.h"
10 #include "mtf/AM//SCV.h"
11 #include "mtf/AM//LSCV.h"
12 #include "mtf/AM//RSCV.h"
13 #include "mtf/AM//LRSCV.h"
14 #include "mtf/AM//KLD.h"
15 #include "mtf/AM//LKLD.h"
16 #include "mtf/AM//MI.h"
17 #include "mtf/AM//SPSS.h"
18 #include "mtf/AM//SSIM.h"
19 #include "mtf/AM//NCC.h"
20 #include "mtf/AM//CCRE.h"
21 #include "mtf/AM//RIU.h"
22 #include "mtf/AM//NGF.h"
23 #include "mtf/AM//SAD.h"
25 #include "mtf/AM//MCSSD.h"
26 #include "mtf/AM//MCNCC.h"
27 #include "mtf/AM//MCMI.h"
28 #include "mtf/AM/MCSCV.h"
29 #include "mtf/AM/MCLSCV.h"
30 #include "mtf/AM/MCRSCV.h"
31 #include "mtf/AM/MCZNCC.h"
32 #include "mtf/AM/MCCCRE.h"
33 #include "mtf/AM/MCSSIM.h"
34 #include "mtf/AM/MCSPSS.h"
35 #include "mtf/AM/MCRIU.h"
36 #include "mtf/AM/MCSAD.h"
37 #ifndef DISABLE_DFM
38 #include "mtf/AM/DFM.h"
39 #endif
40 #ifndef DISABLE_PCA
41 #include "mtf/AM/PCA.h"
42 #include "mtf/AM/MCPCA.h"
43 #endif
44 
46 #include "mtf/SSM/Homography.h"
47 #include "mtf/SSM/LieHomography.h"
48 #include "mtf/SSM/CBH.h"
49 #include "mtf/SSM/SL3.h"
50 #include "mtf/SSM/Affine.h"
51 #include "mtf/SSM/LieAffine.h"
52 #include "mtf/SSM/ASRT.h"
53 #include "mtf/SSM/Similitude.h"
54 #include "mtf/SSM/Isometry.h"
55 #include "mtf/SSM/AST.h"
56 #include "mtf/SSM/IST.h"
57 #include "mtf/SSM/Translation.h"
58 #include "mtf/SSM/Spline.h"
59 
60 #ifndef DISABLE_DFM
61 #define _REGISTER_TRACKERS_DFM(SM, SSM) \
62  template class mtf::SM< mtf::DFM, mtf::SSM >;
63 #define _REGISTER_AM_TRACKERS_DFM(SM) \
64  template class mtf::SM< mtf::DFM::DistType >;
65 #else
66 #define _REGISTER_TRACKERS_DFM(SM, SSM)
67 #define _REGISTER_AM_TRACKERS_DFM(SM)
68 #endif
69 
70 #ifndef DISABLE_PCA
71 #define _REGISTER_TRACKERS_PCA(SM, SSM) \
72  template class mtf::SM< mtf::PCA, mtf::SSM >;\
73  template class mtf::SM< mtf::MCPCA, mtf::SSM >;
74 
75 #define _REGISTER_AM_TRACKERS_PCA(SM) \
76  template class mtf::SM< mtf::PCA::DistType >;\
77  template class mtf::SM< mtf::MCPCA::DistType >;
78 
79 #else
80 #define _REGISTER_TRACKERS_PCA(SM, SSM)
81 #define _REGISTER_AM_TRACKERS_PCA(SM)
82 #endif
83 
84 #define _REGISTER_TRACKERS_AM(SM, SSM) \
85  template class mtf::SM< mtf::SSD, mtf::SSM >;\
86  template class mtf::SM< mtf::NSSD, mtf::SSM >;\
87  template class mtf::SM< mtf::ZNCC, mtf::SSM >;\
88  template class mtf::SM< mtf::SCV, mtf::SSM >;\
89  template class mtf::SM< mtf::RSCV, mtf::SSM >;\
90  template class mtf::SM< mtf::LSCV, mtf::SSM >;\
91  template class mtf::SM< mtf::LRSCV, mtf::SSM >;\
92  template class mtf::SM< mtf::KLD, mtf::SSM >;\
93  template class mtf::SM< mtf::LKLD, mtf::SSM >;\
94  template class mtf::SM< mtf::SPSS, mtf::SSM >;\
95  template class mtf::SM< mtf::SSIM, mtf::SSM >;\
96  template class mtf::SM< mtf::NCC, mtf::SSM >;\
97  template class mtf::SM< mtf::CCRE, mtf::SSM >;\
98  template class mtf::SM< mtf::MI, mtf::SSM >;\
99  template class mtf::SM< mtf::SAD, mtf::SSM >;\
100  template class mtf::SM< mtf::RIU, mtf::SSM >;\
101  template class mtf::SM< mtf::NGF, mtf::SSM >;\
102  template class mtf::SM< mtf::MCSSD, mtf::SSM >;\
103  template class mtf::SM< mtf::MCSCV, mtf::SSM >;\
104  template class mtf::SM< mtf::MCLSCV, mtf::SSM >;\
105  template class mtf::SM< mtf::MCRSCV, mtf::SSM >;\
106  template class mtf::SM< mtf::MCZNCC, mtf::SSM >;\
107  template class mtf::SM< mtf::MCNCC, mtf::SSM >;\
108  template class mtf::SM< mtf::MCMI, mtf::SSM >;\
109  template class mtf::SM< mtf::MCSSIM, mtf::SSM >;\
110  template class mtf::SM< mtf::MCSPSS, mtf::SSM >;\
111  template class mtf::SM< mtf::MCRIU, mtf::SSM >;\
112  template class mtf::SM< mtf::MCSAD, mtf::SSM >;\
113  template class mtf::SM< mtf::MCCCRE, mtf::SSM >;\
114  _REGISTER_TRACKERS_DFM(SM, SSM)\
115  _REGISTER_TRACKERS_PCA(SM, SSM)
116 
117 
118 #define _REGISTER_TRACKERS(SM) \
119  _REGISTER_TRACKERS_AM(SM, LieHomography)\
120  _REGISTER_TRACKERS_AM(SM, CBH)\
121  _REGISTER_TRACKERS_AM(SM, SL3)\
122  _REGISTER_TRACKERS_AM(SM, Homography)\
123  _REGISTER_TRACKERS_AM(SM, Affine)\
124  _REGISTER_TRACKERS_AM(SM, LieAffine)\
125  _REGISTER_TRACKERS_AM(SM, ASRT)\
126  _REGISTER_TRACKERS_AM(SM, Similitude)\
127  _REGISTER_TRACKERS_AM(SM, Isometry)\
128  _REGISTER_TRACKERS_AM(SM, AST)\
129  _REGISTER_TRACKERS_AM(SM, IST)\
130  _REGISTER_TRACKERS_AM(SM, Translation)\
131  _REGISTER_TRACKERS_AM(SM, Spline)\
132 
133 #define _REGISTER_TRACKERS_SSM(SM) \
134  template class mtf::SM< mtf::LieHomography>;\
135  template class mtf::SM< mtf::CBH>;\
136  template class mtf::SM< mtf::SL3>;\
137  template class mtf::SM< mtf::Homography>;\
138  template class mtf::SM< mtf::Affine>;\
139  template class mtf::SM< mtf::LieAffine>;\
140  template class mtf::SM< mtf::ASRT>;\
141  template class mtf::SM< mtf::Similitude>;\
142  template class mtf::SM< mtf::Isometry>;\
143  template class mtf::SM< mtf::AST>;\
144  template class mtf::SM< mtf::IST>;\
145  template class mtf::SM< mtf::Translation>;\
146  template class mtf::SM< mtf::Spline>;
147 
148 #define _REGISTER_TRACKERS_DIST(SM) \
149  template class mtf::SM< mtf::SSDBaseDist >;\
150  template class mtf::SM< mtf::SSDDist >;\
151  template class mtf::SM< mtf::SCVDist >;\
152  template class mtf::SM< mtf::RSCVDist >;\
153  template class mtf::SM< mtf::LSCVDist >;\
154  template class mtf::SM< mtf::KLDDist >;\
155  template class mtf::SM< mtf::LKLDDist >;\
156  template class mtf::SM< mtf::SPSSDist >;\
157  template class mtf::SM< mtf::SSIMDist >;\
158  template class mtf::SM< mtf::NCCDist >;\
159  template class mtf::SM< mtf::CCREDist >;\
160  template class mtf::SM< mtf::MIDist >;\
161  template class mtf::SM< mtf::RIUDist >;\
162  template class mtf::SM< mtf::NGFDist >;\
163  template class mtf::SM< mtf::SADDist >;
164 
165 //registration macros for hierarchical trackers with 2 SSMs
166 #define _REGISTER_HTRACKERS_AM(SM, SSM, SSM2) \
167  template class mtf::SM< mtf::SSD, mtf::SSM, mtf::SSM2 >;\
168  template class mtf::SM< mtf::NSSD, mtf::SSM, mtf::SSM2 >;\
169  template class mtf::SM< mtf::ZNCC, mtf::SSM, mtf::SSM2 >;\
170  template class mtf::SM< mtf::SCV, mtf::SSM, mtf::SSM2 >;\
171  template class mtf::SM< mtf::RSCV, mtf::SSM, mtf::SSM2 >;\
172  template class mtf::SM< mtf::LSCV, mtf::SSM, mtf::SSM2 >;\
173  template class mtf::SM< mtf::LRSCV, mtf::SSM, mtf::SSM2 >;\
174  template class mtf::SM< mtf::KLD, mtf::SSM, mtf::SSM2 >;\
175  template class mtf::SM< mtf::LKLD, mtf::SSM, mtf::SSM2 >;\
176  template class mtf::SM< mtf::SPSS, mtf::SSM, mtf::SSM2 >;\
177  template class mtf::SM< mtf::SSIM, mtf::SSM, mtf::SSM2 >;\
178  template class mtf::SM< mtf::NCC, mtf::SSM, mtf::SSM2 >;\
179  template class mtf::SM< mtf::CCRE, mtf::SSM, mtf::SSM2 >;\
180  template class mtf::SM< mtf::RIU, mtf::SSM, mtf::SSM2 >;\
181  template class mtf::SM< mtf::NGF, mtf::SSM, mtf::SSM2 >;\
182  template class mtf::SM< mtf::SAD, mtf::SSM, mtf::SSM2 >;\
183  template class mtf::SM< mtf::MCSSD, mtf::SSM, mtf::SSM2 >;\
184  template class mtf::SM< mtf::MCSCV, mtf::SSM, mtf::SSM2 >;\
185  template class mtf::SM< mtf::MCLSCV, mtf::SSM, mtf::SSM2 >;\
186  template class mtf::SM< mtf::MCRSCV, mtf::SSM, mtf::SSM2 >;\
187  template class mtf::SM< mtf::MCZNCC, mtf::SSM, mtf::SSM2 >;\
188  template class mtf::SM< mtf::MCNCC, mtf::SSM, mtf::SSM2 >;\
189  template class mtf::SM< mtf::MCMI, mtf::SSM, mtf::SSM2 >;\
190  template class mtf::SM< mtf::MCSSIM, mtf::SSM, mtf::SSM2 >;\
191  template class mtf::SM< mtf::MCSPSS, mtf::SSM, mtf::SSM2 >;\
192  template class mtf::SM< mtf::MCRIU, mtf::SSM, mtf::SSM2 >;\
193  template class mtf::SM< mtf::MCCCRE, mtf::SSM, mtf::SSM2 >;\
194  template class mtf::SM< mtf::MCSAD, mtf::SSM, mtf::SSM2 >;\
195  template class mtf::SM< mtf::MI, mtf::SSM, mtf::SSM2 >;
196 
197 #define _REGISTER_HTRACKERS_SSM(SM, SSM) \
198  _REGISTER_HTRACKERS_AM(SM, SSM, LieHomography)\
199  _REGISTER_HTRACKERS_AM(SM, SSM, CBH)\
200  _REGISTER_HTRACKERS_AM(SM, SSM, SL3)\
201  _REGISTER_HTRACKERS_AM(SM, SSM, Homography)\
202  _REGISTER_HTRACKERS_AM(SM, SSM, Affine)\
203  _REGISTER_HTRACKERS_AM(SM, SSM, LieAffine)\
204  _REGISTER_HTRACKERS_AM(SM, SSM, ASRT)\
205  _REGISTER_HTRACKERS_AM(SM, SSM, Similitude)\
206  _REGISTER_HTRACKERS_AM(SM, SSM, Isometry)\
207  _REGISTER_HTRACKERS_AM(SM, SSM, AST)\
208  _REGISTER_HTRACKERS_AM(SM, SSM, IST)\
209  _REGISTER_HTRACKERS_AM(SM, SSM, Translation)\
210  _REGISTER_HTRACKERS_AM(SM, SSM, Spline)\
211 
212 #define _REGISTER_HTRACKERS(SM) \
213  _REGISTER_HTRACKERS_SSM(SM, LieHomography)\
214  _REGISTER_HTRACKERS_SSM(SM, CBH)\
215  _REGISTER_HTRACKERS_SSM(SM, SL3)\
216  _REGISTER_HTRACKERS_SSM(SM, Homography)\
217  _REGISTER_HTRACKERS_SSM(SM, Affine)\
218  _REGISTER_HTRACKERS_SSM(SM, LieAffine)\
219  _REGISTER_HTRACKERS_SSM(SM, ASRT)\
220  _REGISTER_HTRACKERS_SSM(SM, Similitude)\
221  _REGISTER_HTRACKERS_SSM(SM, Isometry)\
222  _REGISTER_HTRACKERS_SSM(SM, AST)\
223  _REGISTER_HTRACKERS_SSM(SM, IST)\
224  _REGISTER_HTRACKERS_SSM(SM, Translation)\
225  _REGISTER_HTRACKERS_SSM(SM, Spline)\
226 
227 #define _REGISTER_ESM_AM(HT, JT, SSM) \
228  template class mtf::FESM< mtf::SSD, mtf::SSM, mtf::HT, mtf::JT >;\
229  template class mtf::FESM< mtf::NSSD, mtf::SSM, mtf::HT, mtf::JT >;\
230  template class mtf::FESM< mtf::ZNCC, mtf::SSM, mtf::HT, mtf::JT >;\
231  template class mtf::FESM< mtf::SCV, mtf::SSM, mtf::HT, mtf::JT >;\
232  template class mtf::FESM< mtf::RSCV, mtf::SSM, mtf::HT, mtf::JT >;\
233  template class mtf::FESM< mtf::LSCV, mtf::SSM, mtf::HT, mtf::JT >;\
234  template class mtf::FESM< mtf::LRSCV, mtf::SSM, mtf::HT, mtf::JT >;\
235  template class mtf::FESM< mtf::KLD, mtf::SSM, mtf::HT, mtf::JT >;\
236  template class mtf::FESM< mtf::LKLD, mtf::SSM, mtf::HT, mtf::JT >;\
237  template class mtf::FESM< mtf::SPSS, mtf::SSM, mtf::HT, mtf::JT >;\
238  template class mtf::FESM< mtf::SSIM, mtf::SSM, mtf::HT, mtf::JT >;\
239  template class mtf::FESM< mtf::NCC, mtf::SSM, mtf::HT, mtf::JT >;\
240  template class mtf::FESM< mtf::CCRE, mtf::SSM, mtf::HT, mtf::JT >;\
241  template class mtf::FESM< mtf::RIU, mtf::SSM, mtf::HT, mtf::JT >;\
242  template class mtf::FESM< mtf::NGF, mtf::SSM, mtf::HT, mtf::JT >;\
243  template class mtf::FESM< mtf::SAD, mtf::SSM, mtf::HT, mtf::JT >;\
244  template class mtf::FESM< mtf::MCSSD, mtf::SSM, mtf::HT, mtf::JT >;\
245  template class mtf::FESM< mtf::MCSCV, mtf::SSM, mtf::HT, mtf::JT >;\
246  template class mtf::FESM< mtf::MCLSCV, mtf::SSM, mtf::HT, mtf::JT >;\
247  template class mtf::FESM< mtf::MCRSCV, mtf::SSM, mtf::HT, mtf::JT >;\
248  template class mtf::FESM< mtf::MCZNCC, mtf::SSM, mtf::HT, mtf::JT >;\
249  template class mtf::FESM< mtf::MCNCC, mtf::SSM, mtf::HT, mtf::JT >;\
250  template class mtf::FESM< mtf::MCMI, mtf::SSM, mtf::HT, mtf::JT >;\
251  template class mtf::FESM< mtf::MCSSIM, mtf::SSM, mtf::HT, mtf::JT >;\
252  template class mtf::FESM< mtf::MCSPSS, mtf::SSM, mtf::HT, mtf::JT >;\
253  template class mtf::FESM< mtf::MCRIU, mtf::SSM, mtf::HT, mtf::JT >;\
254  template class mtf::FESM< mtf::MCCCRE, mtf::SSM, mtf::HT, mtf::JT >;\
255  template class mtf::FESM< mtf::MCSAD, mtf::SSM, mtf::HT, mtf::JT >;\
256  template class mtf::FESM< mtf::MI, mtf::SSM, mtf::HT, mtf::JT >;
257 
258 #define _REGISTER_ESM(HT, JT) \
259  _REGISTER_ESM_AM(HT, JT, LieHomography)\
260  _REGISTER_ESM_AM(HT, JT, CBH)\
261  _REGISTER_ESM_AM(HT, JT, SL3)\
262  _REGISTER_ESM_AM(HT, JT, Homography)\
263  _REGISTER_ESM_AM(HT, JT, Affine)\
264  _REGISTER_ESM_AM(HT, JT, LieAffine)\
265  _REGISTER_ESM_AM(HT, JT, ASRT)\
266  _REGISTER_ESM_AM(HT, JT, Similitude)\
267  _REGISTER_ESM_AM(HT, JT, Isometry)\
268  _REGISTER_ESM_AM(HT, JT, AST)\
269  _REGISTER_ESM_AM(HT, JT, IST)\
270  _REGISTER_ESM_AM(HT, JT, Translation)\
271  _REGISTER_ESM_AM(HT, JT, Spline)\
272 
273 #endif
274 
275 
276