单高斯模型检测运动目标

单高斯模型

定义

单高斯模型是一种图像处理背景提取的处理方法,适用于背景单一不变的场合。可以使用单高斯模型对背景进行建模,然后通过背景减除提取出运动目标。

数学定义

单高斯模型认为,对一个背景图像,特定像素点灰度值的分布满足高斯分布,即对背景图像B,每一个点(x,y)的亮度满足 B ( x , y ) ~ N ( μ , σ 2 ) B(x,y)\text{\textasciitilde} N(\mu,{\sigma}^2) B(x,y)~N(μ,σ2),即:
I ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 I(x)=\frac 1 {\sqrt{2\pi}\sigma}e^{-{\frac {(x-\mu)^2} {2\sigma^2}}} I(x)=2π σ1e2σ2(xμ)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{2\pi}\sigma}e^{-{\frac {(IG(x,y)-IB(x,y))^2} {2\sigma^2}}} > T 2π σ1e2σ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,t1)+(1lr)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,t1)+(1lr)(I(x,y,t)μ(x,y,t))2
其中lr是一个常数,表示更新率,lr越大,背景更新的越慢。

Python编码实现

import cv2
import numpy as np

"""
使用单高斯模型检测静止相机下的运动目标
"""
np.set_printoptions(precision=2,suppress=True)
# 设置常数
T=3 # 前后景区分常数
lr=0.3  # 学习率

# 读取视频
cap=cv2.VideoCapture('video.gif')
isFirst=True

while 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

检测效果

静止相机:

非静止相机:

单高斯模型检测静止相机效果还行,非静止相机完全不能用

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值