60 views (last 30 days)

I am computing the PSNR value between an image and its filtered version and getting a negative value.

I understand tht since there is log, if the number is less than 1, I will be getting a negative value.

But what does the negative value actually imply??

Raunak Gupta
on 14 Nov 2020

Hi,

According to the definition of PSNR as mentioned here , it cannot be negative. You can check if the range in both images is same as in if both images are of datatype unit8 then range should be [0,255]. Also, if you are converting one image to be in range [0,1] and the other image is in range [0,255] then this behavior can occur. Finally, if you are using your own implementation for psnr then I would suggest using built-in function psnr for calculating the same.

The only reason I can think of is a big mismatch between the range of values in the image.

Hope this helps!

Raunak Gupta
on 17 Nov 2020

Hi,

If the images are converted to double using typecasting and the values in image are in range [0,255], then its correct to use peak value 255.

But if you want to pass double class data to builtin function psnr, since the peakvalue will be chosen as 1 (by default), the image range also needs to be in [0,1] to give correct result.

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
## 0 Comments

Sign in to comment.