如何可视化带边缘的分段任意模型?

问题描述 投票:0回答:1

我可以使用分段任意模型并可视化其结果,但它们看起来与在线演示不同。

我的结果看起来像这样:

enter image description here

以下是该细分市场官方网站的结果:

enter image description here

我需要类似物体周围边缘的东西,就像官方网站一样,但我找不到任何可以完成工作的方法或实用程序。我确信我一定错过了一些东西。

我使用他们官方笔记本中的以下代码来显示注释:

def show_anns(anns):
if len(anns) == 0:
    return
sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True)
ax = plt.gca()
ax.set_autoscale_on(False)
polygons = []
color = []
for ann in sorted_anns:
    m = ann['segmentation']
    img = np.ones((m.shape[0], m.shape[1], 3))
    color_mask = np.random.random((1, 3)).tolist()[0]
    for i in range(3):
        img[:,:,i] = color_mask[i]
    ax.imshow(np.dstack((img, m*0.35)))

有谁知道如何解决这个问题吗?

python pytorch computer-vision image-segmentation
1个回答
0
投票

我认为你可以尝试找到每个掩模的边界或轮廓,如下所示:

from skimage import segmentation
import matplotlib.pyplot as plt
import numpy as np

def show_anns(anns):
    if len(anns) == 0:
        return
    sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True)
    ax = plt.gca()
    ax.set_autoscale_on(False)

    img = np.ones((sorted_anns[0]['segmentation'].shape[0], sorted_anns[0]['segmentation'].shape[1], 4))
    img[:,:,3] = 0
    for ann in sorted_anns:
        m = ann['segmentation']
        color_mask = np.concatenate([np.random.random(3), [0.35]])
        r, c = np.where(segmentation.find_boundaries(m, connectivity=2, mode="outer"))
        img[r, c] = np.array([0, 0, 1, 1])
        img[m] = color_mask
    ax.imshow(img)

我明白了(你可以尝试平滑边界): enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.