(mask_depth, far_edge, uncleaned_far_edge, near_edge, mask, all_depth, config)
| 1222 | return mesh, info_on_pix |
| 1223 | |
| 1224 | def refine_depth_around_edge(mask_depth, far_edge, uncleaned_far_edge, near_edge, mask, all_depth, config): |
| 1225 | if isinstance(mask_depth, torch.Tensor): |
| 1226 | if mask_depth.is_cuda: |
| 1227 | mask_depth = mask_depth.cpu() |
| 1228 | mask_depth = mask_depth.data |
| 1229 | mask_depth = mask_depth.numpy() |
| 1230 | if isinstance(far_edge, torch.Tensor): |
| 1231 | if far_edge.is_cuda: |
| 1232 | far_edge = far_edge.cpu() |
| 1233 | far_edge = far_edge.data |
| 1234 | far_edge = far_edge.numpy() |
| 1235 | if isinstance(uncleaned_far_edge, torch.Tensor): |
| 1236 | if uncleaned_far_edge.is_cuda: |
| 1237 | uncleaned_far_edge = uncleaned_far_edge.cpu() |
| 1238 | uncleaned_far_edge = uncleaned_far_edge.data |
| 1239 | uncleaned_far_edge = uncleaned_far_edge.numpy() |
| 1240 | if isinstance(near_edge, torch.Tensor): |
| 1241 | if near_edge.is_cuda: |
| 1242 | near_edge = near_edge.cpu() |
| 1243 | near_edge = near_edge.data |
| 1244 | near_edge = near_edge.numpy() |
| 1245 | if isinstance(mask, torch.Tensor): |
| 1246 | if mask.is_cuda: |
| 1247 | mask = mask.cpu() |
| 1248 | mask = mask.data |
| 1249 | mask = mask.numpy() |
| 1250 | mask = mask.squeeze() |
| 1251 | uncleaned_far_edge = uncleaned_far_edge.squeeze() |
| 1252 | far_edge = far_edge.squeeze() |
| 1253 | near_edge = near_edge.squeeze() |
| 1254 | mask_depth = mask_depth.squeeze() |
| 1255 | dilate_far_edge = cv2.dilate(uncleaned_far_edge.astype(np.uint8), kernel=np.array([[0,1,0],[1,1,1],[0,1,0]]).astype(np.uint8), iterations=1) |
| 1256 | near_edge[dilate_far_edge == 0] = 0 |
| 1257 | dilate_near_edge = cv2.dilate(near_edge.astype(np.uint8), kernel=np.array([[0,1,0],[1,1,1],[0,1,0]]).astype(np.uint8), iterations=1) |
| 1258 | far_edge[dilate_near_edge == 0] = 0 |
| 1259 | init_far_edge = far_edge.copy() |
| 1260 | init_near_edge = near_edge.copy() |
| 1261 | for i in range(config['depth_edge_dilate_2']): |
| 1262 | init_far_edge = cv2.dilate(init_far_edge, kernel=np.array([[0,1,0],[1,1,1],[0,1,0]]).astype(np.uint8), iterations=1) |
| 1263 | init_far_edge[init_near_edge == 1] = 0 |
| 1264 | init_near_edge = cv2.dilate(init_near_edge, kernel=np.array([[0,1,0],[1,1,1],[0,1,0]]).astype(np.uint8), iterations=1) |
| 1265 | init_near_edge[init_far_edge == 1] = 0 |
| 1266 | init_far_edge[mask == 0] = 0 |
| 1267 | init_near_edge[mask == 0] = 0 |
| 1268 | hole_far_edge = 1 - init_far_edge |
| 1269 | hole_near_edge = 1 - init_near_edge |
| 1270 | change = None |
| 1271 | while True: |
| 1272 | change = False |
| 1273 | hole_far_edge[init_near_edge == 1] = 0 |
| 1274 | hole_near_edge[init_far_edge == 1] = 0 |
| 1275 | far_pxs, far_pys = np.where((hole_far_edge == 0) * (init_far_edge == 1) > 0) |
| 1276 | current_hole_far_edge = hole_far_edge.copy() |
| 1277 | for far_px, far_py in zip(far_pxs, far_pys): |
| 1278 | min_px = max(far_px - 1, 0) |
| 1279 | max_px = min(far_px + 2, mask.shape[0]-1) |
| 1280 | min_py = max(far_py - 1, 0) |
| 1281 | max_py = min(far_py + 2, mask.shape[1]-1) |
no outgoing calls
no test coverage detected