diff --git a/invesalius/control.py b/invesalius/control.py index 44cd58f..a4ff8ba 100644 --- a/invesalius/control.py +++ b/invesalius/control.py @@ -508,6 +508,7 @@ class Controller(): self.ImportGroup(group, use_gui) def ImportGroup(self, group, gui=True): + matrix, matrix_filename, dicom = self.OpenDicomGroup(group, 0, [0, 0], gui=gui) self.CreateDicomProject(dicom, matrix, matrix_filename) @@ -878,6 +879,13 @@ class Controller(): def OnOpenDicomGroup(self, group, interval, file_range): + dicom = group.GetDicomSample() + samples_per_pixel = dicom.image.samples_per_pixel + print(f"\n\n\n\n{samples_per_pixel =}\n\n\n") + if samples_per_pixel == 3: + dlg = wx.MessageDialog(wx.GetApp().GetTopWindow(), _("this is a rgb image, it's necessary to convert to grayscale to open on invesalius.\ndo you want to convert it to grayscale?"), _("Confirm"), wx.YES_NO | wx.YES_DEFAULT | wx.ICON_QUESTION) + if dlg.ShowModal() != wx.ID_YES: + return matrix, matrix_filename, dicom = self.OpenDicomGroup(group, interval, file_range, gui=True) self.CreateDicomProject(dicom, matrix, matrix_filename) self.LoadProject() @@ -918,9 +926,9 @@ class Controller(): xyspacing = dicom.image.spacing orientation = dicom.image.orientation_label samples_per_pixel = dicom.image.samples_per_pixel - print(f"\n\n\n\n{samples_per_pixel =}\n\n\n") + wl = float(dicom.image.level) ww = float(dicom.image.window) diff --git a/invesalius/data/imagedata_utils.py b/invesalius/data/imagedata_utils.py index cb7a3e6..1aaa88d 100644 --- a/invesalius/data/imagedata_utils.py +++ b/invesalius/data/imagedata_utils.py @@ -39,6 +39,7 @@ import invesalius.reader.bitmap_reader as bitmap_reader import invesalius.utils as utils from invesalius import inv_paths from invesalius.data import vtk_utils as vtk_utils +from skimage.color import rgb2gray if sys.platform == "win32": try: @@ -483,10 +484,13 @@ def dcmmf2memmap(dcm_file, orientation): image = reader.GetImage() xs, ys, zs = image.GetSpacing() pf = image.GetPixelFormat() + samples_per_pixel = pf.GetSamplesPerPixel() np_image = converters.gdcm_to_numpy(image, pf.GetSamplesPerPixel() == 1) + if samples_per_pixel == 3: + np_image = image_normalize(rgb2gray(np_image), 0, 255) + print(f"\n\n\n{np_image.min() =} - {np_image.max() =}\n\n\n") temp_file = tempfile.mktemp() matrix = numpy.memmap(temp_file, mode="w+", dtype="int16", shape=np_image.shape) - print("Number of dimensions", np_image.shape) z, y, x = np_image.shape if orientation == "CORONAL": spacing = xs, zs, ys diff --git a/invesalius/reader/dicom.py b/invesalius/reader/dicom.py index 105c9d9..f7ed570 100644 --- a/invesalius/reader/dicom.py +++ b/invesalius/reader/dicom.py @@ -962,7 +962,7 @@ class Parser(): if not data: return 1 - return data + return int(data) def GetPhotometricInterpretation(self): """ -- libgit2 0.21.2