【问题标题】:How to count red blood cells/circles in Octave 3.8.2如何在 Octave 3.8.2 中计算红细胞/圆圈
【发布时间】:2015-04-17 01:57:45
【问题描述】:

我有一张包含一组单元格的图像,我需要对它们进行计数。我使用 bwlabel 进行了类似的练习,但这个练习更具挑战性,因为有一些我不想计算的小单元格。此外,一些单元格相互重叠。我在网上似乎有一些 MATLAB 示例,但它们都涉及不可用的功能。你知道如何分离重叠的单元格吗?

图片如下:

为了更清楚:请帮我计算红细胞(呈圆形)的数量,如下所示:

图像是灰度的,但我认为您可以区分哪些是红细胞。它们有一个独特的双凹形状......其他一切都无关紧要。但更具体地说,这里是一张图片,所有我想忽略/丢弃/不计数的东西都以红色突出显示。

主要问题是单元格重叠。

【问题讨论】:

  • 你想做什么?请创建一个mcve。如果你不告诉我们,你很难知道你在做什么。例如,您要排除哪些? mcve 会告诉我们。
  • 对不起,我不清楚。我需要计算图像中较大圆圈的红细胞数量。其中一些在彼此之上,使得 bwlabel 函数将它们视为一个对象。此外,还有一些我想忽略的小点。我能够使用 bwareaopen 删除它们。
  • 我真的不知道如何解释它......而且我没有包含任何代码,因为我已经知道为什么我的策略不起作用。我希望有人能告诉我另一种方式。
  • 恐怕没什么用。你的问题没有很好的定义。你还得给我们看。添加另一张图片,例如手动用红色圆圈或其他方式突出显示您要删除的图片。

标签: image-processing count octave


【解决方案1】:

以下是执行此操作的 ImageJ 宏(也是免费软件)。我建议您使用 ImageJ(或 Fiji)来探索这种类型的东西。然后,如果你真的需要它,你可以编写一个 Octave 程序来完成它。

run ("8-bit");
setAutoThreshold ("Default");
setOption ("BlackBackground", false);
run ("Convert to Mask");
run ("Fill Holes");
run ("Watershed");
run ("Analyze Particles...", "size=100-Infinity exclude clear add");

这种方法给出了这样的结果:

它与点击等效为:

  1. 图像 > 类型 > 8 位
  2. 图像 > 调整 > 阈值
  3. 在阈值对话框中选择“默认”并取消选中“深色背景”。然后点击“应用”。
  4. 处理 > 二进制 > 填充孔
  5. 流程 > 二进制 > 分水岭
  6. 分析 > 分析粒子... 7 在“分析粒子”对话框中将“100-Infinity”设置为有效粒径范围

在 ImageJ 上,如果您有一个二值图像,分水岭实际上会执行距离变换,然后是分水岭。

Octave 具备上述所有功能,但分水岭除外(我计划尽快实现)。

如果你不能使用 ImageJ 来解决你的问题(为什么不呢?它也可以在无头模式下运行),那么另一种方法是获取每个对象的面积,如果太高,则假设它是多个单元格。这有点取决于您的问题,以及是否可以生成平均单元大小(和错误)的值。

另一种方法是测量每个已识别对象的圆度。重叠的单元格会不那么圆,您可以这样识别它们。

这取决于您愿意在程序输出中接受多少错误。

【讨论】:

  • 感谢您的回答。然而,这是一个必须使用 Octave 完成的大学项目。我能够数出 27 个细胞,但这是因为重叠区域中丢失了 4 个细胞。我现在正在尝试使用 regionprops 'Area' 和 'Perimeter' 来分析它们。
  • @r_laezza 如果您一直阅读我的答案,我还建议如何在 Octave 上执行此操作,但确切的代码将取决于您的需求并且需要一些前期工作。您将需要一个平均像元大小(和错误)来识别可能的 duplets,以便解决没有分水岭的问题。
【解决方案2】:

这只是为了帮助消除“噪音”,但为什么不继续使用 bwlabel 并尝试使用 bwareaopen 来摆脱小物体呢?看起来单元格很大,只需设置一些大小阈值即可摆脱小物体http://www.mathworks.com/matlabcentral/answers/46398-removing-objects-which-have-area-greater-and-lesser-than-some-threshold-areas-and-extracting-only-th

对于重叠的单元格,可能为单个单元格的大小设置一个上限。因此,当您有两个单元格重叠时,它会将其归类为“大于一个单元格”或类似的东西。所以它至少可以识别形状,但不能准确确定有多少个单元格

【讨论】:

  • 感谢您的回答,但我已经在使用 bwareaopen 了,效果很好。但是,使用 Octave,我仍然无法计算重叠的单元格......我已经找到了最大单元格的面积(1238 像素),并且我能够计算所有聚合体的数量,除了右下角。我现在正在尝试同时使用面积和周长以获得更好的结果。
猜你喜欢
  • 2019-01-08
  • 1970-01-01
  • 2020-10-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-06
  • 2010-10-10
  • 1970-01-01
相关资源
最近更新 更多