Was genau sind Momente in OpenCV?

Beste Antwort

Hintergrund:

Moment ist ein quantitatives Maß (Deskriptor), das in der Mechanik und Statistik häufig verwendet wird , um die räumliche Verteilung von Punktmengen zu beschreiben. In den meisten vereinfachenden Begriffen sind Momente eine Reihe von Skalaren, die ein aggregiertes Maß für eine Reihe von Vektoren liefern. Die Definition von Momenten ist in allen Bereichen der Mechanik, Statistik und Computer Vision gleich. Die Menge der Momente beginnt mit der gröbsten Beschreibung der Menge der Vektoren und wird zunehmend mit höheren Ordnungen empfindlicher für lokale Strukturen in der Menge der Vektoren. Die Wahl der nützlichen Reihenfolge des Moments hängt von der Datenverteilung und den Vektorsätzen ab, zwischen denen ich unterscheiden möchte.

Wenn die Punkte Masse darstellen, ist das nullte Moment die Gesamtmasse, das erste Moment geteilt durch die Gesamtmasse ist Schwerpunkt , und der zweite Moment ist die Rotationsträgheit . Wenn die Punkte Wahrscheinlichkeitsdichte darstellen, ist das nullte Moment die Gesamtwahrscheinlichkeit (dh eins ), der erste Moment ist der Mittelwert , der zweite Moment ist die Varianz , der dritte Moment ist die Schiefe , und der vierte Moment (mit Normalisierung und Verschiebung) ist die Kurtosis . [Wikipedia: Momente (Mathematik)]

Momente in Bildern:

Das Konzept des Moments in Statistik und Mechanik wurde in der Bildverarbeitung übernommen, um ein Bild grob zu beschreiben. Für Bilder mit Pixelintensitäten I ( x , y ) werden die Rohbildmomente M\_ {ij} berechnet durch

M\_ {ij} = \ sum\_ {x} \ sum\_ {y} I (x, y)

, wobei i, j die Reihenfolge der Momente sind. In einer typischen Bildmomentberechnungspipeline wird das Bild I (x, y) in einen Satz von Vektoren umgewandelt, indem zuerst ein Graustufenbild berechnet und dann ein Eck- oder Kantendetektor verwendet wird, um das Bild auf einen Satz hervorstechender Punkte zu reduzieren. Die räumliche Verteilung dieser Punkte kennzeichnet das Bild dahingehend, dass ein Bild mit unterschiedlichem visuellen Inhalt eine messbar unterschiedliche räumliche Verteilung der hervorstechenden Punkte aufweist. Die verschiedenen Reihenfolge der Momente des Bildes (Satz hervorstechender Punkte) liefern Masse, Schwerpunkt, Hauptachse usw. des Bildes.

Momente in OpenCV:

Beispiel für die Berechnung von Momenten für ein Bild in opencv.

Mat src, gray; // opencv matrices for the image and its grayscale

src = imread( "../path/to/image.jpg" , 1 ); // load the image

cvtColor( src, gray, CV\_BGR2GRAY ); // convert to grayscale

vector > contours; // image contour is set of salient points of the image we are interested in

vector hierarchy;

//Detect edges using canny

Canny( gray, canny\_output, 50, 150, 3 ); // canny edges are low-level image structures that are used by contour detector

//Find contours

findContours( canny\_output, contours, hierarchy, CV\_RETR\_TREE, CV\_CHAIN\_APPROX\_SIMPLE, Point(0, 0) );

// Get the moments of image

vector mu(contours.size() );

for ( int i = 0; i

{ mu[i] = moments( contours[i], false ); }

//Get the mass centers (image has multiple contours):

vector mc( contours.size() );

for ( int i = 0; i

{ mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); } // compute the centers of mass of each contour in the image

In diesem Beispiel ist das Schwerpunktmoment des Bildes hilfreich, um die Position mehrerer Objekte im Bild zu ermitteln. Wenn das Bild mehrere Personen enthält (vorausgesetzt, Probleme mit Hintergrundstörungen sind behoben) und eine Person an einem ungefähren Standort jeder Person interessiert war, ist der Schwerpunktmoment eine geeignete Lösung.

Sie können sich ähnliche Szenarien vorstellen, in denen Eine höhere Ordnung von Momenten wird relevant, zum Beispiel beim Verfolgen von Autos. Die Ausrichtung der Autos und die Position können beide leicht durch Schwerpunkt-, Varianz- und Orientierungsachsen-Bildmomente dargestellt werden p> Die Frage, die Sie zu OpenCV gestellt haben, kann auch allgemein auf Computer Vision angewendet werden. Können wir Personen in einem Raum mit einer Genauigkeit von 95 – 100\% erkennen?

Die Antwort hängt von vielen Faktoren ab:

Szenario 1: In einem Raum befinden sich 15 Personen, die in der entsprechenden Position gegenüber der Kamera sitzen. Alle von ihnen sind deutlich sichtbar, niemand wird verdeckt. Die Beleuchtung ist hell und gleichmäßig. Die Kamera ist ziemlich gut.

Sicher, wir können in einem solchen Fall eine Genauigkeit von> 99\% erreichen.Sei es OpenCV oder eine andere Deep-Learning-Bibliothek, Sie befinden sich in sicheren Gewässern. Der Aufbau eines solchen Systems sollte nicht schwieriger / herausfordernder sein als ein routinemäßiges High-School-Projekt.

Szenario 2: In einem Raum befinden sich 15 Personen, die in der entsprechenden Position vor der Kamera sitzen. Einige von ihnen verschließen sich gegenseitig. Es gibt keine Garantie für die Qualität der Beleuchtung. Einige von ihnen tragen möglicherweise nicht standardmäßige Brillen, Hüte oder seltsames Make-up. Die Kamera ist immer noch recht gut.

Dies wird etwas schwierig. OpenCV bietet in solchen Fällen möglicherweise keine Genauigkeit von> 99\%. TensorFlow oder eine andere Deep-Learning-Architektur funktionieren möglicherweise noch. Facebook identifiziert und markiert routinemäßig Personen in solchen Szenarien. Sind sie 100\% genau? Es hängt davon ab, ob. Der Aufbau eines solchen Systems unter Verwendung aller uns zur Verfügung stehenden Open Source-Bibliotheken ist möglicherweise nicht trivial. Es ist jedoch auch nicht sehr schwierig. Mit ein wenig Aufwand und etwas Glück könnten> 95\% erreichbar sein.

Szenario 2: In einem Raum befinden sich 15 Personen, die in der richtigen Position sitzen und nicht unbedingt der Kamera zugewandt sind. Einige von ihnen verschließen sich gegenseitig. Die Beleuchtung ist beschissen. Es neigt dazu, die Personen im Bild zu unter- oder zu überbelichten. Einige von ihnen tragen möglicherweise nicht standardmäßige Brillen, Hüte oder seltsames Make-up. Die Kamera ist eine VGA-Webcam von vor 15 Jahren.

Jetzt haben Sie keine Garantie für die Genauigkeit, unabhängig von den verwendeten Tools. Dieses Problem grenzt jetzt an ein Forschungsprojekt.

Die Antwort auf Ihre Frage hängt davon ab, welches Szenario Sie ansprechen möchten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.