基于MATLAB的数字图像处理系统

基于MATLAB的数字图像处理系统

摘要:数字图像处理技术是20世纪60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。
MATLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言的语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式,而且这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。

关键词:MATLAB,数字图像处理,GUI,

  1. 课程设计目的

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

  1. 课程设计要求

1)熟悉和掌握MATLAB 程序设计方法

2)掌握MATLAB GUI 程序设计

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

4)学会运用MATLAB工具箱对图像进行处理和分析

  1. 课程设计的内容

学习MATLAB GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。

以下几点是程序必须实现的功能。

1)图像的读取和保存。

2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。

3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域进行截图,并显示该选择区域。

5)图像直方图统计,要求显示直方图统计。

  1. 题目分析

信息化社会中,计算机在各种信息处理中发挥着重要的作用。我们可以借助计算机,对数字图像进行处理,以达到不同的效果。根据题目的要求,除了实现要求的功能外,还有很多的功能需要用到。

(1)、将一个RGB图像转换为灰度图像。

(2)、可以对图像做各种变换,如旋转等。

  1. 总体设计

由于要实现的功能并不是很多,所以在排版的过程中,把各个功能都安排在目录栏上,整体安排如下图5-1所示:

v2-99b64aa84521fa67a1c9e5af555d2c06_b.jpg


图5-1 整体安排

总体的设计界面如下图5-2所示:


v2-967e2f965f129dad674a2748b682ee26_b.jpg


图 5-2 总体设计界面

  1. 具体设计
    1. 文件


6.1.1、打开

为了让使用者更方便的使用,所以在设计的时候,通过对话框的形式来选择文件,选择uigetfile函数来实现,uigetfile函数显示一个打开文件对话框,该对话框自动列出当前路径下的目录和文件,由于这个GUI程序的操作对象是图像文件,所以设置这里的缺省后缀名为“.bmp”。

Uigetfile函数的调用格式为[name,path]=yigetfile(…), 在按下对话框中的执行按钮“打开”后,返回选择的文件名和路径,分别保存到“name”和“path”中。如果按下取消按钮或是发生错误,则返回值是0。 根据返回值的情况,如果是0,则弹出提示错误的对话框,否则,通过imread函数读出图像数据,把图像数据赋值给全局变量handles.img。

6.1.2、保存

同样也通过对话框的形式来保存图像数据,通过uigetfile函数选择文件名和路径,用getimage(gca)取出坐标2变换后的图像数据保存到变量i,最后用imwrite函数,把数据i存到指定的文件。

6.1.3、退出

退出比较简单,程序如下所示:

clc;

close all;

close(gcf);

  1. 旋转


6.2.1、上下翻转

函数flipud是实现一个二维矩阵的上下翻转,如

a=[1 2;3 4],经过该函数处理后,原矩阵变为[3 4;1 2];所以利用该函数也可以对图像进行上下翻转处理,但由于该函数针对二维数据的处理,所以在写程序时,要对RGB图像和灰度图像分开处理,这就要用到isrgb函数来判断,如果是灰度图像,则可以直接用这个函数进行处理,否则就要对RGB图像进行降维处理, for k=1:3

y(:,:,k)=flipud(x(:,:,k));

end

处理结果如图 6.2-1:


v2-91b47b8f30150ff04a8084d80d9394dc_b.jpg


图 6.2-1 图像上下翻转前后

6.2.2、左右翻转

对图像的左右翻转也可以用fliplr函数来处理,同样的,也要对灰度和彩色图像分开处理,处理结果如图6.2-2:


v2-7ffe6cde530ae5d39f69ae0cd2506bf4_b.jpg


图 6.2-2 图像左右翻转前后

6.2.3任意角度翻转

用函数imrotate来实现对图像的插值旋转。

该函数的调用格式如下:

B=imrotate(A,angle,method,’crop’)

其中,参数method用于指定插值的方法,可选的值可以有三种,分别为邻近插值,双线性插值,双三次插值,缺省时为邻近插值,参数angle代表旋转的角度。

一般来说,旋转后的图像会比原图大,用户可以指定“crop”参数对旋转后的图像进行剪切(取图像的中间部分),使返回的图像与原图大小相同。执行结果为如图 6.2-.3:


v2-641c98fda7fcdc8828a0bc9ca10ae91a_b.jpg


图 6.2-3 图像45度翻转前后

  1. 直方图统计


用imhist函数对图像数据进行直方图统计,

x=imhist(handles.img(:,:,1));

