Student sitting on the ground with electronics

Chris Anderson

A Graph Theory Based Fingerprint Matching System

The Scholar: Chris Anderson

The Project: A Graph Theory Based Fingerprint Matching System 

The Essential Question: I researched existing fingerprint identification methods and created a brand new matching system based on graph theory. This included hooking physical fingerprint sensors to my laptop through an Arduino set up, coding a transcription and storage system using Python, and then matching fingerprints with my own algorithm. The reduction and matching algorithm were my main focuses of the project.

Surprising Discovery: One surprising discovery I had was when I was still doing background research. When I was looking into existing fingerprinting methods and templates, I found out that there was no standard for fingerprinting methods or technologies. There are many types of fingerprint details, though, (but even this is not agreed upon universally). For example, a bifurcation where a ridge splits into two, or an enclosure, which is when a ridge splits into two then merges back together. One expert may decide that 20 identical details qualify for a fingerprint match, whereas another expert may only require 6 details—it just depends on who’s looking at the fingerprints. Moreover, fingerprint details themselves do not have a standard definition and, on top of that, we have almost no statistical analysis or the frequency of different types of these details, or specific scientific explanation for how they form. Just to top all of that off, our fingerprinting algorithms (at least in Western legal justice systems, which is where I could find the most data on) haven’t really changed in the past 40 years. Of course, this isn’t a massive problem, since biometric security systems still work; However, it is enough of a problem that there have been a few cases of fingerprint mix-up. Also, our standards of technology is rapidly increasing while our fingerprinting methods are not. It was very surprising to me that we have put so little effort into something that is the backbone of so many of our modern security and legal systems.

Biggest Challenge: I decided to create my own script that would download the fingerprint images from the fingerprint sensor, process those images, extract fingerprint details, store that fingerprint as a graphical representation of its details, then feed it into a database where it can be used to match with other fingerprints. I could have theoretically coded all this on my own, but that would’ve taken forever, so I decided to use preexisting python libraries. The problem was, I could only use completely open-source (specifically MIT licensed) libraries for this, because it is illegal to just copy someone else’s code, modify it, and present it in your project, unless they give explicit permission. This meant that there wasn’t a lot of libraries I could choose from, since the vast majority of public code is not under the MIT open source license. This caused a lot of compatibility issues between different libraries. Ultimately, the coding part of the project was unfinished because of this, but the whole process made me learn a lot about dealing with code libraries.

Tip for future scholars: Manage! Your! Time! And, also, set realistic goals. You’re not going to create AGI or discover the theory of everything within the span of 10 weeks. You’re most likely going to end up with something messily done and you’re half-satisfied with, but that’s all part of the fun.