Depth-based Image Editing in WebGL

What can you do with an image that has a depth value for every pixel? Try out this 3D WebGL image processing viewer to see! Use the sliders/controls below, and mouse over + click the images!   Loading… [WebGL capable browser needed to see this content] There are an order of magnitude more possibilities of new … Read more

SC12 ArrayFire Demos

I got the privilege of developing some of the Super Computing 2012 (SC12) booth demos for AccelerEyes, to showcase ArrayFire. Above is an ArrayFire demo running at SC12 on an nVidia GPU. This demo (source code HERE) uses OpenCV to capture webcam video and processes the stream in several different ways, in real-time. From top-left to bottom-right: Sobel filter, ArrayFire logo, Motion (frame differencing), Source image, Histogram … Read more

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

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

Using Gradient Layer Masks in GIMP

Some simple notes on how to seamlessly blend images in GIMP using gradient based layer masks. INPUT IMAGES 4 images with only different shutter speeds: PROCESS Open all images as separate layers in a new GIMP canvas: Right click a layer > “Add layer mask” > choose default “White full opacity” > Add: Now select … 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

GPU Convolutions: OpenCV GPU and LibJacket – Part 2

This is a response to my earlier post comparing OpenCV’s gpu::convolve() and LibJacket’s jkt::conv2() convolution functions, at various image and kernel sizes. That post generated a lot of traffic, most notably from the OpenCV developer community. Taking note of this, it seems that the folks at Willow Garage have re-vamped their GPU convolutions and posted … Read more

OpenCV vs. LibJacket: GPU Sobel Filtering

Update: LibJacket has been renamed to  ArrayFire. In response to a comment on a previous post about integrating LibJacket into an OpenCV project, below is just a simple FYI performance comparison of OpenCV‘s GPU Sobel filter versus LibJacket‘s conv2 convolution filter (with a sobel kernel)… This is an evolutionary post, so be sure to scroll all the way … Read more

Image processing with LibJacket + OpenCV

Update: one year later: ArrayFire+OpenCV The OpenCV library is the de-facto standard for doing computer vision and image processing research projects. OpenCV includes several hundreds of computer vision algorithms, aimed for use in real-time vision applications. LibJacket is a matrix library built on CUDA. LibJacket offers hundreds of general matrix and image processing functions, all running … Read more