导航:首页 > 源码编译 > 8邻域算法

8邻域算法

发布时间:2023-08-12 06:07:20

① 指纹识别预处理

介绍了采用TI公司的高速DSP芯片TMS320VC5402的指纹识别系统的预处理算法编程实现。算法实现采用的DSP集成开发环境(IDE)为CCS 2.2。通过采用极值滤波、平滑滤波、拉普拉斯锐化、二值化等对指纹图像进行预处理,取得了良好的试验结果。

利用生物认证技术取代传统的使用钥匙、身份证、密码等方法进行个人身份鉴定,可广泛应用于银行、机场、公安等领域的出入管理。将信息技术与生物技术相结合的生物认证技术是本世纪最有发展潜力的技术之一,而指纹识别技术则是其中非常有前景的一种。

数字信号处理器(DSP)是指以数值计算的方法对数字信号进行处理的芯片。它具有处理速度快、灵活、精确、抗干扰能力强、体积小、使用方便等优点。DSP应用于指纹识别已经成为一个新的科技领域和独立的学科体系,当前已形成了有潜力的产业和市场。

本文选定100MHz DSP TMS320VC5402作为指纹信号的处理器,利用其流水线编码的操作特点,并结合指纹识别技术,实现基于DSP CCS2.2的指纹识别预处理系统。CCS 2.2(Code Composer Studio)是一种针对标准TMS320调试接口的集成开发环境(IDE),由TI公司于1999年推出。指纹识别的处理流程如图1所示。

指纹处理过程可分为三个阶段:

(1) 获取原始指纹图像,进行预处理;
(2) 提取指纹特征点;
(3) 指纹识别分析判断。

在上述三个阶段中,指纹图像的预处理阶段尤为重要,该阶段对图像处理的好坏直接关系到后面两个阶段工作的开展。本文结合TMS320VC5402的特点,重点研究指纹识别的预处理算法及其DSP实现问题,其中包括指纹的极值滤波、平滑滤波、拉普拉斯锐化、迭代二值化和该算法在DSP开发平台CCS2.2的C5000上的仿真实现。这一问题的解决,可为未来指纹识别系统的脱机应用提供很有价值的参考。

1 指纹识别预处理算法

指纹识别预处理的目的是使指纹图像更清晰,边缘更明显,以便提取指纹的特征点进行识别。本文采取极值滤波和改进的平滑滤波进行噪声消除,使图像不失真;采取拉普拉斯锐化对指纹进行纹线增强,突出边缘信息,为自适应阀值的迭代二值化提供方便。
1.1 极值滤波

解梅、马争[1]认为极值滤波器的设计是基于这样一种理念:在指纹图像的采集过程中,指纹图像所受到的冲击性噪声表现为一些斑点或亮点。在一般情况下,可以认为绝大数冲击性噪声是被真实的灰度值所包围。同时噪声污染的像素要远远小于真实灰度值的像素。因此在噪声的消除过程中,无需对大多数没有被噪声污染的像素进行改变处理,只需对那些被污染的像素进行“真实值”代替处理,而这些值的确定可通过图像像素邻域的相关性来确定。

指纹处理过程可分为三个阶段:

(1) 获取原始指纹图像,进行预处理;
(2) 提取指纹特征点;
(3) 指纹识别分析判断。

在上述三个阶段中,指纹图像的预处理阶段尤为重要,该阶段对图像处理的好坏直接关系到后面两个阶段工作的开展。本文结合TMS320VC5402的特点,重点研究指纹识别的预处理算法及其DSP实现问题,其中包括指纹的极值滤波、平滑滤波、拉普拉斯锐化、迭代二值化和该算法在DSP开发平台CCS2.2的C5000上的仿真实现。这一问题的解决,可为未来指纹识别系统的脱机应用提供很有价值的参考。

1 指纹识别预处理算法

指纹识别预处理的目的是使指纹图像更清晰,边缘更明显,以便提取指纹的特征点进行识别。本文采取极值滤波和改进的平滑滤波进行噪声消除,使图像不失真;采取拉普拉斯锐化对指纹进行纹线增强,突出边缘信息,为自适应阀值的迭代二值化提供方便。

