繁体   English   中英

从二进制掩码裁剪图像

[英]Cropping image from a binary mask

我正在尝试使用 DeepLab v3 来检测 object 并掩盖实际 object 所在的位置。 DeepLab model 产生一个resized_im (3D) 和一个 0 和非零值的掩码seg_map (2D),0 表示它是背景。

目前,只能在 object 上使用覆盖蒙版 plot 图像。 我想用透明背景从resized_im中裁剪 object。 对工作有什么建议吗?

你可以在这里玩一下笔记本: https://colab.research.google.com/drive/138dTpcYfne40hqrb13n_36okSGYhrJnz?usp=sharing&hl=en#scrollTo=p47cYGGOQE1W&forceEdit=true&sandboxMode=true

我也在这里尝试过: 如何根据二进制掩码裁剪图像,但似乎没有一个适用于我的情况

您只需要将分割掩码转换为 boolean numpy 数组,然后将图像乘以它。 不要忘记您的图像有 3 个通道,而掩码只有 1 个。它可能看起来像这样:

# seg_map - segmentation mask from network, resized_im - your input image
mask = np.greater(seg_map, 0) # get only non-zero positive pixels/labels
mask = np.expand_dims(mask, axis=-1) # (H, W) -> (H, W, 1)
mask = np.concatenate((mask, mask, mask), axis=-1) # (H, W, 1) -> (H, W, 3), (don't like it, so if you know how to do it better, please let me know)
crops = resized_im * mask # apply mask on image

如果要选择某些标签,可以使用不同的逻辑 numpy function,例如:

mask = np.equal(seg_map, 5) # to get only objects with label 5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM