发明内容
基于此,有必要提供一种能提高准确性的视频监控中的目标跟踪方法。
此外,还有必要提供一种能提高准确性的视频监控中的目标跟踪装置。
一种视频监控中的目标跟踪方法,包括如下步骤:
获取上一帧中的目标对应的状态值;
对当前帧进行目标检测得到当前帧中目标观测所对应的观测值;
根据所述状态值和观测值构建代价矩阵,并应用EMD算法对代价矩阵进行求解得到分配矩阵;
根据所述分配矩阵识别当前帧中的目标。
在其中一个实施例中,所述获取上一帧中的目标对应的状态值的步骤之前,所述方法包括:
对所述上一帧中的目标进行非线性滤波,以得到所述目标对应的位置状态值、尺寸状态值和直方图状态值。
在其中一个实施例中,所述对当前帧进行目标检测得到当前帧中目标观测所对应的观测值的步骤包括:
应用目标检测算法检测出当前帧中的目标观测,以得到目标观测所对应的位置观测值、尺寸观测值和直方图观测值。
在其中一个实施例中,所述根据所述状态值和观测值构建代价矩阵的步骤包括:
根据目标对应的位置状态值、尺寸状态值、直方图状态值和目标观测对应的位置观测值、尺寸观测值、直方图观测值进行计算得到目标和目标观测之间的位置距离、尺寸距离和直方图距离;
对所述位置距离、尺寸距离和直方图距离进行运算得到代价矩阵中的元素;
由所述运算得到的元素构造得到代价矩阵。
在其中一个实施例中,所述根据所述分配矩阵识别当前帧中的目标的步骤包括:
根据所述分配矩阵中的元素识别当前帧中目标的出现、消失和/或遮挡的发生。
在其中一个实施例中,所述根据所述分配矩阵中的元素识别当前帧中目标的出现的步骤包括:
对分配矩阵中每一列的最大元素值小于预设的第一阈值所对应的目标观测,将该列所对应的目标观测作为当前帧出现的新目标,初始化对应的状态值。
在其中一个实施例中,所述根据所述分配矩阵中的元素识别当前帧中目标的消失的步骤包括:
若分配矩阵中每一行的最大元素值小预设的第二阈值,则更新该行对应的观测消失帧数;
若所述观测消失帧数大于帧数限值,则删除所述当前帧中该行对应的目标观测,所述目标观测消失于当前帧。
在其中一个实施例中,所述根据所述分配矩阵中的元素识别当前帧中目标遮挡的发生的步骤包括:
获取分配矩阵每一行中大于第三阈值的元素个数;
若所述元素个数为1,则将该行对应的目标观测由观测值更新为状态值;
若所述元素个数大于1,则判定该行目标观测发生遮挡,将所述目标观测所对应的观测值进行归一化处理得到所述目标观测发生遮挡后的状态值。
一种视频监控中的目标跟踪装置,包括如下步骤:
获取模块,用于获取上一帧中的目标对应的状态值;
目标检测模块,用于对当前帧进行目标检测得到当前帧中目标观测所对应的观测值;
运算模块,用于根据所述状态值和观测值构建代价矩阵,并应用EMD算法对代价矩阵进行求解得到分配矩阵;
识别模块,用于根据所述分配矩阵识别当前帧中的目标。
在其中一个实施例中,所述装置还包括:
预测模块,用于对所述上一帧中的目标进行非线性滤波,以得到所述目标对应的位置状态值、尺寸状态值和直方图状态值。
在其中一个实施例中,所述目标检测模块还用于应用目标检测算法检测出当前帧中的目标观测,以得到目标观测所对应的位置观测值、尺寸观测值和直方图观测值。
在其中一个实施例中,所述运算模块包括:
距离计算单元,用于根据目标对应的位置状态值、尺寸状态值、直方图状态值和目标观测对应的位置观测值、尺寸观测值、直方图观测值进行计算得到目标和目标观测之间的位置距离、尺寸距离和直方图距离;
元素运算单元,用于对所述位置距离、尺寸距离和直方图距离进行运算得到代价矩阵中的元素;
矩阵构造单元,用于由所述运算得到的元素构造得到代价矩阵。
在其中一个实施例中,所述识别模块还用于根据所述分配矩阵中的元素识别当前帧中目标的出现、消失和/或遮挡的发生。
在其中一个实施例中,所述识别模块还用于对分配矩阵中每一列的最大元素值小于预设的第一阈值所对应的目标观测,将该列所对应的目标观测作为当前帧出现的新目标初始化对应的状态值。
在其中一个实施例中,所述识别模块包括:
消失帧数更新单元,用于若分配矩阵中每一行的最大元素值小于预设的第二阈值,则更新该行对应的观测消失帧数;
观测删除单元,用于若所述观测消失帧数大于帧数限值,则删除所述当前帧中该行对应的目标观测,目标观测消失于当前帧。
在其中一个实施例中,所述识别模块包括:
个数获取单元,用于获取分配矩阵每一行中大于第三阈值的元素个数;
数值更新单元,用于若所述元素个数为1,则将该行对应的目标观测由观测值更新为状态值;
遮挡处理单元,用于若所述元素个数大于1,则将所述目标观测所对应的观测值进行归一化处理得到所述目标观测发生遮挡后的状态值。
上述视频监控中的目标跟踪方法和装置,获取上一帧中的目标得到对应的状态值,对当前帧进行目标检测得到当前帧中目标观测所对应的观测值,根据状态值和观测值构建代价矩阵,并应用EMD算法实现代价矩阵的求解以得到分配矩阵,进而由分配矩阵准确的建立目标与目标观测之间的对应关系,在目标和目标观测之间实现了准确的数据关联,使得即使密集时也能够对目标进行准确监控,提高了准确性。
具体实施方式
如图1所示,在一个实施例中,一种视频监控中的目标跟踪方法,包括如下步骤:
步骤S110,获取上一帧中的目标得到对应的状态值。
本实施例中,上一帧中的目标是指上一帧视频所存在的目标,该目标所对应的状态值用于标识目标在上一帧视频中的位置、大小和颜色等信息。
在一个实施例中,上述步骤S110之前,该方法还包括:
对上一帧中的目标进行非线性滤波,以得到目标对应的位置状态值、尺寸状态值和直方图状态值。
本实施例中,为得到上一帧中的目标所对应的状态值,需要对上一帧中的目标进行状态预测。具体的,对上一帧中的目标进行非线性滤波,该非线性滤波可为卡尔曼滤波或粒子滤波,以得到上一帧中目标的位置状态值、尺寸状态值和直方图状态值,其中,位置状态值用于标识目标在上一帧中的位置,可用位置坐标(x,y)的形式表征;尺寸状态值可为目标的宽度与高度,即(w,h);直方图状态值用于标识目标在上一帧中的颜色。
步骤S130,对当前帧进行目标检测得到当前帧中目标观测所对应的观测值。
本实施例中,当前帧进行目标检测所得到的目标观测由于存在着一定的虚警率,将包括了实际存在的目标、由于误检得到的假目标,并且也有可能发生漏检的情况,而使得某些目标被遗漏而没有检测到,因此,需要通过后续的目标识别过程得到实际存在的目标。
在一个实施例中,上述步骤S130包括:应用目标检测算法检测出当前帧中的目标观测,以得到目标观测所对应的位置观测值、尺寸观测值和直方图观测值。
本实施例中,所应用的目标检测算法可为基于运动检测的目标检测算法(例如,高斯混合模型背景建模)、基于目标检测的分类器。例如,基于目标检测的分类器可为Haar小波特征和AdaBoost分类器,HOG(梯度方向直方图)特征与SVM(支持向量机)分类器。
进一步的,当前帧中目标观测的状态将应用位置观测值、尺寸观测值和直方图观测值表示,其中,相应的,位置观测值即为通过目标检测算法所得到的目标观测的坐标位置,尺寸状态值可为目标观测的宽度和高度,直方图状态值则用于表示目标状态的颜色。
步骤S150,根据状态值和观测值构建代价矩阵,并应用EMD(earth mover’sdistance,推土机距离)算法对代价矩阵进行求解得到分配矩阵。
本实施例中,根据状态值和观测值构建上一帧中的目标和当前帧中的目标观测之间的关联关系,进而方便进行当前帧中目标的准确识别。
如图2所示,在一个实施例中,上述步骤S150包括:
步骤S151,根据目标对应的位置状态值、尺寸状态值、直方图状态值和目标观测对应的位置观测值、尺寸观测值、直方图观测值进行计算得到目标和目标观测之间的位置距离、尺寸距离和直方图距离。
本实施例中,上一帧中的目标对应的状态值表示为
和hist
prev,i,其中,(x
prev,y
prev)
i为上一帧中目标i的位置状态值,(w
prev,h
prev)
i为上一帧中目标i的尺寸状态值,hist
prev,i为上一帧中目标i的直方图状态值。
当前帧中目标观测对应的观测值表示为(xcur,ycur,wcur,hcur)j和histcur,j,其中,(xcur,ycur)j为当前帧中目标j的位置观测值,(wcur,hcur)j为当前帧中目标j的尺寸观测值,histcur,j为当前中目标j的直方图观测值。
此时,将分别计算上一帧中目标和当前帧中目标观测之间的距离,即位置距离、尺寸距离和直方图距离,其中,位置距离可使用欧氏距离。
具体的,Dpos(i,j)为上一帧中第i个目标和当前帧中第j个目标观测之间的位置距离,可通过公式 计算得到。
Dsize(i,j)为上一帧中第i个目标和当前帧中第j个目标观测之间的尺寸距离,可通过公式 计算得到。
D
hist(i,j)为上一帧中第i个目标和当前帧中第j个目标观测之间的直方图距离,可通过公式
计算得到。其中,n为直方图的大小,h
i,k为归一化直方图的第k个分量。
步骤S153,对位置距离、尺寸距离和直方图距离进行运算得到代价矩阵中的元素。
本实施例中,若上一帧中目标的个数为m,当前帧中目标观测的个数为n,则可构建得到m×n的EMD代价矩阵M,其第i行第j列的元素Mi,j通过公式Mi,j=αDpos(i,j)+βDsize(i,j)+γDhist(i,j)计算得到,其中,α、β和γ是位于[0,1]的经验值,并且α、β和γ之和为1。
步骤S155,由运算得到的元素构造得到代价矩阵。
上述代价矩阵中,应用EMD算法对代价矩阵进行求解以得到分配矩阵f,其元素fi,j用于表示第i个目标和第j个目标观测之间的关联程度,其值位于[0,1]。
步骤S170,根据分配矩阵识别当前帧中的目标。
本实施例中,多目标的视频监控过程中,目标发生遮挡、合并和分裂的情况时有发生,因此,将通过分配矩阵准确识别出视频监控过程中发生的遮挡、合并和分裂的情况。
在一个实施例中,上述步骤S170包括:根据分配矩阵中的元素识别当前帧中目标的出现、消失和/或遮挡的发生。
本实施例中,根据分配矩阵中的元素准确识别出视频监控过程中发生的遮挡、合并和分裂的情况,即识别出当前帧中新目标的出现、目标的消失和遮挡的发生。
在一个实施例中,上述根据分配矩阵中的元素识别当前帧中目标的出现的步骤包括:
对分配矩阵中每一列的最大元素值小于预设的第一阈值所对应的目标观测,将该列所对应的目标观测作为当前帧出现的新目标,初始化对应的状态值,若否,则不做任何处理。
本实施例中,循环处理分配矩阵的每一列,若第j列的最大元素值小于第一阈值tnew,则认为当前帧中第j个目标观测为新目标,进而初始化其状态值,包括位置状态值、尺寸状态值和直方图状态值。
如图3所示,在一个实施例中,上述根据分配矩阵中的元素识别当前帧中目标的消失的步骤包括:
步骤S171,若分配矩阵中每一行的最大元素值是否小于预设的第二阈值,则更新该行对应的观测消失帧数。
本实施例中,循环处理分配矩阵的每一行,若第i行的最大元素值小于第二阈值texist,则认为上一帧中的第i个目标未在当前帧出现,此时,将更新观测消失帧数,即第i个目标未出现的帧数。
步骤S173,若观测消失帧数大于帧数限值,则删除当前帧中该行对应的目标观测,该目标观测消失于当前帧。
本实施例中,判断观测消失帧是否大于帧限值,若是,则说明第i个目标已经连续帧限值个帧数未出现,是属于已经消失的目标,因此将删除当前帧中对应的目标观测。
如图4所示,在一个实施例中,上述根据分配矩阵中的元素识别当前帧中目标遮挡的发生的步骤包括:
步骤S175,获取分配矩阵中每一行中大于第三阈值的元素个数。
本实施例中,循环处理分配矩阵的每一行,统计该行中数值大于第三阈值t的元素个数。
步骤S176,若元素个数为1,则将该行对应的目标观测由观测值更新为状态值。
本实施例中,若元素个数为1,则说明上一帧的目标与当前帧的目标观测是一一对应的,因此,则应用非线性滤波对观测值进行更新,以得到相应的状态值,即位置状态值和尺寸状态值,直方图的更新可通过如下更新公式得到,即histnew=(1-α)histprev+α·histcur。
其中,histprev为上一帧目标的直方图状态值,histcur是当前帧的直方图观测修士,histnew是更新得到的直方图状态值,α是位于[0,1]的经验值。
步骤S177,若元素个数大于1,则判定该行目标观测发生遮挡,将目标观测所对应的观测值进行归一化处理得到目标观测发生遮挡后的状态值。
本实施例中,若判断到元素个数是大于1的,则说明目标之间发生的遮挡。设大于第三阈值的元素为fi,1,...,fi,s,对这些元素进行归一化处理,每个元素除以这些元素的和,得到归一化匹配值w1,...,ws。让后用这些元素对应的目标观测j1,...,js共同更新目标的状态值。
状态值中,直方图状态值的更新为:
histnew=(1-α)histprev+α·histcur_mean
其中,histcur,i为第i个目标观测的直方图观测值,wi为前述归一化匹配值。
上述视频监制中的目标跟踪方法中,通过采用EMD算法准确地检测出目标的出现、遮挡和消失,进而利用分配矩阵准确的更新目标的状态。
如图5所示,在一个实施例中,一种视频监控的目标跟踪装置,包括获取模块110、目标检测模块130、运算模块150和识别模块170。
获取模块110,用于获取上一帧中的目标对应的状态值。
本实施例中,上一帧中的目标是指上一帧视频所存在的目标,该目标所对应的状态值用于标识目标在上一帧视频中的位置、大小和颜色等信息。
如图6所示,在一个实施例中,上述装置还包括预测模块210。
预测模块210,用于对上一帧中的目标进行非线性滤波,以得到目标对应的位置状态值、尺寸状态值和直方图状态值。
本实施例中,为得到上一帧中的目标所对应的状态值,需要预测模块210对上一帧中的目标进行状态预测。具体的,预测模块210对上一帧中的目标进行非线性滤波,该非线性滤波可为卡尔曼滤波或粒子滤波,以得到上一帧中目标的位置状态值、尺寸状态值和直方图状态值,其中,位置状态值用于标识目标在上一帧中的位置,可用位置坐标(x,y)的形式表征;尺寸状态值可为目标的宽度与高度,即(w,h);直方图状态值用于标识目标在上一帧中的颜色。
目标检测模块130,用于对当前帧进行检测得到当前帧中目标观测所对应的观测值。
本实施例中,目标检测模块130对当前帧进行目标检测所得到的目标观测由于存在着一定的虚警率,将包括了实际存在的目标、由于误检得到的假目标,并且也有可能发生漏检的情况,而使得某些目标被遗漏而没有检测到,因此,需要通过后续的目标识别过程得到实际存在的目标。
在一个实施例中,上述目标检测模块130还用于应用目标检测算法检测出当前帧中的目标观测,以得到目标观测所对应的位置观测值、尺寸观测值和直方图观测值。
本实施例中,所应用的目标检测算法可为基于运动检测的目标检测算法(例如,高斯混合模型背景建模)、基于目标检测的分类器。例如,基于目标检测的分类器可为Haar小波特征和AdaBoost分类器,HOG(梯度方向直方图)特征与SVM(支持向量机)分类器。
进一步的,当前帧中目标观测的状态将应用位置观测值、尺寸观测值和直方图观测值表示,其中,相应的,位置观测值即为通过目标检测算法所得到的目标观测的坐标位置,尺寸状态值可为目标观测的宽度和高度,直方图状态值则用于表示目标状态的颜色。
运算模块150,用于根据状态值和观测值构建代价矩阵,并应用EMD算法对代价矩阵进行求解得到分配矩阵。
本实施例中,运算模块150根据状态值和观测值构建上一帧中的目标和当前帧中的目标观测之间的关联关系,进而方便进行当前帧中目标的准确识别。
如图7所示,在一个实施例中,上述运算模块150包括距离计算单元151、元素运算单元153和矩阵构造单元155。
距离计算单元151,用于根据目标对应的位置状态值、尺寸状态值、直方图状态值和目标观测对应的位置观测值、尺寸观测值、直方图观测值进行计算得到目标和目标观测之间的位置距离、尺寸距离和直方图距离。
本实施例中,上一帧中的目标对应的状态值表示为
和hist
prev,i,其中,(x
prev,y
prev)
i为上一帧中目标i的位置状态值,(w
prev,h
prev)
i为上一帧中目标i的尺寸状态值,hist
prev,i为上一帧中目标i的直方图状态值。
当前帧中目标观测对应的观测值表示为(xcur,ycur,wcur,hcur)j和histcur,j,其中,(xcur,ycur)j为当前帧中目标j的位置观测值,(wcur,hcur)j为当前帧中目标j的尺寸观测值,histcur,j为当前中目标j的直方图观测值。
此时,距离计算单元151将分别计算上一帧中目标和当前帧中目标观测之间的距离,即位置距离、尺寸距离和直方图距离,其中,位置距离可使用欧氏距离。
具体的,Dpos(i,j)为上一帧中第i个目标和当前帧中第j个目标观测之间的位置距离,可通过公式 计算得到。
Dsize(i,j)为上一帧中第i个目标和当前帧中第j个目标观测之间的尺寸距离,可通过公式 计算得到。
D
hist(i,j)为上一帧中第i个目标和当前帧中第j个目标观测之间的直方图距离,可通过公式
计算得到。其中,n为直方图的大小,h
i,k为归一化直方图的第k个分量。
元素运算单元153,用于对位置距离、尺寸距离和直方图距离进行运算得到代价矩阵中的元素。
本实施例中,若上一帧中目标的个数为m,当前帧中目标观测的个数为n,则元素运算单元153可构建得到m×n的EMD代价矩阵M,其第i行第j列的元素Mi,j通过公式Mi,j=αDpos(i,j)+βDsize(i,j)+γDhist(i,j)计算得到,其中,α、β和γ是位于[0,1]的经验值,并且α、β和γ之和为1。
矩阵构造单元155,用于由运算得到的元素构造得到代价矩阵。
上述代价矩阵中,应用EMD算法对代价矩阵进行求解以得到分配矩阵f,其元素fi,j用于表示第i个目标和第j个目标观测之间的关联程度,其值位于[0,1]。
识别模块170,用于根据分配矩阵识别当前帧中的目标。
本实施例中,多目标的视频监控过程中,目标发生遮挡、合并和分裂的情况时有发生,因此,识别模块170将通过分配矩阵准确识别出视频监控过程中发生的遮挡、合并和分裂的情况。
在一个实施例中,上述识别模块170还用于根据分配矩阵中的元素识别当前帧中目标的出现、消失和/或遮挡的发生。
本实施例中,识别模块170根据分配矩阵中的元素准确识别出视频监控过程中发生的遮挡、合并和分裂的情况,即识别出当前帧中新目标的出现、目标的消失和遮挡的发生。
在一个实施例中,上述识别模块170还用于对分配矩阵中每一列的最大元素值小于预设的第一阈值所对应的目标观测,将该列所对应的目标观测作为当前帧出现的新目标初始化对应的状态值。
本实施例中,识别模块170循环处理分配矩阵的每一列,若第j列的最大元素值小于第一阈值tnew,则认为当前帧中第j个目标观测为新目标,进而初始化其状态值,包括位置状态值、尺寸状态值和直方图状态值。
如图8所示,在一个实施例中,上述识别模块170包括消失帧数更新单元171和观测删除单元173。
消失帧数更新单元171,用于若分配矩阵中每一行的最大元素值小于预设的第二阈值,则更新该行对应的观测消失帧数。
本实施例中,消失帧数更新单元171循环处理分配矩阵的每一行,若第i行的最大元素值小于第二阈值texist,则认为上一帧中的第i个目标未在当前帧出现,此时,将更新观测消失帧数,即第i个目标未出现的帧数。
观测删除单元173,用于若观测消失帧数大于帧数限值,则删除当前帧中该行对应的目标观测,目标观测消失于当前帧。
本实施例中,观测删除单元173判断观测消失帧是否大于帧限值,若是,则说明第i个目标已经连续帧限值个帧数未出现,是属于已经消失的目标,因此将删除当前帧中对应的目标观测。
如图9所示,在另一个实施例中,上述识别模块170包括个数获取单元175、数值更新单元176和遮挡处理单元177。
个数获取单元175,用于获取分配矩阵每一行中大于第三阈值的元素个数。
本实施例中,个数获取单元175循环处理分配矩阵的每一行,统计该行中数值大于第三阈值t的元素个数。
数值更新单元176,用于若元素个数为1,则将该行对应的目标观测由观测值更新为状态值。
本实施例中,若元素个数为1,则说明上一帧的目标与当前帧的目标观测是一一对应的,因此,则数值更新单元176应用非线性滤波对观测值进行更新,以得到相应的状态值,即位置状态值和尺寸状态值,直方图的更新可通过如下更新公式得到,即histnew=(1-α)histprev+α·histcur。
其中,histprev为上一帧目标的直方图状态值,histcur是当前帧的直方图观测修士,histnew是更新得到的直方图状态值,α是位于[0,1]的经验值。
遮挡处理单元177,用于若元素个数大于1,则将目标观测所对应的观测值进行归一处理得到目标观测发生遮挡后的状态值。
本实施例中,若判断到元素个数是大于1的,则说明目标之间发生的遮挡。遮挡处理单元177设大于第三阈值的元素为fi,1,...,fi,s,对这些元素进行归一化处理,每个元素除以这些元素的和,得到归一化匹配值w1,...,ws。让后用这些元素对应的目标观测j1,...,js共同更新目标的状态值。
状态值中,直方图状态值的更新为:
histnew=(1-α)histprev+α·histcur_mean
其中,histcur,i为第i个目标观测的直方图观测值,wi为前述归一化匹配值。
上述视频监制中的目标跟踪装置中,通过采用EMD算法准确地检测出目标的出现、遮挡和消失,进而利用分配矩阵准确的更新目标的状态。
上述视频监控中的目标跟踪方法和装置,获取上一帧中的目标得到对应的状态值,对当前帧进行目标检测得到当前帧中目标观测所对应的观测值,根据状态值和观测值构建代价矩阵,并应用EMD算法实现代价矩阵的求解以得到分配矩阵,进而由分配矩阵准确的建立目标与目标观测之间的对应关系,在目标和目标观测之间实现了准确的数据关联,使得即使密集时也能够对目标进行准确监控,提高了准确性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。