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