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

Images Discussion :

Calcul du contour d'un objet dans une image


Sujet :

Images

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Calcul du contour d'un objet dans une image
    Bonjour,
    Je veux calculer le contour d'un objet dans une image pour ensuite calculer son aire , j'utilise le code suivant pour l'image ci-jointe , mais le résultats est tout autre (je veux calculer le contour de l'os et de la prothèse)
    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
     
    clear all
    close all
    clc
    x=imread('face.png');
    level=graythresh(x);
    bw=im2bw(x,level);
    h=fspecial('gaussian',5,5);
    bw=imfilter(bw,h);
    bw=imfill(~bw,'hole');
    bw=~bw;
    b=bwboundaries(bw);
    imshow(x);
    hold on
    for i=1:length(b)
        contour=b{i};
        plot(contour(:,2),contour(:,1),'g','LineWidth',3);
    end
    Nom : face.jpg
Affichages : 2567
Taille : 263,3 Ko

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Qu'est-ce qui ne va pas concrètement?

    Je pense qu'au vue de ce que tu dis, l'erreur que tu effectues est dans le seuillage de ton image. Si tu fais un graythresh de ta figure, tu auras soit le fond de ton image confondu avec l'os, soit l'os confondu avec la protèse puisque ton image sera binaire après seuillage et que tu n'as pas une double inclusion mais des frontières communes pour chacun des 3 éléments de ton image.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Je cherche juste le moyen de calculer la surface de la prothèse et celles de l'os, donc je suis partie de l'idée de detecter le contour des deux objets puis de calculer leur surfaces.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Si tu regardes le 2ème argument que renvoie la fonction bwboundaries, c'est directement la surface.

    [B,L] = bwboundaries(bw);
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Cela dit, cela ne changera pas le fond de ton problème qui sera de discriminer la prothèse de l'os pendant ton seuillage. Je suppose qu'il y a plusieurs solutions facile à mettre en place pour cela.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    oui , en cherchant j'ai tenté le seuillage , mais étant débutante en matlab je n'arrive pas à imposer un bon seuil pour différencier entre le gris et le noir.
    en gros j'ai essayé ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    clear all
    close all
    clc
    img=imread('nb.tif');
    figure;imshow(img);
    img=im2double(img);
    figure;subplot(1,2,1);imshow(img);
    result=(img2<1).*img;
    subplot(1,2,2);imshow(result);
    mais cela ne change rien !!!!

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Ton image de base est en niveau de gris ou en RGB?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    en niveau de gris !!!

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Alors personnellement, je sais pas si c'est une méthode super rigoureuse, mais j'essayerai par tâtonnement de trouver le seuil qui te permettrait dans un premier temps de discriminer l'os (et a forciori le prothèse) du fond de ton image.
    Normalises ton image entre 0 et 1 si ce n'est pas déjà fait, puis tente peu à peu de binariser l'image avec un seuil de plus en plus haut et enfin, analyse le résultat visuel pour voir si tu as bien isoler l'os et la prothèse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test = im2bw(img_normalisee,monSeuil); % augmentation du seuil pas à pas
    imshow(test) %regarde si tu as bien récupérer ton os avec la prothèse
    Ensuite tu pourras augmenter significativement ton seuil pour n'obtenir que ta prothèse dans l'image binaire.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    et comment normaliser ?

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    est-ce correct de normaliser ainsi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    clear all
    close all
    clc
    img=imread('nb.tif');
     
    Im=double(img)/255; %ici j'ai normalisé l'image pour ne garder que les 0 et 1

  12. #12
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    pour normaliser tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    img = double(img);
    img = (img-min(min(img)))/(max(max(img))-min(min(img)));
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    merci bcp, j'ai bien discriminé ma prothèse , maintenant je dois chercher une méthode pour sélectionner juste les points de la surface supérieur dans e but de calculer l'air ???

  14. #14
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bah pour l'aire tu peux regarder le 2eme paramètre de sorties de bwboundaries qui te renvoie le masque de ton objet. En fait je comprends pas très bien ce que tu veux dire par "aire" dans ce cas ci. Tu veux faire un calculer de dimension? as tu la correspondance entre un pixel et une dimension réel?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  15. #15
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    j'ai trouvé une fonction qui le fait "bwboundaries"
    voici mon code ainsi que la figure retrouvée
    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
     
    clear all
    close all
    clc
    img=imread('nb.tif');
     
    img = double(img);
    img = (img-min(min(img)))/(max(max(img))-min(min(img)));
    test = im2bw(img,0.3); % augmentation du seuil pas à pas
    imshow(test) %regarde si tu as bien récupérer ton os avec la prothèse
    h=fspecial('gaussian',5,5);
    bw=imfilter(test,h);
    bw=imfill(~bw,'hole');
    bw=~bw;
    b=bwboundaries(bw);
    hold on
    for i=1:length(b)
        contour=b{i};
        plot(contour(:,2),contour(:,1),'g','LineWidth',3);
    end
    Nom : figure.jpg
Affichages : 2545
Taille : 12,2 Ko

    Cependant je veux sélectionner uniquement certains points de surface de la prothèse ?!!!!

  16. #16
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Voilà j'ai réglé mon problème concernant le contour , maintenant je veux savoir comment sélectionner juste les points de surface pour calculer la surface supérieure .

    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
     
    clear all
    close all
    clc
    img=imread('nb.tif');
    img = double(img);
    imshow(img)
    img = (img-min(min(img)))/(max(max(img))-min(min(img)));
    test = im2bw(img,0.3); % augmentation du seuil pas à pas
    imshow(test) %regarde si tu as bien récupérer ton os avec la prothèse
    h=fspecial('gaussian',5,5);
    bw=imfilter(test,h);
    bw=imfill(~bw,'hole');
    bw=~bw;
    b=bwboundaries(bw);
    hold on
    for i=3:length(b)-2
        contour=b{i};
        plot(contour(:,2),contour(:,1),'g','LineWidth',3);
    end

  17. #17
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut
    Si tu pars du principe que la surface de ton objet est égale à la somme des surfaces des points qui le constituent ça peut aider, ou alors j'ai mal compris ce que tu veux faire.

    En claire, mon idée est de dire que :
    • tu connais le nombre de points au dessus de ton seuil
    • tu connais la surface d'un point
    • Donc tu multiplie le nombre de points par la surface d'un seul points



    Betaplus

Discussions similaires

  1. localisation d'objet dans une image
    Par soforan dans le forum Images
    Réponses: 2
    Dernier message: 12/08/2011, 18h38
  2. Réponses: 4
    Dernier message: 15/03/2008, 11h13
  3. Encadrer un objet dans une image par un rectangle
    Par hanane78 dans le forum Images
    Réponses: 7
    Dernier message: 14/03/2007, 22h50
  4. [Photoshop]séléctionner un objet dans une image
    Par stanley dans le forum Imagerie
    Réponses: 5
    Dernier message: 29/06/2006, 20h15
  5. Comptage du nombre d'objets dans une image
    Par fire.stone dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/02/2006, 21h26

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