1.12.0
- HistogramMatchFilter
- various edits, corrections and updates
1.11.0
- TemplateMatcherFilter fast matching for arbitrary rotation angles and scales
- HaarDetectorFilter/TemplateMatcherFilter returned features include matching score
- various edits and updates
1.10.0
- FFT1d, FFT2d, minmax core utilities
- Image.image_s method
- FrequencyFilter very fast js version
- TemplateMatcherFilter very fast rotation/scale-invariant js version
- various edits and updates
1.9.1
- faster SeamlessTileFilter
1.9.0
- SeamlessTileFilter glsl version
- DropShadowFilter glsl version
- MorphologicalFilter corrections for glsl
- better handling of dimensions changing in glsl filter
- small intuitive glsl filter framework
- interpolate_nearest method (js/wasm/glsl)
- some optimizations
1.8.0
- MorphologicalFilter web assembly version
- DimensionFilter glsl version, fix pad mode, fix parallel operation
- HistogramEqualizeFilter have balance factor in [0,1] (default operation is 0)
- rename ThresholdFilter to OtsuThresholdFilter
- WASM.instantiate handle Out-of-Memory errors blocking rest execution
1.7.0
- most filters coded in web assembly (more to be added)
- CannyEdges better GLSL version
- Image.setDimensions scales appropriately with selection if active, else resizes whole image as before
- dimensions changing during GLSL correctly set filter meta
- fix HaarDetector selection again
- some optimizations
- update examples and tests
1.6.0
- ConvolutionMatrixFilter.bilateral filter, true ConvolutionMatrixFilter.gauss filter
- ConvolutionMatrixFilter correct and optimize separable convolutions and custom functional kernels
- ColorFillFilter.color can be custom function returning color for specific x,y coordinates (eg a gradient)
- ChannelCopyFilter size correction
- CannyEdges review, update and make GLSL version
- fix some typos and omissions
- some GL optimizations
- handle GL context lost
1.5.7
- Blend GLSL filter
- Automatic Threshold Plugin return threshold as meta
- GLSL support dimension changing during the run
1.5.6
- Automatic Threshold Plugin (Otsu method)
1.5.5
Image.mapReduce
to split image in parts and process each part in parallel- ConnectedComponents COLORIZE mode
- Equalize
factor
option - simplify GL overriding
1.5.0
- GLSL versions of most filters so that they can run in gl/webgl transparently
- fix/update
HaarDetector
,Pixelate
,Convolution
,Statistic
filters - update examples and tests
1.0.0
- remove
classy
dependency - remove not implemented filters (webgl, svg, some plugins)
- remove ml code (svg, jade, kmeans, ..)
- remove
zlib
,ffmpeg
asm libs - remove
nodejs
specific code (useCanvasLite
ornode-canvas
) - remove
ScaledImage
(useDimensionFilter
to up/down scale) - remove unused methods (eg
Image.draw
/Image.paste
, ..) - update/fix
HAARDetector
,Blend
filters - fix Image dimensions and display issues in mobile (not use
devicePixelRatio
) - implement
GeometricMapFilter.polar(cx, cy)
,GeometricMapFilter.cartesian(cx, cy)
- simplify/minify codebase
- update examples and tests
0.9.7
- new
Image
methodpaste
/draw
, enable to paste or put or draw or replace a part of the image with another image at specified location (e.g create one big sprite image from multiple image sprites) IO.FileManager
andIO.BinaryManager
can also read from a (browser)File
/Blob
object and write to (browser)Blob
DropShadowFilter
filter can also (optionaly) pad output image if shadow offset falls outside the original image area- new morphological filter parameter
iterations
, enable to run same morpholigical filter multiple times by itself (i.e much easier and faster than usingcomposite
filter) - optimise morphological processing by enabling repeated and separable primitive operations
- new
RGB2XYZ
,XYZ2RGB
,RGB2ILL
,ILL2RGB
Color
space/transformation methods andColorMatrix
andColorMap
filter methods - updated
connected_components
algorithm and associateddissimilarity_matrix
methods - typo fix in
BlendFilter.setInputValues
method (matrix index not computed correctly) - some typos/fixes in
FILTER.Codec.PNG
- new node example
css-sprite-animation
generator, new references
0.9.6
- new morphological filters (methods),
gradient
,laplacian
- some new methods (pre-computed filters) in
colortable
filter, which are similar tocolormatrix
filter - faster canny gradient algorithm with fixed gaussian filter (faster but different quality from previous version), optional (eg gausian or deriche) blur pre-processing can also be applied (set pre-blur parameter to
false
, see examples) - optimise and fix some typos in
connectedcomponents
filter and machinelearning method - fix
container
meta parameter incompositefilter
after eachapply
call (could be overwritten deeper in apply chain) - canny gradient pruning in haar detector computed using wrong indices in previous optimisations, fixed
- custom partial selection not computed correctly in haar detector filter, fixed (needs more extensive check)
- the way extra filter inputs were handled has a bug, if same image is used as extra input in more than one filter and image is updated through another filter, it is possible depending on order of application that some filters will get the previous version of the image as input (because it is cached and not resent to save bandwidth) while only the first filter will get the updated (correct) version, fixed
- re-implement, extend and optimise
FloodFill
,PatternFill
as scanlineconnected_component
with seed algorithm - make
FloodFill
,PatternFill
function also given an exterior border color (i.e match connected component while not exterior border found) instead of only interior color (i.e match connected component while similar interior color found) FloodFill
inFILTER.MODE.HUE
replaces onlyhue
so it can be used to fill/replace a gradient connected region- fix
FILTER.Color.RGB2HSV
for gray values (was changed in previous update) - make image/filter selections accept both relative and absolute coordinates (default relative)
- add initial versions (in progress) of some machine learning algorithms,
kmeans
,kmedoids
,svd
, moveconnected_components
algorithm undermachinelearning
package - add new util
blas
(Basic Linear Algebra Subroutines), refactor and re-organise existing utils intocore
,array
, .. - simplify
IO
andCODECS
packages into one manager withcodec
parameter - add full
zlib
(zlib-asm.js
) util implementation and native nodezlib
module alternative (zlib-node.js
) (can be set/overriden by user if necesary) - add full
ffmpeg
(ffmpeg-asm.js
) util implementation and native nodeffmpeg
module alternative (ffmpeg-node.js
) (can be set/overriden by user if necesary) - add
png
encoder method (to write image files inpng
format) - fix a typo in
convolutionmatrix
filter (missingstride
parameter inconvolution_clamp
) - add new
RhomboidPixelate
,HexagonalPixelate
(almost done) plugins - simplify and unify
PixelateFilter
, supports ALL the pixelation filters by settingpattern
parameter (default"rectangular"
, see examples) - extend and rename
ResampleFilter
,SelectionFilter
intoDimensionFilter
- update references, examples
0.9.5
- fix any nodejs portability emulation and parallel threads issues
- make parallel thread calls faster (both browser and nodejs), update asynchronous
- fix some typos in
Color
utility and plugins - add extra static utilities in
Color
class (.intensity
,.hue
,.saturation
,blend
modes, ..) - color space conversions made faster and more generic
- restructure utiltiies and folders (e.g
Math
,String
,Array
,Image
,Filter
utils, ..) - filters and created plugins automaticaly support the
constructor-factory
pattern to be able to be instantiated without the explicitnew Filter()
operator instead simply usingFilter()
, see updated examples - handle uniformly and more efficiently multiple extra input images in filters, simplify filters'
serialize
/unserialize
methods (there is a bug to be fixed in how the inputs are handled, see api-reference) - make filters pass generic
metaData
inapply
method instead of just thesrc
image (e.g useful in composite filters to adjust parameters of filters at run-time based on previous filter outputs etc..) - a number of filters/plugins have been combined or extended to support various modes of operation defined in
FILTER.MODE
(see examples) - two new generic filters (which replace multiple plugins, see updated examples)
AffineMatrixFilter
(i.e linear geometric map filtering) andColorMapFilter
(i.e non-linear color transformation filtering) instead of having multiple filters and plugins with similar functionalities scattered around, plus dynamicaly optimise them, parametrise them and also have GLSL analogs more easily - remove
AlphaMaskFilter
,ChannelCopyFilter
has been extended with same functionality - new effects utilities and plugins
gradient
,radial-gradient
(nodejs support), extra static part ofFilter.Image
- new plugin
PatternFillFilter
(inFloodFillFilter
plugin file) - new plugin
DropShadowFilter
(analogous to ActionScript filter) - new plugin
ConnectedComponentsFilter
- add new filters
ResampleFilter
,SelectionFilter
- move
BlendFilter
into generic filters instead of plugins, newAlgebraicFilter
(instead ofCombinatorFilter
), in progress - make
BlendFilter
accept multiple inputs, plus extra alpha (opacity) parameter and enabled/disabled flag (per input), viaBlendMatrix
(see examples) - new and faster approximate algorithm for
Pixelate
,TriangularPixelate
,HexagonalPixelate
, all included inPixelate
plugin file - make histogram equalisation faster, some convolutions and statistics faster and fix some typos, hue extraction faster, .. (up to consistent 60 fps processing)
- have faster convolutions and statistics for grayscale images via
FILTER.MODE.GRAY
parameter (i.e.setMode(FILTER.MODE.GRAY)
) - histogram equalize filter is now one filter with mode parameter (defined in
FILTER.MODE
) for type of equalisation (i.eMODE.INTENSITY
,MODE.GRAY
,MODE.RGB
) - add custom
optionselection
tolerance
toHaarDetector
plugin so it can detect in a region of image instead of whole (useful for combining detectors to detect different feaures consecutively, where one detects in region detected previously..) selection
option is added to genericFilter
so all filter instances can have custom selections for any purpose needed- simplify and make somewhat faster
CannyEdges
andHaarDetector
plugins - fix
tensor_product
utility from previous update (produced incorrect convolution kernels) - fix
Image.image
method issue when loading an image without initializingimageData
in nodejs - heavy refactoring and optimisations
- update examples (both live browser and nodejs)
- prepare support for glsl-based filters (
webgl
/node-gl
) and svg-based filters
0.9.0
- restructure folders, separate builds for core, io, fx, util, codecs, filters, plugins, bundle
- full support for nodejs (including parallel processing through forked processes)
- various fixes and refactorings (esp. for nodejs support)
- new effects:
gradient
,radial-gradient
(nodejs support), extra static part ofFilter,Image
(fx/ folder) - new plugin
PatternFillFilter
(inFloodFillFilter
plugin file) PerlinNoise
is not a plugin anymore, it is extra static part ofFilter,Image
(fx/ folder)- update examples, dependencies (asynchronous), add advanced references
0.8.0
- update classy, asynchronous dependencies, examples
- update buildtools, UMD templates, filter add-ons are better bundled
- various optimisations, refactorings
- CustomFilter renamed to InlineFilter
- some modifications towards node.js support
0.7.2
- add image encoders for
JPG
,BMP
,RGBE
- fix
BMP
decoder - add
Canvas
polyfill (to be used if inNode
) - refactoring/changes
0.7.1
- use one binary loader and multiple image codecs instead of separate image loaders per image format (more flexible)
- add image codecs (currently decoders only) for
PNG
,JPG
,BMP
,GIF
,TGA
,RGBE
formats (see references) - minor refactoring/changes
0.7
- add
FILTER.Math
routines and algorithms (interpolation, fourier transforms etc..) - add
fft1d
,fft2d
fast fourier transform routines, image spectrum, frequency domain filtering - add
nearest neighbor
,bilinear
,bicubic
interpolation/resizing routines - add
TGALoader
,RGBELoader
,GIFLoader
generic/native image parsers/loaders - new plugin:
SeamlessTileFilter
, create a seamless tileable pattern from an image - new plugin:
HaarDetector
, detect image features using Viola-Jones-LienhartopenCV
HAAR
cascades algorithm (adapted from HAAR.js) - new plugin:
HalftoneFilter
, create a halftoned/dithered image from target image PerlinNoiseFilter
plugin enhancement enable fractal noise and turbulence, octave noise and seamless noise- filters/plugins can transmit
metadata
(e.gHaarDetector
) to pass additional information which is not necessarily an image - refactor/optimise
0.7-alpha, 0.7-alpha2
- images can be restorable
- add image loaders, remove image loading from
FILTER.Image
class - new plugin:
FloodFillFilter
, fast flood filling using scanline algorithm with tolerance factor - new plugin:
CannyEdgesFilter
, efficient Canny Edges Detector - new plugin:
PerlinNoiseFilter
efficientPerlin Noise
andSimplex Noise
implementations - new geometric filter:
GeometricMapFilter.shift
, fast circular shift/translation of image - update dependencies (e.g
classy.js
), update examples - refactoring, optimisations
0.6.17 , 0.6.18
- update buildtools/dependencies
- minor changes
0.6.15 , 0.6.16
- update buildtools/dependencies
- remove
FILTER.Image.blend
method (there is filter plugin for this), addFILTER.Image.toImage
method
0.6.14
- remove
PublishSubscribe
for implementing generic filter/image events - heavy refactor/optimise/minimise
0.6.13
- use
Asynchronous.js
for parallel/async filter tasks - use
PublishSubscribe
for implementing generic filter/image events - heavy refactor/optimise
0.6.12
- use
Color
Class from (https://github.com/foo123/css-color) to enhanceFILTER.Color
- (re-)add
apply
method toImage
Class (shorthand toFilter.apply
method)
0.6.11
- serialization changes (more options, transparently)
- enable customFilters to be used in parallel (see api-reference)
- edits/optimizations
0.6.10
- more parallel options, external script path options
- typos/edits
0.6.9
- support parallel filtering/procesing with filter workers transparently
- new filters polar/cartesian/directionalBlur/zoomBlur (in progress)
- code refactor, optimisations, edits
- update
classy.js
OO framework - update live examples / docs
0.6.7, 0.6.8
- code refactor, various optimisations, edits, tidy up
- add
ScaledImage
class, represents an image that can be automatically down/up scaled - add image
select
/deselect
methods, allow filters to be applied only to selected part of image if set - add
geometric ripple filter
- add
channel copy plugin
,triangular pixelate plugin
,blend filter plugin
,grayscale equalize plugin
- most point parameters in filters (eg.
centerX
,centerY
, etc..) are now relative percentages (ie. in [0, 1] ) instead of absolute values (see examples) - use
classy.js
forOO
- update
buildtools
/ live examples / docs
0.6.6
- fix some issues with
Opera
,IE
(eg.GeometricMap
filter) - add alternative
solarize
effects - minor refactoring, optimisations, inheritance mechanism
- add
turnOn()
,turnOff()
,isOn()
, methods for filters/plugins - typos/edits
0.6.5
- some tidy up of the repo and files
0.6.4
- fix
affineMap
filter of theGeometricMap
class (was defined in wrong way) - add
YCbCrConverter
plugin filter - add
Bokeh
(Depth-of-Field) plugin filter - add
Glow
convolution filter - add another
Sepia
effect inColorMatrixFilter
(sepia
) - use optimised convolutions for
3x3
,5x5
common cases - minor edits/optimizations
0.6.3
- add new plugin
Threshold
- minor fixes for cross-browser support
- typos/edits
- add
Sound Visualization
example - update examples with new filters
- update readme
0.6.2
- compatibility fixes for
IE9
,IE10
- minor edits
0.6.1
- new plugin
AlphaMask
- add support for
Opera
,IE9
(slower) (browsers testedFirefox
,Chrome
,IE9+
,Opera
) - minor fixes/edits
- add sound visualization example with
Filter.js
- 3 different builds:
filter.min.js
(full),filter.basic.min.js
(core and filters only),filter.plugins.min.js
(plugins only)
0.6
- faster convolution algorithm for specific (symmetric) convolution kernels (eg
laplace
kernel,box blur
kernel,box highpass
kernel etc..) - rename
NonLinearFilter
toStatisticalFilter
(make sure to change that in your code if aNonLinearFilter
was used) - add new image methods (
clear
,fill
etc..) - add new
composite
filter methods (removeAt
,insertAt
, etc..) - add new
geometric
maps (twirl
,sphere
,rotateCW
,rotateCCW
) - add new
color matrix
methods (YcbCr2RGB
,RGB2YCbCr
) - add new
lookup table
methods (extract
,replace
,mask
) - add new color transforms (
HSV2RGB
,RGB2HSV
) - add new plugins (
HueExtractor
,HSVConverter
) - optimise
Pixelate
plugin - minor other optimizations
- naming changes for some internal variables
0.5
- add new generic filters (
GeometricMap
,Combine
,Split
) - add new plugin (
Pixelate
) - heavy convolution and loops optimizations, refactoring
- update examples / readme
0.4.1
- add new filters implementations (
exposure
,mask
etc..)
0.4
- add new
Image
methods (scale
,flipHorizontal
,flipVertical
) - add new generic filter type
FILTER.TableLookupFilter
and some pre-computed filters (posterize
,solarize
, etc..) - minor edits/optimizations
- update readme / examples
0.3.3.1
- load a video as
FILTER.Image
(fixed) - add new interactive real-time video post-process example with
Filter.js
0.3.3
- allow framework to be extended by custom plugins (both as
Classes
andInline
) - add some sample custom plugins (
Equalize.js
,RGBEqualize.js
,Noise.js
) - add more methods to
Image
Class (getPixel
,setPixel
) - minor optimizations
- new build tool
- update examples / readme
0.3.2
- add new
ColorMatrixFilters
,channel()
: get a generic color channel as an image,swapChannels()
: swap two image channels (egFILTER.CHANNEL.GREEN
,FILTER.CHANNEL.BLUE
)
0.3.1
- add more methods to
Composite
Filter (shift
/unshift
etc..) - allow other composite filters to be used as simple filter components in other composite filters (fixed)
- add new
ColorMatrixFilters
:redChannel
,greenChannel
,blueChannel
,alphaChannel
- minor optimizations
0.3
- Add new filters (eg
Gradients
,Gaussian
,Median
,Erode
, etc..) - Refactor the filter API (filter
apply
function accepts aFILTER.Image
now) - Optimise the image and filters classes (cache data if possible, minimise copies, optimise loops etc..)
- Minor math optimizations and micro-optimizations
- Add
Composite
filters stack (applyin multiple filters on same image is faster and easier this way) - Add
Color
Transforms class (to/fromHex
/RGB
, to/fromRGB
/YCbCr
etc..) - update examples/readme
0.2
- Refactored Code to use closures (more modular)
- Added
exCanvas
script for Browsers that do not support Canvas - minimum math optimizations
0.1
- initial release