
5/2021 - 7/2021
Perceptual Trainer


Engine/Software
Languages
Roles
Notable Features Worked On
: Unity2D
: C#
: Graduation Thesis Research
: Saving/Reading Data, Gamification, UI, Automated Grading
About
Perceptual Trainer was the product of my graduation research and thesis on using serious games or gamification and digital technology to help train fingerprint experts. My solution, Perceptual Trainer, utilises gamification to train complete beginners on the fundamentals of fingerprint examination with a focus on perceptual expertise rather than on theoretical work.
Perceptual Trainer offers a digitised practical coursework to learners focusing on identifying fingerprint patterns and features that provide the foundation to working with ACE-V. Gamification is utilised to help engage learners and improve the learning process by implementing features such as a score system, achievements, and difficulty levels.
The fingerprint database used by Perceptual Trainer was hand-selected from the NIST Special Database 300. Due to the legality of using this database, a build cannot be shared as the images used can be potentially extracted from the build.


Exercises
The core feature of Perceptual Trainer are the exercises provided within the application. These exercises task the learner with identifying the various features on a random fingerprint. This can be identifying what pattern they are, identifying where the core or delta is, if any, and to identify as many minutiae as possible on a print. Exercises also have multiple difficulties (Beginner, Intermediate, Expert) that the learner can choose to complete if they wish, ensuring that they do not get overwhelmed the first time they have to do the exercises.


Developer Tool
Grading is done by comparing the user's answers against an answer sheet where the pattern is already classified, the core or delta are already marked out, or the minutiae of a print are already marked out. A developer tool was made to easily create these answer sheets. The data of each fingerprint image is stored as a json with the same name as the image. From this, the dev tool can read every image and check if it has a json, and if it does, what features of it have been marked out or are missing, and display it to the user. Within the dev tool, the user can classify the pattern type, mark out all the core, delta, and minutiae, check if the print is usable for core and delta exercises in case it does not have any but still want it to be tested (testing if the learner can tell if the print has no core or delta), and set the scale of every marked details to the correct size (roughly the size of a ridge on the fingerprint). All these data is then saved into a json file that can be easily read later on.


Automated Grading
Grading the fingerprint print pattern is simple by just comparing the selection the learner made against what was saved in the json. In this case, I had to condense the exact fingerprint patterns into just the 3 basic patterns (loop, whorl, arch) and have it be matched.
Grading the core and delta is more complicated; I had to match every detail against an answer sheet, then check how close the learner marked it against the answer sheet. If it is too far, they score no points. If it is close enough, they automatically score full points. Otherwise, it calculates how much the learner should earn for their marking. This margin of error can be set in the editor, which can be used to set the difficulty of the exercise.
Grading the minutiae is also complicated as it requires connecting every of the learner's answers to the closest possible match, otherwise, answers may be matched incorrectly and inaccurately. To do so, I first matched every answer within a certain radius around the answered detail to that answered detail, and ordered them according to the distance using LINQ. After that, I loop through every answered detail and matched it with the answer with the closest distance, removing that answer from every ordered list of every answered detail. This ensured that only the closest answers are matched regardless of the order they were checked in the list.
Exercises can be edited from the inspector on the right, allowing the developer to set exactly what is tested (using flags), the margin of error of the tests, and the number of questions.
