Skocz do zawartości
BuxBleed

Jaka kamera do przetwarzania obrazu na Raspbbery PI ?

Pomocna odpowiedź

Planuję zakup Raspbbery Pi 3 wraz z podstawowymi akcesoriami i kamerką. Głównym powodem jest nauka linuksa, programowania, potrzebuję też jakiejś platformy żeby odpalić na niej system wizyjny do robota mobilnego.

Martwią mnie ciężkie obliczenia numeryczne których wymaga cyfrowe przetwarzanie obrazów, korzystam z biblioteki OpenCV. Pomyślałem, że dobrym pomysłem był by zakup kamery z własnym procesorem który już wstępnie by konwertował obraz do jakiegoś jpeg i wysyłał go przez jakąś magistralę ( I2C, SPI, UART) do maliny w celu dalszego przetworzenia. Pozwoliło by to po części odciążyć główny procesor maliny od obliczeń numerycznych ( przynajmniej w teorii).

Mój skromny budżet wynosi 250zł.

Mam na oku 2 kamerki:

Kamerka1 - Duża ilość FPS. Tutaj martwi mnie niska rozdzielczość VGA i programowanie w Pythonie, nie znam tego języka. Wydaje mi się że C++ byłby dużo lepszy jeśli głównym celem jest optymalizacja działania programu.

Kamerka2 - Duża rozdzielczość i sporo FPS, niestety małe pole widzenia.

Jeśli macie jakieś propozycje, tudzież rady co do zakupu kamerki bądź inne wskazówki to bedę bardzo wdzięczny. Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Zacznijmy od tego, że przesyłanie pikselków po I2C, SPI czy UART będzie dużo, dużo wolniejsze od przesyłania tego obrazu przez natywne złącze kamery, które Raspberry Pi ma, albo nawet USB.

Po drugie, chyba sobie nie zdajesz sprawy o jakich mocach obliczeniowych myślisz. Pi 3 ma naprawdę spory 64-bitowy, 4-rdzeniowy procesor taktowany gigahercowym zegarem, do tego bardzo dużo szybkiej pamięci RAM, dwie warstwy cache-u i sprzętowe operacje zmiennoprzecinkowe. A to jeszcze zanim zaczniemy mówić o sprzętowo dopalanej karcie graficznej.

OpenMV to ARM Cortex-M7 taktowany dwustoma megahercami, z pamięcią ledwo wystarczającą na przechowanie jednej klatki z kamery. ArduCam nie ma żadnego procesora. Więc co by tu miało co "odciążać"? Przecież procesor w RPI3 nawet tego nie zauważy, to mniej więcej tak, jakbyś chciał tira mopedem holować, żeby szybciej jechał.

Udostępnij ten post


Link to post
Share on other sites

Więc po prostu dedykowana kamerka ? Chodzi mi o zastosowania w robotyce mobilnej, żadne robienie zdjęć i kręcenie filmów. Tylko odbieranie obrazu i przetwarzanie go w czasie rzeczywistym.

Udostępnij ten post


Link to post
Share on other sites

Nie mam pojęcia co masz tutaj na myśli przez "tylko odbieranie i przetwarzanie obrazu" — wszystko się rozbija o to co dokładnie chcesz robić i jak to napiszesz. No i nie wiem też co ma znaczyć "w czasie rzeczywistym" — to znaczy z jakim opóźnieniem? Bo opóźnienie będzie zawsze.

Udostępnij ten post


Link to post
Share on other sites

No jak nietrudno się domyślić zależy mi na zredukowaniu opóźnień do minimum. Może nieprecyzyjnie się wyraziłem, określenie "w czasie rzeczywistym" miało określać natychmiastową reakcje układu, z punktu widzenia człowieka, dla procesora to cała wieczność 😉 .

Chodzi mi o takie zastosowania w robotyce mobilnej na przykład: roboty śledzące, sterowane wizyjnie manipulatory, wykrywanie kodów QR, wykrywanie obiektów (twarze, gesty, tablice rejestracyjne etc.)

