SLAM
landmarkextraction.h
1 #ifndef LANDMARKEXTRACTION_H
2 #define LANDMARKEXTRACTION_H
3 
4 #include <QObject>
5 #include <QPointF>
6 
7 #include "datastructures.h"
8 
12 class LandmarkExtraction : public QObject
13 {
14  Q_OBJECT
15 
16 public:
18 
19 public slots:
20  void cornerExtraction(area_t &area);
21  void lineFitting(area_t &area);
22  void searchForConnections(area_t &areaFirst, area_t &areaSecond);
23 
24 private slots:
25  void angleTwoVectors(QPointF &first, QPointF &second, QPointF &middle, qreal &angle);
26  void angleTwoVectors(QPointF &first, QPointF &second, QPointF &middle, qreal &angle, qreal &vl, qreal &ul);
27  void vectorLength(QPointF &first, QPointF &second, qreal &len);
28  void resizeCornerArray(int addSize = 50);
29  void lineExtract(int indexStart, int indexEnd, area_t &area, qreal &error);
30  void getNextPossibleLine(int &indexStart, int &indexEnd, area_t &area);
31  void lineEliminateError(int indexStart, int indexEnd, qreal fits, area_t &area);
32  void searchForMoreAcurateLine(int indexStart, int indexEnd, area_t &area, qreal &r2, qreal &error, int &actualEnd);
33  void getLineParams(int indexStart, int indexEnd, area_t &area, qreal &theta, qreal &ro);
34  void getLineParams(int indexStart, int indexEnd, area_t &area, qreal &m, qreal &b, qreal &sErrorY);
35  void calculateSquareError(area_t &area, int indexStart, int indexEnd, qreal &ro, qreal &theta, qreal &error);
36  void calculateSquareError(area_t &area, int indexStart, int indexEnd, qreal &m, qreal &b, qreal &sErrorY, qreal &error, qreal &r2);
37  void addNewLine(int indexStart, int indexEnd, qreal m, qreal b, qreal error, qreal fitsR2, area_t &area);
38  void editExistingLine(int indexStart, int indexEnd, qreal m, qreal b, qreal error, qreal fitsR2, area_t &area, int lineIndex);
39 
40  qreal getPointsEvaluation(qreal &x1, qreal &y1, qreal &x2, qreal &y2, qreal &sizeHalf);
41 
42 private:
43  QPointF *corners;
44  int arrayIndex;
45  int cornerCount;
46  qreal maxAngle;
47  qreal minAngle;
49  int lineCount;
50  int lineArrayCount;
51 };
52 #endif // LANDMARKEXTRACTION_H
qreal maxAngle
Definition: landmarkextraction.h:46
void cornerExtraction(area_t &area)
Extrahování rohů pomocí sliding window algoritmu.
Definition: landmarkextraction.cpp:26
void vectorLength(QPointF &first, QPointF &second, qreal &len)
Délka vektoru daného dvěma body.
Definition: landmarkextraction.cpp:127
void calculateSquareError(area_t &area, int indexStart, int indexEnd, qreal &ro, qreal &theta, qreal &error)
Kvadratická chyba vypočítaná z přímky, která je dána vzdáleností ro a úhlem theta.
Definition: landmarkextraction.cpp:477
Hlavní struktura aplikace. V této struktůře jsou uložena všechna naměřená data a představuje jednu ot...
Definition: datastructures.h:71
void getNextPossibleLine(int &indexStart, int &indexEnd, area_t &area)
Hledá další možnou přímku, začínající od předchozí tedy na indexEnd. Indexy jsou editovány dle další ...
Definition: landmarkextraction.cpp:294
void getLineParams(int indexStart, int indexEnd, area_t &area, qreal &theta, qreal &ro)
Vypočítá parametry přímky.
Definition: landmarkextraction.cpp:405
void lineExtract(int indexStart, int indexEnd, area_t &area, qreal &error)
Hlavní funkce k hledání přímek, jsou zde hledány i průsečíky a jejich parametry. Průsečíky jsou zatim...
Definition: landmarkextraction.cpp:202
void angleTwoVectors(QPointF &first, QPointF &second, QPointF &middle, qreal &angle)
Úhel mezi dvěma vektory danými třemi body.
Definition: landmarkextraction.cpp:89
void lineEliminateError(int indexStart, int indexEnd, qreal fits, area_t &area)
Funkce snažící se snižit chybu přímky tím, že ji rozdělí na více přímek, stejně jako split and merge ...
Definition: landmarkextraction.cpp:320
Třída hledající důležité objekty, hrany nebo rohy.
Definition: landmarkextraction.h:12
qreal minAngle
Definition: landmarkextraction.h:47
void resizeCornerArray(int addSize=50)
Realokace pole k ukládání rohů.
Definition: landmarkextraction.cpp:72
int linePointStep
Definition: landmarkextraction.h:48
void searchForConnections(area_t &areaFirst, area_t &areaSecond)
Hledání společných objektů ve dvou oblastech. Ještě není dokončeno, pouze pro testování.
Definition: landmarkextraction.cpp:510
qreal getPointsEvaluation(qreal &x1, qreal &y1, qreal &x2, qreal &y2, qreal &sizeHalf)
Ohodnocení bodů z různých oblastí. Ještě nedokončeno, pouze pro testování.
Definition: landmarkextraction.cpp:595
void searchForMoreAcurateLine(int indexStart, int indexEnd, area_t &area, qreal &r2, qreal &error, int &actualEnd)
Funkce zpřesňuje nalezenou přímku tím, že zkouší odebrat bod ze začátku nebo z konce.
Definition: landmarkextraction.cpp:361
void lineFitting(area_t &area)
Funkce začínající hledání přímek v area_t.
Definition: landmarkextraction.cpp:184
void addNewLine(int indexStart, int indexEnd, qreal m, qreal b, qreal error, qreal fitsR2, area_t &area)
Funkce k přidávání nových hran (přímek) k oblasti area_t (y = mx + b).
Definition: landmarkextraction.cpp:143
void editExistingLine(int indexStart, int indexEnd, qreal m, qreal b, qreal error, qreal fitsR2, area_t &area, int lineIndex)
Funkce k editaci hran (přímek).
Definition: landmarkextraction.cpp:169