Dies ist die von Julian Mueller überarbeitete Bahnkantenregelung.

Dependencies:   TextLCD mbed

Committer:
Jules20
Date:
Tue May 31 03:06:27 2016 +0000
Revision:
0:b72d86a7b005
Committed May 2016

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jules20 0:b72d86a7b005 1 /**
Jules20 0:b72d86a7b005 2 *Funktionen zum Auslesen der Linienkamera und zur Detektion der Kante
Jules20 0:b72d86a7b005 3 *
Jules20 0:b72d86a7b005 4 *Headerdatei edge_func.h
Jules20 0:b72d86a7b005 5 *
Jules20 0:b72d86a7b005 6 *@version: 01.11.2015
Jules20 0:b72d86a7b005 7 *@author: Gustav Grether
Jules20 0:b72d86a7b005 8 */
Jules20 0:b72d86a7b005 9 #ifndef EDGE_FUNC_H
Jules20 0:b72d86a7b005 10 #define EDGE_FUNC_H
Jules20 0:b72d86a7b005 11
Jules20 0:b72d86a7b005 12 #include "mbed.h"
Jules20 0:b72d86a7b005 13 #include "interface.h"
Jules20 0:b72d86a7b005 14 #include<queue>
Jules20 0:b72d86a7b005 15
Jules20 0:b72d86a7b005 16 /**
Jules20 0:b72d86a7b005 17 * Funktion initialisiert die Werte fuer Variablen
Jules20 0:b72d86a7b005 18 * muss vor der Verwendung der Kamera ausgefuehrt werden
Jules20 0:b72d86a7b005 19
Jules20 0:b72d86a7b005 20 */
Jules20 0:b72d86a7b005 21 void sens_setup();
Jules20 0:b72d86a7b005 22 /**
Jules20 0:b72d86a7b005 23 * Funktion erzeugt einen Puls auf dem ClockPin
Jules20 0:b72d86a7b005 24 */
Jules20 0:b72d86a7b005 25 void clockPulse();
Jules20 0:b72d86a7b005 26
Jules20 0:b72d86a7b005 27 /**
Jules20 0:b72d86a7b005 28 * Funktion erzeugt einen Puls auf dem SI- und auf dem ClockPin
Jules20 0:b72d86a7b005 29 */
Jules20 0:b72d86a7b005 30 void siClkPulse();
Jules20 0:b72d86a7b005 31
Jules20 0:b72d86a7b005 32 /**
Jules20 0:b72d86a7b005 33 * Funktion liest den Sensor aus
Jules20 0:b72d86a7b005 34 * berechnet den Mittelwert der Grauwerte aus mehreren (numMeas) Messungen
Jules20 0:b72d86a7b005 35 * speichert die Werte in meanVal
Jules20 0:b72d86a7b005 36 * der Wertebereich eines Pixels ist [0,1]
Jules20 0:b72d86a7b005 37 * kontrolliert ob eine Messung fehlerhaft ist (Fehlfunktion des Sensors)
Jules20 0:b72d86a7b005 38 */
Jules20 0:b72d86a7b005 39 void read();
Jules20 0:b72d86a7b005 40
Jules20 0:b72d86a7b005 41 /**
Jules20 0:b72d86a7b005 42 * Funktion glaettet die in meanVal gespeicherten Grauwerte mit einem Gaußfilter
Jules20 0:b72d86a7b005 43 */
Jules20 0:b72d86a7b005 44 void gaussian_calc();
Jules20 0:b72d86a7b005 45
Jules20 0:b72d86a7b005 46 /**
Jules20 0:b72d86a7b005 47 * Funktion berechnet den Gradienten der Gauss gefilterten Grauwerte
Jules20 0:b72d86a7b005 48 */
Jules20 0:b72d86a7b005 49 void gradient_calc();
Jules20 0:b72d86a7b005 50
Jules20 0:b72d86a7b005 51 /**
Jules20 0:b72d86a7b005 52 * Funktion fuehrt Non-Maxima-Supression aus
Jules20 0:b72d86a7b005 53 * quantisiert den Gradienten und berechnet lokale Maxima
Jules20 0:b72d86a7b005 54 * d.h. Pixel die als Kante in Frage kommen
Jules20 0:b72d86a7b005 55 * die anderen Pixel werden "unterdrueckt"
Jules20 0:b72d86a7b005 56 */
Jules20 0:b72d86a7b005 57 void nonMaxSupr();//
Jules20 0:b72d86a7b005 58
Jules20 0:b72d86a7b005 59 /**
Jules20 0:b72d86a7b005 60 * Funktion fuehrt Plausibilitaetspruefung fuer moegliche Kantenpixel aus
Jules20 0:b72d86a7b005 61 */
Jules20 0:b72d86a7b005 62 void plausible();
Jules20 0:b72d86a7b005 63
Jules20 0:b72d86a7b005 64 /**
Jules20 0:b72d86a7b005 65 * Funktion berechnet Kantenpixel
Jules20 0:b72d86a7b005 66 * waehlt Pixel mit minimalem Gradient aus den moeglichen Kantenpixeln
Jules20 0:b72d86a7b005 67 */
Jules20 0:b72d86a7b005 68 void edgePx_calc();
Jules20 0:b72d86a7b005 69
Jules20 0:b72d86a7b005 70 /**
Jules20 0:b72d86a7b005 71 * Funktion berechnet Position (Pixel) der Kante und gibt diese zurück
Jules20 0:b72d86a7b005 72 * @return Kantenpixel
Jules20 0:b72d86a7b005 73 */
Jules20 0:b72d86a7b005 74 int edgePx_get();
Jules20 0:b72d86a7b005 75
Jules20 0:b72d86a7b005 76 #endif