【问题标题】:Difficulties with binary images (MATLAB)二值图像的困难(MATLAB)
【发布时间】:2014-08-31 19:48:12
【问题描述】:

作为大型程序的一部分,我需要将图像转换为二进制,然后使用 regionprops 工具箱从中获取一些信息。所有图片都包含一个不同颜色背景的对象。然而,根据被检测对象的颜色,二值图像上的对象变为白色,而背景变为黑色,反之亦然。在对象变黑的情况下,程序的其余部分将被丢弃。

有没有办法只获取对象为白色的图像?而不是手动查看每张图像并反转一些图像?

【问题讨论】:

  • 这取决于您使用哪个函数转换为二进制文件,也可能还取决于您的图像的可变性。更多信息可能会有所帮助。
  • 我使用基本的阈值函数 - graythresh 和 im2bw。
  • 这些图像仅包含一个主要形状对象的图像 - 圆形、矩形、正方形或三角形。

标签: matlab image-processing blob


【解决方案1】:

您的对象是否曾经接触过图像的边缘?如果不是,检查边缘的任何像素,如果它是白色的 -> 翻转颜色。

编辑: 假设 B 是您的二进制图像,请在您的代码中添加以下行:

B = logical(B); %ensuring it's in "logical" format
if(B(1, 1) == true)
    B = ~B;
end;

【讨论】:

    【解决方案2】:

    您也可以假设对象在大多数情况下属于少数,而背景占多数。

    B = logical(B);
    if sum(B(:)) > numel(B) / 2
      B = ~B;
    end
    

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2018-06-10
      • 2012-09-27
      • 2016-01-17
      • 2011-09-15
      • 2016-10-15
      相关资源
      最近更新 更多