本文主要是介绍基于改进背景减法的目标检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、算法思想
本算法使用背景减除法提取目标区域,采用选择性更新的方法更新背景模型,利用帧间差分法解决背景突变带来的问题,运用形态学滤波的方法对得到的二值化图像进行处理,最后使用积分投影法实现对目标的分割。
二、背景模型初始化
考虑到监控系统的实时性要求,算法并不事先建立复杂精确的背景模型,而是将采集到的第一帧图像作为背景图像,虽然该图像不一定就是真实的背景,但是随着背景模型的不断更新,该模型会越来越接近于真实的背景。
三、运动目标的检测
本文采用背景减法实现运动目标检测的功能,算法将当前采集到的图像与系统维护的背景模型进行差分运算,当运算结果超过一定阈值时,即可判断图象中对应的像素点属于运动目标区域,并产生相应的二值化图像。
运算过程如式 3.1 所示。其中 fn(x , y) 为当前采集到的图像(x , y)位置像素点的灰度值,B(x , y ) 为背景图像中对应位置像素点的灰度值,如果两值相减的差值超过阈值T ,该点即为运动像素点, 否则系统判定其为背景像素点; 图像Rn为含有运动目标区域的二值化图像。
四、背景模型的更新策略
由于监控场景中的光照变化和外来无关事件的干扰,真实的背景是不断变化的,因此系统需要不断地更新背景模型,以适应这种变化。算法对不同原因引起的背景变化,分别采取不同的背景模型更新策略。
(1)背景缓慢变化时的更新策略
当由于光照变化引起真实背景发生缓慢变化时,系统需要实时更新背景模型。如果对图像中的每一个像素点都进行更新,则有可能将运动目标的影像引入到背景模型中,“污染”了背景模型。 因此,本文采用选择性更新背景的方法,只对判断为背景像素点的区域进行更新:
运算过程如式3.2 所示。其中 Bn为系统采集当前帧图像时所维护的背景模型,Bn−1为系统采集上一帧图像时所维护的背景模型, fn为系统采集的当前帧图像,BW (x , y) = 1 说明在目标检测阶段,该像素点被判定为运动像素点,反之为背景像素点;α 为背景模型学习速率,反应了系统维护的背景模型对场景变化适应的快慢程度。
(2)背景发生突变时的更新策略
当有物体进入场景后停止了运动,或者停留的对象运动离开场景等情况发生时,会导致真实背景发生明显的变化, 此时如果仍按照上文提出的方法进行背景模型的缓慢更新,则会使真实背景中发生变化的部分仍作为运动目标被检测到,产生错误的检测结果。针对这种情况,本文算法也采取了相应的背景模型更新策略。
当系统通过背景减法判断出像素点为“运动像素点”后,进一步判断该像素点在一段时间内是否还会发生变化。如果还会发生变化,则说明该像素点确实属于目标对象;如果不再发生变化,则说明该像素点已经融入了背景,属于背景像素点。判断方法为:使用帧间差分法,将当前帧图像和上一帧图像相减,如果差值小于一定的阈值,即满足式3.3,则对该像素点进行计数。当计数值
Count超过一定阈值时,说明该像素点已经融入背景,可判断为背景像素点;反之则判断为运动像素点。按照式3.2
五、形态学处理
由式3.1 得到的二值化图像除了含有运动目标外,还有少量的噪声,而且在目标内部仍有些小的空洞,需要对其采用形态学滤波的方法进行处理。数学形态学的方法能在对图像有效去噪的同 时 , 保留图像中的目标信 息 。 其中 , 基本的运 算有 : 腐 蚀(Erosion), 膨胀(Delation),开运算(Opening),闭运算(Closing)。
腐蚀(Erosion)的作用是减少目标的边界点,使其缩小,这样处理可以去除小于结构元素的噪声点, 最终会使目标比处理之前少了一些像素点。
膨胀(Delation)和腐蚀互为对偶运算(逆运算), 它的作用是将目标周围的背景点融入到目标中,使其增大,这样处理可以填补目标内部的空洞,最终会使目标比处理之前多了一些像素点。
开运算(Opening)是指,先进行腐蚀运算,后进行膨胀运算的过程,这样处理可以消除图像中微弱的噪声,并平滑目标的边界。
闭运算(Closing)是指,先进行膨胀运算,后进行腐蚀运算的过程,这样理可以填补目标内部细小的空洞,并平滑目标的边界。
六、目标区域分割
经过上述的目标检测,形态学滤波等操作处理后,最后使用积分投影法对目标进行分割,在当前图像中提取出运动目标,为后期提取目标的面积,坐标位置等信息提供必要数据。积分投影法原理简单,运算速度快, 广泛应用于运动目标的区域分割中,该方法分为垂直积分投影和水平积分投影两个步骤。
这篇关于基于改进背景减法的目标检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!