Tuesday, June 13, 2017

PhD Completion!

Here is my PhD Abstract :) If anyone interested in this, I can privately send a draft for preview :) 


In this thesis, I present a new generation of Augmediated Reality Digital Eye Glass (DEG) that embodies the principles of Humanistic Intelligence (HI). In particular, this thesis addresses the fundamental issues in the practical realization of the HI framework, most notably the dynamic range of sensors and the design of a natural human-computer interface based on three dimensional (3D) gestural input.

First, to address the dynamic range limitation of color sensors, a practical implementation of high dynamic range (HDR) image composition and tone mapping algorithms were designed on both Field-programmable Gate Arrays (FPGAs) and Graphics Processing Units (GPUs) to enable real-time processing of video streams. The algorithms are optimized for wearable applications and provide a constant runtime performance independent of the scene. To demonstrate the robustness of the algorithm, a specialized DEG helmet was designed to work under the most extreme lighting condition - tungsten inert gas welding.

In addition, I discuss the development of a novel HDR technique for 3D depth sensing cameras called 3DHDR. Here, I present a method of creating 3D HDR depth maps using an array of 3D depth sensing cameras designed for wearable applications. The system provides a tonal and spatial range that significantly exceeds the capability of any individual depth sensor.

Finally, I present an untethered wearable solution of DEG with 3D gestural input based on 3DHDR. The recognition system provides various mode of operations and allows users to integrate gesture-based input to control the Augmediated Reality DEG system. The final prototype has been translated to a development platform for use in future wearable computing research to further explore the HI framework.

Wednesday, December 14, 2016

Tuesday, November 1, 2016

Hello Tomorrow

My talk starts at 4:29:49. Enjoy.


Sunday, September 20, 2015

How to write a multipage TIFF file

Today, I just realized that it is a pain to write multipage TIFF images with OpenCV. I assume that it is not officially supported?

I wrote this simple sample code for all medical students with almost no programming experience! This code will allow you to dump your image sequence into a multipage tiff (or tiff stack?) that is readable by any machine or tools such as Matlab.

Here is a link to the code:

And you can preview it here. But I don't recommend copying directly here just in case the symbols or spacing got messed up.

#include "tiffio.h"
#include "stdio.h"
#include "stdlib.h"
#include <string.h> /* memset */
#include <unistd.h> /* close */

int main(int argc, char* argv[])
    TIFF *out = TIFFOpen("new.tiff","w") ;
    if (out)
        const int NPAGES = 10;
        int page;
        for (page = 0; page < NPAGES; page++){
            uint32 imagelength = 100;
            uint32 imagewidth=200;
            uint8 * buf;
            uint32 row, col, n;
            uint16 config, nsamples = 3;
            config = PLANARCONFIG_CONTIG ;

            TIFFSetField(out, TIFFTAG_IMAGELENGTH, imagelength);
            TIFFSetField(out, TIFFTAG_IMAGEWIDTH, imagewidth);
            TIFFSetField(out, TIFFTAG_SAMPLESPERPIXEL, nsamples);
            TIFFSetField(out, TIFFTAG_BITSPERSAMPLE, 8) ;
            TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(out, imagewidth*nsamples));

            /* We are writing single page of the multipage file */
            TIFFSetField(out, TIFFTAG_PAGENUMBER, page, NPAGES);
            printf("writing %d x %d, nsamples %d", imagewidth, imagelength, nsamples);

            buf = new uint8 [imagewidth*nsamples] ;

            for (row = 0; row < imagelength; row++){

                for(col=0; col < imagewidth; col++){
                    for(n = 0 ; n < nsamples ; ++n)
                        //writing data -- replace with your own data
                        buf[col*nsamples+n] = page*row % 255 ;
                if (TIFFWriteScanline(out, buf, row) != 1 )
                    printf("Unable to write a row\n") ;
                    break ;
    return 0;

To compile it in Mac (assuming you have Macport), just run this in command line...

g++ main.cpp -I /opt/local/include -L/opt/local/lib -ltiff

... Enjoy! 

Wednesday, August 26, 2015

Book is out :)


You can buy a copy at: http://www.amazon.com/OpenGL-Data-Visualization-Cookbook-Raymond/dp/1782169725

The book comes with all source code that you would need to build applications using OpenGL in Windows, Linux, Mac OS X or Android! I've also put in some effort to link OpenCV and the Android Sensor Manager in Android, and so others who are interested in building interactive application have a simple-to-use code to get started.

With a little bit of hack, you can connect the code base to any depth sensor and OpenCV! That allows you to build lots of applications easily.

Although the book is out, there are still lots I would like to cover, e.g., OpenGL lighting techniques, Compute Shader, and OpenCL/CUDA! Those are super useful for data visualization! and will be covered if there is a great sale to this book this time.

Wednesday, March 25, 2015

Meta Update & New Book

Augmented Reality eyeglasses is definitely a hot topic these days. At Meta, there are lots of press, and I will start posting ones that I had interview with next.


Also, now my new book is ready for pre-order. You can find the latest work here, especially on the OpenGL + OpenCV side. This book is aimed for beginners who want to know how to get started. I can always answer more difficult problem here if anyone asks.


More to come! Stay tuned...


Sunday, November 10, 2013

Meta: Space glasses

Hi all,

To no surprise I'm now the CTO of meta (https://www.spaceglasses.com/).

Currently, we are hiring individual who are talented and motivated!


Feel free to drop me a line and ...

DEMO! or Die ;)