当前位置:文档之家› 电子科技大学-数字图像处理-课程设计报告

电子科技大学-数字图像处理-课程设计报告

电子科技大学数字图像处理课程设计课题名称数字图像处理院(系)通信与信息工程学院专业通信工程姓名学号起讫日期指导教师2015年12月15日目录摘要: (03)课题一:图像的灰度级分辨率调整 (04)课题二:噪声的叠加与频域低通滤波器应用 (06)课题三:顶帽变换在图像阴影校正方面的应用 (13)课题四:利用Hough变换检测图像中的直线 (15)课题五:图像的阈值分割操作及区域属性 (20)课题六:基于MATLAB®的GUI程序设计 (23)结束语: (36)参考文献: (37)基于MATLAB®的数字图像处理课题设计摘要本文首先对数字图像处理的相关定义、概念、算法与常用变换进行了介绍;并通过七个课题实例,借助MATLAB®的图像处理工具箱(Computer Vision System Toolbox)对这些案例逐一实现,包括图像的灰度值调整、图像噪声的叠加、频域低通滤波器、阈值分割、Hough变换等,常用的图像变化与处理;然后通过MATLAB®的GUI程序设计,对部分功能进行模块化整合,设计出了数字图像处理的简易软件;最后给出了软件的帮助文件以及该简易程序的系统结构和m代码。

关键词:灰度值调整噪声图像变换MATLAB® GUI设计课题一:图像的灰度级分辨率调整设计要求:128,64,32,16,8,4,2,并在同一个figure窗口将图像的灰度级分辨率调整至{}上将它们显示出来。

设计思路:灰度级分辨率又称色阶,是指图像中可分辨的灰度级的数目,它与存储灰度级别所使用的数据类型有关。

由于灰度级度量的是投射到传感器上的光辐射值的强度,所以灰度级分辨率又称为辐射计量分辨率。

随着图像灰度级分辨率的的逐渐降低,图像中所包含的颜色数目将变得越来越少,从而在颜色维度造成图像信息量的退化。

MATLAB®提供了histeq函数用于图像灰度值的改变,调用格式如下:J = histeq(I,n)其中J为变换后的图像,I为输入图像,n为变换的灰度值。

依次改变n的值为128、64、32、16、8、4、2 就可以得到灰度值分辨率为128、64、32、16、8、4、2的输出图像。

利用MATLAB®的subplot命令可以将不同灰度的图像放在同一个figure中方便对比。

课题实现:该思路的MATLAB®源代码如下:in_photo=imread('lena.bmp');%读入图片“lena.bmp”,位置在matlab当前工作区路径下D:\TempProject\Matlab\Works for 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函数用于改变图像灰度值,用eval函数给变量循环赋值endfigure();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_photo32,[]);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个图像。

课题二:噪声的叠加与频域低通滤波器应用设计要求:往图像中叠加不同类型的噪声,并设计一个频域低通滤波器来去除之。

设计思路:一、噪声叠加:首先需要在输入图片中叠加不同类型的噪声。

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-dependent variance);'poisson'(Poisson noise);'salt & pepper'(On and offpixels);'speckle'(Multiplicative noise).二、低通频域滤波器算法原理空间域滤波和频率域滤波的基础都是卷积定理,这说明两个空间函数的卷积可通过计算两个傅里叶变换函数的乘积的逆变换得到;相反地,两个空间函数的卷积的傅里叶变换恰好等于两个函数傅里叶变换的乘积。

然而对于数字图像仅当f(x,y)和h(x,y)正确经过零填充后,表达式才严格有效。

故在进行傅里叶变换前需先进行填零操作。

