Скользящее окно с использованием функции as_strided в numpy?

Когда мне удалось реализовать скользящее окно с использованием python для обнаружения объектов в неподвижных изображениях, я узнал о хорошей функции:

numpy.lib.stride_tricks.as_strided

Итак, я попытался достичь общего правила, чтобы избежать ошибок Я могу потерпеть неудачу при изменении размера нужных мне раздвижных окон. Наконец, я получил это представление:

all_windows = as_strided(x,((x.shape[0] - xsize)/xstep ,(x.shape[1] - ysize)/ystep ,xsize,ysize), (x.strides[0]*xstep,x.strides[1]*ystep,x.strides[0],x.strides[1])

, которое дает 4-тусклую матрицу. Первые два представляют количество окон по осям x и y изображения. а другие представляют размер окна (xsize, ysize)

, а шаг представляет смещение между двумя последовательными окнами.

Это представление отлично работает, если я выберу квадратные скользящие окна. но все же у меня проблема с тем, чтобы заставить это работать для окон e.x. (128,64), где я получаю обычно не связанные с изображением данные.

Что не так с моим кодом. Любые идеи? и если есть лучший способ сделать скользящие окна красивыми и аккуратными в Python для обработки изображений?

Спасибо

6
задан JustInTime 24 September 2011 в 21:43
поделиться