Proste rozpoznawanie obiektów
=== ROZWIĄZANE ===
Dziękujemy za sugestie i komentarze. Pracując nad algorytmem flood_fill podanym wRozpoczęcie wizualizacji Pythona książka (Rozdział 9 - Przetwarzanie obrazu) Zaimplementowałem to, co chciałem. Mogę policzyć obiekty, uzyskać otaczające prostokąty dla każdego obiektu (a więc wysokość i szerokość), a na końcu mogę skonstruować tablice lub macierze NumPy dla każdego z nich.
Chociaż nie jest to zoptymalizowane podejście, robi to, co chcę. Kod źródłowy (lab2.py) i plik png (lab2-particles.png), którego używam, zostały umieszczonehttp://code.google.com/p/ccnworks/source/browse/#svn/trunk/AtSc450.
Musisz zainstalować NumPy i PIL, a matplotlib zobaczyć histogram. Rdzeń kodu znajduje się w funkcji objfind, w której występuje główna rekursywna akcja wyszukiwania obiektów.
Jedna dodatkowa aktualizacja:
SciPy'sndimage.label () robi dokładnie to, czego chcę.
Pozdrawiam zaDavid-Warde Farley iZachary Pincus z list dyskusyjnych NumPy i SciPy za wskazanie tego prosto w moje oczy :)
=============
Dzień dobry,
Mam obraz, który zawiera cienie cząstek lodu zmierzone przez spektrometr cząstek. Chcę być w stanie zidentyfikować każdy obiekt, dzięki czemu mogę go później sklasyfikować i wykorzystać w moich obliczeniach.
W istocie, jestem gotów zaimplementować tylko rozmyte narzędzie wyboru, w którym mogę po prostu wybrać każdą jednostkę.
Jak mogę łatwo rozwiązać ten problem? (Najlepiej używając Pythona)
Dzięki.
UWAGA: W moim pytaniu odnoszę się do poszczególnych połączonych pikseli jako obiektów lub jednostek. Mam zamiar je wyodrębnić i utworzyć reprezentacje tablicy NumPy, jak pokazano poniżej. (Tutaj używam górnego lewego obiektu; jeśli piksel istnieje, użyj 1, jeśli nie używasz 0. Kształt tego obiektu wynosi 3 na 3, co odpowiada wysokości 3 pikseli na szerokość 3 pikseli. Są to projekcje rzeczywistych cząstek lodu na domenę 2D , przy założeniu, że są one sferyczne i mają promień równoważny (wysokość + szerokość) / 2, a później nastąpi kilka skalowań - od pikseli do rzeczywistych rozmiarów i obliczeń objętości)
import numpy as np
np.array([[1,1,1], [1,1,1], [0,0,1]])
array([[1, 1, 1],
[1, 1, 1],
[0, 0, 1]])
Oto fragment obrazu, którego zamierzam użyć.
zrzut ekranu http://img43.imageshack.us/img43/2327/particles.png