I have been intruiged by the video stabilization done by YouTube and wanted to implement it on matlab. I tracked down two papers related to it, this being them,

1.) http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/37041.pdf

2.) http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=6738007&url=http%3A%2F%2Fieeexplore.ieee.org%2Fiel7%2F6726158%2F6737993%2F06738007.pdf%3Farnumber%3D6738007 (L1 L2 optimization for video stabilization)

I've made some progress, but sadly all I can get is a skewed video. :( In working on this problem I encountered a lot of new things which I'm also trying to learn, but as I have no background in them, I'm facing a lot of difficulty.

Is someone here well versed with such topics (Convex Optimization, CVX modeling in matlab, Homographies etc), if so, I would love if you could help me in solving this problem.

I'm unable to get a proper understanding of the paper, I feel (?) that they may have omitted some details, but I'm not sure.


Recommended Answers

All 3 Replies

Here is my implementation of it.

Features (any kind SIFT/SURF/FAST etc) are tracked across the frames to get the per-frame-pair affine transformation matrices. These matrices are multiplied. At any instant this product is called the Camera Path. A convex optimization problem is solved using these transforms and the camera path to obtain an update transform. This is used to modify the camera path to warp the input frame to a new frame of reference such that the video appears smooth. (Imagine a train passing by you very fast on a platform, you look through the windows make out a shaky blur instead of the passengers, now imagine being a passenger of the train, you can easily make out the everything inside the train)

I've also tried this by directly warping (LK warp) without tracking any features and still nothing. Along with this other things I've tried are, Optimizing dynamically over every frame, summing up the objective whole function and then optimizing over each frame etc.

If anyone could provide any insight or their understanding of the algo it would be a great help.

I can't offer any suggestions as to implementation but you may want to have a look at Deshaker which is a free plugin for VirtualDub which is also free.

Hello Jim.

Thank you for your response.

Yes I have been interested in video stabilization for a while and have tried out vid.stab as a ffmpeg plugin. It seems to work on similar principles and produces a superb result too (close to youtube's stabilization) but I cant seem to see how they did it. There's no fun in it. I want to implement it on my own.

It would be nice to have someone with experience in this field to guide me in the same.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.