我正在使用R中的glcm包在Landsat波段上从灰度共现矩阵(GLCM)运行图像纹理度量,我想知道mean'和'mean_ENVI'/'variance'和' variance_ENVI'。
这似乎是一个基本问题,但我找不到很好的解释。
library(glcm)
Feb2014_B2 <-raster ("Feb2014_band2x.tif")
Feb2014.B2.textures3x3 <- glcm(Feb2014_B2, window = c(3, 3), shift = c(1, 1),
statistics = c("mean", "mean_ENVI", "variance", "variance_ENVI",
"homogeneity", "contrast", "dissimilarity", "entropy", "second_moment",
"correlation"), na_opt="any", na_val=NA)
Run Code Online (Sandbox Code Playgroud)
我是R glcm软件包的作者。均值和均值_ENVI之间以及方差和方差_ENVI之间的差异与如何计算均值有关。glcm包中的均值和方差与原始Haralick出版物中的实现相同。ENVI中的均值和方差的实现方式有所不同。ENVI将平均值作为给定窗口大小内像素值的简单平均值进行计算–因此,ENVI平均值根本不是纹理度量,而仅仅是原始图像的平滑版本。我在包中实现了它,以便可以在R中再现ENVI结果。
我使用的公式与Haralick相同。现在,查看它们的唯一方法是在C ++代码中(https://github.com/azvoleff/glcm/blob/master/src/calc_texture.cpp)。我最终会将这些内容放入R文档中,但是还没有时间将它们放入文档中。