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)

对于“第一性”的其他衡量标准,您将不得不转置输入矩阵(图像),或者求助于一些更精细的计算方式。

是的break,正如 dawe 已经指出的那样,这只会打破内部循环。

于 2012-02-13T11:59:14.387 回答