指纹识别探索rharles在cnblogs

指纹识别的一般步骤为指纹采集、预处理、特征点提取、特征点匹配。指纹分为螺旋形、弓形、环形。指纹的处理效果影响着后面特征点的提取和识别效果,所以图像的预处理占有重要的地位。指纹采集一般有专业的设备,所以这一步骤一搬不关注。

①预处理

因为采集指纹时力度和各种因素所以采集的指纹灰度图会有很大不同,首先对图像进行归一化处理,归一化主要针对两个步骤:大小和灰度值。把采集到的指纹图统一调整到特定大小。灰度值我会根据整幅图的均值方差调整到某一范围内。

归一化处理完毕后会对图像进行分割处理,目的是区分出前景色和背景色。我采用的分割为根据多区域阈值分割。多区域分割的效果取决于区域的大小,而指纹的区域分为一脊一谷最好,所以我选择3x3的区域大小。我会根据对区域多次进行求均值和方差进行分割。采集到的指纹图背景的灰度值大于前景色,背景主要为低频,所以背景的方差小于前景的方差。我分别求得背景和前景的均值和方差然后会得到背景为白色 脊线为黑色。然后保存在矩阵e(二值图)中,我会根据e中位置等于1的点的八邻域点的和小于四得到背景色,达到背景和前景分离(e矩阵)。然后黑白反转让感兴趣的前景色变为白色(保存在Icc中),灰度图(gray)的背景值替换为小区域块的和的均值(G1).但是得到的脊线方向并不能达到准确识别指纹。所以下一步会沿脊线方向增强指纹纹路,采用的方法为基于脊线方向场的增强方法。为了估计脊线的方向场,把脊线的方向场划分为八个方向,然后根据八个方向的灰度值的总和来得到脊线的方向。并对图像进行二值化。此时脊线还是为黑色。因为各种采集原因(油脂水分等)会使指纹粘连断裂,会影响后续的特征提取和识别,接下来会去除指纹中的空洞和毛刺,如果当前位置点值为0(背景)该点的四邻域点(上下左右)的和大于3则为毛刺,空洞的判断方法为该点为白色(背景)的四周为黑色(前景)八领域点两的和为0,则为空洞。我们得到的图像的纹线仍具有一定的宽度,而指纹的识别只与纹线的走向有关。所以我们只需要纹线的宽度为一个像素宽度即可。下面我执行了黑白反转使感兴趣的区域(纹线)变为白色。在执行开操作和闭操作使边界平滑,消除细小的尖刺,断开窄小的连接。执行细化(bwmorph)得到细画图(thin)。

②特征点提取

特征点提取的点为端点和交叉点,遍历细化图的每一个像素点,端点的判别方法为八领域点两两相减取绝对值求和如果值为2则为端点(周围只有一个为1的白色点)和为6时为交叉点(周围有三值为1的白色点)。把找到的端点位置存储在txy(Nx3),第一列存储x的位置,第二列存储y的位置,第三列标识点的类别,如果为交叉点则值为6,如果端点则值为2.然后对纹线再次进行光滑处理。原理:找到每个端点,使其沿着纹线的方向移动五个像素,如果在五个像素之内遇到交叉点则此点为毛刺,去除此点。判断离端点num个距离内是否有另一个端点的函数为walk判断的主要方法先将该点置为0然后根据八领域点和;和为0或大于2则证明该点距离num内有端点,然后循环向前遍历。惊醒光滑处理后的特征点比以前少了。但是我们采集指纹时由于采集器的关系,图像的边缘会有很多端点,这已然会影响后续的识别工作,所以我们需要特征点中去除这些端点,cut函数主要做这些工作,边缘的主要特征就是黑色多白色少,也就是均值小,所以我主要里用灰度图的分区域(31*31)求均值如果灰度值小于70则在该区域的特征点去除,然后会得到更少的特征点,但这些点依然不够少说明不够特殊,下面定义了combine(thin,r,txy,num)函数可以找出周围半径为r个像素的圆内没有任何端点和交叉点,沿纹线走num个距离没有交叉点和端点,comine为walk和single_point函数的综合,walk函数上面已经介绍,single_point函数主要是找出独特的点作为特征点,原理是根据两个端点之间的距离。求每个端点距离其他端点的距离,找取距离大于r的端点。执行完combine后会得到更少的端点(实验结果为3个端点)。

