Self Projects and Course Projects
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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).
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.
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.
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.
Simulated a mechanical model of Solar System using gears instead of gravity. Used Box2D, an open source physics engine for interaction between mechanical components
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.