1.1 极值滤波

解梅、马争[1]认为极值滤波器的设计是基于这样一种理念:在指纹图像的采集过程中,指纹图像所受到的冲击性噪声表现为一些斑点或亮点。在一般情况下,可以认为绝大数冲击性噪声是被真实的灰度值所包围。同时噪声污染的像素要远远小于真实灰度值的像素。因此在噪声的消除过程中,无需对大多数没有被噪声污染的像素进行改变处理,只需对那些被污染的像素进行“真实值”代替处理,而这些值的确定可通过图像像素邻域的相关性来确定。

设有一待处理器像素为s0,其周围8邻域像素排列为

取邻域相关像素的均值为Ai,i∈{1,2,...8},并以四个像素为一组处理单元,则改进的极值滤波[1]算法可表述如下:

如果A0>max(Ai),i∈{1,2,...8},则

如果A0 < min(Ai), i∈{1,2,...8}, 则

s1=s2=s4=s0=min(A1,A2,A4)
s2=s3=s5=s0=min(A2,A3,A5)
s4=s6=s7=s0=min(A4,A6,A7) (3)
s5=s7=s8=s0=min(A5,A7,A8)

如果min(Ai)≤Ai≤max(Ai),i∈{1,2,...8},则将像素原值输出,不作处理。

实验结果表明,该方法能得到与中值滤波类似的效果,达到了初步去除噪声的目的。

1.2 平滑滤波

经过上面的极值滤波处理之后,图像传输过程中所形成的大多数冲击性噪声均被除去,但指纹图像中还存在着随机噪声,需进一步对图像进行平滑处理。本文采取两次平滑滤波,一次是在极值滤波之后,一次是在锐化滤波之后。改进的平滑卷积核为

系数取1/15而非原来的1/17的原因在于提高图像的对比度;而卷积核中心像素加权系数取为5是为了突出该点像素。实验结果表明,该改进是可行的,有利于突出中心像素并有效去除随机噪声。

1.3 锐化滤波

对于由于积分运算所造成的模糊图像,有必要对其模糊进行校正,进而增强指纹图像的边界。具体做法为增强指纹脊线与谷的对比度。这种增强指纹图像的高频成分,使其边缘清晰的方法称为锐化。因此,锐化的目的在于使经过平均或积分运算后变得模糊的图像的边缘和轮廓变得清晰,并使细节清晰[2]。在本文中,锐化卷积核采用拉普拉斯算子[3]:

通过该卷积核对图像进行卷积预算,能实现高通滤波,进而得到锐化后的指纹脊线。

1.4 迭代阀值二值化

指纹图像经过极值滤波、平滑滤波、拉普拉斯锐化滤波、平滑滤波后,大多数噪声都已被消除,这就为特征点提取提供了基础。为了提取特征点,需对指纹图像进行分割。本文采取迭代阀值的方法对指纹图像进行阀值分割。在图像处理中,反复地用一种运算直至条件满足而得到输出图像的方法称为迭代。迭代阀值方法如下:

①设定初始灰度阀值T(如令T=127),把指纹图像的灰度值分为两组R1和R2。
②计算两组的平均灰度值u1和u2。
③重新设定新的灰度阀值T。新的T定义为:T=(u1+u2)/2。
④依据新的T对指纹图像进行阀值分割。

这种方法是以自适应的阀值对指纹图像进行二值化处理。实验结果表明,该方法比设定固定阀值进行处理更有普遍意义,且行之有效。
2 指纹图像在CCS 2.2上的输入与输出

在设计中,采用DSP集成开发环境CCS2.2对指纹识别算法进行模拟验证。用指纹成像系统采集一幅*bmp格式指纹图像,如finger.bmp指纹图像。在该指纹图像的数据上面添加一个COFF文件的文件头。以文件名finger.out保存。*.out文件为TI的公共目标文件。利用CCS中的File-Load Data 可以将finger.out的指纹图像放到DSP的相应内存中去,本次设计中将finger.out存放于DSP的数据存储空间。利用CCS中的Image菜单,通过设置相关选项可以观察处理前的图像与处理后的图像。

3 实际指纹图像预处理效果

