【人民币识别】基于matlab人民币纸币识别系统【源码38】

一、简介

基于matlab人民币纸币识别系统,本设计通过提取人民币数字区域的特征,分析对比不同面值人民币的特征区域差别,使用 MATLAB 软件实现对人民币的面值大小的准确识别。仿真结果表明,本系统可以对第五版(2005年)人民币进行准确识别。

二、部分源码

function result = recgnise()

%%%%%声明全局变量%%%%%
global result;
global l;
global x;
global I6;
global I5;

l = getImage();                %读入图像
l1=rgb2gray(l);                %将真彩色图像转换为灰度图像
bw1=edge(l1,'sobel', 'both');  %采用sobel算子进行边缘检测
theta=0:179;                   %定义theta角度范围
r=radon(bw1,theta);            %对图像进行Radon变换

%%%%%检测Radon变换矩阵中的峰值所对应的列坐标%%%%
[m,n]=size(r);
c=1;
for i=1:m
    for j=1:n
        if  r(1,1)<r(i,j)
           r(1,1)=r(i,j);
            c=j;
        end
    end
end

%%%%%求纸币行起始位置和终止位置%%%%%
[y,x]=size(pic_bwareaopen);
I6=double(pic_bwareaopen);
Y1=zeros(y,1);
 for i=1:y
    for j=1:x
             if(I6(i,j,1)==1) 
                Y1(i,1)= Y1(i,1)+1; 
            end  
     end       
 end
[temp MaxY]=max(Y1);
%%
%%%%%%求纸币列起始位置和终止位置%%%%% 

PY1=MaxY;
 while ((Y1(PY1,1)>=50)&&(PY1>1))
        PY1=PY1-1;
 end    
 PY2=MaxY;
 while ((Y1(PY2,1)>=50)&&(PY2<y))
        PY2=PY2+1;
 end
 IY=pic(PY1:PY2,:,:);
 X1=zeros(1,x);
 for j=1:x
     for i=PY1:PY2
            if(I6(i,j,1)==1)
                X1(1,j)= X1(1,j)+1;               
            end  
     end
 end
%%
%%提取并画出背景中的RMB图像%%

 PX1=1;
 while ((X1(1,PX1)<3)&&(PX1<x))
       PX1=PX1+1;
 end    
 PX2=x;
 while ((X1(1,PX2)<3)&&(PX2>PX1))
        PX2=PX2-1;
 end
dw=pic(PY1:PY2,PX1:PX2,:); 
dw_gray=rgb2gray(dw);%将真彩色图像RGB转换为灰度强度图像
dw_gray=imadjust(dw_gray,[0,1],[1,0]);%用于调节灰度图像的亮度
dw_bw=im2bw(dw_gray);%灰度图像转变为二值图像
%%
%%分割提取RMB数值图像%%

[m,n]=size(dw_bw);
m1=round(m/3);
m2=round(2*m/3);
n1=round(n/6);
n2=round(n/3);
n3=round(2*n/3);
n4=round(5*n/6);
sum1=sum(sum(dw_bw(m1:m2,n1:n2)));
sum2=sum(sum(dw_bw(m1:m2,n3:n4)));
if sum1>sum2
    dw=imrotate(dw,180,'crop');
end

%%
%%图像处理%%
x=dw;
x1=imresize(x,[236,500]);%'缩放图像
z=imcrop(x1,[270,150,160,65]);%对图像进行剪切,选取有效区域
%% 
 I=imcrop(x1,[130,60,130,65]);    %对图像进行剪切,选取有效区域
 I1=rgb2gray(I);    %转换为灰度图像
 I2=medfilt2(I1);    %滤波默认窗口
 I3=imadjust(I2,[0.3,0.5],[0,1],1);   %明暗反转
 I4=im2bw(I3);
 se=strel('rectangle',[3,3]);   %构造结构函数,以长方形构造一个se
 
    I5=imdilate(I4,se);            %图像膨胀
    I5=imerode(I5,se);             %图像腐蚀
    I5=~I5;
%% 
    
    [p,n]=size(I5);
     X1=1;
    while(sum(I5(:,X1))<15&&X1<n)
        X1=X1+1;
    end
    X2=n;
    while(sum(I5(:,X2))<15&&X2>1)
        X2=X2-1;
    end
 
    I6=I(:,X1:X2,:);%I6
    I7=I4(:,X1:X2); %I7
%%   
fR=z(:,:,1);%提取红色分量
fG=z(:,:,2);%提取绿色分量
fB=z(:,:,3);%提取蓝色分量
averageR=mean(mean(fR));
averageG=mean(mean(fG));  %返回RGB元素的平均值
averageB=mean(mean(fB));

%%%通过图像RGb分量判断RMB币值   
if averageR-averageG>35
 result=100;  

