基于界面GUI的图像处理软件综合设计.docx

上传人:b****5 文档编号:29594871 上传时间:2023-07-25 格式:DOCX 页数:31 大小:1.27MB
下载 相关 举报
基于界面GUI的图像处理软件综合设计.docx_第1页
第1页 / 共31页
基于界面GUI的图像处理软件综合设计.docx_第2页
第2页 / 共31页
基于界面GUI的图像处理软件综合设计.docx_第3页
第3页 / 共31页
基于界面GUI的图像处理软件综合设计.docx_第4页
第4页 / 共31页
基于界面GUI的图像处理软件综合设计.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

基于界面GUI的图像处理软件综合设计.docx

《基于界面GUI的图像处理软件综合设计.docx》由会员分享,可在线阅读,更多相关《基于界面GUI的图像处理软件综合设计.docx(31页珍藏版)》请在冰豆网上搜索。

基于界面GUI的图像处理软件综合设计.docx

基于界面GUI的图像处理软件综合设计

摘要

数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的逐步完善,使得数字图像处理技术在各个领域得到了广泛的应用,并显示出广阔的应用前景。

MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台,它为数据分析和数据可视化、算法和应用程序开发提供了核心的数学和高级图形工具。

MATLAB集成了功能强大的工具箱,MATLAB语言的语法特性与C语言极为相似,且更加简单,并且MATLAB语言可移植性好、扩展性强,再加上其中有丰富的图像处理函数,使得它在我们今后的学习和工作有越来越重要的作用。

本报告主要描述了简单的基于界面GUI的图像处理软件综合设计以及嵌入式设计:

基于ICETEK-DM642-P4的嵌入式DSP图像处理算法实现。

这些都比较简单,主要为今后的学习打下基础。

关键字:

MATLAB、界面GUI处理、数字图像处理

 

摘要-------------------------------------------------2

一、设计目的-------------------------------------------------------------------4

二、设计要求-------------------------------------------------------------------4

三、设计内容-------------------------------------------------------------------4

四、总体设计-------------------------------------------------------------------4

五、具体设计-------------------------------------------------------------------5

图像的读取与包存------------------------------------------------------------5

图像转化为灰度图像----------------------------------------------------------6

图像直方图统计和直方图均衡-------------------------------------------6

加入各种噪声,并通过几种滤波算法实现去噪------------------------------7

边缘检测---------------------------------------------------12

RGB图像处理------------------------------------------------14

图像锐化---------------------------------------------------15

六、结果分析-------------------------------------------------17

设计二、嵌入式设计:

基于ICETEK-DM642-P4的嵌入式DSP图像理

算法实现---------------------------------------------18

一、设计目的------------------------------------------------------------------18

二、设计内容------------------------------------------------------------------18

三、具体设计------------------------------------------------------------------18

熟悉TMS320C6000软件开发过程------------------------------------------------18

了解边缘检测的算法和用途,利用Sobel算子进行边缘检测,实现基于Sobel算子的边缘检测方法-----------------------------------------------------------------------------20

四、实验结果------------------------------------------------------------------22

心得体会---------------------------------------------22

 

设计一、基于界面GUI的图像处理软件综合设计(基于Matlab)

一、设计目的

综合运用MATLAB工具箱实现图像处理的GUI程序设计。

二、设计要求

1、熟悉掌握MATLAB的程序设计方法。

2、掌握MATLABGUI程序设计。

3、学习和熟悉MATLAB图像处理工具箱。

4、学会运用MATLAB图像处理工具箱对图像分析。

三、设计内容

设计一个软件,实现功能包括图像的读取、存储、显示、图像转换、加噪、去噪、增强、边缘检测、直方图统计等。

四、总体设计

因为我们要学习的是运用MATLAB工具箱设计的方法和步骤,再加上能力有限,所以该软件实现的功能较简单,其菜单如下:

设计完成时菜单界面如下:

五、具体设计

图像的读取与保存

1、打开

设计的时候,通过打开一个对话框来实现,选择uigetfile函数来实现,uigetfile函数显示一个打开文件的对话框,该对话框自动列出当前路径下的目录和文件。

其使用方法如下:

globalim  %定义一个全局变量im

[filename,pathname]=uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'selectpicture'); %选择图片路径

