Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
mnhrdt committed Aug 7, 2017
1 parent bd0a4ed commit 9781766
Show file tree
Hide file tree
Showing 2 changed files with 156 additions and 17 deletions.
143 changes: 141 additions & 2 deletions README
@@ -1,3 +1,142 @@
IMSCRIPT
========


OVERVIEW

This is a collection of small independent image processing utilities in C.
See the file "doc/tools.txt" for an attempt to unify this mess.
Most use the "iio_*" functions for opening and saving images.
These tools allow to do image processing from the comfort of the command line.


PHILOSOPHY

Classic unix philosophy, with some specificities for images:

- each program does one thing and does it well
- programs work together via pipes
- offer mechanism, not policy
- images are arrays of numbers, representable by text files
- image metadata is always ignored (not used, not propagated)

Notice that imscript programs will read any common image format, but
will only write asc, pnm, png, and tiff.

See doc/misc/nipl.txt for a more complete description of the underlying
philosophy.


IMPLEMENTATION

The graph of dependencies between files is as disconnected as possible.
Most programs use the functions from "iio.c" for opening and saving images.
The interactive tools use the functions from "ftr.c" for the gui.
Some files may be directly included into others (e.g., "random.c").



COMPILATION

make full -j # build all the tools (including the interctive ones)
make -j # build only the basic tools


PREREQUISITES

The only real prerequisites are a C compiler and libfftw3f.

It is useful if you have libtiff, libjpeg, and libpng for input/output.

For the interactive tools you will need furthermore libX11.

Some tools require furthermore libgsl and libgslcblas.



INSTALLATION

There is no automatic installation. After compilation, just copy or link the
desired executables into your PATH (or add imscript/bin into the path).



SUMMARY OF PROGRAMS

1. Filters: read one image and write one image of the same size

- blur: convolve an image by a shift-invariant user-specified kernel
- morsi: apply a morphological operation with a user-specified element
- qeasy: re-scale the dynamic range of an image
- qauto: re-scale the dynamic range of an image, automatically
- palette: colorize a grayscale image using a palette
- dither: binarize an image by error diffusion
- iion: copy named input to named output (useful to change file format)

2. Accumulators: combine several images into one
- plambda: apply an arbitrary pixel-wise expression, given explicitly
- veco: generic pixel-wise expressions for gray images, gray output
- vecov: generic pixel-wise expressions for color images, color output
- vecoh: generic pixel-wise operations for gray images, color output
- tbcat: concatenate two image (top-bottom)
- lrcat: concatenate two image (left-right)

3. Queries: extract data from one image
- imprintf: print a formatted string of image data
- ghisto: common histogram
- contihist: continuous histogram
- viewflow: represent a vector field using a color code
- flowarrows: represent a vector field using arrows

4. Interpolators: fill-in the holes of one image
- nnint: nearest neighbor interpolation
- bdint: interpolation from the boundary of each hole
- simpois: poisson, laplace and biharmonic interpolators
- amle: absolutely minimizing lipschitz extension

5. Rescalers: produce an image of different size or shape
- downsa: zoom out by combining blocks of pixels
- upsa: zoom in by interpolation inside cells
- ntiply: zoom in by pixel replication
- imflip: rotate or transpose the image domain
- homwarp: apply an arbitrary homography to the image domain

6. Frequecy domains:
- fft: discrete Fourier transform (direct)
- ifft: discrete Fourier transform (inverse)
- dct: discrete cosine transform
- dht: discrete Hartley transform

7. Point processing:
- pview: display points or matches as an image
- ransac: generic ransac implementation
- srmatch: multi-scale sift matching for registration
- plyflatten: project 3D points into a 2.5D representation
- colormesh: build 3D mesh from calibrated 2.5D representation
- ijmesh: build 3D mesh from non-calibrated 2.5D representation

8. Multi-program suites:
- siftu: operations for sift keypoints
- tiffu: operations for tiff files
- fontu: operations for bitmapped fonts

9. Miscellaneous:
- synflow: generate a synthetic optical flow field
- ccproc: connected component filtering
- ihough2: generic hough transform (for straight lines)
- tdip: cylindrical hough transform (for sinusoids)
- rpc_pm: patch match in the altitude domain
- distance: distance function to a given set of points
- sdistance: signed distance to the boundaries of a binary image
- ppsmooth: periodic + smooth image decomposition
- pmba2: poor man bundle adjustment
- tcregistration: register two images by translation

10. Interactive programs:
- fpan: display an image with panning, zooming, and contrast changes
- fpantiff: like fpan, but understands image pyramids
- rpcflip: display several calibrated satellite images
- powerkill: fourier-domain band-pas filter editor
- epiview: visualize the epipolar geometry between two images
- viho: interactive homographic visualization
- dosdo: look at an image and its fourier transform
- icrop: interactive crop
- vnav: visualize cylindrical images
30 changes: 15 additions & 15 deletions src/blur.c
Expand Up @@ -488,21 +488,21 @@ static char *help_string_long =
" or: cat in.tiff | blur KERNEL SIZE > out.tiff\n"
"\n"
"Kernels:\n"
" square a square block of the given radius\n"
" disk a rasterized disk of the given radius\n"
" gauss a Gaussian kernel of the given variance\n"
" laplace a Laplace kernel of the given variance\n"
" cauchy a Cauchy kernel of the given scale\n"
" q Log-cauchy kernel\n"
" u \"good-caucy\"\n"
" p powerlaw\n"
" a pareto\n"
" i inverse distance (useful for Shepard interpolation)\n"
" y inverse distance (with different parameter normalization)\n"
" r Land\n"
" z inverse log-distance\n"
" t r^2 log(r) (useful for biharmonic interpolation)\n"
" o log(r)\n"
" square a square block of the given radius\n"
" disk a rasterized disk of the given radius\n"
" gauss a Gaussian kernel of the given variance\n"
" laplace a Laplace kernel of the given variance\n"
" cauchy a Cauchy kernel of the given scale\n"
" q Log-cauchy kernel\n"
" u \"good-caucy\"\n"
" p powerlaw\n"
" a pareto\n"
" i inverse distance (useful for Shepard interpolation)\n"
" y inverse distance (with different parameter normalization)\n"
" r Land\n"
" z inverse log-distance\n"
" t r^2 log(r) (useful for biharmonic interpolation)\n"
" o log(r)\n"
"\n"
"Options:\n"
" -z zero boundary\n"
Expand Down

0 comments on commit 9781766

Please sign in to comment.