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 :

dimension matrice problème


Sujet :

Images

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut dimension matrice problème
    Bonjour j'ai un problème pour la taille de deux matrice, en fait le problème réside dans la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         fb1=(exp(-abs((I(j)-m).^2)./2*s.^2));
    c'est que I(j) l intensité d'un pixel et m la moyenne d'une région doivent etre de la même dimension
    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
    function K=affinity(I,A,sig)
     
    [i,j,a]=find(A); %get adjacencies
    global mesurer_taches_couleurs % déclaration variables
    global k
     
     
    j = im2bw(I, 0.4); % le threshold=0.4 pour l'image binaire
    valeur_threshold = 100; %valeur threshold
    j = imfill(j, 'holes');
     
     
    label = bwlabel(j, 8); % étiquetage des régions avec bwlabel
    couleurs_labels = label2rgb (label, 'hsv', 'k', 'shuffle');% couleurs aléatoires pour les labels
    mesurer_taches_couleurs = regionprops(label, 'all'); %toutes les propriétés des tâches d'encre de l'image
     
    nombre_taches = size(mesurer_taches_couleurs, 1);
     
    hold on; % permettre la superposition
     
    frontiere = bwboundaries(j);
     
    for k = 1 : nombre_taches % parcourir tous les taches des couleurs
        lister_pixels = mesurer_taches_couleurs(k).PixelIdxList; % lister les pixels a l'aide de PixelIdxList
     
        % opération mean pour chaque tache de couleur
     
         m=mean(I(lister_pixels); % l'intensité moyenne dans l'image i
         s=std(I(lister_pixels));
         fb1=(exp(-abs((I(j)-m).^2)./2*s.^2));
         fb2=(exp(-abs((I(i)-m).^2)./2*s.^2));
     
        K=sparsse(i,j,a.*sqrt(exp(-abs((I(i)-I(j)).^2)./2*sig.^2).*min(fb1,fb2)),size(A,1),size(A,2));
     
    end

  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
    Bonjour,

    quel est le message d'erreur complet ?

    Le plus simple est de mettre un point d'arrêt sur la ligne concernée et de vérifier toutes les dimensions des variables.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    size (fb1)
    size (fb2)
    size(A)
    a donné
    ans =
    
           20224           1
    
    
    ans =
    
            2066           1
    
    
    ans =
    
            4096        4096
    l'erreur:
    Matrix dimensions must agree.
    
    Error in affinity (line 51)
        K=sparse(i,j,a.*sqrt(exp(-abs((I(i)-I(j)).^2)./2*sig.^2).*min(fb1,fb2)),size(A,1),size(A,2))

  4. #4
    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
    Peut-on avoir le message d'erreur complet ?

    Il faut regarder les dimensions des variables qui sont utilisées dans la ligne en question :
    I, j, m et s.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    Bonjour en fait il n y a plus d'erreur pour les fonctions fb1 et fb2 mais le problème est dans la ligne suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        K=sparse(i,j,a.*sqrt(exp(-abs((I(i)-I(j)).^2)./2*sig.^2).*min(fb1,fb2)),size(A,1),size(A,2));
    j'ai fait une petite modification pour le code il est devenu comme ça

    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
    function K=affinity(I,A,sig)
     
     
    [i,j,a]=find(A); %get adjacencies
    global mesurer_taches_couleurs % déclaration variables
    global k
     
     
    j = im2bw(I, 0.4); % le threshold=0.4 pour l'image binaire
    valeur_threshold = 100; %valeur threshold
    j = imfill(j, 'holes');
     
     
    label = bwlabel(j, 8); % étiquetage des régions avec bwlabel
    couleurs_labels = label2rgb (label, 'hsv', 'k', 'shuffle');% couleurs aléatoires pour les labels
    mesurer_taches_couleurs = regionprops(label, 'all'); %toutes les propriétés des tâches d'encre de l'image
     
    nombre_taches = size(mesurer_taches_couleurs, 1);
     
    hold on; % permettre la superposition
     
    frontiere = bwboundaries(j);
     for tache = 1 : nombre_taches
        tache_couleur_courante = frontiere{tache};
        plot(tache_couleur_courante(:,2), tache_couleur_courante(:,1), 'r','LineWidth', 2);
    end
    hold off;
    for k = 1 : nombre_taches % parcourir tous les taches des couleurs
        lister_pixels = mesurer_taches_couleurs(k).PixelIdxList; % lister les pixels a l'aide de PixelIdxList
     
        % opération mean pour chaque tache de couleur
     
         m=mean(I(lister_pixels)); % l'intensité moyenne dans l'image i
         s=std(I(lister_pixels));
     
         fb1=(exp(-abs((I(i)-m).^2)./2.*s.^2));
         fb2=(exp(-abs((I(j)-m).^2)./2.*s.^2));
     
     
    end
     
        K=sparse(i,j,a.*sqrt(exp(-abs((I(i)-I(j)).^2)./2*sig.^2).*min(fb1,fb2)),size(A,1),size(A,2));
    le message d'erreur c'est celui que j'ai posté tout à l'heure

    Matrix dimensions must agree.

    Error in affinity (line 51)
    K=sparse(i,j,a.*sqrt(exp(-abs((I(i)-I(j)).^2)./2*sig.^2).*min(fb1,fb2)),size(A,1),size(A,2));

    Error in fctest (line 20)
    K=affinity(I,A,sig);


    je poste ici le code de la fonction adjanceny appelé ici pour la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [i,j,a]=find(A); %get adjacencies
    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
     
     
    function A=adjacency(I,n,k1)
    %function A=adjacency(I,n,k1)
    % Input: image (used for size only), n=L1 distance of neighbourhood, k1=distance decline factor
    %
     
    [r,c]=size(I);
    N=r*c;
     
    %abs delta of column and row coordinates
    dC=abs(repmat([1:c],c,1)-repmat([1:c].',1,c));
    dR=abs(repmat([1:r],r,1)-repmat([1:r].',1,r));
     
    A=sparse(N,N); %output matrix
     
    for dc=0:n %for each L1 distance level
    	[bi,bj]=find(dC == dc); %r*r blocks with dc<=n
    	for dr=0:n-dc
    		[i,j]=find(dR == dr); %pixels within block with dr+dc<=n
     
    		%The adjaceny
    		a=1./(1+k1.*sqrt(dr.^2+dc.^2)); 
     
     
    		%compute global indices and put things into A
    		p=[];q=[];
    		for k=1:length(bi)
    			p=[p;(bi(k)-1)*r+i];
    			q=[q;(bj(k)-1)*r+j];
    		end
    		A=A+sparse(p,q,repmat(a,size(q)),N,N);
    	end
    end
    merci pour vous

  6. #6
    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
    Citation Envoyé par araking Voir le message
    le message d'erreur c'est celui que j'ai posté tout à l'heure
    Bizarre, je m'attendais à voir quelque chose avant le "Matrix dimensions must agree.".

    As-tu essayé de mettre un point d'arrêt sur la ligne concernée et de regarder les dimensions des différentes variables ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut
    bonjour ,

    en fait il y a plus d'erreur c'est un problème de déclaration de variable merci à vous

Discussions similaires

  1. [Débutant] Erreur Dimension matrice?
    Par Lorddolf dans le forum MATLAB
    Réponses: 2
    Dernier message: 14/07/2010, 21h53
  2. Réponses: 0
    Dernier message: 14/09/2009, 04h35
  3. dimension et problème affichage applet
    Par KRis dans le forum Applets
    Réponses: 0
    Dernier message: 25/05/2009, 10h48
  4. Réponses: 10
    Dernier message: 02/03/2009, 17h24
  5. Problème de dimensions - Matrice de string
    Par OmycRon dans le forum MATLAB
    Réponses: 4
    Dernier message: 04/06/2008, 16h01

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