Установка определенной яркости изображения - PullRequest
0 голосов
/ 14 мая 2018

Вначале я уберу это с дороги: это может быть действительно глупый вопрос, и он может также относиться к другому 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

Некоторые примеры изображений:

Ссылка «достаточно яркое» изображение:

enter image description here

Пример «темного» изображения:

enter image description here

Изображение выравнивания гистограммы - это работает довольно хорошо, но в некоторых регионах появляются некоторые белые артефакты. enter image description here

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Используя мои сценарии ImageMagick, Histmatch и Matchimage, вот несколько результатов с использованием ваших двух изображений. ImageMagick 6.9.9.43 Q16 и Mac OSX Sierra.

histmatch -c rgb reference.jpg dark.png dark_histmatch_rgb.png

enter image description here

histmatch -c gray reference.jpg dark.png dark_histmatch_gray.png

enter image description here

matchimage -c hsi dark.png reference.jpg dark_matchimage_hsi.png

enter image description here

matchimage -c ycbcr dark.png reference.jpg dark_matchimage_ycbcr.png

enter image description here

0 голосов
/ 14 мая 2018

Используя ImageMagick 7, я бы рассмотрел этот подход ...

magick input.png -brightness-contrast %[fx:50-(mean*100)] output.png

Это позволит настроить каждое входное изображение на 50% средней яркости. Используя IM6, вы можете получить требуемое значение в переменную с помощью команды, подобной этой ...

adjuster=`convert input.png -format %[fx:50-(mean*100)] info:`

Затем используйте эту переменную в качестве аргумента для оператора -brightness-контраст в команде, как мой пример IM7 выше, что-то вроде этого ...

convert input.png -brightness-contrast $adjuster output.png

Я не проверял это из командной строки * nix, но концепция должна работать.

...