《数字图像管理组织-教学规划.doc》由会员分享,可在线阅读,更多相关《数字图像管理组织-教学规划.doc(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、,电子科技大学数字图像处理课程设计 课题名称 数字图像处理 院(系) 通信与信息工程学院 专 业 通信工程 姓 名 王亮森 学 号 2014010904013 起讫日期 2015.11.27 2015.12.13 指导教师 王登位 2015年12月15日目 录摘要: 03课题一:图像的灰度级分辨率调整04课题二:噪声的叠加与频域低通滤波器应用06课题三:顶帽变换在图像阴影校正方面的应用13课题四:利用Hough变换检测图像中的直线15课题五:图像的阈值分割操作及区域属性20课题六:基于MATLAB的GUI程序设计23结束语: 36参考文献: 37基于MATLAB的数字图像处理课题设计摘 要本文
2、首先对数字图像处理的相关定义、概念、算法与常用变换进行了介绍;并通过七个课题实例,借助MATLAB的图像处理工具箱(Computer Vision System Toolbox)对这些案例逐一实现,包括图像的灰度值调整、图像噪声的叠加、频域低通滤波器、阈值分割、Hough变换等,常用的图像变化与处理;然后通过MATLAB的GUI程序设计,对部分功能进行模块化整合,设计出了数字图像处理的简易软件;最后给出了软件的帮助文件以及该简易程序的系统结构和m代码。关键词:灰度值调整 噪声 图像变换 MATLAB GUI设计课题一:图像的灰度级分辨率调整设计要求:将图像的灰度级分辨率调整至,并在同一个fig
3、ure窗口上将它们显示出来。设计思路:灰度级分辨率又称色阶,是指图像中可分辨的灰度级的数目,它与存储灰度级别所使用的数据类型有关。由于灰度级度量的是投射到传感器上的光辐射值的强度,所以灰度级分辨率又称为辐射计量分辨率。随着图像灰度级分辨率的的逐渐降低,图像中所包含的颜色数目将变得越来越少,从而在颜色维度造成图像信息量的退化。MATLAB提供了histeq函数用于图像灰度值的改变,调用格式如下:J = histeq(I,n)其中J为变换后的图像,I为输入图像,n为变换的灰度值。依次改变n的值为 128、64、32、16、8、4、2 就可以得到灰度值分辨率为128、64、32、16、8、4、2的输
4、出图像。利用MATLAB的subplot命令可以将不同灰度的图像放在同一个figure中方便对比。课题实现:该思路的MATLAB源代码如下:in_photo=imread(lena.bmp);%读入图片“lena.bmp”,位置在matlab当前工作区路径下D:TempProjectMatlabWorksfor i = 128,64,32,16,8,4,2 syms(out_photo,num2str(i); %利用for循环定义7个变量,作为不同灰度值分辨率的输出变量 eval(out_photo,num2str(i), =histeq(in_photo,i),;); %histeq函数用于
5、改变图像灰度值,用eval函数给变量循环赋值end figure();set(figure(1),NumberTitle,off,Name,图像的灰度级调整) ;%设置figure名称subplot(2, 4, 1); imshow(in_photo,); title(Orginal);subplot(2, 4, 2); imshow(out_photo128,); title(Gray value 128);subplot(2, 4, 3);imshow(out_photo64,);title(Gray value 64);subplot(2, 4, 4);imshow(out_photo3
6、2,);title(Gray value 32);subplot(2, 4, 5);imshow(out_photo16,);title(Gray value 16);subplot(2, 4, 6);imshow(out_photo8,);title(Gray value 8);subplot(2, 4, 7);imshow(out_photo4,);title(Gray value 4);subplot(2, 4, 8);imshow(out_photo2,);title(Gray value 2);%输出所有图形程序运行结果如下图:可以看出原图lena.bmp被转化为灰度值分辨率不同的7
7、个图像。课题二:噪声的叠加与频域低通滤波器应用设计要求:往图像中叠加不同类型的噪声,并设计一个频域低通滤波器来去除之。设计思路:一、 噪声叠加:首先需要在输入图片中叠加不同类型的噪声。MATLAB提供了imnoise函数用于在图像中加入噪声,调用格式如下:J = imnoise(I,type)J为叠加噪声后的图像,I为输入图像,type分为:gaussian(Gaussian white noise with constant mean and variance);localvar(Zero-mean Gaussian white noise with an intensity-depende
8、nt variance);poisson(Poisson noise);salt & pepper(On and off pixels);speckle(Multiplicative noise).二、低通频域滤波器算法原理空间域滤波和频率域滤波的基础都是卷积定理,这说明两个空间函数的卷积可通过计算两个傅里叶变换函数的乘积的逆变换得到;相反地,两个空间函数的卷积的傅里叶变换恰好等于两个函数傅里叶变换的乘积。然而对于数字图像仅当f(x,y) 和h(x,y) 正确经过零填充后, 表达式才严格有效。故在进行傅里叶变换前需先进行填零操作。经过上述分析, 可得到傅里叶变换的基本步骤:(1) 计算填充参数
9、(2) 利用填充参数进行傅里叶变换(3) 根据type 生成传递函数H(x,y)(4) 传递函数与傅里叶变换相乘(5) 取G 的傅里叶逆变换实部常见的低通频域滤波器有三种,分别为:理想低通滤波器,n阶巴特沃茨低通滤波器和高斯低通滤波器。三、低通频域滤波器在 Matlab中的实现结合傅里叶变换基本步骤和函数 dftuv(M,N),在 Matlab中实现低通频域滤波器的代码如下:function g,F = lpfilter(f,type)%函数参数:彩色图像 f,低通滤波类型 type课题实现:代码分为三部分:1. 用来实现二维数组的meshgrid 表示的函数dftuv.m ;2.低通滤波器l
10、pfilter.m ;3.主函数/codebeginfunction U,Y = dftuv( X,N )%dftuv (M,N) 来实现二维数组的meshgrid 表示u=0:(X-1);w=0:(N-1);idx=find(uX/2);u(idx)=u(idx)-X;idy=find(wN/2);w(idy)=w(idy)-N;Y,U=meshgrid(w,u);endfunction g,F = lpfilter(f,type)%函数参数:彩色图像f,低通滤波类型type%函数返回值:低通模糊图像g,低通频率图像F%D0 取填充后图像宽度的5%当type 为ideal 时,表理想低通滤波
11、器%当type 为 btw 时,表n 阶巴特低通沃兹滤波器%当type 为 gaussian 时,表高斯低通滤波器f=im2double(f);PQ=2*(size(f);%DFT 之前补零F=fft2(f,PQ(1),PQ(2);%U,V=dftuv(PQ(1),PQ(2);D=sqrt(U.2+V.2); %采用欧氏距离D0=0.05*PQ(2);% 设定距离初值n=5;switch(type)case idealH=double(D max_len)max_len = lenxy_long = xyendend % highlight the longest line segmentpl
12、ot(xy_long(:,1),xy_long(:,2),LineWidth,2,Color,blue); L1 Index1=max(Len(:)Len(Index1)=0L2 Index2=max(Len(:) x1=lines(Index1).point1(1) lines(Index1).point2(1)y1=lines(Index1).point1(2) lines(Index1).point2(2)x2=lines(Index2).point1(1) lines(Index2).point2(1)y2=lines(Index2).point1(2) lines(Index2).p
13、oint2(2) K1=(lines(Index1).point1(2)-lines(Index1).point2(2)/(lines(Index1).point1(1)-lines(Index1).point2(1)K2=(lines(Index2).point1(2)-lines(Index2).point2(2)/(lines(Index2).point1(1)-lines(Index2).point2(1) hold onm,n = size(BW); % 尺寸BW1=zeros(m,n);b1=y1(1)-K1*x1(1)b2=y2(1)-K2*x2(1)for x=1:nfor y
14、=1:mif y=round(K1*x+b1)|y=round(K2*x+b2)BW1(y,x)=1; end endendfor x=1:nfor y=1:m if ceil(K1*x+b1)=ceil(K2*x+b2)y1=round(K1*x+b1)BW1(1:y1-1,:)=0;endendendfigure,imshow(BW1)/code end运行结果:课题五:图像的阈值分割操作及区域属性设计要求:对图像执行阈值分割操作并统计出每一个区域块的属性,然后,将每个区域的中心和外接矩形给标注出来。(提示:如果分割后的区域块数太多,建议采用Matlab下的bwareaopen函数来筛选掉
15、一部分区域块)。设计思路:在对图像的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些部分一般称为目标或者前景;为了辨识和分析目标,需要将有关区域分离并提取出来,在此基础上方可对目标做进一步利用,如特征提取和参数测量等;图像分割就是指把图像分解成若干个特定的、各具特性的区域并提取出感兴趣目标的技术和过程,其中的特性可以是灰度、颜色、纹理等,目标可以对应单个区域,也可以对应多个区域。图像分割后提取出的目标可以应用于图像语义识别、图像搜索等领域。灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换:gi,j=1 fi,jT0 fi,j 打开图片成功);%将打开文件操作记录与列表框(logs)axes(handles.axes5); imshow(im); % -%菜单栏-文件-保存 功能:保存输出图片function Untitled_3_Callback(hObject, eventdata, handles)global BW; %定义变量作为输出图像time_string = num2str(datestr(now,yyyy-mm-dd-HH:MM:SS);filename,pathname,filterindex=uiputfile(*.bmp;*.tif;*.png
限制150内