Существует ли функция c ++ или библиотека opencv, которая может рассчитать средний лог яркости данного блока 8 * 8 или всего изображения? Моя цель — рассчитать среднюю яркость и сохранить ее обратно в блоке. Кроме того, есть ли другой способ расчета общей яркости или средней яркости в другом научном методе, который соответствует зрительной системе человека? Если кто-то может указать мне на lib или функцию в c ++, я был бы признателен за это.
Чтобы рассчитать среднюю яркость блока 8×8, центрированного на каждом пикселе входного изображения в оттенках серого, вы можете выполнить двумерную свертку этого изображения с ядром 8×8, содержащим значение 1/64, т.е. 1 / (8 * 8) в каждой ячейке. ,
Это называется нормализованным блочным фильтром / box blur.
Затем вы можете сэмплировать полученное изображение, например, в точке (x, y), чтобы получить среднюю яркость блока 8×8 с центром в точке (x, y).
В руководстве OpenCV есть код для нормализованного блочного фильтра, размер которого выбирается пользователем.
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/filter_2d/filter_2d.html
Что касается «журнала» этого значения, вы можете использовать функцию OpenCV cvLog, чтобы взять журнал отфильтрованного изображения и получить свой результат.