问题描述
我有一个灰度图像(称为输入),我试图在图像周围添加1px填充(仅由0组成)以应用滤镜:
padded = np.zeros((input.shape[0]+2,input.shape[1]+2),dtype=int)
padded[1:-1,1:-1] = input[:,:]
,但结果与原始图像相比对比度较低。为什么? 这是原始图片:
这是带边框的图像:
如果不是使用zeros函数,而是使用一次函数并将矩阵乘以255,则得到的图像甚至会有所不同。我不明白为什么将一张图片复制到另一张图片。
解决方法
X :类似阵列的图像或PIL图像
图像数据。支持的数组形状为:
- (M,N):具有标量数据的图像。使用 归一化 和颜色图将值映射到颜色。 。 。 。
归一化意味着颜色被“分散”,因此最小值是黑色,最大值是白色。因此,这些np.zeros
使最小的0
(边界变黑)并使其他所有内容变得更浅以进行补偿。这应该可以解决它(我认为)
padded = np.pad(input,pad_width = 1,mode = 'minimum') # or mode = "maximum' for a white border
如果您绝对需要0
的边框,则可以执行以下操作:
padded = np.pad(input - input.min(),mode = 'constant')
这会更改原始图片的范围以开始0
,因此规范化应该相同。