MATLAB中图像增强后PSNR的负值

时间:2016-05-15 16:57:25

标签: matlab image-enhancement

到目前为止我已经这样做了。在频域图像增强评估后,我计算了PSNR。 PSNR和SNR的值为负。

此外,输入和输出图像的类别是双倍的。

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

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

我认为您正在将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);

希望这会对你有所帮助。