Modellbildung und Simulation - Grundlagen der Bildverarbeitung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Autor: Prof. Dr.-Ing. Schneider
Termin: 06.06.2025
Abb. 1: Bildverarbeitung mit MATLAB®

Nützliche MATLAB®-Befehle

Übersicht nützliche MATLAB®-Befehle

Aufgabe 10.1

Erzeugen Sie ein bmp-Bild-Array mit 3 Zeilen und 8 Spalten, das einen waagrechten blauen Strich enthält, und geben Sie diese Daten mit der image-Funktion aus.

Versuchen Sie, andere geometrische Figuren in unterschiedlichen Farben zu erzeugen.

Aufgabe 10.2

Schreiben Sie eine Funktion, die ein RGB-Bild mit 255 Zeilen und 255 Spalten erzeugt, also mit exakt 255x255 Pixeln, wobei der Rot-Wert eines Pixels P(z,s) den Wert z der Zeile hat, der Grün-Wert den Wert s der Spalte und der Blau-Wert für alle Pixel 100 ist.

Aufgabe 10.3

Schreiben Sie eine Funktion, mit der man die Helligkeit eines bmp-Bildes variieren kann. Ändern Sie dazu die drei Farbkanäle jeweils um exakt denselben Prozentsatz.

Wie sieht das Bild aus, wenn Sie anstelle einer prozentualen Änderung die Farbkanäle um jeweils einen identischen festen Wert abwandeln?

Beispielbild: Katze.jpg

Aufgabe 10.4

Schreiben Sie eine Funktion B = verkleinern(file). Diese Funktion lädt das Bild A aus der bmp-Datei file und berechnet daraus ein verkleinertes Bild B in der Art, dass B nur noch die Hälfte der Zeilen und die Hälfte der Spalten des Ursprungsbildes A besitzt. Die Farbwerte eines Pixels von B sind definiert als die Mittelwerte aus den vier Pixeln, die um eine Position P = (z,s) liegen, also aus dem Pixel A(z,s,:) und den drei vorherigen Pixeln A(z-1,s,:), A(z,s-1,:) und A(z-1,s-1,:). Das berechnete Bild B wird zurückgegeben.

Aufgabe 10.5: Bilder einlesen und ausgeben

Schreiben Sie ein Matlab Skript, in dem Sie folgende Aufgaben bewältigen:

  1. Lesen Sie das Bild lena_std.png ein, indem Sie dies zunächst direkt über die Eingabe eines Pfades und anschließend über einen interaktiven Dialog vollziehen und ermitteln Sie die Größe des Bildes (Befehle: imread(), uigetfile())
  2. Erzeugen Sie eine Ausgabe, in der die einzelnen Farbräume (R, G und B) und das Originalbild nebeneinander dargestellt werden und Erzeugen Sie zu jedem Bild ein Titel (Befehle: imshow, [https://www.mathworks.com/help/matlab/ref/subplot.html subplot)
  3. Erzeugen Sie aus dem Bild eine Grauwertbild (Befehle: rgb2gray())
  4. Geben Sie das Grauwertbild in einem neuen Fenster aus
  5. Lesen Sie interaktiv aus dem Grauwertbild mit einem Fadenkreuz einen Pixel aus und geben Sie Pixelposition (x,y) und den Grauwert im Matlab Command Window aus (Befehle: ginput(), num2str(), disp())
  6. Speichern Sie das Grauwertbild als Bilddatei ab (Befehle: imwrite())

Aufgabe 10.6: Bildverarbeitung

Schreiben Sie ein Matlab Skript, in dem Sie folgende Aufgaben bewältigen:

  1. Lesen Sie das Bild noisylena.tif ein und erzeugen Sie eine Ausgabe
  2. Recherchieren Sie, welche Filteroperationen es in Matlab zur Verringerung von Rauschen in einem Bild gibt. Ermitteln Sie dabei experimentell die optimalen Filterkonstanten. Welche negativen Nebeneffekte tauchen dabei auf?
  3. Wenden Sie die Filteroperationen auf das eingelesene Bild an. Stellen Sie die Ergebnisse nebeneinander dar.
  4. Lesen Sie das Bild EnteUnscharf.png ein und erzeugen Sie eine Ausgabe
  5. Wählen Sie für dieses Bild über ein interaktives Fadenkreuz den Bereich des Nummernschildes aus und erzeugen Sie eine Ausgabe des Nummernschildes

Aufgabe 10.7: Segmentierung

Schreiben Sie ein Matlab Skript, in dem Sie folgende Aufgaben bewältigen:

  1. Machen Sie sich mit der Matlab-App Color Thresholder vertraut.
  2. Laden Sie in die Anwendung das Bild smarties.jpg und wählen Sie den RGB-Raum aus.
  3. Wählen Sie mit dem Auswahl-Werkzeug eine blaue Schokolinse aus und stellen Sie die Segmentierung als Binärbild dar
  4. Verbessern Sie die Segmentierung mithilfe der RGB Slider (als Ergebnis sollen nur die blauen Schokolinsen zu sehen sein)
  5. Exportieren Sie eine Funktion
  6. Schreiben Sie ein Matlab Skript, in welchem Sie folgende Aufgaben bewältigen:
    1. Laden Sie das Bild smarties.jpg ein
    2. Erzeugen Sie ein Binärbild, welches nur die blauen Schokolinsen enthält, mithilfe der zuvor erstellten Funktion
    3. „Bereinigen“ Sie das Binärbild unter folgenden Anforderungen: Füllen der „Löcher“ in den einzelnen Schokolinsen, Löschen aller Schokolinsen am Rand des Bildes, Löschen kleiner nicht zugehöriger Pixelbereiche (Befehle: imfill(), imclearborder(), bwareaopen())
    4. Zählen Sie die Anzahl der vollständig zu sehenden blauen Schokolinsen (Befehle: bwlabel())
    5. Erzeugen Sie in einem Fenster eine Ausgabe des Originalbildes, des unbereinigten Binärbildes und des bereinigten Binärbildes, welches als Titel die Anzahl der blauen Schokolinsen enthält
    6. Erzeugen Sie in einem neuen Fenster eine Ausgabe jeder einzelnen Schokolinse (Befehle: ismember())
    7. Zusatzaufgabe: Erstellen Sie aus den einzelnen Schokolinsen ein GIF (siehe: imwrite)

→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe25