Download IDL routines:

The license of most of the programs is the GNU public licence (GPL), which means that you can use, modify and copy them as much as you want, as long as you assure the accessibility of the source code for everyone. The usage in closed-source projects is restricted, for details refer to the GPL.


The producers of IDL did some changes to the complex atan(...) routine. As a result, several routines using the old atan(...) function are not working correctly on IDL >= 5.5. I'll try to correct this, but for the moment please be careful. In general, all calls where atan(...) is used to calculate the phase of a complex number, you have to replace res = atan(x) by res = atan(real_part(x),imaginary(x)).

Name

Description

Author

Type: SAR Interferometry



fe_remove.pro

Removes a linear flat-earth component from a complex interferogram

A. Reigber

ingen.pro

Generates interferogram / coherence maps of coregistrated SAR images. Includes presumming, selection of coherence window size and block processing for minimising the memory consumption.

A. Reigber

koamp.pro

Fast amplitude coregistration using FFTs. Precision 1 Pixel

A. Reigber

koreg.pro

Automatic co-registration for two complex SAR images with subpixel precision. The used algorithm is based on coherence optimisation. Useful only for spaceborne images where the offset between the images is constant.

A. Reigber

kosub.pro

Coregistration with subpixel precision (based on coherence optimisation).

A. Reigber

ls.pro

Quite fast unweighted least square phase-unwrapping (using cosine transform and mirror expansion) in 27 lines of IDL. For good performance array size should be 2^N+1 (yes, really, i.e. 1025 or 4097 for example).

A. Reigber

mls.pro

Unweighted multigrid least square phase uwrapping, based on Gauss-Seidel relaxations. Should work on any array sizes.

A. Reigber

mlsw.pro

Weighted multigrid least square phase uwrapping, based on Gauss-Seidel relaxations. For masking out low-coherent areas, use low weighting values.

A. Reigber

qef_filter

Absolutely genius noise filter for interferometric phase images. Based on "quasi ergodic fluctuation modelling" - I never got exactly what it is. Unluckily my friend Youri does not want to give away the source-code of this wonderful algorithm, but you can have a binary (IDL 5.2 save file). Usage description can be obtained by "a=qef_filter()".

Y. Saveliev

make_coh.pro

calculates the complex coherency between 2 images

S. Guillaso

make_interf.pro

calculates the interferogram between 2 images

S. Guillaso

smooth_pha.pro

Simple boxcar filter for interferometric SAR images

A. Reigber

Type: SAR Polarimetry



covariance.pro

Calculates the covariance matrices of a polarimetric data set.

A. Reigber

decomp.pro

Computes for a fully polarimetric SAR data set (given in HV basis) the 3 standard decompositions (Borgeaud, Pauli, Sphere-Diplane-Helix) and saves the output into a tiff image.

M. Hellmann

entalpani.pro

Calculates the entropy, the anisotropy and alpha maps.

A. Reigber

lee_pol.pro

Vectorial Lee filter for multiplicative image noise based on the analysis of local statistics. Used for speckle reduction of complex polarimetric SAR images.

A. Reigber

lee_pol_ref.pro

Refined vectorial Lee filter for multiplicative image noise based on the analysis of local statistics. Better preservation of image structures than the original Lee filter by the use of directional windows. Used for speckle reduction of complex polarimetric SAR images.

A. Reigber

pol_eaa.pro

Calculates the polarimetric entropy/anisotropy/average alpha angle from the eigenvectors and eigenvalues of the coherency matrix.

A. Reigber

pol_eigen.pro

Fast calculation of eigenvectors and eigenvalues of a complex 3x3 matrices using LAPACK. Used in polarimetric eigenvector decompositions.

A. Reigber

Type: Filters



g_smooth.pro

Fast gaussian smooth for float/complex arrays.

A. Reigber

lee.pro

Lee filter for multiplicative image noise based on the analysis of local statistics. Very useful for speckle reduction of SAR amplitude images.

A. Reigber

lee_ref.pro

Refined Lee filter for multiplicative image noise based on the analysis of local statistics. Better preservation of image structures than the original Lee filter by the use of directional windows.

A. Reigber

rmnanq.pro

Replaces all "nanq" (not a number) in an array with zeros. I always get these bastards.

A. Reigber

rmczero.pro

Replaces all complex(0,0) with complex(0.1,0.1). Useful if you have to divide by something complex...

A. Reigber

smooth2d.pro

Just like smooth for a 2D-array, but with the possibility of a rectangular box sizes, for example 9x3.

A. Reigber

Type: Plotting



disp_save2.pro

Opens an image file written "writedata.pro" and generates an nice annotation bar as well as the histogram and display / saves all that. Needs several other routines.

V. Alberga

dot.pro

Plots a nice progress bar out of dots. Useful in longer loops.

A. Reigber

graffer.tar.gz

This is an excellent IDL widget plotting package for 1D graphs. Something similar to insight, but in contrary to that really useful. Visit also the graffer homepage.

