《数字图像处理实验指导书zqd》由会员分享,可在线阅读,更多相关《数字图像处理实验指导书zqd(12页珍藏版)》请在金锄头文库上搜索。
1、1数字图像处理数字图像处理 实实 验验 指指 导导 书书张张 启启 东东2实验一实验一 MATLAB 图像及其操作图像及其操作一、一、实验目的实验目的1、熟练使用各种常用 MATLAB 命令 2、了解 MATLAB 图像文件格式;3、了解 MATLAB 图像类型; 4、了解 MATLAB 图像文件的读写; 5、了解 MATLAB 标准的图像显示技术;二、二、实验原理及内容实验原理及内容首先,数字图像以一定的格式存放在计算机的存储器中(如磁盘) ,常见的格式有 BMP,TIF,PCX 等等,因此我们要进行数字图像处理,需要完成的第一项工作就是把图像读到计算机的内存中,以便进行进一步的处理。在 M
2、atlab 中,函数imread()完成此项工作。我们用下面一小段 Matlab 语句即可实现将图像“rice.tif”显示在一个图像窗口的左边,将其轮廓图显示在该窗口的右边。I=imread(rice.tif); subplot(1,2,1);imshow(I)subplot(1,2,2);imcontour(I);这里,imread(rice.tif)将磁盘上的图像文件 rice.tif 读入内存变量 I中,subplot(1,2,1)生成一个可以横向放置 2 幅图像的窗口,并设置下一显示位置在左边,imshow(I)显示图像 I,subplot(1,2,2)准备下一图像的显示位置,imc
3、ontour(I)生成图像 I 的轮廓并显示在窗口的右边。数字图像一般可分为二值图、灰度图和真彩图等几类。我们再看下面一段程序:bw=imread(text.tif);bw2=imcomplement(bw);subplot(1,2,1),imshow(bw)subplot(1,2,2),imshow(bw2)3这里函数 imcomplement(bw)完成对二值图像 text.tif(bw)的求补运算, (即原来黑的变白的,原来白的变黑的。 )各种常用 MATLAB 命令:clc:清理窗口内容clear:清空变量cd: 进入当前目录cd(.): 退出当前目录help,helpwin,help
4、desk: 帮助who,whos: 显示变量情况imfinfo:显示文件基本情况,用法:imfinfo(文件名)save,load:存贮,读取文件(变量)pwd:显示当前工作目录mkdir(文件名):新建文件夹zeros(m,n):生成 m 行 n 列零矩阵ones(m,n):生成 m 行 n 列 1 矩阵eye(m,m):生成 m 阶单位矩阵rand(m,n):生成 m 行 n 列随机均匀分布矩阵randn(m,n):生成 m 行 n 列随机正态分布矩阵length(a):向量长度m,n=size(A):求取矩阵行列norm(A,2):矩阵二范数,最大奇异值norm(A,fro):矩阵 F
5、范数trace(A):矩阵迹sum:求和prod(a):向量所有元素求积cumsum(a):向量累和cumprod:向量累积mean(a):求平均值min(a),max(a):求向量最大最小min(a(:),max(a(:):求矩阵中最大最小值abs(a):绝对值、模、频谱var(a):方差std(a):标准差sort(a):向量升序排序diag(A):对角元素det(A):行列式4rank(A):秩gcd():最大公因子lcm():最小公倍数mod(m,n),rem(m,n):求余数fix(x):往 0 方向取整floor(x):往负方向取整ceil(x):往正方向取整round(x):四舍
6、五入取整conj(z):复共轭real(z),imag(a):实(虚)部imread:读取数字图像为矩阵double(A):转换成双精度uint8(A):转换成 8 位表示imwrite:存取或者压缩文件rgb2gray:彩色转换成灰度im2bw:灰度转换成二值imshow:显示图像subplot:按阵列显示figure:显示图像,且保留前面图像stem:用竖画线显示向量imcrop:剪切图像imresize:重新设定图像大小imrotate:旋转图像imnoise:加噪svd:奇异值分解gsvd:广义奇异值分解fft:一维傅立叶变换fft2:二维傅立叶变换fftshift:交换傅立叶变换的
7、1,3 象限和 2,4 象限dwt(idwt):小波变换(小波逆变换)dct:余弦变换dualtree:二元树复小波变换5实实验二 灰度图像直方图统计实验一、实验目的一、实验目的1、了解空域变换增强变换及实现; 2、掌握直方图处理方法二、实验原理及内容实验原理及内容 1、直方图均衡化处理。 这里有一幅图像,其动态范围较小,而且较暗,反映在直方图上,直方图所占 据的灰度值范围比较窄,而且集中在低灰度值一边。为了使图像更清晰,我们 采用直方图均衡化的方法来增加图像灰度动态范围,增强对比度。在 MATLAB 中,可以直接调用 J=histeq (I,n)函数来完成这项工作,其中 I 是原始图像 矩阵
8、,J 是变换后所得的图像矩阵;用户可以指定均衡化 %后的灰度级数 n,默认值为 64。 I = imread(tire.tif); J = histeq(I); imshow(I) figure, imshow(J) figure,imhist(I,64) figure,imhist(J,64) 2、直方图规定化处理。 I = imread(tire.tif); hgram=0:255 J = histeq(I,hgram); imshow(I) figure, imshow(J) figure,imhist(I,64) figure,imhist(J,64)实验三实验三 空域图像增强实验一、
9、实验目的一、实验目的1、了解空域滤波增强变换及实现;二、实验原理及内容实验原理及内容 1、线性平滑滤波器处理。常用均值滤波器、维纳滤波器、高斯滤波器。 %以 saturn.tif 为例,加入椒盐噪声,并在 MATLAB 中调用 B = filter2(h,A) 实现均值过滤器 I=imread(saturn.tif); J=imnoise(I,salt 6imshow(I) figure,imshow(J) K1=filter2(fspecial(average,3),J)/255; K2=filter2(fspecial(average,5),J)/255; K3=filter2(fspec
10、ial(average,7),J)/255; figure,imshow(K1) figure,imshow(K2) figure,imshow(K3) 实现维纳滤波器 I = imread(saturn.tif); J = imnoise(I, gaussian, 0,0.005); K1 = wiener2(J,5,5); figure,imshow(K1) 实现高斯滤波器 I = imread(saturn.tif); J = imnoise(I,gaussian, 0,0.005); figure,imshow(J) h = fspecial(gaussian); K=filter2(
11、h,J)/255; figure,imshow(K) 2、非线性平滑滤波器处理。常用中值滤波器 %下面仍以 saturn.tif 为例,加入椒盐噪声,并采用中值过滤器 I = imread(saturn.tif); J = imnoise(I,salt K1 = medfilt2(J,3,3); figure,imshow(K1) 3、线性锐化滤波器处理。常用拉普拉斯算子。 I = imread(saturn.tif); h = fspecial(laplacian); I2=filter2(h,J); imshow(I) figure,imshow(I2) 4、非线性锐化滤波器处理。常用 s
12、obel 算子、prewitt 算子等。 I1=imread(blood1.tif); figure,imshow(I1) h1=fspecial(sobel); I2=filter2(h1,I1); figure,imshow(I2) I3=conv2(I1,h1); figure,imshow(I3)7h2=fspecial(prewitt); I4=filter2(h2,I1); figure,imshow(I4) h3=fspecial(log); I5=filter2(h3,I1); figure,imshow(I5)实验四实验四 频域图像增强实验一、实验目的一、实验目的1、了解低通
13、滤波; 2、了解高通通滤波; 二、实验原理及内容实验原理及内容 1、一般来说,图像的边缘和噪声都对应于傅立叶变换中的高频部分,所以能 够让低频信息畅通无阻而同时滤掉高频分量的低通滤波器能够平滑图像,去除 噪声。常用的几种频域低通滤波器有理想低通滤波器、巴特沃斯低通滤波器、 指数低通滤波器。 巴特沃斯低通滤波器(Butterworth)实现 I1=imread(Saturn.tif); figure,imshow(I1) I2=imnoise(I1,salt figure,imshow(I2) f=double(I2); %傅里叶变换 g=fft2(f); %转换数据矩阵 g=fftshift(
14、g); N1,N2=size(g); n=2; d0=50; n1=fix(N1/2); n2=fix(N2/2); for i=1:N1for j=1:N2d=sqrt(i-n1)2+(j-n2)2);%计算 Butterworth 低通转换函数 h=1/(1+0.414*(d/d0)(2*n); result(i,j)=h*g(i,j); end8endresult =ifftshift(result); X2=ifft2(result); X3=uint8(real(X2); figure,imshow(X3) 2、由于图像中灰度发生骤变的部分与其频谱的高频分量相对应,所以采用高 通滤波
15、器衰减或抑制低频分量,使高频分量畅通并能够对图像进行锐化处理。 常用的高通滤波器有理想高通滤波器、巴持沃斯高通滤波器、指数高通滤波器. 巴特沃斯高通滤波器(Butterworth)实现 I1=imread(blood1.tif); figure,imshow(I1) f=double(I1); g=fft2(f);%傅里叶变换 g=fftshift(g);%转换数据矩阵 N1,N2=size(g); n=2; d0=5; n1=fix(N1/2); n2=fix(N2/2); for i=1:N1for j=1:N2d=sqrt(i-n1)2+(j-n2)2);if d=0h=0;elseh=
16、1/(1+(d0/d)(2*n);endresult(i,j)=h*g(i,j); end end result =ifftshift(result); X2=ifft2(result); X3=uint8(real(X2); figure,imshow(X3)实验五实验五 边缘检测边缘检测 一、实验目的一、实验目的1、对图像进行边缘检测;92、了解常用的边缘检测算子 二、实验原理及内容实验原理及内容 1、边缘检测的基本原理及处理函数 常用的边缘检测算于有 Robert 算子、Sobel 算了、Prewitt 以算子、LOG 算子 和 Canny 算子,以下分别进行介绍。 ()Robert 算子 Robert 算于是一种利用局部差分算子寻找边缘的算子,其模板如图 1 所示。 Ro