Oto prosty proces:
- Przypisz pomiary tekstury do każdego regionu na obrazie.
- Użyj algorytmu etykietowania / algorytmu łączności regionu (lub algorytmu powiększania regionu), aby połączyć sąsiednie regiony o tej samej miary tekstury.
- Zaimplementuj prosty algorytm śledzenia krawędzi, aby śledzić kontur każdego regionu.
Miary tekstury Law to starsza, ale wciąż przydatna technika określania tekstury na obrazie, i może być wystarczająca do odróżnienia tekstury A od tekstury B na całym obrazie. Zobacz sekcję „Przepisy dotyczące energii tekstury energii” w artykule w Wikipedii:
http://en.wikipedia.org/wiki/Image_texture
W pierwszym kroku oblicz wszystkie miary tekstury i określ, która konkretna miara (np. Krawędź lub plamka) pozwala najłatwiej odróżnić jedną teksturę od drugiej. (Jeśli opublikujesz kilka zdjęć, pomogę ci zidentyfikować miarę tekstury).
Jeśli masz tylko dwie tekstury, A i B, możesz traktować je jako pierwszy plan i tło, i zadziała standardowy algorytm oznaczania regionu. Aby łatwiej było zobaczyć, co dzieje się w trakcie przetwarzania, możesz wygenerować nowy obraz, przypisując tekstury A (elementy tekstury, małe kawałki tekstury) do koloru białego, a tekstury B do koloru czarnego. Algorytmy oznaczania regionu i / lub algorytmy śledzenia konturu znajdowałyby wówczas połączone regiony biały i czarny. Funkcja findContours () w OpenCV będzie działać dobrze.
http://en.wikipedia.org/wiki/Connected-component_labeling
Ten sam artykuł w Wikipedii zawiera zarówno tradycyjny algorytm wieloprzebiegowy, jak i algorytm jednoprzebiegowy. Nie wdrożyłem opisanego tam algorytmu jednoprzebiegowego, ale pracowałem z algorytmem jednoprzebiegowym opisanym w artykule „Algorytm znakowania komponentów za pomocą techniki śledzenia konturów” autorstwa Chena i Changa. Artykuł autorstwa Chena i Changa opisuje również standardowy algorytm śledzenia konturów, który można szybko wdrożyć.
Jeśli masz więcej niż dwóch tekstur, a następnie można użyć przełomowym lub średniego przesunięcia algorytmu regionów klastra razem Po odwzorować tekstur kolorach. Chociaż to odwzorowanie z tekstury na kolor nie jest konieczne, ułatwia debugowanie i zrozumienie procesu.