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 :

Sélectionner la ROI d'une image en niveaux de gris


Sujet :

Images

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Sélectionner la ROI d'une image en niveaux de gris
    Bonjour, Je travaille sur une image au niveau de gris et je veux sélectionner la région d’intérêt en détectant le premier pixel non noir de gauche, droite et en haut sauf que j'ai eu des erreurs. Pourriez vus m'aider s'il vous plait.
    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
    for i = 1:n
     for j = 1:m
     
      bord1 = find(img,~1,'first');
      for i=n:-1:1
          for j=m:-1:1
              bord2 = find(img,~1,'first');
     
          end
      end
     
     end
    end
     bord(i,j)=[bord1 bord2]; 
    figure(3); imshow(bord);
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    bord2 = find(img,~1,'first'); : ~1 = 0 est le nombre d'indices que tu demandes à la fonction find, 1 sans le ~ devant serait plus approprié

    Plusieurs erreurs cumulées :
    • Tu commets l'erreur classique de ré-affecter une variable dans d'une boucle sans conserver les valeurs des itérations précédentes dans un tableau. À cette ligne bord(i,j)=[bord1 bord2]; située après les boucles, tu ne rentreras que les toutes dernières valeurs.
    • En parlant de cette ligne : bord(i,j) ne peut stocker qu'une seule valeur, alors que [bord1 bord2] en représente deux.
    • Attention à ne pas nommer les variables itératives des boucles imbriquées de la même façon :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      for i = 1:n
          for j = 1:m
              
              bord1 = find(img,~1,'first');
              for i=n:-1:1
                  for j=m:-1:1

    Tu peux ici tout à fait te passer de boucles. La fonction find suffit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [~, j] = find( any(im~=0,1) );
    [i, ~] = find( any(im~=0,2) );
    cadre = [j(1) i(1) j(end)-j(1) i(end)-i(1)];  % [x y w h]
     
    imshow(im), hold on
    rectangle('Position', cadre, 'EdgeColor', 'r')

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je vous remercie pour votre réponse, j'ai écris le code que vous m'avez donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    X =dicomread('C:\Users\Amine\Desktop\segmentation\images\CT-thorax\img.IMA');
    figure(1);imshow(X, 'DisplayRange', [])
    [~,j]=find(any(X~=0,1));
    [i,~]=find(any(X~=0,2));
    cadre=[j(1) i(1) j(end)-j(1) i(end)-i(1)]; 
     figure(2);imshow(X), hold on
     rectangle('Position', cadre, 'EdgeColor', 'r')
    J'ai obtenu comme résultat une image noir encadré par du rouge et lorsque j'ai testé sur une image jpeg j'ai eu la même image encadré par un cadre rouge. Avez vous une idée sur l'erreur svp.
    Images attachées Images attachées  

  4. #4
    Invité
    Invité(e)
    Par défaut
    L'image que tu fournis est une image en couleurs vraies. Si tu regardes attentivement, les pixels que tu prends pour du noir (0) ne sont pas exactement à 0 mais 1,2... Tu pourras aussi remarquer une ligne verticale tout à gauche.
    Avant d'exécuter mon code, il faudra donc effectuer un prétraitement dessus.

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/03/2015, 14h57
  2. Réponses: 1
    Dernier message: 19/03/2010, 10h38
  3. Réponses: 0
    Dernier message: 29/10/2008, 13h14
  4. Détection de visages dans une image en niveaux de gris
    Par bert_ dans le forum Traitement d'images
    Réponses: 12
    Dernier message: 04/04/2007, 18h04

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