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)
4

1 に答える 1

3

これは、「最初のピクセル」と見なすものに大きく依存します。MATLABが割り当てたピクセル順序で生活できると仮定すると、次のように使用できます。

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

「ファーストネス」の他の尺度については、入力行列(画像)を転置するか、より洗練された計算方法に頼る必要があります。

そして、はい、breakdaweがすでに指摘したように、は内側のループを壊すだけです。

于 2012-02-13T11:59:14.387 に答える