SLAM
Veřejné sloty | Privátní sloty | Privátní atributy | Seznam všech členů
Dokumentace třídy LandmarkExtraction

Třída hledající důležité objekty, hrany nebo rohy. ...

#include <landmarkextraction.h>

Diagram dědičnosti pro třídu LandmarkExtraction

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
 

Detailní popis

Třída hledající důležité objekty, hrany nebo rohy.

Dokumentace k metodám

void LandmarkExtraction::addNewLine ( int  indexStart,
int  indexEnd,
qreal  m,
qreal  b,
qreal  error,
qreal  fitsR2,
area_t area 
)
privateslot

Funkce k přidávání nových hran (přímek) k oblasti area_t (y = mx + b).

Parametry
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.
void LandmarkExtraction::angleTwoVectors ( QPointF &  first,
QPointF &  second,
QPointF &  middle,
qreal &  angle 
)
privateslot

Úhel mezi dvěma vektory danými třemi body.

Parametry
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.
void LandmarkExtraction::angleTwoVectors ( QPointF &  first,
QPointF &  second,
QPointF &  middle,
qreal &  angle,
qreal &  vl,
qreal &  ul 
)
privateslot

Úhel mezi dvěma vektory danými třemi body.

Parametry
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.
void LandmarkExtraction::calculateSquareError ( area_t area,
int  indexStart,
int  indexEnd,
qreal &  ro,
qreal &  theta,
qreal &  error 
)
privateslot

Kvadratická chyba vypočítaná z přímky, která je dána vzdáleností ro a úhlem theta.

Parametry
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.
void LandmarkExtraction::calculateSquareError ( area_t area,
int  indexStart,
int  indexEnd,
qreal &  m,
qreal &  b,
qreal &  sErrorY,
qreal &  error,
qreal &  r2 
)
privateslot

Kvadratická chyba vypočítaná z přímky, která je dána rovnicí y = mx + b.

Parametry
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).
void LandmarkExtraction::cornerExtraction ( area_t area)
slot

Extrahování rohů pomocí sliding window algoritmu.

Parametry
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.

void LandmarkExtraction::editExistingLine ( int  indexStart,
int  indexEnd,
qreal  m,
qreal  b,
qreal  error,
qreal  fitsR2,
area_t area,
int  lineIndex 
)
privateslot

Funkce k editaci hran (přímek).

Pro více informací viz. addNewLine().

Parametry
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.
void LandmarkExtraction::getLineParams ( int  indexStart,
int  indexEnd,
area_t area,
qreal &  theta,
qreal &  ro 
)
privateslot

Vypočítá parametry přímky.

Parametry
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].
void LandmarkExtraction::getLineParams ( int  indexStart,
int  indexEnd,
area_t area,
qreal &  m,
qreal &  b,
qreal &  sErrorY 
)
privateslot

Vypočítá parametry přímky (y = mx + b).

Parametry
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.
void LandmarkExtraction::getNextPossibleLine ( int &  indexStart,
int &  indexEnd,
area_t area 
)
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.

Parametry
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.
qreal LandmarkExtraction::getPointsEvaluation ( qreal &  x1,
qreal &  y1,
qreal &  x2,
qreal &  y2,
qreal &  sizeHalf 
)
privateslot

Ohodnocení bodů z různých oblastí. Ještě nedokončeno, pouze pro testování.

Parametry
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.
Návratová hodnota
void LandmarkExtraction::lineEliminateError ( int  indexStart,
int  indexEnd,
qreal  fits,
area_t area 
)
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.

Parametry
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.
void LandmarkExtraction::lineExtract ( int  indexStart,
int  indexEnd,
area_t area,
qreal &  error 
)
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().

Parametry
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.
void LandmarkExtraction::lineFitting ( area_t area)
slot

Funkce začínající hledání přímek v area_t.

Parametry
area- Oblast, v které budou přímky hledány.
void LandmarkExtraction::resizeCornerArray ( int  addSize = 50)
privateslot

Realokace pole k ukládání rohů.

Parametry
addSize- Velikost o kterou se pole realokuje, defaultní hodnota je 50.
void LandmarkExtraction::searchForConnections ( area_t areaFirst,
area_t areaSecond 
)
slot

Hledání společných objektů ve dvou oblastech. Ještě není dokončeno, pouze pro testování.

Parametry
areaFirst- První oblast.
areaSecond- Druhá oblast.
void LandmarkExtraction::searchForMoreAcurateLine ( int  indexStart,
int  indexEnd,
area_t area,
qreal &  r2,
qreal &  error,
int &  actualEnd 
)
privateslot

Funkce zpřesňuje nalezenou přímku tím, že zkouší odebrat bod ze začátku nebo z konce.

Parametry
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.
void LandmarkExtraction::vectorLength ( QPointF &  first,
QPointF &  second,
qreal &  len 
)
privateslot

Délka vektoru daného dvěma body.

Parametry
first- První bod vektoru.
second- Druhý bod vektoru.
len- Vypočítaná délka.

Dokumentace k datovým členům

int LandmarkExtraction::linePointStep
private

Kolik bodů má přímka na začátku.

qreal LandmarkExtraction::maxAngle
private

Maximální úhel kdy se jedná o roh v radiánech.

qreal LandmarkExtraction::minAngle
private

Minimální úhel kdy se jedná o roh v radiánech.


Dokumentace pro tuto třídu byla generována z následujících souborů: