vrcore  0.45
visuReal Messkern
 All Classes Files Functions Variables
Combination.h
1 #pragma once
2 
3 typedef enum {
4  COMBICRIT_MORE_REL_RES,
5  COMBICRIT_SMOOTHING_DEFECT
6  } CombiCrit;
7 
9 {
10  private:
11  const size_t nSize;
13  size_t sysSize;
14  FlagVector combination;
18  ContourDataSPtr closedContourData;
19 
20  int nCombined;
21  bool bValid;
22  double arcLength, residual, maxDist;
23  double criteria[5];
24  cv::Mat approxCoords;
25  public:
26  //der hier vermutlich weg:
27  Combination (const size_t nSize_);
28  //ist speziell, andererseits wird es immer so laufen, dass er sinnvoll ist.
29  Combination (const FlagVector& combination, double arcLength);
30  ~Combination ();
31  bool isEqual (const Combination &other) const;
32  void setValid () { bValid = true; }
33  void setInvalid () { bValid = false; }
34  bool isValid () const { return bValid; }
35  bool isCombined (size_t idx) const { return idx < nSize && combination [idx]; }
36  void setCombined (size_t idx) { combination [idx] = true; }
37  void clearCombined (size_t idx) { combination [idx] = false; }
38  int getCombinedCounter () const { return nCombined; }
39  void setArcLength (double val) { arcLength = val; }
40  void setResidual (double val) { residual = val; }
41  void setSysSize (size_t val) { sysSize = val; }
42  void setMaxDistance (double val) { maxDist = val; }
43  void setCriteria (double val, int idx) { criteria[idx] = val; }
44  double getArcLength () const { return arcLength; }
45  double getResidual () const { return residual; }
46  size_t getSysSize () const { return sysSize; }
47  double getResidualPerArc () const { return arcLength > 0 ? residual / arcLength : 1; }
48  double getRelResidual () const { return sysSize > 0 ? residual / sysSize: 1;}
49  double getMaxDistance () const { return maxDist; }
50  double getCriteria ( int idx) const { return criteria[idx]; }
51  void getApproxCoords (cv::Mat &mat) const { mat = approxCoords; }
52  void setApproxCoords (cv::Mat &mat) { approxCoords = mat; }
53  FlagVector& getCombinationVector() { return combination; }
54  int countUsed () ;
55  ContourDataSPtr getClosedContour () { return closedContourData; };
56  int setClosedContour (const DoubleContourSPtr cont_, const cv::Mat &cart_c_);
57 
58  };
59 
60 typedef std::shared_ptr<Combination> CombinationSPtr;
61 
67 void combination2ClosedContour (DoubleContour& closedContour, /*const*/ Combination& combi, const ContourDataVector contDatas);
68 
69 
70 bool compareMinRelResidual (CombinationSPtr combiSysA, CombinationSPtr combiSysB) ;
71 bool compareMinMaxDistance (CombinationSPtr combiSysA, CombinationSPtr combiSysB) ;
72 bool compareCriteria1 (CombinationSPtr combiSysA, CombinationSPtr combiSysB) ;
73 bool compareCriteria2 (CombinationSPtr combiSysA, CombinationSPtr combiSysB) ;
74 bool compareApproxCoordsNorm (CombinationSPtr combiSysA, CombinationSPtr combiSysB) ;
75 
76 
Definition: Combination.h:8