User:Sang1938/enes100/My Work

 Team Page: 3D Scan

Write problem/project Goal
Use the Kinect to automatically check attendance in classrooms

My First Task
Download and explore the functions of Microsoft SDK Toolkit and Drivers for the Kinect. Explore how Kinect work.

Summary of actual work over first weekend
My assigned task was to download the SDK Toolkit from Microsoft and it went smoothly. I was able to complete my assigned task.

Week1 Narrative


My assignment was to download the SDK Toolkit from Microsoft and try to explore what the Toolkit does. As I explore the SDK Toolkit, I found that it was able to detect a skeleton view of ourself, so we can use this to detect students as they come into the classroom. I also come across a voice recognition applications where it can record and detect where the voice is coming from, this feature can probably be used to add extra security for users.

My Second Task
I will begin programming a software to let the Kinect detect and count the number of people entering the classroom.

Summary of actual work over second weekend
I was assigned to look for open source toolkits for the Kinect that have the feature of counting and identifying the number of people that enters and leaves an area. I was not able to find any toolkit for the Kinect but came across Kinemote, where we could use it for another purpose such as adjusting the lens using the computer instead of manually adjusting which isn't safe.

Week2 Narrative
I was assigned to tweak the microsoft's kinect skeleton view toolkit code that I downloaded last week to make it count and identify the number of people entering and leaving an area. As I look through the toolkit's code, it is very difficult to follow their code because it is always referencing multiple classes, and I am not very familiar with C++, I am more familiar with java. I decided to search online for an open source toolkit that might have already have the counting feature. I came across Kinemote. It has multiple files to download and needs to be installed in a certain order. This toolkit did not actually have the counting feature, but this toolkit did have something we needed for another purpose. As we install the Kinect in the ceiling, there will be in some point in the years where we will need to recalibrate and adjust the view of the Kinect. Moreover, we do not want to go up to the ceiling and manually move the Kinect's lens because the Kinect's lens doesn't feel very flexible to move, it seems like that it will easily break if you turn it yourself, so having the toolkit move it by just scrolling is much safer. Here is a link to a demonstration to the Kinemote toolkit: http://www.youtube.com/watch?v=nVha8sI4qNw&feature=youtu.be

My Third task
Look for open source toolkits for a regular webcam instead of kinect.

Summary of actual work over third weekend
My assigned task was to explore different software and programs to count and detect individuals walking by with the use of a regular webcam.

Week3 Narrative
As I was researching on youtube what others have done to achieve what we had as our project goals, I came across two different software. One software was called KeyLemon and the other one was called Digifort. KeyLemon is a facial recognition software that identifies individuals to lock and unlock user profile. One of the pros of using this program is the ability for it to track even as your faces evolve, new haircut or as we grow up it tracks the changes of our facial feature by the ability to take a picture a day for it to track our facial feature. Moreover, this software has the ability to trace where the picture was taken, this feature is really great to know where student are, if they are skipping classes in high school, or just to check attendance in schools. I found Digifort from a youtube clip in this link. However, after reading through the comments and descriptions, this was a software he programmed himself using OpenGL and OpenCV. I did not look into OpenGL and OpenCL very much, but I searched about it and came across that it was an open source programming language for computer vision as stated in this link. I did not look into OpenCL very much this week because I was exploring KeyLemon and it's feature and will be looking more into OpenCL the following week.

My Fourth task
On the Fourth Week's Task, I will be exploring more into OpenCL and OpenGL's programming language and hopefully be able to come up with what the person has in his youtube video. Moreover, I will be designing a series of structures on where and how to mount the webcam in the classroom to have the best view of everyone comeing into the classroom.

Summary of actual work over fourth weekend
How is what you did different than what you planned? This weekend, I was assigned to explore Microsoft C++'s language so that we can try to start coding a program that would be able to recognize and count people and implement it with a regular webcam. Also, I was assigned to come up with a design to mount the webcam in the classroom.

Week4 Narrative
Tell a detailed story describing what you did for your team over the weekend. Over the weekend, my assignment was to explore Microsoft C++'s language. I am not that familiar with C++'s language, but more familiar with Java. I downloaded Microsoft C++ and tried to find its similarities with Java eclipse. I came up with an algorithm that could be used in our project to count and identify people.

Motion{  //mehtod that when detects a skeleton structure implemented with Kinect's toolkit I had in Week 1's assignment would take a snapshop  int NumberStudents = 0;  if skeleton detected && skeleton moves left{  for loop (Number of face recognized) //loop until number of recognized identities been recorded in attendance chart String Name= snapshot; //goes to snapshot method and takes picture and returns name of students Attendance(Name); //goes to Attendance method uses the parameter of "Name" to check attendance.  NumberStudents = NumberStudents + 1  }else if skeleton detected && skeleton moves right {  NumberStudents = NumberStudents -1  }else{ null } system.out.print("Number of student attended class was: " + NumberStudents); //displays the number of students attended this class. }  public String snapshot{ Sting NameOfStudent; //takes picture and saves picture to hard drive. NameOfStudent = //search and identify faces from picture database return NameOfStudent; }  public void Attendance(Name){ //goes through Microsoft Excel and search through the parameter "Name" and marks the person present. }

The algorithm did not seem too complicated, The most difficult part was knowing C++'s language. Coding this in Java wouldn't be a problem, but the Kinect's toolkit can only be implemented with C++. So, I started to explore C++ and tried to have the console display "Hello World", but did not know how. So after hours of experimentation with my own knowledge, I finally looked up this video tutorial on how to code and display "Hello World". I recognized that the main(void) method was similar to java's main(String str[]) method, which is where the program would start. The code for displaying "Hello World" is shown below. Over the next week, I will continue to explore and learn the C++ language in order to have this program working.

using namespace std;
 * 1) include

int main(void){

cout << "Hello World" << endl << endl;  system("PAUSE"); }

A design I made for mounting the Kinect is shown below: I think this was the best place to mount the Kinect since it is pointed towards the door and it is below the projector where the Kinect can easily be connected to the instructor's computer and let it automatically run until class is over, without having another computer set up in the corner of the room and have the instructor keep moving to that computer to get the attendance.



Complete Project Page
Follow the "project done" format.