Правильно ли я реализовал код вычисления PSNR в Matlab? - PullRequest
0 голосов
/ 22 марта 2012

Является ли следующий код правильным способом вычисления PSNR для изображений в градациях серого в Matlab?

function p = psnr(x,y, vmax)

if nargin<3
    m1 = max( abs(x(:)) );
    m2 = max( abs(y(:)) );
    vmax = max(m1,m2);
end

d = mean( (x(:)-y(:)).^2 );

p = 10*log10( vmax^2/d ); 

Для 8-битного ввода vmax=255.

1 Ответ

0 голосов
/ 23 марта 2012

Да , согласно статье Википедии о пиковом отношении сигнал / шум , ваш код является точной реализацией PSNR; это соответствует непосредственно первому определению, данному там.

В случае, если vmax не задано, вы можете также использовать intmax для определения его для данного типа данных (в зависимости от вашего приложения; ваша реализация также имеет смысл).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...