Отрицательное значение для PSNR после улучшения изображения в MATLAB

Я сделал это до сих пор. После улучшения изображения в частотной области для оценки я рассчитал PSNR. Значение PSNR и SNR является отрицательным.

Далее, класс входного и выходного изображения двойной.

ref = imread('img.tif');
ref=im2double(ref);
%A = processing(ref);
%Calculate the PSNR.
[peaksnr, snr] = psnr(A, ref);

Может ли кто-нибудь помочь мне в дальнейшем?

1 ответ

Решение

Я думаю, что вы конвертируете ref в двойной, почему вы конвертируете его в двойной? psnr никогда не будет отрицательным согласно определению PSNR

Пожалуйста, попробуйте сначала этот код, а затем решите проблему:

ref = imread('pout.tif');
A = imnoise(ref,'salt & pepper', 0.02);
% Calculate the PSNR.
[peaksnr, snr] = psnr(A, ref);
fprintf('\n The Peak-SNR value is %0.4f', peaksnr);
fprintf('\n The SNR value is %0.4f \n', snr);

Из приведенного выше кода:

The Peak-SNR value is 22.6437
The SNR value is 15.5524 

В вашем случае просто попробуйте следующее:

ref = imread('img.tif');
A = processing(im2double(ref));% what does it do?
% Check the type of A, is it uint8 data type, if not then convert it to that 
%Calculate the PSNR.
[peaksnr, snr] = psnr(uint8(A), ref);

Надеюсь, что это поможет вам.

Другие вопросы по тегам