Mam wątpliwości szczególnie co do tego ostatniego. Spotkałem się z opiniami na zagranicznych forach jakoby Raspberry Pi jest za słabe do takich celów.

Nigdy wcześniej nie miałem do czynienia z minikomputerami. Jedynie z arduino i uC, wybór padł na malinę bo ma najlepsze wsparcie, najłatwiej będzie znaleźć pomoc. Jednak jeśli były by jakieś równie ciekawe platformy których kwota zamknęła by się w powiedzmy 700zł wliczając w to minikomputer, kamere, zasilacz i całe te akcesoria to zamieniam się w słuch 😉

Udostępnij ten post


Link to post
Share on other sites

Wszystko zależy od parametrów. Jak chcesz policzyć 1000 twarzy na wideo 70FPS wysokiej rozdzielczości, to raczej słabo. Jak potrzebujesz pozycję AprilTaga wielkości kartki A4 znajdującego się o 2m od kamery cztery razy na sekundę, to bez problemu. Nie możemy ci nic polecić dopóki nie wiesz ile tego przetwarzania tam ma być i jak trudne jest (oraz jak dobrze zaimplementowane).

Udostępnij ten post


Link to post
Share on other sites

Na pewno potrzebowałbym właśnie wykrywania tych znaczników bo właśnie realizuje taki projekt, więc między innymi potrzebowałbym czegoś co by wykrywało położenie jednego znacznika względem drugiego będącym odniesieniem. Możliwie najszybciej jak się da 😉

Udostępnij ten post


Link to post
Share on other sites
Pomyślałem, że dobrym pomysłem był by zakup kamery z własnym procesorem który już wstępnie by konwertował obraz do jakiegoś jpeg

Dedykowane kamery do raspberry właśnie to robią. Nie w procesorze kamery, ale w procesorze graficznym maliny. Dzięki temu konwertowanie do np. jpeg nie obciąża CPU.

Udostępnij ten post


Link to post
Share on other sites

No ale jakie duże te znaczniki i na jakie odległości? Oraz z jaką dokładnością to ustalanie pozycji?

Może zacznij od napisania swojego programu po prostu z webcamem na pececie i zmierzenia jakie szybkości i rozdzielczości są konieczne?

Udostępnij ten post


Link to post
Share on other sites

Jeden znacznik odniesienia może być nawet A4, openCV ma bibliotekę do generowania i przetwarzania takich znaczników, więc kod jest już jak sądzę dobrze zoptymalizowany.

Z drugim będzie już gorzej, bo będzie miał wymiary maksymalnie 5cm x 5cm do tego kamerka na wysokości około metra, zawieszona na suficie czy jakimś gimbalu.

BTW: Za rok mam kończę inżynierkę, może malina pozwoliłaby mi zrobić jakiś ciekawy projekt na pracę dyplomową ? 😉

Udostępnij ten post


Link to post
Share on other sites

Nieistotne na jakiej wysokości. Istotne jak daleko od kamery. No i jakie pole widzenia ma ta kamera. Wtedy możesz policzyć jaką rozdzielczość potrzebujesz, żeby ten znacznik wykryć, po sprawdzeniu przy ilu pikselach wielkości twój algorytm działa najsprawniej.

Udostępnij ten post


Link to post
Share on other sites

No to chyba zdecyduje się na zakup Raspberry Pi Camera HD v2 8MPx, myślę chyba będzie najlepszą opcją.

Udostępnij ten post


Link to post
Share on other sites

Weź najpierw napisz przykładowy program i sprawdź co ci potrzeba zanim zaczniesz cokolwiek kupować.

Udostępnij ten post


Link to post
Share on other sites

Nie mam jeszcze gotowego programu do tego projektu. Pisałem program wykrywający i namierzający wybrany kolor z przestrzeni HSV korzystając z kamerki internetowej 0.3mpx. No super namierzało pozycję kartki o wymiarach 6 cm x 6 cm nawet z kilku metrów. Działający program zajmował cały jeden rdzeń procesora i7 7700HQ. Ze znacznikami aruco nic jeszcze nie robiłem.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...