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

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

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

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

  1. 功能模块

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

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

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

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

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

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

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

图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个水果中面积是最大的一个,菠萝其次。

特征统计表格

原始图像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值)特征对图像中的桃子 苹果 香蕉 西瓜 菠萝 梨子等进行特征提取。最后按照筛选出来的特征对水果进行分类识别。

识别结果图如下所示:

  1. 部分程序代码截图

  1. 结论

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/944145.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

谷歌地球引擎GEE计算NDVI与NDWI的年平均值的方法

本文介绍在谷歌地球引擎(Google Earth Engine,GEE)中,基于哨兵2号遥感影像数据,计算某一指定区域NDVI、NDWI等指标的年平均值的方法。 本文是谷歌地球引擎(Google Earth Engine,GEE)…

《机器视觉:开启智能新时代》

《机器视觉:开启智能新时代》 一、机器视觉:工业之眼的崛起二、核心组件:构建精准视觉系统(一)光源:照亮视界的画笔(二)镜头:聚焦精准的慧眼(三)相…

RPA系列-uipath 学习笔记4

使用Uipath 处理hover的问题 备注:使用uipath stversion:2024.10.6,所有学习来源自uipath Academy 首先,打开uipath给我们提供的一个网站 ACME,这个网站呢,需要提前注册一下的哈。 今天呢,就是记录一下,怎…

Excel将混乱的多行做成1列

目标是将数据按从左到右,再从上到下排成一列。 公式法 首先用textjoin函数将文本包起来,做成一个超长文本。 然后用公式 截取文本 Mid(m1,n,3),意思就是对m1单元格,从第n个字符开始,截取3个字符出来。 这个公式如何自…

期权懂|期权入门知识:如何选择期权合约?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 期权入门知识:如何选择期权合约? 一、选择月份: 通常情况下,月份的选择与期货合约的选择类似,主要关注主力合约。主力…

ADC(三):注入组的使用

有关ADC的基础知识请参考标准库入门教程 ADC(三):注入组的使用 1、规则组软件触发注入组自动注入2、规则组外部触发注入组自动注入3、规则组软件触发注入组外部触发(TIM2_CC1)4、规则组软件触发注入组外部触发&#xf…

springboot整合log4j2日志框架1

一 log4j基本知识 1.1 log4j的日志级别 Log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从低到高依次为:All,trace,debug,info,warn,err…

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J集成JUL 及 原理分析

文章目录 官网集成Jdk_logging步骤POM依赖使用 原理分析SLF4J 与 JUL 的集成获取 ILoggerFactory 的过程根据 ILoggerFactory 获取 Logger 实例的过程 小结 官网 https://slf4j.org/ Simple Logging Facade for Java (SLF4J) 用作各种日志记录框架&…

爆肝1个月:DDR4 的信号完整性(万字长文SI)

前言: 大学里面,总有很多课程,很浪费时间,学了没点用处,问过老师,为什么信号完整性,示波器使用等课程不开呢,这种是对工作真实有帮助的? 老师:因为老师…

一文详解MacOS+CLion——构建libtorch机器学习开发环境

对于希望在本地环境中进行深度学习开发的开发者来说,配置合适的工具链是至关重要的一步。本文旨在帮助您在 macOS 操作系统上,利用 CLion IDE 和 PyTorch 的 C依赖库——libtorch,快速搭建起一个高效的开发环境。这里我们将一步步地讲解如何下…

pg数据库postgis扩展相关技术简介

postgis-note pg数据库postgis扩展相关技术简介 简介 PostGIS是在对象关系型数据库PostgreSQL上增加了存储管理空间数据的能力的开源GIS数据库。依托于PostgreSQL的两个重要特性:Geometry对象、Gist索引。 webgis技术路线 Geometry对象 Geometry(几…

Html——10 关键字和描述

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>淘宝网</title><meta name"keywords" content"我要自学网,自学HTML,自学CSS"/><meta name"description" content"要设置…

【原创学习笔记】近期项目中使用的西门子V20变频器总结(上篇)

现场V20 22kW变频器如图所示 进线分别为L1,L2,L3,PE线&#xff0c;出现分别为U,V,W接电机 在西门子官网查询手册后&#xff0c;查询可知可以通过多种方式控制变频器&#xff0c;比如&#xff1a;面板&#xff08;BOP&#xff09;控制&#xff0c;端子&#xff08;NPN/PNP&…

Exchange ProxyShell 攻击链利用详解

目录 ProxyShell CVE-2021-34473 SSRF ProxyShell 详细复现 ProxyShell 一键利用脚本 攻击者利用 ProxyShell 漏洞可绕过相关权限验证,进而配合其他漏洞可执行任意代码,控制Microsoft Exchange Server。 ProxyShell攻击链利用使用了以下漏洞: CVE-2021-34473 一个 SSR…

算法练习——模拟题

前言&#xff1a;模拟题的特点在于没有什么固定的技巧&#xff0c;完全考验自己的代码能力&#xff0c;因此有助于提升自己的代码水平。如果说一定有什么技巧的话&#xff0c;那就是有的模拟题能够通过找规律来简化算法。 一&#xff1a;替换所有问号 题目要求&#xff1a; 解…

ES 磁盘使用率检查及处理方法

文章目录 1. 检查原因2. 检查方法3. 处理方法3.1 清理数据3.2 再次检查磁盘使用率 1. 检查原因 磁盘使用率在 85%以下&#xff0c;ES 可正常运行&#xff0c;达到 85%及以上会影响 PEIM 数据存储。 在 ES 磁盘分配分片控制策略中&#xff0c;为了保护数据节点的安全&#xff0…

leetcode 面试经典 150 题:螺旋矩阵

链接螺旋矩阵题序号54题型二维数组&#xff08;矩阵&#xff09;解题方法模拟路径法难度中等熟练度✅✅✅ 题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3…

汽车CAN通信逻辑与LabVIEW开发

CAN通信的核心概念 CAN&#xff08;Controller Area Network&#xff09;是一种多主通信协议&#xff0c;广泛应用于汽车电子系统中&#xff0c;用于控制单元之间的高效通信。 ​ 消息优先级&#xff1a;每个CAN帧包含唯一的标识符&#xff08;ID&#xff09;&#xff0c;ID的…

CI/CD是什么?

CI/CD 定义 CI/CD 代表持续集成和持续部署&#xff08;或持续交付&#xff09;。它是一套实践和工具&#xff0c;旨在通过自动化构建、测试和部署来改进软件开发流程&#xff0c;使您能够更快、更可靠地交付代码更改。 持续集成 (CI)&#xff1a;在共享存储库中自动构建、测试…

Kubernetes之NodeSelector与NodeName实战

目录 目标 版本 官网 概述 实战 NodeName实战 NodeSelector实战 目标 通过配置NodeSelector与NodeName实现Pod运行&#xff08;或优先运行&#xff09;在我们期望的节点之上。了解这两种实现方法的区别。 版本 Kubernets v1.25.0 官网 将Pod分配给节点https://kubernet…