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 :

Détection de cercles


Sujet :

Images

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Détection de cercles
    Bonjour,
    j'ai un prog. qui détecte les cercles de diamètre donné d'une image. J'ai du mal à généraliser le code pour n'importe quel diamètre.
    Voici les code
    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
     
    function Acc=Transforme_hough(I,R,seuil)
    %création image contour%
    A=edge(I,'canny');
    %recherche des points contours%
    [a,b]=find(A==1);
    %incrémentation de Acc%
    [m,n]=size(I);%taille de  le matrice de l'image d'origine%
    Acc=zeros(m,n);
     for i=1:length(a)
      for  c1= 1:m
        for c2= 1:n
         if abs((a(i)-c1)^2 +(b(i)-c2)^2-R^2)<= seuil
             Acc(c1,c2)=Acc(c1,c2)+1;
         end
        end 
       end 
    end
    et le prog. qui fait appel
    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
     
    close all
    I=imread('monnaie_1.jpg');
    I=imresize(I,0.5,'bicubic');
    seuil=0.5;
    R=10
    acc=transforme_Hough(I,R,seuil);
    [c1,c2]=find(acc==max(max(acc)))
    Imres=zeros(size(I));
    for teta=0:0.1:2*pi
        x=c1(1)+R*cos(teta);
        y=c2(1)+R*sin(teta);
        if round(x)<size(I,1) & round(y)<size(I,2) & round(x)>1 & round(y)>1 
          Imres(round(x),round(y))=255;
      end
    end
    figure;
    imshow(Imres);
    figure;
    imshow(I);
    Merci du coup de main
    Images attachées Images attachées  

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 27
    Points : 17
    Points
    17
    Par défaut
    'jour
    ton code detecte un cercle puis le trace!
    Essaye ce lien
    http://www.developpez.net/forums/sho...d.php?t=260806

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    j'ai revu tous les algo. Mais ils ne concernent pas les cercles de rayons indeterminés.

  4. #4
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Bonjour,

    est-ce que cet exemple t'aide ??
    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
    I=imread('coins.png');
    subplot(2,1,1), imshow(I)
    level=graythresh(I);
    bw = im2bw(I,level);
    subplot(2,1,2), imshow(bw)
    % Finding the region properties
    if bw(1,1)
        bw=~bw;
    end
    bw=imfill(bw,'hole');
    L = bwlabel(bw);
    stats = regionprops(L,'Area','Centroid');
    % Counting the dimes by using object sizes 
    figure, imshow(bw)
    hold on
    count = 0;
    seuil=200; % par exemple
    for i = 1:length(stats) 
        if stats(i).Area > seuil
            plot(stats(i).Centroid(1), ...
                 stats(i).Centroid(2),'*')
            count = count+1;
        end
    end
    title(['There are ' num2str(count) ...
           ' dimes in this image.'])
       hold on
       contour(bw,'g');
    MATLAB 7.4 (R2007a) WIN XP SP2
    -------------------------------------

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    J'ai dejà tenté ce type de code mais, puisque il n'y a pas l'équation d'un cercle, il detecte la moindre tâche sur d'autres images.
    Merci de ton aide

Discussions similaires

  1. Détection de cercle d'une image binarisée
    Par EmilieGh dans le forum OpenCV
    Réponses: 1
    Dernier message: 24/02/2011, 19h16
  2. Réponses: 6
    Dernier message: 24/02/2011, 17h21
  3. Détection de cercle par la transformée de hough
    Par roulian46 dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 23/12/2010, 11h20
  4. Détection de cercle partiel
    Par pasqual dans le forum OpenCV
    Réponses: 3
    Dernier message: 27/11/2008, 14h31
  5. Détection de cercles dans une image
    Par abs2008 dans le forum Images
    Réponses: 6
    Dernier message: 29/05/2008, 13h47

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