Version 0.17.0
==============

Fixes:

- phase-retrieval.cl: fix warnings
- stitch: fix memory leak and initialization
- retrieve-phase: fix uninitialized lambda
- slice: fix memory leak
- memory-in: fix number parameter
- docs: fix readthedocs build
- fft: fix batch sizes
- contrib: fix dashes in cmake
- Fix padding
- Fix undefined CL_TARGET_OPENCL_VERSION warning
- med-mad-reject-2d: fix index overflow in sorting
- gbp: fix compute mode enum
- Fix static enum names
- NLM: Fix copy-paste parameter description error
- phase-retrieval: fix zero checks
- Fix file writing test
- Fix properties of transpose task
- Fix rm-outliers boundary condition
- Fix stripe_filter kernel
- Fix ifft scale for crop width or height
- fix CMake for zmq
- phase retrieval: Fix filter values
- genreco: Fix angular parameter check function
- sphinx: Fix Directive import to work with Sphinx 1.8
- Fix #170: add non-local-means filter

Pull requests:

- #239 from ufo-kit/multidistance-phaseretrieval
- #237 from ufo-kit/gradient-magnitude
- #235 from ufo-kit/memory-in-fix-number
- #229 from ufo-kit/fix-cmake
- #233 from ufo-kit/ifft-inplace
- #232 from ufo-kit/fft
- #227 from ufo-kit/filtering
- #231 from ufo-kit/fix-memory-in
- #228 from ufo-kit/gradient
- #226 from ufo-kit/calculate-2d
- #225 from ufo-kit/detect-edge-addressing-mode
- #224 from ufo-kit/writer-min-max
- #221 from ufo-kit/horizontal-sigma-0
- #219 from ufo-kit/double-type-cone-weight
- #218 from ufo-kit/horizontal-interpolate-just-copy
- #216 from ufo-kit/image-step
- #217 from ufo-kit/multidistance-phase-retrieval
- #214 from harishkumar-harihara/add-stacked-backproject
- #213 from ufo-kit/fix-stack
- #207 from ufo-kit/non-dash-task-names
- #205 from ufo-kit/directional-phaseretrieval
- #206 from ufo-kit/opencl-warning
- #201 from ufo-kit/disable-opencl-reduce-copying
- #199 from ufo-kit/ordered-sliding-stack
- #198 from ufo-kit/sliding-window
- #197 from ufo-kit/add-power-spectrum
- #194 from ufo-kit/conjugate
- #192 from ufo-kit/fix-static-enum-names
- #184 from ufo-kit/find-large-spots
- #182 from ufo-kit/nlm
- #191 from ufo-kit/fix-phaseretrieval
- #187 from ufo-kit/enhance-forwardproject
- #186 from ufo-kit/fix-transpose-task
- #183 from ldorofeeva/master
- #181 from ufo-kit/add-horizontal-interpolator
- #179 from ufo-kit/filter-stripes-sigma
- #178 from ufo-kit/fix-ifft
- #176 from ufo-kit/fix-zmq
- #175 from ufo-kit/phaseretrieval
- #174 from ufo-kit/bigtiff
- #173 from ufo-kit/fix-tiff-writer
- #172 from ufo-kit/add-file-size-to-writer
- #171 from mitya57/mitya57/sphinx1.8
- #169 from ufo-kit/fix-find_program
- #168 from ufo-kit/add-12bit-tiff-reader-support

New filters:

- cross-correlate
- sliding-stack
- power-spectrum
- FindLargeSpots
- HorizontalInterpolate
- non-local-means

Enhancements:

- fft: Add Chirp-z to compute non-power-2 transforms
- gradient: add finite-difference-type
- calculate: add 2D support
- detect-edge: add user-defined addressing-mode
- horizontal-interpolate: add use-one-sided-gradient
- retrieve-phase: Add multi-distance CTF support
- read: add image-start and image-step properties
- add stacked-backproject
- pad: Add mirrored_repeat to the list
- stripe-filter: add vertical sigma parameter
- genreco: add spacial code for shifted source/det
- opencl.cl: Add add, multiply and divide
- write: add forgotten rescale to get_property
- Add multi-page parameters to writer docs
- complex: add c_abs_squared kernel
- gpb: add RTX8000 properties
- find-large-spots: add spot-threshold-mode property
- NLM: Add estimate-sigma
- NLM: Add fast version of the algorithm
- NLM: add gaussian window
- NLM: add smoothing control parameter *h*
- Add axis-pos parameter to forwardproject
- Add flat-field multiplier
- Add Gaussian window to the stripe filter
- tiff writer: Add photometric tag
- Add bytes_per_file property to writer
- Add 12 bit support to tiff reader


Version 0.16.0
==============

Enhancements:

