Video and image processing enables us to acquire, process, and analyze images and video data for data visualization and manipulation.
We have explored the following open-source API for video and image manipulation:
- OpenCV: OpenCV (Open Source Computer Vision Library) is mainly focused on real-time image processing applications. It supports Windows, Linux, Mac OS, iOS, and Android and has been written in optimized C/C++.
- FFMPEG: FFmpeg is a command-line tool to convert multimedia files between formats. This is mainly used to decode, encode, transcode, stream, filter, and play the media file. It runs on the following platforms: Windows, Linux, Mac OS, iOS, and Android.
- Xuggler: Xuggler is a Java library that allows the decoding and encoding of a variety of media file formats. It supports Windows XP or later, 32 or 64-bit versions, Linux using libc version 6, 32 or 64-bit (i.e. Ubuntu 11.10 and later), Mac OS X 10.7 32 or 64-bit.
- JMTF: The Java Motion Tracking Framework is a modular framework for detecting and tracking motion in prerecorded sequences of frames. It is pure java and therefore requires no other native libraries.
- JMF: The Java Media Framework API is used for capture, playback, streaming, and transcoding multiple media formats, and extends the Java 2 Platform, Standard Edition (J2SE) for multimedia developers by providing a powerful toolkit to develop scalable, cross-platform technology. Java with JMF can be used to implement a motion detection
Some of our projects have featured video processing functionalities like:
- Frame Extraction: Extract the frames from the video with respect to the frame rate.
- Video Trimming: Trim the video with a specific duration.
- Audio extraction: Using the FFmpeg library we can extract the audio channels from a video file
- Video generation: Generating video from the sequence of frames.
- Video Shake Reduction: We can reduce the shake in the video by calculating the optical flow. Optical flow is the relative motion between two images.
Further, we have undertaken projects that involved image processing functionalities like:
- Background subtraction: Helps to differentiate between the background and foreground of the image.
- Object Extraction: This is the process of identifying and extracting the object from the image.
- SURF: SURF stands for “Speeded Up Robust Features” for detecting the local feature from an image.
- Face recognition: Recognize the human face from the image.
- Edge detection: Detect the edge of the image primarily for identifying an object
- Overlaying: Overlay the two images with transparency property, useful for creating strobe images
- Stroboscope: Stroboscope is the representation of a series of shots from a continuous motion of a moving object and is obtained by stitching together the strobe images obtained from a video.
- Insert text/image: Text and images can be overlayed and is useful for animating the image or video.