org.lego.navigation.img
Class Bilderkennung

java.lang.Object
  extended by org.lego.navigation.img.Bilderkennung

public class Bilderkennung
extends java.lang.Object

Die zentrale Bilderkennungsklasse. Damit es immer nur eine Instanz der Klasse gibt, getDefault() verwenden. Hier werden die Bilder nach Roboter und Spielsteienen durchsucht und ausgewertet. Der Übersichtlichkeit halber greift diese Klasse auf ScanNeu zurück, wo die elementareren Auswertungen stattfinden und wo das jeweils aktuelle Bild gespeichert ist.

Author:
Joachim

Field Summary
(package private)  double abstandGruenRot
           
(package private)  double abstandPosLED
           
(package private)  double abstandRotLED
           
(package private)  double deltaAbstandGR
           
(package private)  double deltaWinkel
           
 WebCamConfig webCamConfig
           
 
Method Summary
 java.awt.Image getDebugImg()
          Gibt das aktuell gespeicherte Bild zurück.
 java.awt.Image getDebugImg(int i)
          Gibt eine Ebene des HSV-Bildes zurück
static Bilderkennung getDefault()
          gibt eine Referenz zu der Bilderkennung zurück
static Bilderkennung getDefault(java.awt.Image img)
           
 Farbe getFarbe(int x, int y)
          Liefert den Farbwert (HSV) am Punkt(x, y) zurück.
 Roboterpos getRoboterpos(double posX, double posY, double quality)
          sucht auf dem Bild nach dem Roboter anhand der in der Config abgespeicherten Ellipsen-Werte für Rot und Grün.
 Roboterpos getRoboterposMitInitialisierung()
          Der Roboter wird neu initialisiert.
(package private)  ScanNeu getScan()
           
 DPoint[] getSpielfeldbegrenzung()
          liefert die Koordinaten der rosa Kreise am Spielfeldrand
 java.util.ArrayList<DPoint> getSpielpunkte(int farbe)
          Sucht sämtliche Spielpunkte auf dem Bild
 int pruefeSpielpos(DPoint p)
          Prüft, ob an der Position p ein Spielstein steht und gibt die Farbe des Spielsteines zurück
 void setDiff(int diff)
          Deprecated. 
 void updateImg(java.awt.Image img)
          Ersetzt das zu analysierende Bild durch ein aktualisiertes Bild
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

deltaWinkel

double deltaWinkel

abstandGruenRot

double abstandGruenRot

deltaAbstandGR

double deltaAbstandGR

abstandRotLED

double abstandRotLED

abstandPosLED

double abstandPosLED

webCamConfig

public WebCamConfig webCamConfig
Method Detail

getDefault

public static Bilderkennung getDefault(java.awt.Image img)

getDefault

public static Bilderkennung getDefault()
gibt eine Referenz zu der Bilderkennung zurück

Returns:
Referenz auf die Bilderkennung; null, falls nicht vorhanden und Webcam deaktiviert.

updateImg

public void updateImg(java.awt.Image img)
Ersetzt das zu analysierende Bild durch ein aktualisiertes Bild

Parameters:
img - neues Bild (AWT-Image)

getDebugImg

public java.awt.Image getDebugImg()
Gibt das aktuell gespeicherte Bild zurück.

Returns:
AWT-Image

getDebugImg

public java.awt.Image getDebugImg(int i)
Gibt eine Ebene des HSV-Bildes zurück

Parameters:
i - die Ebene: 0 = Hue, 1 = Saturation, 2 = Brightness
Returns:
das AWT-Image (Graustufen-Bild)

getRoboterposMitInitialisierung

public Roboterpos getRoboterposMitInitialisierung()
Der Roboter wird neu initialisiert. Durch An- und Ausschalten der LED kann die Position des Roboters (solange dieser nicht fährt) sehr genau ermittelt werden. Von dieser Position aus wird auch die rote und grüne Farbe, sowie die Größen der Ellipsen bestimmt und abgespeichert. Dabei wird auf den Scalefactor in der Config sowie die dort abgespeicherten Abmessungen der Ellipsen zurückgegriffen. Die Größe der LED wird ebenfalls in der zentralen Config eingestellt.

Returns:
die aktuelle Roboterposition

getRoboterpos

public Roboterpos getRoboterpos(double posX,
                                double posY,
                                double quality)
sucht auf dem Bild nach dem Roboter anhand der in der Config abgespeicherten Ellipsen-Werte für Rot und Grün.

Parameters:
posX, - posY die Position, an der der Roboter vermutet wird, kann mit übergeben werden, damit nicht das ganze Bild durchsucht werden muss.
quality - Die alte Position wird nur berücksichtigt, wenn quality = 1 ist.
Returns:
Roboterposition

getFarbe

public Farbe getFarbe(int x,
                      int y)
Liefert den Farbwert (HSV) am Punkt(x, y) zurück.


getSpielfeldbegrenzung

public DPoint[] getSpielfeldbegrenzung()
liefert die Koordinaten der rosa Kreise am Spielfeldrand

Returns:
1. zuerst die linkeObere Ecke 2. rechte obere Ecke 3. linke untere Ecke
Since:
25.09.2007

setDiff

@Deprecated
public void setDiff(int diff)
Deprecated. 


getSpielpunkte

public java.util.ArrayList<DPoint> getSpielpunkte(int farbe)
Sucht sämtliche Spielpunkte auf dem Bild

Parameters:
farbe - = 0, schwarze Spielpunkte 1, Steine Spieler 1 2, Steine Spieler 2
Returns:
die gefundenen Punkte

pruefeSpielpos

public int pruefeSpielpos(DPoint p)
Prüft, ob an der Position p ein Spielstein steht und gibt die Farbe des Spielsteines zurück

Parameters:
p - zu testende Pixelposition. Diese Position wird angepasst!! Es steht hier nacher die tatsächlich gefundene Position drin
Returns:
-1: nichts = FEHLER 0: nur Spielpunkt (schwarz) 1: Stein Spieler1 2: Stein Spieler2

getScan

ScanNeu getScan()