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

📄 cll_rgst.asv

📁 图像对齐(inage registration)工具箱
💻 ASV
📖 第 1 页 / 共 3 页
字号:
function cll_rgst(action)
% GUI- function
% main function for IMARE toolbox
% Barbara Zitova, zitova@utia.cas.cz


% Colormap 
m = gray(256);
global IMAREPATH

switch(action)

	% Init  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	case('create')
	 data.pathname = IMAREPATH;
     
     data.M1 = [];
     data.x1 = [];
     data.y1 = [];
     data.F1 = [];
     data.INV1 = [];
     data.INVS1 = [];
     data.filename1 = [];
     data.choice = [];
     data.wn = [];
     data.wnr = [];
     data.wnc = [];

     data.param = [];

	 data.M2 = [];
     data.x2 = [];
     data.y2 = [];
     data.F2 = [];
     data.INV2 = [];
     data.INVS2 = [];
     data.filename2 = [];
     data.flg    = 'MANU'; 
     data.flgW   = 'OFF';

     data.h1 = [];
     data.h2 = [];
	 data.M3 = [];
     data.intp = [];	
     data.rd = [];
     data.rdd = [];
     data.pts1 = [];
     data.pts2 = [];

   set(gcbf,'Userdata',data);
     	  
 	% Load reference image %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
 case('loadA')
	  zprava('','b');

      data 			= get(gcbf,'Userdata');
      pathname 	= data.pathname;
      
      zbarvi('Ref_im','r');
      zprava('Loading reference image','b');
      
	  [filename, pathname] = uigetfile([pathname '*.*'], 'Load reference image');
   	  if filename~=0
         if isempty(findstr(filename,'pgm'))
            [M1,ma] = imread([pathname, filename]);

            if isind(M1) & ~isempty(ma)
               M1 = 256*double(ind2gray(M1,ma));
            else
               if isgray(M1)
                  M1 = double(M1);
               else
                  M1 = double(rgb2gray(M1));
               end;
            end;
         else
            cesta=strrep([pathname, filename],'.pgm','');
            M1=rc(cesta);
         end;
         
         data.M1 = M1;
         vel=size(M1);

         set(findobj(gcbf,'Tag','Ref_im_c'),'String',[filename ',   ' int2str(vel(1)) ' x ' int2str(vel(2))],'ForegroundColor','k'); 
         
         data.pathname = pathname;
       
         
         set(gcbf,'CurrentAxes',findobj(gcbf,'Tag','Axes1'));
         data.h1 =  findobj(gcbf,'Tag','Axes1');

         cla;
         imagesc(M1);
         axis image;
         axis ij;
     	 axis off;
     	 colormap(m);
           

		 data.filename1 = filename;
         set(gcbf,'Userdata',data);    	
         zbarvi('Ref_im','k');
	     zprava('','b');

      end;
      
       	% Load sensed image %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 case('loadB')
		zprava('','b');

      data 			= get(gcbf,'Userdata');
      pathname 	= data.pathname;
      
      zbarvi('Sens_im','r');
      zprava('Loading sensed image','b');
      
      [filename, pathname] = uigetfile([pathname '*.*'], 'Load sensed image');
   	if filename~=0
         if isempty(findstr(filename,'pgm'))
            [M2,ma] = imread([pathname, filename]);

            if isind(M2) & ~isempty(ma)
               M2 = 256*double(ind2gray(M2,ma));
            else
               if isgray(M2)
                  M2 = double(M2);
               else
                  M2 = double(rgb2gray(M2));
               end;
            end;
         else
            cesta=strrep([pathname, filename],'.pgm','');
            M2=rc(cesta);
         end;
         
         data.M2 = M2;
         
         vel=size(M2);         
         set(findobj(gcbf,'Tag','Sens_im_c'),'String',[filename ',   ' int2str(vel(1)) ' x ' int2str(vel(2))],'ForegroundColor','k'); 

         
         data.pathname = pathname;
         set(gcbf,'CurrentAxes',findobj(gcbf,'Tag','Axes2'));
         data.h2 =  findobj(gcbf,'Tag','Axes2');

			cla;

    		imagesc(M2);
         axis image;
         axis ij;
         axis off;
     		colormap(m);
         
         zbarvi('Sens_im','k');
         data.filename2 = filename;
         set(gcbf,'Userdata',data);    	
         zprava('','b');

      end;
      
      
      	% Load invariants %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 case('loadINV')
 			zprava('','b');

		   data 			= get(gcbf,'Userdata');
      	pathname 	= data.pathname;

	      zprava('Loading invariants for reference image','b');
			[filename, pathname] = uigetfile([pathname '*.*'], 'Load invariants');
      	if filename~=0
         	eval(['load ' [pathname, filename] ';']);

	         data.INV1 = INV;
   	      data.INVS1 = INVS;
      	   data.rd = rd;
         	data.rdd = rdd;
	         data.intp = tp;
            data.pts1 = pts;         
   	      data.pathname = pathname;
      		set(gcbf,'Userdata',data);    	
	      end;
      
   	   zprava('Loading invariants for sensed image','b');
			[filename, pathname] = uigetfile([pathname '*.*'], 'Load invariants');
	   	if filename~=0
     	      eval(['load ' [pathname, filename] ';']);
           
            data.INV2 = INV;
   	      data.INVS2 = INVS;
            data.pts2 = pts;         
	         data.pathname = pathname;
   	   	set(gcbf,'Userdata',data);    	
	      end;
      	   zprava('','b');

            	% Load control points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 case('loadCP')
    			zprava('','b');

			   data 			= get(gcbf,'Userdata');
		      pathname 	= data.pathname;

		      zprava('Loading CPs for reference image','b');
      		[filename, pathname] = uigetfile([pathname '*.*'], 'Load reference CPs');
		      if isempty(findstr('.pgm',filename))
      			if filename~=0
              		eval(['load ' [pathname, filename] ';']);
		           	data.x1 = x;
              		data.y1 = y;
              		data.F1=zeros(size(data.M1));
              		for k=1:size(x(:),1)
                 		data.F1(x(k),y(k))=1;
              		end;
           		else 	     
              		zprava('Error','r');
              
              	end;
      		else
      			cesta=strrep([pathname, filename],'.pgm','');
   				if filename~=0
        
			         data.F1 = rc(cesta);
         
      			   [x1,y1]=find(data.F1>0);
   
   			      data.x1 = x1;
      	   		  data.y1 = y1;
       			end;
       		end;

		      zprava('Loading CPs for sensed image','b');
      		[filename, pathname] = uigetfile([pathname '*.*'], 'Load sensed CPs');
		      if isempty(findstr('.pgm',filename))
      			if filename~=0
              		eval(['load ' [pathname, filename] ';']);
	           		data.x2 = x;
              		data.y2 = y;
              		data.F2=zeros(size(data.M2));
	      	  		for k=1:size(x(:),1)
                       data.F2(x(k),y(k))=1;
                  end;
                    
     		  		else 	     
              		zprava('Error','r');
					end;
            else
	  
   			   cesta=strrep([pathname, filename],'.pgm','');

			   	if filename~=0
        				 data.F2 = rc(cesta);
         
			          [x2,y2]=find(data.F2>0);
   		
         			 data.x2 = x2;
			          data.y2 = y2;
			     end;
		      end;
      	   data.pathname = pathname;
      		set(gcbf,'Userdata',data);    	
	         zprava('','b');

      
    
  % Saving CP and INV %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  case('saveCPI')
    			zprava('','b');

		     data 			= get(gcbf,'Userdata');
		     pathname 	= data.pathname;
		     tp = data.intp;
		     rd = data.rd;
           rdd = data.rdd;
           choice = data.choice;

		     % saving detected CPs from reference image
      	  zprava('Saving reference image','b');
		     F 			= data.F1;
		     x			= data.x1;
      	  y			= data.y1;
        	  filenm=data.filename1;

	        if(~isempty(F))
   	        [filename, pathname] = uiputfile([pathname 'CP1.pgm'], 'Save CP1 points ');
      	     if (filename(~0))
         	     F(find(F<0))		=	0;
            	  F(find(F>255))	=	255;
	              wc(strrep([pathname, filename],'.pgm',''),F);
   	           eval(['save ' strrep([pathname, filename],'.pgm','') ' x y filenm;']);
      	     end;
		     else
      		  zprava('Reference image CPs files is empty!','r'); 
		     end;
     
		     % saving computed invariants plus selected from reference image
      	  INV			= data.INV1;
          pts          = data.pts1;


	       if isempty(data.INVS1)  
   	      INVS=data.INV1;
      	 else
         	INVS = data.INVS1;
	       end;
      

	       if(~isempty(INV))
   	        [filenamei, pathname] = uiputfile([pathname 'INV1.mat'], 'Save invariants from reference image ');
      	     if (filenamei(~0))
         	     eval(['save ' [pathname, filenamei] ' INV INVS filenm filename tp rd rdd choice pts;']);
	           end;
   		 else
		        zprava('Reference image invariants have not yet been computed!','r'); 
		    end;

 
     
     
			 %   saving CP points from reference image
 			 zprava('Saving sensed image','b');
	       F 			= data.F2;
   	    x			= data.x2;
      	 y			= data.y2;
	       filenm=data.filename2;

        
	       if(~isempty(F))
   	        [filename, pathname] = uiputfile([pathname 'CP2.pgm'], 'Save CP2 points ');
      	     if (filename(~0))
         	     F(find(F<0))		=	0;
            	  F(find(F>255))	=	255;
	              wc(strrep([pathname, filename],'.pgm',''),F);
   	           eval(['save ' strrep([pathname, filename],'.pgm','') ' x y filenm;']);
         	  end;
		        zprava('','b');
		    else
		        zprava('Sensed image CPs files is empty!','r');
		    end;
     
          % saving computed invariants plus selected from sensed image
     	    INV				= data.INV2;
            pts          = data.pts2;
      	 if isempty(data.INVS2)  
         	INVS=data.INV2;
	       else
   	      INVS = data.INVS2;
      	 end;

	       if(~isempty(INV))
   	        [filenamei, pathname] = uiputfile([pathname 'INV2.mat'], 'Save invariants from sensed image ');
      	     if (filenamei(~0))
         	     eval(['save ' [pathname, filenamei] ' INV INVS filenm filename  tp rd rdd choice pts;']);
     		     end;
		    else
      		  zprava('Sensed image invariants have not yet been computed!','r'); 
		    end;
     
     
  %  saving transformed image and parameters %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  case('saveT')
 		  zprava('','b');

	     data 			= get(gcbf,'Userdata');
   	  pathname 	= data.pathname;


			M3				= data.M3;
			parameters  =  data.param;
         explanation = ['Parameters: DX DY ANGLE SCALE + transformed image'];
         
         if(~isempty(M3))
           [filenamei, pathname] = uiputfile([pathname 'senstransf.mat'], 'Save transformed sensed image ');
           if (filenamei(~0))
              eval(['save ' [pathname, filenamei] ' M3 parameters explanation;']);
           end;
           
           [filenamei, pathname] = uiputfile([pathname 'sensimage.tif'], 'Save transformed sensed image ');
           if (filenamei(~0))
	           eval(['imwrite( double(M3/255),''' [pathname, filenamei] ''',''tif'');'])
           end;
		   else
      	  zprava('Sensed image transformation has not yet been computed!','r'); 
	      end;
     
     
     
  % CP choice %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
	case('SelDisp')
  		zprava('','b');

     
     % ************ tunning off ************************
     set(findobj(gcbf,'Tag','STRDMenu'),'visible','off');
     set(findobj(gcbf,'Tag','ANGMenu'),'visible','off');
     set(findobj(gcbf,'Tag','STRMenu'),'visible','off');
     set(findobj(gcbf,'Tag','SignMenu'),'visible','off');
     set(findobj(gcbf,'Tag','MeanMenu'),'visible','off');
     set(findobj(gcbf,'Tag','STDMenu'),'visible','off');  
     set(findobj(gcbf,'Tag','DSText'),'visible','off');
     set(findobj(gcbf,'Tag','AngleText'),'visible','off');
     set(findobj(gcbf,'Tag','StraightText'),'visible','off');
     set(findobj(gcbf,'Tag','SignText'),'visible','off');
     set(findobj(gcbf,'Tag','MeanText'),'visible','off');
     set(findobj(gcbf,'Tag','SGText'),'visible','off');  
   
     cf2 = get(findobj(gcbf,'Tag','CPTypMenu'),'value');

     switch (cf2)
    
     case (1) % corner similarity ***********************************
        set(findobj(gcbf,'Tag','STRDMenu'),'visible','on');
        set(findobj(gcbf,'Tag','ANGMenu'),'visible','on');
        set(findobj(gcbf,'Tag','STRMenu'),'visible','on');
        set(findobj(gcbf,'Tag','SignMenu'),'visible','on');
        set(findobj(gcbf,'Tag','MeanMenu'),'visible','on');
      
        set(findobj(gcbf,'Tag','DSText'),'visible','on');
        set(findobj(gcbf,'Tag','AngleText'),'visible','on');
        set(findobj(gcbf,'Tag','StraightText'),'visible','on');
        set(findobj(gcbf,'Tag','SignText'),'visible','on');
        set(findobj(gcbf,'Tag','MeanText'),'visible','on');
     	  zprava('"Corner similarity" corner detection','b'); 
        
        set(findobj(gcbf,'Tag','DistCP'),'visible','on');
        set(findobj(gcbf,'Tag','MDistText'),'visible','on');

    case (2) % Harris  ***********************************************
        set(findobj(gcbf,'Tag','STDMenu'),'visible','on');  
        set(findobj(gcbf,'Tag','SGText'),'visible','on');  
     	  zprava('Harris corner detection','b'); 
        
        set(findobj(gcbf,'Tag','DistCP'),'visible','on');
        set(findobj(gcbf,'Tag','MDistText'),'visible','on');
   
    case (3) % Manual *************************************************
        set(findobj(gcbf,'Tag','DistCP'),'visible','off');
        set(findobj(gcbf,'Tag','MDistText'),'visible','off');
     	  zprava('Manual corner detection','b'); 
    end;
    
    
    
  % detection of CPs  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
case ('CPdetection')
	zprava('','b');

   CPtyp = get(findobj(gcbf,'Tag','CPTypMenu'),'value');
   data 	= get(gcbf,'Userdata');
   if ~((CPtyp==1)|(CPtyp==2)|(CPtyp==3))
       zprava('Wrong method for CP detection!','r');
   else
       if (~isfield(data,'M1') | ~isfield(data,'M2'))
          zprava('Missing images!','r');
       else
          M1		= data.M1;
          M2		= data.M2;
          
      
          zprava('Reference image CP computing','b');

          % parameters setting
          nCP = str2num(get(findobj(gcbf,'Tag','NumCP'),'String'));
          dCP = str2num(get(findobj(gcbf,'Tag','DistCP'),'String'));
          h1=data.h1;
          h2=data.h2;
          
          switch(CPtyp)
			 % Corner similarity %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
             
          case (1),
             
             Mn=vrat('MeanMenu');
             Sign = vrat('SignMenu');             
             STR = vrat('STRMenu');
             An = vrat('ANGMenu');             
             STRD = vrat('STRDMenu');
             
             [HGF,C,HM,ANG,POS1,POS2]=sigptst1(M1,1,Mn,1,Sign);
				 POINTS1=shsigpts(M1,1,nCP,HGF,C,HM,ANG,Mn,Sign,STR,An,STRD,dCP);
             
             zbarvi('Ref_im','k');
		       zbarvi('Sens_im','r');

             zprava('Sensed image CP computing','b'); 
             [HGF,C,HM,ANG,POS1,POS2]=sigptst1(M2,1,Mn,1,Sign);
             [POINTS2]=shsigpts(M2,1,nCP,HGF,C,HM,ANG,Mn,Sign,STR,An,STRD,dCP);
             zbarvi('Sens_im','k');

             
			case (2),
		   % Harris %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


⌨️ 快捷键说明

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