为OpenCV中的级联训练构建旋转图像的正样本

时间:2014-01-28 09:37:25

标签: opencv computer-vision training-data sample-data

我需要训练级联分类器来检测车辆和不同的视角。我正在使用OpenCV。

我需要捕捉的一些角度会导致车辆在图像中的对角放置,如下所示:

enter image description here

现在问题在于,因为车辆在图像上对角放置,所以有很多不必要的背景,我不能仅因为图像必须是矩形而裁剪掉。是否有另一种方法可以为物体的对角放置角度/视角构建正样本?我确实需要分类器能够识别对象的这个特定视图。在上面的汽车中并没有那么糟糕,因为汽车的长度和宽度没有太大差异。但是如果我用卡车做同样的事情,这比它的宽度长几倍,那么图像最终会比它们感兴趣的物体具有更多的背景,如下所示。我担心这对分类是好还是坏,如果有任何解决方案。

分类器是否会识别车辆的特定角度,无论它在背景上旋转的方式如何?在这种情况下,旋转整个卡车图像以使卡车水平/垂直,然后剪切图像的其余部分会更好吗?

enter image description here

1 个答案:

答案 0 :(得分:6)

问:分类器是否会识别车辆的特定角度,而不管它在背景上的旋转方式?

答:不。无论旋转方式如何,分类器都无法识别车辆的特定角度。 (在这里谈论类似Haar的特征)。有一个概念被创建用于引入倾斜的45°Haar样特征来改善“维度”,这在我过去读过的研究论文中非常成功。

还尝试引入通用的旋转类似haar的功能,但它几乎没有成功记忆。但是,如果您打算使用超高分辨率图像,它可能会起作用。但我不会赌钱。

问:对你的整个问题

答:正片图像样本中的背景可能不一定会严重影响检测。从案例到案例,它实际上可能有助于您的检测。

我的解决方案(如果你真的必须使用分类器),至少对于基于图像的检测,是利用OpenCV rotate()函数。您可以将图像从1°旋转到360°(每次可能10°),并且每次都应用分类器。检测时间可能需要稍长,但我不认为它会超过几秒钟。

对于视频方面,如果我没有错,那将是超级滞后的。如果时间允许,请试一试。

我想提出的另一件事是你的车辆(如卡车和汽车)具有非常不同的功能。如果我是你,我会将它们分成不同的分类器并同时运行它们以进行车辆检测(之前用3种不同的分类器,眼睛,手和脸进行实时结果)。

如果您打算将它们训练成一个分类器,它可能会也可能不会起作用,所以请注意我的建议是为了安全起见。

您可能还想查看以下链接:http://docs.opencv.org/modules/objdetect/doc/latent_svm.html(分类器更常用于对象检测。我总是使用haar,因此没有关于此clasifier的经验。抱歉)

http://www.araa.asn.au/acra/acra2006/papers/paper_5_63.pdf(基于轮换,与我的回答相矛盾。但我坚持认为,如果图像的分辨率不够高,可能会出现很多舍入错误。)

希望我的回答对你有所帮助。祝你好运(如果你需要帮助或任何事情都不清楚,请发表评论。