matlab中此段代码错误提示为:位置 1 处的索引无效。数组索引必须为正整数或逻辑值。出错 subpixelext 第 17 行 subpixel_edgey x = 1-dx_frac1-dy_fracedge_imgdy_floor dx_floor + 出错 yaxiangsutiqu3 第 13 行subpixel_edge = subpixelextedg
在代码中,错误提示为“位置1处的索引无效。数组索引必须为正整数或逻辑值。”,这是因为在subpixelext函数中,subpixel_edge被初始化为全零矩阵,而在计算亚像素插值时,将其作为索引使用,导致索引错误。
要解决这个问题,可以在subpixelext函数中添加一个判断条件,仅在edge_img(y, x)等于1时进行亚像素插值计算和赋值操作。可以将以下代码添加到subpixelext函数中的if语句中:
if edge_img(y, x) == 1
% 亚像素插值
dx_floor = floor(dx);
dy_floor = floor(dy);
dx_frac = dx - dx_floor;
dy_frac = dy - dy_floor;
% 双线性插值
subpixel_edge(y, x) = (1-dx_frac)*(1-dy_frac)*edge_img(dy_floor, dx_floor) + ...
dx_frac*(1-dy_frac)*edge_img(dy_floor, dx_floor+1) + ...
(1-dx_frac)*dy_frac*edge_img(dy_floor+1, dx_floor) + ...
dx_frac*dy_frac*edge_img(dy_floor+1, dx_floor+1);
end
这样,在进行亚像素插值时,仅对边缘像素进行操作,避免了索引错误。
原文地址: https://www.cveoy.top/t/topic/hOvq 著作权归作者所有。请勿转载和采集!