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代码与数据下载地址
见博客主页