Analiza sekwencji obrazów

Odpowiedz Nowy wątek
2014-05-30 23:55
0

Witam,

Mam do zrobienia program, który będzie miał za zadanie automatyczną analizę sekwencji zdjęć. Dostałem folder z 2700 zdjęciami tętnicy, której średnica się zmienia i moim zadaniem jest stworzenie programu, który będzie w stanie mierzyć tę średnicę.

http://imageshack.com/a/img844/7196/fifc.jpg <-- Przykładowe zdjęcie. Reszta jest identyczna, jedynie średnica tętnicy ulega zmianie.

Po pierwsze muszę na zdjęciu jakoś wykryć sam element tętnicy, następnie jego krawędzie i zmierzyć odległość między górną i dolną krawędzią, ale nie wiem jak się za to zabrać.

Prosiłbym o podpowiedź z jakich bibliotek skorzystać. Chodzi po pierwsze o to jak przeprowadzić analizę sekwencji zdjęć, czy wczytać je do tablicy i po kolei analizować, czy jakoś inaczej oraz o sam pomiar średnicy.

edytowany 1x, ostatnio: Mixx, 2014-05-30 23:56

Pozostało 580 znaków

2014-05-31 00:26
1
Mixx napisał(a):

Prosiłbym o podpowiedź z jakich bibliotek skorzystać.

OpenCV

Mixx napisał(a):

Chodzi po pierwsze o to jak przeprowadzić analizę sekwencji zdjęć, czy wczytać je do tablicy i po kolei analizować

Moim zdaniem lepiej wczytywać po zdjęciu, w sensie wczytanie zdjęcia, analiza, zapisanie wyniku i zapętlić.

Mixx napisał(a):

Po pierwsze muszę na zdjęciu jakoś wykryć sam element tętnicy, następnie jego krawędzie i zmierzyć odległość między górną i dolną krawędzią, ale nie wiem jak się za to zabrać.

Czy aparat był umocowany jakoś na stałe? Jeżeli nie, to będziesz miał problem z określeniem średnicy - będziesz znał rozmiar w pikselach ale dla każdego zdjęcia może on oznaczać inną średnicę wyrażoną w centymetrach. Jeżeli aparat był umocowany na stałe, to odchodzi Ci problem z przeliczeniem piksele -> mm. W takiej sytuacji mógłbyś również zawęzić obszar na którym może występować tętnica. Samą tentnicę powinieneś był odnależć nawet prostym filtrem do detekcji krawędzi (wg. tego nawet najprostszy operator Sobela powinien dać radę

edytowany 1x, ostatnio: airborn, 2014-05-31 00:28

Pozostało 580 znaków

2014-06-01 00:30
0

Wiem już jak wykonać filtrację krawędziową. Otrzymuję coś takiego:
http://imagizer.imageshack.us/a/img837/2451/ju98.jpg

Próbowałem wykryć tętnicę jako jeden blob przy użyciu biblioteki blobscanner, ale nie udaje się to bo wykrywa wiele różnych mniejszych elementów. Ma ktoś pomysł w jakiy sposób zmierzyć tę wysokość/średnicę tętnicy?

Pozostało 580 znaków

2014-06-01 11:49
0

Jeżeli wszystkie tętnice mają podobny kolor, to swoją analizę możesz oprzeć na wykrywaniu tego koloru oraz usuwania szumu (małych skupisk poszukiwanego koloru).
Kilka lat temu robiłem coś takiego w C za pomocą OpenCV, ale szczegółów nie pamiętam.
Widzę jednak, że teraz OpenCV ma już binding do Javy: http://opencv.org/opencv-java-api.html


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5

Pozostało 580 znaków

2014-06-01 12:26
0

Moim zdaniem powinieneś popracować jeszcze nad wstępną filtracją, tak aby po detekcji krawędziowej odsiać większość tych szumów które teraz masz. Poeksperymentuj z jakimiś rozmyciami, dylacjami i erozjami zanim będziesz robić filtrację krawędziową.

Pozostało 580 znaków

2014-06-01 12:54
0

Moim zdaniem samo wykrywanie krawędzie nie sprawdzi się w tym przypadku, gdyż na zdjęciu są też inne obiekty, które nas nie interesują.
Oczywiście można spróbować połączyć obydwie techniki - wykrywanie określonego koloru oraz krawędzi (aby pomijać krawędzie obiektów o innych kolorach).


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0