Fix wrong pixel channel truncation in binary threshold and truncate threshold
- Dominant language
- C++
- Stars
- 199
- Forks
- 171
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 10
Description
### Actual behavior
`gil::threshold_truncate()` and `gil::threshold_binary()` from gil/image_processing/truncate.hpp employ a hard-coded value of 0 for the channel minimum value and a value of `std::numeric_limits::max()` for the maximum value. This works only for unsigned integer channel types such as `gil::rgb8_pixel_t` and `gil::gray8_pixel_t`, but does not work for signed channel types and also not for floating point types whose value range is limited from 0.0 to 1.0.
Edit: Otsu thresholding also employs std::numeric_limits, which is invalid for scoped channels.
### Expected behavior
Correct channel value truncation according to the channel min/max values.
Contributor guide
Assessment
This issue has not been assessed yet.