依据上述指纹识别预处理算法,通过CCS2.2的模拟功能,实现了指纹识别预处理的DSP处理,达到了DSP处理指纹图像的应用目的。结果如图2所示。

图2 实际指纹预处理结果

本文针对TMS320VC5402 DSP的快速、高效的特点,采取了DSP集成开发环境CCS2.2对指纹图像进行预处理。在指纹的预处理中,由于DSP具有10ns指令周期,使采用改进的极值滤波和改进的卷积核平滑滤波对指纹图像进行一次、二次平滑实时处理成为可能。实验结果表明,该方法能有效地处理指纹图像的冲击性噪声和随机噪声。而迭代二值化的运算充分利用了DSP 五级流水线操作,达到了利用DSP对指纹图像进行预处理的应用目的。

② 关于激光检测指纹技术的原理

指纹识别技术原理
1、产品构成

对指纹识别技术,目前除了一部分真正的研发人员之外,大部分涉业者或者兴趣者都希望有个清晰的了解。在此,先从指纹识别产品的构成说起,也就是由产品构成再展开对技术构成的分析。

指纹识别产品是由基础构件、中间构件和上层构件组成的,基础构件是指一个完整的指纹识别(不是指纹采集)产品,包括硬件和软件,都必须具备的基础部分。中间构件,简称中间件,是向上支持各类软件系统或者硬件设备,实现指纹注册和认证功能的独立部分。上层构件,是指在基础构件之上,自己实现中间件或者利用中间件建立起来的执行应用的部分,也可以称为应用构件。

指纹产品基础构件包括:指纹传感器(指纹 Sensor )、指纹传感器驱动程序( Driver )、指纹传感器底层接口程序(底层 SDK ),以及指纹算法程序。其中前三个都是作为一个整体对待,笼统的称为指纹 SENSOR 。指纹基础构件的这四个部分,对于任何一类的指纹识别产品都是不可缺少的,所以称之为基础构件。

指纹产品中间构件,或者叫指纹应用中间件,它专门完成指纹注册和认证功能,所以它一定包含指纹识别算法。它屏蔽了应用层对设备层(基础构件中的 SENSOR 以及 DRIVER )的直接访问。它既可以表现为软件控件( ocx ),也可表现为硬件模块,也就是俗称的指纹脱机模块。

指纹产品上层构件,它是用户需求的实现部分,其形态不定,可以是一个完整的指纹应用软件产品,如指纹文件保护系统、计算机登录指纹保护系统。也可是指纹考勤机、指纹保险柜等这类嵌入式硬件产品。

在了解了指纹识别产品的构成要件之后,我们再一层层采用解析的方法来分析每个构件中的技术成份。

2 、指纹产品基础构件

2.1、基础构件之指纹SENSOR

从基础构件层来看,其中的指纹SENSOR,是指纹图像自动采集和生成部分,是整个指纹识别产品的数据输入端。绝大多数指纹SENSOR通过光学扫描、晶体热敏、晶体电容等三种主要传感原理采集指纹图像。衡量一个指纹SENSOR的质量好坏或者使用的技术的高低,从其使用的采集原理上并不能得出结论,而是主要从以下几个方面来衡量。

(1)成像质量。成像质量是衡量指纹 SENSOR (指纹传感器)质量的首要标准。成像质量主要表现为对指纹图像的还原能力,以及去噪能力。

(2)手指适应能力。由于不同手指指纹的 纹路 深浅不同、干湿不同,污渍程度不同。要能够对所有情况进行有效兼容,是指纹 SENSOR 的适用能力的表现。有时候手指适用能力被归到成像质量中考虑。

(3)采集速度。采集速度表现为从手指放到 SENSOR 触面后多长时间内完成一次指纹采集的时间,或者单位时间如 1S 可以采集的次数。速度的快慢直接影响到用户的使用体验。

(4)电气特性。电气特性是从产品化的角度来看,指纹 SENSOR 是否真正可用于某种产品。电气特性主要关注三个参数,工作电压,功耗和 ESD (防静电能力)。如把指纹 SENSOR 应用到手机上,必然要考虑手机的现在供电方式能否满足增加了指纹 SENOSR 后的电压和功耗要求。不过大部分指纹 SENOSR 的电压都在 3.6V 以下(含)。

