Skip to content

Commit 2985782

Browse files
kian-weimerdzenanz
authored andcommitted
ENH: Modified most Python examples to make use of argparse.
1 parent 3be7e4c commit 2985782

File tree

61 files changed

+607
-701
lines changed
  • src
    • Bridge/VtkGlue
      • ConvertAnRGBitkImageTovtkImageData
      • ConvertAnitkImageTovtkImageData
      • ConvertRGBvtkImageDataToAnitkImage
      • ConvertvtkImageDataToAnitkImage
    • Core
    • Filtering
      • AnisotropicSmoothing
        • ComputeCurvatureAnisotropicDiffusion
        • ComputeCurvatureFlow
        • ComputeGradientAnisotropicDiffusion
        • ComputePeronaMalikAnisotropicDiffusion
      • AntiAlias/SmoothBinaryImageBeforeSurfaceExtraction
      • BinaryMathematicalMorphology
      • Colormap
      • FFT/ComputeInverseFFTOfImage
      • ImageCompare/CombineTwoImagesWithCheckerBoardPattern
      • ImageFeature
        • AdditiveGaussianNoiseImageFilter
        • ComputeLaplacian
        • DetectEdgesWithCannyEdgeDetectionFilter
        • LaplacianRecursiveGaussianImageFilter
        • SobelEdgeDetectionImageFilter
      • ImageFilterBase/CastAnImageToAnotherType
      • ImageFusion/OverlayLabelMapOnTopOfAnImage
      • ImageGradient
        • ApplyGradientRecursiveGaussianWithVectorInput
        • ApplyGradientRecursiveGaussian
        • ComputeGradientMagnitudeRecursiveGaussian
      • ImageGrid
      • ImageIntensity
      • ImageStatistics/AdaptiveHistogramEqualizationImageFilter
      • LabelMap/RemoveHolesNotConnectedToImageBoundaries
      • MathematicalMorphology
      • Smoothing
        • BlurringAnImageUsingABinomialKernel
        • ComputesSmoothingWithGaussianKernel
        • MeanFilteringOfAnImage
        • MedianFilteringOfAnImage
      • Thresholding
    • IO
    • Registration/Common
      • ComputeMeanSquareBetweenTwoImages
      • Perform2DTranslationRegistrationWithMeanSquares
    • Segmentation
      • LevelSets/SegmentWithGeodesicActiveContourLevelSet
      • Watersheds/SegmentWithWatershedImageFilter

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+607
-701
lines changed

src/Bridge/VtkGlue/ConvertAnRGBitkImageTovtkImageData/Code.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,21 @@
1616

1717
import sys
1818
import itk
19+
import argparse
1920

2021
from distutils.version import StrictVersion as VS
2122

2223
if VS(itk.Version.GetITKVersion()) < VS("5.2.0"):
2324
print("ITK 5.2.0 is required.")
2425
sys.exit(1)
2526

26-
if len(sys.argv) != 2:
27-
print("Usage: " + sys.argv[0] + " <InputFileName>")
28-
sys.exit(1)
29-
30-
imageFileName = sys.argv[1]
27+
parser = argparse.ArgumentParser(
28+
description="Convert An RBG itk Image to vtk Image Data."
29+
)
30+
parser.add_argument("input_image")
31+
args = parser.parse_args()
3132

32-
inputImage = itk.imread(imageFileName)
33+
inputImage = itk.imread(args.input_image)
3334

3435
vtkImage = itk.image_to_vtk_image(inputImage)
3536

src/Bridge/VtkGlue/ConvertAnitkImageTovtkImageData/Code.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,19 @@
1616

1717
import sys
1818
import itk
19+
import argparse
1920

2021
from distutils.version import StrictVersion as VS
2122

2223
if VS(itk.Version.GetITKVersion()) < VS("5.2.0"):
2324
print("ITK 5.2.0 is required.")
2425
sys.exit(1)
2526

26-
if len(sys.argv) != 2:
27-
print("Usage: " + sys.argv[0] + " <InputFileName>")
28-
sys.exit(1)
29-
30-
imageFileName = sys.argv[1]
27+
parser = argparse.ArgumentParser(description="Convert An itk Image to vtk Image Data.")
28+
parser.add_argument("input_image")
29+
args = parser.parse_args()
3130

