基于MATLAB的虹膜识别与身份认证系统
项目介绍
本项目是一个基于MATLAB开发的完整虹膜识别算法系统。该系统实现了从图像输入到最终身份认证的全流程处理,涵盖了图像预处理、虹膜区域定位、形态归一化、特征编码以及基于汉明距离的匹配识别。项目旨在演示生物特征识别的核心算法逻辑,并通过合成数据展示系统的识别准确性与鲁棒性。
功能特性
- 合成数据生成:内置数据生成模块,可自动生成模拟真实眼部特征(包含瞳孔、虹膜纹理、眼睑遮挡、噪声及旋转)的合成图像,无需外部数据集即可运行演示。
- 图像预处理:包含灰度转换及高斯滤波平滑,有效降低图像噪声干扰。
- 虹膜精确定位:结合二值化形态学操作与Canny边缘检测,利用霍夫变换(Hough Transform)思想精确查找瞳孔与虹膜的圆形边界。
- 归一化处理:采用Daugman橡胶板模型(Rubber Sheet Model),将环状虹膜区域展开为固定尺寸的矩形极坐标图像,消除瞳孔缩放带来的纹理变形。
- 特征提取与编码:利用1D Log-Gabor滤波器在频域对图像进行卷积,提取纹理相位信息并量化为二进制虹膜特征码(Iris Code)。
- 匹配与认证:计算两个虹膜码之间的汉明距离(Hamming Distance),包含旋转位移校正机制,根据设定的阈值自动判定身份。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
使用方法
- 确保MATLAB环境已安装并通过路径设置包含了项目脚本。
- 直接运行主函数。
- 系统将自动执行以下步骤:
* 生成用户A(两个样本,含旋转差异)和用户B(一个样本)的合成眼部图像。
* 展示生成的原始图像。
* 对每张图像进行分割、归一化和特征编码,并实时显示处理过程中的中间结果(定位图、归一化图、特征码)。
* 计算同类匹配(用户A vs 用户A)与异类匹配(用户A vs 用户B)的汉明距离。
* 输出文本形式的认证结果(通过/拒绝),并绘制匹配结果的柱状图对比。
核心算法与实现细节
本项目主要包含以下几个关键处理模块,其逻辑完全基于主程序及其子函数实现:
1. 数据生成与初始化
程序首先初始化参数,设定归一化分辨率(20x240)、Gabor滤波器波长及匹配阈值(0.32)。为了演示方便,系统不读取外部文件,而是调用内部函数动态生成三张合成图像:两张属于同一用户但存在旋转和噪声差异,一张属于不同用户。
2. 图像预处理与分割 (Segmentation)
- 预处理:将输入图像转换为灰度图,并使用高斯滤波器(imgaussfilt)进行平滑处理,以减少高频噪声对边缘检测的影响。
- 瞳孔定位:
* 首先通过阈值二值化(threshold < 0.3)和形态学开运算、填充孔洞,获取瞳孔的初步区域。
* 利用
imfindcircles 函数(基于霍夫变换原理)在暗色区域搜索圆形目标,精确定位瞳孔的圆心坐标和半径。
* 对图像进行直方图均衡化增强对比度,并使用Canny算子提取边缘。
* 在以瞳孔为中心的一定比例范围内,再次使用
imfindcircles 搜索对应的最大外接圆,确定虹膜外边界。这里包含了同心度约束,即优先选择与瞳孔圆心距离最近的圆。
3. 虹膜图像归一化 (Normalization)
采用经典的Daugman橡胶板模型处理定位后的区域。
- 系统构建一个固定大小(20行 x 240列)的极坐标网格。
- 通过遍历角度(0到2pi)和径向比例(0到1),计算每个采样点在原始笛卡尔坐标系中的位置。
- 利用线性插值提取像素值,将圆环状的虹膜纹理展开为矩形图像。
- 在此过程中生成噪声掩膜(Mask),标记有效区域和无效区域(如超出图像边界的像素)。
4. 特征提取 (Encoding)
系统使用1D Log-Gabor滤波器提取纹理特征。
- 滤波器构造:在频域构建Log-Gabor滤波器,参数包括中心频率波长(min_wave_len)和带宽参数。
- 卷积运算:对归一化图像的每一行进行快速傅里叶变换(FFT),在频域与滤波器相乘,再通过逆傅里叶变换(IFFT)得到响应。
- 相位量化:根据卷积结果的实部和虚部符号进行编码。实部大于0置为1,虚部大于0置为1,从而为每个像素生成2位二进制码,形成最终的虹膜特征码(Iris Code)。
5. 模板匹配 (Matching)
识别过程是通过计算输入特征码与模板特征码之间的汉明距离(HD)来实现的。
- 旋转不变性处理:考虑到眼球可能存在旋转,算法在匹配时会对特征码进行循环位移(Circular Shift)。代码实现了从 -8 位到 +8 位的移位搜索。
- 距离计算:在每次移位后,利用掩膜(Mask)过滤掉无效位,通过异或(XOR)运算计算两个二进制码原本的差异比例。
- 判决:取所有移位结果中的最小汉明距离作为最终相似度度量。如果该距离小于预设阈值(0.32),则判定为“认证通过”,否则为“认证拒绝”。