The medial feature detector (MFD) is a generic detector of regions of arbitrary scale and shape in still images. It has been tested successfully in image matching and retrieval applications, with state of the art performance and savings in computational and space requirements. The strongest regions are mostly blob-like and well enclosed by boundaries. Unlike most feature detectors, the boundaries need not be complete. Examples are shown below.
Detection is based on a weighted distance transform of image gradient, a decomposition of the corresponding medial axis, a bottom-up merging process and what we call the shape fragmentation factor. The underlying theory is presented in Medial Features, and in our ICCV paper cited below. Here we provide its binary code and documentation.
input (270 x 270px) | distance transform (30ms) + medial axis (15ms) |
partition (15ms) over medial axis |
features (3ms) over partition |
The code has been developed in C++, using OpenCV to load, save and display images. It is highly optimized, with running times in the order of 0.5-2 seconds for an average complexity image of up to 1Mpixel. The most time-consuming task is distance propagation, which is linear in the number of pixels. In the tiny example above, times refer to individual stages as measured on an Intel 3GHz Core i7-950 processor, for a total of about 63 milliseconds. MFD provides access to all intermediate results and detailed statistics through several commands and options, including interactive visualization and debugging. It can operate in batch mode, optionally recursing subfolders. It has a special mode for binary images providing faster implementation, useful e.g. for binary distance transform and medial axis. In this case it also offers sub-pixel accuracy:
input (954 x 954px) | medial axis (290ms) sub-pixel accurate |
partition (260ms) over distance and medial |
The binary code is available for Linux 64-bit and Windows 32-bit platforms. No installation is needed. The Windows version has all required library files included, and the Linux version only needs installation of OpenCV first. The documentation provides a guide to the most important commands and options through examples, but no complete reference is available.
The software may be used freely for research purposes only. Please cite our ICCV paper below if you use it.
Version 0.6, documentation only (pdf, 4.70 MB)
Version 0.6, Linux 64-bit and Windows 32-bit binary, documentation and examples (tar.gz, 8.27 MB)
Yannis Avrithis
e-mail: