裁剪图像,转换为黑白并锐化它

时间:2015-05-22 22:02:02

标签: r image image-processing colors raster

我想拍摄x,将其转换为黑白图像。然后我想将所有低于100的像素转换为0并转换所有高于100到255的像素。我想得到一个更清晰的图像,其中背景为白色,图像内的对象为黑色。然后在我的硬盘上存储新的x(黑白锐利图像)。我怎么能这样做?

library(raster)
r1 <- brick(system.file("external/rlogo.grd", package="raster"))
x <- crop(r1, extent(0,50,0,50))
plotRGB(x)

根据之前的question,我在下面写了一行来将r1转换成黑白。但plotRGB函数失败:(。绘图功能有效,但它不会返回我的黑白图像

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

====== UPDATE1 ==========

如果有人有兴趣,

图像颜色可以通过使用&#34; 1-twoclasses&#34;轻松交换。取代&#34; twoclasses&#34;在下面的图像和绘图功能

1 个答案:

答案 0 :(得分:2)

要实际看到灰色,您需要提供这些颜色。

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)))

您可以使用重分类函数来获取0或255的值,但在这种情况下,使用1和2似乎更明智

twoclasses <- cut(flat, c(0,100,255))
plot(twoclasses, col=gray(c(0,1)))

要写入磁盘,您可以执行以下操作:

png(width=ncol(twoclasses)*10, height=nrow(twoclasses)*10)
par(mai=c(0,0,0,0))
image(twoclasses, col=gray(c(0,1)))
dev.off()