当前位置:文档之家› 数字图像处理实验

数字图像处理实验

《数字图像处理》实验报告学院:信息工程学院专业:电子信息工程学号:姓名: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软件/语言包括图像处理工具箱(Image Processing Toolbox)(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;close all;I=imread('D:\picture\flower.tif');% 读入原图像,tif格式whos I ; % 显示图像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('二值图');六、实验结果原图(tif格式)压缩图(jpg格式)位图(BMP格式)二值图七、实验心得通过本次实验可以熟练的运用MATLAB编程软件。

实验二 图像直方图分析一.实验目的1.了解MATLAB 的操作环境和基本功能。

2.掌握MATLAB 中图像增强与平滑的函数的使用方法。

3.加深理解图像增强与平滑的算法原理。

二、实验内容(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。

熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。

(可将每段程序保存为一个.m 文件)1.直方图均衡化2.直接灰度变换3.空域平滑滤波(模糊、去噪)4.空域锐化滤波(二)采用MATLAB 底层函数编程实现1.灰度变换之动态范围扩展假定原图像f (x , y )的灰度范围为[a , b ],希望变换后图像g (x , y )的灰度范围扩展至[c , d ],则线性变换可表示为:c a y x f ab c d y x g +---=]),([),( 用MATLAB 底层函数编程实现上述变换函数。

观察图像‘ pout.tif’的灰度直方图,选择合适的参数[a , b ]、[c , d ]对图像‘pout.tif ’进行灰度变换,以获得满意的视觉效果。

2.非锐化掩蔽和高斯滤波从原图像中减去其非锐化(平滑过的)图像的过程称为非锐化掩蔽,其基本步骤为: ⑴对原图像进行平滑滤波得到模糊图像(,)f x y ;⑵从原图像中减去模糊图像,产生的差值图像称为模板(,)mask g x y ;⑶将模板加到原图像上,得到锐化后的图像(,)g x y 。

即,(,)(,) - (,)mask g x y f x y f x y =(,)(,)(,)1mask g x y f x y k g x y k =+*≥;用MATLAB 函数编程实现上述功能。

三、实验设备与软件1.计算机;2.MATLAB6.5及以上;四、实验源程序(一)1.直方图均衡化clc;clear all; close allI=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;clear all; close allI=imread('cameraman.tif');subplot(2,3,1),imshow(I),title('原图(cameraman)');J=imadjust(I,[0 0.2],[0.5 1]);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;clear all; close allI=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,[3 3]);% 对J1进行中值滤波K4 = medfilt2(J2,[3 3]);% 对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;clear all; close allI = 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 = im2double(I);%把原图的数据类型转换为双精度浮点类型(图不变)f1= imfilter(f,w,'replicate');%拉普拉斯算子对图f锐化滤波subplot(2,4,4),imshow(f1,[]), title('拉普拉斯算子对f锐化滤波图');f2= imfilter(f,w1, 'replicate');%新算子(w1)对图f锐化滤波subplot(2,4,5),imshow(f1,[]), title('新算子(w1)对f锐化滤波图');f4 = f-f1;%图f减去其锐化滤波(拉普拉斯算子)后的图f8 = f-f2;%图f减去其锐化滤波(新算子(w1))后的图subplot(2,4,3),imshow(f),title('原图的数据类型变为双精度浮点型即图f');subplot(2,4,6),imshow(f4),title('图f减去其锐化滤波(拉普拉斯算子)后的图');subplot(2,4,8),imshow(f8),title('图f减去其锐化滤波(新算子(w1))后的图');(二)1.灰度变换之动态范围扩展clc;clear all; close allI=imread('pout.tif');%数据为240行16列的矩阵subplot(2,2,1),imshow(I),title('原图(pout)');I1=double(I)./double(100);%对原图数据进行处理J=0.625.*(I1-0.1)+0.4;%a=0.1,b=0.9,c=0.4,d=0.9调整原图的灰度值——变明亮 subplot(2,2,2),imshow(J),title('图pout 调整灰度值后的图 ');subplot(2,2,3),imhist(I1),title('原图的直方图'); % 显示原图的直方图subplot(2,2,4),imhist(J),title('pout 调整灰度值后的直方图'); % 显示pout 调整灰度值后的直方图2.非锐化掩蔽和高斯滤波clc;clear all; close allI=imread('pout.tif');J=imfilter(I,fspecial('average',3));% 对I 进行平均值平滑滤波subplot(2,2,1),imshow(I),title('原图');subplot(2,2,2),imshow(J),title('对原图进行平均值平滑滤波得到模糊图像J'); M=I-J;%从原图像I 中减去模糊图像J ,产生的差值图像M 称为模板N=30*M+I;%将模板M 加到原图像I 上,得到锐化后的图像Nsubplot(2,2,3),imshow(M),title('I 减J 产生的差值图像M');subplot(2,2,4),imshow(N),title('M 的30倍加I 得到的锐化后的图像N');五、实验结果(一)1.直方图均衡化原图原图的直方图0100200均衡化后的图原图均衡化后的直方图均衡化函数图2.直接灰度变换原图(cameraman)图cameraman调整灰度值后的图原图(forest)forest的灰度图forest调整图像灰度值后明亮输出的图forest调整图像灰度值后灰暗输出的图对于’imadjust(I,[low_in high_in],[low_out high_out],gamma)’函数,gamma大于1图像比原图像增强,小于1,灰度比图像小,有模糊感,图像不够清晰.3.空域平滑滤波(模糊、去噪)原图用3*3的方阵(元素值为0.11)过滤原图用5*5的方阵(元素值为0.04)过滤原图加入高斯噪声加入椒盐噪声对加入高斯噪声的图进行平均值平滑滤波对加入椒盐噪声的图进行平均值平滑滤波加入高斯噪声加入椒盐噪声对加入高斯噪声的图进行中值滤波 对加入椒盐噪声的图进行中值滤波4.空域锐化滤波原图拉普拉斯算子对原图锐化滤波图原图的数据类型变为双精度浮点型即图 f拉普拉斯算子对 f 锐化滤波图新算子(w1)对 f 锐化滤波图图 f 减去其锐化滤波(拉普拉斯算子)后的图图 f 减去其锐化滤波(新算子(w1))后的图使用空域滤波使图像对比度增大,并且w8=[1,1,1;1,-8,1;1,1,1]算子增强效果更明显 (二)1灰度变换之动态范围扩展原图(pout)图pout 调整灰度值后的图0原图的直方图0.51pout 调整灰度值后的直方图0.512.非锐化掩蔽和高斯滤波原图对原图进行平均值平滑滤波得到模糊图像JI 减J 产生的差值图像M M 的30倍加I 得到的锐化后的图像N六.实验心得通过本次实验对高斯噪声与椒盐噪声有了更清楚的认识,也学会如何用平滑滤波,锐化滤波,高斯滤波处理图像,学到了很多新知识.实验三 图像的滤波及增强一、 实验目的1进一步了解MatLab 软件/语言,学会使用MatLab 对图像作滤波处理,使学生有机会掌握滤波算法,体会滤波效果。

相关主题