8-битное изображение, скорее всего, будет иметь усеченные значения пикселей. Что вам нужно сделать, это интерполировать недостающие биты младшего разряда перед применением преобразования цвета. Невозможно узнать, что представляют собой пропущенные значения, вам придется сделать определенные предположения, например, гладкость.
Чтобы ответить на ваш вопрос, я не знаю ни одного графического редактора, предлагающего эту функцию. Почему бы и нет? Скорость для одного, команда кривых / уровней в большинстве фоторедакторов достаточно быстра, чтобы работать в режиме реального времени, чтобы вы могли увидеть эффект на вашем изображении. Теперь у вас может быть отдельная функция, которая работает без предварительного просмотра, но это будет довольно высокоуровневая функция, и вам придется реализовать ее для всех операций, которые применяют масштабирование к значениям пикселей. Наконец, эта проблема полностью исчезнет, если у вас есть камера с поддержкой RAW и 16-битный рабочий процесс.
Вы всегда можете выполнить интерполяцию самостоятельно, например, путем преобразования в 16-бит, повторной дискретизации с более высоким разрешением, понижающей дискретизации. Альтернативная схема, которая, вероятно, будет работать так же хорошо, состояла бы в рандомизации младших битов (путем добавления небольшого количества шума). Или сочетание повторной выборки и рандомизации.
Не стоит слишком расстраиваться из-за гистограммы вашего изображения, ошибка квантования этой операции вряд ли будет заметна, если на изображении будет какой-либо шум, если у вас нет областей с мелкими цветовыми градиентами (однако в случаях с плавными переходами и небольшим шумом интерполяция будет работать очень хорошо).