糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 基于MATLAB-GUI数字图像的水果边缘检测

基于MATLAB-GUI数字图像的水果边缘检测

时间:2019-10-14 14:16:01

相关推荐

基于MATLAB-GUI数字图像的水果边缘检测

基于MATLAB数字图像的水果边缘检测

1绪论

1.1课题研究的背景

我国水果品种繁多,资源丰富。作为一项新兴产业,在农业和农村经济发展中的地位已经十分重要,在很多地区己成为农村经济的支柱产业。纵观 世界水果园科技的发展, 二十一世纪我国的水果园也将从传统作业转化到以现代科学技术为基础的现代“集约持续水果园”上来。水果园的发展将全面地体现生产、经济、技术、社会和生态的可持续性。在水果分级方面,我国相继引进和开发了按大小和重量分级的分级 设备,近几年国内也出现了基于机器视觉技术的水果分级设备。但是,进口设备价格昂 贵,一般水果生产企业难以负担。而国产设备由于技术投入不够,与国外先进设备差距 比较大。

但是,进口设备价格昂贵,一般水果生产企业难以负担。而国产设备由于技术投入不够,与国外先进设备差距 比较大。随着机器视觉技术的发展,国外也出现了将机器视觉运用在水果分级系统上的 相关研究,使得国外的水果分级分类系统的性能进一步提高,同时也进一步拉大了我国在水果生产自动化的技术差距。由于我国的现状,如果不在水果产后处理上下功夫,我国的水果出口形势还会非常严峻,这就要求国内的研究者在水果分级技术进一步钻研,使我国的分级技术再上一个新台阶。将机器视觉(也称计算机视觉,图像处理) 技术引入水果园自动化,是解决该问题的有效途径之一。同时,基于机器视觉的水果自动化系统在水果流通过程也可提高自动化程度、降低劳动强度、增加收益提供快速、准确的检测手段。

1.2选题的目的和意义

上世纪 80年代后期,由于计算机广泛生产,计算技术也广泛发展,针对于计算机 视觉在各个领域的的研究成果也日新月异。 国外的很多学者在基于计算机视觉技术而提 高水果的分级速度方面进行了研究,在理论和应用上有了较大进展,并取得了很好的经 济效益。而我国的水果自动识别技术研究则较晚,仅始于 90年代,而且当时从事水果 自动分级系统研究的科研院还很少,研究成果也不是很显著,但那却为我国在水果分级 方面的研究奠定了基础。

按大小分类是水果识别的一个重要指标。 应义斌研究了利用机器视觉技术精确检测 水果尺寸方法 技术精确检测 水果尺寸方法针对水果的外形特征, 应用水果的最小外接矩形 (MER)的尺寸表示横径和纵径,取得了较为理想的结果 用傅立叶半径描述的 方法测量水果的大小,以水果的自然对称形态特征为依据,水果大小检 测绝对测量误差最大为3mm。

水果形状是水果品质检测与分级的一个重要指标,利用图像形 态学方法测量水果的形状,准确率很高,最高能达到 91.4%[6]。提出主要 通过半径这个指标,利用人工神经网络对水果的形状进行识别和分级 采用傅立叶变换与傅立叶反变换对来描述水果的形状 [8]。颜色也是水果检测的重要指标。 通过对不同颜色等级颜色也是水果检测的重要指标。 通过对不同颜色等级的水果进行分析, 进而对水果进行分级 [9]。通过机器视觉自动检测水果表面着色度,获取 彩色图像,并将 RGB 值转换成 HSI 值,用合适色相值累计着色面积百分比进行颜色分 级 [10]。确定了水果颜色特征的提取方法,利用遗传算法实现了多层前向 神经网络识别器的学习设计 [11]。

在国外,机器视觉是 70年代开始兴起的,它主要应用于卫星遥感和医学方面。它 不仅是人眼的延伸, 而且具有人脑的部分智能识别功能 , 具有速度快、 信息量大、 功能多、 检测精度和效率高等优点。 随着计算机、 控制理论、 模式识别、 人工智能等技术的发展, 机器视觉已广泛应用于军事技术、 科学研究、 医疗卫生、 工农业生产、

