Was ist das Ziel der Hough-Transformation und wie sieht der Algorithmus grob/allgemein aus?
Ziel:
Erkennung von einfachen, parametrisierbaren Strukturen mit kleinem Parameterraum im Bild
Geraden/Linien (2 DOF)
Kreise (3 DOF)
Algorithmus:
Transformation der Bilddaten in binäre Kantendaten (z.B.: über lineares Kantenfilter + Binarisierung)
Transformation der Pixelkoordinaten in Parameterraum
Abtastung des Parameterraums
Identifikation von Parameterschnittpunkten
Rücktransformation einer entsprechenden Anzahl an Maxima
Wie sieht der Parameterraum für die Detektion von Linien bei der Hough-Transformation aus und welche Probleme gibt es?
Geradengleichung: y = k*x +d
[x,y] : Pixelkoordinatenraum
[k,d] : Parameterraum
->Zwei Linien im Bild korrespondieren zu zwei Punkten im Hough-Raum und umgekehrt.
Aber:
Parameterraum nicht linear skaliert
Steigung und Achsenabschnitt haben unendlichen Wertebereich
Für vertikale Linien:
k -> +- unendlich
d -> +- unendlich
Ansatz:
Repräsentation des Parameterraums über Winkel und Abstand (Polardarstellung)
x cos(θ) + y sin(θ) - ρ = 0
θ : Winkel zur x-Achse
ρ : Absatnd zum Ursprung
-> halbe Periode ausreichend
Wie lautet ein Algorithmus zur Detektion von Linien bei der Hough-Transformation mit der Polardarstellung?
Initialisiere “leeren” Parameteraum H(θ,ρ)
Iteriere über Binärbild I für alle Pixelpositionen (x,y):
falls I(x,y) > 0 (“Linienpixel”): Für alle (θ,ρ) im Hough-Raum, die eine Gerade beschreiben, welche den Bildpunkt enthält: erhöhe (akkumuliere) H(θ,ρ) = H(θ,ρ)+1
Maxima in der Hough-Transformierten korrespondieren zu präganten Linien im Binärbild
Position der lokalen Maxima geben Parameter der Linien an
Je mehr Punkte, desto robuster der Ansatz
Wie sieht der Parameterraum für die Detektion von Kreisen bei der Hough-Transformation aus?
Kreisgleichung: (x-xc)^2 + (y-yc)^2 -r^2 = 0
[xc, yc, r] : Parameterraum (3 DOF!)
xc,yc -> Kreismitte
Iteration über verschiedene Radien bei der Kreissuche
Häufig: Eingrenzung bzw. Startwert
Vorteile gegenüber Features wie Circularity:
Kreis muss nicht vollständig sein oder kann überlappen
Radius-Range kann für Klassifikation benutzt werden
Was ist der Ansatz beim Watershed-Algorithmus?
Bisher:
Zuordnung zu einem gemeinsamen Label und gemeinsame Merkmalsableitung
Zusammenhängende Objekte wurden nicht getrennt
Lösungsansatz: Wasserscheide-Methode (Watershed)
Häufige Anwendungen: Segmentierung von Aggregatstrukturen wie Zellen, Poren, Partikel, etc.
Grauwertbild wird als “Höhenlandschaft” interpretiert und mit “steigendem Wasserstand geflutet”
Dort, wo sich unterschiedliche “Wasserbecken” berühren, wird eine “Scheidewand” gezogen
Wie muss das Grauwertbild vorverarbeitet werden, damit pro Region nur einmal geflutet wird?
Häufig umfangreiche Vorverarbeitung:
Morphologische Filter
Kantenfilter
Hoch-/Tiefpass
Marker bassierte Wasserscheidemethode
Was ist der Ansatz bei der Marker-Based Watershed Transformation?
Wasser tritt nur aus “definierten Quellen” (Markern) aus, welche nicht dem jeweiligen lokalen Grauwertminimum entsprechen müssen
Welche Möglichkeiten gibt es für ein Marker-Based Watershed Transformation?
Möglicher Algorithmus:
Separation des Vordergrundes über Grauwertmorphologie
Berechnung der lokalen Maxima in jeder morphologischen Region (~Fensterung)
Weitere morphologische Nachbearbeitung
Separation des Hintergrundes über morphologische Operatoren
“Thinning” des Hintergrundes
Watershed auf Basis des Hintergrundskellets und der Vordergrund-Regionsmaxima (3. & 5.)
Andere Möglichkeit:
Binarisierung des Eingangsbildes
Konturfindung & Distanztransformation
Marker lokale Maxima
Watershed
Last changed2 years ago