资源简介
该代码用于图像分类,分割识别。其中包括特征提取。图像处理,把一幅图片中不同类型的水果进行自动分类,识别
代码片段和文件信息
%1读取原图,并处理成二值图像
I=imread(‘水果分类实验图像.jpg‘);
I2=rgb2gray(I);
BW=im2bw(I20.9);
total=bwarea(~BW)
figuresubplot(131)imshow(I)title(‘原始图像‘);
subplot(132)imshow(I2)title(‘灰度图像‘);
subplot(133)imshow(BW)title(‘二值图像‘);
%2进行边缘检测 得到了不连续的图形边界(采用sobel算子或区域增长)
%3得到各个图形的连续边界
SE=strel(‘rectangle‘[40 30]); % 结构定义
J2=imopen(BWSE); % 开启运算
figureimshow(J2)title(‘对二值图像进行开运算后的结果图像‘);
SE=strel(‘square‘5); % 定义3×3腐蚀结构元素
J=imerode(~J2SE);
BW2=(~J2)-J; % 检测边缘
figureimshow(BW2)title(‘3*3腐蚀运算后的图像边界轮廓‘);
%填充了已有的检测的连续形状边界
B = imfill(BW2‘holes‘);
B = bwmorph(B‘remove‘);
figureimshow(B)title(‘提取出的边界图像‘);
%3-2将不同的图形进行分别标记,num表示连接的图形对象的个数
[Labelnum] = bwlabel(B8);
%得到各个图像的边界像素的数组
%4计算各个图形单元的周长 用连接像素点或数边界像素点个数的方法 numPoints数组表示各个图形边界的像素个数(即用个数来表示周长)
%num = max(max(Label));
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
%5计算各个图形单元的面积
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
%6计算各个图形单元的圆度
for i = 1 : num
Ecllipseratio(i) = 4*pi*Area(i)/Premeter(i)^2;
end
%7计算各个图像的颜色(色度)
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
%8识别桃
%8-1构建桃的分类器,在二维特征空间对各个图像进行类别区分
pitch=0;
for i=1:num
if(MeanHue(i)>0.5) %分类器识别桃的准则:判断各个图形中平均色度值大于0.5的为桃
pitch=i;
end
end
%8-2对分出来的类别分别构建相应的图像掩膜,并用对原图的亮度图像进行掩膜操作
pitchHSV=HSV;
[rowcol] = size(FilledLabel); %统计填充后的图形中各块图形所含像素的个数的多少
%MeanHue = zeros(1num);
for j = 1 : row
for k = 1 : col
if(FilledLabel(jk) ~=pitch)
%pitchHSV(jk2)=0;
pitchHSV(jk3)=0;
end
end
end
%8-3变换生成最终的结果图像,图像中显示的结果即对应分类器中指定的类别
pitchmatrix = hsv2rgb(pitchHSV); %转换为RGB彩图,彩图中已经滤去了其余水果,只剩下桃
figureimshow(pitchmat
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1344919 2010-12-03 09:42 水果分类代码\1.fig
文件 574332 2010-12-03 09:42 水果分类代码\10.fig
文件 15960 2010-12-03 09:42 水果分类代码\2.fig
文件 16828 2010-12-03 09:42 水果分类代码\3.fig
文件 16391 2010-12-03 09:42 水果分类代码\4.fig
文件 16502 2010-12-03 09:42 水果分类代码\5.fig
文件 460856 2010-12-03 09:42 水果分类代码\6.fig
文件 852254 2010-12-03 09:42 水果分类代码\7.fig
文件 659433 2010-12-03 09:42 水果分类代码\8.fig
文件 546823 2010-12-03 09:42 水果分类代码\9.fig
文件 6787 2010-12-03 09:42 水果分类代码\combinework2.m
文件 149493 2010-12-03 09:42 水果分类代码\水果分类实验图像.jpg
目录 0 2010-12-03 09:42 水果分类代码
----------- --------- ---------- ----- ----
4660578 13
- 上一篇:电梯模拟c实现
- 下一篇:东北大学软件工程历年真题
相关资源
- 论文研究 - 傅立叶描述子在外周血涂
- 基于tensorflow的深度学习图像分类案例
- 图像识别程序代码Version 2.0 January 20
- 微信小程序使用AI开放平台,实现图像
- 煤矸石图像分类方法
- 医学图像识别研究
- OpenCV使用随机森林实现对图像分类
- 基于神经网路的遥感图像分类
- 不事后解释+可解释图像分类方法 .p
- 灰度共生矩阵下的遥感图像分类处理
- 勘智K210 20种物体识别工程添加图像处
- 基于人工神经网络的图像识别和分类
- ISODATA算法实现图像分类
- bp神经网络图像识别
- tesseract-ocr/tessdata 语言包
- 图像分类SVM
- 图像分类代码
- 基于概率密度分布一致约束的最小最
- 基于STM32的图像识别基于STM32的图像识
- opencv数码管识别程序
- 基于图像识别的电熨斗点胶机系统
- opencv图像分类样本
- 基于深度学习的图像检索研究
- gif动态彩图转化黑白动画简单图形识
- 基于卷积神经网络的图像识别
- OpenMv教程由入门到精通
- 基于卷积神经网络的图像识别算法的
- 基于卷积神经网络的图像分类
- 花卉图像识别与分类
- 背景差分法进行图像识别
评论
共有 条评论