科学研究、 医疗卫生、 工农业生产、 信息技术等领域。 国外在利用机器视觉技术进行水果分类和计数已经取得较大的进展, 国内尚处于探索阶 段。目前,国外已研制出了商用水果自动化系统,并在生产上得到了应用。

1.3课题主要研究内容

(1)本文首先介绍了课题的研究背景及意义,对国内的水果识别方面的研究应用 现状进行了讨论,用苹果作为参考物进行研究,并重点对国内外水果分级技术研究现状进行了分析。

(2)介绍了一些机器视觉领域基础的方法, 提出了针对特定颜色的图像灰度化方法。

(3)讨论了水果图像的预处理过程:小波去噪、中值滤波以及水果边界提取。利用 小波去噪和中值滤波相结

(4)讨论了水果图像的背景分割,针对水果识别生产线的实际情况,对几种不同的 微分梯度算子进行边缘检测实验并对结果进行了对比分析。

(5)基于形态学的腐蚀与重构最大化地从背景中分离出目标区域。

(6)通过改进的分水岭算法分割图像并计数。

运行环境主要介绍了硬件环境和软件环境。

(1) 硬件环境

① 处理器:英特尔至强 E3

② 内存:8G

③ 硬盘空间:1TB

④ 显卡:英伟达 GTX770

操作系统:Window 98/ME/2000/XP/win7/win8/win8.1

开发环境主要介绍了本系统采用的操作系统、开发语言。

(1) 操作系统:Windows 8.1

(2) 开发语言:C

(3) 开发环境:MATLAB

2数字图像边缘检测关于边缘的定义

边缘是不同区域的分界线,是图像局部强度变化最显著的那些像素的集合。图像强度的显著变化可分为:

(1)阶跃变化(函数),即图像强度在不连续处的两边的像素灰度值有着显著差异;

(2)线条(屋顶)变化(函数),即图像强度突然从一个值变化到另一个值,保持一较小行程后又回到原来的值。

边缘主要存在于目标与目标、目标与背景、区域与区域(包括不同色彩)之间,边缘是位于两个区域的边界线上的连续像素集合,在边缘处,灰度和结构等信息产生突变。边缘是一个区域的结束,也是另一个区域的开始,利用该特征可以分割图像。

图像的边缘有方向和幅度两个属性,沿边缘方向像素变化平缓,垂直于边缘方向像素变化剧烈。边缘上的这种变化可以用微分算子检测出来,通常用一阶或二阶导数来检测边缘。

2.1基于一阶微分的边缘检测算子

图像的局部边缘定义为两个强度明显不同的区域之间的过渡,图像的梯度函数即图像灰度变化的速率将在这些过度边界上存在最大值,通过基于梯度算子或导数检测器来估计图像灰度变化的梯度方向,增加图像的这些变化区域,然后对该梯度进行阈值运算,如果梯度值大于某个给定门限,则存在边缘。再将被确定为边缘的像素连接起来,以形成包围着区域的封闭曲线。

一阶导数可以用于检测图像中的一个点是否在斜坡上,二阶导数的符号可以用于判断一个边缘点是在边缘亮的一边还是暗的一边。

两种常见的边缘一阶导数和二阶导数示意图[5]:

(a) (b)

图2.1 (a)阶跃函数,(b)线条(屋顶)函数(第一行为理论曲线,第二行为实际曲线,第三行对应一阶导数,第四行对应二阶导数)

一阶导数的二维等效式:

(2-1)

梯度的幅值:

(2-2)

方向:

(2-3)

梯度是灰度

坐标方向上的导数,表示灰度

坐标方向上的变化率。

用差分来近似梯度

(2-4)

(2-5)

2.2 Sobel算子

Sobel提出了一种将方差运算与局部平均相结合的方法,Sobel算子也是此设计所主要用到的算子,对以下的图像处理有着关键的意义。对于Sobel算子,该算子在以

为中心的领域上计算

方向的偏导数[6]。

即:

(2-7)

(2-8)

上式应用了

领域的图像强度的加权平均差值。

用模板实现:

2.3 Roberts算子(梯度交叉算子)

Roberts算子是一种利用局部差分算子寻找边缘的算子[5]。

(2-6)

用模板实现:

2.4 Prewitt算子

Prewitt提出的类似于Sobel的计算偏微分估计值的方法[7]

(2-9)

(2-10)

用模板实现:

图2.4 Prewitt算子的

