Cosa sono esattamente i momenti in OpenCV?

Migliore risposta

Background:

Il momento è una misura quantitativa (descrittore), comunemente usata in meccanica e statistica , per descrivere la distribuzione spaziale dellinsieme di punti. In termini più semplicistici, i momenti sono un insieme di scalari che forniscono una misura aggregata di un insieme di vettori. La definizione dei momenti è la stessa nei domini della meccanica, della statistica e della visione artificiale. Linsieme di momenti inizia con la descrizione più grossolana dellinsieme di vettori e progressivamente con ordini superiori inizia a diventare più sensibile alle strutture locali nellinsieme di vettori. La scelta dellordine di momento utile dipende dalla distribuzione dei dati e dagli insiemi di vettori che mi interessa distinguere.

Se i punti rappresentano la massa , il momento zero è la massa totale, il primo momento diviso per la massa totale è centro di massa e il secondo momento è l inerzia rotazionale . Se i punti rappresentano la densità di probabilità , il momento zero è la probabilità totale (ovvero uno ), il primo momento è la mean , il secondo è la varianza , il terzo il momento è l asimmetria e il quarto momento (con normalizzazione e spostamento) è la curtosi . [Wikipedia: Moments (Mathematics)]

Moments in images:

Il concetto di momento in statistica e meccanica è stato preso in prestito dalla visione artificiale per descrivere grossolanamente unimmagine. Per immagini con intensità di pixel I ( x , y ), i momenti dellimmagine grezza M\_ {ij} sono calcolati da

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

, dove i, j sono lordine dei momenti. In una tipica pipeline di calcolo del momento dellimmagine, limmagine I (x, y) viene convertita in un insieme di vettori calcolando prima unimmagine in scala di grigi e quindi utilizzando un rilevatore di angoli o bordi per ridurre limmagine a un insieme di punti salienti. La distribuzione spaziale di questi punti caratterizza limmagine, in quanto unimmagine con diverso contenuto visivo avrà una distribuzione spaziale misurabile e differente dei punti salienti. I vari ordini di momenti dellimmagine (insieme di punti salienti) forniscono massa, centroide, asse principale, ecc. Dellimmagine.

Momenti in OpenCV:

Esempio di momenti di calcolo per unimmagine 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 questo esempio, il momento del baricentro dellimmagine è utile per trovare la posizione di più oggetti nellimmagine. Se limmagine contiene più persone (supponiamo che i problemi di confusione sullo sfondo siano stati risolti) e una era interessata a una posizione approssimativa di ciascuna persona, il momento del centroide è una soluzione appropriata.

Puoi immaginare scenari simili in cui un ordine più elevato di momenti diventa rilevante, ad esempio nel monitoraggio delle auto, lorientamento delle auto e la posizione potrebbero essere facilmente rappresentati dal centroide, dalla varianza e dai momenti dellimmagine dellasse di orientamento.

Risposta

La domanda che hai posto su OpenCV può essere applicata anche alla visione artificiale in generale. Possiamo rilevare le persone allinterno di una stanza con una precisione del 95-100\%?

La risposta dipende da molti fattori:

Scenario 1: Ci sono 15 persone allinterno di una stanza, sedute nella posizione appropriata di fronte alla telecamera. Tutti sono chiaramente visibili, nessuno viene occluso. Lilluminazione è brillante e uniforme. La fotocamera è abbastanza buona.

Certo, in questo caso possiamo ottenere una precisione> 99\%.Che si tratti di OpenCV o di qualche altra libreria di deep learning, sei in acque sicure. Costruire un tale sistema non dovrebbe essere più difficile / impegnativo di un normale progetto di scuola superiore.

Scenario 2: Ci sono 15 persone allinterno di una stanza, sedute nella posizione appropriata di fronte alla telecamera. Alcuni di loro si occludono a vicenda. Non vi è alcuna garanzia sulla qualità dellilluminazione. Alcuni di loro potrebbero indossare occhiali, cappelli o strani trucchi non standard. La fotocamera è ancora abbastanza buona.

Questo inizia a diventare un po complicato. OpenCV potrebbe non darti una precisione> 99\% in questi casi. TensorFlow o unaltra architettura di deep learning potrebbero ancora funzionare. Facebook identifica e tagga regolarmente le persone in tali scenari. Sono accurati al 100\%? Dipende. Costruire un tale sistema utilizzando tutte le librerie open source a nostra disposizione potrebbe non essere banale. Tuttavia, non è nemmeno molto difficile. Con un piccolo sforzo e un po di fortuna, è possibile ottenere> 95\%.

Scenario 2: Ci sono 15 persone allinterno di una stanza, sedute nella posizione appropriata, non necessariamente di fronte alla telecamera. Alcuni di loro si occludono a vicenda. Lilluminazione è schifosa. Tende a sottoesporre o sovraesporre le persone nellimmagine. Alcuni di loro potrebbero indossare occhiali, cappelli o strani trucchi non standard. La fotocamera è una webcam VGA di 15 anni fa.

Ora non hai garanzie sulla precisione, indipendentemente dagli strumenti che utilizzi. Questo problema ora rasenta il diventare un progetto di ricerca.

La risposta alla tua domanda dipende dallo scenario che cerchi di affrontare.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *