The End: Google Summer of Code 2012


This is the end, beautiful friend

-The End by The Doors

Katherine Scott, Anthony Oliver, Victor and Vijay, it has been a pleasure working with you guys. So after exactly three months, Google Summer of Code 2012 has come to an end. It has been a wonderful summer spent in surreal universe of Computer Vision.

Right from the beginning, it has been a rocky journey with lots of ups and down. From Discrete Fourier Transform (Gaussian, Butterworth filters, etc), Median Flow Tracker, Machine Learning, Detection in OpenTLD, boost::python bindings of OpenTLD, Sobel Operator to CAMShift Tracker and Lucas Kanade Tracker with Kalman Prediciton, it has been a great expedition of coding, nail biting, colorful characters on white background, a transperent black screen of terminal, Octocat of GitHub, merges and pulls on git, and Lenna. How can I forget Lenna!

I have gained immense knowledge during these three months. How not to suck at using git, Python PEP-8 Documentation, CamelCase, Python decorators, C++, Image Processing, Computer Vision, Machine Learning(little bit), Importance of GUI, How To contribute to an Open Source program, Open Source Licensing, unit tests, issues, pulls. And some things that I did not learn. HoughLines, PHP, Java, and the list goes on.

It all started in March 2012 when GSoC announced the organizations list. I was quite disheartened by the fact that there was no organization with Python as a keyword as I only knew Python. The problem was that they hadn’t announced all the organziations. I saw SimpleCV after 2-3 hours. Downloaded xchat and joined #simplecv on freenode. There were few students and two mentors chatting. After taking few tips from them I started tweaking around with OpenCV python. As I was learning DFT in my Image Processing class, I implemented a filter and showed it to Kat. I got positive feedback. After proposing four different topics for the project and being asked to do better, I came up with Automatic segregation of conveyor belt items using SimpleCV and submitted it. After waiting for some 20 odd days, results were out. I couldn’t see my name on the list. Crushed.

A New Hope.Someone told me they had selected around 1200 students and the list only showed 800. Heart Pounding. I couldn’t wait anymore. Refreshed. And there it was. I cried out loud. Magical moment, it was.

Coding period was a month away. Meanwhile, I started learning few things about Computer Vision and managed to screw up my finals. Starting with OpenTLD, I learned C++ and its Object Oriented Concepts. Ported it to python in 2-3 weeks with very poor accuracy. Realised Python is damn slow so tried multiprocessing and multithreading but managed to make it worse. Learned about GIL, the hard way. Started working on boost::python to make bindings for OpenTLD, simultaneosuly. Wasted a lot of time on that with no real results. Trashed it and started working on improving SimpleCV and adding more features to it. I made couple of installation scripts for SimpleCV and OpenCV, tweaked VirtualCamera, added couple of functions in Color and ImageClass, resolved the problem of quitting pygame, and majorly implemented CAMShift Tracking and Lucas Kanade Tracker with Kalman Filter prediction in SimpleCV.

Here are the blog posts that I added during my summer.

And here are few videos that I uploaded. OpenTLD on Towel Day

Face Tracking with CAMShift

CAMShift Tracking of two objects

Kalman Filter Prediction

Lucas Kanade Tracker

This sums up almost all my work. So the journey ends here.

I’ll see you in the dark side of the moon.

Selecting ROI/BB in OpenCV(Mat)

Read next