Que sont exactement les moments dans OpenCV?

Meilleure réponse

Contexte:

Moment est une mesure quantitative (descripteur), couramment utilisée en mécanique et statistique , pour décrire la distribution spatiale dun ensemble de points. En termes plus simples, les moments sont des ensembles de scalaires qui fournissent une mesure agrégée dun ensemble de vecteurs. La définition des moments est la même dans tous les domaines de la mécanique, des statistiques et de la vision par ordinateur. Lensemble des moments commence par la description la plus grossière de lensemble des vecteurs, et progressivement avec des ordres supérieurs, commence à devenir plus sensible aux structures locales dans lensemble des vecteurs. Le choix de lordre de moment utile dépend de la distribution des données et des ensembles de vecteurs que je souhaite distinguer.

Si les points représentent la masse , alors le moment zéro est la masse totale, le premier moment divisé par la masse totale est le centre de gravité , et le deuxième moment est l inertie de rotation . Si les points représentent la densité de probabilité , alors le moment zéro est la probabilité totale (cest-à-dire un ), le premier moment est la moyenne , le deuxième moment est la variance , le troisième le moment est le asymétrie , et le quatrième moment (avec normalisation et décalage) est le kurtosis . [Wikipedia: Moments (Mathématiques)]

Moments en images:

Le concept de moment en statistique et en mécanique a été emprunté en vision par ordinateur pour décrire grossièrement une image. Pour une image avec des intensités de pixels I ( x , y ), les moments dimage brute M\_ {ij} sont calculés par

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

, où i, j sont lordre des moments. Dans un pipeline de calcul de moment dimage typique, limage I (x, y) est convertie en un ensemble de vecteurs en calculant dabord une image en échelle de gris, puis en utilisant un détecteur de coin ou de bord pour réduire limage à un ensemble de points saillants. La distribution spatiale de ces points caractérise limage, en ce quune image avec un contenu visuel différent aura une distribution spatiale sensiblement différente des points saillants. Les différents ordres de moments de limage (ensemble de points saillants) fournissent la masse, le centre de gravité, laxe principal, etc. de limage.

Moments en OpenCV:

Exemple de calcul des moments pour une image dans 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

Dans cet exemple, le moment centroïde de limage est utile pour trouver lemplacement de plusieurs objets dans limage. Si limage contient plusieurs personnes (en supposant que les problèmes dencombrement en arrière-plan sont résolus) et quune personne était intéressée par lemplacement approximatif de chaque personne, le moment du centre de gravité est une solution appropriée.

Vous pouvez imaginer des scénarios similaires où des moments dordre supérieur deviennent pertinents, par exemple dans le suivi des voitures, lorientation et la position des voitures peuvent être facilement représentées par le centre de gravité, la variance et laxe des moments dimage dorientation.

Réponse

La question que vous avez posée sur OpenCV peut également sappliquer à la vision par ordinateur en général. Pouvons-nous détecter des personnes à lintérieur dune pièce avec une précision de 95 à 100\%?

La réponse dépend de nombreux facteurs:

Scénario 1: Il y a 15 personnes dans une pièce, assises dans leur position appropriée face à la caméra. Tous sont clairement visibles, personne nest occlus. Léclairage est clair et uniforme. La caméra est raisonnablement bonne.

Bien sûr, nous pouvons faire une précision> 99\% dans un tel cas.Que ce soit OpenCV ou une autre bibliothèque dapprentissage en profondeur, vous êtes dans des eaux sûres. Construire un tel système ne devrait pas être plus difficile / stimulant quun projet de routine au lycée.

Scénario 2: Il y a 15 personnes dans une pièce, assises dans leur position appropriée face à la caméra. Certains dentre eux sobstruent. Il ny a aucune garantie sur la qualité de léclairage. Certains dentre eux peuvent porter des lunettes, des chapeaux ou des maquillages inhabituels. La caméra est toujours assez bonne.

Cela commence à devenir un peu délicat. OpenCV peut ne pas vous donner une précision> 99\% dans de tels cas. TensorFlow ou une autre architecture dapprentissage en profondeur peut toujours fonctionner. Facebook identifie et identifie régulièrement les personnes dans de tels scénarios. Sont-ils précis à 100\%? Ça dépend. Construire un tel système en utilisant toutes les bibliothèques open source à notre disposition nest peut-être pas anodin. Cependant, ce nest pas non plus très difficile. Avec un peu deffort et un peu de chance,> 95\% pourraient être réalisables.

Scénario 2: Il y a 15 personnes à lintérieur dune pièce, assises dans leur position appropriée, pas nécessairement face à la caméra. Certains dentre eux sobstruent. Léclairage est merdique. Il a tendance à sous-exposer ou surexposer les personnes de limage. Certains dentre eux peuvent porter des lunettes, des chapeaux ou des maquillages inhabituels. La caméra est une webcam VGA dil y a 15 ans.

Désormais, vous navez aucune garantie sur la précision, quels que soient les outils que vous utilisez. Ce problème est maintenant en passe de devenir un projet de recherche.

La réponse à votre question dépend du scénario que vous cherchez à aborder.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *