【发布时间】:2017-08-18 18:28:42
【问题描述】:
我需要将高分辨率正射马赛克照片从 sRGB 转换为 Lab 颜色空间。我尝试过使用基本 R 函数 convertColor(),但我从未完成过至少一次转换(图像超过 10 公顷,像素分辨率为 5 厘米,约 50.0000.0000 像素)。
我尝试使用patchPlot 包,它的计算速度更快。但是,考虑到图像的大小,我正在寻找更好的方法。
是否有包/函数/方法来改进这种计算?
convertColor 和 patchPlot::RGB2Lab 的示例测试:
library(raster)
library(patchPlot)
library(microbenchmark)
r <- stack(system.file("external/rlogo.grd", package="raster"))
microbenchmark(baseR = convertColor(color = values(r), from = 'sRGB', to = 'Lab'),
patchPlot = RGB2Lab(values(r)))
## Unit: milliseconds
## expr min lq mean median uq max neval cld
## baseR 261.702873 282.60345 316.76008 310.31006 327.05536 550.07653 100 b
## patchPlot 8.335807 9.58279 11.53369 10.11684 11.69073 46.78427 100 a
【问题讨论】:
-
将 RasterStack 拆分为 RasterLayers 并在其上运行 RGB2Lab 是否有意义?
-
@PoGibas
RGB2Lab的输入是一个3列矩阵,我不能拆分它 -
连行都不行?
-
@PoGibas 是的,可以选择分组并应用并行处理
-
贴出了我的拆分原始RGB矩阵的解决方案,等待效率反馈
标签: r performance raster color-conversion