Source code for pycellfit.segmentation_transform_utils

import numpy as np


[docs]def fill_region(array_of_pixels, position, new_value): """ fills a region of a 2D numpy array with the same value :type array_of_pixels: np.ndarray :param array_of_pixels: 2D numpy array of all pixel values :param position: tuple with (row, col) location of pixel in the region to modify :type position: tuple :type new_value: float :param new_value: new value for pixel at `position` and all pixels in same region :return: None """ xsize, ysize = array_of_pixels.shape old_value = array_of_pixels[position[0], position[1]] stack = {(position[0], position[1])} if new_value == old_value: raise ValueError("Region is already filled") while stack: x, y = stack.pop() if array_of_pixels[x, y] == old_value: array_of_pixels[x, y] = new_value if x > 0: stack.add((x - 1, y)) if x < (xsize - 1): stack.add((x + 1, y)) if y > 0: stack.add((x, y - 1)) if y < (ysize - 1): stack.add((x, y + 1))
# constant value that the image array is padded with PAD_VALUE = -1
[docs]def pad_with(vector, pad_width, iaxis, kwargs): """helper function that is called by np.pad to surround a nparray with a constant value Example: [[0,0],[0,0]] becomes [[-1,-1,-1, -1],[-1, 0, 0, -1],[-1, 0, 0, -1],[-1,-1,-1, -1]] """ pad_value = kwargs.get('padder', PAD_VALUE) vector[:pad_width[0]] = pad_value vector[-pad_width[1]:] = pad_value