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
wynik 1
oryginał 2
wynik 2
oryginał 3
wynik 3
źródło
Odpowiedzi:
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)
źródło
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.
źródło
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
I2
się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.
źródło