经过上述分析,可得到傅里叶变换的基本步骤:(1)计算填充参数(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.低通滤波器lpfilter.m ;3.主函数///codebeginfunction [U,Y] = dftuv( X,N )%dftuv (M,N)来实现二维数组的meshgrid 表示u=0:(X-1);w=0:(N-1);idx=find(u>X/2);u(idx)=u(idx)-X;idy=find(w>N/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' 时,表理想低通滤波器%当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'ideal'H=double(D<=D0);case'btw'H=1./(1+(D./D0).^(2*n));case'gaussian'H=exp(-(D.^2)./(2*(D0^2)));otherwiseerror('Unknown filter type.');end%-------------------G=H.*F;g=real(ifft2(G));%得到新图像g=g(1:size(f,1),1:size(f,2));%矩形修剪为初始大小endOriginal = imread('bank.bmp');X1 = imnoise(Original,'salt & pepper');%叠加椒盐噪声X2 = imnoise(Original,'gaussian',0,0.1);%叠加高斯噪声X3 = imnoise(Original,'poisson');%叠加poisson噪声X4 = imnoise(Original,'speckle');%叠加speckle噪声[g1,~] = lpfilter(X1,'gaussian');%lowpass-filter函数,低通滤波[g2,~] = lpfilter(X1,'btw');[g3,~] = lpfilter(X1,'ideal');[h1,~] = lpfilter(X2,'gaussian');[h2,~] = lpfilter(X2,'btw');[h3,~] = lpfilter(X2,'ideal');[i1,~] = lpfilter(X3,'gaussian');[i2,~] = lpfilter(X3,'btw');[i3,~] = lpfilter(X3,'ideal');[j1,~] = lpfilter(X4,'gaussian');[j2,~] = lpfilter(X4,'btw');[j3,F] = lpfilter(X4,'ideal');figure, imshow(Original)%显示原始图像set(figure(1),'NumberTitle','off','Name','Original') ;figure;%高斯低通滤波器滤波后的图像set(figure(2),'NumberTitle','off','Name','Noise & gaussian-filter') ; subplot(2, 4, 1); imshow(X1,[]); title('salt & pepper noise'); subplot(2, 4, 2); imshow(X2,[]); title('gaussian noise');subplot(2, 4, 3); imshow(X3,[]); title('poisson noise');subplot(2, 4, 4); imshow(X4,[]); title('speckle noise');subplot(2, 4, 5); imshow(g1,[]); title('lowpass-gaussian'); subplot(2, 4, 6); imshow(h1,[]); title('lowpass-gaussian'); subplot(2, 4, 7); imshow(i1,[]); title('lowpass-gaussian'); subplot(2, 4, 8); imshow(j1,[]); title('lowpass-gaussian');figure;%巴特沃兹低通滤波器滤波后的图像set(figure(3),'NumberTitle','off','Name','Noise & btw-filter') ; subplot(2, 4, 1); imshow(X1,[]); title('salt & pepper noise'); subplot(2, 4, 2); imshow(X2,[]); title('gaussian noise'); subplot(2, 4, 3); imshow(X3,[]); title('poisson noise');subplot(2, 4, 4); imshow(X4,[]); title('speckle noise');subplot(2, 4, 5); imshow(g2,[]); title('lowpass-btw');subplot(2, 4, 6); imshow(h2,[]); title('lowpass-btw');subplot(2, 4, 7); imshow(i2,[]); title('lowpass-btw');subplot(2, 4, 8); imshow(j2,[]); title('lowpass-btw');figure;%理想低通滤波器滤波后的图像set(figure(4),'NumberTitle','off','Name','Noise & ideal-filter') ; subplot(2, 4, 1); imshow(X1,[]); title('salt & pepper noise'); subplot(2, 4, 2); imshow(X2,[]); title('gaussian noise'); subplot(2, 4, 3); imshow(X3,[]); title('poisson noise');subplot(2, 4, 4); imshow(X4,[]); title('speckle noise');subplot(2, 4, 5); imshow(g3,[]); title('lowpass-ideal');subplot(2, 4, 6); imshow(h3,[]); title('lowpass-ideal');subplot(2, 4, 7); imshow(i3,[]); title('lowpass-ideal');subplot(2, 4, 8); imshow(j3,[]); title('lowpass-ideal');///code end程序运行结果截图:///原始图像///高斯低通滤波器处理///巴特沃茨低通滤波器处理///理想低通滤波器处理课题三:顶帽变换在图像阴影校正方面的应用设计要求:举例说明顶帽变换在图像阴影校正方面的应用。

相关主题