阅读nnUNet\nnunetv2\experiment_planning\experiment_planners\default_experiment_planner.py
文件内有一个ExperimentPlanner类和一个_maybe_copy_splits_file函数,阅读其determine_transpose函数。
在determine_transpose函数内涉及的其他函数都在文章后半部分说明。
目录
determine_transpose函数
参数
- 无
过程
首先判断是否设置抑制转置(self.suppress_transpose变量,在__init__函数中定义),如果不为空则不转置,返回原有维度顺序。
if self.suppress_transpose:
return [0, 1, 2], [0, 1, 2]
接下来计算各维度(轴)的体素间距,determine_fullres_target_spacing见
阅读nnUNet V2代码——生成nnUNetPlans.json—determine_fullres_target_spacing函数-CSDN博客
target_spacing = self.determine_fullres_target_spacing()
接下来找到各维度体素间距最大的维度,以及其余维度,分别存入max_spacing_axis变量和remaining_axes变量。
由上述两个变量确定前向转置数组,再计算后向转置数组,使得图像能还原回原始维度。
max_spacing_axis = np.argmax(target_spacing)
remaining_axes = [i for i in list(range(3)) if i != max_spacing_axis]
transpose_forward = [max_spacing_axis] + remaining_axes
transpose_backward = [np.argwhere(np.array(transpose_forward) == i)[0][0] for i in range(3)]
最后返回前向和后向转置数组