指纹增强程序Hong_enhancement

本算法是基于Lin Hong et al 的论文“Fingerprint ImageEnhancement: Algorithm and Performance Evaluation”编写而成。其中一个重要的假设就是:沿脊线垂直方向的灰度变化呈正弦波形

程序的流程如下所示:

指纹增强程序Hong_enhancement_第1张图片

 

0 Notation

指纹增强程序Hong_enhancement_第2张图片

O 是方向场F 是频率场 R 是区域标记


1 Normalization 

将原始图像的灰度值的均值和方差调整到所期望的均值和方差,减少沿脊和谷方向上的灰度级的变化。

指纹增强程序Hong_enhancement_第3张图片

 

img=imread('25_2.tif');
img=double(img);
figure,imshow(img./255)
[ht,wt] =   size(img);
m       =   mean(img(:));
v       =   var(img(:));
gmidx   =   find(img > m); 
lmidx   =   find(img <=m); m0=100;v0=100;
nimg(gmidx) = m0 + sqrt((v0*(img(gmidx)-m).^2)/v);
nimg(lmidx) = m0 - sqrt((v0*(img(lmidx)-m).^2)/v);
nimg        = reshape(nimg,[ht,wt]); 
figure,imshow(nimg./255)  

指纹增强程序Hong_enhancement_第4张图片

 


2 Orientation Image

方向场反映了指纹图像上纹线的方向,其准确性直接影响图像增强的效果。

(1):将图像划分为不重叠的子块(16×16)

(2):利用Sobel算子计算每个子块的像素点的梯度值。

(3):利用以下公式计算中心点在(i,j)的子块的脊线的方向值

指纹增强程序Hong_enhancement_第5张图片


其中是以像素θ(i,j)为中心的子块的局部脊线方向。由于指纹脊线方向变化缓慢,并在一个小范围内具有相对稳定的变化趋势。因此可采用高斯低通滤波器进行平滑处理。

 

dbg_show_orientation=1;
img=imread('6_2.tif');
img=double(img);
% figure,imshow(img./255)
hy  = fspecial('sobel');
hx  = hy';
gx = imfilter(img,hx,'same','symmetric');
gy = imfilter(img,hy,'same','symmetric');
g   = gx+i*gy;  
gblk=blkproc(g.^2,[10 10],inline('sum(sum(x))'));
oimg    = 0.5*angle(gblk)+pi/2;
[blkht,blkwt]   =   size(oimg)
%smoothen_orientation_field
g =   cos(2*oimg)+i*sin(2*oimg);
g =   imfilter(g,fspecial('gaussian',5));
oimg=   0.5*angle(g);
if(dbg_show_orientation) 
quiver(cos(oimg),sin(oimg)); 
axis ij;axis image; 
axis([0 blkwt 0 blkht]); 
title('Orientation Image'); pause; 
end; 

指纹增强程序Hong_enhancement_第6张图片

 

 

3 Ridge Frequency Image

 

  在指纹图像的局部非奇异区域里,沿着垂直于脊线的方向看,指纹脊线和谷线像素点灰度值大致形成一个二维的正弦波,定义纹线频率为相邻的两个波峰或波谷之间的像素点数的倒数。

(1):将图像划分为不重叠的子块(16×16)

(2):以图像子块中心点(i,j)为中心,子块脊线方向为短轴,作一个尺寸为的长方形窗口,如图所示:在窗口中按如下公式计算幅值X[K]

指纹增强程序Hong_enhancement_第7张图片

指纹增强程序Hong_enhancement_第8张图片

指纹增强程序Hong_enhancement_第9张图片

指纹增强程序Hong_enhancement_第10张图片


 




 

你可能感兴趣的:(程序)