Java, computer vision i real-time

0

Witam,

Przygotowuję oprogramowanie pracujące w dziedzinie Computer Vision w czasie rzeczywistym. W sieci ciężko znaleźć jakieś konkretne przykłady i informacje na temat tego typu rozwiązań w Javie.

Czy Java jest dobrym rozwiązaniem w tej dziedzinie?

Na myśl przychodzi oczywiście alternatywa w postaci C++ (OpenCV i GIL), ale nie ukrywam, że wolałbym to pisać w Javie. Problem jednak w tym, że nie chciałbym pracować na małym obrazku z prędkością 15fps, a tego się boję w przypadku Javy. Czy ktoś miał może jakieś doświadczenia?

Z góry dzięki za pomoc!!

trzewiczek

0

Jest możliwe na standardowej sunowskiej JVM generowanie obrazu w rozdzielczości do 1024x768 z prędkością 75-80 ramek na sekundę ponieważ zwykle akceleracja sprzętowa planu płaskiego działa. Dopiero przy 1280x1024 obraz dławi się do ok. 50 fps. A i wtedy samo wyświetlanie obrazu zajmuje jakieś 100 ms z każdej sekundy, więc aż 900 ms można przeznaczyć na obliczenia. Największym problemem jest pamięć. Programy w Javie kompletnie jej nie kontrolują, a tym samym w razie jakiegoś wąskiego gardła potrafią sypnąć wianuszkiem wyjątków po których może się już nic nie podnieść.
Bez uzyskania akceleracji sprzętowej generowanie klatek w takiej rozdzielczości spada do ok. 17-18 fps, co praktycznie uniemożliwia zastosowanie (przenośnej) javy do normalnego audio-video (to właśnie to czego się obawiasz). Poszukaj w sieci czegoś o "active rendering".
Wersja nieprzenośna czyli kod Javy w całości wywołujący procedury JNI/JNA nie różni się niemal nic wydajnością od kodu w C++. Tyle, że interfejs (procedury wołające api systemu) trzeba sobie napisać samemu, a Java traci też wtedy dużą część swojej niezawodności.

0

Dzięki wielkie za info. Cały czas zastanawiam się, czy jednak nie przesiąść się na C++. Jakkolwiek jest to wieksza robota od strony produkcji to jednak ilość narzędzi, które są dostępne właśnie w dziedzinie Computer Vision oraz ogólnie pracy z obrazem jest spora.

Nie jestem aż tak mocno zdeterminowany do pracy w Javie, żebym walczył z JNI/JNA. Straszy mnie też spadek wydajności do 17-18 fps przy braku wspomagania i ta pamięć....

Chyba przejrzę dokładniej OpenCV i wtedy podejmę decyzję.

Tak czy siak - wielkie dzięki !!!

trzewiczek

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.