SimpleITK
Python/DicomSeriesReader2.py
1
#!/usr/bin/env python
2
3
# =========================================================================
4
#
5
# Copyright NumFOCUS
6
#
7
# Licensed under the Apache License, Version 2.0 (the "License");
8
# you may not use this file except in compliance with the License.
9
# You may obtain a copy of the License at
10
#
11
# http://www.apache.org/licenses/LICENSE-2.0.txt
12
#
13
# Unless required by applicable law or agreed to in writing, software
14
# distributed under the License is distributed on an "AS IS" BASIS,
15
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
# See the License for the specific language governing permissions and
17
# limitations under the License.
18
#
19
# =========================================================================
20
21
22
#
23
# This example shows how to read a specific series from a Dicom directory that
24
# may contain more than one series. The script scans for all series. If an
25
# output name is given, it writes out the requested series. If no specific
26
# series name is given, the first series found is written.
27
#
28
29
30
import
sys
31
import
getopt
32
import
SimpleITK
as
sitk
33
34
target_series =
""
35
output_image =
""
36
37
38
def
usage():
39
print(
40
"\nUsage: %s [-s series_name] input_directory [output_image]\n"
% (sys.argv[0])
41
)
42
43
44
# Parse command line options
45
try
:
46
opts, args = getopt.getopt(sys.argv[1:],
"s:"
, [
"series"
])
47
except
getopt.GetoptError:
48
usage()
49
sys.exit(1)
50
51
for
o, a
in
opts:
52
if
o
in
(
"-s"
,
"--series"
):
53
target_series = a
54
else
:
55
assert
False
,
"unhandled options"
56
57
# Get input/output names
58
if
len(args) < 1:
59
print(args)
60
usage()
61
sys.exit(1)
62
63
input_directory = args[0]
64
if
len(args) > 1:
65
output_image = args[1]
66
67
# Find the Dicom series
68
reader =
sitk.ImageSeriesReader
()
69
written =
False
70
71
series_found = reader.GetGDCMSeriesIDs(input_directory)
72
73
# Process each Dicom series
74
if
len(series_found):
75
76
for
serie
in
series_found:
77
78
print(
"\nSeries:"
, serie)
79
80
# Get the Dicom filename corresponding to the current series
81
dicom_names = reader.GetGDCMSeriesFileNames(input_directory, serie)
82
83
print(
"\nFiles in series: "
, dicom_names)
84
85
if
len(dicom_names):
86
reader.SetFileNames(dicom_names)
87
image = reader.Execute()
88
print(
"\nImage size: "
, image.GetSize())
89
90
if
(output_image !=
""
)
and
not
written:
91
if
target_series ==
""
or
target_series == serie:
92
print(
"\nWriting"
, output_image)
93
sitk.WriteImage
(image, output_image)
94
written =
True
95
else
:
96
sys.exit(1)
97
98
print()
itk::simple::ImageSeriesReader
Read series of image files into a SimpleITK image.
Definition:
sitkImageSeriesReader.h:68
itk::simple::WriteImage
SITKIO_EXPORT void WriteImage(const Image &image, const std::vector< PathType > &fileNames, bool useCompression=false, int compressionLevel=-1)
WriteImage is a procedural interface to the ImageSeriesWriter. class which is convenient for many ima...
Generated on
unknown
for SimpleITK by
1.8.17 |
Privacy Policy