Statistical Programming, Computation, and Visualization in C/C++
|Due Date: Fri., Mar. 12, 2004
(HW_3) In this project we'll extend the work of HW_2
a step further. Now we need to develop a self contained software package
that reads in, displays, filters and compares the raw input and the filtered
output signals. As before at least two of these file formats, may be more,
should be allowed: RAW, PGM, GIF or JPG images. The first type could be of
any dimension, whereas the other (rasterized) formats are inherently 2D.
The filters should include Gaussian or Uniform smoothing, in 1D and 2D,
and statistical normalization [Output = (Input-Mean)/SD], in any dimension.
In your ZIP file that you submit this time, please include an image-snapshot
of your interface showing the input, the output and some numeric measure
comparing the two (e.g., SNR, Ratio image, difference image, etc.) [Extra challenge: In the case of the raw image data type (*.img), can you make the parser,
filter and display in template form to accommodate all possible primitive
data types (e.g., byte, short, int, float, etc.)?]
Again the user specifies
the number of dimensions, each dimension size and the I/O file names on
the command line at execution time. As before, we need to provide a working packaging
makefile or a run.bat BAT file that allows compiling and testing/running the code. Skeleton of this type of package is available in this ZIP file.
One sample dataset we can use is included in the zip file, however, we should
also test the algorithms and implementations using the 2 3D volumes we have
in the data folder of the HW_2 ZIP file
(one isotropic and one non-isotropic volumes). Here is an example of
how to require, read and process the input arguments in a well designed code
using flags (compile and test run the source code in this ZIP file).
We should always try to follow this programming practice as it makes the run-time
execution of your source code much more flexible and less error proned. I have also zipped a set of 1D, 2D and 3D data in this ZIP file, read the README file for a complete description of the data, formats, how to view it, etc. Here is a revised version of
the skeleton package that separates the CPP_Interface from the actual CPP_Filter.
The latter one may be precompiled or build by someone else. The former one
just provides an independent interface between the Java-JNI and the CPP filter.
Last modified on