38 mitk::NavigationDataLandmarkTransformFilter::Pointer myFilter = mitk::NavigationDataLandmarkTransformFilter::New();
43 MITK_TEST_CONDITION_REQUIRED(myFilter.IsNotNull(),
"Testing instantiation");
46 mitk::Point3D sPoint1, sPoint2, sPoint3, tPoint1, tPoint2, tPoint3;
47 mitk::FillVector3D(sPoint1, 1.1, 1.1, 1.1);
48 mitk::FillVector3D(sPoint2, 2.2, 2.2, 2.2);
49 mitk::FillVector3D(sPoint3, 3.3, 3.3, 3.3);
51 mitk::FillVector3D(tPoint1, 2.1, 2.1, 2.1);
52 mitk::FillVector3D(tPoint2, 3.2, 3.2, 3.2);
53 mitk::FillVector3D(tPoint3, 4.3, 4.3, 4.3);
55 mitk::PointSet::Pointer sourcePoints = mitk::PointSet::New();
56 mitk::PointSet::Pointer targetPoints = mitk::PointSet::New();
58 sourcePoints->SetPoint(0,sPoint1);
59 sourcePoints->SetPoint(1,sPoint2);
60 sourcePoints->SetPoint(2,sPoint3);
62 targetPoints->SetPoint(0,tPoint1);
63 targetPoints->SetPoint(1,tPoint2);
64 targetPoints->SetPoint(2,tPoint3);
68 mitk::FillVector3D(initialPos1, 1.1, 1.1, 1.1);
69 mitk::FillVector3D(initialPos2, 22.2,22.2, 22.2);
70 mitk::FillVector3D(resultPos1, 2.1, 2.1, 2.1);
71 mitk::FillVector3D(resultPos2, 23.2, 23.2, 23.2);
73 mitk::ScalarType initialError(0.0);
74 bool initialValid(
true);
76 mitk::NavigationData::Pointer nd1 = mitk::NavigationData::New();
77 nd1->SetPosition(initialPos1);
78 nd1->SetOrientation(initialOri);
79 nd1->SetPositionAccuracy(initialError);
80 nd1->SetDataValid(initialValid);
82 mitk::NavigationData::Pointer nd2 = mitk::NavigationData::New();
83 nd2->SetPosition(initialPos2);
84 nd2->SetOrientation(initialOri);
85 nd2->SetPositionAccuracy(initialError);
86 nd2->SetDataValid(initialValid);
89 myFilter->SetInput(0,nd1);
90 MITK_TEST_CONDITION(myFilter->GetInput(0) == nd1,
"Testing Set-/GetInput() ND1");
93 MITK_TEST_CONDITION_REQUIRED(output1 !=
nullptr,
"Testing GetOutput() ND1");
95 MITK_TEST_CONDITION(myFilter->IsInitialized() ==
false,
"Testing IsInitialized() before setting source points");
97 myFilter->SetSourceLandmarks(sourcePoints);
98 MITK_TEST_CONDITION(myFilter->IsInitialized() ==
false,
"Testing IsInitialized() after setting source points and before setting target points");
100 mitk::PointSet::Pointer zeroTargetPoints = mitk::PointSet::New();
102 MITK_TEST_FOR_EXCEPTION(itk::ExceptionObject, myFilter->SetTargetLandmarks(zeroTargetPoints));
103 MITK_TEST_CONDITION(myFilter->IsInitialized() ==
false,
"Testing IsInitialized() after setting target pointset with insufficient points");
105 myFilter->SetTargetLandmarks(targetPoints);
106 MITK_TEST_CONDITION(myFilter->IsInitialized() ==
true,
"Testing IsInitialized() after setting source& target points");
110 MITK_TEST_CONDITION_REQUIRED(
112 "Testing ND1 position correctly transformed");
116 myFilter->SetInput(1,nd2);
117 MITK_TEST_CONDITION(myFilter->GetInput(1) == nd2,
"Testing Set-/GetInput() ND2");
120 MITK_TEST_CONDITION_REQUIRED(output2 !=
nullptr,
"Testing GetOutput() ND2");
124 MITK_TEST_CONDITION_REQUIRED(
126 "Testing ND2 position correctly transformed");
129 mitk::FillVector3D(initialPos2, 222.22, 222.22, 222.22);
130 mitk::FillVector3D(resultPos2, 223.22, 223.22, 223.22);
131 nd2->SetPosition(initialPos2);
132 myFilter->SetInput(1,nd2);
133 MITK_TEST_CONDITION(myFilter->GetInput(1) == nd2,
"Testing Set-/GetInput() ND2 after updating value");
135 output2 = myFilter->GetOutput(1);
136 MITK_TEST_CONDITION_REQUIRED(output2 !=
nullptr,
"Testing GetOutput() ND2 after updating value");
141 mitk::Equal(output2->GetPosition(), resultPos2, 0.00001),
142 "Testing ND2 position correctly transformed after updating value");
146 mitk::FillVector3D(tPoint1, 3.1, 3.1, 3.1);
147 mitk::FillVector3D(tPoint2, 4.2, 4.2, 4.2);
148 mitk::FillVector3D(tPoint3, 5.3, 5.3, 5.3);
149 mitk::FillVector3D(resultPos1, 3.1 ,3.1 ,3.1);
150 mitk::FillVector3D(resultPos2, 224.22, 224.22, 224.22);
153 targetPoints->SetPoint(0,tPoint1);
154 targetPoints->SetPoint(1,tPoint2);
155 targetPoints->SetPoint(2,tPoint3);
157 myFilter->SetTargetLandmarks(targetPoints);
163 "Testing ND1 position correctly transformed after targetPointSet changed");
166 mitk::Equal(output2->GetPosition(), resultPos2, 0.00001),
167 "Testing ND2 position correctly transformed after targetPointSet changed");
171 mitk::FillVector3D(sPoint1, 0.1, 0.1, 0.1);
172 mitk::FillVector3D(sPoint2, 1.2, 1.2, 1.2);
173 mitk::FillVector3D(sPoint3, 2.3, 2.3, 2.3);
174 mitk::FillVector3D(resultPos1, 4.1 ,4.1 ,4.1);
175 mitk::FillVector3D(resultPos2, 225.22, 225.22, 225.22);
178 sourcePoints->SetPoint(0,sPoint1);
179 sourcePoints->SetPoint(1,sPoint2);
180 sourcePoints->SetPoint(2,sPoint3);
182 myFilter->SetSourceLandmarks(sourcePoints);
187 mitk::Equal(output1->GetPosition(), resultPos1, 0.00001),
188 "Testing ND1 position correctly transformed after sourcePointSet changed");
191 mitk::Equal(output2->GetPosition(), resultPos2,0.00001),
192 "Testing ND2 position correctly transformed after sourcePointSet changed");
196 mitk::PointSet::Pointer sourcePoints = mitk::PointSet::New();
197 mitk::Point3D s1, s2, s3, s4, s5, s6;
198 mitk::FillVector3D(s1, 1.1, 1.1, 1.1);
199 mitk::FillVector3D(s2, 2.2, 2.2, 2.2);
200 mitk::FillVector3D(s3, 3.3, 3.3, 3.3);
201 mitk::FillVector3D(s4, 4.4, 4.4, 4.4);
202 mitk::FillVector3D(s5, 5.5, 5.5, 5.5);
203 mitk::FillVector3D(s6, 6.6, 6.6, 6.6);
204 sourcePoints->SetPoint(1, s4);
205 sourcePoints->SetPoint(2, s6);
206 sourcePoints->SetPoint(3, s3);
207 sourcePoints->SetPoint(4, s1);
208 sourcePoints->SetPoint(5, s2);
209 sourcePoints->SetPoint(6, s5);
211 mitk::PointSet::Pointer targetPoints = mitk::PointSet::New();
212 mitk::Point3D t1, t2, t3, t4, t5, t6;
213 mitk::FillVector3D(t1, 2.1, 2.1, 102.1);
214 mitk::FillVector3D(t2, 3.2, 3.2, 103.2);
215 mitk::FillVector3D(t3, 4.3, 4.3, 104.3);
216 mitk::FillVector3D(t4, 5.4, 5.4, 105.4);
217 mitk::FillVector3D(t5, 6.5, 6.5, 106.5);
218 mitk::FillVector3D(t6, 7.6, 7.6, 107.6);
219 targetPoints->SetPoint(1, t1);
220 targetPoints->SetPoint(2, t2);
221 targetPoints->SetPoint(3, t3);
222 targetPoints->SetPoint(4, t4);
223 targetPoints->SetPoint(5, t5);
224 targetPoints->SetPoint(6, t6);
226 mitk::NavigationDataLandmarkTransformFilter::Pointer myFilter = mitk::NavigationDataLandmarkTransformFilter::New();
227 myFilter->UseICPInitializationOn();
228 myFilter->SetSourceLandmarks(sourcePoints);
229 myFilter->SetTargetLandmarks(targetPoints);
233 mitk::FillVector3D(initialPos1, 1.1, 1.1, 1.1);
234 mitk::FillVector3D(resultPos1, 2.1, 2.1, 102.1);
236 mitk::ScalarType initialError(0.0);
237 bool initialValid(
true);
238 mitk::NavigationData::Pointer nd1 = mitk::NavigationData::New();
239 nd1->SetPosition(initialPos1);
240 nd1->SetOrientation(initialOri);
241 nd1->SetPositionAccuracy(initialError);
242 nd1->SetDataValid(initialValid);
244 myFilter->SetInput(0, nd1);
245 mitk::NavigationData::Pointer output = myFilter->GetOutput();
249 MITK_TEST_CONDITION(
mitk::Equal(output->GetPosition(), resultPos1,0.00001),
"Testing ND1 position correctly transformed after ICP initialization");
253 mitk::NavigationDataLandmarkTransformFilter::Pointer myFilter2 = mitk::NavigationDataLandmarkTransformFilter::New();
254 MITK_TEST_CONDITION_REQUIRED(myFilter2.IsNotNull(),
"Testing instantiation for second filter");
256 mitk::PointSet::Pointer sourcePoints2 = mitk::PointSet::New();
257 MITK_TEST_FOR_EXCEPTION(std::exception, myFilter2->SetSourceLandmarks(sourcePoints2););
261 mitk::NavigationDataLandmarkTransformFilter::Pointer myFilter3 = mitk::NavigationDataLandmarkTransformFilter::New();
262 MITK_TEST_CONDITION_REQUIRED(myFilter3.IsNotNull(),
"Testing instantiation for second filter");
264 mitk::PointSet::Pointer targetPoints2 = mitk::PointSet::New();
265 MITK_TEST_FOR_EXCEPTION(std::exception, myFilter3->SetTargetLandmarks(targetPoints2););
270 myFilter = mitk::NavigationDataLandmarkTransformFilter::New();
272 mitk::FillVector3D(sPoint1, 1.1, 1.1, 1.1);
273 mitk::FillVector3D(sPoint2, 1.1, -1.1, 1.1);
274 mitk::FillVector3D(sPoint3, -1.1, -1.1, 1.1);
276 mitk::FillVector3D(tPoint1, -1.1, 1.1, 1.1);
277 mitk::FillVector3D(tPoint2, 1.1, 1.1, 1.1);
278 mitk::FillVector3D(tPoint3, 1.1, -1.1, 1.1);
280 sourcePoints->SetPoint(0,sPoint1);
281 sourcePoints->SetPoint(1,sPoint2);
282 sourcePoints->SetPoint(2,sPoint3);
284 targetPoints->SetPoint(0,tPoint1);
285 targetPoints->SetPoint(1,tPoint2);
286 targetPoints->SetPoint(2,tPoint3);
288 myFilter->SetSourceLandmarks(sourcePoints);
289 myFilter->SetTargetLandmarks(targetPoints);
296 mitk::FillVector3D(initialPos1, 2.2, 2.2, 2.2);
297 mitk::FillVector3D(resultPos1, -2.2, 2.2, 2.2);
299 nd1->SetOrientation(initialQuat);
300 nd1->SetPosition(initialPos1);
302 myFilter->SetInput(0,nd1);
304 output1 = myFilter->GetOutput();
308 mitk::Equal(output1->GetPosition(), resultPos1, 0.00001),
309 "Testing ND1 position correctly transformed ");
312 mitk::Equal(output1->GetOrientation(), resultQuat, 0.00001),
313 "Testing ND1 orientation correctly transformed ");
314 MITK_TEST_OUTPUT(<<
"Orientation1");
315 MITK_TEST_OUTPUT(<<output1->GetOrientation());
316 MITK_TEST_OUTPUT(<<
"qX:");
317 MITK_TEST_OUTPUT(<<output1->GetOrientation().x());
318 MITK_TEST_OUTPUT(<<
"qY:");
319 MITK_TEST_OUTPUT(<<output1->GetOrientation().y());
320 MITK_TEST_OUTPUT(<<
"qZ:");
321 MITK_TEST_OUTPUT(<<output1->GetOrientation().z());
322 MITK_TEST_OUTPUT(<<
"qR:");
323 MITK_TEST_OUTPUT(<<output1->GetOrientation().r());
324 MITK_TEST_OUTPUT(<<
"angle:");
327 MITK_TEST_OUTPUT(<<
"Orientation2");
328 MITK_TEST_OUTPUT(<<resultQuat);
329 MITK_TEST_OUTPUT(<<
"qX:");
330 MITK_TEST_OUTPUT(<<resultQuat.x());
331 MITK_TEST_OUTPUT(<<
"qY:");
332 MITK_TEST_OUTPUT(<<resultQuat.y());
333 MITK_TEST_OUTPUT(<<
"qZ:");
334 MITK_TEST_OUTPUT(<<resultQuat.z());
335 MITK_TEST_OUTPUT(<<
"qR:");
336 MITK_TEST_OUTPUT(<<resultQuat.r());
341 mitk::PointSet::Pointer refSet = mitk::PointSet::New();
342 mitk::PointSet::Pointer movSet = mitk::PointSet::New();
344 mitk::Point3D refPoint;
345 mitk::Point3D movPoint;
348 refPoint.Fill(0); refSet->SetPoint(0, refPoint);
349 movPoint.Fill(1); movSet->SetPoint(0, movPoint);
352 refPoint[0]=3; refPoint[1]=0; refPoint[2]=0; refSet->SetPoint(1, refPoint);
353 movPoint[0]=2; movPoint[1]=1; movPoint[2]=1; movSet->SetPoint(1, movPoint);
356 refPoint[0]=0; refPoint[1]=0; refPoint[2]=3; refSet->SetPoint(2, refPoint);
357 movPoint[0]=1; movPoint[1]=1; movPoint[2]=2; movSet->SetPoint(2, movPoint);
360 refPoint[0]=3; refPoint[1]=0; refPoint[2]=3; refSet->SetPoint(3, refPoint);
361 movPoint[0]=2; movPoint[1]=1; movPoint[2]=2; movSet->SetPoint(3, movPoint);
365 refPoint[0]=0; refPoint[1]=3; refPoint[2]=0; refSet->SetPoint(4, refPoint);
366 movPoint[0]=1; movPoint[1]=2; movPoint[2]=1; movSet->SetPoint(4, movPoint);
369 refPoint[0]=3; refPoint[1]=3; refPoint[2]=0; refSet->SetPoint(5, refPoint);
370 movPoint[0]=2; movPoint[1]=2; movPoint[2]=1; movSet->SetPoint(5, movPoint);
373 refPoint[0]=0; refPoint[1]=3; refPoint[2]=3; refSet->SetPoint(6, refPoint);
374 movPoint[0]=1; movPoint[1]=2; movPoint[2]=2; movSet->SetPoint(6, movPoint);
377 refPoint[0]=3; refPoint[1]=3; refPoint[2]=3; refSet->SetPoint(7, refPoint);
378 movPoint[0]=2; movPoint[1]=2; movPoint[2]=2; movSet->SetPoint(7, movPoint);
380 mitk::NavigationDataLandmarkTransformFilter::Pointer myFREFilter = mitk::NavigationDataLandmarkTransformFilter::New();
381 myFREFilter->SetSourceLandmarks(refSet);
382 myFREFilter->SetTargetLandmarks(movSet);
386 MITK_TEST_CONDITION_REQUIRED(
mitk::Equal(myFREFilter->GetFRE(), (
double) sqrt(3.0), 0.00001),
"Testing mean error calculation");
387 MITK_TEST_CONDITION_REQUIRED(myFREFilter->GetMaxError() == (
double) sqrt(3.0),
"Testing max error calculation");
388 MITK_TEST_CONDITION_REQUIRED(myFREFilter->GetMinError() == (
double) sqrt(3.0),
"Testing min error calculation");
389 MITK_TEST_CONDITION_REQUIRED(myFREFilter->GetRMSError() == (
double) sqrt(3.0),
"Testing RMS error calculation");
390 MITK_TEST_CONDITION_REQUIRED(
mitk::Equal(myFREFilter->GetFREStdDev(), (
double) 0.0, 0.00001),
"Testing SD calculation");
391 MITK_TEST_CONDITION_REQUIRED(myFREFilter->GetAbsMaxError() == (
double) sqrt(3.0),
"Testing abs max error calculation");
392 MITK_TEST_CONDITION_REQUIRED(myFREFilter->GetErrorVector().size() == 8,
"Testing method GetErrorVector");