一、简介
基于matlab图像处理的树叶种类识别
二、部分源码
close all
clear all
clc
tic
f=imread('test.tif');%读入测试图
A=double(f);%把灰度值转化为双精度
g=mat2gray(A);%灰度值归一化0到1之间
k=im2bw(g,0.4);%二值化,阈值0.4
imshow(k);
k=1-k;%反转
se=strel('disk',6);
fc=imclose(k,se);%闭运算
fc=imfill(fc,'hole');%填洞
figure,imshow(fc);
se=strel('disk',8);
fco=imopen(fc,se);%开运算
figure,imshow(fco);
BW=fco;
trainset=train();
trainset2=train2();%训练样本
imshow(f,[]);
[L,num] = bwlabel(BW); %标记
for t=1:num
[r c]=find(L==t);
r1=min(r);
c1=min(c);
r2=max(r);
c2=max(c);
IM{t}=BW(r1:r2,c1:c2);
% figure;imshow(BW(r1:r2,c1:c2))
phi=invmoments(IM{t}); %提取不变矩特征
Pset{t}=phi;
d(t)=norm(abs(log(Pset{t}(1:7)))-abs(log(trainset(1:7)))); %与训练样本进行匹配
d2(t)=norm(abs(log(Pset{t}(1:7)))-abs(log(trainset2(1:7))));
if d(t)<10
text((c2+c1)/2,(r2+r1)/2,'黄连木叶','BackgroundColor','red'); %显示结果
end
if d2(t)<10
text((c2+c1)/2,(r2+r1)/2,'朴树叶','BackgroundColor','green'); %显示结果
end
if Pset{t}(3:7)<0.00001
text((c2+c1)/2,(r2+r1)/2,'腊梅叶','BackgroundColor','yellow'); %显示结果
end
end
toc
三、运行结果
四、matlab版本
MATLAB R2019a
五、学习与交流
文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信