clear;clc;close all;

%%%%%%%%%%%%%%%%% 读取原图,并处理成二值图像 %%%%%%%%%%%%%%%%%%%%%%%

I=imread(‘tao.png’);

I2=rgb2gray(I);

BW=im2bw(I2,0.9);

figure(1),subplot(1,3,1),imshow(I),title(‘原始图像’);

subplot(1,3,2),imshow(I2),title(‘灰度图像’);

subplot(1,3,3),imshow(BW),title(‘二值图像’);

%%%%%%%%%%%%%%%% 进行边缘检测 得到不连续的图形边界 %%%%%%%%%%%%%%%%%%%%%%

%得到各个图形的连续边界

SE=strel(‘rectangle’,[40 30]); % 结构定义

J2=imopen(BW,SE); % 开运算

figure(2),imshow(J2),title(‘对二值图像进行开运算’);

SE=strel(‘square’,5); % 采用方形结构元素进行腐蚀

J=imerode(~J2,SE);

BW2=(~J2)-J; % 检测边缘

figure(3),imshow(BW2),title(‘边缘检测’);

%填充了已有的检测的连续形状边界

B = imfill(BW2,‘holes’);%图像填充

B = bwmorph(B,‘remove’);%移除内部像素

figure(4),imshow(B),title(‘提取出的边界图像’);

%将不同的图形进行分别标记,num表示连接的图形对象的个数

[Label,num] = bwlabel(B,8);

%%%%%%%%%%%%%%%%%%%计算各个图形单元边界像素点数%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i = 1 : num

Premeter(i) = 0;

end

[row,col] = size(Label);

for i = 1 : row

for j = 1 : col

if(Label(i,j) > 0)

Premeter(Label(i,j)) = Premeter(Label(i,j)) + 1;%计算标记后的各块图形边界中像素的个数的总数

end

end

end

%%%%%%%%%%%%%%%%%%% 计算各个图形单元的面积%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

FilledLabel = imfill(Label,‘holes’); %填充标记过的边界线中间围成的图形区域

figure,imshow(FilledLabel),title(‘标记过并被填充的结果’);

for i = 1 : num

Area(i) = 0;

end

[row,col] = size(FilledLabel);

for i = 1 : row

for j = 1 : col

if(FilledLabel(i,j) > 0)

Area(FilledLabel(i,j)) = Area(FilledLabel(i,j)) + 1; %通过统计像素点个数的方式来求各形状的面积

end

end

end

%%%%%%%%%%%%%%%%%% 计算各个图形单元的圆度 %%%%%%%%%%%%%%%%%%%%%%%%%%

for i = 1 : num

Ecllipseratio(i) = 4piArea(i)/Premeter(i)^2;

end

%%%%%%%%%%%%%%%%%%%% 计算各个图像的色度 %%%%%%%%%%%%%%%%%%%%%

HSV = rgb2hsv(I); %转换为HSV,为后面的色度元素的提取做准备

[row,col] = size(FilledLabel); %统计填充后的图形中各块图形所含像素的个数的多少

MeanHue = zeros(1,num);

for i = 1 : num

Hue = zeros(Area(i),1);

nPoint = 0;

for j = 1 : row

for k = 1 : col

if(FilledLabel(j,k) == i)

nPoint = nPoint + 1;

Hue(nPoint,1) = HSV(j,k,1);

end

end

end

Hue(:,i) = sort(Hue(:,1));

for j = floor(nPoint*0.1) : floor(nPoint*0.9)

MeanHue(i) = MeanHue(i) + Hue(j,1);

end

MeanHue(i) = MeanHue(i) / (0.8*nPoint); %计算出平均的色度值

end

%%%%%%%%%%%%%%%%%%%%%%%% 各种水果识别 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%识别梨,在二维特征空间对各个图像进行类别区分

pear=0;result1=0;

for i=1:num

if(MeanHue(i)<0.125) %判断各个图形中平均色度值小于0.125的为梨

