一、简介

中国苹果产销量居世界首位,传统的苹果分级由人工完成,长期以来,其劣势逐渐显现。因此,智能分拣是当今苹果分级的主要任务,而大小又是苹果分级的重要参考指标。国内外专家做了许多基于图像处理的苹果大小分级研究,其中PAULUS等提出以表面积、直径和体积作为苹果大小分级的指标。应义斌等通过寻找柑橘的最小外接矩形的最大横径数来求取柑橘的大小,随之也被应用到了苹果大小的检测中。冯斌等通过果梗侧外形确定轴向,取垂直轴向的最大宽度作为水果大小。陈艳军等通过比较3幅苹果图像的最大直径来确定苹果实际大小,还通过多元线性回归原理找到3个最大直径与苹果实际大小的拟合关系。除此之外,苹果大小检测还有当量直径法、投影面积法和平均半径法等。而根据鲜苹果分级标准[8],需选取苹果最大横截面直径作为测量依据。因此,本文选取垂直拍摄果径面的图像作为获取最大横截面直径的参考,再利用最小外接圆得到苹果的直径,最后依据分级标准判断大小等级。

1 苹果图像预处理
1.1 图像采集

根据苹果在输送中的实际运动状态以及相机摄取到的多姿态苹果图像,在实际操作中发现,5幅图像就能包含苹果的所有表面,因此将获取到的每个苹果的5幅图像作为研究对象,如图3所示。

图3 单一苹果5幅表面图像

1.2 图像二值化
将采集到的苹果彩色图像进行二值化处理,得到像素值为0的黑色背景和像素值为1的目标图像[12]。具体方法为先将彩色图像进行灰度化处理,利用如下语句实现:
I=rgb2gray(RGB)。
其次,利用Qtsu图像分割将灰度图转换成二值图,通过计算方差寻找最合适的灰度级作为阈值,使划分区域的两部分差别最大,Qtsu法的语句实现如下:
I2=im2bw(I,graythresh(I))。

1.3 形态学去噪
图像二值化后,目标区域可能会有小的孔洞出现,因此用图像形态学进行去噪处理,填补小孔洞,细化边缘。使用圆形结构进行形态学闭操作处理,语句实现如下:
se=strel(‘disk’,2),
I3=imclose(I2)。
对于采集到果梗面或有缺陷的图像,上述操作后还会有较大孔洞出现,因此使用imfill函数填充较大孔洞,语句实现如下。
I4=imfill(I3)。
图像预处理结果如图4所示。

图4 苹果图像预处理结果

2 最小外接圆分级
2.1 果径面的确定

鲜苹果分级标准规定,取苹果最大横截面直径作为苹果大小等级的判断标准。通过观察可以发现,由于苹果是立体图形,苹果以正立形式(果梗上置)放置时,获取到的苹果主视图图像的最大直径不一定是苹果的最大横截面直径,而此时的俯视图,也就是垂直于果径拍摄的图像,它的最大直径可以作为大小等级划分的重要依据。进一步观察发现,对于大多数苹果,尤其是形状不规则的苹果而言,垂直于果径拍摄的图像比其他姿态时的图像更加接近于圆形。因此,可以利用图像最小外接矩形长宽比这一指标来寻找最接近圆形的图像。而且长宽比数值越接近于1,图形越接近于圆,所以可用式(1)来求取图像最小外接矩形长宽比与1的差值,差值最小的图像即为所确定的果径面的图像。
c=l/b−1, (1)
式中:l为最小外接矩形的长;b为最小外接矩形的宽;c为长宽比与1的差值。

2.2 最小外接圆圆心确定
确定好果径面后,就要对果径面求取它的最大直径,将其作为苹果的实际大小,本文用最小外接圆法求取直径。首先就要确定最小外接圆的圆心,将苹果图像的质心作为最小外接圆的圆心,计算苹果二值图目标区域的总像素数,记作s,质心坐标可以通过求取二值图目标像素的平均像素点获得[16],如式(2)和式(3)所示。

式中:Cx,Cy 分别为圆心的横、纵坐标;xi,yi分别为目标像素点的横、纵坐标。

2.3 最小外接圆半径确定
确定好最小外接圆圆心后,通过寻找图像坐标与圆心坐标的距离,距离值最大的即为最小外接圆半径。首先,设初始半径为2个像素点,再遍历各个像素点,利用两点间距离公式,如式(4)所示,计算此时像素点与圆心的距离,如果大于当前半径,则此距离作为新的半径,最终迭代更新得到最小外接圆半径。

式中:d为两点距离大小。
最终在二值图的基础上,根据圆心和半径画出图像的最小外接圆,如图5所示。

图5 苹果最小外接圆图像

