发明名称 基于特征光流与在线集成学的视频目标跟踪方法
摘要 本发明公开了一种基于特征光流与在线集成学的视频目标跟踪方法,用于解决现有的数字视频中的特定目标的跟踪方法跟踪结果差的技术问题。技术方案是跟踪部分输入视频序列,用OpenCV自带的函数对每一帧的特征点用迭代金字塔光流法进行跟踪,得到下一帧这些特征点的位置;检测部分选择正样本或者负样本进行adaboost算法的处理;对跟踪部分和检测部分得到的目标可能位置进行机器学。由于将跟踪和检测的特征提取方式分离开来;在检测过程中添加了目标可能出现的位置限制的过滤,将距离目标较远的可能目标去除;再次得到跟踪和检测结果后,自适应地计算目标与在线模型的Fisher鉴别比来确定对应权重,而不是以一个固定的数值来对两个结果进行融合,因此跟踪效果较好。
申请公布号 CN102903122A 申请公布日期 2013.01.30
申请号 CN201210337097.6 申请日期 2012.09.13
申请人 西北工业大学 发明人 张艳宁;杨涛;屈冰欣;陈挺
分类号 G06T7/20(2006.01)I;G06T3/40(2006.01)I 主分类号 G06T7/20(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种基于特征光流与在线集成学习的视频目标跟踪方法,其特征在于包括以下步骤:步骤一、对原始视频的每帧图像用OpenCV提取稳定的特征点,其中包括图像序列中一直稳定存在的特征点和每一帧会新增加的特征点,用OpenCV自带的迭代光流法来跟踪这些特征点在下一帧的位置;进行目标未缩放跟踪的处理,首先判断OpenCV检测出来的特征点的数目是否达到RANSAC算法所要求的最少特征点数目;若特征点数目<最少特征点数目,则分别统计这几个特征点在x方向和y方向的位移,排序后选择中位值作为整个目标在x方向和y方向的位移;若特征点的数目≥最少特征点数目,则运用RANSAC算法先去除坏点,再计算出前一帧目标边界框到后一帧目标边界框的转换矩阵;得到目标未缩放时前一帧目标边界框对应的后一帧目标边界框的位置;在得到目标未缩放的边界框的位置后进行缩放处理,首先以目标边界框的长和宽中较小的一个为基准,从.5到5个像素进行缩放,对应的另外一边也按照从‑5到5个像素进行缩放;采用公式 <mrow> <mi>Total</mi> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>m</mi> </munderover> <munderover> <mi>&Sigma;</mi> <mrow> <mi>j</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <mo>|</mo> <mi>img</mi> <mn>2</mn> <mrow> <mo>(</mo> <mi>itemp</mi> <mo>,</mo> <mi>jtemp</mi> <mo>)</mo> </mrow> <mo>-</mo> <mi>img</mi> <mn>1</mn> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>|</mo> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>计算这几种缩放情况下累计灰度误差,选择累计灰度误差最小的一个缩放比例作为最终的缩放结果;式中,img1为前一帧图像,img2为后一帧图像,m、n分别为前一帧的边界框的宽和高,itemp、jtemp分别是img2中对应img1中i、j的坐标;步骤二、训练集采用第一帧给出的特定目标以及特定目标多个仿射变换后的目标作为正样本,图像不涉及目标部分随机选取作为负样本;接着生成检测部分需要用到的2bitBP特征矩形框,用adaboost算法error=min(ΣWeight(i,j)),if(X(i,j)≠Y(j),j∈F)α=log((1‑error)/error)/2                              (2) <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mi>Weight</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>Weight</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&times;</mo> <msup> <mi>e</mi> <mrow> <mo>-</mo> <mi>&alpha;</mi> </mrow> </msup> <mo>,</mo> <mi>if</mi> <mrow> <mo>(</mo> <mi>X</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>Y</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mi>Weight</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>Weight</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <msup> <mrow> <mo>&times;</mo> <mi>e</mi> </mrow> <mi>&alpha;</mi> </msup> <mo>,</mo> <mi>if</mi> <mrow> <mo>(</mo> <mi>X</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>,</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>&NotEqual;</mo> <mi>Y</mi> <mrow> <mo>(</mo> <mi>j</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced>从2bitBP特征矩形框中选择出弱分类器组成一个强分类器,每次选择错误率最小的分类器作为一个弱分类器,最终的强分类器作为在线检测器的分类器;式中,F是特征 集合,i是第i个特征而j是第j个样本,X(i,j)是第i个特征判断第j个样本的标签,Y是第j个样本真正的标签,Weight(i,j)是第j个样本的权值,α是该特征的系数;用一个窗口来扫描一幅图像,将每次产生的图像块输入到检测部分,用公式 <mrow> <msub> <mi>P</mi> <mi>positive</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>flag</mi> <mo>&times;</mo> <msub> <mi>xishu</mi> <mi>positive</mi> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>,</mo> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mi>flag</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mi>if</mi> <mrow> <mo>(</mo> <mi>StrongClassifer</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>></mo> <mo>=</mo> <mn>0.5</mn> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mi>flag</mi> <mo>=</mo> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>if</mi> <mrow> <mo>(</mo> <mi>StrongClassifer</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>&lt;</mo> <mn>0.5</mn> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>                              <mrow> <mo>(</mo> <mn>3</mn> <mo>)</mo> </mrow> <mrow> <msub> <mi>P</mi> <mi>negative</mi> </msub> <mo>=</mo> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>N</mi> </munderover> <mi>flag</mi> <mo>&times;</mo> <msub> <mi>xishu</mi> <mi>negative</mi> </msub> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>,</mo> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mi>flag</mi> <mo>=</mo> <mn>1</mn> <mo>,</mo> <mi>if</mi> <mrow> <mo>(</mo> <mi>NegativeClassifer</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>></mo> <mo>=</mo> <mn>0.5</mn> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mi>flag</mi> <mo>=</mo> <mo>-</mo> <mn>1</mn> <mo>,</mo> <mi>if</mi> <mrow> <mo>(</mo> <mi>NegativeClassifer</mi> <mrow> <mo>(</mo> <mi>i</mi> <mo>)</mo> </mrow> <mo>&lt;</mo> <mn>0.5</mn> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow>计算正样本或者负样本图像块,当满足公式 <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>P</mi> <mi>positive</mi> </msub> <mo>&GreaterEqual;</mo> <mi>sum</mi> <mrow> <mo>(</mo> <msub> <mi>xishu</mi> <mi>positive</mi> </msub> <mo>)</mo> </mrow> <mo>/</mo> <mn>2</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>P</mi> <mi>positive</mi> </msub> <mo>&GreaterEqual;</mo> <msub> <mi>P</mi> <mi>negative</mi> </msub> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo> </mrow> </mrow>的图像块暂时标记为正样本;式中,Ppositive、xishupositive(i)分别代表是正样本的可能性和第i个特征对应的系数,而Pnegative、xishunegative(i)分别代表是负样本的可能性和第i个特征对应的系数;如果是正样本的可能性不小于是负样本的可能性而且正样本的可能性不小于所有特征系数之和的一半,则暂时判定该图像块是正样本;对初始判定为正样本的图像块再进行过滤:(ⅰ)初始化中用NCCdistance=1‑NCC衡量各个样本与最近邻正样本或者最近邻负样本的相关相似性和固有相似性,满足标签为1但相关相似性<0.65的加入最近邻正样本中,标签为0但相关相似性>0.5的加入最近邻负样本中;把概率分类器输出的结果输入最近邻分类器,过滤掉与最近邻正样本、负样本的相关相似性≤0.4的结果;(ⅱ)用1‑overlap来作为两个边界框的距离,其中overlap是两个边界框的覆盖百分比,由公式overlap=Sboth/(S1+S2‑Sboth)            (5)计算,设定阈值为0.55,过滤掉覆盖百分比小于0.55的结果;将过滤掉的结果均加入到负样本中;式中,S1、S2分别为两个边界框的面积,Sboth是两个边界框重合的面积;步骤三、以跟踪和检测结果是否存在来产生四种可能的情况:(ⅰ)跟踪结果和检测结果都存在:首先计算检测结果的可能的边界框两两之间的覆盖百分比overlap,边界框两两之间的距离定义为distance=1‑overlap,用层次聚类法 对distance进行聚类,以0.3作为聚类结束的阈值;保留与跟踪结果的边界框的覆盖百分比大于0.5的检测结果,若聚为一类则对跟踪器进行重新初始化;否则计算出跟踪结果与检测结果的权值分配,取均值来调整跟踪器的轨迹;权值分配过程由公式 <mrow> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>J</mi> <mi>FDR</mi> </msub> <mo>=</mo> <mfrac> <msup> <mrow> <mo>|</mo> <msub> <mi>&mu;</mi> <mn>1</mn> </msub> <mo>-</mo> <msub> <mi>&mu;</mi> <mn>2</mn> </msub> <mo>|</mo> </mrow> <mn>2</mn> </msup> <mrow> <msubsup> <mi>&sigma;</mi> <mn>1</mn> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>&sigma;</mi> <mn>2</mn> <mn>2</mn> </msubsup> </mrow> </mfrac> </mtd> </mtr> <mtr> <mtd> <mi>weight</mi> <mo>=</mo> <mfrac> <mn>1</mn> <msub> <mi>J</mi> <mi>FDR</mi> </msub> </mfrac> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow>计算;式中,跟踪结果和各个检测结果的权值为weight,μ1、σ1是在线模型的灰度均值和方差,μ2、σ2是跟踪或者检测结果的灰度均值和方差,JFDR是Fisher鉴别比;(ⅱ)跟踪结果不存在、检测结果存在:对检测结果进行聚类,都聚为一类时对跟踪器重新初始化;(ⅲ)跟踪结果存在、检测结果不存在:用跟踪结果调整跟踪轨迹;(ⅳ)跟踪和检测结果都不存在:不处理;将新得到的目标样本添加到正样本来更新正样本分类器的概率分布,并且重新统计各个特征对正样本判断的错误率来更新权值;将错检的样本添加到负样本,同对正样本的操作一样更新概率分布和各个特征对负样本判断的错误率得到的权值,最后同时更新最近邻分类器。
地址 710072 陕西省西安市友谊西路127号