Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1350 connectés 

  FORUM HardWare.fr
  Video & Son
  Traitement Vidéo

  Mesure de qualité sous Matlab

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mesure de qualité sous Matlab

n°795996
brethold
Posté le 05-02-2005 à 16:23:16  profilanswer
 

Bonjour à tous, je sais pas si c'est ici que je dois poster ce sujet mais je me lance quand même.
Je dois faire des mesures de qualité sur des images compressées sous matlab. Ces mesures sont faites à partir de l'erreur quadratique moyenne, l'erreur absolue moyenne et le rapport signal sur bruit.
J'ai donc réalisé cette fonction sous matlab.

Code :
  1. function  mesureQualite(image)
  2. % Lecture de l'image
  3. image_mq = imread(image);
  4. % Récuperation des dimensions de l'image lu
  5. [M N] = size(image_mq);
  6. %Construction du filtre 2D
  7. a=0.4;
  8. hx = [0.25-a ; 0.25  ; a  ; 0.25 ; 0.25-a];
  9. hy = hx';
  10. Fpb = hx * hy;
  11. image_e = filter2(Fpb,image_mq,'same');
  12. image_mqc = double(image_mq)/255;
  13. image_ec = double(image_e)/255;
  14. %%%%% Calul de l'erreur quadratique moyenne     %%%%
  15. % On uilise la fonction matlab std2
  16. % std2 calcul l'ecart type entre des élements
  17. % de la matrice de l'image originale et l'image estimée
  18. %%%%                                            %%%%
  19. EQM = std2(image_mqc - image_ec);
  20. disp(sprintf('EQM = %f',EQM));
  21. %%%% Calcul de l'erreur moyenne                 %%%%
  22. % On utilise la fonction matlab mean2
  23. % mean2 calcul la moyenne des elements de la matrice
  24. % de l'image originale et l'image estimée
  25. %%%%                                            %%%%
  26. EAM = mean2(abs(image_mqc - image_ec));
  27. disp(sprintf('EAM = %f',EAM));
  28. %%%% Calcul du rapport signal sur bruit         %%%%
  29. if image_mqc == image_ec
  30.    error('Les images sont identiques')
  31. end
  32. max2_is = max(max(image_mqc));
  33. max2_ie = max(max(image_ec));
  34. min2_is = min(min(image_mqc));
  35. min2_ie = min(min(image_ec));
  36. if max2_is > 1 | max2_ie > 1 | max2_is < 0 | max2_ie < 0
  37.    error('Les valeurs des matrices doivent etre comprises entre 0 et 1')
  38. end
  39. erreur = max2_is - max2_ie;
  40. PSNR = 20*log10(1/(sqrt(mean(mean(erreur.^2)))));
  41. disp(sprintf('PSNR = %f dB',PSNR));


 
 
Quand je teste sur une image sans couleur, ça me renvoie les résultats suivants :
>> mesureQualite('lena.BMP')
EQM = 0.103045
EAM = 0.226669
PSNR = 7.765326 dB
 
Pensez vous que ma fonction est correcte? Est ce que les résultats le sont aussi?
 
merci

mood
Publicité
Posté le 05-02-2005 à 16:23:16  profilanswer
 

n°796161
C-FGhim
Posté le 05-02-2005 à 22:45:23  profilanswer
 

Je pense que tes mesures de EQM (MSE en anglais) et PSNR sont erronées...
 
le MSE (EQM) est simplement défini par
MSE = Moyenne ( (Image_source - Image_degradée)^2 )
En utilisant l'écart type, ce n'est pas ce que tu obtiens.
 
La maniere dont tu défini le PSNR me parait correcte mais la valeur de "erreur" me semble fausse. Je ne comprends pas pourquoi tu utilise les maximum uniquement pour définir ton erreur :
tu utilises erreur = max2_is - max2_ie
au lieu de
erreur = image_mqc - image_ec
 
