【问题标题】:Finding out number of pixels in white area in binary image as well as number of pixels of ROI in original image in MATLAB在MATLAB中找出二进制图像中白色区域的像素数以及原始图像中ROI的像素数
【发布时间】:2017-08-10 19:16:23
【问题描述】:

我已分割图像,其中我的感兴趣区域 (ROI) 是白色棉花。现在我想比较分割区域中的像素数,即二进制图像中白色斑点中的像素总数与实际图像中 ROI 的实际像素数。我怎么能做到这一点。下图可以说清楚。

从原始图像中我们可以看出,我的 ROI 是红色边界中的白色棉花。当我分割这个图像时,我得到了如图所示的二进制图像。我们可以注意到,与原始区域相比,二值图像中存在一些缺失区域。所以,我想计算 ROI 原始图像中的像素数和二进制图像中白色斑点的像素数。这样我就可以计算 ROI 的实际像素和实际分割的像素数的差异。

谢谢。

【问题讨论】:

  • 要计算二进制图像中的像素数,只需使用sum(bin_img(:) > 0);,假设是单通道图像。在不知道真实 ROI 是如何存储的情况下,我无法告诉您如何计算真实 ROI 中的像素数。请提供真实投资回报率的描述或示例。
  • 我看到您获得原始图像 ROI 中实际像素数的唯一方法是在程序中修改图像,例如将您不感兴趣的像素涂黑(刷)。然后分割通过查看非黑色像素(如果需要,可以选择粉红色)再次查看该图像并执行 jodag 描述的操作。
  • 感谢@jodag 的回复。我将图像存储为 RGB 和白色棉区域是我的投资回报率。在上面的真实图片中,ROI 由红色边界标记。我想找出这个 ROI 的像素数。我的真实 ROI 是真实图像中显示的白色棉花。
  • 感谢@AntonSavelyev 的回复。您建议的方法很耗时,因为我有 60 张图像,所以我可以分别对每张图像执行此操作。我在想的是:有什么方法可以像我在真实图像中围绕 ROI 绘制边界,它会自动计算封闭边界中的像素数。
  • @NaseebGill 你会是那个划定界限的人吗?还是你想让 MATLAB 来做?

标签: image matlab image-processing


【解决方案1】:

如果您不想自己划定界限,可以试试这个。它可能不像您需要的那么精确,但您可以通过调整我使用的阈值(在本例中为所有 3 个通道为 100)来接近实际值。

假设我是您的原始图像。首先通过使用 RGB 值进行阈值化来创建二进制掩码。然后删除所有没有至少 2000 像素区域的小对象。然后对那个物体的像素求和。

IT = I(:,:,1) > 100;
IT(I(:,:,2) < 100) = 0;
IT(I(:,:,3) < 100) = 0;
IT = bwareaopen(IT, 2000);
sum(IT(:) > 0)

21380

生成的图像:

【讨论】:

  • 感谢@Anton Savelyev。基本上,您在上面的代码中所做的是,如果任何像素红色分量 > 100 和蓝色,绿色
  • 在这种情况下,您将需要使用我在其他评论中描述的图像编辑软件。
  • 是的,现在我正在使用 Adob​​e Photoshop。我将白色对象转换为前景,其余部分转换为背景。背景将是黑色的,稍后,在 Matlab 中,我可以计算白色像素。这个过程可能会给我一些想要的结果。我希望如此。
猜你喜欢
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多