Отрицательное значение для 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);
Надеюсь, что это поможет вам.