cube4
Recover oblique view
close all
clear
load view2;
rgb1 = imread('view2.jpg');
imshow(rgb1);
rgb = imread('vis1.jpg');
imshow(rgb);
sz = size(rgb);
idx = [1 2 5 4];
scale=sz(1)-1;
tpts = cp(idx,[1 3])*scale;
tpts(:,2) = scale - tpts(:,2);
cpts = pts(idx,:);
T = cp2tform(cpts,tpts,'projective');
disp(T)
disp('T.tdata');
disp(T.tdata);
disp('forward');
disp(T.tdata.T);
disp('inverse');
disp(T.tdata.Tinv);
ndims_in: 2
ndims_out: 2
forward_fcn: @fwd_projective
inverse_fcn: @inv_projective
tdata: [1x1 struct]
T.tdata
T: [3x3 double]
Tinv: [3x3 double]
forward
0.5759 0.1308 -0.0004
-0.0219 0.5607 -0.0003
-153.5629 -174.0151 1.2031
inverse
1.8951 -0.2464 0.0006
0.2358 1.9182 0.0006
276.0000 246.0000 1.0000
close
im = imtransform(rgb1,T);
imshow(im);
close
rng = [0 scale];
im = imtransform(rgb1,T,'XData',rng,'YData',rng);
imshow(im);
g1 = im2double(rgb2gray(rgb));
g2 = im2double(rgb2gray(im));
diff = g2-g1;
gmax = max(max(diff));
gmin = min(min(diff));
fprintf('max differences %g %g\n',gmax,gmin);
imshow((diff/max(gmax,-gmin)+1)/2);
max differences 0.611765 -0.360784