(5)硬件接口能力。接口能力也是从产品化的角度来衡量的。接口能力直接影响着指纹 SENSOR 所获得的指纹图像数据的传送方式,影响着与指纹处理模块之间的通讯方式和通讯速度。比如已具备 USB 接口能力的指纹 SENSOR ,可以直接与 USB HUB 相连。而没有 USB 接口的,就需要通过 USB 控制器来实现,给产品化增加一道技术门槛。

(6)SDK 能力。 SDK 能力是指指纹 SENSOR 的功能,也就是与指纹 SENSOR 配套使用的程序接口的功能。一般在这些接口中定义了上层应用如何启动或终止硬件 SENSOR ,以及如何控制指纹 SENSOR 的函数族。比如发送指纹 SENOSR 初始化命令、开始或停止捕获指纹图像命令、询问手指是存在、以及判断是否是指纹等。对于滑动式( SWIPE )芯片来讲,还包括指纹重构的命令接口。

作者: 西西里的猪 2007-4-30 13:23 回复此发言

--------------------------------------------------------------------------------

2 指纹识别技术原理

(7)附加功能。大部分指纹 SENSOR 除了具备指纹图像采集能力之外,还能够感知手指的移动方向、手指的点击方式(单击双击),这被称之为导航能力。作者见过的一款导航能力非凡的指纹 SENSOR ,可以非常灵活的玩贪吃蛇游戏。另一方面,有的指纹 SENSOR ,如 ATMEL 和 AUTHENTECH 的,可以提供指纹特征值的模板访问接口。这些都是除了基本功能之外,指纹 SENSOR 厂商附加开发的功能,这部分功能可以使得,在其它条件相当的情况下,起到提升应用特色的作用。

2.2 、基础构件之指纹算法

以上是指纹产品基础构件层中的指纹 SENSOR 部分的技术构成分析。下面介绍另一部分指纹算法。全球指纹算法据称约有 100 种,不过这三大块基本是少不了的。一是对指纹图像进行预处理;二是提取特征值,并形成特征值模板;三是指纹特征值比对。

2.2.1 指纹算法之指纹图像预处理

(1)指纹图像增强 。指纹图像增强的目的主要是为了减少噪音,增强脊谷对比度,使得图像更加清晰真实,便于后续指纹特征值提取的准确性。指纹图像增强的方法较多,常见的如通过 8 域法计算方向场与设定合适的过滤阈值。处理时依据每个像素处脊的局部走向,会增强在同一方向脊的走向,并且在同一位置,减弱任何不同于脊的方向。这样使得脊线相对背景更加清晰,特征点走向更加明显。

(2)指纹图图像平滑处理。 平滑处理是为了让整个图像取得均匀一致的明暗效果。平滑处理的过程是选取整个图像的象素与其周期灰阶差的均方值作为阈值来处理的。

(3)指纹图像二值化。 在原始灰阶图像中,各象素的灰度是不同的,并按一定的梯度分布。在实际处理中只需要象素是不是脊线上的点,而无需知道它的灰度。所以每一个象素对判定脊线来讲,只是一个“是与不是”的二元问题。所以,指纹图像二值化是对每一个象素点按事先定义的阈值进行比较,大于阈值的,使其值等于 255 (假定),小于阈值的,使其值等于 0 。图像二值化后,不仅可以大大减少数据储存量,而且使得后面的判别过程少受干扰,大大简化其后的处理。

(4)指纹图像细化处理。 图像细化就是将脊的宽度降为单个像素的宽度,得到脊线的骨架图像的过程。这个过程进一步减少了图像数据量,清晰化了脊线形态,为之后的特征值提取作好了准备。由于我们所关心的不是纹线的粗细,而是纹线的有无。因此,在不破坏图像连通性的情况下必须去掉多余的信息。因而应先将指纹脊线的宽度采用逐渐剥离的方法,使得脊线成为只有一个象素宽的细线,这将非常有利于下一步的分析。

2.2.2 指纹算法之特征值提取