③特征点匹配

特征点匹配主要采用三个方法

1. 根据距离判断

找到某一个特征点,从该特征点沿着纹线走num个距离,并计算出每走一步距离该特征点的距离,最后会得到哟个装有长度信息的数组,如果两幅指纹相同则他们含有相同的特征点而且得到的数组对应的位置的数据基本相等

2三角形边长匹配,找到一个特征点以后,可以找出距离最近的两个端点与原特征点构成三角形,若两幅图的三角形的边长比例相等则说明两幅图匹配

3. 点类型匹配

4. 找到一个特征点以后,找出距离最近的num个端点,统计num个端点中端点和交叉点的个数,若两幅图匹配,则端点占的比例大致相同

读入指纹图片,通过预处理,特征点提取来识别指纹

二、现实意义:

指纹识别技术在现实生活中的意义主要体验在隐私安全保护上,可通过指纹特征点的多个特征来识别不同人的指纹来达到保护隐私安全,是具有及其重要的现实作用的。

三、涉及知识内容:

1、中值滤波

2、开运算

3、闭运算

4、二值化

5、图像细化

四、实例分析及截图效果:

(1)代码显示:

1、程序中定义图像重要变量说明

(1)image--------------------------------------------------------------原图变量;

(2)gray-------------------------------------------------------归一化后的图像;

(3)Icc-------------------------背景前景分离后的二值图;

(4)thin---细化图

(5)txy--------------------------特征点存储的矩阵;

(6)pxy----------------------特征点筛选后的特征点;

2、重要实现代码:

%找出独特的端点作为特征点  一个端点的周围半径为r个像素的圆内没有任何端点或交叉点

%随着r的逐渐变大,这样的点会变少,也就会越来越独特

function [pxy2,error]=single_point(txy,r)

error=0;

x=txy(:,1);

y=txy(:,2);

n=length(x);

d(1:n,1:n)=0;

for j=1:n

for i=1:n

if(i~=j)

%计算两点间距离

d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);

else

d(i,j)=2*r;

end

end

end

[a,b]=min(d);

c=find(a>r);

pxy2=txy(c,:);

pxy2=pxy2(find(pxy2(:,3)==2),:);

t=size(pxy2,1);

if t==0

error=1;

else

plot(x,y,'b.');

hold on

plot(pxy2(:,1),pxy2(:,2),'r.');

End

% 特征点匹配

% 三角形边长匹配

% 找到一个特征点后,可以找出距离其最近的两个端点,与原特征点构成三角形,瑞两幅图像的三角形边长比例相等,则说明匹配

% find_point()找到最近的端点

function pxy=find_point(x0,y0,txy,num)

x=txy(:,1);

y=txy(:,2);

n=length(x);

k(1,n)=0;

lnn=0;

pxy(num,:)=[0,0,0];

for i=1:n

k(i)=sqrt((x(i)-x0)^2+(y(i)-y0)^2);

end

kk=sort(k);

for i=1:num

xiao=kk(i+lnn);

nn=find(k==xiao);

lnn=length(nn);

pxy(i,:)=[x(nn(1)),y(nn(1)),txy(nn(1),3)];

end

plot(x0,y0,'bo');

x0;

y0;

hold on;

plot(pxy(:,1),pxy(:,2),'ro');

% ff=(sum(abs((dd1./dd2)-1))) ff越接近0匹配度越高

3、运行效果截图:

第一步:读取原图,并显示

f=imread(image);

f=imresize(f,[363,312]);

figure;imshow(f);

第二步:归一化,将指纹灰度值调整到特定范围内

%归一化,灰度值限制在某一范围

M=0;var=0;

%均值

for x=1:m

for y=1:n

M=M+gray(x,y);

end

end

M1=M/(m*n);

%方差

for x=1:m

for y=1:n

var=var+(gray(x,y)-M1).^2;

end;

end;

var1=var/(m*n);

for x=1:m

for y=1:n

if gray(x,y)>M1

gray(x,y)=150+sqrt(2000*(gray(x,y)-M1)/var1);

else

gray(x,y)=150-sqrt(2000*(M1-gray(x,y))/var1);

end

end

end

figure;imshow(uint8(gray));

第三步:细化图

Theshold = graythresh(Image);%取得图象的全局域值

Image_BW = im2bw(Image,Theshold);%二值化图象

