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 :

Recherche d'une correspondance par corrélation


Sujet :

Images

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut Recherche d'une correspondance par corrélation
    bonjour,
    SVP j'ai un problème en traitement d'images si vous pouvez m'aider, voila mon prob :

    j'ai 2 images dont je veux chercher la correspondance par correlation en utilisant la somme des différences absolue (SAD),
    ma question est : comment calculer le SAD entre les 2 images,j'ai la relation mathématiques mais j'arrive pas à la programmer sous matlab,
    j'ai essayé de faire un programme sous matlab mais j'arrive à rien

    je sais que j'ai mal poser le problème,mais c'est ma première année dans ce domaine je ne connais pas encore les termes de traitement d'images que je doit utiliser

    merci d'avance

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    peux-tu nous montrer ce que tu as commencé à faire?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    j'ai écrit un algorithme dans le quel j'ai essayé de diviser les 2 images en blocs tel que la taille de chaque bloc =3,puis j'ai essayé d'appliquer le SAD mais je me trouve devant un problème de boucle,je vais récrire maintenant mon programme sous matlab et le poser ici

    merci

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    voila ce que j'ai essayé de faire :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function [s]=corelation
    bloc_x=208/16;
    bloc_y=209/16;
    A=imread('1.jpg');
    B=imread('2.jpg');
     
    A_ligne=208;
    A_colon=209;
     
    B_ligne=208;
    B_colon=209;
     
    bloc_ligneA=A_ligne/3
    bloc_colonA=A_colon/3
     
    bloc_ligneB=B_ligne/3
    bloc_colonB=B_colon/3
     
    for i=0:bloc_colonA
        for k=0:bloc_ligneA
            for j=0:bloc_ligneA
                for h=i*3+1:i*3+3
                    for z=k*3+1:k*3+3
                        for l=j*3+1:j*3+3
                            %je pense que le resultat doit être une matrice de taille
                            %R(bloc_ligne*bloc_colon,bloc_colon)dans chaque éléments
                            %de la matrice il faut poser la somme qui lui corespont
                            %d'après les somme suivant :
                            SAD=sum(sum(abs(A(h,z)-B(h,l))))
                        end
     
                    end
                end
            end
        end
    end
    mais j'ai pas pu aller plus loin que ça

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    Je vais poser mon problème d'une autre façon :

    je veux construire une carte de disparité à partir d'une paire stéréo,en utilisant la mise en correspondance par corrélation(mes images sont déjà rectifiés).

    je ne sais pas vraiment comment programmer ça sous matlab

    j'espère que mon problème devient un peu claire

  6. #6
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    je vais essayer de comprendre ton probleme :
    soit deux images de taille m x n
    avec m = k * m'
    et n = k * n'

    alors je veux générer la carte de taille m' par n' dont chaque élément contient le coefficient de corrélation entre les imagettes de taille k*k extraites des images d'origine.

    est-ce que c'est ce que tu cherches à faire ?
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    voilà ce que j'ai comme travail à faire

    il faut programmer cette methode de corespondance par correlation en utilisant soit le critère Somme des Différences au Carré (SDC) ou bien le SAD :

    la méthode est bien expliquer ici

    http://documents.irevues.inist.fr/bi...1/PAPER163.pdf

    je veux exactement programmer la partie :

    2. Méthode de mise en correspondance
    par corrélation
    +2.1. Description de la méthode de corrélation
    +2.2. Mesures de corrélation classique
    --->ici dans cette partie je veux pas toute la partie mais seulement la 1 ère ligne : SDC(i1, j1;i2, j2)=..... ;ici on peut utiliser le SAD au lieu du SDC

    le résultat obtenu par le calcule de SDC ou SAD c'est la carte de disparité

    j'espère que quelqu'un peut m'aider avec cette explication : dsl pour ma façon d'expliquer le problème

  8. #8
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    ton travail c'est dans un cadre professionnel (boulot) ou dans le cadre de tes études (devoir) ?
    sinon, j'ai bien lu l'article en référence mais ç'est différent de ce que tu expliquait dans ton premier message parceque là, il s'agit de modéliser la courbe de correspondance le long d'une droite épipolaire.

    * est-ce que tu es en photographie aérienne/redressée, dans ce cas la droite épipolaire du point (i,j) dans l'image 1 est la ligne (i,*) dde l'image 2.
    * ou bien est-ce que tu es en photographie terrestre, dans ce cas la droite épipolaire du point (i,j) peut être n'importe quelle ligne de l'image 2.

    En fait, il faudrait mieux nous décrire ton problèe pour qu'on puisse t'aider

    sinon, la brique de base de ton problème ça sera quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function r = sdc(img1, i1, j1, img2, i2, j2, n)
    % i1, j1 = point dans l'image 1
    % i2, j2 = point dans l'image 2
    % n = demi-taille de la fenêtre de corrélation
     
    h = -n:n ;
    r = sum(sum((img1(i1+h,j1+h)-img2(i2+h,j2+h)).^2)) ;
    et si tu veux faire la correspondance point par point entre deux images

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    n=3 ; % demi-taille de la fenêtre
    [l c] = size(img1) ;
    imgc = zeros(l-2*n, h-2*n);
    for u=(n+1):(l-n)
        for v = (n+1):(c-n)
            imgc(u-n, v-n) = sdc(img1, u, v, img2, u, v, n) ;
        end
    end
    par contre si tu veux faire la correspondance entre un point i1,j1 de l'image 1 et tous les points dans un rayon k autour d'un point cible i2,j2 de l'image 2 toujours avec n = taille de la fenêtre de corrélation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    n=3 ; % demi-taille de la fenêtre
    [l c] = size(img1) ;
    kk = -k:k ;
    imgc = zeros(2*k+1);
    for u=kk
        for v=kk
            imgc(u+k+1, v+k+1) = sdc(img1, i1, j1, img2, u, v, n) ;
        end
    end
    j'ai pas matlab ici pour vérifier donc c'est "sans garantie du gouvernement". Donc à utiliser plutôt comme source d'inspiration que comme solution directe à ton problème.

    j'espère quand même t'avoir aidé un peu
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    merciii bien

    ton travail c'est dans un cadre professionnel (boulot) ou dans le cadre de tes études (devoir) ?
    c'est un TP en Vision 3D et Synthèse d'Images (devoir)


    je vais essayer avec ces codes et j'espère que j'arrive à les programmer

    merci

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut si j'ai bien compris voila ce que vous cherchez !!!
    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
    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    function corrmap(data,labels,reord);
    %CORRMAP Correlation map with variable grouping
    %  CORRMAP produces a pseudocolor map which shows the
    %  amount of correlation of between variables in a data
    %  set. The function will reorder the variables by KNN
    %  clustering if desired. The inputs are the data set 
    %  (data) and an optional variable containing the labels
    %  corresponding the variables. Another optional variable
    %  (reord) will cause the function to keep the original
    %  ordering of the variables if set to 0.
    %
    % The I/O syntax is: corrmap(data,labels,reord)
     
    % Copyright 1997
    % Eigenvector Research, Inc.
    % by Barry M. Wise
    if nargin < 3
      reord = 1;
    end 
    [m,n] = size(data);
    if reord  ~= 0
      dist = -corrcoef(data);
      for i = 1:n
        dist(i,i) = inf;
      end
      for k = 1:n-1
        [min1,ind1] = min(dist);
        [min2,ind2] = min(min1);
        r = ind1(ind2);
        c = ind2;
        % Segment to order samples here
        if k == 1
          groups = zeros(round(n/2),n);
          groups(1,1:2) = [c r]; gi = 1;
        else
          % does r belong to an existing group?
          [zr1,zr2] = find(groups==r);
          % does c belong to an existing group?
          [zc1,zc2] = find(groups==c);
          % If neither c nor r belong to a group they form their own
          if isempty(zr1)   %r doesn't belong to a group
            if isempty(zc1) %c doesn't belong to a group
              gi = gi+1;
              groups(gi,1:2) = [c r];
            else   % r doesn't belong but c does, add r to group c
              sgc = size(find(groups(zc1(1),:)));   %how big is group c
    		  % Figure out what side to add to
              cgc = groups(zc1(1),1:sgc(2));
    		  [mindg,inddg] = min([dist(cgc(1),r) dist(cgc(sgc(2)),r)]);
    		  if inddg == 2
                groups(zc1(1),sgc(2)+1) = r;
    		  else
    		    groups(zc1(1),1:sgc(2)+1) = [r groups(zc1(1),1:sgc(2))];
    		  end
            end
          else   %r does belong to a group
            if isempty(zc1) %c doesn't belong to a group, add c to group r
              sgr = size(find(groups(zr1(1),:)));   %how big is group r
    		  % Figure out what side to add to
    		  cgr = groups(zr1(1),1:sgr(2));
    		  [mindg,inddg] = min([dist(cgr(1),c) dist(cgr(sgr(2)),c)]);
    		  if inddg == 2
                groups(zr1(1),sgr(2)+1) = c;
    		  else
    		    groups(zr1(1),1:sgr(2)+1) = [c groups(zr1(1),1:sgr(2))];
    		  end
            else  %both c and r belong to groups, add group c to group r
              sgr = size(find(groups(zr1(1),:)));  %size of group r
              sgc = size(find(groups(zc1(1),:)));  %size of group c
    		  % Figure out what side to add to
    		  cgc = groups(zc1(1),1:sgc(2));  % current group c
    		  cgr = groups(zr1(1),1:sgr(2));  % current group r
    		  [mindg,inddg] = min([dist(cgc(1),cgr(1)) dist(cgc(1),cgr(sgr(2))) ...
    		         dist(cgc(sgc(2)),cgr(1)) dist(cgc(sgc(2)),cgr(sgr(2)))]);
    		  if inddg == 1
    		    % flop group c and add to the left of r
    		    groups(zr1(1),1:sgr(2)+sgc(2)) = [cgc(sgc(2):-1:1) cgr];
    		  elseif inddg == 2
    		    % add group c to the right of group r
                groups(zr1(1),sgr(2)+1:sgr(2)+sgc(2)) = cgc;
    		  elseif inddg == 3
    		    % add group c to the left of group r
    		    groups(zr1(1),1:sgr(2)+sgc(2)) = [cgc cgr];
    		  else
    		    % flop group c and add to the right of group r
    		    groups(zr1(1),1:sgr(2)+sgc(2)) = [cgr cgc(sgc(2):-1:1)];
    		  end
              groups(zc1,:) = zeros(1,n);
            end
          end
        end
        dist(r,c) = inf;
        dist(c,r) = inf;
        z1 = find(dist(r,:)==inf);
        z2 = find(dist(c,:)==inf);
        z1n = z1(find(z1~=r));
        z1n = z1n(find(z1n~=c));
        z2n = z2(find(z2~=c));
        z2n = z2n(find(z2n~=r));
        z = [z1 z2];
        sz = size(z);
        for j = 1:max(sz);
          for k = 1:max(sz);
            dist(z(j),z(k)) = inf;
          end  
        end
      end
    end
    if reord ~= 0
      order = groups(find(groups(:,1)),:);
    else
      order = 1:n;
    end
    if nargin > 1
      [ml,nl] = size(labels);
      if ml == n
        lflag = 1;
      else
        lflag = 0;
    	nl = 2;
      end
    else
      lflag = 0;
      nl = 2;
    end
    sim = corrcoef(data(:,order)); 
    sim = [sim zeros(n,1); [zeros(1,n) -1]];
    pcolor(0.5:1:n+0.5,0.5:1:n+0.5,sim), colormap('hot')
    set(gca,'Ydir','reverse')
    set(gca,'YTickLabel',[],'YTick',[])
    set(gca,'XTickLabel',[],'XTick',[])
    axis('square')
    if n > 50
      fs = 7;
      os = 0.20*nl/8;
    elseif n > 20
      fs = 9;
      os = 0.20*nl/6;
    else
      fs = 12;
      os = 0.20*nl/4;  %Increase this to make white area around fig bigger
    end
    if lflag == 1
      text(-n*os*ones(n,1)+0.5*ones(n,1),1:n,labels(order,:))
      z = get(gca,'Children');
      set(z(1:n),'FontSize',fs)
      text(1:n,zeros(1,n),labels(order,:))
      z = get(gca,'Children');
      set(z(1:n),'Rotation',90);
      set(z(1:n),'FontSize',fs)
    else
      for i = 1:n
        text(-n*os+0.5,i,int2str(order(i)));
      end
      z = get(gca,'Children');
      set(z(1:n),'FontSize',fs)
      for i = 1:n
        text(i,0,int2str(order(i)));
      end
      z = get(gca,'Children');
      set(z(1:n),'Rotation',90);
      set(z(1:n),'FontSize',fs)
    end
    hold on
    plot([-n*os n+0.5],[-n*os -n*os],'-k');
    plot([-n*os n+0.5],[n+.5 n+.5],'-k');
    plot([-n*os -n*os],[-n*os n+.5],'-k');
    plot([n+0.5 n+0.5],[-n*os n+.5],'-k');
    hold off
    axis image
    colorbar
    if reord ~= 0
      title('Correlation Map, Variables Regrouped by Similarity')
    else
      title('Correlation Map, Variables in Original Order')
    end
    xlabel('Scale Gives Value of R for Each Variable Pair')

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    j'ai pas bien compris cette dernière solution

    j'ai appliqué la solution de Mr ol9245 et elle donne des résultats proche de se que je veux -->mais dans cette solution il y a pas de min voilà un schéma pour mon problème

    j'ai une question : la matrice imgc= matrice de disparité??

    merci à vous tous
    Images attachées Images attachées  

  12. #12
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Oui, j'ai compris ton problème maintenant.
    dans les petits codes que je t'ai donné, imgc est un tableau de disparités mais c'est pas exactement celui dont tu as besoin, donc il faut que tu t'en inspires pour coder ce que tu veux.

    par contre la fonction que je t'ai écrite est bien utile.

    à toi de travailler un peu maintenant pour résoudre ton problème (un problème de stéréovision sur des images redressées).
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  13. #13
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    j'ai fait une petite modification et je pense que j'ai tombé sur je que je veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    n=3;
    [l c]=size(img1);
    imgc=zeros(l-2*n,c-2*n);
    for u=(n+1) : (l-n)
        for k=(n+1) : (c-n)
            for v=(n+1) : (c-n)
                R(u-n,v-n)=sdc(img1,u,k,img2,u,v,n);   
            end
            imgc(u-n,k-n)=min(min(R));
        end
    end
    imshow(imgc);
    SVP si vous voyez qu'il y a des erreurs aidez moi pour les corriger

    merci mille fois

  14. #14
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Je ne suis pas convaincu par ton 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
    n=3; % taille de la fenetre de corrélation
    [l c]=size(img1);
    imgc=zeros(l-2*n,c-2*n); % initialisation de imgc = matrice
    for u=(n+1) : (l-n) % pour chaque ligne. -> OK
        % ici il faut réinitialiser R 
        for k=(n+1) : (c-n) % pour chaque colonne dans img1
            for v=(n+1) : (c-n) % pour chaque colonne dans img2
                R(u-n,v-n)=sdc(img1,u,k,img2,u,v,n); % Pourquoi R est une matrice ici ???  
            end
            imgc(u-n,k-n)=min(min(R)); % ici tu fais min(min(R)) ce qui regient à min (R(:)) or tu n'as chanfgé que une ligne (la ligne u-n). Ce n'est pas ce que tu cherches à faire
    % Et tu stockes la valeur du minimum. Or dans l'énoncé de ton devoir on te demande de stocker le lieu du minimum. C'est différent !
        end
    end
    imshow(imgc); % et ça te donne un résultat qui te plait ???
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  15. #15
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    % et ça te donne un résultat qui te plait ???
    ton premier code me donne le résultat le plus acceptable (surtt avec n=0)

    --->mais avec mon code j'ai obtenu un mauvais résultat :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    n=3;
    [l c]=size(img1);
    imgc=zeros(l-2*n,c-2*n);
    for u=(n+1) : (l-n)
        for k=(n+1) : (c-n)
            for v=(n+1) : (c-n)
                R(u-n,v-n)=sdc(img1,u,k,img2,u,v,n);   
            end
            imgc(u-n,k-n)=min(min(R));
        end
    end
    imshow(imgc);

    ----> d'après tes remarques j'ai fait ces modifications,mais le code me donne aussi un mauvais résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    n=3;
    [l c]=size(img1);
    imgc=zeros(l-2*n,c-2*n);
    for u=(n+1): (l-n)
        for k=(n+1): (c-n)
            R=zeros(1,c-n); %<----avec les modifications du code je pense que la réinitialisation  de R est là 
            for v=(n+1): (c-n)
                R(1,v-n)=sdc(img1,u,k,img2,u,v,n);   
            end
            imgc(u-n,k-n)=min(R);  %on stocke le min du vecteur ligne R (je pense %que c'est une indensité )::::je pense que tu as compris mon %problème plus que moi 
        end
    end
    imshow(imgc);
    désolé pour ces codes erronés

  16. #16
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    voilà quelques résultats :

    img1 :



    img2:




    --->résultat du premier code de Mr ol9245 avec n=3



    --------> le même code avec n=0 :


    ----->résultat de mon premier code (qu'est incorrecte ) :



    ----->résultat de mon dernier code(résultat inacceptable )

    Images attachées Images attachées      

  17. #17
    Membre à l'essai
    Inscrit en
    Octobre 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 21
    Points : 10
    Points
    10
    Par défaut
    j'ai fait quelques modifications :

    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
    function [imgc]=cor2(img1,img2)
    n=3;
    [l c]=size(img1);
    imgc=zeros(l-2*n,c-2*n);
    for u=(n+1):(l-n)
        for k=(n+1):(c-n)
            R=zeros(1,c-n);
            for v=(n+1):(c-n)
                R(1,v-n)=sad(img1,u,k,img2,u,v,n);   
            end
          
           [b w]=min(R); %w=la valeur de v  associé à min(R) dans l'image 2
            imgc(u-n,k-n)=(k-w);  % ici on stocke la distance entre le point de l'image 1 et son correspondance dans l'image 2
        end
    end
    imshow(imgc);
    -----> résultat :
    Images attachées Images attachées  

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mars 2013
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 221
    Points : 31
    Points
    31
    Par défaut
    Bonjour
    je suis entrain d'essayer le code donné par ol9245 en fait c'est quoi la variable h et comment l'initialiser ?
    et pour hanene est ce que t'as trouvé le bon résultat? aidez moi pour jeter un coup d'oeuil sur le résultat pour m'inspirer afin de trouver une procédure pour la mise en correspondance d'images et merci bien
    ( je travaille sur l'appariement d'image et je cherche pour le moment à voir les résultats de ceux qui ont travaillé sur ce domaine et comparer mes résultats avec leurs résultats )
    merci bien pour toute sorte d'image puisque je suis encore débutant

  19. #19
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut image médical
    salem! svp pouvez vous m'aider je veux diviser une images en ensemble des blocs de taille 51*51, puis calculer la valeur maximal et la valeur minimal pour chaque bloc

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/11/2012, 19h42
  2. [XL-2007] Recherche d'une position par rapport a une valeur
    Par 0x44-0x43-0x53-0x43 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/02/2010, 11h17
  3. Mise en correspondance par corrélation
    Par whiteboy dans le forum OpenCV
    Réponses: 2
    Dernier message: 07/05/2008, 21h22
  4. [Etat] Remplacer une lettre par un mot correspondant
    Par binouzzz19 dans le forum IHM
    Réponses: 1
    Dernier message: 20/04/2007, 17h30
  5. [VB6] Recherche d'une chaine commençant par XX
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/05/2006, 09h23

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