【发布时间】:2020-11-24 21:45:15
【问题描述】:
我们正在尝试估计植物的叶面积指数,但我们的图片(栅格)的像素超出了屏幕区域。我们需要知道如何量化仅包含在屏幕区域中的叶子的像素数,而没有边界的噪声(屏幕外)。为此,我们为叶子周围的屏幕区域分配了一个值 8。我们正在使用 raster 包。提前感谢您的帮助
【问题讨论】:
标签: r classification raster
我们正在尝试估计植物的叶面积指数,但我们的图片(栅格)的像素超出了屏幕区域。我们需要知道如何量化仅包含在屏幕区域中的叶子的像素数,而没有边界的噪声(屏幕外)。为此,我们为叶子周围的屏幕区域分配了一个值 8。我们正在使用 raster 包。提前感谢您的帮助
【问题讨论】:
标签: r classification raster
这是一个相当复杂的问题。下面是一个可能的方法的开始。真正的解决办法是不要把树叶放在离屏幕边缘这么近的地方,只拍屏幕区域的照片。
library(raster)
p <- raster("prueba.tif")
p <- reclassify(p, cbind(8, NA))
m <- as.matrix(p)
nc <- ncol(m)
c1 <- 1:200
c2 <- (nc-200):nc
nr <- nrow(m)
r1 <- 1:200
r2 <- (nr-200):nr
for (r in 1:nr) {
i <- which(is.na(m[r,c1]))[1]
if (!is.na(i)) m[r,1:i] <- NA
i <- nc - which(is.na(rev(m[r,c2])))[1]
if (!is.na(i)) m[r,i:nc] <- NA
}
for (c in 1:nc) {
i <- which(is.na(m[r1,c]))[1]
if (!is.na(i)) m[1:i, c] <- NA
i <- nr - which(is.na(rev(m[r2,c])))[1]
if (!is.na(i)) m[i:nr, c] <- NA
}
x <- setValues(p, as.vector(t(m)))
【讨论】: