Version [80866]
Dies ist eine alte Version von ComputerBasierteIntelligenzVorverarbeitung erstellt von mstruening am 2017-07-03 20:08:57.
Kennzeichenerkennung
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. 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 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.
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.
% 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])
%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])
CategoryInfoTutorien
Diese Seite wurde noch nicht kommentiert.