基本思想
- 对alpha matte进行膨胀操作,使其变大。对于膨胀后仍没有覆盖到的区域,将其判定为背景
- 对alpha matte进行腐蚀操作,使其变小。对于腐蚀后alpha值仍为1(255)的区域,将其判定为前景
- 剩下的区域为不确定区域
Pytorch代码
def gen_trimap(alpha):
k_size = random.choice(range(1, 5))
iterations = np.random.randint(1, 20)
kernel = cv.getStructuringElement(cv.MORPH_ELLIPSE, (k_size, k_size))
dilated = cv.dilate(alpha, kernel, iterations)
eroded = cv.erode(alpha, kernel, iterations)
trimap = np.zeros(alpha.shape)
trimap.fill(128)
trimap[eroded >= 255] = 255
trimap[dilated <= 0] = 0
return trimap
参考
https://github.com/foamliu/Deep-Image-Matting-PyTorch