def interactivity(self, min_val=None, max_val=None): from seed_editor_qt import QTSeedEditor import_gui() logger.debug('interactivity') # if self.edit_data: # self.data3d = self.data_editor(self.data3d) igc = self._interactivity_begin() pyed = QTSeedEditor(igc.img, seeds=igc.seeds, modeFun=igc.interactivity_loop, voxelSize=igc.voxelsize, volume_unit='ml') # set window if min_val is None: min_val = np.min(self.data3d) if max_val is None: max_val = np.max(self.data3d) window_c = ((max_val + min_val) / 2) window_w = (max_val - min_val) pyed.changeC(window_c) pyed.changeW(window_w) pyed.exec_() # @TODO někde v igc.interactivity() dochází k přehození nul za jedničy, # tady se to řeší hackem if igc.segmentation is not None: self.segmentation = (igc.segmentation == 0).astype(np.int8) self._interactivity_end(igc)
def cropDcm(self): oseg = self.oseg if oseg.data3d is None: self.statusBar().showMessage('No DICOM data!') return self.statusBar().showMessage('Cropping DICOM data...') QApplication.processEvents() pyed = QTSeedEditor(oseg.data3d, mode='crop', voxelSize=oseg.voxelsize_mm) # @TODO mx = self.oseg.viewermax mn = self.oseg.viewermin width = mx - mn # enter = (float(mx)-float(mn)) center = np.average([mx, mn]) logger.debug("window params max %f min %f width, %f center %f" % (mx, mn, width, center)) pyed.changeC(center) pyed.changeW(width) pyed.exec_() crinfo = pyed.getROI() if crinfo is not None: tmpcrinfo = [] for ii in crinfo: tmpcrinfo.append([ii.start, ii.stop]) # seg.data3d = qmisc.crop(oseg.data3d, oseg.crinfo) oseg.crop(tmpcrinfo) self.setLabelText(self.text_dcm_data, self.getDcmInfo()) self.statusBar().showMessage('Ready')
def interactivity(self, min_val=None, max_val=None, qt_app=None): """ Interactive seed setting with 3d seed editor """ from seed_editor_qt import QTSeedEditor from PyQt4.QtGui import QApplication if min_val is None: min_val = np.min(self.img) if max_val is None: max_val = np.max(self.img) window_c = ((max_val + min_val) / 2) # .astype(np.int16) window_w = (max_val - min_val) # .astype(np.int16) if qt_app is None: qt_app = QApplication(sys.argv) pyed = QTSeedEditor(self.img, modeFun=self.interactivity_loop, voxelSize=self.voxelsize, seeds=self.seeds, volume_unit=self.volume_unit ) pyed.changeC(window_c) pyed.changeW(window_w) qt_app.exec_()
def maskRegion(self): if self.oseg.data3d is None: self.statusBar().showMessage('No DICOM data!') return self.statusBar().showMessage('Mask region...') QApplication.processEvents() pyed = QTSeedEditor(self.oseg.data3d, mode='mask', voxelSize=self.oseg.voxelsize_mm) mx = self.oseg.viewermax mn = self.oseg.viewermin width = mx - mn # enter = (float(mx)-float(mn)) center = np.average([mx, mn]) logger.debug("window params max %f min %f width, %f center %f" % (mx, mn, width, center)) pyed.changeC(center) pyed.changeW(width) pyed.exec_() self.statusBar().showMessage('Ready')