指纹增强程序Hong_enhancement

妖狐艹你老母 2021-11-02 04:08 282阅读 0赞

LinJM @HQU

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

程序的流程如下所示:

SouthEast

0 Notation

SouthEast 1

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

1 Normalization

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

SouthEast 2

  1. img=imread('25_2.tif');
  2. img=double(img);
  3. figure,imshow(img./255)
  4. [ht,wt] = size(img);
  5. m = mean(img(:));
  6. v = var(img(:));
  7. gmidx = find(img > m);
  8. lmidx = find(img <=m); m0=100;v0=100;
  9. nimg(gmidx) = m0 + sqrt((v0*(img(gmidx)-m).^2)/v);
  10. nimg(lmidx) = m0 - sqrt((v0*(img(lmidx)-m).^2)/v);
  11. nimg = reshape(nimg,[ht,wt]);
  12. figure,imshow(nimg./255)

SouthEast 3

2 Orientation Image

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

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

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

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

SouthEast 4

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

  1. dbg_show_orientation=1;
  2. img=imread('6_2.tif');
  3. img=double(img);
  4. % figure,imshow(img./255)
  5. hy = fspecial('sobel');
  6. hx = hy';
  7. gx = imfilter(img,hx,'same','symmetric');
  8. gy = imfilter(img,hy,'same','symmetric');
  9. g = gx+i*gy;
  10. gblk=blkproc(g.^2,[10 10],inline('sum(sum(x))'));
  11. oimg = 0.5*angle(gblk)+pi/2;
  12. [blkht,blkwt] = size(oimg)
  13. %smoothen_orientation_field
  14. g = cos(2*oimg)+i*sin(2*oimg);
  15. g = imfilter(g,fspecial('gaussian',5));
  16. oimg= 0.5*angle(g);
  17. if(dbg_show_orientation)
  18. quiver(cos(oimg),sin(oimg));
  19. axis ij;axis image;
  20. axis([0 blkwt 0 blkht]);
  21. title('Orientation Image'); pause;
  22. end;

SouthEast 5

3 Ridge Frequency Image

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

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

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

SouthEast 6

SouthEast 7

SouthEast 8

SouthEast 9

更多相关资源请关注 博客:LinJM-机器视觉 微博:林建民-机器视觉

发表评论

表情:
评论列表 (有 0 条评论,282人围观)

还没有评论,来说两句吧...

相关阅读

    相关 浏览器:浏览器指纹

    一、引子 场景一、绑定用户与浏览器(设备),比如某一个网站的账号给到用户,用户只能在自己的电脑的某浏览器使用。 场景二、精准推送广告。 场景三、公司做营销活动,防止活动奖

    相关 Android 指纹识别

    Android 指纹识别 Android 从 6.0 系统开始就支持指纹认证功能。 将指纹认证功能使用到 APP 的功能逻辑当中是有很多功能场景的,比如说金融银行类 A

    相关 android指纹识别

    如果涉及到支付的话,最好使用支付宝或者腾讯的指纹识别方案,他们的安全性较高。用原生的指纹识别,系统被root或者证书别劫持的话,识别结果可能被篡改。 需要注意: 1、取消

    相关 浏览器指纹实现

    一、什么是浏览器指纹? ①、浏览器指纹是指仅通过浏览器的各种信息,如系统字体、屏幕分辨率、浏览器插件,无需 cookie 等技术,就能近乎绝对定位一个用户,就算使用浏览器