一、简介
基于matlab数字图像处理的水果识别,本文使用软件MATLAB对多种水果混合图片进行水果提取与识别,利用软件采集图像,对图像进行去噪,灰度化,二值化处理,为填补二值化后图像中出现的断边、孔洞,使用Sobel算子进行边缘提取来接合断边,并用腐蚀,膨胀算法填充孔洞,再标签化处理图像并提取水果的颜色、形状、边缘特征。实验结果表明:所提出的方法能够获得很高的正确识别率,能够有效地将同一幅图像中的不同水果识别出来。
二、部分源码
clear;
clc;
close all;
%1读取原图,并处理成二值图像
I=imread('水果分类实验图像2.jpg');
I2=rgb2gray(I);
BW=im2bw(I2,0.9);
total=bwarea(~BW)
figure,subplot(1,3,1),imshow(I),title('原始图像');
subplot(1,3,2),imshow(I2),title('灰度图像');
subplot(1,3,3),imshow(BW),title('二值图像');
%2进行边缘检测 得到了不连续的图形边界(采用sobel算子或区域增长)
%3得到各个图形的连续边界
SE=strel('rectangle',[40 30]); % 结构定义
J2=imopen(BW,SE); % 开启运算
figure,imshow(J2),title('对二值图像进行开运算后的结果图像');
SE=strel('square',5); % 定义3×3腐蚀结构元素
J=imerode(~J2,SE);
BW2=(~J2)-J; % 检测边缘
figure,imshow(BW2),title('3*3腐蚀运算后的图像边界轮廓');
%填充了已有的检测的连续形状边界
B = imfill(BW2,'holes');
B = bwmorph(B,'remove');
figure,imshow(B),title('提取出的边界图像');
%3-2将不同的图形进行分别标记,num表示连接的图形对象的个数
[Label,num] = bwlabel(B,8);
三、运行结果
四、matlab版本
MATLAB R2019a
五、学习与交流
文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信