当前位置: 首页 > backend >正文

OpenCV 中用于背景分割(背景建模)的一个类cv::bgsegm::BackgroundSubtractorGSOC

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

cv::bgsegm::BackgroundSubtractorGSOC 是 OpenCV 中用于背景分割(背景建模)的一个类,它是基于 GMM(Gaussian Mixture Model)改进的算法。GSOC 指的是 Google Summer of Code 项目,其中这个背景减除算法被开发并集成到了 OpenCV 的 bgsegm 模块中。

主要特点

  • 改进的 GMM 算法:基于 Z.Zivkovic 的自适应高斯混合模型,并在此基础上进行了优化。
  • 颜色和梯度信息:不仅使用颜色信息,还利用了图像梯度来提高前景检测的准确性。
  • 适应性强:能够很好地适应光照变化和其他环境变化。
  • 参数可调:允许用户通过调整多个参数来优化背景建模过程。

构造函数

与大多数现代 OpenCV 背景减除器一样,不直接使用构造函数创建 BackgroundSubtractorGSOC 实例,而是通过工厂方法 cv::bgsegm::createBackgroundSubtractorGSOC() 来创建实例。

Ptr<BackgroundSubtractorGSOC> cv::bgsegm::createBackgroundSubtractorGSOC
(int mc = 3,bool nSamples = 20,float replaceRate = 0.003f,float propagationRate = 0.01f,bool hitsThreshold = 32,float alpha = 0.01f,float beta = 0.0022f,float blinkingSupressionDecay = 0.1f,float blinkingSupressionMultiplier = 0.1f,float noiseRemovalThresholdFacBG = 0.0004f,float noiseRemovalThresholdFacFG = 0.0008f
);

参数:

  • mc: 每个像素的最大成分数量,默认值为 3。
  • nSamples: 需要初始化的样本数,默认值为 20。
  • replaceRate: 新样本替换旧样本的概率,默认值为 0.003。
  • propagationRate: 成分传播的概率,默认值为 0.01。
  • hitsThreshold: 前景判断的命中阈值,默认值为 32。
  • alpha: 学习率,默认值为 0.01。
  • beta: 背景更新速率,默认值为 0.0022。
  • blinkingSupressionDecay: 闪烁抑制衰减因子,默认值为 0.1。
  • blinkingSupressionMultiplier: 闪烁抑制乘数,默认值为 0.1。
  • noiseRemovalThresholdFacBG: 背景噪声移除阈值因子,默认值为 0.0004。
  • noiseRemovalThresholdFacFG: 前景噪声移除阈值因子,默认值为 0.0008。

主要函数

apply函数

函数原型
void apply
(InputArray image, OutputArray fgmask, double learningRate=-1
);
参数
  • image: 输入当前帧。
  • fgmask: 输出前景掩码图像。
  • learningRate: 学习率,决定了新获取的信息对模型的影响速度。默认值 -1 表示自动选择学习率。

getBackgroundImage函数

函数原型
void getBackgroundImage
(OutputArray backgroundImage
) const;
参数
  • backgroundImage: 输出背景图像。

代码示例

#include <opencv2/bgsegm.hpp>
#include <opencv2/opencv.hpp>int main()
{cv::VideoCapture cap( 0 );  // 打开摄像头if ( !cap.isOpened() ){std::cerr << "无法打开摄像头!" << std::endl;return -1;}// 创建 GSOC 背景减除器cv::Ptr< cv::bgsegm::BackgroundSubtractorGSOC > bgSubtractor = cv::bgsegm::createBackgroundSubtractorGSOC();cv::Mat frame, fgMask;while ( true ){cap >> frame;  // 获取新帧if ( frame.empty() )break;  // 到达视频结尾bgSubtractor->apply( frame, fgMask );  // 应用背景减除器cv::imshow( "Original Frame", frame );cv::imshow( "Foreground Mask", fgMask );if ( cv::waitKey( 30 ) >= 0 )break;  // 按任意键退出}return 0;
}

运行结果

白色的是运动的物体
在这里插入图片描述

http://www.xdnf.cn/news/4386.html

相关文章:

  • CentOS 7.9 安装详解:手动分区完全指南
  • C++从入门到实战(十二)详细讲解C++如何实现内存管理
  • 【数据结构】手撕二叉搜索树
  • 记录一个rabbitmq因为linux主机名服务无法启动的问题
  • 《Overlapping Experiment Infrastructure: More, Better, Faster》论文阅读笔记
  • linux下MySql的安装与配置
  • ZArchiver解压缩工具:高效解压,功能全面
  • Ros 发布者 有关publisher的编程实现
  • 5月6(信息差)
  • vue3使用轮播图组件swiper
  • PPO 算法
  • 航电系统之坐标轴模拟技术篇
  • [视盘和视杯分割 标签去噪 多伪标签] 通过噪声感知学习从多个伪标签中准确分割视盘和视杯
  • MySQL表的增删查改
  • LeetCode 54.螺旋矩阵遍历的两种方法详解与对比
  • B站视频下载到电脑的方法总结
  • 高等数学第六章---定积分(§6.2定积分在几何上的应用2)
  • 网工实验——RIP配置
  • win11共享打印机主机设置
  • SpringBoot中JWT详解,底层原理及生成验证实例。
  • 【LLM】什么是 MCPACPACA
  • 【算法专题十】哈希表
  • 生命游戏(中等)
  • uDistil-Whisper:低数据场景下基于无标签数据过滤的知识蒸馏方法
  • 【技术追踪】通过潜在扩散和先验知识增强时空疾病进展模型(MICCAI-2024)
  • 「Mac畅玩AIGC与多模态22」开发篇18 - 多段输出拼接与格式化展现工作流示例
  • 融智学视角集大成范式革命:文理工三类AI与网络大数据的赋能
  • 低版本GUI配置SAProuter
  • BBS (cute): 1.0.2靶场渗透
  • IDEA 安装 SpotBugs 插件超简单教程