资源简介
matlab水果识别程序,可测试多幅图片,可用。配有完整代码,报告,图片。
代码片段和文件信息
clear;clc;close all;
%%%%%%%%%%%%%%%%% 读取原图,并处理成二值图像 %%%%%%%%%%%%%%%%%%%%%%%
%I=imread(‘梨2.jpg‘);
%I=imread(‘桃子2.jpg‘);
%I=imread(‘苹果2.jpg‘);
%I=imread(‘香蕉.jpg‘);
%I=imread(‘青椒.jpg‘);
I=imread(‘test4.jpg‘);
I2=rgb2gray(I);
BW=im2bw(I20.9);
figure(1)subplot(131)imshow(I)title(‘原始图像‘);
subplot(132)imshow(I2)title(‘灰度图像‘);
subplot(133)imshow(BW)title(‘二值图像‘);
%%%%%%%%%%%%%%%% 进行边缘检测 得到不连续的图形边界 %%%%%%%%%%%%%%%%%%%%%%
%得到各个图形的连续边界
SE=strel(‘rectangle‘[40 30]); % 结构定义
J2=imopen(BWSE); % 开启运算
figure(2)imshow(J2)title(‘对二值图像进行开运算‘);
SE=strel(‘square‘5); % 采用方形结构元素进行腐蚀
J=imerode(~J2SE);
BW2=(~J2)-J; % 检测边缘
figure(3)imshow(BW2)title(‘边缘检测‘);
%填充了已有的检测的连续形状边界
B = imfill(BW2‘holes‘);%图像填充
B = bwmorph(B‘remove‘);%移除内部像素
figure(4)imshow(B)title(‘提取出的边界图像‘);
%将不同的图形进行分别标记,num表示连接的图形对象的个数
[Labelnum] = bwlabel(B8);
%%%%%%%%%%%%%%%%%%%计算各个图形单元边界像素点数%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i = 1 : num
Premeter(i) = 0;
end
[rowcol] = size(Label);
for i = 1 : row
for j = 1 : col
if(Label(ij) > 0)
Premeter(Label(ij)) = Premeter(Label(ij)) + 1;%计算标记后的各块图形边界中像素的个数的总数
end
end
end
%%%%%%%%%%%%%%%%%%% 计算各个图形单元的面积%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FilledLabel = imfill(Label‘holes‘); %填充标记过的边界线中间围成的图形区域
figureimshow(FilledLabel)title(‘标记过并被填充的结果‘);
for i = 1 : num
Area(i) = 0;
end
[rowcol] = size(FilledLabel);
for i = 1 : row
for j = 1 : col
if(FilledLabel(ij) > 0)
Area(FilledLabel(ij)) = Area(FilledLabel(ij)) + 1; %通过统计像素点个数的方式来求各形状的面积
end
end
end
%%%%%%%%%%%%%%%%%% 计算各个图形单元的圆度 %%%%%%%%%%%%%%%%%%%%%%%%%%
for i = 1 : num
Ecllipseratio(i) = 4*pi*Area(i)/Premeter(i)^2;
end
%%%%%%%%%%%%%%%%%%%% 计算各个图像的色度 %%%%%%%%%%%%%%%%%%%%%
HSV = rgb2hsv(I); %转换为HSV,为后面的色度元素的提取做准备
[rowcol] = size(FilledLabel); %统计填充后的图形中各块图形所含像素的个数的多少
MeanHue = zeros(1num);
for i = 1 : num
Hue = zeros(Area(i)1);
nPoint = 0;
for j = 1 : row
for k = 1 : col
if(FilledLabel(jk) == i)
nPoint = nPoint + 1;
Hue(nPoint1) = HSV(jk1);
end
end
end
Hue(:i) = sort(Hue(:1));
for j = floor(nPoint*0.1) : floor(nPoint*0.9)
MeanHue(i) = MeanHue(i) + Hue(j1);
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(jk) ~=pear)
pearHSV(jk3)=0;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2014-05-04 11:04 大设计\
文件 5191 2014-05-03 21:10 大设计\final.m
文件 23733 2014-05-03 10:27 大设计\test1.jpg
文件 20824 2014-05-02 22:48 大设计\test2.jpg
文件 18189 2014-05-03 09:11 大设计\test3.jpg
文件 81877 2014-05-03 10:35 大设计\test4.jpg
文件 1401421 2014-05-04 10:54 大设计\大设计报告.docx
文件 923905 2014-05-04 10:56 大设计\大设计报告.pdf
文件 5776 2014-05-02 14:52 大设计\无.png
文件 17213 2014-05-03 10:10 大设计\桃子1.jpg
文件 14903 2014-05-03 09:37 大设计\桃子2.jpg
文件 6996 2012-10-25 08:59 大设计\梨1.jpg
文件 22336 2014-05-03 10:15 大设计\梨2.jpg
文件 9356 2014-05-02 16:41 大设计\苹果1.jpg
文件 19645 2014-05-02 16:44 大设计\苹果2.jpg
文件 12359 2014-05-02 21:00 大设计\青椒.jpg
文件 35508 2012-10-24 18:25 大设计\香蕉.jpg
相关资源
- 含统一潮流控制器(UPFC)的IEEE9 sim
-
混合动力汽车HEV的simuli
nk仿真模型 - KSVD OMP处理图像的程序
- 研究自动导引车系统控制器设计与调
- 时间反转镜的源程序
- HoG SVm 人脸识别方
- matlab仿真的载波同步算法-Fitz算法
- 超宽带TOA定位卡尔曼滤波定位算法m
- WCDMA系统中随机接入(PRACH)过程的仿
- matlab图像识别农作物病虫害
- wind_pmsg
- SOH的关于IMU算法的源代码和测试工程
- matlab实现的综合评价的熵权法
- matlab基于混沌映射对图像加密和解密
- cec2013基准测试函数 matlab源程序
- 载波恢复与符号定时的仿真 (carrie
- 等距映射(ISOMAP)算法的matlab实现
- 利用压缩感知的关联成像程序,计算
- matlab计算复杂网络中节点的紧密中心
- matlab仿真的图像序列的柱面全景拼接
- 欧拉运动放大视频和代码
- matlab神经网络43个案例分析的代码及数
- matlab混凝土(Concrete )骨料(Bone )随
- Direct-driven-PMSG
- 稀疏恢复算法 focuss
- 蒙特卡洛模拟光子在组织中的运动m
- ERADistNataf MATLAB
- bp神经网络的adp小程序
- 主动声纳
- Particle Swarm Optimization(PSO) Algorithm
评论
共有 条评论