【问题标题】:How to binarize an image without splitting the objects如何在不分割对象的情况下对图像进行二值化
【发布时间】:2020-03-11 01:55:59
【问题描述】:

我正在做一个从血液样本的显微图像中计数血小板的项目。首先,我将图像设为“灰色”。然后我做“预处理”。我对图像进行二值化。然后我保留面积小于 70 个单位的对象(使用 bwareaopen()。我知道这是一种幼稚的方法)。然后我数一下。

但问题是,当我对图像进行二值化时,一些较大的物体会分裂成一些看起来像血小板的微小物体。这些会降低结果的准确性。

图片提供了更好的理解。二值化后对象是如何分裂的,没有“2”显示(标记为红色)。由于分裂而仍然存在的意外微小物体(在移除小于 70 个单位的小物体后)显示为无“4”(标记为红色)。

我想摆脱这些因分裂而产生的微小物体。我应该怎么做才能提高准确性?或者当我对它进行二值化时,如果较大的对象不会分裂,可能会采取哪些步骤?

【问题讨论】:

  • @Kevin 我的意思是“图像处理”。我没有注意到它分为“图像”和“处理”部分:)

标签: image matlab binary


【解决方案1】:

您可以在“BW5Contrast 增强”图像上使用腐蚀。

查看在“BW5Contrast 增强”图像上使用腐蚀的结果:

img = imread('BW5Contrast_enhancement.png');
se = strel('square',2);
eroded_image = imerode(img,se);

【讨论】:

  • @SunandaDas 先生,我有一些问题。 1. 你的假设是否使用了侵蚀?我的意思是,您似乎在代码中使用了一些值,您是否大致允许了它? 2. 微小的物体看起来像血小板,怎么知道腐蚀后不影响血小板计数? 3. 如果我们应用侵蚀,是否有可能去除我们的一些真正的血小板?
  • @KaziZiaulHassan,侵蚀主要取决于结构元素(se)的形状和大小。在代码中,我使用了宽度大小 = 2 的方形 se。您可以根据需要在腐蚀中应用不同的形状或大小。如果侵蚀没有去除一些不需要的对象,那么您必须增加结构元素的大小。同样,如果它去除了一些真正的血小板,那么你必须减小结构元素的大小。
  • 先生,您说的我已经试过了。它对一些样品给出了准确的结果。但它也为其余部分去除了一些真正的血小板。我尝试改变“se”的形状以及它的值。侵蚀是行不通的。相反,当我对灰度图像进行二值化时,有没有办法让较大的物体不会分裂成小物体?请参阅我专门提供的第 1 和第 2 图像。在图 2 中,在红色圆圈内可以看到 WBC 被分割。如果我停止分裂,就不会产生任何额外的意外血小板。这就是我所期待的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
相关资源
最近更新 更多