zoukankan      html  css  js  c++  java
  • 手势跟踪

    camshift:

    Continuously Adaptive Mean Shift algorithm的简称。基于MeanSift的改进算法,可以跟踪视频中尺寸可能产生变化的目标。

    Meanshift只估计数据分布的梯度(变化的方向)。若梯度为0的地方则表示是这个分布的峰值。

    重心:一阶矩与零阶矩的比值。

     

    移动窗口到此重心的位置。由于窗口的移动,窗口的内容也将改变,于是又将重复刚才重新定位窗口中心的步骤。窗口中心重定位的过程通常会收敛到Meanshift矢量为0,也就是窗口不能再移动。收敛的位置为窗口像素的局部最大值处。

    Meanshift算法扩展到连续图像序列,就是Camshift算法,它将视频的所有帧都做Meanshift运算,并将上一帧的结果,即搜索窗的大小和中心,作为下一帧meanshift算法搜索窗的初始值,如此迭代下去,就可以实现对目标的跟踪。

     

    根据概率分布图计算下一帧跟踪框的大小。2D直方图的概率分布图可由二阶矩得到,跟踪框的旋转角和大小也可相应得到。

     

    基于OpenCVCamshift算法的步骤如下:

    (1)初始化搜索框;

    (2)将图像由RGB颜色空间转换到hsv颜色空间;

    (3)从hsv图像中分离处h通道的图像;

    (4)用手势分割得到的掩模板(mask)分割出h通道图像的手势区域

    (5)对h通道的图像建立直方图

    (6)对h的直方图作反向投影图

     

    (7)利用Meanshift算法在反向投影图中迭代搜索,直到其收敛或达到最大迭代次数。并保存零次矩;

     

    (8)利用第(7)步得到的搜索框的中心位置和窗口尺寸信息作为初始值,返回到第(2)步,重新计算,即进入下一帧的目标跟踪。

    直方图:条形图。比如颜色可以取值0~255,把这256个值分组,分成16组,则1~16的数值有多少个,直方图的y坐标值就是几,得到条形图。

    反向投影图:位置(0,0)上的像素值为0,对应的bin为[0,3),有4个元素,所以反向直方图在该位置上的值这个bin的值4,在直方图中值较多的地方,反向投影图中该位置的值较大,在图像中该位置权重就比较大,离重心近。

     

    catmull曲线插值:

     

     

     

     

    第一、二帧,直接更新坐标值。

    第三帧,根据前两帧的光标位置,用第一帧的光标位置作为P1控制点,第二帧的光标位置作为P3控制点,第三帧的光标位置作为P4控制点,即可利用P1P1P3P4四个控制点得到P1P3间的插值曲线。

    第四帧以后,将前三帧的光标位置和当前帧的光标位置作为四个控制点P1P2P3P4,计算P2P3之间的Catmull曲线。

    对最后三帧,可将前两帧的光标位置分别作为P1P2控制点,最后一帧的光标位置作为P4控制点,可根据P1P2P4P4控制点得到P2P4之间的Catmull曲线。

     

  • 相关阅读:
    51nod数字1的数量
    bzoj3669: [Noi2014]魔法森林 lct版
    【NOI2014】起床困难综合症 位运算+贪心
    bzoj2631: tree lct
    bzoj2002 弹飞绵羊 lct版
    codevs1245最小的N个和 小根堆
    RTSP/GB28181/SDK协议视频融合平台EasyCVR接口获取协议平台接入参数的调用方法
    RTSP/GB28181/SDK协议视频融合平台EasyCVR上传通道数据库不显示怎么解决?
    基于视频协议融合平台EasyCVR开发的视频综合管理监控平台EasyCVS通道流检查功能的实现
    RTSP/GB28181/HIKSDK/大华SDK协议安防视频云平台EasyCVR新增告警功能介绍
  • 原文地址:https://www.cnblogs.com/jerrice/p/4354620.html
Copyright © 2011-2022 走看看