reports/final/content/method.tex

2010-03-19

author
francis
date
Fri Mar 19 09:09:52 2010 +0000
changeset 395
7f671b74a3a8
parent 392
0d5b1a284478
child 400
8ac89faccb3d
permissions
-rw-r--r--

Other stuff

Willy@94 1 \chapter{Methodology}
francis@395 2 To achieve automated iris recognition, there are three main tasks: first we must locate the iris in a given image. Secondly, it is necessary to encode the iris information into a format which is amenable to calculation and computation, for example a binary string. Finally, the data must be storable, to load and compare these encodings.
francis@318 3
Willy@330 4 \section{Iris Location}
francis@357 5 When locating the iris there are two potential options. The software could
francis@357 6 require the user to select points on the image, which is both reliable and
francis@357 7 fairly accurate, however it is also time consuming and implausible for any
francis@357 8 real-world application. The other option is for the software to auto-detect the
Dragos@381 9 iris within the image. This process is computationally complex and introduces a source of error due to the inherent complexities of computer vision. However, as the software will then require less user interaction it is a major step towards producing a system which is suitable for real-world deployment, and thus became a priority for extending the program specification.
francis@318 10
francis@357 11 Locating the iris is not a trivial task since its intensity is close to that of
francis@357 12 the sclera\footnote{The white part of the eye.} and is often obscured by
francis@357 13 eyelashes and eyelids. However the pupil, due to its regular size and uniform
Dragos@381 14 dark shade, is relatively easy to locate. The pupil and iris can be approximated as concentric and this provides a reliable entry point for autodetection.
francis@318 15
Tom@329 16 \subsection{Pupil}
Willy@333 17
Tom@374 18 The pupil's intensity and location are fairly consistent in most images and
Tom@374 19 so it lends itself well to auto-detection. Detection of the pupil can be
Tom@374 20 carried out by: removing noise by applying a median blur, thresholding the image
francis@357 21 to obtain the pupil, performing edge detection to obtain the pupil boundary and
francis@357 22 then identifying circles.
Willy@333 23
Dragos@381 24 A median filter is an kernel based, convolution filter which blurs an image by setting a pixel value to the median of itself with its neighbours. A na\"ive approach to applying a median filter would be to simply find the median for a given area around each
francis@357 25 pixel by sorting an array and finding the median to replace the current pixel
Tom@361 26 with. This could be implemented with a sorting algorithm which would have runtime
francis@357 27 $\mathcal{O}(n \log n)$ on average. However, since the software requires
francis@357 28 several median blurs on different images we require a more efficient solution.
francis@318 29
francis@364 30 For an improved algorithm we consult Perreault's paper \cite{median2007}, which
francis@357 31 describes an algorithm to create a median filter in linear time. The process
francis@357 32 (see algorithm \ref{medianfilteralgor}) involves constructing individual column
francis@357 33 histograms and combining them to form histograms centred around a pixel, known
francis@357 34 as a kernel histogram.
francis@318 35
francis@357 36 The significant speed increase comes from the way in which the column
francis@357 37 histograms are updated and combined. For each pixel we remove an old column
francis@357 38 histogram from the kernel, shift a new column histogram down one pixel so it is
francis@357 39 centred on the required row and then add this new histogram to the kernel
francis@357 40 histogram. While this radically reduces the number of operations which need to
francis@357 41 be performed for each pixel, there is an initialisation step for each row which
francis@357 42 has runtime linear in the size of the kernel histogram $ \mathcal{O}(r)$. This
francis@357 43 enabled the entire median filter to be applied in a matter of milliseconds.
francis@318 44
francis@318 45 \begin{algorithm}
francis@318 46 \caption{Median filtering algorithm as proposed in \cite{median2007}}
francis@318 47 \label{medianfilteralgor}
francis@318 48 \begin{algorithmic}
francis@318 49 \STATE \textbf{Input:} Image X of size $m \times n$, kernel radius $r$.
francis@318 50 \STATE \textbf{Output:} Image Y of size $m \times n$.
francis@318 51 \STATE Initalize each column histogram $h_0, \ldots, h_{n-1}$ as if centred on row $-1$.
francis@318 52 \FOR{$i=1$ to $m$}
francis@318 53 \STATE Shift the first $r$ column histograms $h_0, \ldots, h_{r-1}$ down 1 pixel.
francis@318 54 \STATE Combine these $r$ column histograms to form the kernel histogram $H$.
francis@318 55 \FOR{$j=1$ to $n$}
francis@318 56 \STATE Set pixel $Y_{i,j}$ equal to the median of $H$.
francis@318 57 \STATE Shift column histogram $h_{j+r}$ down 1 pixel.
francis@318 58 \STATE Remove column histogram $h_{j-r-1}$.
francis@318 59 \STATE Add column histogram $h_{j+r}$.
francis@318 60 \ENDFOR
francis@318 61 \ENDFOR
francis@318 62 \end{algorithmic}
francis@318 63 \end{algorithm}
francis@318 64
Willy@363 65 \begin{figure}
francis@318 66 \centering
Dragos@355 67 \includegraphics[width=0.35\textwidth]{pupil_step_1_start}
Dragos@355 68 \label{pupil_step_1_start}
Willy@326 69 \hspace{1cm}
Dragos@355 70 \includegraphics[width=0.35\textwidth]{pupil_step_2_median}
Willy@328 71 \caption{Image before and after a median filter.}
Dragos@362 72 \label{pupil_step_2_median}
francis@318 73 \end{figure}
francis@318 74
francis@357 75 The overall effect of the median blur is to reduce the noise and pixel
francis@357 76 intensity complexity of the iris image without perturbing the edge fidelity of
francis@357 77 the original image. This results in a stronger clustering of pixel values in
francis@357 78 the resultant pixel data histogram; this permits a largely noise-free, dynamic
francis@357 79 analysis of features which occupy discrete pixel ranges, such as the pupil (see
francis@357 80 figure \ref{example_histogram}).
Dragos@355 81
Willy@363 82 \begin{figure}
Dragos@355 83 \centering
Dragos@355 84 \includegraphics[width=0.35\textwidth]{example_histogram}
Dragos@362 85 \caption{Histogram generated in the application following a median blur of a database image. Note the distinct, left-most (darkest pixel values) peak as a typical pupil's pixel signature on the image.}
Dragos@355 86 \label{example_histogram}
Dragos@355 87 \end{figure}
Dragos@355 88
francis@357 89 Upon application of a dynamic threshold to our median blurred image the
francis@357 90 leftmost image in figure \ref{pupil_step_3_thresh} is obtained. The location of
francis@357 91 the pupil is well defined, and edge detection can extract this information to
francis@357 92 form a single bit depth image which can be searched for circles.
Willy@336 93
francis@357 94 The Sobel filter is an edge detection technique which calculates the gradients
francis@357 95 (in both the $x$ and $y$ direction) of the image intensity for each pixel and
francis@357 96 then combines them to give a gradient magnitude. This indicates how sharp the
francis@357 97 boundary is, which is itself an indication of whether an edge is present.
francis@318 98
Willy@363 99 \begin{figure}
francis@318 100 \centering
Dragos@355 101 \includegraphics[width=0.35\textwidth]{pupil_step_3_thresh}
Dragos@355 102 \label{pupil_step_3_thresh}
Willy@326 103 \hspace{1cm}
Dragos@355 104 \includegraphics[width=0.35\textwidth]{pupil_step_4_sobel}
Dragos@362 105 \caption{Thresholded image before and after edge detection with a 2D Sobel convolution filter.}
Dragos@355 106 \label{pupil_step_4_sobel}
francis@318 107 \end{figure}
francis@318 108
francis@357 109 As can be seen in \ref{pupil_step_4_sobel} the result of this process of
francis@357 110 filtering is a circular artifact denoting the extremeties of the pupil in the
francis@357 111 image. This data requires further analysis for the presence of circular
francis@357 112 artifacts to acquire a "best-fit" representation of the potentially elliptical
francis@357 113 pupil.
Willy@336 114
Willy@336 115 %TODO: make this not logbook styleeee
Willy@336 116 %TODO: make this focused towards pupils
francis@357 117 The Hough Transform is implemented to locate the pupil (and subsequently the
francis@357 118 iris). Given a regular curve -- in this case a circle -- and a suitable range
francis@357 119 of parameters -- $x$ centre, $y$ centre and radius -- the generalised Hough
francis@357 120 transform can query individual pixels in an image for their contribution to a
francis@357 121 globally consistent solution for any parameters within the valid range.
francis@318 122
francis@357 123 Due to the high computational complexity of the Hough transform technique (the
francis@357 124 parameter space for a simple circle is in three dimensions and depending on
francis@357 125 valid ranges this can quickly grow to millions of computations) and previous
francis@357 126 considerations for application performance, a number of elements were
francis@357 127 streamlined to accelerate the computation.
francis@346 128
francis@357 129 Thresholding the input image has the inherent benefit of changing the virtual
francis@395 130 bit-depth of the image to 1 (black or white). Furthermore, the implemented algorithm saves
francis@357 131 time by only operating on black pixels -- a greyscale implementation would
francis@357 132 significantly add to the processing time. Additionally a search on the
francis@357 133 threshold result (figure \ref{pupil_step_3_thresh}) gives confident parameter
francis@357 134 estimations for centre and radius which can be used to constrain and guide the
francis@357 135 Hough algorithm.
Dragos@355 136
Willy@363 137 \begin{figure}
Dragos@355 138 \centering
Dragos@355 139 \includegraphics[width=0.35\textwidth]{pupil_step_5_hough}
Dragos@362 140 % \label{pupil_step_5_hough}
Dragos@355 141 \hspace{1cm}
Dragos@355 142 \includegraphics[width=0.35\textwidth]{pupil_step_6_finish}
Dragos@362 143 \caption{Hough transform solution for a circle (red), given edge detected pupil image.}
Dragos@355 144 \label{pupil_step_6_finish}
Dragos@355 145 \end{figure}
Dragos@355 146
Dragos@362 147
francis@357 148 As can be seen in figure \ref{pupil_step_6_finish}, this process gives fast,
francis@357 149 accurate and reliable solutions for circular artefacts in the thresholded and
francis@357 150 edge detected pupil image. The basis of iris auto-detection relies on this
francis@357 151 process.
francis@318 152
Tom@329 153 \subsection{Iris}
Willy@338 154
francis@346 155 Once we have the location of the pupil clearly defined, the complexity of
francis@346 156 locating the iris is somewhat reduced due to the relative concentricity of the
Tom@373 157 pupil and iris.
francis@318 158
francis@354 159 In contrast to pupil detection, efficiently locating the iris is somewhat more
francis@354 160 complicated due to (i) the obstruction of the iris by the eyelids for most
francis@354 161 eyes, (ii) its irregular pattern and (iii) because of the relative similarity with the iris
francis@354 162 boundary and the sclera.
francis@354 163
Tom@366 164 Nevertheless, following a similar method to that of locating the pupil generally provides good results.
Tom@373 165 Again, a median filter is applied to the original image in order to remove noise from the image and to
Tom@373 166 strengthen the clustering in the pixel histogram. The resultant histogram is used to identify a point
Tom@373 167 that can be used to threshold the image to produce an image similar to figure \ref{iris-threshold}.
Tom@366 168
Tom@373 169 The method involves finding the peaks of the histogram (excluding the left-most peak that represents the pupil)
Tom@373 170 and choosing a treshold value between these points. Although not always optimum, this method generally creates
Tom@373 171 an image that the Hough Transform can use to find an approximate match for the iris; other, potentially better,
Tom@375 172 methods for achieving this threshold are discussed in the future work section (\ref{furtherwork}).
Tom@366 173
Willy@368 174 \begin{figure}
Tom@366 175 \centering
Tom@366 176 \includegraphics[width=0.4\textwidth]{iris-threshold}
Tom@392 177 \caption{ An example of an image that is obtained by intelligently thresholding the original input image and then using Sobel to edge detect.
Tom@392 178 This image represents the data that is used to locate the iris; the data is used by the Hough Transform to decide
Tom@392 179 on a best-fit circle to represent the location of the iris. A rough semi-circle can be made out by the human eye; this is what
Tom@392 180 allows the Hough Transform to accurately locate the iris. }
Tom@366 181 \label{iris-threshold}
Tom@366 182 \end{figure}
francis@354 183
Tom@373 184 The Hough transform is very efficient for the task of finding the iris from an image such
Tom@373 185 as this because it is resilient to noise
francis@346 186 and performs well even when a large amount of the circle is hidden. For
Tom@373 187 example, when two eyelids are covering a large portion of the iris, such
Tom@373 188 as in figure \ref{hough-eyelids}. This provides us with a circle that defines the iris, although
Tom@373 189 portions of this are still obscured by the eyelids, meaning that these also need to be defined.
francis@318 190
francis@354 191
Willy@363 192 \begin{figure}
francis@318 193 \centering
francis@318 194 \includegraphics[width=0.5\textwidth]{hough-eyelids}
Tom@373 195 \caption{ A demonstration of the results obtained by applying the Hough Transform to an image such as that in figure
Tom@373 196 \ref{iris-threshold}. The chosen circle is shown in red, which is an average of all of the circles with the
Tom@373 197 maximum number of votes (in green). The blue circles represent those with the second most votes.}
Willy@328 198 \label{hough-eyelids}
francis@318 199 \end{figure}
francis@318 200
Willy@339 201
Tom@329 202 \subsection{Eyelids}
francis@354 203 We note that an image of an eye roughly has three intensities, from darkest to
francis@354 204 lightest: pupil, iris and sclera, and eyelids. Hence a suitable thresholding
francis@354 205 method should be able to separate the eyelids from the rest of the image. Otsu
francis@354 206 gives a method in \cite{otsu1975} for appropriately thresholding grey level
francis@354 207 images; the algorithm works as follows.
francis@318 208
francis@354 209 Assume we have an image with $L$ possible intensities for each pixel and $n_i$
francis@354 210 is the number of pixels of intensity $i$. We first normalize the histogram into
francis@354 211 a probability distribution, that is $p_i = n_i / \sum_{i=1}^{L} n_i$. We assume
francis@354 212 that we threshold the image at level $k$ into two classes, $C_0$ containing
francis@354 213 levels less than or equal to $k$ and $C_1$ containing the rest. We then define
Willy@367 214 $$\omega(k) := \sum_{i=1}^{k} p_i \text{ and } \mu(k) := \sum_{i=1}^{k} ip_i,$$
Willy@336 215 which are the probability of a pixel picked at random being in $C_0$ and the expected (mean) intensity for $C_0$ respectively.
Willy@321 216
francis@322 217 It is clear to see that that $1-\omega(k)$ is the probability of a pixel being in $C_1$ and $\mu(L)$ is the mean intensity of the entire image. We then calculate
Willy@338 218 $$\sigma^2 = \frac{\left[\mu(L)\omega(k) - \mu(k)\right]^2}{\omega(k)[1 - \omega(k)},$$
Willy@341 219 which is shown to be measure of the variance between the two classes $C_0$ and $C_1$ by Otsu in \cite{otsu1975}. We calculate this between-class variance for each $k$ and finally threshold on the $k$ where $\sigma^2$ maximized.
Willy@341 220
francis@354 221 To get any useful information from Otsu thresholding we must first ignore the
francis@354 222 pupil to ensure that the result does not only consist of two classes (the pupil
francis@354 223 and then everything else).
francis@354 224 Once we have ignored the pupil in class calculations we find that Otsu thresholding
francis@354 225 gives us two classes: one containing the iris, sclera and the pupil (since it
francis@354 226 has lowest intensity), and the other class containing the eyelids, see figure
francis@354 227 \ref{otsu-eyelids}.
Tom@377 228 With the iris located within the image we must now begin the task of extracting information from it.
francis@318 229
Willy@363 230 \begin{figure}
Willy@320 231 \centering
Willy@320 232 \includegraphics[width=0.35\textwidth]{anothereye}
Willy@326 233 \hspace{1cm}
Willy@320 234 \includegraphics[width=0.35\textwidth]{otsue}
Willy@338 235 \caption{Image before and after a median blur and Otsu threshold.}
Willy@320 236 \label{otsu-eyelids}
Willy@320 237 \end{figure}
Willy@120 238
Willy@338 239
Tom@329 240 \section{Encoding the Iris}
Tom@329 241 %TODO: Reasons for unwrapping the iris for the filters. Polar coords.
mike@340 242
francis@372 243 The iris is encoded to a unique set of 2048 bits which serve as the fundamental
francis@383 244 identification of that person's particular iris. These iris bit codes can be
francis@372 245 stored in a database and then compared to uniquely identify a person. The size
francis@372 246 of 2048 is sufficiently large to store the data of several particular filters
francis@372 247 on most angles of the iris, while also being sufficiently small to be easily
francis@383 248 stored in a database and manipulated quickly. We wish to extract phase
francis@383 249 information from the iris as opposed to amplitude information since phase
francis@383 250 information is not skewed by pupil deformation. We use Gabor filters to extract
Tom@385 251 this phase information as suggested by Daugman \cite{daugman2004}.
francis@372 252
francis@372 253 %One of the main problems with this kind of approach is the way in which we
francis@372 254 %target the iris boundary in order for it to be
francis@354 255
francis@354 256 The Gabor filter is an application of the Gabor wavelet (see equation
francis@354 257 \ref{gaborEquation}) \cite{daugman2004}. This will return two bits depending on
francis@354 258 which quadrant (see figure \ref{quadrants}) the normalised resulting imaginary
francis@354 259 number from this lies in. This equation can be simplified for computation by
francis@354 260 considering it as a combination of two filters: one filter representing the
francis@354 261 real part of the integral and the other representing the imaginary part. Each
francis@376 262 of these filters consist of a combination of a Gaussian and a sinusoidal
francis@354 263 filter (see figure \ref{gabor-combo}). The parameters $\alpha$, $\beta$ and
francis@354 264 $\omega$ are then tuned by constraining the Gaussian filter to range over one
francis@354 265 standard deviation and the sinusoidal filter to range from $-\pi$ to $\pi$.
Willy@191 266
francis@318 267 \begin{equation}
francis@318 268 \label{gaborEquation}
mike@342 269 h_{\{Re,Im\}} = sgn_{\{Re,Im\}}\int _{\rho} \int _{\phi} I(\rho, \phi) e^{-i\omega(\theta _{0} - \phi)} e^{-(r_{0}-\rho)^{2}/\alpha^{2}} e^{-(\theta_{0}-\phi)^{2}/\beta^{2}} \rho d\rho d\phi
francis@318 270 \end{equation}
Willy@191 271
Willy@363 272 \begin{figure}
mike@342 273 \centering
mike@342 274 \includegraphics[width=0.35\textwidth]{quadrants}
mike@342 275 \caption{The four phase quadrants and the corresponding bit sequences they represent}
mike@342 276 \label{quadrants}
mike@342 277 \end{figure}
mike@342 278
Willy@363 279 \begin{figure}
francis@318 280 \centering
francis@318 281 \includegraphics[width=0.8\textwidth]{gabor-combo}
Willy@336 282 \caption{The real (left) and imaginary (right) parts of the Gabor wavelets}
francis@318 283 \label{gabor-combo}
francis@318 284 \end{figure}
francis@318 285
francis@376 286 %\subsection{Heatmaps}
francis@376 287 %A heatmap is created by applying a fixed size Gabor filter to every pixel in an
francis@376 288 %unwrapped iris. Then the 2 bit code for each pixel is represented as a colour
francis@376 289 %on the heatmap. By doing this we were able to see clearly which size filters
francis@376 290 %would give us the most informative data when doing comparisons. As shown by
francis@376 291 %figure \ref{heatmaps}, smaller filters produce a largely varying heatmap, and
francis@376 292 %much larger filters give significantly less useful information for comparisons.
francis@376 293 %We will therefore try to use small filters across the area closest to the pupil
francis@376 294 %to capture the large amount of detail seen here. We will then increase the
francis@376 295 %sizes of filters further out in the iris to make sure that we cover a
francis@376 296 %sufficient proportion of the iris in our comparisons, but will try to balance
francis@376 297 %this so that we don't use uninformative filters as in figure \ref{heatmaps}
francis@318 298
mike@324 299 \subsection{Filter Placement and Size}
francis@376 300 The Gabor filters need to be placed so that they take account for a large
francis@376 301 enough range of data without missing out the fine detail within the iris. As we
francis@376 302 require 2 bits to uniquely identify each quadrature, we have the additional
francis@376 303 constraint that 1024 filters must be used, allowing a manageable bit code
francis@376 304 length of 256B for each iris which can be split into sections of 4B. To
francis@376 305 simplify the calculations involved in applying the filters to the unwrapped iris they
francis@376 306 can also be considered to all be placed at a uniform rotation of 0. Since it
francis@376 307 can be observed that there is consistent amounts of information at points
francis@376 308 varying in the angular direction in the iris, it is also a good idea to place
francis@376 309 the filters uniformly in this direction. In this implementation 256 angular
francis@376 310 directions were considered because it divides our
francis@376 311 required number of filters evenly and includes a large spread of data across
francis@376 312 the iris. However, in many cases, in the radial direction there is more
francis@372 313 distinct information observed closer to the pupil.
mike@323 314
francis@372 315 To include the more important data close to the pupil the filters can be
francis@372 316 positioned so that a larger proportion of them have their centres in this
francis@372 317 range. With the 256 angular directions there are 4 radial filter locations left
francis@372 318 to position. These can be placed uniformly between the bottom of the iris and
francis@376 319 half-way across the iris to allow the data around the pupil to be explored.
francis@372 320 Finally, to make sure that filters are always large enough to represent enough
francis@372 321 data, the constraint that a filter centre cannot be placed on the 3 pixels
francis@372 322 nearest the top and bottom of the image is added. This means that useless
francis@376 323 filters of sizes 1 and 3 will never be included when encoding the iris, and we
francis@376 324 avoid including additional pupil debris that may have been incorporated into
francis@376 325 the iris section. The final set of filter locations across an unwrapped iris is
francis@376 326 represented in figure \ref{filterpos}.
mike@323 327
francis@376 328 \begin{figure}[h!]
mike@325 329 \centering
mike@325 330 \includegraphics[width=0.8\textwidth]{filterpos}
mike@340 331 \caption{Filter positions for an iris of radius 40 between $\theta$=0 and $\theta$=45 }
mike@325 332 \label{filterpos}
mike@325 333 \end{figure}
mike@323 334
francis@372 335 The final consideration with the filters is their size. Two schemes for doing
francis@372 336 this are demonstrated in figure \ref{filter-size}. The first (left) aims to
francis@372 337 position the largest possible filter at every filter location. This means that
francis@372 338 the filters fulfil one of the original requirements; that the filters should
francis@372 339 capture as much information as they can. The issue which this scheme suffers
francis@372 340 from is that the filters with their centres in the middle of the iris can be so
francis@372 341 large that they aren't really able to represent some of the finer detail in the
francis@376 342 image. The second scheme (right) tackles this problem
francis@372 343 by capping all filters in the image at a maximum size. This maximum size can be
francis@372 344 tuned in the implementation to get more distinct bitcodes, which is why it is
francis@376 345 favourable and consequently the one we use.
Willy@363 346 \begin{figure}
mike@342 347 \centering
mike@342 348 \includegraphics[width=0.9\textwidth]{filter-size}
mike@342 349 \caption{Two schemes for filter sizes and placements at a fixed point in the angular direction in an iris of radius 40. Left: maximum size filter placed. Right: filter sizes capped at 25}
mike@342 350 \label{filter-size}
mike@342 351 \end{figure}
mike@324 352
Tom@329 353 \section{Comparisons}
Tom@374 354 Iris encodings can be compared by computing a Hamming distance between them.
Tom@374 355 The Hamming distance between two iris codes is calculated as given in \cite{daugman2004}.
Tom@374 356 Assume we have two iris codes, $codeA$ and $codeB$, with corresponding bit masks,
Tom@374 357 $maskA$ and $maskB$ (where a 0 in the bit mask corresponds to a bad bit in that position
Tom@374 358 in the iris code). Then we calculate the hamming distance $H$ as:
francis@318 359
francis@318 360 $$H = \frac{\|(codeA \otimes codeB) \cap maskA \cap maskB\|}{\|maskA \cap maskB\|}. $$
francis@318 361
francis@318 362 Where $\otimes$ is the bitwise XOR operator and $\cap$ is the bitwise AND operator.
francis@318 363
Tom@382 364 We can see that the numerator will be the number of differences between the
francis@354 365 mutually non-bad bits of $codeA$ and $codeB$ and that the denominator will be
francis@354 366 the number of mutually non-bad bits. However an astute reader may observe that
Tom@382 367 this measure can fail if there is an exceedingly low number of mutually non-bad bits
Tom@382 368 causing the numerator to be zero even though there may actually be large differences
Tom@382 369 between $codeA$ and $codeB$. However, this is a simple case to handle and will rarely
Tom@382 370 occur when comparing iris images.
francis@318 371
Tom@374 372 This comparison is performed for various shifts in the codes to check for
francis@354 373 rotation of the image, as it is very possible that a subject's eye in the image
francis@354 374 is rotated if the camera or their head is tilted slightly.
francis@318 375
francis@378 376 This statistical independence test is the key to iris recognition. It provides
francis@378 377 sufficiently many degrees-of-freedom to fail in every case where the iris
francis@378 378 bitcodes of two different eyes are compared, but uniquely passed when the same
francis@378 379 iris is compared with itself.
francis@378 380
Tom@329 381 \subsection{Iris Database}
francis@358 382 Since we are able to generate the code and the iris mask directly, these are
francis@358 383 the only two items that are required to be stored in a database, the image
francis@358 384 bitmaps themselves are no longer required.
francis@318 385
francis@358 386 We are currently using a basic text file as our database as this was simple to
francis@358 387 implement and for the small number of eyes we have as test subjects this is
francis@358 388 perfectly adequate and proves to be able to compare iris bitcodes extremely
francis@358 389 fast.
Tom@329 390
Tom@329 391 \section{Graphical User Interface}
francis@358 392 Since the software was built in Qt, a cross-platform toolkit, the final product
francis@358 393 runs on Linux, Windows, and Mac desktops, adopting the operating system's
francis@358 394 native toolkit and giving it an integrated feel on all platforms.
Tom@329 395
Willy@363 396 \begin{figure}
francis@318 397 \centering
Tom@329 398 \includegraphics[width=0.8\textwidth]{kde}
Tom@329 399 \caption{Linux with Open File view.}
Tom@329 400 \end{figure}
Willy@363 401 \begin{figure}
Tom@329 402 \centering
Tom@329 403 \includegraphics[width=0.45\textwidth]{windows}
Tom@329 404 \includegraphics[width=0.45\textwidth]{mac}
Tom@329 405 \caption{Windows and Mac OS X.}
francis@318 406 \end{figure}
Willy@120 407
Tom@329 408
francis@358 409 Usability is an important consideration when creating an application, and
francis@358 410 throughout development the aim was to provide a clean and intuitive interface
francis@358 411 whilst still providing full usability and advanced features. The key
francis@358 412 intellectual challenges for the user interface have been primarily to provide a
francis@358 413 straight-forward and informative access point for the user, but also to provide
francis@358 414 relevant extra data when required with a fall-back mechanism for difficulties
francis@358 415 in auto-detection.
Tom@329 416
Willy@363 417 \begin{figure}
Tom@329 418 \centering
Tom@329 419 \includegraphics[width=0.5\textwidth]{heatmapapp}
Tom@329 420 \caption{Application with heatmap tab.}
Tom@329 421 \end{figure}
Tom@329 422
francis@358 423 The final product includes relevant data and feedback behaviour such as
francis@358 424 histogram information from the image to allow the advanced user to track-down
francis@358 425 and diagnose auto-detection failures. This information is placed into a tabbed
francis@358 426 interface below the primary image so that it is easily accessible without
francis@358 427 encroaching on our clean interface which allows the average user
francis@358 428 point-and-click refinement (if necessary) of the iris parameters with real-time
francis@358 429 visual feedback without overloading them with this more advanced information.

mercurial