模板

2.5 Canny算子

Canny边缘检测利用高斯函数的一阶微分,在噪声抑制和边缘检测之间寻求较好的平衡,其表达式近似于高斯函数的一阶导数。

Canny算子是一阶算子。其方法的实质是用1个准高斯函数作平滑运算fs=f(x,y)×G(x,y),然后以带方向的一阶微分算子定位导数最大值。

在这个2×2正方形内求有限差分的均值,便于在图像中的同一点计算x和y的偏导数梯度。

在这个2×2正方形内求有限差分的均值,便于在图像中的同一点计算x和y的偏导数梯度。幅值和方向角可用直角坐标到极坐标的坐标转化来计算:

M[i,j]反映了图像的边缘强度;∂ [i,j]反映了边缘的方向。使得M[i,j]取得局部最大值的方向角∂ [i,j],就反映了边缘的方向。Canny算子也可用高斯函数的梯度来近似,在理论上很接近4个指数函数的线性组合形成的最佳边缘算子。在实际工作应用中编程较为复杂且运算较慢。Canny边缘检测算子对受加性噪声影响的边缘检测是最优的

2.6 基于二阶微分的边缘检测算子

一阶微分是一种矢量,不但有其大小还有方向,和标量相比,它数据存储量大。另外,在具有相等斜率的宽区域上,有可能将全部区域都当做边缘提取出来。因此,有必要求出斜率的变化率,即对图像函数进行二阶微分运算。

图像强度的二阶导数的零交叉点就是找到的边缘点[7],如图2.5所示:

图2.5 图像函数的二阶微分

2.7 Laplacian算子

Laplacian算子[8]利用二阶导数信息,具有各向同性,即与坐标轴方向无关,坐标轴旋转后梯度结果不变。使得图像经过二阶微分后,在边缘处产生一个陡峭的零交叉点,根据这个对零交叉点判断边缘。拉普拉斯算子是二阶导数的二维等效式:

(2-11)

上式应用Laplacian算子提取边缘的形式,及二阶偏导数的和,是一个标量,其离散计算形式定义为:

(2-12)

这一近似式是以点

为中心的,用

替换

,则

(2-13)

同理:

(2-14)

对于一个

的区域,经验上被推荐最多的形式,算子表示为:

(2-15)

2.8 LOG算子

由于梯度算子和拉普拉斯算子都对噪声十分敏感,因而在检测前必须滤除噪声。Marr和Hildreth将高斯滤波和拉普拉斯边缘检测结合在一起,形成LOG(Laplacian-Gauss)算法。LOG边缘检测的基本特征[9]为:

(1)平滑滤波器是高斯滤波器;

(2)增强步骤采用二阶导数(二维拉普拉斯函数);

(3)边缘检测判据是二阶导数零交叉点并对应一阶导数的较大峰值;

(4)使用线性内插方法在子像素分辨率水平上估计边缘的位置。

该算子首先用高斯函数对图像作平滑滤波处理,然后才使用Laplacian算子检测边缘,因此克服了Laplacian算子抗噪声能力比较差的缺点,但是在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法被检测到。

在实际应用中,常用的LOG算子是

的模板:

图2.6 LOG算子的

的模板

该算法的主要思路和步骤如下:

(1)滤波:首先对图像进行平滑滤波,其滤波函数根据人类视觉特性选为高斯函数,即

(2-16)

其中,

是一个圆对称函数,其平滑的作用是可通过来控制的。将图像与进行卷积,可以得到一个平滑的图像,即

(2-17)

(2)增强:对平滑图像进行拉普拉斯运算,即

(2-18)

(3)检测:边缘检测判据是二阶导数的零交叉点(即

的点)并对应一阶导数的较大峰值。

由于对平滑图像进行拉普拉斯运算可等效为的拉普拉斯运算与的卷积,故上式变为:

(2-19)

式中称为LOG滤波器,其可写为:

(2-20)

3编辑与调试

3.1EDGE函数

在MATLAB图像处理工具箱中提供了专门的边缘检测edge函数,由edge函数可以实现各算子对边缘的检测,其调用格式详细见附录:

