@@ -22,7 +22,7 @@ class ITKLinearTransform(LinearParameters):
22
22
[
23
23
("type" , "i4" ),
24
24
("index" , "i4" ),
25
- ("parameters" , "f4 " , (4 , 4 )),
25
+ ("parameters" , "f8 " , (4 , 4 )),
26
26
("offset" , "f4" , 3 ), # Center of rotation
27
27
]
28
28
)
@@ -67,11 +67,11 @@ def to_filename(self, filename):
67
67
np .hstack (
68
68
(sa ["parameters" ][:3 , :3 ].reshape (- 1 ), sa ["parameters" ][:3 , 3 ])
69
69
)[..., np .newaxis ],
70
- dtype = "f4 " ,
70
+ dtype = "f8 " ,
71
71
)
72
72
fixed = np .array (sa ["offset" ][..., np .newaxis ], dtype = "f4" )
73
73
mdict = {
74
- "AffineTransform_float_3_3 " : affine ,
74
+ "AffineTransform_double_3_3 " : affine ,
75
75
"fixed" : fixed ,
76
76
}
77
77
_save_mat (str (filename ), mdict , format = "4" )
@@ -129,10 +129,18 @@ def from_matlab_dict(cls, mdict, index=0):
129
129
tf = cls ()
130
130
sa = tf .structarr
131
131
132
+ affine = mdict .get (
133
+ "AffineTransform_double_3_3" ,
134
+ mdict .get ("AffineTransform_float_3_3" )
135
+ )
136
+
137
+ if affine is None :
138
+ raise NotImplementedError ("Unsupported transform type" )
139
+
132
140
sa ["index" ] = index
133
- parameters = np .eye (4 , dtype = "f4" )
134
- parameters [:3 , :3 ] = mdict [ "AffineTransform_float_3_3" ] [:- 3 ].reshape ((3 , 3 ))
135
- parameters [:3 , 3 ] = mdict [ "AffineTransform_float_3_3" ] [- 3 :].flatten ()
141
+ parameters = np .eye (4 , dtype = affine . dtype )
142
+ parameters [:3 , :3 ] = affine [:- 3 ].reshape ((3 , 3 ))
143
+ parameters [:3 , 3 ] = affine [- 3 :].flatten ()
136
144
sa ["parameters" ] = parameters
137
145
sa ["offset" ] = mdict ["fixed" ].flatten ()
138
146
return tf
0 commit comments