Simplicity is the key to robust algorithms

The key to a robust algorithm of any sort lies in its simplicity. A case in point is image processing. Over the years we have seen numerous algorithms try to do numerous things. Some things, like robust, generic segmentation is beyond the scope of current algorithms. A good example of simplicity is in areas like fire or skin detection. One could design a quite complex algorithm to detect skin in an image, but the reality is that simple. Consider this simple algorithm based on the YCbCr colour space [1]:

YCbCr colour space is just a colour space which separates colour from “structural” intensity information. The two colour components, Cb and Cr are used together with some constraint ranges to extract potential “skin” regions. Simple right? But you may think it doesn’t work so well on the range of skin tones? Well, actually it performs quite well. Consider the following image containing a number of faces:

Here is the result of applying the algorithm:

As you can see it extracted all 16 face regions. Yes, some of the photos have also extracted hair, because it is similarly coloured, but there is enough information in these images to extract facial regions to allow for further analysis such as eye or mouth localization. The algorithm is simple, robust, and efficient. What more could one want from an algorithm (hey, and no AI needed!).

[1] Chai, D., Ngan, K.N., “Face segmentation using skin colour map in video phone applications”, IEEE Trans. on Circuits and Systems for Video Technology, Vol.9(4), pp.551-564 (1999)


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s