如何生成 Trimap 图像

Luk*_*er 5 image-processing

我找到了这个狗和猫图像数据集:

Oxford-IIIT 宠物数据集。

知道像素级前景-背景分割(trimap)图像是如何生成的吗?

我想将它用于我自己的数据集。

像素级前景-背景分割

具有三种颜色的图像(一种用于背景,一种用于前景,一种用于未分类区域)

在此输入图像描述

小智 1

注意:输入图像是二进制形式

def generate_trimap(mask_path,eroision_iter=6,dilate_iter=8):
    mask =  mask_path
    mask = cv2.imread(mask,0)
    mask[mask==1] = 255
    d_kernel = np.ones((3,3))
    erode  = cv2.erode(mask,d_kernel,iterations=eroision_iter)
    dilate = cv2.dilate(mask,d_kernel,iterations=dilate_iter)
    unknown1 = cv2.bitwise_xor(erode,mask)
    unknown2 = cv2.bitwise_xor(dilate,mask)
    unknowns = cv2.add(unknown1,unknown2)
    unknowns[unknowns==255]=127
    trimap = cv2.add(mask,unknowns)
    # cv2.imwrite("mask.png",mask)
    # cv2.imwrite("dilate.png",dilate)
    # cv2.imwrite("tri.png",trimap)
    labels = trimap.copy()
    labels[trimap==127]=1 #unknown
    labels[trimap==255]=2 #foreground
    #cv2.imwrite(mask_path,labels)
    return labels
Run Code Online (Sandbox Code Playgroud)