我正在编写一个解压缩器,它(除其他外)必须将增量过滤器应用于 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 行将其重塑为形式
[[R1, R2, ..., Rn], [G1, G2, ..., Gn], [B1, B2, ..., Bn]]
第 3 行执行实际的去过滤
- 第 4 行再次转换回一维数组
问题是它对我的需求来说太慢了。我对其进行了分析,发现大量时间用于重塑阵列。
所以我想知道:有什么方法可以避免重塑或加快它的速度吗?
笔记:
- 我宁愿不必为此编写 C 扩展。
- 我已经在使用多线程了