连通区域公式为:
(2-2)
式中,T就是事先确定的二值化阈值。R(x,y)是连通区域的结果值。
由上述的分析可知,此方法的特征是:第一步需要取得环境中的一帧静态的背景图像,以为了后期对于图像进行差图像的计算;传统的算法利用的背景图像会根据时间的不同而转变,这样对于外界存在的光照,天气,光线的变换较为敏感,这样对于目标检测时,就会检测出许多的错误目标物体,无疑,对于系统的准确性会有大大的降低。
2.3 采集实时视频码流
本论文中被使用到的实时采集视频码流的设备有:智能kinect摄像头,其设备包括了一个彩色摄像头,一个红外发射摄像头及一个红外接收摄像头。在使用微软提供的API来操作KINECT之前,都必须在所有操作之前,调用NUI的初始化函数HRESULT NuiInitialize(DWORD );
初始化函数中,参数 表示标志位。其参数值可以分为以下几种:
NUI_INITIALIZE_FLAG_USES_DEPTH_AND_PLAYER_INDEX:表示了使用NUI中的带用户信息的深度图数据;
NUI_INITIALIZE_FLAG_USES_COLOR:表示使用彩色图数据;
NUI_INITIALIZE_FLAG_USES_SKELETON:表示使用骨骼追踪数据;
NUI_INITIALIZE_FLAG_USES_DEPTH:表示仅仅使用深度图数据(假设有良好的场景分析或者物体识别算法,这样就推荐使用这个参数值);
上述的4个标志位,表示打开视频流的方式不同,同时可以使用一个,也可以多个方式同时使用。Kinect处理传输数据时,是遵循3步骤的运行管线:
1)处理彩色、深度数据
2)解决用户索引
3)处理骨骼追踪数据
因此,对于Kinect的使用,都需要首先指定图像的类型,这样才能作后续的工作,比如,NuiImageStreamOpen打开视频码流,处理图像等等函数处理。
2.4 图像预处理
对于处于复杂环境中的摄像机,由于光照变化,场景的问题以及采集视频的设备的性能造成的影响,获得的图像信息就是降低了质量的图像,所以图像中肯定无法避免的存在了噪点,对于检测和跟踪图像中的移动物体,这无疑会造成很大的误差,所以为了提高获取运动物体的准确性,在获得视频的帧图像后,需要预处理图像数据:图像平滑处理;图像的填充处理。
2.4.1 视频图像的平滑滤波处理
滤波处理图像能够减小图像中的噪声,在提取目标物体之前需要去除图像的琐碎的细节,简化之后的算法。其产生的效果有平滑曲线,柔化线与线连接的摩擦等。滤波理论上由线性和非线性的两种方式。第一种的运算速度快算法简单,然而对于处理后的图像会造成图像的不清晰,第二种相对于第一种来说所造成的图像模糊等问题就可以被很好的解决,它在去除信号噪声的同时能够很好的保持信号的局部特征,可是对于运算速度就会有影响。在实际应用中会使用些较复杂的滤波方法就可以结合两者的优点。[13]
2.4.2 图像的腐蚀、填充
图像形态学中的腐蚀膨胀以及目标物体的检测边缘后的填充在对于帧图像处理时期被运用为了保证其精确性。
1)图像的腐蚀膨胀。帧图像中间会存在许多杂乱的小点,因为各个摄像机的性能问题和其所被使用的不同的环境因素,这些点绝大部分是噪音和干扰。心态学中的腐蚀算法被利用是为了将这些不需要的小噪点去除。膨胀算法被运用的目的是将属于某个球的像素点尽可能的找到,图像被处理后获得较为完整的球点。坐标值求均值的方法可以被用来较为精准的求取小球的球心。所以腐蚀膨胀算法被运用的目的就是填充遗漏的小球内部的空隙,寻求更为完整的小球,同事去掉多余的杂乱的噪点[14]。 OpenCV移动目标物体的检测跟踪的研究(7):http://www.youerw.com/jisuanji/lunwen_524.html