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

  1. #1
    Membre éprouvé
    Cours pour apprendre le traitement d'images, la vision industrielle et robotique
    Bonjour,

    J'ai le plaisir de vous annoncer la parution du premier article, d'une série de six composant un cours intitulé :


    Adapté à un large public, grâce à une pédagogie novatrice pour la discipline, ce cours présente un certain nombre d'opérateurs dits de bas niveau :
    • histogrammes, opérateurs de visualisation,
    • opérateurs de seuillage,
    • opérateurs linéaires agissant sur un voisinage 3x3 centré,
    • opérateurs de lissage d'image,
    • opérateurs de morphologie mathématique,
    • opérateurs de calcul de gradients, et d'affinage des contours.

    Enfin, le dernier article traite de l'implémentation en Langage C des opérateurs présentés dans l'Environnement Logiciel de Traitement d'Image EdEnviTI.

    Les codes source de l'environnement EdEnviTI, ainsi que de l'ensemble des opérateurs présentés dans la série d'articles constituant la bibliothèque EdVision sont également disponibles sur le site.

    Partie 2 : Visualisation des Images et Opérateurs Simples
    Partie 3 : Introduction aux Différents Types de Segmentation
    Partie 4 : Première Chaîne Complète de Segmentation
    Partie 5 : Segmentation en Contours
    Partie 6 : L'Environnement EdEnviTI et son utilisation

    Cordialement
    Patrick Bonnin

    Tous les meilleurs cours et tutoriels pour apprendre les algorithmes
    Les meilleurs cours et tutoriels pour apprendre la programmation

  2. #2
    Expert éminent sénior
    Bonjour

    Ne manque-t-il pas un lien ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert éminent sénior
    Flodelarab, le lien est maintenant ajouté
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  4. #4
    Membre éprouvé
    Partie 2 : Visualisation des Images et Opérateurs Simples
    Bonjour,

    J'ai le plaisir de vous informer de la parution du second article de la série intitulé : Visualisation des Images et Opérateurs Simples.

    Plus pratique que le premier article d'introduction, ce second commence par détailler l'algorithme puis l'implantation en Langage C
    dans l'environnement logiciel de traitement d'image EdEnviTI des deux mécanismes de base*: le balayage vidéo simple de l'image et le balayage vidéo avec examen du voisinage 3 x 3 centré.

    Ensuite leurs applications sont présentées au travers d'un certain nombre d'opérateurs*: l'Histogramme, le Rehaussement des Contrastes, la Quantification, la Réduction, le Zoom, ainsi que les opérateurs linéaires non linéaires, et des opérateurs réalisant la fonctionnalité de Lissage d'Image*: linéaires tels que les filtres moyen et gaussien, non linéaires tels que les filtres médian et de Nagao.

    Amicalement
    Patrick

    Les meilleurs cours et tutoriels pour apprendre l'algorithmique

  5. #5
    Membre éprouvé
    Partie 3 : Introduction aux Différents Types de Segmentation
    Bonjour,

    J'ai le plaisir de vous annoncer la parution de la troisième partie intitulée « Introduction aux Différents Types de Segmentations » du cours « Les Bases du Traitement d'Image et de la Vision Industrielle et Robotique ».

    Cette partie présente succinctement des notions de segmentation*: en contours, en régions, en mouvement, en profondeur et en couleur. Ces segmentations, plus complexes, ne font pas partie des bases que nous présentons à niveau bachelor ou BAC + 3. Elles seront présentées lors d'une seconde série de cours.

    Amicalement
    Patrick

    Les meilleurs cours et tutoriels pour apprendre l'algorithmique

  6. #6
    Membre confirmé
    Bonjour,

    Tout d'abord un grand bravo et un grand merci pour ce contenu de grande qualité, ça me permet de découvrir un nouveau domaine extrêmement intéressant
    Il est indiqué que l'environnement EdEnviTI est disponible sur le site developpez.com, mais je n'ai pas réussi à le trouver, serait-il possible de fournir un lien? Ou bien est-il prévu de les diffuser uniquement pour le dernier article de la série?

  7. #7
    Membre éprouvé
    EdEnviTI
    Bonjour,

    Tout d'abord, merci pour ton retour. c'est sympa.

    EdEnviTI, l'environnement (uniquement 6 fichiers dont 3 .c et 3 .h) ainsi que l'ensemble
    des opérateurs présentés dans les 5 premiers articles constituant la bibliothèque EdVision
    seront fournis sur le site : Francis m'a expliqué comment faire.

    Le sixième et dernier article, en relecture orthographique, présente EdEnviTI, et surtout comment
    l'utiliser simplement. Le filtre lisseur moyen, donné en exemple est expliqué, puis je montre comment créer
    le filtre lisseur gaussien, en modifiant les codes source du moyen, opération à réaliser en moins de 10 minutes.
    Il contiendra également les deux liens.

    Cordialement
    Patrick Bonnin

  8. #8
    Nouveau Candidat au Club
    Excellent et clair !
    Excellente série d'articles... on attend la suite avec impatience !
    A+

  9. #9
    Membre éprouvé
    Merci pour votre retour
    Bonjour,

    Je vous remercie pour votre retour.
    Les trois suivants arrivent.
    Cordialement
    Patrick Bonnin

  10. #10
    Membre éprouvé
    Partie 4 : Première Chaîne Complète de Segmentation
    Bonjour,

    J'ai le plaisir de vous annoncer la parution de la quatrième partie intitulée « Première Chaîne Complète de Segmentation » de la série « Les Bases du Traitement d'Image et de la Vision Industrielle et Robotique ».

    Cette partie présente un certain nombre d'opérateurs simples, rapides, très efficaces dans certains contextes applicatifs, permettant de réaliser une première chaîne complète de segmentation, c'est-à-dire une application complète de vision.

    Une application complète est composée généralement des trois étapes suivantes :
    • la sélection des pixels d'intérêts ;
    • le regroupement des pixels voisins en « primitive » ;
    • la conformité de la primitive à la requête.


    Ces opérateurs ayant un domaine d'application restreint, nous présentons le contexte applicatif dans lequel ils doivent être utilisés.

    Enfin, cette partie comme les deux suivantes sont très pratiques, comme l'est la seconde, déjà publiée.

    Amicalement
    Patrick

    Les meilleurs cours et tutoriels pour apprendre l'algorithmique

  11. #11
    Membre confirmé
    qualité médiocre des images
    Bonjour.

    N'est-il pas paradoxal qu'un tel cours comporte des images trop compressées (ou trop petites aussi) ou encore utilise une compression JPEG au lieu d'une compression GIF ou bien PNG pour des équations, textes, etc. ? C'est dommage, tout le monde n'a pas une très bonne vue et la lisibilité y gagnerait.

  12. #12
    Expert éminent sénior
    Citation Envoyé par joublie Voir le message
    N'est-il pas paradoxal qu'un tel cours comporte des images trop compressées (ou trop petites aussi)
    Avez-vous cliqué sur les images pour les apercevoir aux bonnes dimensions ?
    Vous avez envie de contribuer au sein du Club Developpez.com ?

    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, ...etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  13. #13
    Membre éprouvé
    Images et Equations
    Bonjour,

    Je vous remercie pour votre retour.
    Pour les images, Francis vous a répondu.
    Je pense qu'il en est de même pour les équations.
    J'ai préféré faire des copies d'écran des équations sous Latex,
    plus "jolies" que sous word / OpenOffice.

    Sinon, vous pouvez vous procurer le livre :
    "Les Bases du Traitement d'Image et de la Vision
    Industrielle et Robotique" sur "lulu.com".
    Cordialement
    Patrick Bonnin

  14. #14
    Membre éprouvé
    Partie 5 : Segmentation en Contours
    Bonjour,

    J'ai le plaisir de vous annoncer la parution de la cinquième partie intitulée « Segmentation en Contours » de la série « Les Bases du Traitement d'Image et de la Vision Industrielle et Robotique ».

    Après avoir présenté la notion de contour, ainsi que les différentes étapes constituant une segmentation en contours, nous détaillerons le principe des trois premières*: le calcul du gradient, le seuillage sur la norme du gradient, et l'affinage.

    Cette partie est la plus "mathématique" de ce cours. Les formules théoriques sont présentées, mais il n'est pas nécessaire de les comprendre dans le détail pour comprendre l'opérateur.

    Amicalement
    Patrick Bonnin

    Les meilleurs cours et tutoriels pour apprendre l'algorithmique

  15. #15
    Membre éprouvé
    Partie 6 : L'Environnement EdEnviTI et son utilisation
    Bonjour,

    J'ai le plaisir de vous annoncer la parution de la Sixième et dernière partie intitulée « l'Environnement EdEnviTI et son utilisation » de la série « Les Bases du Traitement d'Image et de la Vision Industrielle et Robotique ».

    Dans cette dernière partie, nous présentons l'environnement logiciel de traitement d'image EdEnviTI dans lequel sont implantés TOUS les opérateurs des parties précédentes, constituant la bibliothèque EdVision. Nous détaillons ensuite la façon de l'utiliser :
    • comment compiler et exécuter un opérateur (fichiers nécessaires)*;
    • comprendre les codes des différentes parties*;
    • comment programmer un nouvel opérateur, en recopiant puis modifiant les fichiers constituant l'opérateur fourni en exemple dans l'environnement.


    Puis, nous donnerons quelques conseils dans le cadre de l'approfondissement de ce cours. Des liens vers les archives .zip des bibliothèques EdEnviTI (environnement) et EdVision (opérateurs) sont donnés dans cette dernière partie.

    Enfin, le lien est vers la page de l'article est : Partie 6 : L'Environnement EdEnviTI et son utilisation

    Amicalement
    Patrick Bonnin

    Les meilleurs cours et tutoriels pour apprendre l'algorithmique

  16. #16
    Expert éminent sénior
    Bonjour,
    Citation Envoyé par patrick.bonnin Voir le message
    J'ai le plaisir de vous informer de la parution du second article de la série intitulé : Visualisation des Images et Opérateurs Simples.
    Tout cela a l'air passionnant, cependant, dans la partie 2 on trouve, au chapitre IV-A-3, des instructions pour générer le binaire Histogram qui m'ont semblées incomplètes :

    Citation Envoyé par patrick_bonnin
    La réalisation de l'histogramme est obtenue grâce à la commande EdHistogramme Histogram qui nécessite le code des parties :

    interface utilisateur, contenu dans le fichier EdHistogram.c ;
    opérateur, contenu dans le fichier EdLibHistogram.c.
    ainsi que l'utilitaire EdUtilities.c pour s'affranchir des erreurs
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    EdHistogram.o: In function `main':
    EdHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x236): undefined reference to `Reading_ImageHeader'
    EdHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x3a1): undefined reference to `Creation_Image'
    EdHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x4b7): undefined reference to `Creation_Image'
    EdHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x51f): undefined reference to `Reading_ImageData'
    EdHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x6c3): undefined reference to `Writing_ImageData'
    EdHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x720): undefined reference to `Free_Image'
    EdHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x765): undefined reference to `Free_Image'

    (oui, j'ai renommé EdHistgram.c enEdHistogram.c, ) mais ça ne suffit pas, il me reste ça sur les bras&#8239;:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    EdLibHistogram.o: In function `HistogramPGM':
    EdLibHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x32c): undefined reference to `log'
    EdLibHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x34b): undefined reference to `log'
    EdLibHistogram.o: In function `HistogramPPM':
    EdLibHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x70e): undefined reference to `log'
    EdLibHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x72d): undefined reference to `log'
    EdLibHistogram.c<img src="images/smilies/icon_sad.gif" border="0" alt="" title=":(" class="inlineimg" />.text+0x9f5): undefined reference to `log'


    La solution se cache là&#8239;:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    gcc -o Histogram EdHistogram.o EdLibHistogram.o EdUtilities.o -lm // "-lm", le flag qui sauve !

    Lecture pour la piste.

    Sinon, un microscopique souci avec la fonction de zoom, qui perd un pixel en générant le résultat, et pourtant j'ai demandé un rapport simple, "x 2", et ce quel que soit la méthode :



    Devant l'original, derrière l'image agrandie, regardez les tailles dans les barres de titre
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  17. #17
    Expert éminent sénior
    Citation Envoyé par Jipété Voir le message
    Sinon, un microscopique souci avec la fonction de zoom, qui perd un pixel en générant le résultat, et pourtant j'ai demandé un rapport simple, "x 2", et ce quel que soit la méthode :



    Devant l'original, derrière l'image agrandie, regardez les tailles dans les barres de titre
    J'ai fait ça, pour le zoom en haut (dans EdZoom.c) et pour la réduction en bas (EdReduction.c), ça me donne des valeurs correctes&#8239;:
    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
      /* --- Zoom image --- */
      // jipété : pourquoi cette construction tordue ?
      //ncolZoom = (ncol - 1) * scale + 1;
      //nligZoom = (nlig - 1) * scale + 1;
      // pourquoi pas plutôt et plus simplement comme ça :
      ncolZoom = ncol * scale;
      nligZoom = nlig * scale;
     
      /* --- Reduced image --- */
      // jipété : pourquoi cette construction tordue ?
      //ncolred = (ncol - 1) / scale + 1;
      //nligred = (nlig - 1) / scale + 1;
      // pourquoi pas plutôt et plus simplement comme ça :
      ncolred = ncol / scale;
      nligred = nlig / scale;

    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  18. #18
    Membre éprouvé
    Formules
    Bonjour,

    Si vous voulez comprendre les formules, il faut comprendre la manière de réaliser les pixels intermédiaires.
    C'est un petit peu plus complexe qu'une simple multiplication par le nombre de zoom.
    Celle ci est présentée soit dans l'article 2 du site developpez.com, soit dans mon livre.
    Cordialement
    Patrick Bonnin

  19. #19
    Expert éminent sénior
    Bonjour,

    et merci pour ce retour.
    Citation Envoyé par patrick.bonnin Voir le message
    Si vous voulez comprendre les formules, il faut comprendre la manière de réaliser les pixels intermédiaires.
    C'est un petit peu plus complexe qu'une simple multiplication par le nombre de zoom.
    Peut-être, mais en voyant ça après avoir demandé un facteur 2 (la source en vert en bas, le résultat zoomé en gris en haut),

    je me suis simplement dit que quelque chose clochait.

    Car in fine je dois avoir un résultat de 512x340.
    Et pour avoir 512 colonnes en largeur, il va bien falloir que j'aie 512 pixels par ligne.

    Après, s'il faut faire des bidouilles pour y arriver, je vais donc étudier ça :
    Citation Envoyé par patrick.bonnin Voir le message
    Celle-ci est présentée soit dans l'article 2 du site developpez.com, soit dans mon livre.
    Ça tombe bien, je suis dessus en ce moment.

    Ceci dit, quand j'ouvre un fichier avec ImageJ, que je demande Image/Scale... et que je spécifie XScale et YScale à 2, la largeur et la hauteur de l'image résultante sont bien s'affichent comme multipliées par 2.

    Les deux champs Width et Height ont été automagiquement remplis en saisissant les valeurs en X et en Y, et en cliquant sur [OK] on obtient ça (résultat tronqué pour ne pas alourdir)&#8239;:



    Noter les tailles sous les barres de titre.
    Pas de raison que EdZoom ne fasse pas pareil.

    Bon dimanche,

    EDIT :
    Et quand on regarde le code source du plugin Scaler.java, on ne peut que constater qu'il utilise la même simplicité que celle que j'ai proposée :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (xscale>0.0 && yscale>0.0) {
    	newWidth  = (int)(r.width *xscale);
    	newHeight = (int)(r.height*yscale);
    }

    Qu'en conclure&#8239;?
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  20. #20
    Expert éminent sénior
    Citation Envoyé par patrick.bonnin Voir le message
    C'est un petit peu plus complexe qu'une simple multiplication par le nombre de zoom.
    Quel raisonnement !
    On demande un café et on nous sert un chocolat. "Ben oui, Monsieur, la fourniture de boisson chaude c'est un peu plus complexe que ça".
    On demande une grande blonde svelte et on nous propose une petite brune potelée. "Ben oui, Monsieur, rencontrer l'amour, c'est un peu plus complexe que ça."
    On demande 512x340, on obtient 511x339. C'est plus compliqué ? Moi, je dirais surtout que la fonction ne fait pas son boulot. Poubelle.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

###raw>template_hook.ano_emploi###