Skip to content

Latest commit

 

History

History
434 lines (312 loc) · 19.6 KB

changelog.md

File metadata and controls

434 lines (312 loc) · 19.6 KB

ChangeLog

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 (use CanvasLite or node-canvas)
  • remove ScaledImage (use DimensionFilter 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 method paste/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 and IO.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 using composite filter)
  • optimise morphological processing by enabling repeated and separable primitive operations
  • new RGB2XYZ, XYZ2RGB, RGB2ILL, ILL2RGB Color space/transformation methods and ColorMatrix and ColorMap filter methods
  • updated connected_components algorithm and associated dissimilarity_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 to colormatrix 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 in compositefilter after each apply 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 scanline connected_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 in FILTER.MODE.HUE replaces only hue 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, move connected_components algorithm under machinelearning package
  • add new util blas (Basic Linear Algebra Subroutines), refactor and re-organise existing utils into core, array, ..
  • simplify IO and CODECS packages into one manager with codec parameter
  • add full zlib (zlib-asm.js) util implementation and native node zlib module alternative (zlib-node.js) (can be set/overriden by user if necesary)
  • add full ffmpeg (ffmpeg-asm.js) util implementation and native node ffmpeg module alternative (ffmpeg-node.js) (can be set/overriden by user if necesary)
  • add png encoder method (to write image files in png format)
  • fix a typo in convolutionmatrix filter (missing stride parameter in convolution_clamp)
  • add new RhomboidPixelate, HexagonalPixelate (almost done) plugins
  • simplify and unify PixelateFilter, supports ALL the pixelation filters by setting pattern parameter (default "rectangular", see examples)
  • extend and rename ResampleFilter, SelectionFilter into DimensionFilter
  • 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 explicit new Filter() operator instead simply using Filter(), 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 in apply method instead of just the src 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) and ColorMapFilter (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 of Filter.Image
  • new plugin PatternFillFilter (in FloodFillFilter 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, new AlgebraicFilter (instead of CombinatorFilter), in progress
  • make BlendFilter accept multiple inputs, plus extra alpha (opacity) parameter and enabled/disabled flag (per input), via BlendMatrix (see examples)
  • new and faster approximate algorithm for Pixelate, TriangularPixelate, HexagonalPixelate, all included in Pixelate 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.e MODE.INTENSITY, MODE.GRAY, MODE.RGB)
  • add custom selection option tolerance to HaarDetector 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 generic Filter so all filter instances can have custom selections for any purpose needed
  • simplify and make somewhat faster CannyEdges and HaarDetector plugins
  • fix tensor_product utility from previous update (produced incorrect convolution kernels)
  • fix Image.image method issue when loading an image without initializing imageData 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 of Filter,Image (fx/ folder)
  • new plugin PatternFillFilter (in FloodFillFilter plugin file)
  • PerlinNoise is not a plugin anymore, it is extra static part of Filter,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 in Node)
  • 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-Lienhart openCV 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.g HaarDetector) 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 efficient Perlin Noise and Simplex 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), add FILTER.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

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 for OO
  • 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 the GeometricMap 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 in ColorMatrixFilter (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 tested Firefox, 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 to StatisticalFilter (make sure to change that in your code if a NonLinearFilter 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 and Inline)
  • 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 (eg FILTER.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 a FILTER.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/from Hex/RGB, to/from RGB/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