2010-05-03 17 views
6

Zasadniczo chcę znaleźć położenie małego obrazu w pikselach w dużym obrazie. Szukałem czegoś podobnego, ale nie miałem szczęścia.Znajdź pozycję obrazu wewnątrz większego obrazu

+2

Czy mały obraz będzie dokładną, piksel po pikselu, kopią regionu na większym obrazie? Jest to bardzo ważne przy wyborze algorytmu. – driis

Odpowiedz

0

Prawdopodobnie można użyć AForge Framework, aby zrobić coś takiego. Oferuje wiele narzędzi do przetwarzania obrazu. Możliwe, że użyjesz ekstrakcji obiektów typu blob do wydobycia obiektów typu blob, a następnie porównasz te obiekty blobowe z przechowywanym obrazem i sprawdzisz, czy pasują do siebie.

0

Jeśli obrazy są równe piksel po pikselach, można rozpocząć od wyszukania jednego piksela o tym samym kolorze co piksel (0,0) na małym obrazku. Po znalezieniu porównaj każdy piksel w obszarze, który byłby objęty małym obrazem. Jeśli nie ma różnic, znalazłeś swoją pozycję. Spróbuj ponownie, szukając następnego dopasowania pikseli (0,0).

0

Booyer-Moore Wyszukiwanie brzmi jak rozwiązanie tutaj, jeśli traktujesz piksele jako znaki i szukasz dokładnego dopasowania. Dużo szybsze niż wyszukiwanie na pikselach.

1

To zależy od tego, jak bardzo chcesz, aby wynik pasował do obrazu zapytania. Jeśli próbujesz dopasować odpowiednie części różnych fotorealistycznych obrazów, spójrz na stronę z Wikipedii: Feature detection. To, czego chcesz użyć, zależy od transformacji, jakiej oczekujesz od jednego obrazu, aby stać się drugim.

To znaczy, że jeśli szukasz dokładnego dopasowania piksel po pikselu, wyszukiwanie w trybie "brute force" jest prawdopodobnie złe. Może to być O(m^2*n^2) dla obrazu m*m używanego do wyszukiwania w obrazie n*n. Korzystając z lepszych algorytmów, można go poprawić do O(n^2), liniowo pod względem liczby pikseli. Zmniejszenie częstotliwości próbkowania obu obrazów i wykonanie hierarchicznego wyszukiwania może być dobrym podejściem.

Powiązane problemy