Ich versuche, die normalized 8-point algorithm to estimate the fundamental matrix zu implementieren. Ein Schritt besteht darin, die Punkte so zu normalisieren, dass sie das Zentrum (0,0)
und den mittleren Abstand von sqrt(2)
haben. Ich weiß, wie man die Punkte übersetzt und skaliert, aber wie stelle ich die Schritte als eine Matrix dar, um sie in einem späteren Schritt zu verwenden?Wie wird die Übersetzung und Skalierung als Matrix dargestellt?
Meine aktuelle Funktion wandelt die Punkte als unten, aber ich muss auch um herauszufinden, was die Transformationsmatrix ist:
%% Normalize points to have center (0,0) and mean distance sqrt(2)
function [pts1, T] = normalizePoints(pts)
Xs = pts(:,1);
Ys = pts(:,2);
%% Compute old center and translate
Xc = mean(Xs);
Yc = mean(Ys);
Xs = Xs - Xc;
Ys = Ys - Yc;
%% Compute mean distance and scale
Ds = sqrt(Xs .^ 2 + Ys .^ 2);
meanD = mean(Ds);
scale = sqrt(2)/meanD;
pts1 = [Xs .* scale, Ys .* scale];
T = ... % How do I represent the previous operations as T?
end