OpenCV - przegląd

OpenCV to wieloplatformowa biblioteka, za pomocą której możemy rozwijać się w czasie rzeczywistym computer vision applications. Skupia się głównie na przetwarzaniu obrazu, przechwytywaniu i analizie wideo, w tym na funkcjach takich jak wykrywanie twarzy i wykrywanie obiektów.

Zacznijmy ten rozdział od zdefiniowania terminu „Computer Vision”.

Wizja komputerowa

Komputerowe widzenie można zdefiniować jako dyscyplinę, która wyjaśnia, jak rekonstruować, przerywać i rozumieć scenę 3D na podstawie jej obrazów 2D, pod względem właściwości struktury obecnej w scenie. Zajmuje się modelowaniem i odtwarzaniem ludzkiego wzroku za pomocą oprogramowania i sprzętu komputerowego.

Wizja komputerowa w znacznym stopniu pokrywa się z następującymi polami -

  • Image Processing - Koncentruje się na manipulacji obrazem.

  • Pattern Recognition - Wyjaśnia różne techniki klasyfikacji wzorców.

  • Photogrammetry - Chodzi o uzyskanie dokładnych pomiarów z obrazów.

Przetwarzanie obrazu komputerowego a przetwarzanie obrazu

Image processingzajmuje się transformacją obrazu w obraz. Dane wejściowe i wyjściowe przetwarzania obrazu to obrazy.

Computer visionjest konstruowaniem wyraźnych, znaczących opisów obiektów fizycznych na podstawie ich obrazu. Wynikiem widzenia komputerowego jest opis lub interpretacja struktur w scenie 3D.

Zastosowania widzenia komputerowego

Tutaj wymieniliśmy niektóre z głównych domen, w których widzenie komputerowe jest intensywnie wykorzystywane.

Aplikacja robotyki

  • Lokalizacja - automatyczne określanie lokalizacji robota

  • Navigation

  • Unikanie przeszkód

  • Montaż (kołek w otworze, spawanie, malowanie)

  • Manipulacja (np. Manipulator robota PUMA)

  • Interakcja człowieka z robotem (HRI) - inteligentna robotyka do interakcji z ludźmi i służenia im

Zastosowanie leku

  • Klasyfikacja i wykrywanie (np. Klasyfikacja zmian lub komórek i wykrywanie guzów)
  • Segmentacja 2D / 3D
  • Rekonstrukcja 3D narządów ludzkich (MRI lub USG)
  • Chirurgia robotyczna sterowana wzrokiem

Aplikacja automatyki przemysłowej

  • Inspekcja przemysłowa (wykrywanie wad)
  • Assembly
  • Odczyt kodów kreskowych i etykiet opakowań
  • Sortowanie obiektów
  • Zrozumienie dokumentów (np. OCR)

Aplikacja bezpieczeństwa

  • Biometria (tęczówka, odcisk palca, rozpoznawanie twarzy)

  • Nadzór - Wykrywanie pewnych podejrzanych działań lub zachowań

Aplikacja transportowa

  • Autonomiczny pojazd
  • Bezpieczeństwo, np. Monitorowanie czujności kierowcy

Funkcje biblioteki OpenCV

Korzystając z biblioteki OpenCV, możesz -

  • Czytaj i pisz obrazy

  • Przechwytuj i zapisuj filmy

  • Przetwarzaj obrazy (filtr, transformacja)

  • Wykonaj wykrywanie funkcji

  • Wykryj określone obiekty, takie jak twarze, oczy, samochody, na filmach lub obrazach.

  • Przeanalizuj wideo, tj. Oszacuj ruch w nim, odejmij tło i śledź znajdujące się w nim obiekty.

OpenCV został pierwotnie opracowany w C ++. Oprócz tego zapewniono powiązania Python i Java. OpenCV działa na różnych systemach operacyjnych, takich jak Windows, Linux, OSx, FreeBSD, Net BSD, Open BSD itp.

Ten samouczek wyjaśnia koncepcje OpenCV z przykładami używającymi powiązań Java.

Moduły biblioteczne OpenCV

Poniżej znajdują się główne moduły biblioteczne biblioteki OpenCV.

Podstawowa funkcjonalność

Ten moduł obejmuje podstawowe struktury danych, takie jak Scalar, Point, Range, itp., Które są używane do tworzenia aplikacji OpenCV. Oprócz tego zawiera również tablicę wielowymiarowąMat, który służy do przechowywania obrazów. W bibliotece Java OpenCV ten moduł jest zawarty jako pakiet o nazwieorg.opencv.core.

Przetwarzanie obrazu

Ten moduł obejmuje różne operacje przetwarzania obrazu, takie jak filtrowanie obrazu, transformacje geometryczne obrazu, konwersja przestrzeni kolorów, histogramy itp. W bibliotece Java OpenCV moduł ten jest zawarty w pakiecie o nazwie org.opencv.imgproc.

Wideo

W tym module omówiono koncepcje analizy wideo, takie jak przewidywanie ruchu, odejmowanie tła i śledzenie obiektów. W bibliotece Java OpenCV ten moduł jest zawarty w pakiecie o nazwieorg.opencv.video.

We / wy wideo

Ten moduł wyjaśnia przechwytywanie wideo i kodeki wideo przy użyciu biblioteki OpenCV. W bibliotece Java OpenCV ten moduł jest zawarty jako pakiet o nazwieorg.opencv.videoio.

calib3d

Moduł ten zawiera algorytmy dotyczące podstawowych algorytmów geometrii wielu widoków, kalibracji kamery pojedynczej i stereoskopowej, estymacji pozycji obiektu, korespondencji stereofonicznej oraz elementów rekonstrukcji 3D. W bibliotece Java OpenCV ten moduł jest zawarty jako pakiet o nazwieorg.opencv.calib3d.

features2d

Ten moduł zawiera koncepcje wykrywania i opisu cech. W bibliotece Java OpenCV ten moduł jest zawarty w pakiecie o nazwieorg.opencv.features2d.

Objdetect

Ten moduł obejmuje wykrywanie obiektów i instancji predefiniowanych klas, takich jak twarze, oczy, kubki, ludzie, samochody itp. W bibliotece Java OpenCV moduł ten jest zawarty w pakiecie o nazwie org.opencv.objdetect.

Highgui

Jest to łatwy w użyciu interfejs z prostymi funkcjami interfejsu użytkownika. W bibliotece Java OpenCV funkcje tego modułu są zawarte w dwóch różnych pakietach, a mianowicie:org.opencv.imgcodecs i org.opencv.videoio.

Krótka historia OpenCV

OpenCV był początkowo inicjatywą badawczą firmy Intel mającą na celu doradzanie aplikacjom intensywnie wykorzystującym procesor. Został oficjalnie uruchomiony w 1999 roku.

  • W roku 2006 została wydana jego pierwsza główna wersja, OpenCV 1.0.
  • W październiku 2009 została wydana druga główna wersja, OpenCV 2.
  • W sierpniu 2012 r. OpenCV został przejęty przez organizację non-profit OpenCV.org.