如何稳健地分割图像以正确计算模糊的blob?

时间:2015-03-25 12:31:16

标签: matlab image-processing computer-vision image-segmentation

我正在尝试对下面的图像(以及其他类似图像)进行稳健分割,以进行图像分析和斑点计数:

first image

应该有900个独特的blob。

我尝试调整对比度,锐化,阈值处理,动态局部阈值处理,侵蚀,以及这些和其他形态运算符的组合。

我已经能够接近了,但我似乎总是将斑点连接在一起:

second image

侵蚀二进制图像更有帮助,但我最终失去了一些较小的blob。

有没有办法对大于一定大小的斑点进行侵蚀,所以我不会丢失较小的斑点?我应该使用不同的侵蚀元素吗?或者我只是以错误的方式解决这个问题?

2 个答案:

答案 0 :(得分:1)

您应该执行的是局部阈值处理,您可以根据附近的强度为每个点选择阈值。然后,选择高阈值将断开连接。

分析应该包括像邻居Max-Lloyd这样的东西,所选择的阈值可能应该是最高峰值减去它的std-dev,以确保你获得好的结果。

窗口大小可能应该包含几个blob。

答案 1 :(得分:1)

如果您使用regionprops来计算质心,则可以选择一个选项来计算MajorAxisLengthMinorAxisLength以及返回像素列表。对于几乎圆形的斑点,这些值应该接近相同。另一方面,对于连接相似尺寸的两个圆形斑点,长轴长度将是~2x。可以返回的另一个值regionprops可能有用'Solidity'

使用它来提取可能连接blob的区域列表,使用erode分隔它们,并仅重新计算这些位的质心。