数字图像处理实验.docx
《数字图像处理实验.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验.docx(25页珍藏版)》请在冰豆网上搜索。
数字图像处理实验
《数字图像处理》
实验报告
学院:
信息工程学院
专业:
电子信息工程
学号:
姓名:
2015年6月18日
实验一图像的读取、存储与显示……………………………………………………2
实验二图像直方图分析………………………………………………………………6
实验三图像的滤波及增强……………………………………………………………15
实验四噪声图像的复原………………………………………………………………19
实验五图像的分割与边缘提取……………………………………………………23
附录1MATLAB简介…………………………………………………………………27
实验一图像的读取、存储与显示
一、实验目的与要求
1.熟悉及掌握在MATLAB中能够处理哪些格式图像。
2.熟练掌握在MATLAB中如何读取图像。
3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。
5.图像的显示。
二、实验原理
一幅图像可以被定义为一个二维函数f(x,y),其中x与y就是空间(平面)坐标,f在任何坐标处(x,y)处的振幅称为图像在该点的亮度。
灰度就是用来表示黑白图像亮度的一个术语,而彩色图像就是由单个二维图像组合形成的。
例如,在RGB彩色系统中,一幅彩色图像就是由三幅独立的分量图像(红、绿、蓝)组成的。
因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法就是分别处理三副独立的分量图像即可。
图像关于x与y坐标以及振幅连续。
要将这样的一幅图像转化为数字形式,就要求数字化坐标与振幅。
将坐标值数字化成为取样;将振幅数字化成为量化。
采样与量化的过程如图1所示。
因此,当f的x、y分量与振幅都就是有限且离散的量时,称该图像为数字图像。
三、实验设备
(1)PC计算机
(2)MatLab软件/语言包括图像处理工具箱(ImageProcessingToolbox)
(3)实验所需要的图片
四、实验内容及步骤
1.利用imread()函数读取一幅图像,假设其名为flower、tif,存入一个数组中;
2.利用whos命令提取该读入图像flower、tif的基本信息;
3.利用imshow()函数来显示这幅图像;
4.利用imfinfo函数来获取图像文件的压缩,颜色等等其她的详细信息;
5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件设为flower、jpg语法:
imwrite(原图像,新图像,‘quality’,q),q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower、bmp。
7.用imread()读入图像:
Lenna、jpg与camema、jpg;
8.用imfinfo()获取图像Lenna、jpg与camema、jpg的大小;
9.用figure,imshow()分别将Lenna、jpg与camema、jpg显示出来,观察两幅图像的质量。
10、用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。
11、将每一步的函数执行语句拷贝下来,写入实验报告,并且将得到第3、9、10步得到的图像效果拷贝下来。
五、实验源程序
clc;clear;closeall;
I=imread('D:
\picture\flower、tif');%读入原图像,tif格式
whosI;%显示图像I的基本信息
imfinfo('D:
\picture\flower、tif');
imwrite(I,'D:
\picture\flower、jpg','quality',50);
imwrite(I,'D:
\picture\flower、bmp');%以位图(BMP)的格式存储图像
g=im2bw(I);%将图像转为二值图像
imwrite(g,'D:
\picture\flower1、tif');
subplot(2,2,1),imshow(I),title('原图(tif格式)');
subplot(2,2,2),imshow('D:
\picture\flower、jpg'),title('压缩图(jpg格式)');
subplot(2,2,3),imshow('D:
\picture\flower、bmp'),title('位图(BMP格式)');
subplot(2,2,4),imshow(g),title('二值图');
六、实验结果
7、实验心得
通过本次实验可以熟练的运用MATLAB编程软件。
实验二图像直方图分析
一.实验目的
1.了解MATLAB的操作环境与基本功能。
2.掌握MATLAB中图像增强与平滑的函数的使用方法。
3.加深理解图像增强与平滑的算法原理。
二、实验内容
(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
(可将每段程序保存为一个、m文件)
1.直方图均衡化
2.直接灰度变换
3.空域平滑滤波(模糊、去噪)
4.空域锐化滤波
(二)采用MATLAB底层函数编程实现
1.灰度变换之动态范围扩展
假定原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩展至[c,d],则线性变换可表示为:
用MATLAB底层函数编程实现上述变换函数。
观察图像‘pout、tif’的灰度直方图,选择合适的参数[a,b]、[c,d]对图像‘pout、tif’进行灰度变换,以获得满意的视觉效果。
2.非锐化掩蔽与高斯滤波
从原图像中减去其非锐化(平滑过的)图像的过程称为非锐化掩蔽,其基本步骤为:
对原图像进行平滑滤波得到模糊图像;
从原图像中减去模糊图像,产生的差值图像称为模板;
将模板加到原图像上,得到锐化后的图像。
即,
用MATLAB函数编程实现上述功能。
三、实验设备与软件
1.计算机;
2.MATLAB6、5及以上;
四、实验源程序
(一)
1.直方图均衡化
clc;clearall;closeall
I=imread('pout、tif');
subplot(2,3,1);
imshow(I);
title('原图');
subplot(2,3,2);
imhist(I);%显示原图的直方图
title('原图的直方图');
[I2,T]=histeq(I);%原图进行均衡化
subplot(2,3,3);
imshow(I2);%显示均衡化后图
title('均衡化后的图');
subplot(2,3,4);
imhist(I2);%显示原图均衡化后的直方图
title('原图均衡化后的直方图');
subplot(2,3,5);
plot((0:
255)/255,T);%绘制均衡化函数图
title('均衡化函数图');
imwrite(I2,'D:
\picture1\pout、png');
imfinfo('D:
\picture1\pout、png')%显示写入图的信息
2.直接灰度变换
clc;clearall;closeall
I=imread('cameraman、tif');
subplot(2,3,1),imshow(I),title('原图(cameraman)');
J=imadjust(I,[00、2],[0、51]);
subplot(2,3,2),imshow(J),title('图cameraman调整灰度值后的图');
[X,MAP]=imread('forest、tif');%X为图像数据矩阵,MAP为颜色表数据矩阵
subplot(2,3,3),imshow(X,MAP),title('原图(forest)');
I2=ind2gray(X,MAP);
J2=imadjust(I2,[],[],0、5);
J3=imadjust(I2,[],[],1、5);
subplot(2,3,4),imshow(I2),title('forest的灰度图');
subplot(2,3,5),imshow(J2),title('forest调整图像灰度值后明亮输出的图');
subplot(2,3,6),imshow(J3),title('forest调整图像灰度值后灰暗输出的图');
3.空域平滑滤波(模糊、去噪)
clc;clearall;closeall
I=imread('eight、tif');
h1=ones(3,3)/9;
h2=ones(5,5)/25;
I1=imfilter(I,h1);%用3*3的方阵(元素值为0、11)过滤原图
I2=imfilter(I,h2);%用5*5的方阵(元素值为0、04)过滤原图
figure
(1);
subplot(2,2,1),imshow(I),title('原图');
subplot(2,2,2),imshow(I1),title('用3*3的方阵(元素值为0、11)过滤原图');
subplot(2,2,3),imshow(I2),title('用5*5的方阵(元素值为0、04)过滤原图');
J1=imnoise(I,'gaussian',0,0、005);%加入高斯(Gaussian)噪声
J2=imnoise(I,'salt&pepper',0、02);%加入椒盐噪声
K1=imfilter(J1,fspecial('average',3));%对J1进行平均值平滑滤波
K2=imfilter(J2,fspecial('average',3));%对J2进行平均值平滑滤波
figure
(2);
subplot(2,2,1),imshow(J1),title('加入高斯噪声');
subplot(2,2,2),imshow(J2),title('加入椒盐噪声');
subplot(2,2,3),imshow(K1),title('对加入高斯噪声的图进行平均值平滑滤波');
subplot(2,2,4),imshow(K2),title('对加入椒盐噪声的图进行平均值平滑滤波');
K3=medfilt2(J1,[33]);%对J1进行中值滤波
K4=medfilt2(J2,[33]);%对J2进行中值滤波
figure(3);
subplot(2,2,1),imshow(J1),title('加入高斯噪声');
subplot(2,2,2),imshow(J2),title('加入椒盐噪声');
subplot(2,2,3),imshow(K3),title('对加入高斯噪声的图进行中值滤波');
subplot(2,2,4),imshow(K4),title('对加入椒盐噪声的图进行中值滤波');
4.空域锐化滤波
clc;clearall;closeall
I=imread('moon、tif');
w=fspecial('laplacian',0);%拉普拉斯算子
w1=[1,1,1;1,-8,1;1,1,1];%新算子(w1)
I1=imfilter(I,w,'replicate');%拉普拉斯算子对原图锐化滤波
subplot(2,4,1),imshow(I),title('原图');
subplot(2,4,2),imshow(I1),title('拉普拉斯算子对原图锐化滤波图');
f=