def update_mask(self): """ Regenerate the masks for MaskRCNN and free-hand added (in case they are changed), and show in imageview. !!!ISSUE: getLocalHandlePositions: moving handles changes the position read out, dragging roi as a whole doesn't. """ # Binary mask from ML detection if len(self.selected_ML_Index) > 0: # Delete items in dictionary that are not roi items roi_dict = self.selected_cells_infor_dict.copy() del_key_list = [] for key in roi_dict: print(key) if 'ROIitem' not in key: del_key_list.append(key) for key in del_key_list: del roi_dict[key] self.MLmask = ProcessImage.ROIitem2Mask( roi_dict, mask_resolution=(self.MLtargetedImg.shape[0], self.MLtargetedImg.shape[1])) # Binary mask of added rois self.addedROIitemMask = ProcessImage.ROIitem2Mask( self.roi_list_freehandl_added, mask_resolution=(self.MLtargetedImg.shape[0], self.MLtargetedImg.shape[1])) self.intergrate_into_final_mask()
def intergrate_into_final_mask(self): # Binary mask of added rois self.addedROIitemMask = ProcessImage.ROIitem2Mask( self.roi_list_freehandl_added, mask_resolution=(self.MLtargetedImg.shape[0], self.MLtargetedImg.shape[1])) #Display the RGB mask, ML mask plus free-hand added. self.Mask_edit_viewItem.setImage(gray2rgb(self.addedROIitemMask) * self.mask_color_multiplier + \ gray2rgb(self.MLmask) * self.mask_color_multiplier + gray2rgb(self.MLtargetedImg)) self.final_mask = self.MLmask + self.addedROIitemMask # In case the input image is 2048*2048, and it is resized to fit in MaskRCNN, need to convert back to original size for DMD tranformation. if self.final_mask.shape[0] != self.Rawimage.shape[ 0] or self.final_mask.shape[1] != self.Rawimage.shape[1]: self.final_mask = resize( self.final_mask, [self.Rawimage.shape[0], self.Rawimage.shape[1]], preserve_range=True).astype(self.final_mask.dtype) # self.final_mask = np.where(self.final_mask <= 1, self.final_mask, int(1)) plt.figure() plt.imshow(self.final_mask) plt.show()