首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tmap R软件包中Landsat 8图像的线性拉伸

tmap R软件包中Landsat 8图像的线性拉伸
EN

Stack Overflow用户
提问于 2022-05-07 06:59:39
回答 1查看 86关注 0票数 0

我从美国地质勘探局下载了一个陆地卫星8号数据集。我使用以下代码将其导入R:

代码语言:javascript
复制
library(raster)
library(tmap)

B1 <- raster("LC08_L2SP_166072_20210819_20210827_02_T1_SR_B1.TIF")
B2 <- raster("LC08_L2SP_166072_20210819_20210827_02_T1_SR_B2.TIF")
B3 <- raster("LC08_L2SP_166072_20210819_20210827_02_T1_SR_B3.TIF")
B4 <- raster("LC08_L2SP_166072_20210819_20210827_02_T1_SR_B4.TIF")
B5 <- raster("LC08_L2SP_166072_20210819_20210827_02_T1_SR_B5.TIF")
B6 <- raster("LC08_L2SP_166072_20210819_20210827_02_T1_SR_B6.TIF")
B7 <- raster("LC08_L2SP_166072_20210819_20210827_02_T1_SR_B7.TIF")

fcc_nir <- stack(B5, B4, B3)

图像为16位。我可以很容易地使用以下命令绘制假彩色复合图像:

代码语言:javascript
复制
plotRGB(fcc_nir, stretch = "lin")

然而,我需要覆盖多边形和添加地图网格等。tmap包做出了伟大的地图,但我仍然必须弄清楚如何应用相同的线性拉伸在tmap。没有明显的伸展选项。当我绘制假彩色合成图像时,它看起来很暗:

代码语言:javascript
复制
tm_shape(fcc_nir) +
  tm_rgb(max.value = 65536)

我需要事先手动重放图像吗?

如果tm_rgb()有一个像plotRGB()这样的拉伸参数,那就太好了。提前感谢您的帮助/指导!

EN

回答 1

Stack Overflow用户

发布于 2022-05-09 22:15:20

tm_rgb()的选择有限。plotRGB()函数似乎使用光栅单元格值的示例来执行拉伸操作。这就是为什么图像看起来更明亮和更鲜明的原因。这是我用tm_rgb()所能达到的最好的结果。

代码语言:javascript
复制
fcc_nir <- setMinMax(fcc_nir)

tm_shape(fcc_nir) +
  tm_rgb(max.value = max(maxValue(fcc_nir)))

tm_rgb()没有min.value =选项。一个人可以输入一个较小的max.value,但这是一个有点命中和错过。我更愿意使用一种基于图像统计的更严格的方法。

代码语言:javascript
复制
tm_shape(fcc_nir) +
  tm_rgb(max.value = 31000)

一个人必须事先手动重放图像,使用raster::stretch()或用户定义的拉伸函数来获得更好的输出。

例如:

代码语言:javascript
复制
fcc_nir_s <- stretch(fcc_nir, minv = 0, maxv = 255, minq = 0.1, maxq = 0.99)

tm_shape(fcc_nir_s) +
  tm_rgb()

生成以下图像:

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

https://stackoverflow.com/questions/72150197

复制
相关文章

相似问题

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