APP下载

基于MATLAB GUI的红掌叶部颜色特征提取系统设计

2017-04-15张航王传奇李乃祥韩露

电脑知识与技术 2016年34期
关键词:提取

张航+王传奇+李乃祥+韩露

摘要:为实现红掌叶部颜色特征的简单、快速提取,基于MATLAB GUI设计实现了红掌叶部图像的读取、RGB各颜色分量的直方图显示、颜色特征的提取与显示,可将相关信息保存到Excel文件中,并能通过编译将设计完成的程序转化为独立的可执行文件。结果表明基于MATLAB GUI的红掌叶部颜色特征值快速提取方法有助于基于颜色特征的花卉病害识别。

关键词:MATLAB GUI;红掌叶部;颜色特征;提取

中图分类号:TP18 文獻标识码:A 文章编号:1009-3044(2016)34-0222-03

Abstract: In order to extract the color features of anthurium leaf simply and quickly, the image reading of anthurium leaf, the curve display of column diagram of each color components under RGB color model, and the reading and showing of color feature were implemented based on MATLAB GUI and the RGB information could be saved in an Excel file. The completed program was translated into independent executable file through compiling. The result indicated that the proposed method of anthurium leaf color feature extraction based on MATLAB GUI could be useful to identify flowers diseases.

Key words: MATLAB GUI; anthurium leaf; color feature; extraction

设施花卉生产中经常会出现由有害生物侵染、不良环境影响等导致的突发性、暴发性病害,使得花卉外部形态出现病变[1],给病害监测和防控带来了极大的困难。由于高档花卉产值高,利润大,对品质要求高,因害减收造成的损失极为严重。使用传统的目测方法发现病情时,通常已错过防治的有利时机,严重时会造成花卉全部腐烂。因此,有效利用机器自动识别技术,及时发现和确诊花卉病害,并予以合理地防控,已成为设施花卉生产的重要保障。

通常由病毒引起的病害会使茎叶部分退绿或全部退绿,呈现出典型的黄化、叶脉间黄化、斑驳黄化等现象[1,2]。此外,水、肥、土管理不合理导致的生理性病害也会使花卉叶片黄化,整株或局部叶片均匀退绿并进一步黄化,叶尖逐步变黑或焦边[3]。因此,可通过监测花卉叶部颜色的变化来判断花卉是否发生病变。

MATLAB软件是美国MathWorks公司出品的一款商业软件,广泛应用于算法开发、数据可视化、数值计算、图形图像处理等领域,其图形用户界面(Graphical User Interface,GUI)具有高效、方便等特征,有助于直观、便捷的人机交互界面的快速设计与实现[4,5]。结合使用MATLAB GUI,本文提出了一种红掌叶部图像特征值的提取方法,设计实现了一个红掌叶部颜色特征提取系统。

1 系统设计

以温室大棚中栽培的红掌叶部病害图像为主要研究对象,MATLAB软件为开发平台,结合使用GUI,实现红掌叶部颜色特征提取系统的设计与实现。总体设计路线如图1所示。

2 系统实现

2.1 界面设计

系统界面设计如图2所示,其中6个静态文本控件(Static Text)分别用于说明系统的名称、坐标轴对象(Axes)的名称、按钮组(Button Group)的名称;2个坐标轴对象控件分别用于显示红掌叶部原始图像、RGB颜色模型下各颜色特征的直方图;8个按钮(Push Button)分别用于实现系统各个具体功能;4个文本框(Edit Text)对象分别用于显示图像读取路径、RGB三个颜色分量的值。

2.2 读取图像

调用MATLAB提供的uigetfile函数读取图像,将其参数设置如下:选择的文件类型(FilterIndex)设置为bmp、jpg或gif等三种格式,打开对话框的标题(DialogTitle)设置为“选择图像”。读取的图像使用imshow函数将其显示在坐标轴“红掌叶部原始图像”中,图像路径显示在“读取图像”按钮右侧的文本框中。读取的图像如图3所示,主要实现代码如下:

[filename,pathname]=uigetfile({'*.bmp';'*.jpg';'*.gif'},'选择图像');

str=[pathname filename];

axes1=imread(str);

axes(handles.axes1);

imshow(axes1);

set(handles.edit1,'string',str);

2.3 颜色特征提取

使用回调函数(Callback)提取红掌叶部颜色特征值,并将其显示在文本框中。主要实现代码如下:

s=size(axes2);

R=axes2(:,:,1);

G=axes2(:,:,2);

B=axes2(:,:,3);

R=reshape(R,[s(1),s(2)]);

G=reshape(G,[s(1),s(2)]);

B=reshape(B,[s(1),s(2)]);

r=mean(mean(R));

g=mean(mean(G));

b=mean(mean(B));

set(handles.edit2,'string',num2str(r));

set(handles.edit3,'string',num2str(g));

set(handles.edit4,'string',num2str(b));

2.4 保存图像

使用MATLAB提供的uiputfile和imwrite函数来完成RGB直方图的保存,主要实现代码如下:

[filename,pathname]=uiputfile('*.jpg','Save Image','undefined image');

if filename~=0

file=[pathname,filename,'.jpg'];

px=getframe(handles.axes2);

imwrite(px.cdata,file,'jpg');

else

disp('fail');

end

2.5 保存數据

使用fprintf函数将红掌叶部图像的R、G、B颜色特征值写入Excel文件中,以保存颜色特征数据值。主要实现代码如下:

[m n c]=size(axes2);

if(c==3)

fid = fopen('rgb.xls','w');

for i=1:m

for j=1:n

fprintf(fid,'%d,%d,%d\t',axes2(i,j,1),axes2(i,j,2),axes2(i,j,3));

end

fprintf(fid,'\n');

end

fclose(fid);

end

2.6 RGB曲线图绘制

通过R、G、B颜色分量选择按钮,分别选择R、G、B颜色分量,并使用imhist函数将其显示在坐标轴“RGB曲线图”中。其结果如图4所示。

2.7 退出系统

当系统不再使用时,应关闭正在运行的程序。主要实现代码如下:

close (colorfeature_selection);

其中,colorfeature_selection为界面名称。

2.8 生成可执行文件

首先使用mbuild -setup命令设置编译器,然后使用命令mcc -m colorfeature_selection (colorfeature_selection为m文件名)进行编译,以将设计完成的红掌叶部颜色特征提取系统编译成可执行文件。

3 结论

本文以MATLAB软件为开发工具,结合使用GUI,并充分利用其方便、高效等特征,设计实现了一个红掌叶部颜色特征提取系统,有利于基于颜色特征的花卉病害识别。

参考文献:

[1] 李莉,方平. 花卉病害的识别与防治[J]. 吉林农业,2003(2): 21.

[2] 王玉霞,孙淑凤,葛艳杰. 花卉常见病害及防治[J]. 吉林蔬菜,2010(2):78-79.

[3] 赵如龙. 室内花卉常见病害的识别与防治[J]. 中国林副特产,2015(4):71-72.

[4] Choiy J,Mccarthy K L, Mccarthy M J. A MATLAB graphical user interface program for tomographic viscometer data processing [J]. Computers and Electronics in Agriculture, 2005, 47(1): 59-67.

[5] 陈杰.MATLAB宝典[M].北京:电子工业出版社,2010.

猜你喜欢

提取
现场勘查中物证的提取及应用
浅析城市老街巷景观本土设计元素的提取与置换