MCPcopy Create free account
hub / github.com/thygate/stable-diffusion-webui-depthmap-script / context_and_holes

Function context_and_holes

inpaint/mesh.py:910–1393  ·  view source on GitHub ↗
(mesh, edge_ccs, config, specific_edge_id, specific_edge_loc, depth_feat_model,
                      connect_points_ccs=None, inpaint_iter=0, filter_edge=False, vis_edge_id=None)

Source from the content-addressed store, hash-verified

908 return mesh, info_on_pix, edge_mesh, depth, mark
909
910def context_and_holes(mesh, edge_ccs, config, specific_edge_id, specific_edge_loc, depth_feat_model,
911 connect_points_ccs=None, inpaint_iter=0, filter_edge=False, vis_edge_id=None):
912 edge_maps = np.zeros((mesh.graph['H'], mesh.graph['W'])) - 1
913 mask_info = {}
914 for edge_id, edge_cc in enumerate(edge_ccs):
915 for edge_node in edge_cc:
916 edge_maps[edge_node[0], edge_node[1]] = edge_id
917
918 context_ccs = [set() for x in range(len(edge_ccs))]
919 extend_context_ccs = [set() for x in range(len(edge_ccs))]
920 extend_erode_context_ccs = [set() for x in range(len(edge_ccs))]
921 extend_edge_ccs = [set() for x in range(len(edge_ccs))]
922 accomp_extend_context_ccs = [set() for x in range(len(edge_ccs))]
923 erode_context_ccs = [set() for x in range(len(edge_ccs))]
924 broken_mask_ccs = [set() for x in range(len(edge_ccs))]
925 invalid_extend_edge_ccs = [set() for x in range(len(edge_ccs))]
926 intouched_ccs = [set() for x in range(len(edge_ccs))]
927 redundant_ccs = [set() for x in range(len(edge_ccs))]
928 if inpaint_iter == 0:
929 background_thickness = config['background_thickness']
930 context_thickness = config['context_thickness']
931 else:
932 background_thickness = config['background_thickness_2']
933 context_thickness = config['context_thickness_2']
934
935 mesh_nodes = mesh.nodes
936 for edge_id, edge_cc in enumerate(edge_ccs):
937 if context_thickness == 0 or (len(specific_edge_id) > 0 and edge_id not in specific_edge_id):
938 continue
939 edge_group = {}
940 for edge_node in edge_cc:
941 far_nodes = mesh_nodes[edge_node].get('far')
942 if far_nodes is None:
943 continue
944 for far_node in far_nodes:
945 if far_node in edge_cc:
946 continue
947 context_ccs[edge_id].add(far_node)
948 if mesh_nodes[far_node].get('edge_id') is not None:
949 if edge_group.get(mesh_nodes[far_node]['edge_id']) is None:
950 edge_group[mesh_nodes[far_node]['edge_id']] = set()
951 edge_group[mesh_nodes[far_node]['edge_id']].add(far_node)
952 if len(edge_cc) > 2:
953 for edge_key in [*edge_group.keys()]:
954 if len(edge_group[edge_key]) == 1:
955 context_ccs[edge_id].remove([*edge_group[edge_key]][0])
956 for edge_id, edge_cc in enumerate(edge_ccs):
957 if inpaint_iter != 0:
958 continue
959 tmp_intouched_nodes = set()
960 for edge_node in edge_cc:
961 raw_intouched_nodes = set(mesh_nodes[edge_node].get('near')) if mesh_nodes[edge_node].get('near') is not None else set()
962 tmp_intouched_nodes |= set([xx for xx in raw_intouched_nodes if mesh_nodes[xx].get('edge_id') is not None and \
963 len(context_ccs[mesh_nodes[xx].get('edge_id')]) > 0])
964 intouched_ccs[edge_id] |= tmp_intouched_nodes
965 tmp_intouched_nodes = None
966 mask_ccs = copy.deepcopy(edge_ccs)
967 forbidden_len = 3

Callers 1

write_meshFunction · 0.85

Calls 8

get_depth_from_mapsFunction · 0.90
get_valid_sizeFunction · 0.90
dilate_valid_sizeFunction · 0.90
size_operationFunction · 0.90
depth_inpaintingFunction · 0.90
getMethod · 0.80
appendMethod · 0.80
showMethod · 0.80

Tested by

no test coverage detected