我想计算图像中高于限制值(以下代码中为 0.02)的像素数量,该限制值是在获取一个 NDVI 指数(后面代码中称为 S)之后得出的。我已经尝试过许多方法,但是都不起作用(我已经检查了我的值低于 0.02)。使用的图像如下:1:https://i.stack.imgur.com/8HCuZ.jpg
## 加载包
library(raster)
library(oceanmap)
# 加载公园的卫星图像
f <- stack(list.files(path='C:/Users/Desktop/Segmentation', full.names=TRUE))
###################################################
###################################################
b <- brick(f)
###################################################
# 获取初始图像栅格的 R、G 和 B 层
R <- b[[1]]
G <- b[[2]]
B <- b[[3]]
###################################################
# 计算植被指数颜色
S <- (G-B)/(R+G+B)
> class(S)
[1] "RasterLayer"
attr(,"package")
[1] "raster"
> SumS0 <- as.numeric(sum(S[] < 0.02))
> SumS0
[1] NA
> S1 <- as.matrix(S)
> SumS1 <- as.numeric(sum(S1[] < 0.02))
> class(S1)
[1] "matrix" "array"
> SumS1
[1] NA
> S2 <- raster2matrix(S)
> SumS2 <- as.numeric(sum(S2[] < 0.02))
> SumS2
[1] NA
> S3 <- as.data.frame(S)
> SumS3 <- as.numeric(sum(S3[] < 0.02))
> SumS3
[1] NA
对于随机矩阵,它是可以工作的:
M1<-matrix(rnorm(36),nrow=6)
SumM1 <- as.numeric(sum(M1[] < 0.02))
SumM1
[1] 15