figure,imshow(Image_BW);

title(' 【初次二值化图像】');

第四步:特征点提取

%找出独特的端点作为特征点  一个端点的周围半径为r个像素的圆内没有任何端点或交叉点

%随着r的逐渐变大,这样的点会变少,也就会越来越独特

function [pxy2,error]=single_point(txy,r)

error=0;

x=txy(:,1);

y=txy(:,2);

n=length(x);

d(1:n,1:n)=0;

for j=1:n

for i=1:n

if(i~=j)

%计算两点间距离

d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);

else

d(i,j)=2*r;

end

end

end

[a,b]=min(d);

c=find(a>r);

pxy2=txy(c,:);

pxy2=pxy2(find(pxy2(:,3)==2),:);

t=size(pxy2,1);

if t==0

error=1;

else

plot(x,y,'b.');

hold on

plot(pxy2(:,1),pxy2(:,2),'r.');

End

第五步:特征点的再次提取

% 综合walk和single_point函数,通过执行[pxy3,error2]=combine(thin,r,txy,num)可以找出周围半径为r个像素的院内没有任何交叉点或端点,并且沿纹线走num个

% 距离内没有任何哟个交叉点或端点

function [pxy3,error2]=combine(thin,r,txy,num)

error=0;

[pxy2,error]=single_point(txy,r);

n=size(pxy2,1);

k=1;

erroe2=0;

for i=1:n

[error,a,b]=walk(thin,pxy2(i,1),pxy2(i,2),num);

if error~=1

pxy3(k,1)=pxy2(i,1);

pxy3(k,2)=pxy2(i,2);

pxy3(k,3)=pxy2(i,3);

k=k+1;

error2=0;

plot(pxy2(i,1),pxy2(i,2),'r+');

end

end

第六步:特征识别

% 特征点匹配

% 三角形边长匹配

% 找到一个特征点后,可以找出距离其最近的两个端点,与原特征点构成三角形,瑞两幅图像的三角形边长比例相等,则说明匹配

% find_point()找到最近的端点

function pxy=find_point(x0,y0,txy,num)

x=txy(:,1);

y=txy(:,2);

n=length(x);

k(1,n)=0;

lnn=0;

pxy(num,:)=[0,0,0];

for i=1:n

k(i)=sqrt((x(i)-x0)^2+(y(i)-y0)^2);

end

kk=sort(k);

for i=1:num

xiao=kk(i+lnn);

nn=find(k==xiao);

lnn=length(nn);

pxy(i,:)=[x(nn(1)),y(nn(1)),txy(nn(1),3)];

end

plot(x0,y0,'bo');

x0;

y0;

hold on;

plot(pxy(:,1),pxy(:,2),'ro');

% ff=(sum(abs((dd1./dd2)-1))) ff越接近0匹配度越高

% 特征点匹配

% 纹线长度匹配 对于找到的特征点和纹线 沿着纹线走5个像素到原始端点的距离

function d=distance(x0,y0,num,thin)

num2=fix(num/5);

for i=1:num2

[error,a,b]=walk(thin,x0,y0,5*i);

if error~=1

d(i)=sqrt((a-x0)^2+(b-y0)^2);

else

break;

end

end

% 最后会得到一个装有长度信息的数组,如果两幅指纹途中的指纹是一样的,则他们含有相同的特征点和从这个特征点出发画出的纹线

% 则这两个数组对应位置的数据基本相等(图像大小相同,则他们的比例接近1)

% f=(sum(abs((d1./d2)-1)))f越接近0匹配度越高

% 找到一个特征点以后,在其周围找到四十个端点或交叉点,统计四十个点的交叉点和端点的个数

% 若两幅图断点占的比例近似相同则匹配

% fff=abs(f11-f21)/(f11+f12)越接近于0 匹配度越高

close all;

tic;

clear;

figure;

txy1=point(thin1);

txy2=point(thin2);

[w1,txy1]=guanghua(thin2,txy2);

[w2,txy2]=guanghua(thin2,txy2);

thin1=w1;

thin2=w2;

txy1=cut(thin1,txy1);

txy2=cut(thin2,txy2);

[pxy31,error2]=combine(thin1,8,txy1,60);

[pxy32,error2]=combine(thin2,8,txy2,60);

error=1;

num=20;

cxy1=pxy31;

