Eh bien, commencez à écrire! Mangez un éléphant de programmation (même les plus petits) un octet à la fois!
Comment formons-nous la différence de deux images? D'abord, convertissez-les en doubles au cas où ce sont des images uint8, comme c'est commun. FAIS LE! Essayez-le! Apprenez à écrire du code matlab en le faisant, et faites-le en morceaux, afin que vous puissiez suivre ce que vous avez fait. Tout d'abord, vous ne nous avez pas dit si cela devait être un MSE sur les trois canaux. Votre formule dit que nous devrions nous retrouver avec un MSE différent pour chacun des canaux rouges, verts et bleus.
double(M1) - double(M2)
Maintenant, comment formeriez-vous le carré de chaque différence? Utilisez l'opérateur. ^. Ensuite, l'erreur quadratique moyenne implique que nous prenons la moyenne sur toutes les lignes et toutes les colonnes. Une manière simple de faire ceci est avec la fonction moyenne. Cet appel prend la moyenne sur les lignes.
mean((double(M1) - double(M2)).^2,2)
Et le suivant prend la moyenne dans les colonnes.
mean(mean((double(M1) - double(M2)).^2,2),1)
Le résultat sera un vecteur 1x1x3. Convertir cela en un vecteur 1x3 en utilisant la fonction remodeler. (La fonction de compression serait également souhaitable.) Emballage tout en une seule ligne, nous obtenons cette ...
MSE = reshape(mean(mean((double(M1) - double(M2)).^2,2),1),[1,3]);
Si cela semble complexe pour vous, alors vous êtes mieux loti diviser en plusieurs lignes, avec des commentaires cela vous rappelle ce que vous avez fait pour plus tard.
Mais le fait est que vous créez une opération dans matlab en la décomposant en morceaux gérables.
EDIT:
Dans de nombreux cas, les gens veulent que le RMSE (racine quadratique moyenne erreur) qui a des unités les mêmes que vos numéros originaux. C'est juste la racine carrée de la MSE.
Avez-vous essayé les statistiques ou les boîtes à outils de conception de filtre?'aider' –
linuxuser27