I've worked on quite a few projects during my under-grad days and back when I was in school. Each of these were special in their own way and invariably taught me something - mostly technical, sometimes non-technical too! This page is mainly meant for me to keep track of these projects, but hopefully, they will be useful to others as well. Please do not hesitate to ask if you are working on something along the lines of one of my projects and have a question... I'll be happy to help :)

Each project has a very basic writeup. As and when I have time, I'll try to update more details and probably upload code.

Compressive Sampling in Video and pattern recognition

with Makarand Tapaswi & Veeresh Taranalli
B.Tech semester 7 & 8 (Major Project) - Studied the theory and various techniques of Compressive Sampling - a relatively new area in the field of signal compression. Investigated various image reconstruction algorithms such as the simple convex optimization technique, recursive spatially adaptive filtering and Iterative Shrinkage Thresholding (IST). Implemented a block based video compression and decompression algorithm using the IST technique with a few novel ideas such as block intensity maps to aid in the reconstruction. In the second half of the project, explored the use of compressive sampling for pattern recognition - namely face-image authentication, image based gender recognition and object recognition. Used compressive sampling as a classifier and for feature extraction and compared the results. Also employed machine classifiers such as Support Vector Machines (SVM) and Artificial Neural Networks (ANN) for classification. All implementations were in Matlab.

Reduced order Boolean Decision Diagram from Boolean Function

with Makarand Tapaswi
B.Tech semester 8 - Programmed an efficient Reduced Order Boolean Decision Diagram (ROBDD) generator that accepted a set of Boolean minterms as input. Also used a graphing utility "dotty" to generate the final ROBDD. The GUI, and all processing was done in .NET 3.5 using C#.

Mobile phone based image processing

with Makarand Tapaswi
B.Tech semester 8 - To explore the feasibility of using mobile phones for image processing algorithms, implemented simple image processing routines in J2ME (Java mobile edition) to run on my mobile phone (Nokia 3110 classic). Algorithms such as grayscale conversion, histogram equalization, edge detection, Gaussian blur etc were implemented. The mobile phone's camera was used for inputting images.

Fault testing program for Logic circuits

B.Tech semester 8 - Implemented the D-algorithm for single stuck-at-fault testing of complex logic circuits. Inputs were standard ISCAS 85 circuits. Implemented and used five state logic processing. All programming was done in .NET 3.5 using C#. Was one among two people (the other being Makarand!) in the class to have programmed the fault testing process - which was able to work with very large and complex circuits with re-convergent branching. Everyone else had manually achieved the same on simpler circuits.

VLSI implementation of Artificial Neural Networks

with Makarand Tapaswi
B.Tech semester 7 - Implemented a VLSI design of a two-layered feed-forward back propagating artificial neural network using a tool called SPARK - with the intent of generating an architecture that could train the neural network in parallel - thereby speeding up the entire training process. Simple gradient descent algorithm was used for training - owing to the large percentage of the algorithm that could be parallelized. The Tangent-sigmoidal squashing function was used at the output of each neuron. The implementation was in C.

SPIHT Encoding of fingerprint images

with Makarand Tapaswi
B.Tech semester 7 - Implemented the Set Partitioning In Hierarchical Trees (SPIHT) algorithm for wavelet based image compression. Daubechies 9/7 wavelet transform was used and the SPIHT algorithm was then run on this data. Further, an adaptive arithmetic encoder compressed the final output. Finger-print images were used to test the compression - owing to their great level of detail. Implementation was in C++.

Speech Recognition

with Makarand Tapaswi, Sneha Latha & Vaibhav Bedia
B.Tech semester 6 - This was guided by Dr. Amitav Das of Microsoft Research India. An isolated word recognition system was built using Mel Frequency Cepstral Co-efficients, which were extracted from audio recordings, and Dynamic Time Warping (DTW) for the final recognition task. Also implemented an interactive voice-based voice-response-system for booking travel tickets through a phone-call. Conceptualized and implemented a completely voice activated framework for playing the popular Microsoft Windows game - Solitaire. Windows Application Programming Interface (API) was used to interact with the game programmatically, performing the necessary actions as determined by a Matlab backend program.

Layout and Simulation of a Barrel Shifter

