Вначале я уберу это с дороги: это может быть действительно глупый вопрос, и он может также относиться к другому SE, поэтому, пожалуйста, не стесняйтесь сказать мне, если это так.
У меня есть куча изображений, представляющих собой оттенки серого и зеленый канал Некоторые изображения намного темнее других, а остальные примерно одинаковы.
Я бы хотел "гомогенизировать" яркость набора изображений как можно лучше (это не обязательно должно быть идеально).
Кто-нибудь знает, есть ли достаточно простой способ сделать это?
Вот как я думаю сделать это в настоящее время, используя ImageMagick (немного bash
псевдо- и фактического кода, так как я использую CLI imagemagick на OSX, но другие решения подойдут):
Шаг 1
Прочитайте в моем наборе «эталонных изображений» с уровнем яркости / серого цвета, с которым я в порядке, и получите средний уровень серого:
greyvals = ()
for file in an_array_of_image_files ; do
# get array of grey values
greyval=$(convert $file -colorspace Gray -format "%[mean]" info:)
greyvals+=$greyval
# average the greyvals of the reference set through some mean function.
Шаг 2
Это мой вопрос. Есть ли способ сделать изображение ярче или темнее до определенного уровня серого?
ImageMagick предоставляет функцию modulate
, но примеры, которые я нашел до сих пор, требуют процента «осветления / потемнения», например ::
convert $file -modulate 200% ${file%.*}_bright.png
Я полностью лаю не на том дереве?
EDIT
Некоторые примеры изображений:
Ссылка «достаточно яркое» изображение:
Пример «темного» изображения:
Изображение выравнивания гистограммы - это работает довольно хорошо, но в некоторых регионах появляются некоторые белые артефакты.