0

我有一组 250 张图像。从每张图像中我应用 SLIC 超像素算法。

现在,给定每幅图像的超像素,我想在图像2中跟踪图像1的超像素。

怎么做 ?

以图像 1 中的 5 个超像素蒙版为例,每个蒙版具有不同的颜色。假设我们采用超像素区域 1、2、3、4 和 5

color_maks=['red', 'green', 'white','yellow', 'orange']

我想在图 1 中获得这些掩码,在图 2 中获得它们对应的掩码。

我的问题 ?

1)如何为每个超像素蒙版分配不同的颜色并在图像 1 和 2 中显示它们?

2) 给定图像 1中超像素 1对应的掩码 1(红色),如何在 中显示其掩码。例如 :image 2

regions_image_1=[ 1,2,3,4,5]

corresponding_region_in_image_2=[7,2,5,8,12]

为了说明:

让我们将图像 1 中的区域 1 与mask_color='red'. 在图 1 中显示它并在图 2中显示其对应的区域 7具有相同的mask_color='red'

我试过什么?

def display_mask_superpixel(image):

    image = cv2.imread(image)
    segments = slic(img_as_float(image), n_segments=50, sigma=5)
    # show the output of SLIC
    fig = plt.figure("Superpixels")
    ax = fig.add_subplot(1, 1, 1)
    ax.imshow(mark_boundaries(img_as_float(cv2.cvtColor(image, cv2.COLOR_BGR2RGB)), segments))
    plt.axis("off")
    plt.show()
    plt.cla()
    plt.close()

    for (i, segVal) in enumerate(np.unique(segments)):
        # construct a mask for the segment
        print("[x] inspecting segment %d" % (i))
        mask = np.zeros(image.shape[:2], dtype="uint8")
        mask[segments == segVal] = 255

        # show the masked region
        cv2.imshow("Mask", mask)

        cv2.imshow("Applied", cv2.bitwise_and(image, image, mask=mask))
        cv2.waitKey(0)

List_of images=images

for image in list_of_images:
    display_mask_superpixel(image)

这里的限制是:

1) l 显示给定图像的所有超像素,但是我想只显示一些区域

2)所有面具都是白色的,但是我正在为每个面具寻找不同的颜色

3) 不要在图像 2 中处理跟踪图像 1 的超像素区域

希望清楚 谢谢

4

0 回答 0