【发布时间】:2017-09-05 14:44:43
【问题描述】:
我的电脑(i5-6500 3.2 GHZ,8 GB RAM)需要很长时间:大约 10 分钟(尚未精确测量)。
我现在必须
读取 400 张图像。 (*.gif 格式,应为黑白,分辨率约为 200*400 像素。)(共 3520 张图片)
我想“按单元格”“添加”所有图像。
这是我目前的做法:使用raster 读取图像,然后将其转换为matrix,然后将其转换为sum。
library(rgdal)
library(raster)
library(magrittr)
oldPic <- raster("initalImage.gif") %>% as.matrix
for (pat_IND in currSide) {
newPic <- raster(pat_IND) %>% as.matrix
oldPic <- oldPic + newPic
}
这需要永远。我使用了caTools::read.gif(),它甚至更慢。我的代码有瓶颈吗?有更快的实现吗?
编辑:图像属性
我使用“无抖动”,单色板(黑白)。
编辑2
我想按像素添加图像。让我们来看看图片 A 和图片 B。
A + B = C。如果 A(1,1) = 1 且 B(1,1) = 1,则 C(1,1) 应该是 2。它是一个简单的矩阵加法。
测试图片:
- 使用光栅读取需要 0.03699994 秒
- 使用 raster + as.matrix 读取需要:0.201 秒
【问题讨论】:
-
不确定...的时间是多少?#1 表示 GIF 的解码时间,#2 表示 GIF 的解码时间 + 从光栅到矩阵的转换?如果是,那么展位时间太大(比我的 GIF 加载器大 5 倍,可能没有很好地优化加载器)但看起来矩阵的东西是你的问题尝试自己编写转换...还要检查矩阵的数据类型如果它是浮点数,可能会出现问题,如果可以的话,请使用整数,这样你就不需要转换这么多......
-
1.它读取 GIF 文件并创建光栅对象所需的时间。 “作为矩阵”使其慢 6 倍。