数字图像处理 西安建筑科技大学华清学院.docx
《数字图像处理 西安建筑科技大学华清学院.docx》由会员分享,可在线阅读,更多相关《数字图像处理 西安建筑科技大学华清学院.docx(17页珍藏版)》请在冰点文库上搜索。
数字图像处理西安建筑科技大学华清学院
上机实验报告
课程名称:
数字图像处理
院(系):
信息与控制工程系
专业班级:
通信工程1101
姓名:
吕浩
学号:
12
指导教师:
王燕妮
2014年11月20日
实验一MATLAB图像工具箱的使用
一、实验目的
1.了解Matlab语言,熟悉并掌握Matlab有关图像处理的常用语句。
2.了解Matlab在图像处理中的优缺点。
3.熟悉Matlab使用的技巧,能够用Matlab语言熟练地对数字图像处理进行各种处理。
二、实验原理
(1)用Matlab编写程序,读出标准图像lena.bmp,计算并画出该图像的直方图。
(2)用Matlab读出一个256像素
256像素大小的bmp或tif格式的图像,写出图像矩阵中的第125行的第125~174列的元素值,将图像显示在屏幕上,最后将该图像存储为dat格式的图像文件。
三、实验内容
进入机房之前,按要求编写需要的所有程序。
上机时,按下述步骤分段调试每一个程序。
(1)用Matlab程序读出lena图像。
(2)继续用Matlab语言绘制直线的直方图。
(3)Matlab程序读出所选格式的图像,将指定图像矩阵的元素值写到输入文件“姓名out.dat”中,分别显示该图像。
四、实验结果
对一幅图像进行二值化处理,如下:
loadtrees
BW=im2bw(X,map,0.4);
imshow(X,map)
figure,imshow(BW)
将一幅索引色图像转化成灰度图像,如下:
loadtrees
I=ind2gray(X,map);
imshow(X,map)
figure,imshow(I)
实验二图像变换
一.实验目的
、熟练掌握DFT和DCT变换的Matlab实现。
、Matlab完成DFT和DCT变换,求出图像的频谱。
2、实验原理
1、二维DFT的Matlab实现
●fft:
一维DFT变换
●ifft:
一维DFT反变换
●fft2:
二维DFT变换
●ifft2:
二维DFT反变换
●fftn:
N维DFT变换
●ifftn:
N维DFT反变换
●fftshift:
将经过fft、fft2和fftn变换后的频谱中心(0频)移到矩阵或向量的中心。
2、DCT的Matlab实现
dct2:
二维DCT变换
idct2:
二维DCT反变换
三、实验内容
(1)编程求给定图像lena.bmp的傅里叶频谱。
(2)将给定图像lena.bmp旋转45ₒ,求其傅里叶频谱。
(3)编程求给定图像lena.bmp的DCT频谱。
(4)利用DCT反变换求原始图像。
(5)利用DCT实现对图像lena.bmp的压缩,压缩率为80%。
四、实验结果
二维余弦正反变换在Matlab中的实现。
程序如下:
RGB=imread('autumn.tif');
I=rgb2gray(RGB);
figure
(1)
imshow(I);
figure
(2);
J=dct2(I);imshow(log(abs(J)),[]);colormap(jet(64));colorbar;
figure(3);
J(abs(J)<10)=0;
K=idct2(J)/255;
imshow(K);
原始图像
余弦变换系数
余弦反变换恢复图像
实验三图像灰度修正技术和直方图均衡化
一、实验目的
1.掌握图像灰度修正技术的原理和实现方法
2.掌握图像直方图均衡化处理的方法
二、实验原理
图像增强的目的是,对一幅给定的图像,突出一些有用的信息,抑制一些无用的信息,提高图像的使用价值。
常用的图像增强方法有灰度修正法、平滑、几何修正、图像锐化、频域增强、维纳滤波、卡尔曼滤波等。
Matlab图像处理工具箱中的函数imadjust实现上述对比度调整算法。
1.函数实现
J=imadjust(I,[lowhigh],[bottomtop],gamma)
(1)求图像的灰度直视图
Imhist(I,n)
(2)求灰度的等值图
Imcontour(I,n)
(3)直方图均衡化
J=histep(I,hgram)
三、实验内容
(1)显示图像bacteria.tif的灰度直方图和灰度等值图。
(2)对给定图像pout.tif进行灰度变换、增强对比度,显示增强前后的图像以及它们的灰度值视图。
(3)对给定图像pout.tif进行直方图均衡处理,显示处理前后图像以及它们的灰度值视图。
四、实验结果
(1)直方图均衡化
I=imread('cameraman.tif');
subplot(1,2,1),imshow(I)
subplot(1,2,2),imhist(I)
(2)头像灰度修正
I=imread('bacteria.tif');
subplot(1,2,1),
imshow(I)
subplot(1,2,2),
imcontour(I,8)
实验四图像的平滑
一.实验目的
.掌握常见的图像噪声种类。
理解邻域平均法和中值滤波的原理.特点.使用对象。
3.掌握边缘检测的基本思想和常见的边缘检测算子的使用方法
二、实验原理
图像平滑的目的是消除图像噪声、恢复原始图像。
实际中摄取的图像一般都含有某种噪声,引起噪声的原因有很多,噪声的种类也很多。
总的来说,可以将噪声分为加性噪声和乘性噪声。
加性噪声中又包含高斯噪声、椒盐噪声等典型噪声。
Imnoise格式:
J=imnoise(I,type,parameters);
常见的去除噪声的方法有邻域平均法、空间域低通滤波、频率域低通滤波、中之滤波等。
二维中值滤波的Matlab函数为medfilt2。
三、实验内容
对图像lena.tif叠加零均值高斯噪声,噪声方差为0.02,然后分别利用邻域平均法和中值滤波法(窗口尺寸可变,先用3×3,再取5×5逐渐增大)对该图像进行滤波,显示滤波后的图像。
对lena.tif叠加椒盐噪声,噪声方差为0.02,选择合适的滤波器将噪声滤除。
对图像lena.tif叠加乘性噪声,噪声方差为0.02,设计一种处理方法,既能去噪声又能保持边缘清晰。
四、实验结果
g0=imread('eight.tif');
figure
(1)
imshow(g0);
g1=imnoise(g0,'salt&pepper',0.02);
g1=im2double(g1);
figure
(2)
imshow(g1);
h6=fspecial('average');
g7=filter2(h6,g1,'same');
figure(3)
imshow(g7);
g10=medfilt2(g1);
figure(4)
imshow(g10)
(1)
(2)
(3)(4)
实验五图像的锐化
一.实验目的
.掌握图像锐化的主要原理的和常用方法。
掌握常见的边缘提取算法。
3.利用Matlab实现图像的边缘检测。
二、实验原理
图像边缘是图像中特性(如像素灰度、文理等)分布的不连续处,图像周围特性有阶跃变化或屋脊状变化的那些像素集合。
图像边缘存在于目标与背景、目标与目标、基元与基元的边界,标示出目标物体或基元的实际含量,是图像识别信息最集中地地方。
图像的锐化处理主要用于增强图像中的轮廓边缘、细节以及灰度跳变部分,形成完整的物体边界,达到将物体从图像中分离出来或表示同一物体表面的区域检测出来的目的。
边缘增强时要突出图像边缘,抑制图像中非边缘信息,使图像轮廓更加清晰。
由于边缘占据图像的高频部分,所以边缘增强通常属于高通滤波。
常用的边缘检测方法有微方法以及高通滤波法等。
(1)微分法
微分法的目的是利用微分运算求信号的变化率,加强高频分量的作用,从而使轮廓清晰。
微分法又可分为梯度法、Sobel算子法以及拉普拉斯运算法。
①梯度法
对于图像f(x,y),它在点f(x,y)处的梯度是一个矢量,定义为
G[f(x,y)]=(
)T
梯度的方向在函数f(x,y)最大的变化率的方向上,梯度的幅值为
=
梯度的数字就是f(x,y)在其最大变化率方向上的单位距离所增加的量。
对于图像而言,微分和可用差分近似。
||▽||=|△x|+|△y|=|f(x,y)-f(x-1,y)|+|f(x,y)-f(x,y-1)|
当梯度计算完后,可采用以下几种形式突出图像的轮廓。
·梯度直接输出
使各点的灰度g(x,y)等于该点的梯度,即
g(x,y)=G[f(x,y)]
这种方法简单、直接。
但增强的图像仅显示灰度变化比较陡的边缘轮廓,而灰度变换比较平缓的区域则呈暗色。
·加强值得梯度输出
加阀值的梯度输出表达式为
式中,T是一个非负的阀值,适当选取T,既可以使明显的边缘得到突出,又不会破坏原来灰度变化比较平缓的背景。
·给边缘指定一个特定的灰度级
式中
是根据需要指定的一个灰度级,它将明显的边缘用一个固定的灰度级变现,而其他的非边缘区域的灰度级仍保持不变。
·给背景规定特定的灰度级
该方法将背景用一个固定灰度级
表现,便于研究边缘灰度的变化。
·二值图像输出
在某些场合(如字符识别等),既不关心非边缘像素的灰度级差别,又不关心边缘像素的灰度级差别,只关心每个像素是边缘像素还是非边缘像素,这时可采用二值化图像输出方式,其表达式为
此法将背景和边缘用二值图像表示,便于研究边缘所在位置。
2Sobel算子法
Sobel相当于先对图像进行加权平均再做差分。
对于图像的3×3窗口
,设
X=(c+2f+i)-(a+2d+g)
Y=(a+2b+c)-(g+2h+i)
则定义Sobel算子为
g(x,y)=(X2+Y2)
其模板为
和
K可取1或2。
③拉普拉斯运算法
拉普拉斯算子定义图像f(x,y)的梯度为
f=
锐化后的图像g为
g=f-k[▽2f]
式中k为扩散效应系数。
对系数k的选择要合理,太大会使图像中的轮廓边缘产生过冲;太小则锐化不明显。
Matlab中边缘检测的函数是edge。
三、实验内容
(1)利用Matlab提供的edge函数,选择三种边缘检测算子,分别对图像Lena.tif和baboon.tif进行边缘检测,显示检测结果。
(2)对Lena.tif和baboon.tif分别添加高斯和椒盐噪声,然后对有噪声的图像进行边缘检测,显示检测出的边缘图像。
四、实验结果
g0=imread('eight.tif');
figure
(1)
imshow(g0);
g1=imnoise(g0,'salt&pepper',0.02);
g1=im2double(g1);
figure
(2)
imshow(g1);
h1=fspecial('gaussian',4,0.3);
g2=filter2(h1,g1,'same');
figure(3)
imshow(g2);
h5=fspecial('log',4,0.3);
g6=filter2(h5,g1,'same');
figure(4)
imshow(g6)