我对指纹验证感兴趣,并且我正在尝试从[ref1]实现光谱细节描述符。
[ref1] Xu,H.,Veldhuis,R.,Bazen,A.M。,Kevenaar,T.A.,Akkermans,T.A。,& Gokberk,B。(2009)。使用光谱细节表示的指纹验证。信息取证与安全,IEEE Transactions on,4(3),397-409。 (http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.353.1031)
这在我的代码函数中。我在一个简短的细节列表上测试了它,但结果与[ref1]中发布的结果非常不同。我不认为问题只是参数设置。我绘制了计算和插值的ML和MO描述符,但图像非常不同。 任何人都可以帮我代码吗? 我的MATLAB代码是:
function SpectralMinutiae
%minutie vector: xposition,yposition,orientation (30 minutiae)
minuVect= [50 75 -2.35619449019235;130 95 2.35619449019235;88 101 2.61799387799149;78 157 -2.35619449019235;189 172 -2.61799387799149;253 204 -2.35619449019235;118 217 2.61799387799149;116 229 -2.61799387799149;135 249 2.61799387799149;232 16 -0.523598775598299;193 25 -0.523598775598299;87 43 3.14159265358979;229 44 -0.523598775598299;64 64 -2.61799387799149;254 72 2.09439510239320;258 77 -1.57079632679490;138 83 0;230 86 2.35619449019235;40 116 0.785398163397448;206 126 -0.785398163397448;138 147 -1.04719755119660;137 163 2.09439510239320;227 173 -1.57079632679490;205 174 -2.09439510239320;162 176 -2.35619449019235;106 185 -1.57079632679490;243 187 -2.09439510239320;118 198 2.61799387799149;102 202 -1.04719755119660;163 211 -2.09439510239320];
%parameters
imageSize=300;
sigmaMG=3.2; %only for plot purposes
sigmaML=1; %0 from the paper
sigmaMO=4.25;
lambdaL=0.1;
lambdaH=0.6;
% plot minutiae in the spatial domain
lx=linspace(1,imageSize,imageSize);
[x,y]=meshgrid(lx,lx); % //mesh
numMinu=size(minuVect,1);
z=MG(x,y,minuVect,numMinu,sigmaMG);
figure(1);
surf(x,y,z);shading interp;
%plot ML and MO functions (Fourier domain)
windowSize=5;
flx=linspace(-windowSize,windowSize,300);
fly=linspace(-windowSize,windowSize,300);
[ux,uy]=meshgrid(flx,fly); % //mesh
zML=ML(ux,uy,minuVect,numMinu,sigmaML);
figure(2);
imagesc(abs(zML)); title('Fourier Domain Image ML');
zMO=MO(ux,uy,minuVect,numMinu,sigmaMO);
figure(3);
imagesc(abs(zMO)); title('Fourier Domain Image MO');
%plot ML and MO functions in the Log-polar space
%In the radial direction M = 128 samples are used between lambdaL and lambdaH
%In the angular direction N = 256 samples are used between 0 and 2pi
rcoords = linspace(lambdaL,lambdaH,128);
thcoords = linspace(0,pi,256);
[ri,thi] = meshgrid(rcoords,thcoords);
[lx,ly] = pol2cart(thi,exp(ri));
figure(4);
z=ML(lx,ly,minuVect,numMinu,sigmaML);
imagesc(abs(z)); title('ML Polar coordinates');
figure(5);
z=MO(lx,ly,minuVect,numMinu,sigmaMO);
imagesc(abs(z)); title('MO Polar coordinates');
%plot ML and MO functions in the Log-polar space (obtained by interpolation)
z = interp2(ux,uy,zML,lx,ly);
figure(6);
imagesc(abs(z)); title('ML Polar coordinates (interpolated)');
z = interp2(ux,uy,zMO,lx,ly);
figure(7);
imagesc(abs(z)); title('MO Polar coordinates (interpolated)');
end
%Spatial domain function
function z=MG(x,y,minuVect,numMinu,sigma)
amplitude = 1.0 / (sigma * sqrt(2.0*pi));
z = zeros(size(x));
for j = 1:numMinu
z= z + exp(-((x-minuVect(j,1)).^2+(y-minuVect(j,2)).^2)/( 2* sigma^2)) ;
end;
z=z.*amplitude;
end
%ML Fourier domain function
function z=ML(ux,uy,minuVect,numMinu,sigma)
z = zeros(size(ux));
z = complex(z,0);
for j = 1:numMinu
z= z + exp(-1j*((ux*minuVect(j,1))+(uy*minuVect(j,2)))) ;
end;
den=-(sigma^(-2))*2;
z=z.*exp((ux.^2+uy.^2)/den);
end
%MO Fourier domain function
function z=MO(ux,uy,mu,numMinuzie,sigma)
z = zeros(size(ux));
z = complex(z,0);
for j = 1:numMinuzie
z= z + 1j*(ux*cos(mu(j,3))+uy*sin(mu(j,3))) .* exp(-1i*(ux*mu(j,1)+uy*mu(j,2))) ;
end;
z=z.*exp(-(ux.^2+uy.^2)/(2*(sigma^(-2))));
end
我认为函数ML和MO有错误,但我找不到它。我想知道是否有人能够帮助我。
答案 0 :(得分:0)
代码中的频率字段在哪里?对于论文中的傅里叶变换,您必须使用欧米茄术语即频率术语。