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

📄 cll_rgst.m

📁 图像对齐(inage registration)工具箱
💻 M
📖 第 1 页 / 共 3 页
字号:
   % Choice of invariants %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

   case('choice')
      data 	= get(gcbf,'Userdata');
        
      zprava('Choice of invariants','b');
      
      %volba
      INV1 = data.INV1;
      INV2 = data.INV2;
      
      clear global volby;
      global volby;

      tp = data.intp;
      if tp == 'Rotational   ' 
          zprava(['No choice, all ' int2str(size(INV1,2)) ' are taken.'],'b');
          volby = 1:size(INV1,2);
      else
      chinv(tp);
      uiwait;
       zprava(['Choice of invariants: ' num2str(volby)],'b');
      end;
  
      INVS1=INV1(:,volby);
      INVS2=INV2(:,volby);
      
      data.INVS1 = INVS1;
      data.INVS2 = INVS2;
      data.choice = volby;
      
     
		set(gcbf,'Userdata',data);  
      
   % Choice of 2 best corresponding points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      
   case('twobest')
		zprava('','b');

      zprava('Choice of two best corresponding pairs','b');
      
      data 	= get(gcbf,'Userdata');
      
		if isempty(data.INVS1)  
         INVS1=data.INV1;
         INVS2=data.INV2;
      else
         INVS1 = data.INVS1;
         INVS2 = data.INVS2;
      end;
      
      b1    = data.pts1;
  		b2		= data.pts2;
        
      M1    = data.M1;
  		M2		= data.M2;
  
      h1=data.h1;
      h2=data.h2;
  
      rd  = data.rd ;
      rdd = data.rdd;
      
      pairs=mmvzd(INVS1,INVS2,b1,b2,rd,0,rdd);
      
      set(gcbf,'CurrentAxes',h1);
      hn(1)=text(double(pairs(1,2)-5),double(pairs(1,1)),'O','Color',[1 0 0],'FontSize',16);
      hn(2)=text(double(pairs(2,2)-5),double(pairs(2,1)),'O','Color',[0 0 1],'FontSize',16);
     
                  
      set(gcbf,'CurrentAxes',h2);
      hn(3)=text(double(pairs(1,4)-5),double(pairs(1,3)),'O','Color',[1 0 0],'FontSize',16);
      hn(4)=text(double(pairs(2,4)-5),double(pairs(2,3)),'O','Color',[0 0 1],'FontSize',16);

      
      points([pairs(:,1), pairs(:,2)],[pairs(:,3), pairs(:,4)],'Closest control points');
      uiwait;
      
      for i=1:4,
        delete(hn(i));
      end;
   	refresh;   
      data.best=pairs;
      set(gcbf,'Userdata',data);  
      
      
     % Zoom %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
case('zoom')
	data 	= get(gcbf,'Userdata');
   
   set(findobj(gcbf,'Tag','Axes3'),'Xticklabel',[],'Yticklabel',[]);

   
   if get(findobj(gcbf,'Tag','Zoom'),'Value') == 1, zoom on;
   else    
      set(gcbf,'CurrentAxes',data.h1);
      zoom out;
      set(gcbf,'CurrentAxes',data.h2);
      zoom out; 
      zoom off;
   end;
   
     % Clear images %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
case('clr')
	zprava('','b');

   data 	= get(gcbf,'Userdata');
   M1 = data.M1;
   M2 = data.M2;
   set(gcbf,'CurrentAxes',data.h1);
   h=get(data.h1,'Children');
   delete(h);
	imagesc(M1);
         axis image;
         axis ij;
         axis off;
     		colormap(m);

   set(gcbf,'CurrentAxes',data.h2);
   h=get(data.h2,'Children');
   delete(h);
	imagesc(M2);
         axis image;
         axis ij;
         axis off;
     		colormap(m);

   
  % Plot CP points %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
case('wind')
	zprava('','b');

   data 	= get(gcbf,'Userdata');

   x1		= data.x1;
   x2		= data.x2;
   
   y1		= data.y1;
   y2		= data.y2;

   M1 = data.M1;
   M2 = data.M2;
   if isempty(x1)==0
      
   	set(gcbf,'CurrentAxes',data.h1);
  
  		cla;
  
		imagesc(M1);
		axis image;
   	colormap(m);
	   axis off;
         
   	n=size(x1);
		for i=1:n,
   		plot(y1(i),x1(i),'.r');
        text(y1(i)+5,x1(i),int2str(i),'Color','r');
		end;
   
   
   	set(gcbf,'CurrentAxes',data.h2);
	   cla;
   	imagesc(M2);
	   axis image;
   	colormap(m);
	   axis off;
         
	   n=size(x2);
		for i=1:n,
   		plot(y2(i),x2(i),'.r');
        text(y2(i)+5,x2(i),int2str(i),'Color','r');
	   end;
   
	else
   	zprava('CPs not yet computed!','r');

	end;

      
      
