是否有c++函数或opencv库可以计算给定8*8 block 或总图像亮度的平均对数?我的目标是计算平均亮度并将其存储回 block 中。另外,有没有另一种适合人类视觉系统的科学方法来计算整体亮度或平均亮度?如果有人可以向我指出 C++ 中的库或函数,我将不胜感激。
最佳答案
要计算以输入灰度图像中的每个像素为中心的 8x8 block 的平均亮度,您可以使用包含值 1/64 的 8x8 内核对该图像执行二维卷积,即 1/(8*8)在每个单元格中。
这称为归一化框过滤器/框模糊。
然后您可以对生成的图像进行采样,例如在 (x,y) 处产生以 (x,y) 为中心的 8x8 block 的平均亮度。
OpenCV 手册中有规范化盒式过滤器的代码,用户可选择大小。
http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/filter_2d/filter_2d.html
关于这个值的'log',然后你可以使用OpenCV函数cvLog对过滤后的图像取log并得到你的结果。
关于c++ - 8*8方 block 亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23657738/