The morphological skeleton of an image is the set of its non-zero pixels which are equidistant to its boundaries. More info on Wikipedia.
Thinning an image consits in reducing its non-zero pixels to their morphological skeleton. More info on Wikipedia.
VoronoiSkeleton is a C++ class made for the fast computing of Voronoi diagrams of monochrome images. It contains different implementations of thinning algorithms:
-
Zhang - Suen explained in 'A fast parallel algorithm for thinning digital patterns' by T.Y. Zhang and C.Y. Suen and based on this implentation
-
Guo - Hall explained in 'Parallel thinning with two sub-iteration algorithms' by Zicheng Guo and Richard Hall and based on this implentation
-
a morphological one, based on the
erode()
anddilate()
operators. Coming from previous work by Félix Abecassis.
A special care has been given to optimize the 2 first ones. Instead of re-examining the whole image at each iteration, only the pixels of the current contour are considered. This leads to a speedup by almost 100 times on experimental tests.
LGPL v3, check file LICENCE
.
You need the following libraries before compiling :
- cmake (
$ sudo apt-get install cmake
), - GTest (
$ sudo apt-get install gtest-dev
), - OpenCV (
$ sudo apt-get install libopencv-dev
)
The project is based on a CMakeLists
.
It is easy to build the program on a Unix computer.
Go in the source folder and type:
$ mkdir build
$ cd build
$ cmake ..
$ make
For Windows users, some instructions are available on OpenCV website: http://opencv.willowgarage.com/wiki/Getting_started .
To display the help,
from the main folder, run the generated executable 'build/test_voronoi
' with no arguments.
It will display the help of the program.
mnist-digits-as-stroke-sequences Code project to transform the well known MNIST handwritten digit images to sequences of pen strokes, in order to obtain a data set for sequence learning.
Arnaud Ramey [email protected] -- Robotics Lab, University Carlos III of Madrid