ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【树叶识别】HU不变矩树叶识别【Matlab 740期】

2021-04-27 12:59:59  阅读:187  来源: 互联网

标签:740 树叶 imshow fc Hu BW 识别 se


一、简介

本课题为基于MATLAB HU不变矩的树叶识别系统。通过计算各种树叶的几何特征,判断树叶属于什么类型。
几何矩是由Hu(Visual pattern recognition by moment invariants)在1962年提出的,具有平移、旋转和尺度不变性。
在这里插入图片描述
在这里插入图片描述
这7个不变矩构成一组特征量,Hu.M.K在1962年证明了他们具有旋转,缩放和平移不变性。
实际上,在对图片中物体的识别过程中,只有 和 不变性保持的比较好,其他的几个不变矩带来的误差比较大,有学者认为只有基于二阶矩的不变矩对二维物体的描述才是真正的具有旋转、缩放和平移不变性( 和 刚好都是由二阶矩组成的)。不过我没有证明是否是真的事这样的。
由Hu矩组成的特征量对图片进行识别,优点就是速度很快,缺点是识别率比较低,我做过手势识别,对于已经分割好的手势轮廓图,识别率也就30%左右,对于纹理比较丰富的图片,识别率更是不堪入眼,只有10%左右。这一部分原因是由于Hu不变矩只用到低阶矩(最多也就用到三阶矩),对于图像的细节未能很好的描述出来,导致对图像的描述不够完整。
Hu不变矩一般用来识别图像中大的物体,对于物体的形状描述得比较好,图像的纹理特征不能太复杂,像识别水果的形状,或者对于车牌中的简单字符的识别效果会相对好一些。
定义如下:
① (p+q)阶不变矩定义:
② 对于数字图像,离散化,定义为:
③ 归一化中心矩定义:
④Hu矩定义

二、源代码

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))));
  
 
end
function [trainset]= train( )
%TRAIN Summary of this function goes here
%   Detailed explanation goes here

     f= imread('train_1.tif');
 A=double(f);
g=mat2gray(A);
k=im2bw(g,0.4);

k=1-k;
se=strel('disk',6);
fc=imclose(k,se);
fc=imfill(fc,'hole');

se=strel('disk',15);
fco=imopen(fc,se);
%BW=im2bw(I,0.001);
%BW=imfill(BW,'hole'); 
%SE=strel('disk',10);
%BW=imopen(BW,SE);
% figure;imshow(BW);
BW=fco;
[r c]=find(BW==1);
    r1=min(r);
    c1=min(c);
    r2=max(r);
    c2=max(c);
    function phi = invmoments(F)
%INVMOMENTS Compute invariant moments of image.
%   PHI = INVMOMENTS(F) computes the moment invariants of the image
%   F. PHI is a seven-element row vector containing the moment
%   invariants as defined in equations (11.3-17) through (11.3-23) of
%   Gonzalez and Woods, Digital Image Processing, 2nd Ed.
%
%   F must be a 2-D, real, nonsparse, numeric or logical matrix.

%   Copyright 2002-2004 R. C. Gonzalez, R. E. Woods, & S. L. Eddins
%   Digital Image Processing Using MATLAB, Prentice-Hall, 2004
%   $Revision: 1.5 $  $Date: 2003/11/21 14:39:19 $

if (ndims(F) ~= 2) | issparse(F) | ~isreal(F) | ~(isnumeric(F) | ...
                                                    islogical(F))
   error(['F must be a 2-D, real, nonsparse, numeric or logical ' ...
          'matrix.']); 
end

F = double(F);

phi = compute_phi(compute_eta(compute_m(F)));
  
%-------------------------------------------------------------------%
function m = compute_m(F)

[M, N] = size(F);
[x, y] = meshgrid(1:N, 1:M);
  
% Turn x, y, and F into column vectors to make the summations a bit
% easier to compute in the following.
x = x(:);
y = y(:);
F = F(:);
  
% DIP equation (11.3-12)
m.m00 = sum(F);
% Protect against divide-by-zero warnings.
if (m.m00 == 0)
   m.m00 = eps;
end

三、运行结果

在这里插入图片描述

四、备注

完整代码或者代写添加QQ 912100926

标签:740,树叶,imshow,fc,Hu,BW,识别,se
来源: https://blog.csdn.net/m0_54742769/article/details/116198303

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有