def greyReconstruction(img, mask, greyReconstructionParameter = None, method = None, size = 3, save = None, verbose = False, subStack = None, out = sys.stdout, **parameter): """Calculates the grey reconstruction of the image Reconstruction is done z-slice by z-slice. Arguments: img (array): image data removeBackGroundParameter (dict): ========= ==================== =========================================================== Name Type Descritption ========= ==================== =========================================================== *method* (tuple or None) 'dilation' or 'erosion', if None return original image *size* (int or tuple) size of structuring element *save* (str or None) file name to save result of this operation if None dont save to file *verbose* (bool or int) print / plot information about this step ========= ==================== =========================================================== subStack (dict or None): sub-stack information verbose (bool): print progress info out (object): object to write progress info to Returns: array: grey reconstructed image """ method = getParameter(greyReconstructionParameter, "method", method); size = getParameter(greyReconstructionParameter, "size", size); save = getParameter(greyReconstructionParameter, "save", save); verbose= getParameter(greyReconstructionParameter, "verbose", verbose); if verbose: writeParameter(out = out, head = 'Grey reconstruction:', method = method, size = size, save = save); if method is None: return img; timer = Timer(); # background subtraction in each slice se = structureElement('Disk', size).astype('uint8'); for z in range(img.shape[2]): #img[:,:,z] = img[:,:,z] - grey_opening(img[:,:,z], structure = structureElement('Disk', (30,30))); #img[:,:,z] = img[:,:,z] - morph.grey_opening(img[:,:,z], structure = self.structureELement('Disk', (150,150))); img[:,:,z] = img[:,:,z] - reconstruct(img[:,:,z], method = method, selem = se) if not save is None: writeSubStack(save, img, subStack = subStack) if verbose > 1: plotTiling(img); if verbose: out.write(timer.elapsedTime(head = 'Grey reconstruction:') + '\n'); return img
def removeBackground(img, removeBackgroundParameter = None, size = None, save = None, verbose = False, subStack = None, out = sys.stdout, **parameter): """Remove background via subtracting a morphological opening from the original image Background removal is done z-slice by z-slice. Arguments: img (array): image data removeBackGroundParameter (dict): ========= ==================== =========================================================== Name Type Descritption ========= ==================== =========================================================== *size* (tuple or None) size for the structure element of the morphological opening if None, do not correct for any background *save* (str or None) file name to save result of this operation if None dont save to file *verbose* (bool or int) print / plot information about this step ========= ==================== =========================================================== subStack (dict or None): sub-stack information verbose (bool): print progress info out (object): object to write progress info to Returns: array: background corrected image """ size = getParameter(removeBackgroundParameter, "size", size); save = getParameter(removeBackgroundParameter, "save", save); verbose = getParameter(removeBackgroundParameter, "verbose", verbose); if verbose: writeParameter(out = out, head = 'Background Removal:', size = size, save = save); if size is None: return img; img = io.readData(img); timer = Timer(); # background subtraction in each slice se = structureElement('Disk', size).astype('uint8'); for z in range(img.shape[2]): #img[:,:,z] = img[:,:,z] - grey_opening(img[:,:,z], structure = structureElement('Disk', (30,30))); #img[:,:,z] = img[:,:,z] - morph.grey_opening(img[:,:,z], structure = self.structureELement('Disk', (150,150))); img[:,:,z] = img[:,:,z] - cv2.morphologyEx(img[:,:,z], cv2.MORPH_OPEN, se) if not save is None: writeSubStack(save, img, subStack = subStack) if verbose > 1: plotTiling(10*img); if verbose: out.write(timer.elapsedTime(head = 'Background') + '\n'); return img
def greyReconstruction(img, mask, greyReconstructionParameter=None, method=None, size=3, save=None, verbose=False, subStack=None, out=sys.stdout, **parameter): """Calculates the grey reconstruction of the image Reconstruction is done z-slice by z-slice. Arguments: img (array): image data removeBackGroundParameter (dict): ========= ==================== =========================================================== Name Type Descritption ========= ==================== =========================================================== *method* (tuple or None) 'dilation' or 'erosion', if None return original image *size* (int or tuple) size of structuring element *save* (str or None) file name to save result of this operation if None dont save to file *verbose* (bool or int) print / plot information about this step ========= ==================== =========================================================== subStack (dict or None): sub-stack information verbose (bool): print progress info out (object): object to write progress info to Returns: array: grey reconstructed image """ method = getParameter(greyReconstructionParameter, "method", method) size = getParameter(greyReconstructionParameter, "size", size) save = getParameter(greyReconstructionParameter, "save", save) verbose = getParameter(greyReconstructionParameter, "verbose", verbose) if verbose: writeParameter(out=out, head='Grey reconstruction:', method=method, size=size, save=save) if method is None: return img timer = Timer() # background subtraction in each slice se = structureElement('Disk', size).astype('uint8') for z in range(img.shape[2]): #img[:,:,z] = img[:,:,z] - grey_opening(img[:,:,z], structure = structureElement('Disk', (30,30))); #img[:,:,z] = img[:,:,z] - morph.grey_opening(img[:,:,z], structure = self.structureELement('Disk', (150,150))); img[:, :, z] = img[:, :, z] - reconstruct( img[:, :, z], method=method, selem=se) if not save is None: writeSubStack(save, img, subStack=subStack) if verbose > 1: plotTiling(img) if verbose: out.write(timer.elapsedTime(head='Grey reconstruction:') + '\n') return img