Выведите рассчитанную гамму в опции ImageMagick -auto-gamme
Мне нужно знать уровень гамма-коррекции, который ImageMagick автоматически вычисляет, когда мы используем следующую команду
конвертировать in.jpg -auto-gamma out.jpg
Это возможно?
Спасибо
2 ответа
Если я правильно помню, -auto-gamma
позвонил бы AutoGammaImage
метод и примените следующее уравнение.
gamma = log(pixel_mean)/log(0.5)
Таким образом, чтобы рассчитать, какое значение гамма-коррекции будет применено, вы можете сделать что-то вроде...
pixel_mean=$(identify -format '%[mean]' rose:)
echo "l($pixel_mean)/l(0.5)" | bc -l
#=> -14.72189
Как отметил Марк в комментариях, вы также можете использовать язык ImageMagick FX для расчета.
identify -format '%[fx:ln(mean*QuantumRange)/ln(0.5)]' rose:
#=> -14.7219
-авто-гамма это экспериментальный вариант. Для каждого цветового канала вычисляется среднее значение всех пикселей, затем применяется
gamma=log(mean)/log(0.5)
к каждому образцу. Я никогда не пробовал это до сих пор, но это работает довольно хорошо на сильно недодержанном фото в этом вопросе.
Что касается выяснения после преобразования, какая гамма была применена, об этом прямо не сообщается, но вы можете использовать "идентификацию" на исходном изображении и посмотреть "среднее", сообщаемое для каждого канала, чтобы выяснить гамму, которая будет используется, как в ответе emcconville.