• 大小: 21KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-05
  • 语言: Matlab
  • 标签:

资源简介

基于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

评论

共有 条评论

相关资源