2011-11-10 17 views
17

Szukam algorytmu szybkiego przerzedzania, który można łatwo zaimplementować za pomocą OpenCV. Wzmianki o bibliotece wynikają z faktu, że pewne rzeczy można zrobić migiem, np. Mathematica lub MATLAB, które wymagałyby linii kodu ręcznego w OpenCV + C.Algorytm szybkiego przerzedzania

Algorytm musi spełniać kryteria grubości 1 piksela i połączenia.

Czy ktoś ma jakieś doświadczenie w implementacji jednej z dostępnych dostępnych algorytmów? - Dosłownie zepsute do wyboru pod ogromną ilością papierów, które Google zwymiotował. Pomogą w tym wszystkie wskaźniki we właściwym kierunku.

+0

"Ktoś ma jakieś doświadczenie" pytania typu zazwyczaj nie są dobrze odpowiedziano: czy masz bardziej szczegółowe pytanie? – James

+0

@Autopulated: to prawda, ale ja * am * zadaję pytanie nieco niejasne - istnieje kilka szybkich algorytmów przerzedzania, pytanie brzmi czy ktokolwiek zaimplementował dowolne użycie OpenCV i C/C++? – AruniRC

+0

Witaj @AruniRC, czy w końcu dostałeś satysfakcjonującą implementację? – zhy

Odpowiedz

10

dla kompletności wywodu, jestem delegowania tutaj zestawu algorytmów rozrzedzania zaimplementowałem przy użyciu OpenCV i C/C++, które znalazłem w sieci odpowiadając na pytanie this. Odpowiednio odpowiedział na to pytanie dla moich potrzeb. Umieszczanie ich tutaj, na wypadek, gdyby inni mieli podobne wymagania.

  1. OpenCV code for thinning (Guo i Hall algo, współpracuje z wejściami CvMat)
  2. The JR Parker implementation za pomocą OpenCV
  3. Ewentualnie bardziej wydajny kod here (używa OpenCV zoptymalizowane metody dostępu dużo, jednak większość strony jest po japońsku!)
+0

W efekcie, trzecia z nich działa naprawdę wolniej niż w końcu odpowiedź @flowfree na – zhy

4

Użyłem Zhang-Suen oraz Guo-Hall; oba przyniosły zadowalające wyniki, ale nie najlepsze. Następnie spróbowałem "zmodyfikowanego algorytmu przecinania równoległego" autorstwa Y. Y. ZHANG i P.S.P Wanga. To było znacznie lepsze niż poprzednie dwa algorytmy. Każdy, kto szuka dobrego algorytmu przerzedzania, powinien go wypróbować, ponieważ jest szybszy i skuteczniejszy niż pozostałe dwa.

+0

czy znalazłeś jakieś wdrożenie lub artykuł wyjaśniający tę modyfikację? Czy możesz opracować, ile to przyspieszy? – pzo

+0

Jeśli pobierzesz badania dokumenty i ich odczytanie, zauważysz, że metoda Zhang-Wanga wykonuje tylko jedną iterację, a dodatkowo ma kilka różnych warunków do sprawdzenia Przetworzyłem obrazy binarne o rozmiarze 1600 * 1200. Zajęło to około 5 sekund dla Zhang- Suen i ok. 3 s dla metody Zhang-Wang – marc1886

+0

Cześć Vikramjit, czy możesz podzielić się implementacją lub opisać, jak połączyć dwa ostatnie warunki? Czytałem gazetę, ale nie byłem pewien, jak połączyć warunki p11 = 1, p6 = 0, przy warunkach p8 = 0, p15 = 1 dla zmodyfikowanego algorytmu przerzedzania. – abe