【发布时间】:2014-10-23 17:57:12
【问题描述】:
我对 256*256 的图像(img)进行了双三次插值
dest = interp2(img,'bicubic')
我得到了 511 * 511 图像。我想计算 512 * 512 图像(原始)和“目标”图像的 PSNR,如下所示
original = double(original);
dest = double(dest);
[M N] = size(original);
error = original - dest;
MSE = sum(sum(error .* error)) / (M * N);
if(MSE > 0)
PSNR = 10*log(255*255/MSE) / log(10);
disp(['PSNR = ', num2str(PSNR)])
else
PSNR = 99;
disp(['PSNR = ', num2str(PSNR)])
end
但由于矩阵尺寸不匹配而出现错误。如何避免此错误。是否可以计算不同尺寸图像的 PSNR?请帮助
【问题讨论】:
-
你确定你必须插值然后计算PSNR吗?也许您可以在图像中添加噪声,然后计算 PSNR。根据wiki,PSNR 是针对没有插值的噪声和无噪声图像计算的。
-
@Kamtal - 缩小图像然后调整其大小可能被视为噪声信号。增加图像大小时会出现插值伪影。在比较不同的图像插值算法时,这实际上是很常见的事情,在这些算法中,您故意缩小和调整图像大小并查看重建与原始图像的接近程度。有些算法的重建质量很差,而有些则更好。
标签: matlab image-processing matrix interpolation