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

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

摘要:基于数字信号处理原理,在数字滤波器设计理论和Matlab 编程技术及其GUI 图形用户界面设计的基础上,开发了具有交互式特点的数字图像处理GUI软件,界面操作简单方便。

MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算。

MATLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言的语法特征与C语言极为相似,而且更加简单、更加符合科技人员对数学表达式的书写格式,而且可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。

关键词:MATLAB GUI;数字图像处理;图形用户界面

1 MATLAB的图像处理工具概述

MATLAB提供了多种图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,图像处理工具箱函数有噪和退化图像的恢复、图形绘制、图形的代数与逻辑运算、图形几何变换、图像增强、图像复原、二值分析、小波分析和分形几何。在工程实际应用中灰度与二值图像的形态学运算;结构元素创建与处理;基于边缘的处理;色彩映射表操作;色彩空间变换;图像类型与类型转换;以及图形用户界面设计等。

2应用matlab工具箱进行图像分析处理

应用matlab的Gui文件对图片进行灰度处理,亮度处理,放大处理,翻转处理,噪声处理,图像二值化,图像直方图、频谱图,滤波器,图像腐蚀,创建索引图像,RGB转HSV,RGB转NTSC,RGB转YCBCR和图像通道处理。

图1 是GUI的最终设计界面,图2是工作时界面。


v2-bfe9541b2ec8bb6da8c7d2c3cb5d11ab_b.jpg


图1


v2-a7561dddd14b755c857aca605639d8d8_b.jpg


图2

2.1图形处理方法介绍及其处理结果

图3是原图像,以下是实现的源程序及相关功能的部分注解:

global im; %定义全局变量

[name,path]=uigetfile({'*.jpg';'*.gif';'*.bmp'},'载入图像');

if isequal(name,0)|isequal(path,0)

errordlg('没有选中文件','出错');

return;

else

x=imread([path,name]);%读取图片

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

imshow(x);%显示图片

handles.img=x;

end


v2-3d65d977f4204531627eed5f42ecdc88_b.jpg


图3

图4为图像处理方法按钮:



v2-b4acb6c38ee3bac5e8e9e43a0d2f19bf_b.jpg


图4

2.2程序调试

  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,执行该操作的结果如图5:



v2-8539905efd77e58ea1a8ea36956013c7_b.jpg


图 5

如果原图本身已经是灰度图像了,执行该操作弹出如下图所示的提示对话框


v2-faa0031e3e0d019e1b40061a9e7ca741_b.jpg


  1. 亮度处理

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

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

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

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


v2-f431ae27861f2713ac56c242cd2b8765_b.jpg


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

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

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

执行该操作,结果如下图:


v2-4359954e0ba7abbbfd7790bd76b7ccb6_b.jpg


图 6

  1. 翻转


上下翻转程序:axes(handles.axes2);

x=(handles.img);

if isrgb(handles.img)

for k=1:3

y(:,:,k)=flipud(x(:,:,k));%上下翻转函数

end

imshow(y);

else

x=(handles.img);

y=flipud(x);

imshow(y);

end

左右翻转程序:axes(handles.axes2);

if isrgb(handles.img)

x=(handles.img);

for k=1:3

y(:,:,k)=fliplr(x(:,:,k));%左右翻转函数

end

imshow(y);

else

x=(handles.img);

y=fliplr(x);

imshow(y);

end

任意角度翻转程序:axes(handles.axes2);

prompt={'输入参数1:'};

defans={'30'};

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

p1=str2num(p{1});

y=imrotate(handles.img,p1);

imshow(y);




v2-705c215a40ac88932c6318882cdf013b_b.jpg


图 7 上下翻转



v2-944fbaa354edecfdda1202e2e4f875e2_b.jpg


图 8 左右翻转


v2-4abf68a28dcfe8f6c020a39382080519_b.jpg



v2-0ddf22552ad086cf5ad14b1f25287e29_b.jpg


图 9任意角度翻转

  1. 噪声处理


高斯噪声程序:axes(handles.axes2);

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

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

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

p1=str2num(p{1});

p2=str2num(p{2}); y=imnoise(handles.img,'gaussian',p1,p2);

imshow(y);

handles.noise_img=y;

guidata(hObject,handles);

椒盐噪声程序:prompt={'输入参数1:'}; %对话框的设置,用户输入的是字符串