2.4 图像标定
系统通过最小外接圆法得到苹果直径的单位为像素,而苹果实际直径单位是毫米,因此需要进行单位转换。具体方法:选取一标准形状的球体,利用图像采集系统进行球体的图像采集,然后运用计算机绘图软件,如Photoshop进行球体直径的测量,得到的球体直径为d像素,而球体的实际直径为D mm,则系统的标定系数k如式(5)所示:
k=D/d。 (5)
用标定系数k与系统测量的苹果直径进行转换,就可以得到实际的苹果直径。
理论简介仅供参考

二、部分源代码


三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]杜云,郑羽纶,张效玮.基于图像处理的苹果大小分级研究[J].河北工业科技. 2019,36(06)

【水果识别】基于matlab GUI苹果分级系统(带面板)【含Matlab源码 1827期】相关推荐

  1. 【机械仿真】基于matlab GUI曲柄摇杆机构运动仿真【含Matlab源码 1608期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab GUI曲柄摇杆机构运动仿真[含Matlab源码 1608期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  2. 【光学】基于matlab GUI光栅条纹投影生成【含Matlab源码 2118期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[光学]基于matlab GUI光栅条纹投影生成[含Matlab源码 2118期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  3. 【机械仿真】基于matlab GUI直齿圆柱齿轮应力计算【含Matlab源码 2077期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[机械仿真]基于matlab GUI直齿圆柱齿轮应力计算[含Matlab源码 2077期] 点击上面蓝色字体,直接付费下载,即可. 获取代 ...

  4. 【天体学】基于matlab GUI太阳天顶角计算【含Matlab源码 2229期】

    一.⛄获取代码方式 获取代码方式1: 完整代码已上传我的资源:[天体学]基于matlab GUI太阳天顶角计算[含Matlab源码 2229期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2 ...

  5. springboot基于web的酒店预订系统的设计与实现源码

    项目名称 springboot基于web的酒店预订系统的设计与实现源码 视频效果 https://www.bilibili.com/video/BV1k34y1W7Lq/ 基于web的酒店预订系统的设 ...

  6. 基于Java毕业设计校园租赁系统的设计与实现源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计校园租赁系统的设计与实现源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园租赁系统的设计与实现源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构 ...

  7. 【语音去噪】基于matlab GUI IIR滤波器语音去噪【含Matlab源码 1864期】

    一.语音处理简介 语言是人们获得各类有效信息的主要途径, 而语音是语言的表现形式.语音在一定程度上可影响人们的生活, 因此, 语音信号的研究对科学领域和人们日常生活具有一定的研究价值和意义.噪声广泛存 ...

  8. 【数学建模】基于matlab GUI平行停车模拟仿真【含Matlab源码 1877期】

    一.平行停车模拟仿真简介 近年来, 随着我国经济的快速发展, 机动车保有量也迅速增长.截至2012年底, 全国机动车保有量已达2.4亿辆, 城市"停车难"的问题日趋严重.统计结果表 ...

  9. 基于springboot实现大学生租房系统演示【附项目源码】

    基于springboot实现大学生租房系统演示 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7 数据库工具:Navicat ...

最新文章

  1. 【剑指Offer】23、二叉搜索树的后序遍历序列
  2. 【FFmpeg】降低转码延迟方法、打印信息详解、refcounted_frames详解
  3. 程序员生活智慧集——卓越程序员密码
  4. 关于缓存命中率的几个关键问题!
  5. 小米澄清传闻:不存在跨境转移利润及逃避缴纳税款行为
  6. 菜鸟教程-css学习笔记
  7. 机器学习之Fisher线性分类器实现样本分类
  8. C#文件目录IO常见操作汇总
  9. SnapKit 约束创建过程
  10. 【BZOJ1060】【codevs1435】时态同步,我可以叫它树形递推吗
  11. 隐藏java_Java方法隐藏
  12. HDU2176 取(m堆)石子游戏【Nim博弈】
  13. 【sklearn第四讲】数据集变换
  14. 递归流程图(java)
  15. gromacs 中关于二级结构分析
  16. linux常用命令(轻松入门linux)
  17. 敏捷開發: 利益相关者的管理
  18. 洛谷 P1016 旅行家的预算
  19. oracle 建库后 多路径,oracle数据库的多路径归档
  20. web crawler 抓某前程的小小tips(低调发育)

热门文章

  1. (前端)图片如何从模糊到清晰渐显
  2. Eclipse折叠代码插件folding 推荐
  3. 毕业设计 - 题目:垃圾邮件(短信)分类 算法实现 机器学习 深度学习 开题
  4. 为什么要抛弃maven
  5. 12_JavaScript数据结构与算法(十二)二叉树
  6. camera特效app(安卓)
  7. era翻译_英语单词era是什么意思,英文单词查询era,在线单词era翻译
  8. 【电源】【PCB】电源板(提供±2v5,3v3,5v,12v供电)的制作——电赛使用
  9. 电视显示990002服务器访问失败,990001互联网访问失败(1)是啥原因
  10. 视频怎么加水印,视频加水的快速方法