The Goal
The goal of this project is to compress an image in parallel using a cluster of workstations. The image(s) to be compressed are gray scale with pixel values between 0 and 255. There are different techniques for compressing images. They are broadly classified into two classes called lossless and lossy compression techniques. As the name suggests in lossless compression techniques, no information regarding the image is lost. In other words, the reconstructed image from the compressed image is identical to the original image in every sense. Whereas in lossy compression, some image information is lost, i.e. the reconstructed image from the compressed image is similar to the original image but not identical to it. In this project we are using lossless compression, parallell lossless differential pulse code modulation.
Extra Features
There are two extra features to this program. I have added an image multiplier so that an image of any size can be created. I have also created an application to draw the image so I don't need to use Matlab. The image drawer can be run using the imagedrawer bash script. It currently only supports Linux with GTK.
Multiplying an Image
You can multiply the size of an image using the Image Multiplier. The source/application are in the Downloads section as well as the related files for this project. To use it, simply get the source and run make. Then execute the command image_multiplier. The usage for the image multiplier is as follows:
./image_multiplier [read file] [write file] [image size] [multiplier]
Running a Compression
There are several ways to run compression on an image. The first way is to do a make all. This will rebuild the project and run a compression with 2 processors on a 256x256 image. The second way is to create a *.pbs file that looks like the following:
--
#!/bin/bash
#PBS -N assignment1-2-256
#PBS -l walltime=0:05:00
#PBS -l nodes=2
#PBS -q @nic-cluster.cc.umr.edu
/usr/bin/mpiexec -mpich-p4-no-shmem $HOME/cs387/project1/driver $HOME/cs387/project1/data1.256 256
--
The best way to run a single script is to use the run_builder script. The run builder script creates a pbs file like the one above. For example, if you wanted to run the above script with the run builder all you would type is./run_builder 2 256 | qsub.
Running a Series of Compressions
Release Status
Curently in development: 1.0 Alpha
Version 1.0 Alpha Progress
There are a total of 18.00 completed units for this project. There are 18.00 units expected for this major version.
Technologies Used
C
C++
Java
©2009 Doubling Technologies
Yolan