SLAM
|
Třída hledající důležité objekty, hrany nebo rohy. ...
#include <landmarkextraction.h>
Veřejné sloty | |
void | cornerExtraction (area_t &area) |
Extrahování rohů pomocí sliding window algoritmu. ... | |
void | lineFitting (area_t &area) |
Funkce začínající hledání přímek v area_t. ... | |
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í. ... | |
Privátní sloty | |
void | angleTwoVectors (QPointF &first, QPointF &second, QPointF &middle, qreal &angle) |
Úhel mezi dvěma vektory danými třemi body. ... | |
void | angleTwoVectors (QPointF &first, QPointF &second, QPointF &middle, qreal &angle, qreal &vl, qreal &ul) |
Úhel mezi dvěma vektory danými třemi body. ... | |
void | vectorLength (QPointF &first, QPointF &second, qreal &len) |
Délka vektoru daného dvěma body. ... | |
void | resizeCornerArray (int addSize=50) |
Realokace pole k ukládání rohů. ... | |
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 pouze pro testování (ještě se nevyužívají). Pokud je nalezená aproximace přímky dostatečně přesna, přidá se do pole, ale pokud je chyba velká, volá se funkce lineEliminateError(). ... | |
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ší nalezené přímky. ... | |
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 algoritmus. ... | |
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. ... | |
void | getLineParams (int indexStart, int indexEnd, area_t &area, qreal &theta, qreal &ro) |
Vypočítá parametry přímky. ... | |
void | getLineParams (int indexStart, int indexEnd, area_t &area, qreal &m, qreal &b, qreal &sErrorY) |
Vypočítá parametry přímky (y = mx + b). ... | |
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. ... | |
void | calculateSquareError (area_t &area, int indexStart, int indexEnd, qreal &m, qreal &b, qreal &sErrorY, qreal &error, qreal &r2) |
Kvadratická chyba vypočítaná z přímky, která je dána rovnicí y = mx + b. ... | |
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). ... | |
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). ... | |
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í. ... | |
Privátní atributy | |
QPointF * | corners |
int | arrayIndex |
int | cornerCount |
qreal | maxAngle |
qreal | minAngle |
int | linePointStep |
int | lineCount |
int | lineArrayCount |
Třída hledající důležité objekty, hrany nebo rohy.
|
privateslot |
Funkce k přidávání nových hran (přímek) k oblasti area_t (y = mx + b).
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index druhého bodu přímky. |
m | - Parametr přímky. |
b | - Parametr přímky. |
error | - Chyba přímky vydělená počtem bodů (počtem bodů na této přímce). Takže se jedná o vhybu na bod. |
fitsR2 | - Určuje jak dobrá je aproximace přímky v procentech. |
area | - Oblast do které bude přímka přidána. |
|
privateslot |
Úhel mezi dvěma vektory danými třemi body.
first | - První bod (začátek prvního vektoru). |
second | - Druhý bod (začátek druhého vektoru). |
middle | - Koncový bod obou vektorů. |
angle | - Vypočítaný úhel. |
|
privateslot |
Úhel mezi dvěma vektory danými třemi body.
first | - První bod (začátek prvního vektoru). |
second | - Druhý bod (začátek druhého vektoru). |
middle | - Koncový bod obou vektorů. |
angle | - Vypočítaný úhel. |
vl | - Vypočítaná délka prvního vektoru. |
ul | - Vypočítaná délka druhého vektoru. |
|
privateslot |
Kvadratická chyba vypočítaná z přímky, která je dána vzdáleností ro a úhlem theta.
area | - Oblast, v které jsou uložené body a přímky. |
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index posledního bodu přímky. |
ro | - Parametr přímky. |
theta | - Parametr přímky. |
error | - Vypočtená kvadratická chyba přímky. |
|
privateslot |
Kvadratická chyba vypočítaná z přímky, která je dána rovnicí y = mx + b.
area | - Oblast, v které jsou uložené body a přímky. |
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index posledního bodu přímky. |
m | - Parametr přímky. |
b | - Parametr přímky. |
sErrorY | - Chyba přímky vypočtena ve funkci getLineParams(). |
error | - Výsledná kvadratická chyba. |
r2 | - Vypočtená míra v procentech jak dobrá je aproximace (coefficient of determination). |
|
slot |
Extrahování rohů pomocí sliding window algoritmu.
area | - V této oblasti se hledá důležité body. |
Úhly mezi, kterými se hledá roh (minAngle, maxAngle). Distanční koeficient se používá k odhalení jestli body leží daleko od sebe.
|
privateslot |
Funkce k editaci hran (přímek).
Pro více informací viz. addNewLine().
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index druhého bodu přímky. |
m | - Parametr přímky. |
b | - Parametr přímky. |
error | - Chyba přímky vydělená počtem bodů (počtem bodů na této přímce). Takže se jedná o vhybu na bod. |
fitsR2 | - Určuje jak dobrá je aproximace přímky v procentech. |
area | - Oblast do které bude přímka přidána. |
lineIndex | - Index přímky, která má být editována. |
|
privateslot |
Vypočítá parametry přímky.
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index posledního bodu přímky. |
area | - Oblast, v které jsou uložené body a přímky. |
theta | - Úhel přímky. |
ro | - Vzdálenost přímky od počátku [0, 0]. |
|
privateslot |
Vypočítá parametry přímky (y = mx + b).
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index posledního bodu přímky. |
area | - Oblast, v které jsou uložené body a přímky. |
m | - Parametr přímky. |
b | - Parametr přímky. |
sErrorY | - Vypočtená kvadratická chyba přímky. |
|
privateslot |
Hledá další možnou přímku, začínající od předchozí tedy na indexEnd. Indexy jsou editovány dle další nalezené přímky.
indexStart | - Index prvního bodu předchozí přímky (je přepsán). |
indexEnd | - Index posledního bodu předchozí přímky (je přepsán). |
area | - Oblast s naměřenými body, kde jsou uloženy i přímky. |
|
privateslot |
Ohodnocení bodů z různých oblastí. Ještě nedokončeno, pouze pro testování.
x1 | - Souřadnice x prvního bodu. |
y1 | - Souřadnice y prvního bodu. |
x2 | - Souřadnice x druhého bodu. |
y2 | - Souřadnice y druhého bodu. |
sizeHalf | - Velikost okolí kolem bodu, zatím nepoužito. |
|
privateslot |
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 algoritmus.
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index posledního bodu přímky. |
fits | - Jak dobrá musí být výsledná aproximace r2 (teď nepoužito). |
area | - Oblast s naměřenými body, kde jsou uloženy i přímky. |
|
privateslot |
Hlavní funkce k hledání přímek, jsou zde hledány i průsečíky a jejich parametry. Průsečíky jsou zatim pouze pro testování (ještě se nevyužívají). Pokud je nalezená aproximace přímky dostatečně přesna, přidá se do pole, ale pokud je chyba velká, volá se funkce lineEliminateError().
indexStart | - Index bodu, od kterého se má začít (pro všechny naměřené body = 0). |
indexEnd | - Index koncového bodu přímky (pro začátek je to indexStart + 2). |
area | - Oblast s naměřenými body, kde jsou uloženy i přímky. |
error | - Výchozí chyba. |
|
slot |
Funkce začínající hledání přímek v area_t.
area | - Oblast, v které budou přímky hledány. |
|
privateslot |
Realokace pole k ukládání rohů.
addSize | - Velikost o kterou se pole realokuje, defaultní hodnota je 50. |
Hledání společných objektů ve dvou oblastech. Ještě není dokončeno, pouze pro testování.
areaFirst | - První oblast. |
areaSecond | - Druhá oblast. |
|
privateslot |
Funkce zpřesňuje nalezenou přímku tím, že zkouší odebrat bod ze začátku nebo z konce.
indexStart | - Index prvního bodu přímky. |
indexEnd | - Index posledního bodu přímky. |
area | - Oblast s naměřenými body, kde jsou uloženy i přímky. |
r2 | - Aktuální přesnost aproximace v procentech (pokud je přímka upravena, hodnota je změněna). |
error | - Aktuální chyba přímky (pokud je přímka upravena, hodnota je změněna). |
actualEnd | - Výsledný index koncového bodu přímky. Pokud se přímka nezlepší a zůstává stejná, hodnota se rovná indexEnd. |
|
privateslot |
Délka vektoru daného dvěma body.
first | - První bod vektoru. |
second | - Druhý bod vektoru. |
len | - Vypočítaná délka. |
|
private |
Kolik bodů má přímka na začátku.
|
private |
Maximální úhel kdy se jedná o roh v radiánech.
|
private |
Minimální úhel kdy se jedná o roh v radiánech.