Matlab 在这种情况下如何使用interp2

Matlab 在这种情况下如何使用interp2,matlab,interpolation,Matlab,Interpolation,我正在处理图像扭曲。我有矩阵D和I,我想用函数interp2 J的定义是 , 其中D和我的尺寸相同 显然,矩阵J中的一些值没有赋值,我想使用interp2给它们赋值 这就是我在不使用interp2的情况下测试的变换 for i=1:1:h for j = 1:1:w J(i,j+img_d(i,j)) = img_c(i,j); end end J有很多未赋值的值。 Interp2提供了一些插值算法,但我不知道如何使用 然后我尝试了以下方法: img_d =

我正在处理图像扭曲。我有矩阵D和I,我想用函数interp2 J的定义是

,

其中D和我的尺寸相同

显然,矩阵J中的一些值没有赋值,我想使用interp2给它们赋值

这就是我在不使用interp2的情况下测试的变换

for i=1:1:h
    for j = 1:1:w
         J(i,j+img_d(i,j)) = img_c(i,j);
    end
end
J有很多未赋值的值。 Interp2提供了一些插值算法,但我不知道如何使用

然后我尝试了以下方法:

img_d = imread('1_d.png');
img_c = imread('1_c.png');
[h,w] = size(img_d);
for i = 1:1:h
    for j = 1:1:w
        J(i,j+img_d(i,j)) = img_c(i,j,1);
    end
end
[Xq,Yq] = meshgrid((1:1:w),(1:1:h));
V = interp2(J,Xq,Yq,'spline');
matlab报告错误:

使用GridDedInterplant时出错 样本值必须是单数组或双数组

interp2>makegriddedinterp中出错(第228行) F=GridDedInterplant(varargin{:})

interp2中的错误(第112行) F=makegriddedinterp({X,Y},V,method,extrap)

错误是因为J的尺寸与网格的尺寸不同,如何解决这个问题

这是我为向后扭曲实现的

    img_d = imread('1_d.png');img_c = imread('1_c.png');
    [h,w] = size(img_d);
    J_1 = zeros(h,w);
    J_2 = zeros(h,w);
    J_3 = zeros(h,w);
    for i = 1:1:h
        for j = 1:1:w
            min_value = j;
            col = 1;
            for k = 1:1:w
                temp = j-(k + img_d(i,k));
                if temp < min_value
                    min_value = temp;
                    col = k;
                end
            end
            J_1(i,j) = img_c(i,col,1);
            J_2(i,j) = img_c(i,col,2);
            J_3(i,j) = img_c(i,col,3);
        end
    end
    J = cat(3,J_1,J_2,J_3);
img_d=imread('1_d.png');img_c=imread('1_c.png');
[h,w]=尺寸(img_d);
J_1=零(h,w);
J_2=零(h,w);
J_3=零(h,w);
对于i=1:1:h
对于j=1:1:w
最小值=j;
col=1;
对于k=1:1:w
温度=j-(k+img_d(i,k));
如果温度<最小值
最小值=温度;
col=k;
结束
结束
J_1(i,J)=img_c(i,col,1);
J_2(i,J)=img_c(i,col,2);
J_3(i,J)=img_c(i,col,3);
结束
结束
J=类别(3,J_1,J_2,J_3);

太慢了……

答案很简单,只需颠倒矩阵,interp2用于
imresize
您能更精确一点吗?什么是你不理解的
matlab
的帮助?在
D
中是什么?整数,浮点数?@Dan D和I中的值都是整数,我想我需要使用反向插值而不是foward@goodBOB我认为这里不需要插值(除非您试图使用最近邻插值对其进行矢量化,但听起来不太像)。你不能仅仅通过索引来实现这一点。仅当变换后的图像在像素之间“引用”源图像时,才需要插值。但是如果
D
都是整数,那么它基本上就是把元素搞混了。我建议你做一个3乘3的玩具例子,用所有的输入和输出来回答你的问题clearer@Dan好的,我将添加一个示例。但简单地通过引用,是否可以保证J的每个像素都有一个值?