James Tappin

hist_tot.pro

Plots the histogram of an image or array

V. Alberga

horiz_colorbar.pro

Displays horizontal colorbar corresponding to a chosen image

V. Alberga

left_colorbar.pro

Displays vertical colorbar corresponding to a chosen image

V. Alberga

legend.pro

This procedure makes a legend for a plot. The legend can contain a mixture of symbols, linestyles, Hershey characters (vectorfont), and filled polygons (usersym). Very useful.

F.K. Knight and others

print_h_cb.pro

Similar to "horiz_colorbar.pro". Didn't got the difference :-)

V. Alberga

print_l_cb.pro

Similar to "horiz_colorbar.pro". Didn't got the difference :-)

V. Alberga

print_r_cb.pro

Similar to "horiz_colorbar.pro". Didn't got the difference :-)

V. Alberga

pson.pro

Switch on postscript device for plotting.

A. Reigber

psoff.pro

Switch back to X device.

A. Reigber

right_colorbar.pro

Displays vertical colorbar corresponding to a chosen image

V. Alberga

tva.pro

Displays arrays (mostly) automatic. No more long interactive typing.

A. Reigber

tvimage.pro

Display an image on the display or in a PostScript file. Needed by "disp_save2.pro"

D. Fanning

win2pr.pro

Sends the content of an IDL graphic window directly to the printer.

A. Reigber

Type: Array handling



cadd_arr.pro

Generates a new 2D array out of two given 1D arrays. The result is an additive overlay of the two input arrays.

A. Reigber

cmul_arr.pro

Generates a new 2D array out of two given 1D arrays. The result is an multiplicative overlay of the two input arrays.

A. Reigber

findgen2d.pro

Like with findgen, a 2d floating point array is generated. But here the slopes in x and y can be specified.

A. Reigber

mbox.pro

Generates the one-dimensional relative index values of a rectangular box in a two-dimensional array. Used for fast addressing of pixel neighbourhoods.

A. Reigber

pleh.pro

Like the help command, but gives more information about the array. Quite handy when debugging programs.

A. Reigber

rebinc.pro

Rebin for complex arrays (only 1,2 and 3 dimensional)

A. Reigber

rebinfft.pro

Performs a rebin of a wo-dimensional complex array from and to any dimension using FFT's

A. Reigber

scale.pro

Resize any 1,2 and 3-D array with congrid. Just to lazy to type always cubic=0.5.

A. Reigber

subshift.pro

Shift 2D complex array. Just like the normal shift, but with the possibility of subpixel shifts, i.e. "a=subshift(b,7.3,1.9)"

A. Reigber

turnfile.pro

Rotate very big arrays on the harddisk with a defined memory consumption. Useful if line by line operations have to be performed in the second index of a big array. Maybe it has to be adapted to your own data format.

A. Reigber

Type: Math



adj.pro

Calculates the adjoint (complex conjugate transpose) of an array

A. Reigber

derivate.pro

Calculates the derivation of an one-dimensional array

A. Reigber

gauss.pro

Calculates the Gauss distribution

A. Reigber

hamming.pro

Calculates the Hamming weighting function

A. Reigber

integrate.pro

Integrates an one-dimensional array

A. Reigber

oddeven.pro

Gives back if a number is even (2) or odd (1)

A. Reigber

primfak.pro

Calculates the prime factors of a number. I used this to estimate the time of a FFT (proportional to the sum of the prime factors of the array length).

A. Reigber

round2.pro

Rounds a value to a given number of decimal places

A. Reigber

sign.pro

Calculate the signum function.

A. Reigber

xprod.pro

Calculates the vector product between two (3x1) vectors

A. Reigber

Type: I/O



load_slc.pro

Loads single look complex SAR data sets (SLC) in 4 different formats. All 4 formats related to data of DLR's E-SAR system.

M. Hellmann

load_pol.pro

This routine loads the 4 single-look-complex (SLC) channels of a fully polarimetric SAR data set in 4 different formats (analogue to load-slc.pro).

M. Hellmann

rarr.pro

Read an array written by sarr.pro. You can read only the header or alternatively a certain block out of the file. On-the-fly decompression.

A. Reigber

readmem.pro

Opens and reads datasets saved to file using the writedata

V. Alberga

sarr.pro

Save any array to a file. Read back with rarr.pro. I hate the save/restore function of IDL for this purposes as restore overwrites the saved variable name. With sarr/rarr you can save variable "a" and read it back as "b". You can also include a comment into the file, write only the header and perform on-the-fly compression with gzip.

A. Reigber

writedata.pro

Write a file as unformatted .dat adding a 6 longword header containing informations about the data itself

T. Boerner

write_xmgr.pro

Write array to disk in a format understandable by xmgr/grace. Sometimes this is more confortable for plotting than the stupid IDL routines or using the even more stupid insight.

A. Reigber





Have another interesting routine? Please mail it to me if you like it to be included.