You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以参考数组为基准重塑并填充二维数组技术问题

二值图像分割预测数组与真值尺寸匹配方案

问题出在哪

  • MaxMinScaler根本不是干这个的:它是用来做特征值范围缩放的(比如把数据映射到0-1区间),和数组的尺寸调整完全没关系,所以用它处理后数组形状肯定不变,纯属用错工具。
  • numpy reshape用不了很正常:reshape只能改变数组的维度排列,不能增减元素数量。你的预测数组有1181840个元素,真值只有1141413个,元素数不一样,自然没法reshape。

正确做法:用图像插值缩放

因为是二值图像(只有0和1),得用能保留二值特性的插值方法,优先选最近邻插值,避免出现中间值。下面给两种常用实现方式:

方式1:OpenCV实现

import cv2
import numpy as np

# 目标尺寸就是真值数组的形状
target_h, target_w = T_array.shape
# OpenCV的resize要求输出尺寸是(宽, 高),注意顺序
P_array_resized = cv2.resize(P_array, (target_w, target_h), interpolation=cv2.INTER_NEAREST)

# 检查结果形状
print(P_array_resized.shape)  # 应该输出(791, 1443)

方式2:scikit-image实现

from skimage.transform import resize
import numpy as np

# order=0对应最近邻插值,preserve_range=True保持原数值范围,anti_aliasing=False避免模糊
P_array_resized = resize(
    P_array,
    output_shape=T_array.shape,
    order=0,
    preserve_range=True,
    anti_aliasing=False
).astype(np.float64)

# 验证形状和二值特性
print(P_array_resized.shape)
print(np.unique(P_array_resized))  # 输出应该是[0. 1.]

关键提醒

  • 别用双线性之类的插值方法,会产生0和1之间的数值,破坏二值图像的特性。
  • 缩放后可以用np.array_equal(np.unique(P_array_resized), [0., 1.])确认是否保持了二值状态。

内容的提问来源于stack exchange,提问作者marco cappellazzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 16:51:20