|
18 | 18 | import itk
|
19 | 19 |
|
20 | 20 | if len(sys.argv) != 4:
|
21 |
| - print("Usage: " + sys.argv[0] + " <inputImage> <outputImage> <scale>") |
| 21 | + print("Usage: " + sys.argv[0] + " <input_image> <output_image> <scale>") |
22 | 22 | sys.exit(1)
|
23 | 23 |
|
24 |
| -inputImage = sys.argv[1] |
25 |
| -outputImage = sys.argv[2] |
| 24 | +input_image = sys.argv[1] |
| 25 | +output_image = sys.argv[2] |
26 | 26 | scale = float(sys.argv[3])
|
27 | 27 |
|
28 |
| -PixelType = itk.UC |
29 |
| -ScalarType = itk.D |
30 |
| -Dimension = 2 |
| 28 | +input_image = itk.imread(input_image) |
31 | 29 |
|
32 |
| -ImageType = itk.Image[PixelType, Dimension] |
| 30 | +size = itk.size(input_image) |
| 31 | +spacing = itk.spacing(input_image) |
33 | 32 |
|
34 |
| -ReaderType = itk.ImageFileReader[ImageType] |
35 |
| -reader = ReaderType.New() |
36 |
| -reader.SetFileName(inputImage) |
37 |
| -reader.Update() |
| 33 | +central_pixel = [int(s/2) for s in size] |
| 34 | +central_point = [float(p) for p in central_pixel] |
38 | 35 |
|
39 |
| -inputImage = reader.GetOutput() |
| 36 | +Dimension = input_image.GetImageDimension() |
| 37 | +scale_transform = itk.ScaleTransform[itk.D, Dimension].New() |
40 | 38 |
|
41 |
| -size = inputImage.GetLargestPossibleRegion().GetSize() |
42 |
| -spacing = inputImage.GetSpacing() |
| 39 | +parameters = scale_transform.GetParameters() |
| 40 | +for i in range(len(parameters)): |
| 41 | + parameters[i] = scale |
43 | 42 |
|
44 |
| -centralPixel = itk.Index[Dimension]() |
45 |
| -centralPixel[0] = int(size[0] / 2) |
46 |
| -centralPixel[1] = int(size[1] / 2) |
47 |
| -centralPoint = itk.Point[ScalarType, Dimension]() |
48 |
| -centralPoint[0] = centralPixel[0] |
49 |
| -centralPoint[1] = centralPixel[1] |
| 43 | +scale_transform.SetParameters(parameters) |
| 44 | +scale_transform.SetCenter(central_point) |
50 | 45 |
|
51 |
| -scaleTransform = itk.ScaleTransform[ScalarType, Dimension].New() |
| 46 | +interpolator = itk.LinearInterpolateImageFunction.New(input_image) |
52 | 47 |
|
53 |
| -parameters = scaleTransform.GetParameters() |
54 |
| -parameters[0] = scale |
55 |
| -parameters[1] = scale |
| 48 | +resampled = itk.resample_image_filter(input_image, |
| 49 | + transform=scale_transform, |
| 50 | + interpolator=interpolator, |
| 51 | + size=size, |
| 52 | + output_spacing=spacing) |
56 | 53 |
|
57 |
| -scaleTransform.SetParameters(parameters) |
58 |
| -scaleTransform.SetCenter(centralPoint) |
59 |
| - |
60 |
| -interpolatorType = itk.LinearInterpolateImageFunction[ImageType, ScalarType] |
61 |
| -interpolator = interpolatorType.New() |
62 |
| - |
63 |
| -resamplerType = itk.ResampleImageFilter[ImageType, ImageType] |
64 |
| -resampleFilter = resamplerType.New() |
65 |
| - |
66 |
| -resampleFilter.SetInput(inputImage) |
67 |
| -resampleFilter.SetTransform(scaleTransform) |
68 |
| -resampleFilter.SetInterpolator(interpolator) |
69 |
| -resampleFilter.SetSize(size) |
70 |
| -resampleFilter.SetOutputSpacing(spacing) |
71 |
| - |
72 |
| -WriterType = itk.ImageFileWriter[ImageType] |
73 |
| -writer = WriterType.New() |
74 |
| -writer.SetFileName(outputImage) |
75 |
| -writer.SetInput(resampleFilter.GetOutput()) |
76 |
| - |
77 |
| -writer.Update() |
| 54 | +itk.imwrite(resampled, output_image) |
0 commit comments