ich war hier: ComputerBasierteIntelligenzVorverarbeitung

Revision history for ComputerBasierteIntelligenzVorverarbeitung


Revision [87768]

Last edited on 2018-04-25 17:53:11 by FabianEndres
Additions:
Hier sind Dateien vorhanden.
Deletions:
{{files}}


Revision [81125]

Edited on 2017-07-06 16:55:59 by mstruening
Additions:
{{files}}
Deletions:


Revision [81117]

Edited on 2017-07-06 16:46:37 by mstruening
Deletions:
=====**Datenvorverarbeitung in MATLAB**=====
==== ((2)) Vorbereitung ====
Für dieses Tutorium wurde Ihnen ein Archiv mit folgenden Inhalten bereitgestellt:
- 100 Bilddateien von Kraftfahrzeugen mit mehr oder weniger erkennbaren Kennzeichen
- Zugehörige INI-Dateien
- Das Werkzeug "KFZ-Expert"
----
==== ((2)) Manuelle Vorverarbeitung ====
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses. Wenn Sie das Programm gestartet haben, setzen Sie bitte als Erstes das Verzeichnis mit den Kennzeichen-Bildern aus den Archiv im mittleren Teil des Programms und wählen Sie das erste Bild aus. Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist.
Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im folgenden Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen. Bitte verzichten Sie auf die Eingabe von Leerzeichen im Kennzeichen und geben sie 0 und 1 anstelle von O und I an. Die Software speichert alle Ihre Änderungen automatisch in einer INI-Datei mit identischem Namen zum Bild.
>>{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="center"}}>>
__Steuerung von KFZ-Expert:__
- Ein Mausklick ins Originalbild setzt den aktuellen Eckpunkt des Polygons auf die Klickposition.
- Der aktuelle Eckpunkt kann mit der rechten Maustaste durchgeschaltet werden
- Pfeil Hoch und Pfeil Runter auf der Tastatur wechseln zum nächsten bzw. vorherigen Bild
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.
----
==== ((2)) Automatisierte Vorverarbeitung ====
Die Vorgehensweise der automatisierten Vorverarbeitung soll vorerst nur an einem einzigen Bild demonstriert werden. Für das maschinelle Lernen werden die folgenden Schritte später an allen 100 Bildern wiederholt.
=== ((3)) Bilder und Metadaten aus zugehörigen INI-Dateien einlesen ===
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird. Wir zeichnen schlussendlich noch die Eckpunkte aus den INI-Dateien im Bild ein und weisen dem Subplot einen Titel zu.
>>{{image url="CBI02_Schritt1.jpg" title="Markierung der Eckpunkte" class="center"}}>>
%%(matlab)
% Bilder und zugehörige INI-Dateien einlesen
%Dateipfad Eingabedaten
PATH_inputImg = ['data\img00' num2str(dataIndex)];
%Dateipfad Ausgabebild
PATH_outputImg = ['graf\img00' num2str(dataIndex)];
%Eingabebild einlesen
IMG_1_input = imread([PATH_inputImg '.jpg']);
%Eingabebild in Subplot oben-links eintragen
close all, subplot(2,3,1), imshow(IMG_1_input), hold on
%Cell Array für INI-Read konstruieren
% Mit Funktion inifile(iniFileName, mode, modeParams)
% Jede Zeile in CellArray 'readParams' muss enthalten:
% Section, Subsection, Key, Format(s:string, d:double)
%Reihenfolge: Kennzeichentext, x-Koordinaten, y-Koordinaten
section = 'Plate';
readParams = {section,'','name','s';
section,'','x1','d';
section,'','x2','d';
section,'','x3','d';
section,'','x4','d';
section,'','y1','d';
section,'','y2','d';
section,'','y3','d';
section,'','y4','d'};
%INI-Read ausführen
%Ergebnisse liegen in selber Reihenfolge wie mit readParams angefordert
iniValues = inifile([PATH_inputImg '.ini'], 'read', readParams);
%Erste Zeile: Kennzeichentext
plateText = iniValues{1,1};
%Zeile 2-5: x-Koordinaten
x = cell2mat(iniValues(2:5));
%Zeile 6-9: y-Koordinaten
y = cell2mat(iniValues(6:9));
%Polygon-Koordinaten in Original-Bild eintragen
plot(x, y,'g*')
%Bildindex und Kennzeichen als Titel
title(['Bild: ' num2str(dataIndex) ' ' plateText])
%%
----
=== ((3)) Maskierung ===
Als Nächstes verwerfen wir alle Informationen im Bild, die für die Kennzeichenerkennung unerheblich ist. Wir erstellen ein Polygon-Maske aus den Koordinaten-Vektoren *x* und *y* und stellen diese als Subplot dar. Danach multiplizieren wir die Pixelfarben der Maske und des Originalbilds elementweise miteinander. Das Ergebnis ist ein größtenteils geschwärztes Bild mit isoliertem Kennzeichen. Dieses tragen wir ebenfalls als Subplot ein.
>>{{image url="CBI03_Schritt2.jpg" title="Maskierung" width="600" class="center"}}>>
%%(matlab)
% Maskierung
%Maske aus Polygon-Koordinaten erzeugen
IMG_2_mask = roipoly(IMG_1_input, x, y);
%Maske als Subplot oben-mitte eintragen
subplot(2,3,2), imshow(IMG_2_mask), title('Maske')
%Bilddaten außerhalb der Maske schwärzen
IMG_3_cutOut = uint8(IMG_2_mask) .* IMG_1_input;
%Ergebnis als Subplot oben-rechts eintragen
subplot(2,3,3), imshow(IMG_3_cutOut), title('Ausschnitt')
%%
----
=== ((3)) Kennzeichnen begradigen ===
Der nächste Schritt ist die Begradigung der oberen und unteren Kante des Kennzeichens. Dazu errechnen wir die Steigungen der beiden Kantengeraden und berechnen ihr Mittel. Mithilfe des Arkustangens ermitteln wir den Winkel dieses Anstiegs und konvertieren diesen anschließend von Radiant in Bogenmaß. Die Umwandlung ist für den Funktionsaufruf imrotate() notwendig. Damit rotieren wir das zuvor ausgeschnittene Bild so, dass die obere und untere Kante begradigt werden.
>>{{image url="CBI04_Schritt3.jpg" title="Begradigung" class="left" width="600" class="center"}}>>
%%(matlab)
% Begradigung oberer und unterer Kante
%Anstieg aus Punkten P1-P4 berechnen (oben-links & oben-rechts)
m1 = (y(1) - y(4)) / (x(1) - x(4));
%Anstieg aus Punkten P2-P3 berechnen (unten-links & unten-rechts)
m2 = (y(2) - y(3)) / (x(2) - x(3));
%Winkel des Anstieges aus dem Mittel beider Geradenanstiege berechnen
alphaInRad = atan((m1 + m2) / 2);
%Winkel von Rad in Deg konvertieren
alphaInDeg= alphaInRad * 180 / pi;
%Bild um den Winkel rotieren
IMG_4_rotated = imrotate(IMG_3_cutOut, alphaInDeg, 'bilinear', 'crop');
%Subplot unten-links eintragen
subplot(2,3,4), imshow(IMG_4_rotated), title('Begradigung')
hold on
%Polygon-Koordinaten rot einzeichnen
plot(x(:), y(:), 'r.');
%%
CategoryInfoTutorien


