2016-05-15 12 views
0

これまでこれを行っています。評価のために周波数領域で画像を強調した後、PSNRを計算しました。 PSNRおよびSNRの値は負である。MATLABの画像エンハンス後のPSNRの負の値

さらに、入力画像と出力画像のクラスは2倍です。

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

他に手伝ってもらえますか?

+0

https://dsp.stackexchange.com/questions/22741/is-it-possible-to-have-negative-psnrが適切かもしれません。私が知る限り、MATLABのpsnr関数は方程式に従っているだけで、何も気にしません。 – akamath

答えて

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); 

希望はこのwiですあなたを助けるでしょう。

+0

なぜ周波数を2倍に変換していますか? – Mohammad

+0

2倍に変換しないと、その合計が間違っている可能性があります。これは、MATLABのバージョン(整数範囲は2^32または2^64)に依存しますので、2^32合計値の後には、 。 –

関連する問題