QGIS offers a set of Fuzzify function that can be used for rescaling. This custom rescale tool offers an extended set of rescale functions that you can use to transform your raster data. Based on the r.fuzzy.set module for GRASS.

To use the rescale tool in your QGIS Processing Toolbox, first download the script rescale_functions.py from Github.
Next, open QGIS and go to Processing → Toolbox. Click on the Python icon in
the toolbar of the Processing Toolbox and choose Add script to toolbox.
You’ll find the tool under Scripts → Raster analysis → Rescale or fuzzy
membership functions in the Processing toolbox.
To determine how values of the input raster are transformed, four different functions are available. Each function defines how values are transformed between 0 and 1. Choose the one that best reflects how suitability increases or decreases across your landscape.

The four rescale functions represent different ways suitability changes along a gradient of input values. They can be applied to the left boundary (suitability increasing with input values) or the right boundary (suitability decreasing with input values).
With the shape parameter (-1 to 1), the user can fine-tune how gradual or abrupt the shift from unsuitable to suitable (or vice versa) should be. The default is

The shape parameter and how it impacts the shape of the boundary.
The diagram below illustrates how you can define either 2 or 4 inflection points, depending on whether you want to rescale just one side (lower or higher end of the distribution) or both sides of the distribution.

Examples of the linear and S-shaped rescale functions with boundaries. The boundaries can be defined using 2 or 4 inflection points. See the text for more details.
Both A,B and C,D are provided (two-sided rescaling):
Only A and B provided (left-sided rescaling):
Only C and D provided (right-sided rescaling):
Note, the points do not have to be in map range, but this may lead to only 0 or 1 membership for the whole map. The user can provide the points A and B (left set), the points C and D (right set) or both.
Input raster layer: Raster layer to rescale
Left side: Enter two comma-separated values A,B to define the left slope of the rescale function.
Right side: Enter two comma-separated values C,D to define the right slope of the rescale function.
Shape parameter: Controls the sharpness of the curve, from soft transition (-1) to default (0) to sharp transition (+1).
Rescale function: The rescale functions determine the shape of the left and right boundaries of the rescale function. The options are linear, S-shaped, G-shaped and J-shaped.
Based on the r.fuzzy.set addon for GRASS. See its manual page for more information about the functions and a visual explanation of the parameters.
The term ‘rescale function’ is used instead of ‘fuzzy membership function’ because it can be used in applications other than fuzzy logic, in contexts such as raster normalization and suitability mapping.
Paulo van Breugel, HAS green academy, Innovative Biomonitoring research group, Climate-robust Landscapes research group