其中,I是输入图像。edge函数对灰度图像I进行边缘检测,返回与I同样大的二值图像BW;其中1表示边缘,表示非边缘。I可以是uint8型、uint16型或double型;BW是uint8型。 method是表示选用的方法(算子)类型,可以选择的method有Sobel、Prewitt、Roberts、Log、Canny等。可选的参数有thresh(阈值)、sigma(方差)和direction(方向)

3.2边缘检测的编程实现

利用edge函数,分别采用Sobel、Roberts、Prewitt、Log、Canny 5种不同的边缘检测算子编程实现对苹果原始图像进行边缘提取,MATLAB调用edge函数实现各算子进行边缘检测程序程序代码详见附录。

检测效果如图所示,从图中可以看出,在采用一阶微分进行边缘检测时,除了微分算子对边缘检测结果有影响外,阈值选择也对检测有重要影响。比较几种边缘检测结果,可以看到Canny算子提取边缘较完整,其边缘连续性较好,效果优于其它算子。其次是Prewitt算子,其边缘比较完整。再次就是Sobel算子。

3.3 图像几何操作

图像几何操作包括大小调整 、旋转调整 、剪切缩放和还原返回功能大小调整选项可以调整图像的大小 ,在调整倍数方框里可以指定调整的倍数 , 如在调整倍数方框里填入 2, 则可以放大图像到原来的 2倍 。 旋转调整选项可以调整图像的角度 , 在旋转角度方框里可以指定旋转的角度 , 如在旋转角度方框里写入 45, 则可以顺时针旋转 45°,剪切选项可以剪切图像的任意一部分 , 当按了“剪切”按钮以后,可以用鼠标在图像上拖出一个矩形区域 , 松开鼠标后就剪切到了图像的该区域 。 缩放选项可以任意缩放图像 , 按了“ 缩放 ” 按钮后 , 鼠标会变成放大 镜的形状 , 在图像上点击即可缩放图像 。

3.4灰度处理

灰度处理。灰度处理的界面如图4所示。灰度处理就是把一副彩色图像变成一副黑白图像,如打开一副图像,再按“彩色转灰色”按钮 ,则可以把一副彩色图像变成一幅灰白图像“保存灰度图”选项可以保存灰度图。“直方图”选项就是显示一副灰度图的直方图。灰度调整选项:灰度调整就是对灰度图进行分段的线性变换,

其可以有选择地拉伸某段灰度区域,改善输出图像,用户可以通过“比例调整” 的滑块对灰度值范围进行线性调整,通过选择“增强”或“减弱”来确定灰度上限或下限,以此来对灰度图像进行对比增强或减弱处理。通过对gama

调整选项 :灰度调整就是对灰度图进行分段的线性变换。

结 论

这就是基于MATLAB的水果图像识别的算法全过程,图像经过选择性的灰度提取,边缘检测,降噪和滤波等预处理,通过基于形态学的图像开闭与重建操作实现了图像中每个水果个体的最大分离为之后的前景背景对象的标记起到铺垫,最后通过分水岭图像分割算法得到最优的图形分割最终完成了图像中水果个数的统计。

算法虽然以水果的图像作为特例分析,但是该算法充分利用了MATLAB平台所提供 的函数的便捷性和可扩展性,对于大部分球状水果都可以通过修改灰度化特征提取的特 征参数来锁定所要分析水果的颜色特征,通过修改该小波去噪和中值滤波的参数来优化 特定硬件环境下的图像预处理算法,通过修改基于形态学的图像开

闭操作的se参数来实现对不同大小和不同形状特征的水果的个体分离。是由于该算法设计时间有限,因此有许多考虑不周的地方。本课题方法可以扩展图像识别的应用领域,并且为水果识别提供一个可靠的辅助,省去繁琐的人工采样和识别,提高劳动效率。将来通过算法的优化和改进,提高精度获取更多的水果信息,能够更好的满足水果流通的需求。

参考文献

[1] 陈宇云. 灰度图像的边缘检测研究[D]. 电子科技大学硕士学位论文. [2] 朱虹. 数字图像处理基础[M]. 北京: 科学出版社. .4:217-220

[3] 余成波. 数字图像处理及MATLAB实现[M]. 重庆: 重庆大学出版社. .7:356-359

[4] 陈书海,傅录祥. 实用数字图像处理[M].北京: 科学出版社. :280-290 [5] 张晶. 图像边缘检测算法的研究[D]. 山东大学硕士学位论文.

