使用 OpenCV 进行动态背景分离和可靠的圆圈检测

Dynamic background separation and reliable circle detection with OpenCV

本文关键字:检测 分离 OpenCV 动态 背景 使用      更新时间:2023-10-16

我正在尝试在类似颜色的背景上检测彩色网球。我正在使用OpenCV和C++

这是我正在使用的测试图像:https://i.stack.imgur.com/yXmO4.jpg

我尝试过使用多个边缘检测器; sobel,laplace和canny。这三者都检测白线,但是当阈值处于可以检测到网球边缘的值时,输出中的噪声过多。

我也尝试过霍夫圈变换,但由于它是基于精明的,所以效果不佳。

我不能使用背景减法,因为背景可以移动。我也无法修改阈值,因为照明条件可能会在网球内产生渐变。

我觉得我唯一的选择是模板匹配或检测白线,但是如果可能的话,我想避免这种情况。

你有什么建议吗?

我不得不倾斜屏幕才能自己发现网球。这是一个硬形象。

也就是说,Hough变换的默认OpenCV实现使用Canny边缘检测器,但它不是唯一可能的实现。对于这些较难的情况,您可能需要自己重新实现它。

您当然可以使用不同的边缘检测设置重复运行 Hough 算法,以生成多个候选项。除了直接比较候选项外,您还可以检查每个候选项是否具有主导纹理(在局部阴影校正后)和可能的条纹。但是,如果这些网球实际上是在飞行中捕获的,即移动,这可能会非常棘手。

在边缘检测之前,您对彩色图像做了什么?简单地将其转换为灰色?

根据我的经验,当您使用 HSV 颜色空间时,彩色球弹出得最好。然后,您必须决定哪个频道提供最佳结果。

也许将图像转换为不同的特征空间可能比依靠颜色更好。也许尝试对质地做出反应的LBP。然后对结果进行 PCA,将特征空间减少到 1 个单通道图像,并尝试对此进行霍夫变换。