1 简介

数学形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来。数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算。
开运算就是先腐蚀再膨胀,闭运算就是先膨胀再腐蚀。

1 二值形态学
粗略的说,腐蚀可以使目标区域范围“变小”,其实质造成图像的边界收缩,可以用来消除小且无意义的目标物。式子表达为:

该式子表示用结构B腐蚀A,需要注意的是B中需要定义一个原点,【而B的移动的过程与卷积核移动的过程一致,同卷积核与图像有重叠之后再计算一样】当B的原点平移到图像A的像元(x,y)时,如果B在(x,y)处,完全被包含在图像A重叠的区域,(也就是B中为1的元素位置上对应的A图像值全部也为1)则将输出图像对应的像元(x,y)赋值为1,否则赋值为0。
我们看一个演示图。

B依顺序在A上移动(和卷积核在图像上移动一样,然后在B的覆盖域上进行形态学运算),当其覆盖A的区域为[1,1;1,1]或者[1,0;1,1]时,(也就是B中‘1’是覆盖区域的子集)对应输出图像的位置才会为1。

2 膨胀
粗略地说,膨胀会使目标区域范围“变大”,将于目标区域接触的背景点合并到该目标物中,使目标边界向外部扩张。作用就是可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声。

该式子表示用结构B膨胀A,将结构元素B的原点平移到图像像元(x,y)位置。如果B在图像像元(x,y)处与A的交集不为空(也就是B中为1的元素位置上对应A的图像值至少有一个为1),则输出图像对应的像元(x,y)赋值为1,否则赋值为0。
演示图为:

3 小结
也就是说无论腐蚀还是膨胀,都是把结构元素B像卷积操作那样,在图像上平移,结构元素B中的原点就相当于卷积核的核中心,结果也是存储在核中心对应位置的元素上。只不过腐蚀是B被完全包含在其所覆盖的区域,膨胀时B与其所覆盖的区域有交集即可。

4 灰度形态学
在讲述灰度值形态学之前,我们进行一个约定,即将结构元素B覆盖住的图像A的区域记为P(取Part之意)。

5 灰度形态学的腐蚀
那么灰度形态学中的腐蚀就是类似卷积的一种操作,用P减去结构元素B形成的小矩形,取其中最小值赋到对应原点的位置即可。
我们来看一个实例,进行加深对灰度形态学的理解。
假设我们有如下的图像A和结构元素B:

进行灰度形态学腐蚀的过程如下:

我们对输出图像的第一个元素的输出结果进行具体的展示,也就是原点对应的4的位置。输出图像其他的元素的值也都是这样得到的。我们会看到,B首先覆盖的区域就是被减数矩阵,然后在其差矩阵中求min(最小值)来作为原点对应位置的值。

灰度形态学的膨胀
根据上面对腐蚀的描述,我们对膨胀做出同样的描述,灰度形态学中的膨胀就是类似卷积的一种操作,用P加上B,然后取这个区域中的最大值赋值给结构元素B的原点所对应的位置。

这里也对输出图像第一个元素值的来历做个说明。

对上面矩阵的和求最大值就是6,所以把6赋值给结构元素原点所对应的位置。​

2 部分代码

function tfeat = get_features(colorimg, mask)% 特征提取函数 hsvimg = rgb2hsv(colorimg); h = hsvimg(:,:,1); mask1 = mask(:); index = mask1>0;[counts,x] = imhist(h(index));                      %绘制直方图Hue = find(counts == max(counts)); % ShapeValue = regionprops(mask, 'majoraxislength','minoraxislength');% Shape = ShapeValue.MajorAxisLength/ShapeValue.MinorAxisLength;ShapeValue = regionprops(mask, 'eccentricity');Shape = ShapeValue.Eccentricity;tfeat = [Hue, Shape ];%tfeat = [feat1 feat2 f.Orientation f2.Eccentricity f1.Extent];

3 仿真结果

4 参考文献

[1]杨霈. 基于matlab GUI的水果识别系统[J]. 电子制作, 2021(12):2.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【水果识别】基于形态学实现水果识别含Matlab源码相关推荐

  1. 【硬币识别】形态学硬币计数【含Matlab源码 683期】

    ⛄一.硬币图像识别简介 本设计为硬币图像识别统计装置,通过数码相机获取平铺无重叠堆积的硬币的图像,并通过Matlab工具处理后统计硬币的数目. 1 图像格式转换 取的图像格式为RGB彩色图像,需要先将 ...

  2. 【染色体识别】基于matlab形态学染色体计数【含Matlab源码 1066期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[染色体识别]基于matlab形态学染色体计数[含Matlab源码 1066期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  3. 【图像处理基础】基于matlab霍夫变换直线识别(拟合角平分线)【含Matlab源码 2575期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像处理基础]基于matlab霍夫变换直线识别(拟合角平分线)[含Matlab源码 2575期] 点击上面蓝色字体,直接付费下载,即可. ...

  4. 【图像去噪】基于最小二乘方滤波实现图像去噪含Matlab源码

    1 简介 基于最小二乘方滤波实现图像去噪含Matlab源码​ 2 部分代码 function varargout = zuixiaoercheng(varargin)% ZUIXIAOERCHENG ...

  5. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 790期】

    ⛄一.BP车牌识别简介(附课程作业报告) 车牌识别系统设计与实现 车牌识别系统主要分为三部分:车牌图像预处理.特征提取以及基于BP神经网络对特征进行训练和分类,流程图如图1所示. 图1 车牌识别系统组 ...

  6. 【车牌识别】基于matlab GUI阈值分割车牌识别(带面板)【含Matlab源码 721期】

    ⛄一.车牌识别简介 1 车牌图像处理 车牌图像处理主要有五个组成部分:图像灰度化.图像二值化.图像边缘检测.图像形态学运算和图像滤波处理.它是车牌识别系统中最根本且最基础的操作,车牌图像处理的好坏情况 ...

  7. 【裂缝识别】基于matlab GUI路面裂缝识别(带面板)【含Matlab源码 1648期】

    ⛄一.简介 1 案例背景 随着国家对公路建设的大力投入,我国的公路通车总里程己经位居世界前列,这样进一步促进了我国经济建设的发展.随着公路的大量投运,公路日常养护和管理已经成为制约公路运营水平提高的瓶 ...

  8. 【硬币计数】基于matlab形态学硬币计数【含Matlab源码 393期】

    ⛄一.硬币图像识别简介 本设计为硬币图像识别统计装置,通过数码相机获取平铺无重叠堆积的硬币的图像,并通过Matlab工具处理后统计硬币的数目. 1 图像格式转换 取的图像格式为RGB彩色图像,需要先将 ...

  9. 【图像分割】基于FLICM算法实现图像分割含Matlab源码

    1 简介 聚类就是把具有相似性的事物区分开并加以分类.聚类分析是依据研究对象(样品 或指标)的特征,对其进行分类.其目标是:组内对象之间是相似的或是相关的,而不同组中的对象不相同或者是不相关的,聚类过 ...

  10. 【图像融合】基于稀疏表示多光谱图像融合含Matlab源码

    1 简介 高分辨率的多光谱图像应用广泛,比如变化监测,目标识别,场景解译.通常,商用光学卫星能够同时提供高空间分辨率的全色图像和低分辨率的多光谱图像.物理条件的限制使得单一传感器无法获得高质量的多光谱 ...

最新文章

  1. [VNC] 分辨率, 退出全屏,
  2. UVa 1057 - Routing
  3. BlockChain:Scene application区块链场景应用集合
  4. C#扩展方法应用之 try catch finally 封装
  5. centos设置服务开机启动
  6. python爬新闻动态_Python爬取新闻动态评论
  7. mysql php 封装类_PHP递归实现层级树状展开的方法
  8. MATLAB信号处理之信号的采样
  9. android统计测试题,Allocation Tracker(Android Studio)
  10. 蓝牙 - 通信原理:电磁波 - 无线电波 - ISM - 蓝牙
  11. 用python编写鸡兔同笼问题
  12. amcharts使用总结
  13. 考研初试考java的学校,2021考研初试科目:这些学校改成统考408!
  14. mysql隔离级别到底是什么
  15. 毕业学位论文常见问题总结
  16. 网络协议与网络编程(双电脑串口通讯)
  17. 做好抖音的核心就这两点
  18. 28个数据可视化图表的总结和介绍
  19. mybatis逆向工程的使用,自动生成实体类与基础SQL
  20. Linux操作系统浅尝辄止

热门文章

  1. Mac OS配置python虚拟环境
  2. 1.2 控制LED闪烁
  3. 【python教程入门学习】第一个Pygame程序
  4. webpack-图片配置
  5. 使用Ajax进行前后端交互(一)
  6. js逆向之有道词js加密解析
  7. RobotFrameWork(二)Ride简单使用及快捷键
  8. 户口本识别/户口本OCR识别
  9. 手把手带你开发一个批量下载资源的谷歌浏览器扩展
  10. 【智慧家科教2023新春首训】东方昱老师畅谈新发展之路:前途是光明的 未来是可期的