- filter: Enable scaling in ramp_fromreal
- opencl: add `options` property to set build opts
- opencl: allow overriding PATCH_ and SEARCH_RADIUS
- opencl: add `diff` kernel
- nlm: use sigma if passed as an option
- nlm: don't scale sigma arbitrarily
- backproject: lift angle-step and -offset limits
- read: support single plane RGB data
- write: support RGB TIFFs and JPEGs
- write: do not require fmt specifier for jpeg
- bin: support 3D binning as well
- fft: add debug message showing underlying FFT lib
- Do transpose on GPU

Fixes:

- Fix #153: handle 64 bit TIFFs gracefully
- Fix #159: add boolean `rescale` option
- Fix #161: add test to prove things work
- Fix #162: make use of new buffer layout API
- Fix #163: return raw-height correctly
- Fix #165: use current get_kernel API
- Fix #166: propagate OpenCL errors if possible

Breaks:

- detect-edge: rename "type" to "filter"

New filters:

- Add cone beam reconstructor
- Add tile task
- Add unsplit task
- Add map-color task
- Add gradient filter
- Add zmq-pub and zmq-sub tasks


Version 0.15.1
==============

Fixes:

- #153: do not crash with 64 bit floating point TIFFs
- Use specific OpenCV 2 header file in an OpenCV 3 environment


Version 0.15.0
==============

Enhancements:

- Added a manual section showing basic image processing examples
- Added a manual section to list default kernels usable with opencl and
  opencl-reduce
- backproject: unroll loop for P100, Quadro M6000, GTX 1080 TI and Tesla K20XM
- cv-show: use unique window name to allow multiple viewers
- dfi: clean up and simplify reflection code
- read: avoid file open check if successful
- read: add lazy timeout-based reading
- retrieve-phase: remove unused normalize parameter
- retrieve-phase: untangle macro and ?: mess
- stat-monitor: clean up and remove dead code
- stitch: minor cleanups and correct kernel release
- swap-quadrants: simplified code
- write: warn if no format spec is given for jpeg
- Fix #144: document swap-quadrants

Fixes:

- camera: fix linking with libuca
- cv-show: fix compilation with older g++ compilers
- dfi: fix wrong warning about even sample number
- dummy-data: lift number limit
- opencl: kernel name cannot be NULL
- Fix #149: image2d_t is always global
- Fix #146: use gnu99 instead of c99
- Fix #133: off-by-one cropping is bad

Breaks:

- Moved nlm kernel from nlm.cl to opencl.cl
- Remove unused default.cl

New filters:

- Added cv-show viewer
- Added circular mask filter
- Added opencl-reduce
- Added projection filter bh3
- Added filter to remove outliers


Version 0.14.1
==============

Fixes:

- Let meson build all the tasks that CMake could before
- Check if Python is actually available in order to generate lamino kernels
- Fix install documentation
- Fix compilation with MacOS compilation and Python 3
- memory-in: cast pointer to target type
- write: fix problem with generated filenames that are not incremented


Version 0.14.0
==============

Enhancements:

- Support meson build system alongside CMake
- Suppress tiff writing warnings
- dummy-data: add random-metadata flag
- interpolate: use GPU instead of OpenMP which is an order of magnitude faster
- lamino: allow setting addressing mode
- monitor: output metadata values as well
- raw-read: split offset in pre and post offsets
- write: add counter-start and counter-step
- write: add minimum/maximum to control conversion
- null: allow printing durations from timestamps

Fixes:

- lamino: prevent volume shifting in center kernel
- Fix #133: allow crop position with specifying dims

Breaks:

- Replaced stdout filter with standard write module
- write: rename quality property to jpeg-quality

New filters:

- Add rotate filter
- Add stitch task
- Add interpolate-stream task
- Add correlate-stacks task
- Add cut task
- Add stamp filter to print current iteration into output buffer


Version 0.13.0
==============

Enhancements:

- Added infrastructure to "stage" filter contributions by third parties. To
  enable building it the WITH_CONTRIB option must be set explicitly to ON.

Fixes:

- write: call conversion only once
- read: fix segfault with start too large
- read: fix dumping to JSON
- Fix compilation and installation on MacOS
- Fix #128: prevent segfault with start parameter
- Do not compile ufo-priv.c for each task thus saving compile and link time
- Add documentation for undocumented tasks

New contributed filters by Serge X. Cohen (Synchrotron SOLEIL):

- Add MedMadReject median value rejection in 3D
- Add MedMadReject2D median value rejection in 2D
- Add Ocl1Liner to compute basic OpenCL arithmetics
- Add StatMonitor to output stream statistics


Version 0.12.0
==============

Enhancements:

- Fortify source and enable large file support
- Re-arrange filter documentation

Fixes:

- Fix #127: use enums where possible
- Document the filter task
- Fix potential errors found with static analysis
- stdin: use gsize to avoid LFS problems
- dfi-sinc: do not call exit()
- raw/read: fix type translation for raw-offset

Breaks:

- metaballs: create filled balls rather than circles
- metaballs: remove run-infinitely and fps props
- filter: use enum instead of type-unsafe string
- loop: rename ::count to ::number

