Emmanuel Miranda: Microscopic Image Stabilization Algorithm

Student's Name: 
Emmanuel Miranda
emiranda7864@bc.inter.edu
Advisor's Name: 
Michael Isaacson
Home University: 
Inter American University Puerto Rico
AttachmentSize
Image icon Emmanuel2.jpg116.78 KB
PDF icon Emmanuel.pdf2.91 MB
Year: 
2004

Emmanuel Miranda

Image processing is an important and helpful tool in nanotechnology. Working on a nano-scale will be impossible without the help of devices such as microscopes and computers, because of our limited range of vision. This is where nanotechnology and computer vision need to work in conjunction. Our main project goal is to develop an image stabilization algorithm that can be used to enhance video appreciation. These 15 frame/sec videos were made by combining images taken by an electromagnetic microscope. The main problem with these types of movies is that any little vibration while taking these pictures affects the image stabilization of the final movie. To solve this problem we developed an image stabilization algorithm to process and analyze each frame of the movie to create a new and more stabilized movie. The algorithm was implemented on C++ using two API’s (Application Programming Interface), SDL (Simple Direct Media Layer) and CImg.

The Image Stabilization Algorithm that we developed tracks a user specified particle on each frame and uses it as a reference to fix the camera displacement. The user sets a tracking rectangle inside the particle's central part that the algorithm then tracks. Every time this stable particle moves because of camera displacement the algorithm activates a tracking subroutine that starts a search for this same pixel data until it is found. Additionally, if the shape of the particle changes the tracking subroutine then changes the shape of the tracking rectangle until the pixel data of the particle matches. The movie needs to be separated into frames, stored on a file, then the algorithm processes and stores each new stabilized frame in another file. To implement this algorithm we used SDL (Simple Media Layer) for all the 2D graphics programming and CImg for all the filters. The use of SDL for tracking and correcting the camera problems allows for a very fast algorithm that can process hundreds of frames in minutes.