我有这个分割图像,我需要找到所有标记为' 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)
将返回第一个像素的索引。因此,是否有一种方法来找到剩下的这些像素使用循环?任何帮助/建议/意见,我们都非常感激。多谢。
当然,循环遍历具有数千到数百万个元素的图像是不高效的。但如果你坚持,总有一个循环的解决方案。
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