My new QGIS plugin Scipy Filters makes it possible to process raster layers using Scipy. This is a Python library with a large number of highly optimized algorithms for multidimensional image processing and signal processing, some of which can be useful when analyzing raster data.
I came up with the idea because the Orfeo toolbox was removed in the latest QGIS version and I no longer had any morphological filters. It used to be quite cumbersome to install the Orfeo toolbox and a plugin that uses Scipy seemed like the best alternative. In the end, I programmed it in a way to provide a large number of filters with relatively little effort — so many that they don’t all show up at the same time in the processing toolbox on my monitor.
In most cases, my plugin provides the user interface, passes the raster data to the respective Scipy function and loads the result back into QGIS. I have also written a few additional filters that are not directly available in Scipy: In particular, Principal Component Analysis (PCA), implemented using Single Value Decomposition (SVD).
Many of the filters work within an individually definable neighborhood, in which e.g. the local mean, standard deviation etc. can be calculated. In addition to classic blurring filters and edge detection (Sobel, Laplace etc.), there is also convolution with a user-defined kernel.