2010-03-19
Other stuff
| Willy@320 | 1 | \chapter{Conclusions} |
| Willy@320 | 2 | \section{Final Product} |
| Dragos@371 | 3 | The final prototype is a functional iris detection application, which provides the |
| Tom@375 | 4 | user with visual prompts and feedback and also some supplementary information about |
| Tom@375 | 5 | the loaded image for debugging purposes. |
| francis@318 | 6 | |
| Tom@375 | 7 | The final product can read in an 8-bit indexed, greyscale image and will attempt to |
| Tom@375 | 8 | automatically best-fit parameters for the location of the pupil, iris and eyelids with |
| francis@395 | 9 | consideration for specular highlights and padding for eyelash interference. The entire auto-detection process takes a matter of milliseconds. The user may |
| francis@395 | 10 | choose to manually enter points to specify all of these locations; if the user does, he |
| Tom@375 | 11 | or she will receive appropriate visual feedback cues for repositioning elements in a |
| Tom@375 | 12 | manner intuitive to any casual computer user. |
| francis@318 | 13 | |
| francis@395 | 14 | From this point, the user input is complete and the application will process the |
| francis@395 | 15 | image data, unwrap the iris using polar co-ordinates and mask appropriate |
| francis@395 | 16 | regions of the unwrapped iris based on the auto-detection sequence or user |
| francis@395 | 17 | input. This information is then extracted using Gabor wavelet convolution |
| francis@395 | 18 | filters and the final output is a 2048-bit iris code containing phase |
| francis@395 | 19 | information of the valid iris pixel data. |
| Dragos@371 | 20 | |
| francis@395 | 21 | The iris code is stored in a local, new line delimited text database if unique |
| francis@395 | 22 | or the prototype reports that the code has already been located in the database |
| francis@395 | 23 | and a successful match dialog is given. |
| francis@318 | 24 | |
| francis@395 | 25 | \section{Auto Detection} |
| francis@318 | 26 | |
| Tom@375 | 27 | %\subsubsection{Pupil} |
| francis@318 | 28 | |
| francis@395 | 29 | Pupil detection in the application works to a very high degree of accuracy in |
| francis@395 | 30 | every seen case. The pupil has a fairly unique shade in comparison to the rest |
| francis@395 | 31 | of the eye and its surrounding area; this enables an intelligent threshold to |
| francis@395 | 32 | be carried out with information from the image histogram to isolate the pupil. |
| francis@395 | 33 | This, unfortunately, is not a property shared by the iris, making it significantly more |
| francis@395 | 34 | difficult to isolate than the pupil. |
| francis@318 | 35 | |
| Tom@375 | 36 | %\subsubsection{Iris} |
| Willy@331 | 37 | |
| Tom@375 | 38 | Currently the prototype makes an estimation of the location of the iris based on |
| francis@395 | 39 | concentricity (a potential source of error) with the pupil, and assumes |
| francis@354 | 40 | a detectable gradient ramp between the iris and the sclera. These complications |
| francis@354 | 41 | hamper the accuracy of our current estimates and produce a successful detection |
| Tom@375 | 42 | rate on the CASIA database of around 70\%, though potential improvements to this |
| Tom@375 | 43 | method are suggested in future work (\ref{furtherwork}). |
| Willy@343 | 44 | |
| Tom@375 | 45 | %\subsubsection{Eyelids} |
| francis@360 | 46 | |
| Tom@375 | 47 | The prototype manages to detect the top edge of the eyelids in the vast |
| francis@360 | 48 | majority of cases. With the small amount of padding added to accommodate the |
| Tom@375 | 49 | thickness of the top eyelid, it can be seen that, although not perfect, a very |
| Tom@375 | 50 | reasonable estimate of the eyelid boundary is found automatically. |
| francis@360 | 51 | |
| francis@393 | 52 | \chapter{Final Results} |
| Willy@343 | 53 | |
| francis@393 | 54 | With the batch command line option of the application, it is possible to |
| francis@393 | 55 | process a large amount of images of eyes. Using this option, 108 images of eyes |
| francis@395 | 56 | from the CASIA database were loaded into the application; the pupil, iris and eyelids were auto-detected to generate a bitcode and store it in the database. These were then compared to an alternative image of each eye |
| francis@393 | 57 | to check for matches. |
| francis@393 | 58 | |
| francis@393 | 59 | |
| francis@395 | 60 | To further test primarily for false matches, the first three images of each eye were |
| francis@393 | 61 | loaded into the database, and then compared to a fourth |
| francis@393 | 62 | image for each eye. As there were originally three images for each eye, and |
| francis@393 | 63 | then a comparison was performed on all of the extra 108 images, roughly 35,000 |
| francis@393 | 64 | iris comparisons took place ($(108 * 3) * 108$). |
| francis@393 | 65 | |
| francis@393 | 66 | Our results of these tests are as follows: \begin{itemize} \item 0 false |
| francis@395 | 67 | matches in $\sim$35,000 comparisons \item 70\% (75 out of 108) match rate |
| francis@395 | 68 | with Professor Daugman's suggested 0.32 Hamming distance. |
| francis@354 | 69 | \end{itemize} |
| Willy@343 | 70 | |
| francis@360 | 71 | The complete lack of any false matches and the incredibly high match rate are a |
| francis@393 | 72 | testament to the robustness and feasibility of an iris recognition system. The |
| francis@360 | 73 | tests have suggested that in virtually any case where the iris boundary is |
| francis@393 | 74 | correctly located, the iris should be correctly identified. |
| francis@356 | 75 | |
| francis@393 | 76 | As a roughly 70\% match rate was achieved for the iris location, this percentage has, as |
| francis@393 | 77 | predicted, been reflected in the overall match rate in the |
| francis@395 | 78 | database of images. Similarly to Daugman, we can also observe that the Hamming |
| francis@393 | 79 | distances produced by comparing different irides tends to follow a binomial distribution, with a mean around 0.46; see |
| francis@360 | 80 | figure \ref{hd}. |
| francis@354 | 81 | |
| Willy@363 | 82 | \begin{figure} |
| francis@356 | 83 | \centering |
| francis@356 | 84 | \includegraphics[width=0.55\textwidth]{hd} |
| francis@356 | 85 | \caption{The distribution of Hamming distances for one run of all the irides in the database} |
| francis@356 | 86 | \label{hd} |
| francis@356 | 87 | \end{figure} |
| Willy@343 | 88 | |
| francis@393 | 89 | \newpage |
| francis@393 | 90 | |
| francis@359 | 91 | \section{Source Code} |
| francis@393 | 92 | The source code is freely available under the GPL licence from \url{http://projectiris.co.uk}. |
| francis@359 | 93 | |
| francis@393 | 94 | \chapter{Future Work} |
| Tom@373 | 95 | \label{furtherwork} |
| Tom@375 | 96 | Throughout development the focus was on producing a functioning piece of software capable of |
| Tom@375 | 97 | fast, consistent and reliable iris recognition. There are other possible routes for extension |
| Tom@375 | 98 | and exploration within this project. There are alternative ideas for the format of the |
| Tom@375 | 99 | application and unexplored avenues within auto-detection techniques. |
| Willy@343 | 100 | |
| francis@393 | 101 | \section{Otsu Thresholding for Iris/Sclera Separation} |
| francis@359 | 102 | As we have seen before on average the iris has a lower intensity than the |
| francis@359 | 103 | sclera. Hence it could potentially be beneficial to explore the use of Otsu |
| francis@359 | 104 | thresholding for separation of the iris and sclera. Similar to the methods |
| francis@359 | 105 | implemented for eyelid detection, if we remove eyelids and pupil intensities |
| francis@359 | 106 | from the Otsu thresholding process then we obtain the image shown in figure |
| francis@359 | 107 | \ref{otsu-iris}. Although to the human eye this image looks to hold more |
| Willy@363 | 108 | information than the implemented technique (see figure \ref{iris-threshold}) |
| francis@359 | 109 | the image contains a large amount of noise and would require further filtering |
| francis@359 | 110 | and refinement to be useful. |
| Willy@343 | 111 | |
| Willy@363 | 112 | \begin{figure} |
| Willy@343 | 113 | \centering |
| Willy@343 | 114 | \includegraphics[width=0.35\textwidth]{anothereye} |
| Willy@343 | 115 | \hspace{1cm} |
| Willy@343 | 116 | \includegraphics[width=0.35\textwidth]{otsui} |
| Willy@343 | 117 | \caption{Image before and after an Otsu threshold.} |
| Willy@343 | 118 | \label{otsu-iris} |
| Willy@343 | 119 | \end{figure} |
| Willy@343 | 120 | |
| francis@359 | 121 | This would be the first recommended route for extension since, during the |
| francis@359 | 122 | testing phase, the software tended to fail recognition on images where it could |
| francis@359 | 123 | not adequately locate the iris. |
| Willy@344 | 124 | |
| francis@395 | 125 | \section{Eyelashes} |
| francis@359 | 126 | In some images eyelashes can obscure parts of the iris. Detection and removal |
| francis@359 | 127 | (marking as bad bits) of eyelashes could potentially improve the detection |
| francis@359 | 128 | rate. A method is given in \cite{min2009} for eyelash detection. The method |
| francis@359 | 129 | relies on two characteristics of eyelashes: firstly, that they have a relatively |
| francis@359 | 130 | low intensity compared to surrounding features, and secondly that the eyelash |
| francis@359 | 131 | regions have a large variation in intensity due to the thin shape of the |
| francis@359 | 132 | eyelashes (see figure \ref{justaneye}). The method uses these characteristics |
| francis@359 | 133 | by combining a standard-deviation filter and a thresholding technique. |
| Tom@329 | 134 | |
| Willy@363 | 135 | \begin{figure} |
| Tom@329 | 136 | \centering |
| Tom@329 | 137 | \includegraphics[width=0.35\textwidth]{justaneye} |
| Tom@329 | 138 | \caption{The eyelashes have a relatively low intensity and the eyelash region has high variation in intensity.} |
| Tom@329 | 139 | \label{justaneye} |
| Tom@329 | 140 | \end{figure} |
| Tom@329 | 141 | |
| francis@395 | 142 | \section{Eyelids} |
| francis@359 | 143 | The implementation of eyelid detection is based on the region obtained from the |
| francis@359 | 144 | thresholding technique, as we saw in figure \ref{otsu-eyelids}. The system |
| francis@359 | 145 | currently constructs a parabola from three points on the boundary of this |
| francis@359 | 146 | region. Accuracy in eyelid detection could potentially be improved by using the |
| francis@359 | 147 | Hough technique for parabolas. This again would allow more accurate marking of |
| francis@359 | 148 | non-iris regions and hence improve overall recognition rate. |
| francis@318 | 149 | |
| Willy@344 | 150 | %TODO:? \subsection{Gaussian Derivative Encodings} |
| francis@318 | 151 | |
| francis@395 | 152 | \section{Application Format} |
| francis@359 | 153 | Currently the system has a text file for storing iris encodings. This could be |
| francis@359 | 154 | improved to mirror a real-world application deployment by interfacing with a |
| francis@359 | 155 | database. Although due to the one-to-many searches involved with iris |
| francis@359 | 156 | recognition database querying could potentially become a bottle neck. |
| francis@318 | 157 | |
| francis@359 | 158 | Another area worth exploring is implementing the software with a client/server |
| francis@359 | 159 | architecture whereby the iris is encoded client side, and compared server side. |
| francis@359 | 160 | Again, this more accurately mirrors real-world deployment of an iris recognition |
| Willy@363 | 161 | software. This would then require further investigation into security and encryption methods |
| Willy@363 | 162 | for the system. |
| Willy@344 | 163 |