数字图像实验报告_第1页
数字图像实验报告_第2页
数字图像实验报告_第3页
数字图像实验报告_第4页
数字图像实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 江苏科技大学数字图像处理实验报告专业名称: 计算机科学与技术班 级:13419013学 号:1341901301姓 名: 陈敏指导教师: 胡春龙2016年 6月 5日 实验一 常用MATLAB图像处理命令1.1实验目的  1、熟悉并掌握MATLAB、PHOTOSHOP等工具的使用;2、实现图像的读取、显示、代数运算和简单变换。1.2实验环境MATLAB 11以上版本、WIN XP或WIN7计算机1.3常用函数l 读写图像文件1 imread imread函数用于读入各种图像文件,如:a=imread('e:w01.tif') 2 imwrite imwrite函数用

2、于写入图像文件,如:imwrite(a,'e:w02.tif',tif) 3 imfinfo imfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:w01.tif')l 图像的显示1 image image函数是MATLAB提供的最原始的图像显示函数,如: a=1,2,3,4;4,5,6,7;8,9,10,11,12; image(a); 2 imshow imshow函数用于图像文件的显示,如: i=imread('e:w01.tif');imshow(i);title(原图像)%加上图像标题 3 colorbar color

3、bar函数用显示图像的颜色条,如: i=imread('e:w01.tif'); imshow(i); colorbar; 4 figurefigure函数用于设定图像显示窗口,如:figure(1); /figure(2);5 subplot 把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。6 plot绘制二维图形plot(y)Plot(x,y)xy可以是向量、矩阵。l 图像类型转换1 rgb2gray把真彩图像转换为灰度图像i=rgb2gray(j)2 im2bw通

4、过阈值化方法把图像转换为二值图像I=im2bw(j,level)Level表示灰度阈值,取值范围01(即0.n),表示阈值取自原图像灰度范围的n%3 imresize改变图像的大小I=imresize(j,m n)将图像j大小调整为m行n列l 图像运算1 imadd两幅图像相加,要求同样大小,同种数据类型Z=imadd(x,y)表示图像x+y2 imsubstract两幅图像相减,要求同样大小,同种数据类型Z=imsubtract(x,y) 表示图像x-y3 immultiplyZ=immultiply(x,y) 表示图像x*y4 imdivideZ=imdivide(x,y) 表示图像x/y

5、1.4实验内容(请将实验程序填写在下方合适的位置,实验图像结果拷屏粘贴)1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。a=imread('f:1.jpg')i = rgb2gray(a)I = im2bw(a,0.5)subplot(3,1,1);imshow(a);title('原图像')subplot(3,1,2);imshow(i);title('灰度图像')subplot(3,1,3);imshow(I);title('二值图像') 图1.1

