script2
clear
close all
load pts1
rgb = imread(filename);
kp(1,:) = pts(1,:) - pts(2,:);
kp(2,:) = pts(3,:) - pts(4,:);
for k=1:2
kp(k,:) = kp(k,:)/norm(kp(k,:));
end
s = det(kp(1:2,:));
s = asin(s)*180/pi;
str = sprintf('divergence %g deg',s);
disp(str);
imshow(rgb);
hold on
plot(pts(1:2,1),pts(1:2,2),'b','LineWidth',2);
plot(pts(3:4,1),pts(3:4,2),'b','LineWidth',2);
hold off
title(str);
divergence -75.0002 deg
KK = [6500 0 0; 0 6500 0; 2000 1000 1];
ang(1) = -81.5;
R = rotx(ang(1),'deg');
tf = projective2d(inv(KK)*R*KK);
[x, y] = transformPointsForward(tf,pts(:,1),pts(:,2));
pts2 = [x y]
kp(1,:) = pts2(1,:) - pts2(2,:);
kp(2,:) = pts2(3,:) - pts2(4,:);
for k=1:2
kp(k,:) = kp(k,:)/norm(kp(k,:));
end
s = det(kp(1:2,:));
s = asin(s)*180/pi;
str = sprintf('angle %g deg divergence %g deg',ang(1),s);
disp(str);
pts2 =
-2269.5 -15055
-290.68 -37527
7751.3 -15380
8567.5 -25763
angle -81.5 deg divergence -0.537493 deg
ymax = max(pts2(:,2));
xrng = [min(pts2(:,1))-2000 max(pts2(:,1))+2000];
diff = xrng(2)-xrng(1);
yrng = [ymax-diff ymax];
myref = imref2d([800 800],xrng,yrng);
[img, ref] = imwarp(rgb,tf,'OutputView',myref,'FillValues',[255 255 200]);
imshow(img);
pts3 = pts2;
pts3(2,:) = pts2(1,:) + 0.5*(pts2(2,:)-pts2(1,:));
[yp, xp] = worldToSubscript(myref,pts3(:,1),pts3(:,2));
hold on
plot(xp(1:2),yp(1:2),'b','LineWidth',2);
plot(xp(3:4),yp(3:4),'b','LineWidth',2);
hold off
title(str);
ref
ref =
imref2d with properties:
XWorldLimits: [-4269.5 10567]
YWorldLimits: [-29892 -15055]
ImageSize: [800 800]
PixelExtentInWorldX: 18.546
PixelExtentInWorldY: 18.546
ImageExtentInWorldX: 14837
ImageExtentInWorldY: 14837
XIntrinsicLimits: [0.5 800.5]
YIntrinsicLimits: [0.5 800.5]