gpt4 book ai didi

python - 在 python/numpy 中加速 delta 过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:32 25 4
gpt4 key购买 nike

我正在编写一个解压缩程序,它(除其他外)必须对 RGB 图像应用增量过滤器。也就是说,读取图像,其中只有第一个像素是绝对的 (R1, G1, B1),所有其他像素都是 (R[n]-R[n-1], G[n]-G[n-1] ], B[n]-B[n-1]), 并将它们转换为标准RGB。

现在我正在使用 numpy,如下所示:

rgb = numpy.fromstring(data, 'uint8')
components = rgb.reshape(3, -1, order='F')
filtered = numpy.cumsum(components, dtype='uint8', axis=1)
frame = numpy.reshape(filtered, -1, order='F')

在哪里

  • 第 1 行创建原始图像的一维数组;
  • 第 2 行将其 reshape 为

    [[R1, R2, ..., Rn], [G1, G2, ..., Gn], [B1, B2, ..., Bn]]
  • 第 3 行执行实际的去过滤

  • 第 4 行再次转换回一维数组

问题是它对我的需求来说太慢了。我对其进行了概要分析,发现大量时间花在了重新塑造数组上。

所以我想知道:是否有一些方法可以避免 reshape 或加快它的速度?

注意事项:

  • 我不想为此编写 C 扩展。
  • 我已经在使用多线程

最佳答案

出于某种原因我还不明白,代码中的最终 reshape 复制了数据。这可以通过使用 C 命令而不是 Fortran 命令来避免:

rgb = numpy.fromstring(data, 'uint8')
components = rgb.reshape(-1, 3)
filtered = numpy.cumsum(components, dtype='uint8', axis=0)
frame = filtered.reshape(-1)

关于python - 在 python/numpy 中加速 delta 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9200162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com