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 | ... | ... |