Существует ли эффективное скользящее окно GLCM в библиотеке Python?
Я использую Greycomatrix (GLCM) Scikit-изображения для извлечения функций из изображения. Этот метод довольно быстрый, но при создании карты объектов изображения с помощью GLCM необходимо скользить окном над изображением и вызывать greycomatrix один раз для каждого окна. Для изображения 256x256, которое составляет 65536 вызовов. Это становится очень медленным с простыми циклами Python. Я искал высоко и низко, но не могу найти существующую реализацию этого метода скользящего окна, поэтому я сделал это сам до сих пор. Кажется странным, что это не существует в scikit-образе, так как это основной способ использования GLCM.
В учебнике GLCM с изображением scikit ( http://scikit-image.org/docs/dev/auto_examples/plot_glcm.html) они анализируют только несколько отдельных окон и ничего не говорят о скользящих окнах. Это не очень полезно.
import numpy as np
from skimage.feature import greycomatrix
from skimage.data import coins
def glide(image, w, d, theta, levels=16):
image = np.pad(image, int(w/2), mode='reflect') # Add padding.
M, N = image.shape
feature_map = np.zeros((M, N)) # Placeholder for some feature.
for m in xrange(0, M):
for n in xrange(0, N):
window = image[m:m+w, n:n+w]
glcm = greycomatrix(window, d, theta, levels)
# Do something with glcm: Find variance, entropy, etc.
feature_map[m,n] = 1. # Compute something here.
feature_map = glide(coins(), w=21, d=[5], theta=[0], levels=256)
Это мой метод скользящего окна. Существует ли более эффективная версия этого в scikit-образе или подобном?