else
       [m,n]=size(I6);
 %通过提取出的数值图像的大小 来判断币值
    if(n<=90)
         result=1; %一位数值宽度
    end
    
    if(n>90&&n<165)   
         result=5; %一位数值宽度
    end
    
    if(n>310)  
         result=100;%三位数值宽度
    end

    if(n>=165&&n<310)
        
        I7=I4(:,X1:X2);%I7       
        se=strel('rectangle',[35,5]);
        I8=imdilate(I7,se);
        I9=imerode(I8,se);
        I10=~I9;
        
        [M,N]=size(I10);
        M1=round(M/3);
        M2=round(2*M/3);
        N1=round(N/2);
        ui1=sum(sum(I10(1:M1,1:N1)));
        ui2=sum(sum(I10(M1:M2,1:N1)));
        ui3=sum(sum(I10(M2:M,1:N1)));
        
        if(ui1>25&&ui2>150&&ui3>25)
             result=10;
        else
            %通过RGB分量判断 20 与 50
            r=mean(mean(I6(:,:,1)));
            g=mean(mean(I6(:,:,2)));
            b=mean(mean(I6(:,:,3)));
            
            
                if(r>=110)
                  result=20;              
                else    
                  result=50;
                end
                
        end
    end
end

      三、运行结果

四、matlab版本

MATLAB R2019a

五、学习与交流

文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私信

  • 31
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matlab指纹识别系统源码主要有以下几个关键步骤: 1. 预处理:在该步骤中,使用Matlab对原始指纹图像进行一系列的预处理操作,如去噪、增强图像对比度等。可以使用方法如中值滤波、高斯滤波和直方图均衡化来实现。 2. 特征提取:在该步骤中,使用一些特征提取算法从预处理过的指纹图像中提取出关键的特征信息。常用的方法有方向梯度直方图(Directional Gradient Histogram,DGH)和小波变换(Wavelet Transform)等。这些特征可以代表指纹在局部和全局上的几何和纹理特性。 3. 特征匹配:在该步骤中,将提取到的特征信息与数据库中的已知指纹进行比较,找到最佳匹配。常用的方法有基于相似性度量的匹配算法,如欧几里得距离、余弦相似度等。可以使用数据库索引技术来快速检索匹配指纹。 4. 性能评估:在该步骤中,对指纹识别系统的性能进行评估。常用的评估指标包括识别率、误识率、查准率和查全率等。可以使用交叉验证等技术来评估系统的鲁棒性和准确性。 综上所述,Matlab指纹识别系统源码主要包括图像预处理、特征提取、特征匹配和性能评估等关键步骤。具体的实现会涉及到各种图像处理和模式识别的算法,如滤波、特征选择、相似性度量等。通过这些源码,可以实现一个基于Matlab的指纹识别系统,实现指纹图像的自动识别和比对。 ### 回答2: 基于MATLAB的指纹识别系统源码主要包括以下几个模块:图像预处理、特征提取、特征匹配和识别。 图像预处理模块主要用于对原始指纹图像进行一系列的预处理操作,以提高后续特征提取和匹配的准确性和效果。预处理过程包括图像增强、图像去噪和图像增强。 特征提取模块是指从预处理后的指纹图像中提取出用于表示指纹特征的关键信息。常用的特征提取方法有针对指纹纹线和纹谷的方向图像、频域处理等。这些特征用于构建指纹特征向量,以实现指纹的唯一性和可区分性。 特征匹配模块将待识别的指纹特征与数据库中存储的已知指纹特征进行比对。匹配算法的主要目标是寻找相似度最高的指纹特征,并判断两个指纹是否属于同一个人。 识别模块是整个系统的核心部分,它通过将待识别的指纹特征与数据库中存储的指纹特征进行匹配,判断该指纹是否是已知指纹中的某一个,并输出相应的识别结果。 基于MATLAB的指纹识别系统源码需要综合运用图像处理、特征提取和匹配算法等知识,实现对指纹图像的全面分析和处理,并最终完成指纹的识别任务。这些源码可以通过MATLAB工具的函数调用、算法实现等方式来实现,以期达到高准确性和高性能的指纹识别效果。 ### 回答3: 基于MATLAB的指纹识别系统源码是一个用于识别和验证人类指纹的计算机程序。该源码使用MATLAB编程语言,结合指纹图像处理和模式识别算法,实现指纹的自动识别和比对。 源码的主要功能包括以下几个方面: 1. 图像预处理:源码首先通过读取指纹图像文件,将其转为灰度图像,并进行图像增强处理,以提高指纹的清晰度和对比度。 2. 特征提取:源码通过一系列特征提取算法,从指纹图像中提取出有代表性的特征,例如小岭值、方向和纹线等,并进行编码。 3. 特征匹配:源码通过比对提取出的特征,使用匹配算法来判断两个指纹是否匹配。常用的匹配算法包括最邻近匹配、哈希匹配等。 4. 数据管理:源码可以根据不同的识别需求,包括指纹的录入、存储和管理,以及指纹的更新、删除和查询。 5. 用户界面:源码还包含了较为友好的用户界面,用于指纹的录入、匹配和结果展示等操作,使得系统更易于使用。 通过合理利用这些功能,基于MATLAB的指纹识别系统能够实现高效准确的指纹识别和比对,广泛应用于身份验证、安全门禁和犯罪侦查等领域。用户可以根据需要对源码进行修改和优化,以满足特定的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值