我的电脑(i5-6500 3.2 GHZ,8 GB RAM)需要很长时间:大约10分钟(还没准确测量)。
我目前必须
阅读400张图片。 (* .gif格式,全部应为b& w,分辨率约为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()
甚至更慢。我的代码中有瓶颈吗?是否有更快的实施?
我使用“没有抖动”,单声道调色板(b&amp; w)。
我想按像素添加图像。让我们拍摄照片A和照片B.
A + B = C.如果A(1,1)= 1且B(1,1)= 1,则C(1,1)应为2.它是一个简单的矩阵加法。
测试图片:
答案 0 :(得分:1)
你需要测量......没有任何样本图像很难说,我们只能猜测。您需要考虑加载/解码 JPG 需要花费时间(以毫秒为单位), GIF 的编码甚至可能耗费200 ms
。取决于编码类型。要加快 GIF 编码,您可以:
使用单一全局调色板+抖动
GIF 为8 bpp
且 JPG 为24 bpp
,因此您的编码器需要进行转换。这被称为颜色量化,并且是编码中最昂贵的操作,在良好优化的 C ++ 代码中,平均 PC 机器每帧甚至可以~200 ms
。欲了解更多信息,请参阅:
要解决这个问题,您可以使用专用于抖动的单个调色板(例如默认 VGA 或使用一些 WEB 调色板,它们具有相同的用途)并使用抖动很多快点。参见:
顺便说一句,如果你需要保留颜色,请看一下:
因此,请尝试找出如何配置编码器以强制抖动而不是基于 K-means 或类似的颜色量化....
将编码字典限制为少于4096
编码/解码基于创建字典和编码需要在每个像素的基础上多次搜索它。因此,将其大小变为1024
会大大提高速度。粗略的,你需要访问编码代码来改变它,除非可以在其中以某种方式配置...压缩将由此减少,但流中将出现更清晰的代码。
使用多线程
您可以完全并行化并对系统中存在的每个核进行编码。
我强烈建议您测量编码 GIF 的单帧所需的时间。如果您利用子弹#1,#2 ,那么我估计您可以在每帧~5 ms
附近获得近似时间,抖动和~60 ms
每帧快速量化。因此,对于3520
帧,只需要17.6
或211.2
秒来编码 GIF ,因此请添加文件内存和 JPG 操作并且考虑到所有因为您没有提供样本数据而被大量猜测/估计。如果您使用#3 +/-
共享光盘访问等待,则除以核心数。