python центр изменения масштабирования numpy / scipy - PullRequest
0 голосов
/ 07 мая 2020

У меня есть массив 2D numpy, скажем что-то вроде:

import numpy as np
x = np.random.rand(100, 100)

Теперь я хочу сохранить масштаб этого изображения (сохраняя тот же размер, например (100, 100)), и я хочу для изменения центра масштабирования.

Итак, скажем, я хочу увеличить масштаб, сохраняя точку (70, 70) в центре, и обычно это делается для «перевода» изображения в эту точку, а затем для увеличения .

Интересно, как я могу добиться этого с помощью scipy. Интересно, есть ли способ указать, скажем, 4 координаты из этого массива numpy и в основном заполнить холст интерполированным изображением из этой интересующей области?

1 Ответ

1 голос
/ 07 мая 2020

Вы можете использовать ndimage.zoom для масштабирования. Я часто использую ndimage, он работает хорошо и быстро. https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.zoom.html

Часть с 4 координатами, которую вы упомянули, - это, как я предполагаю, два угла области, которую вы хотите увеличить. Это легко, просто используя numpy нарезку вашего изображения (при условии, что ваше изображение представляет собой массив np):

your_image[r1:r2, c1:c2]

Предполагая, что вы хотите, чтобы ваше выходное изображение было размером 100x100, затем ваши r1-r2 и c1-c2 различия будут такими же, поэтому ваш регион квадратный.

nd.zoom принимает коэффициент масштабирования (float). Вам нужно будет вычислить этот коэффициент масштабирования, чтобы взять ваше нарезанное изображение и превратить его в массив размером 100x100:

ndimage.zoom(your_image[r1:r2, c1:c2], zoom=your_zoom_factor)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...