Viv*_*Rai 7 opencv image-processing computer-vision
我们正在制造一个自动机器人(在大学活动中),它遵循某些标志和方向并经过有向路线.机器人将安装在头部的摄像头.它将遵循前面道路上的标志或墙壁,并据此作出决定.标志将是绿色箭头(对于GO信号),或RED T作为停止的标志.机器人将实时扫描这些符号并执行必要的操作.这些标志可以直接在前面的墙上或在前面的路径上绘制.
我曾尝试寻找必要的图像变换算法或方法,但我们在这个领域还是很新的.我寻求你的帮助,如何解决这个问题,以及可能对我们有帮助的必要代码(假设我们是初学者).
我已经看了下面的线程,但我很困惑: - OpenCV对象检测 - 中心点 - 如何识别此图像中的矩形? - http://www.chrisevansdev.com/computer-vision-opensurf.html(我无法使用它)
给出事件的一个提示是我们可以将箭头建模为一个矩形和三角形放在一起,以确定三角形的中心是否位于该矩形的右侧(这意味着向右)或其他方式.对于T来说同样如此.
谢谢!:)
如果先前已知符号,则可以使用"通过特征检测识别对象"的方法.
这个想法是你有一个标志图片(箭头或T),你执行以下培训步骤,离线:
1 - 特征检测(使用,SURF,快速,...)
2 - 使用SIFT,FREAK等进行描述符提取(来自功能)...
然后是实时部分.对于每个帧,您必须执行特征检测和描述符提取,但是您需要与训练图像进行匹配以查看您获得的对象.一个可以实时工作的例子:
cv::FAST detector;
cv::FREAK descriptor;
BFMatcher matcher = BFMatcher(NORM_HAMMING,false);
detector.detect(frame,keypoints_frame);
descriptor.compute(frame, keypoints_frame,descriptors_frame);
matcher.match(descriptors_trainning, descriptors_frame);
Run Code Online (Sandbox Code Playgroud)
这将是匹配的第一种方法,然后您需要优化和删除异常值.一些技术是
比率测试
交叉检查
RANSAC +单应性
在这里你有一个完整的例子.