R栅格 - 计算范围内的黑色像素

时间:2015-05-05 16:10:14

标签: r image image-processing raster

我的问题基于this。该页面上的答案解决了我当时面临的问题。我的新问题是 -

下面的代码在我的图像上绘制了两个方块。对于每个方块,我想要计算其中有多少黑色像素。

我的原始问题答案表明我可以使用install.packages("extrafont");library(extrafont) font_import("Archer") library(ggplot2) qplot(1:10)+theme(text=element_text(family="Archer")) 展平RGB。在这种情况下,我想计算颜色值低于25的像素。

我试图利用早期帖子建议的答案,但无法弄清楚如何在一定程度上看。

flat <- sum(x * c(0.2989, 0.5870, 0.1140))

1 个答案:

答案 0 :(得分:1)

library(raster)
r1 <- brick(system.file("external/rlogo.grd", package="raster"))
x <- crop(r1, extent(0,50,0,50))
flat <- sum(x * c(0.2989, 0.5870, 0.1140))
plot(flat, col=gray(seq(0,1,0.1)))
e1 <- extent(c(0,20,0,20))
e2 <- extent(c(21,35,0,10))
plot(e1, col='red', add=TRUE)
plot(e2, col='blue', add=TRUE)


# I am using a cut-off of 100 to get some cells below that threshold.
sum(extract(flat, e1) < 100)
sum(extract(flat, e2) < 100)

# for _very_ large files/extents this could be done to avoid RAM limitations
x <- crop(flat, e2)
y <- reclassify(x, matrix(c(-Inf, 100, 1, 100, Inf, 0), byrow=TRUE)) 
freq(y, value=1)