MCPcopy Index your code
hub / github.com/thygate/stable-diffusion-webui-depthmap-script / refine_depth_around_edge

Function refine_depth_around_edge

inpaint/utils.py:1224–1316  ·  view source on GitHub ↗
(mask_depth, far_edge, uncleaned_far_edge, near_edge, mask, all_depth, config)

Source from the content-addressed store, hash-verified

1222 return mesh, info_on_pix
1223
1224def 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)

Callers 2

extrapolateFunction · 0.90
DL_inpaint_edgeFunction · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected