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

Traitement d'images Discussion :

Détection de rectangle en utilisant la transformée de Hough


Sujet :

Traitement d'images

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Détection de rectangle en utilisant la transformée de Hough
    j'ai utilisé le logiciel Matlab pour detecter un rectangle dans une image:

    Voici les étapes:
    1- Après la détection de contour, j'ai utilisé les fonctions suivants: hough.m, houghpeaks.m et houghlines.m qui se trouve dans le Matlab.

    2-J'ai cherché les droites perpendiculaires et parallèles ,mais mon problème maintenant est comment faire pour en déduire un seul rectangle et on généralise après. Est-ce que quelqu'un peut m'aider et surtout j'ai besoin de plus détails et un petit si c'est pas trop demandé

    merci d'avance

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    La transformée de Hough permet de détecter des lignes.

    A partir de cette transformée on ne peut pas directement détecter des rectangles, car il faut pour cela détecter des segments (avec un début et une fin).

    On peut cependant limiter la recherche des points du rectangle, car ceux-ci sont sur 2 x 2 droites parallèles, qui sont perpendiculaires entre-elles. Mais c'est tout.

    Poste nous un exemple d'image que tu utilises. Peut-être existe-t-il une méthode plus indiquée.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Merci d'avoir venu a mon aide. Mon but c'est déterminé le nombre de voiture vue dans une route ou autoroute pendant un embouteillage. Vue de dessus de l'image, une voiture est considère comme 2x2 parallèle et qui sont perpendiculaires entre-elles iè un rectangle. Donc c'est pour cette raison que je cherche à détecter le rectangle dans une image. Un rectangle correspond une voiture

    Voici un exemple de l'image que j'avais utilisé pour débuter mon étude. Mais surtout j'ai besoin d'algorithme plus détaillé . Un petit code en Matlab pour illustrer votre algorithme svp
    Images attachées Images attachées   

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par pseudocode Voir le message

    On peut cependant limiter la recherche des points du rectangle, car ceux-ci sont sur 2 x 2 droites parallèles, qui sont perpendiculaires entre-elles. Mais c'est tout.
    Es ce que tu peut me donner un peu plus de détails sur "limiter la recherche des points du rectangle"?
    Et comment faire pour savoir que 2 à 2 droites parallèles et qui sont perpendiculaires entre-elles. SVP besoin son code en Matlab. Merci d'avance

  5. #5
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par sdawil Voir le message
    Bonjour,
    Merci d'avoir venu a mon aide. Mon but c'est déterminé le nombre de voiture vue dans une route ou autoroute pendant un embouteillage. Vue de dessus de l'image, une voiture est considère comme 2x2 parallèle et qui sont perpendiculaires entre-elles iè un rectangle. Donc c'est pour cette raison que je cherche à détecter le rectangle dans une image. Un rectangle correspond une voiture
    Je ne suis pas bien certain que la transformée de Hough soit la bonne méthode pour detecter des voitures sur une route. Est-ce que cette méthode est imposée ?

    Sinon, est-ce qu'on peut avoir un exemple d'image réelle que tu dois analyser ?
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Oublions l'image vue sur l'autoroute mais je veut concentrer sur les 2 images simples que j'ai proposé ci-dessus.

    En faite ,si tu as d'autre méthode à me proposer c'est mieux, mais es ce que tu peut me donner un algorithme concernant l'image que j'ai donné et de détails sur la détection rectangle après avoir trouver les droites parallèles et perpendiculaires. SVP aide moi

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Salut tout le monde , j'ai besoin d'aide sur la façon d'enregistrer un vecteur trouver après chaque boucle for et de l'utiliser tous ces vecteurs après la boucle.
    voici un extrait de mon code en Matlab:
    Code matlab : 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
     
    %% Lecture de l'image:
    originale=imread('2rectangle.jpg');
     
    %% les différentes types de contour
    I=rgb2gray(originale);
    Ca = edge(double(I),'canny');
     
    %%  Transformée de hough:
    [H,Theta,rho] = hough(Ca,'RhoResolution',0.5,'ThetaResolution',0.5);
    figure(1)
    imshow(imadjust(mat2gray(H)),[],'XData',Theta,'YData',rho,...
            'InitialMagnification','fit');
    xlabel('\Theta (degrees)'), ylabel('\rho');
    axis on , axis normal,hold on
    colormap(copper)
     
    %% chercher des pics dans l'espace de Hough:
    numpeaks=20;
    P = houghpeaks(H,numpeaks,'threshold',ceil(0.3*max(H(:))));
    x = Theta(P(:,2));
    y = rho(P(:,1));
    plot(x,y,'s','color','cyan');
     
    lines = houghlines(Ca,Theta,rho,P,'FillGap',20,'MinLength',40);
    figure(2)
    imshow(I),axis on , axis normal,hold on,grid on
    max_len = 0;
     
    for z=1:length(x)
        theta1=x(1,z);
        rho1= y(1,z);
        for v=z:length(x)
            if z==v
                continue
            end
           Tx=3;
           theta2 = x(1,v);
           rho2= y(1,v);
           deltaTheta=abs(theta1-theta2);%Pour le parallèlisme
     
           if deltaTheta < Tx
              alphak =(1/2)*(theta1+theta2);
              sigmak =(1/2)*abs(rho1-rho2);
              P1=[sigmak,alphak]
     
          end
       end
     
    end

    Après l'execution de code vous aurez deux valeurs de P1 differentes et j'aimerai l'utiliser ces deux valeurs dans un autre boucle

    . SVP aide moi
    Images attachées Images attachées  

  8. #8
    Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Arabie Saoudite

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Salut,

    je suis entraine de faire une étude sur la détection de ventricule gauche (forme arbitraire) en utilisant la transformée de Hough Généralisée.


    je cherche une implémentation de cette algo sous matlabe ou sous c++ (biblioteque open cv).

    merci infiniment.

    Citation Envoyé par sdawil Voir le message
    Salut tout le monde , j'ai besoin d'aide sur la façon d'enregistrer un vecteur trouver après chaque boucle for et de l'utiliser tous ces vecteurs après la boucle.
    voici un extrait de mon code en Matlab:
    Code matlab : 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
     
    %% Lecture de l'image:
    originale=imread('2rectangle.jpg');
     
    %% les différentes types de contour
    I=rgb2gray(originale);
    Ca = edge(double(I),'canny');
     
    %%  Transformée de hough:
    [H,Theta,rho] = hough(Ca,'RhoResolution',0.5,'ThetaResolution',0.5);
    figure(1)
    imshow(imadjust(mat2gray(H)),[],'XData',Theta,'YData',rho,...
            'InitialMagnification','fit');
    xlabel('\Theta (degrees)'), ylabel('\rho');
    axis on , axis normal,hold on
    colormap(copper)
     
    %% chercher des pics dans l'espace de Hough:
    numpeaks=20;
    P = houghpeaks(H,numpeaks,'threshold',ceil(0.3*max(H(:))));
    x = Theta(P(:,2));
    y = rho(P(:,1));
    plot(x,y,'s','color','cyan');
     
    lines = houghlines(Ca,Theta,rho,P,'FillGap',20,'MinLength',40);
    figure(2)
    imshow(I),axis on , axis normal,hold on,grid on
    max_len = 0;
     
    for z=1:length(x)
        theta1=x(1,z);
        rho1= y(1,z);
        for v=z:length(x)
            if z==v
                continue
            end
           Tx=3;
           theta2 = x(1,v);
           rho2= y(1,v);
           deltaTheta=abs(theta1-theta2);%Pour le parallèlisme
     
           if deltaTheta < Tx
              alphak =(1/2)*(theta1+theta2);
              sigmak =(1/2)*abs(rho1-rho2);
              P1=[sigmak,alphak]
     
          end
       end
     
    end

    Après l'execution de code vous aurez deux valeurs de P1 differentes et j'aimerai l'utiliser ces deux valeurs dans un autre boucle

    . SVP aide moi

Discussions similaires

  1. comment utiliser le transformée de Hough pour implémenter des descripteurs
    Par fraisa1985 dans le forum Traitement d'images
    Réponses: 1
    Dernier message: 26/04/2010, 10h49
  2. Détection de contour par la transformée de Hough
    Par Antho78 dans le forum Images
    Réponses: 1
    Dernier message: 18/11/2008, 11h36
  3. transformée de Hough, détection des lignes
    Par mat79 dans le forum Traitement d'images
    Réponses: 5
    Dernier message: 11/09/2008, 10h28
  4. Détection de rectangles
    Par kitsune dans le forum OpenCV
    Réponses: 9
    Dernier message: 09/06/2008, 17h18
  5. [VBA][02]Détection des variables non utilisées
    Par cluis dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/03/2007, 10h20

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