30 Jul 2020

Hough Circle Fitting

This module uses Generalized Hough-transform to detect circles in an image.

hough circle fitting xtra

For performing the actual Hough-transform, the Python-library scikit-image is used.

Circle-fitting is done per XY-slice.

As input, either a label-field already containing edges can be used (Canny edge-detection should be disabled), or, by enabling Canny edge-detection, edges can be detected in a grey-scale image by the module itself.

Three results are created, two label-fields and one spreadsheet:

  • circle edge mask,
  • filled circle mask (calculated by scikit-image's flood-fill),
  • table, containing slice-number (for 3D images), circle centers, radii, and accumulator values. The coordinates of the circle-centers (X, Y, Z) and the radii are given in physical units.

Invoke the module by right-clicking on the image and then selecting "Xtra -> Image Processing -> Hough Circle Fitting".

Example project:

The example-project demonstrates the use of Hough Circle Fitting on an Amira-Avizo example dataset located in "tutorials\xlab".

In the project, one slice from the data is extracted, and then Hough Circle Fitting is applied in two different ways (but leading to very similar results):

  1. on an edge-image created via Sobel Filter and Auto Thresholding (left),
  2. directly on the grey-scale image with activated edge-detection (right).

The parameters of Hough Circle Fitting are set such that circles with radii between 10 and 40 pixels are searched.
The centers of the detected circles must be at least 20 pixels apart, which corresponds to the diameter of the smallest circles looked for.
A maximum of 200 circles would be returned.
To reject circles with low significance, the minimum allowed accumulator-value is set to 0.8 and 0.45, respectively.