getf15pt2d.m
来自「This is a computer vision project implem」· M 代码 · 共 44 行
M
44 行
function F = getF15pt2D(x,xp)
a = hatall(x);
b = hatall(xp);
[img1pts,T1] = normalize_transform(a);
[img2pts,T2] = normalize_transform(b);
%%
% img1pts = hatall([img1pts';ones(1,size(img1pts))]');
% img2pts = hatall([img2pts';ones(1,size(img2pts),1)]');
% img1pts = [img1pts ones(size(img1pts,1),1)];
% img2pts = [img2pts ones(size(img2pts,1),1)];
A = prepareA(img1pts,img2pts);
size(img1pts)
size(img2pts)
size(A)
[U,D,V] = svd(A);
f = V(:,end);
F = reshape( f,4,4)';
% enforce the singularity constraint
[U,D,V] = svd(F);
D(4,4) = 0; % force to zero to satisfy Frobenius norm'
D = D / D(1,1); % scale
F = U * D * V';
e = norm( A * reshape(F',16,1 ))^2; %algebraic error
%denormalize
F = T2' * F * T1;
end
function A = prepareA(x,xp) % x is 1by4
A = [];
for i=1:size(xp,1)
At = [xp(i,1)*x(i,1) xp(i,1)*x(i,2) xp(i,1)*x(i,3) xp(i,1)*x(i,4) xp(i,2)*x(i,1) xp(i,2)*x(i,2) xp(i,2)*x(i,3) xp(i,2)*x(i,4) xp(i,3)*x(i,1) xp(i,3)*x(i,2) xp(i,3)*x(i,3) xp(i,3)*x(i,4) xp(i,4)*x(i,1) xp(i,4)*x(i,2) xp(i,4)*x(i,3) xp(i,4)*x(i,4)];
%At = [xp(i,1)*x(i,1) xp(i,1)*x(i,2) xp(i,1)*x(i,3) xp(i,2)*x(i,1) xp(i,2)*x(i,2) xp(i,2)*x(i,3) xp(i,3)*x(i,1) xp(i,3)*x(i,2) xp(i,3)*x(i,3)];
A = [A;At];
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?