如何使用循环查找像素标签的索引

时间:2016-10-17 06:24:26

标签: matlab loops image-processing matrix

我有这个分段图像,我需要找到标记为'20'的所有像素的索引 我知道我可以使用代码轻松完成此操作:

img = [00 00 00 00 00 00 00 00;
       00 20 00 00 00 20 00 00;
       00 00 30 00 00 00 00 00;
       10 10 10 00 20 00 00 00;
       10 10 10 40 40 40 40 40;
       10 10 10 40 40 40 20 40;
       10 10 10 40 40 40 40 40];

[img_row, img_col] = find(img==20)
imgIdx             = sub2ind(size(img), img_row, img_col);

这将返回感兴趣像素的所有索引的向量。但是,我宁愿一个接一个地找到这些像素,我知道:

imgIdx = find(img==20, 1)

将返回第1个像素的索引。那么,有没有办法使用循环找到其余的像素?任何帮助/建议/建议都得到了适当的赞赏。非常感谢。

1 个答案:

答案 0 :(得分:1)

当然,循环使用通常为数十万到数百万个元素的图像效率不高。但如果你坚持,总有一个循环解决方案。

for ii = 1:numel(img)
    if img(ii) == 20
        % do_the_thing
    end
end

尽管如此,即使我必须循环% do_the_thing,我会在获得所有索引后执行此操作:

imgIdx = find(img == 20);
for ii = 1:numel(imgIdx)
    % imgIdx(ii) !!!
    % do_the_thing
end