with Makarand Tapaswi & Vaibhav Bedia
B.Tech semester 6 - Designed and simulated a 16-bit bidirectional arithmetic barrel shifter circuit at transistor level, using the open source tool - MAGIC. Extensive testing and characterization of the circuit was then carried out using tools such as IRSIM and SPICE.

JPEG2000 image decoder

with Makarand Tapaswi & Vaibhav Bedia
B.Tech semester 5 - A JPEG2000 image decoder was developed on the Xilinx Virtex II Pro FPGA. Images were stored on compact flash cards and were processed by an embedded PowerPC processor. The JPEG2000 lossy compression standard was implemented and involved wavelet transformation and entropy decoding as defined by the ISO international standard. 24 bit VGA output was generated on a standard DB15 connector. Implementation was in C optimized for the PowerPC. The best part of the project was probably the fact that our professor let us use the lab's widescreen TFT TV to display the images :)

DVD Player Remote Control

with Makarand Tapaswi
B.Tech semester 4 - A commercial DVD player's remote control (6711R1P070B of the LG DS 9481 CPE) was mimicked using a micro-controller based circuit. The Atmega8 from Atmel Corp. was used, along with a few other integrated-circuits and infra-red LEDs. All coding for the micro-controller was done in C, which was later converted to assembly language. The Linux Infrared Remote Control project ( was used as a reference for decoding the infra-red signals using a personal computer.

Scientific Calculator using Assembly Language

with Makarand Tapaswi
B.Tech semester 4 - A scientific calculator was developed using the Intel 8086 assembly language. Prominent features include
  • Complete graphical user interface - using a mouse for input and separate font files for optimum rendering
  • Ability to perform floating point operations (8086 does not inherently support floating point operations)
  • Basic mathematical operations such as addition, subtraction, multiplication and division for both positive and negative numbers Mathematical functions such as exponential, trigonometric, inverse trigonometric, angle conversion (between radians and degrees), logarithmic, combinatorial, integral and fractional powers and base-conversion. Taylor series expansions were used to compute most of these functions.
  • Memory to temporarily store results

  • An autonomous line following robot

    with Srikanth Prabhu, Vanamali Bhat & Veeresh Taranalli
    B.Tech semester 3 - An autonomous line following robot was built which can follow a white line on a black background. Components used were DC motors (from toys), L293D (motor driver), LM324 (Comparator), Atmega8 (8 bit microcontroller) and Sensors (Using Infra-red LED and Photo-transistors).

    A traffic Light Controller

    with Makarand Tapaswi & Vaibhav Bedia
    B.Tech semester 3 - A traffic light controller was designed using an open source tool called Tkgate on the computer. Basic digital gates and memory units were used. The traffic light controller had the following features
  • Automatic control of changing light (Red->Yellow->Green->Red)
  • Blinking orange lights for night-time
  • Switch for keeping all lights at red (block all traffic)
  • Switch for giving green light (for certain duration) to a particular road during an emergency (ambulance etc). Choice of road was controlled by a set of switches.
  • 7 Segment display for showing the time remaining to a green light on every road
  • Manual over-ride switch to give complete control of the system for an unspecified time

  • A cricket score board maintaining software

    with Abhishek E.S
    School, 12th Grade - A software was created using Turbo C++ for maintaining runs, wickets and other statistical data in a cricket match. The program had the following notable features
  • A graphical user interface, for easy use with a mouse
  • Provision for keeping track of events for every ball bowled and extensive provision for extras.
  • Provision for choice of Batsmen and Bowlers (both at the beginning and during the match)
  • Automatic error detection (such as consecutive overs by same bowler, more than 10 overs (for ODIs) per bowler, same player as on-strike and off-strike batsman)
  • Automatic strike rotation, run-rate calculation, required run-rate etc

  • Hotel management software (10th std. ICSE)

    with Abhishek E.S
    School, 10th Grade - A software was designed using Turbo C++ for assisting in hotel management. The software provided extensive support for room booking, checking-in, checking-out, advance booking, room tariff, tariff for other facilities (swimming pools, recreation area, various cuisines etc). All this was presented to the user in an easy to understand Graphical Interface which could be accessed with a mouse. Features such as room-tariff and other sensitive data which are not frequently changed were protected by passwords.