• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

histeq从用法到原理——Matlab直方图均衡化函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

转载于http://blog.sina.com.cn/s/blog_14d1511ee0102wwyt.html (公式未正常显示,请看原文链接)

一、用法

histeqMatlab中的一个工具箱函数。其调用格式为:

f1 = histeq(f,n)

[f1,T] = histeq(f,n)

其中,f为输入图像,n为指定直方图均衡化后的灰度级数(若n为向量,且长度小于等于f的灰度级数,则此时为直方图规定化映射,映射灰度区间为n),f1为输出均衡化之后的图像,T为变换矩阵,且存在下列关系:

[m,n]=size(f);

fI=imhist(f);

fI1=fI/(m*n);

fj=imhist(f1);

fj1=fj/(m*n);

可得:

fj1=fl.*T’;

二、数学原理

直方图均衡化方法可以产生一幅灰度级分布概率均匀的图像。以概率论中的概率密度和分布函数为基础,因此,若想对整个函数有准确的把握,则我们首先需要了解:

设一个大小为4X44bit(灰度级为2^4=16)灰度图像,将其表示为:

图片


其灰度直方图分布为:

灰度直方图分布 

由灰度分布直方图,得其任意一灰度级数xx[1 16]概率密度表达式:

 

可得灰度级为12的概率密度为:

由概率论基本知识,其概率分布函数为

可得灰度级为12的分布值为:

        通过上述原理,我们不难发现,概率密度表示对应的某一灰度级数在图片中出现的概率,某一灰度级数的分布函数值则表示小于等于该灰度级数的所有灰度值在图片中所占概率。正如前文所述,直方图均衡化作用在于将原始直方图变为更均匀分布的图片。因此,基于上述数学原理,我们便可在此基础上推出直方图均衡化的实现原理:

自己写的代码附上:

f = imread('tire.tif');

[m,n] = size(f);

f1 = im2uint8(ones(m,n));

%得到输入图像的直方图h

h = imhist(f);

l = length(h);

%概率密度PDF

PDF = h/numel(f);

%分布函数CDF

CDF = cumsum(PDF);

%取整扩展,得到均衡化之后的灰度分布直方图

j = CDF.*256;

%由于灰度级数为1-256之间的整数,故需对扩展之后的灰度灰度级数取整才有意义,

%得到的J矩阵为1X256大小,表示扩展之前的灰度级数,其中每个级数对应元素的

%值为该灰度级数扩展后的灰度级数值。如J(3)=24,表示原始灰度直方图为3灰度值

%的地方经灰度扩展后其灰度值为24

J = round(j);

%将扩展后的灰度级数对应映射到图片中

for i=1:l%l=256

    nn = find(J==i);%找出扩展后的灰度级数对应的扩展前的灰度级数

    L = length(nn);

    for k=1:L

    nn1 = find(f==(nn(k)-1));%再找到扩展前的灰度级数对应的像素点,

    f1(nn1)=i;              %并将像素点对应灰度值值置为扩展后的灰度值

    end

end


三、

原图
灰度均衡化图

当然,对于T的求法暂时还没弄明白,日后补上。T T

参考文献:

1.章毓晋. 图像工程[M]. 清华大学出版社, 2013.
​​2.左飞. 数字图像处理:原理与实践(MATLAB版)[M]. 电子工业出版社, 2014.


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Delphi2009泛型容器单元(Generics.Collections)[1]:TListT发布时间:2022-07-18
下一篇:
delphi zeromq开源库发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap