资源简介
基于Gabor滤波指纹识别算法matlab完整程序,过程是定位中心点,裁剪图像大小,以参考点为圆心做同心环作为特征提取区域,对特征提取区域做归一化处理
代码片段和文件信息
function fpextractdemo(action varargin)
% FPEXTRACTDEMO 指纹特征提取演示程序
% Modified by PRTsinghua@hotmail.com
%
% 输入图像必须是256×256的灰度图
% 8-bit灰度级的图像 @ 500 dpi.
% 如果这些条件不满足,一些函数中的参数必须做相应的改变
%
%
% 选项:
% - Centralize: 二值化图像,计算中心点
% - Crop: 图像修剪
% - Sectorize: 可视化扇形
% - Normalize: 归一化输入图像
% - Gabor filters: 可视化Gabor滤波器
% - Convolute: 计算输入图像和Gabor滤波器的convolution
% - Features: 特征可视化
% - FingerCode: 在数据库中加入该指纹
% - Check: 指纹匹配
%
%
% 指纹识别中一个至关重要的步骤就是中心点的确定。如果剪切指纹图像时出现了任何
% 错误,你可以使用辅助的m文件“vedicentro.m“:它使得输入指纹可视化并计算指纹
% 中心,借助于m函数 “centralizing.m“。
%
% 在MATLAB的命令行提示中输入 “fpextractdemo“ 运行程序
%--------------------------------------------------------------------------
if nargin<1
action=‘InitializeFPEXTRACTDEMO‘;
end;
feval(actionvarargin{:})
return;
%%%
%%% 子函数 - InitializeFPEXTRACTDEMO
%%%
function InitializeFPEXTRACTDEMO()
% 如果 fpextractdemo 已经在运行,将之转到前台
h = findobj(allchild(0) ‘tag‘ ‘Extracting FingerPrint Features Demo ‘);
%child_handles = allchild(handle_list)
%返回由handle_list所指定的对象的所有子对象的句柄,包括句柄设置为隐藏的子对象的句柄。
%如果handle_list为标量,则返回的 child_handles是一个向量;否则,输出的是元胞数组。 Matlab中文论坛
%findobj函数用来查找指定的图形对象并返回它们的句柄。用户可以使用特定的属性值来限制查找的范围。
if ~isempty(h)
figure(h(1))
return
end
screenD = get(0 ‘ScreenDepth‘);
if screenD>8
grayres=256;
else
grayres=128;
end
FpextractDemoFig = figure( ...
‘Name‘‘指纹特征提取演示程序 Modified by PRTsinghua@hotmail.com‘ ...
‘Numbertitle‘‘off‘ ‘HandleVisibility‘ ‘on‘ ...
‘tag‘ ‘指纹特征提取演示程序‘ ...
‘Visible‘‘off‘ ‘Resize‘ ‘off‘...
‘BusyAction‘‘Queue‘‘Interruptible‘‘off‘ ...
‘Color‘ [.8 .8 .8] ...
‘IntegerHandle‘ ‘off‘ ...
‘Colormap‘ gray(grayres));
%figure(‘PropertyName‘propertyvalue...)利用指定的属性值来创建图形窗口对象
figpos = get(FpextractDemoFig ‘position‘);
figpos = [100100800500];
% Adjust the size of the figure window
horizDecorations = 10; % 调整大小.
vertDecorations = 45; % 标题栏.
screenSize = get(0‘ScreenSize‘);
dx = screenSize(3) - figpos(1) - figpos(3) - horizDecorations;
dy = screenSize(4) - figpos(2) - figpos(4) - vertDecorations;
if (dx < 0)
figpos(1) = max(5figpos(1) + dx);
end
if (dy < 0)
figpos(2) = max(5figpos(2) + dy);
end
set(FpextractDemoFig ‘position‘ figpos);
rows = figpos(4);
cols = figpos(3);
% Colors
bgcolor = [0.45 0.45 0.45]; % 背景颜色
wdcolor = [.8 .8 .8]; % Window 颜色
fgcolor = [1 1 1]; % 文本
hs = (cols-(6*175)) / 5; % 水平间隔
vs = (rows)/8; % 垂直间隔
%====================================
% 所有菜单和按钮的参数
Std.Interruptible = ‘off‘;
Std.BusyAction = ‘queue‘;
% Defaults for image axes
Ax = Std;
Ax.Units = ‘Pixels‘;
Ax.Parent = FpextractDemoFig;
Ax.ydir = ‘reverse‘;
Ax.XLim = [.5 128.5];
Ax.YLim = [.5 128.5];
Ax.CLim = [0 1];
Ax.XTick = [];
Ax.YTick = [];
Img = Std;
Img.CData = [];
Img.Xdata = [1 128];
Img.Ydata = [1 128];
Img.CDat
- 上一篇:单腿跳跃机器人代码
- 下一篇:matlab实现的维特比译码
评论
共有 条评论