New filters:

- Add binarization filter
- Add basic segmentation filter


Version 0.11.1
==============

Fixes:

- Fix #124: build and install oclfft optionally
- Use OLD behaviour for CMP0046
- Use G_MAXSIZE instead of ULLONG_MAX
- Include oclfft deps dir only if enabled
- filter: link FFT libs
- ifft: remove unused/wrong imports
- raw: do not ignore return value of fread
- transpose: fix warning if SSE is not possible
- Add license statements where missing
- Link against m unconditionally


Version 0.11.0
==============

Enhancements:

- Add option to build Sphinx manual
- Improved filter documentation
- Increase robustness of OpenCL kernels by using correct type everywhere
- Make AMD clFFT optional
- backproject: improve performance on GTX Titan
- rescale: allow setting absolute width and height
- camera: allow passing properties to camera
- camera: simplify readout mechanism
- dummy-data: opt-in for initialization using `init`

Fixes:

- Link only to required dependencies
- Do not link oclfft unconditionally
- zeropad: fix for centers < half width
- Fix #121: use correct exit condition
- Set std=c99 only on C source files
- oclfft: link against UFO
- rescale: remove debug output
- lamino-backproject: fix for small max workgroups

Breaks:

- dummy-data: remove bitdepth property

New filters:

- Add GEMM matrix multiplication using CLBlast
- Add bin filter to bin pixel values


Version 0.10.0
==============

Enhancements:

- Restructured FFT-based filters to use a common code base
- filter: Use real space ramp by default
- crop: add ``from-center`` property
- hdf5: whitelist .hdf5 and .nxs extensions

Fixes:

- camera: do not convert 32 bit float data
- EDF: fix problem parsing Frelon EDF data
- Fix #117: fail gracefully if file can't be written
- edf reader: Allow 512-multiple header size
- Fix reading 32 bit float raws as unsigned int

Breaks:

- read: renamed enable-conversion → convert
- null: renamed force-download → download

New filters:

- Add MemoryIn generator
- Add MemoryOut sink
- Add stdin generator
- Add stdout sink
- Add laminographic backprojection
- Add 1D stripe filter
- Add sleep task for debugging purposes


Version 0.9.0
=============

Enhancements:

- backproject: reconstruct region-of-interest
- backproject: loop unroll on GTX Titan Black
- filter: generalize filter types
- read: allow overriding type detection
- read: read as many bytes as expected in raw mode
- map-slice arbitrary number of input data
- monitor: add print property to show data

Fixes:

- Fix ramp filter computation and mirroring
- Fix two dimensional batch processing of FFT and IFFT
- Fix segfault caused by double-freeing kernel
- opencl: fix copying dimension property
- read: fix segfault reading big-endian .edf
- fbp: Use number of projs to compute angle step
- dfi: add angle-step property
- blur: free allocated OpenCL buffers
- slice: slice correct number of input items
- stack: stack every [number] inputs

New filters:

- Add flip task
- Add clip task
- Add loop task
- Add refeed task
- Add merge task
- Add basic raw reader


Version 0.8.0
=============

Major changes:

- Read changed "end" property back to "number"
- Renamed downsample filter to rescale
- Renamed cut-roi filter to crop
- null: added "finish" property to call clFinish()
- filter: added Faris-Byer type filter coefficients
- ifft: added crop-height property
- Removed possibility to disable building plugins

New filters:

- Add calculate task
- Add new monitor task
- Add edge detection filter
- Added HDF5 reader and writer
- Added raw writer
- Added JPEG writer


Version 0.7.0
=============

This release breaks badly with all previous version because we renamed several
filters and properties to clean up inconsistencies.

Major changes include:

- Integration tests have been moved to core
- writer: allow 8 and 16 bit uint output
- reader: support Multi EDF files
- reader: add y-step parameter
- reader: from:to:step selection of files
- flatfieldcorrection: add "dark-scale" property

New filters:

- Import uPIV related filters by Alexandre Lewkowicz
- Add pad to add zero padding
- Add slice mapper to arrange input as a single grid
- Add inplace flatten task for sum, min and max
- Add interpolation task to interpolate between two streams
- Add flatten task based on median sort
- Add stack task to create a volume from 2D series
- Add transpose task to rotate data
- Add measure task to measure image metrics
- Add PolarCoordinates task
- Integration of UfoIR algebraic reconstruction tasks
- Add median noise filter
- Add slice task to cut volumes into 2D data stream
- Add stripe removal task
- Add phase retrieval filter


Version 0.6.0
=============

Changes
-------

- Added angle offset parameter to backproject filter.
- Fix backprojection for NaN in input
- Fix LUT computation resulting in wrong reconstructions.
- Install kernel files into ${datadir}/ufo as required by ufo-core 0.6.

New filters
-----------

- "generate": takes width, height and depth parameters as well as a number that
  is produces with the specified dimensions.
- "downsample": reduce the size of an image by an integer