Revision [81112]

Edited on 2017-07-06 16:37:56 by mstruening
Additions:
>>{{image url="CBI02_Schritt1.jpg" title="Markierung der Eckpunkte" class="center"}}>>
>>{{image url="CBI03_Schritt2.jpg" title="Maskierung" width="600" class="center"}}>>
>>{{image url="CBI04_Schritt3.jpg" title="Begradigung" class="left" width="600" class="center"}}>>
Deletions:
>>{{image url="CBI02_Schritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="center"}}>>
>>{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" width="600" class="center"}}>>
>>{{image url="CBI04_Schritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="600" class="center"}}>>


Revision [81111]

Edited on 2017-07-06 16:36:29 by mstruening
Additions:
==== ((2)) Vorbereitung ====
==== ((2)) Manuelle Vorverarbeitung ====
==== ((2)) Automatisierte Vorverarbeitung ====
=== ((3)) Bilder und Metadaten aus zugehörigen INI-Dateien einlesen ===
=== ((3)) Maskierung ===
=== ((3)) Kennzeichnen begradigen ===
Deletions:
((2))
==== Vorbereitung ====
==== 1. Manuelle Vorverarbeitung ====
==== 2. Automatisierte Vorverarbeitung ====
=== A. Bilder und Metadaten aus zugehörigen INI-Dateien einlesen ===
=== B. Maskierung ===
=== C. Kennzeichnen begradigen ===


Revision [81110]

Edited on 2017-07-06 16:35:04 by mstruening
Additions:
((2))
Deletions:
Inhalt


Revision [81109]

Edited on 2017-07-06 16:34:44 by mstruening
Additions:
Inhalt


Revision [81108]

Edited on 2017-07-06 16:34:05 by mstruening
Deletions:
**==== Inhalt Datenvorverarbeitung in MATLAB ====**
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_Vorbereitung Vorbereitung]]
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung Manuelle Vorverarbeitung]]
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung Automatisierte Vorverarbeitung]]
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]**
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_B._Maskierung B. Maskierung]]**
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_C._Kennzeichnen_begradigen C. Kennzeichen begradigen]]**


Revision [81107]

Edited on 2017-07-06 16:32:53 by mstruening
Additions:
**==== Inhalt Datenvorverarbeitung in MATLAB ====**
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_B._Maskierung B. Maskierung]]**
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_C._Kennzeichnen_begradigen C. Kennzeichen begradigen]]**
Deletions:
**==== Inhalt Kennzeichenerkennung ====**
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_B._Maskierung A. Maskierung]]**


Revision [81106]

Edited on 2017-07-06 16:31:45 by mstruening
Additions:
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_B._Maskierung A. Maskierung]]**


Revision [81105]

Edited on 2017-07-06 16:31:16 by mstruening
Additions:
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]**
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]**
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]**
Deletions:
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]**


Revision [81104]

Edited on 2017-07-06 16:30:21 by mstruening
Additions:
**[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]**
Deletions:
[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]


Revision [81103]

Edited on 2017-07-06 16:29:54 by mstruening
Additions:
[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen A. Bild- und Metadaten einlesen]]
Deletions:
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen Bild und Metadaten einlesen]]


Revision [81102]

Edited on 2017-07-06 16:28:48 by mstruening
Additions:
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_A._Bilder_und_Metadaten_aus_zugehrigen_INI-Dateien_einlesen Bild und Metadaten einlesen]]


Revision [81101]

