Background Subtraction¶
Class: BackgroundSubtractionBlockV1
Create motion masks from video streams using OpenCV's background subtraction algorithm.
How This Block Works¶
This block uses background subtraction (specifically the MOG2 algorithm) to identify pixels that differ from a learned background model and outputs a mask image highlighting motion areas. The block maintains state across frames to build and update the background model:
- Initializes background model - on the first frame, creates a background subtractor using the specified history and threshold parameters
- Processes each frame - applies background subtraction to identify pixels that differ from the learned background model
- Creates motion mask - generates a foreground mask where white pixels represent motion areas and black pixels represent the background
- Converts to image format - converts the single-channel mask to a 3-channel image format required by workflows
- Returns mask image - outputs the motion mask as an image that can be visualized or processed further
The output mask image shows motion areas as white pixels against a black background, making it easy to visualize where motion occurred in the frame. This mask can be used for further analysis, visualization, or as input to other processing steps.
Common Use Cases¶
- Motion Visualization: Create visual motion masks to see where movement occurs in video streams for monitoring, analysis, or debugging purposes
- Preprocessing for Motion Models: Generate motion masks as input data for training or inference with motion-based models that require mask data
- Motion Area Extraction: Extract regions of motion from video frames for further processing, analysis, or feature extraction
- Video Analysis: Analyze motion patterns by processing mask images to identify movement trends, activity levels, or motion characteristics
- Background Removal: Use motion masks to separate foreground (moving) objects from static background for segmentation or isolation tasks
- Motion-based Filtering: Use motion masks to filter or focus processing on areas where motion occurs, ignoring static background regions
Connecting to Other Blocks¶
The motion mask image from this block can be connected to:
- Visualization blocks to display the motion mask overlayed on original images or as standalone visualizations
- Object detection blocks to run detection models only on motion regions identified by the mask
- Image processing blocks to apply additional transformations, filters, or analysis to motion mask images
- Data storage blocks (e.g., Local File Sink, Roboflow Dataset Upload) to save motion masks for training data, analysis, or documentation
- Conditional logic blocks to route workflow execution based on the presence or absence of motion in mask images
- Model training blocks to use motion masks as training data for motion-based models or segmentation tasks
Type identifier¶
Use the following identifier in step "type" field: roboflow_core/background_subtraction@v1to add the block as
as step in your workflow.
Properties¶
| Name | Type | Description | Refs |
|---|---|---|---|
name |
str |
Enter a unique identifier for this step.. | ❌ |
threshold |
int |
Threshold value for the squared Mahalanobis distance used by the MOG2 background subtraction algorithm. Controls sensitivity to motion - smaller values increase sensitivity (detect smaller changes) but may produce more false positives, larger values decrease sensitivity (only detect significant changes) but may miss subtle motion. Recommended range is 8-32. Default is 16.. | ✅ |
history |
int |
Number of previous frames used to build the background model. Controls how quickly the background adapts to changes - larger values (e.g., 50-100) create a more stable background model that's less sensitive to temporary changes but adapts slowly to permanent background changes. Smaller values (e.g., 10-20) allow faster adaptation but may treat moving objects as background if they stop moving. Default is 30 frames.. | ✅ |
The Refs column marks possibility to parametrise the property with dynamic values available
in workflow runtime. See Bindings for more info.
Runtime compatibility¶
-
soft— runtimehosted_serverless,dedicated_deployment; executionremote; inputvideo - Block keeps per-video state in process memory (keyed by video_metadata.video_identifier). With remote step execution on stateless or multi-replica HTTP runtimes, successive requests may be served by different worker processes, so the state resets between calls and the output is meaningless for tracking / counting / aggregation. Use local step execution in an InferencePipeline for stable cross-frame results.
-
soft— inputimage - Block depends on temporal context from video or repeated-frame workflows. With a still image/photo, there is no meaningful history to track, compare, aggregate, or visualize, so the block provides little or no benefit.
Available Connections¶
Compatible Blocks
Check what blocks you can connect to Background Subtraction in version v1.
- inputs:
Keypoint Visualization,Morphological Transformation,Detection Event Log,Blur Visualization,Bounding Box Visualization,SIFT Comparison,Template Matching,Image Contours,Grid Visualization,Image Slicer,Heatmap Visualization,Stability AI Outpainting,Color Visualization,Circle Visualization,Perspective Correction,Image Convert Grayscale,Camera Focus,Absolute Static Crop,Distance Measurement,Roboflow Visual Search Classifier,Camera Calibration,Crop Visualization,Image Threshold,Icon Visualization,Morphological Transformation,Polygon Visualization,Polygon Zone Visualization,Trace Visualization,Line Counter,Model Comparison Visualization,Relative Static Crop,Camera Focus,QR Code Generator,Background Color Visualization,Image Stack,Stability AI Inpainting,Contrast Equalization,Corner Visualization,SIFT,Background Subtraction,Mask Visualization,Reference Path Visualization,Image Slicer,Contrast Enhancement,Roboflow Visual Search,Text Display,Dynamic Crop,Halo Visualization,Image Blur,Stability AI Image Generation,Ellipse Visualization,Triangle Visualization,Pixelate Visualization,Pixel Color Count,Dot Visualization,Image Preprocessing,Stitch Images,Line Counter,Classification Label Visualization,Polygon Visualization,SIFT Comparison,Line Counter Visualization,Halo Visualization,Depth Estimation,Label Visualization - outputs:
Keypoint Visualization,Twilio SMS/MMS Notification,Keypoint Detection Model,Perception Encoder Embedding Model,Qwen 3.6 API,Object Detection Model,SAM 3,Llama 3.2 Vision,Absolute Static Crop,Roboflow Visual Search Classifier,Image Threshold,Polygon Zone Visualization,CogVLM,BoT-SORT Tracker,Contrast Equalization,Google Gemini,OCR Model,GLM-OCR,Background Subtraction,Contrast Enhancement,Reference Path Visualization,Google Gemma API,Instance Segmentation Model,Mask Edge Snap,VLM As Detector,Florence-2 Model,Halo Visualization,Dynamic Crop,SAM 3 Interactive,LMM,Image Blur,Seg Preview,SAM 3,Ellipse Visualization,OpenAI,Florence-2 Model,LMM For Classification,Time in Zone,Semantic Segmentation Model,Instance Segmentation Model,OpenAI,Event Writer,Single-Label Classification Model,Google Gemma,Keypoint Detection Model,Buffer,Heatmap Visualization,Semantic Segmentation Model,SORT Tracker,Email Notification,Circle Visualization,Perspective Correction,Camera Focus,Byte Tracker,Crop Visualization,Keypoint Detection Model,Polygon Visualization,ByteTrack Tracker,Multi-Label Classification Model,Stability AI Inpainting,SAM 3,Object Detection Model,VLM As Classifier,Google Gemini,Image Slicer,Roboflow Vision Events,Multi-Label Classification Model,Qwen3.5,Object Detection Model,SAM3 Video Tracker,Dot Visualization,QR Code Detection,Line Counter Visualization,Instance Segmentation Model,Depth Estimation,PP-OCR,Blur Visualization,EasyOCR,Clip Comparison,Anthropic Claude,Segment Anything 2 Model,Color Visualization,Qwen2.5-VL,Qwen3-VL,Image Convert Grayscale,Motion Detection,Single-Label Classification Model,Qwen 3.5 API,Trace Visualization,Icon Visualization,Model Comparison Visualization,Camera Focus,Google Gemini,Detections Stitch,Image Stack,Instance Segmentation Model,Qwen-VL,Mask Visualization,MoonshotAI Kimi,Text Display,Gaze Detection,Stability AI Image Generation,Google Vision OCR,OpenAI,VLM As Detector,Pixelate Visualization,Stitch Images,Classification Label Visualization,MoonshotAI Kimi,Polygon Visualization,Anthropic Claude,Roboflow Dataset Upload,Morphological Transformation,Bounding Box Visualization,SmolVLM2,Template Matching,VLM As Classifier,Image Contours,Image Slicer,Stability AI Outpainting,Anthropic Claude,Multi-Label Classification Model,SAM2 Video Tracker,Barcode Detection,Camera Calibration,Morphological Transformation,Detections Stabilizer,Relative Static Crop,Background Color Visualization,Clip Comparison,GeoTag Detection,Corner Visualization,SIFT,Track Class Lock,Dominant Color,Moondream2,Roboflow Visual Search,OpenRouter,Qwen3.5-VL,Llama 3.2 Vision,CLIP Embedding Model,Single-Label Classification Model,Triangle Visualization,OpenAI,Pixel Color Count,OC-SORT Tracker,Roboflow Dataset Upload,Image Preprocessing,SIFT Comparison,YOLO-World Model,Halo Visualization,Label Visualization
Input and Output Bindings¶
The available connections depend on its binding kinds. Check what binding kinds
Background Subtraction in version v1 has.
Bindings
-
input
image(image): The input image or video frame to process for background subtraction. The block processes frames sequentially to build a background model - each frame updates the background model and creates a motion mask showing areas that differ from the learned background. Can be connected from workflow inputs or previous steps..threshold(integer): Threshold value for the squared Mahalanobis distance used by the MOG2 background subtraction algorithm. Controls sensitivity to motion - smaller values increase sensitivity (detect smaller changes) but may produce more false positives, larger values decrease sensitivity (only detect significant changes) but may miss subtle motion. Recommended range is 8-32. Default is 16..history(integer): Number of previous frames used to build the background model. Controls how quickly the background adapts to changes - larger values (e.g., 50-100) create a more stable background model that's less sensitive to temporary changes but adapts slowly to permanent background changes. Smaller values (e.g., 10-20) allow faster adaptation but may treat moving objects as background if they stop moving. Default is 30 frames..
-
output
image(image): Image in workflows.
Example JSON definition of step Background Subtraction in version v1
{
"name": "<your_step_name_here>",
"type": "roboflow_core/background_subtraction@v1",
"image": "$inputs.image",
"threshold": 16,
"history": 30
}