La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Problématique Se connecter au drône pour la capture vidéo en le pilotant. Détecter les carrés rouges et les suspects potentiels. Trouver « Le prof Meuniono»

Présentations similaires


Présentation au sujet: "Problématique Se connecter au drône pour la capture vidéo en le pilotant. Détecter les carrés rouges et les suspects potentiels. Trouver « Le prof Meuniono»"— Transcription de la présentation:

1 Problématique Se connecter au drône pour la capture vidéo en le pilotant. Détecter les carrés rouges et les suspects potentiels. Trouver « Le prof Meuniono»

2 Équipement Drône : Parrot Plate-forme logicielle : C#

3 Pilotage et prise vidéo
La connexion TCP/IP entre un ordinateur et la diffusion vidéo est fluide pour un traitement d’images en temps réel. L’image semble stable et de bonne qualité.

4 Pilotage ..

5 L’application de prise de vidéo et de détection

6 Trouver le carré rouge avec EMGU CV 3.0
On récupère l’image en hue et en saturation (pas besoin de la luminosité) CvInvoke.CvtColor(image_bgr, image_hsv, ColorConversion.Bgr2Hsv); CvInvoke.ExtractChannel (image_hsv, image_h, 0); CvInvoke.ExtractChannel (image_hsv, image_s, 1); On élimine les mauvaises teintes +/- 20 degrés de hue (orange à rose) using (ScalarArray lower = new ScalarArray(10)) using (ScalarArray upper = new ScalarArray(170)) CvInvoke.InRange(image_h, lower, upper, image_h); CvInvoke.BitwiseNot(image_h, image_h);

7 On conserve les couleurs vives avec un seuillage (on retire le grisâtre)
CvInvoke.Threshold(image_s, image_s, 160, 255, ThresholdType.Binary); On conserve l’intersection des 2 images CvInvoke.BitwiseAnd(image_h, image_s, image_red, null);

8 On trouve les limites CvInvoke.Canny(image_red, image_edges, 50, 150); On récupère les contours CvInvoke.FindContours(image_edges, contours, null, RetrType.List, ChainApproxMethod.ChainApproxSimple);

9 On converti en polygone (pour tous les contours) CvInvoke
On converti en polygone (pour tous les contours) CvInvoke.ApproxPolyDP(contour, approxContour, CvInvoke.ArcLength(contour, true)*0.1, true); On ne conserve que les figures à 4 côtés if (approxContour.Size == 4)... On ne conserve que les angles droits (+/- 10 degrés) LineSegment2D[] edges PointCollection.PolyLine(approxContour.ToArray(), true); angle = Math.Abs(edges[(j+1)%edges.Length].GetExteriorAngleDegree(edges[j])); if (angle >= 80 || angle <= 100)...

10 On sélectionne le plus gros périmètre area = CvInvoke
On sélectionne le plus gros périmètre area = CvInvoke.ContourArea(approxContour, false); On trace le rectangle sur l’image image.Draw(grandRectangle, new Bgr(Color.GreenYellow), 3);

11 Trouver « Le prof Meuniono»
Pour identifier le suspect, nous ne pouvons utiliser les yeux ou le haut de la tête puisque nos suspects peuvent avoir la même casquette ou des lunettes fumées. Nous allons donc essayer de détecter la barbe par la valeur moyenne des pixels (en niveau de gris) dans la zone du ROI où elle devrait se situer.

12 Détection de visage Méthode de Viola et Jones
Caractéristiques pseudo-Haar pour l’apprentissage supervisée

13 Détection de visage (Emgu CV)
using (CascadeClassifier face = new CascadeClassifier("../../../data/haarcascade_frontalface_default.xml")) { using (UMat ugray = new UMat()) gray = color.Convert<Gray, Byte>(); // Égaliser l'histogramme pour // améliorer le contraste CvInvoke.EqualizeHist(gray, gray); // Détection des visages dans l'image facesDetected = face.DetectMultiScale(gray); foreach (Rectangle f in facesDetected) // Algorithme de distinction }

14 Détection de traits foreach (Rectangle f in facesDetected) { // Agrandir la région en longueur f.Inflate(new Size(0, 40)); // Créer le rectangle translaté Rectangle translated = new Rectangle(f.X, (int)(f.Y + f.Height / 1.75), f.Width, f.Height); // Intersection f.Intersect(translated); //… Région d’intérêt gray.ROI = f; }

15 Détection de la barbe Égalisation de l’histogramme de la région
Application d’un seuillage t = 40 Détection de contours avec FindContours

16 Détection de la barbe

17 Détection de la barbe Considérer uniquement les contours à l’intérieur du rectangle private static bool IsInterieur(Rectangle inner, Rectangle outer) { if ((inner.Left >= outer.Left) && (inner.Top >= outer.Top) && (inner.Right <= outer.Right) && (inner.Bottom <= outer.Bottom)) return true; } return false;

18 Démonstration


Télécharger ppt "Problématique Se connecter au drône pour la capture vidéo en le pilotant. Détecter les carrés rouges et les suspects potentiels. Trouver « Le prof Meuniono»"

Présentations similaires


Annonces Google