简单的圆检测模型

时间:2018-07-10 21:35:33

标签: image-processing language-agnostic feature-detection

我在深色背景上有一组100x100像素的浅色“斑点”照片。他们看起来像这样:

enter image description here

如您所见,它们不是完全居中,边界不完美,有时还会有次要瑕疵。但是,感兴趣的对象总是很大(大于区域的1/10),并且或多或少是圆形的。

我想找到每个斑点的大小。

从每个100x100的图块中选取100个随机像素后,我可以通过计算Z分数与背景的比值来选择属于斑点的像素,然后仅保留Z> 3的像素。然后,我可以计算质心(以x / y坐标和Z为质量)来获得每个点的中心的近似值。但是,我不确定如何检测直径。

我曾想过简单地在最外面的明亮像素周围画一个圆,然后在有瑕疵的情况下,我最终会得到一个太大的圆。显然,我需要一个能够更好地适应误报的模型(例如,明亮但不属于斑点的像素)。有没有一种数学上简单的方法(即,不是复杂的SVM方法)?结果应该是这样的(如果我们可视化的话):

enter image description here

1 个答案:

答案 0 :(得分:2)

这应该可以完成工作:

  1. 使用阈值转换为二进制图像
  2. 执行适当数量的erosion操作以消除斑点或至少将斑点与斑点分开
  3. 执行相同数量的dilation操作以恢复斑点的原始大小。
  4. 对于连接的白色像素的每个区域,计算质心并计算像素数以估算半径。
  5. 忽略像素太少的区域。

您可以添加其他检查以确保区域近似圆形。例如,您可以检查每个边界像素和质心之间的距离是否在某个范围内。