我正在尝试对下面的图像(以及其他类似图像)进行稳健分割,以进行图像分析和斑点计数:
应该有900个独特的blob。
我尝试调整对比度,锐化,阈值处理,动态局部阈值处理,侵蚀,以及这些和其他形态运算符的组合。
我已经能够接近了,但我似乎总是将斑点连接在一起:
侵蚀二进制图像更有帮助,但我最终失去了一些较小的blob。
有没有办法对大于一定大小的斑点进行侵蚀,所以我不会丢失较小的斑点?我应该使用不同的侵蚀元素吗?或者我只是以错误的方式解决这个问题?
答案 0 :(得分:1)
您应该执行的是局部阈值处理,您可以根据附近的强度为每个点选择阈值。然后,选择高阈值将断开连接。
分析应该包括像邻居Max-Lloyd这样的东西,所选择的阈值可能应该是最高峰值减去它的std-dev,以确保你获得好的结果。
窗口大小可能应该包含几个blob。
答案 1 :(得分:1)
如果您使用regionprops
来计算质心,则可以选择一个选项来计算MajorAxisLength
和MinorAxisLength
以及返回像素列表。对于几乎圆形的斑点,这些值应该接近相同。另一方面,对于连接相似尺寸的两个圆形斑点,长轴长度将是~2x。可以返回的另一个值regionprops
可能有用'Solidity'
。
使用它来提取可能连接blob的区域列表,使用erode分隔它们,并仅重新计算这些位的质心。