The last week was pretty challenging. I needed to create a proof-of-concept application for demonstrating Face Recognition for one of my clients and its possible applications for him.
I have had worked with FingerPrint Recognition systems earlier, but only had a quick theoretical understanding of the challenges in Face Recognition (face angles, lighting, glasses, hair, expressions etc. etc.) without having a direct tete-a-tete with them. And now, I had a chance to have a go at them.
Armed with Google, I started taking my shot.
Well, the first decision was to choose a technology for implementation. This would make a significant difference to the efforts involved depending upon the imaging support available for manipulating bits & pixels for images. I hope everyone understands that Face Recognition requires considerable amount of pixel manipulation.
I settled with Java (frankly due to insistence of the client. He had existing Java applications running with which he wanted integration in case the prototype was successful). In the end, it was a sweet decision. Java provides a strong API for working with images.
The next one (decision) was to decide how the facial pictures would be supplied to the application. We decided to enable the application to capture live images from a webcam attached to the system, instead of using a third-party plugin for this purpose. Again, Java's support for interaction with capture devices attached to the system is provided through a separate add-on API called Java Media Framework (JMF). You can download it from here.
Take care to download installers for Performance Packs corresponding to your respective platforms instead of zip files. The installers would put JMF libraries automatically in your classpath. Also, they would auto-detect all capture devices attached to your system during installation. If you download the zip, you would need to perform both these steps manually. The second of these in particular can pose problems manually.