Voronoi
VoronoiSkeleton is a C++ class made for the fast computing of Voronoi diagrams of monochrome images. It contains different implementations of thinning algorithms.
Install / Use
/learn @arnaud-ramey/VoronoiREADME
voronoi
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.
Licence
LGPL v3, check file LICENCE.
Dependencies
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)
How to build the program
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 .
How to use the program
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.
Related projects
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.
Authors
Arnaud Ramey arnaud.a.ramey@gmail.com -- Robotics Lab, University Carlos III of Madrid
Related Skills
node-connect
352.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