32-
inputImage = itk.imread(imageFileName)
31+
inputImage = itk.imread(args.input_image)
3332

3433
vtkImage = itk.image_to_vtk_image(inputImage)
3534

src/Bridge/VtkGlue/ConvertRGBvtkImageDataToAnitkImage/Code.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,23 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
import sys
1817
import itk
1918
import vtk
19+
import argparse
2020

21-
if len(sys.argv) < 2:
22-
print("Usage: " + sys.argv[0] + " <InputFileName>")
23-
sys.exit(1)
24-
imageFileName = sys.argv[1]
21+
parser = argparse.ArgumentParser(
22+
description="Convert RBG vtk Image Data To An itk Image."
23+
)
24+
parser.add_argument("input_image")
25+
args = parser.parse_args()
2526

2627
Dimension = 2
2728
PixelComponentType = itk.UC
2829
PixelType = itk.RGBPixel[PixelComponentType]
2930
ImageType = itk.Image[PixelType, Dimension]
3031

3132
reader = vtk.vtkPNGReader()
32-
reader.SetFileName(imageFileName)
33+
reader.SetFileName(args.input_image)
3334
reader.SetDataScalarTypeToUnsignedChar()
3435

3536
vtkToItkFilter = itk.VTKImageToImageFilter[ImageType].New()

src/Bridge/VtkGlue/ConvertvtkImageDataToAnitkImage/Code.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,20 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
import sys
1817
import itk
1918
import vtk
19+
import argparse
2020

21-
if len(sys.argv) < 2:
22-
print("Usage: " + sys.argv[0] + " <InputFileName>")
23-
sys.exit(1)
24-
imageFileName = sys.argv[1]
21+
parser = argparse.ArgumentParser(description="Convert vtk Image Data To An itk Image.")
22+
parser.add_argument("input_image")
23+
args = parser.parse_args()
2524

2625
Dimension = 2
2726
PixelType = itk.UC
2827
ImageType = itk.Image[PixelType, Dimension]
2928

3029
reader = vtk.vtkPNGReader()
31-
reader.SetFileName(imageFileName)
30+
reader.SetFileName(args.input_image)
3231
reader.SetDataScalarTypeToUnsignedChar()
3332

3433
magnitude = vtk.vtkImageMagnitude()

src/Core/Common/GetImageSize/Code.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,15 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
import sys
1817
import numpy as np
1918
import itk
19+
import argparse
2020

21-
if len(sys.argv) != 2:
22-
print("Usage: " + sys.argv[0] + " <inputImageFile>")
23-
sys.exit(1)
21+
parser = argparse.ArgumentParser(description="Get Image Size.")
22+
parser.add_argument("input_image")
23+
args = parser.parse_args()
2424

25-
inputImageFile = sys.argv[1]
26-
27-
image = itk.imread(inputImageFile, itk.UC)
25+
image = itk.imread(args.input_image, itk.UC)
2826

2927
region = image.GetLargestPossibleRegion()
3028
size = region.GetSize()

src/Core/Common/ReadWriteVectorImage/Code.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
import sys
1817
import itk
18+
import argparse
1919

20-
if len(sys.argv) != 3:
21-
print("Usage: " + sys.argv[0] + " <InputFileName> <OutputFileName>")
22-
sys.exit(1)
20+
parser = argparse.ArgumentParser(description="Read Write Vector Image.")
21+
parser.add_argument("input_image")
22+
parser.add_argument("output_image")
23+
args = parser.parse_args()
2324

2425
VectorDimension = 4
2526

@@ -30,9 +31,9 @@
3031
ImageType = itk.Image[PixelType, ImageDimension]
3132

3233
reader = itk.ImageFileReader[ImageType].New()
33-
reader.SetFileName(sys.argv[1])
34+
reader.SetFileName(args.input_image)
3435

3536
writer = itk.ImageFileWriter[ImageType].New()
36-
writer.SetFileName(sys.argv[2])
37+
writer.SetFileName(args.output_image)
3738
writer.SetInput(reader.GetOutput())
3839
writer.Update()

src/Core/Common/SetPixelValueInOneImage/Code.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,17 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
import sys
1817
import itk
18+
import argparse
1919

