boostorg / boostorg/gil

Fix wrong pixel channel truncation in binary threshold and truncate threshold

Open
#697 2 comments 0 reactions 0 assignees View on GitHub
ext/image_processing
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.