2012-02-13 39 views
1

我剛剛掃描一個樣本圖像,並試圖檢測二值圖像中值爲「0」的第一個像素。 我用油漆寫一個文本,當我用下面的編,它總是捕捉最底部的像素。圖像的第一個像素

clear all; 
    x=imread('textjay.png'); 
    y=im2bw(x); 

    height=size(y,1); % row 
    width=size(y,2); % col 

    valueoftheindex=0; 

    pixel_value=0; 

    for i=1:width 
    for j=1:height 
     pixel_value=y(j,i); 
     if (pixel_value==0) 
     valueofthewidth=i; 
     valueofthehieght=j; 
     break 
     end 
     end 
    end 

    valueofthewidth 
    valueofthehieght 

    imtool(y) 

回答

3

這很大程度上取決於您認爲是「第一個像素」。 假設你可以用像素的排列活那麼MATLAB分配你可以使用

idx = find(y == 0, 1, 'first') 
[row_idx, col_idx] = ind2sub(size(y), idx) 

對於「firstness」你就會有其他的措施,無論是轉輸入矩陣(圖像),或採取一些更精緻計算方法。

是的,break只會打破內循環,正如dawe已經指出的那樣。

+0

+1因爲你是解決方案:)。使用線性索引是最好的選擇。我被'[row,col] = find(X,...)'行爲搞糊塗了。我只是簡單地刪除了我的錯誤答案。 – dawe 2012-02-13 12:39:28

相關問題