1.14.0
- PairwiseClusterFilter for image clustering and segmentation by deterministic annealing
- PatchMatchFilter algorithm for image editing, inpainting and completion, in progress
- ColorDetectorFilter variation of ConnectedComponentsFilter
- FILTER.Util.Image.Selection class, FILTER.Util.Image.Pyramid class
- FILTER.Util.Image.Distance methods (Euclidean, Histogram, Correlation)
- FILTER.Image.select method can also accept a FILTER.Util.Image.Selection instance
- handle metaData serialization in CompositeFilter
- various edits, typo corrections
1.13.0
- HoughDetectorFilter for lines, linesegments, rectangles, circles and ellipses
- wasm filters code as separate files to be included at will
- various edits, typo corrections
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.mapReduceto split image in parts and process each part in parallel- ConnectedComponents COLORIZE mode
- Equalize
factoroption - 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,Statisticfilters - update examples and tests
1.0.0
- remove
classydependency - remove not implemented filters (webgl, svg, some plugins)
- remove ml code (svg, jade, kmeans, ..)
- remove
zlib,ffmpegasm libs - remove
nodejsspecific code (useCanvasLiteornode-canvas) - remove
ScaledImage(useDimensionFilterto up/down scale) - remove unused methods (eg
Image.draw/Image.paste, ..) - update/fix
HAARDetector,Blendfilters - 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
Imagemethodpaste/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.FileManagerandIO.BinaryManagercan also read from a (browser)File/Blobobject and write to (browser)BlobDropShadowFilterfilter 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 usingcompositefilter) - optimise morphological processing by enabling repeated and separable primitive operations
- new
RGB2XYZ,XYZ2RGB,RGB2ILL,ILL2RGBColorspace/transformation methods andColorMatrixandColorMapfilter methods - updated
connected_componentsalgorithm and associateddissimilarity_matrixmethods - typo fix in
BlendFilter.setInputValuesmethod (matrix index not computed correctly) - some typos/fixes in
FILTER.Codec.PNG - new node example
css-sprite-animationgenerator, new references
0.9.6
- new morphological filters (methods),
gradient,laplacian - some new methods (pre-computed filters) in
colortablefilter, which are similar tocolormatrixfilter - 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
connectedcomponentsfilter and machinelearning method - fix
containermeta parameter incompositefilterafter eachapplycall (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,PatternFillas scanlineconnected_componentwith seed algorithm - make
FloodFill,PatternFillfunction 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) FloodFillinFILTER.MODE.HUEreplaces onlyhueso it can be used to fill/replace a gradient connected region- fix
FILTER.Color.RGB2HSVfor 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_componentsalgorithm undermachinelearningpackage - add new util
blas(Basic Linear Algebra Subroutines), refactor and re-organise existing utils intocore,array, .. - simplify
IOandCODECSpackages into one manager withcodecparameter - add full
zlib(zlib-asm.js) util implementation and native nodezlibmodule alternative (zlib-node.js) (can be set/overriden by user if necesary) - add full
ffmpeg(ffmpeg-asm.js) util implementation and native nodeffmpegmodule alternative (ffmpeg-node.js) (can be set/overriden by user if necesary) - add
pngencoder method (to write image files inpngformat) - fix a typo in
convolutionmatrixfilter (missingstrideparameter inconvolution_clamp) - add new
RhomboidPixelate,HexagonalPixelate(almost done) plugins - simplify and unify
PixelateFilter, supports ALL the pixelation filters by settingpatternparameter (default"rectangular", see examples) - extend and rename
ResampleFilter,SelectionFilterintoDimensionFilter - 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
Colorutility and plugins - add extra static utilities in
Colorclass (.intensity,.hue,.saturation,blendmodes, ..) - color space conversions made faster and more generic
- restructure utiltiies and folders (e.g
Math,String,Array,Image,Filterutils, ..) - filters and created plugins automaticaly support the
constructor-factorypattern 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/unserializemethods (there is a bug to be fixed in how the inputs are handled, see api-reference) - make filters pass generic
metaDatainapplymethod instead of just thesrcimage (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,ChannelCopyFilterhas been extended with same functionality - new effects utilities and plugins
gradient,radial-gradient(nodejs support), extra static part ofFilter.Image - new plugin
PatternFillFilter(inFloodFillFilterplugin file) - new plugin
DropShadowFilter(analogous to ActionScript filter) - new plugin
ConnectedComponentsFilter - add new filters
ResampleFilter,SelectionFilter - move
BlendFilterinto generic filters instead of plugins, newAlgebraicFilter(instead ofCombinatorFilter), in progress - make
BlendFilteraccept 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 inPixelateplugin 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.GRAYparameter (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
optionselectiontolerancetoHaarDetectorplugin 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..) selectionoption is added to genericFilterso all filter instances can have custom selections for any purpose needed- simplify and make somewhat faster
CannyEdgesandHaarDetectorplugins - fix
tensor_productutility from previous update (produced incorrect convolution kernels) - fix
Image.imagemethod issue when loading an image without initializingimageDatain 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(inFloodFillFilterplugin file) PerlinNoiseis 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
BMPdecoder - add
Canvaspolyfill (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,RGBEformats (see references) - minor refactoring/changes
0.7
- add
FILTER.Mathroutines and algorithms (interpolation, fourier transforms etc..) - add
fft1d,fft2dfast fourier transform routines, image spectrum, frequency domain filtering - add
nearest neighbor,bilinear,bicubicinterpolation/resizing routines - add
TGALoader,RGBELoader,GIFLoadergeneric/native image parsers/loaders - new plugin:
SeamlessTileFilter, create a seamless tileable pattern from an image - new plugin:
HaarDetector, detect image features using Viola-Jones-LienhartopenCVHAARcascades algorithm (adapted from HAAR.js) - new plugin:
HalftoneFilter, create a halftoned/dithered image from target image PerlinNoiseFilterplugin 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.Imageclass - new plugin:
FloodFillFilter, fast flood filling using scanline algorithm with tolerance factor - new plugin:
CannyEdgesFilter, efficient Canny Edges Detector - new plugin:
PerlinNoiseFilterefficientPerlin NoiseandSimplex Noiseimplementations - 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.blendmethod (there is filter plugin for this), addFILTER.Image.toImagemethod
0.6.14
- remove
PublishSubscribefor implementing generic filter/image events - heavy refactor/optimise/minimise
0.6.13
- use
Asynchronous.jsfor parallel/async filter tasks - use
PublishSubscribefor implementing generic filter/image events - heavy refactor/optimise
0.6.12
- use
ColorClass from (https://github.com/foo123/css-color) to enhanceFILTER.Color - (re-)add
applymethod toImageClass (shorthand toFilter.applymethod)
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.jsOO framework - update live examples / docs
0.6.7, 0.6.8
- code refactor, various optimisations, edits, tidy up
- add
ScaledImageclass, represents an image that can be automatically down/up scaled - add image
select/deselectmethods, 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.jsforOO - update
buildtools/ live examples / docs
0.6.6
- fix some issues with
Opera,IE(eg.GeometricMapfilter) - add alternative
solarizeeffects - 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
affineMapfilter of theGeometricMapclass (was defined in wrong way) - add
YCbCrConverterplugin filter - add
Bokeh(Depth-of-Field) plugin filter - add
Glowconvolution filter - add another
Sepiaeffect inColorMatrixFilter(sepia) - use optimised convolutions for
3x3,5x5common cases - minor edits/optimizations
0.6.3
- add new plugin
Threshold - minor fixes for cross-browser support
- typos/edits
- add
Sound Visualizationexample - 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
laplacekernel,box blurkernel,box highpasskernel etc..) - rename
NonLinearFiltertoStatisticalFilter(make sure to change that in your code if aNonLinearFilterwas used) - add new image methods (
clear,filletc..) - add new
compositefilter methods (removeAt,insertAt, etc..) - add new
geometricmaps (twirl,sphere,rotateCW,rotateCCW) - add new
color matrixmethods (YcbCr2RGB,RGB2YCbCr) - add new
lookup tablemethods (extract,replace,mask) - add new color transforms (
HSV2RGB,RGB2HSV) - add new plugins (
HueExtractor,HSVConverter) - optimise
Pixelateplugin - 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,masketc..)
0.4
- add new
Imagemethods (scale,flipHorizontal,flipVertical) - add new generic filter type
FILTER.TableLookupFilterand 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
ClassesandInline) - add some sample custom plugins (
Equalize.js,RGBEqualize.js,Noise.js) - add more methods to
ImageClass (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
CompositeFilter (shift/unshiftetc..) - 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
applyfunction accepts aFILTER.Imagenow) - Optimise the image and filters classes (cache data if possible, minimise copies, optimise loops etc..)
- Minor math optimizations and micro-optimizations
- Add
Compositefilters stack (applyin multiple filters on same image is faster and easier this way) - Add
ColorTransforms class (to/fromHex/RGB, to/fromRGB/YCbCretc..) - update examples/readme
0.2
- Refactored Code to use closures (more modular)
- Added
exCanvasscript for Browsers that do not support Canvas - minimum math optimizations
0.1
- initial release