Thursday, March 12, 2020

finger print 2

im=double(rgb2gray(imread('biometrik3.jpg')))/255;
[b c]=size(im);
m=sum(sum(im))/(b*c);
v = sum(sum((im-m).*(im-m)))/(b*c);
m0=0.5;
v0=v*0.1;
T=zeros(b,c);

for i=1:b
    for j=1:c
        if im(i,j)>m
            T(i,j) =m0+(v0/v*(im(i,j)-m).^2).^0.5;
        else
             T(i,j) =m0-(v0/v*(im(i,j)-m).^2).^0.5;
        end
    end
end
figure(1),imshow(im)
figure(2),imshow(T)
w=20;
nb=b/w;
mb=zeros(nb,nb);
vb=zeros(nb,nb);

for i=1:nb
    for j=1:nb
        g=im((i-1)*w+1:(i-1)*w+w,(j-1)*w+1:(j-1)*w+w);
        mb(i,j)=sum(sum(g));
        vb(i,j)=sum(sum((g-mb(i,j)).^2))/(w*w); 
    end
end

Gmean=sum(sum(mb))/(nb*nb);
Vmean=sum(sum(vb))/(nb*nb);
NGFrg=sum(sum(mb>Gmean));
TGFrg=sum(sum(mb(mb>Gmean)));
GFrg=TGFrg/NGFrg

NVFrg=sum(sum(vb>Vmean));
TVFrg=sum(sum(vb(vb>Vmean)));
VFrg=TGFrg/NGFrg


NGBkg=sum(sum(mb<=Gmean));
TGBkg=sum(sum(mb(mb<=Gmean)));
GBkg=TGBkg/NGBkg

NVBkg=sum(sum(vb<=Vmean));
TVBkg=sum(sum(vb(vb<=Vmean)));
VBkg=TVBkg/NVBkg
mm=mb>GFrg
vv=vb>VFrg

gg =mm&vv

gg=not(gg)
im2 =im;
for i = 1:nb
    for j=1:nb
        if gg(i,j)==0
            im2((i-1)*w+1:(i-1)*w+w,(j-1)*w+1:(j-1)*w+w)=0;
        end
    end
   
end
figure(10);imshow(im2)
mskx=[0 0 0;-1 0 1;0 0 0];
Gx = conv2(im2,mskx,'same')/2;
msky=[ 0 -1 0;0 0 0;0 1 0];
Gy = conv2(im2,msky,'same')/2;
c=complex(Gx,Gy);
Gms=zeros(nb,nb);
for i = 1:nb
    for j = 1:nb
        cb= c((i-1)*w+1:(i-1)*w+w,(j-1)*w+1:(j-1)*w+w);
       
        Gms(i,j)= sum(sum(cb));
    end
end
Gmsx=real(Gms);
Gmsy=imag(Gms);
Teta=zeros(nb,nb);
[bb cc]=find(Gmsx>=0);
Teta(bb,cc)= 0.5*pi+0.5*atan(Gmsy(bb,cc)./Gmsx(bb,cc));
[bb cc]=find(Gmsx<0 amp="" msy="">=0);
Teta(bb,cc)= 0.5*pi+0.5*atan(Gmsy(bb,cc)./Gmsx(bb,cc))+pi;
[bb cc]=find(Gmsx<0 amp="" msy="" p="">Teta(bb,cc)= 0.5*pi+0.5*atan(Gmsy(bb,cc)./Gmsx(bb,cc))-pi;


figure(10);imshow(im2)

hold on



for i =1 : nb
    for j =1:nb
        y0 = (i-1)*w + w/2;
        x0 = (j-1)*w + w/2;
        y1 = (i-1)*w + w/2+w/2*sin(Teta(i,j));
        x1 = (j-1)*w + w/2+w/2*cos(Teta(i,j));;
        x=[x0 x1];
        y=[y0 y1];
        plot(x,y,'b','LineWidth',1);
    end
end
hold off

No comments: