matlab 直方图均衡化
原理:
直方图均衡化首先是一种灰度级变换的方法:
原来的灰度范围[r0,rk]变换到[s0,sk]变换函数为:s=T(r);
为便于实现,可以用查找表(look-up table)的方式存储,即:原始的灰度作为查找表的索引,表中的内容是新的灰度值。
其次,直方图均衡化是图像增强的一种基本方法,可提高图像的对比度,即:将较窄的图像灰度范围以一定规则拉伸至较大(整个灰度级范围内)的范围。
目的是在得到在整个灰度级范围内具有均匀分布的图像。
所以,当输入:直方图H(r)【此处指每个灰度级占有的像素数】;灰度级范围[r0,rk];目的是找到一个s=T(r)使得输出图像的直方图G(s)【同指】在整个灰度级范围内均匀分布。且需满足
(1)0—L(灰度范围)单调递增,避免黑白颠倒;
(2)0<r<L,时0<s<L,保持动态范围一致。
累积分布函数满足这几个要求。
\[\sum\limits_{i = 0}^k {G({s_i})} = \sum\limits_{j = 0}^k {H({r_j})} \]
若图像有M*N个像素,则均衡化后的直方图G(q)就有均匀分布:
\[F = \frac{{NM}}{{{s_k} - {s_0}}}\]
代入上式:
\[NM\int\limits_{{s_0}}^s {\frac{1}{{{s_k} - {s_0}}}} ds = \frac{{NM(s - {s_0})}}{{{s_k} - {s_0}}} = \int\limits_{{r_0}}^r {H(r)} dr\]
则:
\[s = T(r) = \frac{{{s_k} - {s_0}}}{{NM}}\int\limits_{{r_0}}^r {H(r)} dr + {s_0}\]
转换成离散形式:
\[s = T(r) = \frac{{{s_k} - {s_0}}}{{NM}}\sum\limits_{{r_0}}^r {H(r)} + {s_0}\]
一般\[{s_k} = 255,{s_0} = 0\]
自此就得到了与r相应的s。
matlab代码:
[filename,pathname]=uigetfile('*.*','select an image');
input_I=imread([pathname filename]);%读入图像
subplot(,,);imshow(input_I);
title('原始图像');%显示原始图像
I_gray = rgb2gray(input_I);
subplot(,,);imshow(I_gray);
title('灰度图像');
subplot(,,);imhist(I_gray);
title('灰度图像直方图');%显示灰度图像及直方图
[height,width]=size(I_gray);
r=zeros(,);
for i=:height
for j=:width
r(I_gray(i,j)+)= r(I_gray(i,j)+)+;
end
end %计算灰度直方图中的数值:每个灰度级对应的像素数目。
subplot(,,);stem(r);
title('计算所得灰度图像直方图');
s=zeros(,);
s()=r();
for i=:
s(i)=s(i-)+r(i);
end %累积分布函数:对应的也是像素的数目。
subplot(,,);stem(s);
for i=:
s(i)=floor(*s(i)/(height*width));
end % s(i)/(height*width) 为频率,* 为归一到0—255之间,floor为取整(整数部分)函数。【round为四舍五入函数,ceil为取整数部分加1】
I_HE=I_gray;
for i=:height
for j=:width
I_HE(i,j)= s(I_gray(i,j)+);
end
end%得到均衡化后的图像。s()~s()里的数值即为灰度值,~256标号对应的是原始灰度图像的0~255的灰度值。
m=zeros(,);
for i=:height
for j=:width
m(I_HE(i,j)+)= m(I_HE(i,j)+)+;
end
end %计算直方图中的数值:每个灰度级对应的像素数目。
subplot(,,);stem(m);
title('计算所得均衡化后图像直方图');
imwrite(I_gray,'1gray.png');
imwrite(I_HE,'1he.png');
subplot(,,);imshow(I_HE);
title('均衡化后的图像');
subplot(,,);imhist(I_HE);
title('均衡化后图像直方图');
结果:

问题
直方图确实拉伸了,人眼视觉上对比度也提升了,可是说好的均匀分布呢?
matlab 直方图均衡化的更多相关文章
- matlab 直方图均衡化(含rgb)
步骤: 统计原图像素每个像素的个数 统计原图像<每个灰度级的像素的累积个数 家里灰度级得映射规则 将原图每个像素点的灰度映射到新图 代码: clear all I=imread('1.jpg') ...
- 彩色图像的直方图均衡化matlab代码
彩色图像的直方图均衡化 - YangYudong2014的专栏 - CSDN博客 http://blog.csdn.net/yangyudong2014/article/details/4051503 ...
- 直方图均衡化与Matlab代码实现
昨天说了,今天要好好的来解释说明一下直方图均衡化.并且通过不调用histeq函数来实现直方图的均衡化. 一.直方图均衡化概述 直方图均衡化(Histogram Equalization) 又称直方图平 ...
- 图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化
今天,我们学习了直方图.于是乎,回来我就用matlab代码实现一下.昨天受到道路检测老师课上一个内容的影响(对于道路裂缝的检测,我突发奇想,如果对于道路图像进行操作,是否能够让裂缝与道路分离,使得图像 ...
- Matlab实现直方图均衡化
G=imread('aini555.jpg'); I=rgb2gray(G); J=histeq(I); %直方图均衡化,这一个函数就可以做到均衡化的效果 figure, subplot(),imsh ...
- 直方图均衡化与直方图规定化的MATLAB实现
目录 1.直方图均衡化 2.直方图规定化 @ 1.直方图均衡化 对图像进行非线性拉伸,重新分配图像像元值,使一定灰度范围内像元值的数量大致相等就是直方图的均衡化.原来直方图中间的峰顶部分对比度得到增强 ...
- MATLAB - 练习程序,直方图均衡化
直方图均衡化的作用是图像增强. 有两个问题比较难懂,一是为什么要选用累积分布函数,二是为什么使用累积分布函数处理后像素值会均匀分布. 第一个问题.均衡化过程中,必须要保证两个条件:①像素无论怎么映射, ...
- 图像增强算法(直方图均衡化、拉普拉斯、Log、伽马变换)
一.图像增强算法原理 图像增强算法常见于对图像的亮度.对比度.饱和度.色调等进行调节,增加其清晰度,减少噪点等.图像增强往往经过多个算法的组合,完成上述功能,比如图像去燥等同于低通滤波器,增加清晰度则 ...
- 对比度受限的自适应直方图均衡化(CLAHE)
直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图确定一条映射曲线,用来对图像进行灰度变换,以达到提高图像 对比度的目的.该映射曲线其实就是图像的累计分布直方图(CDF ...
随机推荐
- Cocos2d-X内存管理研究<一>
http://hi.baidu.com/tzkt623/item/651ca7d7a0aff6e055347f67 半夜没事干,研究内核,作为我cocos2d-x的第一篇教程.cocos ...
- 终端I/O之终端窗口的大小
大多数UNIX系统都提供了一种功能,可以对当前终端窗口的大小进行跟踪,在窗口大小发生变化时,使内核通知前台进程组.内核为每个终端和伪终端保存一个winsize结构: Struct winsize { ...
- mysql loop if
MYSQL: loop if ITERATE: 跳出此次循环,直接进入到下一次循环中 LEAVE: 结束循环,跳出整个循环. demo如下: CREATE TABLE t( v INT NOT ...
- 代码片段--Makefile之大型工程项目子目录Makefile的一种通用写法
转载:http://blog.csdn.net/mo_hui123456/article/details/8929615 管理Linux环境下的C/C++大型项目,如果有一个智能的Build Syst ...
- linux记录登录ip方法
PS:Linux用户操作记录一般通过命令history来查看历史记录,但是如果因为某人误操作了删除了重要的数据,这种情况下history命令就不会有什么作用了.以下方法可以实现通过记录登陆IP地址和所 ...
- batchExportPNG.py不是我的代码
#coding=gbk#@author lifc,20140806#批量制作输出专题图import arcpy,os,time,math #testpath=raw_input("testp ...
- UML类图中的六大关系:泛化、实现、依赖、关联、聚合、组合关系
UML定义的关系主要有:泛化.实现.依赖.关联.聚合.组合,这六种关系紧密程度依次加强,分别看一下 1.泛化 概念:泛化是一种一般与特殊.一般与具体之间关系的描述,具体描述建立在一般描述的基础之上,并 ...
- hdu-5692 Snacks(dfs序+线段树)
题目链接: Snacks Problem Description 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的 ...
- 非常棒的 「Sublime Text 配色/主题」与「编程字体」
*标有 CT 的是配色 **主题中调用的字体和相配套的Sublime主程序图标可访问GitHub获取 Afterglow https://github.com/YabataDesign/aftergl ...
- 转:MediaCoder H.264格式编码参数设置及详解
转: http://mediacoder.com.cn/node/81 由于现在大部分视频转码都选择H.264格式进行编码,同时CUDA编码的画质还达不到x264软编码的质量(如果你对画质无要求,可以 ...