vrcore  0.45
visuReal Messkern
 All Classes Files Functions Variables
front_features.h
Go to the documentation of this file.
1 #ifndef VR_FRONT_FEATURES_H
2 #define VR_FRONT_FEATURES_H
3 
8 namespace vr
9 {
10 
11 class CoordinateTransformation;
12 
21 {
22  void checkIrisResult(const LateralSide side, int& result,
23  CircleImageData& irisData);
24  void ffaMarkChanged(const LateralSide side);
25  bool locateMainMarks(const cv::Mat& image, const bool faceFound);
26  void locateFfaMarks(const cv::Mat& image);
27  void locateIrises(const cv::Mat& image);
28  void locateFace(const cv::Mat& image);
29  void locateEye(const cv::Mat& image, const LateralSide side);
30  cv::Rect getScaledPeakMarkRoi() const;
31  cv::Rect getScaledEyeRoi(const LateralSide side) const;
32  cv::Rect getScaledIrisRoi(const LateralSide side) const;
33  cv::Rect getPupilVicinity(const LateralSide side, const float margin) const;
34  cv::Point3f getGuessedPupil(const LateralSide side) const;
35  inline bool isFrontCameraImage() const {
36  switch (arrangement_) {
37  case iPad_4_front:
38  case iPad_Air_front:
39  case iPad_mini_3_front:
40  return true;
41  default:
42  return false;
43  }
44  }
45  // Zeiger, damit Feature-Toolbox CoordinateTransformation nicht veröffentlichen muß.
46  CoordinateTransformation* scaledTransformation_;
47  CoordinateTransformation* transformation_;
48  cv::CascadeClassifier& faceCascade_;
49  cv::CascadeClassifier& eyeCascade_;
50  // Rotations- und Translationsvektor aus cv::solvePnP();
51  // Argumente für cv::projectPoints().
52  const ExposureArrangement arrangement_;
53  float pixelsPerMm_;
54  FeatureStatus status_;
55  cv::Rect mainMarkRoi_;
56  cv::Rect peakMarkRoi_;
57  cv::Rect eyeRoi[LATERAL_SIDE];
58  cv::Rect irisRoi[LATERAL_SIDE];
59  cv::Rect ffaRoi[LATERAL_SIDE];
60  cv::Vec3d ffaMark3d[LATERAL_SIDE];
61 protected:
62  void centerChanged(Feature& feature);
63  void computeTrafo();
64 public:
68  Mark mainMark[LATERAL_SIDE];
72  Mark peakMark;
76  Mark faceFormAngleMark[LATERAL_SIDE];
80  CircularFeature iris[LATERAL_SIDE];
81  AreaFeature face;
82  AreaFeature eye[LATERAL_SIDE];
83 
84  FrontFeatures(const ExposureArrangement arrangement,
85  cv::CascadeClassifier& faceCascade,
86  cv::CascadeClassifier& eyeCascade);
87  FrontFeatures(const FrontFeatures& src);
88  FrontFeatures(FrontFeatures&& src) noexcept;
89  ~FrontFeatures() noexcept;
90  void setContainer();
91  inline const CoordinateTransformation& getTrafo() const { return *transformation_; };
98  inline FeatureStatus getStatus() const { return status_; };
99  inline void setStatus(const FeatureStatus status) { status_ = status; };
105  bool isInfantConfiguration(FeatureStatus& status);
114  bool locate(const cv::Mat& image);
118  inline float getScaledPixelsPerMm() const { return pixelsPerMm_; }
119  inline float getPixelsPerMm() const { return pixelsPerMm_ * scaleFactor_; }
123  void reset();
128  double getFaceFormAngle(LateralSide side) const;
129 // ab hier zu Debugzwecken
130  cv::Rect getEyeRoi(LateralSide side) { return scaledRect(eyeRoi[side], scaleFactor_); };
131  cv::Rect getMainMarksRoi() { return scaledRect(mainMarkRoi_, scaleFactor_); };
132  cv::Rect getPeakMarkRoi() { return scaledRect(peakMarkRoi_, scaleFactor_); };
133  cv::Rect getIrisRoi(LateralSide side) { return scaledRect(irisRoi[side], scaleFactor_); };
134  cv::Rect getFfaRoi(LateralSide side) { return scaledRect(ffaRoi[side], scaleFactor_); };
135  const cv::Vec3d& getFfaMark3d(LateralSide side) const { return ffaMark3d[side]; };
136 };
137 
138 typedef std::shared_ptr<FrontFeatures> FrontFeaturesSPtr;
139 
140 }
141 
142 #endif // VR_FRONT_FEATURES_H
double getFaceFormAngle(LateralSide side) const
gibt Fassungsscheibenwinkel zurück, z.Zt. ohne Anlagekorrektur.
Definition: front_features.cpp:273
Repräsentiert eine Marke des Meßaufsatzes (aka Meßbügel) im Bild.
Definition: features.h:168
float getScaledPixelsPerMm() const
ungefähre Pixel/millimeter in Bügelentfernung.
Definition: front_features.h:118
Definition: front_features.h:20
bool isInfantConfiguration(FeatureStatus &status)
Ist der Bügel für Kinderbrillen konfiguriert?
Definition: front_features.cpp:125
Definition: features.h:68
FeatureStatus getStatus() const
Status der Feature-Suche in der Frontalaufnahme.
Definition: front_features.h:98
void reset()
Setzt den Status der Features zurück auf todo
Definition: front_features.cpp:390
Definition: features.h:214
Definition: features.h:26
Definition: coord_transform.h:19
Repräsentiert ein kreisförmiges Feature.
Definition: features.h:124
Definition: types.h:21
bool locate(const cv::Mat &image)
Sucht alle Features im Frontbild.
Definition: front_features.cpp:137