This is a project to implement some Lossless Data Compression Algorithms including Huffman Coding, Adaptive Huffman Coding, Lempel-Ziv Coding and Run-length Coding.
This is a project to implement a simple Video Game. As shown in the screen shots below, the program can take a raw video file, play the video, implement several user interaction.


play the video & split video in tiles

randomize the tiles & use mouse to solve the puzzle
This is a project to test the Reverberation Time(T60) of sound. In order to do that, my teammates and I have process the audio signal using different technique.
This is a project to implement JPEG Compression and three different Delivery Mode. The program can take any 352x288 rgb image file, implement JPEG compression on it, and display the compressed image according to three Delivery Mode: Baseline Delivery, Progressive Delivery using spectral selection or Progressive Delivery using successive bit approximation. These three delivery modes are very useful in practical transmition systems. It allows people to transmite data in desired order depending on different bandwidth limitation.
Baseline Delivery. Set latency to 20 milliseconds to simulate practical transmition systems
Progressive Delivery using spectral selectrion. Set latency to 20 milliseconds to simulate practical transmition systems
Progressive Delivery using successive bit approximation. Set latency to 10 milliseconds to simulate practical transmition systems
Implementation of QM coder, Lloyd-Max Scalar Quantizer, Lloyd-Max Vector Quantizer and Tree Structured Vector Quantizer using C.
Term Paper
Implementation of JPEG and MPEG, including some post-processing techniques, such as JPEG de-blocking, rate control of JPEG.
Bluescreen Techniques and Image Mirroring

Original Foreground Image Background Image Mirroring and Stitching Final Image
Image Enhancement: I used two Image Enhancement Techniques, Full Range Linear Scaling and Histogram Equalization. The result of Histogram Equalization is shown below. For more results, please refer to the Report.
Noise Removal: I used three noise removal techniques, Linear Noise Cleaning Method, Outlier Removal and Median Filtering. The result of Median Filtering is shown below. For more results, please refer to the Report.
Original Image Enhanced Image Original Image Noise Removed
For this project, I used K Means Clustering Algorighm to do Image Segmentation. First, I used OpenCV library function cvKmeans2() to implement the clustering algorithm on RGB-based images. Furthermore, I modified the function source code in OpenCV and made the function available for HSV-based images as well. Results are shown below.

Original Images
RGB-Based Image Segmentation using K-Means Clustering Algorithm
HSV-Based Image Segmentation using K-Means Clustering Algorithm
Used 1st-Order Gradient Method and 2nd-Order Derivative Method to do edge detection. Also implemented some pre-processing and post-processing techniques, including Image Enhancement, Noise Removal, Morphological Processing.

Original Images Edges Detected
Implemented Shrinking, Thinning, and Skeletonizing Process

Original Images Shrinking Thinning Skeletonizing
Converting a gray-level image into a binary image. Used four different Dithering Techniques.
Original Images Dithering Matrix Floy-Steinberg's Error Diffusion Method
For any input image, use Canny Edge Detector to fine all the edge points. Use Hough Transform to find all the main lines on an image.
Original Images Lines Detected
Currently, I'm working on projects which includes Geometric Modification, Texture Analysis and Segmentation, Optical Character Recognition.