Background Subtraction

Algorithms seperating the input point cloud into foreground and background.

Table 1. Available fields in blickfeld.percept_pipeline.config.BackgroundSubtraction
Field Type Default Unit

mixture_of_gaussians

MixtureOfGaussians

-

-

Use mixture of gaussians for foreground/background detection

static

Static

-

-

Use a static tree structure for foreground/background detection.

Mixture Of Gaussians

Dynamic background subtraction using a mixture of gaussians. The algorithm automatically slowly updates the background model if the scene changes. The update rate is controlled via 'exponential_decay'.

Table 2. Available fields in blickfeld.percept_pipeline.config.BackgroundSubtraction.MixtureOfGaussians
Field Type Default Unit

num_initialization_frames

uint32

-

-

The amount of initially received frames which are used to build the background.

Reasonable default: 10

exponential_decay

float

-

-

Controls how fast objects switch between foreground and background. Exponential decay factor.

Reasonable default: 0.005

min_weight_threshold_for_background

float

-

-

Controls how much noise the background/foreground is expected to have.

Reasonable default: 0.25

object_awareness

ObjectAwareness

-

-

Configure the object awareness of the background subtraction.

Object Awareness

The dynamic model update can depend on the detected objects. If enabled, the model update is freezed for areas around detected objects.

This can be very helpful to avoid that stalled objects, which stay in the scene for a while (e.g. parked cars) or objects which are following similar paths (e.g. persons in a hallway), cause the generation of an invalid background model. The dynamic model update is though still enabled for small objects or noise points (e.g. caused by vegetation).

To still allow the merging of objects into the scene background, simple rules are available which automatically re-initialize the background model for the area around a stall object. Also, objects can be explicitly merged into the background via separate API commands.

Table 3. Available fields in blickfeld.percept_pipeline.config.BackgroundSubtraction.MixtureOfGaussians.ObjectAwareness
Field Type Default Unit

enabled

bool

-

-

Enable object awareness

auto_merge_object_duration

float

-

s

After an object has been tracked for the given duration, the area of the object is reinitialized.

If 0, the auto merging is disabled.

Reasonable default: 10 minutes

sizes

repeated ObjectSize

-

-

Only enable the object awareness for the given object sizes.

If empty, it is enabled for all sizes.

Reasonable default: OBJECT_SIZE_MEDIUM, OBJECT_SIZE_LARGE.

disable_for_in_background_objects

bool

-

-

Disable for objects which are marked with the in_background property.

This can be beneficial in scenes where the continuous background model update works better than the one-shot auto-merge re-initialization. Please note that the shadow detection will not work as expected when this is disabled.

Static

Uses the first received frames to build a static background map of the environment. The algorithm requires the scene to only contain the static parts of the scene on the start of the processing. The background model is not updated automatically afterwards. The ResetBackground grpc method allows to update the static map of the environment.

Table 4. Available fields in blickfeld.percept_pipeline.config.BackgroundSubtraction.Static
Field Type Default Unit

num_initialization_frames

uint32

-

-

How many frames of the first received frames are used to build the background

Reasonable default: 10

voxel_size

float

-

m

Size of voxels used for voxelization of the background during initialization.

Default: 0.05 m

min_distance

float

-

m

Minimum spatial distance to background to detect points as foreground

Default: 0.15 m