Projekt OpenMV to inicjatywa mająca za zadanie tworzyć niedrogi, miniaturowy i łatwo dostępny system widzenia maszynowego, który oprogramować można w popularnym Pythonie. Twórcy tego systemu za cel wzięli sobie stworzenie, jak sami mówią "Arduino dla systemów widzenia maszynowego". Ich celem jest tworzenie systemu widzenia maszynowego, który byłby w zasięgu hobbystów i amatorów - tak finansowym, jak i merytorycznym. Wszystkie zaawansowane algorytmy, potrzebne do działania takiego systemu, zostały już stworzone i są preprogramowane w module, dzięki czemu bardzo łatwo wykorzystać go we własnej, dowolnej aplikacji.
OpenMV jest kamerą dla Arduino z bardzo potężnymi możliwościami. Moduł programuje się w Pythonie, a zintegrowane w systemie algorytmy pozwalają na rozpoznawanie obiektów, twarzy, detekcję kolorów etc. Wszystko to bez wielkiego wysiłku algorytmicznego i z możliwością prostej komunikacji pinami GPIO z modułami takimi jak Arduino.
Nowa kamera, która dołączyła do rodziny OpenMV - model H7, jest kolejną generacją tych systemów, następcą kamery M7, której sprzedano póki co ponad 10 tysięcy sztuk na całym świecie.
OpenMV H7 jest dwa razy potężniejsza niż jej poprzedniczka, OpenMV M7. Dzięki modułowej konstrukcji systemu możliwe jest np. wyjęcie z niej sensora i instalacja innego - kamery na podczerwień czy z globalną migawką.
Co mogę zrobić z wykorzystaniem kamery OpenMV?
Kamera z systemem widzenia maszynowego daje ogromne możliwości. Oto niektóre z nich:
* System rozpoznawania i śledzenia kolorowych obiektów;
* Robot podążający za linią;
* Własny mikroskop DIY z zaawansowanymi funkcjami.
Podstawowe funkcje wbudowane w system:
Śledzenie kolorowych obiektów - dzięki zaawansowanym algorytmom wbudowanym w system, OpenMV H7 może śledzić obiekty bez problemu osiągając prędkość przetwarzania na poziomie 80 klatek na sekundę. To dostatecznie dużo, by sterować z jej pomocą np. autkiem RC.
Dzięki zastosowaniu algorytmów tzw. Multi-Blob, system może śledzić dowolną ilość kolorowych przedmiotów w polu widzenia kamery. Wszystko dzięki segmentowaniu obrazu z wykorzystaniem 16 progów kolorów, dzięki czemu można realizować systemy takie jak śledzenie obiektów w konkretnym kolorze. System po wykryciu wszystkich plam barwnych na obrazie, dokona ich identyfikacji, a następnie scalenia w pojedyncze obiekty tych, które się na siebie nakładają. Kamera zwraca proste informacje na temat wielkości i położenia obiektu na obrazie, centroidzie, orientacji i wiele więcej. Wszystkie te dane obliczane są co klatkę, a dokładne ustawienia algorytmu edytować można z wykorzystaniem OpenMV IDE.
Detekcja tagów April , kodów QR, kodów kreskowych i innych
Kamera OpenMV H7 ma wbudowane algorytmy do dekodowania różnego rodzaju drukowanych kodów: April Tag, QR, kody kreskowe itp. Odczytuje je tak samo jak model M7, ale dwa razy szybciej.
Wbudowana biblioteka do odczytywania jedno- i dwuwymiarowych kodów jest najszybszym sposobem, w jaki dodać można tą funkcjonalność do dowolnej aplikacji z mikrokontrolerem. Autorzy wykorzystują popularne biblioteki napisane na desktopy, takie jak AprilTag2, ZBar czy libdmtx. Wszystko dzięki możliwości korzystania z Pythona.
Termowizja
Dzięki możliwości wymiany sensora w module, można w nim zainstalować kamerę FLIR Lepton 1/2/3, która pozwala na termoobrazowanie. Na obrazach z kamery termowizyjnej dokonywać można takiej samej analizy, jak na obrazach z zwykłych sensorów, jakie podpiąć można do OpenMV. Dzięki temu z łatwością można stworzyć systemy detekcji np. osób w pomieszczeniu.
Dodatkowo, moduł OpenMV H7 daje nam pełną kontrolę nad kamerą FLIR Lepton. W firmware systemu wbudowany jest moduł dedykowany do obsługi tej kamery. Dzięki temu uzyskanie informacji na temat np. absolutnej temperatury dowolnego z pikseli na obrazie nie jest jakimkolwiek problemem.
Wsparcie dla globalnej migawki
Dla osób, które wymagają ostrych i precyzyjnych zdjęć w systemach widzenia maszynowego, autorzy konstrukcji dają możliwość podłączenia sensora MT9V034. Jest to moduł kamery z globalną migawką, która pozwala na uniknięcie rozmycia i przesunięcia względem siebie poszczególnych linii obrazu, jak widać na poniższym porównaniu.
Sensor MT9V034 to monochromatyczna kamera z globalną migawką i wsparciem dla wyzwalania na żądanie. Może ona nagrywać filmy z prędkością do 80 klatek na sekundę przy rozdzielczości VGA/QVGA, do 200 FPS przy QQVGA oraz 400 FPS czy QQQVGA.
Tego rodzaju sensor jest szczególnie przydatny w aplikacjach, gdzie potrzebna jest perfekcyjna kontrola nad wyzwalaniem kamery i czasem jej ekspozycji – wszystko dzięki globalnej migawce.
Jeśli potrzebujemy większej mocy obliczeniowej do analizy obrazów zebranych OpenMV H7 to bez problemu możemy podpiąć ją do Raspberry Pi i wykorzystywać kamerę z opisywanym sensorem jako niedrogą kamerę przemysłową z globalną migawką i zewnętrznym wyzwalaniem.
OpenMV H7 wspiera sieci neuronowe – do procesora modułu załadować można prostą sieć neuronową CNN, taką jak na przykład LENET-6 do detekcji liczb na obrazie. Wsparcie dla sieci neuronowych w module zapewnia biblioteka ARMa CMSIS-NN.
Po zakończeniu kampanii crowdfundingowej na Kickstarterze projektanci modułu chcą skupić się na ćwiczeniu większej ilości sieci CNN, aby możliwe było, np. wykrywanie osób.
Specyfikacja
Kamera OpenMV H7 pracuje pod kontrolą mikrokontrolera STM32H743VIT6, który posiada między innymi (oprócz standardowych peryferiów, takich jak UART czy SPI):
* Rdzeń ARM Cortex-M7 pracujący przy 400 MHz, który zdolny jest do wykonywania 2 instrukcji na cykl zegara. Układ posiada również FPU o podwójnej precyzji;
* 1 MB pamięci RAM o szerokości szyny pamięci równej 64 bity, która taktowana jest 400 MHz zapewnia przepustowość do 3,2 GB/s, dzięki czemu idealnie nadaje się jako bufor klatek;
* 2 MB pamięci FLASH z 64-bitową szyną danych, która również pracować może z zegarem 400 MHz. Idealna do np. konwersji przestrzeni kolorów z wykorzystaniem tablic;
* Sprzętowy konwerter JPEG pracujący przy częstotliwości taktowania równej 200 MHz.
Powyższe cechy pozwalają na przesyłanie wysokiej jakości strumieniu wideo z kamery do OpenMV IDE – o wiele lepszych niż w modelu M7. System ten pracuje o wiele szybciej niż jej poprzednik. STM32H7 wykorzystany w H7 osiąga 2060 punktów w teście CoreMark. Jednocześnie układ ten pobiera zaledwie 110 mA (średnio) podczas przetwarzania obrazów i jest w stanie bardzo szybko przechodzić w stan uśpienia (w którym podtrzymywana jest zawartość pamięci SRAM), w którym pobiera zaledwie 2 mA. Wybudzenie systemu jest bardzo szybkie i może być zrealizowane z pomocą jednego z pinów I/O modułu.
MicroPython
Kamera OpenMV H7 pracuje oskryptowana przez w MicroPythonie stworzonym przez Damiena Georga. Pozwala on na tworzenie własnych skryptów dla mikrokontrolera w Pythonie 3. MicroPython jest bardzo popularnym systemem operacyjnym dla mikrokontrolerów, takich jak BBC Microbit, ESP8266 czy ESP32.
Pisanie skryptów na H7 w Pythonie daje ogromną przewagę nad pisaniem ich w C – o wiele szybciej ładują się one do układu – zajmuje to zaledwie sekundę; w przypadku C jest to istotnie więcej.
Firmware OpenMV H7 jest w pełni open-source, a sam układ można programować także w C, jeśli sobie tego życzymy.
OpenMV IDE
Kamera OpenMV H7 dostarczana jest z pakietem OpenMV IDE, który czyni programowanie bardzo prostym i przyjemnym. W środowisku OpenMV IDE znajdziemy prosty edytor plików tekstowych z możliwością edycji wielu skryptów naraz, terminal szeregowy do łączenia się z modułem oraz bufor ramek, który umożliwia oglądanie na bieżąco tego, co widzi kamera.
OpenMV IDE rozwijane jest już od dwóch lat. Środowisko to dostępne jest w wersjach na Windowsa, MacOSa, Linuksa w tym także na Raspberry Pi. OpenMV IDE to niezawodny, stabilny i sprawdzony pakiet do rozwijania oprogramowania dla kamer OpenMV: OpenMV M4 (OV2640/OV7725), OpenMV M7, OpenMV H7 oraz każdej płytki wykorzystującej MicroPythona i zgodnej z REPL.
OpenMV jest oprogramowaniem open-source, więc można modyfikować jego źródło bez problemu. Można np. stworzyć z jego wykorzystaniem aplikację desktopową, która współpracować ma z OpenMV H7 i komputerem PC.
Dostępne dodatki
Dodatkowy moduł H7 z kamerą OV7725
Koszt dodatkowych 49 dolarów, jeśli kupujemy kamerę w ramach kampanii crowdfundingowej. To o 25% taniej niż w normalnym sklepie.
Obudowa OpenMV H7
Koszt dodatkowych pięciu dolarów za przeźroczystą obudowę dla naszego modułu H7. Pozwala ona na montaż wszystkich sensorów i obiektywów.
Adapter dla sensora FLIR Lepton
Ten adapter pozwala na montaż kamery FLIR Lepton 1, 2 lub 3 w module. Koszt – 15 dolarów. Zestaw nie zawiera sensora FLIR Lepton.
Jeśli chcemy dokupić adapter od razu z sensorem podczerwieni, to zamiast 15 dolarów do kosztów zakupu kamery doliczyć musimy 280 dolarów, wtedy dostaniemy w zestawie sensor FLIR Lepton 3.5 z wsparciem dla radiometrii.
Moduł z kamerą z globalną migawką
Za dodatkowe 50 dolarów do zestawu dokupić możemy moduł z kamerą z globalną migawką i zewnętrznym wyzwalaniem, jaki opisywaliśmy powyżej. Idealne rozwiązanie dla osób potrzebujących precyzyjnego obrazowania w systemie widzenia maszynowego.
Shield do prototypowania
Za jedyne cztery dolary do zestawu dołączyć możemy shield do prototypowania, dzięki któremu do modułu OpenMV dołożyć możemy dowolne układy elektroniczne, jakie tylko potrzebujemy.
Ekran LCD
Do układu dołączyć możemy także wyświetlacz LCD, który pozwoli na wyświetlanie obrazów z kamery. Jego koszt to 16 dolarów.
Moduł Wi-Fi
Za dodatkowe 24 dolary do zestawu dołączyć można moduł bezprzewodowy, który pozwala na podłączenie kamery OpenMV do Internetu.
Moduł sterowania serwami
Ten kosztujący 12 dolarów moduł pozwala na kontrolowanie do ośmiu serw – takich jak w pojazdach RC – z poziomu samej kamery OpenMV.
Moduł sterowania silnikami DC
Moduł można także wyposażyć w kontroler silników prądu stałego. Ten kosztujący 16 dolarów moduł sterować może dwoma silnikami DC.
Obiektyw dla podczerwieni
Za cztery dolary do kamery możemy dokupić obiektyw zoptymalizowany do pracy w podczerwieni. Nie posiada on filtra IR, dzięki czemu do naszej kamery dociera dostatecznie dużo podczerwieni, aby obrazować w tym zakresie. Obiektyw ten kosztuje 4 dolary.
Teleobiektyw
Cztery dolary kosztuje też teleobiektyw, który pozwala widzieć naszej kamerze dużo dalej niż standardowy obiektyw.
Obiektyw szerokokątny
Jeśli zamiast większego przybliżenia, potrzebujemy szerszego pola widzenia, to za dwanaście dolarów do modułu dokupić możemy obiektyw o krótkiej ogniskowej, zapewniający szerokie pole widzenia.
Źródło: https://www.kickstarter.com/projects/1798207217/openmv-cam-h7-machine-vision-w-micropython
Fajne? Ranking DIY
