https://github.com/pkarandikar/Fingerprint_Minutiae_enhancement-recognition-_system.git分析代码实现指纹识别用到的公式
时间: 2023-06-14 09:07:01 浏览: 157
这个项目包含了指纹图像增强和指纹图像识别两个部分。在指纹图像增强部分,主要使用了以下公式:
1. 方向图像计算
首先,通过计算梯度图像的方向和大小,得到梯度方向图像和梯度大小图像。具体的公式如下:
$$G_{x}=\begin{bmatrix}-1&0&1\\-2&0&2\\-1&0&1\end{bmatrix}*I$$
$$G_{y}=\begin{bmatrix}-1&-2&-1\\0&0&0\\1&2&1\end{bmatrix}*I$$
$$M=\sqrt{G_{x}^2+G_{y}^2}$$
$$\theta=\tan^{-1}\left(\frac{G_{y}}{G_{x}}\right)$$
其中,$G_{x}$和$G_{y}$分别表示图像在水平和垂直方向的梯度,$I$为原始图像,$M$表示梯度大小图像,$\theta$表示梯度方向图像。
2. 统计局部方向直方图
对于每个像素点,计算其周围一定范围内的梯度方向直方图,得到一个局部方向直方图。具体的公式如下:
$$h_i=\sum_{(x,y)\in N_i}\omega_{x,y}\delta(\theta_{x,y}-\theta_i)$$
其中,$N_i$表示以当前像素点为中心的一个固定大小的邻域,$\omega_{x,y}$为权重系数,$\delta$为Kronecker delta函数,$\theta_i$为当前像素点的梯度方向。
3. 估计全局方向
通过计算所有局部方向直方图的峰值位置,得到一个全局方向。具体的公式如下:
$$\theta_{global}=\frac{1}{2}\left(\max_i(h_i)+\min_i(h_i)\right)$$
4. 旋转图像
根据估计的全局方向,对原始图像进行旋转,使得所有指纹纹线的方向与x轴平行。具体的公式如下:
$$I_{rot}(x,y)=I(x\cos(\theta_{global})+y\sin(\theta_{global}),-x\sin(\theta_{global})+y\cos(\theta_{global}))$$
在指纹图像识别部分,主要使用了以下公式:
1. 计算指纹特征向量
将指纹图像分成多个小块,对于每个小块,计算其局部方向直方图,并将直方图转换成一个特征向量。具体的公式和方法可以参考论文《Fingerprint Minutiae Recognition based on Local Features》。
2. 计算指纹相似度
通过计算两个指纹特征向量之间的距离,来判断两个指纹的相似度。常用的距离度量有欧氏距离、曼哈顿距离、余弦距离等。具体的公式可以参考论文《Fingerprint Minutiae Recognition based on Local Features》。
阅读全文