vrcore  0.45
visuReal Messkern
 All Classes Files Functions Variables
ContextSensitiveValidator.h
1 #pragma once
2 
3 enum PointPairIndex
4 {
5  oben,
6  nasal,
7  temporal,
8  unten
9 };
10 
11 int faceIdxToEyeIdx(const int faceIdx, const LateralSide side);
12 
19 class ContextSensitiveValidator //machen ersma keinen Prozessor davon,
20  //denn es soll moeglich sein, Mengen von Konturen zu bewerten und nicht die
21  //2 ausgewählten.
22  //Notfalls wrappen wir mit einem: public Analyser<FrontHeadModel>
23 {
24 private:
25  Rating& ratingR;
26  Rating& ratingL;
27  CombiSystemsVector& combiStructsR;
28  CombiSystemsVector& combiStructsL;
29  const ContourDataVector& contDatasR;
30  const ContourDataVector& contDatasL;
31  MarkVector& boxPtsR;
32  MarkVector& boxPtsL;
33  cv::Vec2d ptOnSymmAxisO;
34  cv::Vec2d ptOnSymmAxisU;
35 
36  LateralSideSet result; // Sinn? Wird z.Zt. anscheinend nirgends ausgewertet...
37  FrontHeadModel *lpHeadModel;
40  int compareToKnownPoints(Combination &combi, MarkVector& boxPts, const ContourDataVector& contData, const LateralSide side);
41 #ifdef _TESTEN
42  void applyOutVec(ContourVector &testValidated, ContourVecVec &testCombinedContours,
43  std::vector<CombinationSPtr> combiStructs, MarkVector& boxesPts, const std::vector< bool> out)
44  const;
45 #else
46  void applyOutVec(std::vector< CombinationSPtr>& combiStructs, MarkVector& boxesPts, const std::vector< bool> out) const;
47 #endif
48  int removeImplausiblePoints(std::vector< bool>& out,
49  MarkVector& boxesPts, const CombiSystemsVector& combiStructs,
50  const ContourDataVector& contDatas, const LateralSide side);
51  bool mirrorBadPts(
52  MarkVector::iterator ptsR,
53  MarkVector::iterator ptsL,
54  const int badPtsIdx, const LateralSide goodSide) const;
55  double distancesLR(
56  std::vector<double>& dists,
57  std::vector<double>& angleMeasure,
58  const MarkVector::const_iterator ptsR,
59  const MarkVector::const_iterator ptsL) const;
60  double distanceLR(
61  const MarkVector::const_iterator ptsR,
62  const MarkVector::const_iterator ptsL) const;
63  double calcSplineDistance(cv::Mat& rightContSpline, cv::Mat& leftContSpline);
64  int findBestOfBadOnes(
65  cv::Vec2i& mappingIdx,
66  //irgendwann: std::vector<int>& badPtsIdx,
67  int& badPtsIdx, const LateralSide goodSide,
68  const MarkVector& boxesPtsR,
69  const MarkVector& boxesPtsL) const;
70  /*soll die Kombinationen paaren, deren Fassungspunkte plausibel nahe beieinander liegen:*/
71  void pairCombis(std::vector<cv::Vec2i>& mappingIdx, const MarkVector& boxesPtsR,
72  const MarkVector& boxesPtsL);
73 public:
74  /*Besser waere, falls ma wer n Prozessor von machen moechte, und um die Bilder konsistent zu halten:*/
76  FrontHeadModel *lpHeadModel,
77  MarkVector& boxPtsR,
78  MarkVector& boxPtsL,
79  Rating& ratingR,
80  Rating& ratingL,
81  CombiSystemsVector& combiStructsR,
82  CombiSystemsVector& combiStructsL,
83  const ContourDataVector& contDatasR,
84  const ContourDataVector& contDatasL);
85 #ifdef _TESTEN
86  virtual void operator()(ContourVector &testValidatedR, ContourVecVec &testCombinedContoursR,
87  ContourVector &testValidatedL, ContourVecVec &testCombinedContoursL);
88 #else
89  virtual void operator()();
90 #endif
91  /* Vergleichsoperator f. Paare u. Kriterium
92  */
93  double pairCrit(const cv::Vec2i& pair) const;
94  bool operator()(const cv::Vec2i& paiAr, const cv::Vec2i& pairB);
95  const LateralSideSet& getResult() const
96  {
97  return result;
98  }
99 };
Definition: HeadModel.h:84
virtual void operator()()
Definition: ContextSensitiveValidator.cpp:616
Definition: ContextSensitiveValidator.h:19
Definition: Combination.h:8
Definition: CombiSystemsVector.h:7