Sfoglia il codice sorgente

Modify segment colors

Andrej Studen 12 ore fa
parent
commit
64d836ed75
1 ha cambiato i file con 22 aggiunte e 14 eliminazioni
  1. 22 14
      slicerModules/imageBrowser.py

+ 22 - 14
slicerModules/imageBrowser.py

@@ -488,7 +488,6 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
         if not os.path.isdir(self.tempDir):
             os.mkdir(self.tempDir)
         self.lookups={}
-        self.segmentList=["Liver","Blood","Marrow","Disease","Deauville","Metastases"]
         print('imageBrowserLogic setup complete')
     
 
@@ -753,24 +752,20 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
         seg=segNode.GetSegmentation()
         segNames=[seg.GetNthSegmentID(i) for i in range(seg.GetNumberOfSegments())]
         print('Segments')
-        try:
-            segmentList=self.isetup['segmentList']
-        except KeyError:
-            segmentList=self.segmentList
+        segmentList=self.getSegmentList()
         for s in segmentList:
             if s not in segNames:
                 seg.AddEmptySegment(s,s)
                 print(s)
+        self.updateSegmentColors(seg)
         print('Done')
 
 
-
-
     def saveSegmentation(self):
         #get the latest key by adding an entry to SegmentationList
         copyFields=[self.isetup['participantField'],'patientCode','visitCode','User']
         outRow={x:self.segmentationEntry[x] for x in copyFields}
-        sList=self.isetup['datasets']['SegmentationsList']
+        ssList=self.isetup['datasets']['SegmentationsList']
         respJSON=self.db.modifyRows('insert',sList['project'],
             sList['schema'],sList['query'],[outRow])
         outRow=respJSON['rows'][0]
@@ -843,14 +838,27 @@ class imageBrowserLogic(ScriptedLoadableModuleLogic):
         slicer.mrmlScene.AddNode(segNode)
         segNode.CreateDefaultDisplayNodes()
         segNode.SetReferenceImageGeometryParameterFromVolumeNode(self.volumeNode['PET'])
-        try:
-            segmentList=self.isetup['segmentList']
-        except KeyError:
-            segmentList=self.segmentList
+        segmentList=self.getSegmentList() 
         for s in segmentList:
             segNode.GetSegmentation().AddEmptySegment(s,s)
-
-
+        self.updateSegmentColors(segNode.GetSegmentation())
+
+    def getSegmentList(self):
+        return self.isetup.get('segmentList', \
+           ["Liver","Blood","Marrow","Disease","Deauville","Metastases","Lesion"])
+
+
+    def updateSegmentColors(self,seg):
+      colorMap={'Liver':(1,1,0),'Blood':(1,0,0),'Marrow':(1,0,1),
+      'Disease':(0,0.5,1),'Deauville':(0,1,1),'Metastases':(0.5,1,0),
+      'Lesion':(0,0.67,0.33)}
+#map colors to segments
+      for segIdx in range(seg.GetNumberOfSegments()):
+         segmentId = seg.GetNthSegmentID(segIdx)
+         segment = seg.GetSegment(segmentId)
+         color=colorMap[segmentId]
+         segment.SetColor(color[0],color[1],color[2])  # red
+      
 
     def clearVolumesAndSegmentations(self):
         nodes=slicer.util.getNodesByClass("vtkMRMLVolumeNode")