vision.ForegroundDetector
系统对象
用 Gauss 混合模型进行前景检测
描述
ForegroundDetector
对比视频的背景模型,以确定每一个像素是背景还是前景。它计算出前景的标记。用背景删除,你可以从静态摄像机中检测出前景物体。
为了检测图像中的前景,你需要:
- 建立
vision.ForegroundDetector
对象并且设置它的属性。 - 像函数一样调用该对象,加上参数。
建立
语法
detector = vision.ForegroundDetector
detector = vision.ForegroundDetector(Name, Value)
描述
detector = vision.ForegroundDetector
用 Gauss 混合模型 (GMM) 计算并返回前景。detector = vision.ForegroundDetector(Name, Value)
设置一个或者多个 “名称-值” 对的属性。每一个属性名称要用引号括起来。例如,detector = vision.ForegroundDetector('LearningRate', 0.005)
属性
除非特别声明,属性是 不可以调节的,意味着你在调用对象之后,这些值是不可以改变的。你在调用对象时,这些对象会被锁定,release
函数可以将他们解锁。
如果一个属性是 可以调节的,则你可以在任何时候改变它的值。
改变属性值的更多信息,可以参考 MATLAB 中使用系统对象的系统设计(MATLAB)。
AdaptLearningRate
— 适应学习率'true'
(默认) |'false'
- 适应学习率,指定为
'true'
或者'false'
。这个属性让对象根据NumTrainingFrames
属性的不同阶段适应学习率。当你设置这个属性为‘true’
时,对象把LearningRate
设为 1 / ( current frame number ) 1 / (\text{current frame number})1/(current frame number)。如果这个属性是false
,则LearningRate
必须每一步都设置。
NumTrainingFrames
— 初始视频帧数,用于训练背景模型- 150 (默认) | 整型
- 初始视频帧数,用于训练背景模型,定为整数。当你设置了
AdaptLearningRate
为false
时,这个属性就没有用了。
LearningRate
— 参数更新的学习率- 0.005 (默认) | 数字型标量
- 参数更新的学习率,指定为数字型标量。制定了模型参数改变的学习率。这个属性控制了模型根据条件改变的快慢。适当设定这个参数可以保证算法的稳定性。
- 学习率只有在
AdaptLearningRate
为true
时,并且在指定的训练周期NumTrainingFrames
结束之后才可以实现。 - 可调节性:是
MinimumBackgroundRatio
— 决定背景模型的阈值- 0.7 (默认) | 数字型标量
- 决定背景模型的阈值,指定为数字型标量。这个属性表示像素被认为是背景的最小概率值。如果这个值太小,多模态背景就无法处理。
NumGaussians
— 混合模型中 Gauss 模式的数量- 5 (默认) | 正整数
- 混合模型中 Gauss 模式的数量,指定为正整数。一般来说,你可以设置为 3, 4 或者 5。设置这个值大于 3 可以处理多背景模式。
InitialVariance
— 初始混合模型方差'Auto'
(默认) | 数字标量初始混合模型方差,指定为数字标量或者
'Auto'
字符串向量。图片数据类型 初始方差 double/single
(30/255)^2 uint8
30^2 对彩色输入,这个属性作用于输入的所有颜色通道。
用法
语法
foregroundMask = detector(I)
foregroundMask = detector(I, learningRate)
描述
foregroundMask = detector(I)
计算输入图像 I
的前景标记,并且返回一个逻辑标记。值 1
对应前景像素。
foregroundMask = detector(I, learningRate)
用 LearningRate
计算前景标记。
输入参数
I
– 输入图像- 灰度 | 真彩 (RGB)
- 输入图像,指定为灰度 | 真彩 (RGB)
learningRate
— 参数更新学习率- 0.005 (默认) | 数字型标量
- 参数更新的学习率,指定为数字型标量。制定了模型参数改变的学习率。这个属性控制了模型根据条件改变的快慢。适当设定这个参数可以保证算法的稳定性。
- 学习率只有在
AdaptLearningRate
为true
时,并且在指定的训练周期NumTrainingFrames
结束之后才可以实现。 - 可调节性:是
输出参数
foregroundMask
— 前景标记- 二元标记
- 用 Gauss 混合模型计算得出的二元标记。
目标函数
为了使用目标函数,指定系统对象作为第一个输入参量。例如,为了释放某一个系统对象的系统资源,用如下的语法:
release(obj)
- 所有系统对象共用的方法
名称 | 解释 |
---|---|
step | 运行系统对象算法 |
release | 释放资源并且允许系统对象的值和输入特征被修改 |
step | 重置系统对象的内部状态 |
例子
检测视频中移动的车辆
建立视频源对象,以读取文件
videoSource = vision.VideoFileReader('viptraffic.avi',... 'ImageColorSpace','Intensity','VideoOutputDataType','uint8');
建立物体检测对象,并且设置训练帧数为 5(因为这是一个短视频。)设置初始标准差。
detector = vision.ForegroundDetector(... 'NumTrainingFrames', 5, ... 'InitialVariance', 30*30);
执行块分析。
blob = vision.BlobAnalysis(... 'CentroidOutputPort', false, 'AreaOutputPort', false, ... 'BoundingBoxOutputPort', true, ... 'MinimumBlobAreaSource', 'Property', 'MinimumBlobArea', 250);
插入边界
shapeInserter = vision.ShapeInserter('BorderColor','White');
播放结果。画出车辆的边界框。
videoPlayer = vision.VideoPlayer(); while ~isDone(videoSource) frame = videoSource(); fgMask = detector(frame); bbox = blob(fgMask); out = shapeInserter(frame,bbox); videoPlayer(out); end
释放对象。
release(videoPlayer); release(videoSource);
参考文献
[1] Kaewtrakulpong, P. and R. Bowden. An Improved Adaptive Background Mixture Model for Realtime Tracking with Shadow Detection. In Proc. 2nd European Workshop on Advanced Video Based Surveillance Systems, AVBS01, VIDEO BASED SURVEILLANCE SYSTEMS: Computer Vision and Distributed Processing (September 2001)
[2] Stauffer, C. and W.E.L. Grimson. Adaptive Background Mixture Models for Real-Time Tracking, Computer Vision and Pattern Recognition, IEEE Computer Society Conference on, Vol. 2 (06 August 1999), pp. 2246-252 Vol. 2.
扩展能力
- C/C++ 代码生成
使用 MATLAB 代码生成器TM生成 C 和 C++ 代码。
使用注意事项和限制:- 生成依赖于平台的 MATLAB 宿主目标。
- 生成可移植的非 MATLAB 宿主目标。
- 参考 MATLAB 系统对象代码生成 (MATLAB Coder)。
参考
主题
多物体跟踪