CogBlob SegmentationParams Property Cognex VisionPro
Interface which allows the user to select and configure the desired method of image segmentation.

Namespace: Cognex.VisionPro.Blob
Assembly: Cognex.VisionPro.Blob (in Cognex.VisionPro.Blob.dll) Version: 65.1.0.0
Syntax

public CogBlobSegmentationParams SegmentationParams { get; set; }

Property Value

Type: CogBlobSegmentationParams
The default is a default-constructed CogBlobSegmentationParams object.
Events

Event TypeReason
ICogChangedEvent Changed

Fires when the value of this property changes.

The following state flag may be affected:

Exceptions

ExceptionCondition
ArgumentException The supplied value is NULL.
Remarks

An CogBlobSegmentationParams that determines how the image is segmented into object and background pixels.

Examples

Imports Cognex.VisionPro
Imports Cognex.VisionPro.Blob

Dim myBlob As New CogBlob
Dim myAreaMeasure As New CogBlobMeasure
Dim myPerimeterMeasure As New CogBlobMeasure
Dim myBlobResults As CogBlobResults

Try
  ' Find all blobs with an area greater than 10 and' a perimeter greater than 100 pixels
  myAreaMeasure.Measure = CogBlobMeasureConstants.Area
  myAreaMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange
  myAreaMeasure.FilterRangeLow = 10
  myAreaMeasure.FilterRangeHigh = 500000
  myAreaMeasure.Mode = CogBlobMeasureModeConstants.Filter

  myPerimeterMeasure.Measure = CogBlobMeasureConstants.Perimeter
  myPerimeterMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange
  myPerimeterMeasure.FilterRangeLow = 100
  myPerimeterMeasure.FilterRangeHigh = 500000
  myPerimeterMeasure.Mode = CogBlobMeasureModeConstants.Filter
  myBlob.RunTimeMeasures.Add(myAreaMeasure)
  myBlob.RunTimeMeasures.Add(myPerimeterMeasure)

  myBlob.ConnectivityCleanup = CogBlobConnectivityCleanupConstants.Fill
  myBlob.SegmentationParams.Mode = CogBlobSegmentationModeConstants.HardDynamicThreshold
  myBlob.MorphologyOperations.Add(CogBlobMorphologyConstants.CloseSquare)
  ' mobjImage is an acquired image
  myBlobResults = myBlob.Execute(mobjImage, r)
  Debug.WriteLine(myBlobResults.GetBlobs.Count.ToString)
  Dim aResult As CogBlobResult
  Dim avgArea As Double
  For Each aResult In myBlobResults.GetBlobs
    avgArea = avgArea + aResult.Area
  Next

  avgArea = avgArea / myBlobResults.GetBlobs.Count
  Debug.WriteLine(" AvgArea:" + avgArea.ToString)

Catch ex As Exception
  Debug.WriteLine("Following Error Occurred:" + ex.Message)

End Try
using Cognex.VisionPro; 
using Cognex.VisionPro.Blob;

private void doBlob()
{
  CogBlob myBlob=new CogBlob(); 
  CogBlobMeasure myAreaMeasure=new CogBlobMeasure();  
  CogBlobMeasure myPerimeterMeasure=new CogBlobMeasure(); 
  CogBlobResults myBlobResults; 
  Double avgArea=0;
  try
{
  // Find all blobs with an area greater than 10 and' a perimeter greater than 100 pixels
  myAreaMeasure.Measure = CogBlobMeasureConstants.Area;
  myAreaMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange;
  myAreaMeasure.FilterRangeLow = 10;
  myAreaMeasure.FilterRangeHigh = 500000;
  myAreaMeasure.Mode = CogBlobMeasureModeConstants.Filter;

  myPerimeterMeasure.Measure = CogBlobMeasureConstants.Perimeter;
  myPerimeterMeasure.FilterMode = CogBlobFilterModeConstants.IncludeBlobsInRange;
  myPerimeterMeasure.FilterRangeLow = 100;
  myPerimeterMeasure.FilterRangeHigh = 500000;
  myPerimeterMeasure.Mode = CogBlobMeasureModeConstants.Filter;
  myBlob.RunTimeMeasures.Add(myAreaMeasure);
  myBlob.RunTimeMeasures.Add(myPerimeterMeasure);

  myBlob.ConnectivityCleanup = CogBlobConnectivityCleanupConstants.Fill;
  myBlob.SegmentationParams.Mode = CogBlobSegmentationModeConstants.HardDynamicThreshold;
  myBlob.MorphologyOperations.Add(CogBlobMorphologyConstants.CloseSquare);
  // mobjImage is an acquired image
  myBlobResults = myBlob.Execute(mobjImage, r);
  Debug.WriteLine(myBlobResults.GetBlobs(true).Count.ToString());

  foreach (CogBlobResult aResult in myBlobResults.GetBlobs(true))
  {
    avgArea = avgArea + aResult.Area;
  }

  avgArea =avgArea / myBlobResults.GetBlobs(true).Count;
  Debug.WriteLine(" AvgArea:" + avgArea.ToString());
}
  catch (System.Exception ex)
  {
    Debug.WriteLine("Following Error Occurred:" + ex.Message);
  }


}
See Also