MATLAB 错误提示:索引超出数组边界 (位置 2 处的索引超出数组边界(不能超出 1))
在 bilinear_interpolation 函数中,索引超出数组边界的错误是由于在获取邻近像素的值时,使用了错误的索引。正确的索引应该是根据 y1、y2、x1 和 x2 来获取相应的像素值。修改 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
修改后的代码通过 y1、y2、x1 和 x2 正确地索引 pixelValues 数组,从而避免了索引超出数组边界的错误。
原文地址: http://www.cveoy.top/t/topic/f4mV 著作权归作者所有。请勿转载和采集!