如何使用np填充图像,python中的?

jgwigjjp  于 2023-04-28  发布在  Python
关注(0)|答案(2)|浏览(111)

我目前处理的图像是由一个堆栈组成的,每个堆栈有18个图像。然后,我对这些图像进行反卷积,以生成更清晰的图像。然而,当我这样做时,我得到了边界文物。我已经花了一些时间写代码,以确定多宽的垫,我将需要垫这些图像,但我不确定如何使用np。垫,以便我可以产生填充的图像。这是我目前为止的代码:

xextra = pad_width_x / 2
yextra = pad_width_y / 2
print (xextra)
print (yextra)

其中xextra和yextra是我将使用的焊盘宽度。我知道我需要使用这行代码来填充数组:

no_borders = np.pad(sparsebeadmix_sheet_cubic_deconvolution, pad_width_x, mode='constant', constant_values=0)

但是,我如何能够通过此处理我的图像堆栈(18张图像)并将其保存为输出?
我希望这是有意义的!

3htmauhk

3htmauhk1#

如果你的堆栈是一个nxny18数组:

import numpy as np

image_stack = np.ones((2, 2, 18))

extra_left, extra_right = 1, 2
extra_top, extra_bottom = 3, 1

np.pad(image_stack, ((extra_top, extra_bottom), (extra_left, extra_right), (0, 0)),
       mode='constant', constant_values=3)
tez616oj

tez616oj2#

如果有人想知道如何填充一批图像

def pad_images(images: np.ndarray, top=0, bottom=0, left=0, right=0, constant=0.0) -> np.ndarray:
    assert len(images.shape) == 4, 'not a batch of images!'
    return np.pad(images, ((0, 0), (top, bottom), (left, right), (0, 0)),
                  mode='constant', constant_values=constant)

示例用法:

# assuming `image_batch` has shape (B, H, W, C)
pad_images(image_batch, top=1, bottom=1, constant=0.5)

相关问题