bar(horz,x);

其中,x矩阵的数据是0~255灰度值的统计个数,如果直接对x矩阵数据进行图形图显示,由于有256个数据,在坐标系中就会很密集,为了更清楚的显示条形图,所以在程序设计时,把x数据进行部分提取,

x1=x(1:10:256);

horz=1:10:256;

bar(horz,x1);


v2-e25d1bf62b3a51642d29d833709a8e7d_b.jpg

v2-fea988a3be4610cb87fd15b32ca7c828_b.jpg

v2-6679a176e52b15fdd422b9211b717c0a_b.jpg

直方图显示图像分别如图6.3-1,6.3-2,6.3-3所示

图 6.3-1R直方图

  1. 编辑


6.4.1、灰度

由于RGB图像是三维图像,所以图像数据是一个三维数组,为了显示灰度图像,把三维图像降为二维,可以只取其中的二维数据,实现方法程序为:

y=(handles.img(:,:,1)); %当然也可以选择(:,:,2) 或(:,:,3)

imshow(y);

但是这样的话,根据程序所选的不同,图像数据也不同,显示也就不一样。

另一种方法就是,运用rgb2gray函数实现彩色图像到灰度图像的转换。程序为:

y=rgb2gray(handles.img);

imshow(y);

这个程序只能用于RGB图像转换灰度图像,当原始图像本来就是灰度图像时,运行该程序时就会出错,但是使用者在使用时有时并不知道这些,为了使该程序更加完善,应该在使用者原先图像时灰度图像时使用该功能时,应该要显示提示类信息。所以在开始时应该要有一个RGB图像或是灰度图像的判断过程。完整的程序如下:

if isrgb(handles.img)

y=rgb2gray(handles.img);

imshow(y);

else

msgbox('这已经是灰度图像','转换失败');

end

如果原图是RGB,执行该操作的结果如图 6.4-1:


v2-8584dd4c308ab8de2e4dcad41ec895de_b.jpg


图 6.4-1 图像灰度转换前后

6.4.2、亮度

用imadjust函数,其调用格式如下:


v2-4cf00f396134c3a4f7ee604a9dbcd92a_b.jpg

g=imadust(f,[low_in high_in],[low_out high_out]),gamma)

gamma 表示映射性质,默认值是1 表示线性映射。

由于该函数有五个参数需要输入,为了方便用户改变,所以这里设计一个输入对话框,用户通过对话框把五个参数赋值给[low_in high_in],[low_out high_out],gamma这五个参数,如下一组命令建立了如图6.4-2所示的输入对话框:

prompt={'输入参数1','输入参数2','输入gamma'};

defans={'[0 0.7]','[0 1]','1'};

p=inputdlg(prompt,'输入参数',1,defans);

但是,这种方法并不能很好的让用户能够对图像进行任意的亮度和对比度变化调整,有时并不事先知道参数的值要多少,也不关心,而是任意调节的,直到满意为止。


执行该操作,如调节框所示数值,结果如下图6.4-3:


v2-e8ec6b7cb8882818124055b58166056e_b.jpg


图 6.4-3 图像亮度调节前后

6.4.3、截图

在MATLAB中,用函数imcrop实现对图像的剪切操作。该操作剪切的是图像中的一个矩形子图,用户可以通过参数指定这个矩形四个顶点的坐标,也可以交互地用鼠标选取这个矩形。

Imcrop函数的调用格式如下:

y=imcrop(handles.img);

不管handles.img是三维的还是二维数据,该函数都能进行操作。图 6.4-4就是对三维图像的截图:


v2-b75f661c30bfad098a8c2f375901518e_b.jpg


图 6.4-4 图像截图前后

  1. 程序调试及结果分析

在程序设计过程中,碰到很多的问题。

  1. 一个函数只能对灰度图像处理,不能对RGB图像处理,那么如何才能对RGB图像处理呢?


这主要是对MATLAB函数的不够清楚,用到的很多函数是针对二维数据的,而RGB图像的数据是一个三维矩阵,所以处理要与灰度图像不同,在开始的时候,我认为应该找一个能够应用于三维矩阵的函数,结果却没找到,后来想到可以把三维数据进行降维处理,同样使用二维的函数,只要是同样处理三次。比如,彩色图像的滤波处理,直方图均衡等。

  1. 本次设计存在一个比较大的问题,就是每次操作都是独立的,比如:要对图像旋转,然后在此基础上进行亮度调整,截图,等等就不行。