str=[pathnamefilename]; %合成路径+文件名

im=imread(str);  %读取图片

axes(handles.axes1); %使用第一个axes

imshow(im); %显示图片

2、保存

同样通过打开一个对话框来实现,选择uiputfile函数来实现

globalBW %定义处理后的图片BW这个全局变量

[filename,pathname,filterindex]=uiputfile({'*.bmp';'*.tif';'*.png'},'savepicture');存储图片路径

iffilterindex==0

return %如果取消操作,返回

else

str=[pathnamefilename]; %合成路径+文件名

axes(handles.axes2); %使用第二个axes

imwrite(BW,str); %写入图片信息,即保存图片

end

3、退出

这就简单了,程序如下:

clc;

closeall;

close(gcf);

图像转化为灰度图像。

由于在matlab中较多的图像处理函数支持对灰度图像进行处理,故对图像进行灰度转化十分必要。

可利用rgb2gray(X)函数对其他图像进行灰度图像的转化。

转化实例如下:

实现程序段如下:

globalT

axes(handles.axes2);

T=getimage;

x=rgb2gray(handles.img);

imshow(x);

handles.img=x;

guidata(hObject,handles);

p=inputdlg(prompt,'input',1,defans);

p1=str2num(p{1});

f=imresize(handles.img,p1,'bilinear');

imshow(f);

handles.img=f;

guidata(hObject,handles);

end

图像直方图统计和直方图均衡。

(1)通过histeq(X)函数实现直方图均衡。

因为此函数只能对灰度图像进行直方图均衡。

故应先将彩图转为灰度图像。

在上一步的基础上对第二幅图进行直方图均衡:

直方图均衡实现程序段如下:

%---Executesonbuttonpressinpushbutton7.

functionpushbutton7_Callback(hObject,eventdata,handles)

