You are here: Start » Program Examples » Washers



This example shows how to find washers with defects or not properly centered.


Set of images with multiple washers.


Image with marked broken and not properly centered washers.

Histogram of distances between inner and outer contour of a washer.


Washers can be located by thresholding image and splitting resulting region into blobs.

Filter FitCircleToStripe can be used to find inner and outer circle of a washer.

Solution (AVS)

  1. Use EnumerateImages filter to load input images.

  2. Add ThresholdToRegion filter. Set inMinValue to Auto and inMaxValue to 200.0 to extract washers.

  3. Add SplitRegionIntoBlobs filter to obtain separate washers.

  4. Use RegionMassCenter filter to calculate washer centers.

  5. Create a step macrofilter and name it MeasureWasher.

  6. To create histogram of distances:

  7. Create a step macrofilter and name it DrawResults.

    • Connect outImage to DrawResults to create a new macrofilter input. Check Array checkbox.

    • Connect outMassCenter and outDistance to DrawResults in order to create new inputs. Check Array checkbox.

    • Double-click on DrawResults to edit the macrofilter.

    • Add a new formula to generate labels for washers. Create Real? input inDistance.

    • Create formula outputs:

      • outString, type String?:

        (inDistance == Nil) ? "Invalid" : ((inDistance < 0.5) ? "OK" : "NOK")

      • outIsWasherOk, type Bool?:

        outString == "OK"

    This will mark washer as valid when distance between centers is less than 0.5 and the washer is not broken.

Macrofilter Main

Macrofilter MeasureWasher measures distance between centers of inner and outer contours of a washer

Macrofilter DrawResults draws inspection results on input image

Used Filters

Icon Name Description
EnumerateImages Emulates image acquisition with images stored on disk.
DrawStrings_TwoColors Draws strings (text) on an image with two colors, depending on the status of each string (usually: green or red for pass/fail status).
ThresholdToRegion Extraction of a region of objects that can be defined by a salient brightness.
PointToPointDistance Measures the distance between two points.
CreateCoordinateSystemFromPoint Most often used to define an object alignment from results of 1D Edge Detection or Blob Analysis.
CreateHistogram Creates the histogram of the array of real numbers.
RegionMassCenter Computes a point with coordinates equal to the average coordinates of the region's pixels.
FitCircleToStripe Precise detection of ring-shaped objects, whose rough location is known beforehand.
SplitRegionIntoBlobs Segmentation of a region into individual objects when the objects do not touch each other.
RemoveNils This filter is useful e.g. when inspecting multiple objects while some of the inspections may fail (Nil result). RemoveNils is used to ignore the failed cases in the final result.

Further Readings