use CLAMP in colordistance
keep MY_MAX_RAND in rgbnoise
code cleanup from old experiments
leaner free section in water
Co-authored-by: Dan Dennedy <dan@dennedy.org>
to avoid double loading of protobuf, implicitly loaded by opencv,
we need to deactivate the build of two face detection plugins that
use opencv (which loads protobuf implicitly). This fixes bug #185
A bunch of safety checks on mixers like overlay, blend and cairoblend
that may mitigate the #187 undeterministic behavior and segfaults.
Could not reproduce it yet.
- RGBNoise: move global vars (gaussian_lookup, TABLE_INITED, next_gaussian_index, last_in_range)
- Glitch0r: move global g0r_state
- Cartoon: fix PIXELAT macro to refer to instance
address #188 (seems not all filters on that list are unsafe)
- Added portable fallback implementation for tint0r filter when SSE4.1 is not available
- Implemented proper architecture detection using #define directives
- Added support for future AVX2 and NEON optimizations (placeholders)
- Fixed parameter name issue in f0r_get_plugin_info function
- Proper handling of pixel data in BGRA format
- Correct luminance calculation for all code paths
addressed some defective filters known to cause problems
- Fixed division by zero in IIRblur filter
- Added bounds checking in distort0r filter
- Fixed negative index issues in rgbsplit0r filter
- Added division by zero protection in rgbsplit0r filter
- Improved colordistance filter by removing debug printf and adding clamping
- Fixed width/height initialization in sobel filter
- Add bounds checking to sobel filter
- Fixed potential division by zero in posterize filter
Added packaging section and repology status badge to README to facilitate an efficient way to survey the status of frei0r across the package ecosystem.
[Otsu's algorithm](https://en.wikipedia.org/wiki/Otsu%27s_method) finds
the best threshold (**t***) to separate image foreground from
background; pixels below **t*** are part of background, and pixels above
are part of foreground. However, unlike hard thresholding as done in
Otsu's algorithm, a soft thresholding is done here instead, through
treating **t*** as the _base_ of the sigmoidal transfer (function). It
could be seen as a variant of **sigmoidalfilter**, where the _base_ is
algorithmically determined.
Natural extension of the `tint0r` filter. The filter operates only between two colours, while the `heatmap0r` filter works between three colours: two extremes and one adjustable mid-point, and smoothly interpolates between them using quadratic interpolation. It can also be used for analysing the gamut of luminosity.