如何使用OpenCV从图像中检测旋转的物体?

5

我一直在训练OpenCV分类器来识别图书。要求是从图像中识别出书籍。我已经使用了1000多张图像,OpenCV能够检测到没有旋转的书籍。但是,当我尝试检测旋转的书籍时,它不能正常工作。所以我想知道是否有办法使用OpenCV检测图像中带有旋转的对象?

3个回答

2
你是如何检测你的书籍的?你是否正在使用CNN并将其与OpenCV一起部署?如果是这种情况,那么在训练中添加旋转图像增强将使检测旋转的书籍变得容易。
如果你使用的是传统的计算机视觉技术,你可以尝试使用一些旋转不变的特征提取器,比如SURF,但是结果可能不如使用CNN这种现在针对这种问题的最先进技术好。

我想识别书籍封面,然后利用这个识别区域提取书籍封面并保存。目前,我只是使用书籍封面图像作为正样本和非书籍封面图像作为负样本来训练haar分类器。 - Haridu
在这种情况下,使用SURF或ORB与Haar级联是否可行? - Haridu
您想识别“所有”书籍的封面,还是仅识别在您的训练数据中表示的一组书籍? - giobatta912
最好全部都是书。 - Haridu

2
您的问题可以使用OpenCV和关键点匹配算法(例如SURF或ORB)完美解决。您实际上不需要分类器。根据我的经验,使用未修改的OpenCV的这种解决方案可以扩展到识别大约10,000个图像。
我会这样做: 离线:循环遍历您的书籍图像以生成一个关键点描述符数据库,将每个描述符与其所属的书籍ID进行匹配。 在线:计算查询图像的关键点,并尝试使用BF、FLANN或LSH将每个关键点与预先计算的数据库中的关键点进行匹配。 为与大多数查询关键点匹配的数据库书籍封面投票。 尝试计算所选数据库书籍封面和查询图像之间的单应性矩阵以验证匹配。
ORB、BRISK、SURF、SIFT特征描述符都可用于此任务,并且具有旋转不变性。 ORB和BRISK更快,但效果稍差。
请参阅此链接以获取简单示例: https://docs.opencv.org/3.3.0/dc/dc3/tutorial_py_matcher.html

1

首先,你应该了解姿态估计图像变形的主要理论思想。

你应该定义一些书籍的重要点(每种类型的书籍都有效的一些特殊和强大的特征),然后使用这些点来估计书籍的姿态。在获取姿态角度之后,您应该对图像进行扭曲以对齐书籍。在书籍对齐后,您应该执行特征提取,以此改善书籍检测的成功率。

总之,姿态估计扭曲(对齐)对于这些旋转问题非常重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接