OpenCV - UOS-Open-Source-Softwareentwicklung/oss1314 GitHub Wiki
#OpenCV - Open Computer Vision Library Kurzbeschreibung eines Open-Source-Projektes
Ann-Katrin Häuser, [email protected], Universität Osnabrück
Einsatzzweck
OpenCV ist eine Software Bibliothek,die mehr als 2500 Computer Vision und Machine Learning Algorithmen zur Verfügung stellt, welche mit einem starken Fokus auf Echtzeitanwendungen entwickelt werden. Enthalten sind diverse Bildverarbeitungsalgorithmen von einfachen Filtern bis zu Gesichts- und Objekterkennung. Des Weiteren wird die 3D-Modellierung mit Hilfe von Stereokamerasystemen sowie die Entwicklung von Augmented Reality Anwendungen unterstützt. Ursprünglich ist die Bibliothek in C und C++ geschrieben. Es existieren jedoch Schnittstellen für Python, Java und MATLAB. Außerdem werden alle gängigen PC-Betriebssysteme (Windows, Linux, Mac OS, FreeBSD, OpenBSD) und diverse mobile Plattformen (Android, iOS, Maemo) unterstützt. CUDA und OpenCL Schnittstellen sind ebenfalls vorhanden ("OpenCV.org" 2014, Bradsky & Kaehler 2008).
Entstehung und Hintergrund
OpenCV wurde 1999 von Gary Bradski, angestellt bei Intel, gegründet. Das Projekt sollte sowohl die Forschung als auch die Entwicklung kommerzieller Produkte im Bereich Computer Vision vorantreiben. Intel erhoffte sich davon einen gesteigerten Bedarf an leistungsfähigen CPUs und somit einen höheren Absatz der eigenen Produkte ("Willowgarage.com" 2014).
Nach einem Alpha Release im Jahr 2000 und jährlichen Beta Releases von 2001 bis 2005, erschien 2006 die erste offizielle Version OpenCV 1.0 (Bradsky & Kaehler 2008). Mitte 2008 begann Willow Garage die Entwicklung an OpenCV aktiv zu unterstützen und sorgte damit für eine neue Entwicklungswelle, sodass im Jahre 2009 OpenCV 2.0 veröffentlich wurde. Seit August 2012 befindet sich das Projekt in der Hand einer nicht auf Gewinn ausgerichteten Stiftung, OpenCV.org, die jeweils eine Website für Entwickler und Nutzer betreuen ("Wikipedia: OpenCV" 2014). Bis heute wird die Bibliothek aktiv weiterentwickelt, wie der aktuelle Release der Version 2.4.8 vom Dezember 2013 zeigt ("OpenCV Change Log" 2014).
Entwickler-Community und Entwicklungsprozesse
Im letzten Jahr trugen 209 Entwickler neuen Code zu OpenCV bei. Damit besitzt das Projekt eine der größten Entwickler-Communities der Welt ("Ohloh.net: OpenCV" 2014).
Prinzipiell darf, wie bei Open-Source Projekten üblich, jeder zusätzliche Algorithmen oder Funktionalitäten entwickeln und für diese einen Pull-Request stellen, also um Aufnahme in die offizielle Distribution bitten. Dieser wird nach automatischer Prüfung durch OpenCVs buildbot von einem OpenCV Entwickler geprüft, welcher entscheidet, ob der Code ggf. mit weiteren Änderungen angenommen wird. Des Weiteren wird jeder dazu aufgefordert sich selbst am Testen von Bugfixes und Pull Requests zu beteiligen ("OpenCV Contribution" 2014).
Es existiert eine kleine Gruppe von Entwicklern die als Core Group agieren. Diese halten meist zwei bis vier Meetings im Monat ab um aktuelle Themen zu besprechen. Hierzu gehört sowohl die Abarbeitung von Pull Requests und die Planung von wünschenswerten Erweiterungen, als auch auch die Organisation von Events wie z.B. die Teilnahme am Google Summer of Code. Zu dieser Gruppe gehören unter anderem Gary Bradsky und Vadim Pisarevsky, die schon zu Beginn an OpenCV mitgearbeitet haben ("OpenCV Meetings" 2013).
Der Core Group ist es wichtig auch den Nutzern bei der Weiterentwicklung ein Mitspracherecht zu geben. So wurde im Herbst 2013 eine große Umfrage gestartet, welche Funktionalitäten sie sich in Zukunft für OpenCV wünschen ("OpenCV Survey" 2013).
Finanzierung und kommerzielles Umfeld
Nach der Gründung wurde OpenCV zunächst von Intel finanziert, welches bis heute ein großer Sponsor geblieben ist. In den letzten Jahren beteiligten sich jedoch zahlreiche Firmen durch Spenden oder der stundenweisen Abstellung von Mitarbeitern zu Entwicklunsgzwecken am Projekt. Ein weiterer Hauptsponsor ist Willow Garage, welches ab 2008 aktiv die Entwicklung unterstützte (Bradsky & Kaehler 2008).
Die große Spendenbereitschaft von Firmen ergibt sich durch die starke Verbreitung von OpenCV im kommerziellen Bereich. So nutzen die Roboter von Willow Garage OpenCV-Algorithmen zur Wahrnehmung und Interaktion mit der Umgebung, während Google seine Street View Images mit dessen Hilfe aneinanderheftet. Weitere Anwendungen finden sich in den Bereichen Videoüberwachung, Produktidentifikation sowie der Automobilindustrie. So verwendete auch Stanley, das Gewinnerfahrzeug der DARPA Grand Challenge 2005 , OpenCV ("OpenCV.org" 2014, "WillowGarage.org" 2014).
Um zusätzliche Finanzierungsmittel zu gewinnen, ist für dieses Jahr eine Crowd Funding Aktion auf der Plattform Kickstarter geplant. Diese soll im Zusammenhang mit dem Survey 2013 einen zusätzlichen Anreiz für die breite Masse der Nutzer setzen, OpenCV zu unterstützen ("OpenCV Survey" 2013).
Lizenzen und Technologie
OpenCV ist BSD lizensiert, sodass es auch für kommerzielle Anwendungen frei verwendbar ist. Änderungen oder Erweiterungen des Quellcodes müssen also nicht der Öffentlichkeit zugänglich gemacht werden ("OpenCV.org" 2014). Nur die Feature-Detection-Algorithmen SIFT und SURF sind dies bezüglich von einer Ausnahmeregel betroffen, da sie in manchen Ländern patentgeschützt sind oder deren Nutzen anderweitig limitiert ist. Hierauf wird jedoch explizit hingewiesen ("OpenCV Docs" 2014).
Verwendete Tools für Bugtracking, Versionsverwaltung, Kommunikation
Für die Kommunikation zwischen den Entwicklern existiert die OpenCV Dev Zone (http://code.opencv.org). Hier findet sich auch ein Ticket System sowohl für Bug Reports als auch wünschenswerte Features. Des Weiteren gibt es ein Forum (http://answers.opencv.org) in dem Fragen bezüglich der OpenCV Funktionalitäten gestellt werden können und von anderen Nutzern und Entwicklern beantwortet werden.
Zur Versionsverwaltung wird seit 2010 Github eingesetzt. Hierüber kann sich jeder aktiv an der Weiterentwicklung beteiligen, hat Zugriff auf den aktuellen Code und kann Pull Requests stellen.
Der aktuelle sowie ältere Releases können bei Sourceforge (http://sourceforge.net/projects/opencvlibrary) heruntergeladen werden.
Referenzen:
Bradski, G. & Kaehler, A. (2008). Learning OpenCV: Computer Vision with the OpenCV Library. O'Reilly Media, Inc, Sebastopol CA 95472
"Ohloh.net: OpenCV" (2014). In:OpenCV Project Summary: Factoids. URL: http://www.ohloh.net/p/3354/factoids#FactoidActivityStable, abgerufen am 13.3.2014
"OpenCV Change Log" (2014). OpenCV Change Logs. In:OpenCV Dev Zone. URL: http://code.opencv.org/projects/opencv/wiki/ChangeLog, abgerufen am 13.3.2014
"OpenCV Contribution" (2014). How to contribute. In:OpenCV Dev Zone URL: http://code.opencv.org/projects/opencv/wiki/How_to_contribute, abgerufen am 13.3.2014
"OpenCV Docs" (2014). OpenCV 2.4.8.0 Documentation. In:OpenCV Docs URL: http://docs.opencv.org/modules/nonfree/doc/nonfree.html , abgerufen am 13.3.2014
"OpenCV Meetings" (2013). OpenCV Meeting notes for 2013 year. In:OpenCV Dev Zone URL: http://code.opencv.org/projects/opencv/wiki/2013, abgerufen am 13.3.2014
"OpenCV Survey" (2013). OpenCV Survey. In_OpenCV.org_ URL: http://opencv.org/survey-results.html, abgerufen am 13.3.2014
"OpenCV.org" (2014). About & Platforms. In:OpenCV.org. URL: http://opencv.org, abgerufen am 13.3.2014
"Wikipedia: OpenCV" (2014). OpenCV. In:Wikipedia. URL: http://en.wikipedia.org/wiki/OpenCV, abgerufen am 13.3.2014
"Willowgarage.com" (2014). OpenCV. In:Software->OpenCV. URL: https://www.willowgarage.com/pages/software/opencv, abgerufen am 11.3.2014