Möchten Sie zwei verschiedene Bereiche im Bild finden, die gleich aussehen (gleiche Textur) oder eine Textur in einem Bild mit einer anderen abgleichen? Das zweite ist aufgrund unterschiedlicher Radiometrie schwieriger.
Hier ist ein grundlegendes Schema, wie die Ähnlichkeit von Bereichen gemessen werden kann.
- Sie schreiben eine Funktion, die als Eingabe einen Bereich im Bild erhält und einen skalaren Wert berechnet. Wie z.B. durchschnittliche Helligkeit. Dieser Skalar wird als Merkmal bezeichnet.
- Sie schreiben weitere solche Funktionen, um etwa 8-30 Merkmale zu erhalten, die zusammen einen Vektor bilden, der Informationen über den Bereich im Bild codiert.
- Berechnen Sie diesen Vektor für beide Bereiche, die Sie vergleichen möchten.
- Definieren Sie eine Ähnlichkeitsfunktion, die zwei Vektoren annimmt und ausgibt, wie ähnlich sie sind.
Sie müssen sich auf Schritte 2 und 4 konzentrieren.
Schritt 2: Verwenden Sie die folgenden Merkmale: Standardabweichung der Helligkeit, eine Art Eckendetektor, Entropiefilter, Histogramm der Kantenorientierung, Histogramm der FFT-Frequenzen (in x- und y-Richtung). Verwenden Sie Farbinformationen, wenn verfügbar.
Schritt 4: Sie können Kosinusähnlichkeit, Min-Max oder gewichtete Kosinusähnlichkeit verwenden.
Nachdem Sie etwa 4-6 solcher Merkmale und eine Ähnlichkeitsfunktion implementiert haben, beginnen Sie mit Tests. Sehen Sie sich die Ergebnisse an und versuchen Sie zu verstehen, warum oder wo es nicht funktioniert. Fügen Sie dann ein spezifisches Merkmal hinzu, um dieses Thema abzudecken. Zum Beispiel, wenn Sie feststellen, dass eine Textur mit großen Flecken als ähnlich zu einer Textur mit winzigen Flecken angesehen wird, fügen Sie einen morphologischen Filter hinzu, der die Dichte von Objekten mit einer Größe von> 20 Quadratpixel berechnet.
Wiederholen Sie den Prozess des Identifizierens von Problemen und Gestaltens spezifischer Merkmale etwa 5 Mal, und Sie werden sehr gute Ergebnisse erzielen.