vrcore  0.45
visuReal Messkern
 All Classes Files Functions Variables
MeasuringHead.h
Go to the documentation of this file.
1 #pragma once
2 
3 class MeasuringLogger;
4 class MeasuringMachine;
5 
13  {
14  friend class MeasuringMachine;
15  protected:
16  MeasuringMachine& machine_;
17  std::string imageFileName, resultImageFileName;
18  StatusInfo imageStatusInfo, resultImageStatusInfo;
19 
20  cv::Mat cameraMatrix_, distCoeffs_;
21  int calibSize_[2];
22 
23  HeadModel& headModel_;
24  ClampModel& clampModel_;
25 
26  TransformModel transModel;
27  StatusGroup processorsStatus;
28  std::vector<Processable*> pictureProcessors;
29  MeasuringLogger *lpLogger;
30 
31  void undistortImage (const ExposureArrangement exposureArrangement, cv::Mat &org, cv::Mat &cor);
32  void prepareIPad_2_zoom4 (cv::Mat &org, cv::Mat &cor);
33  void prepareScale (cv::Mat &org, cv::Mat &cor, double fHorz= 1., double fVert = 1.);
34 
35  void inverseTransformClampModel ();
36  void transformClampModel ();
37 
38  virtual void createPictureProcessors () = 0;
39  virtual bool isProfile () const = 0;
40  void resetProcessors ();
41  void deleteProcessors ();
42  std::string getLogName ();
43  bool isPointStatus (size_t idx, StatusValue status) { return headModel_.isPointStatus ((int)idx, status); }
44  void setPointStatus (size_t idx, StatusValue status) { headModel_.setPointStatus ((int)idx, status, St_Clear); }
45  void clearPointStatus (size_t idx, StatusValue status) { headModel_.clearPointStatus ((int)idx, status); }
46  bool mainMarksValid () { return headModel_.isMarkValid (markOR) && headModel_.isMarkValid (markOL) && headModel_.isMarkUseable (markOM); }
47 
48  bool ImageAnalysisDone () const;
49 
50  void markDataToClamp (const MarkImageData &markData, SolidPoint &pt);
51  void clampDataToMark (const SolidPoint &pt, MarkImageData &markData);
52 //beide Funktionen muessen Kopien / Teilkopien machen:
53  void setPhotoParams (const PhotoParams& photoValues);
54  void getPhotoParams ( PhotoParams& vals);
55  void correctImage (const ExposureArrangement exposureArrangement);
56 
57 
58  public:
59  MeasuringHead (MeasuringMachine& machine, HeadModel& headModel, ClampModel& clampModel);
60  ~MeasuringHead ();
61  void setImageValues (const std::string& fileName, const StatusInfo statusInfo);
62  void setOpticalAxis (const double axis [2]);
63  void getOpticalAxis (double axis [2]);
64  StatusInfo getImageStatusInfo () const;
65  void setResultValues (const std::string& fileName, const StatusInfo statusInfo);
66  StatusInfo getResultStatusInfo () const;
67  void setPercentageMarkMargins (const int margins [4]);
68  void setTransformation (const int imageSize [2], const int cutOffset [2], const double pivot[2], const double angle);
69  void getTransformation (int imageSize [2], int cutOffset [2], double pivot[2], double &angle);
70 
71  void setMeasuringLogger (MeasuringLogger *lpLogger) { this->lpLogger = lpLogger; }
72 
73  double getPlanarNorm (int markIdxA, int markIdxB) { return clampModel_.getPlanarNorm (markIdxA, markIdxB); }
74 
75  bool isPointValid (const size_t idx) { return isPointStatus (idx, St_Valid); }
76  void setPointValid (const size_t idx) { setPointStatus (idx, St_Valid); }
77  void setPointInValid (const size_t idx) { clearPointStatus (idx, St_Valid); }
78 
79  virtual void postAnalyse () = 0;
80 
81  virtual void analyseImage ();
82  bool readImageFile (const ExposureArrangement exposureArrangement);
83  virtual void handleCorrection (const ExposureArrangement exposureArrangement);
84  TransformModel& getTransModel () { return transModel; }
85  };
86 
87 
95  {
96  friend class MeasuringMachine;
97  private:
98  FrontHeadModel frontHeadModel_;
99  double bevelsOfTheLens [2];
100  double glassThickness;
101 
102  void setBevelsOfTheLens (const double distances[2]);
103  void getBevelsOfTheLens (double distances[2]) const;
104  void setGlassThickness (const double glassThickness);
105  double getGlassThickness ();
106  void deduceValuesFromFrame ();//calculateBevelsOfTheLens ();
107 
108  protected:
109  virtual void createPictureProcessors ();
110  virtual bool isProfile () const { return false; };
111  void getRealConstants (RealConstants& real);
112  void setEngineRealConstants (const RealConstants& real);
113  public:
114  FrontMeasuringHead (MeasuringMachine& machine, ClampModel& clampModel);
115  //bool isCoordinateFound (const size_t idx);
116  virtual void postAnalyse ();
117  const vr::FrontFeaturesSPtr& getFeatures () const { return frontHeadModel_.getFrontFeatures(); };
118  };
119 
127  {
128  protected:
129  SideHeadModel sideHeadModel_;
130  FrontMeasuringHead& frontHead_;
131  virtual void createPictureProcessors ();
132  virtual bool isProfile () const { return true; };
133  public:
134  SideMeasuringHead (MeasuringMachine& machine, LateralSide side, ClampModel& clampModel, FrontMeasuringHead& frontHead);
135  void analyseImage ();
136  void postAnalyse ();
137  void calculateSideBox (double fScale, double vertIris, double frameThickness);
138  void handleCorrection (const ExposureArrangement exposureArrangement);
139 
140  };
Definition: HeadModel.h:84
Koordinatensystemunabhängige Daten, Dinge, die innerhalb der Engine sind und defaultwerte.
Definition: RealConstants.h:5
Definition: MeasuringHead.h:94
beschreibt eine Visierbügelmarke
Definition: types.h:31
Definition: MeasuringHead.h:12
Definition: MeasuringHead.h:126
Definition: TransformModel.h:11
Definition: MeasuringMachine.h:14
Definition: MeasuringLogger.h:5
Definition: ClampModel.h:9
Definition: HeadModel.h:15
Definition: PhotoParams.h:27
Definition: HeadModel.h:161
Definition: StatusGroup.h:6