数字图像处理实验-二

来源:互联网 发布:校园网络投标书 编辑:程序博客网 时间:2024/06/06 16:48
实验二   图像灰度直方图统计一、实验目的:理解并掌握灰度直方图的概念、计算灰度直方图的方法以及如何应用直方图均衡化来增强图像对比度。二、实验环境:计算机、Windows XP操作系统,Matlab7.0三、实验内容:以灰度图像pout为例,运用Matlab编程实现灰度直方图的统计以及直方图均衡化处理过程:(1)计算并绘制原始pout图像的灰度直方图;(2)根据离散累计分布函数,对原始灰度直方图进行均衡化处理,绘制均衡化后的灰度直方图;(3)生成均衡化处理后的新图像,显示并保存。(4)比较原始pout图像和新图像的对比度。clc;clear;grayimage=imread('pout.tif');      %读取一幅256级灰度图像,作为原始图像subplot(2,2,1);  imshow(grayimage);  title('原始图像');       %显示原始图像[m,n]=size(grayimage);      %获取图像大小%以下计算原始图像中各灰度级出现的概率gp=zeros(1,256);  %初始化一维行向量gpfor i=1:256   gp(i)=length(find(grayimage==(i-1)))/(m*n);  %计算每个灰度级出现的概率endsubplot(2,2,2);  bar(0:255, gp);  %显示原始图像的灰度直方图title('原始图像的灰度直方图');xlabel('灰度值');   ylabel('出现概率');%以下进行直方图均衡化处理,根据离散累计分布函数,求出所有新的灰度级S1=zeros(1,256);S2=zeros(1,256);temp=0;for i=1:256   temp=temp+gp(i);   S1(i)=temp;endS2=round(S1*255);  %将Sk归到相近的灰度级上%以下计算各个新的灰度级出现的概率newgp=zeros(1,256);for i=1:256   newgp(i)=sum(gp(find(S2==(i-1))));endsubplot(2,2,3);  bar(0:255, newgp);  %显示均衡化后的灰度直方图title('均衡化后的灰度直方图');xlabel('灰度值');  ylabel('出现概率');%用新的灰度值填充各像素点,从而获得均衡化处理之后的新图像newgrayimage=grayimage;for i=1:256   newgrayimage(find(grayimage==(i-1)))=S2(i);endsubplot(2,2,4);  imshow(newgrayimage);  %显示均衡化处理后的新图像title('均衡化后的图像');imwrite(newgrayimage,'newpout.tif');   %保存均衡化处理后的新图像


clc;clear;grayimage=imread('pout.tif');[m,n]=size(grayimage);subplot(2,2,1);imshow(grayimage);gp=zeros(1,256);for i=1:256   gp(i)=length(find(grayimage==(i-1)))/(m*n); endsubplot(2,2,2);bar(0:255,gp);xlabel('灰度值');ylabel('概率');S1=zeros(1,256);S2=zeros(1,256);temp=0;for i=1:256    temp=temp+gp(i);    S1(i)=temp;endS2=round(S1*255);newgp=zeros(1,256);for i=1:256    newgp(i)=sum(gp(find(S2==(i-1))));end    subplot(2,2,3);bar(0:255,newgp);xlabel('灰度值');ylabel('概率');newgrayimage=grayimage;for i=1:256    newgrayimage(find(grayimage==(i-1)))=S2(i);endsubplot(2,2,4);imshow(newgrayimage);imwrite(newgrayimage,'newpout.tif');

0 0
原创粉丝点击