直方图均匀化简介

从这张未经处理的灰度图可以看出,其灰度集中在非常小的一个范围内。这就导致了图片的强弱对比不强烈。

直方图均衡化的目的,就是把原始的直方图变换为在整个灰度范围(0~255)内均匀分布的形式,从而增加像素灰度值的动态范围,达到增强图像整体对比度的效果。

直方图均衡化的列表计算

序号

运算

步骤和结果

1

列出原始图灰度值 f(0 ≤ f ≤ L-1)

0 1 2 3 4 5 6 7
2 列出原始直方图(概率表达) 0.02 0.05 0.09 0.12 0.14 0.2 0.22 0.16
3 计算原始累计直方图 gf(灰度值 ≤ f 的概率和) 0.02 0.07 0.16 0.28 0.42 0.62 0.84 1.00
4 取整 g=(int) [(L-1)·gf + 0.5] 0 0 1 2 3 4 6 7
5 确定对应关系(原灰度值 -> 新灰度值) 0->0  1->0  2->1  3->2  4->3  5->4  6->6  7->7 
6 更新直方图 0.07 0.09 0.12 0.14 0.2 0 0.22 0.16

实现直方图均衡化:equalizeHist 函数

equalize 函数实现的灰度直方图均衡化算法,就是把直方图的每个灰度值进行归一化处理,求每种灰度的累积分布,接着得到一个映射的灰度映射表,然后根据相应的灰度值来修正原图中的每个像素。

void equalize(InputArray src, OutputArray dst);

  • src,输入图像,即源图像,填 Mat 类的对象即可,但需要为 8 位单通道的图像。
  • dst,输出结果,需要和源图像有一样的尺寸和类型。

代码示例:

#include<opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main() {
Mat src = imread("C:/Users/齐明洋/Desktop/1.jpg");
imshow("src", src); Mat gray, dst;
cvtColor(src, gray, COLOR_BGR2GRAY);
imshow("gray", gray);
equalizeHist(gray, dst);
imshow("dst", dst); waitKey(); }

效果展示:

最新文章

  1. Agile
  2. come on,逆战
  3. centos x86_64环境下 下载chrome
  4. love easily fade
  5. Xamarin开发IOS笔记:切换输入法时输入框被遮住
  6. js-高级技术
  7. windows和mac下分别配置虚拟主机
  8. jquery Tab默认情况下自动切换
  9. Java中使用POI读取大的Excel文件或者输入流时发生out of memory异常参考解决方案
  10. Python模块----linecache
  11. STEP 7-MicroWIN SMART 西门子PLC再次安装问题
  12. mysql 集群 监控
  13. Mimikatz的使用心得
  14. 3Openwrt自定义CGI实现 前后端交互
  15. linux 下修改etc/profile文件
  16. Spark中的一些概念
  17. HBase2.0中的Benchmark工具 — PerformanceEvaluation
  18. jquery获取select多选框选中的值
  19. 题解-APIO2010 特别行动队
  20. touch事件的分发和消费机制

热门文章

  1. 微服务的多数据源配置: step 1
  2. 【WPF学习】第二十一章 特殊容器
  3. JS-06-定时器
  4. MySQL5.6绿色版安装
  5. docker扫盲,面试连这都不会就等着挂吧!
  6. Rabbitmq | ConnectionException:Connection refused: connect
  7. Java数据类型及对应取值范围
  8. 三、 TCP(传输控制协议)
  9. python 类 --导入类
  10. Jumpserver:跳板机