NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
mitkCameraCalibrationFacade.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef mitkCameraCalibrationFacade_h
16 #define mitkCameraCalibrationFacade_h
17 
18 #include "niftkOpenCVExports.h"
19 #include <mitkOpenCVPointTypes.h>
20 #include <mitkPoint.h>
21 
22 #include <cv.h>
23 #include <cstdlib>
24 #include <iostream>
25 #include <mitkVector.h>
26 
31 namespace mitk {
32 
40 extern "C++" NIFTKOPENCV_EXPORT void LoadImages(const std::vector<std::string>& files,
41  std::vector<IplImage*>& images,
42  std::vector<std::string>& fileNames
43  );
44 
45 
53  const std::string& fullDirectoryName,
54  std::vector<IplImage*>& images,
55  std::vector<std::string>& fileNames
56  );
57 
58 
71 extern "C++" NIFTKOPENCV_EXPORT bool CheckAndAppendPairOfFileNames(const std::string& leftFileName, const std::string& rightFileName,
72  const int& numberCornersX,
73  const int& numberCornersY,
74  const double& sizeSquareMillimeters,
75  const mitk::Point2D& pixelScaleFactor,
76  std::vector<std::string>& successfulLeftFiles, std::vector<std::string>& successfulRightFiles
77  );
78 
79 
86 extern "C++" NIFTKOPENCV_EXPORT void CheckConstImageSize(
87  const std::vector<IplImage*>& images, int& width, int& height
88  );
89 
90 
109  const std::vector<IplImage*>& images,
110  const std::vector<std::string>& fileNames,
111  const int& numberCornersWidth,
112  const int& numberCornersHeight,
113  const bool& drawCorners,
114  const double& squareSizeInMillimetres,
115  const mitk::Point2D& pixelScaleFactor,
116  std::vector<IplImage*>& outputImages,
117  std::vector<std::string>& outputFileNames,
118  CvMat*& outputImagePoints,
119  CvMat*& outputObjectPoints,
120  CvMat*& outputPointCounts
121  );
122 
123 
136  const cv::Mat& image,
137  const int& numberCornersWidth,
138  const int& numberCornersHeight,
139  const bool& drawCorners,
140  const double& squareSizeInMillimetres,
141  const mitk::Point2D& pixelScaleFactor,
142  std::vector<cv::Point2d>& outputImagePoints,
143  std::vector<cv::Point3d>& outputObjectPoints
144  );
145 
146 
158  const CvMat& objectPoints,
159  const CvMat& imagePoints,
160  const CvMat& pointCounts,
161  const CvSize& imageSize,
162  CvMat& outputIntrinsicMatrix,
163  CvMat& outputDistortionCoefficients,
164  CvMat* outputRotationVectors,
165  CvMat* outputTranslationVectors,
166  const int& flags=0
167  );
168 
169 
181  const CvMat& objectPoints,
182  const CvMat& imagePoints,
183  const CvMat& pointCounts,
184  const CvSize& imageSize,
185  CvMat& outputIntrinsicMatrix,
186  CvMat& outputDistortionCoefficients,
187  CvMat& outputRotationVectors,
188  CvMat& outputTranslationVectors
189  );
190 
191 
196  const CvMat& objectPoints,
197  const CvMat& imagePoints,
198  const CvMat& pointCounts,
199  const CvMat& intrinsicMatrix,
200  const CvMat& distortionCoefficients,
201  const bool& useExtrinsicGuess,
202  CvMat& outputRotationVectors,
203  CvMat& outputTranslationVectors
204  );
205 
206 
216  const CvMat& rotationVectors,
217  const CvMat& translationVectors,
218  const int& viewNumber,
219  CvMat& outputExtrinsicMatrix
220  );
221 
222 
239  const CvMat& rotationVectorsLeft,
240  const CvMat& translationVectorsLeft,
241  const CvMat& rotationVectorsRight,
242  const CvMat& translationVectorsRight,
243  CvMat& rotationVectorsRightToLeft,
244  CvMat& translationVectorsRightToLeft
245  );
246 
247 
259 extern "C++" NIFTKOPENCV_EXPORT void ProjectAllPoints(
260  const int& numberSuccessfulViews,
261  const int& pointCount,
262  const CvMat& objectPoints,
263  const CvMat& intrinsicMatrix,
264  const CvMat& distortionCoeffictions,
265  const CvMat& rotationVectors,
266  const CvMat& translationVectors,
267  CvMat& outputImagePoints
268  );
269 
275 extern "C++" NIFTKOPENCV_EXPORT double CalculateRPE(
276  const CvMat& projectedPoints,
277  const CvMat& goldStandardPoints
278  );
279 
286  const CvMat& objectPointsLeft,
287  const CvMat& imagePointsLeft,
288  const CvMat& pointCountsLeft,
289  const CvSize& imageSize,
290  const CvMat& objectPointsRight,
291  const CvMat& imagePointsRight,
292  const CvMat& pointCountsRight,
293  CvMat& outputIntrinsicMatrixLeft,
294  CvMat& outputDistortionCoefficientsLeft,
295  CvMat& outputRotationVectorsLeft,
296  CvMat& outputTranslationVectorsLeft,
297  CvMat& outputIntrinsicMatrixRight,
298  CvMat& outputDistortionCoefficientsRight,
299  CvMat& outputRotationVectorsRight,
300  CvMat& outputTranslationVectorsRight,
301  CvMat& outputRightToLeftRotation,
302  CvMat& outputRightToLeftTranslation,
303  CvMat& outputEssentialMatrix,
304  CvMat& outputFundamentalMatrix,
305  const bool& fixedIntrinsics = false,
306  const bool& fixedRightToLeft = false
307  );
308 
309 
316 extern "C++" NIFTKOPENCV_EXPORT std::vector<double> OutputCalibrationData(
317  std::ostream& outputStream,
318  const std::string& outputDirectoryName,
319  const std::string& intrinsicFlatFileName,
320  const CvMat& objectPoints,
321  const CvMat& imagePoints,
322  const CvMat& pointCounts,
323  const CvMat& intrinsicMatrix,
324  const CvMat& distortionCoefficients,
325  const CvMat& rotationVectors,
326  const CvMat& translationVectors,
327  const double& projectionError,
328  const int& sizeX,
329  const int& sizeY,
330  const int& cornersX,
331  const int& cornersY,
332  std::vector<std::string>& fileNames
333  );
334 
335 
342  const std::string& inputImageFileName,
343  const std::string& inputIntrinsicsFileName,
344  const std::string& inputDistortionCoefficientsFileName,
345  const std::string& outputImageFileName
346  );
347 
348 
355  const std::string& inputFileName,
356  const CvMat& intrinsicParams,
357  const CvMat& distortionCoefficients,
358  const std::string& outputFileName
359  );
360 
361 
367  const CvMat& intrinsicParams,
368  const CvMat& distortionCoefficients,
369  IplImage &image
370  );
371 
372 
378  const IplImage &mapX,
379  const IplImage &mapY,
380  IplImage &image
381  );
382 
383 
389  const IplImage &mapX,
390  const IplImage &mapY,
391  const IplImage &inputImage,
392  IplImage &outputImage
393  );
394 
395 
415  const CvMat& modelPointsIn3D,
416  const CvMat& leftCameraIntrinsic,
417  const CvMat& leftCameraDistortion,
418  const CvMat& leftCameraRotationVector,
419  const CvMat& leftCameraTranslationVector,
420  const CvMat& rightCameraIntrinsic,
421  const CvMat& rightCameraDistortion,
422  const CvMat& rightToLeftRotationMatrix,
423  const CvMat& rightToLeftTranslationVector,
424  CvMat& output2DPointsLeft,
425  CvMat& output2DPointsRight,
426  const bool& cropPointsToScreen = false,
427  const double& xLow = 0.0 , const double& xHigh = 0.0 ,
428  const double& yLow = 0.0 , const double& yHigh = 0.0 , const double& cropValue = 0.0
429  );
430 
431 
457 extern "C++" NIFTKOPENCV_EXPORT std::vector<int> ProjectVisible3DWorldPointsToStereo2D(
458  const CvMat& leftCameraWorldPointsIn3D,
459  const CvMat& leftCameraWorldNormalsIn3D,
460  const CvMat& leftCameraPositionToFocalPointUnitVector,
461  const CvMat& leftCameraIntrinsic,
462  const CvMat& leftCameraDistortion,
463  const CvMat& rightCameraIntrinsic,
464  const CvMat& rightCameraDistortion,
465  const CvMat& rightToLeftRotationMatrix,
466  const CvMat& rightToLeftTranslationVector,
467  CvMat*& outputLeftCameraWorldPointsIn3D,
468  CvMat*& outputLeftCameraWorldNormalsIn3D,
469  CvMat*& output2DPointsLeft,
470  CvMat*& output2DPointsRight,
471  const bool& cropPointsToScreen = false,
472  const double& xLow = 0.0 , const double& xHigh = 0.0 ,
473  const double& yLow = 0.0 , const double& yHigh = 0.0 , const double& cropValue = 0.0
474  );
475 
476 
488 extern "C++" NIFTKOPENCV_EXPORT void UndistortPoints(const cv::Mat& inputObservedPointsNx2,
489  const cv::Mat& cameraIntrinsics3x3,
490  const cv::Mat& cameraDistortionParams5x1,
491  cv::Mat& outputIdealPointsNx2,
492  const bool& cropPointsToScreen = false,
493  const double& xLow = 0.0 , const double& xHigh = 0.0 ,
494  const double& yLow = 0.0 , const double& yHigh = 0.0 , const double& cropValue = 0.0
495  );
496 
497 
509 extern "C++" NIFTKOPENCV_EXPORT void UndistortPoints(const std::vector<cv::Point2d>& inputObservedPoints,
510  const cv::Mat& cameraIntrinsics3x3,
511  const cv::Mat& cameraDistortionParams5x1,
512  std::vector<cv::Point2d>& outputIdealPoints,
513  const bool& cropPointsToScreen = false,
514  const double& xLow = 0.0 , const double& xHigh = 0.0 ,
515  const double& yLow = 0.0 , const double& yHigh = 0.0 , const double& cropValue = 0.0
516  );
517 
518 
530 extern "C++" NIFTKOPENCV_EXPORT void UndistortPoint(const cv::Point2d& inputObservedPoint,
531  const cv::Mat& cameraIntrinsics3x3,
532  const cv::Mat& cameraDistortionParams,
533  cv::Point2d& outputIdealPoint,
534  const bool& cropPointsToScreen = false,
535  const double& xLow = 0.0 , const double& xHigh = 0.0 ,
536  const double& yLow = 0.0 , const double& yHigh = 0.0 , const double& cropValue = 0.0
537  );
538 
539 
553 extern "C++" NIFTKOPENCV_EXPORT std::vector< std::pair < cv::Point3d , double> > TriangulatePointPairsUsingGeometry(
554  const std::vector< std::pair<cv::Point2d, cv::Point2d> >& inputUndistortedPoints,
555  const cv::Mat& leftCameraIntrinsicParams,
556  const cv::Mat& rightCameraIntrinsicParams,
557  const cv::Mat& rightToLeftRotationMatrix,
558  const cv::Mat& rightToLeftTranslationVector,
559  const double& tolerance,
560  const bool& preserveVectorSize = false
561  );
562 
567 extern "C++" NIFTKOPENCV_EXPORT std::pair< cv::Point3d, cv::Point3d > GetRay(
568  const cv::Point2d& inputUndistortedPoint,
569  const cv::Mat& cameraIntrinsicParams,
570  const double& rayLength = 1000
571  );
572 
580  const std::pair<cv::Point2d, cv::Point2d> & inputUndistortedPoints,
581  const cv::Mat& leftCameraIntrinsicParams,
582  const cv::Mat& rightCameraIntrinsicParams,
583  const cv::Mat& rightToLeftRotationMatrix,
584  const cv::Mat& rightToLeftTranslationVector
585  );
586 
591  const CvMat& leftCameraUndistortedImagePoints,
592  const CvMat& rightCameraUndistortedImagePoints,
593  const CvMat& leftCameraIntrinsicParams,
594  const CvMat& leftCameraRotationVector,
595  const CvMat& leftCameraTranslationVector,
596  const CvMat& rightCameraIntrinsicParams,
597  const CvMat& rightCameraRotationVector,
598  const CvMat& rightCameraTranslationVector,
599  CvMat& output3DPoints
600  );
601 
606 extern "C++" NIFTKOPENCV_EXPORT std::vector < mitk::WorldPoint > Triangulate (
607  const std::vector < mitk::ProjectedPointPair >& onScreenPoints,
608  const cv::Mat& leftIntrinsicMatrix,
609  const cv::Mat& leftDistortionVector,
610  const cv::Mat& rightIntrinsicMatrix,
611  const cv::Mat& rightDistorionVector,
612  const cv::Mat& rightToLeftRotationMatrix,
613  const cv::Mat& rightToLeftTranslationVector,
614  const bool& cropPointsToScreen = false,
615  const double& xLow = 0.0 , const double& xHigh = 0.0 ,
616  const double& yLow = 0.0 , const double& yHigh = 0.0 , const double& cropValue = 0.0
617  );
618 
622 extern "C++" NIFTKOPENCV_EXPORT cv::Point3d ReProjectPoint (
623  const cv::Point2d& inputUndistortedPoint, const cv::Mat& CameraIntrinsicParams);
624 
644 extern "C++" NIFTKOPENCV_EXPORT std::vector< cv::Point3d > TriangulatePointPairsUsingSVD(
645  const std::vector< std::pair<cv::Point2d, cv::Point2d> >& inputUndistortedPoints,
646  const cv::Mat& leftCameraIntrinsicParams,
647  const cv::Mat& leftCameraRotationVector,
648  const cv::Mat& leftCameraTranslationVector,
649  const cv::Mat& rightCameraIntrinsicParams,
650  const cv::Mat& rightCameraRotationVector,
651  const cv::Mat& rightCameraTranslationVector
652  );
653 
654 
663 cv::Mat_<double> InternalTriangulatePointUsingSVD(
664  const cv::Matx34d& P1,
665  const cv::Matx34d& P2,
666  const cv::Point3d& u1,
667  const cv::Point3d& u2,
668  const double& w1,
669  const double& w2
670  );
671 
672 
682  const cv::Matx34d& P1,
683  const cv::Matx34d& P2,
684  const cv::Point3d& u1,
685  const cv::Point3d& u2
686  );
687 
692 extern "C++" NIFTKOPENCV_EXPORT void GenerateFullHandeyeMatrices (const std::string& directory);
693 
694 
698 extern "C++" NIFTKOPENCV_EXPORT void LoadResult(const std::string& Filename, cv::Mat& result,
699  std::vector<double>& residuals);
700 
701 
706 extern "C++" NIFTKOPENCV_EXPORT cv::Point3f LeftLensToWorld ( cv::Point3f pointInLensCS,
707  cv::Mat& handeye, cv::Mat& tracker );
708 
709 
715 extern "C++" NIFTKOPENCV_EXPORT cv::Point3f WorldToLeftLens ( cv::Point3f pointInWorldCS,
716  cv::Mat& handeye, cv::Mat& tracker );
717 
723 extern "C++" NIFTKOPENCV_EXPORT void CropToScreen ( const std::vector <cv::Point2d>& srcPoints,
724  std::vector <cv::Point2d>& dstPoints ,
725  const double& xLow, const double& xHigh, const double& yLow, const double& yHigh,
726  const double& cropValue );
727 
728 } // end namespace
729 
730 #endif
std::vector< int > ProjectVisible3DWorldPointsToStereo2D(const CvMat &leftCameraWorldPointsIn3D, const CvMat &leftCameraWorldNormalsIn3D, const CvMat &leftCameraPositionToFocalPointUnitVector, const CvMat &leftCameraIntrinsic, const CvMat &leftCameraDistortion, const CvMat &rightCameraIntrinsic, const CvMat &rightCameraDistortion, const CvMat &rightToLeftRotationMatrix, const CvMat &rightToLeftTranslationVector, CvMat *&outputLeftCameraWorldPointsIn3D, CvMat *&outputLeftCameraWorldNormalsIn3D, CvMat *&output2DPointsLeft, CvMat *&output2DPointsRight, const bool &cropPointsToScreen, const double &xLow, const double &xHigh, const double &yLow, const double &yHigh, const double &cropValue)
Takes 3D world points, and normals, and if the normal is pointing towards camera, will project the po...
Definition: mitkCameraCalibrationFacade.cxx:1315
double CalculateRPE(const CvMat &projectedPoints, const CvMat &goldStandardPoints)
Calculates the RMS projection error.
Definition: mitkCameraCalibrationFacade.cxx:594
void CropToScreen(const std::vector< cv::Point2d > &src, std::vector< cv::Point2d > &dst, const double &xLow, const double &xHigh, const double &yLow, const double &yHigh, const double &cropValue)
Iterates through a vector of points and checks whether they are within the bounds passed...
Definition: mitkCameraCalibrationFacade.cxx:2226
void UndistortPoints(const cv::Mat &inputObservedPointsNx2, const cv::Mat &cameraIntrinsics, const cv::Mat &cameraDistortionParams, cv::Mat &outputIdealPointsNx2, const bool &cropPointsToScreen, const double &xLow, const double &xHigh, const double &yLow, const double &yHigh, const double &cropValue)
Takes image points, and undistorts them to ideal locations.
Definition: mitkCameraCalibrationFacade.cxx:1420
void CStyleTriangulatePointPairsUsingSVD(const CvMat &leftCameraUndistortedImagePoints, const CvMat &rightCameraUndistortedImagePoints, const CvMat &leftCameraIntrinsicParams, const CvMat &leftCameraRotationVector, const CvMat &leftCameraTranslationVector, const CvMat &rightCameraIntrinsicParams, const CvMat &rightCameraRotationVector, const CvMat &rightCameraTranslationVector, CvMat &output3DPoints)
C Wrapper for the other TriangulatePointPairsUsingSVD.
Definition: mitkCameraCalibrationFacade.cxx:1754
void ExtractExtrinsicMatrixFromRotationAndTranslationVectors(const CvMat &rotationVectors, const CvMat &translationVectors, const int &viewNumber, CvMat &outputExtrinsicMatrix)
The above method CalibrateSingleCameraParameters outputs a whole load of rotation and translation vec...
Definition: mitkCameraCalibrationFacade.cxx:484
void ProjectAllPoints(const int &numberSuccessfulViews, const int &pointCount, const CvMat &objectPoints, const CvMat &intrinsicMatrix, const CvMat &distortionCoeffictions, const CvMat &rotationVectors, const CvMat &translationVectors, CvMat &outputImagePoints)
Bulk method to project all points for all calibrations back to 2D, useful for validating calibration...
Definition: mitkCameraCalibrationFacade.cxx:621
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
bool CheckAndAppendPairOfFileNames(const std::string &leftFileName, const std::string &rightFileName, const int &numberCornersX, const int &numberCornersY, const double &sizeSquareMillimeters, const mitk::Point2D &pixelScaleFactor, std::vector< std::string > &successfulLeftFiles, std::vector< std::string > &successfulRightFiles)
Utility method to check and load stereo pairs of chessboards.
Definition: mitkCameraCalibrationFacade.cxx:76
void LoadImagesFromDirectory(const std::string &fullDirectoryName, std::vector< IplImage * > &images, std::vector< std::string > &fileNames)
Scans a directory for all filenames, and uses OpenCV to load images.
Definition: mitkCameraCalibrationFacade.cxx:65
cv::Point3d TriangulatePointPairUsingGeometry(const std::pair< cv::Point2d, cv::Point2d > &inputUndistortedPoint, const cv::Mat &leftCameraIntrinsicParams, const cv::Mat &rightCameraIntrinsicParams, const cv::Mat &rightToLeftRotationMatrix, const cv::Mat &rightToLeftTranslationVector)
Triangulates a single point from two 2D points by calling TriangulatePointPairsUsingGeometry().
Definition: mitkCameraCalibrationFacade.cxx:1499
Definition: ReceptorMemberCommandTest.cxx:25
std::vector< std::pair< cv::Point3d, double > > TriangulatePointPairsUsingGeometry(const std::vector< std::pair< cv::Point2d, cv::Point2d > > &inputUndistortedPoints, const cv::Mat &leftCameraIntrinsicParams, const cv::Mat &rightCameraIntrinsicParams, const cv::Mat &rightToLeftRotationMatrix, const cv::Mat &rightToLeftTranslationVector, const double &tolerance, const bool &preserveVectorSize)
Triangulates a vector of un-distorted (i.e. already correction for distortion) 2D point pairs back in...
Definition: mitkCameraCalibrationFacade.cxx:1518
GLuint GLdouble u1
Definition: glew.h:3085
void LoadResult(const std::string &FileName, cv::Mat &result, std::vector< double > &residuals)
loads a result file into a residual vector and matrix
Definition: mitkCameraCalibrationFacade.cxx:2078
bool ExtractChessBoardPoints(const cv::Mat &image, const int &numberCornersWidth, const int &numberCornersHeight, const bool &drawCorners, const double &squareSizeInMillimetres, const mitk::Point2D &pixelScaleFactor, std::vector< cv::Point2d > &corners, std::vector< cv::Point3d > &objectPoints)
Extracts the chess board points, using OpenCV routines.
Definition: mitkCameraCalibrationFacade.cxx:149
std::vector< double > OutputCalibrationData(std::ostream &os, const std::string &outputDirectoryName, const std::string &intrinsicFlatFileName, const CvMat &objectPoints, const CvMat &imagePoints, const CvMat &pointCounts, const CvMat &intrinsicMatrix, const CvMat &distortionCoeffs, const CvMat &rotationVectors, const CvMat &translationVectors, const double &projectionError, const int &sizeX, const int &sizeY, const int &cornersX, const int &cornersY, std::vector< std::string > &fileNames)
Utility method to dump output to a stream.
Definition: mitkCameraCalibrationFacade.cxx:847
void CorrectDistortionInSingleImage(const CvMat &intrinsicParams, const CvMat &distortionCoefficients, IplImage &image)
Assuming image is pre-allocated, will take the intrinsic and distortion parameters and calculate a pi...
Definition: mitkCameraCalibrationFacade.cxx:1107
GLuint64EXT * result
Definition: glew.h:12084
void ComputeRightToLeftTransformations(const CvMat &rotationVectorsLeft, const CvMat &translationVectorsLeft, const CvMat &rotationVectorsRight, const CvMat &translationVectorsRight, CvMat &rotationVectorsRightToLeft, CvMat &translationVectorsRightToLeft)
Method to take a set of rotation and translation vectors for left and right cameras, and compute transformations from right to left.
Definition: mitkCameraCalibrationFacade.cxx:529
void UndistortPoint(const cv::Point2d &inputPoint, const cv::Mat &cameraIntrinsics, const cv::Mat &cameraDistortionParams, cv::Point2d &outputPoint, const bool &cropPointsToScreen, const double &xLow, const double &xHigh, const double &yLow, const double &yHigh, const double &cropValue)
Takes an image point, and undistorts it to ideal locations, which is a C++ wrapper for the above meth...
Definition: mitkCameraCalibrationFacade.cxx:1477
void CalibrateSingleCameraExtrinsics(const CvMat &objectPoints, const CvMat &imagePoints, const CvMat &pointCounts, const CvMat &intrinsicMatrix, const CvMat &distortionCoefficients, const bool &useExtrinsicGuess, CvMat &outputRotationVectors, CvMat &outputTranslationVectors)
Calculates JUST the extrinsic parameters for a whole bunch of calibrations.
Definition: mitkCameraCalibrationFacade.cxx:414
std::vector< cv::Point3d > TriangulatePointPairsUsingSVD(const std::vector< std::pair< cv::Point2d, cv::Point2d > > &inputUndistortedPoints, const cv::Mat &leftCameraIntrinsicParams, const cv::Mat &leftCameraRotationVector, const cv::Mat &leftCameraTranslationVector, const cv::Mat &rightCameraIntrinsicParams, const cv::Mat &rightCameraRotationVector, const cv::Mat &rightCameraTranslationVector)
Triangulates a vector of un-distorted (i.e. already correction for distortion) 2D point pairs back in...
Definition: mitkCameraCalibrationFacade.cxx:1811
double CalibrateStereoCameraParameters(const CvMat &objectPointsLeft, const CvMat &imagePointsLeft, const CvMat &pointCountsLeft, const CvSize &imageSize, const CvMat &objectPointsRight, const CvMat &imagePointsRight, const CvMat &pointCountsRight, CvMat &outputIntrinsicMatrixLeft, CvMat &outputDistortionCoefficientsLeft, CvMat &outputRotationVectorsLeft, CvMat &outputTranslationVectorsLeft, CvMat &outputIntrinsicMatrixRight, CvMat &outputDistortionCoefficientsRight, CvMat &outputRotationVectorsRight, CvMat &outputTranslationVectorsRight, CvMat &outputRightToLeftRotation, CvMat &outputRightToLeftTranslation, CvMat &outputEssentialMatrix, CvMat &outputFundamentalMatrix, const bool &fixedIntrinsics, const bool &fixedRightToLeft)
Performs a stereo calibration, including all intrinsic, extrinsic, distortion co-efficients, and also outputs the rotation and translation vector between the two cameras. Now we also have an option to fix the intrinsics, and an option to fix the right to left calculation.
Definition: mitkCameraCalibrationFacade.cxx:676
void CheckConstImageSize(const std::vector< IplImage * > &images, int &width, int &height)
Iterates through the list of images, checking that the width and height are consistent.
Definition: mitkCameraCalibrationFacade.cxx:123
void GenerateFullHandeyeMatrices(const std::string &directory)
reads the handeye and r2l transforms and writes out a set of left, centre and right hand eye matrices...
Definition: mitkCameraCalibrationFacade.cxx:2099
cl_event GLbitfield flags
Definition: glew.h:3231
Derived point types to contain data for projection and analysis.
#define NIFTKOPENCV_EXPORT
Definition: niftkSequentialCpuQds.h:27
cv::Mat_< double > InternalTriangulatePointUsingSVD(const cv::Matx34d &P1, const cv::Matx34d &P2, const cv::Point3d &u1, const cv::Point3d &u2, const double &w1, const double &w2)
Don't call this: Triangulates a 3D point using SVD.
Definition: mitkCameraCalibrationFacade.cxx:2006
void ApplyDistortionCorrectionMap(const IplImage &mapX, const IplImage &mapY, const IplImage &inputImage, IplImage &outputImage)
Assumes all image buffers are pre-allocated and the same size, and applies mapX and mapY to the input...
Definition: mitkCameraCalibrationFacade.cxx:1137
cv::Point3d LeftLensToWorld(cv::Point3d PointInLensCS, cv::Mat &Handeye, cv::Mat &Tracker)
Definition: mitkCameraCalibrationFacade.cxx:2147
void UndistortImageUsingDistortionMap(const IplImage &mapX, const IplImage &mapY, IplImage &image)
Assumes all image buffers are pre-allocated and the same size, and applies mapX and mapY to image...
Definition: mitkCameraCalibrationFacade.cxx:1124
cv::Point3d ReProjectPoint(const cv::Point2d &point, const cv::Mat &IntrinsicMatrix)
Reprojects undistorted screen points to normalised points (x/z, y/z, 1.0) in lens coordinates...
Definition: mitkCameraCalibrationFacade.cxx:2215
cv::Point3d WorldToLeftLens(cv::Point3d PointInWorldCS, cv::Mat &Handeye, cv::Mat &Tracker)
Definition: mitkCameraCalibrationFacade.cxx:2181
std::pair< cv::Point3d, cv::Point3d > GetRay(const cv::Point2d &inputUndistortedPoint, const cv::Mat &cameraIntrinsicParams, const double &rayLength)
Projects a ray from un-distorted (i.e. already correction for distortion) 2D point.
Definition: mitkCameraCalibrationFacade.cxx:1691
void Project3DModelPositionsToStereo2D(const CvMat &modelPointsIn3D, const CvMat &leftCameraIntrinsic, const CvMat &leftCameraDistortion, const CvMat &leftCameraRotationVector, const CvMat &leftCameraTranslationVector, const CvMat &rightCameraIntrinsic, const CvMat &rightCameraDistortion, const CvMat &rightToLeftRotationMatrix, const CvMat &rightToLeftTranslationVector, CvMat &output2DPointsLeft, CvMat &output2DPointsRight, const bool &cropPointsToScreen, const double &xLow, const double &xHigh, const double &yLow, const double &yHigh, const double &cropValue)
Used to project 3D points into 2D locations for a stereo pair. Here, 3D model points means that the 3...
Definition: mitkCameraCalibrationFacade.cxx:1149
GLint GLint GLint GLint GLint GLint GLsizei GLsizei height
Definition: glew.h:1236
double CalibrateSingleCameraParameters(const CvMat &objectPoints, const CvMat &imagePoints, const CvMat &pointCounts, const CvSize &imageSize, CvMat &outputIntrinsicMatrix, CvMat &outputDistortionCoefficients, CvMat *outputRotationVectors, CvMat *outputTranslationVectors, const int &flags)
Calibrate a single camera's intrinsic parameters, by directly calling cvCalibrationCamera2.
Definition: mitkCameraCalibrationFacade.cxx:344
GLint GLint GLint GLint GLint GLint GLsizei width
Definition: glew.h:1236
std::vector< mitk::WorldPoint > Triangulate(const std::vector< mitk::ProjectedPointPair > &onScreenPointPairs, const cv::Mat &leftIntrinsicMatrix, const cv::Mat &leftDistortionVector, const cv::Mat &rightIntrinsicMatrix, const cv::Mat &rightDistortionVector, const cv::Mat &rightToLeftRotationMatrix, const cv::Mat &rightToLeftTranslationVector, const bool &cropPointsToScreen, const double &xLow, const double &xHigh, const double &yLow, const double &yHigh, const double &cropValue)
Wrapper to triangulate vector of mitk::ProjectedPointPair to vector of mitk::WorldPoint.
Definition: mitkCameraCalibrationFacade.cxx:1933
GLuint GLdouble GLdouble u2
Definition: glew.h:3085
double CalibrateSingleCameraUsingMultiplePasses(const CvMat &objectPoints, const CvMat &imagePoints, const CvMat &pointCounts, const CvSize &imageSize, CvMat &outputIntrinsicMatrix, CvMat &outputDistortionCoefficients, CvMat &outputRotationVectors, CvMat &outputTranslationVectors)
Calibrate a single camera's intrinsic parameters by using 3 passes, firstly with fixed principal poin...
Definition: mitkCameraCalibrationFacade.cxx:371
void LoadImages(const std::vector< std::string > &files, std::vector< IplImage * > &images, std::vector< std::string > &fileNames)
Uses OpenCV to load images.
Definition: mitkCameraCalibrationFacade.cxx:36
GLsizei const GLcharARB ** string
Definition: glew.h:5194
cv::Point3d InternalIterativeTriangulatePointUsingSVD(const cv::Matx34d &P1, const cv::Matx34d &P2, const cv::Point3d &u1, const cv::Point3d &u2)
Don't call this: Triangulates a 3D point using SVD by calling TriangulatePointUsingSVD with different...
Definition: mitkCameraCalibrationFacade.cxx:2039
GLint GLenum GLsizei GLint GLsizei imageSize
Definition: glew.h:1363
void CorrectDistortionInImageFile(const std::string &inputFileName, const CvMat &intrinsicParams, const CvMat &distortionCoefficients, const std::string &outputFileName)
Method that reads a single image (eg. png, jpg or anything that OpenCV recognises) and corrects it us...
Definition: mitkCameraCalibrationFacade.cxx:1061