直方图统计及均衡化matlab代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

自己编的代码

Matlab中自带的函数

clc;clear all;

%用自己编的函数

pic1=imread('188_2.jpg');%修改数字可以看到另一幅图片的效果pic1=rgb2gray(pic1);

subplot(221);imshow(pic1);title('均衡化前的图像'); subplot(222);imhist(pic1);title('均衡化前的直方图');

L=256;%设置灰度级为256

[width,height]=size(pic1);

%求nk

nk=zeros(1,L);

for i=0:L-1

num=find(pic1==(i+1));

nk(i+1)=length(num);

end

%求pr(rk)=nk/MN

pr=zeros(1,L);

for i=1:L

pr(i)=nk(i)/(width*height);

end

%pc存储的就是累计的归一化直方图

pc=zeros(1,L);

for i=1:L

for j=1:i

pc(i)=pc(i)+pr(j);

end

end

sk=zeros(1,L);

for i=1:L

sk(i)=round((L-1)*pc(i));

end

%求pr(sk),即计算现有每个灰度级出现的概率并显示在屏幕上for i=0:L-1

pr(i+1)=sum(pc(find(sk==i)));

end

pr %显示pr值

%替换原有图片

pic2=pic1;

for i=1:L

pic2(find(pic2==(i-1)))=sk(i);

end

subplot(223);imshow(pic2);title('均衡化后的图像'); subplot(224);imhist(pic2);title('均衡化后的直方图');

%用matlab自带的函数

pic1=imread('188_2.jpg');%先把要处理的图像读入

pic1=rgb2gray(pic1);%转化成灰度图像

%显示灰度图像与直方图

figure;

subplot(221);imshow(pic1);title('均衡化前的图像'); subplot(222);imhist(pic1);title('均衡化前的直方图');

%直方图均衡化

pic2=histeq(pic1);

subplot(223);imshow(pic2);title('均衡化后的图像'); subplot(224);imhist(pic2);title('均衡化后的直方图');

相关文档
最新文档