Mam ciekawy problem, który próbuję rozwiązać. Na przykład, jeśli mamy czarno-biały obraz zawierający dwie tekstury (A i B), jestem zainteresowany znajomością wartości pikseli granic, które całkowicie pokryłyby poszczególne tekstury.
Myślałem o użyciu korelacji krzyżowej, która dałaby mi zbiór pozycji, szablonu (legend) na obrazie, ale czy istnieje sposób, aby to wykorzystać, aby uzyskać wartości pikseli granic (które są zwykle nieregularne)? Czy jest też inny lepszy sposób na zrobienie tego?
Przykładem tego może być wykrywanie regionów opadów na mapie pokazującej trzy poziomy opadów w ciągu roku. Do każdego poziomu przypisana jest tekstura obecna w legendzie, która jest używana do dopasowywania tekstur na tym samym obrazie.
image-processing
Lorem Ipsum
źródło
źródło
Odpowiedzi:
Oto prosty proces:
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.
źródło