在代码中,错误提示为“位置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 著作权归作者所有。请勿转载和采集!

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