Commit 55dd5d8d1e6f5ee614eb8988f1b865435c5ff492
1 parent
ee5249f9
Exists in
master
and in
68 other branches
ENH: Removed ItkVtkGlue from main process FIX #85
Showing
1 changed file
with
61 additions
and
16 deletions
Show diff stats
invesalius/reader/analyze_reader.py
@@ -20,29 +20,32 @@ | @@ -20,29 +20,32 @@ | ||
20 | import os | 20 | import os |
21 | 21 | ||
22 | import itk | 22 | import itk |
23 | -import ItkVtkGlue | 23 | +import multiprocessing |
24 | +import tempfile | ||
24 | import vtk | 25 | import vtk |
25 | 26 | ||
26 | 27 | ||
27 | def ReadAnalyze(filename): | 28 | def ReadAnalyze(filename): |
28 | - reader = itk.ImageFileReader.IUC3.New() | 29 | + |
30 | + pipe_in, pipe_out = multiprocessing.Pipe() | ||
31 | + | ||
32 | + sp = ItktoVtk(pipe_in, filename) | ||
33 | + sp.start() | ||
34 | + | ||
35 | + while 1: | ||
36 | + msg = pipe_out.recv() | ||
37 | + if(msg is None): | ||
38 | + break | ||
39 | + | ||
40 | + filename = pipe_out.recv() | ||
41 | + | ||
42 | + reader = vtk.vtkXMLImageDataReader() | ||
29 | reader.SetFileName(filename) | 43 | reader.SetFileName(filename) |
30 | reader.Update() | 44 | reader.Update() |
31 | - | ||
32 | - x_spacing = reader.GetOutput().GetSpacing().GetElement(0) | ||
33 | - y_spacing = reader.GetOutput().GetSpacing().GetElement(1) | ||
34 | - z_spacing = reader.GetOutput().GetSpacing().GetElement(2) | ||
35 | - spacing = (x_spacing, y_spacing, z_spacing) | ||
36 | - | ||
37 | - glue = ItkVtkGlue.ImageToVTKImageFilter.IUC3.New() | ||
38 | - glue.SetInput(reader.GetOutput()) | ||
39 | - glue.Update() | ||
40 | 45 | ||
41 | - imagedata = vtk.vtkImageData() | ||
42 | - imagedata.DeepCopy(glue.GetOutput()) | ||
43 | - imagedata.SetSpacing(spacing) | ||
44 | - | ||
45 | - return imagedata | 46 | + os.remove(filename) |
47 | + | ||
48 | + return reader.GetOutput() | ||
46 | 49 | ||
47 | def ReadDirectory(dir_): | 50 | def ReadDirectory(dir_): |
48 | file_list = [] | 51 | file_list = [] |
@@ -54,3 +57,45 @@ def ReadDirectory(dir_): | @@ -54,3 +57,45 @@ def ReadDirectory(dir_): | ||
54 | imagedata = ReadAnalyze(filename) | 57 | imagedata = ReadAnalyze(filename) |
55 | return imagedata | 58 | return imagedata |
56 | return imagedata | 59 | return imagedata |
60 | + | ||
61 | + | ||
62 | +class ItktoVtk(multiprocessing.Process): | ||
63 | + | ||
64 | + def __init__(self, pipe, filename): | ||
65 | + multiprocessing.Process.__init__(self) | ||
66 | + self.filename = filename | ||
67 | + self.pipe = pipe | ||
68 | + | ||
69 | + def run(self): | ||
70 | + self.Convert() | ||
71 | + | ||
72 | + def Convert(self): | ||
73 | + | ||
74 | + import ItkVtkGlue | ||
75 | + | ||
76 | + reader = itk.ImageFileReader.IUC3.New() | ||
77 | + reader.SetFileName(self.filename) | ||
78 | + reader.Update() | ||
79 | + | ||
80 | + x_spacing = reader.GetOutput().GetSpacing().GetElement(0) | ||
81 | + y_spacing = reader.GetOutput().GetSpacing().GetElement(1) | ||
82 | + z_spacing = reader.GetOutput().GetSpacing().GetElement(2) | ||
83 | + spacing = (x_spacing, y_spacing, z_spacing) | ||
84 | + | ||
85 | + glue = ItkVtkGlue.ImageToVTKImageFilter.IUC3.New() | ||
86 | + glue.SetInput(reader.GetOutput()) | ||
87 | + glue.Update() | ||
88 | + | ||
89 | + imagedata = vtk.vtkImageData() | ||
90 | + imagedata.DeepCopy(glue.GetOutput()) | ||
91 | + imagedata.SetSpacing(spacing) | ||
92 | + | ||
93 | + filename = tempfile.mktemp() | ||
94 | + writer = vtk.vtkXMLImageDataWriter() | ||
95 | + writer.SetInput(imagedata) | ||
96 | + writer.SetFileName(filename) | ||
97 | + writer.Write() | ||
98 | + | ||
99 | + self.pipe.send(None) | ||
100 | + self.pipe.send(filename) | ||
101 | + | ||
57 | \ No newline at end of file | 102 | \ No newline at end of file |