Edited on 2017-07-06 16:27:57 by mstruening
Additions:
----
>>{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="center"}}>>
----
>>{{image url="CBI02_Schritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="center"}}>>
----
>>{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" width="600" class="center"}}>>
----
>>{{image url="CBI04_Schritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="600" class="center"}}>>
Deletions:
>>{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert"}}>>
>>{{image url="CBI02_Schritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" }}>>
>>{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" width="400"}}>>
|| %%(matlab)
|| {{image url="CBI04_Schritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="700"}}||


Revision [81100]

Edited on 2017-07-06 16:17:15 by mstruening
Additions:
>>{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert"}}>>
>>{{image url="CBI02_Schritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" }}>>
%%(matlab)
>>{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" width="400"}}>>
%%(matlab)
Deletions:
>>>>{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="left"}}
||%%(matlab)
%%|| {{image url="CBI02_Schritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}} ||
||%%(matlab)
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="700"}}||


Revision [81099]

Edited on 2017-07-06 16:05:53 by mstruening
Additions:
>>>>{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="left"}}
__Steuerung von KFZ-Expert:__
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="700"}}||
Deletions:
||__Steuerung von KFZ-Expert:__
||{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="left"}} ||
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" }}||


Revision [81098]

Edited on 2017-07-06 15:55:45 by mstruening
Additions:
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.
||{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="left"}} ||
Deletions:
||{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="left"}}
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes)
setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||


Revision [81097]

Edited on 2017-07-06 15:55:10 by mstruening
Additions:
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes)
setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||
Deletions:
-Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||


Revision [81096]

Edited on 2017-07-06 15:54:49 by mstruening
Additions:
||{{image url="CBI01_KFZExpert.jpg" width="400px" title="Das Programm KFZ-Expert" class="left"}}
-Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||
Deletions:
||{{image url="CBI01_KFZExpert.jpg" width="30%" title="Das Programm KFZ-Expert" class="left"}}
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.
||


Revision [81095]

Edited on 2017-07-06 15:54:01 by mstruening
Additions:
||{{image url="CBI01_KFZExpert.jpg" width="30%" title="Das Programm KFZ-Expert" class="left"}}
Deletions:
||{{image url="CBI01_KFZExpert.jpg" width="auto" title="Das Programm KFZ-Expert" class="left"}}


Revision [81094]

Edited on 2017-07-06 15:53:43 by mstruening
Additions:
||{{image url="CBI01_KFZExpert.jpg" width="auto" title="Das Programm KFZ-Expert" class="left"}}
Deletions:
||{{image url="CBI01_KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="left"}}


Revision [81093]

Edited on 2017-07-06 15:53:19 by mstruening
Deletions:
----
----
----
----


Revision [81092]

Edited on 2017-07-06 15:52:30 by mstruening
Additions:
||__Steuerung von KFZ-Expert:__
Deletions:
__Steuerung von KFZ-Expert:__


Revision [81091]

Edited on 2017-07-06 15:52:16 by mstruening
Additions:
||
__Steuerung von KFZ-Expert:__
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.
||
Deletions:
||__Steuerung von KFZ-Expert:__
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||


Revision [81090]

Edited on 2017-07-06 15:44:47 by mstruening
Additions:
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" }}||
Deletions:
|!|{border:3px solid white; }||
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||


Revision [81089]

Edited on 2017-07-06 15:43:47 by mstruening
Additions:
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||
|| {{image url="CBI04_Schritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="700"}}||
Deletions:
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||
|| {{image url="CBI04_Schritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||


Revision [81088]

Edited on 2017-07-06 15:42:25 by mstruening

No Differences

Revision [81087]

Edited on 2017-07-06 15:41:37 by mstruening
Additions:
|!|{border:3px solid white; }||
Deletions:
|!|{border:3px solid blue; }||


Revision [81086]

Edited on 2017-07-06 15:41:21 by mstruening
Additions:
|!|{border:3px solid blue; }||
Deletions:
|!|{border:0px; }||


Revision [81085]

Edited on 2017-07-06 15:40:43 by mstruening
Additions:
|!|{border:0px; }||
Deletions:
|!|{border:0px solid white; width: 300px; }||


Revision [81084]

Edited on 2017-07-06 15:40:01 by mstruening
Additions:
|!|{border:0px solid white; width: 300px; }||


Revision [81083]

Edited on 2017-07-06 15:31:55 by mstruening
Additions:
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses. Wenn Sie das Programm gestartet haben, setzen Sie bitte als Erstes das Verzeichnis mit den Kennzeichen-Bildern aus den Archiv im mittleren Teil des Programms und wählen Sie das erste Bild aus. Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist.
Deletions:
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses. Wenn Sie das Programm gestartet haben, setzen Sie bitte als Erstes das Verzeichnis mit den Kennzeichen-Bildern aus den Archiv im mittleren Teil des Programms und wählen Sie das erste Bild aus. Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist.


Revision [81082]

Edited on 2017-07-06 15:28:04 by mstruening
Additions:
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_Vorbereitung Vorbereitung]]
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung Manuelle Vorverarbeitung]]


Revision [81081]

Edited on 2017-07-06 15:26:52 by mstruening
Additions:
((2))[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung Automatisierte Vorverarbeitung]]
Deletions:
[[ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung Automatisierte Vorverarbeitung]]


Revision [81080]

Edited on 2017-07-06 15:26:29 by mstruening
Additions:
[[ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung Automatisierte Vorverarbeitung]]
Deletions:
[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung Automatisierte Vorverarbeitung]]


Revision [81079]

Edited on 2017-07-06 15:26:13 by mstruening
Additions:
[[http://wiki.hs-schmalkalden.de/ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung Automatisierte Vorverarbeitung]]


Revision [81078]

Edited on 2017-07-06 15:25:34 by mstruening

No Differences

Revision [81077]

Edited on 2017-07-06 15:19:54 by mstruening
Deletions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Automatisierte Vorverarbeitung](#1._Automatisierte_Vorverarbeitung)]


Revision [81076]

Edited on 2017-07-06 15:19:45 by mstruening
Additions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Automatisierte Vorverarbeitung](#1._Automatisierte_Vorverarbeitung)]
Deletions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Automatisierte Vorverarbeitung](#1. Automatisierte Vorverarbeitung)]


Revision [81075]

Edited on 2017-07-06 15:19:20 by mstruening
Additions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Automatisierte Vorverarbeitung](#1. Automatisierte Vorverarbeitung)]
Deletions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Automatisierte Vorverarbeitung]]((#1. Automatisierte Vorverarbeitung))


Revision [81074]

Edited on 2017-07-06 15:19:07 by mstruening
Additions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Automatisierte Vorverarbeitung]]((#1. Automatisierte Vorverarbeitung))
Deletions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Manuelle Vorverarbeitung]](#1._Manuelle_Vorverarbeitung)


Revision [81073]

Edited on 2017-07-06 15:18:31 by mstruening
Additions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung|Manuelle Vorverarbeitung]](#1._Manuelle_Vorverarbeitung)
Deletions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung|Manuelle Vorverarbeitung]]
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung|Automatisierte Vorverarbeitung]]


