# This file contains metadata for your plugin.

# This file should be included when you package your plugin.# Mandatory items:

[general]
name=SciPy Filters
qgisMinimumVersion=3.22
description=Filter collection implemented with SciPy
version=1.9
author=Florian Neukirchen
email=mail@riannek.de

# Works with Qt6 on Linux (experimental), but crashes QGIS on Windows!
# supportsQt6=True


about=QGIS plugin providing access to SciPy filters via the processing toolbox. SciPy offers a range of highly optimised algorithms for i.e. multidimensional image processing and signal processing, and some can be useful to analyze raster layers.
    Includes raster filters such as:
    - binary/grey morphology (dilation, erosion, closing, opening; tophat etc.)
    - principal component analysis (PCA)
    - statistical filters (local variance, std, median, minimum, percentile etc.)
    - edge detection (sobel, prewitt, gaussian magnitude etc.) 
    - convolution with a custom kernel (both, classic and FFT versions)
    - sharpening with unsharp mask
    - noise removal with Wiener filter
    - blurring (gaussian, box filter etc.)
    - Pixel statistics (std, mean, min ... of all bands for individual pixels)
    - Get no data mask, apply no data mask (i.e. set cells to no data)
    - fill no data cells of all bands with value, band mean or minimum, maximum or central value of the data type
    Most filters are based on scipy.ndimage, a library to filter images (or arrays, rasters) in n dimensions. These are either applied on each layer seperately in 2D, or in 3D on a 3D datacube consisting of all bands. In most cases, the plugin simply provides a user interface for a single SciPy function, gets the raster data using GDAL, calls the SciPy function with the provided parameters and loads the result back into QGIS. A few filters (PCA, unsharp mask, pixel statistics etc.) use custom functions that where implemented using SciPy and/or Numpy.
    For many filters, a custom footprint and/or structure or kernel can be provided, adjusting the size and shape of the filter.
    Python users get helpers.RasterWizard to quickly get the data of a raster layer as numpy array and the processing result back into QGIS as a new raster layer. 

    

tracker=https://github.com/florianneukirchen/scipy_filters/issues
repository=https://github.com/florianneukirchen/scipy_filters
# End of mandatory metadata

# Recommended items:

hasProcessingProvider=yes
# Uncomment the following line and add your changelog:
changelog=1.9
    - merge "fixing custom footprint to be converted to array" (issue #7, thanks to Dodekaphonia) 
    1.8
    - Rename layer only if it is a temporary layer (issue #5)
    1.7
    - Merge pull request issue #3 fix iterations not working in scipy_morphological_algorithm.py
    - Fix the scipy installer (issue #4)
    - Run pyqgis4-checker to support QGIS4/Qt6. But not tested yet with Qt6.
    1.6
    - Bugfix: Fix issue #2 by correctly handling no data in a moving window operation
    1.5
    - PCA: optionally scale the data to unit variance (Std of 1) before performing PCA
    - PCA: add a plot of the variance explained to the output if Plotly is installed
    - PCA Biplot algorithm (requires Plotly)
    - RasterWizard: Support setting band descriptions and accessing bands by band description.
    - Bugfix: Check if layer is provided by gdal (i.e. local file, not wms etc.) and give feedback if otherwise (RasterWizard raises TypeError). 
    - Bugfix: In PCA, correctly apply nodata mask, also if nodata value was 0
    - Bugfix: In Fill no data, get correct central value for signed integer (0)
    1.4
    - helpers.RasterWizard: Raise type error if layer is not a raster layer
    1.3
    - Add helpers.RasterWizard
    - generate help
    1.2
    - Bugfix: PCA, calculate band mean without no data value
    1.1
    - Mask no data cells (no data pixels remain no data pixels)
    - Fill no data cells to smooth the leaking into the neighborhood
    - Add filter to calculate a no data mask
    - Add filter to apply a no data mask (set corresponding cells to no data)
    - Add filter to fill no data cells of all bands with either a value, the band mean or the minimum, maximum or the central value of the data type 
    1.0
    - For large rasters: calculate in a moving window to avoid crashes
    - Add setValue() to the custom widgets to get loading from history working
    - Calculating band statistics after completion is optional now
    - Get translation working (except for help strings)
    - Add German translation
    - New algorithms: 
        - correlate with a given kernel (classic and FFT versions)
        - gradient (x,y axes and for pixels across bands)
        - difference (each pixel across bands) 
        - keep only n components of PCA
    0.3
    - New: Principal Component Analysis (PCA)
    - Advanced option to change the dtype of the output 
    - For filters where negative values are expected in the output, use float32 as default output dtype (instead of dtype of input layer) to avoid clipping and overflow errors 
    - Convolve: normalize with sum of absolute values of kernel as default, not simply the sum
    - Unsharp mask: Avoid overflow error by calculating in float64
    - Use sizes widget in more filters
    - More load options for kernel/structure/footprint
    - New origin widget and add origin as parameter to a couple of filters
    - New set of filters for pixel statistics (std, mean, min ... for all bands of individual pixels)
    0.2
    - Catch exception if SciPy is not installed and offer to install it automatically (with pip)
    - Improved user interface with custom widgets, making it more intuitive and allowing for far better parameters (see breaking changes if you already used version 0.1 in a script or model).
    - Calculate and write band statistics (min, max, mean, std) into the metadata of the output file; enables QGIS to render correctly with min/max stretching
    - New filters:
        - unsharp mask
        - rank filter
        - uniform  filter (a.k.a. mean filter, box filter)
        - estimate local variance
        - estimate local standard deviation
        - range filter 
        - fourier gaussian filter
        - fourier ellipsoid filter
        - fourier uniform filter
        - Wiener filter
        - FFT convolve
    - Breaking changes to the parameters:
        - FOOTPRINTBOOL has been removed, if a footprint is given it is always used.
        - STRUCTURE always takes the actual structure as string, not an int (was index of combobox, the combobox has been replaced by the load button). CUSTOMSTRUCTURE has been removed.
        - Convolve: ORIGIN has been removed. (An improved version is on the todo list)

# Tags are comma separated with spaces allowed
tags=python,raster,filter,analysis,principal components analysis,pca,edge,smoothing,image,no data

homepage=https://github.com/florianneukirchen/scipy_filters
icon=_static/icon/logo32.png
# experimental flag
experimental=False

# deprecated flag (applies to the whole plugin, not just a single version)
deprecated=False

# Since QGIS 3.8, a comma separated list of plugins to be installed
# (or upgraded) can be specified.
# Check the documentation for more information.
# plugin_dependencies=

Category of the plugin: Raster, Vector, Database or Web
category=Raster

# If the plugin can run on QGIS Server.
server=False

