使用raster_geometry生成球体掩码异常:指定中点后无球体生成
解决raster_geometry指定中点后球体掩码全0的问题
以下是几个可行的排查和解决方向:
显式使用关键字参数传递中点:
部分库的可选参数需要通过关键字指定才能正确识别,尝试将中点参数用center=显式标记:import raster_geometry as rg import numpy as np sphere_mask = rg.sphere((224, 224, 160), 15, center=(112,112,80)) sphere_mask = sphere_mask.astype(np.int_) print(np.sum(sphere_mask))升级raster_geometry到最新版本:
旧版本库可能存在参数处理的bug,执行以下命令升级:pip install --upgrade raster_geometry手动验证球体生成逻辑:
绕过库函数,用原生NumPy逻辑生成球体掩码,确认参数是否合理:import numpy as np shape = (224, 224, 160) center = (112, 112, 80) radius = 15 # 基于欧氏距离平方生成掩码(避免开根号更高效) coords = np.ogrid[[slice(0, s) for s in shape]] dist_sq = sum((coord - c)**2 for coord, c in zip(coords, center)) mask = dist_sq <= radius**2 print(np.sum(mask))如果这段代码输出大于0,说明参数本身没问题,问题出在库的调用或版本上;如果输出仍为0,需检查shape和center的维度顺序是否匹配(比如是否搞反了深度/宽度轴的顺序)。
验证中点坐标有效性:
虽然你确认中点在范围内,可通过以下代码再次验证:center = (112,112,80) shape = (224,224,160) print("坐标是否在范围内:", np.all(np.array(center) < np.array(shape)) and np.all(np.array(center) >= 0))
内容的提问来源于stack exchange,提问作者Kate S.D.
相关产品推荐
相关产品推荐