Sinon, pour gagner tu temps, le PSNR peut etre défini par rapport au MSE de la maniere suivante:
PSNR = 10 log10 ( SignalMax / MSE )
avec SignalMax = 1 d'apres tes définitions d'image.
 
Pour finir, juste une remarque: ces valeurs ont beau représenter une quantification des différences entre tes images, elles ne donnent pas directement une mesure de la qualité.

n°796370
brethold
Posté le 06-02-2005 à 14:21:09  profilanswer
 

Merci pour ta réponse!!
Pour la MSE, je vais essayer de corriger ca!!
Sinon peut on tirer de ces mesures des conclusions sur la qualite d'une compression par exemple??
Si non, que devrait-je faire pour mesurer la qualite d'une image compressee par rapport a l'image originale.
Merci ;)

n°796403
C-FGhim
Posté le 06-02-2005 à 15:36:57  profilanswer
 

Sans avoir le matériel et le temps adéquat, ces mesures sont surement la seule chose que tu puisse utiliser.
le PSNR donne une mesure pas forcément tres correcte de la qualité subjectivement percue mais constitue quand meme une bonne base (corrélation entre PSNR et qualité subjective doit etre dans les 70-80% si je ne me trompe pas).
 
 
Le seul moyen valable d'obtenir une meilleur mesure de qualité serait de créer un modele plus complexe basé sur plusieurs parametres (PSNR inclus). Mais la création de ces parametres est loin d'etre l'élément le plus dur. L'élément le plus sensible lors de la création d'un modele reste la calibration du modele. Cette calibration va etre utilisée pour regrouper un certain nombre de parametres et les "mapper" sur une mesure unique de qualité (échelle MOS par exemple). Mais cette calibration requiert énormément de données subjectives (association vrai score subjectif et images). Si tu ne t'y connais pas trop, meme avec pas mal de données, tu risques de créer un modele surentrainé (overtrained) qui ne sera pas mieux que le PSNR ^^;;;
Donc mon conseil sera de rester sur ton PSNR, MSE et MAE ;-)

n°796454
brethold
Posté le 06-02-2005 à 17:13:55  profilanswer
 

OK merci encore pour tes conseils.
J'ai donc modifier ma fonction:
 

Code :
  1. function [REQM,EAM,PSNR] = mesuresQualite(cimg, oimg)
  2. % mesuresQualite : Retourne la puissance du rapport signal sur bruit 
  3. % de l'image décompressée cimg par rapport à l'image original oimg
  4. % ainsi que l'erreur quadratique moyenne et l'erreur absolue moyenne
  5. % Taille de l'image originale
  6. [m,n]=size(cimg);
  7. cimg = double(cimg)/255;
  8. oimg = double(cimg)/255;
  9. %On calcule l'erreur quadratique moyenne
  10. eimg=cimg-oimg;
  11. EQM=sum(sum(eimg.^2))/(m*n);
  12. REQM = sqrt(EQM);
  13. %%%% Calcul de l'erreur moyenne                 %%%%
  14. % On utilise la fonction matlab mean2
  15. % mean2 calcul la moyenne des elements de la matrice 
  16. % de l'image originale et l'image estimée
  17. %%%%                                            %%%%
  18. EAM = mean2(abs(oimg - cimg));
  19. %On caclule PSNR
  20. PSNR=20*log10(1/sqrt(REQM));


 
Voici les résultas que j'obtien avec une compression maison de 12%.
Racine carre de l erreur quadratique moyenne : 0.001648  
L erreur absolue moyenne : 0.001578  
Rapport signal sur bruit (PSNR) : 27.831726 db
 
Le PSNR est inférieur à 30 donc j'sais pas coment interpreter ce resultats.Meme chose pour le REQM et EAM.
Je dois m'attendre à quoi comme valeurs ?
Subjectivement, l'image recinstituee est de qualite moyenne.
 
Merci encore!!

n°796596
C-FGhim
Posté le 06-02-2005 à 22:47:19  profilanswer
 

