最近在处理深度学习剂量预测任务中,为节省算力,需要对输入的轮廓信息(类型为np.bool)进行缩放[512, 512] -> [256, 256]。
Scipy.ndimage.zoom 参数:
scipy.ndimage.zoom — SciPy v1.11.4 Manual
需要缩放的轮廓信息如图1。
图1.需要缩放的原始轮廓
使用默认参数对2维数组缩放时,输出的布尔数组会有散点出现,缩放结果如下图2.
图2.需要缩放的原始轮廓
出问题的代码:
resized_mask = zoom(original_mask, (0.5, 0.5))
测试后发现问题原因出在zoom函数中的order参数中,默认插值order=3.
order 改为2后:
图3. zoom输出,order=2
仍旧有散点出现。order=1时:
图4. zoom输出,order=1
散点数变少了。
order=0时:
图4. zoom输出,order=0
虽然插值后边缘呈现像素化,但轮廓中心的断点消失了。
放缩bool类型的矩阵务必谨慎!