Segmentowanie tabletek z tła

9

Niedawno zacząłem od przetwarzania obrazu i podjąłem związany z tym kurs w szkole Grad. Ale mam już projekt bez zbyt dużej ilości informacji na ten temat, jednak poczyniłem pewne postępy. Próbuję posegregować pigułki według ich pochodzenia. W przypadku zdjęć z kontrastowym tłem udało mi się posegmentować pigułki metodą Otsu. Jeśli chodzi o obrazy o podobnym tle, metoda Otsu nie do końca działa. Czytałem sporo artykułów na temat podziału na segmenty, ale większość artykułów, które przeczytałem, używa ręcznej wartości progowej w zależności od rodzaju obrazu. Czy można wykryć prawidłową wartość progową i automatycznie ustawić próg obrazu i zastosować techniki takie jak sadzenie nasion lub tworzenie klastrów w celu segmentacji obrazu?

Przestrzeń kolorów, z której korzystam, to L a b *, więc byłbym wdzięczny, gdybyś mógł polecić odpowiednią przestrzeń kolorów, której powinienem również użyć.

Obrazy, o których mowa:

oryginał 1

wprowadź opis zdjęcia tutaj

wynik 1

wprowadź opis zdjęcia tutaj

oryginał 2

wprowadź opis zdjęcia tutaj

wynik 2

wprowadź opis zdjęcia tutaj

oryginał 3

wprowadź opis zdjęcia tutaj

wynik 3

wprowadź opis zdjęcia tutaj

GamingX
źródło
7
Czy możesz przesłać zdjęcie? Co z progiem adaptacyjnym?
Quentin Geissmann
3
Co z etodami Zestawu Poziomów i Aktywnymi Konturami? Możesz segmentować pigułki z tła nie tylko według wartości intensywności (progu), ale również na podstawie tekstury obiektu. Zastosowana przestrzeń kolorów jest tylko układem współrzędnych dla kolorów - użyj takiego, który najlepiej rozróżnia kolory na obrazie ze względu na segmentację. Na przykład, jeśli obrazy są w odcieniach fioletu, można użyć konwersji w skali szarości z większą wagą na komponentach czerwonym i niebieskim.
Libor,
Quentin: Nie mam wystarczającej reputacji, aby przesłać zdjęcia.
GamingX
@Syed Prześlij je gdzieś publicznie i jeśli chcesz, dodaj linki do pytania.
Maurits

Odpowiedzi:

2

Jeśli chcesz zastosować metodę progowania, powinieneś zastosować adaptacyjną metodę progowania, jeśli występują duże różnice w oświetleniu, jak na zdjęciu z 3 przykładu ( pytanie dsp tutaj ).

Powinieneś także poeksperymentować z przestrzeniami kolorów, to proste: skrypt do dekompozycji obrazu na różne przestrzenie kolorów powinien mieć nie więcej niż kilka linii długości, a wielu przeglądarek obrazów ma tę opcję dostępną. Ten najlepszy powinien być łatwy do ustalenia tylko wizualnie. Jeśli chcesz przeczytać o przestrzeniach kolorów, nie ma tutaj dobrego pytania o dsp .

Wreszcie możesz wypróbować inne podejście. Jednym z pomysłów byłoby wykonanie niedoskonałej segmentacji, a następnie wykrycie krawędzi , a na końcu zastosowanie czegoś takiego jak transformacja Hougha dla okręgów, która również działa dobrze na (niepełnych) łukach koła. (ten pomysł oczywiście dotyczy tylko okrągłych tabletek)

Penelopa
źródło
Jaki byłby dobry pomysł na niedoskonałą segmentację?
GamingX
@Syed Wygląda jak OpenCV Canny (wykrywanie krawędzi), a nawet Hough pracuje nad szarymi obrazami (bez konieczności progowania), więc możesz pominąć krok progowania razem. Próg - segmentacja zależy w dużej mierze od zdjęć. Ale prosta odpowiedź brzmi: przepraszam, nie wiem. Myślę, że metoda nieadaptacyjna byłaby wystarczająca, ale nie mogłem zasugerować konkretnej, ponieważ nie robiłem tego przez jakiś czas. Po prostu zrób kilka badań na temat prostych metod segmentacji;)
penelopa
2

Okrągłe transformaty z biblioteki OpenCV są odpowiednie dla tej aplikacji. Będziesz musiał uruchomić szereg promieni, ale najlepsza odpowiedź z grubsza da ci granice i centra pigułek. Zauważ, że musisz znaleźć uogólnione transformaty pokrzywkowe, aby znaleźć pigułki nieokrągłe. Będzie działać, nawet jeśli pigułki się zatkają lub brakuje punktów na krawędzi.

Próg może być złym rozwiązaniem tego problemu, ponieważ w terenie możesz wpaść w sytuacje, w których żaden próg nie oddzieli pigułki od tła, dlatego algorytm zależny od względnych pozycji grup krawędzi jest lepszy.

Christian Chapman
źródło
1

Aby rozwiązać ten problem, musisz oddzielić tło i pierwszy plan. Oto rozwiązanie, proponuję ci:

1) przekonwertować obraz z Rgb na skalę szarości; Otrzymasz obraz, który nazywamy I1;

2) zastosuj filtr morfologiczny, erozję przy użyciu dużego promienia, ewentualnie kilka razy ==> należy usunąć tabletkę przez erozję i uzyskać tylko tło; Otrzymasz nowy obraz I2;

3) odejmuje I2się I1, otrzymasz pierwszoplanowy tj pigułkę;

4) zastosuj kolejny filtr morfologiczny, aby wypełnić każdą dziurę w uzyskanej pigułce;

5) zastosuj filtr morfologiczny, erozję, mały promień, aby usunąć izolowany piksel.

Ta metoda nie wymaga żadnego progu, wykrycia kształtu, segmentacji kolorów ani niczego innego.

samir
źródło