开展与Computer Vision相关的小型项目,主要是尝试使用OpenCV。它引出了一个有趣的问题:
使用特征检测来查找图像中的已知对象并不容易 - 很难找到对象,特别是如果目标对象的特征不是很好。
但如果我可以提前选择我正在寻找的东西,那么从理论上讲,我可以为自己生成最佳的检测图像。任何使特征检测变得困难的质量都将缺失,并且存在使其变得容易的所有品质。
我怀疑这种想法涉及QR码等问题,但是他们希望QR码简单,小巧。
所以我的问题是:你如何生成最佳图像供以后用相机识别?如果您已经知道会出现偏斜或部分模糊等问题,该怎么办?
非常感谢
答案 0 :(得分:2)
我认为你需要像AR标记这样的东西。 查看ArToolkit,ArToolkitPlus或Aruco库,它们有标记生成器和检测器。 关于标记生成的问题:http://www.uco.es/investiga/grupos/ava/sites/default/files/GarridoJurado2014.pdf
答案 1 :(得分:0)
如果您打算使用特征检测,则标记应特定于使用的特征检测器。探测器设计的常见做法是对“拐角”或具有高x,y梯度的区域的良好响应。你还应该注意目标的缩放。
可以使用BLOBS执行最简单的检测。它比特征点更快,更强大。例如,您可以检测圆形斑点或矩形。
答案 2 :(得分:0)
根据您想要查看标记的距离和查看通常使用的条件/背景以及相机分辨率/噪点,您应该选择不同的图像/目标。在较远距离的中等视角下,颜色目标非常独特,请参阅:
https://surf-it.soe.ucsc.edu/sites/default/files/velado_report.pdf
在近距离处,各种条形码/ QR码可能是一个不错的选择。除此之外,任何平面纹理对象都可以使用单应性而非3D对象轻松跟踪。 http://docs.opencv.org/trunk/doc/py_tutorials/py_feature2d/py_feature_homography/py_feature_homography.html
甚至可以通过捕食者等系统快速学习和跟踪不同的3d对象视图:
https://www.youtube.com/watch?v=1GhNXHCQGsM
然后是硬件,结构光,同步标记等整个领域。例如,Kinect使用投影在表面上的预定义图案来做立体声。这意味着它每秒识别并匹配数百万个微图案,从匹配的对应关系中创建深度图。请注意,一台摄像机可以看到该模式,而另一台设备 - 一台投影机生成它作为虚拟摄像机,请参阅 http://article.wn.com/view/2013/11/17/Apple_to_buy_PrimeSense_technology_from_the_360s_Kinect/证明良好跟踪标准棋盘图案的最快方法是使用open cv的pNp函数:
这可以通过调用两个函数来完成
found = findChessboardCorners(src, chessboardSize, corners, camFlags);
drawChessCornersDots(dst, chessboardSize, corners, found);
总而言之,您的问题非常广泛,并且有多个答案和解决方案。制定您的观看条件,相机规格,背景,距离,运动量和您希望在室内与室外等的视角。在计算机视觉中没有普通平均情况这样的事情!