Существует ли эффективное скользящее окно 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-образе или подобном?

0 ответов

Другие вопросы по тегам