imshow(y);

handles.noise_img=y;

guidata(hObject,handles);



v2-01fe6075a71ecc2188a837a83e8bcf62_b.jpg


图10 高斯噪声


v2-6fc384b94fbf0c4df9ec37bad38df153_b.jpg


图11 椒盐噪声

  1. 直方图处理


R直方图程序:set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

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

x1=x(1:10:256);

horz=1:10:256;

bar(horz,x1);

set(handles.axes2,'xtick',0:50:255);

G直方图程序:set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

B直方图程序:set(handles.axes2,'HandleVisibility','ON');

axes(handles.axes2);

if isrgb(handles.img)

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

x1=x(1:10:256);

horz=1:10:256;

bar(horz,x1);

%axis([0 255 0 150000]);

set(handles.axes2,'xtick',0:50:255);

%set(handles.axes2,'ytick',0:2000:15000);

else

msgbox('这是灰度图像','旋转失败');

end





v2-ebebea8ddd4058e49871eeeb3871ef80_b.jpg


图12 R直方图


v2-5301a7fed5eeb007264e02fa4475e67d_b.jpg


图13 G直方图


v2-1331d687a7d093777e4858830f076593_b.jpg


图14 B直方图

  1. 二值图像


二值图像程序:axes(handles.axes2);

x=(handles.img);

if isrgb(x)

msgbox('这是彩色图像,不能转换为二值图像','转换失败');

else

j=im2bw(x);

imshow(j);

end




v2-04b8b893eb04c0e097f92876d5d3dfd0_b.jpg


图15 彩图不可二值化


v2-072b7cc44713e2f0d1ba985f120fa085_b.jpg


图16 二值化图像

  1. 图像腐蚀


程序:axes(handles.axes2);

x=(handles.img);

if isrgb(x)

msgbox('这是彩色图像,不能进行图像腐蚀','失败');

else

j=im2bw(x);

se=eye(5);

bw=bwmorph(j,'erode');

imshow(bw);

end



v2-5c9ca20b8463f280bb8b1b1d25671599_b.jpg


图17 图像腐蚀

  1. 创建索引图像


程序:axes(handles.axes2);

x=(handles.img);

if isrgb(x)

msgbox('这是彩色图像,不能创建索引图像','创建失败');

else

y=grayslice(x,16);

axes(handles.axes2);

imshow(y,jet(16));

end



v2-51a25650db87add147377a57b270d7d5_b.jpg



v2-1a415fd5757245795b7d1a81d1d6dc39_b.jpg


图18 索引图像

  1. RGB转HSV、NTSC、YCBCR


RGB转HSV程序:axes(handles.axes2);

x=(handles.img);

if isrgb(x)

HSV=rgb2hsv(x);

imshow(HSV);

else

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

end

RGB转NTSC程序:axes(handles.axes2);

x=(handles.img);

if isrgb(x)

ntsc=rgb2ntsc(x);

imshow(ntsc);

else

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

end

RGB转YCBCR程序:axes(handles.axes2);

x=(handles.img);


v2-9fdd3edb71e7369812b0de5fa8261f2f_b.jpg


图19 RGB转HSV图像


v2-346ff4572347ba1e4a8d6484d7523175_b.jpg


图20 RGB转NTSC图像


v2-9595b54127f7fc2f99e9d7e06e94cec1_b.jpg


图21 RGB转YCBCR程序

3 结论

在理工科的专业应用背景下,用matlab 进行相关计算与仿真编程的优势非常突出。特定的问题处理算法,我们通常都以M文件的文本形式给定最终的解决方案,自己设计的程序是在MATLAB环境下,用MATLAB语言编写的,这对于有安装MATLAB软件的计算机上运行并不存在什么问题,关键是一般的计算机很少有去安装MATLAB软件的,那么要在这些机子上运行该程序要怎么办呢,难道要先安装MATLAB软件,这显然太麻烦了,对于一个通用的,比较成熟的解决方案,我们当然期望它能应用到更多的场合,而.exe (可执行)文件可运行于所有的通用WINDOWS操作系统,为此,将M文件转换成.exe文件倒是个不错的想法。

  • 4
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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数字图像处理系统具有很多不同的功能,可以广泛地应用于医学、工业、军事等领域。此外,这个系统还可以根据用户需求来进行定制化,更好地满足不同用户的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值