OpenCV 中用于背景分割的一个类cv::bgsegm::BackgroundSubtractorLSBP

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

算法描述

cv::bgsegm::BackgroundSubtractorLSBP 是 OpenCV 中用于背景分割的一个类,它基于局部样本二进制模式(Local Sample Binary Pattern, LSBP)进行背景建模。该算法特别适用于处理光照变化、阴影以及动态背景等复杂场景。

主要特点

  • 高效性:能够在保持较高检测准确性的同时实现较快的处理速度。
  • 适应性强:能够很好地适应光照变化和其他环境变化。
  • 参数可调:允许用户通过调整多个参数来优化背景建模过程。
  • 基于纹理信息:利用了图像中的局部纹理信息(LSBP),从而提高了前景检测的鲁棒性。

构造函数

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

cpp 复制代码
Ptr<BackgroundSubtractorLSBP> cv::bgsegm::createBackgroundSubtractorLSBP
(
    int mc = 4,
    int nSamples = 20,
    float noiseRemovalThresholdFacBG = 0.0004f,
    float noiseRemovalThresholdFacFG = 0.0008f,
    int LSBPRadius = 16,
    float Tlower = 2.0f,
    float Tupper = 32.0f,
    float Tinc = 1.0f,
    float Tdec = 0.05f,
    float Rscale = 10.0f,
    float Rincdec = 0.005f,
    double noiseCount = 7,
    double binaryThreshold = 2,
    bool useLAB = true
);

参数:

  • mc: 每个像素的最大成分数量,默认值为 4。
  • nSamples: 需要初始化的样本数,默认值为 20。
  • noiseRemovalThresholdFacBG: 背景噪声移除阈值因子,默认值为 0.0004。
  • noiseRemovalThresholdFacFG: 前景噪声移除阈值因子,默认值为 0.0008。
  • LSBPRadius: LSBP 算法使用的半径,默认值为 16。
  • Tlower: 下限阈值,默认值为 2.0。
  • Tupper: 上限阈值,默认值为 32.0。
  • Tinc: 阈值增加量,默认值为 1.0。
  • Tdec: 阈值减少量,默认值为 0.05。
  • Rscale: 缩放比例,默认值为 10.0。
  • Rincdec: 缩放增量/减量,默认值为 0.005。
  • noiseCount: 噪声计数,默认值为 7。
  • binaryThreshold: 二值化阈值,默认值为 2。
  • useLAB: 是否使用 LAB 颜色空间,默认值为 true。

主要函数

apply函数

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

getBackgroundImage函数

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

代码示例

cpp 复制代码
#include <opencv2/bgsegm.hpp>
#include <opencv2/opencv.hpp>

int main()
{
    cv::VideoCapture cap( 0 );  // 打开摄像头
    if ( !cap.isOpened() )
    {
        std::cerr << "无法打开摄像头!" << std::endl;
        return -1;
    }

    // 创建 LSBP 背景减除器
    cv::Ptr< cv::bgsegm::BackgroundSubtractorLSBP > bgSubtractor = cv::bgsegm::createBackgroundSubtractorLSBP();

    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;
}

运行结果

相关推荐
Are_You_Okkk_1 天前
无需配环境、不受设备限!MonkeyCode重新定义研发
大数据·人工智能·开源·团队开发·ai编程
kyraaa11 天前
618智能灭蚊器什么牌子好?电灭蚊灯哪个牌子好用?综合测评希亦、绳池等10大热门灭蚊灯品牌!
大数据·人工智能·python
deephub1 天前
推理 → 行动 → 观察:用 LangChain + Python 实现一个智能体循环
人工智能·python·langchain·大语言模型·agent
生成论实验室1 天前
Token即事件:Transformer为何是“事件-关系网络”的最佳实现——兼论大语言模型如何从“概率鹦鹉”进化为“认知主体”
人工智能·深度学习·语言模型·agi·安全架构
h64648564h1 天前
CANN 昇腾推理食谱全景解读:cann-recipes-infer 架构与使用指南
人工智能·架构
AI_yangxi1 天前
短视频矩阵系统行业领先的厂家
大数据·人工智能·矩阵
独隅1 天前
PyTorch转TFLite动态形状量化指南
人工智能·pytorch·python
@蔓蔓喜欢你1 天前
ES 模块:JavaScript 模块化的标准方案
人工智能·ai
h64648564h1 天前
CANN 昇腾图像预处理流水线:CV 算子深度解读
opencv·计算机视觉·目标跟踪
狒狒热知识1 天前
媒体发稿软文营销行业价值升级从简单发稿到品牌全案传播服务进化
大数据·人工智能