Создайте значение, отражающее среднюю яркость изображения. - PullRequest
2 голосов
/ 22 ноября 2010

Мне нужно определить, находится ли изображение выше определенной яркости.Используя шкалу от 0 до 255, я хочу создать значение в этом диапазоне, чтобы отразить яркость изображения.

т.е. белое изображение - 255, а черное - 0.

Все это должно быть выполнено с помощью скрипта bash, который я сейчас создаю.Я понятия не имею, какое изображение lib могло бы сделать это для меня.

Ответы [ 2 ]

6 голосов
/ 22 ноября 2010

Как правило, это одна из классических проблем обработки сигналов, и существует несколько подходов, основанных на том, как вы определяете «яркость». Обычно это относится к «яркости» изображения, «громкости» звукового сигнала и т. Д.

Некоторые идеи о том, что вы можете использовать в качестве общей «яркости»:

  • Среднее значение всех пикселей (т.е. суммируйте все яркости всех пикселей, затем разделите на общее количество пикселей, то есть ширину * высоту).
  • Создайте гистограмму распределения яркости, затем выберите такую ​​точку x в этой гистограмме, что 98% (95%, 90%, 70% - это число может варьироваться) от всех пикселей в вашем изображении будет менее ярким, чем этот x . Это называется процентиль.
  • Рассчитать «среднеквадратичное значение» (RMS) для всех пикселей (суммировать квадраты всех пикселей, разделить на общее количество пикселей, извлечь квадратный корень из этого).

Существует несколько библиотек изображений, которые могут дать хорошие результаты. Самым простым в использовании из сценария оболочки, вероятно, является ImageMagick / GraphicsMagick - вы можете получить как простые средние значения, так и выполнить более сложную гистограмму, чтобы проверить процентили, если хотите.

4 голосов
/ 22 ноября 2010

Попробуйте ImageMagick Статистика серого или Гистограмма

convert rose: -colorspace gray -format "%[fx:100*mean]%%" info:
...