This week I made some advancements as far as planning and design goes. I have given up on getting Eclipse to work with Android's ADT and have decided to use Android Studio as my IDE. I found it's actually fairly simple to run and understand. After an hour of playing around I got a nice button to display on the screen and when pressed a "Hello World!" textbox appears. Now that I know how and where to place the code it was time to do some researching. Dr. Pankratz supplied me with a link about facial recognition which seemed interesting. However, before I dive into that, I would like to check out Androids API for facial recognition. In their camera class they have a facial detection function. This holds information about a face: center of the left eye, center of the right eye, center of the mouth, and boarder of the face. I think with this information given to us by the android camera I can create some kind of algorithm (or find one) that can give me some type of score or percentage of accuracy.
Moving forward here is what I am planning for this app. By accessing the contacts in the phone (asking for permission first by the user) we can simply add a name to a face. Every time a picture is taken with the app it will try and match a name with a face, even if its only 10% or less sure. The user can either choose that name or type in a new name, which either creates a new account in the database or adds the information to an existing one.
I do have some questions that I need to figure out. In order to access the camera I can either access the native camera app that comes on all Android devices. This would be a lot easier to accomplish and require less code. However, I lose out on experience and knowledge of accessing the camera driver as well as customization for my app. If I chose to just call the camera drivers myself, this will require more code however I will understand more clearly what is happening. Also, not all of the functionalities of the camera are needed for this app, such as camera filters (ie: to make the photos black and white). I am also debating whether I should keep all of the photos of each person in a database within the app that the user can access. In other words, should the user be able to see all of the photos taken of a certain person? The alternative would be to just keep the data about the persons face in the database. By keeping the pictures in the database, this will require much more memory, however the user can then go into the database and edit it, in case a mistake was made when entering in a name. By just having face data in the database, this requires less memory but we also lose out on functionality. I am still far away from this point, but it's something to keep in mind as I'm making progress...any thoughts?
Moving forward here is what I am planning for this app. By accessing the contacts in the phone (asking for permission first by the user) we can simply add a name to a face. Every time a picture is taken with the app it will try and match a name with a face, even if its only 10% or less sure. The user can either choose that name or type in a new name, which either creates a new account in the database or adds the information to an existing one.
I do have some questions that I need to figure out. In order to access the camera I can either access the native camera app that comes on all Android devices. This would be a lot easier to accomplish and require less code. However, I lose out on experience and knowledge of accessing the camera driver as well as customization for my app. If I chose to just call the camera drivers myself, this will require more code however I will understand more clearly what is happening. Also, not all of the functionalities of the camera are needed for this app, such as camera filters (ie: to make the photos black and white). I am also debating whether I should keep all of the photos of each person in a database within the app that the user can access. In other words, should the user be able to see all of the photos taken of a certain person? The alternative would be to just keep the data about the persons face in the database. By keeping the pictures in the database, this will require much more memory, however the user can then go into the database and edit it, in case a mistake was made when entering in a name. By just having face data in the database, this requires less memory but we also lose out on functionality. I am still far away from this point, but it's something to keep in mind as I'm making progress...any thoughts?