直方图均衡化及matlab实现
在处理图像时,偶尔会碰到图像的灰度级别集中在某个小范围内的问题,这时候图像很难看清楚。比如下图:

它的灰度级别,我们利用一个直方图可以看出来(横坐标从0到255,表示灰度级别,纵坐标表示每个灰度级别的像素出现个数)

可以看出,上图是由于灰度级过于集中,导致图片难以看清。
这时候我们可以把灰度级别“拉开”,使得灰度级多且分布均匀,让图片具有高对比度和多变的灰度色调。
那么如何拉开才能使得灰度级别占据从0到255的整一个范围呢?
我们可以先利用概率,计算出原图中每一个灰度级别的像素个数占所有像素个数的比例,然后比例逐个灰度级别地累加,接着把累加比例乘以256,得出该灰度级别“拉开”之后应该在哪一个级别。
举一个例子,假设一张图片像素点对应的矩阵为
f=[100,100,100,100,100;
110,110,110,110,110;
120,120,120,120,120;
130,130,130,130,130;
140,140,140,140,140];
那么我们可以看到灰度级别为100的像素个数的比例为1/5,那么现在灰度级别应该改为round(1/5*256-1)。之所以-1是因为灰度级从0到255,取整是因为灰度级均为整数。
接下来110所占比例也是1/5,累加比例变成2/5,所以灰度级别应该是round(2/5*256-1)。
120对应的累加比例为3/5,就应该是round(3/5*256-1)
……
如此,就可以把灰度级拉开。拉开后直方图如下:

最后效果如下

最后附上matlab代码:
clear all;
clc;
close all; f=imread('zftjhh1.jpg');
[m,n,d]=size(f);%灰度图1维,彩色图3维
if d==1
f1=f;%复制后新的图片f1,作为改变后的图片
elseif d==3
f=rgb2gray(f);
f1=f;
end
figure
imhist(f)
[count,x]=imhist(f);%count表示每个灰度级别有多少个像素,x表示有多少个灰度级别 PDF=count/(m*n);%PDF表示每个灰度级别出现的概率,一共有256行
CDF=cumsum(PDF);%CDF表示逐行相加的概率,也就是累加概率 for i=1:256
xiangsuxushu=find(f==i);%原本灰度级别为i的像素在第几位
changdu=length(xiangsuxushu);
for j=1:changdu
f1(xiangsuxushu(j))=round(CDF(i)*256-1);%每一个原本灰度级别为i的像素,
%灰度级别改为累加出现概率*256
%再取整
end
end figure
imhist(f1)
figure
imshow(f1)
有做得不完善的地方欢迎留言探讨!
直方图均衡化及matlab实现的更多相关文章
- 直方图均衡化与Matlab代码实现
昨天说了,今天要好好的来解释说明一下直方图均衡化.并且通过不调用histeq函数来实现直方图的均衡化. 一.直方图均衡化概述 直方图均衡化(Histogram Equalization) 又称直方图平 ...
- matlab 直方图均衡化
原理: 直方图均衡化首先是一种灰度级变换的方法: 原来的灰度范围[r0,rk]变换到[s0,sk]变换函数为:s=T(r); 为便于实现,可以用查找表(look-up table)的方式存储,即:原始 ...
- 图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化
今天,我们学习了直方图.于是乎,回来我就用matlab代码实现一下.昨天受到道路检测老师课上一个内容的影响(对于道路裂缝的检测,我突发奇想,如果对于道路图像进行操作,是否能够让裂缝与道路分离,使得图像 ...
- 彩色图像的直方图均衡化matlab代码
彩色图像的直方图均衡化 - YangYudong2014的专栏 - CSDN博客 http://blog.csdn.net/yangyudong2014/article/details/4051503 ...
- Matlab实现直方图均衡化
G=imread('aini555.jpg'); I=rgb2gray(G); J=histeq(I); %直方图均衡化,这一个函数就可以做到均衡化的效果 figure, subplot(),imsh ...
- 直方图均衡化与直方图规定化的MATLAB实现
目录 1.直方图均衡化 2.直方图规定化 @ 1.直方图均衡化 对图像进行非线性拉伸,重新分配图像像元值,使一定灰度范围内像元值的数量大致相等就是直方图的均衡化.原来直方图中间的峰顶部分对比度得到增强 ...
- MATLAB - 练习程序,直方图均衡化
直方图均衡化的作用是图像增强. 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布. 第一个问题.均衡化过程中,必须要保证两个条件:①像素无论怎么映射, ...
- matlab 直方图均衡化(含rgb)
步骤: 统计原图像素每个像素的个数 统计原图像<每个灰度级的像素的累积个数 家里灰度级得映射规则 将原图每个像素点的灰度映射到新图 代码: clear all I=imread('1.jpg') ...
- 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
随机推荐
- 【Luogu3807】【模板】卢卡斯定理(数论)
题目描述 给定\(n,m,p(1≤n,m,p≤10^5)\) 求 \(C_{n+m}^m mod p\) 保证\(P\)为\(prime\) \(C\)表示组合数. 一个测试点内包含多组数据. 输入输 ...
- 【linux之进程管理,系统监控】
一.进程管理 前台进程:一般是指占据着标准输入和/或标准输出的进程后台进程:不占据默认开启的进程都是前台进程ctrl+C 中断ctrl+z 从前台转入后台bg 后台进程编号 让其在后台运行ls -R ...
- HDFS配额管理(实战)
概述: Hadoop分布式文件系统(HDFS)允许管理员为使用的名称和单独目录使用的空间数量设置配额.名称配额和空间配额是独立运作的,但这两类配额的管理和实施是密切相关的. Name Quotas: ...
- c#开发wps插件(2)
上一篇,我们谈了插件开发原理,现在该是应用原理的时候了.工欲善其事必先利其器,首先安装wps 2016专业版,然后再开发. 第一步:打开vs2010,新建一个类库项目,项目结构如下: 说明:其中Res ...
- js实现二叉树
//binary tree//add order remove findfunction tree() { var node = function(key) { this.left = null; ...
- 微信小程序基于腾讯云对象存储的图片上传
在使用腾讯云对象存储之前,公司一直使用的是传统的FTP的上传模式,而随着用户量的不断增加,FTP所暴露出来的问题也越来越多,1.传输效率低,上传速度慢.2.时常有上传其他文件来攻击服务器,安全上得不到 ...
- SQL 存储过程 多条件 分页查询 性能优化
最优化查询代码 -- 注意:此处可能会出现 字符串过长问题,所以 必要的情况下请分段处理 set @sql1 =' SELECT * FROM ( select ROW_NUMBER() OVER(O ...
- [SCOI2011] 糖果
luogu Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到 ...
- HEX文件合并方法
通过开发嵌入式系统时,可能需要boot引导应用程序,一个小工程就需要两个hex文件进行合并,但是生产的时候都是裸片烧的,因此需要将两个合并为一个文件 以下是具体合并的方法: 1.确保自检安装了ultr ...
- form表单里的故事
<form class="m-t" role="form" action='javascript:;'> <div class="f ...