Коэффициент шума пикового сигнала - PullRequest
0 голосов
/ 25 октября 2011

Мне нужно выяснить пиковое соотношение сигнал-шум (PSNR) двух изображений. Я написал код двумя разными способами. Ответ оказался другим.

% Read the image
I1 = imread('Image1.bmp');
I2 = imread('Image2.bmp');

Method1

P = 255;
MSE =0;
MSE = mean((I1(:)-I2(:)).^2);
PSNR = 10*log10(P^2/MSE);

Метод 2

 I3 = 0;
    for i=1:512
        for j=1:512
            I3 = I3 + (I1(i,j)-I2(i,j))^2;
        end
    end

Sum = mean(I3);
Sum1 = 255^2/Sum;
PSNR = 10*log10(Sum1);

Для метода 1 я получил значение 30.1131, а для метода 2 я получил значение 24.0654. Я не уверен, почему значения разные. Нужна помощь в этом.

1 Ответ

5 голосов
/ 25 октября 2011

В методе 2 I3 - это просто скаляр и сумма квадратов разностей.Взятие mean() скаляра вернет то же значение.Ошибка в том, что вы не нормализовали I3 по количеству элементов в изображении.Вы должны изменить соответствующую строку в методе 2 на

Sum = I3/512^2;

, и она должна работать правильно.В целом, оно должно быть

Sum = I3/prod(size(I1));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...