首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R作为从头开始的卫星图像的波段来模拟一系列数据

使用R作为从头开始的卫星图像的波段来模拟一系列数据
EN

Stack Overflow用户
提问于 2020-04-07 00:04:58
回答 1查看 222关注 0票数 1

我正在尝试1)使用R来模拟一个数据矩阵(实际上是一个数字图像,矩阵中的每个单元都有一个0-255 (8位数据)的数字)

2)使用映射工具映射模拟数据

3)将图片分为8-10类

这个想法是使用一个简单的函数来生成一个具有3个波段的红色、绿色和蓝色图像的图像,模拟来自卫星的多光谱图像。所以三种不同的母体的组合。就像这样。

然后根据颜色将合成材料分为8或10类,如果有任何帮助,将非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 00:11:41

基于你的评论,这里是一种将样本作为渐变的方法。

代码语言:javascript
复制
imagerows <- 100
imagecols <- 100
cuts <- 8
(imagecols * imagerows) %% cuts == 0 #Must be true
colorgroups <- as.integer(cut(0:255,cuts))
colors <- c("red","green","blue")
result <- lapply(colors,function(y){
  unlist(
    lapply(seq(1,cuts),function(x){sample((0:255)[colorgroups == x],
                                  size = (imagerows*imagecols)/cuts,
                                  replace = TRUE)})
    )})

result现在是一个长度为3的列表,其中每个元素都是一个100x100矩阵。该矩阵包含0255之间的100 * 100个随机样本,但在cuts中增加了组的数量。

然后,我们可以使用matrix中的byrow =和对数据使用rev()来控制渐变的方向。

代码语言:javascript
复制
red.matrix <-   matrix((result[[1]]),nrow=imagerows,ncol=imagecols,byrow = TRUE)
green.matrix <-   matrix((result[[2]]),nrow=imagerows,ncol=imagecols,byrow = FALSE)
blue.matrix <-   matrix(rev(result[[3]]),nrow=imagerows,ncol=imagecols,byrow = FALSE)  

然后我们把颜色和rgb()放在一起,它输出一个向量。我们可以通过分配维度将其强制返回到矩阵中。然后使用grid.raster()进行绘图。

代码语言:javascript
复制
library(grid)
rgb.matrix <- rgb(red.matrix,green.matrix,blue.matrix,maxColorValue = 255)
dim(rgb.matrix) <- c(imagerows,imagecols)
grid.newpage()
grid.raster(rgb.matrix,interpolate = FALSE)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61064004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档