MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
mitkCameraIntrinsicsTest.cpp
Go to the documentation of this file.
1/*============================================================================
2
3The Medical Imaging Interaction Toolkit (MITK)
4
5Copyright (c) German Cancer Research Center (DKFZ)
6All rights reserved.
7
8Use of this source code is governed by a 3-clause BSD license that can be
9found in the LICENSE file.
10
11============================================================================*/
12
14#include <mitkTestingMacros.h>
15#include <mitkCvMatCompare.h>
16#include <itksys/SystemTools.hxx>
17
21int mitkCameraIntrinsicsTest(int, char* [])
22{
23 MITK_TEST_BEGIN("CameraIntrinsics")
24
25 cv::Mat _CameraMatrix = cv::Mat::zeros(3, 3, cv::DataType<double>::type);
26 _CameraMatrix.at<double>(2,2) = 1.0;
27 _CameraMatrix.at<double>(0,0) = 1662.54;
28 _CameraMatrix.at<double>(1,1) = 1678.23;
29 _CameraMatrix.at<double>(0,2) = 1030.23;
30 _CameraMatrix.at<double>(1,2) = 632.32;
31
32 cv::Mat _DistorsionCoeffs = cv::Mat::zeros(1, 5, cv::DataType<double>::type);
33 _DistorsionCoeffs.at<double>(0,0) = -0.443212;
34 _DistorsionCoeffs.at<double>(0,1) = 0.231012;
35 _DistorsionCoeffs.at<double>(0,2) = -0.013612;
36 _DistorsionCoeffs.at<double>(0,3) = -0.005312;
37 _DistorsionCoeffs.at<double>(0,4) = 0;
38
39 mitk::CameraIntrinsics::Pointer intrinsics
40 = mitk::CameraIntrinsics::New();
41
42 intrinsics->SetIntrinsics(_CameraMatrix, _DistorsionCoeffs);
43
44 double epsilon = 0.001;
45 bool equals = false;
46 mitk::CvMatCompare _CvMatCompare( &epsilon, &equals );
47
48 {
49 cv::Mat _CameraMatrixResult = intrinsics->GetCameraMatrix();
50 _CvMatCompare.SetMatrices( &_CameraMatrix, &_CameraMatrixResult );
51 _CvMatCompare.Update();
52 MITK_TEST_CONDITION_REQUIRED( equals,
53 "Testing CameraIntrinsics::GetCameraMatrix()");
54 }
55
56 {
57 cv::Mat _DistorsionCoeffsResult = intrinsics->GetDistorsionCoeffs();
58 _CvMatCompare.SetMatrices( &_DistorsionCoeffs, &_DistorsionCoeffsResult );
59 _CvMatCompare.Update();
60 MITK_TEST_CONDITION_REQUIRED( equals,
61 "Testing CameraIntrinsics::GetDistorsionCoeffs()");
62 }
63
64
65 {
66 mitk::CameraIntrinsics::Pointer copy
67 = intrinsics->Clone();
68
69 cv::Mat _CameraMatrixResult = copy->GetCameraMatrix();
70 cv::Mat _DistorsionCoeffsResult = copy->GetDistorsionCoeffs();
71
72 bool distCoeffsEquals = false;
73 _CvMatCompare.SetMatrices( &_DistorsionCoeffs, &_DistorsionCoeffsResult );
74 _CvMatCompare.Update();
75 distCoeffsEquals = equals;
76 _CvMatCompare.SetMatrices( &_CameraMatrix, &_CameraMatrixResult );
77 _CvMatCompare.Update();
78 MITK_TEST_CONDITION( distCoeffsEquals && equals,
79 "Testing CameraIntrinsics::Clone()");
80 }
81
82
83 {
84 std::string filename = "mitkCameraIntrinsicsTest.xml";
85 intrinsics->ToXMLFile(filename);
86 intrinsics->SetValid(true);
87
88 mitk::CameraIntrinsics::Pointer copy
89 = mitk::CameraIntrinsics::New();
90 copy->FromXMLFile(filename);
91
92 cv::Mat _CameraMatrixResult = copy->GetCameraMatrix();
93 cv::Mat _DistorsionCoeffsResult = copy->GetDistorsionCoeffs();
94
95// MITK_INFO << "_CameraMatrix:" << std::endl
96// << mitk::ToString(_CameraMatrix);
97// MITK_INFO << "_CameraMatrixResult:" << std::endl
98// << mitk::ToString(_CameraMatrixResult);
99// MITK_INFO << "_DistorsionCoeffs:" << std::endl
100// << mitk::ToString(_DistorsionCoeffs);
101// MITK_INFO << "_DistorsionCoeffsResult:" << std::endl
102// << mitk::ToString(_DistorsionCoeffsResult);
103
104 bool distCoeffsEquals = false;
105 _CvMatCompare.SetMatrices( &_DistorsionCoeffs, &_DistorsionCoeffsResult );
106 _CvMatCompare.Update();
107 distCoeffsEquals = equals;
108 _CvMatCompare.SetMatrices( &_CameraMatrix, &_CameraMatrixResult );
109 _CvMatCompare.Update();
110 MITK_TEST_CONDITION( distCoeffsEquals && equals
111 && copy->IsValid(),
112 "Testing CameraIntrinsics::ToXMLFile() and"
113 " CameraIntrinsics::FromXMLFile()");
114
115 if(itksys::SystemTools::FileExists(filename.c_str() , true))
116 itksys::SystemTools::RemoveFile(filename.c_str());
117 }
118
119
120 // TODO
121
122 // always end with this!
123 MITK_TEST_END();
124}
void Update() override
void SetMatrices(const cv::Mat *_CvMat1, const cv::Mat *_CvMat2)
int mitkCameraIntrinsicsTest(int, char *[])