hallway1

filename = '2011_0328_131452AA.JPG';
rgb = im2double(imread(filename));
rgbsm = imresize(rgb,0.4);
imshow(rgbsm);
load hallway1_project
% [x y] = ginput(8);
% save hallway1_project filename x y

imshow(rgbsm);
hold on
plot(x(1:2),y(1:2),'g','LineWidth',2);
plot(x(3:4),y(3:4),'g','LineWidth',2);
plot(x(5:6),y(5:6),'g','LineWidth',2);
plot(x(7:8),y(7:8),'g','LineWidth',2);
hold off
inpts = [x(1:2) y(1:2); [x(5:6) y(5:6)]];
outpts = [0 0; 0 100; 10 0; 10 100]*10;
T = maketform('projective',inpts,outpts);
[out XData YData] = imtransform(rgbsm,T);
imshow(out);
floor(XData)
floor(YData)
T.tdata.T
ans =

     2    33


ans =

        -689        3508


ans =

   -0.0269    0.5968   -0.0017
   -0.0297    0.4653   -0.0010
   20.2187 -338.4203    1.0000

out = imtransform(rgbsm,T,'XData',[0 50],'YData',[0 50]);
imshow(out);
ref = zeros(600,800);
rng = 1:400;
ref(100+rng,200+rng)=1;
% cpselect(rgbsm,ref);
% save hallway_project2 input_points base_points
load hallway_project2
T2 = cp2tform(input_points,base_points,'Projective');
[out XData YData] = imtransform(rgbsm,T2);
imshow(out);
floor(XData)
floor(YData)
T2.tdata.T
ans =

       -1460       14481


ans =

      -36951        3788


ans =

  1.0e+003 *

    0.0012   -0.0000   -0.0000
    0.0015    0.0075    0.0000
   -0.8876   -3.6750   -0.0010

out = imtransform(rgbsm,T2,'XData',[0 1200],'YData',[-600 800]);
imshow(out);
T2.tdata.T(:,3)
ans =

   -0.0003
    0.0041
   -0.9736

T3 = T2;
theta = 0;
mag = -0.012;
Txy = [1 0 0; 0 1 0; -400 -300 1];
Tproj = [1 0 mag*sin(theta); 0 1 mag*cos(theta); 0 0 1];
T3.tdata.T = Txy*Tproj;
T3.tdata.Tinv = inv(T3.tdata.T);
[out XData YData] = imtransform(rgbsm,T3);
imshow(out);
floor(XData)
floor(YData)
ans =

  -442   464


ans =

  -114     9

out = imtransform(rgbsm,T3,'XData',[-3000 3000],'YData',[-200 3000]);
imshow(out);
Txy = [1 0 0; 0 1 0; -400 -300 1];
Tscl = [1/400 0 0; 0 1/400 0; 0 0 1];
mag = -0.8;
theta = 0;
Tproj = [1 0 mag*sin(theta); 0 1 mag*cos(theta); 0 0 1];
Tm = Txy*Tscl*Tproj;
inpts = [x y ones(8,1)];
outpts = inpts*Tm;
xp = outpts(:,1)./outpts(:,3);
yp = outpts(:,2)./outpts(:,3);

v1 = [xp(2)-xp(1) yp(2)-yp(1)];
v2 = [xp(8)-xp(7) yp(8)-yp(7)];
xr = sqrt(v1(1)^2+v2(1)^2)
v1 = v1/norm(v1);
v2 = v2/norm(v2);
cross = det([v1;v2])

plot(xp(1:2),yp(1:2),'g','LineWidth',2);
axis ij
grid
hold on
plot(xp(3:4),yp(3:4),'r','LineWidth',2);
plot(xp(5:6),yp(5:6),'r','LineWidth',2);
plot(xp(7:8),yp(7:8),'g','LineWidth',2);
hold off
xr =

    2.3231


cross =

   -0.9824

Txy = [1 0 0; 0 1 0; -400 -300 1];
Tscl = [1/400 0 0; 0 1/400 0; 0 0 1];

xv = linspace(-1.193,-1.192,51);

for k=1:51
    mag = xv(k);
    theta = -0.18;
Tproj = [1 0 mag*sin(theta); 0 1 mag*cos(theta); 0 0 1];
Tm = Txy*Tscl*Tproj;
inpts = [x y ones(8,1)];
outpts = inpts*Tm;
xp = outpts(:,1)./outpts(:,3);
yp = outpts(:,2)./outpts(:,3);

v1 = [xp(2)-xp(1) yp(2)-yp(1)];
v2 = [xp(8)-xp(7) yp(8)-yp(7)];
v1 = v1/norm(v1);
v2 = v2/norm(v2);
yv(k) = det([v1;v2]);
end

plot(xv,yv);