摘要:本作品旨在研究和实现基于MATLAB软件的冰箱水果保鲜识别系统,针对多种常见水果混合的图像进行处理和识别。首先,根据水果与背景的差异选择合适的阈值,对图像进行去噪和对比度增强,然后进行二值化处理。接下来,对图像进行边缘检测,选定连通区域,并对这些区域进行标记。在此基础上,通过快速提取水果的颜色、形状和大小等特征,进行准确的水果识别。最终,该系统能够实现对不同种类水果的正确分拣,提高水果保鲜管理的效率。

关键词:MATLAB,水果识别,图像处理,二值化,边缘检测,特征提取,自动分拣,冰箱保鲜系统

基于MATLAB的冰箱水果保鲜识别系统_开发语言

图 1 冰箱水果保鲜识别系统运行结果图

  1. 功能模块

这个基于MATLAB的冰箱水果保鲜识别系统区别于常用的冰箱,系统将增加三个功能如下:图像识别、食谱搜索、时间记录。

图像识别:1、将彩色图像二值化或直接使用灰度图像,对食物图片进行识别,记录食物个数。2、通过识别灰度图像食物中的阴影区域,区分食物的好坏,并提醒显示。3、食物包含水果的识别(苹果、香蕉、梨等)。

食谱搜索:通过先把食谱内容存入MATLAB中,然后搜索关键字读取食谱内容。

时间记录:1、记录当前放入食物的日期和时间,并保存到数据库中。2、随着食物存放时间的增加,更新存放的记录时长。

界面形式:界面直接通过MATLAB软件GUI界面运行显示并进行相关操作。

最终效果:运行程序后,通过插入食物图片模拟将食物放入冰箱的过程,插入成功后会记录并保存当前日期,时间和食物个数,随着时间的变化,记录时长也会更新。通过图像识别区分食物的好坏,并提醒显示。另外,还可以通过搜索关键字查找到已存的相关食物的食谱的内容。

研究方法:此系统将使用MATLAB进行程序编写。采用GUI设计,进行图像处理。数据使用MySQL数据库进行存储读取。

基于MATLAB的冰箱水果保鲜识别系统_matlab_02

图2 基于MATLAB的冰箱水果保鲜识别系统框图

  1. 设计方案

在计算机中,图像由像素逐点描述,每个像素点都有一个明确的位置和色彩数值。使用Matlab软件读取图像,以矩阵形式存放图像数据,其扫描规则是从左向右,从上到下。

对于一副水果图像为了处理方便,我们首先要把彩色图像转化为灰度图像。然后对图像进行二值化处理来获得每个水果的区域特征。

在水果与背景接触处二值化会导致图像边缘部分有断裂,毛躁的部分。所以采用边缘提取以弥补断裂的边缘部分,然后基于数学形态算子对图像进行去除断边,图像填充等必要的后续处理。经过图像分割后,水果和背景很明显地被区分开来,然后需要对每种水果的特征进行提取。

先对图像进行标签化,所谓图像的标签化是指对图像中互相连通的所有像素赋予同样的标号。经过标签化处理就能把各个连通区域进行分离,从而可以研究它们的特征。

  1. 关键技术

图像二值化

1、灰度化

% 将真彩色图像 i 转化为灰度图像 I

I=rgb2gray(i);

在 RGB 模型中,如果 R=G=B 时,则彩色表示一种灰度颜色,其中 R=G=B 的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。

2、二值化

% level 为阈(yu) 值,取值从0到1.

% 本项目考虑到图片背景颜色为白色,亮度较大,因此选取 `level=0.9` 来实现二值化。

I=im2bw(i,level)

一幅图像包含目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最经常使用的方法就是设定一个全局的阈值 T,用 T 将图像的数据分成两部分:大于 T 的像素群和小于 T 的像素群。将大于 T 的像素群的像素值设定为白色(或者黑色),小于 T 的像素群的像素值设定为黑色(或者白色)。

比方:计算每个像素的(R+G+B)/3,假设>127,则设置该像素为白色,即R=G=B=255;否则设置为黑色,即R=G=B=0。

(二)边缘提取

1、开运算

I=imopen(i,SE);

先腐蚀后膨胀的过程称为开运算。(看上去把细微连在一起的两块目标分开了)

开运算作用:可以使边界平滑,消除细小的尖刺,断开窄小的连接,保持面积大小不变等。

I=imerode(i,SE);

腐蚀运算作用:消除物体边界点,使边界点向内部收缩,可以把小于结构元素的物体去除。

膨胀的作用:将与物体接触的所有背景点合并到物体中,是目标增大,可填补目标中的空洞。

2、数学形态学运算

% bwmorph 函数是对图像进行指定的形态学操作。

% ‘remove’即代表如果一个像素点的4邻域都为1, 则该像素点将被置0;该选项将导致边界像素上的1被保留下来。

I=bwmorph(i,'remove');

提取图像种水果的边界用于标记各个区域

(三)水果分类

1、获得连通区域的属性

这里要用到了在 Matlab 图像处理工具箱中非常重要的一个图像分析函数:regionprops.

顾名思义:它的用途是 get the properties of region ,即用来度量图像区域属性的函数.

STATS =regionprops(L,properties)

描述测量标注矩阵L中每一个标注区域的一系列属性.L中不同的正整数元素对应不同的区域,例如:L中等于整数1的元素对应区域1;L中等于整数2的元素对应区域2;以此类推.

此函数用来获取每个水果的中心位置,及其外接椭圆的长,短轴长度。中心位置用来计算水果的颜色特征值及最终显示水果名称。外接椭圆的长,短轴长度用来计算水果的似圆性特征,以判断其大致形状。

