Self Projects and Course Projects


A Lightweight UI for Medical Visualizations

Currently, if you have an OpenGL interface, you need to use Qt/GTK or some UI library to create a window and focus out of the OpenGL window to do simple UI tasks like fill forms, click on a button, save a file, etc. Our idea is to get rid of the external interfaces and have the UI built in. So, we built this cross platform minimal interface on top of VTK, which provides a very simple but powerful API, and can be tweaked to create futuristic interfaces.

Project Description · Google Summer of Code (GSoC) 2016 · DIPY, Python Software Foundation

Package Install for Third-Party Plugins

We designed and developed interfaces in Qt5 to install third party plugins, platform-independently across five KDE applications by querying for plugins using Appstream and then installing using PackageKit. Ported KDE applications and libraries like Network-Filesharing and language-plugins from KDELibs4 to KF5. Additionally fixed bugs where required, learnt software packaging and packaged PackageKit-Qt for launchpad.

Project Description · Google Summer of Code (GSoC) 2015 · KDE

Rest-API Controller for Legacy Applications

Initiated a project to future-proof legacy custodian applications by building a REST API controller. Built on NodeJS and Express, the controller is modular, re-programmable and uses ORM to connect to databases. Developed a prototype application using AngularJS and Materialize to prove that the controller works. Received a Pre-Placement Offer (PPO) for exceptional performance over the internship.

Project Description · Internship Project · Citibank 2015


Tracking and Reconstruction of a Human Body

We are designing a novel method to reconstruct human body using noisy point cloud data in real-time from a single Kinect. The method is currently being implemented in OpenFrameworks using OpenNI and NiTE. We'll be further investigating methods to render the reconstructed model in virtual reality, viewable on a head mounted display like Oculus.

Undergraduate Dissertation · IIT Bombay

Traffic Infraction Detection through Mobile Devices

We are exploring ways to detect signal jumping and tailgating using a mobile phone mounted on the vehicle dashboard. Crowd-sourced data and object detection techniques will be employed to get data from videos in near real-time.

Research and Development Project · IIT Bombay

Undergraduate Course Projects

Photographing Paintings by Image Fusion

We implemented the algorithm based on the paper by the same name that addresses the problem of obtaining a quality photograph of a painting by multi-image fusion methods. We took multiple bursts of an image and through and image processing toolchain described in the paper, derived a digital copy of the image. This image fusion method is applicable to photographs of a painting taken with a hand-held camera without any particular setup. It works under bad lighting conditions and eliminates motion blur, even when the painting is protected by a glass screen creating structured reflections of the room.

Computer Vision Course

Authentication of Paintings through Brushstroke Extraction

Using edge and color features to get brushstrokes, we extracted geometry features of these brushstrokes like length of major and minor axes (assuming a brushstroke to be an ellipse), the stroke direction, longetivity, size, area, neighboring brushstroke information, we built feature vectors using Van Gogh's work and then differentiated a fake painting from the original, with decent amount of accuracy using binary classifiers (like Naive Bayes and SVM).

Project Link · Digital Geometry Processing Course

Image Quilting for Texture Synthesis and Transfer

We implemented a pioneering algorithm by Efros and Freeman for generating textures by stitching together small image patches. Further, we enhanced the algorithm to render an image with a texture taken from a different image.

Digital Image Processing Course


A scalable framework for computing realistic illumination based on the research paper 'Lightcuts' [SIGGRAPH 2005]. Our implementation significantly lowered the rendering time for several (>1000) uniformly distributed point light sources. We made use of PBRT as a basic rendering library and made modifications to it to implement the algorithm.

Project Link · Advanced Computer Graphics Course

Rendering with Photorealistic Renderman

Wrote shaders and rendered raytraced scenes using Pixar’s rendering software PRMan. The resultant scene elements produced effects like color bleeding, caustics, area lights and soft shadows.

Project Link · Advanced Computer Graphics Course

Transformer Rendering and Animation

Modeled, textured and animated (via forward kinematics) a transformer robot from scratch with OpenGL. Developed an interactive environment for the keyboard controlled bot with inter-object collisions. Used motion captured data in the form of BVH inputs to animate the transformer (via reverse kinematics).

Project Link · Basic Computer Graphics Course

Incremental Development of a Compiler

Implemented a compiler for a subset of the C language using tools like FlexC++ and BisonC++. Sethi-Ullman Algorithm was used to create a syntax tree and optimization was done for control statements.

Design and Implementation of Programming Languages Course

Movie Social Network

Developed a social network for movie enthusiasts similar to Goodreads using JSP, Java and PostgreSQL. Optimised database schema and minimised redundancy after normalisation and ER modelling.

Project Link · Databases and Information Systems Course

Threading and Scheduling Implementation in GeekOS

Modified the existing scheduler of an experimental OS by adding Multi Level and Round-Robin scheduling. Added support for kernel and user level threads and methods for deadlock handling.

Operating Systems Course

2D Simulation of an Orrery (Mechanical Solar System)

Simulated a mechanical model of Solar System using gears instead of gravity. Used Box2D, an open source physics engine for interaction between mechanical components

Project Link · Software Systems Course

Multi-player Chess with Artificial Intelligence

Developed a chess game in PLT Scheme using in-built GUI Toolkit in DrRacket. Implemented the Minimax Algorithm with Alpha-Beta Pruning for the AI with a tree depth of 3.

Project Link · Programming Paradigms Course