C++ OpenCV直方图均衡化

直方图定义

图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类。

数码时代,直方图可以说是无处不在。无论是相机的显示屏,还是后期PS、ACR里的窗口,甚至色阶、曲线的工具之中,都可以看到直方图的身影。

要理解直方图,绕不开“亮度”这个概念。人们把照片的亮度分为0到255共256个数值,数值越大,代表的亮度越高。其中0代表纯黑色的最暗区域,255表示最亮的纯白色,而中间的数字就是不同亮度的灰色。人们还进一步把这些亮度分为了5个区域,分别是黑色,阴影,中间调,高光和白色。

如果一副图像的像素占有很多的灰度级而且分布均匀,那么这样的图像往往有高对比度和多变的灰度色调。直方图均衡化就是一种能仅靠输入图像直方图信息自动达到这种效果的变换函数。它的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度进行压缩,从而扩展像元取值的动态范围,提高了对比度和灰度色调的变化,使图像更加清晰。

基本思想

直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。

直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。

通过上一篇《C++ OpenCV图像的重映射》我们用到了remap这个函数,可以将图像灰度分布从一个分布映射到另一个分布,然后再得到映射后的像素值即可。

直方图均衡化API cv::equalizeHist

代码演示

新建一个项目opencv-0020,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法

直方图均衡化

代码非常简单

我们来看看显示效果

我们再换换别的图试一下效果


-END-

本文分享自微信公众号 - 微卡智享(VaccaeShare)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏苦逼的码农

动态规划之正则表达式

之前的文章 动态规划详解 收到了普遍的好评,今天写一个动态规划的经典应用:正则表达式。如果有读者对「动态规划」还不了解,建议先看一下上面那篇文章。

17530
来自专栏磐创AI技术团队的专栏

一文彻底搞懂BP算法:原理推导+数据演示+项目实战(下篇)

鸢尾花数据集如图2所示,总共有三个品种的鸢尾花(setosa、versicolor和virginica),每个类别50条样本数据,每个样本有四个特征(花萼长度、...

15030
来自专栏磐创AI技术团队的专栏

怎样设计最优的卷积神经网络架构?| NAS原理剖析

虽然,深度学习在近几年发展迅速。但是,关于如何才能设计出最优的卷积神经网络架构这个问题仍在处于探索阶段。

14720
来自专栏搜狗测试

你选择合适的git workflow了吗?

备注:示例图参考rubygarage.org,项目二中dev,beta,release分支分别对应图中的development,release, maste...

9720
来自专栏苦逼的码农

据说这是世界上最漂亮的排序算法,了解一下

在《算法导论》第二版第 7 章(快速排序)的思考题(第 95 页)中提及到一种 低效的递归排序算法:Stooge 排序, Howard、Fine 等教授将这个算...

10420
来自专栏GitHubDaily

《AI 算法工程师手册》正式开源!

之前我曾在《分享集锦:哈佛 Web 开发教程、HTTP 状态码速学、阿里 AI 算法工程师手册、机器学习书籍》中提及过一本由阿里巴巴工程师撰写的一本算法手册,前...

14240
来自专栏python学习教程

自学Python要多久?Python学到什么程度可以找到好工作

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

23420
来自专栏不想当开发的产品不是好测试

source命令

source命令,之前一直用来加载环境变量的,source一下然后执行某个sh,使其环境变量生效,但对细节没有追究;

22130
来自专栏京程一灯

企业级JavaScript:机遇,威胁与解决方案[每日前端夜话0x8E]

Enterprise JavaScript: Opportunities, Threats, Solutions

11650
来自专栏深度学习与python

Python3中的字符串处理小技巧

python编程虽然有很多库函数可以使用,但是掌握一些必要的编程技巧也是非常重要的,如果你熟练使用诸如引用计数、类型检查、数据操作、使用堆栈、管理变量、消除列表...

14240

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励