Local Contrast Enhancement with ArrayFire + OpenCV

About one year ago, I wrote about a simple example of Image Processing with LibJacket + OpenCV… and the trend continues today. In this post, I demonstrate how ArrayFire (an improved version of LibJacket) can easily interop with OpenCV, through a simple example of unsharp maksing (local contrast enhancement).   Program Flow: Capture steaming webcam … Read more

ArrayFire GTC 2012 Presentations

I got another incredible opportunity to give two introductory talks at Nvidia’s 2012 GPU Technology Conference about AccelerEyes‘s two software products: Jacket(MATLAB) and ArrayFire(C++) ! Jacket for Multidimensional Scaling in Genomics –  Video  |  Slides ArrayFire Graphics: A Tutorial –  Video  |  Slides   Enjoy!

Laplacian Pyramid Image Enhancement

My final project for the Computational Photography class at GaTech. Multi-scale image contrast/detail manipulation Operating on images at multiple scales is conventionally done using multi-scale decompositions, such as the Laplacian pyramid [Burt and Adelson 1983]. Such techniques decompose an image to multiple detail layers at different scales in a pyramid like fashion. This project demonstrates how … Read more

Computer Vision Learning Portfolio

This page constitutes my required external learning portfolio for CS 7495, Computer Vision, taken in Fall 2011. In it, I discuss what I have learned throughout the course, my activities and findings, how I think I did, and what impact it had on me. About me I am a coffee fanatic that is into computers, photography, computer … Read more

GPU TV-L1 Optical Flow with ArrayFire

Update 1: LibJacket has been renamed to  ArrayFire. Update 2: Huang Chao-Hui was nice enough to port the LibJacket code mentioned here to ArrayFire – see his work here. As one of my Computer Vision class projects, I decided to implement optical flow, because I wanted to learn more about optical flow, and also I wanted to code it … Read more

Music Visualization with Processing

Live Spectrogram Re-Inspired by the awesome artistic works in Resonance the Film, a TED talk on generative music videos, and then remembering the good ol’ days of MilkDrop magic, I found myself captivated and wanting to learn more about music visualization and how I could create my own. Since I will be using Processing for the first time this … Read more

Remapping Macbook Pro Keys for Emacs Use

Background: I recently took the $$$ plunge and got a fancy new 15″ Macbook Pro to replace my 5-year old ASUS laptop. Though I’m not too fond of Apple’s business model, I just couldn’t seem to find (hardware wise) a more quality built and ascetically pleasing laptop than a Macbook Pro. After 6 years straight of … Read more

GPU Connected Component Labeling

Connected Component Labeling (CCL): “is used in computer vision to detect connected regions in binary digital images”, and sometimes referred to as blob coloring. Motivation: To keep AccelerEyes’ ever expanding GPU library growing, over a few weeks of this summer I took on the project of writing a CUDA version of connected component labeling to be used in … Read more

GIMP Scripts

Usually, when I’m using GIMP to edit pictures, there are a couple of simple enahcnements I routinely apply to each image. So, I’m slowly learning GIMP scripting and creating some simple GIMP scripts to help automate some steps in my digital darkroom workflow. Here are two scripts that I’ve come up with so far, that … Read more

AI Learning Portfolio

As a final assignment/write-up for my CS6601 Artificial Intelligence class at Georgia Tech, this learning portfolio was made to summarize what I had learned throughout the course… CS 6601 Learning Portfolio This page constitutes my learning portfolio for CS 6601, Artificial Intelligence, taken in Spring 2011. In it, I discuss what I have learned throughout the … Read more