数字图像处理课程设计1.doc

上传人:文库蛋蛋多 文档编号:2391654 上传时间:2023-02-17 格式:DOC 页数:20 大小:1.15MB
返回 下载 相关 举报
数字图像处理课程设计1.doc_第1页
第1页 / 共20页
数字图像处理课程设计1.doc_第2页
第2页 / 共20页
数字图像处理课程设计1.doc_第3页
第3页 / 共20页
数字图像处理课程设计1.doc_第4页
第4页 / 共20页
数字图像处理课程设计1.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数字图像处理课程设计1.doc》由会员分享,可在线阅读,更多相关《数字图像处理课程设计1.doc(20页珍藏版)》请在三一办公上搜索。

1、 数字图像处理课程设计论文摘要: Photoshop作为图像处理通用软件,深受广大平面设计人员和电脑美术爱好者的喜爱。但是在处理一些专业问题上有着很大的局限性。Matlab作为一款科技应用软件也具有图像处理功能。Matlab具有算法开发、数据可视化、数据分析和数字计算等特性,Photoshop的版本自从提供了Matlab的访问接口(Photoshop程序文件夹下有个Matlab文件夹,里面有说明、函数和示例文件等),利用Matlab强大的计算功能可以更精确更随意的处理图像数据。该文主要从图像的基本操作,美化,二个方面对Photoshop的功能使用Matlab来实现,并举例说明Matlab在一些

2、专业问题处理上的强大之处。关键字: Matlab,图像处理,Photoshop功能,实现方法Abstract:Photoshop as a common image processing software, favored by the plane designer like personnel and computer art lovers . But in dealing with some major issues has significant limitations. As a technology application software Matlab also has the f

3、unction of image processing. Matlab has algorithm development, data visualization, data analysis and numerical calculation features, such as Photoshop version, providing access interface of Matlab (Photoshop program folder has a Matlab folder, there are instructions, functions, and sample files, etc

4、.), using the powerful calculation function of Matlab can be more accurate and more random to process image data. This article mainly describe the basic operation of image, beautification, two aspects of using Matlab to realize the function of the Photoshop, and illustrate the Matlab powerful on som

5、e professional problem processing.Key words: Matlab image processing Photoshop function realization method目 录1. 概序41.1 设计目的41.2 具体设计4 1.3题目分析11 1.4课程设计的基本要求112.课程设计的内容112.1 设置Matlab对Photoshop功能的访问112.2 Matlab能实现几点功能的列举113.图像基本操作的实现113.1 具体的菜单功能113.2 按钮功能124. 基于Matlab的图像处理工作144.1 图像基本操作的实现144.2 图像风格化

6、的实现155. 图像美化的实现176. 结果分析19 1概述Photoshop是Adobe公司旗下最为出名的图像处理软件之一,集图像扫描,编辑修改,图像制作,广告创意,图像输入与输出于一体的图形图像处理软件,深受广大平面设计人员和电脑美术爱好者的喜爱。但是Photoshop在处理一些疑难问题时仍然有很大的局限性,特别是在处理一些专业问题如处理模糊图像,受噪声污染的图像等问题上就显得力不从心。Matlab是由美国Math Works公司推向市场以来,现以成为国际公认的最优秀的科技应用软件。Matlab既是一种直观,高效的计算机语言,同时又是一个科学计算平台,它为数据分析和数据可视化,算法和应用程

7、序开发提供了核心的数学和高级图形工具。Matlab的图像处理工具包是由一系列支持图像处理操作的函数组成的,所支持的图像处理操作有:几何操作,区域操作和块操作;线性滤波和滤波器设计;图像分析和增强;二值图像操作等。图像处理工具包的函数,按功能可以分为以下几类:图像显示,图像文件输入与输出,几何操作,像素值统计,图像分析与增强,图像滤波,线性二维滤波器设计,图像变换,领域和块操作,二值图像操作,颜色映射和颜色空间转换,图像类型和类型转换,工具包参数获取和设置等。此外用户还可以根据需要自己书写函数,以满足特定的需要,也可以将这个工具包和信号处理工具包或小波工具包联合起来使用,来拓展Matlab在图像