6、二值图像2、对两幅不同图像执行加、减、乘、除操作,在同一个窗口内分成五个子窗口来分别显示,注上文字标题。a=imread('f:1.jpg')A=imresize(a,800 800)b=imread('f:2.jpg')B=imresize(b,800 800)Z1=imadd(A,B)Z2=imsubtract(A,B)Z3=immultiply(A,B)Z4=imdivide(A,B)subplot(3,2,1); imshow(A);title('原图像A')subplot(3,2,2); imshow(B);title('原图像

7、B')subplot(3,2,3); imshow(Z1);title('加法图像')subplot(3,2,4); imshow(Z2);title('减法图像')subplot(3,2,5); imshow(Z3);title('乘法图像')subplot(3,2,6); imshow(Z2);title('除法图像')图1.2 图像运算3、 对一幅图像进行灰度变化,实现图像变亮、变暗和负片效果,在同一个窗口内分成四个子窗口来分别显示,注上文字标题。a=imread('f:1.jpg');m = ima

8、djust(a,0.5;1) ;%图像变亮n = imadjust(a,0;0.5) ;%图像变暗g=255-a;%负片效果subplot(2,2,1);imshow(a);title('原图像')subplot(2,2,2);imshow(m);title('图像变亮')subplot(2,2,3);imshow(n);title('图像变暗') subplot(2,2,4);imshow(g);title('负片效果') 图1.3 图像变换4、熟悉数字图像处理常用函数的使用,调出帮助文档查看其各种不同用法。方法:选择函数(函数

9、所在区变暗),点右键弹出菜单,选择“Help on Selection”5. 使用图像输入设备(扫描仪、数码相机、摄像机等)进行图像输入,并用指定的图像文件格式bmp存放。学会常用数字图像处理软件Photoshop的功能操作练习。1.5实验总结分析图像的代数运算结果,分别陈述图像的加、减、乘、除运算可能的应用领域。实验二 图像的傅里叶变换1.1实验目的  1、熟悉及掌握图像的傅里叶变换原理及性质,实现图像的傅里叶变换。1.2实验环境MATLAB11以上版本、WIN XP或WIN7计算机1.3相关函数l 图像的变换 1 fft2 fft2函数用于数字图像的二维傅立叶变换,如: i=im

10、read('e:w01.tif');j=fft2(i);由于MATLAB无法显示复数图像,因此变换后的结果还需进行求模运算,即调用abs函数。之后常常还进行对数变换,即调用log函数,以减缓傅里叶谱的快速衰减,更好地显示高频信息。 2 ifft2 ifft2函数用于数字图像的二维傅立叶反变换,如: i=imread('e:w01.tif'); j=fft2(i);k=ifft2(j);3 fftshift用于将变换后图像频谱中心从矩阵的原点移动到矩阵的中心B=fftshift(i) 4 利用fft2计算二维卷积 利用fft2函数可以计算二维卷积,如: a=8,1

11、,6;3,5,7;4,9,2; b=1,1,1;1,1,1;1,1,1; a(8,8)=0; b(8,8)=0; c=ifft2(fft2(a).*fft2(b); c=c(1:5,1:5); 利用conv2(二维卷积函数)校验, 如: a=8,1,6;3,5,7;4,9,2; b=1,1,1;1,1,1;1,1,1; c=conv2(a,b);1.4实验内容1、对一幅图像进行平移,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与平移后傅里叶频谱的对应关系。s=imread('f:1.jpg');%读入原图像i=rgb2gray(s)i=d

12、ouble(i)j=fft2(i); %傅里叶变换 k=fftshift(j); % 直流分量移到频谱中心l=log(abs(k); %对数变换m=fftshift(j); %直流分量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.2+II.2); %计算频谱府幅值 A=(A-min(min(A)/(max(max(A)*255; % 归一化b=circshift(s,800 450); %对图像矩阵im中的数据进行移位操作b=rgb2gray(b)b=double(b)c=fft2(b); %傅里叶变换 e=fftshi

13、ft(c); % 直流分量移到频谱中心l=log(abs(e); %对数变换f=fftshift(c); %直流分量移到频谱中心WW=real(f); %取傅里叶变换的实部BZZ=imag(f); %取傅里叶变换的虚部B=sqrt(WW.2+ZZ.2); %计算频谱府幅值 B=(B-min(min(B)/(max(max(B)*255; % 归一化subplot(2,2,1);imshow(s);title('原图像')subplot(2,2,2);imshow(uint8(b);title('平移图像')subplot(2,2,3);imshow(A);tit

14、le('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱') 图2.1 图像的傅里叶变换2、 对一幅图像进行旋转,显示原始图像与处理后图像,分别对其进行傅里叶变换,显示变换后结果,分析原图的傅里叶谱与旋转后傅里叶频谱的对应关系。s=imread('f:1.jpg');%读入原图像i=rgb2gray(s)i=double(i)j=fft2(i); %傅里叶变换 k=fftshift(j); % 直流分量移到频谱中心l=log(abs(k); %对数变换m=fftshift(j); %直流分

15、量移到频谱中心RR=real(m); %取傅里叶变换的实部II=imag(m); %取傅里叶变换的虚部A=sqrt(RR.2+II.2); %计算频谱府幅值 A=(A-min(min(A)/(max(max(A)*255; % 归一化b=imrotate(s, -90); %对图像矩阵im中的数据进行移位操作b=rgb2gray(b)b=double(b)c=fft2(b); %傅里叶变换 e=fftshift(c); % 直流分量移到频谱中心l=log(abs(e); %对数变换f=fftshift(c); %直流分量移到频谱中心WW=real(f); %取傅里叶变换的实部BZZ=imag(

16、f); %取傅里叶变换的虚部B=sqrt(WW.2+ZZ.2); %计算频谱府幅值 B=(B-min(min(B)/(max(max(B)*255; % 归一化subplot(2,2,1);imshow(s);title('原图像')subplot(2,2,2);imshow(uint8(b);title('平移图像')subplot(2,2,3);imshow(A);title('离散傅里叶频谱');subplot(2,2,4);imshow(B);title('平移图像离散傅里叶频谱') 图2.2 傅里叶变换的位移实验三 图像

17、的灰度变换和直方图变换1.1实验目的  1、熟悉及掌握图像的采样原理,实现图像的采样过程,进行图像的灰度转换。 2、理解直方图的概念及应用,实现图像直方图的显示,及通过直方图均衡和直方图规定化方法对图像进行修正。1.2实验环境MATLAB 11以上版本、WIN XP或WIN7计算机1.3相关函数l 图像的增强1、 直方图imhist函数用于数字图像的直方图计算或显示,imhist(I, n)计算和显示图像I的直方图,n为指定的灰度级数目,默认为256。如果I是二值图像,那么n仅有两个值。counts,x = imhist(.)返回直方图数据向量count

18、s,相应的色彩值向量x。如: i=imread('e:w01.tif');imhist(i); 2 、直方图均衡化histeq函数用于数字图像的直方图均衡化,J = histeq(I, n)  均衡化后的级数n,缺省值为64。J = histeq(I, hgram) "直方图规定化",即将原是图象 I 的直方图变换成用户指定的向量 hgram (即指定另一幅图像的直方图数据向量)。如: i=imread('e:w01.tif');j=histeq(i,N);对图像i执行均衡化,得到具有N个灰度级的灰度图像j,N缺省值为64 3、 灰

19、度调整imadjust函数用于数字图像的灰度或颜色调整,J = imadjust(I) 将灰度图像 I 中的亮度值映射到 J 中的新值并使 1 的数据是在低高强度和饱和,这增加了输出图像 J 的对比度值。 J = imadjust(I,low_in; high_in,low_out; high_out) 将图像I中的亮度值映射到J中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。low_in 以下与 high_in 以上的值被剪切掉了,也就是说,low_in 以下的值映射到 low_out,high_in 以上的值映射到high_out。它们都可

20、以使用空的矩阵,默认值是0 1。 如: i=imread('e:w01.tif'); j=imadjust(i,0.3,0.7,);将图像i转换为j,使灰度值从0.30.7与缺省值01相匹配l 运算函数1、Zeros生成全0数组或矩阵如 B = zeros(m,n) or B = zeros(m n) 返回一个 m*n 全0矩阵2、取整函数floor最小取整函数round四舍五入取整函数ceil最大取整函数如a = -1.9, -0.2, 3.4, 5.6, 7.0, 2.4+3.6iI=round(a)I = -2 0 3 6 7 2+ 4i1.4实验内容1、对一幅图像进行2

21、倍、4倍、8倍和16倍减采样,显示结果。 a=imread('f:/1.jpg'); b=rgb2gray(a); for m=1:4 figure width,height=size(b); quartimage=zeros(floor(width/(m),floor(height/(2*m); k=1; n=1; for i=1:(m):width for j=1:(2*m):height quartimage(k,n)=b(i,j); n=n+1; end k=k+1; n=1; end imshow(uint8(quartimage);End图3.1 图像采样2、 显示

22、一幅灰度图像a,改变图像亮度使其整体变暗得到图像b,显示两幅图像的直方图。a=imread('f:lena_color.png')c=rgb2gray(a);b=c-46;subplot(3,2,1);imshowt(c);title('原图像')subplot(3,2,1);imhist(c);title('原图像的直方图')subplot(3,2,3);imshow(b);title('变暗后的图像')subplot(3,2,4);imhist(b);title('变暗后的图像直方图')d=imadjust(c

23、,0,1,1,0);subplot(3,2,5);imshow(d);title('反转图像');图3.2 图像的直方图3、 对图像b进行直方图均衡化,显示结果图像和对应直方图。B=imread(f:lena_color.png)c=rgb2gray(b)j=histeq©subplot(2,2,1),imshow©subplot(2,2,2),imshow(j)subplot(2,2,3),imhist© %显示原始图像直方图subplot(2,2,4),imhist(j) %显示均衡化后图像的直方图图3.3 图像的直方图均衡化4、 对B进行如图

24、所示的分段线形变换处理,试比较与直方图均衡化处理的异同。X1=0:0.01:0.125;x2=0.125:0.01:0.75;x3=0.75:0.01:1;y1=2*x1;y2=0.25+0.6*(x2-0.125);y3=0.625+1.5*(x3-0.75);x=x1,x2,x3 y=y1,y2,y3 subplot(2,2,4) plot(x,y);通过在所关心范围内为所有灰度值指定一个较高值,而为其他灰度指定一个较低值,或将所需范围变亮,分段线性变换可提高图像中特定灰度范围的亮度,常用于图像特征值的提取。这里将原始图像位于0.125,0.75间的灰度值调低

25、,放大其余的灰度值,突出显示图像低频域和高频域的部分。实验四 图像的平滑处理1.1实验目的1、熟悉并掌握常见的图像噪声种类;2、理解并掌握常用的图像的平滑技术,如邻域平均法和中值滤波的原理、特点、适用对象1.2实验环境MATLAB 11以上版本、WIN XP或WIN7计算机1.3相关知识图像平滑的目的是消除图像噪声、恢复原始图像。实际中摄取的图像一般都含有某种噪声,引起噪声的原因很多,噪声的种类也很多。总的说来,可以将噪声分为加性噪声和乘性噪声。加性噪声中又包含高斯噪声、椒盐噪声等典型噪声。Matlab图像处理工具箱提供了模拟噪声生成的函数imnoise,可以对图像添加一些典型的噪声。imno

26、ise格式:J=imnoise(I,type,parameters); 常见的去除噪声的方法有:邻域平均法、空间域低通滤波、频率域低通滤波、中值滤波等。 二维中值滤波的Matlab函数为medfilt2。1 imnoise imnoise函数用于对图像生成模拟噪声,如: i=imread('e:w01.tif');j=imnoise(i,'gaussian',0,0.02);模拟均值为0方差为0.02的高斯噪声,j=imnoise(i,'salt&pepper', 0.04) 模拟叠加密度为0.04的椒盐噪声 2 fs

27、pecial fspecial函数用于产生预定义滤波器,如:h=fspecial('average');%均值滤波器3 图像滤波函数imfilter函数,filter2函数,二维卷积conv2滤波都可以进行图像滤波,如j=filter2(h,I);j=imfilter(I,h);j=conv2(I,h);4 中值滤波 medfilt2函数用于图像的中值滤波,如: i=imread('e:w01.tif');j=medfilt2(i,M N);对矩阵i进行二维中值滤波,领域为M*N,缺省值为3*311.4实验内容1、 读出lena.jpg这幅图像,给这幅图像分别加

28、入椒盐噪声、高斯噪声和乘性噪声后并与前一张图显示在同一图像窗口中。2、 对受高斯噪声(模拟均值为0方差为0.02的高斯噪声)干扰的lena图像分别利用邻域平均法和中值滤波进行滤波去噪(窗口可变,可先取3*3,依次再取5*5,7*7),并显示滤波结果。3、 对受椒盐噪声(噪声方差为0.02)干扰的lena图像,选择合适的滤波器将噪声滤除。4、 对受乘性噪声(噪声方差为0.02)干扰的lena图像,选择合适的滤波器将噪声滤除。实验五 图像边缘检测与分割1.1实验目的  1、熟悉并掌握MATLAB图像处理工具箱的使用;2、理解并掌握常用的图像的锐化技术3、理解并掌握常用的图像的边缘检测与分

29、割技术。1.2实验环境MATLAB 11以上版本、WIN XP或WIN7计算机1.3相关知识 1 fspecial fspecial函数用于产生预定义滤波器,如: h=fspecial('sobel');%sobel水平边缘增强滤波器 h=fspecial('log');%高斯拉普拉斯(LoG)滤波器H = fspecial('prewitt'); %预定义滤波器M = imfilter(I,H);imshow(M);2 edge 检测灰度或者二值图像的边缘,返回一个二值图像,1像素是检测到的边缘,0像素是非边缘。用法:BW = edge(I,'sobel',thresh,direction),I为检测对象;边缘检测算子可用sobel,roberts,prewitt,zerocross,log,canny;thresh指定阈值,检测时忽略所有小于阈值的边缘,默认自动选择阈值;direction方向,在所指定的方向direction上,用 算子进行边缘检测horizontal(水平方向)、vertical(垂直方向)或both(两个方向)。如:I = imread('circuit.tif'); BW1 = edge(I,'prewitt'

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论