⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getlocaltheta.m

📁 source code for fingerprint using matlab
💻 M
字号:
function [theta,paths1,paths2,paths3] = getLocalTheta(in,start_point,edgeWidth)
%Honors Project 2001~2002
%wuzhili 99050056
%comp sci HKBU
%last update 19/April/2002

paths1 =[];
paths2 =[];
paths3 =[];

			a = start_point;
         pathA = [];
			pathA = a(1,1:2);
         
         theta = [];
         
if a(3) == 0
         for p=1:edgeWidth
            
            [cur,dummy] = size(pathA);
            i = pathA(cur,1);
            j = pathA(cur,2);
                       
            window=in(i-1:i+1,j-1:j+1);
            
            window(2,2) = 0;
            
            if cur > 1
               window( 2 - pathA(cur,1) + pathA(cur-1,1) , 2- pathA(cur,2) + pathA(cur-1,2) ) = 0;
            end;
            
            
            [q,r]=find(window);
            b=[q,r];
            [neighbors,dummy]=size(b);
                                    
            if neighbors == 1
	            pathA(cur+1,1) = b(1,1)-2 + pathA(cur,1);
   	         pathA(cur+1,2) = b(1,2)-2 + pathA(cur,2);
            else
               break;
            end;
          end;
         
	         [path_length, dddd] = size(pathA);			
            paths1 = pathA;
                       
				mean_x = 0;
				mean_y = 0;

			   mean_value = sum(pathA);
            
            mean_x = mean_value(1) / path_length;
				mean_y = mean_value(2) / path_length;

				theta = atan2( (mean_x - pathA(1,1)),(mean_y - pathA(1,2)) );
            
elseif a(3) == 1
   			pathA = [];
   
            total_mx = 0;
            total_my = 0;
            i = a(1);
            j = a(2);
            
            pathA(1,:) = [i,j];
            
            window=in(i-1:i+1,j-1:j+1);
            window(2,2) = 0;
            [q,r]=find(window);
            b=[q,r];
            [neighbors,dummy]=size(b);
            
if neighbors == 3
   for s = 1:3
      
      pathA(2,1) = b(s,1)-2 + pathA(1,1);
		pathA(2,2) = b(s,2)-2 + pathA(1,2);
      
		for p = 1:edgeWidth
            
            [cur,dummy] = size(pathA);
            i = pathA(cur,1);
            j = pathA(cur,2);
            
            window=in(i-1:i+1,j-1:j+1);
            window(2,2) = 0;
            
            if cur > 1
               window( 2 - pathA(cur,1) + pathA(cur-1,1) , 2- pathA(cur,2) + pathA(cur-1,2) ) = 0;
            end;
            
            
            [q,r]=find(window);
            c=[q,r];
            [neighbors,dummy]=size(c);
                                    
            if neighbors == 1
	            pathA(cur+1,1) = c(1,1)-2 + pathA(cur,1);
   	         pathA(cur+1,2) = c(1,2)-2 + pathA(cur,2);
            else
               break;
            end;
    	end;
         
	       [path_length, dddd] = size(pathA);			
                       
	    	mean_x = 0;
			mean_y = 0;

		   mean_value = sum(pathA);
            
         mean_x = mean_value(1) / path_length;
			mean_y = mean_value(2) / path_length;
         
         theta = [theta;atan2( (mean_x - pathA(1,1)),(mean_y - pathA(1,2)) )];
         
         if s == 1
         paths1 = pathA(2:path_length,:);
      	elseif s == 2
      	paths2 = pathA(2:path_length,:);
   		elseif s == 3
      	paths3 = pathA(2:path_length,:);
      	end;
         
         pathA(2:path_length,:) = [];
         
         %total_mx = total_mx + mean_x - pathA(1,1);
         %total_my = total_my + mean_y - pathA(1,2);
         
end;
end;

%com_theta = atan2(total_mx,total_my);

%tmp =abs(theta_b - com_theta);
%theta = min(tmp);
%pathA = path_b(find(tmp==theta));


end;



            
            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -