【发布时间】:2017-07-26 06:28:46
【问题描述】:
我正在使用 mahotas 库对卫星图像(250 x 200 像素)进行纹理分析 (GLCM)。 GLCM 计算在窗口大小内进行。因此,对于滑动窗口的两个相邻位置,我们需要从头开始计算两个共现矩阵。我读过我也可以设置步长,以避免在重叠区域上计算 GLCM。我提供了下面的代码。
#Compute haralick features
def haralick_feature(image):
haralick = mahotas.features.haralick(image, True)
return haralick
img = 'SAR_image.tif'
win_s=32 #window size
step=32 #step size
rows = img.shape[0]
cols = img.shape[1]
array = np.zeros((rows,cols), dtype= object)
harList = []
for i in range(0, rows-win_s-1, step):
print 'Row number: ', r
for j in range(0, cols-win_s-1, step):
harList.append(haralick_feature(image))
harImages = np.array(harList)
harImages_mean = harImages.mean(axis=1)
对于上面的代码,我已将窗口和步长设置为 32。当代码完成时,我得到一个尺寸为 6 x 8(而不是 250 x 200)的图像,这是有意义的,因为步长已经设置为 32。
所以,我的问题是:通过设置步长(以避免在重叠区域中进行计算以及代码变得更快),我能否以某种方式得出整个图像的 GLCM 结果,尺寸为 250 x 200 而不是子集它(6 x 8 尺寸)?或者我别无选择,只能以正常方式循环图像(不设置步长)?
【问题讨论】:
-
您的代码示例很可能不完整:您总是使用与
haralick_feature相同的参数 -
嗨 Luispedro,你可能是对的,我可能错过了在这里粘贴一些代码。我创建了这个脚本的几个不同版本(所有脚本都可以正常工作),试图弄清楚如何获得整个图像的 GLCM 结果(设置步长时)而不是它的一个小主题。如果我不设置步长,这个过程非常耗时。
标签: python computer-vision scikit-image mahotas glcm