Symmetry Detection with the Gradient Product Transform: Source Code and Test Data Set

Here we provide additional material to the following publications:

Please note that the results of both conference papers have been further developed and consolidated in the following later article, which has been published with a reference implementation:


Rotational symmetry can be a useful feature for the identification both of natural objects, as well as man-made objects. Moreover, it can be used for medial axis extraction from greyscale images. This source code implements the Gradient Product Transform defined in the above IPOL paper. It assigns a symmetry score to each image pixel that is high for reflection symmetry center points and determines the point with the highest rotational symmetry score.

The test data set can be used for evaluating different rotational symmetry detection algorithms. It consists of 159 images of size 600×400, containing 27 different subjects. Each subject is shown in different perspectives and both in context and in detail.

Source code

To compile the C++ source code, you will need g++ and the external library OpenCV. See the file README in the source package for details and usage instructions. Here is a sample usage that writes the symmetry transform (scaled to greyscale) to "trace-symmetry.png" and prints the detected highest rotational symmetry to stdout:

symmetry -r 30 -trace image.png

Note that the maximum radius r must be provided as a command line argument. With a value of alpha=0.5 (default), the radius should be selected reasonably automatically even when the given radius is larger. If you are looking for small structures like blood vessels, you should however choose an appropriately small value for r.

Available releases:

Data set

Test data set with ground truth (63MB):

Authors and license

The source code is copyrighted by Christoph Dalitz and Regina Pohle-Fröhlich, Institute for Pattern Recognition, Niederrhein University of Applied Sciences, Krefeld, Germany. It may be used freely under the terms of the GNU General Public License. Please cite the IPOL paper listed at the top of this page as a reference when building upon this code.

The images in the data set are copyrighted by Tobias Bolten. Permission is granted to use them freely for research purposes and to include individual images into publicatons, provided you give reference to the VISAPP'13 paper listed at the top of this page.