2012-01-29 104 views
2

我需要掃描(一半)二進制圖像並只存儲(或標記)第一個黑色像素的位置。我在matlab中嘗試了這一點。但代碼顯示所有黑色像素的位置。我的代碼是這樣的。在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 

改善這種任何建議...

+0

如果你有答案,請接受它。它會減少你的問題的其他工作。 – 2012-01-29 16:52:44

回答

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 
+0

感謝亞歷克斯..這有幫助。我用另一個如果單獨顯示第一個值。 – meena 2012-01-29 13:35:52

3

爲了避免循環,你也可以使用Matlab的find功能:

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

這意味着「找到我等於1的第一個元素」。 (find(I==1,k,first)找到第k個元素)。 (作爲旁白 - 文檔似乎沒有提及他們在找到第一個索引後是否停止掃描矩陣(如果這就是所要求的) - 爲了效率的目的,我會這麼認爲的?)。

+0

呃..這是一個更簡單的方法..謝謝.. – meena 2012-01-29 13:40:56

相關問題