August 14, 2008:
I'm testing a new algorithm. A first Matlab version is available through Matlab File Exchange

April 20, 2007:
New version available (some bugs fixed).


... to my homepage


fdlib is a face detection library for C/C++ and Matlab. It allows you to detect frontal faces in images. Here is an example:

fdlib is very easy to use. The C/C++ version implements three functions

(1) void fdlib_detectfaces(byte *imagedata, int imagewidth, int imageheight, int threshold);
(2) int fdlib_getndetections(void);
(3) void fdlib_getdetection(int nr, int *xpos, int *ypos, int *width);

to be called in that order. The Matlab version implements only a single function

(1) detections = fdmex(image, threshold);

For more details, see the example source code included in the library zip file.


Download the library (zip file, ~800kb), including a sample program with source code

- fdlib for C/C++ (Windows)
- fdlib for C/C++ (Linux)
- fdlib for Matlab (Windows)
- fdlib for Matlab (Linux)

Download the demo application described below (zip file, ~900kb)

- fdlibdemo for Windows

The library and demo are free to use for non-commercial and research purposes and, of course, come with no warranty. If you would like to use it in a commercial application, please contact Dr. Bernd Ctortecka at Max-Planck-Innovation GmbH.

If you use the code, please cite our work: W. Kienzle, G. Bakir, M. Franz and B. Scholkopf: Face Detection - Efficient and Rank Deficient. In: Advances in Neural Information Processing Systems 17, pg. 673-680, 2005. Thanks!

Please note that all builds were optimized for Intel Pentium CPUs. If you would like to run it on a different platform, or have any other questions, please let me know.


I have written a demo that detects faces on a webcam stream (download link above). It requires a webcam and some recent DirectX runtime. The demo is based on the PlayCap tutorial that comes with the DirectX SDK.

At run time, the detection threshold can be adjusted with the mouse wheel: increasing/decreasing the treshold will lead to more/less correct detections, but also to more/less false detections. The current value is displayed on the window caption as "b=...", red arrow in the screenshot.