2012-02-13 5 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はあなたが入力行列(画像)を移調、またはいくつかのより洗練されたに頼るのどちらかだろう「firstness」の他の措置について

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

を使用することができます割り当てるピクセル順序と一緒に暮らすことができると仮定すると、計算方法。

はい、breakは、既に指摘されているように、内側のループを壊すだけです。

+0

+1あなたが解決策であるためです:)。線形インデックスを使用する方法があります。私は '[row、col] = find(X、...)'の動作に混乱しました。私は単に間違った答えを削除しました。 – dawe