Publicité
+ Répondre à la discussion Actualité déjà publiée
Page 2 sur 5 PremièrePremière 12345 DernièreDernière
Affichage des résultats 21 à 40 sur 92
  1. #21
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    bonjour, j'ai testé le code HarrisFast, j'ai pas compris, au debut il affiche
    56 potential corners found


    corner found at: 42,2 (407)
    corner found at: 33,7 (408)
    corner found at: 18,15 (394)
    corner found at: 43,16 (344)
    ........

    puis il affiche 14 corners found.

    j'ai bien bien compris la difference.

  2. #22
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    La détection se déroule en 3 étapes:

    1. Calcul de la mesure de Harris pour chaque pixel de l'image.
    2. Extraction des points qui ont une mesure supérieure au seuil ET qui sont des maximums locaux.
    3. Suppression des point qui sont trop proches les uns des autres: on garde le point qui a la plus grande mesure de Harris.

    Le message "xx potential corners found" est le nombre de points à la fin de l'étape 2.
    Le message "xx corners found" est le nombre de points à la fin de l'étape 3.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #23
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    bonjour pseudocode, j'ai lu le document filtre usuels en traitement d'image, maintenant j'éssaie de comprendre votre algorithme HARRIS-FAST étape par étape, j'ai pas bien compris la partie :

    /**
    * Gaussian function
    */
    private double gaussian(double x, double y, double sigma2) {
    double t = (x*x+y*y)/(2*sigma2);
    double u = 1.0/(2*Math.PI*sigma2);
    double e = u*Math.exp( -t );
    return e;

    pourquoi vous avez utilisé
    double u = 1.0/(2*Math.PI*sigma2);
    et pourquoi vous l'avez multiplié par Math.exp(-t);

    Parceque dans le tut il n'existe pas cette formule . merci.

  4. #24
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par bilzzbenzbilz Voir le message
    pourquoi vous avez utilisé
    double u = 1.0/(2*Math.PI*sigma2);
    et pourquoi vous l'avez multiplié par Math.exp(-t);
    C'est la formule d'une fonction gaussienne centrée et normalisée.



    Dans le cas 2D, on à P(x,y) = P(x)*P(y). Si tu fais le calcul tu devrais trouver la formule que j'utilise dans le code.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #25
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : juin 2008
    Messages : 12
    Points : 12
    Points
    12

    Par défaut bipame

    Bonjour,
    mon but c'est de détecter les points saillants et les pixels coin, ce qui veut dire que je vais avoir besoin du détecteur Harris.
    serait-il possible de m'envoyer le code en Matlab
    Merci d'avance

  6. #26
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    dans votre cours sur les filtres vous avez dit dans la page 30 (detecteur de HARRIS)

    Ix et Iy représentent les dérivées de l'intensité suivant x et suivant y. On peut calculer ces valeurs en utilisant,par exemple, les filtres de Sobel horizontaux (pour Ix) et verticaux (pour Iy) sur chaque pixel du voisinage.....

    Pourquoi vous avez utilisé la fonction guassienne dans votre algorithme HARRIS-FAST, quelle est son rôle, je n'ai trouvé aucune information dans votre tut (filtre usuels) et comment vous justifier .

    Quelle est la difference entre la fonction gaussienne
    f=exp( -t ) avec t = (x*x+y*y)/(2*sigma2)
    et le flou gaussien f=1.0/(2*PI*sigma2)*exp( -t ) avec t = (x*x+y*y)/(2*sigma2)

  7. #27
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par bilzzbenzbilz Voir le message
    dans votre cours sur les filtres vous avez dit dans la page 30 (detecteur de HARRIS)

    Ix et Iy représentent les dérivées de l'intensité suivant x et suivant y. On peut calculer ces valeurs en utilisant,par exemple, les filtres de Sobel horizontaux (pour Ix) et verticaux (pour Iy) sur chaque pixel du voisinage.....

    Pourquoi vous avez utilisé la fonction guassienne dans votre algorithme HARRIS-FAST, quelle est son rôle, je n'ai trouvé aucune information dans votre tut (filtre usuels) et comment vous justifier .
    Si vous lisez bien la description du filtre, j'ai marqué:


    ...

    Une amélioration consiste à remplacer la moyenne arithmétique par une moyenne pondérée (par exemple avec une gaussienne).
    Chacun des 4 coefficient de la matrice est fabriqué a partir d'une MOYENNE SUR LE VOISINAGE des intensités Ix, Iy.

    Cette moyenne peut être une simple moyenne arithmétique:

    Code :
    1
    2
    3
    Moyenne(Elements) = Somme { Element(k) } / Nombre total d'élements
                          k
    Les résultats obtenus sont meilleurs si on prend une moyenne pondérée par des poids "wk", en particulier si les poids suivent une fonction gaussienne 2D:

    Code :
    1
    2
    3
    Moyenne(Elements) = Somme { wk * Element(k) } / Somme { wk }
                          k
    avec wk = gaussienne2D( dx , dy )
    et dx,dy = les offsets entre le pixel "k" du voisinage et le pixel considéré (= le centre du voisinage)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #28
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut bonjour bipame

    bonjour bipame , essaie ce code :
    Code matlab :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    close all
    clear all
    clc
    
    I=imread('cameraman.tif');
    figure;imshow(I);title ('fig1');
    thetax=[1/2,1/4,1/2];thetay=[1/2 1/4 1/2].';
    dx=[1/4 1/2 1/4];dy=[1/4 1/2 1/4].';
    n=3;
    
    Imgs = [];
    I= double(I)/256;
    
    for i=1:n
        I =conv2(I,thetax,'same');
        I =conv2(I,thetay,'same');
    
        Imgs{i} = I; % un tableau de cellules:
    end;
    figure;imshow(I);title ('fig2');
    I1=conv2(I,dx,'same');
    w1=immultiply(I1,sqrt(n));
    figure;imshow(w1);title ('fig3');
    
    
    I2=conv2(I,dy,'same');
    w2=immultiply(I2,sqrt(n));
    figure;imshow(w2);title ('fig4');
    %calcule de la norme de gradient  l'image :
    I3=immultiply(w1,w1);
    I4=immultiply(w2,w2);
    I5=imadd(I3,I4);
    mf=sqrt(I5);
    figure;imshow(mf);title ('fig5');
    % calcule de la direction de gradient de l'image:
    I6=imdivide(w2,w1);
    af=atan(I6);
    figure;imshow(af);title ('fig6');
    af2= (af*180)/pi;
    imagesc(af2);title ('fig7');
    %calcul des maxima locaux:
    im=ones(256,256)*0;
    for i=2:254
        for j=2:254
            angle = af(i,j)*180/pi;
            point = mf(i,j);
            
            if (angle>=180)
                angle =180;
            elseif(angle<0)
                angle=180;
            end
            
            %angle
            
            if ((0<=angle)&(angle<22.5))
                grada=mf(i,j+1);
                gradb=mf(i,j-1);
            elseif (22.5<=angle)& (angle<67.5)
                grada=mf(i-1,j+1);
                gradb=mf(i+1,j-1);
            elseif (67.5<=angle)& (angle<112.5)
                grada=mf(i-1,j);
                gradb=mf(i+1,j);
            elseif (112.5<=angle)& (angle<157.5)
                grada=mf(i-1,j-1);
                gradb=mf(i+1,j+1) ;
            elseif (157.5<=angle)& (angle<180)
                grada=mf(i,j-1);
                gradb=mf(i,j+1);
            end
    
            if (point > grada ) & (point > gradb)
                im(i,j)=255;
            else
                im(i,j)=0;
            end
    
        end
    end
    
    figure;imshow(im);title('fig8')
    Si tu trouve un probleme, tu peux contacter mr_samurai sur :

    http://www.developpez.net/forums/pri...newpm&u=204074

  9. #29
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    bonsoir pseudocode, j'ai cherché à comprendre exactement c'est quoi le mot maxima local ( pourquoi ils disent toujour le mot local ), j'ai pas trouvé la réponse dans google ,... , un grand merci .

  10. #30
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par bilzzbenzbilz Voir le message
    bonsoir pseudocode, j'ai cherché à comprendre exactement c'est quoi le mot maxima local ( pourquoi ils disent toujour le mot local ), j'ai pas trouvé la réponse dans google ,... , un grand merci .
    Pas besoin de Google, un dictionnaire suffit:

    Local (adjectif masculin) : qui est limité à un lieu déterminé, nettement circonscrit.
    En image, quand on fait du traitement "local" c'est qu'on travaille uniquement sur un petit voisinage autour d'un pixel.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #31
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    ééééé oui , vous ête un bon observateur, j'ai compris, la réponse existe sur le fichier des filtres usuels ( filtrage global , filtrage " LOCAL " )

  12. #32
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    Je veux comprendre une chose dans le filtre de gauss .

    Si J'ai une image f et je vais appliquer le filtre de gauss G[i][j], donc on va utiliser la formule :

    G[i][j] = (1/(2Pi* σ^2)) * exp(-(i^2 +j^2)/(2*(σ^2))
    ou bien :
    G[i][j] = exp(-(i^2 +j^2)/(2*(σ^2))

    Aussi , je veux savoir pour une matrice 3*3 :
    les i et les j appartiennent 'ils à {-1,0,+1} ou de {0,1,2} ????

  13. #33
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Si J'ai une image f et je vais appliquer le filtre de gauss G[i][j], donc on va utiliser la formule :

    G[i][j] = (1/(2Pi* σ^2)) * exp(-(i^2 +j^2)/(2*(σ^2))
    ou bien :
    G[i][j] = exp(-(i^2 +j^2)/(2*(σ^2))
    Il faudra de toutes façons normaliser la matrice du filtre, c'est à dire la multiplier par une constante afin que la somme des coefficients soit 1.

    Hors les 2 formules précédentes sont les mêmes a une constante multiplicative près. Donc au final, on obtiendra la même matrice du filtre. Tout ce qui changera c'est la valeur de la "constante de normalisation" qui sera utilisée.

    Aussi , je veux savoir pour une matrice 3*3 :
    les i et les j appartiennent 'ils à {-1,0,+1} ou de {0,1,2} ????
    Les voisinages sont généralement centré sur le pixel à traiter, donc i={-1,0,+1} pour un voisinage de taille 3.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #34
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    bonjour pseudocode, je suis entrain d'analyser votre algorithme ( bloc par bloc ) mais j'ai pas trouvé une correspondance avec votre document ( filtres usuels en traitement d'image)

    j'ai compris la partie :

    Gaussian function
    Sobel gradient 3x3

    mais la patie : Convolve gradient with gaussian filter: j'ai pas bien compris
    Si vous avez détaillé votre algorithme quelque part, svp donnez moi un lien ou un doc plus détaillé, j'ai bien cherché, mais j'ai pas trouvé grande chose

    http://www.developpez.net/forums/d32...e-convolution/

    merci .

  15. #35
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par bilzzbenzbilz Voir le message
    bonjour pseudocode, je suis entrain d'analyser votre algorithme ( bloc par bloc ) mais j'ai pas trouvé une correspondance avec votre document ( filtres usuels en traitement d'image)
    C'est normal. Il n'y a pas de rapport direct entre ces 2 contributions.


    j'ai compris la partie :
    Gaussian function
    Sobel gradient 3x3
    C'est deja bien.

    mais la patie : Convolve gradient with gaussian filter: j'ai pas bien compris
    Et bien, il n'y a pas grand chose a comprendre : c'est un produit de convolution entre 2 fonctions. C'est une manière mathématique d'écrire cette fameuse "moyenne pondérée" dont je parlais précédemment.

    Comme c'est dit dans l'article sur les filtres, cela revient à multiplier terme à terme les éléments de chaque matrice, puis faire leur somme. C'est ce que fait le code Java.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  16. #36
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    vous avez écrit :

    // Convolve gradient with gaussian filter:
    //
    // Ix2 = (F) * (Gx^2)
    // .........
    donc Lx2[0][0]=f*grad[0][0][0]*grad[0][0][0];

    mais pouquoi vous avez écrit :

    Lx2[x][y]+=f*grad[xk][yk][0]*grad[xk][yk][0]; c'est à dire une somme

  17. #37
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par bilzzbenzbilz Voir le message
    Lx2[x][y]+=f*grad[xk][yk][0]*grad[xk][yk][0]; c'est à dire une somme
    Je pense qu'il te manque les bases produit de convolution.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  18. #38
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    merci pseudo j'ai compris.

  19. #39
    Membre du Club
    Inscrit en
    décembre 2008
    Messages
    127
    Détails du profil
    Informations forums :
    Inscription : décembre 2008
    Messages : 127
    Points : 42
    Points
    42

    Par défaut

    un nouveau probleme :

    // compute the harris measure
    double h = harrisMeasure(x,y);
    if (h<=0) continue;
    // log scale

    pourquoi vous avez testé si h<=0, est ce qu'on peut avoir une valeur négative?

    pourquoi vous avez utilisé la formule suivante :

    h = 255 * Math.log(1+h) / Math.log(1+255);

  20. #40
    Rédacteur/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 960
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 960
    Points : 15 759
    Points
    15 759

    Par défaut

    Citation Envoyé par bilzzbenzbilz Voir le message
    pourquoi vous avez testé si h<=0, est ce qu'on peut avoir une valeur négative?
    Oui, dans le cas ou la forme du gradient est une courbe en S

    pourquoi vous avez utilisé la formule suivante :
    h = 255 * Math.log(1+h) / Math.log(1+255);
    Parce que l'oeil humain aime bien les échelles logarithmiques.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •