Dienstag, 16. Dezember 2008

Bilderkennung (Protokoll

4.12.2008
-Bild in SW wandeln als "Maske", dann Arithmetisch zum Farbbild addieren.
Übrig bleiben nur relevante Bereiche. Wie haben wir das gemacht ??

1. Aufteilen in Einzelfarben
2. Bild nur mit Blaukomponenten verwenden
3. Schwellwert anwenden -> Schwarz/Weiß-Bild (Process->Threshold->Manual)
4. Bild in RGB-wandeln (Image->Colorspace->RGB)
5. Nun habe ich sozusagen eine Schablone fuer die Blueten erstellt
6. Ein logisches verknuepfen des Originalbildes mit der Schablone durch ein AND
erzeugt ein Bild in dem nur die Blueten zu sehen sind.(Process->logic->And)

Farb und SW-Bild durch logisches AND verknuepfen:

Farbbild 1 SW-Bild 2
------------- -------------
|RGB| |RGB| |RGB|...|RGB|
------------- -------------
| | | | | | | |
------------- -------------
|RGB| | | |RGB| | |
------------- -------------

RGB Werte des Farbbildes koennen alle Farben (kompl. Fabpallette) beinhalten
RGB Werte des SW-Bildes bestehen nur aus Weiß (RGB->FF FF FF) oder Schwarz (RGB->00 00 00)

Farbbild 1 AND SW-Bild 2: RGB1 AND FF FF FF -> RGB1 ( Farbe AND Weiss = Farbe)
oder RGB1 AND 00 00 00 -> 00 00 00 ( Farbe AND Schwarz = Schwarz)


Interlace Split FEHLT NOCH !!!!!!!!!!!!!!!!!!!!!!!!!
erode & shrink -> noise eleminieren

Filter
------
Was möchte ich durch den Einsatz von Filtern erreichen:
Filter sind Verfahren zur Extraktion von Information aus den Ursprungsdaten: z. B.
Bewegungsbestimmung, Bildsegmentierung, Bilderkennung und Mustererkennung.
Die Operationen, die ein Eingangsbild mit Hilfe einer mathematischen Abbildung in ein
Ausgabebild überführen, heißen Filter.
(Quelle:http://de.wikipedia.org/wiki/Bildverarbeitung)

Erst mal einige Begriffe:
Convolution: Veraendern von Pixeln in Abhaengigkeit von Nachbarpixel
Correlation: auffinden von bekanten Mustern
Hochpass: laesst hohe Frequenzen passieren -> Kantenhervorhebung z.B. sobel-Filter
Tiefpass: laesst tiefe Frequenzen passieren -> Glättung z.B. Gauß-Filter
Filter (Hochpass, Tiefpass) unterscheiden sich in der Gewichtung der Nachbarpixel
Für die folgenden Erläuterungen wurden ein Bild mit Gitterlinien und Punkten erstellt
( siehe http://elearning.fh-frankfurt.de/course/view.php?id=148:Bild Gitter und Punkte)

Sobel-Filter (Imlab:Process->Filter Convolve Kernel->Sobel)
Filter zur Kantenhervorhebung
-------------
| 1 | 2 | 1 | Matrix eines Sobel Filters ( Convolution Kernel )
-------------
| 0 | | 0 | M1
-------------
|-1 |-2 |-1 |
-------------

Anwendung Sobel-Filter M1 auf Gitterlinien-Punkte-Bild
Ergebniss: Vertikale Linien werden gefiltert, nicht mehr sichtbar
Horizontale Linien bleiben sichtbar ( unverändert !?!)
Punkte werden optisch horizontal gestreckt.

-------------
| 1 | 0 |-1 | Matrix des um 90Grad nach links gedrehten
-------------
| 2 | 0 | -2 | Sobel Filters
-------------
| 1 | 0 |-1 | M2
-------------

Sobel -FilterM1 auf Gitterlinien-Punkte-Bild anwenden
Sobel-Filter M2 auf Gitterlinien-Punkte-Bild anwenden
Sobel-Filter M1 um 90Grad nach rechts gedreht auf Gitterlinien-Punkte-Bild anwenden
Ergebniss: Sobel Operation legt Rahmen um Kanten

Prewitt-Filter (Imlab:Process->Filter Convolve Kernel->Prewitt)
Vertikale Signale werden " mehr" gefiltert.
-------------
| 1 | 1 | 1 | Matrix eines Prewitt Filters ( Convolution Kernel )
-------------
| 0 | 0 | 0 | M3
-------------
|-1 |-1 |-1 |
-------------

Gauss-Filter
(Imlab:Process->Filter Convolve Kernel->gaussian)
-------------
| 1 | 2 | 1 | Matrix eines 3 x 3 Gauss Filters ( Convolution Kernel )
-------------
| 2 | 4 | 4 | M4
-------------
| 1 | 2 | 1 |
-------------

Wie wird gefiltert
Eine Sobel-Filter (M1:3 x 3 Pixel) wird über ein Raster/Pixel-Bilde"geschoben"

Ausgangsbild
--------------
| 1 | 2 | 2 | 1 |
-------------
| 3 | 0 | 0 | 1 |
--------------
| 1 | 2 | 1 | 1 |
--------------
| 2 | 1 | 3 | 1 |
--------------

Ergebnis
-------------
| 1 | 2 | 2 | 1 | A=1x1+2x2+1x2-1x1-2x2-1x1=1
-------------- B=1x2+2x2+1x1-1x2-2x1-1x1=2
| 3 | A | B | 1 | C=1x3+2x1+1x2-1x2-2x1-1x3=0
-------------- usw.
| 1 | C | D | 1 |
--------------
| 2 | 1 | 3 | 1 |
--------------


Ob die Raendwerte veraendert werden haengt davon ab man den Filter von einer Seite in das Bildreinlaufen laesst, oder ob ich im Bild links ober beginne !!

Was bedeutet ein negativer Wert Ergebnisbild???????

Eindimensionale Filterung:

Sobel Filter
Kantenanhebung

Signal 1 1 1 3 3 1 1

Filter 1 -1 ->

Ergebnis -1 0 0 -2 0 2 0


Gauss Filter Tiefpass
Glaettung

Signal 1 1 1 3 3 1 1

Filter 1 2 1 ->

Ergebnis 1 3 4 6 9 10 6


Mathematische Darstellung
Pixelbild Convolutionsmatrix oder Kernelmatrix oder Filtermatrix
|| ||
\/ \/

f(x,y) * g(x,y) = f'(x,Y) * = Convolution

||
\/

F(x,y) x G(x,y) = F'(x,y) x = Multiplikation

/\ /\
|| ||

Frequenzen x Filter

Mittwoch, 26. November 2008

Bilderkennung (Kurzprotokoll der Veranstalltungen)

Kleine Imlab-Kunde

Imlab starten-

File->open-> Skyline Bild öffnen
Process-> Color Components - > Split Components
Aus dem Farb Bild werden Graustufen -Bilder erstellt.
Die Grau-Werte der einzellnen Bilder entsprechen der Farbintensität der
einzelnen R/G/B (Rot/Grün/Blau) Farben.

Matrix-Symbol (links neben 3D Symbol) -> öffnet eine Matrix in der für jedes Pixel der jeweilige Farbwert in HEx gelistet ist.

Wird diese Matrix für das Farbbild erstellt, werden für jedes Pixel die RGB Werte (3 Werte/ Pixel) gelistet.

View -> New Histogram: zeigt die Farbverteilung der Diagramm
Einsatz: ???? Hier war was mit Center Window/ Röntenaufnahmen ist noch unklar!!!

Process -> Size -> Crop: Schneidet definierten Bereich aus
Process -> Size -> insert: fügt definierten Bereich aus einem Bild in ein anderes ein

Effekte:
Process -> Geometrik ->Interlace Split: entfernt jede 2.horizontale Zeile
Process -> Geometric -> Radial: Bild wird vom Mittelpunkt aus "gerundet
Process -> Geometric -> swirl : Um den Mittelpunkt "verswirlen"
Process -> Geometric -> Flip : vertikal Spiegeln
Process -> Geometric -> Miror : Horizontal Spiegeln

Arithm. Operationen:
Process -> Arithmetik (unary): Verändern der Pixelwerte durch Math. Funktionen (Sqrt,Invert.,Log...)
Process -> Arithmetik : Pixelwerte von 2 Bildern arithm. verknüpfen ( addieren, subtr., mult....)
Process -> Arithmetik (const): Verändern der Pixelwerte durch Rechenoperationen mit Konstanten

Bei allen Arithmetischen operationen ist unbedingt auf Mathematische Regeln zu Achten !!
z.B. Ein Teilen durch 0 ist unbedingt zu verhindern.
Sollen 2 Bilder durch math. operationen verknüft werden,müssen Sie im gleichen Farbraum definiert
sein. (Image -> Color Space->...)

Filter:
Process -> Convolve Kernel ->Laplacien 5x5: Filter zur Kantenhervorhebung schmale Kanten
Process -> Convolve Kernel ->Laplacien 7x7: Filter zur Kantenhervorhebung breite Kanten

Noch offen bzw. unklar:
Process -> Treshold -> difusion Error:
Process -> Histogramm -> Equalization
Process -> Histogramm -> Expasion
Process -> Render : Alle Pixel auf einen wert setzen ?!?!
Process -> Geometric -> Interlace Split Trennung gerade ungerade Zeilen/Reduktion des Umfangs/Durch Subtr. der beiden Bilden

Vergrößern:
Eine Möglichkeit der Vergrößerung ist die lineare Interpolation

Dabei werden die neuen Pixel durch Mittelwertbildung der Nachbarpixel ermittelt.
einfach bei Vergrößerungen mit Faktor 2, Problematisch bei Faktor 3,5,7 o.ä.

Beispiel:
-------------- ---------------
|250| |200| |250|225|200|
-------------- ---------------
| | | | |225|200|175|
-------------- ---------------
|200| |150| |200|175|150|
-------------- ---------------

Eine weitere Methode der Vergrößerung ist die Kubische Interpolation
Durch die Kubische Interpolation werden "harte Übergänge vermieden".


Reduzieren
Bei der Reduktion wird z.B. der Mittelwerte der angrenzenden Pixel berechnet:

Beispiel
---------
|250|150| -----
--------- |200|
|150|250| -----
---------


Offene FRAGEN !!!

Einsatz/Verwendung:
-Process -> Treshold -> difusion Error
Ist das die 2 Dimensionale Faltung

-Bild in SW wandeln als "Maske", dann Arithmetisch zum Farbbild addieren.
Übrig bleiben nur relevante Bereiche. Wie haben wir das gemacht ??

Montag, 17. November 2008

Bilderkennung (Kurzprotokoll der Veranstalltungen)

30.11.2008

Einführung

6.11.2008

Einrichten der Arbeitsumgebung:

www.blogger.com: Fortschritt/Ergebniss der erarbeiteten Ergebnisse.
www.diigo.com: Verwaltung der Bookmarks
www.google.com/reader: Verwaltung der rss-feeds

+ Einführung in die Recherche

13.11.2008

Diskussion des Dokuments Bildverstehen: http://www.kreissl.info/diggs/bilderkennung.php

Farbbdarstellung im Rechner am Beispiel von Webseiten:

Jedes Bild im Rechner wird in Bildpunkten sog. Pixel dargestellt. Die Anzahl der Pixel richtet sich nach der Auflösung. z.B. 1280 x 1024 = 1310720 Pixel
oder 1600 x 1200 = 1920000 Pixel usw.. Für jedes Pixel werden Farbinformationen für die Farben Rot/Grün/Blau in der Form "FF FF FF" gespeichert.Die Zahlenwerte liegen in dem Bereich von 1-2Byte (1 Byte 0-255, 2 Byte 0-32K)und stellen die intensität der einzelenen Farben Rot/Grün/Blau ("FF FF FF") dar. Bei Zahlenwerte bei dieser Darstellung bedeutet. kleiner Wert geringer Farbanteil hoher Wert großer Anteil. " FF FF FF " bedeutet also maximale intensität aller Farben, das entspricht der Farbe Weiß. " 00 00 00 " bedeutet also kein Anteil einer Farbe, das entspricht der
Farbe Schwarz. " 00 08 00 " beschreibt ein Pixel mit "halbhellem" Grün, kein Rot oder Blau Anteil . " 00 01 00 " beschreibt ein Pixel mit "dunklem" Grün, kein Rot oder Blau Anteil.
Sind alle Zahlenwerte gleich, z.B. " 02 02 02 ", " 33 33 33 " oder "08 08 08 " entspricht das Grauwerten versch. Intensität.

Erstes Arbeiten mit IMLAB!
File->open-> Skyline Bild öffnen
Process-> Color Components - > Split Components. Aus dem Farb Bild werden 3 SW-Bilder erstellt. Die Grau-Werte der einzellnen Bilder entsprechen der Farbintensität der
einzelnen R/G/B (Rot/Grün/Blau) Farben.

Donnerstag, 6. November 2008

Erstes Lebenszeichen

.. nu gehts los