case('eval')
			zprava('','b');

         data 	= get(gcbf,'Userdata');
         global refob
         global sensob
         global pars
         
         refob = data.M1;
         sensob = data.M3;
         pars = data.param;
         
         
		   evl;
        	uiwait;
            
% windowed computation of invariants            

 case('WOKNO')       
      zprava('','b');
      data 			= get(gcbf,'Userdata');
      val = get(findobj(gcbf,'Tag','WOKNO'),'Value');
      if val == 1 
               data.flgW    = 'ON'; 
      else
               data.flgW    = 'OFF'; 
      end;
      set(gcbf,'Userdata',data);  

      
  case('AUTO')
	  zprava('','b');
      data 			= get(gcbf,'Userdata');
      val = get(findobj(gcbf,'Tag','AUTO'),'Value');
      if val==1       
         data.flg    = 'AUTO'; 
         set(findobj(gcbf,'Tag','RegB'),'FontWeight','bold');
         set(findobj(gcbf,'Tag','mizi'),'visible','off');
         
         % default values
         set(findobj(gcbf,'Tag','CPTypMenu'),'value',1);
         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','STRDMenu'),'Value',4);
         set(findobj(gcbf,'Tag','ANGMenu'),'Value',8);
         set(findobj(gcbf,'Tag','STRMenu'),'Value',2);
         set(findobj(gcbf,'Tag','SignMenu'),'Value',4);
         set(findobj(gcbf,'Tag','MeanMenu'),'Value',2);
      
         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');
     	           
         set(findobj(gcbf,'Tag','DistCP'),'visible','on');
         set(findobj(gcbf,'Tag','MDistText'),'visible','on');
         
         set(findobj(gcbf,'Tag','NumCP'),'String',30);
         set(findobj(gcbf,'Tag','DistCP'),'String',12);
             
         set(findobj(gcbf,'Tag','STDMenu'),'visible','off');  
         set(findobj(gcbf,'Tag','SGText'),'visible','off');  
                  
         set(findobj(gcbf,'Tag','Radius'),'String',30);
			set(findobj(gcbf,'Tag','RRad'),'String',1);
         set(findobj(gcbf,'Tag','INVTypMenu'),'Value',2);

         set(findobj(gcbf,'Tag','ThrMenu'),'Value',5);
         set(findobj(gcbf,'Tag','RadiusM'),'String',30);
       	 set(findobj(gcbf,'Tag','RRadM'),'Value',2);
         
         
         
		  	
      else
         data.flg    = 'MANU'; 
         set(findobj(gcbf,'Tag','RegB'),'FontWeight','normal');
         set(findobj(gcbf,'Tag','mizi'),'visible','on');

      end;
      set(gcbf,'Userdata',data);  
     
      
      % show window with the coordinates of CPS
   case('pts')
      			zprava('','b');

      data 	= get(gcbf,'Userdata');
      x1		= data.x1;
 	  	x2		= data.x2;
    	y1		= data.y1;
       y2	= data.y2;
      
		if isempty(x1)==0
      		points([x1, y1],[x2, y2],'Detected control points');
		      uiwait;
		else
   			zprava('CPs not yet computed!','r');
	   end;
      
            % invoke help window
      case('help')
      data 	= get(gcbf,'Userdata');