提取指纹特征值是从细化过的指纹图像中,扫描分析出能够表达某个指纹图像与众不同的特征点的集合。在最初的指纹识别算法中,经历以过图像进行比较的阶段,现在的算法为了安全和确保精准度起见,采用图像上的特征点来进行比较,所以才有特征值提取的说法。

(1)首先来认识一下指纹的特征。

指纹特征 =总体特征+局部特征

总体特征:
–纹形:环形、弓形、螺旋形(有的算法分的更细,如左旋右旋)
–模式区:包含了纹形特征的区域
–核心点:位于指纹纹路的渐进中心
–三角点:位于从核心点开始的第一个分叉点或者断点、或者两条纹路会聚处、孤立点、折转处,或者指向这些奇异点。
–纹数:指模式区内指纹纹路的数量(脊密度)

局部特征:指纹上的细节点的特征。

特征点:类型、方向、曲率、位置

特征点类型
–终结点( Ending ),一条纹路在此终结
–分叉点( Bifurcation ),一条纹路在此分开成为两条或更多的纹路
–分歧点( Ridge Divergence ),两条平行的纹路在此分开
–孤立点( Dot or Island ),一条特别短的纹路,以至于成为一点 –环点( Enclosure ),一条纹路分开成为两条之后,立即有合并成为一条

作者: 西西里的猪 2007-4-30 13:23 回复此发言

--------------------------------------------------------------------------------

3 指纹识别技术原理
–短纹( Short Ridge ),一端较短但不至于成为一点的纹路

(2)指纹特征点的表示

认识到指纹包含以上特征点之后,如何对指纹的特征点进行描述?就像通过描述一个的特点不同于另一个人时,我们一般会采用储如 “男性”“身高 170 ”“偏白”等词汇一样,描述指纹的特征点也有一系列的维度。如特征点类型、位置坐标、方向、曲率等。甚至可以增加组合特征描述。指纹处理是一个几何域的问题,所以对这些特征点的描述无外乎与几何参数有关。

(3)指纹特征点提取

对指纹的特征信息(总体和局部的)进行选择、编码,形成二进制数据的过程。指纹特征点的提取方法是算法中的核心。一般采用 8 邻域法对二值化、细化后的指纹图像抽取特征点,这种方法将脊线上的点用 “1” 表示,背景用 “0” 表示,将待测点( x ,y )的八邻域点,进行循环比较,若 “0” , “1” 变化有六次,则此待测点为分叉点,若变化两次,则为端点。通过这个过程可以记录下来一个指纹的所有特征点。通常一个指纹的特征点在 100~150 之间,在形成指纹特征值模板(也就是特征值的有序集合)时,尽量多的提取特征点对于提高准确性是有很大帮助的。

2.2.3 指纹算法之特征值比对

指纹特征值比对过程是把当前取得的指纹特征值集合与事先存储的指纹特征值模板进行匹配的过程。匹配是一个模式识别的过程,判定的标准不是等与不等,而是相似的程度。这个程度判定依赖于某个阈值,以及与判定时比较的特征点的个数有关。阈值取的合理,特征点取的越多,误判的机率就越小。理论一般认为只要 7 个特征点不同就可以区别开两枚指纹。实际在程序实现中,多采用 14 个或以上的特征点作匹配。匹配的方法很多,包括基于特征点的匹配、脊模式的匹配、以及线对(两个特征点的连线)匹配方法。匹配的过程还要处理如手指旋转、压力导致的伸缩及平移等情况。一般算法的误识率( FAR )为 0.001% 时,其拒认率( FRR )为 0.75 - 5% 。

在指纹识别算法这一部分 补充说明一下 指纹识别和验证的区别。

识别与验证并不是指纹识别算法领域的问题,而是指纹识别系统的问题。指纹识别就是指 1 : N 模式下匹配指纹特征值。它是从多个指纹模板中识别出一个特定指纹的过程。其结果是,有或者没有。有时会给出是谁的信息。

指纹验证是指在 1 : 1 模式下匹配指纹特征值。它是拿待比对的指纹特征模板与事先存在的另一个指纹特征模 板进行一次匹配的过程。其结果是,是不是。在一个系统中即可以采用 1:1模式也可以采用1:N模式,这是取决于应用系统的特点和要求。

