def extract_building_shadow(image, dsm, ground_spacing, radius): shadow_mask = np.zeros_like(image, dtype=np.bool) for i in range(0, image.shape[0], ground_spacing): for j in range(0, min(image.shape[1], i+ground_spacing), ground_spacing): if not np.any(shadow_mask[i, j]): center = (i, j) ground_height = dsm[i, j] for x, y in spiral_search(center, radius, ground_spacing): if x < 0 or x >= image.shape[0] or y < 0 or y >= image.shape[1]: continue if np.any(shadow_mask[x, y:]): continue height = dsm[x, y] if height > ground_height: shadow_mask[x, y] = True elif height == ground_height: if np.linalg.norm(np.array([x, y]) - np.array(center)) < \ np.linalg.norm(np.array([i, j]) - np.array(center)): shadow_mask[x, y] = True这段代码运哪部分用到欧几里得距离
时间: 2024-01-17 11:04:56 浏览: 61
Allegro_16.2规则设置
这段代码在第 17 行和第 18 行中使用了欧几里得距离计算两个像素点之间的距离。具体来说,`np.linalg.norm(np.array([x, y]) - np.array(center))` 计算了当前像素点 `(x, y)` 与中心点 `center` 之间的欧几里得距离,而 `np.linalg.norm(np.array([i, j]) - np.array(center))` 则计算了当前像素点的前一个像素点 `(i, j)` 与中心点 `center` 之间的欧几里得距离。两个距离进行比较,如果前一个像素点更接近中心点,则将当前像素点标记为阴影。
阅读全文