IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Detection des objets dans l'image


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Detection des objets dans l'image
    Salut!
    je cherche à encadrer les differentes voitures qui se trouvent sur mes images en sachant que la position des ces objets donc des voitures peuvent changer d'une image à une autre.
    voici ce que j'ai recu à faire pour l'instatnt avec Aforge.
    partant d'une image depart je suis arrivé à ne garder que les véhicules. Mais le probleme qui se pose c'est de pouvoir encadrer chaque voiture individuellement et non toutes les voitures comme je l'ai fais.

    la première image est le resultat que j'ai jusqu'ici
    comment faire? des codes sources ou une implemetation...
    Merci déjà à vous
    Images attachées Images attachées   

  2. #2
    Membre expérimenté
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Points : 1 454
    Points
    1 454
    Billets dans le blog
    9

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Janvier 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Non pas encore, je vais l'essayer et je vous informerai du résultat par rapport à votre approche

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut
    bonjour

    Encadrer chaque image necessite après l'execution de ton filter de couleurs ,d'utiliser le class SimpleShapeChecker qui mets à disposition des primitives geometriques simples : rectangle ,circle,quadrlater et polygone ,polygone etant le plus appropirie en cas d'objets à la forme complexe....


    L'autre voie ou alternative c'est d'extraire carremement chaque image separement à partir de la collection Blobs...
    Chaque blob definit en effet un rectangle de decoupage ou rognage dans l'image source ...
    Grace à l'index du Blob et sa prop Rectangle et à Bitmap.Clone(rectangle,imagesource) on peut recuperer une copie de l'image souhaitee après exeution du filtrage de couleurs.....

    code traitant les 2 cas ci-apres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
     
             private void button1_Click(object sender, EventArgs e)
            {
                Bitmap source = WinTestAForge.Properties.Resources.DessinAforgeWhite;
     
     
                ProcessImage(source);
            }   private void ProcessImage(Bitmap bitmap)
            {
                // lock image
                BitmapData bitmapData = bitmap.LockBits(
                    new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                    ImageLockMode.ReadWrite, bitmap.PixelFormat);
     
                // step 1 - turn background to black
                ColorFiltering colorFilter = new ColorFiltering();
     
     
                colorFilter.Red = new IntRange(0, 255);
                colorFilter.Green = new IntRange(0, 0);
                colorFilter.Blue = new IntRange(0, 255);
                colorFilter.FillOutsideRange = true  ;
     
                colorFilter.ApplyInPlace(bitmapData);
                // step 2 - locating objects
                BlobCounter blobCounter = new BlobCounter();
     
                blobCounter.FilterBlobs = true;
                blobCounter.MinHeight = 5;
                blobCounter.MinWidth = 5;
     
                blobCounter.ProcessImage(bitmapData);
                Blob[] blobs = blobCounter.GetObjectsInformation();
     
     
     
                bitmap.UnlockBits(bitmapData);
     
     
     
     
     
     
                // step 3 - check objects' type and highlight
                SimpleShapeChecker shapeChecker = new SimpleShapeChecker();
     
                Graphics g = Graphics.FromImage(bitmap);
                Pen yellowPen = new Pen(Color.Yellow, 2); // circles
                Pen redPen = new Pen(Color.Red, 2);       // quadrilateral
                Pen brownPen = new Pen(Color.Brown, 2);   // quadrilateral with known sub-type
                Pen greenPen = new Pen(Color.Green, 2);   // known triangle
                Pen bluePen = new Pen(Color.Blue, 2);     // triangle
     
                for (int i = 0, n = blobs.Length; i < n; i++)
                {
                    List<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);
     
                    AForge.Point center;
                    float radius;
     
                        List<IntPoint> corners;
     
                        // is triangle or quadrilateral
                        if (shapeChecker.IsConvexPolygon(edgePoints, out corners))
                        {
                            // get sub-type
                            PolygonSubType subType = shapeChecker.CheckPolygonSubType(corners);
     
                            Pen pen;
     
                            if (subType == PolygonSubType.Unknown)
                            {
                                pen =redPen ;
                            }
                            g.DrawPolygon(pen, ToPointsArray(corners));
                        }
                    }
                }
     
                redPen.Dispose();
                g.Dispose();
     
                // put new image to clipboard
                Clipboard.SetDataObject(bitmap);
                // and to picture box
                pictureBox1.Image = bitmap;
     
     
               //extraction du blobs[0]............
                pictureBox2.Image= bitmap.Clone(blobs[0].Rectangle, bitmap.PixelFormat);
     
            }
    bon code..........

Discussions similaires

  1. Composants des objets dans une image.
    Par am_003 dans le forum Traitement d'images
    Réponses: 20
    Dernier message: 26/04/2013, 00h17
  2. [Débutant] comptage des objets dans une image
    Par sagere dans le forum C#
    Réponses: 7
    Dernier message: 22/06/2011, 16h41
  3. Localiser des objets dans une image
    Par Nates dans le forum OpenCV
    Réponses: 9
    Dernier message: 07/08/2008, 09h26
  4. Réponses: 4
    Dernier message: 15/03/2008, 11h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo