博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab 直方图均衡化(含rgb)
阅读量:6966 次
发布时间:2019-06-27

本文共 1628 字,大约阅读时间需要 5 分钟。

步骤:

统计原图像素每个像素的个数

统计原图像<每个灰度级的像素的累积个数

家里灰度级得映射规则

将原图每个像素点的灰度映射到新图

代码:

[cpp]
  1. clear all  
  2. I=imread('1.jpg');                 %读入JPG彩色图像文件  
  3. imshow(I)                                  %显示出来   
  4. title('输入的彩色JPG图像')  
  5. I_gray = rgb2gray(I); %灰度化后的数据存入数组  
  6. imwrite(I_gray,'1_gray.bmp'); %保存灰度图像  
  7. figure,imshow(I_gray);  
  8. title('灰度图')  
  9.   
  10. [height,width]=size(I_gray);  %测量图像尺寸参数  
  11. p=zeros(1,256);                            %预创建存放灰度出现概率的向量  
  12. for i=1:height  
  13.     for j=1:width  
  14.      p(I_gray(i,j) + 1) = p(I_gray(i,j) + 1)  + 1;  
  15.     end  
  16. end  
  17. s=zeros(1,256);  
  18. s(1)=p(1);  
  19. for i=2:256  
  20.      s(i)=p(i) + s(i-1); %统计图像中<每个灰度级像素的累积个数,s(i):0,1,```,i-1  
  21. end  
  22.   
  23. for i=1:256  
  24.     s(i) = s(i)*256/(width*height); %求灰度映射函数  
  25.     if s(i) > 256  
  26.         s(i) = 256;  
  27.     end  
  28. end  
  29.   
  30. %图像均衡化  
  31. I_equal = I;  
  32. for i=1:height  
  33.     for j=1:width  
  34.      I_equal(i,j) = s( I(i,j) + 1);  
  35.     end  
  36. end  
  37. figure,imshow(I_equal)                           %显示均衡化后的图像   
  38. title('均衡化后图像')  
  39. imwrite(I_equal,'1_equal.bmp');  

实现结果如下:

原图                                                                       灰度图                                                                    均衡化后

亲们,是这样么?!是这样么?!!肿么会是这样的呢~~~~~~~惊讶

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~是不是错了?彩色图像的均值化到底肿么弄涅~~

对于灰度图的均衡化,

参考:

[cpp]
  1. %直方图均衡化    
  2. clear;  
  3. I = imread('mm_gaussian_gray.bmp');    
  4. [height,width] = size(I);    
  5. figure    
  6. subplot(221)    
  7. imshow(I)%显示原始图像    
  8. subplot(222)    
  9. imhist(I)%显示原始图像直方图    
  10.     
  11. %进行像素灰度统计;    
  12. s = zeros(1,256);%统计各灰度数目,共256个灰度级    
  13. for i = 1:height    
  14.     for j = 1: width    
  15.         s(I(i,j) + 1) = s(I(i,j) + 1) + 1;%对应灰度值像素点数量增加一    
  16.     end    
  17. end    
  18. %计算灰度分布密度    
  19. p = zeros(1,256);    
  20. for i = 1:256    
  21.     p(i) = s(i) / (height * width * 1.0);    
  22. end    
  23. %计算累计直方图分布    
  24. c = zeros(1,256);    
  25. c(1) = p(1);  
  26. for i = 2:256     
  27.         c(i) = c(i - 1) + p(i);    
  28. end    
  29. %累计分布取整,将其数值归一化为1~256   
  30. c = uint8(255 .* c + 0.5);    
  31. %对图像进行均衡化  
  32. for i = 1:height    
  33.     for j = 1: width    
  34.         I(i,j) = c(I(i,j)+1);    
  35.     end    
  36. end    
  37.   
  38. subplot(223)    
  39. imshow(I)%显示均衡化后的图像  
  40. subplot(224)    
  41. imhist(I)%显显示均衡化后的图像的直方图    

参考  

转载于:https://www.cnblogs.com/gaara-zhang/p/5465861.html

你可能感兴趣的文章
小白们不要慌,这里为你提供免费靠谱的python学习流程图
查看>>
利用种子文件对windows7的攻击-学习笔记
查看>>
微信小程序中异步处理终极方案async/await
查看>>
Java 面向对象 之 方法的覆盖
查看>>
开发者应该了解Kubernetes对于程序的影响点
查看>>
[Spark]Spark Streaming 指南三 DStreams
查看>>
LeetCode 14 Longest Common Prefix(最长公共前缀)(String)
查看>>
关注 | 《财富》发布“改变世界”企业 阿里巴巴因农村战略位列中国第一
查看>>
[Hadoop]Hadoop本地调试
查看>>
DNS服务-主从架构搭建
查看>>
找油网获1.5亿美元融资:Rainbow Capital领投C1轮,普洛斯领投C2轮
查看>>
2017.10.1 AJAX技术对RESTful的前端实现
查看>>
流程控制(逻辑词汇)
查看>>
初识 Spring(04)---(bean属性)
查看>>
【ASP】循环
查看>>
2014 年度小结(Node.js 与 单元测试)
查看>>
Ceph编译安装教程
查看>>
Oracle总结【SQL细节、多表查询、分组查询、分页】
查看>>
Android Service简介(系列1)
查看>>
机器人快跑!伯克利和CMU联合开发两足机器人,两条细腿,一马平川
查看>>