Commit fe2987186f0182cd771d3612cf971a6272cf0ae5
1 parent
e3d255a7
Exists in
master
and in
68 other branches
ENC: Gantry tilt dialog, dicom import enhacements
Showing
3 changed files
with
36 additions
and
23 deletions
Show diff stats
invesalius/control.py
... | ... | @@ -9,6 +9,7 @@ import project as prj |
9 | 9 | import data.imagedata_utils as utils |
10 | 10 | import data.surface as surface |
11 | 11 | import data.volume as volume |
12 | +import gui.dialogs as dialog | |
12 | 13 | import reader.dicom_reader as dcm |
13 | 14 | import reader.analyze_reader as analyze |
14 | 15 | |
... | ... | @@ -52,9 +53,10 @@ class Controller(): |
52 | 53 | proj.name = "Untitled" |
53 | 54 | |
54 | 55 | if output: |
55 | - #acquisition_modality, tilt_value, orientation,window, level | |
56 | + # In this case, there were DICOM files on the folder | |
56 | 57 | imagedata, dicom = output |
57 | - | |
58 | + | |
59 | + # Set orientation | |
58 | 60 | orientation = dicom.image.orientation_label |
59 | 61 | if (orientation == "CORONAL"): |
60 | 62 | orientation = const.CORONAL |
... | ... | @@ -62,16 +64,20 @@ class Controller(): |
62 | 64 | orientation = const.SAGITAL |
63 | 65 | else: |
64 | 66 | orientation = const.AXIAL |
65 | - | |
66 | - window = window = float(dicom.image.window) | |
67 | - level = level = float(dicom.image.level) | |
67 | + | |
68 | + # Retrieve window, level, modalit | |
69 | + window = float(dicom.image.window) | |
70 | + level = float(dicom.image.level) | |
68 | 71 | acquisition_modality = dicom.acquisition.modality |
72 | + | |
73 | + # If there was gantry tilt, fix it: | |
69 | 74 | tilt_value = dicom.acquisition.tilt |
70 | 75 | if (tilt_value): |
71 | - #TODO: Show dialog so user can set not other value | |
72 | - tilt_value *= -1 | |
76 | + # Tell user gantry tilt and fix, according to answer | |
77 | + message = "Fix gantry tilt applying the degrees bellow" | |
78 | + value = -1*tilt_value | |
79 | + tilt_value = dialog.ShowNumberDialog(message, value) | |
73 | 80 | imagedata = utils.FixGantryTilt(imagedata, tilt_value) |
74 | - print "Fixed Gantry Tilt", str(tilt_value) | |
75 | 81 | else: |
76 | 82 | "No DICOM files were found. Trying to read with ITK..." |
77 | 83 | imagedata = analyze.ReadDirectory(dir_) | ... | ... |
invesalius/reader/dicom.py
... | ... | @@ -1198,7 +1198,7 @@ class Parser(): |
1198 | 1198 | .GetSliceThickness() |
1199 | 1199 | if (data): |
1200 | 1200 | return float(data) |
1201 | - return None | |
1201 | + return 0 | |
1202 | 1202 | |
1203 | 1203 | def GetImageConvolutionKernel(self): |
1204 | 1204 | """ |
... | ... | @@ -1684,22 +1684,28 @@ class Image(object): |
1684 | 1684 | self.position = [1, 1, 1] |
1685 | 1685 | |
1686 | 1686 | self.number = parser.GetImageNumber() |
1687 | + print "*****************" | |
1687 | 1688 | self.spacing = spacing = parser.GetPixelSpacing() |
1689 | + print "Spacing:", spacing | |
1688 | 1690 | self.orientation_label = parser.GetImageOrientationLabel() |
1689 | 1691 | self.file = parser.filename |
1690 | 1692 | |
1691 | - if (parser.GetImageThickness()): | |
1692 | - spacing.append(parser.GetImageThickness()) | |
1693 | - else: | |
1694 | - try: | |
1695 | - spacing.append(1.5) | |
1696 | - except(AttributeError): | |
1697 | - spacing = [1, 1, 1] | |
1698 | - | |
1699 | - spacing[0] = round(spacing[0],2) | |
1700 | - spacing[1] = round(spacing[1],2) | |
1701 | - spacing[2] = round(spacing[2],2) | |
1702 | - self.spacing = spacing | |
1693 | + if self.spacing: | |
1694 | + print "Thickness:", parser.GetImageThickness() | |
1695 | + # If the image is "alone", we set thickness as z axis | |
1696 | + if (parser.GetImageThickness()): | |
1697 | + spacing.append(parser.GetImageThickness()) | |
1698 | + else: | |
1699 | + try: | |
1700 | + spacing.append(1.5) | |
1701 | + except(AttributeError): | |
1702 | + spacing = [1, 1, 1] | |
1703 | + | |
1704 | + # If there are too many float digits | |
1705 | + spacing[0] = round(spacing[0],2) | |
1706 | + spacing[1] = round(spacing[1],2) | |
1707 | + spacing[2] = round(spacing[2],2) | |
1708 | + self.spacing = spacing | |
1703 | 1709 | |
1704 | 1710 | try: |
1705 | 1711 | self.type = parser.GetImageType()[2] | ... | ... |
invesalius/reader/dicom_grouper.py
... | ... | @@ -78,7 +78,7 @@ class DicomGroups: |
78 | 78 | """ |
79 | 79 | return self.groups_dcm |
80 | 80 | |
81 | - def GetSplitterTyoe(self): | |
81 | + def GetSplitterType(self): | |
82 | 82 | """ |
83 | 83 | Return Integer with the SplitterType |
84 | 84 | 0 option used the name of patient information, |
... | ... | @@ -347,4 +347,5 @@ class DicomGroups: |
347 | 347 | spacing = None |
348 | 348 | |
349 | 349 | for information in self.groups_dcm[key][0]: |
350 | - information.image.spacing[2] = spacing | |
350 | + if information.image.spacing: | |
351 | + information.image.spacing[2] = spacing | ... | ... |