[6] 韩磊 .MATLAB在数字图象处理中的应用[J]. 电脑知识与技术. ,1(1):29-31

[7] 卢洋,张旭秀.图像边缘检测算法的对比分析与研究[J]. 太原科技. ,(3):17-18

[8] 熊秋菊,杨慕生. 图像处理中边缘检测算法的对比研究[J]. 机械工程与自动化. ,(2)21-23

[9] 尹建媛. 图像处理中边缘检测算法的研究[J]. 科技信息. ,(4):30-32 [10] 李雪. 灰度图像边缘检测算法的性能评价[D]. 沈阳工业大学硕士论文 .

[11] 范立南, 韩晓微, 王忠石等. 基于多结构元的噪声污染灰度图像边缘检测研究[J]. 武汉大学学报(工学版), ,49(3):45-49

[12] XU Xian-ling,LIN Yi-shui.Application of MatLab in Dingital Image Processing[J]. MODERN COMPUTER. ,(5):35-37

[13] LV Yu-qin,ZENG Guang-yu.Detection Algorithm of Picture Edge[J]. TAIYUAN SCIENCE & TECHNOLOGY. ,(2):24-25

参考GUI界面代码

edge函数调用格式:BW=edge(I,’method’)BW=edge(I,’method’,thresh)Bw=edge(I,’method’,thresh,direction)[BW,thresh]=edge(I,’method’,…)缘检测程序程序代码:function varargout = apple(varargin)% APPLE M-file for apple.fig%APPLE, by itself, creates a new APPLE or raises the existing%singleton*.%%H = APPLE returns the handle to a new APPLE or the handle to%the existing singleton*.%%APPLE('CALLBACK',hObject,eventData,handles,...) calls the local%function named CALLBACK in APPLE.M with the given input arguments.%%APPLE('Property','Value',...) creates a new APPLE or raises the%existing singleton*. Starting from the left, property value pairs are%applied to the GUI before apple_OpeningFunction gets called. An%unrecognized property name or invalid value makes property application%stop. All inputs are passed to apple_OpeningFcn via varargin.%%*See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one%instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Copyright 2002- The MathWorks, Inc.% Edit the above text to modify the response to help apple% Last Modified by GUIDE v2.5 22-Apr- 13:52:17% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @apple_OpeningFcn, ...'gui_OutputFcn', @apple_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before apple is made visible.function apple_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to apple (see VARARGIN)% Choose default command line output for applehandles.output = hObject% Update handles structureguidata(hObject, handles);% UIWAIT makes apple wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = apple_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --------------------------------------------------------------------function duqutuxiang_Callback(hObject, eventdata, handles)% hObject handle to duqutuxiang (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global im; [filename,pathname]=...uigetfile({'*.*';'*.bmp';'*.tif';'*.png'},'select picture'); str=[pathname filename];im=imread(str); %axes(handles.axes1); imshow(im);% --------------------------------------------------------------------function tuichu_Callback(hObject, eventdata, handles)% hObject handle to tuichu (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)clc;clear all;close(gcf);% --------------------------------------------------------------------function huiduhua_Callback(hObject, eventdata, handles)% hObject handle to huiduhua (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global im;global a2;a2=rgb2gray(im);axes(handles.axes2); imshow(a2);figure;imhist(a2);% --------------------------------------------------------------------function zhifangtujunhenghua_Callback(hObject, eventdata, handles)% hObject handle to zhifangtujunhenghua (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global a2;global a4;a4=histeq(a2);axes(handles.axes3); imshow(a4);figure;imhist(a4);% --------------------------------------------------------------------function zhongzhilvbo_Callback(hObject, eventdata, handles)% hObject handle to zhongzhilvbo (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)global a4;global k1;k6=medfilt2(a4,[3,3]);k5=medfilt2(k6,[3,3]);k4=medfilt2(k5,[3,3]);k3=medfilt2(k4,[3,3]);k2=medfilt2(k3,[3,3]);k1=medfilt2(k2,[3,3]);axes(handles.axes4); imshow(k1);% --------------------------------------------------------------------function wenjian_Callback(hObject, eventdata, handles)% hObject handle to wenjian (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)

如果觉得《基于MATLAB-GUI数字图像的水果边缘检测》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。