August 24th - First Day of Senior Seminar. I found out the particulars of what was expected and began thinking about projects that I might like to pursue.
August 27th - Looked at some possible project ideas. I have always wanted to know more about Flash. I have looked at some webpages about Flash to see if there is anything project that I could buid a project out of.
August 28th - I thought of some other project ideas during class today. Some ideas that came to me include researching how online movies are made or looking into computer modeling of natural systems (weather, population, currents etc...). My concern at the moment is that there are many applications I would like to look at and I am wondering if there is any theoretical, technical etc.. aspects that I would like to look at.
August 29th - I looked through the website of Savannah College of Art and Design. They have a Computer Art Progaram that might give me some ideas for projects. There was a brief section on the theory and critcism of computer art and programming as might be useful to a computer graphics specialist.
After serveral more hours at the computer I found information on graphical computer simulation that looks interesting. Most of what I found used VTK. I also found some interesting research at Brown University on bettering animation for a variety of purposes. I also keep running across neat animation in flash that is exciting. Flash Challenge was particualarly noteworthy. Thus at the moment, my main areas of interest seem to be computer Simulation and Modeling, Animation and Using Flash on the web. The possiblilities seem endless.
September 1 - I spoke with Jim about some of my ideas for the projects and it sees like anything goes. Since he doesn't forsee any glaring problems I think that I am going to go ahead with an animation project of some sort.
September 3 - Well, I have come up with several problems that I will need to resolve before going ahead with an animation project. First, I will also have to find software. I know that the school has photoshop but I do not know what else there is. Macromedia gives a 30 day trial of Flash, but I will need something a bit longer. I'll check with others and the art department to see what I can find. I will also need a place to put aforementioned software once it is found
I did a little more internet research and found a few books in the Library on computer graphics, VRML and doing geometry with computers. I also found the bibliographical information on serveral articles that I am going to try to locate.
Even later in the evening I came up with some project ideas that seemed doable. My first idea is to do a project on dynamic animations, ones that follow a mouse or user input. The other is to look into animation of human forms and algorthms necessary to make them look and move realistically. Both topics seem reasonable to me, but I am leaning more towards reseaching the first topic.
September 5 - I spoke with Charlie today about where to go with my project and he gave me several project ideas that I had not previously considered. so in a complete about face, I think that I am going to work on a project on fingerprint recognition. Charlie has the hardware that I would need and some preliminary work was done last year by Alex Reeder. It sounded like a fun project and one in which I would have some sort of goal so I think I will try it.
September 7 - I spent some time in the computer lab looking at Alex's notes and code. It looks like I am going to have to do a lot of research into biometrics before I understand what is going on. Basically, I plan to do is write a piece of software that gets input from a fingerprint scanner, allowing people access if they are in a database of fingerprints. Of course there would have to be some method of adding people to that database. I am going to have to learn what interface there is between the scanner and the computer. Then design a database that would hold the necessary information. I also need a way to efficiently search through that database to figure out if a person has access or not.
September 11 - I did a little more research into the nature of the problem this morning. I reread Alex's information and looked at his code as well and some of the journal articles listed on his page. Then in class I presented the new topic and what I had found out thus far. During that class Charlie left a note on the window asking for me to see him after class. It was at this time that I was informed that my interpretation of the problem was wrong. I was assuming that I would use that hardware he had presented me with to build a database of figureprints from which I would develop algorithms that would sort through them and match the finger prints. I learned however that Charlie thinks there is no driver for that piece of hardare that I am trying to use and that one will have to be written. Thus this is were my project is going to have to begin (I will look to be sure).
I was introduced to Superchuck, the machine that I am going to have to work on as it is the only one with the correct port for the fingerprint scanner. I moved the computer and got in connected to the cs subnet. I also got the harware, a FingerTip scanner from Infineon. Next I am going to recompile the Kernal if that was not done last year, so that it is compadible with the hardare.
My new course of action involves writing to both Alex and Cam to see what they have found out in their research last year. Then I will have to learn about how one goes about writing a driver.
September 12 - I wrote to both Cam and Alex tonight to see if they know what version of the kernal I will need. I also found Cam's website and purused through it. There is a draft of his paper and some PDF files about the hardware that I will be using
September 13 - I began to look at some of the documentation I found on Cam's website. There are the PDF files from Infineon about the scanner. There are newer versions of the files at the Infineon website that I have not looked into carefully. I have read some we information from RedHat on how to write a driver.
September 14 - I spent a few hours trying to find the correct kernal with EPP support in order to use the fingerprint scanner. Thus far I have not found anything really useful. So then I spent some time looking in the online databases to find information on drivers and fingerprint recognition. Still not much luck.
September 15 - I spoke with Jim about possibilities for the project and he came up with several useful suggestions. One thought was to look for fingerprint databases that I could access to use to write the fingerprint matching software, instead of waiting to be able to collect my own. With FBI and other government research into biometrics some information should be readily avaliable. A lot of research has been put into the subject so I should be able to find journal articles and other resources.
September 16 - I found a couple of databases of scanned fingerprints from NIST. I also found that there is a Data Format for the Interchange of Fingerprint, Facial, and Scar Mark and Tattoo (SMT) Information (NIST ITL 1) and the For Information Systems - Data Format for the Interchange of Fingerprint information (NIST CSL 1) But I have to order and buy them so I do not have them in hand. I am trying to find a summery in a journal somewhere. As of yet, I have not found eletronic copies of the information. I also looked at various papers about different fingerprint matching algorithms
September 18 - I did some general searching doe information about fingerpront recognition. I found a couple of articles using the Earlham library searches that I am in the process of reading
September 20 - I found the format of the fingerprint data returned form the scanner and a database of images that match that format. The images are from NIST The database costs $150 dollars, however there are some samples that can be downloaded for free.
September 22 - I used some of the databases to find some relevent journal articles. Corrine will hopefully be able to find the ones that I cannot get here from Bloomington tomorrow. I also came up with some ideas for the organization of my presentation
September 24 - Corrine was not able to find the articles in Bloomington, so I have filled out the forms to get them over interlibrary loan. Corrine thinks that we might be able to find the journals I need at IUPUI so we might try there later.
September 26 - I have written back to Alex and asked him a new set of questions about his code and ppdev (which was used to write the driver for the scanner last year). I also asked if he knew where Cam and his code and infomation about ppdev from last year where. Hten I wrote to the people who make the scanner to request a driver again.
I read through Alex's paper once again and did a more careful reading of some of the pages he linked to. I began collecting notes for my presentation and have worked on a very basic outline.
September 27 - I worked on expanding the outline I began yesterday. I have continued to look for resources that I can access here in Richmond while I await a trip to a larger library. I got a draft proposal of the Data Format for the Interchange of Fingerprint, Facial, and Scar Mark and Tattoo (SMT) Information (NIST ITL 1) and some articles listed on the NIST site. However, as I have not been able to open the files yet to see if the articles contain anything useful. I also wrote to Charlie about getting Cam's information on ppdev.
September 28 - I got the articles form NIST opened. They are both evaluations of different fingerprint classifiers. I have begun to read through some of them. I also brushed up on my understanding of Neural networks and genetic algorithms.
September 29th - I spoke to Jim about my presentation that is coming up on Thursday. I also did another look through Cam's directory and found his code!!! I am really excited about this. However his code notes that 'It is not completely functional, as there are still some issues with ppdev and EPP mode that need to be worked out.' At the I think that I know that one of the problems has to do with the Kernel version. Hopefully there will not be too many other problems
September 30 - Cam wrote back with some suggestions and a promise to look for some of his notes. I read some more of the articles I found in preperation for my presentation
October 1 - I went with Ben to IUPUI and got all but one of the articles on my list. I have started reading through some of them and organizing my notes
October 3 - More reading... I spoke with Charlie about what direction I should take and what some of the problems last year's group ran into. He suggested either doing a lot of research on one type of matching proceedure and trying to implement it or trying to come up with an original method. At them moment I think I will try to build a hybrid algorithm using some of what I have found in the articles and some of my own ideas. I am finding that there are numerous ways that fingerprint matching has been tried and that there are many different steps. I might use steps from several proceedures and see if I can come up with a comparable fingerprint matcher. I have also found that there is a difference between using the fingerprints to identify someone and using them as verification (like a password). I am not sure which one I plan to try, but it seems to be more of a database and user interface concern. As I am mainly focusing on matching algorithms I can decide that later, or see if my algorithm performce better in one situation or the other.
October 4 - I am continuing to read and organize my presentation. I have added some meat to my outline and have brushed up on some of the areas where I felt unsure
October 7 - I fiddled with Superchunk a little. The Kernel on there is not one that supports ppdev automatically, however I have not been able to find out is the correct patch is there. I did a little research on Pattern recognition to see if there was anything that would illuminate the problem from that angle.
I also wrote to the biometrics department at MSU to see if they had any suggestions and resources that I could use in order to build a fingerprint recognition system
October 9 - I found a few more articles that I have downloaded and plan to take with me on break. I am still looking for an algorithm that seems reasonable for me to try to code. Andrew helped me download the correct version of the Kernal. We still have some configuration to do, but it has been started and I plan to continue on that when I get back to Earlham on Monday
October 16 - I spent some time rereading some articles. While I get the gist of what is going on, I still have no idea how I am going to program any of this. I am trying to find some code so that I can elimitate some of the steps and focus on matchig algorithms. Thus I am looking for good ways to thin and optimize the prints
October 17 - I did a little more research and looked at some pictures of fingerprints in an attempt to come up with an algorithm that I can understand well enough to make work. I came up with one solution that relies on minutiae matching and ridge counts. it seems pretty simplistic. I think that it would work for verification, but would be too slow for much else. I'll see what else I can think up over the next few days and decide on a reasonable method. I am still pondering some of the math in the articles I have read to see if I can gain any more insite from them.
I have found a source for some free code for optimizing and classifying fingerprints from NIST at Public Domain PCASYS. Unfortunatly, they have to mail it to you and only accept snail mailed or faxed requests. I'll get on that and try to find some other sources as well.
Ocober 19 - I found a website for a course that was held last summer that dealt with Fingerprint Analysis called UCI's Information and Computer Science COSMOS course for Summer 2000 There was some useful inforamtion there including some good links and the basic outline of the routines that they used. I emailed Eammon Keogh, one of the lecturers for the course, to see if I could get any useful infomation and advice from what what he observed in the class.
October 20 - I heard back form Eammon Keogh who said that he is willing to help me with my project as along as I respect the copyright of the work that he sends me and give him a copy of my final report. He would also like for me to evaluate his materials. After I agreeded to these terms he sent me two programs that created simulated fingerprints and some documents that he had created on fingerprint recognition. These works were a great addition to what I had been reading as it explained some of the mathmatical formulae and algorithms that the journal articles just breezed through. The simulators were a lot of fun to play with. One of them I had found previously, but had not really begun to use. They both create bitmap images of fingerprints. This is not exactly what the scanner would return. But I think that the images produced look more like those that would be used in a minutiae detection and matching program once the original scanned image has been thinned and cleaned up a bit.
October 21 - I heard from Eammon Keogh again today. He had some suggestions about how to go about the minutiae matching. He suggested using an algorithm that he calls 'Nearest Neighbor' in which one matches the minutiae in the print with the nearest minutiae in the stored print (after rotation and translation have been done). The distance between the matched points is what one uses to calculate the amount of difference between the prints and decide if there is a match or not. Using the information he has sent I am beginning to formulate a plan for developing my code.
October 22 - I worked for a little while on my plan and started writing a few snippets of code that I will need for the project. I have found that I will need to have a number of mathematical functions and I am trying to see if I can find someone elses code for some of them. Thus I will not have to spend the time building it, getting it wrong and then trying to debug it.
October 24 - I spent some time working on the draft of my paper. I have been mainly going through my note and organizing what I have found thus far. I have also done a little more work on my code. I still have a lot of work to do before it can withstand differences in scale, translation and rotation. I also spent an hour finishing up the installation of the correct kernal with Andrew. I need to get the driver code onto Superchunk and then I should be able see if the scanner will be of any use.
October 25 - I worked on the code for the minutiae matching algorithm. I have all of it written and running. I have to do some of the math by had to make sure that it is spitting out reasonable numbers. Basically what the code does is find the distance between the two sets of points (the points are where the minutiae are located). It sums the distances between each point and it nearest neighbor in the print it is being compared with. The function then returns that sum. I have decide that thinning and binarizing the images would not be a bad idea as it eases the search for the minutiae so I am looking for good ways to do both of these things
October 26 - I spent some time looking for possible fingerprint image thinning algorithms. I found one created by students working on a class project. I haven't found a way to read their documentation, but I am working on that. I would like to find out what their methods where and how well their code worked. I have also been working on the plan and paper today.
October 28 - I did some more work on the paper today. Eammon Keogh sent me a link to a pretty good search for journal articles at ReasearchIndex. Thus fa it has been prett helpful. Most of the articles are online or downloadable. I have been using the infom,ation there to hammer down some of the details of thinning and binarisation of the images. Once I have that information I can probably finish the plan and much of the paper. I also did some checking to be sure that my matching algorithm was giving me reasonable results. From what I can tell it is doing okay. I will be able to tell more when I have some actual data to test it on.
October 29 - I looked around for some more information and wrote a tad bit more of the paper.
October 30 - I took a lot of time looking for good image thinning algorithms. Thus far, I have not found one that will produce images of the quality I will need for the minutiae extraction algorithms. I need on that will keep connected ridges connected so that bifurications can be found. If the thinning algorithm is not good a number of false minutiae will be introduced and real minutiae may be lost...alas....
I have also been looking for a way to covert the bitmaps I have into a fomr that is usable in a c program.
October 31 - Tonight I worked on the plan. I also read some more articles on thinning algorithms. I spoke to charlie about the bmp problems that I have been having. He explained how bitmaps are constructed and gave me some tips on where to look to find the file format, therefore I could wite a program if I am unable to find one. I really hope that I can find something though as writing bitmap conversions would take a lot of time from my fingerprint verification algoritms.
Eammon Keogh replied to my message about converting the bitmaps. He has a program there and is willing to convert the ones that I already have so that I can start working. He suggested that I search for programs that turn .bmp files into ascii, so I will soon be looking for something like that.
November 1 - I have spent yet another evening working on the plan for the project that needs to be completed by tomorrow. I found thresholding and thinning algorithms that I can understand. I also think that they will provide the functionality that I need - ei. keeping the ridges connected and not loosing minutiae points.
Eammon Keogh sent me some converted binary files so I have somethinf to use to beginning the thinning algorithms.
November 2 - I finished the plan that was due today. It is mainly a small portion of the paper that will be due later. I found out a lot while working on it and have a fairly good idea about what all of the components I need to build are and how they should be implemented
November 5 - I began a more detailed plan of what the thinning algorithm was to look like and started writing some of the code. There seems to be a large number of if statements and I am trying to come up with a way to make the code more managable so that it is easy to debug.
November 6 - Yet again, I am working on the code for the thinning algorithm. I have quite a bit of typing to do before I can start compiling it and debugging. I have also begun outline my proposal presentation that is on Thursday.
November 7 - Still working on the presentation. I gathered some images to display and finished an outline while keeping an eye on the election results.
November 8 - Practiced the presentation a little and worked on the code for the thinning algorithm. I also worked on the paper for a little while.
November 9 - I gave my second presentation in class today. The talk detailing my plan for finishing the fingerprint matching/recognition system today. I also some more work on the paper.
November 10 - I worked on the paper and spent a little time debugging the thinning algorithm that I have been writing.
November 11 - Worked on the draft paper
November 12 - Finished the draft paper
November 13 - Turned in the draft paper.
November 14 - I worked on the thinning algorithm for a while. the results are getting better. It is mostly thinned with some chunks. I am trying to figure out why the chunks are being left and if a different arrangement of the pruning steps might get rid of them. I also began the minutiae extraction code.
November 15 - I worked on both the code for the thinning algorithm and the minutiae extraction algorithm. I have all of the code written for the minutiae extraction algorithm. I have not been able to test it as I do not have the thinning algorihm working. As it stands I either get too much thinning or not enough. I am working on the number of times the prunning structuring elements are used and when. When the prnning elements are not used, I get mostly thinned fingerprints with a few clumps. I am trying to use the prunning element to get rid of extra spurs so that the clumps are thinned as well. At the moment when I use the pruning elments I wipe out a few ridges all together. I am working on way to balance this out (alternating which pruning elements are used, letting the pruning elements only take off one point in an area at a time instead of checking every point etc.. ).
November 16 - I have done a bit more work on the thinning algorithms code. I am much happier with the new results. The old results where a lot spiker. While all of the ridges get shorter on the new set, I believe that they are all there. I will continue to try to improve it though.
November 17-26 - Sporatic network failures kept me from doing too much on during the first half of the vacation. I made a few improvements to the thinning algorithms.
November 27 - I worked on combining all of the algorithmd. I am makinf a couple of header files so that I can use all of the functions from one main. I also spoke to Jim today abnout improvements for my paper. He also showed my some library functions that I could use to convert jpg files into ascii. This will be especially useful when I strt using the NIST files and it will allow me to use some real fingerprints as data
November 28 - I ran into a little problem with the minutiae extraction program. For on reason or another it is only reading in ones so it is not matching anything in some files. I am looking or the problem though. I have also been gathering some real fingerprint images to use in the testing. I downloaded the one from NIST that I had been planning to use. I am having a hard time prying it open though. I also discovered that the prints are not JPGs but their own format. They do include code to convert it to text.
I have found another database of fingerprints from the University of Bolonga that might work as well. Their images are tiffs but I should be able to convert them into pmg files without too many problems (I hope). Their database of 168 prints is free which is a vast improvement over the NIST files that only include 25 images for free.
I also did a little reading about pgm, the file format that I will convert the Tiff or JPG files into. In this format the image is composed of numbers that represent the number of greys. It will be easy to work with the text formating in the c progrms. I also did a little research into finding Image Magick
November 29 - I got one of the problems I had with the minutiae extraction code worked out. However, it is now finding well more minutiae than they should be (I think that each print should only have 30 and it is finding about 150 for each one). If nothing else, all of the modules now work together. I made each module a library so that they can be used together in one main and I would not have to cut and paste any code.
I reread some of the articles I obtained about why the nearest neighbor minutiae matching should work so that I can add this information to the paper.
November 30 - I got the pictures from University of Bolonga downloaded and opened today. Since I already have them I will work with them. My only problem with them now is that they were WInZiped so I had to open them on a pc and I am trying to find ftp on the lab computers to move them onto quark.
December 1 - I moved all of the pictures onto quark thanks to some additional disk space. I had anticipated changing all of the files into ppg or pgm files in order to get nice ascii values. I used image magick's convert to do this however it did not produce nice ascii but instead the same garble that you usually get when you open an image in pico. I will be working on this some more over the weekend to see if I can transform this into anything useful. As it turns out ppg and pgm have text and rawbit versions. Guess that Imagemaick converts to Rawbits which is less than helpful. I'll see if there is a way to get a more useful conversion.
I also spent some time working on the paper and looking for information on how to find the core and the delta. I am also going to see if there is any way to find some code that does this so that I do not have to write it.
December 2 I am slowly coming to the realization that
converting all of the files into nice ascii next is not going to be as
easy as throwing all of the tiff files at a conversion function and having
it write a nice ascii file for me. all of the conversions to pgm I have
tried spew out garble, so I am now having the tiff files converted by
image magic int txt files. This is not the type of text that I wanted as
the text ends up looking like this:
0,0: 41,41,41 #292929
1,0: 41,41,41 #292929
2,0: 41,41,41 #292929
3,0: 41,41,41 #292929
4,0: 34,34,34 #222222
5,0: 34,34,34 #222222
6,0: 34,34,34 #222222
7,0: 34,34,34 #222222
8,0: 34,34,34 #222222
9,0: 34,34,34 #222222
10,0: 34,34,34 #222222
11,0: 34,34,34 #222222
12,0: 34,34,34 #222222
13,0: 34,34,34 #222222
14,0: 34,34,34 #222222
15,0: 34,34,34 #222222
16,0: 34,34,34 #222222
17,0: 34,34,34 #222222
18,0: 27,27,27 #1b1b1b
I then convert this text using a perl script into a file of numbers
like this:
41 41 41 41 34 34 34 34.....
this file will then go through binarization that should produce the
results that I want.
Later After fiddling with perl for a while and causing the computer to restart a few time, I decided that the perl idea was not going to work. However, I think that I now understand more about the pgm library and its functions. My new plan is to try and use the library reads and see if it prints out anything nicer.
Even Later I scrapped even that idea when I could not figure out the functions (there was a format command that I could find no explanation for). I did find a command that converts pbm files to ascii so I will try working with that now.
December 3 Well, I got my idea of working with pbmtoascii to work. The ascii produced was not friendly ones and zero's however. It was all 'M', 'o', and '"'. So I had to convert that into ones and zero's that the rest of my code could use. The results were horrific. Ther coversion from TIF to pbm (portable bit map) made the image spotty and few of the ridges were left connected - creating many more ridge ending that their should have been. Thinning only made matters worse has the broken ridges were so short that thinning caused them to disapear all together. The conversion to ascii reduced the size of the image so I had a time of getting all of the pixels lined up again
Eventually I cam to my senses and worked with the library again. Amazingly it worked this time and prints out nice decimal numbers that are easy to understand. It is in pgm (portable greyscale) format so I will now have to write a binarization function that will hopefully work better that the one given by pgmtopbm or imagemagick's convert to pbg
December 4 - I worked again on getting the tif files into some sort of ascii format. While I was able to write out a convert file I was not able to read it in again and use it as input to my other code. Charlie figured out what was wrong with that (I was using the same file handle when I reopened the file causing it to open at the end of the file where it had just finished writing). I also wrote the code that does the binarization and did a little tweeking of that code. I have a major problem with ridges not connecting I have alternatly tried using the valleys instead of the ridges to see if I can head off some of the false minutiae that way. I have also thought about doing some sort of smoothing , but I have not come up with an algorithm that I think would work well.
At the moment everything runs, although I am having a problem with the sums at the moment. I can run the same image through there and it does not give me a sum of zero (I am not running two images of the same print but the same image of the same print twice in order to debug the code).
December 5 - I wrote to Eamonn in order to get a few last detail for my paper. I have also tried to get some of the bugs in my code worked out so that I can start testing and gathering the results.
December 6 - I have been gathering and analyzing some of my results. I am trying different thinning algorithms to see which ones give the best results. My preliminary results do not look all that grand. I am not sure that the sums are different enough between the comparisons of the same fingerprints and comparisons of different ones. I will continue to tweek the program and see what happens. I have come up with a number of ideas that might increase the accuracy, like changing the thinning algorithm or comparing the sum returned to the sum generated by matching prints of that finger (instead of how the sum compares to the sum given by any matching print).
December 7 - Continuing to look at my results and tweek.
December 8 - I worked on a way to automate comparing the fingerprints (instead of me continously running the program for each possible combination of fingerprints). I also look online for some details that I wanted to include in the final draft of my paper.
December 9 - Continued organizing my results and worked on the paper. I have been rewriting some of the sections I tured in earlier while I waited for my results.
December 10 - Did some of the final comparisons of the sums produced by the program. So far things look pretty good, however there is still much analysis to be done. I also began working on the results section of the paper, with what I have determined thus far. I have give a little thought to whatmy presentation should contain and have made plans to get sosme of my images in order. I am trying to figure out hot to get my ascii thinned images back into pgm so that they sill be nicer to show.
December 11 - I worked on the paper for a while today. I finally had all of my results organized and ready to discuss. I also got a poster for our presentations to hang in my house.
December 12 - I spent most of the day finishing and proofing my paper. I also cleaned up my code some and updated the headers on all of the functions. I have also looked into ways of producing images form all of the intermediary steps in my program
December 13 - We heard the first half of the final presentations today in class. I am anxious to get mine done with as well. I spent some time today cleaning up my code, creating images to use in my presentation and outlining my presentation.
December 14 - I did my presentation today and turned in the paper, so I guess this is the end of this log.