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

MATLAB Discussion :

Classification FCM


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Femme Profil pro
    matlab
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : matlab
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 3
    Points
    3
    Par défaut Classification FCM
    Bonsoir,
    je suis entrain de faire la classification de deux images avec FCM (Matlab),
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ Unow, center, now_obj_fcn ] = fcm( image, clusterNum );
    mais j'ai eu des erreurs dans l'implémentation.

    Mercii

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Comment espères-tu que l'on puisse t'aider efficacement sans voir, ni le code, ni le message d'erreur ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Candidat au Club
    Femme Profil pro
    matlab
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : matlab
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Jerome Briot Voir le message
    Comment espères-tu que l'on puisse t'aider efficacement sans voir, ni le code, ni le message d'erreur ?
    Bonsoir Jerome


    voici le 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
    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
    I1 = imread('image.jpg');
    imshow(I1);
    I2=imread('image1.jpg');
    imshow(I2);
    n=size(I1,1);
    m=size(I1,2);
    K=0;
    h=size(I2,1);
    p=size(I2,2);
    for i=1:n
    for j=1:m
        if(I1(i,j)< I2(i,j))
     K = K+ (-((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
       j=j+1;
        else
          K = K+ (((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
        j=j+1;
        end
    end
    i=i+1;
    end
    k=0;
    for i=1:4
    for j=1:5
      disp(['r = ', num2str(I1(i,j))]);  
     
       if (I1(i,j)< I2(i,j))
            t=1;
    s(i,j) = -((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
    variance1(i,j) = ((I1(i,j)/(I1(i,j)+I2(i,j) )) * ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))* ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
    disp(['r = ', float(variance1(i,j))]);
     
            t=2;
    s(i,j) = -((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
    variance2(i,j) = ((I2(i,j)/(I1(i,j)+I2(i,j) )) * ((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
        disp(['r = ', float(variance2(i,j))]);
     
        else 
     
            t=1
    s(i,j) = ((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
    variance1(i,j) = ((I1(i,j)/(I1(i,j)+I2(i,j) )) * ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))* ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
    disp(['r = ', float(variance1(i,j))]);
     
            t=2;
           s(i,j) = ((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
    variance2(i,j) = ((I2(i,j)/(I1(i,j)+I2(i,j) )) * ((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
        disp(['r = ', num2str(variance2(i,j))]);
     
        end 
        if(variance1(i,j) <= variance2(i,j))
     clusterNum = 2;
    image = I1 (1,1,:)
     
    [ Unow, center, now_obj_fcn ] = fcm( image, clusterNum );
    figure;
    subplot(2,2,1); imshow(image,[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow(:,:,k),[]);
    end
        if(s(i,j)<=K)    
            Unow2(i,j) = Unow(i,j);
        else
           clusterNum = 2;
          image2 =  I2 (1,1,:)
     
    [ Unow2, center, now_obj_fcn ] = fcm( image2, clusterNum );
    figure;
    subplot(2,2,1); imshow(image2,[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow2(:,:,k),[]);
    end 
     
        end
        else
            clusterNum = 2;
            image2 = I2 (1,1,:)
     
    [ Unow2, center, now_obj_fcn ] = fcm( image2, clusterNum );
    figure;
    subplot(2,2,1); imshow(image2,[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow2(:,:,k),[]);
    end
     if(s(i,j)<= K)
          Unow(i,j) = Unow2(i,j); 
     
     else
         clusterNum = 2;
         image1 = I1 (1,1,:)
     
    [ Unow, center, now_obj_fcn ] = fcm( image1, clusterNum );
    figure;
    subplot(2,2,1); imshow(image1,[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow(:,:,k),[]);
    end
     
     end
    end
    end
    i=i+1;
    end

    et Voici le message d'erreur

    Error using  * 
    MTIMES is not fully supported for integer classes. At least one input must be scalar.
    To compute elementwise TIMES, use TIMES (.*) instead.
    
    Error in stepfcm (line 23)
    center = mf*data./(sum(mf,2)*ones(1,size(data,2))); %new center

  4. #4
    Candidat au Club
    Femme Profil pro
    matlab
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : matlab
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 3
    Points
    3
    Par défaut
    pouvez vous m'aider ????

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Pour commencer, tu pourrais améliorer la lisibilité de ton code en utilisant l'indentation automatique en appuyant sur les touches Ctrl+A puis Ctrl+I :

    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
    I1 = imread('image.jpg');
    imshow(I1);
    I2=imread('image1.jpg');
    imshow(I2);
    n=size(I1,1);
    m=size(I1,2);
    K=0;
    h=size(I2,1);
    p=size(I2,2);
    for i=1:n
        for j=1:m
            if(I1(i,j)< I2(i,j))
                K = K+ (-((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
                j=j+1;
            else
                K = K+ (((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
                j=j+1;
            end
        end
        i=i+1;
    end
    k=0;
    for i=1:4
        for j=1:5
            disp(['r = ', num2str(I1(i,j))]);
     
            if (I1(i,j)< I2(i,j))
                t=1;
                s(i,j) = -((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
                variance1(i,j) = ((I1(i,j)/(I1(i,j)+I2(i,j) )) * ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))* ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
                disp(['r = ', float(variance1(i,j))]);
     
                t=2;
                s(i,j) = -((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
                variance2(i,j) = ((I2(i,j)/(I1(i,j)+I2(i,j) )) * ((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
                disp(['r = ', float(variance2(i,j))]);
     
            else
     
                t=1
                s(i,j) = ((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
                variance1(i,j) = ((I1(i,j)/(I1(i,j)+I2(i,j) )) * ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))* ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
                disp(['r = ', float(variance1(i,j))]);
     
                t=2;
                s(i,j) = ((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
                variance2(i,j) = ((I2(i,j)/(I1(i,j)+I2(i,j) )) * ((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
                disp(['r = ', num2str(variance2(i,j))]);
     
            end
            if(variance1(i,j) <= variance2(i,j))
                clusterNum = 2;
                image = I1 (1,1,:)
     
                [ Unow, center, now_obj_fcn ] = fcm( image, clusterNum );
                figure;
                subplot(2,2,1); imshow(image,[]);
                for k=1:clusterNum
                    subplot(2,2,k+1);
                    imshow(Unow(:,:,k),[]);
                end
                if(s(i,j)<=K)
                    Unow2(i,j) = Unow(i,j);
                else
                    clusterNum = 2;
                    image2 =  I2 (1,1,:)
     
                    [ Unow2, center, now_obj_fcn ] = fcm( image2, clusterNum );
                    figure;
                    subplot(2,2,1); imshow(image2,[]);
                    for k=1:clusterNum
                        subplot(2,2,k+1);
                        imshow(Unow2(:,:,k),[]);
                    end
     
                end
            else
                clusterNum = 2;
                image2 = I2 (1,1,:)
     
                [ Unow2, center, now_obj_fcn ] = fcm( image2, clusterNum );
                figure;
                subplot(2,2,1); imshow(image2,[]);
                for k=1:clusterNum
                    subplot(2,2,k+1);
                    imshow(Unow2(:,:,k),[]);
                end
                if(s(i,j)<= K)
                    Unow(i,j) = Unow2(i,j);
     
                else
                    clusterNum = 2;
                    image1 = I1 (1,1,:)
     
                    [ Unow, center, now_obj_fcn ] = fcm( image1, clusterNum );
                    figure;
                    subplot(2,2,1); imshow(image1,[]);
                    for k=1:clusterNum
                        subplot(2,2,k+1);
                        imshow(Unow(:,:,k),[]);
                    end
     
                end
            end
        end
        i=i+1;
    end
    Ensuite, évite d'utiliser image comme nom de variable car c'est déjà le nom d'une fonction MATLAB.

    Pour revenir à ton erreur, essaie peut être ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    img = double(I1 (1,1,:));
     
    [ Unow, center, now_obj_fcn ] = fcm( img, clusterNum );
    Ou de manière plus directe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ Unow, center, now_obj_fcn ] = fcm( double(I1 (1,1,:)), clusterNum );
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Candidat au Club
    Femme Profil pro
    matlab
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : matlab
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 3
    Points
    3
    Par défaut
    non ça n'a pas marché

    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
    I1 = imread('LT52010381988354MPS00_VER.jpg');
    imshow(I1);
    I2=imread('LT52010381990359MPS00_VER.jpg');
    imshow(I2);
    n=size(I1,1);
    m=size(I1,2);
    K=0;
    h=size(I2,1);
    p=size(I2,2);
    f=1;
     
    for i=1:2
    for j=1:2
        if(I1(i,j)< I2(i,j))
     K = K+ (-((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
       j=j+1;
        else
          K = K+ (((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
        j=j+1;
        end
    end
    i=i+1;
    end
    k=0;
    for i=1:n
    for j=1:m
      disp(['r = ', num2str(I1(i,j))]);  
     
       if (I1(i,j)< I2(i,j))
            t=1;
    s(i,j) = -((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
    variance1(i,j) = ((I1(i,j)/(I1(i,j)+I2(i,j) )) * ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))* ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
    disp(['r = ', float(variance1(i,j))]);
     
            t=2;
    s(i,j) = -((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
    variance2(i,j) = ((I2(i,j)/(I1(i,j)+I2(i,j) )) * ((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
        disp(['r = ', float(variance2(i,j))]);
     
        else 
     
            t=1
    s(i,j) = ((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
    variance1(i,j) = ((I1(i,j)/(I1(i,j)+I2(i,j) )) * ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))* ((I1(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
    disp(['r = ', num2str(variance1(i,j))]);
     
            t=2;
           s(i,j) = ((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j))));
     
    variance2(i,j) = ((I2(i,j)/(I1(i,j)+I2(i,j) )) * ((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j))))))*((I2(i,j)- ((((I1(i,j)/(I1(i,j)+I2(i,j) ))*I1(i,j))+((I2(i,j)/(I1(i,j)+I2(i,j) ))*I2(i,j)))))))
        disp(['r = ', num2str(variance2(i,j))]);
     
        end 
        if(variance1(i,j) <= variance2(i,j))
     clusterNum = 1;
    image = I1 (1,1,:)
     
    [Unow, center, now_obj_fcn ] = fcm(double( I1(i,j)), clusterNum );
    %figure;
    %subplot(2,2,1); imshow(I1(i,j),[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow(:,:,k),[]);
    end
        if(s(i,j)<=K)    
            Unow2(i,j) = Unow(i,j);
        else
           clusterNum = 1;
          image2 =  I2 (1,1,:)
     
    [ Unow2, center, now_obj_fcn ] = fcm(double(I2(i,j)), clusterNum );
    %figure;
    %subplot(2,2,1); imshow(I2(i,j),[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow2(:,:,k),[]);
    end 
        end
        else
            clusterNum = 1;
            image2 = I2 (1,1,:)
     
    [ Unow2, center, now_obj_fcn ] = fcm( double(I2(i,j)), clusterNum );
    %figure;
    %subplot(2,2,1); imshow(I2(i,j),[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow2(:,:,k),[]);
    end
     if(s(i,j)<= K)
          Unow(i,j) = Unow2(i,j); 
     
     else
         clusterNum = 1;
         image1 = I1 (1,1,:)
     
    [ Unow, center, now_obj_fcn ] = fcm( double(I1(i,j)), clusterNum );
    %figure;
    %subplot(2,2,1); imshow(I1(i,j),[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow(:,:,k),[]);
    end
     
     end
        end
     
    end
    i=i+1;
    end

    erreur :

    Attempt to execute SCRIPT fcm as a function:
    C:\users\TOSHIBA\programmes\matlab\bin\fcm.m
    
    Error in fcm (line 60)
    [Unow, center, now_obj_fcn ] = fcm(double( I1(i,j)), clusterNum );

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par nerinee Voir le message
    non ca n'a pas marché
    Oui mais tu remarqueras que ce n'est pas le même message d'erreur…

    Dans ton cas, tu as simplement nommé le fichier fcm.m alors qu'il existe déjà un autre fichier de ce nom dans MATLAB.

    Donc, renomme ton fichier

    Et indente ton code comme je te l'ai montré dans mon précédent message.
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  8. #8
    Candidat au Club
    Femme Profil pro
    matlab
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : matlab
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 3
    Points
    3
    Par défaut
    ok merciii jerome

  9. #9
    Candidat au Club
    Femme Profil pro
    matlab
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : matlab
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 3
    Points
    3
    Par défaut
    Bonsoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     y = (-((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))))

    Le résultat de y donne 0,85 manuellement , et avec matlab retourne 0.

    comment transformer le résultat de y en float ???

    Merci

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    I1 = double(I1);
    I2 = double(I2);
     
    y = (-((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))))
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Candidat au Club
    Femme Profil pro
    matlab
    Inscrit en
    Février 2019
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : matlab
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2019
    Messages : 26
    Points : 3
    Points
    3
    Par défaut
    ui ca marche merci.

    mais lorsque je teste avec ce code , la valeur de la variance(i,j) retourne toujours 0 pour toutes les valeurs de (i,j) .

    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
    I1 = imread('image88.hdf');
    figure
    imshow(I1);
    I2 = imread('image90.hdf');
    figure
    imshow(I2);
     n=size(I1,1);
     m=size(I1,2);
     K=0;
     h=size(I2,1);
     p=size(I2,2);
     
     
    for i=1000:n
    for j=1000:m
        if(I1(i,j)< I2(i,j))
     K = K+ (-((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
     
        else
          K = K+ (((I1(i,j) - I2(i,j))/((I1(i,j) + I2(i,j)))));
     
        end
        j=j+1;
    end
    i=i+1;
    end
    disp (K);
    % k=0;
     
    for i=1000:n
    for j=1000:m
      disp(['r = ', num2str(I1(i,j))]);  
     
       if (I1(i,j)< I2(i,j))
            t=1;
    s(i,j) = -((double(I1(i,j)) - double(I2(i,j)))/((double(I1(i,j)) + double(I2(i,j)))));
     
    variance1(i,j) = ((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) )) * ((double(I1(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j))))*double(I2(i,j)))))))* ((double(I1(i,j)((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I2(i,j))))))))
    disp(['r = ', (variance1(i,j))]);
     
            t=2;
    s(i,j) = -((double(I1(i,j)) - double(I2(i,j)))/((double(I1(i,j)) + double(I2(i,j)))));
    variance2(i,j) = ((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)) )) * (double((I2(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double (I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I2(i,j)))))))*((double(I2(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j) ))*double(I2(i,j))))))*((double(I1(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)))) ))*double(I2(i,j))))))))
        disp(['r = ', (variance2(i,j))]);
     
        else 
     
            t=1
    s(i,j) = ((double(I1(i,j)) - double(I2(i,j)))/((double(I1(i,j)) + double(I2(i,j)))));
     
    variance1(i,j) = ((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) )) * ((double(I1(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j))))*double(I2(i,j)))))))* ((double(I1(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I2(i,j))))))))
    disp(['r = ', (variance1(i,j))]);
     
            t=2;
           s(i,j) = ((double(I1(i,j)) - double(I2(i,j)))/((double(I1(i,j)) + double(I2(i,j)))));
     
    variance2(i,j) = ((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)) )) * (double((I2(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double (I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I2(i,j)))))))*((double(I2(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j) ))*double(I2(i,j))))))*((double(I1(i,j))- ((((double(I1(i,j))/(double(I1(i,j))+double(I2(i,j)) ))*double(I1(i,j)))+((double(I2(i,j))/(double(I1(i,j))+double(I2(i,j)))) ))*double(I2(i,j))))))))
        disp(['r = ', (variance2(i,j))]);
     
        end 
        if(variance1(i,j) <= variance2(i,j))
     clusterNum = 1;
    image = I1 (1,1,:)
     
    [Unow, center, now_obj_fcn ] = fcm(double( I1(i,j)), clusterNum );
    figure;
    subplot(2,2,1); imshow(I1(i,j),[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow(:,:,k),[]);
    end
        if(s(i,j)<=K)    
            Unow2(i,j) = Unow(i,j);
        else
           clusterNum = 1;
          image2 =  I2 (1,1,:)
     
    [ Unow2, center, now_obj_fcn ] = fcm(double(I2(i,j)), clusterNum );
    figure;
    subplot(2,2,1); imshow(I2(i,j),[]);
    for k=1:clusterNum
       subplot(2,2,k+1);
        imshow(Unow2(:,:,k),[]);
    end 
        end
        else
            clusterNum = 1;
            image2 = I2 (1,1,:)
     
    [ Unow2, center, now_obj_fcn ] = fcm( double(I2(i,j)), clusterNum );
    figure;
    subplot(2,2,1); imshow(I2(i,j),[]);
    for k=1:clusterNum
        subplot(2,2,k+1);
        imshow(Unow2(:,:,k),[]);
    end
     if(s(i,j)<= K)
          Unow(i,j) = Unow2(i,j); 
     
     else
         clusterNum = 1;
         image1 = I1 (1,1,:)
     
    [ Unow, center, now_obj_fcn ] = fcm( double(I1(i,j)), clusterNum );
    figure;
    subplot(2,2,1); imshow(I1(i,j),[]);
    for k=1:clusterNum
       subplot(2,2,k+1);
        imshow(Unow(:,:,k),[]);
    end
     
     end
        end
    end
    i=i+1;
    end


    aidez moi svp

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/06/2017, 23h46
  2. classification fcm d'image satellitaire
    Par leonel10 dans le forum Images
    Réponses: 3
    Dernier message: 02/10/2013, 15h56
  3. Réponses: 1
    Dernier message: 04/01/2012, 16h09

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