Выведите рассчитанную гамму в опции 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.

Другие вопросы по тегам