Commit e53432ed26858d8a2687631986a283bf433d8449
1 parent
1d943e8d
Exists in
master
and in
5 other branches
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() |