zprava('','b');
global IMAREPATH;
web(['file:' IMAREPATH 'help/help_imare.html']);
   
   case('krz')
		zprava('','b');

      data 	= get(gcbf,'Userdata');
      zprava('CPs used for registration computation','b');
	
      krouzkuj(data.pts1,data.h1);
      krouzkuj(data.pts2,data.h2);
   
   
   case('invshow')
		zprava('','b');

      data 	= get(gcbf,'Userdata');
      zprava('Computed values of invariants','b');
      
      pocty = [0 4 12 24 40 60 84];
      
   	M1 = data.M1;
      M2 = data.M2;
      
     	h1 = data.h1;
	   h2 = data.h2;

		b1=data.pts1;
		b2=data.pts2;


   	x1		= b1(:,1);
   	x2		= b2(:,1);
   
   	y1		= b1(:,2);
   	y2		= b2(:,2);
   
	   if isempty(data.INV1)==0
   
   
   	   if isempty(data.INVS1)  
      	   INVS1=data.INV1;
         	INVS2=data.INV2;
	      else
   	      INVS1 = data.INVS1;
      	   INVS2 = data.INVS2;
	      end;
      
       
   	   rd = data.rd;
      	rdd = data.rdd;
	      ord = 7;
      
   	   choice = data.choice;
      	zprava(['Q .. quit, R .. reference, S .. sensed, left mouse .. selection'],'b');
      
			set(gcbf,'CurrentAxes',data.h1);
  
  			cla;
   
    		imagesc(M1);
     		axis image;
     		colormap(m);
         axis off;
         
   		n=size(x1);
			for i=1:n,	
      		plot(y1(i),x1(i),'ob');
		      text(y1(i)-5,x1(i)-5,int2str(i),'color','r');
		   end;
   
   
   		set(gcbf,'CurrentAxes',data.h2);
		   cla;
      	imagesc(M2);
     		axis image;
     		colormap(m);
         axis off;
         
         n=size(x2);
			for i=1:n,
      		plot(y2(i),x2(i),'ob');
		      text(y2(i)-5,x2(i)-5,int2str(i),'color','r');

		   end;
      
      
   		ub=1;
		   set(gcbf,'CurrentAxes',data.h1);
		   flw = 1;
		   while ub ~= 113
      		[ux,uy,ub]=ginput(1);
   		
   		   if ub == 114	%(reference R)
         		set(gcbf,'CurrentAxes',data.h1);
		         flw = 1;
      		elseif ub == 115 %(sensed S)
		         set(gcbf,'CurrentAxes',data.h2);
      		   flw = 2;
		      elseif ub == 113
         
      		else
         
   		      if flw ==1
						[v1,v2]=min(((x1-uy).^2+(y1-ux).^2));			            
		            invval(v2,x1(v2), y1(v2),INVS1(v2,:),choice,rd,rdd,flw);
  				      axes(h2);         
		      		axes(h1);         
		         else
						[v1,v2]=min(((x2-uy).^2+(y2-ux).^2));			            
            		invval(v2,x2(v2), y2(v2),INVS2(((v2-1)*(2*pocty(rdd+1)+1)+1):((v2)*(2*pocty(rdd+1)+1)),:),choice,rd,rdd,flw);
		  		      axes(h1);         
  				      axes(h2);         
		         end;
         
      		end;
   		end;
   
		else
   
   	   zprava('','b');
   	end;   
   end;
   
   
   

% *************************** auxilliary functions

function zprava(co,barva);

set(findobj(gcbf,'Tag','MessText'),'String',co,'ForegroundColor',barva); 


function vr=vrat(ktery);

idx = get(findobj(gcbf,'Tag',ktery),'value');
val = get(findobj(gcbf,'Tag',ktery),'String');
vr=str2num(val(idx));



function ramek(kde,barva);

set(findobj(gcbf,'Tag',kde),'XColor',barva);
set(findobj(gcbf,'Tag',kde),'YColor',barva);
%set(findobj(gcbf,'Tag',kde),'ZColor',barva);


function zbarvi(co,barva);

set(findobj(gcbf,'Tag',co),'ForegroundColor',barva); 


function  krouzkuj(body,kam);

	axes(kam);
	for i=1:size(body,1),
      text(double(body(i,2))-4,double(body(i,1)),'O','Color',[0 1 0],'FontSize',16);
   end;
   


function M3=transformuj(M1,M2,par2);
      
      [z1,z2,z3,z4,z5,z6]=imtransfpor(M2,M2,[par2(1) par2(2) -1*par2(4) -1*par2(3)],'bilinear',1,1);     
      v=size(M1);
      
      st1x=v(1)/2;
      st1y=v(2)/2;

      vv=size(z1);
      if (vv(1)<(v(1)-z3+1)|vv(2)<(v(2)-z4+1))
         z1(v(1)-z3+1,v(2)-z4+1)=0;
      end;
      
      
      vv2=z1([1:v(1)]-z3+1,[1:v(2)]-z4+1);
      
      posunvert=fix(z6(2))-z3+1-(v(1)-z3+1);
      posunhoriz=fix(z5(2))-z4+1-(1-z4+1);
      
      posunvert=(z6(2))-z3+1-(v(1)-z3+1);
      posunhoriz=(z5(2))-z4+1-(1-z4+1);

      pom=zeros(vv(1),vv(2));
      pom([1:v(1)]-z3+1,[1:v(2)]-z4+1)=M1;
      
		hf=figure;
   	imagesc(vv2);
	   colormap gray;
   	axis image;
	   axis off;
      
      
		title(['Registered sensed image';'Space bar to continue. '],'Color','b');    
        

		M3 = vv2;
        pause;
        close(hf); 

⌨️ 快捷键说明

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