pear=i;

result1=1;

end

end

%对分出来的梨构建相应的图像掩膜,并用对原图的亮度图像进行掩膜操作

pearHSV=HSV;

for j = 1 : row

for k = 1 : col

if(FilledLabel(j,k) ~=pear)

pearHSV(j,k,3)=0;

end

end

end

%变换生成最终的结果图像

pearmatrix = hsv2rgb(pearHSV);%转换为RGB彩图,彩图中已经滤去了其余水果,只剩下梨

if(result1==1)

figure,imshow(pearmatrix);title(‘梨’);

end

%%%%%%%%%识别桃,在二维特征空间对各个图像进行类别区分

pitch=0;result2=0;

for i=1:num

if(MeanHue(i)>0.5) %判断各个图形中平均色度值大于0.5的为桃

pitch=i;

result2=1;

end

end

%对分别出来的桃构建相应的图像掩膜,并用对原图的亮度图像进行掩膜操作

pitchHSV=HSV;

[row,col] = size(FilledLabel); %统计填充后的图形中各块图形所含像素的个数的多少

for j = 1 : row

for k = 1 : col

if(FilledLabel(j,k) ~=pitch)

pitchHSV(j,k,3)=0;

end

end

end

%变换生成最终的结果图像

pitchmatrix = hsv2rgb(pitchHSV); %转换为RGB彩图,彩图中已经滤去了其余水果,只剩下桃

if(result2==1)

figure,imshow(pitchmatrix);title(‘桃子’);

end

%%%%%%%识别苹果,在二维特征空间对各个图像进行类别区分

apple=0;result3=0;

for i=1:num

if((Ecllipseratio(i)<1.25)&&(Ecllipseratio(i)>1.0)) %判断各个图形中圆度居于1.0与1.25之间的的为苹果

apple=i;

result3=1;

end

end

%对分出来的苹果构建相应的图像掩膜,并用对原图的亮度图像进行掩膜操作

appleHSV=HSV;

for j = 1 : row

for k = 1 : col

if(FilledLabel(j,k) ~=apple)

appleHSV(j,k,3)=0;

end

end

end

%变换生成最终的结果图像

applematrix = hsv2rgb(appleHSV); %转换为RGB彩图,彩图中已经滤去了其余水果,只剩下苹果

if(result3==1)

figure,imshow(applematrix);title(‘苹果’);

end

%%%%%%当没有梨,桃子,苹果,出现时

if(result10&&result20&&result3==0)

figure,imshow(‘无.png’);

end

