直方图均衡化
来源:互联网 发布:用友软件电话 编辑:程序博客网 时间:2024/05/24 07:18
直方图均衡化
直方图均衡化是图像增强的一种,对灰度较集中的直方图进行拉伸,增加对比度。
图像增强需满足两个条件:
1. 原图像的大小关系不变,即图像增强前后各个像素的大小关系保持不变。
2. 图像所属范围不变,即若8位图像,前后灰度值范围仍为0-255.
直方图均衡化就是把原图像的对应的灰度值通过累积分布函数映射为另一灰度值。
直方图均衡化满足以上两个条件。
直方图均衡化步骤
1. 求原图像的直方图
2.求累积分布直方图
其中,n是图像中像素的总和,是当前灰度级的像素个数,L是图像中可能的灰度级总数。
3.把原灰度值通过函数映射到新的灰度值
若原灰度值为k,新的灰度值为grayk,原图像最小最大值为iMin和iMax,Sk为上求得累积分布直方图k出的值
grayk=(iMax-iMin)*Sk+iMin;
理解:
对于原直方图,峰值为灰度分布密集处,通过映射,峰值附近的每个灰度值对应的累积直方图增加也较快,通过累积分布值乘以255得到的值
增加也较快,这个就拉伸了峰值附近的值。
代码实现如下:
for(i=0;i<height;i++){ for(j=0;j<width;j++){ n[s[i][j]]++; } } for(i=0;i<L;i++){ p[i]=n[i]/(width*height); }for(i=0;i<=L;i++){ for(j=0;j<=i;j++){ c[i]+=p[j]; } } max=min=s[0][0]; for(i=0;i<height;i++){ for(j=0;j<width;j++){ if(max<s[i][j]){ max=s[i][j]; }else if(min>s[i][j]){ min=s[i][j]; } } } for(i=0;i<height;i++){ for(j=0;j<width;j++){ t[i][j]=c[s[i][j]]*(max-min)+min; } }
效果:
原图: 原图直方图:分布集中
均衡化图: 均衡后直方图:分布较均衡
借助图像:
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/histogram_equalization/histogram_equalization.html
- 直方图均衡化、自适应直方图均衡化
- 直方图均衡化推导
- 直方图均衡化
- 直方图均衡化
- 直方图均衡化
- 直方图均衡化
- 灰度直方图均衡化
- 直方图均衡化
- 直方图均衡化
- 直方图均衡化
- matlab直方图均衡化
- 直方图均衡化
- opencv直方图均衡化
- 直方图均衡化原理
- 直方图均衡化
- 直方图均衡化
- 直方图的均衡化
- 直方图均衡化ZT
- hdu 5861Road(2016 Multi-University Training Contest 10——线段树+扫描线)
- 变频无线发射机系统电路设计详解
- UVAlive 6622 Absurdistan Roads(最小生成树+LCA)
- JavaWeb 分页
- 【软件工程】--需求分析
- 直方图均衡化
- Ubuntu快速安装jdk 1.8
- js代码执行C#代码
- jvm面试题(三)
- JS组件系列——封装自己的JS组件,你也可以
- poj 3273 Monthly Expense
- Android中直播视频技术探究之---基础知识大纲介绍
- 51Nod-1107-斜率小于0的连线数量
- jni的使用