簡體   English   中英

在從實例分割掩碼中提取的二值對象掩碼圖像中提取感興趣對象的二值邊界圖像

[英]Extracting a binary boundary image for object of interest in a binary object mask image extracted from an instance segmentation mask

我有一個來自Detectron 2的實例分割 + 2D 邊界框結構,我從中將 pred_masks 轉換為二進制對象(感興趣的)掩碼。

所以,在這里,我的問題是如何將此二值蒙版轉換為二值圖像,其中整個圖像是黑色的,但對象蒙版中感興趣的對象周圍的邊界是白色的?

segmenter = get_pointrend_predictor()
instances = segmenter(image)["instances"]
vis = PointRendVisualizer(image, metadata=MetadataCatalog.get("coco_2017_val"))
Image.fromarray(vis.draw_instance_predictions(instances.to("cpu")).get_image())

在此處輸入圖片說明

實例2 .pred_masks.shape

torch.Size([1, 224, 400])
na = instances[1].pred_masks.to('cpu').numpy()
print(na.shape)

(1, 224, 400)

na = na.reshape(224, 400)
na.shape

(224, 400)

na = np.where(na == False, 0, na)
na = np.where(na == True, 255, na)
plt.imshow(na)

在此處輸入圖片說明

在這個具體的例子中,我有興趣在小象的邊界上畫一條白線(這是我在實例分割掩碼對象中的第二個實例)。

不幸的是,我沒有小象的邊界圖,但這是人類邊界的示例(以白線顯示): 在此處輸入圖片說明 ^ 圖片參考: https : //www.programmersought.com/article/52814639867/

我只是想出了提取位掩碼邊緣的方法。

如圖所示: 在此處輸入圖片說明

na = outputs['instances'][1].pred_masks.to('cpu').numpy()
na = na.reshape(1024, 683)

from detectron2.utils.visualizer import GenericMask
gm = GenericMask(na, 1024, 683)
sg = gm.polygons[0].reshape(-1,2)
print(sg)

通過代碼,我得到了一個多邊形邊列表。 這是氣球的面具。

為了驗證它,我將多邊形翻譯成 JavaScript,如下圖所示,然后運行它。 顯然它有效。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM