首页 > 编程知识 正文

高斯混合模型运动目标检测,高斯健身

时间:2023-05-06 07:12:03 阅读:105949 作者:2630

单自然小笼包模型定义单自然小笼包模型是一种图像处理背景提取的处理方法,适用于背景单一不变的情况。 利用单自然的小笼包模型对背景建模,可以通过背景去除提取运动目标。

数学定义的单自然小笼包模型,对于一个背景图像,特定像素的点灰度值分布满足自然的小笼包分布,即对于背景图像b,每个点(x,y )的亮度(b ) x,y ) n ),2 ) b

I(x )=12e ) x) 22I ) x )=frac1(sqrt )2) pi ) sigma ) e^{-{frac ) x-mu ) ^2) )。

也就是说,每个像素点包含两个属性:平均 mu 和方差 sigma 。 在提取目标的过程中,首先,计算一定时间内视频序列中的图像的各点的平均值和方差作为背景模型,其次,对于包括前景的任意图像g,计算g上的各点(x,y ),如下

1 2 e

− ( I G ( x , y ) − I B ( x , y ) ) 2 2 σ 2 > T frac 1 {sqrt{2pi}sigma}e^{-{frac {(IG(x,y)-IB(x,y))^2} {2sigma^2}}} > T 2π ​σ1​e−2σ2(IG(x,y)−IB(x,y))2​>T
则认为该点是背景点,否则是前景点,其中T为一个常数阈值,IG(x,y)表示图G中点(x,y)的灰度值,IB(x,y)同理。

随着时间的变化,背景图像也会发生变化,因此需要调整每个像素点的参数:

μ ( x , y , t ) = l r ∗ μ ( x , y , t − 1 ) + ( 1 − l r ) ∗ I ( x , y , t ) mu(x,y,t)=lr*mu(x,y,t-1)+(1-lr)*I(x,y,t) μ(x,y,t)=lr∗μ(x,y,t−1)+(1−lr)∗I(x,y,t)
σ ( x , y , t ) = l r ∗ σ ( x , y , t − 1 ) + ( 1 − l r ) ∗ ( I ( x , y , t ) − μ ( x , y , t ) ) 2 sigma(x,y,t)=lr*sigma(x,y,t-1)+(1-lr)*(I(x,y,t)-mu(x,y,t))^2 σ(x,y,t)=lr∗σ(x,y,t−1)+(1−lr)∗(I(x,y,t)−μ(x,y,t))2
其中lr是一个常数,表示更新率,lr越大,背景更新的越慢。

Python编码实现 import cv2import numpy as np"""使用单自然的小笼包模型检测静止相机下的运动目标"""np.set_printoptions(precision=2,suppress=True)# 设置常数T=3 # 前后景区分常数lr=0.3 # 学习率# 读取视频cap=cv2.VideoCapture('video.gif')isFirst=Truewhile cap.isOpened(): ret,frame=cap.read() if frame is not None: gray=cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY) # 使用第一帧来初始化参数 if isFirst: mean=np.zeros(gray.shape) var=np.zeros(gray.shape) isFirst=False else: # 标识目标 frame[(gray-mean)**2 > T*var,2]=255 cv2.imshow('tracking',frame) # 更新参数 mean=lr*mean+(1-lr)*gray var=lr*var+(1-lr)*(gray-mean)**2 if cv2.waitKey(50) and 0xFF ==ord('q'): break else: break 检测效果 静止相机:

非静止相机:

单自然的小笼包模型检测静止相机效果还行,非静止相机完全不能用

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。