我以前也问过类似的问题,但我觉得我的问题没有得到真正的回答。我正在使用Circle Hough变换来检测和跟踪一个球。然而,我现在需要额外的检查来找出检测到的圆圈是否真的是一个球。
我一直在考虑使用神经网络,Haar分类器,SVM之类的东西(即人工智能)。然而,它需要令人难以置信的健壮,由于我对这些AI技术是新手,我不确定哪种技术是最好和最健壮的,可以投入我的时间来学习。
我正在使用灰度高速相机来捕捉图像,我希望能够使用任何颜色/图案的足球。球也可能被部分遮挡。
如果你认为这些技术不合适,我愿意接受任何关于如何实现这一点的想法/建议。
感谢大家提前给予我的帮助,非常感谢!
发布于 2013-10-18 23:14:38
请注意,这还没有经过测试。
一旦你提取了球的位置,你就可以得到它的轮廓。我的建议只适用于有较浅补丁和较深补丁(即五边形)的足球。
确定良好的二进制阈值,以获取白色和黑色补丁。做一些图像处理,如腐蚀或扩张,以消除缝线造成的补丁之间的裂缝。在球周围画一个白色的圆圈,以确保你的黑色补丁都不会被认为是“球上的洞”,你已经准备好抓住球内的轮廓了。主轮廓是由白色补丁组成的白色轮廓线,所有黑色轮廓都是深色补丁。
的弱点: Dirty ball可能会出现二进制阈值的问题,也许可以使用自适应阈值?
1.使用查找表/数学公式(?)对于黑色补丁大小和距离
黑色补丁的大小取决于离球中心的距离。向算法提供关于黑色补丁到中心的距离及其大小(这两个值都是相对于球的大小)的学习数据。
例如:
Ball in recorded frame has bounding box of 200x200 px and area of 30000px
Found 6 black patches inside:
patch 1 is in the middle (distance 0px from center) and has area of 600px
patch 2 is on the side (distance 50px from center) and has area of 150px
patch 3... patch 4... and so on因此,您可以在查找表中添加数据:
distance = 0% -> area = 2%
distance = 25% -> area = 0.5%
distance = ... -> area = ...
and so on现在,当你检查你检测到的东西是否是一个球时,检查它们的黑色补丁大小。如果它们的大多数大小和到球中心的距离都在可接受的范围内,则检测到的对象是球。
2.检查轮廓形状
您可以使用cvApproxPoly检查每个等高线。如果大多数黑色轮廓是五边形,那么它就是一个球。
发布于 2018-04-18 17:09:00
使用OpenCV构建自己的分类器。下面是如何实现的:http://johnallen.github.io/opencv-object-detection-tutorial/
困难的部分是获得足球的任何颜色/图案的一组完整的正面图像。
https://stackoverflow.com/questions/19452139
复制相似问题