Оценка яркости изображения Opencv

Я пытался получить яркость изображения в Opencv, и до сих пор я использовал calcHist и рассматривал среднее значение гистограммы. Однако я чувствую, что это не точно, так как на самом деле это не определяет яркость изображения. Я выполнил калхист над серым масштабом изображения и попытался различить средние значения, полученные от ярких изображений, над умеренными. До сих пор мне это не удавалось. Не могли бы вы помочь мне с метод или алгоритм, который может быть реализован через OpenCv, для оценки яркости изображения? Спасибо заранее.

2 ответов


Я полагаю, что цветовая модель HSV будет полезно в вашей проблеме, где канал V-значение:

"значение-это яркость цвета и зависит от насыщенности цвета. Он колеблется от 0 до 100%. Если значение равно '0' цветовое пространство будет полностью черный. С увеличением значения яркость цветового пространства увеличивается и показывает различные цвета."

поэтому используйте метод OpenCV cvCvtColor(const CvArr* src, CvArr* dst, int-код), что конвертирует изображения из одного цветового пространства в другое. В вашем случае code = CV_BGR2HSV.Чем вычислить гистограмму третьего канала V.


Я собирался спросить то же самое, но потом узнал, что подобный вопрос не дал удовлетворительных ответов. Все ответы, которые я нашел на SO, касаются человеческого наблюдения одного пикселя RGB против HSV.

из моих наблюдений, субъективная яркость изображения также сильно зависит от рисунка. Звезда в темном небе может выглядеть ярче, чем облачное небо днем, в то время как среднее значение пикселя первого изображения будет намного меньше.

изображения, которые я использую серая клетка-изображения, полученные с помощью микроскопа. Формы значительно различаются. Иногда это маленькие яркие точки на очень черном фоне, иногда менее яркие большие области на не столь темном фоне.

мой подход:

  • найти максимум гистограммы (HMax), используя порог для удаления горячих пикселей.
  • вычислить средние значения всех пикселей между HMax * 2/3 и HMax

коэффициент 2/3 смог также быть увеличен до 3/4 (которое уменьшает диапазон пикселей, считающихся яркими).

подход работает довольно хорошо, так как различные модели ячеек с одинаковым титрованием производят одинаковую яркость.

P. S.: И чего я, собственно, хотел спросить, есть ли подобная функция для такого расчета в OpenCV или SimpleCV. Большое спасибо за любые комментарии!