📄 cll_rgst.m
字号:
% 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 + -