vrcore  0.45
visuReal Messkern
 All Classes Files Functions Variables
MeasuringMachine.h
1 #pragma once
2 
3 class Engine;
4 class MeasuringHead;
5 
6 typedef double GrooveDepth [EYE_DIRECTIONS];
7 
8 const GrooveDepth grooveDepth [GROOVE_DEPTH_CLASS] = {
9  {0.0, 0.0, 0.0, 0.0},
10  {0.5, 0.5, 0.5, 0.5},
11  {0.7, 0.7, 0.7, 0.7}
12 };
13 
15  {
16  private:
17  MeasuringMethod measuringMethod;
18  ExposureArrangement exposureArrangement;
19 
20  vr::Results results_ [GROOVE_DEPTH_CLASS][HEAD_ROTATION_COMPENSATION];
21  double headRotationCorrection_;
22  ClampFrontModel frontClampModel;
23  ClampSideModel sideClampModel[2];
24  FrontMeasuringHead frontHead;
25  SideMeasuringHead sideHead[2];
26 
27  class Feature {
28  private:
29  ClampModel* model_;
30  FrontModelIndex index_;
31  StatusInfo status_;
32  public:
33  cv::Vec2d center;
34  Feature(MeasuringMachine* machine, FrontModelIndex i);
35  bool isChanged() { return status_ == changed; };
36  void set();
37  };
38 
39  struct {
40  struct {
41  cv::Point2d center;
42  double radius;
43  } circle[LENS_TYPE];
44  cv::Point2d pixelsPerMm;
45  } lens_[LATERAL_SIDE];
46  bool lensPlanePixelsPerMmValid;
47  double diameter_[LENS_TYPE][LATERAL_SIDE];
48  StatusInfo diaStatus_[LENS_TYPE][LATERAL_SIDE];
49 
50  // Erster Lauf, nicht Neuberechnung nach Nutzereingriff.
51  bool isFrontImageAnalysisRun_;
52  vr::ComputationModel computationModel_;
53  bool computationModelValid_;
54 
55  ClampSideModel& rightClampModel();
56  ClampSideModel& leftClampModel();
57  SideMeasuringHead& rightHead();
58  SideMeasuringHead& leftHead();
59  void getPictPoint (ClampModel& clampModel, const size_t idx, cv::Vec2d& point);
60  void getPictPoint (ClampModel& clampModel, const size_t idx, double point [2]);
61  void getFramePoint (const FrontModelIndex index, vr::FramePoint<2>& p);
62  void setFramePoint (const FrontModelIndex index, const vr::FramePoint<2>& p);
63  StatusInfo mapStatusEntry (StatusInfo status) const { return status == changed ? good : status; }
64  void handleInitialisation ();
65  void handleFrontAnalyse ();
66  void handleSideAnalyses ();
67  void handleFrontDecorrection ();
68 
69  // erfordert horizontal ausgerichtetes Bild.
70  void handleProgressiveCorridorPoints (const LateralSide side);
75  void alignProgressiveCorridorBottoms ();
76  // wie oben
77  void alignProgressiveCorridorBottom (const LateralSide side);
78 
79  void handleSideDecorrections ();
80  bool handleInconsistencies ();
81  void runEngine ();
82 
83  void handleFrontCorrection ();
84  void handleSideCorrections ();
85 
86  void getFrontPicData (vr::FrontPic2D& data);
87  void getSidePicData (LateralSide side, vr::SidePic2D& data);
88  matt::Configuration getAttachmentConfiguration() const;
89  void getEngineInitValues (PhotoParams& photoValues);
90  void fixGuessedLensBoxPoints(vr::FrontPic2D& im2D);
91  void fixLensBoxPoints();
92  // margin: Sicherheitszugabe, default: 2 mm
93  void computeLensRadius(const LateralSide side, const LensType lensType);
94  //cv::Point2d computeLensCenter(const cv::Point2d& centrationPoint, const Frame<2>& lensBox, cv::Point2d& pixelsPerMm);
95  //void computeLensCenters(const cv::Point2d& centrationPoint_R, const cv::Point2d& centrationPoint_L);
96  void computeLensPlanePixelsPerMm();
97  void computeLensPlanePixelsPerMm(const vr::Frame<2>& lensBox, cv::Point2d& pixelsPerMm);
98  void requirePixelsPerMm();
99  void getLensData(const LensType lensType, const LateralSide side,
100  const vr::Measuring& measuring, const CciTransformer& transformer);
101  void getLensData(const vr::Measuring& measuring, const CciTransformer& transformer);
102  public:
103  vr::ReadingMeasurement readingMeasurement;
104  MeasuringMachine ();
105  ~MeasuringMachine ();
106 
107  void setFrontLogger (Typeable *lpLogger);
108  void setRightSideLogger (Typeable *lpLogger);
109  void setLeftSideLogger (Typeable *lpLogger);
110 
111  void vrExecute ();
112 
113  void setMeasuringMethod (const MeasuringMethod method);
114 
115  void setExposureArrangement (const ExposureArrangement exposureArrangement);
116 
117  void setHeadRotationCorrection (const double correction);
118 
119  void setBevelsOfTheLens (const double distances[2]);
120  void getBevelsOfTheLens (double distances[2]);
121  void setGlassThickness (const double glassThickness);
122  double getGlassThickness ();
123 
125  void setFrontImage (const std::string& fileName, const StatusInfo statusInfo);
126  void setFrontCameraAttitude (const double up [3]);
127  void setFrontOpticalAxis (const double axis [2]);
128  void getFrontOpticalAxis (double axis [2]);
129  StatusInfo getFrontImageStatusInfo ();
130  SubStatus getFrontSubStatus () const { return none; }
131 
132  void setResultFrontImage (const std::string& fileName, const StatusInfo statusInfo);
133  StatusInfo getResultFrontImageStatusInfo ();
134 
135  void setFrontMarkCoordinates (const double centers [5][2], const StatusInfo statusInfo [5]);
136  void getFrontMarkCoordinates (double centers [5][2], StatusInfo statusInfo [5]);
137 
138  // vormals: get/setFswMarkCoordinates
139  void setFaceFormAngleRefPoints (const double coordinates [2][2], const StatusInfo statusInfo [2]);
140  void getFaceFormAngleRefPoints (double coordinates [2][2], StatusInfo statusInfo [2]);
141 
142  void setIrisCoordinates (const double centers [2][2], const StatusInfo statusInfo [2]);
143  void getIrisCoordinates (double centers [2][2], StatusInfo statusInfo [2]);
144 
145  void setRightLensBoxCorners (const double corners [4][2], const StatusInfo statusInfo [4]);
146  void getRightLensBoxCorners (double corners [4][2], StatusInfo statusInfo [4]);
147 
148  void setRightLensBoxMarginCorners (const double corners [4][2], const StatusInfo statusInfo [4]);
149  void getRightLensBoxMarginCorners (double corners [4][2], StatusInfo statusInfo [4]);
150 
151  void setLeftLensBoxCorners (const double corners [4][2], const StatusInfo statusInfo [4]);
152  void getLeftLensBoxCorners (double corners [4][2], StatusInfo statusInfo [4]);
153 
154  void setLeftLensBoxMarginCorners (const double corners [4][2], const StatusInfo statusInfo [4]);
155  void getLeftLensBoxMarginCorners (double corners [4][2], StatusInfo statusInfo [4]);
156 
157  void setIsInfantGlassesConfig (const bool value, const StatusInfo& statusInfo);
158  bool isInfantGlassesConfig (StatusInfo& statusInfo) const;
159 
160  void setProgressiveCorridorBottoms (const double points [2][2], const StatusInfo statusInfo [2]);
161  void getProgressiveCorridorBottoms (double points [2][2], StatusInfo statusInfo [2], GrooveDepthClass grooveDepthClass);
162 
163  void setProgressiveCorridorTops (const double points [2][2], const StatusInfo statusInfo [2]);
164  void getProgressiveCorridorTops (double points [2][2], StatusInfo statusInfo [2]);
165 
166  void setLensCenters (const LensType lensType,
167  const double centers[LATERAL_SIDE][2], const StatusInfo statusInfo[LATERAL_SIDE]);
168  void getLensCenters (const LensType lensType,
169  double centers[LATERAL_SIDE][2], StatusInfo statusInfo [LATERAL_SIDE]) const;
170 
171  double getLensDiameter (const LensType lensType, const LateralSide side, StatusInfo& statusInfo);
172  void setLensDiameter (const LensType lensType, const LateralSide side, const double value, const StatusInfo& statusInfo);
173  const cv::Point2d& getPixelsPerMm (const LateralSide side);
174  vr::MetsResult& getHoyaMets (StatusInfo& statusInfo);
175  void setHoyaMets (const vr::MetsResult& mets, const StatusInfo& statusInfo);
176 
177  void setStrutLensContourIntersections (const double centers [4][2], const StatusInfo statusInfo [4]);
178  void getStrutLensContourIntersections (double centers [4][2], StatusInfo statusInfo [4]);
179 
180  void setFrontPercentageMarkMargins (const int margins [4]);
181 
182  void setFrontTransformation (const int imageSize [2], const int cutOffset [2], const double pivot[2], const double angle);
183  void getFrontTransformation (int imageSize [2], int cutOffset [2], double pivot[2], double &angle);
184 
186  void setRightSideImage (const std::string& fileName, const StatusInfo statusInfo);
187  void setRightSideOpticalAxis (const double axis [2]);
188  void getRightSideOpticalAxis (double axis [2]);
189  StatusInfo getRightSideImageStatusInfo ();
190  SubStatus getRightSideSubStatus () const { return none; }
191 
192  void setResultRightSideImage (const std::string& fileName, const StatusInfo statusInfo);
193  StatusInfo getResultRightSideImageStatusInfo ();
194 
195  void setRightSideCoordinates (const double centers [3][2], const StatusInfo statusInfo [3]);
196  void getRightSideCoordinates (double centers [3][2], StatusInfo statusInfo [3]);
197 
198  void setRightSideBoxCorners (const double corners [3][2], const StatusInfo statusInfo [3]);
199  void getRightSideBoxCorners (double corners [3][2], StatusInfo statusInfo [3]);
200 
201  void setRightSidePercentageMarkMargins (const int margins [4]);
202 
203  void setRightSideTransformation (const int imageSize [2], const int cutOffset [2], const double pivot[2], const double angle);
204  void getRightSideTransformation (int imageSize [2], int cutOffset [2], double pivot[2], double &angle);
205 
207  void setLeftSideImage (const std::string& fileName, const StatusInfo statusInfo);
208  void setLeftSideOpticalAxis (const double axis [2]);
209  void getLeftSideOpticalAxis (double axis [2]);
210  StatusInfo getLeftSideImageStatusInfo ();
211  SubStatus getLeftSideSubStatus () const { return none; }
212 
213  void setResultLeftSideImage (const std::string& fileName, const StatusInfo statusInfo);
214  StatusInfo getResultLeftSideImageStatusInfo ();
215 
216  void setLeftSideCoordinates (const double centers [3][2], const StatusInfo statusInfo [3]);
217  void getLeftSideCoordinates (double centers [3][2], StatusInfo statusInfo [3]);
218 
219  void setLeftSideBoxCorners (const double corners [3][2], const StatusInfo statusInfo [3]);
220  void getLeftSideBoxCorners (double corners [3][2], StatusInfo statusInfo [3]);
221 
222  void setLeftSidePercentageMarkMargins (const int margins [4]);
223 
224  void setLeftSideTransformation (const int imageSize [2], const int cutOffset [2], const double pivot[2], const double angle);
225  void getLeftSideTransformation (int imageSize [2], int cutOffset [2], double pivot[2], double &angle);
226 
227  std::string& getContourDetectorVersion();
228  std::string& getErrors();
230  vr::Results getResults (GrooveDepthClass grooveDepthClass, HeadRotationCompensationState headRotationCompensationState);
231  void getResults (const vr::Measuring& measuring,
232  GrooveDepthClass grooveDepthClass, HeadRotationCompensationState headRotationCompensationState);
233 
234  vr::ComputationModel getComputationModel() const {
235  assert(computationModelValid_);
236  return computationModel_;
237  }
238  void setComputationModel(vr::ComputationModel computationModel) {
239  if (!computationModelValid_) {
240  computationModel_ = computationModel;
241  computationModelValid_ = true;
242  }
243  }
244  };
245 
246 
CCI = Camera Clamp Image.
Definition: ccitransformer.h:5
Definition: MeasuringHead.h:94
Definition: aspect.h:12
void setRightSideImage(const std::string &fileName, const StatusInfo statusInfo)
Definition: MeasuringMachine.cpp:517
Definition: types.h:26
Definition: MeasuringHead.h:12
Definition: MeasuringHead.h:126
Definition: measuring.h:6
void setLeftSideImage(const std::string &fileName, const StatusInfo statusInfo)
Definition: MeasuringMachine.cpp:601
Definition: MeasuringMachine.h:14
Definition: ClampFrontModel.h:13
Definition: ClampModel.h:9
Definition: vario_inset.h:8
Definition: PhotoParams.h:27
vr::Results getResults(GrooveDepthClass grooveDepthClass, HeadRotationCompensationState headRotationCompensationState)
Definition: MeasuringMachine.cpp:1202
Definition: ClampSideModel.h:3
Definition: Processable.h:12
void setFrontImage(const std::string &fileName, const StatusInfo statusInfo)
Definition: MeasuringMachine.cpp:185