Python skimage.morphology.erosion() Examples
The following are 30
code examples of skimage.morphology.erosion().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
skimage.morphology
, or try the search function
.
Example #1
Source File: math.py From spinalcordtoolbox with MIT License | 6 votes |
def erode(data, size, shape, dim=None): """ Dilate data using ball structuring element :param data: Image or numpy array: 2d or 3d array :param size: int: If shape={'square', 'cube'}: Corresponds to the length of an edge (size=1 has no effect). If shape={'disk', 'ball'}: Corresponds to the radius, not including the center element (size=0 has no effect). :param shape: {'square', 'cube', 'disk', 'ball'} :param dim: {0, 1, 2}: Dimension of the array which 2D structural element will be orthogonal to. For example, if you wish to apply a 2D disk kernel in the X-Y plane, leaving Z unaffected, parameters will be: shape=disk, dim=2. :return: numpy array: data dilated """ if isinstance(data, Image): im_out = data.copy() im_out.data = erode(data.data, size, shape, dim) return im_out else: return erosion(data, selem=_get_selem(shape, size, dim), out=None)
Example #2
Source File: postprocessing.py From open-solution-mapping-challenge with MIT License | 6 votes |
def erode_image(mask, erode_selem_size): """Erode mask. Args: mask (numpy.ndarray): Mask of shape (H x W) or multiple masks of shape (C x H x W). erode_selem_size (int): Size of rectangle structuring element used for erosion. Returns: numpy.ndarray: Eroded mask of shape (H x W) or multiple masks of shape (C x H x W). """ if not erode_selem_size > 0: return mask selem = rectangle(erode_selem_size, erode_selem_size) if mask.ndim == 2: eroded_image = erosion(mask, selem=selem) else: eroded_image = [] for category_mask in mask: eroded_image.append(erosion(category_mask, selem=selem)) eroded_image = np.stack(eroded_image) return add_dropped_objects(mask, eroded_image)
Example #3
Source File: data_segmentation.py From pytorch_connectomics with MIT License | 6 votes |
def markInvalid(seg, iter_num=2, do_2d=True): # find invalid # if do erosion(seg==0), then miss the border if do_2d: stel=np.array([[1,1,1], [1,1,1]]).astype(bool) if len(seg.shape)==2: out = binary_dilation(seg>0, structure=stel, iterations=iter_num) seg[out==0] = -1 else: # save memory for z in range(seg.shape[0]): tmp = seg[z] # by reference out = binary_dilation(tmp>0, structure=stel, iterations=iter_num) tmp[out==0] = -1 else: stel=np.array([[1,1,1], [1,1,1], [1,1,1]]).astype(bool) out = binary_dilation(seg>0, structure=stel, iterations=iter_num) seg[out==0] = -1 return seg
Example #4
Source File: gen.py From insightocr with MIT License | 6 votes |
def addNoiseAndGray(surf): # https://stackoverflow.com/questions/34673424/how-to-get-numpy-array-of-rgb-colors-from-pygame-surface imgdata = pygame.surfarray.array3d(surf) imgdata = imgdata.swapaxes(0, 1) # print('imgdata shape %s' % imgdata.shape) # shall be IMG_HEIGHT * IMG_WIDTH imgdata2 = noise_generator('s&p', imgdata) img2 = Image.fromarray(np.uint8(imgdata2)) # img2.save('/home/zhichyu/Downloads/2sp.jpg') grayscale2 = ImageOps.grayscale(img2) # grayscale2.save('/home/zhichyu/Downloads/2bw2.jpg') # return grayscale2 array = np.asarray(np.uint8(grayscale2)) # print('array.shape %s' % array.shape) selem = disk(random.randint(0, 1)) eroded = erosion(array, selem) return eroded
Example #5
Source File: postprocessing.py From DRFNS with MIT License | 6 votes |
def HreconstructionErosion(prob_img, h): """ Performs a H minimma reconstruction via an erosion method. """ def making_top_mask(x, lamb=h): return min(255, x + lamb) f = np.vectorize(making_top_mask) shift_prob_img = f(prob_img) seed = shift_prob_img mask = prob_img recons = reconstruction( seed, mask, method='erosion').astype(np.dtype('ubyte')) return recons
Example #6
Source File: utils.py From DRFNS with MIT License | 6 votes |
def generate_wsl(ws): """ Generates watershed line. In particular, useful for seperating object in ground thruth as they are labeled by different intergers. """ se = square(3) ero = ws.copy() ero[ero == 0] = ero.max() + 1 ero = erosion(ero, se) ero[ws == 0] = 0 grad = dilation(ws, se) - ero grad[ws == 0] = 0 grad[grad > 0] = 255 grad = grad.astype(np.uint8) return grad
Example #7
Source File: getTerminationBifurcation.py From Fingerprint-Feature-Extraction with MIT License | 6 votes |
def getTerminationBifurcation(img, mask): img = img == 255; (rows, cols) = img.shape; minutiaeTerm = np.zeros(img.shape); minutiaeBif = np.zeros(img.shape); for i in range(1,rows-1): for j in range(1,cols-1): if(img[i][j] == 1): block = img[i-1:i+2,j-1:j+2]; block_val = np.sum(block); if(block_val == 2): minutiaeTerm[i,j] = 1; elif(block_val == 4): minutiaeBif[i,j] = 1; mask = convex_hull_image(mask>0) mask = erosion(mask, square(5)) # Structuing element for mask erosion = square(5) minutiaeTerm = np.uint8(mask)*minutiaeTerm return(minutiaeTerm, minutiaeBif)
Example #8
Source File: postprocessing.py From open-solution-data-science-bowl-2018 with MIT License | 5 votes |
def get_markers(m_b, c): # threshold c_thresh = threshold_otsu(c) c_b = c > c_thresh mk_ = np.where(c_b, 0, m_b) area, radius = mean_blob_size(m_b) struct_size = int(0.25 * radius) struct_el = morph.disk(struct_size) m_padded = pad_mask(mk_, pad=struct_size) m_padded = morph.erosion(m_padded, selem=struct_el) mk_ = crop_mask(m_padded, crop=struct_size) mk_, _ = ndi.label(mk_) return mk_
Example #9
Source File: cityscapes.py From 2019-CCF-BDCI-OCR-MCZJ-OCR-IdentificationIDElement with MIT License | 5 votes |
def make_boundaries(label, thickness=None): """ Input is an image label, output is a numpy array mask encoding the boundaries of the objects Extract pixels at the true boundary by dilation - erosion of label. Don't just pick the void label as it is not exclusive to the boundaries. """ assert(thickness is not None) import skimage.morphology as skm void = 255 mask = np.logical_and(label > 0, label != void)[0] selem = skm.disk(thickness) boundaries = np.logical_xor(skm.dilation(mask, selem), skm.erosion(mask, selem)) return boundaries
Example #10
Source File: image_tfs.py From tanda with MIT License | 5 votes |
def TF_erosion(img): return erosion(img)
Example #11
Source File: cityscapes.py From Bayesian-CycleGAN with MIT License | 5 votes |
def make_boundaries(label, thickness=None): """ Input is an image label, output is a numpy array mask encoding the boundaries of the objects Extract pixels at the true boundary by dilation - erosion of label. Don't just pick the void label as it is not exclusive to the boundaries. """ assert(thickness is not None) import skimage.morphology as skm void = 255 mask = np.logical_and(label > 0, label != void)[0] selem = skm.disk(thickness) boundaries = np.logical_xor(skm.dilation(mask, selem), skm.erosion(mask, selem)) return boundaries
Example #12
Source File: segmentation_test.py From DRFNS with MIT License | 5 votes |
def overlay(self, img, imbin, contour=False): colim = color.gray2rgb(img) colorvalue = (0, 100, 200) if contour: se = morphology.diamond(2) ero = morphology.erosion(imbin, se) grad = imbin - ero colim[grad > 0] = colorvalue else: colim[imbin>0] = colorvalue return colim
Example #13
Source File: generate_pose_map_add_mask.py From Human-Pose-Transfer with MIT License | 5 votes |
def key_point_to_mask(key_points, img_size, radius=6): new_points = expand_key_points(key_points, radius) mask = np.zeros(shape=img_size, dtype=bool) for i, joint in enumerate(list(key_points) + new_points): if KEY_POINT_MISSING_VALUE in joint: continue yy, xx = circle(joint[0], joint[1], radius=radius, shape=img_size) mask[yy, xx] = True mask = dilation(mask, square(radius + 3)) mask = erosion(mask, square(radius + 3)) return mask
Example #14
Source File: pose_utils.py From Human-Pose-Transfer with MIT License | 5 votes |
def produce_ma_mask(kp_array, img_size, point_radius=4): from skimage.morphology import dilation, erosion, square mask = np.zeros(shape=img_size, dtype=bool) limbs = [[2, 3], [2, 6], [3, 4], [4, 5], [6, 7], [7, 8], [2, 9], [9, 10], [10, 11], [2, 12], [12, 13], [13, 14], [2, 1], [1, 15], [15, 17], [1, 16], [16, 18], [2, 17], [2, 18], [9, 12], [12, 6], [9, 3], [17, 18]] limbs = np.array(limbs) - 1 for f, t in limbs: from_missing = kp_array[f][0] == MISSING_VALUE or kp_array[f][1] == MISSING_VALUE to_missing = kp_array[t][0] == MISSING_VALUE or kp_array[t][1] == MISSING_VALUE if from_missing or to_missing: continue norm_vec = kp_array[f] - kp_array[t] norm_vec = np.array([-norm_vec[1], norm_vec[0]]) norm_vec = point_radius * norm_vec / np.linalg.norm(norm_vec) vetexes = np.array([ kp_array[f] + norm_vec, kp_array[f] - norm_vec, kp_array[t] - norm_vec, kp_array[t] + norm_vec ]) yy, xx = polygon(vetexes[:, 0], vetexes[:, 1], shape=img_size) mask[yy, xx] = True for i, joint in enumerate(kp_array): if kp_array[i][0] == MISSING_VALUE or kp_array[i][1] == MISSING_VALUE: continue yy, xx = circle(joint[0], joint[1], radius=point_radius, shape=img_size) mask[yy, xx] = True mask = dilation(mask, square(5)) mask = erosion(mask, square(5)) return mask
Example #15
Source File: postprocessing.py From DRFNS with MIT License | 5 votes |
def generate_wsl(ws): """ Generates watershed line that correspond to areas of touching objects. """ se = square(3) ero = ws.copy() ero[ero == 0] = ero.max() + 1 ero = erosion(ero, se) ero[ws == 0] = 0 grad = dilation(ws, se) - ero grad[ws == 0] = 0 grad[grad > 0] = 255 grad = grad.astype(np.uint8) return grad
Example #16
Source File: pose_utils.py From everybody_dance_now_pytorch with GNU Affero General Public License v3.0 | 5 votes |
def produce_ma_mask(kp_array, img_size, point_radius=4): from skimage.morphology import dilation, erosion, square mask = np.zeros(shape=img_size, dtype=bool) limbs = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] limbs = np.array(limbs) - 1 for f, t in limbs: from_missing = kp_array[f][0] == MISSING_VALUE or kp_array[f][1] == MISSING_VALUE to_missing = kp_array[t][0] == MISSING_VALUE or kp_array[t][1] == MISSING_VALUE if from_missing or to_missing: continue norm_vec = kp_array[f] - kp_array[t] norm_vec = np.array([-norm_vec[1], norm_vec[0]]) norm_vec = point_radius * norm_vec / np.linalg.norm(norm_vec) vetexes = np.array([ kp_array[f] + norm_vec, kp_array[f] - norm_vec, kp_array[t] - norm_vec, kp_array[t] + norm_vec ]) yy, xx = polygon(vetexes[:, 0], vetexes[:, 1], shape=img_size) mask[yy, xx] = True for i, joint in enumerate(kp_array): if kp_array[i][0] == MISSING_VALUE or kp_array[i][1] == MISSING_VALUE: continue yy, xx = circle(joint[0], joint[1], radius=point_radius, shape=img_size) mask[yy, xx] = True mask = dilation(mask, square(5)) mask = erosion(mask, square(5)) return mask
Example #17
Source File: segmentation_test.py From DRFNS with MIT License | 5 votes |
def morpho_rec(self, img, size=10): # internal gradient of the cells: se = morphology.diamond(size) ero = morphology.erosion(img, se) rec = morphology.reconstruction(ero, img, method='dilation').astype(np.dtype('uint8')) return rec
Example #18
Source File: segmentation_test.py From DRFNS with MIT License | 5 votes |
def morpho_rec2(self, img, size=10): # internal gradient of the cells: se = morphology.diamond(size) dil = morphology.dilation(img, se) rec = morphology.reconstruction(dil, img, method='erosion').astype(np.dtype('uint8')) return rec
Example #19
Source File: segmentation_test.py From DRFNS with MIT License | 5 votes |
def test_morpho2(self, bigsize=20.0, smallsize=3.0, threshold=5.0): img = self.read_H_image() pref = self.morpho_rec(img, 10) filename = os.path.join(test_out_folder, 'morpho_00_rec_%s.png' % self.image_name) skimage.io.imsave(filename, pref) res = self.difference_of_gaussian(pref, bigsize, smallsize) filename = os.path.join(test_out_folder, 'morpho_01_diff_%s_%i_%i.png' % (self.image_name, int(bigsize), int(smallsize))) skimage.io.imsave(filename, res) #res = self.morpho_rec2(diff, 15) #filename = os.path.join(test_out_folder, 'morpho_02_rec_%s.png' % self.image_name) #skimage.io.imsave(filename, res) res[res>threshold] = 255 filename = os.path.join(test_out_folder, 'morpho_03_res_%s_%i.png' % (self.image_name, threshold)) skimage.io.imsave(filename, res) se = morphology.diamond(3) ero = morphology.erosion(res, se) filename = os.path.join(test_out_folder, 'morpho_03_ero_%s_%i.png' % (self.image_name, threshold)) skimage.io.imsave(filename, ero) res[ero>0] = 0 overlay_img = self.overlay(img, res) filename = os.path.join(test_out_folder, 'morpho_04_overlay_%s_%i.png' % (self.image_name, int(threshold))) skimage.io.imsave(filename, overlay_img) return
Example #20
Source File: segmentation_test.py From DRFNS with MIT License | 5 votes |
def get_rough_detection(self, img, bigsize=40.0, smallsize=4.0, thresh = 0): diff = self.difference_of_gaussian(-img, bigsize, smallsize) diff[diff>thresh] = 1 se = morphology.square(4) ero = morphology.erosion(diff, se) labimage = label(ero) #rec = morphology.reconstruction(ero, img, method='dilation').astype(np.dtype('uint8')) # connectivity=1 corresponds to 4-connectivity. morphology.remove_small_objects(labimage, min_size=600, connectivity=1, in_place=True) #res = np.zeros(img.shape) ero[labimage==0] = 0 ero = 1 - ero labimage = label(ero) morphology.remove_small_objects(labimage, min_size=400, connectivity=1, in_place=True) ero[labimage==0] = 0 res = 1 - ero res[res>0] = 255 #temp = 255 - temp #temp = morphology.remove_small_objects(temp, min_size=400, connectivity=1, in_place=True) #res = 255 - temp return res
Example #21
Source File: utils.py From DRFNS with MIT License | 5 votes |
def add_contours(rgb_image, contour, ds = 2): """ Adds contours to images. The image has to be a binary image """ rgb = rgb_image.copy() contour[contour > 0] = 1 boundery = contour - erosion(contour, disk(ds)) rgb[boundery > 0] = np.array([0, 0, 0]) return rgb
Example #22
Source File: postprocessing.py From DRFNS with MIT License | 5 votes |
def GetContours(img): """ Returns only the contours of the image. The image has to be a binary image """ img[img > 0] = 1 return dilation(img, disk(2)) - erosion(img, disk(2))
Example #23
Source File: utils.py From Pose-Guided-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask(peaks, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: p0 = peaks[limb[0] -1] p1 = peaks[limb[1] -1] if 0!=len(p0) and 0!=len(p1): r0 = p0[0][1] c0 = p0[0][0] r1 = p1[0][1] c1 = p1[0][0] ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) # sampleN = 0 if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) ## TODO # im = Image.fromarray((dense*255).astype(np.uint8)) # im.save('xxxxx.png') # pdb.set_trace() dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense
Example #24
Source File: convert_RCV.py From Pose-Guided-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask_COCO(RCV, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: r0,c0,v0 = RCV[limb[0]-1, :] r1,c1,v1 = RCV[limb[1]-1, :] if 0!=v0 and 0!=v1: ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense
Example #25
Source File: convert_DF.py From Pose-Guided-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask(peaks, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: p0 = peaks[limb[0] -1] p1 = peaks[limb[1] -1] if 0!=len(p0) and 0!=len(p1): r0 = p0[0][1] c0 = p0[0][0] r1 = p1[0][1] c1 = p1[0][0] ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense
Example #26
Source File: convert_market.py From Pose-Guided-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask(peaks, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: p0 = peaks[limb[0] -1] p1 = peaks[limb[1] -1] if 0!=len(p0) and 0!=len(p1): r0 = p0[0][1] c0 = p0[0][0] r1 = p1[0][1] c1 = p1[0][0] ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) # sampleN = 0 if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) ## TODO # im = Image.fromarray((dense*255).astype(np.uint8)) # im.save('xxxxx.png') # pdb.set_trace() dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense
Example #27
Source File: utils.py From Disentangled-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask(peaks, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: p0 = peaks[limb[0] -1] p1 = peaks[limb[1] -1] if 0!=len(p0) and 0!=len(p1): r0 = p0[0][1] c0 = p0[0][0] r1 = p1[0][1] c1 = p1[0][0] ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) # sampleN = 0 if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) ## TODO # im = Image.fromarray((dense*255).astype(np.uint8)) # im.save('xxxxx.png') # pdb.set_trace() dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense
Example #28
Source File: convert_RCV.py From Disentangled-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask_COCO(RCV, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: r0,c0,v0 = RCV[limb[0]-1, :] r1,c1,v1 = RCV[limb[1]-1, :] if 0!=v0 and 0!=v1: ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense
Example #29
Source File: convert_DF.py From Disentangled-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask(peaks, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: p0 = peaks[limb[0] -1] p1 = peaks[limb[1] -1] if 0!=len(p0) and 0!=len(p1): r0 = p0[0][1] c0 = p0[0][0] r1 = p1[0][1] c1 = p1[0][0] ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense
Example #30
Source File: convert_market.py From Disentangled-Person-Image-Generation with MIT License | 4 votes |
def _getPoseMask(peaks, height, width, radius=4, var=4, mode='Solid'): ## MSCOCO Pose part_str = [nose, neck, Rsho, Relb, Rwri, Lsho, Lelb, Lwri, Rhip, Rkne, Rank, Lhip, Lkne, Lank, Leye, Reye, Lear, Rear, pt19] # find connection in the specified sequence, center 29 is in the position 15 # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18], [3,17], [6,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ # [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # , [9,12] # limbSeq = [[3,4], [4,5], [6,7], [7,8], [9,10], \ # [10,11], [12,13], [13,14], [2,1], [1,15], [15,17], \ # [1,16], [16,18]] # limbSeq = [[2,3], [2,6], [3,4], [4,5], [6,7], [7,8], [2,9], [9,10], \ [10,11], [2,12], [12,13], [13,14], [2,1], [1,15], [15,17], \ [1,16], [16,18], [2,17], [2,18], [9,12], [12,6], [9,3], [17,18]] # indices = [] values = [] for limb in limbSeq: p0 = peaks[limb[0] -1] p1 = peaks[limb[1] -1] if 0!=len(p0) and 0!=len(p1): r0 = p0[0][1] c0 = p0[0][0] r1 = p1[0][1] c1 = p1[0][0] ind, val = _getSparseKeypoint(r0, c0, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) ind, val = _getSparseKeypoint(r1, c1, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) distance = np.sqrt((r0-r1)**2 + (c0-c1)**2) sampleN = int(distance/radius) # sampleN = 0 if sampleN>1: for i in xrange(1,sampleN): r = r0 + (r1-r0)*i/sampleN c = c0 + (c1-c0)*i/sampleN ind, val = _getSparseKeypoint(r, c, 0, height, width, radius, var, mode) indices.extend(ind) values.extend(val) shape = [height, width, 1] ## Fill body dense = np.squeeze(_sparse2dense(indices, values, shape)) ## TODO # im = Image.fromarray((dense*255).astype(np.uint8)) # im.save('xxxxx.png') # pdb.set_trace() dense = dilation(dense, square(5)) dense = erosion(dense, square(5)) return dense