2012-03-08 10 views
6

Moim celem jest wykrycie wzoru żyły liści, które charakteryzują różne gatunki roślinWykrywanie żył w liściach?

już zrobione następujące:

oryginalnego obrazu:

enter image description here

Po adaptacyjną progowanie:

enter image description here

Jednak żyły nie są tak jasne i ulegają zniekształceniu, Czy jest jakiś sposób mogę uzyskać lepszy wyświetlamy

EDIT:

Próbowałem kolor wartości odcięcia moje wyniki są nadal niezadowalające pojawia się następujący obraz

enter image description here

Proszę o pomoc

Odpowiedz

5

fakt tha t jego obraz w formacie JPEG da artefakty "blokowe", które w zamieszczonym przykładzie powodują, że większość kwadratowych obszarów wokół żył ma dużo szumu, więc najlepiej pracuj nad obrazem, który nie został poddany kompresji stratnej. Jeśli nie jest to możliwe, spróbuj przefiltrować obraz, aby usunąć niektóre zakłócenia.

Żyłki, które chcesz wyodrębnić, mają inny kolor niż tło, liść i cień, więc jakiś próg koloru może być dobrym pomysłem. Był niedawny S.O. pytanie z kodem, który może pomóc here. Po tym, jakaś adaptacyjna normalizacja pomogłaby zwiększyć kontrast przed progiem.

[edycja]
Może próg nie jest krokiem pośrednim, który chcesz zrobić. Wykonałem następujące czynności, filtrując w celu usunięcia artefaktów jpeg, wykonując matematykę CMYK (więcej cyjanu i czerni), a następnie stosując adaptacyjne wyrównanie. Jestem prawie pewny, że mógłbyś wtedy produkować punkty (subpiksele) za pomocą gradientów obrazu i supresji bez maksimum, a może użyć jasności w każdym punkcie i właściwości struktury żyły (głównie łączącej się w punkcie stycznym) dołącz punkty do linii.

Example of processed leaf image

1

To brzmi jak coś, co zrobił w college'u z sieci neuronowych. Sieć neuronowa jest trochę trudna, więc nie pójdę tam. W każdym razie, wzorce są idealnymi kandydatami do transformacji 2D Fouriera! Oto możliwe schemat:

  1. Masz dane treningowe i dane wejściowe
  2. Twoje dane są reprezentowane jako 2D transformaty Fouriera
  3. Jeśli baza danych jest duża należy uruchomić PCA na wynikach transformacji do konwersji spektrogram 2D ​​do spektrogramu 1D
  4. Porównaj odległość Hamminga, testując widmo (po PCA) 1 obrazu ze wszystkimi obrazami w zestawie danych.

Powinieneś spodziewać się rozpoznawania ~ 70% przy użyciu takich prymitywnych metod, o ile obrazy mają mniej więcej taki sam obrót. Jeśli obrazy nie mają tego samego obrotu, być może trzeba użyć SIFT. Aby uzyskać lepsze rozpoznanie, będziesz potrzebować bardziej inteligentnych zestawów treningowych, takich jak ukryty model Markowa lub sieć neuronowa. Prawda jest taka, że ​​uzyskanie dobrych wyników dla tego rodzaju problemu może wymagać sporo pracy.

Check out: https://theiszm.wordpress.com/2010/07/20/7-properties-of-the-2d-fourier-transform/

+0

Naprawdę interesujące informacje Spróbuję to rozpracować – vini

4

W przeszłości zrobiłem dobre doświadczenia z algorytmu wykrywania krawędzi difference of Gaussian. Co zasadniczo działa tak: Rozmycie obrazu dwa razy z gaussian blurr algorithm, ale z różnicą rozmycia promieni. Następnie oblicza się różnicę między oboma obrazami.

Piksel z tym samym kolorem pod sobą spowoduje ten sam blured kolor. Piksel w różnych kolorach pod każdym z nich nawiąże gradient, który zależy od promienia rozmycia. Dla większego promienia gradient będzie się rozciągał bardziej daleko. Dla mniejszych nie.

W zasadzie jest to filtr pasmowoprzepustowy. Jeśli wybrane promienie są niewielkie, próżne wille tworzą 2 "równoległe" linie. Ale ponieważ żyły liści są małe w porównaniu z przedłużeniami obrazu, najczęściej znajdują się promienie, w których żyła daje 1 linię.

Tutaj dodałem przetworzone zdjęcie. kroki zrobiłem na tym zdjęciu:

  1. desaturate (grayscaled)
  2. różnica Gaussa. Tutaj pomieszałem pierwszy obraz o promieniu 10 pikseli i drugim obrazie o promieniu 2 pikseli. Wynik możesz zobaczyć poniżej.

To tylko szybko utworzony wynik. Sądzę, że optymalizując parametry, można nawet uzyskać lepsze. enter image description here