publiclab/image-sequencer

View on GitHub
docs/MODULES.md

Summary

Maintainability
Test Coverage
Documentation of various Modules
===

List of Module Documentations

1.  [Add QR](#Add-QR-module)
2.  [Average](#average-module)
3.  [Blend](#blend-module)
4.  [Blur](#blur-module)
5.  [Brightness](#brightness-module)
6.  [Canvas-Resize](#canvas-resize-module)
7.  [Channel](#channel-module)
8.  [Colorbar](#colorbar-module)
9.  [Colormap](#colormap-module)
10. [ColorTemperature](#color-temperature)
11. [Contrast](#contrast-module)
12. [Convolution](#convolution-module)
13. [Crop](#crop-module)
14. [DecodeQr](#decodeQr-module)
15. [Dither](#dither-module)
16. [DrawRectangle](#draw-rectangle-module)
17. [Dynamic](#dynamic-module)
18. [Edge-Detect](#edge-detect-module)
19. [Exposure](#exposure-module)
20. [FisheyeGl](#fisheyeGl-module)
21. [FlipImage](#flipimage-module)
22. [Gamma-Correction](#gamma-correction-module)
23. [Gradient](#gradient-module)
24. [Grid-Overlay](#grid-overlay)
25. [Histogram](#histogram-module)
26. [Import-image](#import-image-module)
27. [Invert](#invert-module)
28. [MinifyImage](#minify-image)
29. [Ndvi](#ndvi-module)
30. [Ndvi-Colormap](#ndvi-colormap-module)
31. [NoiseReduction](#noise-reduction)
32. [Overlay](#overlay-module)
33. [PaintBucket](#paint-bucket-module)
34. [ReplaceColor](#replacecolor-module)
35. [Resize](#resize-module)
36. [Rotate](#rotate-module)
37. [Saturation](#saturation-module)
38. [Segmented-Colormap](#segmented-colormap-module)
39. [Sharpen](#sharpening-module)
40. [Text-Overlay](#text-overlay)
41. [Threshold](#threshold)
42. [Tint](#tint)
43. [WebGL-Distort](#webgl-distort-module)
44. [White-Balance](#white-balance-module)


## add-qr-module

This module Adds QR corresponding to the given string.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('add-qr',options)
           .run()
```

where `options` is an object with the following properties:
* size : size of QR code in pixels (default 200)
* qrCodeString : input string to generate QR code


## average-module

This module is used for averaging all the pixels of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('average',options)
           .run()
```


## blend-module

This module is used for blending two images. For More info read:  _[wiki](https://en.wikipedia.org/wiki/Blend_modes)_

#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('blend',options)
           .run()
```

where `options` is an object with the following properties:
* offset: step of image with which current image is to be blended(Two steps back is -2, three steps back is -3 etc; default -2) 
* blendMode: Blending mode to use for blending two images by default it uses the given function
* func: function used to blend two images (default : function(r1, g1, b1, a1, r2, g2, b2, a2) { return [ r1, g2, b2, a2 ] })

[More info for different blend modes can be found here](http://docs.gimp.org/en/gimp-concepts-layer-modes.html)


## Blob Analysis

This module uses Opencv.js for detecting and marking blob/region in microscopic images. It requires an opencv.js file to 
be loaded before using the functionalities which is currently being loaded to the webpage via script.It supports both environments, Node.js and browser for processing. 

As the size of opencv.js file is quite large, the future versions will focus on loading it asynchronously, on demand of the the module to optimise performance.

#### Usage
```js
  sequencer.loadImage('PATH')
           .addSteps('blob-analysis')
           .run()
```

## blur-module

This module is used for applying a Gaussian blur effect.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('blur',options)
           .run()
```

where `options` is an object with the following property:
* blur : Intensity of Gaussian blur (0 to 5; default 2)


## brightness-module

This module is used for changing the brightness of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('brightness',options)
           .run()
```

where `options` is an object with the following property:
* brightness : brightness of the image in percentage (0 to 100; default 100)


## canvas-resize-module

This module is used for resizing the canvas of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('canvas-resize',options)
           .run()
```

where `options` is an object with the following property:
* width: final width of the canvas (default 1000)
* height: final height of the canvas (default 1000)
* x: x-coordinate of the top left of the image on the canvas (default 500)
* y: y-coordinate of the top left of the image on the canvas (default 500)


## channel-module

This module is used for forming a grayscale image by applying one of the three primary colors.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('channel',options)
           .run()
```

where `options` is an object with the following property:
* channel : color of the channel (red, green, blue; default green)


## colorbar-module

This module is used for displaying an image with a colorbar.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('colorbar',options)
           .run()
```

where `options` is an object with the following properties:
* colormap : Name of the Colormap(default, greyscale, stretched, fastie, brntogrn, blutoredjet,                 colors16; default: default)
* x : X-position of the image on which the new image is overlayed (default 0)
* y : Y-position of the image on which the new image is overlayed (default 0)
* h : height of resulting cropped image (default : 50% of input image width )


## colormap-module

This module is used for mapping brightness values (average of red, green & blue) to a given color  lookup table, made up of a set of one more color gradients.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('colormap',options)
           .run()
```

where `options` is an object with the following property:
* colormap : Name of the Colormap ( greyscale, stretched, fastie, brntogrn, blutoredjet,                        colors16)


## Color Temperature

This changes the color temperature of the image.
## Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('color-temperature',options)
           .run()
```
where `options` is an object with the following property:
* temperature : temperature between 0 - 40,000 kelvin (default 6000)


## contrast-module

This module is used for changing the contrast of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('contrast',options)
           .run()
```

where `options` is an object with the following property:
* contrast : contrast for the given image (-100 to 100; default : 70)


## convolution-module

This module is used for performing image-convolution.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('convolution',options)
           .run()
```

where `options` is an object with the following properties:
* constantFactor : a constant factor, multiplies all the kernel values by that factor (default :                     1/9)
* kernelValues : nine space separated numbers representing the kernel values in left to right and                   top to bottom format(default : 1 1 1 1 1 1 1 1 1)


## crop-module

This module is used to crop an image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('crop',options)
           .run();
```
Where `options` is an object having the properties `x`, `y`, `w`, `h`. This diagram defines these properties:

![Image](CropManual.png)

#### Defaults

* `options.x` : 0
* `options.y` : 0
* `options.w` : half of image width
* `options.h` : half of image height


## decodeQr-module

This module is used for decoding a QR in image (if present).
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('decode-qr',options)
           .run()
```

## dither-module

This module approximates a color from a mixture of other colors when the required color is not available, creating illusions of the color that is not present actually.

[more info on wikipedia](https://en.wikipedia.org/wiki/Dither)
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('dither',options)
           .run()
```
where `options` is an object with the following property:
* dither : Can select the name of the Dithering Algorithm(default none)
 

## draw-rectangle-module

This module helps to draw a rectangle on the image with a starting and ending corner with the specified thickness and color of the border.
## Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('draw-rectangle',options)
           .run()
```
where `options` is an object with the following properties:
* startingX : starting x position of the rectangle (default 0)
* startingY : starting y position of the rectangle (default 0)
* endX      : last x position of the rectangle (default "width")
* endY      : last y position of the rectangle (default "height")
* thickness : thickness of the border (default 1)
* color     : RGBA values separated by a space (default "0 0 0 255") 


## dynamic-module

This module is used for producing each color channel based on the original image's color.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('dynamic',options)
           .run()
```

where `options` is an object with the following properties:
* red : expression for red channel (R, G, B and A as inputs; default r)
* green : expression for green channel (R, G, B and A as inputs; default g)
* blue : expression for blue channel (R, G, B and A as inputs; default b)
* monochrome: fallback for other channels if none provided (default : r+g+b/3)


## edge-detect-module

This module is used for detecting images.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('edge-detect',options)
           .run()
```

where `options` is an object with the following properties:
* blur :  Intensity of Gaussian blur (0 to 5; default 2)
* highThresholdRatio : Upper Threshold Ratio ( default : 0.2)
* lowThresholdratio : Lower Threshold Ratio ( default : 0.2)


## exposure-module

This module is used for changing the exposure of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('exposure',options)
           .run()
```

where `options` is an object with the following property:
* exposure: exposure value for the new image (-3 to 4; default 1)


## fisheyeGl-module

This module is used for correcting Fisheye or Lens Distortion
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('fisheye-gl',options)
           .run()
```

where `options` is an object with the following properties:
* a : a correction (0 to 4; default 1)
* b : b correction (0 to 4; default 1)
* Fx : x correction (0 to 4; default 1)
* Fy : y correction (0 to 4; default 1)
* scale : The ratio to which the original image is to be scaled (0 to 20; default 1.5)
* x : Field of View x (0 to 2; default 1)
* y : Field of View y (0 to 2; default 1)


## flipimage-module 

This module is used for flipping the image on the selected axis.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('flip-image',options)
           .run()
```

where `options` is an object with the following properties:
* Axis : select the required axis (default : vertical)


## gamma-correction-module

This module is used for applying gamma correction.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('gamma-correction',options)
           .run()
```

where `options` is an object with the following property:
* adjustment : Inverse of actual gamma factor (default 0.2)


## gradient-module

This module is used for finding gradient of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('gradient',options)
           .run()
```


## Grid Overlay

This adds the grid over an image.
## Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('grid-overlay',options)
           .run()
```
where `options` is an object with the following property:
* options.x : The value at which the grid line should start in x-axis.
* options.y : The value at which the grid line should start in y-axis.
* color : Color for the grid on the image.


## histogram-module

This module is used for calculating histogram of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('histogram',options)
           .run()
```

where `options` is an object with the following property:
* gradient : boolean value used to toggle gradient along x-axis (true or false; default true)


## import-image-module

This module is used for importing a new image and replacing the original with it.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('import-image',options)
           .run()
```

where `options` is an object with the following property:
* url : url of the  new image (local image url or data url;default : "./images/monarch.png")


## invert-module

This module is used for inverting the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('invert',options)
           .run()
```


## Minify Image

This module minifies the image using lossy compression that is the image-dimensions are not lost but the size is reduced.

The module supports jpg/jpeg/webp images in browser; but the node version supports all of the types.
#### Usage

```js
sequencer.loadImage('PATH')
           .addSteps('minify-image')
           .run()
```


## ndvi-module  

This module is used for applying ndvi technique to the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('ndvi',options)
           .run()
```

where `options` is an object with the following property:
* filter : filter for NDVI (blue or red; default red)


## ndvi-colormap-module

This module is used for demonstrating ndvi and colormap properties consecutively.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('ndvi-colormap',options)
           .run()
```


## Noise-Reduction

Noise in an image are atypical pixels that are not representing the color or the exposure of the scene correctly. This Noise Reduction module reduces the noise in the image by using either median filtering or mean filtering techniques to change the RGB value of the pixels to create a smoother and fuller image.

#### Usage
```js
    sequencer.loadImage('PATH')
             .addSteps('noise-reduction',options)
             .run()
```
where `options` is an object with the property `method`. `options.method` can be:
* Median Filtering: Set the RGB value of the pixel to the median RGB pixel value of all adjacent pixels (maximum 8 adjacent pixels and itself)
* Mean Filtering: Set the RGB value of the pixel to the mean RGB pixel value of all adjacent pixels (maximum 8 adjacent pixels and itself)


## overlay-module

This module is used for overlaying an Image over another .
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('overlay',options)
           .run()
```

where `options` is an object with the following properties:
* x : X-position of the image on which the new image is overlayed (default 0)
* y : Y-position of the image on which the new image is overlayed (default 0)
* offset : offset to the step on which the output of the last step is overlayed (default -2)


## paint-bucket-module

This module fills any polygonal shape with the specified color in pixels.
## Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('paint-bucket',options)
           .run()
```

where `options` is an object with the following property:
* startingX : it is the value of the starting x-cordinate (default 10)
* startingY : it is the value of the starting y-cordinate (default 10)
* fillColor : they are four spaced seperated numbers representing the RGBA values of fill-color (default "100 100 100 255")
* tolerance : it is the % tolerance (default 10)


## replacecolor-module

This module is used in replacing the color with grey or any desired color.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('replace-color',options)
           .run()
```
where `options` is an object with the following properties:
* replaceMethod : replaces with the desired color (default greyscale)
* replaceColor : three space separated numbers representing the RGB values of color to be filled (default "0 0 255")
* color : three space separated numbers representing the RGB values of color to be replaced (default "228 86 81")
* tolerance : it is the % tolerance (default 50)


## resize-module

This module is used for resizing an image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('resize',options)
           .run()
```

where `options` is an object with the following property:
* resize : Percentage value of resize (default 125%)


## rotate-module

This module is used for rotating an image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('rotate',options)
           .run()
```

where `options` is an object with the following property:
* rotate : angular value for rotation in degrees (between 0 and 360; default 0)


## saturation-module

This module is used for changing the saturation of the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('saturation',options)
           .run()
```

where `options` is an object with the following property:
* saturation : saturation for the new image (between 0 and 2; default 0)


## segmented-colormap-module

This module is used to map the pixels of the image to a segmented colormap.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('segmented-colormap',options)
           .run()
```

where `options` is an object with the property `colormap`. `options.colormap` can be:

* "default" : [[0, [0, 0, 255], [38, 195, 195]], [0.5, [0, 150, 0], [255, 255, 0]], [0.75, [255, 255, 0], [255, 50, 50]]]

* "greyscale" : [[0, [0, 0, 0], [255, 255, 255]], [1, [255, 255, 255], [255, 255, 255]]]

* "stretched" : [[0, [0, 0, 255], [0, 0, 255]], [0.1, [0, 0, 255], [38, 195, 195]], [0.5, [0, 150, 0], [255, 255, 0]], [0.7, [255, 255, 0], [255, 50, 50]], [0.9, [255, 50, 50], [255, 50, 50]]]

* "fastie" : [[0, [255, 255, 255], [0, 0, 0]], [0.167, [0, 0, 0], [255, 255, 255]], [0.33, [255, 255, 255], [0, 0, 0]], [0.5, [0, 0, 0], [140, 140, 255]], [0.55, [140, 140, 255], [0, 255, 0]], [0.63, [0, 255, 0], [255, 255, 0]], [0.75, [255, 255, 0], [255, 0, 0]], [0.95, [255, 0, 0], [255, 0, 255]]]

* A custom array.


## sharpen-module

This module is used to sharpen the pixels of the image using a 3x3 convolution filter.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('sharpen',options)
           .run()
```

where `options` is an object with the property `sharpenStrength`, which can be set to achieve the desired level of sharpening on the image.


## Text Overlay

The modules allows to add text to image in both browser and node environment. We have the options to modify the font-size and also support few font-styles. The text color can also be modified.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('grid-overlay',options)
           .run()
```
The options can take various attributes like,
var options = { text : 'Hello World', size : '12'};


## Threshold 

Thresholding is used to create binary images.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('threshold',options)
           .run()
```
where `options` is an object with the following property:
* threshold : it allows to select the types of thresholding (default "manual thresholding")
* input : it allows to select the range of thresholding value (default 120)


## Tint 

It adds color tint to an image
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('tint',options)
           .run()
```
where `options` is an object with the following property:
* color : RGB values seperated by a space (default "0 0 255")
* factor : amount of tint (default 0.5)


## webgl-distort-module

This module is used for transforming the perspective of images based on corner coordinates.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('webgl-distort',options)
           .run()
```

where `options` is an object with the following property:
* nw: top-left corner x and y coordinates separated by a comma (default "0,100")
* ne: top-right corner x and y coordinates separated by a comma (default "1023,-50")
* se: bottom-right corner x and y coordinates separated by a comma (default "1223,867")
* sw: bottom-left corner x and y coordinates separated by a comma (default "100,767")


## white-balance-module

This module is used for rendering neutral colors of an image correctly based on the whitest pixel in the image.
#### Usage

```js
  sequencer.loadImage('PATH')
           .addSteps('white-balance',options)
           .run()
```

where `options` is an object with the following property:
* red: red component of the whitest pixel (default 255)
* green: green component of the whitest pixel (default 255)
* blue: blue component of the whitest pixel (default 255)