簡體   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