15 #ifndef mitkProjectPointsOnStereoVideo_h
16 #define mitkProjectPointsOnStereoVideo_h
18 #include "niftkOpenCVExports.h"
22 #include <itkObject.h>
23 #include <itkObjectFactory.h>
24 #include <mitkCommon.h>
68 void Project(mitk::VideoTrackerMatching::Pointer matcher, std::vector<double> * perturbation = NULL);
75 void SetMatcherCameraToTracker(mitk::VideoTrackerMatching::Pointer matcher);
80 void SaveProjectedCoordinates (
std::string filename);
85 void SavePointsInLeftLensCoordinates (
std::string filename);
91 void AppendWorldPointsByTriangulation
92 (std::vector< mitk::ProjectedPointPair > onScreenPointPairs,
93 std::vector < unsigned int> frameNumber , mitk::VideoTrackerMatching::Pointer matcher,
94 std::vector <double> * perturbation = NULL);
96 void SetVisualise(
bool) ;
97 void SetSaveVideo(
bool state );
98 itkSetMacro ( CorrectVideoAspectRatioByHalvingWidth,
bool );
99 itkSetMacro ( TrackerIndex,
int);
100 itkSetMacro ( ReferenceIndex,
int);
101 itkSetMacro ( DrawAxes,
bool);
102 itkSetMacro ( HaltOnVideoReadFail,
bool);
103 itkSetMacro ( DontProject,
bool);
104 itkSetMacro ( VisualiseTrackingStatus,
bool);
105 itkSetMacro ( AnnotateWithGoldStandards,
bool );
106 itkSetMacro ( WriteAnnotatedGoldStandards,
bool );
107 itkSetMacro ( WriteTrackingPositionData,
bool );
108 itkSetMacro ( WriteTrackingMatrixFilesPerFrame,
bool);
109 itkSetMacro ( AllowablePointMatchingRatio,
double);
110 itkSetMacro ( AllowableTimingError,
long long);
111 void SetLeftGoldStandardPoints ( std::vector <GoldStandardPoint>
points , mitk::VideoTrackerMatching::Pointer matcher );
112 void SetRightGoldStandardPoints ( std::vector <GoldStandardPoint > points, mitk::VideoTrackerMatching::Pointer matcher );
113 void SetGoldStandardObjects ( std::vector < mitk::PickedObject > pickedObjects );
119 void AppendWorldPoints ( std::vector< mitk::WorldPoint > points );
124 void AppendClassifierWorldPoints ( std::vector < mitk::WorldPoint > points );
128 void ClearWorldPoints ();
130 std::vector < mitk::PickedPointList::Pointer > GetPointsInLeftLensCS ();
131 std::vector < mitk::ProjectedPointPairsWithTimingError > GetProjectedPoints ();
132 itkGetMacro ( InitOK,
bool);
133 itkGetMacro ( ProjectOK,
bool);
134 itkGetMacro ( WorldToLeftCameraMatrices, std::vector < cv::Mat > );
135 itkGetMacro ( LeftProjectionErrors, std::vector < cv::Point2d > );
136 itkGetMacro ( RightProjectionErrors, std::vector < cv::Point2d > );
137 itkGetMacro ( LeftReProjectionErrors, std::vector < cv::Point3d > );
138 itkGetMacro ( RightReProjectionErrors, std::vector < cv::Point3d > );
139 itkGetMacro ( TriangulationErrors, std::vector < cv::Point3d > );
144 void CalculateProjectionErrors (
std::string outPrefix);
149 void CalculateTriangulationErrors (
std::string outPrefix);
154 void TriangulateGoldStandardPoints (
std::string outPrefix, mitk::VideoTrackerMatching::Pointer trackerMatcher);
159 itkSetMacro ( ProjectorScreenBuffer,
double);
161 itkSetMacro ( ClassifierScreenBuffer,
double);
162 itkSetMacro ( TriangulatedPointsOutName,
std::string );
163 itkSetMacro ( WorldPoints, mitk::PickedPointList::Pointer );
164 itkSetMacro ( ClassifierWorldPoints, mitk::PickedPointList::Pointer );
176 bool m_CorrectVideoAspectRatioByHalvingWidth;
182 mitk::PickedPointList::Pointer
186 int m_ReferenceIndex;
190 bool m_GoldStandardPointsClassifiedOK;
191 bool m_TriangulateOK;
193 bool m_LeftGSFramesAreEven;
194 bool m_RightGSFramesAreEven;
195 bool m_HaltOnVideoReadFail;
197 bool m_VisualiseTrackingStatus;
198 bool m_AnnotateWithGoldStandards;
199 bool m_WriteAnnotatedGoldStandards;
200 bool m_WriteTrackingPositionData;
201 bool m_WriteTrackingMatrixFilesPerFrame;
202 bool m_CorrectTrackingMatrixFileNamesForSequentialChannelSplitVideo;
203 int m_RightGSFrameOffset;
204 int m_MaxGoldStandardPointIndex;
205 int m_MaxGoldStandardLineIndex;
207 unsigned int m_StartFrame;
208 unsigned int m_EndFrame;
210 double m_ProjectorScreenBuffer;
211 double m_ClassifierScreenBuffer;
213 double m_ReprojectionErrorZLimit;
215 cv::Mat* m_LeftIntrinsicMatrix;
216 cv::Mat* m_LeftDistortionVector;
217 cv::Mat* m_RightIntrinsicMatrix;
218 cv::Mat* m_RightDistortionVector;
219 cv::Mat* m_RightToLeftRotationMatrix;
220 cv::Mat* m_RightToLeftTranslationVector;
221 cv::Mat* m_LeftCameraToTracker;
225 double m_VideoHeight;
227 std::vector < mitk::PickedPointList::Pointer > m_ProjectedPointLists;
228 std::vector < mitk::PickedPointList::Pointer > m_PointsInLeftLensCS;
232 std::vector < cv::Mat > m_WorldToLeftCameraMatrices;
235 std::vector < mitk::PickedObject > m_GoldStandardPoints;
236 std::vector < mitk::PickedObject > m_TriangulatedGoldStandardPoints;
237 mitk::PickedPointList::Pointer m_ClassifierWorldPoints;
238 std::vector < mitk::PickedPointList::Pointer >
239 m_ClassifierProjectedPointLists;
241 std::vector < cv::Point2d > m_LeftProjectionErrors;
242 std::vector < cv::Point2d > m_RightProjectionErrors;
243 std::vector < cv::Point3d > m_LeftReProjectionErrors;
244 std::vector < cv::Point3d > m_RightReProjectionErrors;
245 std::vector < cv::Point3d > m_TriangulationErrors;
247 cv::VideoCapture* m_Capture;
248 CvVideoWriter* m_LeftWriter;
249 CvVideoWriter* m_RightWriter;
251 double m_AllowablePointMatchingRatio;
253 long long m_AllowableTimingError;
295 mitk::PickedPointList::Pointer ProjectPickedPointList (
const mitk::PickedPointList::Pointer po_leftLens,
const double& screenBuffer );
300 bool TriangulateGoldStandardObjectList ( );
310 mitk::PickedPointList::Pointer TransformPickedPointListToLeftLens (
const mitk::PickedPointList::Pointer po,
const cv::Mat&
transform,
const unsigned long long& timestamp,
const int& framenumber );
316 void ClassifyGoldStandardPoints ();
319 void FindVideoData (mitk::VideoTrackerMatching::Pointer trackerMatcher);
std::vector< std::string > FindVideoData(const std::string &directory)
Definition: niftkFileHelper.cxx:443
Definition: ReceptorMemberCommandTest.cxx:25
GLuint GLenum GLenum transform
Definition: glew.h:12775
Definition: mitkProjectPointsOnStereoVideo.h:43
Takes an input video file and tracking data. The video is split into right and left channels...
Definition: mitkOpenCVPointTypes.h:172
Derived point types to contain data for projection and analysis.
#define NIFTKOPENCV_EXPORT
Definition: niftkSequentialCpuQds.h:27
GLuint GLdouble GLdouble GLint GLint const GLdouble * points
Definition: glew.h:3085
Definition: mitkOpenCVPointTypes.h:219
Definition: mitkOpenCVPointTypes.h:129
GLsizei const GLcharARB ** string
Definition: glew.h:5194