从优缺方面比较, 1:1模式要比1:N快些,准确性高些,但方便性会差些。

3 、指纹产品中间件

指纹中间件技术,与一般中间件技术相似。对于指纹软件中间件来讲,主要是提供一系列从应用角度看已经封装好的接口,一般不会开放指纹特征值模板及下一级的接口。这些接口的能力表现为数据库连接和拆线类接口、用户注册接口、用户验证接口、用户手指信息、用户信息访问接口、用户管理(增删改)接口,以及常用的系统管理接口等。这些接口一般以 OCX组件形式提供,适用于以C/S、B/S、N-Tier等多种应用模式。 硬件中间件,一般是指指纹脱机模块。它主要是一个嵌入式指纹识别系统,对外提供两方面的能力。一是向下能够接入一定类型数量的指纹 SENSOR;二是向上给应用能够提供指纹注册、验证、识别、指纹存储等功能。硬件中间件的形态一直在发展和变化中,从板卡形态向芯片形态演变。市场上已经出现指纹识别IC,能够完成所有指纹注册验证的功能。这对于开发嵌入式指纹识别设备,将无疑是一大福音。

4、指纹产品上层构件

指纹产品上层构件,即应用层,目前市场上所见完整的指纹产品形态多种多样,在此不再累述。只是想说,在应用层,由于行业的不同、需求的多样性,依然是有很多可以成就的东西。

总结

从以上分析总结来看,基础构件中的指纹 SENSOR和指纹算法是关键中的关键。如果没有掌握这个关键,通过正常的商品交易得到这些,并以此为基础构造出指纹中间件产品、或者开发出不同行业的不同类型的指纹应用产品(或系统),也会有非常不错的前景,这也是创新——集成创新。

http://tieba..com/f?kz=196046842

③ 谁能给个好用的连通域处理的算法,要8邻域的

楼主要处理的图像是什么样的?黑白图像还是彩色的?我这里有个以前用过的只针对黑白图像的连通域处理,目标是白色,背景是黑色的,不过,如果你的图像不是这样的,那先二值化,然后变换为黑色背景白色目标的图片 CodeGo.net,再调用我这个函数,先看懂我这个函数,然后修改为可以处理白色背景黑色目标 具体函数
其中THRESHOLD_JOINNUM 是个宏定义……
你要先把图像的边缘像素处理下,把边缘1到2个像素宽度的位置,都置为背景色,否则,可能得不到正确的结果,也可能造成访问越界。也就是把四周的边缘像素都置为背景色 然后,如果你仔细看这个函数的实现的话,其实是使用两次连通域处理,一次是用来把黑色的小区域变为白色,也就是填补目标区域中可能出现的小黑洞。然后第二次处理才是用来删除那些小于阈值的白色目标小连通域 这个函数你要看明白才能正确使用。看吧。
2. 楼主要处理的图像是什么样的?黑白图像还是彩色的?我这里有个以前用过的只针对黑白图像的连通域处理,目标是白色,背景是黑色的,不过,如果你的图像不是这样的,那先二值化,然后变换为黑色背景白色目标的图片,再调用我这个函数,先看懂我这个函数,然后修改为可以处理白色背景黑色目标 具体函数

阅读全文

与8邻域算法相关的资料

热点内容
苹果如何创建服务器错误 浏览:495
软考初级程序员大题分值 浏览:473
js压缩视频文件 浏览:578
linux如何通过命令创建文件 浏览:989
应用加密app还能访问应用嘛 浏览:433
安卓怎么用支付宝交违章罚款 浏览:665
php面向对象的程序设计 浏览:504
数据挖掘算法书籍推荐 浏览:894
投诉联通用什么app 浏览:150
web服务器变更ip地址 浏览:954
java正则表达式验证邮箱 浏览:360
成熟商务男装下载什么软件app 浏览:609
加密2h代表长度是多少厘米 浏览:23
拍卖程序员 浏览:101
电脑的图片放在哪个文件夹 浏览:276
unsignedintjava 浏览:217
编译器下载地址 浏览:43
什么是面对对象编程 浏览:708
b站服务器什么时候恢复 浏览:721
6p相当于安卓机什么水准 浏览:499