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

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

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

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

这是一个示例图像:

enter image description here

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

Sample image

有关该问题的更多信息:

  • 始终是单色灰度图像
  • 分辨率相当低的图像
  • 圆的半径未知
  • 给定图像中的圆圈数量未知
  • 需要确定圆心,最好具有亚像素精度
  • 不必确定半径
  • 算法相对较低的开销非常重要;该处理应该通过实时摄像头图像进行

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

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

圆霍夫变换似乎在计算上相对昂贵,因为我没有有关半径的信息,并且可能的半径范围很大。此外,由于图像的分辨率较低,似乎很难识别边缘的(适当的)像素。

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

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

更多示例图像(如上面两个示例的图像是从如下图像中提取的):

Full sample 1 Full sample 2

最佳答案

只是大声思考,尝试让事情为您滚动...我会考虑使用 Blob连接组件 分析来分离出您的 blob。

enter image description here

然后我会开始单独查看每个 Blob 。首先是查看每个 Blob 的边界框有多大。如果它是漂亮的正方形 并且 Blob 的质心位于正方形的中心,那么您就有一个圆。如果它不是正方形,或者质心不在中心,则说明有多个圆。

enter image description here

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

关于matlab - 在低分辨率灰度图像中查找重叠圆的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726480/

相关文章:

image-processing - 为一系列 2D 电影帧生成频谱图

arrays - 访问 matlab 结构体中的多个字段

matlab - MATLAB中两个不同长度数据集的重采样

matlab - 频域滤波

python - 在 python 中将欧拉角定义的旋转应用于 3D 图像

opencv - block bundle 调整流程

matlab - 试试……终于等同于 Matlab

matlab - 视频处理的标准测试视频

c - 如何将矩阵应用于opencv中的图像?

OpenCV 图像到矩阵在 txt 文件中