|
|
Matlab is a very powerful programming and command-line language that
is ideal for processing radar data. It handles complex datatypes naturally
and now uses industry standard numerical libraries.
The toolbox routines were tested on Matlab version 6.5(R13) for GNU/Linux,
Windows 2000 and Solaris. In principle, with minor modification, they
should run on any version
greater than V5.0 under any supported operating system,
and
with
no additional
toolboxes - please mail me if you find any problems. Some speed-critical
routines are coded in C,
linked to Matlab via a MEX interface. Binary .mexglx (GNU/Linux)
, .dll
(Windows 2000 onwards) and .mexsol (Solaris) files have been
provided. All source code is present with a basic `makefile' so it should
compile
on other platforms (such as
OS
X) using
gcc, although this has not been tested.
What Can Be Done?
The code is a work in progress, and I would appreciate any bug reports,
comments or suggestions.
It provides a set of free radar tools to process, simulate
and analyse signal and image
data.
It
is especially
useful for polarimetric radar such as the NASA/JPL AirSAR. There are
many functions, including a MEX interface to a general statistics library,
but the following methods are used in demonstration programs:
- Open, decompress and correct AirSAR files (compressed Stokes Matrix
format) in old or new format.
- Generate random fully polarimetric samples with arbitrary covariance
matrices.
- Theoretical polarimetric distributions such as coherence, phase and
intensity ratios.
- Maximum likelihood segmentation of multi-frequency, polarimetric
data.
- Automatic polarimetric classification based on Expectation Maximisation
of the Wishart distribution.
- Calculation of optimum classification accuracy between polarimetric
classes.
- Generate correlated gamma random samples with desired correlation.
- K distribution generation, estimation and theory (with optional thermal
noise).
- Weibull distribution generation, estimation and theory.
- Target detection theory based on Swerling models.
- Theoretical performance analysis for CA, CAGO,
CASO, OS and TM Constant False Alarm Rate processors.
- CA, CAGO, CASO, OS and TM CFAR processors available as fast mex code.
- Change detection theory for homogenous speckle fields.
- General statistical functions for exponential, gamma, Weibull, F distribution,
K distribution and K-distribution in thermal noise.
Online Help (included in toolbox
download)
Before You Begin
Most of the code has been prepared and commented in my own time. Similar
to any academic publication, if you use it I would appreciate an acknowledgement
in some way to Glen Davidson at www.radarworks.com . Any derivative work
must retain the file headers. It is provided in good faith,
but
bugs
are
always present in any software -
the onus is on you to check the routines do what you want. Error checking
is kept to a minimum in the m files as they all follow the GIGO
principle (Garbage In, Garbage Out) so please check the format for input
and output in the relevant web pages/headers/instructions.
The C/MEX files have a reasonable amount of error checking
to prevent needless crashing, but Matlab will usually allow you to save
your session even after a MEX crash. Of course if you pass empty
arrays, Infs, Nans, structures, or incorrectly pass real/complex arrays
then the results are indeterminate.
Memory Requirements
The numerical functions, file operations and simulation routines can
function in a basic Matlab environment of 64MB. For processing radar
data
you need lots of memory, none of the programs use `tiling' routines,
but memory is so cheap now you should have a minimum of
512MB to do serious work.
Microsoft Windows vs Linux
Some of the C processing routines allocate and destroy memory
very aggressively (outside of Matlab for speed). Windows 95/98/Me do
not
handle memory efficiently, Windows 2000 and XP are much better but blue
screens are still a weekly experience.
Why not try Linux? It's faster, has free compilers, is very stable and
has almost no viruses. It's got Mathematica
as well and the publishers of Matlab (Mathworks)
will even let you use a single
Matlab license on a dual-boot machine. Also, Intel now produce
a free (non-commercial) optimised
Linux compiler that can almost double the speed of floating point
routines on an Intel P4 using the SSE2 instructions. Other useful
open-source
software includes LaTeX, The
Gimp, mozilla and OpenOffice
all under Linux and Windows.
|