NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
mitkOpenCVPointTypes.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 mitkOpenCVPointTypes_h
16 #define mitkOpenCVPointTypes_h
17 
18 #include "niftkOpenCVUtilsExports.h"
19 #include <opencv2/opencv.hpp>
20 #include <cv.h>
21 #include <itkObject.h>
22 #include <itkObjectFactory.h>
23 #include <mitkCommon.h>
25 
30 namespace mitk {
31 
32 // forward declaration
33 class GoldStandardPoint;
34 
35 extern "C++" NIFTKOPENCVUTILS_EXPORT
36 std::istream& operator>> (std::istream& is, const GoldStandardPoint& gsp );
37 
38 extern "C++" NIFTKOPENCVUTILS_EXPORT
39 bool operator < ( const GoldStandardPoint &GSP1 , const GoldStandardPoint &GSP2);
40 
44 extern "C++" NIFTKOPENCVUTILS_EXPORT
45 void PointPickingCallBackFunc ( int, int , int, int, void* );
46 
47 
52 class NIFTKOPENCVUTILS_EXPORT GoldStandardPoint
53 {
54 public:
55 
57  GoldStandardPoint(unsigned int , int, cv::Point2d);
58  GoldStandardPoint(std::istream& is);
59 
63  friend std::istream& operator>> (std::istream& is, const GoldStandardPoint& gsp );
64 
65  friend bool operator < ( const GoldStandardPoint &GSP1 , const GoldStandardPoint &GSP2);
66 
67  unsigned int m_FrameNumber;
68  int m_Index;
69  cv::Point2d m_Point;
70 };
71 
72 
76 class NIFTKOPENCVUTILS_EXPORT WorldPoint
77 {
78 public:
79 
80  WorldPoint();
81  WorldPoint(cv::Point3d, cv::Scalar);
82  WorldPoint(cv::Point3d);
83 
84  bool IsNaN ();
85 
86  cv::Point3d m_Point;
87  cv::Scalar m_Scalar;
88 };
89 
90 
94 class NIFTKOPENCVUTILS_EXPORT WorldPointsWithTimingError
95 {
96 public:
97 
99  WorldPointsWithTimingError(std::vector <mitk::WorldPoint>, long long);
100  WorldPointsWithTimingError(std::vector <mitk::WorldPoint>);
101 
102  std::vector <mitk::WorldPoint> m_Points;
103  long long m_TimingError;
104 };
105 
106 
110 class NIFTKOPENCVUTILS_EXPORT ProjectedPointPair
111 {
112 public:
114  ProjectedPointPair(cv::Point2d, cv::Point2d);
115 
116  bool LeftNaNOrInf ();
117  bool RightNaNOrInf ();
118  void SetTimeStamp(const TimeStampsContainer::TimeStamp& ts) { m_TimeStamp = ts; }
119 
120  cv::Point2d m_Left;
121  cv::Point2d m_Right;
123 };
124 
125 
129 class NIFTKOPENCVUTILS_EXPORT ProjectedPointPairsWithTimingError
130 {
131 public:
133  ProjectedPointPairsWithTimingError(std::vector <mitk::ProjectedPointPair>, long long);
134  ProjectedPointPairsWithTimingError(std::vector <mitk::ProjectedPointPair>);
135 
136  std::vector <mitk::ProjectedPointPair> m_Points;
137  long long m_TimingError;
138 };
139 
140 
145 class NIFTKOPENCVUTILS_EXPORT VideoFrame
146 {
147 public:
148 
149  VideoFrame();
150  VideoFrame(cv::VideoCapture* capture, std::ifstream* frameMapLogFile);
151 
152  itkGetMacro (VideoData, cv::Mat);
153  itkGetMacro (TimeStamp, unsigned long long);
154 
155  bool WriteToFile (std::string prefix);
156  void OutputVideoInformation (cv::VideoCapture* capture);
157 
158 private:
159 
160  cv::Mat m_VideoData;
161  unsigned long long m_TimeStamp;
162  bool m_Left;
163 
164  unsigned int m_FrameNumber;
165  unsigned int m_SequenceNumber;
166  unsigned int m_Channel;
167 };
168 
172 class NIFTKOPENCVUTILS_EXPORT PickedObject
173 {
174  public:
175 
176  int m_Id;
177  bool m_IsLine;
178  std::vector < cv::Point3d > m_Points;
179  unsigned int m_FrameNumber;
180  unsigned long long m_TimeStamp;
182  cv::Scalar m_Scalar;
183 
184  PickedObject();
185  PickedObject(std::string channel, unsigned int framenumber, unsigned long long timestamp, cv::Scalar scalar);
186  PickedObject(const GoldStandardPoint& gsp, const unsigned long long& timestamp); //cast a gold standard point to a PickedObject
187  ~PickedObject();
188 
194  bool HeadersMatch ( const PickedObject& otherPickedObject, const long long& allowableTimingError = 20e6) const;
195 
201  double DistanceTo ( const PickedObject& otherPickedObject, cv::Point3d& deltas, const long long& allowableTimingError = 20e6) const;
202 
206  PickedObject CopyByHeader () const;
207 
208 };
209 
210 std::istream& operator >> ( std::istream& is, PickedObject& po);
211 std::ostream& operator << ( std::ostream& os, const PickedObject& po);
212 
213 extern "C++" NIFTKOPENCVUTILS_EXPORT bool operator < ( const PickedObject &PO1 , const PickedObject &PO2);
214 
219 class NIFTKOPENCVUTILS_EXPORT PickedPointList : public itk::Object
220 {
221 public:
222  mitkClassMacroItkParent(PickedPointList, itk::Object)
223  itkNewMacro(PickedPointList)
224 
225  void PutOut (std::ofstream& os);
226  void AnnotateImage (cv::Mat& image);
227  cv::Mat CreateMaskImage ( const cv::Mat& image);
228 
229  void SetInLineMode (const bool& mode);
230  void SetInOrderedMode ( const bool& mode);
231  bool GetIsModified();
232  itkSetMacro (FrameNumber, unsigned int);
233  itkGetConstMacro (FrameNumber, unsigned int);
234  itkSetMacro (Channel, std::string);
235  itkGetMacro (Channel, std::string);
236  itkSetMacro (TimeStamp, unsigned long long);
237  itkGetMacro (TimeStamp, unsigned long long);
238  itkSetMacro (XScale, double);
239  itkSetMacro (YScale, double);
240  std::vector <mitk::PickedObject> GetPickedObjects() const;
241  void SetPickedObjects ( const std::vector < mitk::PickedObject > & objects );
242 
243  unsigned int GetListSize() const;
244  unsigned int GetNumberOfPoints() const;
245  unsigned int GetNumberOfLines() const;
246  void ClearList();
247 
248  unsigned int AddPoint (const cv::Point2i& point);
249  unsigned int AddPoint (const cv::Point3d& point, cv::Scalar scalar);
250  unsigned int RemoveLastPoint ();
251  unsigned int SkipOrderedPoint ();
252 
257  void AddDummyPointIfNotPresent ( const mitk::PickedObject& target );
258 
259  mitk::PickedPointList::Pointer CopyByHeader();
260 
261 protected:
262  PickedPointList();
263  virtual ~PickedPointList();
264 
265  PickedPointList (const PickedPointList&); // Purposefully not implemented.
266  PickedPointList& operator=(const PickedPointList&); // Purposefully not implemented.
267 
268 private:
269  bool m_InLineMode;
270  bool m_InOrderedMode;
271  bool m_IsModified;
272  double m_XScale; // When adding points, we can scale the x pixel location
273  double m_YScale; // When adding points, we can scale the y pixel location
274 
275  unsigned long long m_TimeStamp;
276  unsigned int m_FrameNumber;
277  std::string m_Channel;
278  std::vector < PickedObject > m_PickedObjects;
279  int GetNextAvailableID ( bool ForLine );
280 };
284 cv::Point2i NIFTKOPENCVUTILS_EXPORT Point3dToPoint2i (const cv::Point3d& point);
285 
286 } // end namespace
287 
288 #endif
289 
290 
291 
bool IsNaN(const cv::Point2d &point)
check if point has a NaN value
Definition: mitkOpenCVMaths.cxx:2270
cv::Point2d m_Point
Definition: mitkOpenCVPointTypes.h:69
std::vector< cv::Point3d > m_Points
Definition: mitkOpenCVPointTypes.h:178
cv::Scalar m_Scalar
Definition: mitkOpenCVPointTypes.h:182
std::string m_Channel
Definition: mitkOpenCVPointTypes.h:181
Definition: mitkOpenCVPointTypes.h:110
int CreateMaskImage(arguments &args)
Creates a mask using the ROI specified by the input image.
Definition: niftkCreateMaskImage.cxx:79
bool operator<(const GoldStandardPoint &GSP1, const GoldStandardPoint &GSP2)
Definition: mitkOpenCVPointTypes.cxx:125
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
long long m_TimingError
Definition: mitkOpenCVPointTypes.h:103
unsigned long long TimeStamp
Definition: mitkTimeStampsContainer.h:34
Definition: ReceptorMemberCommandTest.cxx:25
cv::Point2d m_Left
Definition: mitkOpenCVPointTypes.h:120
cv::Scalar m_Scalar
Definition: mitkOpenCVPointTypes.h:87
GLenum mode
Definition: glew.h:2404
Definition: mitkOpenCVPointTypes.h:52
TimeStampsContainer::TimeStamp m_TimeStamp
Definition: mitkOpenCVPointTypes.h:122
Definition: mitkOpenCVPointTypes.h:172
cv::Point2d m_Right
Definition: mitkOpenCVPointTypes.h:121
unsigned int m_FrameNumber
Definition: mitkOpenCVPointTypes.h:179
std::istream & operator>>(std::istream &is, GoldStandardPoint &GSP)
Definition: mitkOpenCVPointTypes.cxx:91
Definition: mitkOpenCVPointTypes.h:145
void AddPoint(const Point2DType &cornerPointInImageSpace, const int &numberPixelsX, const double &pixSize, const double &maxPhi, const double &phiInRadians, const double &probeRadius, const double &weight, vtkPoints *points, vtkDoubleArray *normals, vtkDoubleArray *weights, vtkCellArray *vertices)
Definition: niftkMakeLapUSProbeBasicModel.cxx:109
int m_Id
Definition: mitkOpenCVPointTypes.h:176
cv::Point2i Point3dToPoint2i(const cv::Point3d &point)
a function to cast a point3d to a point2i, checks that z is zero, throws an error is not ...
Definition: mitkOpenCVPointTypes.cxx:1006
int m_Index
Definition: mitkOpenCVPointTypes.h:68
void SetTimeStamp(const TimeStampsContainer::TimeStamp &ts)
Definition: mitkOpenCVPointTypes.h:118
unsigned int m_FrameNumber
Definition: mitkOpenCVPointTypes.h:67
unsigned long long m_TimeStamp
Definition: mitkOpenCVPointTypes.h:180
long long m_TimingError
Definition: mitkOpenCVPointTypes.h:137
std::vector< mitk::WorldPoint > m_Points
Definition: mitkOpenCVPointTypes.h:102
Definition: mitkOpenCVPointTypes.h:219
Definition: mitkOpenCVPointTypes.h:94
Definition: mitkOpenCVPointTypes.h:129
std::ostream & operator<<(std::ostream &os, const PickedObject &po)
std::vector< mitk::ProjectedPointPair > m_Points
Definition: mitkOpenCVPointTypes.h:136
bool m_IsLine
Definition: mitkOpenCVPointTypes.h:177
void PointPickingCallBackFunc(int event, int x, int y, int flags, void *userdata)
a call back function for dealing with PickedPointLists
Definition: mitkOpenCVPointTypes.cxx:983
cv::Point3d m_Point
Definition: mitkOpenCVPointTypes.h:86
GLsizei const GLcharARB ** string
Definition: glew.h:5194
GLenum target
Definition: glew.h:5584
Definition: mitkOpenCVPointTypes.h:76