%hObjecthandletopushbutton7(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

globalT

axes(handles.axes2);

T=getimage;

h=histeq(handles.img);

imshow(h);

handles.img=h;

guidata(hObject,handles);

关键部分:

通过h=histeq(handles.img)进行直方图均衡

(2)直方图统计。

通过利用imhist(X)函数来实现直方图统计。

%---Executesonbuttonpressinpushbutton8.

functionpushbutton8_Callback(hObject,eventdata,handles)

%hObjecthandletopushbutton8(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

axes(handles.axes2);

x=imhist(handles.img);%直方图统计

x1=x(1:

10:

256);

horz=1:

10:

256;

bar(horz,x1);

axis([0255015000]);

set(handles.axes2,'xtick',0:

50:

255);

set(handles.axes2,'ytick',0:

2000:

15000);

注意:

横纵坐标的范围应选取适当,否则,统计图表有可能超出范围。

加入各种噪声,并通过几种滤波算法实现去噪。

(1)加入噪声。

通过imnoise(I,type,parameters)来加入各种噪声。

加入椒盐噪声

 

加入高斯噪声:

加入乘性噪声:

实现程序段如下:

functionuipanel4_SelectionChangeFcn(hObject,eventdata,handles)

%hObjecthandletouipanel4(seeGCBO)

%eventdatareserved-tobedefinedinafutureversionofMATLAB

%handlesstructurewithhandlesanduserdata(seeGUIDATA)

globalT

str=get(hObject,'string');

axes(handles.axes2);

switchstr

case'椒盐噪声'

T=getimage;

prompt={'输入椒盐噪声参数1:

'};

defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);

p1=str2num(p{1});

f=imnoise(handles.img,'salt&pepper',p1);

imshow(f);

handles.img=f;

guidata(hObject,handles);

case'¸高斯噪声'

T=getimage;

prompt={'输入高斯噪声1:

','输入高斯噪声2'};

defans={'0','0.02'};

p=inputdlg(prompt,'input',1,defans);

p1=str2num(p{1});

p2=str2num(p{2});

f=imnoise(handles.img,'gaussian',p1,p2);

imshow(f);

handles.img=f;

guidata(hObject,handles);

case'乘性噪声'

T=getimage;

prompt={'输入乘性噪声1:

'};

defans={'0.02'};

p=inputdlg(prompt,'input',1,defans);

p1=str2num(p{1});

f=imnoise(handles.img,'speckle',p1);

imshow(f);

handles.img=f;

guidata(hObject,handles);

end

(2)滤除噪声(高斯噪声)。

(因为只能对灰度图滤波,所以应先转换为灰度图)

滤波前

中值滤波后

低通滤波器滤波后

实现程序段如下:

中值滤波:

globalim;

globaly;

y2=double(y)/255;

MEDFILT=medfilt2(y2,[33]);

axes(handles.axes2);

imshow(MEDFILT,[]);

低通滤波:

globalim

globaly

[MN]=size(im);

F=fft2(y);

fftshift(F);

Dcut=100;

D1=250;

foru=1:

M

forv=1:

N

D(u,v)=sqrt(u^2+v^2);

BUTTERH(u,v)=1/(1+(sqrt

(2)-1)*(D(u,v)/Dcut)^2);

end

end

BUTTERG=BUTTERH.*F;

BUTTERfiltered=ifft2(BUTTERG);

axes(handles.axes2);

imshow(BUTTERfiltered,[])

边缘检测

Robert算法检测:

Sobel算法检测:

Prewitt算法检测:

Log算法检测:

Canny算子检测:

实现程序:

Robert算子:

globalim

globalcw

axes(handles.axes2);

cw=edge(im,'robert');

imshow(cw);

Sobel算子:

globalim

globaldw

axes(handles.axes2);

dw=edge(im,'sobel');

imshow(dw);

Prewitt算子:

globalim

globaldw

axes(handles.axes2);

dw=edge(im,'prewitt');

imshow(dw);

Log算子:

globalim

globaldw

axes(handles.axes2);

dw=edge(im,'log');

imshow(dw);

Canny算子:

globalim

globaldw

axes(handles.axes2);

dw=edge(im,'canny');

imshow(dw);

RGB图像处理

转换为索引图:

转换为二值图:

实现程序:

索引图像:

globalim

Y2=rgb2ind(im,128);

axes(handles.axes2);

imshow(Y2);

二值图像:

globalim

wm=im2bw(im,0.4);

axes(handles.axes2);

imshow(wm);

图像锐化

Sobel算子滤波:

拉氏算子滤波:

空域高通滤波:

频域高通滤波:

实现程序:

Sobel算子滤波:

globalim

H=fspecial('sobel');

K=filter2(H,im);

axes(handles.axes2);

imshow(K);

拉氏算子滤波:

globalim

am=double(im);

h=[010,1-41,010];

J=conv2(am,h,'same');

K=am-J;

axes(handles.axes2);

imshow(K);

空域高通滤波:

globalim

j=im2double(im)

h=[-1-1-1,-19-1,-1-1-1];

K=conv2(j,h,'same');

axes(handles.axes2);

imshow(K);

频域高通滤波:

globalim

globaly

[MN]=size(im);

F=fft2(y);

fftshift(F);

Dcut=100;

D1=250;

foru=1:

M

forv=1:

N

D(u,v)=sqrt(u^2+v^2);

BUTTERH(u,v)=1/(1+(sqrt

(2)-1)*(Dcut/D(u,v))^2);

end

end

BUTTERG=BUTTERH.*F;

BUTTERfiltered=ifft2(BUTTERG);

axes(handles.axes2);

imshow(BUTTERfiltered,[])

六、结果分析

软件测试基本成功,课题所要求的功能均能较好实现。

但一些功能只支持灰度图像的处理。

其中值得一提的是在滤波处理中的低通滤波与高通滤波的效果。

由于一般图像中含有较多的低频信息成分高频成分较少,通过低通滤波后,噪声以及高频成分被滤除,图像虽有少量失真,略显模糊,但尚可辨识。

但若是通过高通滤波后,大量的有效低频信息被滤除,图像严重失真,不可辨识。

 

设计二、嵌入式设计:

基于ICETEK-DM642-P4的嵌入式DSP图像处理算法实现

一、设计目的

掌握CodeComposerStudio2.2的安装和配置,熟悉TMS320C6000软件开发过程,熟悉怎样运用该软件来做相关的实际图像处理。

二、设计内容

①掌握CodeComposerStudio2.2的安装和配置,熟悉TMS320C6000软件开发过程:

创建工程和管理工程、编译和调试、使用观察窗口、了解图形功能(实验书P40-45);②了解边缘检测的算法和用途,利用Sobel算子进行边缘检测,实现基于Sobel算子的边缘检测方法(实验书P106-108);③在②的基础上,修改核心代码,调试实现基于Prewitt算子的边缘检测方法。

三、具体设计

熟悉TMS320C6000软件开发过程

1.实验准备

⑴.连接实验设备,连接220V供电电源连线,请使用有质量保证的220V电源插座。

⑵.打开实验箱上的开关,给实验箱供电。

上电正常时,ICETEK-DM642-P4评估板的

上电指示灯常亮,复位指示灯熄灭。

注意:

如果在ICETEK-DM642-P4评估板上

电后,指示灯的亮灭状态不对,请立即关闭实验箱电源开关,检查设备。

打开液

晶显示屏电源开关,此时液晶显示屏上应显示条状彩条。

如果没有彩条显示,请

按下板上的S3复位按钮,再次观察液晶显示屏是否有彩条输出。

提示:

如果使用自配的图像输入设备和图像输出设备,请务必保证各设备与DM642-P4

评估板的供电电源共地。

如果不共地,过大的电压差,将击穿DM642评估板。

2.设置CodeComposerStudio2.2在硬件仿真(Emulator)方式下运行

请参照第二部分,第二章操作。

3.启动CodeComposerStudio2.2

双击桌面上“CCS2(‘C6000)”,启动CodeComposerStudio2.2;如果无法进入CCS

软件,请参照第二部分,第三章操作,排除问题。

4.创建工程

⑴.创建新的工程文件:

选择菜单“Project”的“New…”项;在“ProjectCreation”对话框中,在“Project”

项输入USECCS;单击“Location”项末尾的浏览按钮,改变目录到

C:

\ICETEK-DM642-P4\Lab501-USECCS,单击“OK”;单击“完成”;这时建立的是一

个空的工程文件;展开主窗口左侧工程管理窗口中“Projects”下新建立的

“USECCS.pjt”,其中各项均为空。

提示:

如果要创建库文件,只需要在建立新工程时,将“Project”中的选项更改为

“Library(.lib)”即可。

⑵.在工程文件中添加程序文件:

选择菜单“Project”的“AddFilestoProject…”项;在“AddFilestoProject”对

话框中选择文件目录为Lab501-USECCS,改变文件类型为“CSourceFiles(*.c;*.ccc)”,

选择显示出来的文件“volum.c”;重复上述各步骤,添加volume.cmd、load.asm和

vectors.asm文件到USECCS工程中(如没有找到相应的文件,请选择改变文件类型来

找);添加C:

\ti\C6000\cgtools\lib\rts6400.lib。

⑶.编译连接工程:

选择菜单“Project”的“RebuildAll”项;注意编译过程中CCS主窗口下部的“Build”

提示窗中显示编译信息,最后将给出错误和警告的统计数。

5.编辑修改工程中的文件

⑴.查看工程文件

展开CCS主窗口左侧工程管理窗中的工程各分支,可以看到“USECCS.pjt”工程

中包含“volume.h”、“rts6400.lib”、“volume.c”和“volume.cmd”等文件,其中“volume.h”

为程序在编译时根据程序中的“include”语句自动加入的。

⑵.查看源文件

双击工程管理窗中的“volume.c”文件,可以查看程序内容。

双击工程管理窗中的“volume.h”文件,打开此文件显示,可以看到其中有主程

序中要用到的一些宏定义如“BUF_SIZE”等。

“volume.cmd”文件定义程序所放置的位置,此例中描述了DM642的存储器资

源,指定了程序和数据在内存中的位置。

⑶.编辑修改源文件

打开“volume.c”,找到“main()”主函数,将语句“input=&inp_buffer[0];”最后

的分号去掉,这样程序中就出现了一个语法错误;重新编译连接工程,可以发现编

译信息窗口出现发现错误的提示,双击红色错误提示,CCS自动转到程序中出错的

地方;将语句修改正确(这里是将语句末尾的分号加上);重新编译;注意,重新编

译时修改的文件被CC系统自动保存。

⑷.修改工程文件的设置

选择“Project”菜单中的“Bui

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

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1