So we just managed to finish our group software project (as part of my course), which I have to say was extremely interesting from start to finish. It was essentially a small project on creating an iris recognition application.
The final application could read in an 8-bit greyscale image (as iris recognition devices usually take infra-red greyscale pictures), make an attempt at auto-detecting the pupil, iris and eyelids. Then it will encode the iris into a database, and allow you to compare other irides to it in the future.
I was a little weary at first about doing a project on image processing, but it’s been very fun and interesting to see how different algorithms work for i.e. edge-detecting (sobel filter), blurring (median filter), etc.
Early on we had the choice of using Java or C++ for the application. We decided to go with C++ and Qt and it really paid off. Our entire Qt experience was painless and filled with pleasant surprises along the way of all the Qt classes available to us. QPixmap, QImage and even QtImageFilters are actually extremely powerful and get the job done. We were constantly impressed by the clean solutions that Qt had for everything.
We also tried it briefly on Windows and Mac along the way so the application works well for those OSs.
Found along the way
Some interesting facts I found out along the way:
- The pupil and the iris are not concentric (vary slightly)
- Iris patterns remain remarkably stable over your lifetime (and do not depend on your eye colour)
- This depends on your parameter, but the chances of a false match can be as good as 1 in 1.5 billion
- We implemented a median filter that has order O(r)
- Finally, an interesting story
The software is available under the GPL licence, though it will probably only be useful for anyone who has a small software project similar to this one to do 🙂