Commit e53432ed26858d8a2687631986a283bf433d8449

Authored by tfmoraes
1 parent 1d943e8d

ENH: Using vtkgdcmImageReader instead gdcm.ImageReader.

Because it was necessary to do some extra works, like some math to calculate the hounsfield units, now we are using vtkgdcmImageReader instead of gdcm.ImageReader.
Showing 1 changed file with 7 additions and 30 deletions   Show diff stats
invesalius/data/imagedata_utils.py
@@ -456,25 +456,6 @@ class ImageCreator: @@ -456,25 +456,6 @@ class ImageCreator:
456 456
457 return imagedata 457 return imagedata
458 458
459 -def get_gdcm_to_numpy_typemap():  
460 - """Returns the GDCM Pixel Format to numpy array type mapping."""  
461 - _gdcm_np = {gdcm.PixelFormat.UINT8 :numpy.int8,  
462 - gdcm.PixelFormat.INT8 :numpy.uint8,  
463 - #gdcm.PixelFormat.UINT12 :numpy.uint12,  
464 - #gdcm.PixelFormat.INT12 :numpy.int12,  
465 - gdcm.PixelFormat.UINT16 :numpy.uint16,  
466 - gdcm.PixelFormat.INT16 :numpy.int16,  
467 - gdcm.PixelFormat.UINT32 :numpy.uint32,  
468 - gdcm.PixelFormat.INT32 :numpy.int32,  
469 - #gdcm.PixelFormat.FLOAT16:numpy.float16,  
470 - gdcm.PixelFormat.FLOAT32:numpy.float32,  
471 - gdcm.PixelFormat.FLOAT64:numpy.float64 }  
472 - return _gdcm_np  
473 -  
474 -def get_numpy_array_type(gdcm_pixel_format):  
475 - """Returns a numpy array typecode given a GDCM Pixel Format."""  
476 - return get_gdcm_to_numpy_typemap()[gdcm_pixel_format]  
477 -  
478 def dcm2memmap(files, slice_size): 459 def dcm2memmap(files, slice_size):
479 """ 460 """
480 From a list of dicom files it creates memmap file in the temp folder and 461 From a list of dicom files it creates memmap file in the temp folder and
@@ -483,20 +464,16 @@ def dcm2memmap(files, slice_size): @@ -483,20 +464,16 @@ def dcm2memmap(files, slice_size):
483 temp_file = tempfile.mktemp() 464 temp_file = tempfile.mktemp()
484 shape = len(files), slice_size[0], slice_size[1] 465 shape = len(files), slice_size[0], slice_size[1]
485 466
486 - matrix = numpy.memmap(temp_file, mode='w+', dtype='uint16', shape=shape) 467 + matrix = numpy.memmap(temp_file, mode='w+', dtype='int16', shape=shape)
487 468
488 for n, f in enumerate(files): 469 for n, f in enumerate(files):
489 - dcm_image = gdcm.ImageReader()  
490 - dcm_image.SetFileName(f)  
491 - dcm_image.Read()  
492 -  
493 - image = dcm_image.GetImage()  
494 - pf = image.GetPixelFormat().GetScalarType()  
495 - dtype = get_numpy_array_type(pf) 470 + dcm_reader = vtkgdcm.vtkGDCMImageReader()
  471 + dcm_reader.SetFileName(f)
  472 + dcm_reader.Update()
496 473
497 - dcm_array = image.GetBuffer()  
498 - array = numpy.frombuffer(dcm_array, dtype)  
499 - array.shape = slice_size 474 + image = dcm_reader.GetOutput()
  475 + array = numpy_support.vtk_to_numpy(image.GetPointData().GetScalars())
  476 + array.shape = matrix.shape[1], matrix.shape[2]
500 matrix[n] = array 477 matrix[n] = array
501 478
502 matrix.flush() 479 matrix.flush()