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 :

correction d'une erreur


Sujet :

MATLAB

  1. #1
    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 correction d'une erreur
    Salut tout le monde
    j'ai trouvé cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ??? Error using ==> minus
    Integers can only be combined with integers of the same class, or scalar doubles.
     
    Error in ==> sdc at 7
    r = sum(sum((img1(i1+h,j1+h)-img2(i2+h,j2+h)).^2)) ;
     
    Error in ==> cor2 at 9
                R(1,v-n)=sdc(img1,u,k,img2,u,v,n);
    en tapant cette fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     feval(objfun,Foods,im1)
    avec img1 et img2 sont deux images donc de valeurs entre 0 et 255.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par aymench1985 Voir le message
    avec img1 et img2 sont deux images donc de valeurs entre 0 et 255.
    Tu en es sûr ? Tu as vérifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class(img1)
    class(img2)
    ?

    Voir FAQ pour plus de détails.

  3. #3
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class(im1)=uint8 et 
    class(im2)=uint8
    im1 (min -->9 et max --> 249)
    im2 (min-->0 et max -->255)
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    r = sum(sum(abs((img1(i1+h,j1+h)-img2(i2+h,j2+h)).^2))) ;
    mais l'erreur persiste

  4. #4
    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 160
    Points
    53 160
    Par défaut
    J'ai comme un doute... pourquoi avoir besoin de la fonction abs pour des données qui sont forcément positives (uint8) ?

    Vérifies qu'il n'y a pas une conversion en classe Double dans la fonction sdc
    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)

  5. #5
    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
    ok pour l'abs
    pour la fonction sdc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    R(1,v-n)=sdc(img1,u,k,img2,u,v,n); 
    [b w]=min(R);
    imgc(u-n,k-n)=(k-w);
    donc est ce que min(R) fait une modification du type ?
    R est une matrice initialisée c nombre de colonnes et n demi-taille de la fenêtre de corrélation

  6. #6
    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 160
    Points
    53 160
    Par défaut
    Tu aurais quand même pu nous dire où tu avais été chercher ce code

    => http://www.developpez.net/forums/d82...n/#post4730939
    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)

  7. #7
    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
    oui mais ou est le probleme de l'utiliser !!
    et moi je l'utilise dans un autre contexte qui est l'optimisation
    et vous n'avez pas répondu à ma question

  8. #8
    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 160
    Points
    53 160
    Par défaut
    Montre nous le code exact des fonctions cor2 et sdc que tu utilises.
    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)

  9. #9
    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
    pour cor2:
    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);% initialisation de imgc = matrice
    for u=(n+1):(l-n)% pour chaque ligne
        for k=(n+1):(c-n)% pour chaque colonne dans img1
            R=zeros(1,c-n);%réinitialiser R 
            for v=(n+1):(c-n)% pour chaque colonne dans img2
                R(1,v-n)=sdc(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);
    et pour sdc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    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)) ;
    end
    et 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 160
    Points
    53 160
    Par défaut
    Aucun problème si j'exécute ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A = uint8(rand(20)*255);
    B = uint8(rand(20)*255);
     
    img = cor2(A,B);
    Tu dois donc vérifier la classe de img1 et img2 avant leur entrée dans cor2
    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
    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
    en fait pour moi j'utilise la fonction cor2 comme fonction objectif à optimiser avec une méta heuristique ( algorithme de colonies d'abeilles)
    donc le problème vient lorsque j'effectue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjVal=feval(objfun,Foods,im2);
    avec Foods est une matrice 10*10

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Dut Voir le message
    Tu dois donc vérifier la classe de img1 et img2 avant leur entrée dans cor2
    Soit donc Foods et im2

  13. #13
    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
    Foods est de type double
    J'ai essayé de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objval=feval(objfun,uint8(Foods),im2)
    ça fonctionne mais ça donne Objval matrice de 4*4 élements et il faut que je la trouve de 10*10 donc comment corriger Foods et avoir Objval 10*10 ?

  14. #14
    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 160
    Points
    53 160
    Par défaut
    Citation Envoyé par aymench1985 Voir le message
    comment corriger Foods et avoir Objval 10*10 ?
    Sans doute en commençant par comprendre les codes que tu utilises et non pas en les recopiant bêtement.

    Dans cor2.m :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n=3;
    [l c]=size(img1);
    imgc=zeros(l-2*n,c-2*n);
    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)

  15. #15
    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
    je m'excuse pour le retard
    mais meme en changeant je trouve Objval une matrice de 10*10 mais la fonction ne touche que 4 lignes et les autres restent toujours nulles.
    Je veux que le traitement touche toute l'image et donne une matrice Objval pleine de valeurs non nulles
    donc comment procéder et merci pour tout aide

  16. #16
    Invité
    Invité(e)
    Par défaut
    Tu ne traites actuellement pas les bords, il est donc normal que tu obtiennes des 0. À toi de voir quelle hypothèse tu souhaites adopter dessus.

  17. #17
    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
    oui pour les bords fallait les traiter avec n'importe quelle méthode de traitement des bords, mais le problème aussi pour les autres pixels
    car pour il n'y on a pas un traitement sur la totalité de la matrice ( matrice de 10*10 juste on a remplissage de 4 lignes ) donc avant les bords même y on a un problème

  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
    SVP
    que signifie la matrice ObjVal ( contenant les valeurs de la fonction objectif qui est la distance de Hamming selon mon travail associés aux sources de nourriture)
    comme résultat ?

Discussions similaires

  1. Correction d'une erreur dans un code java
    Par tvcinq dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 13/01/2010, 10h30
  2. C++Builder fait une erreur de calcul
    Par gandf dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/01/2004, 23h27
  3. [VB6] Source D'une erreur
    Par krest dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/07/2003, 18h33
  4. [procédure PG] Une erreur mystérieuse...ou pas
    Par doohan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/07/2003, 18h16
  5. Ne pas formater une erreur
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 18/03/2003, 15h13

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