20-
if len(sys.argv) != 2:
21-
print("Usage: " + sys.argv[0] + " <OutputFileName>")
22-
sys.exit(1)
20+
parser = argparse.ArgumentParser(description="Set Pixel Value In One Image.")
21+
parser.add_argument("output_image")
22+
args = parser.parse_args()
2323

2424
Dimension = 2
2525

2626
PixelType = itk.UC
2727

28-
OutputFileName = sys.argv[1]
29-
3028
ImageType = itk.Image[PixelType, Dimension]
3129

3230
region = itk.ImageRegion[Dimension]()
@@ -96,4 +94,4 @@
9694

9795
image.SetPixel(pixelIndex, 200)
9896

99-
itk.imwrite(image, OutputFileName)
97+
itk.imwrite(image, args.output_image)

src/Core/Common/StreamAPipeline/Code.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,33 @@
1616

1717
import sys
1818
import itk
19+
import argparse
1920

2021
from distutils.version import StrictVersion as VS
2122

2223
if VS(itk.Version.GetITKVersion()) < VS("4.10.0"):
2324
print("ITK 4.10.0 is required.")
2425
sys.exit(1)
2526

26-
if len(sys.argv) != 2:
27-
print("Usage: " + sys.argv[0] + " <NumberOfSplits>")
28-
sys.exit(1)
29-
numberOfSplits = int(sys.argv[1])
27+
parser = argparse.ArgumentParser(description="Stream A Pipeline.")
28+
parser.add_argument("number_of_splits", type=int)
29+
args = parser.parse_args()
3030

3131
Dimension = 2
3232
PixelType = itk.UC
3333
ImageType = itk.Image[PixelType, Dimension]
3434

3535
source = itk.RandomImageSource[ImageType].New()
3636
size = itk.Size[Dimension]()
37-
size.Fill(numberOfSplits)
37+
size.Fill(args.number_of_splits)
3838
source.SetSize(size)
3939

4040
monitorFilter = itk.PipelineMonitorImageFilter[ImageType].New()
4141
monitorFilter.SetInput(source.GetOutput())
4242

4343
streamingFilter = itk.StreamingImageFilter[ImageType, ImageType].New()
4444
streamingFilter.SetInput(monitorFilter.GetOutput())
45-
streamingFilter.SetNumberOfStreamDivisions(numberOfSplits)
45+
streamingFilter.SetNumberOfStreamDivisions(args.number_of_splits)
4646

4747
streamingFilter.Update()
4848

src/Core/ImageFunction/ResampleSegmentedImage/Code.py

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,45 +15,42 @@
1515
# limitations under the License.
1616

1717
import itk
18-
import sys
18+
import argparse
1919

20-
if len(sys.argv) != 6:
21-
print(
22-
f"Usage: {sys.argv[0]} input_image_file spacing_fraction sigma_fraction output_image_file_label_image_interpolator output_image_file_nearest_neighbor_interpolator"
23-
)
24-
sys.exit(1)
20+
parser = argparse.ArgumentParser(description="Resample Segmented Image.")
21+
parser.add_argument("input_image")
22+
parser.add_argument("spacing_fraction", type=float)
23+
parser.add_argument("sigma_fraction", type=float)
24+
parser.add_argument("output_image_file_label_image_interpolator")
25+
parser.add_argument("output_image_file_nearest_neighbor_interpolator")
26+
args = parser.parse_args()
2527

26-
input_image_file = sys.argv[1]
27-
spacing_fraction = float(sys.argv[2])
28-
sigma_fraction = float(sys.argv[3])
29-
output_image_file_label_image_interpolator = sys.argv[4]
30-
output_image_file_nearest_neighbor_interpolator = sys.argv[5]
31-
32-
input_image = itk.imread(input_image_file)
28+
input_image = itk.imread(args.input_image)
3329

3430
resize_filter = itk.ResampleImageFilter.New(input_image)
3531

3632
input_spacing = itk.spacing(input_image)
37-
output_spacing = [s * spacing_fraction for s in input_spacing]
33+
output_spacing = [s * args.spacing_fraction for s in input_spacing]
3834
resize_filter.SetOutputSpacing(output_spacing)
3935

