[已答复] 位置 1 的索引超出数组范围(不能超过 1)。

[复制链接]
6684 发表于 2021-6-2 02:37:56
function bwn = Judge_Crack(bw, Ig, th)
if nargin < 3
    th = 20;
end
[L, num] = bwlabel(bw);
Ig = im2uint8(mat2gray(Ig));
Ig = double(Ig);
stats = regionprops(L, 'Area', 'BoundingBox');
for i = 1 : num
    Ymin = round(stats(i).BoundingBox(1));
    Ymax = round(stats(i).BoundingBox(1) + stats(i).BoundingBox(3));
    Xmin = round(stats(i).BoundingBox(2));
    Xmax = round(stats(i).BoundingBox(2) + stats(i).BoundingBox(4));
    sum1(i) = 0;
    for k1 = Xmin : Xmax-1
        for k2 = Ymin : Ymax-1
            sum1(i) = sum1(i) + Ig(k1, k2);
        end
    end
    RectArea(i) = stats(i).BoundingBox(3)*stats(i).BoundingBox(4);
    Average1(i) = sum1(i)/RectArea(i);
    [r, c] = find(L == i);
    Ln(i) = length(find(L==i));
    for j = 1 : Ln(i)
        gv(i, j) = Ig(r(j), c(j));
    end
    sum2(i) = sum(gv(i, :));
    Average2(i) = sum2(i)/Ln(i);
    Sub(i) = abs(Average1(i) - Average2(i));
    if Sub(i) < th
        bw(find(L==i)) = 0;
    end
end
bwn = bw;

位置 1 的索引超出数组范围(不能超过 1)。


出错 Judge_Crack (line 17)
            sum1(i) = sum1(i) + Ig(k1, k2);

1 条回复


20141303 发表于 2021-6-2 08:37:21
仅供参考,检查一下sum和Ig变量的维度,看哪一个超出了索引维度
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表