2012-03-04 181 views
4

我有以下图像:如何测量图像的峰值信噪比?

enter image description here

,用30%椒盐噪声损坏

enter image description here

各种技术去噪

我已去噪图像之后

我如何比较哪种方法在去噪方面最好

function PSNR = PeakSignaltoNoiseRatio(origImg, distImg) 

origImg = double(origImg); 
distImg = double(distImg); 

[M N] = size(origImg); 
error = origImg - distImg; 
MSE = sum(sum(error .* error))/(M * N); 

if(MSE > 0) 
    PSNR = 10*log(255*255/MSE)/log(10); 
else 
    PSNR = 99; 
end 

哪两个图像应该用来计算PSNR?

回答

1

你检查Wikipedia article on PSNR?首先,它提供了一个更清晰的公式来修正你的代码(例如,你为什么要检查MSE是否大于0?如果你定义了MSE,它必须大于0.此外,这看起来是Matlab代码,所以使用log10()函数来保存一些令人困惑的基础转换,最后确保该函数的输入实际上是0-255范围内的量化图像,而不是0和1之间的双值图像。

你的问题还不清楚。如果您想使用PSNR作为性能指标,那么您应该针对原始数据计算每个去噪方法的PSNR并报告这些数字。这可能不会给出一个很好的总结,哪些方法做得更好,但这是一个开始。另一种方法是手动选择您认为与不同定性现象相对应的原始图像的较小子区域,例如背景上的窗口,前景中的窗口以及跨越两者的窗口。然后计算仅用于那些窗口的PSNR,再对每个去噪结果与原始结果进行重复。最后,你需要一个表格显示每种不同方法的PSNR与原始文件的比较,可能有这个子窗口的细分。

您可能想看看这取决于何种应用程序,这是对于更复杂的方法。在Tony Chan的书中关于总变异图像去噪的章节非常有用(link)。

+0

是我没有查维基百科,我知道PSNR测量比较原始VS图像失真但是如何计算的PSNR,如果我们DONOT知道什么是原来我们只有一个嘈杂的图像和相应的去噪图像与说滤波方法 ?通常研究论文比较不同的去噪技术,他们使用PSNR作为质量指标,他们如何做到这一点? – vini 2012-03-11 02:27:15

+0

是的,我做了同样的去噪图像与原始图像对比过,但得到错误的结果我有一个比较吵图像,给这应该是相反的方式 – vini 2012-03-11 02:39:07

+0

我不知道更高的PSNR值,你是什么意思时,你说:“我们不不知道原始图像是什么。“在现实世界中,没有人知道真正的“原始”图像是什么。你只需在沙中画一条线,然后选择一些图像进行测试。您将该图片称为原始图片,然后通过将噪点添加到您选择的原始图片来制作合成的,假的“损坏”图像。然后,您可以对合成损坏的图像进行去噪处理,并将结果与​​原始图像进行比较,而不会损坏图像。您不会在添加噪声图像和去噪图像之间进行比较。 – ely 2012-03-11 17:40:49