【问题标题】:First pixel of the image图像的第一个像素
【发布时间】:2012-02-13 07:57:20
【问题描述】:

我刚刚扫描了一个示例图像,并试图检测二进制图像中值为“0”的第一个像素。 我用paint来写一个文本,当我使用下面的程序时,它总是捕捉到最底部的像素。

    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)

【问题讨论】:

    标签: image matlab image-processing pixel scanning


    【解决方案1】:

    这在很大程度上取决于您认为的“第一个像素”。 假设您可以接受 MATLAB 分配的像素顺序,您可以使用

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

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

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

    【讨论】:

    • +1 因为你的解决方案有效:)。使用线性索引是要走的路。我对[row, col] = find(X,...) 的行为感到困惑。我只是简单地删除了我的错误答案。
    猜你喜欢
    • 2015-01-19
    • 2012-07-21
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多