vin*_*ini 5 image image-processing filter
我有以下图片:
腐蚀了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
Run Code Online (Sandbox Code Playgroud)
我应该用哪两个图像来计算PSNR?
你查过维基百科关于 PSNR 的文章吗?其一,它提供了一个更清晰的公式来修复您的代码(例如,您为什么要检查 MSE 是否> 0?如果您正确定义了 MSE,它必须大于 0。此外,这看起来是 Matlab 代码,因此使用该log10()
函数可以节省一些令人困惑的基数转换。最后,请确保该函数的输入实际上是 0-255 范围内的量化图像,而不是 0 到 1 之间的双值图像。
你的问题不清楚。如果您想使用 PSNR 作为性能指标,那么您应该根据原始数据计算每种去噪方法的 PSNR 并报告这些数字。这可能无法很好地总结哪些方法做得更好,但它是一个开始。另一种方法可能是手动选择原始图像中您认为对应于不同定性现象的较小子区域,例如背景上的窗口、前景上的窗口以及跨越两者的窗口。然后仅计算这些窗口的 PSNR,再次针对每个去噪结果与原始结果重复计算。最后,您需要一个表格来显示每种不同方法与原始方法相比的 PSNR,可能还包含此子窗口细分。
您可能需要研究更复杂的方法,具体取决于其用途。Tony Chan 书中关于全变分图像去噪的章节非常有帮助(链接)。