Back to Adaptive Vision Library website

You are here: Start » Function Reference » Region » Region Global Transforms » SplitRegionIntoBlobs


Header: AVL.h
Namespace: avl
Module: FoundationBasic

Splits a region into an array of regions corresponding to its connected components.

Applications: Segmentation of a region into individual objects when the objects do not touch each other.


void avl::SplitRegionIntoBlobs
	const avl::Region& inRegion,
	avl::RegionConnectivity::Type inConnectivity,
	const int inMinBlobArea,
	atl::Optional<int> inMaxBlobArea,
	bool inRemoveBoundaryBlobs,
	atl::Array<avl::Region>& outBlobs,
	atl::Array<int>& diagBlobAreas


Name Type Range Default Description
inRegion const Region& Input region
inConnectivity RegionConnectivity::Type Type of connectivity used for the region foreground
inMinBlobArea const int 0 - 1 Minimal area of a resulting blob
inMaxBlobArea Optional<int> 0 - NIL Maximal area of a resulting blob
inRemoveBoundaryBlobs bool False Flag indicating whether the blobs on border of the input region should be removed or not
outBlobs Array<Region>&
diagBlobAreas Array<int>& Areas of extracted blobs


The operation computes an array of connected regions corresponding to the connected components of the input region pixels. Each region in the resulting array will have dimensions equal to those of the input region.

Resulting array will contain only regions which have area in range defined by inputs: inMinBlobArea and inMaxBlobArea.

Images below shows neighbor of the gray pixel in different inConnectivity selection.

inConnectivity.FourDirections inConnectivity.EightDirections


  • In most cases this function works without any parametrization. Just pass a single region to the inRegion input.
  • To reject small blobs, which are often caused by noise, increase inMinBlobArea.
  • To reject big blobs, which sometimes appear due to some background pattern, define inMaxBlobArea.
  • Set inRemoveBoundaryBlobs to ignore blobs of partially visible objects, touching the edges of the image.


The image below show an input 10x10 pixels region.

Images below shows result of SplitRegionIntoBlobs filter with different inConnectivity.

inConnectivity.FourDirections inConnectivity.EightDirections

Images below shows result of SplitRegionIntoBlobs filter with different inRemoveBoundaryBlobs.

inRemoveBoundaryBlobs = True inRemoveBoundaryBlobs = False


When inRemoveBoundaryBlobs is set to True all filters near the region boundary will be removed. The region boundary is described by region frame.

This filter is mostly used in Blob Analysis Technique please refer to our Machine Vision Guide - Blob Analysis article.

Hardware Acceleration

This operation supports automatic parallelization for multicore and multiprocessor systems.

See Also

  • SplitRegionIntoComponents – Splits a region into an array of regions. Operates by merging blobs in accordance to the inMaxDistance parameter.
  • CropRegion – Creates a region from a rectangular fragment of another one.