y 32个 像素方格 1 64个像素点方格 x 图6 图像坐标示意图
质心的计算是统计平均的过程,是形态区域中各像素点灰度加权平均的位置。当形态区域移动时,其质心该区域内的位置是固定的;同一坐标系中,不同的图像相同形态区域的质心坐标不同,因而以形态区域的质心作为跟踪点,得到的跟踪效果具有误差小、抗干扰强、精确度高等特点。二维图像中,设定其图像大小为M?N,灰度质心的坐标位置M(xi,yi)由下面数学表达式[]计算得到
??jf(j,k)iMNxi???f(j,k)ij?1k?1j?1Mk?1N
(5)
yi?kfi(j,k)??jk?1?1MN (6)
(j,k)其中,fi(j,k)为第i个区域的在点的像素值。提示,如果形态区域与摄影机发生
相对运动时,可重复公式(1),每一帧图像均进行质心移动记录,从而实现目标质心的搜索与跟踪。
?1?1fi(j,k)??jkMN5.6形态区域的面积计算
在5.3节中,只是对形态区域进行不同颜色标记,而其真实的灰度值未变,因此在
计算形态区域面积时,可以将第i个形态区域内每个像素点像素值之和作为其面积值,公式如下:
Si???fi(j,k)j?1k?1MN
(7)
5.7形态区域的周长计算
形态区域均是由若干个小像素点构成,因此形态区域的周长统一规定为所有边界像素点之和,即:
Li? (8)
其中,hi(j,k)为第i个区域边界二值化灰度矩阵(即区域边界上灰度值为1,其他地方灰
?1?1hi(j,k)??jk6
MN
度值为0)。
5.8图像的目标选取和识别模型
对于参考目标的选取,本文在待选目标区域中去除掉灰度面积过大和过小的区域,选取一个最靠近图像中心的区域作为参考目标,以避免视野移动造成参考目标的信息损失。
查阅资料发现,通过对参考目标的识别采用区域灰度面积、区域灰度周长两个参数同时进行判断,可以大大缩短计算时间,同时能够提高比对精确度。考虑到图像在成像过程中参考目标有可能轻微失真,在进行边缘提取后,待识别图像中形态区域和原图像中形态区域可能有轻微差距,故本文选取和参考形态区域灰度面积、周长误差小于5%的区域,作为待识别图像中的形态区域。
规定:在待识别形态区域集合内(有p个参考形态区域),取同时满足面积和周长误差值最小的形态区域视为与参考形态区域相同,即满足下列公式:
?|??|L?Lp?),L??min(Lp?5%???p?LQ0?min?? (9)
?|S?S|p?S??min(S?),??10%)pp??S???,Lp?分别为运动后图像中第p个待识别其中,Q0为识别后的满足条件的形态区域;SpS,L分别为参考形态区域的面积和周形态区域中满足条件的形态区域灰度面积与周长;
长;Sp,Lp表示参考形态区域集合中第p个参考形态区域灰度面积与周长。
寻找到满足公式(9)的形态区域后,用5.4节算法得出其运动后的质心坐标Z?(x?,y?)。 5.9基于坐标相对变化的形态区域质心追踪模型
通过前面的解析,得到形态区域位置可由其质心的位置表示,所以判断视野区的运动方向,可直接通过对两相邻单帧图像中参考形态区域的质心运动方向来做判定。在二维图中,物体运动方向的判断最简单的方法是:确定一个固定参考点,在同一坐标系中,计算运动前后参考点的坐标相对变化情况,从而确定运动后的参考点相对于运动前参考点的运动方向。在这里,将参考形态区域的质心看作参考点,在同一标准坐标系下,计算得到其与运动后图像参考形态区域的质心坐标相对位置变化,从而判断出视野的运动方向。
根据坐标相对变化与运动方向规律,当得到两质心的坐标差?Z?(x??x,y??y)横纵坐标满足如下9种情况时,可做运动方向判断:
(1)当运动后形态区域的质心横坐标x?比参考形态区域的质心横坐标x大时,对质心运动方向有如下判断:
?y??y?0,判断为向右上方运动;?x??x?0,?y??y?0,判断为向右方运动;
?y??y?0,判断为向右下方运动。?(2)当运动后形态区域的质心横坐标x?比参考形态区域的质心横坐标x相等时,
对质心运动方向有如下判断:
7
?y??y?0,判断为向正上方运动;? x??x?0,?y??y?0,判断为静止;?y??y?0,判断为向正下方运动。?(3)当运动后形态区域的质心横坐标x?比参考形态区域的质心横坐标x小时,对
质心运动方向有如下判断:
?y??y?0,判断为向左下方运动;?x??x?0,?y??y?0,判断为向左方运动;
?y??y?0,判断为向左上方运动。?根据相对运动知识,视野区域运动方向与质心的运动方向相反。所以最终视野区域
的运动情况为:
(1)若质心向右上方运动,则视野区向左下方运动; (2)若质心向正右方运动,则视野区向正左方运动; (3)若质心向右下方运动,则视野区向左上方运动; (4)若质心向正上方运动,则视野区向正下方运动; (5)若质心向正下方运动,则视野区向正上方运动; (6)若质心向左上方运动,则视野区向右下方运动; (7)若质心向正左方运动,则视野区向正右方运动; (8)若质心向左下方运动,则视野区向右上方运动; (9)若质心静止,则视野区静止。
六、模型求解与结果分析
任意选取一段现场拍摄短视频,对其用Matlab软件进行读取,并以0.02s为时间分度,单帧为150张图像。任意选取其中相邻两张单帧图像(像素为32?64),通过Matlab软件编程实现模型中的算法,具体步骤见如下算法流程图:
前一帧图像读取图像后一帧图像转化为灰度图像转化为灰度图像二值化图像二值化图像边缘提取边缘提取求解每个区域面积、周长、质心位置求解每个区域面积、周长、质心位置去掉面积最大、最小的区域找出和参考目标面积、周长最相近的区域找出质心位置靠近中心的区域为参考目标输出视野移动方向判断质心位置的变化情况 图7 算法流程图
8
将前后2张单帧图像在Matlab中将其转化为灰度图,其原始图与灰度图像对比如下:
(1)前一张单帧原图 (2)前一张单帧灰度图
原图
灰度图灰度图
(3)后一张单帧原图 (4)后一张单帧灰度图 二值化二值化去孔洞去孔洞
图8 原始图与灰度图的对比
图像灰度化后,形成了单色图像,这与题目中只考虑单色成像相符合。接着,对灰
度图进行二值化处理,使图像效果增强;然后,二值化后的灰度图进行去孔洞操作,其目的是消除孔洞对参考形态区域的选择与识别造成的干扰。其结果如下图9、图10(以前一张单帧图为例):
图9 二值化后图像 图10 去孔洞后的图像
从图9、图10中可以看出,去孔后的图像中形态区域更明确,减少了杂点对形态的干扰。将二值化后的图像进行边缘提取,提取出物体的轮廓,并对图像中不同的物体形态区域进行标记,如图11、图12所示:
图11前一张图像的边缘提取 图12后一张图像的边缘提取
标记后的图像中物体形态区域更容易辨别,可直观数出其个数:前一张单帧图像有9个形态区域,后一张有6个形态区域。
在对图形中的物体形态区域标记后,将图像统一标准坐标化,然后根据模型中公式(5)、(6)求解得出前一帧和后一帧图像中不同物体形态的灰度质心位置、面积和周长(具体结果见表1 )。再根据目标匹配模型中的算法,去掉前一帧图像中灰度面积过大和过小的形态区域,选取最靠近中心位置的物体作为参考目标,由于整个视野区域运动
9
是缓慢的,所以图像中心位置的物体形态区域不会在下一单帧图像中产生信息损失。
表1 运动前后各形态区域的灰度面积、周长与坐标 前一单帧图像 Number 1 2 3 4 5 6 7 8 9 Area 253 92 73 12 2 2 1 1 1 Centroid [55.39,22.18] [30.98,10.41] [52.47,5.14] [31.17,1.42] [39.50,13] [42.50,14] [35,15] [39,17] [46,23] Number 1 2 3 4 5 6 后一单帧图像 Area 279 99 82 7 3 3 Centroid [54.62,21.59] [29.10,9.69] [51.23,4.33] [28,1] [43,14] [40,13] 由Matlab计算出前一帧图像目标形态区域质心坐标为(30.98,10.41)。在后一帧图像中,各形态区域的灰度面积、周长与参考目标进行比较,满足公式(9)时,取得最佳形态区域,同时得到最佳形态区域的质心坐标(29.10,9.69)。
求得后一单帧图片中最佳形态区域的质心位置坐标值后,将其与参考目标(前一张单子图像的参考形态区域)质心坐标值作差,其结果如下:
y??y?29.10-30.98?-1.88 x??x?9.69-10.41?-0.72
求得坐标差值与坐标相对变化的形态区域质心追踪模型中的判断规律,得出图像中的参考形态区域质心运动方向为左上方,反之视野区域运动方向为右下方。
整个模型运算过程中,经过多次反复使用Matlab软件的运算,发现其最短运行时间为0.5s,平均运行时间为0.7s,同时发现在图像处理板块软件所消耗的时间最多(附件)。
七、模型优化
7.1基于链码搜索算法的物体形态边界优化模型
链码方法最先由Freeman于1961年提出,用于表示由顺次连接的具有指定长度和方向的直线段组成的边界线;常用的链码方法有4向链码和8向链码两种,分别如图1(a)和图(b)所示。链码的方向编号可用一个数字集表示:方向编号i表?i|i?0,1,2,?,n?1? ,
示与X轴正方向成??i 度角;其中,n和?的值与具体采用的-+5+链码有关。如:4向链码,则n=4,??90?;8向链码,则n=8,??45?。
链码寻找目标轮廓的过程为:
1、将在检测过程中遇到的第一个点作为链码的起点; 2、顺序扫描该点周围的 8 个点,判断是否有边缘点;
3、每遇到一个边缘点,链码的长度加 1,同时为了避免被重复检测需要将该点设置为非边缘点;
4、继续扫描该点周围的8 个点,如此循环,形成链码,直到某个点周围没有边缘点为止。
4向链码的方向编号只能表示一个象素与其4邻域象素的连线,所以在编号过程中,要表示一个对角线移动时,4向链码需要两个码;即必须先沿水平(或垂直)方向移动,
10