直方图均衡化matlab程序Word下载.doc

上传人:b****2 文档编号:13314048 上传时间:2022-10-09 格式:DOC 页数:7 大小:25KB
下载 相关 举报
直方图均衡化matlab程序Word下载.doc_第1页
第1页 / 共7页
直方图均衡化matlab程序Word下载.doc_第2页
第2页 / 共7页
直方图均衡化matlab程序Word下载.doc_第3页
第3页 / 共7页
直方图均衡化matlab程序Word下载.doc_第4页
第4页 / 共7页
直方图均衡化matlab程序Word下载.doc_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

直方图均衡化matlab程序Word下载.doc

《直方图均衡化matlab程序Word下载.doc》由会员分享,可在线阅读,更多相关《直方图均衡化matlab程序Word下载.doc(7页珍藏版)》请在冰豆网上搜索。

直方图均衡化matlab程序Word下载.doc

%new_graydis是统计新直方图各灰度级像素个数

%计算新的灰度直方图new_graydispro,利用新的直方图计算新的累计直方图new_graydispro

%计算直方图均衡后的新图new_tu

clearall

closeall

tuu=imread('

abc.jpg'

);

%读入图片

tu=rgb2gray(tuu);

%将彩色图片转换为灰度图

graydis=zeros(1,256);

%设置矩阵大小

graydispro=zeros(1,256);

new_graydis=zeros(1,256);

new_graydispro=zeros(1,256);

[hw]=size(tu);

new_tu=zeros(h,w);

%计算原始直方图各灰度级像素个数graydis

forx=1:

h

fory=1:

w

graydis(1,tu(x,y))=graydis(1,tu(x,y))+1;

end

end

%计算原始直方图graydispro

graydispro=graydis./sum(graydis);

subplot(1,2,1);

plot(graydispro);

title('

灰度直方图'

xlabel('

灰度值'

ylabel('

像素的概率密度'

%计算原始累计直方图

fori=2:

256

graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1);

%计算和原始灰度对应的新的灰度t[],建立映射关系

fori=1:

t(1,i)=floor(254*graydispro(1,i)+0.5);

%统计新直方图各灰度级像素个数new_graydis

new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i);

%计算新的灰度直方图new_graydispro

new_graydispro=new_graydis./sum(new_graydis);

subplot(1,2,2);

plot(new_graydispro);

均衡化后的灰度直方图'

fory=1:

new_tu(x,y)=t(1,tu(x,y));

end

figure,imshow(tu,[]);

原图'

figure,imshow(new_tu,[]);

直方图均衡化后的图'

//////////////////////////////////////////////////////

另外两种代码:

代码

Matlab

下面的代码来自archiless,注释非常详细,适合初学。

%数字图像处理程序作业

%本程序能将JPG格式的彩色图像文件灰度化并进行直方图均衡

%

%输入文件:

PicSample.jpg待处理图像

%输出文件:

PicSampleGray.bmp灰度化后图像

%PicEqual.bmp均衡化后图像

%输出图形窗口说明

%figureNO1待处理彩色图像

%figureNO2灰度化后图像

%figureNO3直方图

%figureNO4均衡化后直方图

%figureNO5灰度变化曲线

%figureNO6均衡化后图像

%1,处理的图片名字要为PicSample.jpg

%2,程序每次运行时会先清空workspace

%作者;

archilesslorder

%一,图像的预处理,读入彩色图像将其灰度化

PS=imread('

PicSample.jpg'

%读入JPG彩色图像文件

imshow(PS)%显示出来figureNO1

输入的彩色JPG图像'

imwrite(rgb2gray(PS),'

PicSampleGray.bmp'

%将彩色图片灰度化并保存

PS=rgb2gray(PS);

%灰度化后的数据存入数组

figure,imshow(PS)%显示灰度化后的图像,也是均衡化前的样品figureNO2

灰度化后的图像'

%二,绘制直方图

[m,n]=size(PS);

%测量图像尺寸参数

GP=zeros(1,256);

%预创建存放灰度出现概率的向量

fork=0:

255GP(k+1)=length(find(PS==k))/(m*n);

%计算每级灰度出现的概率,将其存入GP中相应位置

figure,bar(0:

255,GP,'

g'

)%绘制直方图figureNO3

原图像直方图'

出现概率'

%三,直方图均衡化

S1=zeros(1,256);

256forj=1:

iS1(i)=GP(j)+S1(i);

%计算Skend

endS2=round(S1*256);

%将Sk归到相近级的灰度

256GPeq(i)=sum(GP(find(S2==i)));

%计算现有每个灰度级出现的概率

255,GPeq,'

b'

)%显示均衡化后的直方图figureNO4

均衡化后的直方图'

figure,plot(0:

255,S2,'

r'

)%显示灰度变化曲线figureNO5

legend('

灰度变化曲线'

原图像灰度级'

均衡化后灰度级'

%四,图像均衡化

PA=PS;

fori=0:

255PA(find(PS==i))=S2(i+1);

%将各个像素归一化后的灰度值赋给这个像素

figure,imshow(PA)%显示均衡化后的图像figureNO6

均衡化后图像'

imwrite(PA,'

PicEqual.bmp'

另一段Matlab的代码,来自直方图均衡化--图像增强

I=imread('

LENA256.bmp'

imshow(I);

figure;

imhist(I);

[m,n]=size(I);

hf=zeros(1,256);

pa=zeros(1,256);

I=double(I);

fori=1:

mforj=1:

nhf(I(i,j)+1)=hf(I(i,j)+1)+1;

%统计各灰度像素个数end

bmap=zeros(1,256);

256temp=0;

forj=1:

itemp=temp+hf(j);

endbmap(i)=floor(temp*255/(m*n));

y=zeros(m,n);

mforj=1:

ny(i,j)=bmap(I(i,j)+1);

y=uint8(y);

imshow(y);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1