【问题标题】:How to evaluate the quality of interpolation? [closed]如何评价插值的质量? [关闭]
【发布时间】:2020-12-27 06:53:12
【问题描述】:

我正在构建一个图像金字塔。首先,我拍摄一张大照片,然后再制作一张更小的照片,等等。我使用插值来缩小图像。而且我需要了解在什么插值下图像之间丢失的信息会更少。这就是我所说的插值质量。 我在看水平渐变。请告诉我这个标准有多好,或者是否有更好的标准。

Blurred = imfilter(img, PSF);
Blurred = im2double(Blurred)
Blurred2 = imresize(Blurred, [300 300], "Method", "bicubic");
[x0,y0] = meshgrid(1:360,1:360);
[x, y] = meshgrid(1:1.2:360, 1:1.2:360);
Blurred3 = interp2(x0, y0, Blurred, x,y, "spline");
gradX = diff(Blurred,1,1);
gradY = diff(Blurred,1,2);
gradX2 = diff(Blurred2,1,1);
gradY2 = diff(Blurred2,1,2);
gradX3 = diff(Blurred3,1,1);
gradY3 = diff(Blurred3,1,2);
[h, cx]=imhist(gradX);
[h2, cx2]=imhist(gradX2);
[h3, cx3]=imhist(gradX3);
h=log10(h);
h2 = log10(h2);
h3 = log10(h3);
figure, plot(cx, h)
hold on
plot(cx2, h2);
plot(cx3, h3);
hold off

【问题讨论】:

    标签: matlab image-processing interpolation


    【解决方案1】:

    您正在对导数使用有限差分逼近。 gradX 中的单位是强度单位/像素,“像素”是像素之间的距离(假定为 1)。重新缩放图像时,会增加像素大小,但在导数中,您仍然假设像素之间的距离为 1。因此,gradX2 中的值大于gradX 中的值。您必须按图像宽度进行归一化才能纠正这种效果。

    但是,在归一化之后,我仍然看不出这是如何衡量插值质量的。正确的问题是:我如何从Blurred2 重构Blurred?我在这里假设Blurred 已经模糊到足以避免在重新采样图像时出现锯齿。

    我将对Blurred2 应用第二轮插值以恢复与Blurred 大小相同的图像,然后使用 MSE 或类似的误差度量比较这两个图像。

    【讨论】:

    • 我要建立一个图像金字塔。首先,我拍了一张大照片,然后构建了一张更小的照片,等等。我需要了解在什么插值上,图像之间丢失的信息会更少。这就是我所说的插值质量
    • @DenisTolkachyov 我明白你在做什么。如果您按照我概述的过程进行操作,您将很好地衡量层之间的数据丢失。您可以比较模糊的较大层,在这种情况下,完美的插值应该给出 0 错误,或者比较较大的层本身,在这种情况下,您主要测量由于模糊造成的损失。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    相关资源
    最近更新 更多