Следуя этому вопросу (и ответу Хорхеки): to-image">Быстрый способ разрезать изображение на перекрывающиеся участки и объединить их с изображением Я хочу добавить смещение к индексам исправленного массива, т.е.:
A = np.arange(W*H).reshape(H,W)
P = patchify(A,(X,Y))
Предполагая, что X,Y являются нечетными числами, размер P будет равен W-X+1,H-Y+1, следовательно, пиксель с центром в P[0,0] будет фактически соответствовать A[(Y-1) /2,(Х-1)/2].
Есть ли способ сместить (без копирования каких-либо данных) индексы P, чтобы иметь идеальное соответствие?
Для справки, вот существующая функция patchify:
def patchify(img, patch_shape):
img = np.ascontiguousarray(img) # won't make a copy if not needed
X, Y = img.shape
x, y = patch_shape
shape = ((X-x+1), (Y-y+1), x, y) # number of patches, patch_shape
# The right strides can be thought by:
# 1) Thinking of `img` as a chunk of memory in C order
# 2) Asking how many items through that chunk of memory are needed when indices
# i,j,k,l are incremented by one
strides = img.itemsize*np.array([Y, 1, Y, 1])
return np.lib.stride_tricks.as_strided(img, shape=shape, strides=strides)
W, H, X, Y = (10, 14, 4, 7)
,P.shape
будет(11, 4, 4, 7)
, как вы не хотите компенсировать и что? - person alko   schedule 17.12.2013