matlabGUI设计论文.docx

上传人:b****6 文档编号:7200098 上传时间:2023-01-21 格式:DOCX 页数:24 大小:6.74MB
下载 相关 举报
matlabGUI设计论文.docx_第1页
第1页 / 共24页
matlabGUI设计论文.docx_第2页
第2页 / 共24页
matlabGUI设计论文.docx_第3页
第3页 / 共24页
matlabGUI设计论文.docx_第4页
第4页 / 共24页
matlabGUI设计论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

matlabGUI设计论文.docx

《matlabGUI设计论文.docx》由会员分享,可在线阅读,更多相关《matlabGUI设计论文.docx(24页珍藏版)》请在冰豆网上搜索。

matlabGUI设计论文.docx

matlabGUI设计论文

《数字图像处理》

期末大作业暨课程考核报告

 

姓名:

周阳扬舟

学号:

24112201824

序号:

28

 

湖南理工学院南湖学院

2014年6月

第一部分:

设计部分

 

1、绘制灰度直方图,实现直方图均衡化和直方图规定化

1.1算法原理

1.2算法设计

1.3实验结果及对比分析

 

2、灰度图像的对比度增强

2.1算法原理

2.2算法设计

2.3实验结果及对比分析

 

3、图像的几何变换

3.1算法原理

3.2算法设计

3.3实验结果及对比分析

 

4、图像加噪,然后使用中值和均值进行滤波处理.

4.1算法原理

4.2算法设计

4.3实验结果及分析

 

5、采用robertprewittsobel拉普拉斯算子对图像进行边缘提取

5.1算法原理

5.2算法设计

5.3实验结果及分析

 

第二部分:

编写一个基于GUI的图像处理程序

2.1界面功能设计

2.2界面功能实现

2.3gui功能调试

3.小结(感受和体会)

一、设计部分

1绘制灰度直方图,实现直方图均衡化和直方图规定化

1.1算法原理

将灰度化图像的每个灰度级的像素个数统计出来,并计算占总像素的比例,就是灰度直方图。

反映了各个灰度级分布的情况,为进一步处理图像打下基础。

可以求出出图像的灰度直方图,然后进行均衡化,规定化。

1.2算法设计

绘制灰度直方图,实现直方图均衡化和直方图规定化算法流程图:

直方图规定化算法流程图

直方图均衡算法流程图

直方图统计算法流程图

 

1.3实验结果及对比分析

(1)程序如下:

clear

I=rgb2gray(imread('zhouyan.jpg'));%读入图像,并进行灰度处理

subplot(2,2,1),imshow(I),title('灰度图像')%显示

subplot(2,2,2),imhist(I),title('灰度图像的直方图')%显示

ylim('auto');%设定刻度线和取值范围

G=histeq(I,1024);%对图像I进行直方图均衡化处理,生成图像

subplot(2,2,3),imshow(G),title('直方图均衡化处理图像')%显示

subplot(2,2,3),imshow(G),title('直方图均衡化处理图像')

ylim('auto')%设定刻度线和取值范围

imwrite(I,'1.jpg')%将灰度图像I写入计算机

imwrite(I,'1.jpg')%将均衡化后的图像I写入计算机

ylim('auto')%设定刻度值和取值范围

xlim('auto')%设定刻度值和取值范围

K=histeq(I,[050100150200256])%进行直方图规定化

subplot(2,2,4),imshow(K),title('直方图规定化处理图像')%显示

ylim('auto')%设定刻度值和取值范围

xlim('auto')%设定刻度值和取值范围

imwrite(K,'K.jpg')%将K写入计算机

(2)在mmatlab中的运行结果截图:

1、

2

2、

 

3

 

2灰度图像的对比度增强

2.1算法原理

增强图像对比度实际是增强原图的各部分的反差。

实际中往往是通过增强原图里某两个

灰度值间的动态范围来实现的。

通过调用库函数immultiply改变对比度。

并和原灰度图像进行对比。

 

2.1算法流程

对比度改变算法流程图:

2.3实验结果及对比分析

(1)程序代码如下:

a=imread('zhouyang.jpg');%读图片函数

b=rgb2gray(a);

subplot(2,2,1);

imshow(b);

title('灰度化的图像');

g=immultiply(b,0.5);%对比度变换

subplot(2,2,2);

imshow(g);

title('对比度为0.5的图像');

subplot(2,2,3);

d=immultiply(b,5);

imshow(d,5);

title('对比度为5的图像');

 

(2)实验结果:

3图像的几何变换

3.1算法原理

a、图像平移变换:

e、图像的镜像变换

