图像直方图均衡化

微笑双十一的晚上,让我来总结一下今天学的直方图均衡化。大笑

下面参考的是:http://blog.csdn.net/terryzero/article/details/6043821 里面写的很不错,棒棒哒奋斗

直方图均衡化通常用来增加许多图像的全局对比度,尤其是当图像的有用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。这种方法对于背景和前景都太亮或者太暗的图像非常有用,这种方法尤其是可以带来X光图像中更好的骨骼结构显示以及曝光过度或者曝光不足照片中更好的细节。这种方法的一个主要优势是它是一个相当直观的技术并且是可逆操作,如果已知均衡化函数,那么就可以恢复原始的直方图,并且计算量也不大。这种方法的一个缺点是它对处理的数据不加选择,它可能会增加背景噪声的对比度并且降低有用信号的对比度。



在网上找了一个老师的ppt里的一道例题,感觉讲的很清楚。



matlab程序:

[vb]  view plain copy
  1. sourcePic=imread('fig2.jpg'); %读取原图象  
  2. %以下为了彩色图像  
  3. %[m,n,o]=size(sourcePic);  
  4. %grayPic=rgb2gray(sourcePic);  
  5. grayPic=sourcePic;  
  6. [m,n]=size(grayPic);  
  7. subplot(2,2,1);%显示原图 不知道作者是什么意思  
  8. imshow(grayPic);  
  9. gp=zeros(1,256); %计算各灰度出现的概率  
  10. for i=1:256  
  11.     gp(i)=length(find(grayPic==(i-1)))/(m*n);  
  12. end  
  13. subplot(2,2,2);%显示原图像直方图  
  14. bar(0:255,gp);  
  15. title('原图像直方图');  
  16. xlabel('灰度值');  
  17. ylabel('出现概率');  
  18. newGp=zeros(1,256); %计算新的各灰度出现的概率  
  19. S1=zeros(1,256);  
  20. S2=zeros(1,256);  
  21. tmp=0;  
  22. for i=1:256  
  23.     tmp=tmp+gp(i);  
  24.     S1(i)=tmp;  
  25.     S2(i)=round(S1(i)*256);  
  26. end  
  27. for i=1:256  
  28.     newGp(i)=sum(gp(find(S2==i)));  
  29. end  
  30. newGrayPic=grayPic; %填充各像素点新的灰度值  
  31. for i=1:256  
  32.     newGrayPic(find(grayPic==(i-1)))=S2(i);  
  33. end  
  34. subplot(2,2,3);  
  35. imshow(newGrayPic);  
  36. subplot(2,2,4);%显示均衡化后的直方图  
  37. bar(0:255,newGp);  
  38. title('均衡化后的直方图');  
  39. xlabel('灰度值');  
  40. ylabel('出现概率');  

效果与演示

fig1.jpg原图,直方图均衡化后效果

fig2.jpg原图,直方图均衡化后效果

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值