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 :

calcul du PSNR Matlab


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut calcul du PSNR Matlab
    Bonjour,

    J'ai comparé le calcul du PSNR entre deux images sous Matlab. Je n'ai pas le même résultat entre la fonction de Matlab et celle que j'ai écrite. La formule du PSNR étant assez simple, je ne voit pas où est l'erreur, et je ne parvient pas à trouver le code de la fonction PSNR de Matlab pour comparer avec mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    %orig : image originale
    %comp : image compressée
     EQM   = mean(mean(orig-comp).^2);
     PSNR_man = 10*log10(255^2/EQM) ;
    % PSNR = 38
    Voici le code pour utiliser la fonction de matlab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     p = video.PSNR;
     psnr_mat = step(p,orig,comp);
    % PSNR = 27
    L'aide de Matlab sur la fonction video.PSNR montre que la formule utilisée est la formule standard du psnr.

    Quelqu'un voit il où est le problème?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Salut, ton erreur ne viendrait pas de ta formule EQM par hasar ?

    Dans mes souvenir, l'EQM est la moyenne des différences au carré.

    Donc ici ca donnerait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     EQM   = mean(mean((orig-comp).^2));
    Une simple parenthèse à rajouter.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci d'avoir répondu si rapidement,

    Oui effectivement, mais ça n'est pas de là que viens le problème car j'ai fais l'erreur en recopiant le code. Je recommence donc :

    mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    EQM   = mean(mean((orig-comp).^2));
    PSNR_man = 10*log10(255^2/EQM);
    %PSNR = 36
    fonction matlab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    p = video.PSNR;
    psnr_mat = step(p,orig,comp);
    %PSNR = 21
    L'idéal serait de voir comment est codée la fonction de Matlab mais je n'arrive pas à trouvé le fichier...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Bha suffit de l'ouvrir ;-)

    après, tu es sur que ta video p contient juste les deux images que tu utilises dans ton algo manuel ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merel dit :

    Bha suffit de l'ouvrir ;-)

    Code : open step


    -> open step ouvre la fonction step qui sert à appliquer le calcul du psnr à deux images, mais le code du calcul du psnr ne s'y trouve pas.

    Merel dit :
    après, tu es sur que ta video p contient juste les deux images que tu utilises dans ton algo manuel ?


    -> Je ne comprends pas ta question... comment ça la vidéo contient juste les 2 images?...

    En tout cas merci de m'aider je suis un peu perdue...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Au temps pour moi, je n'ai pas fait attention que la fonction step c'était ton affichage graphique Je commence à fatigué !

    Ce qui me chagrine, c'est que tu puisses calculer via matlab le PSNR. Je ne le trouve dans aucune toolbox. Par contre, tu en as dans le File exchange

    PSNR

    Du coup, je me demande comment tu arrives à ton PSNR de 21. C'est le code complet que tu as ici ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    pour trouver la fonction que j'utilise pour calculer le psnr, il faut taper help video
    et choisir le PSNR.
    J'ai remarqué aussi que la fonction step utilisée n'est pas la fonction step.m d'affichage que l'on obtient lorsqu'on tape "open step".

    Je n'utilise que les fonctions standards de Matlab et du coup je connaîs assez mal les différents type de fichiers avec lesquels travaille Matlab. Je ne comprends pas pourquoi cette fonction de PSNR n'est pas un .m et pourquoi il faut l'appeler comme ça :

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    640
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 640
    Points : 776
    Points
    776
    Par défaut
    Ca c'est vraiment bizarre et c'est hors de mes connaissances ! Même quand je tape help video, matlab ne me renvoie rien du tout.

    T'es sur que c'est pas une fonction qui a été installée précédemment par d'autres personnes à partir du File exchange ?

    Je laisse Dut te répondre ou quelqu'un qui connait mieux le PSNR que moi.

    Mais perso, je regarderais et testerais le fichier PSNR.m que je t'ai mis en lien. Il fonctionne peut être mieux que celui que tu utilises.

  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    J'ai essayé la fonction que tu m'as conseillé, elle donne bien le même résultat que mon code (normal c'est la même formule!).
    Je reste perplexe pour la fonction video.PSNR, j'ai du mal à croire qu'elle est erronée car elle fait partie de la toolbox video & image processing...

Discussions similaires

  1. Calcul d'intégrale matlab
    Par hugo_n6k dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/01/2010, 09h59
  2. Réponses: 1
    Dernier message: 01/10/2008, 12h36
  3. Calcule du psnr
    Par mohcen29 dans le forum Images
    Réponses: 2
    Dernier message: 21/06/2008, 10h12
  4. comment calculer le psnr pour une video
    Par tinacodec dans le forum Traitement d'images
    Réponses: 10
    Dernier message: 24/05/2008, 18h08
  5. Calcul matriciel avec Matlab
    Par comoliv02 dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/03/2007, 13h14

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