如何在ITK-SNAP上计算缩放矩阵? 我正在尝试重现Python上ITK-SNAP的缩放矩阵,但我失败了。我有一个固定的图像和一个移动矩阵。我试图将GUI的比例因子设置为SX = 2; sy = 1; sz = 1。当我

问题描述 投票:0回答:1
试图再现它,我尝试:

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)
结果是波纹管:

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
没有思考图像中心缩放中心的翻译,我正在尝试重现旋转矩阵,即scale [:3,:3],如您所见,它并不完全相同。有人知道如何准确计算它吗?

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
我可以从ITK-SNAP的GUI中复制旋转和翻译模拟,但是缩放我不能,有人可以帮助我吗?预先感谢

PS:我基于本文的尝试:
如何将ITK CenterFotation Point在仿射转换矩阵中?
    

对于ITK-NIBABEL转换,您可能想看看此

jupyter笔记本.

python registration scaling itk
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.