Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
光谱细节MATLAB代码_Matlab_Fingerprint - Fatal编程技术网

光谱细节MATLAB代码

光谱细节MATLAB代码,matlab,fingerprint,Matlab,Fingerprint,我对指纹验证感兴趣,我正在尝试实现[参考文献1]中的光谱细节描述符 [参考文献1]徐,H.,韦尔杜伊斯,R.,巴赞,A.M.,凯夫纳,T.A.,阿克曼斯,T.A.,和戈克伯克,B.(2009)。使用光谱细节表示的指纹验证。信息取证与安全,IEEE交易,第4(3)页,397-409页。() 这是我的代码函数。我在一个简短的细节列表上对其进行了测试,但结果与[参考文献1]中公布的结果大不相同。我不认为问题仅仅在于参数设置。我绘制了计算和插值的ML和MO描述符,但图像非常不同。 有人能帮我写代码吗?

我对指纹验证感兴趣,我正在尝试实现[参考文献1]中的光谱细节描述符

[参考文献1]徐,H.,韦尔杜伊斯,R.,巴赞,A.M.,凯夫纳,T.A.,阿克曼斯,T.A.,和戈克伯克,B.(2009)。使用光谱细节表示的指纹验证。信息取证与安全,IEEE交易,第4(3)页,397-409页。()

这是我的代码函数。我在一个简短的细节列表上对其进行了测试,但结果与[参考文献1]中公布的结果大不相同。我不认为问题仅仅在于参数设置。我绘制了计算和插值的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中有一个错误,但我找不到它。我想知道是否有人能帮助我

代码中的频率项在哪里?对于论文中的傅里叶变换,必须使用ω项,即频率项。

在[ref1]的等式15中,ω项用ωx和ωy表示。在我的代码中,等式15由函数ML(ux,uy,minuVect,numinu,sigma)建模,频率项为ux和uy。我认为这是可以的,不是吗?我认为你在空间域函数中缺少了“-I”项(虚项)。根据[ref1]中的等式14,空间域函数(我的代码中的MG)没有一个不重要的部分。MG根据[参考文献2]中的方程式1实施。[参考文献2]徐海云和R.Veldhuis。“指纹识别的复杂光谱细节表示”,《计算机视觉和模式识别研讨会》(CVPRW),2010年IEEE计算机学会年会。IEEE,2010年。