标记水果 matlab,matlab水果识别相关推荐

  1. 基matlab的水果识别的应用,基于MATLAB的水果识别的数字图像处理

    基于MATLAB的水果识别的数字图像处理 图像处理 ( 报告 ) 题目 基于 MATLAB 的 水果识别的数字图像处理 指导教师 职称 教授 学生姓名 学号 专 业 院(系) 完成时间 2016 年 ...

  2. matlab水果图片,基于MATLAB的水果识别的数字图像处理教程.docx

    基于MATLAB的水果识别的数字图像处理教程 图像处理(报告) 题目: 基于MATLAB的水果识别的数字图像处理 指导教师: 职称: 教授 学生姓名: 学号: 专 业: 院(系): 完成时间: 201 ...

  3. matlab水果图片,基于matlab的水果识别的数字图像处理

    基于matlab的水果识别的数字图像处理 图像处理(报告)题目: 基于 MATLAB 的水果识别的数字图像处理 指导教师: 职称: 教授 学生姓名: 学号:专 业: 院(系): 完成时间: 2016 ...

  4. Android水果超市的登录界面,【水果识别】自助水果超市matlab源码含 GUI

    一.简介 基于matlab自助水果超市 二.源代码 function varargout = rmbbb(varargin) % RMBBB MATLAB code for rmbbb.fig % R ...

  5. 基于matlab国内外水果自动分级方面,水果自动识别的BP神经网络方法

    摘  要:针对多种水果混合的图像,对各种水果的提取和识别进行研究.利用Matlab软件进行图像数据获取.对比度增强.去噪.二值化处理:为弥补二值化后图像中出现的断边.孔洞,借助Sobel算子进行边缘提 ...

  6. 基于MATLAB的水果分级设计

    基于MATLAB的水果分级识别技术研究 摘 要 本次毕业设计介绍了基于MATLAB的水果分级自动识别,利用手机端获取苹果的样本图像,应用MATLAB软件编程实现了对样本图像的预处理,包括图像滤波.图像 ...

  7. MATLAB的水果分级系统

    框架源码: https://download.csdn.net/download/weixin_44748303/14070448 1.课题介绍 现在商业行为中,在水果出厂前都需要进行质量检测,需要将 ...

  8. matlab识别硬币面值,基于matlab的硬币识别

    数字图象处理 Digital Image Progressing 基于 MATLAB 的图片中文字的提取及识别 邹浩,余龙,邹勇博,刘宇童,和振乔,李少梅 (西安电子科技大学 电子工程学院,西安,.. ...

  9. 基于matlab的车牌识别系统设计错误,基于MATLAB的车牌识别系统设计

    在图像处理领域,数字图像处理技术取得了飞速发展,并在国民经济的各个领域得到广泛应用.尤其在智能交通管理中汽车牌照识别技术方面具有重要的理论意义和实用价值.汽车牌照识别技术主要任务是实现对汽车监控视频所 ...

  10. 基于MATLAB手写体数字识别程序设计

    基于MATLAB手写体数字识别程序设计 手写体识别由于其实用性,一直处于研究进步的阶段,本文主要针对的是对0-9十个手写数字体脱机识别,在Matlab中对样本部分为进行16特征的提取,分别采用最小距离 ...

最新文章

  1. ecshop去掉“云服务中心”或者是“模板堂知识库”
  2. 去年亏11亿的寒武纪拟科创板募资28亿:三年总营收5.68亿,99%客户来自国内,曾从华为海思挖来CTO...
  3. PostgreSql入门命令
  4. 2008年CCNA第三学期第一单元中文题目(2008-12-21 18:30:01
  5. fraction函数的分数处理
  6. ShellExecute, WinExec, CreateProcess区别
  7. .xz是什么文件怎么解压_zip解压app下载-zip解压app安卓版下载v11.5.6
  8. eclipse控制台自动换行不分割单词_这 7 个实用的文档技巧,不掌握就太可惜了...
  9. 基于PCL实现欧式聚类提取
  10. Java的echo_简单的Java echo服务器问题
  11. 跨专业留学学计算机硕士,跨专业申请中国香港计算机硕士需要注意哪些?
  12. linux 安装org2pg_Ora2Pg的安装和使用
  13. 【游戏】基于 matlab GUI lanchester作战模拟设计【含Matlab源码 426期】
  14. 红米2 miui android5.1,Redmi 2 MIUI7 Android 5.1闪回到Android 4.4和第三方Rec更新5
  15. 首都师范 博弈论 5 4 2 Shapley值应用案例
  16. AD怎么设置相同网络的线宽
  17. 人机交互-3-评估的基础知识
  18. 实例详解ISA防火墙策略元素
  19. 日常一记(2)--vba修改模块名
  20. 一位36岁程序员的困惑

热门文章

  1. 经典网页布局浮动广告
  2. 微机原理之80C51结构
  3. 【Paper material】
  4. leetcode-Algorithms-LC-2 |分式化简
  5. Mesos Framework开发
  6. 高尔夫launch monitor
  7. 安卓12解除进程限制的第一种方式:VMOS助手
  8. 一种更高效的费用流算法——zkw费用流
  9. PDU在计算机网络第几章,【计算机网络】第一章习题总结
  10. 新生--七年就是一辈子