设视频帧的大小为mxn,m代表视频帧的像素宽度,n代表视频帧的像素高度。对于灰度背景差图像Bd(x,y,tk),设将该图像前景(运动目标区域)和背景分离的阈值为Tk,这里Tk的下标k表示第k帧视频帧,Tk的取值区间为[0,255];设前景像素点数Nf与图像像素点总数(mxn)的比值为 ,前景像素点数的灰度平均值为 ;设背景像素点数Nb与图像像素点总数mxn的比值为 ,背景像素点数的灰度平均值为 ;记整帧图像的平均灰度值为 ,Tk阈值下的类间方差记为 则有:
在算法实现时让Tki从0至255取值,每次不进1,使得 最大时对应的Tki即为求得的最优阈值Tk。
2.3.2 目标轮廊提取
对阈值化后的背景差图采用适当次数的形态学腐蚀及膨胀操作,可使视频对象平面具有更好的空域连通性,在结合形态学边界提取方法,即可提取出视频运动目标的外接轮廊[5]。轮廊提取方法描述如下:设阈值化后的二至图像可表示为集合F,集合F运动目标的轮廊表示为 ,则 可先由B对F腐蚀,再用F减去腐蚀结果得到,见式(2.14):
(2.14)
这里B是一个适当的结构元素, 为形态学腐蚀算子。
2.4 运动目标分割
前景目标分割的依据通常是目标的空间连续性和颜色一致性。由于后者很多时候并不可靠所以一般根据空间连续性采用连通区域检测算法来分割目标。连通区域分割受初始数据中的噪声影响很大,一般需要先进行去噪处理。这一步可以通过形态学运算实现,利用腐蚀和膨胀算子分别去除孤立的噪声前景点和填补目标区域的小孔[7]。
(从左到右依次为:初始前景点集F,扩张集Fe,收缩集Fc和分割结果)
图2-2 目标分割示意图
一种常见的图像分割算法是区域生长法,其基本原理是将有相似性质的相似的像素集合起来构成区域。具体是先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素邻域中与种子像素有相同或相似性质的像素合并到种子像素所在的区域。确定目标的位置,即将一幅图像分成为有意义的区域,并确定区域间的坐标关系及位置。基于区域生长的原理,采用两步区域生长法的迭代思想,实现视频运动目标的连通区域标记的基本思想如下:
1) 初始化标记矩阵C(x,y,tk)。
2) 逐行扫描阈值化后的图像,得到目标种子坐标f(x0,y0);以f(x0,y0)为质心检查邻域像素,满足合并条件的邻域像素坐标压入堆栈,并设置为背景点。
3) 根据2)的前景点位置坐标得目标矩形框位置坐标{f(x0,y0),...,f(xL,yL)} ->(xmin,xmax,ymin,ymax),矩形框坐标压入堆栈,返回2)。
4) 逐个取出矩形框位置坐标(xmin,xmax,ymin,ymax),将C(x,y,tk)对应的矩形区 域均置为前景区域得C(x,y,tk)。
5) 常规区域生长法连通区域标记C'(x,y,tk)。
2.5 目标质心关联
2.5.1 质心标记
设经两步区域生长法对连通区域标记后第i个运动目标外接矩形四个顶点的坐标分别表示为(xi0,yi0)、(xi0,yi1)、(xi1,yi0)、(xi1,yi1),记第i个运动目标质心为(xi,yi),为保证算法的实时性,直接将运动目标外接矩形的中心标记为运动目标的质心,运动目标外接矩形坐标示意图和质心表达式分别如图2.3和式(2-16)所示: Matlab视频中的运动目标检测方法研究(5):http://www.youerw.com/tongxin/lunwen_4933.html