c++ - 8*8方 block 亮度

标签 c++ opencv block retina luminance

是否有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/

相关文章:

c++ - 如何在opencv c++中对图像进行骨架化

c++ - 在渲染 SDL_TTF 文本 C++ 时显示变量

c++ - 如何在 SVM 分类器中重用训练信息

oracle:COMMENT 的 Oracle 等效数据类型是什么?

ios - 将完成处理程序中的值存储到变量中

java - Java 中的密码学

c++ - MFC 访问 lparam 抛出异常

c# - 将 SAFEARRAY 从 C++ 返回到 C#

opencv - Ubuntu:NetBeans:OpenCV:找不到共享库

linux - CMAKE opencv 更改构建文件夹