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

如何在Python中为np.array格式图像添加反射(镜像)填充?

实现二维数组的镜像填充(适配卷积输出与输入形状一致)

要实现镜像填充并保证卷积后输出和输入(7,7)形状一致,核心是用numpy.pad()函数的reflect模式,该模式会以图像边缘为轴镜像填充像素,自然覆盖所有角落。

步骤说明

  1. 确定填充宽度:假设使用k×k的卷积核,需要的填充宽度为pad = (k-1) // 2。比如常用的3×3卷积核,pad=1,填充后图像变为9×9,卷积后刚好回到7×7。
  2. 使用np.pad()执行镜像填充,指定mode='reflect'。

示例代码

import numpy as np

# 原始7×7图像数组
img = np.array([[1, 2, 3, 4, 5, 6, 7],
                [8, 9, 10, 11, 12, 13, 14],
                [15, 16, 17, 18, 19, 20, 21],
                [22, 23, 24, 25, 26, 27, 28],
                [29, 30, 31, 32, 33, 34, 35],
                [36, 37, 37, 39, 40, 41, 42],
                [43, 44, 45, 46, 47, 48, 49]], dtype=np.uint8)

# 假设用3×3卷积核,计算填充宽度
kernel_size = 3
pad = (kernel_size - 1) // 2

# 执行镜像填充,上下左右各填充pad个像素
padded_img = np.pad(img, pad_width=((pad, pad), (pad, pad)), mode='reflect')

# 查看填充后的形状(应为9×9)
print("填充后形状:", padded_img.shape)
# 查看填充后的数组(可直观看到角落的镜像效果)
print(padded_img)

关键参数解释

  • pad_width=((pad,pad), (pad,pad)):指定二维数组的填充维度,第一个元组对应上下方向的填充数量,第二个对应左右方向,每个子元组的两个值分别是首尾的填充数(这里首尾均填充pad个像素)。
  • mode='reflect':填充模式为镜像反射,以图像边缘为对称轴生成填充像素,比如原数组边缘的1,左侧会填充2;边缘的7,右侧会填充6,角落像素则同时在行、列方向完成镜像填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:57:45