NOTE: The software in these directories uses Numerical Recipes routines.  You must have a license to run their software.  The software in these directories is offered free of charge, but use at your own risk.  No guarantees are made about the software.  You get the point....  So, to comply with Numerical Recipes, I have pulled all of their routines (except those that are released to the public, e.g., the daubachies wavelets) out of the libraries.  Each routine is rather easy to insert into the respective library.  Just edit subset_lib.c and cut/paste the Numerical Recipes routine into the library.



 

Almost all of the programs included in these directories are for image processing, i.e., processing of two-dimensional arrays of data.  The format of the input data is binary and each row of data follows the next.
For example:  original data=  w1 w2 w3
                                               x1  x2  x3
                                               y1  y2  y3
                                               z1  z2   z3
then the array should be stored on disk as: w1 w2 w3 x1 x2 x3 y1 y2 y3 z1 z2 z3.   So each file does not have any header information, just all data values.  Each program also expects you to know the width of the input data, in this case width = 3.

The software is organized in small subsets, with libraries for each subset.  Many programs call routines in the libraries of a different subset.  Thus, you'll need to have subset_lib.o files in each subset directory.  Makefiles are located in each subdirectory to help with compiling.

Occassionally, I'll change or add to each subset so just check the date on the filename to see if its been updated.

Here are the programs...


Memory Allocation:  These are taken directly from Numerical Recipes and are freely available on their web site.  In general, I use arrays that range from 1...N rather than 0...N-1.

Statistics:  These are fairly straightforward routines, but they are extensively called by other subsets.

Fourier Analysis:  Two key routines are presented, (1) forward and inverse transforms and (2) correlation coefficient processing of fourier transformed data.  CCFILTER is a script that shows the order of processing.

Wavelet Analysis:  Forward and inverse transforms are available as well as various filtering methods.

Moving Window Processing:  This is really the most important set of programs.  Often, its more convenient to process small chunks of data, for example, texture analysis is best computed from small moving windows.  And, I've found that Fourier correlation coefficient analysis works best in small moving window.  And, there's a median despiking routine in the directory as well as a polynomial interpolation method to fill in the despiked regions.  Check 'em out.

Miscellaneous Programs:  Use these to convert between big and little endian, reading tapes, and flipping two dimensional arrays.  Pad_cut is a program that is used to cut out portions of an array, and/or to pad around the sides of given image.  Pad_cut works on byte, float, and complex data (NOTE:  if working with byte data and you want to pad, then make certain you are using the correct padding value; ie, from -128 to 128 or 0 to 256, pad_cut is set up to work with unsigned chars so you may have to alter it if you want to work with signed chars).

Scatterometry Applications:  These are programs that I've written (based on ESA's reading routines) for creating two dimensional arrays of scatterometer data.  WNF_MAKEGRID is a script that shows the processing order.