0

我正在使用 scikit-image 的 graycomatrix (GLCM) 从图像中提取特征。这种方法非常快,但是当使用 GLCM 创建图像的特征图时,需要在图像上滑动一个窗口并为每个窗口调用一次 graycomatrix。对于 65536 次调用的 256x256 图像。使用简单的 Python 循环,这会变得非常慢。我一直在寻找高低,但我找不到这种窗口滑动方法的现有实现,所以我到目前为止自己做了。scikit-image 中不存在这似乎很奇怪,因为这是使用 GLCM 的主要方式。

在 scikit-image GLCM 教程(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-image 或类似文件中是否已经存在更有效的版本?

4

0 回答 0