在低分辨率灰度图像中查找重叠圆的中心

时间:2015-11-15 23:40:37

标签: matlab image-processing computer-vision computer-science hough-transform

我目前正迈出计算机视觉和图像处理领域的第一步。

我正在处理的任务之一是找到(重叠和遮挡)圆圈的中心坐标。

以下是示例图片:

enter image description here

以下是显示两个重叠圆圈的另一个示例图像:

Sample image

有关此问题的更多信息:

  • 始终是单色灰度图像
  • 相当低分辨率的图像
  • 圆圈的半径未知
  • 给定图像中的圆圈数未知
  • 确定圆的中心,优选地具有子像素精度
  • 无需确定半径
  • 算法的相对低开销很重要;应该使用实时相机图像进行处理

对于第一个样本图像,通过找到质心来计算圆心是相对容易的。不幸的是,这对第二张图片不起作用。

我尝试的东西主要基于圆形霍夫变换和距离变换。

由于我没有关于半径的信息并且可能的半径范围很大,所以Circle Hough变换似乎相对计算成本很高。此外,由于图像的分辨率较低,似乎很难识别沿边缘的(适当的)像素。

至于距离变换,我无法识别圆圈的中心,而且图像需要二值化这一事实意味着信息会丢失。

现在我正在寻找上述算法的可行替代方案。

一些样本图像(像上面两个样本的图像是从以下图像中提取的):

Full sample 1 Full sample 2

1 个答案:

答案 0 :(得分:2)

只是大声思考试图让你的球滚动......我会考虑用BlobConnected Component分析来分离你的斑点。

enter image description here

然后我会开始分别查看每个blob。首先要看的是每个blob的边界框的方形。如果它是漂亮的方形 AND ,blob的质心在广场的中心,那么你有一个圆圈。如果它不是正方形,或者质心不是中心的,那么你有一个以上的圆圈。

enter image description here

现在我将开始查看白色区域触及边界框边缘的位置,以获取有关中心位置的一些线索......