分享好友 最新动态首页 最新动态分类 切换频道
【水果识别】基于matlab GUI自助水果超市【含Matlab源码 594期】
2024-12-26 10:39

⛳️座右铭:行百里者,半于九十。
更多Matlab图像处理仿真内容点击👇
①Matlab图像处理(进阶版
②付费专栏Matlab图像处理(初级版

⛳️关注CSDN海神之光,更多资源等你来

0 引言
图像处理是一种利用计算机分析图像以达到预期结果的技术。图像处理一般指数字图像处理,而数字图像指由工业相机、摄像机、扫描仪等设备捕捉到的二维数组,数组中的元素称为像素,元素的值称为灰度值。

计算机图像识别技术和人识别图像在原理上没有本质区别,只是机器没有人的感觉。人类图像识别不仅仅是依赖于整个图像在脑中的映像、我们依赖于图像本身特点然后对图像进行分类,然后对每个类别图像识别的特点识别图像。当我们看到一张图片时,我们的大脑会迅速产生联想。在“看”和“想”之间有一个快速的识别过程,这与搜索的过程类似。在这个过程中,我们的大脑已经在存储记忆的分类的类别中看是否有存储的记忆或与图像具有相似的特征,从而识别图像。类似的是机器图像识别技术,它通过分类提取重要特征,排除冗余信息来识别图像。这些由机器提取出来的特征一般是十分明显的,机器识别的速度也因此提高。在计算机的视觉识别中,图像的内容往往是用图像特征来描述的。

1 MATLAB GUI界面
MATLAB GUI(又称图形用户界面,它的含义是以图形化方式显示的计算机操作用户界面,是MATLAB用户可视化交互式的工具,运用GUI生成的操作界面用户可以不用浏览繁冗的代码而进行操。
图形用户界面(GUI)是由窗口、键、游标、菜单、文本指令和其他对象组成的用户界面。用户通过某些方法(如鼠标或键盘)选择和激活这些图形对象,使计算机产生反应,如计算、绘图、显示结果等。本文通过用户界面将展示对图像的二值化,处理边缘,水果分类最终实现水果识别并保存结果。

2 图像二值化
图像的二值化处理是将图像上的点的灰度值设置为为0或255,于是图像呈现出明显的黑白效果也就是获得黑白图像。
二值图像中的一种主要处理是对所提取的目标图形进行形态分析。而形态处理中最基本的是腐蚀与膨胀。腐蚀处理的作用是将目标图形收缩。其中用得到结构元素,结构元素是指具有某种确定形状的基本结构元素,例如,一定大小的矩形,圆或者菱形等。本文先对图像进行了降噪处理和平滑边界处理再把图像灰度化再进行腐蚀处理。本文随机打开一张事先准备好的图片进行二值化处理结果如图2-4所示。

3 边缘提取
边缘提取就是在数字图像中对图片轮廓的处理。对于边界处,灰度值变化比较剧烈的地方就称为边缘。也就是拐点(函数发生凹凸性变化的点)是二阶导数为零的点,并不是一阶导数,因为一阶导数为零,表示的是极值点。保留图像灰度变化较大的区域是边缘提取的一般方法,从数学的角度来看,最直观的方法是差分(数字图像差分)。

边缘检测的基本思想是利用边缘增强算子对图像的局部边缘进行突出,然后定义像素的“边缘强度”,通过设置阈值来提取边缘点。由于噪声和模糊,监测的边界可能在某一点变宽或破裂。因此,边界检测就包括:(1)通过边缘算子提取反映灰度变化的边缘点集。(2)在边缘点集合中消除一些边界点或填充边界不连续点,并将这些点连接成一条完整的线。在边缘化处理前一般先进行图像降噪已获得合适的图像边沿。

4 图像识别
图像识别技术的过程一般包括信息获取、预处理、特征提取与选择、分类器设计和分类决策这几个步骤。

信息获取有很多方法如把光或声信息通过传感器转化为电信息。通俗来说就是把研究对象的基本信息以某种方式转换成机器可以理解的信息。预处理主要是指对图像进行去噪、平滑、变换等操作,从而增强图像的重要特征。特征提取与选择:我们研究的图像是多种多样的,若想区分它们,就必须通过它们自身的特征来识别它们,获取这些特征就是提取特征。特征提取需要提取有用的特征一般选取明显的特征这样才能识别相应的物体,这就是特征选择。特征提取与选择是图像识别过程中的关键技术之一。分类器设计是指通过训练得到一个识别规则,通过这个规则可以得到一个特征分类,从而提高识别率。分类决策是对被识别的对象在特征空间中进行分类更好地识别所研究对象的具体类别。

在本文中在去噪的基础上先建立了HSV色素模型(表示色相、饱和度和亮度)。计算各个水果的平均HSV数值并求得水果的最小HSV值,利用regionprops函数获得各个联通区域的属性值(中心点坐标,外接椭圆的长短轴长度,面积),随后计算各个水果的似圆特征比(长轴/短轴,再获得以每个水果重心为中心点的边长为30的正方形内的像素的rgb值,利用以上条件通过比对获得最终分类结果。譬如:西瓜就需要面积最大,似圆性小于1.4,b值大于1,通过for循环就可找到西瓜。
也就是进行了预处理,信息获取,特征提取与选择,分类器设计。

function varargout = rmbbb(varargin)
% RMBBB MATLAB code for rmbbb.fig
% RMBBB, by itself, creates a new RMBBB or raises the existing
% singleton*.
%
% H = RMBBB returns the handle to a new RMBBB or the handle to
% the existing singleton*.
%
% RMBBB(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in RMBBB.M with the given input arguments.
%
% RMBBB(‘Property’,‘Value’,…) creates a new RMBBB or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before rmbbb_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to rmbbb_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

% Edit the above text to modify the response to help rmbbb

% Last Modified by GUIDE v2.5 11-Oct-2017 22:05:01

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @rmbbb_OpeningFcn, …
‘gui_OutputFcn’, @rmbbb_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% — Executes just before rmbbb is made visible.
function rmbbb_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 rmbbb (see VARARGIN)

% Choose default command line output for rmbbb
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes rmbbb wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = rmbbb_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 structure
varargout{1} = handles.output;

function pushbutton1_Callback(hObject, eventdata, handles)
% — Executes on button press in pushbutton1.
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global image %定义一个全局变量im
[filename,pathname,filterindex]=uigetfile({‘.jpg’;'.png’},‘选择图片’)
str=[pathname filename]; %合成路径+文件名
image=imread(str); %读取图片
axes(handles.axes1); %使用第一个axes
imshow(image); %显示图片
RGB = image;
I = rgb2gray(RGB);
threshold = graythresh(I);
bw = im2bw(I,threshold);
% remove all object containing fewer than 30 pixels
bw = bwareaopen(bw,30);
% fill a gap in the pen’s cap
se = strel(‘disk’,2);
bw = imclose(bw,se);
% fill any holes, so that regionprops can be used to estimate
% the area enclosed by each of the boundaries
bw = imfill(bw,‘holes’);
ed=edge(bw);
%%%%%以上是图像二值化 上面制作二值化图像
%下面计算圆度
L = bwlabel(bw);
L1 = bwlabel(ed);
Ar=zeros(1,max(L(😃));
Pr=zeros(1,max(L1(😃));
for i=1:max(L(😃)
Ar(i)=sum(bw(Li));
[y,x]=find(L
i);
x0=min(x(😃);
x1=max(x(😃);
y0=min(y(😃);
y1=max(y(😃);
Pr(i)=Ar(i)/((y1-y0)*(x1-x0));
end
if max(Pr) >0.81
note=1
else
note=0
end
if note==1
imager=image(:,:,1);
imageg=image(:,:,2);
r=sum(sum(imager));
g=sum(sum(imageg));
bizhi=r/g;

if bizhi>1.15
money=100
elseif bizhi<0.93
money=50
elseif (bizhi>1.08)&(bizhi<1.15)
money=20
elseif (bizhi>1.0)&(bizhi<1.03)
money=10
elseif (bizhi>1.03)&(bizhi<1.08)
money=5
elseif (bizhi>0.93)&(bizhi<1.0)
money=1
end
end
if note==0
total= bwarea(bw)

if total>12000
money=1
elseif (total>10000)&(total<12000)
money=0.5
elseif (total>8700)&(total<10000)
money=0.1
else
money=0
end
end
global allmoney;
set(handles.edit1,‘string’,money);
allmoney=allmoney+money;
set(handles.edit8,‘string’,allmoney);

function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of edit1 as text
% str2double(get(hObject,‘String’)) returns contents of edit1 as a double

% — Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

allmoney=0;

function edit3_Callback(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of edit3 as text
% str2double(get(hObject,‘String’)) returns contents of edit3 as a double

% — Executes during object creation, after setting all properties.
function edit3_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

1 matlab版本
2014a

2 参考文献
[1]杜俊波,李文正.基于阈值分类器的水果识别系统设计[J].物联网技术. 2020,10(12)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

最新文章
淘宝店铺优化之排名提升篇
淘宝作为国内大型网购平台,其淘宝商家已经有几百万之数,虽然不缺乏一些大商家。但是在淘宝这个平台中,中小卖家还是占多数的,像这种中小卖家没有大量的资金的去做推广工作,所以为了让自己的淘宝店铺能够在淘宝竞争大军中生存在下来,就
电热毯救不了鹤岗老铁
很多时候事情和资源有关,也和资源没有关系。2011年的时候,新年元旦刚过,河南林州就把6000多户居民的供暖给停了。林州在河南的最北边,毗邻河北邯郸,每年1月份都是当地最冷的时候,停暖时气象预报显示外面的气温最低到了-12℃。这次停暖
年底了,终于找到了这5款好用的CRM系统!
年底了,终于让我找到了几款超级好用的CRM系统!接下来,我就从厂商、产品主要功能、优缺点以及适合的场景等方面,给大家做详细介绍。文末还有对大家经常问到的关于CRM的问题进行的解答。先一张图总结一下:1.CRMCRM是一个以“零代码平台”
搜狗seo哪里靠谱(正规搜狗seo)
大家好,今天小编关注到一个比较有意思的话题,就是关于搜狗seo哪里靠谱的问题,于是小编就整理了2个相关介绍搜狗seo哪里靠谱的解答,让我们一起看看吧。seo怎么抓取关键词?毕业论文查重网站哪个靠谱?SEO抓取关键词一般分为以下几个步骤
网站如何有效进行SEO优化,提升排名?
在当今这个信息爆炸的时代,网站如同繁星点点,如何在浩瀚的网络海洋中脱颖而出,成为每个网站运营者必须面对的课题。我深知,在SEO这条路上,没有一成不变的法则,只有不断学习和实践,才能在这片竞争激烈的天地中站稳脚跟。基于我多年的
长沙含浦街道童程童美少儿编程Python集训营咨询热线:   在线咨询: 点击交谈
长沙少儿编程Python信息 长沙含浦街道童程童美少儿编程Python集训营是长沙青少儿教育品牌,形成了以乐高创意启蒙课程、人工智能编程、智能机器人编程、信息学奥赛编程等课程体系为核心,集国内外大型权威科技赛事、少儿资格认证考试、科技
超级外链发布与SEO:语义剖析与搜索引擎优化
超级外链发布,什么是超级外链发布?超级外链发布有什么用?超级外链是收集了上万个查询网站的链接,通过模拟人工查询留下查询记录,而且百度、谷歌等搜索引擎都会抓取其中的网址,SEO外链工具会自动
廊坊市朗杰教育拼多多搜索词应该如何利用
流量信息获取是所有企业商家都心心念念的事情,而搜索流量是拼多多三大流量问题之一,今天我们就来分享自己关于中国商品标题关键词的优化教学技巧。优化设计好了标题,才能获取到源源不断的搜索流量。古人云:名称不正确,文字不流畅。品多
巨丰投顾:中央经济工作会议强调稳住楼市股市
​​作者|丁臻宇,编辑|王瑾熙来源:巨丰投顾、好股票应用巨丰今日策略巨丰投顾认为随着各项逆周期调节政策措施落地,A股已逐步探明市场底部,并出现中长期介入机会。当前,市场正处于一个大级别上行趋势的调整期中,且调整临近尾声并面临
相关文章
推荐文章
发表评论
0评