GithubHelp home page GithubHelp logo

mnhrdt / imscript Goto Github PK

View Code? Open in Web Editor NEW
114.0 18.0 26.0 9.53 MB

a collection of small and standalone utilities for image processing, written in C

Home Page: https://git.sr.ht/~coco/imscript

License: Other

C 94.99% Shell 0.59% MATLAB 0.02% C++ 1.21% Makefile 2.40% Lex 0.01% M 0.01% Python 0.07% NASL 0.04% HTML 0.05% JavaScript 0.59%
suckless image-processing unix mathematical-morphology images cli pde filtering noise c

imscript's Introduction

IMSCRIPT
========


1. OVERVIEW

This is a collection of small independent image processing utilities in C.
These tools allow to do image processing from the comfort of the command line.

There is an online tutorial: http://gabarro.org/ccn/itut/i.html


2. 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.


3. IMPLEMENTATION

The graph of dependencies between files is as disconnected as possible.
Most programs use the functions from "iio.c" for reading and writing 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").


4. COMPILATION

make -j        # build only the core tools
make full -j   # build all tools (including miscellaneous and interctive ones)


5. 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 on section "misc" require furthermore libgsl and libgslcblas.


6. 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).


7. SUMMARY OF PROGRAMS

* 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
	- sauto: apply a signed palette
	- dither: binarize an image by error diffusion
	- iion: copy named input to named output (useful to change file format)

* Accumulators: combine several images into one
	- plambda: apply an arbitrary pixel-wise expression
	- veco: generic pixel-wise accumulators for gray images, gray output
	- vecov: generic pixel-wise accumulators for color images, color output
	- vecoh: generic pixel-wise accumulators for gray images, color output
	- tbcat: concatenate images vertically (top-bottom)
	- lrcat: concatenate images horizontally (left-right)

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

* 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

* 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

* Frequecy domains:
	- fft: discrete Fourier transform (direct)
	- ifft: discrete Fourier transform (inverse)
	- dct: discrete cosine transform
	- dht: discrete Hartley transform
	- autocorr: centered autocorrelation (spatial domain, but still)

* 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

* Multi-program suites:
	- siftu: operations for sift keypoints (transform, match, etc)
	- tiffu: operations for tiff files (access tiles, sub-images, etc)
	- fontu: operations for bitmapped fonts

* 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

* Interactive programs:
	- cpu: display an image with panning, zooming, contrast changes, and dft
	- rpcflip: flip between several geo-referenced 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 side by side
	- icrop: interactive crop

	NOTE: all interactive programs admit two backends.  By default, they
	open an x-window.  But they can also be compiled as "name_term" and
	then a simpler backend without graphical dependencies is produced.
	This backend us based on ANSI control sequences and utf-8 characters
	and should work on many modern terminals.  This backend is useful for
	interactive image visualization behind ssh.  Note that mouse support
	is still lacking for the ANSI backend, only the keyboard works.

imscript's People

Contributors

carlodef avatar dyoussef avatar gfacciol avatar mnhrdt avatar nilx avatar npd avatar rdguez-mariano avatar tbriand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imscript's Issues

lrcar, tbcat output

Hi.
imscript compiled with jpeg, webp, png, tiff support, but outputs only for ppm, png, tiff.
lrcat file1.ppm file2.ppm -o combo.webp
lrcat file1.ppm file2.ppm -o combo.jpg(jpeg)

file combo.webp
combo.webp: NumPy data file, version 1.0 ...

Also: how to make output to stdout?

Thanks.

Errorin make file

When i am trying to use make command, it generates error for certain line. What should i do?

src/rpctk.c:79:13: error: array type has incomplete element type ‘struct rpc’
79 | struct rpc r[1];
| ^
src/rpctk.c: At top level:
src/rpctk.c:95:36: warning: ‘struct rpc’ declared inside parameter list will not be visible outside of this definition or declaration
95 | static double rpc_fitL_full(struct rpc *r, double *ijhll, int n)
| ^~~
src/rpctk.c: In function ‘rpc_fitL_full’:
src/rpctk.c:129:3: error: dereferencing pointer to incomplete type ‘struct rpc’
129 | r->scale[0] = (max_i - min_i) / 2;
| ^~
src/rpctk.c: In function ‘main_rpctk_fillL’:
src/rpctk.c:211:13: error: array type has incomplete element type ‘struct rpc’
211 | struct rpc r[1];
| ^
src/rpctk.c: In function ‘main_rpctk_fitL’:
src/rpctk.c:251:13: error: array type has incomplete element type ‘struct rpc’
251 | struct rpc r[1];
| ^

macOS build error

Hi
macOS Apple M1
make -j
src/iio.c:569:8: error: duplicate case value '8'
case sizeof(long double): return IIO_TYPE_LONGDOUBLE;
^
src/iio.c:568:8: note: previous case defined here
case sizeof(double): return IIO_TYPE_DOUBLE;
^
1 error generated.

Regards.

Help regarding bin folder generation

Can anyone please upload the bin folder generated after execution of make command. I am getting an error and i am not able to resolve that.
Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.