Saturday, February 4, 2012

Augmented Reality

After watching a few augmented reality videos on YouTube I thought of trying to make my own but without the image processing section I was only interested in finding a 3D plane using on 4 Projected points. the results are below I used simple Calculus 2 equations the equation of a straight line, distance between 2 points and finding the normal of a plane. Another purpose of this I was convinced if I can find the plane in 3D space I can work out the cameras Location, LookAt and Up vectors.

results are shown below. the 3 coloured lines represent the 3 axis.


the results was okay but I was happy when testing other cases so I made different tests in case the plane was tilted on two axes, it was not perfect it also took more time in running the application. but the results were more accurate





Background Subtraction combined with Blob Detection

This application was done after seeing that Kinect can separate easily between the user and the background so i tried to get a similar result using a regular camera. the background subtraction method i used was not perfect, but blob detection allowed me to detect people depending on their width and height ration also can help to remove noise.



This was the testing on still images for easier debugging, Below is a live test.



Inverse Kinematics using Damped Least Square


Related to my graduation project I implemented Inverse kinematics to have a more realistic result as human joint limits. This work was based on the work of Samuel R. Bus who implemented 4 ways to do inverse kinematics on a tree and double tree i changed the code from C++ to C# and added a humanoid these are the 2D results of the project.



The orange/yellow circles are the target, blue circles are the joints, red are the end effectors(head/hand/feet) and the green circle is the root of the tree. Below is the 3D demonstration on a Model using XNA.



the angles made by the Dude model was not perfect I corrected that later on

Testing OpenNI for Kinect




My graduation project was targeting to give the same result using a regular webcam, that is why I recorded this test to compare with my final results. Also to demonstrate what OpenNI can do using Kinect.