我认为应该是整个程序设计过程中对变量的设置没有做好,应该每次操作后,把处理后的数据保存在一个全局变量,这样还要对处理后的数据进行在处理时,只要把这个全局变量作为原始数据带入就可。

  1. 心得体会

在这次课程设计过程中,感触很深,由于对MATLAB图像处理的函数不熟悉,导致自己走了很多的弯路,后来请教同学才找到MATLAB自带的现成函数,通过这次经历后,后来在设计其它程序时,尽量找MATLAB自带的现成函数,而不是一碰到问题就自己想算法,这样可以节省较多的时间。通过本次课程设计,使自己对MATLAB GUI设计流程有了比较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。

  1. 参考文献
  2. 郑阿奇,曹戈,赵阳.MATLAB实用教程[M].北京:电子工业出版社
  3. 程卫国,冯峰,姚东,徐听.MATLAB5.3应用指南[M].北京:人民邮电出版社
  4. 陈杨.MATLAB 6.X图像编程与图像处理[M].西安:西安电子科技大学出版社
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 基于matlab gui的数字图像处理系统是一种利用matlab图形用户界面(GUI)开发的数字图像处理软件。该系统可以实现图像的读取、处理、显示和保存等功能,用户可以通过简单的操作实现图像的增强、滤波、分割、识别等处理。该系统具有操作简单、功能强大、易于扩展等优点,被广泛应用于医学图像处理、遥感图像处理、工业检测等领域。 ### 回答2: 基于matlab gui的数字图像处理系统是一种将数字图像处理算法与图形用户界面结合在一起的系统,能够实现图像的读取、显示、处理以及保存等功能。该系统可以方便地进行数字图像的处理,包括图像增强、图像去噪、图像分割、特征提取等操作,同时具有交互性和友好性。 matlab是一种功能强大的数学软件,其有着强大的图像处理工具箱,可以处理各种不同的图像,比如灰度图像、二值图像、彩色图像等。而matlab gui则实现了图像处理的可视化,只需通过拖拉控件即可实现图像的读取、保存等操作。matlab gui还可实现图像的实时显示,方便用户观察算法的处理效果,并可调整参数以优化结果。此外,matlab gui还提供了丰富的可视化工具,能够很好地呈现图像处理结果。 利用matlab gui的数字图像处理系统可以方便地处理各种图像处理问题,例如医学影像处理、卫星图像处理、人脸识别、图像识别等。不仅如此,该系统还能够与其他matlab工具箱结合起来,进一步扩展应用范围。以图像分类为例,结合matlab神经网络工具箱可以实现图像的自动分类,提高分类准确性。 总之,基于matlab gui的数字图像处理系统具有方便、快捷、可视化等优点,是数字图像处理的一种重要工具,为图像处理研究和应用提供了强有力的支持。 ### 回答3: 数字图像处理是计算机视觉领域的一部分,已经被广泛应用于医学图像处理、数字摄影、电视等领域。MATLAB是一个非常强大的数值计算软件,它具有编程语言和各种工具箱,非常适合数字图像处理。 基于MATLAB GUI的数字图像处理系统是一个用户友好的程序,可以通过图形界面来进行数字图像处理。这个系统可以包括许多不同的功能,例如图像增强、图像滤波、边缘检测、分割以及图像识别等等。 首先,基于MATLAB GUI的数字图像处理系统可以提供图像增强功能。图像增强是一种改善图像质量的技术。这个系统中可以提供不同的图像增强技术,例如直方图均衡化、适应性直方图均衡化等等。 其次,这个系统也可以提供图像滤波功能。滤波可以消除图像中的噪声,从而提高图像质量。这个系统支持许多不同的滤波器,例如中值滤波器、高斯滤波器等等。 此外,基于MATLAB GUI的数字图像处理系统也可以进行边缘检测和图像分割。边缘检测是一种提取图像中各个对象的边缘的技术。图像分割是将图像分成多个子区域的过程。这个系统中也可以提供不同的技术来进行边缘检测和图像分割。 最后,这个系统还可以进行图像识别。图像识别是一种将图像转化为数字信号,然后进行比较来确定其内容的技术。这个系统可以使用各种机器学习和人工智能算法来进行图像识别。 总的来说,基于MATLAB GUI的数字图像处理系统具有很多不同的功能,可以广泛地应用于医学、工业、军事等领域。此外,这个系统还可以根据用户需求来进行定制化,更好地满足不同用户的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值