在matlab中查找像素位置

时间:2012-01-29 09:55:39

标签: matlab image-processing scanning

我需要扫描(一半)二进制图像并仅存储(或标记)第一个黑色像素的位置。我在matlab中尝试了这个。但代码显示所有黑色像素的位置。我的代码是这样的。

I= imread('binary image');

imshow(I);

[r c] =size(I);

for j=1:c/2

    for i=1:r

        if(I(i,j)==1)
        [i j]    
        end
    end
end

有任何改善此建议的建议......

2 个答案:

答案 0 :(得分:3)

为避免循环,您还可以使用Matlab的find函数:

[i,j] = find(I==1,1,'first')

这意味着“找到I的第一个元素等于1”。 (find(I==1,k,first)找到前k个元素。)

(另外 - 文档似乎没有提到他们是否在找到第一个索引后停止扫描矩阵(如果这就是所要求的那样) - 为了提高效率,我会这么假设?)。

答案 1 :(得分:1)

您需要退出循环:

found = 0; % a flag
for j=1:c/2
  for i=1:r

    if(I(i,j)==1)
        [i j]
        found = 1;
        break; % stop the inner loop  
    end

    if (found)
        break; % stop the outer loop
    end
  end
end