A pure JavaScript Library for Image/Video Processing, Filtering and Computer Vision
This is a library for processing images/video in pure JavaScript using HTML5 features like Canvas
, Web Workers, WebAssembly and WebGL or alternatives in Node.js (eg CanvasLite
, node-canvas
, node-gl
, node processes
).
version 1.12.0 (413 kB minified)
- Image Processing with
Filter.js
(synchronous/parallel/webgl/wasm) - Video Processing with
Filter.js
(synchronous/webgl/wasm) - Sound Visualization with
Filter.js
(Trioptic) - Cartoonify Yourself with
Filter.js
Filter.js
withThree.js
Filter.js
inNode.js
Some filters code has been adapted from open source libraries, see the comments in the code for details.
- Image Processing Library in Java
- AS3 Image Processing Library
- OpenCV
- AS3 ColorMatrix by @GSkinner
- Simplex Noise and Perlin Noise by Stefan Gustavson
- HAAR.js
- glfx.js
The framework defines an Image
class, which represents a proxy for an Image, a number of utilities like Color
class and 14 generic Filter
types plus various Plugins and Extra filters (with support for (low-level) CPU and GPU parallel processing transparently both for browser
and nodejs
)
- AbstractFilter
- ColorTableFilter
- ColorMatrixFilter (analogous to the ActionScript filter)
- ColorMapFilter
- AffineMatrixFilter
- GeometricMapFilter
- DisplacementMapFilter (analogous to ActionScript filter)
- ConvolutionMatrixFilter (analogous to the ActionScript filter)
- MorphologicalFilter
- StatisticalFilter
- BlendFilter
- DimensionFilter
- CompositeFilter (an abstraction of a container for multiple filters)
- InlineFilter (create inline filters dynamically at run-time using your custom functions)
- FrequencyFilter (frequency domain filters)
- Extra Filters (extra filters which cover a wider range of functionality and use cases)
Each of the generic filters is prototype but it also includes a number of implementation filters like grayscale
, colorize
, threshold
, gaussBlur
, laplace
, emboss
, gamma
, twirl
and so on.. (depending on type of filter)
CPU Parallel Processing for browser and nodejs: support CPU parallel procesing with filter Workers in an intuitive and transparent way, see examples.
GPU Parallel Processing for browser and nodejs: support GPU/WebGL parallel procesing with GLSL filters in an intuitive and transparent way, see examples.
Mix CPU/GPU filters transparently
Fast CPU Assembly Code for browser and nodejs: support assembly coded filters, see examples.
Map/Reduce functionality
Image Blending Modes (analogous to SVG blend modes)
TIP: You can create your custom build of the library with the filters/plugins you choose. Each filter and plugin is independent and can be used in a mix-n-match manner, as long as the core classes are always included. Change the dependencies file to include your own selection of filters and plugins for your custom build
- make WASM versions of filters where possible [DONE]
- make GLSL versions of filters where possible [DONE]
- make convolutions/statistics faster [DONE partially]
- add full support for
Node.js
[DONE] - add support for
Parallel Processing
usingWeb Workers
and/orAsynchronous Processing
[DONE] - use fixed-point arithmetic, micro-optimizations where possible [DONE]
- add caching of filter parameters where applicable [DONE]
- increase performance for
Opera
,IE
[DONE]
see also:
- Abacus advanced Combinatorics and Algebraic Number Theory Symbolic Computation library for JavaScript, Python
- TensorView view array data as multidimensional tensors of various shapes efficiently
- Plot.js simple and small library which can plot graphs of functions and various simple charts and can render to Canvas, SVG and plain HTML
- HAAR.js image feature detection based on Haar Cascades in JavaScript (Viola-Jones-Lienhart et al Algorithm)
- HAARPHP image feature detection based on Haar Cascades in PHP (Viola-Jones-Lienhart et al Algorithm)
- FILTER.js video and image processing and computer vision Library in pure JavaScript (browser and node)
- Xpresion a simple and flexible eXpression parser engine (with custom functions and variables support), based on GrammarTemplate, for PHP, JavaScript, Python
- Regex Analyzer/Composer Regular Expression Analyzer and Composer for PHP, JavaScript, Python
- GrammarTemplate grammar-based templating for PHP, JavaScript, Python
- codemirror-grammar transform a formal grammar in JSON format into a syntax-highlight parser for CodeMirror editor
- ace-grammar transform a formal grammar in JSON format into a syntax-highlight parser for ACE editor
- prism-grammar transform a formal grammar in JSON format into a syntax-highlighter for Prism code highlighter
- highlightjs-grammar transform a formal grammar in JSON format into a syntax-highlight mode for Highlight.js code highlighter
- syntaxhighlighter-grammar transform a formal grammar in JSON format to a highlight brush for SyntaxHighlighter code highlighter
- SortingAlgorithms implementations of Sorting Algorithms in JavaScript
- PatternMatchingAlgorithms implementations of Pattern Matching Algorithms in JavaScript
- CanvasLite an html canvas implementation in pure JavaScript
- Rasterizer stroke and fill lines, rectangles, curves and paths, without canvas
- Gradient create linear, radial, conic and elliptic gradients and image patterns without canvas
- Geometrize Computational Geometry and Rendering Library for JavaScript
- MOD3 3D Modifier Library in JavaScript
- css-color simple class to parse and manipulate colors in various formats