8、处理上的应用。Photoshop对图像的基本操作,美化,修复以及风格化等,Matlab都可以实现。1.1设计目的综合利用Matlab工具箱实现图像处理工作,利用Matlab图像处理工具箱,设计和实现自己的Photoshop。综合运用Matlab工具箱实现图像处理的GUI程序设计。1.1.1 学会用matlab gui设计用户界面,并编写响应程序学习步骤如下:(1) 启动matlab,打开gui编辑器 弹出下面对话框: 有四种GUI类型,我们这儿先选择第一种,点击OK按钮。(2) 在弹出的gui设计器中按照如下步骤设计初步界面 拖入第一个控件后界面就可以保存了,点击存盘按钮进行保存,双击生成的标

9、签控件按照图示步骤修改属性值。点击保存后自动弹出生成的一个m文件,这儿叫MyTest.m文件,如下图,在里面添加对应的界面响应程序。同时可以看到存储目录下会生成两个文件,一个是刚才弹出的m文件,另外一个就是界面文件.fig,所有界面相关的代码都放在该文件内,如下图:1.1.2设计一个完整的界面 在主窗口上绘制两个标签(static text),三个文本框(edit text)以及一个按钮(push button),如下图:对界面进行一下修改,双击各个控件在弹出的属性窗口,将三个文本框的string属性都修改为0,将两个标签修改为“+和“=,将按钮的string属性修改为“计算,修改完成后界面如

10、下图所示,界面字体可以通过控件的fontsize属性修改。为了便于在编写程序的时候区分各个控件,可以修改各个控件的唯一标示(tag属性),三个文本框默认是(edit1,edit2和edit3),修改为edit_num1, edit_num2和edit_total,修改完成后,可以运行预览一下界面了,点击下图所示的绿色箭头 。弹出提示,当前目录不是工作目录。可以任意选择一个(默认即可),然后确定。 弹出设计窗口如下图:此时为一个静态界面,是没有任何响应的,点击按钮是不会有变化的,现在我们就进行后台代码的编写了。1.1.3编写响应代码关闭上图的预览窗口,在界面设计器上选中“计算按钮,然后鼠标右键,

11、在弹出的对话框上选择“callback,弹出m文件编辑器,并自动生成了响应函数名,如下图所示:在该函数下面来写点击按钮的响应函数,代码如下 :% 获取文本框内容a = get(handles.edit_num1,String); b = get(handles.edit_num2,String); % 字符串转换为实数total = str2double(a) + str2double(b); % 将实数转换为字符串c = num2str(total); %将字符串赋值会文本框set(handles. edit_total,String,c); guidata(hObject, handles

12、); %更新结构体如下图:然后进行保存,通过m editor可以对程序进行调试,之后就可以直接运行一下。1.1.4运行程序点击下图所示的标示:弹出我们设计的界面,如下图:在前两个文本框输入数值,点击计算看看第三个文本框是否计算出了结果。 对于界面文件的调用可以直接在matlab桌面窗口中输入fig文件名即可,如下图: 1.2具体设计现介绍各个功能模块的功能与实现。1.2.1界面布局的设计通过可视化界面左边的图形对象面板,添加软件需要的功能部件。添加效果如图所示:图形对象面板添加部件的部分效果图1.2.2编辑菜单栏通过Tools-Menu Editor创建如下菜单,通过以下菜单来控制各种图像操作

13、及特效处理.如“编辑”菜单中“兴趣部分”中的“选取矩形区域”和“多边形区域”为例作为实现选取图片局部区域的功能。选取矩形区域后通过点击窗口右边的View按钮编写具体实现功能的代码。上面已经规划好了按钮的位置,如果想在点击选取图片菜单时,软件给予响应,需要给按钮输入一定的程序代码,设置代码的方法如下:右键单击选取图片按钮,选择View Callbacks/ Callback,系统会自动带设计者进入此按钮的代码输入区域,在下面的空白处输入如下代码1:global im %定义一个全局变量imfilename,pathname=uigetfile(*.*;*.bmp;*.tif;*.png,sele

14、ct picture); %选择图片路径str=pathname filename; %合成路径+文件名im=imread(str); %读取图片axes(handles.axes1); %使用第一个axesimshow(im); %显示图片写完上述代码后,保存M文件,然后运行GUI,现在就可以实现选择图片的功能了。当然有选取就要考虑存储已处理好的图片,这就引出了存储图片按钮的GUI设计。存储图片按钮的GUI设计,同样单击右键存储图片按钮,选择View Callbacks/ Callback,进去M文件后在下面的空白处输入如下代码2:global BW %定义处理后的图片BW这个全局变量fil

