Texturerkennung und Regionseigenschaften auf einem Bild


9

Ich habe ein interessantes Problem, das ich zu lösen versuche. Wenn wir beispielsweise ein Schwarzweißbild mit zwei Texturen (A und B) haben, interessiert es mich, die Pixelwerte der Grenzen zu kennen, die die einzelnen Texturen vollständig abdecken würden.

Ich dachte daran, eine Kreuzkorrelation der Vorlage (Legenden) auf dem Bild zu verwenden, die mir einen Cluster der Positionen geben würde. Gibt es jedoch eine Möglichkeit, diese zu verwenden, um die Pixelwerte der Grenzen zu erhalten (diese sind normalerweise unregelmäßig)? Gibt es auch einen anderen besseren Weg, dies zu tun?

Ein Beispiel aus der Praxis wäre die Erfassung der Niederschlagsregionen auf einer Karte mit drei Niederschlagsmengen pro Jahr. Jeder Ebene wird eine in der Legende vorhandene Textur zugewiesen, die für die Texturanpassung auf demselben Bild verwendet wird.


4
Es wäre nützlich, wenn Sie tatsächlich Beispiele und vielleicht einige vorläufige Lösungen teilen würden, die Sie versucht haben
Ivo Flipse

3
Laden Sie auf jeden Fall einige Beispielbilder hoch, damit wir verstehen, was Sie tun. Wie sind einige Regionen fest gefüllt und andere schraffiert? nps.gov/sagu/naturescience/images/…
Endolith

Wenn Sie Matlab haben, können Sie die Bildverarbeitungs-Toolbox verwenden. Wenn nicht, bietet die Website immer noch einen guten Überblick über Standardalgorithmen, die Sie möglicherweise verwenden möchten, beispielsweise die Funktion bwconncomp .
Mr. White

Antworten:


1

Hier ist ein einfacher Vorgang:

  1. Weisen Sie jedem Bereich im Bild Texturmessungen zu.
  2. Verwenden Sie einen Regionsbezeichnungs- / Konnektivitätsalgorithmus (oder einen Regionswachstumsalgorithmus), um benachbarte Regionen mit demselben Texturmaß zu verbinden.
  3. 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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.