cxy2=pxy32;

d1=distance(cxy1(1,1),cxy1(1,2),num,thin1);

d2=distance(cxy2(1,1),cxy2(1,2),num,thin2);

f=(sum(abs((d1./d2)-1)));

if(f<0.5)

error=0;

else

error=1;

end

第七步:最终检测结果:

f =

ff =

error =

fff =

时间已过 13.628304秒。

四、算法分析

(1)中值滤波

利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。

(2)开运算  先腐蚀后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。

(3)闭运算先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。

THE END
0.大班科学教案(15篇)1、让几个幼儿将指纹印在纸上,然后把纸放到实物投影仪上,让幼儿观察归纳指纹的类型。 2、找出三种指纹类型,分别给他们起名字。 (1)第一种叫弓型纹:它的纹路中心就象一把弯弯的弓箭一样。 (2)第二种叫蹄型纹:它的纹路中心向左或向右偏很象小马蹄子一样! jvzquC41yy}/qq6220ipo8pcqunj1sncqct08=>6:44ivvq
1.幼儿园大班社会活动教案14篇1.将几个幼儿的指纹印放到实物投影仪上,引导幼儿观察指纹的类 型。 2.找出三种指纹类型,分别给它们起名字。(第一种叫弓型纹,它的中心像一把弯弯的弓;第二种叫蹄型纹,它的中心向左或向右偏,很像马蹄;第三种叫涡型纹,它的中心像小旋涡。) 3.各人统计自己各类指纹的数量,巩固认识指纹的类型。 jvzq<84yyy4vpsx0eqs0lrfqcp5zq~jt1463598332>38<6a88945@80jvsm
2.社会活动我上幼儿园教案6篇1、将几个幼儿的指纹印放到实物投影仪上,引导幼儿观察指纹的类型。 2、找出三种指纹类型,分别给它们起名字。(第一种叫弓型纹,它的中心像一把弯弯的弓;第二种叫蹄型纹,它的中心向左或向右偏,很像马蹄;第三种叫涡型纹,它的中心像小旋涡。) 3、各人统计自己各类指纹的数量,巩固认识指纹的类型。 jvzquC41yy}/srzzwgyig7hqo1pjcx~w|krjcx4dgkqflrfqcp595>>90jznn
3.【2023版】Metasploit(MSF)下载安装及使用详解,永久免费使用,环境配置4.2 Metasploit中的 Payload 模块主要有以下三种类型: Single:   是一种完全独立的Payload,而且使用起来就像运行calc.exe一样简单,例如添加一个系统用户或删除一份文件。由于Single Payload是完全独立的,因此它们有可能会被类似netcat这样的非metasploit处理工具所捕捉到。 jvzquC41dnuh0lxfp0tfv8VKCPJYZ8ftvkimg8igvcomu864:6=8::9
4.指纹贴图素材指纹贴图图片元素觅元素是设计素材的免费下载网站,提供指纹贴图素材,指纹贴图图片,指纹贴图免抠素材设计元素,指纹贴图png图片透明背景等素材免费下载。jvzquC41yy}/7:~wcpyv0lto1v{qkjs1;::35@>7f7iedj<2f4;2/922/232/:
5.科学活动教案(合集15篇)鼓励学生动起来。可以向其他的同学借指纹;也可以向老师借指纹。 (3) 教师巡视指导,提醒学生做好纪录。 4. 交流答案,展示研究成果。 (引导学生将研究的方法、过程、研究的结果和遇到的问题都说出来。其他学生认真地倾听。) 5. 指纹的分类。 ① 教师出示三种指纹类型,主学生观察它的形状和我们日常生活中的哪种物jvzquC41yy}/qq6220ipo8pcqunj1sncqct08>53344ivvq
6.139邮箱安卓客户端隐私政策为了保证您能正常使用“指纹解锁或登录、面容解锁或登录”功能,我们在您使用该功能时,页面收集了本机设备硬件校验的指纹特征或面容特征,用于校验本机设备的指纹特征或面容特征。此类信息为提供本服务的必要信息,拒绝提供该信息仅会影响您使用该功能,但不会影响您使用我们的其他功能。 jvzquC41jvsm77rckn4229=80et0rn4RGagqr8utkxgd{Ytnke`Cwitqkj/j}rn
7.凯迪仕6113指纹锁报价参数图片论坛配置参数 详细参数 产品类型:智能门控 开锁方式:指纹,密码,感应卡,钥匙 产品功能:防风,防卡片开启锁舌设计防暴力,.>> 指纹认证:FPC半导体活体生物指纹 电池:1.5V(AA碱性电池)*4 拒真率:≤0.01% 误识率:≤0.0001% 外观设计:颜色:红古铜,香槟金 查看完整参数>> 超值推荐 小米智能门锁1S ¥1399 小米E10jvzquC41fgzbku3|qn4dqv3ep1jpq{ggnn5jpmjz34717<=0ujznn
8.指纹与科技的融合正版高清图片下载光厂图片(VJshi图片)为您提供指纹与科技的融合正版高清图片下载,图片编号5568842,图片像素4122*2460,更多图片下载,尽在光厂图片。jvzquC41yy}/xsxjk0ipo8ujqvut1mjvckr07>;::68
9.手机指纹识别真的安全吗?指纹,是表皮上突起的纹线。虽然指纹人人皆有,但各不相同。伸出手,仔细观察,就可以发现小小的指纹也分好几种类型。据说还没有发现两个指纹完全相同的人,所以指纹听起来显得十分独一无二。自iPhone 5s发布之后指纹识别技术开始被人们所关注,那时这项技术给人的感觉是十分高大上,之后一些安卓手机也采用了指纹识别传感jvzq<84rtqjve}3reqtmkwj0eqs/ew4kvdq0dt}v13;198;86:76;7mvon
10.架构案例分析知识点汇总恢复块方法数据流图中的错误包括两类:第一类是逻辑错误,加工节点输入输出不平衡,包括黑洞、灰洞和无输入三种类型;第二类是语法错误,比如数据存储不完整、在数据存储与外部代理之间或者各自之间没有经过加工之间发生数据流等。 软件系统数据架构建模 数据架构定义了信息系统中文件和数据库的分布结构。数据架构建模是以数据为中心,建jvzquC41dnuh0lxfp0tfv8jqwyfp|mcp1gsvrhng1jfvjnnu174:<=2866
11.国产手机相约齐来打卡下周迎来华为P20IT该机采用了6.28英寸19:9的Super Amoled全面屏,屏幕内置新一代指纹识别技术,配备高通骁龙多核神经网络加速芯片和AI智慧引擎,标配6GB运存+128GB超大内存,Deep Field 深空音效和Funtouch OS 4.0操作系统,颜色方面共有冰钻黑、极光白和宝石红三种颜色可选,普通版3月24日开售,售价3198元,屏幕指纹版3月28日上市,售价jvzq<84kv0vfqyqg0eun0ls1ID5o38723:515;91e361;67;::<57<3jvor
12.三栖虎ZTeco打卡机10PLUS指纹打卡考勤机员工上下班出勤智能打卡指纹类型 指纹识别 输出方式 蓝牙+U盘下载 类别 巡更机 型号 h10指纹 包装清单 暂无 商品介绍加载中 售后保障 卖家服务 京东承诺 京东平台卖家销售并发货的商品,由平台卖家提供发票和相应的售后服务。请您放心购买! 注:因厂家会在没有任何提前通知的情况下更改产品包装、产地或者一些附件,本司不能确保客jvzquC41kvkn0si0eqs0396;98=94A87734ivvq
13.Python+Opencv识别两张相似图片python1.缩放图片,一般大小为8*8,64个像素值。 2.转化为灰度图 3.计算平均值:计算进行灰度处理后图片的所有像素点的平均值,直接用numpy中的mean()计算即可。 4.比较像素灰度值:遍历灰度图片每一个像素,如果大于平均值记录为1,否则为0. 5.得到信息指纹:组合64个bit位,顺序随意保持一致性。 最后比对两张图片的指纹jvzquC41yy}/lk:30pku1jwvkerf1A85374ivv
14.观摩课反思2、了解指纹的三种基本类型。 3、体验探究的快乐,培养幼儿实事求是的科学态度。 二、 活动准备: 1、 课件:“指纹种类”及“指纹画”。 2、 放大镜、记录纸及笔人手一份;印泥、图画纸若干。 3、 录象:《蓝猫淘气3000问》。 三、 活动过程: (一)出示“指纹图”导入,引发幼儿想象。 jvzq<84yyy4vpsx0eqs0y89324:40qyon