指纹增强程序Hong_enhancement
LinJM @HQU
本算法是基于Lin Hong et al 的论文“Fingerprint ImageEnhancement: Algorithm and Performance Evaluation”编写而成。其中一个重要的假设就是:沿脊线垂直方向的灰度变化呈正弦波形。
程序的流程如下所示:
0 Notation
O 是方向场F 是频率场 R 是区域标记
1 Normalization
将原始图像的灰度值的均值和方差调整到所期望的均值和方差,减少沿脊和谷方向上的灰度级的变化。
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)
2 Orientation Image
方向场反映了指纹图像上纹线的方向,其准确性直接影响图像增强的效果。
(1):将图像划分为不重叠的子块(16×16)
(2):利用Sobel算子计算每个子块的像素点的梯度值。
(3):利用以下公式计算中心点在(i,j)的子块的脊线的方向值
其中是以像素θ(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;
3 Ridge Frequency Image
在指纹图像的局部非奇异区域里,沿着垂直于脊线的方向看,指纹脊线和谷线像素点灰度值大致形成一个二维的正弦波,定义纹线频率为相邻的两个波峰或波谷之间的像素点数的倒数。
(1):将图像划分为不重叠的子块(16×16)
(2):以图像子块中心点(i,j)为中心,子块脊线方向为短轴,作一个尺寸为的长方形窗口,如图所示:在窗口中按如下公式计算幅值X[K]
指纹增强程序Hong_enhancement相关推荐
- 基于matlab的指纹识别程序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 基于matlab的指纹识别程序 前言 一.程序思路是什么? 二.预处理步骤 1.指纹图像的灰度化处理 2.指纹图像的归一化与分割处理 ...
- python编程基础(四):if 语句 增强程序鲁棒性
一. 条件测试 1.判断相等: == 2.使用 and 判断多个条件: 条件均为 true 的时候,才是 true 类似于 && 与 3.使用 or 判断多个条件: 条件有一个 ...
- stm32指纹考勤机 程序源码包括app程序
stm32指纹考勤机 (程序源码包括app程序+pcb电路图+原件清单) 实现的功能如下所示: (1) 用户可操控按键对用户进行录入.删除.清空数据以及查看历史记录等操作. (2) 继电器可模拟指纹开 ...
- 联想指纹识别程序报错处理
一开机就出现:"Program operation error ,Please restart the computer and try again .If the problem pers ...
- Linux指纹识别程序,linux上应用指纹识别(转载)
我的本本是DELL xps1530 带有指纹识别,型号是Bus 003 Device 002: ID 0483:2016 SGS Thomson Microelectronics Fingerprin ...
- 【图像增强】基于gabor滤波器实现指纹增强含Matlab源码
1 简介 D.Gabor 1946年提出 窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数. 由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗 ...
- OpenCV C++使用高通滤波和阈值法增强指纹图像
<数字图像处理>冈萨雷斯 第三版中,P179有一个指纹增强的例子: 先用opencv模拟实现: 处理这个指纹图像 ,其污染是很明显的.自动指纹识别的关键一步是增强指纹的脊线并减小污染.使用 ...
- 指纹识别综述(7): 指纹合成
指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...
- 指纹识别综述(6): 现场指纹识别
指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...
- 用pycharm写python_使用Pycharm编写第一个python程序
1.打开 Pycharm,选择 Create New Project,创建一个新项目 2.选择Pure Python表示创建一个纯Python程序项目, Location 表示该项目保存的路径,Int ...
最新文章
- java 页面错误转发提示页面 errorPage转跳报HTTP500内部服务器错误
- OpenCV基本绘图
- webpack 入门,说一下那些不入流的知识点、module.exports{ } 中配置说明
- cc2530定时器和捕获比较_ALIENTEK 阿波罗 STM32F767 开发板资料连载十四章 输入捕获实验...
- syntaxhighlighter 代码高亮 - 插件化
- [经典控件]按钮和菜单
- java 类变量 赋值_Java 中类变量,实例变量,局部变量的赋值
- 基于C#语言的可编程表达式计算器设计
- Contrastive Loss
- 计算机网络中的网络安全
- 新唐单片机 ICP 史上最全教程
- echarts盒须图颜色填充
- 哈佛商学院20部必看电影
- VMSB200A16自定义组织功能配置指导
- 幻读和不可重复读的区别
- 【最全】软件测试基础理论选择题(含答案)
- 各种系统架构图及其简介
- SMART 200PLC S型速度曲线应用(梯形图非优化)
- css3 transition用法(很详细)
- 北京联通数码视讯q7 刷 安卓6.0+遥控器文件教程