2、获取特征并判别函数

本项目根据水果在图像中表现出来的特点,从面积特征,似圆性特征,颜色(rgb值和hsv值)特征对图像中的桃子、苹果、香蕉 、西瓜、菠萝、梨子等进行特征提取。最后按照筛选出来的特征对水果进行分类识别。

(1)颜色特征

本项目使用两种计量方式来测得水果的颜色值。

  • RGB颜色模式:

对于彩色图像,可分解为 RGB 三幅单色图像。每一副图像中的像素分布情况都代表了改颜色的程度信息。根据常识可知上述6种水果中苹果和桃子的红色含量要比其他水果丰富的多,西瓜的红色含量最小。

  • Hsv颜色模式:

这个模型中颜色的参数分别是:色彩(H),纯度(S),明度(V)。 HSV模型的三维表示从RGB立方体演化而来。设想从RGB沿立方体对角线的白色顶点向黑色顶点观察,就可以看到立方体的六边形外形。六边形边界表示色彩,水平轴表示纯度,明度沿垂直轴测量。

  • H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,红、绿、蓝分别相隔120度。互补色分别相差180度。纯度S为一比例值,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率。S=0时,只有灰度。V表示色彩的明亮程度,范围从0到1。有一点要注意:它和光强度之间并没有直接的联系。

(2)似圆性特征

似圆性是在计算出每块连通区域的外接椭圆的短轴长度和长轴长度,来测量水果形状的似圆性。我们用长轴长度除以短轴长度得到一个比例。这个值与1越接近,说明水果与圆越相似。同理,该值越比1大,说明水果越不像圆。根据常识可知,上述6个水果中西瓜,苹果,桃子似圆性很高,而香蕉,菠萝似圆性最低。

(3)面积特征

经过标签化的不同区域的面积,可以用该区域像素数量来计算。对整幅图像进行扫描,计算所有连通区域的面积。根据常识可知:西瓜在上述6个水果中面积是最大的一个,菠萝其次。

特征统计表格

基于MATLAB的冰箱水果保鲜识别系统_matlab_03

基于MATLAB的冰箱水果保鲜识别系统_matlab_04

基于MATLAB的冰箱水果保鲜识别系统_matlab_05

原始图像1

梨子

苹果

桃子

香蕉

菠萝

r

0.94

0.80

0.72

1.04

0.55

g

0.81

0.17

0.19

0.85

0.56

b

0.28

0.06

0.13

0.53

0.47

Hsv均值

0.11

0.2

0.5

0.16

0.26

面积

2671

2224

1936

3604

3361

似圆性

1.6

1.1

1.07

1.78

1.55

香蕉

桃子

梨子

西瓜

苹果

r

1.03

1.01

0.9

0.29

1.01

g

0.95

0.99

0.73

0.38

0.99

b

0.20

1.0

0.35

0.22

1.00

Hsv值

0.14

0.25

0.11

0.29

0.89

面积

2191

1572

1387

2914

1443

似圆性

2.2

1.0

1.6

1.0

1.03

苹果

桃子

西瓜

香蕉

梨子

r

0.86

1.07

0.20

0.92

1.02

g

0.19

1.06

0.53

0.31

1.00

b

0.22

1.06

0.30

0.26

0.95

Hsv值

0.63

0.26

0.39

0.12

0.108

面积

1190

1660

2328

1894

1082

似圆性

1.12

1.06

1.13

2.16

1.6921

4、特征选择及最终结果图

  • 梨子:梨子的hsv值是最小的,且因为梨子有柄的关系,梨子的似圆性在1.4至1.6之间,梨子的r值和g值都普遍大于0.6;
  • 苹果:苹果的似圆性在1至1.1之间,苹果红的色素较多,蓝色和绿色色素较少使得其g值和b值都普遍小于0.4;
  • 桃子:似圆性在1至1.2之间,hsv的值小于0.6,红色色素较多使得其r值至少为0.7;
  • 香蕉:香蕉的似圆性数值是最大的至少为1.8,且其成黄色,其hsv的值都小于0.2;
  • 菠萝:菠萝的似圆性数值仅次于香蕉为第二大,其hsv值都小于0.3,且其红色色素少r值都小于0.7;
  • 西瓜:西瓜的面积是所有水果中最大的,且其红色色素较少r值都小于0.4,,似圆性在1至1.2之间;

根据水果在图像中表现出来的特点,从面积特征,似圆性特征,颜色(RGB值和HSV值)特征对图像中的桃子 苹果 香蕉 西瓜 菠萝 梨子等进行特征提取。最后按照筛选出来的特征对水果进行分类识别。

识别结果图如下所示:

基于MATLAB的冰箱水果保鲜识别系统_开发语言_06

基于MATLAB的冰箱水果保鲜识别系统_开发语言_07

基于MATLAB的冰箱水果保鲜识别系统_开发语言_08

  1. 部分程序代码截图

基于MATLAB的冰箱水果保鲜识别系统_二值化_09

  1. 结论

总的来说水果识别良好,识别较为准确。对于偏亮和偏暗的图像,由于作品同时采用了HSV模型和RGB模型判断,因此图片的亮度对识别没有太大影响,识别率还算理想。但是正是由于获取颜色特征时同时采用HSV模型和RGB模型的值判断,导致去噪参数不能太大,待识别图片出现较多噪声的情况下识别不是太理想,因此有些识别存在误差。

而如果放弃使用HSV模型或者RGB模型中的一个,则能较好进行去除噪声,但是这样颜色特征有少了一样,对于偏亮和偏暗的图像,颜色判定时会有误差,这是没有解决好的一个主要问题。