将图像水平或是垂直方向上的像素点进行调换。

利用size函数得到图像的大小,m,n。

若是水平镜像则X=m-x;若是垂直镜像则Y=n-y;(x,y)为原灰度图像的像素。

(X,Y)镜像后图像的像素。

3.2算法设计

几何变换的算法流程图为:

 

 

3.3实验结果及对比分析

(1)程序代码如下:

平移

a=imread('zhouyang.jpg');%读图片函数

b=rgb2gray(a);

subplot(1,2,1);

imshow(b);

title('原始图像');

[M,N]=size(b);

fory=1:

N;

forx=1:

M;

X=x+290;

Y=y+130;

ifX>=1&&X<=M&&Y>=1&&Y<=N;

B(X,Y)=a(x,y);

end;

end;

end;

subplot(1,2,2);

imshow(B);

title('平移后的图形');

.镜像

程序代码:

a3=imread('E:

\123.jpg');%读图片函数

b3=rgb2gray(a3);

subplot(1,2,1);

imshow(b3);

title('原始图像');

[P,Q]=size(b3);

fory=1:

Q;

forx=1:

P;

X=P-x;

Y=Q-y;

ifX>=1&&X<=P&&Y>=1&&Y<=Q;

D(X,Y)=b3(x,y);

end;

end;

end;

subplot(1,2,2);

imshow(D);

title('镜像后的图形');

运行结果:

 

 

4图像加噪(用输入参数控制不同噪声),然后使用空域和频域进行滤波处理

4.1算法原理

中值滤波法的原理:

对一个窗口(记为W)内的所有像素灰度值进行排序,取排序结果的中间值作为W中心点处像素的灰度值。

4.2实验结果及分析

(1)程序代码:

figure

a=imread('zhouyang.jpg');%读图片函数

I=rgb2gray(a);subplot(2,2,1);

imshow(I);title('原图');

In=imnoise(I,'gauss',0.02);subplot(2,2,2);

imshow(In);

title('加高斯噪声后的图形');

d=medfilt2(In);

subplot(2,2,3)

imshow(d);title('中值滤波后的图形');

e=filter2(fspecial('average',5),In)/255;

subplot(2,2,4);

imshow(e);title('5*5平均值滤波后的图形');

figure

a=imread(''zhouyang.jpg'');%读图片函数

I=rgb2gray(a);

subplot(2,2,1);

imshow(I);

title('原图');

In=imnoise(I,'salt&pepper',0.02);

subplot(2,2,2);

imshow(In);

title('加椒盐噪声后的图形');

d=medfilt2(In);

subplot(2,2,3);

imshow(d);

title('中值滤波后的图形');

f=filter2(fspecial('average',7),In)/255;

subplot(2,2,4)

imshow(f);

title('7*7平均值滤波后的图像');

(2)运行结果:

椒盐噪声

乘性噪声

高斯噪声

均值滤波

 

5采用robert,prewitt,sobel,拉普拉斯算子对图像进行边缘提取

5.1算法原理

5.2算法设计

算法实现流程图:

 

5.3实验结果及分析

程序代码及实验结果:

%拉普拉斯边缘检测函数定义

function[out1,out3,out2]=edgeLaplacian(I)

%I=[15255100200200;17254101109;371010026;108721;1165022;239720]

L1=[0-10;-14-1;0-10];

L3=[0-10;-15-1;0-10];

L2=[-1-1-1;-14-1;-1-1-1];

[M,N]=size(I);

I=im2double(I);

out1=zeros(M,N);

out3=zeros(M,N);

out2=zeros(M,N);

forx=2:

M-1

fory=2:

N-1

out1(x,y)=grad(I,x,y,L1);

out3(x,y)=grad(I,x,y,L3);

out2(x,y)=grad(I,x,y,L2);

end

end

%对输出图像进行标准化处理

out1=out1+abs(min(min(out1)));out3=out3+abs(min(min(out3)));out2=out2+abs(min(min(out2)));%对输出图像加一个数

%out1=abs(out1);out3=abs(out3);out2=abs(out2);%对输出图像取绝对值

figure

subplot(221);imshow(I);title('原图像');

subplot(222);imshow(out1,[]);title('L1方向上边缘');

subplot(223);imshow(out3,[]);title('L2方向上边缘');

subplot(224);imshow(out2,[]);title('L3方向上边缘');

functionout=grad(I,x,y,L)

sub=[I(x-1,y-1)I(x-1,y)I(x-1,y+1);...

I(x,y-1)I(x,y)I(x,y+1);...

I(x+1,y-1)I(x+1,y)I(x+1,y+1)];

m=sub.*L;

out=sum(m(:

));

 

%Roberts函数定义

function[outResult,outRoberts]=edgeroberts4(I)

M1=[0-10;-14-1;0-10]/sqrt(3);

[M,N]=size(I);

I=im2double(I);

outRoberts=zeros(M,N);

outResult=zeros(M,N);

forx=2:

M-1

fory=2:

N-1

outRoberts(x,y)=grad(I,x,y,M1);

outResult(x,y)=sqrt(outRoberts(x,y));

end

end

figure

subplot(1,2,1);imshow(I);title('原图像');

subplot(1,2,2);imshow(outResult);title('Robert边缘');

functionoutResult=grad(I,x,y,M)

sub=[I(x-1,y-1)I(x-1,y)I(x-1,y+1);I(x,y-1)I(x,y)I(x,y+1);I(x+1,y-1)I(x+1,y)I(x+1,y+1)];

outMid=sub.*M;

outResult=sum(outMid(:

))^2;

 

%sobel函数定义

function[out,outx,outy]=edgesobel(I)

%I=[15255100200200;17254101109;371010026;108721;1165022;239720]

M1=[-1-2-1;000;121];

M2=[-101;-202;-101];

[M,N]=size(I);

I=im2double(I);

outx=zeros(M,N);

outy=zeros(M,N);

out=zeros(M,N);

forx=2:

M-1

fory=2:

N-1

outx(x,y)=grad(I,x,y,M1);

outy(x,y)=grad(I,x,y,M2);

out(x,y)=sqrt(outx(x,y)+outy(x,y));

end

end

figure

subplot(1,2,1);imshow(I);title('原图像');

subplot(1,2,2);imshow(out);title('Sobel边缘');

functionout=grad(I,x,y,M)

sub=[I(x-1,y-1)I(x-1,y)I(x-1,y+1);...

I(x,y-1)I(x,y)I(x,y+1);...

I(x+1,y-1)I(x+1,y)I(x+1,y+1)];

out1=sub.*M;

out=sum(out1(:

))^2;

%函数调用

a=imread('ty.jpg');

I=rgb2gray(a);

subplot(1,2,1);

imshow(I);

title('原图');

J2=edge(I,'prewitt');

subplot(1,2,2),imshow(J2);

title('perwitt边缘检测');

%读入待处理图像

a=imread('yyy.jpg');

I=rgb2gray(a);

[out,outx,outy]=edgesobel(I);%Sobel边缘检测

[out1,out3,out2]=edgeLaplacian(I);%拉普拉斯边缘检测

[outResult,outRoberts]=edgeroberts4(I);%Roberts边缘检测

 

实验结果:

Roberts

Sobel

Prewitt

拉普拉斯

 

第二部分:

编写一个基于GUI的图像处理程序。

2.1界面功能设计

图形用户界面(GraphicalUserInterfaces,GUI)是由窗口、光标、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。

用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。

1、GUI整体界面

 

2.功能实现部分(算法包GUI界面功能设计)

实现一个图像灰度化

图像旋转

 

GUI界面设计结果

设计结果:

 

第三部分:

小结(感受和体会)

我觉以下几点对于学好matlab很重要:

兴趣、悟性、勤奋、坚持。

兴趣,不知道哪位名人说过“兴趣是最好的老师。

”我觉得非常有道理,我曾对于matlab制作动画很感兴趣,并收集了很多例子,在小木虫贴出来后很多人对于matlab制作动画都很感兴趣, 计算模拟版活动---程序模拟动画展示  ,一个人一旦对某事物有了浓厚的兴趣,就会主动去求知、去探索、去实践,并在求知、探索、实践中产生愉快的情绪和体验。

这样才能主动学习,并且学好到精通。

悟性,通常人认为指顿悟,慧根,我觉得就是对一个问题不断的思索,将自己的体会和感受融合,获得属于自己的知识。

有很多事情、问题,都是可以想明白的。

只有不停的想,才能想明白,想透彻。

就像我自己解决matlab编程进行DGGE电泳图谱多样性相似性分析,当时没有工具,而且问题必须解决,于是我不停的想,吃饭时,睡觉前,最终终于解决。

勤奋,一勤天下无难事。

从古到今,有多少名人不是有勤奋而得来成功的。

现在的年轻人,一代比一代聪明。

要不被别人淘汰,要超越别人,只有靠时间堆出来。

每天多学一些,多积累一些。

学习matlab也一样,想要学会,使用熟练,不花时间练习,写代码,亲自运行调试,是很难掌握好的。

 

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

当前位置:首页 > PPT模板 > 卡通动漫

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

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