Saturday, 16 April 2016

OpenCVKinect 2.0 - Acquiring Kinect depth stream in OpenCV

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.

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.

Monday, 28 March 2016

Designing an algorithm - from ideas to code

I had always been interested in solving sudoku puzzles, partly because there are too many combinations that make each Sudoku unique. Since my work involves writing and using programming in different scenarios, I thought why not try using my skills on Sudoku. So there I was on a London Underground train to Barbican - looking at a Sudoku puzzle at the back of a morning newspaper, wondering how I can write an algorithm to solve it. I figured out a few simple tricks that I have always used in algorithm design. Here I explain what thoughts I had while designing my very own Sudoku solver and how I transformed those ideas into a working prototype.

First of all lets have a look at a typical Sudoku puzzle and some basic rules:

Sudoku Puzzle
Yes - it has got everything to do with numbers!! lots of numbers!

A Sudoku puzzle typically has 81 boxes where each box can have a number between 1 to 9. However, all these boxes follow some rules that make it all interesting. You may have noticed 3x3 squares grouping the number boxes. A correct solution of Sudoku ensures no repetition of numbers from 1 to 9 inside each of the 3x3 squares, in each horizontal line and each vertical line. When solving a Sudoku puzzle, this is exactly where I look for a solution, and exactly where my thought process starts for my Sudoku solver algorithm.

Sunday, 20 December 2015

Long Exposure Shots with a GoPro and Matlab

I recently got  a GoPro. You know to get cool selfies, videos and all :D I am very much impressed by all the cool things you can do with it but was specifically impressed by the fact that one can create a time lapse video.

After giving a couple of tries to time lapse videos, I wanted to go beyond. I had always seen photographers make a long exposure shots by using specific DSLR cameras. I wanted to create just that using the only camera I had, a GoPro. However I had something much more than the camera, I knew how to write a code that deals with a number of images (I am a Computer Vision Engineer).

Saturday, 28 November 2015

The Instagram Generation

Being an 80s kid, I have seen the technology evolve from nothing. I got my first PC when I was 8 years old - it was a very basic intel 386 desktop clocked at just a few Mhz. We only had MS-DOS and mainly used the desktop for games. It had no internet, a black and white monitor and an actual floppy disk drive. The 1.44mb floppy disk typically held 1-2 awesome MS-DOS games. I remember I used to get super excited when my dad would tell me that he is getting a new game. And some other unfortunate times when the floppy disks would fail to load, and I would be left anxious for the next day to try with a new disk. I was famous within all the kids on our block, who would want to come and play cool games. There was no concept of the online web, social media or any media at all. We had a camera that used a film that would only store 36 pictures. And because it took a day, at a photo studio, and some money to develop this film into pictures - these 36 moments were picked carefully. Someone's birthday, someone's happy and sad emotions on their first day going to school, picnics, family dinners, festivals, an achievement etc. The other pieces of technology we had were a TV which showed only 2 channels and a landline telephone (no internet). All the kids on the block used to play a sport (mostly cricket) in the streets.