In short I'm setting up a system for image recognition, that can classify images of irises of different people. Everything I do happens on the computer. There is no camera or anything. I just use a data base that contains photographs of eyes from a lot of people, looking like figure 1.

Figure 1
The whole thing procedure is very easy, at least on a conceptual level. So bear with me and you will soon understand how biometric iris recognition can work.The first step is to find where in the image the iris actually is. I've come up with a very efficient solution for this problem, in copying code that was available on the internet. Roughly speaking it works because the pupil is very dark, the iris is not quite as dark, and the white part around the iris is not dark at all. So detecting changes of image intensity (=brightness) is enough to find the iris. If found, that can be visualized as in figure 2.

Figure 2
Now there is the problem that irises change in size. You know that your pupil becomes larger when it's dark or when you take drugs. As the pupil becomes larger, the iris becomes smaller. But since you're still the same person the iris recognition system should not care about the absolute size of the iris. Therefore I transformed the image from a ring to a rectangular shape of constant size (see figure 3). This does not only solve the problem of varying size, but it also makes work much nicer, since rectangular images are easier to handle on a computer. 
Figure 3
Now comes the magic. Because it's exhausting to work with a whole image and compare whole images, we want to extract only the important parts of the image. This is called features extraction. There are various ways to extract features and people argue which is the best way to do it. As I have no idea about this business at all, I let the other people argue and just chose one approach that seemed easy to implement. It is the Wavelet Transform. While there is an amazing number of books discussing it in all detail with more formulas than words, using it is much easier than understanding. I just know the matlab command [C,S] = wavedec2(I,4,'Haar'); and that's it. With some more magic the image becomes a reasonably short, one dimensional signal:
Figure 4
Now what we have is one funny signal like the above for each image in our database. So from now on we're not going to work with the images anymore but with their representation as funny signals (or feature vector as you might call it).Now we want a machine that can learn to discriminate between signals from different persons. We will show the machine some signals from each person to learn first. After that, when we show the machine a new signal it should be able to classify it as coming from one of the persons. The machine we use is called Artificial Neural Network (ANN). It's a set of cells, grouped into some arrangement. Figure 5 shows a schematic representation. Using this system of connected units it is possible to do some computations, in a way that is remotely similar to how the brain works. That's why it's called neural network. The word artificial tells there is no actual network on my desk, but that it's just simulated on the computer. Anyway this network is capable of learning which kind of signal belongs to which person and it can make quite a good judgment about signals it has never encountered before.
Figure 5
Now you know what I do the whole day. For me this is quite interesting, as I learn something about image and signal processing as well as neural networks. Especially artificial neural networks are something I was very curious about. Also I learn that it's quite easy to implement a system as the one described above, without really getting into it. Modern software (Matlab) allows to do great things without understanding anything. So while 'doing it yourself' is certainly a good way to learn something, 'just reading' also seems to be an important part.That's it for today. Have a nice weekend!
4 comments:
from matlab???
aeh, what excatly do you mean?
I use matlab, yes...
In which part, do you use Matlab code, the ANN part or imaging processing part?
ah, ok.
I use matlab for everything I do. In particular I use the tool boxes for image processing, wavelet analysis and neural networks.
Post a Comment