《图像处理演示系统课程设计.docx》由会员分享,可在线阅读,更多相关《图像处理演示系统课程设计.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、图像处理演示系统课程设计 图像处理演示系统课程设计 院、系(部) 专业及班级 学号 姓名 日期 摘要 数字图像处理的目的在于改善图像的质量,主要以改善人的视觉效果为目的。目前,图像处理技术应用领域广泛医学、军事、科研、商业等领域。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。 本图像处理演示系统以数字图像处理理论为基础,对部分常用功能进行可视化设计,简洁大方,方便用户操作。本文使用MATLAB设计良好的用户界面,从加载、显示、输出及图像的几何变换(平移、缩放、旋转、翻转)与图像增强(空间域的平滑滤波与锐
2、化滤波)等方面提供了简单但实用的基本图像处理功能。 1主要内容 1.1 图像处理演示系统设计要求 1)能加载和显示原始图像,显示和输出处理后的图像; 2)实现各部分功能且便于维护和具备可扩展性; 3)界面美观并且便于操作; 1.2图像处理演示系统设计任务 数字图像处理演示系统应该具备图像的图像增强(空间域的平滑滤波与锐化滤波)、几何变换(平移、缩放、旋转、翻转)、绘制直方图的简单处理功能。 1.2.1图像增强 图像增强是数字图像处理的基本内容之一,其目的是根据应用需要突出图像中的某些“有用”的信息,削弱或去除不需要的信息,以达到扩大图像中不同物体特征之间的差别,使处理后的图像对于特定应用而言,
3、比原始图像更合适,或者为图像的信息提取以及其他图像分析技术奠定了基础。一般情况下,经过增强处理后,图像的视觉效果会发生改变,这种变化意味着图像的视觉效果得到了改善,某些特定信息得到了增强。 1.2.2几何变换 几何变换又称为几何运算,它是图像处理和图像分析的重要内容之一。通过几何运算,可以根据应用的需要使原图像产生大小、形状、和位置等各方面的变化。简单的说,几何变换可以改变像素点所在的几何位置,以及图像中各物体之间的空间位置关系,这种运算可以被看成是将各物体在图像内移动,特别是图像具有一定的规律性时,一个图像可以由另外一个图像通过几何变换来产生。实际上,一个不受约束的几何变换,可将输入图像的一
4、个点变换到输出图像中的任意位置。几何变换不仅提供了产生某些特殊图像的可能,甚至还可以使图像处理程序设计简单化。从变换性质来分可以分为图像的位置变换、形状变换等 2.设计思想: 2.1 图像处理演示系统实现工具的选择 使用MATLAB软件进行界面设计及程序编写。 22 系统结构框图 3图形用户界面设计 GUI是实现人机交互的中介,可以通过它实现数据输入、处理和输出。MA TLAB提供了一个专门的GUI设计工具图形用户界面开发环境(GUIDE),使用该工具,可以快速完成GUI设计任务。利用MATLAB提供的有关数据,还可以创建工具栏控件和多种对话框。 3.1启动GUIDE 在命令窗口输入GUIDE
5、,则显示如下的“GUIDE Quick Start”对话框。 打开“GUIDE Quick Start”对话框,利用GUIDE模板创建新的GUI,选择一个模板后,点击OK按钮,在输出编辑器中打开GUI。添加菜单以及选择模板后点击运行显示如下: 4.图像处理演示系统各功能的实现 4.1文件的打开与保存 4.1.1文件的打开 在主菜单“文件”的下拉菜单中,有个“打开”选项,在其回调函数中添加打开某个文件的相关代码: , pathname = uigetfile( . *.bmp;*.jpg;*.gif;,Files (*.bmp,*.jpg,*.gif); *.bmp, 位图文件(*.bmp);
6、. *.jpg,Figures (*.jpg); . *.gif,MAT-files (*.gif); . *.*, All Files (*.*), . Open a file); global w h img xx; L=length(); if hhh(q) temp=hhh(p); hhh(p)=hhh(q); hhh(q)=temp; end end end img2(i,j)=hhh(5); end end img = img2; imshow(img); 中值滤波处理(平滑处理)后的结果为: 4.2.2图像的锐化滤波处理 1) 锐化滤波的作用: 图像的平滑处理会使图像的边缘纹理信
7、息受到损失,图像变得比较模糊。如果需要突出图像的边缘纹理信息,则可以通过锐化滤波器实现,它可以消除或减弱图像的低频分量从而增强图像中物体的边缘轮廓信息,使得除边缘以外的像素点的灰度值趋向于零。 2)锐化滤波原理 锐化滤波器是以对图像的微分运算或差分运算为基础。微分运算是求像素点灰度值的变化率,而图像内不同物体边缘处的像素点的灰度值往往变化比较明显,因此微分运算或差分运算可以起到增强边缘信息的作用。 锐化算子: 0 -1 0 H = -1 4 -1 0 -1 0 3)实现方法: global w h img; img1=im2double(img); a=img1(:,:,1); b=img1(
8、:,:,2); c=img1(:,:,3); img2=img1; for i=2:w-1 for j=2:h-1 img2(i,j)=abs(4*img1(i,j)-img1(i-1,j)-img1(i+1,j)-img1(i,j-1)-img1(i,j+1); end end img = im2uint8(img2); imshow(img); 其锐化处理结果为: 4.3 图像的几何变换 4.3.1 对图像进行平移 1)图像平移的作用: 将图像中的某点从一个位置(X,Y)移动到另外一个位置(X0,Y0),而使平移后的图像与原始图像完全相同。 2)图像平移原理: 图像的平移是图像变换中最简单
9、的变换之一,其特点是平移后的图像与原图像完全相同,平移后新图像上的每一个点都可以在原图像中找到对应的点。 若点A0(X0,Y0)进行平移后,被移到A(X,Y),其中X方向的平移量为X.Y方向的平移量为Y,那么点A(X,Y)的坐标为: X=X0+X Y=Y0+Y 实现方法: global w h img; prompt=请输入横向平移量?; title=; ansa=inputdlg(prompt,title); x1=str2num(ansa1); handles.my_data4=x1; prompt=请输入纵向平移量; title=; ansa=inputdlg(prompt,title)
10、; y1=str2num(ansa1); handles.my_data5=y1; guidata(hObject,handles) %上段代码中的x1,y1即为需要输入的横向平移量与纵向平移量for x=1:w for y=1:h PosSourceX=uint16(x+x1); PosSourceY=uint16(y+y1); if(PosSourceXw) | (PosSourceYh) if (xx.BitDepth=24) Transfor(x, y,1:3) = uint8(1); else Transfor(x, y) = uint8(1);end else if (xx.Bit
11、Depth=24) img(x,y,1:3) = BmpImage(PosSourceX,PosSourceY,1:3); else img(x,y) = BmpImage(PosSourceX,PosSourceY); end end end end imshow(img)%(PosSourceX和PosSourceY是平移后坐标点,Transfor为平移后图片) 4.3.2 对图像进行缩放 1)图像缩放的作用: 对图像进行缩小和放大的处理,可分别对其宽和高的缩放量进行设置。 2)图像缩放原理: 通常情况下,数字图像的比例缩放是将给定的图像在X方向和Y方向按相同比例缩放a倍。从而获得一副新的
12、图像,如果X方向和Y方向缩放的比例不同,则图像的比例缩放会改变原始图像像素之间的相对位置,产生几何畸变。设原始图像中的点A0(X0,Y0)比例缩放后,在新图像中的对应点为A1(X1,Y1),则坐标关系可表示为: X1=aX0 Y1=bX0 若比例缩放所产生的图像中的像素在原图像中没有相对应的像素点时,就需要进行灰度值的插值运算,一般有以下两种插值处理方法。 (1)直接赋值为和它最相近的像素灰度值,这种方法称为最邻近插值法,该方法的主要特点是简单、计算量很小、但可能会产生马赛克现象; (2)通过其他数学插值算法来计算相应像素点的灰度值,这类方法处理效果好,但运算量会有所增加 3)实现方法: pr
13、ompt=请输入X向缩放倍数:; title=; ansa=inputdlg(prompt,title); sx=str2num(ansa1); handles.my_data3=sx; guidata(hObject,handles) m=xx.Width; n=xx.Height; m1=m*sx;n1=n*sy; %设置Y向缩放倍数sy. for h=1:m1; for w=1:n1; b(h,w)=i(round(h/sx),round(w/sy);%round 取最邻近整数 end end (m,n为原始图像的二维数据,m1,n1为缩放后的图像二维数据,xx为读取的原始图像信息) 缩
14、放处理结果显示如下: 4.3.3 对图像进行旋转 1)图像旋转的作用: 对图像进行任意角度的旋转。 2)图像旋转原理: 图像的旋转变换是几何学中研究的重要内容之一,一般情况下,图像的旋转变换是指以图像的中心为原点,将图像上的所有像素都旋转同一个角度的变换。图像经过旋转变换之后,图像的位置发生了改变,但旋转后,图像的大小一般会改变。和平移变换一样,在图像旋转变换中既可以把转出显示区域的图像截去,又可以扩大显示区域的图像范围以显示图像的全部。 设原始图像的任意点A0(X0,Y0)经过旋转角度以后到新的位置A(X,Y),为表示方便,采用极坐标形式表示,原始点的角度为。如下图所示 P r A(X,Y)
15、 r A0(X0,Y0) 根据极坐标与二维垂直坐标的关系,原始图像的点A0(X0,Y0)的X0和Y0坐标如下: X0=rcos Y0=rsin 旋转到新位置以后点A(X,Y)的坐标如下: X=rcos(-)=rcoscos+rsinsin=X0cos+Y0sin Y=rsin(-)=rsincos-rcossin=-X0sin+Y0cos 图像的旋转变换用矩阵形式表示如下: X cossin0 X0 Y = -sincos0 Y0 1 0 0 1 1 对图像进行旋转操作时需要输入旋转(该题中旋转角为90度)角度,相关实现代码如下:global w h img; prompt=请输入旋转角度:; title=Angle Degrees; ansa=inputdlg(prompt,title); n=str2num(ansa1); i=im2double(img); pai=3.14; n=pai*n/180; %?将角度转换为直观的表示方法,便于直接输入度数。 img1=zeros(w,h); for i=1:(w-1) for j=1:(h-1) img1(int32(i*cos(n)+sin(n)*j),int32(j*cos(n)-i*1*sin(n)=i(i,j); end end img=im2unit8(img1); imshow(img);
限制150内