Hough Circle Fitting
Generalized Hough transform to fit circles to the image.
Steps for Circle fitting:
1: Drag and drop the Hough_circle_fitting.pyscro into Avizo/Amira
2: Inputs are as follows: (parameters used for the demo volume 'grain.am' when 'HoughCircleFitting.hx' is loaded are given below in '()')
a: GrayScale Image : Any 2D or 3D grayscale image/volume
b: minimum radius (1)
c: maximum radius of the circles to be fitted in pixels (5)
d: step size to allow for a range of circles to detect (1)
e: A maximum number of circles will also need to be specified (100)
f: Sigma parameter for Canny edge detector (1)
3: Use given project 'HoughCircleFitting.hx' or one's own dataset
4: Press apply to run and the outputs will be the following:
a: Circle_mask (8-bit label volume/image) - with the edges of the circles that were fitted to the image as '1' and the rest of the voxels/pixels as '0'
b: Circle_filled_mask (8-bit label volume/image) - with filled spheres of the above output
The distance of separation between circles of different radii works 'per radius'. The recommendation to avoid overlapping circles is to use a smaller range of min-max and run repeatedly instead of using a large range. For instance, instead of min_radius =5 to max_radius=15, it better to run min_radius = 5 to max_radius =7 and in another run min_radius = 9 to max_radius =11 to get the best results.
Parameters used in the Avizo project:
min_radius = 5
max_radius = 7
radius step size = 1
Dataset provided with the pack-and-go object
maximum number of circles = 50
Canny detector sigma parameter =1