Quantcast
Channel: Mein MATLAB Forum - goMatlab.de
Viewing all articles
Browse latest Browse all 28441

Transformationsmatrix zwischen zwei Bildern bestimmen

$
0
0
Hallo zusammen, ich habe zwei Bilder von dem eines im Vergleich zu dem anderen, verschoben und anders skaliert ist. Nun möchte ich die (Ähnlichkeits-) Transformations-Matrix zu diesen Bildern finden. Dazu wollte ich das Verfahren anwenden, welches in function deltaP = doIteration() global wn hn Gdx Gdy imgQn imgDn P T #imgQn ist das Quellbild normiert auf Werte zwischen 0 und 1 #imgDn ist das Zielbild normiert auf Werte zwischen 0 und 1 #P ist der Parameter Vektor, welcher bei der Translation (tx,ty) ist #T ist die Transformationsmatrix = [1,0,tx;0,1,ty] #Gdx Gdy entpricht gradient(imgDn); A = zeros(2,2); b = zeros(2,1); stepX = 2 / wn; #2 / (Bildbreite-1) stepY = 2 / hn; #2 / (Bildhöhe-1) for xn=-1:stepX:1 #Über die normierten Pixelkoordinaten laufen for yn=-1:stepY:1[xnt, ynt] = transCoords(xn, yn, T); #Transformationsmatrix auf normierte Koordinaten anwenden[xp, yp] = deNormCoords(xn,yn); #Nicht transformierte Koordinaten denormalisieren [xpt, ypt] = deNormCoords(xnt, ynt); #transformierte Koordinaten denormalisieren JC = jacobi(xn, yn); #Jacobi Matrix erzeugen GD = [biInt(Gdx, xpt, ypt), biInt(Gdy, xpt, ypt)]; #Gradienten Vektor vom ZielBild erzeugen A = A + JC' * (GD' * GD) * JC; b = b + JC' * (biInt(imgDn, xpt, ypt) - biInt(imgQn, xp, yp)) * GD'; endfor endfor A b = -b deltaP = A \ (b'); P = P + deltaP'; T = [1, 0, P(1,1); 0, 1, P(1,2)] endfunction Das komplette Programm habe ich angehängt. So wie ich es implementiert habe, würde es nur bei quadratischen Ich bin kein Matlab Experte und bitte es zu entschuldigen wenn da komische Befehlsfolgen stehen. Ansonsten bedanke ich mich schon mal bei denen d ...

Viewing all articles
Browse latest Browse all 28441

Latest Images

Trending Articles