It has been almost two years since I first wrote the code for OpenCVKinect. It has been really good to know that it has been used by a number of other students/developers at GitHub for collecting and analysing Kinect depth streams in OpenCV. I have had some feedback about a possible bug and some students have asked how they can visualize the depth maps in a better way. So today, after a long time, I am releasing the first official update to this project.
Showing posts with label Real-time. Show all posts
Showing posts with label Real-time. Show all posts
Saturday, 16 April 2016
Thursday, 14 April 2016
Particle Filtering - Survival of the fittest
I recently studied dynamic system models such as Kalman and Particle Filters.
For Kalman Filter I followed a Matlab demo that can be found here.
In this demo, the simple problem of tracking a ball is addressed using a Kalman Filter. The input sequence is of a ball, which is travelling at varying velocity and which is occluded in some frames by a box. I think this is a great example to demonstrate the power of dynamic system models, especially the occluded frames can be used to test how good a dynamic model is. Here is the actual sequence:
As you can see the ball goes underneath the box and comes out of the other end. If our dynamic model is accurate it will be able to predict the state of the ball even when it is not visible, and should match the position when the ball comes out.
For Kalman Filter I followed a Matlab demo that can be found here.
In this demo, the simple problem of tracking a ball is addressed using a Kalman Filter. The input sequence is of a ball, which is travelling at varying velocity and which is occluded in some frames by a box. I think this is a great example to demonstrate the power of dynamic system models, especially the occluded frames can be used to test how good a dynamic model is. Here is the actual sequence:
As you can see the ball goes underneath the box and comes out of the other end. If our dynamic model is accurate it will be able to predict the state of the ball even when it is not visible, and should match the position when the ball comes out.
Sunday, 15 March 2015
Estimating Pi with OpenCV
Yesterday was Pi day where the date and time specifically corresponded to the value of Pi, i.e. 3/14/15 9:26 <===> 3.1415926 . What made this day extraordinary was how different ideas and videos came out, some explaining its significance while others showing fun ways to estimate its value.
One such video caught my eye in which @thephysicsgirl and @veritasium calculated the value of Pi using Monte Carlo sampling method but with a fun twist. Instead of using random particles they decided to use random darts and a modified dart board. They explain the idea in a very simple and intuitive way in the video.
Saturday, 27 September 2014
Saying hello to the Internet of Things!
A while back I signed up for Microsoft Developer Program for Internet of Things ( #iot for more info ). As much as I love exploring new things this was extremely exciting thing for me.
I have always had the curiosity to know more and try to hack things my own way. Even as a kid I had an investigative mind which always tried to discover more about how everything works. You can imagine this curiosity by the fact that I got severe electric shock as a kid, when I tried to cut a live wire from "Clothes Iron". This curiosity grew more and more in me, to a point that I did an engineering degree (Yes! I was born with an engineer's mind). I have always been interested in hacking different devices to make something more useful out of it.
I have always had the curiosity to know more and try to hack things my own way. Even as a kid I had an investigative mind which always tried to discover more about how everything works. You can imagine this curiosity by the fact that I got severe electric shock as a kid, when I tried to cut a live wire from "Clothes Iron". This curiosity grew more and more in me, to a point that I did an engineering degree (Yes! I was born with an engineer's mind). I have always been interested in hacking different devices to make something more useful out of it.
Monday, 10 June 2013
Programming Inception - Function within a function
This post is about a small but vital part in one of my projects in the past. This specific part of my project dealt with interpolation of quantized silhouette images, using a simple averaging based recursive interpolation.
Okay, I know its difficult to understand, but don't just stop reading yet. The most interesting part about this is that it can be related to the concept of "programming inception". You might be wondering this is something very difficult or deep. Don't concentrate too hard like cobb here, from the movie inception. This concept is as simple as it can get, its just that at first its difficult to get.
If you are like me and have watched "Inception" several times, then recursion in programming can be thought of having a dream within a dream. The more number of levels of dream you go into, the more specific to details you get. Likewise, a recursive function calls itself with its input and uses the outputs in multiple layers of levels to get deeper and closer to the answer, just like cobb did in the movie to plot an idea in a deep dream level.
Labels:
code,
Computer Vision,
OpenCV,
Real-time
Thursday, 9 August 2012
How to train your dragon?
![]() |
toothless |
No! this post is not about the dragon from the animated movie (although it's one of my favourite). However this picture explains almost everything there is about the topic. For those of you who have seen this movie, computer vision machines can be thought to be like the dragon which can not fly. You have to train it about every single incident and how it should react to each one of them in order to fly.
Yup! that's right, this post is about training. Training a computer!
Monday, 6 August 2012
Just a tip of the Iceberg..
I have been working for a while on my dissertation. The main aim of this project is to build a gesture recognition system which is both reliable and robust; to the extent that it can replace the already existing human computer interaction (HCI) techniques. Despite the idea being clear, I have been asked a lot of questions about the project.
Right now I am still in the final stages to finish the approach I have planned to use. However to answer some of these questions, I have uploaded a video which shows an implementation of similar gesture recognition technique I did in the start of this project.
Here is a short demo video:
This was not very reliable or robust technique. However I learned a lot of vital information while implementing this. The idea behind this is still at the base of a very complex dynamic hand gesture recognition system I am currently working on.
Will be uploading more information soon..
Right now I am still in the final stages to finish the approach I have planned to use. However to answer some of these questions, I have uploaded a video which shows an implementation of similar gesture recognition technique I did in the start of this project.
Here is a short demo video:
This was not very reliable or robust technique. However I learned a lot of vital information while implementing this. The idea behind this is still at the base of a very complex dynamic hand gesture recognition system I am currently working on.
Will be uploading more information soon..
Friday, 20 July 2012
Congestion? Not a problem!
This post is about another course project which I did for my Master's degree in Computer Vision Engineering. It's as simple and innovative as it could get. The idea is to estimate the flow of traffic in real-time using the CCTV video. Four categories of congestion/flow are first categorized, which are Low, Medium, Medium-High and High Congestion.
Here is a short demo video for this project:
While implementing this, the most difficult part was to distinguish between Medium-High and High Congestion, as both types of congestion have data which overlaps and is difficult to model with a machine learning algorithm such as K-means Clustering.
Here is a short demo video for this project:
While implementing this, the most difficult part was to distinguish between Medium-High and High Congestion, as both types of congestion have data which overlaps and is difficult to model with a machine learning algorithm such as K-means Clustering.
Labels:
Computer Vision,
demo,
OpenCV,
Real-time
Saturday, 6 August 2011
The beginning
So that's where it all started. A few years back, when I was doing my bachelors degree, I started with my strong interests in robotics (not computer vision). Surprisingly, this field was very different from what I was actually studying at university level. I took up to the challenge and along with Telecommunication subjects, I was very keen at learning the basics of robotics. This was the first time I was building my very own robot, little did I know at that time that it was the very same robot which will lead me to a whole new different field of Computer Vision. A simple line follower named tracker was the turning point for my career.
Years later I did a Final Year Project titled "Guidance System for Visually Impaired using Digital Image Processing", which was basically a very complex line follower with no lines drawn at all. It used the natural surroundings and extracted 'useful lines' to compute the deviation and hence guiding a visually impaired person. Eventually I realized that my interests in the field of Computer Vision was way more than what I was studying.
Subscribe to:
Posts (Atom)