- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于OpenCV前景检测循迹算法
基于OpenCV前景检测循迹算法 摘 要:目前很多各种各样的循迹算法都是基于可移动的,固定在移动物体上的摄像头,这样很多时候都造成摄像头所能拍摄的范围不广。考虑到这一点,利用外部的摄像头去控制小车的循迹,增大其能看到的范围,基于OpenCV的前景检测,利用多次重复拍摄并且与背景做差的方法得到小车实时位置,并据此进行实时修正以减少范围大了之后精度可能降低的缺点。设计出一个多次拍摄的图像进行全局帧差的算法,从而对小车进行定位,再向小车发出命令修正实际的方向误差。
关键词:OpenCV;循迹;前景检测;重复拍摄;全局帧差;实时修正
中图分类号:TP274
这个算法是在一个捡网球小车的项目中实现的,首先通过外部的摄像头捕捉出网球场中的画面,然后利用openCV自带库函数中的hough的圆变换算法识别出圆以及找到球的圆心,并且调整灰度值和三原色值,从而找出所有的网球的坐标,这里不需要进行坐标的变换,因为后面可以看到需要用到的坐标都是属于图像上的坐标。根据这些球的坐标和小车的坐标可以计算出最短的路径,这个可以理解为一个哈密顿问题,在N小于等于16的情况下可以用状态压缩DP的算法去求解,算法时间是可以接受的,最后把路径还原出来,通过蓝牙把数据发送到小车,小车存储这些数据知道其要走的路线后,开始启动。在实际中小车不可能完完全全的按照规定的路线严格的走,所以小车必须进行实时的修正路线,在这里我们使用的是基于OpenCV的前景检测的方法去实现的,通过每一次的偏离计算得到每一次修正的数据通过PC端发送给小车,使其最后达到网球的位置并捡起网球。
1 OpenCV前景检测循迹过程
1.1 OpenCV中的前景检测
为了理解前景检测的概念,我们先要通过建立场景模型,知道前景和背景的概念,一个场景模型可能包含许多层次,从“新的前景”到旧的前景再到背景。在我们的项目中,还存在着目标的移动,通过目标的移动,我们可以识别“真的”前景(新位置)和“假的”的前景(其旧的位置,“空洞”)。
如何检测这些“新的前景”和“旧的前景”?需要将背景消除,才能进行检测。最简单的背景消除方法就是用一帧减去另一帧,然后将足够大的差别标记为前景。这种方法往往能捕捉运动目标的边缘。第二个方法就是平均背景法,思路是计算每个像素的平均值和标准差作为它的背景模型。这个方法优点是精度比较高,但是计算的时间较长,需要遍历整幅图像。
1.2 利用前景检测循迹
由图1所示,首先我们先会拍取场地的一帧图像作为背景。之后小车开始出现在场地中,外部的摄像头开始采集图像,假如T1和T2时刻采取的图像如图所示。令T1时刻采取的图像是Pt1,T2时刻采取的图像是Pt2,背景图像为Pbg.首先把图像转换为灰度图像,然后把T1和T2时的灰度图像矩阵分别与背景做差。如下等式(1)(2)所示:
中括号表示矩阵的意思。经过(4)(5)的过程之后,将两幅差帧图像做与操作,使轨迹图像更精确些。如等式(3)所示。
D1或者是D2是背景消除之后的结果,得到的RES矩阵结果就是背景消除之后前景运动轨迹的结果。
小车中心确定:通过D1或者D2,可以大概确定到小车的位置,因为D1(D2)中已经将背景消除,通过运动轮廓的横纵的最大值确定中心点位置,并且可以通过实验验证这个中心位置坐标确定的正确性,以及进行修正,通过OpenCV的一些工具可以在视频图像中标出中心点的位置。
小车方向确定:因为每次拍摄的间隔很短,所以我们可以认为每两次拍摄小车走的都是直线运动,从而通过两个中心点的连线确定小车当前的方向,如图2所示。
1.3 移动循迹过程中的修正
修正原理是通过小车当前的坐标和小球坐标(即目标位置坐标),以及上一个终点(捡的上一个球)坐标三个参数共同确定。
如上图所示,α是待求角度。SP点表示start point,即小车起点或者是捡起前一个球后的所在位置;NP表示now point,即目前小车已经从SP走到NP位置,小车当前时刻所在位置;BP表示ball point,即下一个需要捡起的小球的位置。这三个点的坐标都是可以实时可以从拍摄的帧图像中取得,因此根据这三点位置可以知道小车当前偏移理想路径(图3中的虚线)的程度,根据计算得出的角度α对小车运动方向进行修正。
SP到BP直线方程:
NP到BS直线间距离:
NS之间距离:
求解得到α:
根据α具体的数值,对小车发送数据进行方向的纠正,理论上α角度值越大,需要纠正的程度越大,纠正通过发送数据改变小车舵机信号上的占空比,从而改变小车的实时方向。当然,在不同的场地上纠正的数值是不相同的,所以我们只做了对我们场地的修正,需要不停的测试,得到一个合适的修正数值。也可以获取场
文档评论(0)