我目前正在计算机视觉和图像处理领域迈出第一步。
我正在做的任务之一是找到(重叠和遮挡)圆的中心坐标。
这是一个示例图像:
这是另一个示例图像,显示两个重叠的圆圈:
有关该问题的更多信息:
- 始终是单色灰度图像
- 分辨率相当低的图像
- 圆的半径未知
- 给定图像中的圆圈数量未知
- 需要确定圆心,最好具有亚像素精度
- 不必确定半径
- 算法相对较低的开销非常重要;该处理应该通过实时摄像头图像进行
对于第一个样本图像,通过找到质心来计算圆心相对容易。不幸的是,这不适用于第二张图片。
我尝试的主要是基于圆霍夫变换和距离变换。
圆霍夫变换似乎在计算上相对昂贵,因为我没有有关半径的信息,并且可能的半径范围很大。此外,由于图像的分辨率较低,似乎很难识别边缘的(适当的)像素。
对于距离变换,我无法识别圆的中心,并且图像需要二值化这一事实意味着一定的信息丢失。
现在我正在寻找上述算法的可行替代方案。
更多示例图像(如上面两个示例的图像是从如下图像中提取的):
最佳答案
只是大声思考,尝试让事情为您滚动...我会考虑使用 Blob
或 连接组件
分析来分离出您的 blob。
然后我会开始单独查看每个 Blob 。首先是查看每个 Blob 的边界框有多大。如果它是漂亮的正方形 并且 Blob 的质心位于正方形的中心,那么您就有一个圆。如果它不是正方形,或者质心不在中心,则说明有多个圆。
现在我将开始查看白色区域接触边界框边缘的位置,以获取有关中心位置的一些线索......
关于matlab - 在低分辨率灰度图像中查找重叠圆的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33726480/