Revision [81072]

Edited on 2017-07-06 15:11:14 by mstruening
Additions:
**==== Inhalt Kennzeichenerkennung ====**
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung|Manuelle Vorverarbeitung]]
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_2._Automatisierte_Vorverarbeitung|Automatisierte Vorverarbeitung]]
Deletions:
**==== Kennzeichenerkennung ====**
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung| Manuelle Vorverarbeitung]]


Revision [81071]

Edited on 2017-07-06 15:08:55 by mstruening
Additions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung| Manuelle Vorverarbeitung]]
Deletions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung| 1. Manuelle Vorverarbeitung]]


Revision [81070]

Edited on 2017-07-06 15:08:39 by mstruening
Additions:
((2))[[ComputerBasierteIntelligenzVorverarbeitung#hn_1._Manuelle_Vorverarbeitung| 1. Manuelle Vorverarbeitung]]


Revision [81069]

Edited on 2017-07-06 15:06:51 by mstruening
Deletions:
{{files}}


Revision [81068]

Edited on 2017-07-06 15:05:34 by mstruening
Additions:
||{{image url="CBI01_KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="left"}}
%%|| {{image url="CBI02_Schritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}} ||
%%||{{image url="CBI03_Schritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||
|| {{image url="CBI04_Schritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||
Deletions:
||{{image url="1KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="left"}}
%%|| {{image url="2CBIVorverarbeitungSchritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}} ||
%%||{{image url="2CBIVorverarbeitungSchritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||
|| {{image url="2CBIVorverarbeitungSchritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||


Revision [81067]

Edited on 2017-07-06 15:03:40 by mstruening
Additions:
{{files}}


Revision [81062]

Edited on 2017-07-05 17:32:31 by mstruening
Additions:
- 100 Bilddateien von Kraftfahrzeugen mit mehr oder weniger erkennbaren Kennzeichen
- Zugehörige INI-Dateien
- Das Werkzeug "KFZ-Expert"
||{{image url="1KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="left"}}
- Ein Mausklick ins Originalbild setzt den aktuellen Eckpunkt des Polygons auf die Klickposition.
- Der aktuelle Eckpunkt kann mit der rechten Maustaste durchgeschaltet werden
- Pfeil Hoch und Pfeil Runter auf der Tastatur wechseln zum nächsten bzw. vorherigen Bild
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||
=== A. Bilder und Metadaten aus zugehörigen INI-Dateien einlesen ===
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird. Wir zeichnen schlussendlich noch die Eckpunkte aus den INI-Dateien im Bild ein und weisen dem Subplot einen Titel zu.
||%%(matlab)
% Bilder und zugehörige INI-Dateien einlesen
%Dateipfad Eingabedaten
PATH_inputImg = ['data\img00' num2str(dataIndex)];
%Dateipfad Ausgabebild
PATH_outputImg = ['graf\img00' num2str(dataIndex)];
%Eingabebild einlesen
IMG_1_input = imread([PATH_inputImg '.jpg']);
%Eingabebild in Subplot oben-links eintragen
close all, subplot(2,3,1), imshow(IMG_1_input), hold on
%Cell Array für INI-Read konstruieren
% Mit Funktion inifile(iniFileName, mode, modeParams)
% Jede Zeile in CellArray 'readParams' muss enthalten:
% Section, Subsection, Key, Format(s:string, d:double)
%Reihenfolge: Kennzeichentext, x-Koordinaten, y-Koordinaten
section = 'Plate';
readParams = {section,'','name','s';
section,'','x1','d';
section,'','x2','d';
section,'','x3','d';
section,'','x4','d';
section,'','y1','d';
section,'','y2','d';
section,'','y3','d';
section,'','y4','d'};
%INI-Read ausführen
%Ergebnisse liegen in selber Reihenfolge wie mit readParams angefordert
iniValues = inifile([PATH_inputImg '.ini'], 'read', readParams);
%Erste Zeile: Kennzeichentext
plateText = iniValues{1,1};
%Zeile 2-5: x-Koordinaten
x = cell2mat(iniValues(2:5));
%Zeile 6-9: y-Koordinaten
y = cell2mat(iniValues(6:9));
%Polygon-Koordinaten in Original-Bild eintragen
plot(x, y,'g*')
%Bildindex und Kennzeichen als Titel
title(['Bild: ' num2str(dataIndex) ' ' plateText])
%%|| {{image url="2CBIVorverarbeitungSchritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}} ||
=== B. Maskierung ===
Als Nächstes verwerfen wir alle Informationen im Bild, die für die Kennzeichenerkennung unerheblich ist. Wir erstellen ein Polygon-Maske aus den Koordinaten-Vektoren *x* und *y* und stellen diese als Subplot dar. Danach multiplizieren wir die Pixelfarben der Maske und des Originalbilds elementweise miteinander. Das Ergebnis ist ein größtenteils geschwärztes Bild mit isoliertem Kennzeichen. Dieses tragen wir ebenfalls als Subplot ein.
||%%(matlab)
%Maske aus Polygon-Koordinaten erzeugen
IMG_2_mask = roipoly(IMG_1_input, x, y);
%Maske als Subplot oben-mitte eintragen
subplot(2,3,2), imshow(IMG_2_mask), title('Maske')
%Bilddaten außerhalb der Maske schwärzen
IMG_3_cutOut = uint8(IMG_2_mask) .* IMG_1_input;
%Ergebnis als Subplot oben-rechts eintragen
subplot(2,3,3), imshow(IMG_3_cutOut), title('Ausschnitt')
%%||{{image url="2CBIVorverarbeitungSchritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||
=== C. Kennzeichnen begradigen ===
Der nächste Schritt ist die Begradigung der oberen und unteren Kante des Kennzeichens. Dazu errechnen wir die Steigungen der beiden Kantengeraden und berechnen ihr Mittel. Mithilfe des Arkustangens ermitteln wir den Winkel dieses Anstiegs und konvertieren diesen anschließend von Radiant in Bogenmaß. Die Umwandlung ist für den Funktionsaufruf imrotate() notwendig. Damit rotieren wir das zuvor ausgeschnittene Bild so, dass die obere und untere Kante begradigt werden.
|| %%(matlab)
%Anstieg aus Punkten P1-P4 berechnen (oben-links & oben-rechts)
m1 = (y(1) - y(4)) / (x(1) - x(4));
%Anstieg aus Punkten P2-P3 berechnen (unten-links & unten-rechts)
m2 = (y(2) - y(3)) / (x(2) - x(3));
%Winkel des Anstieges aus dem Mittel beider Geradenanstiege berechnen
alphaInRad = atan((m1 + m2) / 2);
%Winkel von Rad in Deg konvertieren
alphaInDeg= alphaInRad * 180 / pi;
%Bild um den Winkel rotieren
IMG_4_rotated = imrotate(IMG_3_cutOut, alphaInDeg, 'bilinear', 'crop');
%Subplot unten-links eintragen
subplot(2,3,4), imshow(IMG_4_rotated), title('Begradigung')
hold on
%Polygon-Koordinaten rot einzeichnen
plot(x(:), y(:), 'r.');
|| {{image url="2CBIVorverarbeitungSchritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||
Deletions:
- 100 Bilddateien von Kraftfahrzeugen mit mehr oder weniger erkennbaren Kennzeichen
- Zugehörige INI-Dateien
- Das Werkzeug "KFZ-Expert"
- Ein Mausklick ins Originalbild setzt den aktuellen Eckpunkt des Polygons auf die Klickposition.
- Der aktuelle Eckpunkt kann mit der rechten Maustaste durchgeschaltet werden
- Pfeil Hoch und Pfeil Runter auf der Tastatur wechseln zum nächsten bzw. vorherigen Bild
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||
=== A. Bilder und Metadaten aus zugehörigen INI-Dateien einlesen ===
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird. Wir zeichnen schlussendlich noch die Eckpunkte aus den INI-Dateien im Bild ein und weisen dem Subplot einen Titel zu.
||%%(matlab)
% Bilder und zugehörige INI-Dateien einlesen
%Dateipfad Eingabedaten
PATH_inputImg = ['data\img00' num2str(dataIndex)];

%Dateipfad Ausgabebild
PATH_outputImg = ['graf\img00' num2str(dataIndex)];

%Eingabebild einlesen
IMG_1_input = imread([PATH_inputImg '.jpg']);

%Eingabebild in Subplot oben-links eintragen
close all, subplot(2,3,1), imshow(IMG_1_input), hold on

%Cell Array für INI-Read konstruieren
% Mit Funktion inifile(iniFileName, mode, modeParams)
% Jede Zeile in CellArray 'readParams' muss enthalten:
% Section, Subsection, Key, Format(s:string, d:double)

%Reihenfolge: Kennzeichentext, x-Koordinaten, y-Koordinaten
section = 'Plate';
readParams = {section,'','name','s';
section,'','x1','d';
section,'','x2','d';
section,'','x3','d';
section,'','x4','d';
section,'','y1','d';
section,'','y2','d';
section,'','y3','d';
section,'','y4','d'};
%INI-Read ausführen
%Ergebnisse liegen in selber Reihenfolge wie mit readParams angefordert
iniValues = inifile([PATH_inputImg '.ini'], 'read', readParams);

%Erste Zeile: Kennzeichentext
plateText = iniValues{1,1};

%Zeile 2-5: x-Koordinaten
x = cell2mat(iniValues(2:5));

%Zeile 6-9: y-Koordinaten
y = cell2mat(iniValues(6:9));

%Polygon-Koordinaten in Original-Bild eintragen
plot(x, y,'g*')

%Bildindex und Kennzeichen als Titel
title(['Bild: ' num2str(dataIndex) ' ' plateText])
=== B. Maskierung ===

Als Nächstes verwerfen wir alle Informationen im Bild, die für die Kennzeichenerkennung unerheblich ist. Wir erstellen ein Polygon-Maske aus den Koordinaten-Vektoren *x* und *y* und stellen diese als Subplot dar. Danach multiplizieren wir die Pixelfarben der Maske und des Originalbilds elementweise miteinander. Das Ergebnis ist ein größtenteils geschwärztes Bild mit isoliertem Kennzeichen. Dieses tragen wir ebenfalls als Subplot ein.

||%%(matlab)
%Maske aus Polygon-Koordinaten erzeugen
IMG_2_mask = roipoly(IMG_1_input, x, y);

%Maske als Subplot oben-mitte eintragen
subplot(2,3,2), imshow(IMG_2_mask), title('Maske')

%Bilddaten außerhalb der Maske schwärzen
IMG_3_cutOut = uint8(IMG_2_mask) .* IMG_1_input;

%Ergebnis als Subplot oben-rechts eintragen
subplot(2,3,3), imshow(IMG_3_cutOut), title('Ausschnitt')

%%||
----
=== C. Kennzeichnen begradigen ===

Der nächste Schritt ist die Begradigung der oberen und unteren Kante des Kennzeichens. Dazu errechnen wir die Steigungen der beiden Kantengeraden und berechnen ihr Mittel. Mithilfe des Arkustangens ermitteln wir den Winkel dieses Anstiegs und konvertieren diesen anschließend von Radiant in Bogenmaß. Die Umwandlung ist für den Funktionsaufruf imrotate() notwendig. Damit rotieren wir das zuvor ausgeschnittene Bild so, dass die obere und untere Kante begradigt werden.

|| %%(matlab)
%Anstieg aus Punkten P1-P4 berechnen (oben-links & oben-rechts)
m1 = (y(1) - y(4)) / (x(1) - x(4));

%Anstieg aus Punkten P2-P3 berechnen (unten-links & unten-rechts)
m2 = (y(2) - y(3)) / (x(2) - x(3));

%Winkel des Anstieges aus dem Mittel beider Geradenanstiege berechnen
alphaInRad = atan((m1 + m2) / 2);

%Winkel von Rad in Deg konvertieren
alphaInDeg= alphaInRad * 180 / pi;

%Bild um den Winkel rotieren
IMG_4_rotated = imrotate(IMG_3_cutOut, alphaInDeg, 'bilinear', 'crop');

%Subplot unten-links eintragen
subplot(2,3,4), imshow(IMG_4_rotated), title('Begradigung')
hold on
%Polygon-Koordinaten rot einzeichnen
plot(x(:), y(:), 'r.');
%%||


Revision [81061]

Edited on 2017-07-05 17:20:17 by ClaudiaMichel
Deletions:
{{files}}


Revision [81060]

Edited on 2017-07-05 17:20:03 by ClaudiaMichel
Additions:
%%||
%%||
Deletions:
%%|| {{image url="2CBIVorverarbeitungSchritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}} ||
%%||{{image url="2CBIVorverarbeitungSchritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||
|| {{image url="2CBIVorverarbeitungSchritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||


Revision [81059]

Edited on 2017-07-05 17:11:47 by ClaudiaMichel
Deletions:
||{{image url="1KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="left"}}


Revision [81058]

Edited on 2017-07-05 17:03:36 by ClaudiaMichel
Additions:
{{files}}


Revision [81055]

Edited on 2017-07-05 15:35:57 by mstruening
Deletions:
{{files}


Revision [81054]

Edited on 2017-07-05 15:35:09 by mstruening
Additions:
{{files}


Revision [81053]

Edited on 2017-07-05 15:31:00 by ClaudiaMichel
Deletions:
{{files}}


Revision [81050]

Edited on 2017-07-05 15:11:51 by mstruening
Additions:
{{files}}


Revision [81022]

Edited on 2017-07-05 14:28:03 by mstruening
Deletions:
{{files}}


Revision [81020]

Edited on 2017-07-05 14:20:40 by mstruening
Additions:
|| {{image url="2CBIVorverarbeitungSchritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="800"}}||
Deletions:
|| {{image url="2CBIVorverarbeitungSchritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||


Revision [81019]

Edited on 2017-07-05 14:17:48 by mstruening
Additions:
% Maskierung
%%||{{image url="2CBIVorverarbeitungSchritt2.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||
----
=== C. Kennzeichnen begradigen ===
Der nächste Schritt ist die Begradigung der oberen und unteren Kante des Kennzeichens. Dazu errechnen wir die Steigungen der beiden Kantengeraden und berechnen ihr Mittel. Mithilfe des Arkustangens ermitteln wir den Winkel dieses Anstiegs und konvertieren diesen anschließend von Radiant in Bogenmaß. Die Umwandlung ist für den Funktionsaufruf imrotate() notwendig. Damit rotieren wir das zuvor ausgeschnittene Bild so, dass die obere und untere Kante begradigt werden.
|| %%(matlab)
% Begradigung oberer und unterer Kante
%Anstieg aus Punkten P1-P4 berechnen (oben-links & oben-rechts)
m1 = (y(1) - y(4)) / (x(1) - x(4));

%Anstieg aus Punkten P2-P3 berechnen (unten-links & unten-rechts)
m2 = (y(2) - y(3)) / (x(2) - x(3));

%Winkel des Anstieges aus dem Mittel beider Geradenanstiege berechnen
alphaInRad = atan((m1 + m2) / 2);

%Winkel von Rad in Deg konvertieren
alphaInDeg= alphaInRad * 180 / pi;

%Bild um den Winkel rotieren
IMG_4_rotated = imrotate(IMG_3_cutOut, alphaInDeg, 'bilinear', 'crop');

%Subplot unten-links eintragen
subplot(2,3,4), imshow(IMG_4_rotated), title('Begradigung')
hold on
%Polygon-Koordinaten rot einzeichnen
plot(x(:), y(:), 'r.');
%%
|| {{image url="2CBIVorverarbeitungSchritt3.jpg" title="Maskiertes und ausgeschnittenes Bild" class="left" width="900"}}||
Deletions:
%%||
{{image url="2CBIVorverarbeitungSchritt2.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}}||


Revision [81003]

Edited on 2017-07-05 13:30:57 by mstruening
Additions:
=== A. Bilder und Metadaten aus zugehörigen INI-Dateien einlesen ===
=== B. Maskierung ===
Als Nächstes verwerfen wir alle Informationen im Bild, die für die Kennzeichenerkennung unerheblich ist. Wir erstellen ein Polygon-Maske aus den Koordinaten-Vektoren *x* und *y* und stellen diese als Subplot dar. Danach multiplizieren wir die Pixelfarben der Maske und des Originalbilds elementweise miteinander. Das Ergebnis ist ein größtenteils geschwärztes Bild mit isoliertem Kennzeichen. Dieses tragen wir ebenfalls als Subplot ein.
%Maske aus Polygon-Koordinaten erzeugen
IMG_2_mask = roipoly(IMG_1_input, x, y);
%Maske als Subplot oben-mitte eintragen
subplot(2,3,2), imshow(IMG_2_mask), title('Maske')
%Bilddaten außerhalb der Maske schwärzen
IMG_3_cutOut = uint8(IMG_2_mask) .* IMG_1_input;
%Ergebnis als Subplot oben-rechts eintragen
subplot(2,3,3), imshow(IMG_3_cutOut), title('Ausschnitt')
%%||
{{image url="2CBIVorverarbeitungSchritt2.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}}||
{{files}}
Deletions:
=== A. Bilder und zugehörige INI-Dateien einlesen ===


Revision [80878]

Edited on 2017-07-03 20:58:57 by mstruening
Additions:
=== A. Bilder und zugehörige INI-Dateien einlesen ===
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird. Wir zeichnen schlussendlich noch die Eckpunkte aus den INI-Dateien im Bild ein und weisen dem Subplot einen Titel zu.
||%%(matlab)
Deletions:
=== A. Bilder und zugehörige INI-Dateien einlesen ===
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird. Wir zeichnen schlussendlich noch die Eckpunkte aus den INI-Dateien im Bild ein und weisen dem Subplot einen Titel zu.
||%%(matlab)


Revision [80877]

Edited on 2017-07-03 20:56:40 by mstruening
Additions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird. Wir zeichnen schlussendlich noch die Eckpunkte aus den INI-Dateien im Bild ein und weisen dem Subplot einen Titel zu.
Deletions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird.


Revision [80876]

Edited on 2017-07-03 20:53:04 by mstruening
Additions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den einzelnen Schritten besser erkannt werden können und uns somit das Debuggen erleichtert wird.
Deletions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den Schritten besser erkannt werden können und uns somit das Debugging erleichtert wird.


Revision [80875]

Edited on 2017-07-03 20:52:28 by mstruening
Additions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist. Jeden unserer Schritte stellen wir zur Nachvollziehbarkeit in einem eigenen Subplot dar. Das hat auch den Vorteil, dass Programmierfehler in den Schritten besser erkannt werden können und uns somit das Debugging erleichtert wird.
Deletions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist.


Revision [80874]

Edited on 2017-07-03 20:43:28 by mstruening
Additions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Da MATLAB keinen direkten Support für INI-Dateien anbietet, verwenden wir dafür den INI-Reader von Primoz Cermelj, der auf Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]) zu finden ist.
Deletions:
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Für das Parsen der INI-Datei verwenden wir den INI-Reader von Primoz Cermelj aus der Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]).


Revision [80873]

Edited on 2017-07-03 20:41:39 by mstruening
Additions:
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses. Wenn Sie das Programm gestartet haben, setzen Sie bitte als Erstes das Verzeichnis mit den Kennzeichen-Bildern aus den Archiv im mittleren Teil des Programms und wählen Sie das erste Bild aus. Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist.
Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im folgenden Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen. Bitte verzichten Sie auf die Eingabe von Leerzeichen im Kennzeichen und geben sie 0 und 1 anstelle von O und I an. Die Software speichert alle Ihre Änderungen automatisch in einer INI-Datei mit identischem Namen zum Bild.
Deletions:
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses. Wenn Sie das Programm gestartet haben, setzen Sie bitte als Erstes das Verzeichnis mit den Kennzeichen-Bildern aus den Archiv im mittleren Teil des Programms und wählen Sie das erste Bild aus.
Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist. Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im folgenden Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen. Bitte verzichten Sie auf die Eingabe von Leerzeichen im Kennzeichen und geben sie 0 und 1 anstelle von O und I an. Die Software speichert automatisch alle Änderungen in einer INI-Datei mit identischem Namen zum Bild.


Revision [80872]

Edited on 2017-07-03 20:40:02 by mstruening

No Differences

Revision [80871]

Edited on 2017-07-03 20:39:47 by mstruening
Additions:
Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist. Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im folgenden Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen. Bitte verzichten Sie auf die Eingabe von Leerzeichen im Kennzeichen und geben sie 0 und 1 anstelle von O und I an. Die Software speichert automatisch alle Änderungen in einer INI-Datei mit identischem Namen zum Bild.
Im ersten automatisiertem Schritt laden wir das Bild in den Speicher und lesen die zugehörige INI-Datei aus. Darin finden wir, die von uns zuvor festgelegten Eckpunkte und den Kennzeichentext. Für das Parsen der INI-Datei verwenden wir den INI-Reader von Primoz Cermelj aus der Matlab Central ([[https://de.mathworks.com/matlabcentral/fileexchange/2976-inifile]]).
Deletions:
Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist. Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im folgenden Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen.


Revision [80870]

Edited on 2017-07-03 20:27:58 by mstruening
Additions:
||%%(matlab)
%%|| {{image url="2CBIVorverarbeitungSchritt1.jpg" title="Originalbild mit markierten Eckpunkten des Kennzeichens" class="left"}} ||
Deletions:
{{files}}
%%(matlab)
%%


Revision [80869]

Edited on 2017-07-03 20:24:38 by mstruening
Additions:
{{files}}


Revision [80868]

Edited on 2017-07-03 20:21:34 by mstruening

No Differences

Revision [80867]

Edited on 2017-07-03 20:21:14 by mstruening
Additions:
Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist. Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im folgenden Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen.
||{{image url="1KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="left"}}
||__Steuerung von KFZ-Expert:__
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.||
==== 2. Automatisierte Vorverarbeitung ====
Die Vorgehensweise der automatisierten Vorverarbeitung soll vorerst nur an einem einzigen Bild demonstriert werden. Für das maschinelle Lernen werden die folgenden Schritte später an allen 100 Bildern wiederholt.
=== A. Bilder und zugehörige INI-Dateien einlesen ===
Deletions:
{{image url="1KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="center"}}
Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist. Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im obigen Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen.
__Steuerung von KFZ-Expert:__
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.
==== 2. Einlesen der Bild- und INI-Dateien ====
Zuerst soll die Vorgehensweise der Vorverarbeitung an einem einzigen Bild demonstriert werden. Für das maschinelle Lernen werden die folgenden Schritte später an hunderten von Bildern wiederholt.


Revision [80866]

Edited on 2017-07-03 20:08:57 by mstruening
Additions:
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses. Wenn Sie das Programm gestartet haben, setzen Sie bitte als Erstes das Verzeichnis mit den Kennzeichen-Bildern aus den Archiv im mittleren Teil des Programms und wählen Sie das erste Bild aus.
{{image url="1KFZExpert.jpg" width="400" title="Das Programm KFZ-Expert" class="center"}}
Sie sollten jetzt in der oberen linken Ecke ein Bild eines Fahrzeugs sehen. Im unteren Teil sehen sie die ausgewählte ROI, die nicht unbedingt optimal gesetzt ist. Ihre Aufgabe besteht jetzt darin, für alle 100 Bilder die Eckpunkte so zu setzen, dass sich möglichst das vollständige Kennzeichen im roten Rahmen befindet und der Rahmen keine Zeichen schneidet. Außerdem sollten die Kanten des Rahmens zur Ausrichtung der Buchstaben parallel sein, wie es im obigen Bild zu sehen ist. Zudem sollen Sie den Text des Kennzeichens und ob es vollständig zu sehen ist in der Software in die entsprechenden Felder eintragen.
__Steuerung von KFZ-Expert:__
- Ein Mausklick ins Originalbild setzt den aktuellen Eckpunkt des Polygons auf die Klickposition.
- Der aktuelle Eckpunkt kann mit der rechten Maustaste durchgeschaltet werden
- Pfeil Hoch und Pfeil Runter auf der Tastatur wechseln zum nächsten bzw. vorherigen Bild
- Ein Mausklick in den unteren Teil des Programms (den skalierten Ausschnitt des Originalbildes) setzt immer den der Klickposition nächsten Eckpunkt, sofern nicht zu weit weg geklickt wird. Somit können die Eckpunkte präzisiert werden.
Deletions:
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses.
{{image url="1KFZExpert.jpg" width="400" titel="KFZ-Expert" alt="Das Programm KFZ-Expert"}}


Revision [80865]

Edited on 2017-07-03 19:44:57 by mstruening
Additions:
=====**Datenvorverarbeitung in MATLAB**=====
==== Vorbereitung ====
==== 1. Manuelle Vorverarbeitung ====
{{image url="1KFZExpert.jpg" width="400" titel="KFZ-Expert" alt="Das Programm KFZ-Expert"}}
==== 2. Einlesen der Bild- und INI-Dateien ====
Deletions:
=====**__Datenvorverarbeitung in MATLAB__**=====
__Vorbereitung__
__1. Manuelle Vorverarbeitung
{{files}}
__3. Einlesen der Bild- und INI-Dateien__


Revision [80864]

Edited on 2017-07-03 19:37:58 by mstruening
Additions:
=====**__Datenvorverarbeitung in MATLAB__**=====
__Vorbereitung__
Für dieses Tutorium wurde Ihnen ein Archiv mit folgenden Inhalten bereitgestellt:
- 100 Bilddateien von Kraftfahrzeugen mit mehr oder weniger erkennbaren Kennzeichen
- Zugehörige INI-Dateien
- Das Werkzeug "KFZ-Expert"
__1. Manuelle Vorverarbeitung
Als erstes müssen alle 100 Bilddateien von Ihnen mit dem Programm "KFZ-Expert" bearbeitet werden. "KFZ-Expert" ermöglicht Ihnen das Setzen der ROI und des erwarteten Klassifikationsergebnisses.
{{files}}
__3. Einlesen der Bild- und INI-Dateien__
Zuerst soll die Vorgehensweise der Vorverarbeitung an einem einzigen Bild demonstriert werden. Für das maschinelle Lernen werden die folgenden Schritte später an hunderten von Bildern wiederholt.
%%(matlab)
% Bilder und zugehörige INI-Dateien einlesen
%Dateipfad Eingabedaten
PATH_inputImg = ['data\img00' num2str(dataIndex)];

%Dateipfad Ausgabebild
PATH_outputImg = ['graf\img00' num2str(dataIndex)];

%Eingabebild einlesen
IMG_1_input = imread([PATH_inputImg '.jpg']);

%Eingabebild in Subplot oben-links eintragen
close all, subplot(2,3,1), imshow(IMG_1_input), hold on

%Cell Array für INI-Read konstruieren
% Mit Funktion inifile(iniFileName, mode, modeParams)
% Jede Zeile in CellArray 'readParams' muss enthalten:
% Section, Subsection, Key, Format(s:string, d:double)

%Reihenfolge: Kennzeichentext, x-Koordinaten, y-Koordinaten
section = 'Plate';
readParams = {section,'','name','s';
section,'','x1','d';
section,'','x2','d';
section,'','x3','d';
section,'','x4','d';
section,'','y1','d';
section,'','y2','d';
section,'','y3','d';
section,'','y4','d'};
%INI-Read ausführen
%Ergebnisse liegen in selber Reihenfolge wie mit readParams angefordert
iniValues = inifile([PATH_inputImg '.ini'], 'read', readParams);

%Erste Zeile: Kennzeichentext
plateText = iniValues{1,1};

%Zeile 2-5: x-Koordinaten
x = cell2mat(iniValues(2:5));

%Zeile 6-9: y-Koordinaten
y = cell2mat(iniValues(6:9));

%Polygon-Koordinaten in Original-Bild eintragen
plot(x, y,'g*')

%Bildindex und Kennzeichen als Titel
title(['Bild: ' num2str(dataIndex) ' ' plateText])
%%
Deletions:
=====**__Datenvorverarbeitung in Matlab__**=====


Revision [80863]

The oldest known version of this page was created on 2017-07-03 19:08:49 by mstruening
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki