1 简介

本文提出了一种基于计算机视觉的复杂环境下果蔬识别方法,包括以下步骤:首先,获取待识别果蔬图像;其次,将获取到的果蔬图像进行预处理,预处理后的图像被分割为果蔬区域和背景区域;提取预处理后的果蔬图像特征,其中提取的图像特征为颜色特征和纹理特征;然后,采用自适应加权方法对果蔬特征进行融合;最后,采用最近邻分类算法对果蔬进行识别.本发明相比已有的果蔬识别系统,算法复杂度低,识别率高,具有很强的使用性,可以有效的应用于日常生活中.

2 部分代码

function varargout = untitled(varargin)
% UNTITLED MATLAB code for untitled.fig
%     UNTITLED, by itself, creates a new UNTITLED or raises the existing
%     singleton*.
%
%     H = UNTITLED returns the handle to a new UNTITLED or the handle to
%     the existing singleton*.
%
%     UNTITLED('CALLBACK',hObject,eventData,handles,...) calls the local
%     function named CALLBACK in UNTITLED.M with the given input arguments.
%
%     UNTITLED('Property','Value',...) creates a new UNTITLED or raises the
%     existing singleton*. Starting from the left, property value pairs are
%     applied to the GUI before untitled_OpeningFcn gets called. An
%     unrecognized property name or invalid value makes property application
%     stop. All inputs are passed to untitled_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 untitled% Last Modified by GUIDE v2.5 15-Jan-2017 01:03:42% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...'gui_Singleton',  gui_Singleton, ...'gui_OpeningFcn', @untitled_OpeningFcn, ...'gui_OutputFcn',  @untitled_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback',   []);
if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});
endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
elsegui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT% --- Executes just before untitled is made visible.
function untitled_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 untitled (see VARARGIN)% Choose default command line output for untitled
handles.output = hObject;% Update handles structure
guidata(hObject, handles);% UIWAIT makes untitled wait for user response (see UIRESUME)
% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.
function varargout = untitled_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;% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
% hObject   handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles   structure with handles and user data (see GUIDATA)
global I FilledLabel HSV MeanHue  Ecllipseratio Label num Premeter Area
for i = 1 : numPremeter(i) = 0;end[row,col] = size(Label);for i = 1 : rowfor j = 1 : colif(Label(i,j) > 0)Premeter(Label(i,j)) = Premeter(Label(i,j)) + 1;    %计算标记后的各块图形边界中像素的个数的总数endendend%计算各个图形单元的面积
FilledLabel=imfill(Label,'holes');  %填充打过标记的边界线中间围成的图形区域
for i = 1 : numArea(i) = 0;
end[row,col] = size(FilledLabel);
for i = 1 : rowfor j = 1 : colif(FilledLabel(i,j) > 0)Area(FilledLabel(i,j)) = Area(FilledLabel(i,j)) + 1;   %通过统计像素点个数的方式来求各形状的面积endend
end%计算各个图形单元的圆度
for i = 1 : num     Ecllipseratio(i) = 4*pi*Area(i)/Premeter(i)^2;
end%计算各个图像的颜色(色度)HSV=rgb2hsv(I);   %转换为HSV,为后面的颜色元素的提取做准备[row,col] = size(FilledLabel);   %统计填充后的图形中各块图形所含像素的个数的多少
MeanHue = zeros(1,num);for i = 1 : numHue = zeros(Area(i),1);nPoint = 0;for j = 1 : rowfor k = 1 : colif(FilledLabel(j,k) == i)nPoint = nPoint + 1;Hue(nPoint,1) = HSV(j,k,1);endendendHue(:,i) = sort(Hue(:,1));for j = floor(nPoint*0.1) : floor(nPoint*0.9)MeanHue(i) = MeanHue(i) + Hue(j,1);endMeanHue(i) = MeanHue(i) / (0.8*nPoint);  %计算出平均的色度值end% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject   handle to pushbutton4 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles   structure with handles and user data (see GUIDATA)
global I Area FilledLabel HSV MeanHue  Ecllipseratio Label num PremeterHSV=rgb2hsv(I);   %转换为HSV,为后面的颜色元素的提取做准备[row,col] = size(FilledLabel);   %统计填充后的图形中各块图形所含像素的个数的多少
MeanHue = zeros(1,num);for i = 1 : numHue = zeros(Area(i),1);nPoint = 0;for j = 1 : rowfor k = 1 : colif(FilledLabel(j,k) == i)nPoint = nPoint + 1;Hue(nPoint,1) = HSV(j,k,1);endendendHue(:,i) = sort(Hue(:,1));for j = floor(nPoint*0.1) : floor(nPoint*0.9)MeanHue(i) = MeanHue(i) + Hue(j,1);endMeanHue(i) = MeanHue(i) / (0.8*nPoint);  %计算出平均的色度值end%识别黄瓜%构建黄瓜的分类器,在二维特征空间对各个图像进行类别区分
huanggua=0;
for i=1:numif((Ecllipseratio(i)<0.7))%分类器识别黄瓜的准则:判断各个图形中平均圆率值小于0.7的为黄瓜huanggua=i;end
endend
%变换生成最终的结果图像,图像中显示的结果即对应分类器中指定的类别
juzimatrix = hsv2rgb(juziHSV);   %转换为RGB彩图,彩图中已经滤去了其余水果,只剩下橘子
subplot(2,2,4),imshow(juzimatrix);

3 仿真结果

4 参考文献

[1]陶华伟, 赵力, 高瑞军, 黄永盛, 奚吉, & 虞玲等. 一种基于计算机视觉的复杂环境下果蔬识别方法.

【图像识别】基于计算机视觉实现水果识别matlab代码相关推荐

  1. 【图像识别】基于形态学实现螺纹识别matlab代码

    1 简介 ​基于形态学实现螺纹识别matlab代码 2 完整代码 clear;clc;close all I=imread('luowen1.bmp');   %读入螺纹图片 try I=rgb2gr ...

  2. 【水果分类】基于计算机视觉实现水果识别分类含Matlab源码

    1 简介 通过MATLAB编写程序,进行对水果的识别与分类.在生产与生活中图像识别有着广泛的应用,目前市场上的水果分拣基本上任由人工完成,生产效率低,且肉眼判断品质好坏不精确.本设计对于水果的识别与分 ...

  3. 【水果识别】基于计算机视觉实现水果识别含Matlab源码

    1 简介 自"农业 4.0"时代的来临,以"互联网+"为驱动的农业技术已成为发展农业强有力的支撑.在果蔬业中,果蔬分类通常由经过训练的人员人工评估农产品或农作物 ...

  4. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  5. 【图像识别】基于计算机视觉实现红绿灯识别含Matlab代码

    1 简介 交通信号灯控制主要是利用检测技术和传感技术来检测交通参数,以此为基础进行控制.在交通压力日渐增大的背景下,各个路口车流量不均衡的问题逐渐凸显出来,往往一边路口车流量较小而绿灯开启时间长,另一 ...

  6. 【图像识别】基于主成分分析算法实现人脸二维码识别matlab代码

    1 简介 基于主成分分析(PCA)的人脸识别算法由于其识别率高,算法技术成熟越来越多的被用做人脸识别技术的研究.本文首先讲解了人脸识别前的图像预处理,然后介绍基于主成分分析(PCA)算法的主要步骤,最 ...

  7. 【水果识别】基于形态学实现水果识别含Matlab源码

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

  8. 深度学习之基于InceptionV3实现水果识别

    看了一下之前做过的有关深度学习的实验,发现InceptionV3这个模型还没有用到,虽然并没有自己实现该网络模型,但是先学习一下它的原理,再利用迁移学习测试一下它的模型准确率,也不失为一种不错的学习方 ...

  9. ❀数据集❀基于计算机视觉的情绪识别数据集

    数据集介绍以及下载链接,免费!!! 1.FER2013 Fer2013 包含大约 30,000 张不同表情的面部 RGB 图像,尺寸限制为 48×48,其主要标签可分为 7 种类型:0=愤怒,1=厌恶 ...

最新文章

  1. 陈天桥:欣赏360保护隐私 用户安全永远第一
  2. python【Numpy科学计算库】Numpy的超实用基础详细教程(看不懂你来打我)
  3. contrastive loss function (papers)
  4. 好好学python · 内置函数(range(),zip(),sorted(),map(),reduce(),filter())
  5. js方式调用php_js如何调用php函数
  6. 下图为双总线结构机器的数据通路_海康机器人为物流加码:进击吧,双11新“打工人”...
  7. mysql备库命令_mysql数据库备份命令
  8. Unity3d中BlinnPhong光照模型注解
  9. 闭包 进阶 javascript
  10. ABB伺服驱动器调试(一)
  11. 【线性代数】矩阵的特征值分解(对角化、谱分解)
  12. java总结一:JSON转对象
  13. apollo简易高精度地图制作
  14. VUE时间戳和时间相互转换,使用UI库为Ant Design of Vue
  15. Blender建模(一)
  16. 金融行业比较有名气的公司
  17. 视频监控直播项目经验总结
  18. switch 语句 -- 超详解
  19. ardupilot软件仿真及调试(vscode版)
  20. 数字图像处理实验八图像的傅里叶变换

热门文章

  1. 批处理调用cacls修改文件权限
  2. 万字长文带你走进 JavaScript 的世界
  3. 《狼道》:忠诚与奉献
  4. Excel收纳箱:返回选中区域的行数和列数
  5. Nyoj 81 炮兵阵地
  6. CMS系统漏洞分析溯源
  7. python爬虫学习之电视剧弹幕的抓取
  8. IC芯片自动测试系统平台ATECLOUD:提高半导体制造效率与质量
  9. bzoj1911 [Apio2010]特别行动队
  10. 虚拟机运行win11以及安装apk