Übungen zum Softwarepraktikum SS 2005:
Abgabe der Lösungen bis Dienstag abend (10.05.2005) 18.00 Uhr per
E-Mail:
Gruppe Sound-Memory:
janis.fehr@gmx.de
Gruppe Computer Grafik: shamoha@mac.com(Sebastian Schulz)
In dieser Aufgabe sollen Objekte einer Farbe im RGB-Bild erkannt und vom Hintergrund getrennt werden. Die Klasse RGBClassifier entscheidet für jeden Pixel des Eingabebildes anhand des RGB-Wertes ob es sich um einenen Teil eines Objektes (=1) oder des Hintergrundes (=0) handelt und speichert das binäre Ergebniss in einem IntImage. Die Klasse ConnectedComponentLabeling erkennt die zusammenhängenden Objekte im Binärbild, und gibt jedem Objekt ein Label.
Schreiben Sie ein Testprogramm (testRGBSegment.cc) welches die Funktionalitäten der IntImage-, RGBClassifier und ConnectedComponentLabeling-Klassen testet.
Implementieren Sie die Klasse IntImage welche alle funtionalitäten der SimpleRGBImge-Klasse mit Ausnahme der read()- write()-Funktionen besitzt, und für jeden Pixel lediglich einen int-Wert speichert.
Implementieren Sie die Klasse RGBClassifier wie im Header-File vorgegeben.
Implementieren Sie die Klasse ConnectedComponentLabeling (siehe Header-File). Verwenden Sie die Queue der STL zur Umsetzung. Jedes Objekt soll sein eigenes Label (int-Wert) erhalten
Implementieren Sie die das Programm RGBSegment welches 2 Argumente von der Kommondozeile einliest: InFile und OutFile. ObjectColor im Beispielbild image.ppm ist (255,0,0)=RGBColor::Red RGBSegment führt auf InFile ein ConnectedComponentLabeling mit ObjectColor als Objektfarbe durch, und speichert das Ergebniss wieder als RGB-Bild in OutFile. Dabei soll jedem Object-Label eine andere Farbe zugewiesen werden.
Dokumentieren Sie Ihren Code ausführlich und Dxygen konform. Mit doxygen -g wird ein Doxyfile erstellt - doxygen erstellt dann die HTML-Dokumentation.