无人机上光流定位通常是借助于无人机底部的一个摄像头采集图像数据,然后采用光流算法计算两帧图像的位移,进而实现对无人机的定位,这种定位手段配合GPS可以在室外实现对无人机的精准控制,并且在市内没有GPS信号的时候,也可以实现对无人机的高精度的定位,实现更加平稳的控制。
在光流理论中,前提是下面两个假设成立:
1)摄像头采集到的两帧图像之间的像素灰度不变;
2)相邻的两帧像素具有相对运动
光流法计算像素点的移动速度的方法,在使用的时候,我们只需要对图像中的一些点去跟踪,采用上面的方法就可以计算得到光流向量,根据得到的光流向量,就可以进一步优化无人机的姿态控制,实现更加准确的控制。后期我们将在该理论的基础上,结合dragonboard 410c和OpenCV图像处理库,进一步介绍如何在dragonboard 410c上用opencv来实现光流跟踪。
调用格式:
flow = cv2.calcOpticalFlowFarneback(prevImg, nextImg, pyr_scale, levels, winsize, iterations, poly_n, poly_sigma, flags[, flow])
参数解析:
prevImg: 前一帧8-bit单通道图像
nextImg: 当前帧图像,与前一帧保持同样的格式、尺寸
pyr_scale: 金字塔上下两层之间的尺度关系,该参数一般设置为pyrScale=0.5,表示图像金字塔上一层是下一层的2倍降采样
levels:图像金字塔的层数
winsize:均值窗口大小,winsize越大,算法对图像噪声越鲁棒,并且能提升对快速运动目标的检测效果,但也会引起运动区域模糊。
iterations:算法在图像金字塔每层的迭代次数
poly_n:用于在每个像素点处计算多项式展开的相邻像素点的个数。poly_n越大,图像的近似逼近越光滑,算法鲁棒性更好,也会带来更多的运动区域模糊。通常,poly_n=5 or 7
poly_sigma:标准差,poly_n=5时,poly_sigma = 1.1;poly_n=7时,poly_sigma = 1.5
flags:Operation flags that can be a combination of the following:
- OPTFLOW_USE_INITIAL_FLOW Use the input flow as an initial flow approximation.
- OPTFLOW_FARNEBACK_GAUSSIAN Use the Gaussian
作者:JISUNG
链接:https://www.zhihu.com/question/35980316/answer/433099300
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)