我刚刚开始学习如何使用 R 分析免疫组织化学图像。我有一个分割图像(由其他人执行的分割),用于识别某个标记物呈阳性的细胞,我需要将其读入 R 中以进行绘图和空间分析。我很难理解如何使用 terra:rast() 读取此文件,或者其他方法是否更合适?
文件链接:https://drive.google.com/file/d/1152QLPxF98GqI0IrbVy6VHTEa9-IpcXU/view?usp=sharing
当我阅读此文件时,我收到警告:
test <- rast("Test.tif")
Warning: [rast] unknown extent
测试说明:
test
class : SpatRaster
dimensions : 8648, 7170, 1 (nrow, ncol, nlyr)
resolution : 1, 1 (x, y)
extent : 0, 7170, 0, 8648 (xmin, xmax, ymin, ymax)
coord. ref. :
source : Test.tif
color table : 1
name : Test
问题:
面对这个警告我该怎么办?
与其他读取文件的方法相比,为什么要更改值,使白色为 0,黑色为 1?
当我绘制图像(plot(test))时,它会被旋转和镜像。为什么?以及如何解决这个问题?
原始文件:
用 r 绘制:
plot(test, col = c("brown", "NA"))
如果我阅读使用
test <- readTIFF("Test.tif", convert = TRUE)
然后转换为栅格:
test <- rast(test)
然后使用更改颜色进行绘图的代码就可以工作了。测试的描述与指定的
min
和 max
值有些不同:
test
class : SpatRaster
dimensions : 8648, 7170, 1 (nrow, ncol, nlyr)
resolution : 1, 1 (x, y)
extent : 0, 7170, 0, 8648 (xmin, xmax, ymin, ymax)
coord. ref. :
source(s) : memory
name : lyr.1
min value : 0
max value : 1
如何使用 terra:rast 读取(有很多文件,因此想省略将文件信息存储在内存中)但能够更改颜色?
一些附加信息:
terra::describe("Test.tif")
[1] "Driver: GTiff/GeoTIFF" "Files: "Test.tif"
[3] "Size is 7170, 8648" "Metadata:"
[5] " TIFFTAG_XRESOLUTION=72" " TIFFTAG_YRESOLUTION=72"
[7] " TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)" "Image Structure Metadata:"
[9] " COMPRESSION=CCITTRLE" " INTERLEAVE=BAND"
[11] " MINISWHITE=YES" "Corner Coordinates:"
[13] "Upper Left ( 0.0, 0.0)" "Lower Left ( 0.0, 8648.0)"
[15] "Upper Right ( 7170.0, 0.0)" "Lower Right ( 7170.0, 8648.0)"
[17] "Center ( 3585.0, 4324.0)" "Band 1 Block=7170x135 Type=Byte, ColorInterp=Palette"
[19] " Image Structure Metadata:" " NBITS=1"
[21] " Color Table (RGB with 2 entries)" " 0: 255,255,255,255"
[23] " 1: 0,0,0,255"
您可以忽略该警告 - 我相信它来自未知的 CRS。
r <- terra::rast("~/Downloads/Test.tif")
#> Warning: [rast] unknown extent
r
#> class : SpatRaster
#> dimensions : 8648, 7170, 1 (nrow, ncol, nlyr)
#> resolution : 1, 1 (x, y)
#> extent : 0, 7170, 0, 8648 (xmin, xmax, ymin, ymax)
#> coord. ref. :
#> source : Test.tif
#> color table : 1
#> name : Test
terra::plot(r)
黑白颜色是由tiff中的颜色表强制的:
terra::coltab(r)
#> [[1]]
#> value red green blue alpha
#> 1 0 255 255 255 255
#> 2 1 0 0 0 255
要以不同的颜色绘制它(不更改栅格值),我们必须定义和更改颜色表:
ctb <- data.frame(value = 0:1, col = c("brown", "black"))
terra::coltab(r) <- ctb
terra::plot(r)
仅供参考,使用的 {terra} 版本:
packageVersion("terra")
#> [1] '1.8.3'
创建于 2024-12-08,使用 reprex v2.1.1.9000