Яркость 8 * 8 блока

Существует ли функция C++ или библиотека opencv, которая может рассчитать средний лог яркости данного блока 8*8 или всего изображения? Моя цель - рассчитать среднюю яркость и сохранить ее обратно в блоке. Кроме того, есть ли другой способ расчета общей яркости или средней яркости в другом научном методе, который соответствует зрительной системе человека? Если кто-то может указать мне на lib или функцию в C++, я был бы признателен за это.

1 ответ

Решение

Чтобы рассчитать среднюю яркость блока 8x8, центрированного в каждом пикселе входного изображения в оттенках серого, вы можете выполнить двумерную свертку этого изображения с ядром 8x8, содержащим значение 1/64, т.е. 1 / (8 * 8) в каждой ячейке.,

Это называется нормализованным блочным фильтром / box blur.

Затем можно сэмплировать полученное изображение, например, в точке (x, y), чтобы получить среднюю яркость блока 8x8 с центром в точке (x, y).

В руководстве OpenCV есть код для нормализованного блочного фильтра, размер которого выбирается пользователем.

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/filter_2d/filter_2d.html

Что касается "журнала" этого значения, вы можете использовать функцию OpenCV cvLog, чтобы взять журнал отфильтрованного изображения и получить свой результат.

Другие вопросы по тегам