当前位置: 代码迷 >> 综合 >> 【图像识别】基于HU不变矩实现树叶识别matlab代码
  详细解决方案

【图像识别】基于HU不变矩实现树叶识别matlab代码

热度:13   发布时间:2023-12-03 22:44:11.0

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)<10text((c2+c1)/2,(r2+r1)/2,'type1','BackgroundColor','red'); %显示结果
end
if d2(t)<10text((c2+c1)/2,(r2+r1)/2,'type2','BackgroundColor','green'); %显示结果
end
if Pset{t}(3:7)<0.00001text((c2+c1)/2,(r2+r1)/2,'type3','BackgroundColor','yellow'); %显示结果
end
end
toc

3 仿真结果

4 参考文献

[1]张鸿锋, 李婉琪, 曾昭君,等. Hu不变矩在图像识别中的应用与实现[J]. 科技资讯, 2014(30):4.

部分理论引用网络文献,若有侵权联系博主删除。

5 MATLAB代码与数据下载地址

见博客主页

  相关解决方案