Il y a encore un truc qui ne va pas avec ton PSNR...
ca devrait etre PSNR = 20*log10(1/REQM));
et non pas PSNR = 20*log10(1/sqrt(REQM)));
 
Mais a part cela, les valeurs que tu obtiendras (PSNR = 55) me paraissent un peu trop élevées pour une image moyenne...

n°796625
brethold
Posté le 06-02-2005 à 23:41:31  profilanswer
 

Oui oui biensur, c'ete une erreur grave de ma part!!
J'ai corrige, maintenant j'obtien 27db
Maintenant comme j'suis pas un expert, je sais pas comment interpreter ces valeurs. Je sais que pour une compression JPEG le PSNR est a peu pres egale a 30db. Moi j'obtien 27db, est ce que c'est bien ?
Que puis je dire sur les valures de EQM et EAM .
Merci et bonne soiree!!

n°796713
C-FGhim
Posté le 07-02-2005 à 10:12:27  profilanswer
 

27dB me parait une valeur correcte pour une qualité moyenne...

n°851677
cameleon_9​001
Posté le 25-04-2005 à 14:15:49  profilanswer
 

bonjour je voudrais vous demander et savoir si qlq a deja travaillé sur d'autres indices de qualité d'images.
actuellement je suis sur le sujet et j'aurais voulu connaitre un peu votre avis sur les meilleurs indices de qualité d'images existant deja.
merci

n°885948
mehdi69
Posté le 10-06-2005 à 10:58:39  profilanswer
 

Bon voila j'image que ce sujet est plus d'actualité, mais je poste au cas ou ca pourrais etre utile à qq'un qui fait les meme recherches que moi (ce post sort en premier dans google quand on tape mesure qualité image)
 
une mesure qui a l'air d'etre géniale pour les images, c'est le SSIM (Structural SIMilarity) - A Universal Image Quality Index.
 
http://www.cns.nyu.edu/~lcv/ssim/
 
A+

mood
Publicité
Posté le 10-06-2005 à 10:58:39  profilanswer
 

n°885979
jason
Posté le 10-06-2005 à 11:39:41  profilanswer
 

C'est vrai que c'est pas mal le ssim. Il y a un plugin avisynth qui permet de le calculer. De même qu'il y a un plugin pour calculer le psnr. Par rapport au psnr, le ssim integre des considération psycho-visuelles.

n°885999
mehdi69
Posté le 10-06-2005 à 12:03:10  profilanswer
 

Bon bah vu que ce sujet fait encore réagir je peut meme demander si qq'un connait une implémentation du PQS (Picture Quality Scale)
 
Un programme gratuit ou des sources de n'importe quel langage...
 
Pour ssim, les chercheurs qui l'ont inventés filent le code source matlab sur leur page

n°886047
jason
Posté le 10-06-2005 à 13:53:33  profilanswer
 

T'as quelques infos dessus? Je connais pas du tout.

n°886074
mehdi69
Posté le 10-06-2005 à 14:14:44  profilanswer
 

Les seules infos que j'ai c'est les réponses de google en tapant "Picture Quality Scale", avec les guillemets.
 
Apparement c'est une mesure qui prend en compte les particularités de l'oeil humain. Il serait bien mieux que PSNR mais pas parfait non plus.  
 
moi j'ai déjà choisi le SSIM vu que y'a les sources


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Video & Son
  Traitement Vidéo

  Mesure de qualité sous Matlab

 

Sujets relatifs
PROBLEME QUALITE D'IMAGE DVDRESOLU Portable - Projecteur: qualite d'image ?
qualité d'image pas très nette du PC à la TV !Qualité d'image avec une carte tuner tv ? Ca donne quoi ?
[CRT ou LCD] Qualité, tailles et ... soldes ?Remambrainage : faisabilité, qualité, prix ?
Qualité du son sur le Gmini 400Probleme de qualité acquisition vidéo...
Différence qualité son entre Mini-disc et lecteur MP3 usbQualité d'image sur tv out
Plus de sujets relatifs à : Mesure de qualité sous Matlab


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR