#circle #transform #image #file

bin+lib hough_circle_transform_for_cme

Search for circles in the image using houghs transform and output either the parameters of the circles or an image with the circles drawn. Meant to be used for TIRF-SIM microscoped CME cell processes.

4 releases

0.1.3 Oct 21, 2020
0.1.2 Oct 21, 2020
0.1.1 Oct 20, 2020
0.1.0 Oct 20, 2020


993 lines

Contains (ELF exe/lib, 5MB) target/release/houghse, (ELF exe/lib, 5MB) houghse


If you have cargo installed:

cargo install hough_circle_transform_for_cme

A pre-compiled binary is available at /target/release/houghse


    houghse [FLAGS] [OPTIONS]

    -h, --help         Prints help information
        --overwrite    Overwrite the output file, if it exists
    -V, --version      Prints version information

        --generate-completions <COMPLETION>    Generate shell completions (Defaults to /dev/stdout)
        --completion-path <COMPLETION_PATH>    Path for the shell completion file generation
    -f, --format <FORMAT>                      Format of the output circles is an image type output _(does not work
                                               yet... does not support writing output to an image)_
    -i, --input <INPUT>                        Image file to be searched
    -l, --limits <LIMIT>                       Limits to be applied to the search: 1) radius constraints (upper radius
                                               limit, lower radius limit) _(does not work yet...)_ 2) limit to the
                                               distance of multiple found circles _(does not work yet...)_
    -o, --output <OUTPUT>                      Image file to draw the circle to or a `txt`/`npz`/`npy` file to write the
                                               circle parameters to _(does not work yet... prints to `/dev/stdout`)_

Supported file types for input image tiff, jpeg, png


  1. implement setting of a range of radii

  2. output to image and npz/npy for numpy deserialization

  3. finding local maxima based on the limits instead of global maximum in order to find more than one circle

    a) A flag setting to change the needed significance of the local maxima

  4. compensate for the mismatch of the number of votes cast on different radius size due to pixelation (due to the projection of the circle into a discrete pixel representation in the specified radius voting)

  5. decide on what should be the voting matrix and on the value of votes from different pixels with different intensities (right now the bool voting is used, where a vote is cast evenly for every non-zero pixel)


~231K SLoC