У меня есть изображения sRGB с цветными оттенками. Чтобы удалить его вручную, я обычно использую Photoshop Level Adjustments . В Photoshop также есть инструменты для этого: Автоконтраст или даже лучше Автоцвет , который также учитывает тени, средние тона и блики.
Если я удаляю слепок вручную, отрегулируйте каждый из каналов RGB по отдельности, чтобы самые темные пиксели были настроены на чистый черный, а самые светлые - на чистый белый, а затем перераспределили все остальные значения (распространяя гистограмму). Это простой подход, но показывает хорошие результаты для моих изображений.
В моем приложении node.js я использую sharp для обработки изображений, которая использует libvips в качестве механизма обработки. Я попытался удалить приведение с помощью .normalize()
, но эта команда работает на всех каналах вместе, а не индивидуально для каждого из каналов RGB. Так что это не работает для меня. Я также задал этот вопрос на острой странице проекта. Я проверил предложение от lovell, чтобы попробовать его с hist_local
, но результаты не пригодны для меня.
Теперь я хотел бы узнать, как это можно сделать с помощью встроенных libvips. Я играл с nip2 GUI и различными командами, но не мог понять, как этого достичь:
- Гистограмма> Гистограмма выравнивания> Глобальная => Изображение выглядит насыщенным
- Image> Levels> Scale to 0 - 255 => Каналы не все распространяются от 0 - 255 (я не совсем понимаю, что делает эта команда?)
Спасибо за каждый совет!
Добавление Вот пример с фотографиями из Photoshop, чтобы показать, что я хочу.
Исходное изображение - это изображение кадра из негатива фильма. Изображение перед обработкой
Step1 Инвертированное изображение Изображение после инверсии
Step2 с использованием автоматического тона в Photoshop (работает так же, как мое описание выше о ручном удалении цветового оттенка) Изображение после автоматического тона
Это последнее изображение мне подходит.