实验一 图像打开、保存与显示
一、实验目的:
掌握数字图像的基本类型及其表示。熟悉Matlab软件环境,了解Matlab中对图像数据的读入、显示和输出等操作,实现图像文件的打开、显示与保存功能。
二、实验环境:
计算机、WindowsXP操作系统,Matlab7.0
三、实验内容:
实验前准备工作:
所使用的图像文件都保存在Matlab安装目录下的\toolbox\images\imdemos子目录下。将实验中需要使用的图像文件,事先拷贝到Matlab安装目录下的\work子目录下。(Matlab默认处理当前工作目录下的图像文件)
1、运用Matlab图像处理工具箱中的imread函数分别读入灰度图像pout.tif、二值图像blobs.png、索引图像trees.tif和RGB图像peppers.png,观察相应的图像矩阵,并运用imshow函数显示相应图像。
2、对一个RGB彩色图像peppers.png,分别抽取其R、G、B三个分量层,并显示各层图像。
3、向灰度图像pout.tif中分别加入高斯噪声和椒盐噪声,显示并保存带有噪声的图像。
实验二 图像灰度直方图统计
一、实验目的:
理解并掌握灰度直方图的概念、计算灰度直方图的方法以及如何应用直方图均衡化来增强图像对比度。
二、实验环境:
计算机、WindowsXP操作系统,Matlab7.0
三、实验内容:
以灰度图像pout.tif为例,运用Matlab编程实现灰度直方图的统计以及直方图均衡化处理过程:
(1)计算并绘制原始图像的灰度直方图;
(2)根据离散累计分布函数,对原始灰度直方图进行均衡化处理,绘制均衡化后的灰度直方图;
(3)生成均衡化处理后的新图像,显示并保存。
(4)比较原始图像和新图像的对比度。
注:基于MATLAB强大的处理图像和支持数学计算的功能,该课程所有实验皆用MATLAB实现。
实验一:
代码实现:
>> I_huidu=imread('pout.tif'); >> figure(1),imshow(I_huidu); >> I_erzhi=imread('blobs.png'); >> figure(2),imshow(I_erzhi); >> I_erzhi2=imread('circles.png'); >> figure(3),imshow(I_erzhi2); >> [I_suoyin,colormap]=imread('trees.tif'); >> figure(4),imshow(I_suoyin); >> imshow(I_suoyin,colormap); >> I_reb=imread('peppers.png'); >> R=I_reb(:,:,1); >> figure(5),imshow(R); >> subplot(2,2,1),imshow(I_reb); >> subplot(2,2,2),imshow(R); >> G=I_reb(:,:,2); >> B=I_reb(:,:,3); >> subplot(2,2,3),imshow(G); >> subplot(2,2,4),imshow(B); >> I=imread('pout.tif'); >> G=imnoise(I,'gaussian'); >> figure(6),subplot(1,3,1),imshow(I); >> subplot(1,3,2),imshow(G); >> J=imnoise(I,'salt & pepper'); >> J=imnoise(I,'salt & pepper',0.05); >> subplot(1,3,3),imshow(J); >> imwrite(G,'gpout.tif'); >> imwrite(J,'jpout.tif');
实验二:代码实现:(.m文件)
grayimage=imread('pout.tif'); [m,n]=size(grayimage); gp=zeros(1,256); for i=1:256 gp(i)=length(find(grayimage==(i-1)))/(m*n); end subplot(2,2,1),imshow(grayimage); subplot(2,2,2),bar(0:255,gp); S1=zeros(1,256); S2=zeros(1,256); temp=0; for i=1:256 temp=temp+gp(i); S1(i)=temp; end S2=round(S1*255); newgp=zeros(1,256); for i=1:256 newgp(i)=sum(gp(find(S2==(i-1)))); end subplot(2,2,4),bar(0:255,newgp); newgrayimage=grayimage; for i=1:256 newgrayimage(find(grayimage==(i-1)))=S2(i); end subplot(2,2,3),imshow(newgrayimage); imwrite(newgrayimage,'newpout.tif');