【问题标题】:Improve speed of color conversion from sRGB to Lab提高从 sRGB 到 Lab 的颜色转换速度
【发布时间】:2017-08-18 18:28:42
【问题描述】:

我需要将高分辨率正射马赛克照片从 sRGB 转换为 Lab 颜色空间。我尝试过使用基本 R 函数 convertColor(),但我从未完成过至少一次转换(图像超过 10 公顷,像素分辨率为 5 厘米,约 50.0000.0000 像素)。

我尝试使用patchPlot 包,它的计算速度更快。但是,考虑到图像的大小,我正在寻找更好的方法。

是否有包/函数/方法来改进这种计算?

convertColorpatchPlot::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


【解决方案1】:

这远非完美的解决方案,但我们可以尝试改进它。你可以玩的东西是nMatrix(你想把原始RGB矩阵分割成多少个矩阵)。

library(microbenchmark)
library(parallel)
library(patchPlot)
library(raster)

# How many matrices we want to have
nMatrix <- 4

# Load raster
r <- stack(system.file("external/rlogo.grd", package = "raster"))
# Extract value matrix
rValues <- values(r)
n <- nrow(rValues)

# Groups to split rValues into nMatrix parts
foo <- rep(1:nMatrix, each = ceiling(n / nMatrix))
# If group vector exceeds number of rows in matrix then trim it
if (length(foo) > n) {
    foo <- foo[1:n]
}
# Splitted matrices
rValuesSplit <- lapply(split(rValues, foo), matrix, ncol = 3)

microbenchmark(do.call(rbind,mclapply(rValuesSplit, RGB2Lab, mc.cores = 1)))

【讨论】:

  • 这是一个很好的方法。但是我测试了这个解决方案,比较了RGB2Lab(),没有在带有 R 和 MRO 的 Windows / OS X 机器上并行化,我没有发现显着差异
猜你喜欢
  • 2018-09-02
  • 2017-07-22
  • 1970-01-01
  • 2023-04-11
  • 2010-10-23
  • 2010-11-13
  • 2019-03-18
  • 1970-01-01
  • 2020-03-17
相关资源
最近更新 更多