Ich versuche, die Skalierungsmatrix von ITK-SNAP auf Python zu reproduzieren, aber ich bin gescheitert. Ich habe ein festes Bild und eine sich bewegende Matrix. Ich habe versucht, die Skalenfaktoren der GUI als SX = 2 festzulegen; Sy = 1; SZ = 1. Wenn ich die Transformationsmatrix speichere, wurde ich erhalten: < /p>
1.99705 -0.050182 0.0206233 4.81584
-0.050182 1.00253 -0.00103798 -0.242384
0.0206233 -0.00103798 1.00043 0.0996128
0 0 0 1
< /code>
Versuch, es zu reproduzieren. Ich versuche: < /p>
import numpy as np
import nibabel as nib
img1 = nib.load('moving.nii')
img2 = nib.load('fixed.nii')
data1 = img1.get_fdata()
data2 = img2.get_fdata()
affine1 = img1.affine
affine2 = img2.affine
xs = 2.0
ys = 1.0
zs = 1.0
SCAL=np.array([[1*xs,0,0,0],[0,1*ys,0,0],[0,0,1*zs,0],[0,0,0,1]])
SCAL = np.linalg.inv(affine1)@SCAL@affine1
FLIPXY_44 = np.diag([-1, -1, 1, 1])
SCAL = FLIPXY_44 @ SCAL @ np.linalg.inv(FLIPXY_44)
print(SCAL)
< /code>
Das Ergebnis ist brüll: < /p>
SCAL=
1.98161416 -0.132748624 0.0206291961 104.125084
-0.132748922 1.01795230 -0.00278979630 -14.0813909
0.0206292419 -0.00278979623 1.00043354 2.18825444
0 0 0 1
< /code>
Ohne über die Übersetzung der Skalierung der Skalierung in Bildmitte zu denken, versuche ich, nur die Rotationsmatrix zu reproduzieren, d. H. Scal [: 3,: 3], und wie Sie sehen können, ist es nicht genau gleich. Jemand weiß, wie man es genau berechnet? < /P>
affine1 =
0.743074 -0.100490 -0.015616 -78.821861
0.100468 0.743237 -0.002111 -95.039352
0.015758 0.000000 0.749834 -163.115112
0.000000 0.000000 0.000000 1.000000
affine2 =
0.320133 -0.189304 0.056924 -66.191055
0.189440 0.274100 -0.177681 4.535652
0.047455 0.182846 0.325291 -103.358688
0.000000 0.000000 0.000000 1.000000
< /code>
Ich könnte Simulationen der Rotation und Übersetzung von der GUI von ITK-SNAP reproduzieren, aber Skalierung konnte ich nicht, könnte mir jemand helfen? Vielen Dank im Voraus < /p>
PS: Ich habe meinen Versuch in diesem Beitrag gestützt:
Wie kann ich den ITK -Centerofrotationpoint in einer affine Transformationsmatrix berücksichtigen? < /P? < /P?>
Wie Skalierungsmatrix wird auf ITK-SNAP berechnet? ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post