Commit a061025c5234b4dd6c78c60ffbafef6b8c2aaba8
1 parent
e58244f7
Exists in
master
and in
5 other branches
FIX: Fixed error in generate surface in the win32 and win64 ticket #271
Showing
4 changed files
with
31 additions
and
46 deletions
Show diff stats
invesalius/data/imagedata_utils.py
@@ -546,39 +546,4 @@ def analyze2mmap(analyze): | @@ -546,39 +546,4 @@ def analyze2mmap(analyze): | ||
546 | matrix.flush() | 546 | matrix.flush() |
547 | return matrix, temp_file | 547 | return matrix, temp_file |
548 | 548 | ||
549 | -def to_vtk(n_array, spacing, slice_number, orientation): | ||
550 | - try: | ||
551 | - dz, dy, dx = n_array.shape | ||
552 | - except ValueError: | ||
553 | - dy, dx = n_array.shape | ||
554 | - dz = 1 | ||
555 | - | ||
556 | - v_image = numpy_support.numpy_to_vtk(n_array.flat) | ||
557 | - | ||
558 | - print orientation | ||
559 | - if orientation == 'AXIAL': | ||
560 | - extent = (0, dx -1, 0, dy -1, slice_number, slice_number + dz - 1) | ||
561 | - elif orientation == 'SAGITAL': | ||
562 | - dx, dy, dz = dz, dx, dy | ||
563 | - extent = (slice_number, slice_number + dx - 1, 0, dy - 1, 0, dz - 1) | ||
564 | - elif orientation == 'CORONAL': | ||
565 | - dx, dy, dz = dx, dz, dy | ||
566 | - extent = (0, dx - 1, slice_number, slice_number + dy - 1, 0, dz - 1) | ||
567 | - | ||
568 | - # Generating the vtkImageData | ||
569 | - image = vtk.vtkImageData() | ||
570 | - image.SetOrigin(0, 0, 0) | ||
571 | - image.SetSpacing(spacing) | ||
572 | - image.SetNumberOfScalarComponents(1) | ||
573 | - image.SetDimensions(dx, dy, dz) | ||
574 | - image.SetExtent(extent) | ||
575 | - image.SetScalarType(numpy_support.get_vtk_array_type(n_array.dtype)) | ||
576 | - image.AllocateScalars() | ||
577 | - image.GetPointData().SetScalars(v_image) | ||
578 | - image.Update() | ||
579 | - | ||
580 | - image_copy = vtk.vtkImageData() | ||
581 | - image_copy.DeepCopy(image) | ||
582 | - image_copy.Update() | ||
583 | - | ||
584 | - return image_copy | 549 | + |
invesalius/data/slice_.py
@@ -23,6 +23,7 @@ import vtk | @@ -23,6 +23,7 @@ import vtk | ||
23 | import wx.lib.pubsub as ps | 23 | import wx.lib.pubsub as ps |
24 | 24 | ||
25 | import constants as const | 25 | import constants as const |
26 | +import converters | ||
26 | import imagedata_utils as iu | 27 | import imagedata_utils as iu |
27 | import style as st | 28 | import style as st |
28 | import session as ses | 29 | import session as ses |
@@ -358,7 +359,7 @@ class Slice(object): | @@ -358,7 +359,7 @@ class Slice(object): | ||
358 | image = self.buffer_slices[orientation].vtk_image | 359 | image = self.buffer_slices[orientation].vtk_image |
359 | else: | 360 | else: |
360 | n_image = self.get_image_slice(orientation, slice_number) | 361 | n_image = self.get_image_slice(orientation, slice_number) |
361 | - image = iu.to_vtk(n_image, self.spacing, slice_number, orientation) | 362 | + image = converters.to_vtk(n_image, self.spacing, slice_number, orientation) |
362 | ww_wl_image = self.do_ww_wl(image) | 363 | ww_wl_image = self.do_ww_wl(image) |
363 | image = self.do_colour_image(ww_wl_image) | 364 | image = self.do_colour_image(ww_wl_image) |
364 | if self.current_mask and self.current_mask.is_shown: | 365 | if self.current_mask and self.current_mask.is_shown: |
@@ -368,7 +369,7 @@ class Slice(object): | @@ -368,7 +369,7 @@ class Slice(object): | ||
368 | else: | 369 | else: |
369 | print "Do not getting from buffer" | 370 | print "Do not getting from buffer" |
370 | n_mask = self.get_mask_slice(orientation, slice_number) | 371 | n_mask = self.get_mask_slice(orientation, slice_number) |
371 | - mask = iu.to_vtk(n_mask, self.spacing, slice_number, orientation) | 372 | + mask = converters.to_vtk(n_mask, self.spacing, slice_number, orientation) |
372 | mask = self.do_colour_mask(mask) | 373 | mask = self.do_colour_mask(mask) |
373 | self.buffer_slices[orientation].mask = n_mask | 374 | self.buffer_slices[orientation].mask = n_mask |
374 | final_image = self.do_blend(image, mask) | 375 | final_image = self.do_blend(image, mask) |
@@ -378,13 +379,13 @@ class Slice(object): | @@ -378,13 +379,13 @@ class Slice(object): | ||
378 | self.buffer_slices[orientation].vtk_image = image | 379 | self.buffer_slices[orientation].vtk_image = image |
379 | else: | 380 | else: |
380 | n_image = self.get_image_slice(orientation, slice_number) | 381 | n_image = self.get_image_slice(orientation, slice_number) |
381 | - image = iu.to_vtk(n_image, self.spacing, slice_number, orientation) | 382 | + image = converters.to_vtk(n_image, self.spacing, slice_number, orientation) |
382 | ww_wl_image = self.do_ww_wl(image) | 383 | ww_wl_image = self.do_ww_wl(image) |
383 | image = self.do_colour_image(ww_wl_image) | 384 | image = self.do_colour_image(ww_wl_image) |
384 | 385 | ||
385 | if self.current_mask and self.current_mask.is_shown: | 386 | if self.current_mask and self.current_mask.is_shown: |
386 | n_mask = self.get_mask_slice(orientation, slice_number) | 387 | n_mask = self.get_mask_slice(orientation, slice_number) |
387 | - mask = iu.to_vtk(n_mask, self.spacing, slice_number, orientation) | 388 | + mask = converters.to_vtk(n_mask, self.spacing, slice_number, orientation) |
388 | mask = self.do_colour_mask(mask) | 389 | mask = self.do_colour_mask(mask) |
389 | final_image = self.do_blend(image, mask) | 390 | final_image = self.do_blend(image, mask) |
390 | else: | 391 | else: |
invesalius/data/surface_process.py
@@ -6,8 +6,7 @@ import numpy | @@ -6,8 +6,7 @@ import numpy | ||
6 | import vtk | 6 | import vtk |
7 | 7 | ||
8 | import i18n | 8 | import i18n |
9 | -import imagedata_utils | ||
10 | - | 9 | +import converters |
11 | from scipy import ndimage | 10 | from scipy import ndimage |
12 | 11 | ||
13 | class SurfaceProcess(multiprocessing.Process): | 12 | class SurfaceProcess(multiprocessing.Process): |
@@ -33,11 +32,12 @@ class SurfaceProcess(multiprocessing.Process): | @@ -33,11 +32,12 @@ class SurfaceProcess(multiprocessing.Process): | ||
33 | self.flip_image = flip_image | 32 | self.flip_image = flip_image |
34 | self.q_in = q_in | 33 | self.q_in = q_in |
35 | self.q_out = q_out | 34 | self.q_out = q_out |
36 | - | ||
37 | - self.mask = numpy.memmap(filename, mode='r', dtype=dtype, | ||
38 | - shape=shape) | 35 | + self.dtype = dtype |
36 | + self.shape = shape | ||
39 | 37 | ||
40 | def run(self): | 38 | def run(self): |
39 | + self.mask = numpy.memmap(self.filename, mode='r', dtype=self.dtype, | ||
40 | + shape=self.shape) | ||
41 | while 1: | 41 | while 1: |
42 | roi = self.q_in.get() | 42 | roi = self.q_in.get() |
43 | print roi | 43 | print roi |
@@ -51,7 +51,7 @@ class SurfaceProcess(multiprocessing.Process): | @@ -51,7 +51,7 @@ class SurfaceProcess(multiprocessing.Process): | ||
51 | 51 | ||
52 | def CreateSurface(self, roi): | 52 | def CreateSurface(self, roi): |
53 | smoothed = numpy.array(self.mask[roi]) | 53 | smoothed = numpy.array(self.mask[roi]) |
54 | - image = imagedata_utils.to_vtk(smoothed, self.spacing, roi.start, | 54 | + image = converters.to_vtk(smoothed, self.spacing, roi.start, |
55 | "AXIAL") | 55 | "AXIAL") |
56 | flip = vtk.vtkImageFlip() | 56 | flip = vtk.vtkImageFlip() |
57 | flip.SetInput(image) | 57 | flip.SetInput(image) |
invesalius/session.py
1 | +#-------------------------------------------------------------------------- | ||
2 | +# Software: InVesalius - Software de Reconstrucao 3D de Imagens Medicas | ||
3 | +# Copyright: (C) 2001 Centro de Pesquisas Renato Archer | ||
4 | +# Homepage: http://www.softwarepublico.gov.br | ||
5 | +# Contact: invesalius@cti.gov.br | ||
6 | +# License: GNU - GPL 2 (LICENSE.txt/LICENCA.txt) | ||
7 | +#-------------------------------------------------------------------------- | ||
8 | +# Este programa e software livre; voce pode redistribui-lo e/ou | ||
9 | +# modifica-lo sob os termos da Licenca Publica Geral GNU, conforme | ||
10 | +# publicada pela Free Software Foundation; de acordo com a versao 2 | ||
11 | +# da Licenca. | ||
12 | +# | ||
13 | +# Este programa eh distribuido na expectativa de ser util, mas SEM | ||
14 | +# QUALQUER GARANTIA; sem mesmo a garantia implicita de | ||
15 | +# COMERCIALIZACAO ou de ADEQUACAO A QUALQUER PROPOSITO EM | ||
16 | +# PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais | ||
17 | +# detalhes. | ||
18 | +#-------------------------------------------------------------------------- | ||
19 | + | ||
1 | import ConfigParser | 20 | import ConfigParser |
2 | import os | 21 | import os |
3 | import shutil | 22 | import shutil |