# 【MATLAB图像处理实用案例详解（12）】——基于纹理特征的指纹识别方法

## 一、指纹图像预处理

### 1.1 图像对比度增强

A=imread('a.bmp');
A=rgb2gray(A);
j=medfilt2(A);
figure,imshow(j);
figure;
subplot(2,2,1);imshow(A);
subplot(2,2,2);imhist(A);
subplot(2,2,3);imshow(B);
subplot(2,2,4);imhist(B);


### 1.2 图像二值化

①求出图像中的最大和最小灰度值

S

1

S_1

S1

S

h

S_h

Sh，令初始阈值为：

T

0

=

S

1

+

S

h

2

T_0=frac{S_1+S_h}{2}

T0=2S1+Sh
②根据阈值

T

k

T_k

Tk将灰度图像分成目标和背景两部分（第一次分割时

T

k

=

T

0

T_k=T_0

Tk=T0），然后求出目标和背景两部分的平均灰度值

S

1

S1

S1

S

2

S2

S2

S

1

=

S

(

i

,

j

)

p

T

k

S

(

i

,

j

)

×

N

(

i

,

j

)

Z

(

i

,

j

)

p

T

k

N

(

i

,

j

)

,

S

2

=

S

(

i

,

j

)

f

T

k

S

(

i

,

j

)

×

N

(

i

,

j

)

Z

(

i

,

j

)

f

T

k

N

(

i

,

j

)

{S_1} = frac{{sumlimits_{S(i,j)p{T_k}} {S(i,j) times N(i,j)} }}{{sumlimits_{Z(i,j)p{T_k}} {N(i,j)} }},{S_2} = frac{{sumlimits_{S(i,j)f{T_k}} {S(i,j) times N(i,j)} }}{{sumlimits_{Z(i,j)f{T_k}} {N(i,j)} }}

S1=Z(i,j)pTkN(i,j)S(i,j)pTkS(i,j)×N(i,j),S2=Z(i,j)fTkN(i,j)S(i,j)fTkS(i,j)×N(i,j)

S

(

i

,

j

)

S(i,j)

S(i,j)是图像上(i,j)点的灰度值，

N

(

i

,

j

)

N(i,j)

N(i,j)是(i,j)点的权重系数，一般

N

(

i

,

j

)

=

1

,

0

N(i,j)=1,0

N(i,j)=1,0
③求出新的阈值：

T

k

+

1

=

S

1

+

S

2

2

T_{k+1}=frac{S_1+S_2}{2}

Tk+1=2S1+S2

[x,y]=size(B);
m=double(B);
N=sqrt(100)*randn(x,y);
I=m+N;
for i=1:x
for j=1:y
if (I(i,j)>255)
I(i,j)=255;
end
if (I(i,j)<0)
I(i,j)=0;
end
end
end
z0=max(max(I));
z1=min(min(I));
T=(z0+z1)/2;
TT=0;
s0=0;n0=0;
s1=0;n1=0;
allow=0.5;
d=abs(T-TT);
count=0;
while(d>=allow)
count=count+1;
for i=1:x
for j=1:y
if(I(i,j)>=T)
s0=s0+I(i,j);
n0=n0+1;
end
if(I(i,j)<T)
s1=s1+I(i,j);
n1=n1+1;
end
end
end
T0=s0/n0;
T1=s1/n1;
TT=(T0-T1)/2;
d=abs(T-TT);
T=TT;
end
seg=zeros(x,y);
for i=1:x
for j=1:y
if(I(i,j)>=T)
seg(i,j)=1;
end
end
end
figure;
imshow(seg);


### 1.3 图像滤波

BW1=bwmorph(seg,'spur');
BW2=bwmorph(BW1,'fill');
BW3=bwmorph(BW2,'clean');
figure;
imshow(BW3);


## 二、指纹图像特征提取

glcms = graycomatrix(I,Name,Value)

graycomatrix 通过计算灰度级（灰度强度）值为 I 的像素与灰度级值为 j 的像素水平相邻的频率来创建 GLCM。（您可以使用 ‘Offsets’ 参数指定其他像素空间关系。）glcm 中的每个元素 (i,j) 指定值为 i 的像素与值为 j 的像素水平相邻的次数。

stats = graycoprops(glcm,properties)

THE END