bilinear_interpolation 函数中,索引超出数组边界的错误是由于在获取邻近像素的值时,使用了错误的索引。正确的索引应该是根据 y1y2x1x2 来获取相应的像素值。修改 bilinear_interpolation 函数如下:

function value = bilinear_interpolation(x, y, pixelValues, height, width)
    % 获取邻近像素的位置
    x1 = floor(x);
    x2 = ceil(x);
    y1 = floor(y);
    y2 = ceil(y);
    % 添加边界条件
    y1 = max(1, y1);
    y2 = min(height, y2);
    x1 = max(1, x1);
    x2 = min(width, x2);
    % 获取邻近像素的值
    q11 = pixelValues(y1, x1);
    q12 = pixelValues(y1, x2);
    q21 = pixelValues(y2, x1);
    q22 = pixelValues(y2, x2);
    % 计算插值结果
    value =  (1/((x2-x1)*(y2-y1))) * (q11*(x2-x)*(y2-y) + q21*(x-x1)*(y2-y) + q12*(x2-x)*(y-y1) + q22*(x-x1)*(y-y1));
end

修改后的代码通过 y1y2x1x2 正确地索引 pixelValues 数组,从而避免了索引超出数组边界的错误。

MATLAB 错误提示:索引超出数组边界 (位置 2 处的索引超出数组边界(不能超出 1))

原文地址: http://www.cveoy.top/t/topic/f4mV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录