1 简介
Hu不变矩是图像的一种统计特征,因其具有平移,旋转与比例不变性而被广泛应用于图像识别领域.该文以MATLAB作为技术实现平台,以Hu不变矩作为判断依据,配合数字形态学,欧氏判据等数学方法,通过基于MATLAB的算法进行程序设计,实现区域图像特征数据获取,并与库内图像特征数据进行对比,选出与最接近的一组数据,实现叶片图像识别的目的.计算机模拟结果表明该方法的有效性和可行性.
2 部分代码
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))));
% [M N]=min(d);
% result{t}=b(N); %保存结果
if d(t)<10
text((c2+c1)/2,(r2+r1)/2,'type1','BackgroundColor','red'); %显示结果
end
if d2(t)<10
text((c2+c1)/2,(r2+r1)/2,'type2','BackgroundColor','green'); %显示结果
end
if Pset{t}(3:7)<0.00001
text((c2+c1)/2,(r2+r1)/2,'type3','BackgroundColor','yellow'); %显示结果
end
end
toc
3 仿真结果
4 参考文献
[1]张鸿锋, 李婉琪, 曾昭君,等. Hu不变矩在图像识别中的应用与实现[J]. 科技资讯, 2014(30):4.
部分理论引用网络文献,若有侵权联系博主删除。
5 MATLAB代码与数据下载地址
见博客主页