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

vini
źródło
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

dranxo
źródło
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.