В задаче интерполяции изменения размера изображения можно использовать np.meshgrid
для индексов строк и столбцов, прежде чем работать с сетчатыми индексами:
nrows = 600
ncols = 800
image_in = np.random.randint(0, 256, size=(nrows, ncols, 3))
scale_factor = 1.5
r = np.arange(nrows, dtype=float) * scale_factor
c = np.arange(ncols, dtype=float) * scale_factor
rr, cc = np.meshgrid(r, c, indexing='ij')
# Nearest Neighbor Interpolation
# np.floor if scale_factor >= 1. np.ceil otherwise
rr = np.floor(rr).astype(int).clip(0, nrows-1)
cc = np.floor(cc).astype(int).clip(0, ncols-1)
image_out = image_in[rr, cc, :]
Теперь, как бы я изменил этот процесс?Скажем, учитывая rr_1
, cc_1
(произведение np.meshgrid
), которое обрабатывается неизвестным образом (здесь показано np.random.randint
), как мне получить r_1
и c_1
, то есть входные данные дляnp.meshgrid
(желательно с индексированием ij
)?
# Suppose rr_1, cc_1 = np.meshgrid(r_1, c_1, indexing='ij')
rr_1 = np.random.randint(0, nrows, size=(nrows, ncols, 3))
cc_1 = np.random.randint(0, ncols, size=(nrows, ncols, 3))
r_1 = ?
c_1 = ?
ОБНОВЛЕНИЕ:
Я понял это сразу после публикации.Ответ:
# Suppose rr_1, cc_1 = np.meshgrid(r_1, c_1, indexing='ij')
rr_1 = np.random.randint(0, nrows, size=(nrows, ncols, 3))
cc_1 = np.random.randint(0, ncols, size=(nrows, ncols, 3))
r_1 = rr_1[:, 0]
c_1 = cc_1[0]