Hier ist ein einfacher Vorgang:
- Weisen Sie jedem Bereich im Bild Texturmessungen zu.
- Verwenden Sie einen Regionsbezeichnungs- / Konnektivitätsalgorithmus (oder einen Regionswachstumsalgorithmus), um benachbarte Regionen mit demselben Texturmaß zu verbinden.
- Implementieren Sie einen einfachen Kantenverfolgungsalgorithmus, um die Kontur jeder Region zu verfolgen.
Laws Texturmaße sind eine ältere, aber immer noch nützliche Technik zum Bestimmen der Textur in einem Bild. Sie können ausreichen, um Textur A von Textur B im gesamten Bild zu unterscheiden. Siehe den Abschnitt "Gesetze Textur Energie Maßnahmen" im Wikipedia-Artikel:
http://en.wikipedia.org/wiki/Image_texture
Berechnen Sie als ersten Schritt alle Texturmaße und bestimmen Sie, mit welchem bestimmten Maß (z. B. Kante oder Punkt) Sie eine Textur am einfachsten von der anderen unterscheiden können. (Wenn Sie einige Bilder posten, kann ich Ihnen helfen, ein Texturmaß zu identifizieren.)
Wenn Sie nur zwei Texturen haben, A und B, können Sie sie als Vordergrund und Hintergrund behandeln, und ein Standardalgorithmus zur Beschriftung von Regionen funktioniert. Um leichter zu sehen, was bei der Verarbeitung passiert, können Sie ein neues Bild erstellen, indem Sie der Farbe Weiß A-Texel (Texturelemente, kleine Texturstücke) und der Farbe Schwarz B-Texel zuweisen. Regionsbeschriftungs- und / oder Konturverfolgungsalgorithmen würden dann die verbundenen weißen und schwarzen Regionen finden. Die Funktion findContours () in OpenCV funktioniert gut.
http://en.wikipedia.org/wiki/Connected-component_labeling
Der gleiche Wikipedia-Artikel enthält sowohl den traditionellen Multipass-Algorithmus als auch einen Single-Pass-Algorithmus. Ich habe den dort beschriebenen Single-Pass-Algorithmus nicht implementiert, aber ich habe mit dem Single-Pass-Algorithmus gearbeitet, der in dem Artikel "Ein Algorithmus zur Kennzeichnung von Komponenten unter Verwendung der Konturverfolgungstechnik" von Chen und Chang beschrieben ist. Das Papier von Chen und Chang beschreibt auch einen Standardalgorithmus zur Konturverfolgung, der schnell implementiert werden kann.
Wenn Sie mehr als zwei Texturen haben, können Sie einen Wasserscheiden- oder Mittelwertverschiebungsalgorithmus verwenden, um Regionen zu gruppieren, nachdem Sie Texturen Farben neu zugeordnet haben. Obwohl diese Neuzuordnung von Textur zu Farbe nicht erforderlich ist, erleichtert sie das Debuggen und Verstehen des Prozesses.