Odmywanie obrazu dzięki lepszej ochronie krawędzi


12

Mam obraz wejściowy:

wprowadź opis zdjęcia tutaj

i wyjście wykrywania żyły dla liścia za pomocą filtra Gabor, ale wyjście jest naprawdę głośne:

wprowadź opis zdjęcia tutaj

Próbowałem użyć denoisingu odmiany całkowitej, jednak wyniki nie są dobre:

wprowadź opis zdjęcia tutaj

Jednak nie chcę stracić drobnych szczegółów w żyłach liścia, więc filtr środkowy nie będzie pasował do mojego problemu


jakie przetwarzanie wykonujecie na oryginalnym obrazie? Co chcesz wykryć?
— CharlesB

Użyłem filtra gabor na oryginalnym obrazie
— vini

Czy jesteś pewien, że filtr krawędziowy to właściwy sposób na wykrycie żył? Naprawdę staramy się wyodrębnić powierzchnię 3D z podświetleniem i jego cień, coś takiego może działać lepiej: dsp.stackexchange.com/a/687/29
— endolit

@vini Wygląda na to, że chcesz zrezygnować (stracić informacje o wysokiej częstotliwości) na jednej przestrzennej części obrazu, ale zachować informacje o wysokiej częstotliwości na innej przestrzennej części obrazu tak?
— Spacey

chcę zachować na obrazie tylko komponenty wysokiej częstotliwości, które w moim przypadku mają cienkie krawędzie w postaci żyłek liściowych
— vini

Odpowiedzi:


7

Wygląda na to, że chcesz odszumiać i zachować krawędzie. Czy rozważałeś środki nielokalne? Jest tu trochę kodu C ++ na GPL wraz z krótkim opisem algorytmu oryginalnych autorów tutaj: http://www.ipol.im/pub/algo/bcm_non_local_means_denoising/

Jedno zastrzeżenie, środki nielokalne są bardzo wolne, a wyniki mogą być wrażliwe na implementację, którą masz. Możesz również rozważyć minimalizację ROF, ponieważ jest szybka i dobrze chroni krawędzie. Oto kod Matlaba, który to robi: http://www.stanford.edu/~tagoldst/Tom_Goldstein/Split_Bregman.html


próbowałem jednak, że wyniki są niezadowalające
— vini

Słusznie. Istnieją sposoby rozwiązania problemu „odwracania obrazu binarnego”, ale nie mogę wymyślić żadnego łatwo dostępnego kodu.

Ten www.cmla.ens-cachan.fr/fileadmin/Membres/nikolova/ChanEseNikoSiap06.pdf może pomóc. Możesz także spróbować przeprowadzić segmentację obrazu na czarno-białym liściu z różnymi parametrami strojenia i zobaczyć, co otrzymujesz. Na tej stronie Split Bregman znajduje się kod segmentacji.

Próbowałem, że wciąż wyniki nie są wystarczająco dobre, chyba spróbuję czegoś innego
— vini

Hmm cholera. O ile mi wiadomo, środki nielokalne są najnowocześniejsze w denoisingu. Ponieważ masz obraz binarny, mogą istnieć inne rzeczy (wyszukiwanie „tekst denoising”? „Tekst nielokalny denoising”?), Ale nie mam pomysłów.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.