【问题标题】:Finding a pixel position in matlab在matlab中查找像素位置
【发布时间】:2012-01-29 09:55:38
【问题描述】:

我需要扫描(一半)二进制图像并仅存储(或标记)第一个黑色像素的位置。我在matlab中试过这个。但是代码显示了所有黑色像素的位置。我的代码是这样的。

I= imread('binary image');

imshow(I);

[r c] =size(I);

for j=1:c/2

    for i=1:r

        if(I(i,j)==1)
        [i j]    
        end
    end
end

任何改进的建议...

【问题讨论】:

  • 如果您有答案,请采纳。它会减少其他人对您的问题的工作。

标签: matlab image-processing scanning


【解决方案1】:

为避免循环,您还可以使用 Matlab 的find 函数:

[i,j] = find(I==1,1,'first')

这意味着“找到 I 的第一个元素等于 1”。 (find(I==1,k,first) 查找前 k 个元素)。

(顺便说一句——文档似乎没有提到他们是否在找到第一个索引后停止扫描矩阵(如果这就是所要求的全部)——出于效率目的,我假设是这样?)。

【讨论】:

    【解决方案2】:

    你需要退出循环:

    found = 0; % a flag
    for j=1:c/2
      for i=1:r
    
        if(I(i,j)==1)
            [i j]
            found = 1;
            break; % stop the inner loop  
        end
    
        if (found)
            break; % stop the outer loop
        end
      end
    end
    

    【讨论】:

    • 感谢亚历克斯..帮助。我使用了另一个 if 来单独显示第一个值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多