matlab 绘制直方图的函数实现

一、matlab 绘制直方图:
function paint(f)
[m,n]=size(f);%m,n分别存储图像像素点的长度与宽度
g=zeros(1,256);
for i=1:256%图像的横轴取值从1-256
    g(i)=length(find(f==i))/(m*n);%显示图像像素点在直方图纵轴的频率
end;
bar(0:255,g,'b');
系统函数绘制直方图:
1.
h=imhist(f,b);%f为灰度图像,b是是用于形成直方图的“收集箱”的个数。若b未包含在此变量中,则其默认值为256
2.
bar(horse,v,width);%绘制条形图形式的直方图,v,行向量,包含被绘制的点。horz与v有着相同维数的向量,包含水平标度值的增量width是一个值在0-1之间的数
EXAMPLE:
h=imhist(f);
 h1=h(1:10:256);
 horz=1:10:256;
bar(horse,h1);%这里width的默认值是0.8.大家可以多的尝试width 的值在0-1之间的变化对条形直方图的影响

3.
stem(horse,v,'属性'...);%这里的horz和v的作用与bar相同,不同的是stem增加了一个属性选项,可以设置绘制直方图的颜色,线段的形式,符号。
EXAMPLE:
h=imhist(f);
 h1=h(1:10:256);
 horz=1:10:256;
stem(hora,h1,'color','r');%绘制出线段为红色的直方图显示
二、直方图均衡化:
x=rgb2gray(imread('p1.jpg'));  
[m,n]=size(x);  
p=zeros(1,256);  
for i=0:255  
   p(i+1)=length(find(x==i))/(m*n);  
end  
subplot(2,2,1);  
bar(0:255,p,'b');  
title('原图直方图');  
s=zeros(1,256);  
for i=1:256  
     for j=1:i  
         s(i)=p(j)+s(i);                  
     end  
end  
   
a=round(s*255);  %四舍五入函数进行像素点的取整
for i=0:255  
    GPeq(i+1)=sum(p(find(a==i))); %利用求和函数对直方图纵轴坐标赋值           
end  
subplot(2,2,3);  
bar(0:255,GPeq,'b')                   
title('均衡化后的直方图');  
系统均衡化的函数:
g=histeq(f,nlev);%f为输入图像,nlev为输出图像指定的灰度级,一般默认为64
EXAPLE:
f=imread('1.jpg');
g=rgb2gray(f);
figure,imhist(g);
ylim('auto')
g1=histeq(f,256);
figure,imshow(g1);
figure,imhist(g1);
ylim('auto')


  • 6
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值