Le PSNR de l'image à l'aide de Matlab
Je veux trouver le PSNR et les valeurs SNR de deux images A et B de même dimension dans Matlab.J'ai utilisé le code suivant
[peaksnr, snr] = psnr(A,B)
et d'avoir une erreur
Undefined function 'psnr' for input arguments of type 'uint8'.
Puis je me suis converti à la fois les images en double comme suit
A = double(A);
B = double(B);
et, de nouveau, le PSNR est calculé.Maintenant j'ai une erreur
Undefined function 'psnr' for input arguments of type 'double'.
Pourquoi ce qui se passe?Merci de m'aider à résoudre l'erreur.
- Quelle est la version de Matlab utilisez-vous?
psnr
semble un être un ajout récent - Personnellement, je pense que c'est une meilleure façon de calculer le PSNR pour les images: stackoverflow.com/a/16265510/3250829
- ce sujet [peaksnr, snr] = psnr(uint8(A), uint8(ref));
Vous devez vous connecter pour publier un commentaire.
PSNR
de 99 si le MSE est négatif? Par définition, la moyenne carré erreur ne sera jamais négatif. Aussi lalog(10)
division est incorrect. Consulter la définition du PSNR ici: en.wikipedia.org/wiki/Peak_signal-to-noise_ratiolog10
. Il évite d'avoir à diviser afin de le faire entrer dans le droit de la base. Cependant, le MSE sera JAMAIS peut être que négative. Somme des carrés des erreurs a été créé pour contourner toute déviation négative, de sorte que je ne suis pas d'accord avec. L'arbitraire 99 n'est pas correct non plus à mon humble avis. J'ai regardé le PSNR source dans MATLAB, et il n'y a pas de -99 attribution de n'importe où.log2
est la fonction qui est la base 2. Lisez à propos de MATLAB internes avant de répondre à d'autres questions.Il y a quelques erreurs avec le code ci-dessus où il devrait envisager de log10 dans Matlab.
Si le code est correct (même pour la couleur de l'image) est comme ci-dessous: