我有以下图片:
被30%的盐和胡椒噪音破坏
去噪后
我用各种技术对图像进行去噪处理。
如何比较哪种方法在去噪方面是最好的
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?
发布于 2012-03-11 01:24:12
你查过Wikipedia article on PSNR了吗?首先,它给出了一个更干净的公式,可以修复你的代码(例如,为什么你要检查MSE是否> 0?如果您正确定义了MSE,则它必须大于0。另外,这看起来像是Matlab代码,所以使用log10()
函数来保存一些令人困惑的基本转换。最后,确保此函数的输入实际上是0-255范围内的量化图像,而不是0到1之间的双值图像)。
你的问题不清楚。如果您想使用PSNR作为性能指标,那么您应该计算每个去噪方法相对于原始方法的PSNR,并报告这些数字。这可能不会很好地总结出哪些方法做得更好,但这是一个开始。另一种方法是手动选择原始图像中您认为对应于不同定性现象的较小的子区域,例如背景上的窗口、前景上的窗口以及跨越这两个窗口的窗口。然后只计算这些窗口的PSNR,对每个去噪结果与原始结果再次重复。最后,您需要一个表格,显示每个不同方法与原始方法相比的PSNR,可能带有此子窗口细分。
根据应用程序的不同,您可能希望研究更复杂的方法。Tony Chan的书中关于全变差图像去噪的章节非常有帮助( link )。
发布于 2019-07-04 21:59:42
下面是使用DataMelt程序的Jython/Python示例。将这些代码行放入文件"test.py“中,然后在DataMelt中运行。它将打印2张下载图像的PSNR值。如果您有不同的图像,请替换文件名。
from Catalano.Imaging.Tools import ObjectiveFidelity
from Catalano.Imaging import FastBitmap
from jhplot import *
print Web.get("http://jwork.org/dmelt/examples/data/logo_jhepwork.png")
print Web.get("http://jwork.org/dmelt/examples/data/logo_jhepwork_noisy.png")
original=FastBitmap("logo_jhepwork.png")
original.toGrayscale()
reconstructed=FastBitmap("logo_jhepwork_noisy.png")
reconstructed.toGrayscale()
img=ObjectiveFidelity(original,reconstructed)
print "Peak signal-to-noise ratio (PSNR)=",img.getPSNR()
https://stackoverflow.com/questions/9556442
复制相似问题