|
|
|
|
|
def elastix_register_and_transform(fixed_file,moving_file, |
|
moved_file=None,moving_list=[]): |
|
|
|
fixed = sitk.ReadImage(fixed_file) |
|
moving = sitk.ReadImage(moving_file) |
|
|
|
elastixImageFilter = sitk.ElastixImageFilter() |
|
elastixImageFilter.SetOutputDirectory('/tmp') |
|
elastixImageFilter.SetFixedImage(fixed) |
|
elastixImageFilter.SetMovingImage(moving) |
|
elastixImageFilter.SetParameterMap(sitk.GetDefaultParameterMap("affine")) |
|
elastixImageFilter.LogToConsoleOn() |
|
elastixImageFilter.Execute() |
|
|
|
if moved_file: |
|
sitk.WriteImage(elastixImageFilter.GetResultImage(),moved_file) |
|
|
|
for moving_file in moving_list: |
|
|
|
if moving_file.endswith('ct.nii.gz'): |
|
out_pixel_value = -1000 |
|
ismask=False |
|
elif moving_file.endswith('lung.nii.gz'): |
|
out_pixel_value = 0 |
|
ismask=True |
|
elif moving_file.endswith('suv.nii.gz'): |
|
out_pixel_value = 0.0 |
|
ismask=False |
|
else: |
|
raise NotImplementedError() |
|
|
|
|
|
og_obj = sitk.ReadImage(moving_file) |
|
transformixImageFilter = sitk.TransformixImageFilter() |
|
transformixImageFilter.SetOutputDirectory("/tmp") |
|
transformixImageFilter.SetMovingImage(og_obj) |
|
transform_tuple = elastixImageFilter.GetTransformParameterMap() |
|
transform = list(transform_tuple)[0] |
|
transform['DefaultPixelValue']=[str(out_pixel_value)] |
|
if ismask: |
|
transform['FinalBSplineInterpolationOrder']=["0"] |
|
transform["ResultImagePixelType"] = ["int"] |
|
|
|
transform_tuple = (transform,) |
|
transformixImageFilter.SetTransformParameterMap(transform_tuple) |
|
|
|
transformixImageFilter.LogToConsoleOn() |
|
transformixImageFilter.Execute() |
|
|
|
moved = transformixImageFilter.GetResultImage() |
|
moved = sitk.Cast(moved,og_obj.GetPixelID()) |
|
sitk.WriteImage(moved,moving_file) |