15、ename,pathname,filterindex=uiputfile(*.bmp;*.tif;*.png,save picture);存储图片路径if filterindex=0return %如果取消操作,返回elsestr=pathname filename; %合成路径+文件名axes(handles.axes2); %使用第二个axesimwrite(BW,str); %写入图片信息,即保存图片end1.3题目分析 学习利用Matlab图像处理工具箱,设计和实现自己的Photoshop的要求是我们会用Matlab中的一些命令程序来调试出我们所需要的图像处理效果。1.4课程设计的基本

16、要求(1)熟悉和掌握Matlab 程序设计方法;(2)学习和熟悉Matlab图像处理工具箱;(3)学会运用Matlab工具箱对图像进行处理和分析;(4)掌握 Matlab GUI 程序设计。2课程设计的内容2.1设置Matlab对Photoshop的访问 (1)从Matlab中选择“File”“Set Path”。 (2)单击“Add With Subfolders”,然后选择安装后Photoshop文件夹里的Matlab文件夹。(3)单击“Save”,然后单击“Close”。(4)从Matlab菜单中选取“File”“Preferences”。(5)在对话框中,单击“General”。(6)

17、单击“Update Toolbox Path Cache”按钮。(7)单击“Apply”,然后单击“OK”。Matlab的帮助系统里的Photoshop Toolbox包含对Photoshop 操作的函数和示例。要启动Photoshop或连接到Photoshop,请键入pslaunch,然后按Enter键。要取消与Photoshop的连接并退出,请键入psquit并按Enter键。2.2Matlab能实现的几点功能列举(1)图像的读取和保存;(2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像;(3)图像直方图统计和直方图均衡,要求显示直方图统计,比

18、较直方图均衡后的效果。3图像基本操作的实现3.1具体的菜单功能该菜单包含文件的打开,保存和退出GUI的功能,这几个功能是每一种图像处理软件的必备功能。如下图:3.1.1打开为了让使用者打开所需要的图片,设计了打开图像这项基本功能。通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件。Uigetfile函数的调用格式为name,path=yigetfile(), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。通过imread函数读出图像数据,把图像数

19、据赋值给全局变量im,这里得到的im要声明为全局变量,为后面每个功能所使用。3.1.2保存对于图像保存,可以用imwrite函数,把数据i存到指定的文件夹中。这里仍然要用到uigetfile函数来实现,用它获得将要保存的路径。可以指定文件保存的格式,如:imwrite(i,file,jpg);,其中i为从坐标轴中获取的图像信息:i=getimage(gca);3.1.3编辑 该菜单包含图像放大,缩小,灰度转换,亮度转换,任意角度旋转和截图这几项功能,这些是对图像的一些基本几何变换等基本功能。3.1.4退出退出和按钮的退出功能一样,清除所有变量和坐标轴中的内容。cla reset; 3.2按钮功

20、能3.2.1 Scan(浏览)为了能让图像处理人员实现预览将要处理的图像,设计了这个功能。该功能实现的主要思想是,先获取图片所在文件夹的路径,然后列出文件夹中的文件内容,最后通过一个循环来读取每一张图片,需要用到的一些函数如下:directoryname = uigetdir(, pick up files); %获得文件夹路径,得到一个字符数组files = dir(directoryname);%列出文件夹里的内容,包含(name date bytes isdir)directoryname1 = strcat(directoryname,);%字符连接max = size(files,1

21、);%得到总共文件数pause(0.8);%暂停在设计过程中有碰到一个问题,对于d1 = files(i).name;当i为1,2时得到不是图片的文件名,所以说循环时要从3开始。 d1 = files(1).named1 =. d1 = files(2).named1 =在按钮调试的过程中,后来又发现了一个问题,但文件夹中包含其它非图片格式的文件时会出错,读取的文件路径无法显示,因为它的格式不是合法图片格式。为了解决这个问题,我就通过获取每个文件的格式,然后判断它的格式是否为图片,是则显示,不是则跳过,这样以来就循环次数也可以从1开始了。具体需要用到的函数如下:A = jpg, png, bm

22、p, jpeg, tif;%合法的图片类型d2 = strfind(d1, .);%获取.在字符串中的位置,因为.之后为文件类型if any(ismember(A, d1(d2+1:end);%判断文件类型是否合法3.2.2 Back(上一张)在浏览完图片以后,为了可以选择喜欢处理的图片而无需每次的打开图片,设计了上一张和下一张功能。该功能实现的主要思想是,先获取已经显示图片的路径,然后从第一张图片的路径开始与正在显示的图片路径做比较,当二者相同时,记下i,然后执行i=i-1,得到上一张图片路径,最后显示出来。具体实现的关键语句如下:for i=3:max d1 = files(i).name

23、; d2 = strcat(directoryname1,d1); %文件夹内每张图片路径 if strcmp(d2,str) i=i-1;break; %与正在显示的图片路径做比较,看是否相同 else end end 当显示第一张图片时,再执行上一张,提示:这是第一张图片。if i=2 msgbox(this is the first img);3.2.3 Next(下一张)下一张和上一张思路一样,只是在得到显示图片路径以后,执行i=i+1。另外我还加了一个功能,就是当现实到最后一张图片是,如果再下一张就提示:这是最后一张图片。if i=max+1 msgbox(this is the l

24、ast img);3.2.4 Exit(退出)在设计退出的程序时,使用cla reset命令。4基于Matlab的图像处理工作4.1图像基本操作的实现Photoshop对图像的基本操作包括图像实现缩放,旋转,剪裁等操作,缩放,旋转的功能在Photoshop的“编辑变换”中都有相应的操作命令可以实现,裁剪则在工具区有专门工具。Matlab中实现这些功能需要由两个算法来实现:空间变换算法和灰度值插值算法。空间变换主要用来保持图像中曲线的连续性和物体的连通性,一般都采用数学函数形式来描述输入,输出图像相应像素间的空间关系。空间变换一般的定义为g(x,y)=f(x,y)=fa(x,y),b(x,y)其

25、中,f表示输入图像,g表示输出图像,(x,y)坐标指的是空间变换后的坐标。图像缩放代码:I=imread(001.jpg);%读入图像J=imresize(I,64NaN);%图像缩放ImshowI;效果如图1: 原图像 缩放的图像 图1图像旋转代码:I=fitsread(002.jpg);I=mat2gray(I);J=imrotate(I,-15,bilinear,crop);图像旋转5imshow(J);%显示图像效果如图2: 原图像 旋转的图像 图2图像修剪代码:I=imread(002.jpg);%读入图像J=imcrop(I,75,60,130,118);%图像修剪Imshow(J

26、);%显示图像,效果如图3: 原图像 修剪的图像图34.2图像风格化的功能的实现Photoshop对图像的风格化主要是对图像进行浮雕,魔术棒,锐化等功能的处理,Photoshop菜单栏的“滤镜”中提供了很多风格化的效果。相对于Matlab,要实现Photoshop的风格化,只需运用到几个常用函数。4.2.1浮雕功能的实现浮雕的算法是对图像的每一个点进行卷积处理,采用的矩阵如下:1 0 0;0 0 0;0 0 -1;假设原图像为X,处理后的图像为Y,也就是说,对于坐标为(i,j)点,其浮雕效果图的算法为Y(i,j)=X(i-1,j-1)-X(i+1,j+1)+128。当然,X,Y的取值均在0-2

27、55之间。 浮雕效果代码如下: global T axes(handles.axes2); T=getimage; handles.img=T; z=rgb2gray(handles.img); f1=imnoise (z,speckle,0.01); %加入密度为0.01的高斯乘性噪声 f1=im2double(f1); %将图像转化为双精度 h3=1/9.*1 1 1; 1 1 1; 1 1 1 ;% 给定均值滤波窗口 f4=conv2(f1,h3,same);%采用h3对图像f1进行卷积滤波 h2=fspecial(sobel); %创建预定义滤波器,进行sobel滤波 g3=filte

28、r2(h2,f1,same); %二维线性滤波 K=mat2gray(g3); %转换矩阵为灰度图像 imshow(K); handles.img=k; guidata(hObject,handles) 效果如图4: 图44.2.3图像锐化功能的实现图像锐化处理代码如下:I=imread(002.jpg);I=rgb2gray(I);I=double(I);bw1 = edge(I,sobel); %sobel算子锐化figure;subplot(121);imshow(uint8(ima);title(原始图像);%图像显示subplot(122);imshow(bw1);title(sob

29、el算子锐化);效果如图:6: 原图像 sobel锐化后的图像 图65图像美化的实现 Photoshop图像的美化在很多教程中都有详细说明,也能取得非常理想的效果,但是实现步骤比较复杂,对于不熟悉Photoshop软件操作以及不具备美学基础或美术功底的人来说,将是非常枯燥烦恼困难的事。Photoshop对图像美化的基本功能有调整对比度,反向,调整色调等。 在Photoshop中,选择要操作的图片的区域,选择“图像调整”,就会有很多对图像美化的操作命令供用户选择,比如自动色阶,自动对比度,反相,色彩平衡等。 在Matlab中,则可以利用不同的函数来实现不同的效果,利用histep函数实现直方图均

30、衡化,利用f(x)=255-1公式则可以对图像进行反相,相对Photoshop,Matlab处理时虽然不是很方便,但也能起到很好的效果,同时用户可以自己对参数进行精确设定,以达到精确的效果。在Matlab中,运用直方图均衡化命令可以很快得对图像实现对比度调整的效果。增加图片对比度的原理是,由于许多原始图像的灰度经常分布在一个小范围内,不易观察分辨,通过直方图均衡化使图像灰度均匀分布,使一定范围内象元值的数量大致相等,以此加强细节,提高图像的清晰度,便于观察以及计算机进行分析处理。其具体的代码如下:I=imread(pout.tif); %读入图像 high=histeq(I); %直方图均衡化

31、定灰度级数n,默认64subplot(2,2,1),imshow(I); %显示图像 subplot(2,2,2),imshow(high); subplot(2,2,3),imhist(I);%获取图像的直方图subplot(2,2,4),imhist(high);效果如图7: 图7图片反相:底片就是负片,就是和原图片完全相7,想要实现负片效果就是把个像素点完全翻转,取像素255的补数并取代原来的点,即图像按照下列映射关系进行灰度变换:f(x)=255-xI=imread(002.jpg);J=255-I;Imshow(J);在gui中具体的代码如下:global Taxes=(handle

32、s.axes2);T=getimage; f=imcomplement(handles.img); imshow(f); handles.img=f; guidata(hObject,handles)效果如图8: 原图 反相图 图8调整色调可以让图像整体偏向某种色调,这里已给图片增加暖色为例。采用RGB颜色模式的图像是由R,G,B三个通道构成,也就是红色,绿色,蓝色三个通道构成的,红色一类颜色代表暖色调,蓝色一类代表冷色调,要想调整图片的色调,只要对红色通道或者蓝色通道进行调整即可,代码如下:RGB=imread(C:UserssDesktop01.jpg);subplot(221),imsh

33、ow(RGB)title(原始彩色图像)subplot(222),imshow(RGB(:,:,1);title(真彩色图像的红色分量)RGB(:,:,1)=RGB(:,:,1)+60;subplot(222),imshow(RGB)效果如图9: 原图像 增加红色通道值 图96结果分析本次Matlab课程设计软件测试基本成功,针对题目要求的功能均能较好实现。此外自己增加了部分的额外功能也都能较好的实现。总结 通过以上的论述,我们发现用Matlab实现自己的Photoshop效果其实并没有我们想象中的那么难,它不需要我们具有一定的美学思维和美术功底,它打破了原始Photoshop对图像操作人员的

34、要求。在用Matlab实现Photoshop的功能的关键是懂得Matlab中一些数学函数在图像处理方面的应用,会发现Photoshop中的一些效果自己完全可以通过Matlab软件做出来,学习数字图像处理这门课,主要是让我们发现另外一种可以很方便的处理我们所需要的图像效果的一些其他更有效更好的方法。通过这次“基于matlab的数字图像处理”的GUI课程设计,学到了很多很多,最基本的就是重新熟悉了matlab语言,不仅仅只是在matlab编程上面有所提高和对GUI的熟悉,对数字图像处理也有了更深刻的认识。致谢非常感谢老师这学期开设的数字图像处理这门课,并提供了课程论文设技这一重要的能提高学生学习能力的作业,让每个学生在完成作业过程中得到了一个对于个人综合能力的全面提高。此后,编程能力会有一个很大的提高,而且还能更好的完成一个系统性的论文,让自己在温固了所学的知识外,还学到了不少新的知识。参考文献1张春蛾,关于图形图像处理软件Phtoshop的应用J.计算机应用研究,2004(6).2刘浩,韩晶. Matlab R2012a完全自学一本通M.3喻伟林,方卫红,刘倩. MATLAB环境下的图像配准技术研究J.信息技术,2007(10).4吕国英.算法设计与分析M.2版.北京:机械工业出版社,2002.5张德丰等. Matlab数值分析M.2版.北京:机械工业出版社,2012.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号