source: proiecte/pmake3d/make3d_original/Make3dSingleImageStanford_version0.1/third_party/zisserman/vgg_ui/vgg_gui_H.m @ 37

Last change on this file since 37 was 37, checked in by (none), 14 years ago

Added original make3d

  • Property svn:executable set to *
File size: 4.6 KB
Line 
1function fig=vgg_gui_H(i1,i2,H)
2%
3%       fig=vgg_gui_H(i1,i2,H)
4%
5%
6% Visualizes an homography matrix of two views
7%
8%IN:
9%       i1 - Matlab image
10%       i2 - Matlab image
11%       H - 3x3 Homography matrix. Assumes that image coordiantes are 1..width
12%               where pixel centers are at integer locations.
13%
14%OUT:
15%       fig - handle to the figure
16
17% $Id: vgg_gui_H.m,v 1.3 2001/10/30 14:42:41 wexler Exp $
18% Yoni, Tue Mar 27 19:31:16 2001
19
20
21if nargin==3
22   action='start';
23else
24   action=i1;
25   ud = get(gcf, 'UserData');
26end
27
28if strcmp(action,'start'),
29   if nargin ~= 3
30      error('Must give 3 arguments... read the docs.\n');
31   end
32
33   h0 = figure('Color',[0.8 0.8 0.8], ...
34               'NumberTitle','off', ...
35               'Name','Play With Homography Matrix', ...
36               'ButtonDownFcn', 'disp(''Click on images'')',...
37               'WindowButtonUpFcn', 'vgg_gui_H(''none'');',...
38               'WindowButtonMotionFcn', 'vgg_gui_H(''move'')', ...
39               'Pointer', 'crosshair', ...
40               'DoubleBuffer', 'on',...
41               'Units','normalized');
42   m0=uimenu('Label', '&Color');
43   uimenu(m0, 'Label', '&Red', 'ForegroundColor', [1 0 0], ...
44          'Accelerator', 'r', 'Callback', 'vgg_gui_H(''cr'');');
45   uimenu(m0, 'Label', '&Green', 'ForegroundColor', [0 1 0], ...
46          'Accelerator', 'g', 'Callback', 'vgg_gui_H(''cg'');');
47   uimenu(m0, 'Label', '&Blue', 'ForegroundColor', [0 0 1], ...
48          'Accelerator', 'b', 'Callback', 'vgg_gui_H(''cb'');');
49   m1=uimenu('Label', '&Size');
50   uimenu(m1, 'Label', '&Increase', 'Callback', 'vgg_gui_H(''s+'');', 'Accelerator', '+');
51   uimenu(m1, 'Label', '&Decrease', 'Callback', 'vgg_gui_H(''s-'');', 'Accelerator', '-');
52   uimenu(m1, 'Label', '&1', 'Callback', 'vgg_gui_H(''s1'');', 'Accelerator', '1');
53   uimenu(m1, 'Label', '&2', 'Callback', 'vgg_gui_H(''s2'');', 'Accelerator', '2');
54   uimenu(m1, 'Label', '&3', 'Callback', 'vgg_gui_H(''s3'');', 'Accelerator', '3');
55   uimenu(m1, 'Label', '&4', 'Callback', 'vgg_gui_H(''s4'');', 'Accelerator', '4');
56   uimenu(m1, 'Label', '&5', 'Callback', 'vgg_gui_H(''s5'');', 'Accelerator', '5');
57   uimenu(m1, 'Label', '&6', 'Callback', 'vgg_gui_H(''s6'');', 'Accelerator', '6');
58   uimenu(m1, 'Label', '&7', 'Callback', 'vgg_gui_H(''s7'');', 'Accelerator', '7');
59   uimenu(m1, 'Label', '&8', 'Callback', 'vgg_gui_H(''s8'');', 'Accelerator', '8');
60   uimenu(m1, 'Label', '&9', 'Callback', 'vgg_gui_H(''s9'');', 'Accelerator', '9');
61   
62   ah1 = axes('Parent', h0, ...
63              'Position',[0 0 .5 1]);
64   h1=imshow(i1); hold on; title('Image 1');
65   set(h1, 'ButtonDownFcn','vgg_gui_H(''b1'');');
66
67   ah2 = axes('Parent',h0, ...
68              'Position',[.5 0 .5 1], ...
69              'Tag','Axes2');
70   h2=imshow(i2); hold on; title('Image 2');
71   set(h2, 'ButtonDownFcn','vgg_gui_H(''b2'');');
72
73   point=plot(-1000, -1000,'EraseMode','xor');
74   point2=plot(-1000, -1000,'EraseMode','xor');
75
76   s1=size(i1); s2=size(i2);
77   t(:,:,1)=H;  t(:,:,2)=inv(H);  H=t;
78
79   ud=struct('h0', h0, 'h',[h1 h2], 'ah', [ah1, ah2], ...
80             'sizes', [s1(1:2); s2(1:2)], ...
81             'current', -1, 'color', 'r', 'size', 1, ...
82             'p', point, 'H', H, 'p2', point2 );
83
84   set(h0,'UserData',ud);
85
86   if nargout > 0, fig = h0; end
87
88elseif strcmp(action, 'move')
89   if ud.current<0 return; end;
90   pt=get(ud.ah(ud.current),'CurrentPoint');
91   pt2=ud.H(:,:,ud.current)*pt(1,:)';
92   pt2=pt2/pt2(3);
93
94   set(ud.p2, 'XData', pt2(1,1), 'YData', pt2(2,1))
95   set(ud.p, 'XData', pt(1,1), 'YData', pt(1,2))
96
97elseif action(1)=='b'
98   if action(2)=='1' ud.current=1;
99   elseif action(2)=='2' ud.current=2;
100   else return;
101   end
102   pt=get(ud.ah(ud.current),'CurrentPoint');
103
104   p2=ud.H(:,:,ud.current)*pt(1,:)';
105   p2=p2/p2(3);
106
107   delete(ud.p);
108   delete(ud.p2);
109   axes(ud.ah(ud.current));
110   ud.p=plot(pt(1,1), pt(1,2), [ud.color '+'], ...
111             'MarkerSize', 8+2*ud.size, 'LineWidth', ud.size,...
112             'EraseMode','xor');
113   axes(ud.ah(3-ud.current));
114   ud.p2=plot(p2(1,1), p2(2,1), [ud.color '+'], ...
115             'MarkerSize', 8+2*ud.size, 'LineWidth', ud.size,...
116             'EraseMode','xor');
117
118elseif action(1)=='c'
119   ud.color=action(2);
120   %get(ud.l)
121   set(ud.p2, 'Color', ud.color);
122   set(ud.p, 'Color', ud.color);
123
124elseif action(1)=='s'
125   if action(2)=='+' ud.size=ud.size+1;
126   elseif action(2)=='-' ud.size=max(1, ud.size-1);
127   else
128      ud.size = str2num(action(2));
129   end
130   set(ud.p, 'LineWidth', ud.size, 'MarkerSize', 8+2*ud.size);
131   set(ud.p2, 'LineWidth', ud.size, 'MarkerSize', 8+2*ud.size);
132
133elseif strcmp(action, 'none')
134   ud.current = -1;
135
136else
137   error(['Unknown command: ' action]);
138end
139
140set(ud.h0, 'UserData',ud);
141
Note: See TracBrowser for help on using the repository browser.