4036
input_size = itk.size(input_image)
4137
output_size = [
42-
int(s * input_spacing[dim] / spacing_fraction) for dim, s in enumerate(input_size)
38+
int(s * input_spacing[dim] / args.spacing_fraction)
39+
for dim, s in enumerate(input_size)
4340
]
4441
resize_filter.SetSize(output_size)
4542

4643
gaussian_interpolator = itk.LabelImageGaussianInterpolateImageFunction.New(input_image)
47-
sigma = [s * sigma_fraction for s in output_spacing]
44+
sigma = [s * args.sigma_fraction for s in output_spacing]
4845
gaussian_interpolator.SetSigma(sigma)
4946
gaussian_interpolator.SetAlpha(3.0)
5047
resize_filter.SetInterpolator(gaussian_interpolator)
5148

52-
itk.imwrite(resize_filter, output_image_file_label_image_interpolator)
49+
itk.imwrite(resize_filter, args.output_image_file_label_image_interpolator)
5350

5451
nearest_neighbor_interpolator = itk.NearestNeighborInterpolateImageFunction.New(
5552
input_image
5653
)
5754
resize_filter.SetInterpolator(nearest_neighbor_interpolator)
5855

59-
itk.imwrite(resize_filter, output_image_file_nearest_neighbor_interpolator)
56+
itk.imwrite(resize_filter, args.output_image_file_nearest_neighbor_interpolator)

src/Filtering/AnisotropicSmoothing/ComputeCurvatureAnisotropicDiffusion/Code.py

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,16 @@
1414
# See the License for the specific language governing permissions and
1515
# limitations under the License.
1616

17-
import sys
1817
import itk
18+
import argparse
1919

20-
if len(sys.argv) != 6:
21-
print(
22-
"Usage: " + sys.argv[0] + " <inputImage> <outputImage> "
23-
"<numberOfIterations> <timeStep> <conductance>"
24-
)
25-
sys.exit(1)
26-
27-
inputImage = sys.argv[1]
28-
outputImage = sys.argv[2]
29-
numberOfIterations = int(sys.argv[3])
30-
timeStep = float(sys.argv[4])
31-
conductance = float(sys.argv[5])
20+
parser = argparse.ArgumentParser(description="Compute Curvature Anisotropic Diffusion.")
21+
parser.add_argument("input_image")
22+
parser.add_argument("output_image")
23+
parser.add_argument("number_of_iterations", type=int)
24+
parser.add_argument("time_step", type=float)
25+
parser.add_argument("conductance", type=float)
26+
args = parser.parse_args()
3227

3328
InputPixelType = itk.F
3429
OutputPixelType = itk.UC
@@ -39,17 +34,17 @@
3934

4035
ReaderType = itk.ImageFileReader[InputImageType]
4136
reader = ReaderType.New()
42-
reader.SetFileName(inputImage)
37+
reader.SetFileName(args.input_image)
4338

4439
FilterType = itk.CurvatureAnisotropicDiffusionImageFilter[
4540
InputImageType, InputImageType
4641
]
4742
curvatureAnisotropicDiffusionFilter = FilterType.New()
4843

4944
curvatureAnisotropicDiffusionFilter.SetInput(reader.GetOutput())
50-
curvatureAnisotropicDiffusionFilter.SetNumberOfIterations(numberOfIterations)
51-
curvatureAnisotropicDiffusionFilter.SetTimeStep(timeStep)
52-
curvatureAnisotropicDiffusionFilter.SetConductanceParameter(conductance)
45+
curvatureAnisotropicDiffusionFilter.SetNumberOfIterations(args.number_of_iterations)
46+
curvatureAnisotropicDiffusionFilter.SetTimeStep(args.time_step)
47+
curvatureAnisotropicDiffusionFilter.SetConductanceParameter(args.conductance)
5348

5449
RescaleFilterType = itk.RescaleIntensityImageFilter[InputImageType, OutputImageType]
5550
rescaler = RescaleFilterType.New()
@@ -63,7 +58,7 @@
6358

6459
WriterType = itk.ImageFileWriter[OutputImageType]
6560
writer = WriterType.New()
66-
writer.SetFileName(outputImage)
61+
writer.SetFileName(args.output_image)
6762
writer.SetInput(rescaler.GetOutput())
6863

6964
writer.Update()

0 commit comments

Comments
 (0)